Files
loongoffice/framework/source/services/backingwindow.hxx
Szabolcs Dezsi 78e8d5f0d6 Added option to hide external link buttons on Start Center
This option is useful for Intel AppUp builds. On the other hand,
unused STARTCENTER_LAYOUT_STYLE option was removed.
2012-03-06 20:23:35 +01:00

179 lines
7.1 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef FRAMEWORK_BACKINGWINDOW_HXX
#define FRAMEWORK_BACKINGWINDOW_HXX
#include "rtl/ustring.hxx"
#include "vcl/button.hxx"
#include "vcl/menubtn.hxx"
#include "vcl/fixed.hxx"
#include "vcl/bitmapex.hxx"
#include "vcl/toolbox.hxx"
#include "unotools/moduleoptions.hxx"
#include "svtools/acceleratorexecute.hxx"
#include "com/sun/star/frame/XDispatchProvider.hpp"
#include "com/sun/star/frame/XDesktop.hpp"
#include "com/sun/star/frame/XFrame.hpp"
#include "com/sun/star/frame/XTerminateListener.hpp"
#include "com/sun/star/document/XEventListener.hpp"
#include "com/sun/star/document/XEventBroadcaster.hpp"
#include "com/sun/star/util/XURLTransformer.hpp"
#include "com/sun/star/ui/dialogs/XFilePicker.hpp"
#include "com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp"
#include "com/sun/star/ui/dialogs/XFilterManager.hpp"
#include "com/sun/star/ui/dialogs/XFolderPicker.hpp"
#include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
#include "com/sun/star/ui/dialogs/ExecutableDialogResults.hpp"
#include <set>
class MnemonicGenerator;
namespace framework
{
// To get the transparent mouse-over look, the closer is actually a toolbox
// overload DataChange to handle style changes correctly
class DecoToolBox : public ToolBox
{
Size maMinSize;
using Window::ImplInit;
public:
DecoToolBox( Window* pParent, WinBits nStyle = 0 );
DecoToolBox( Window* pParent, const ResId& rResId );
void DataChanged( const DataChangedEvent& rDCEvt );
void calcMinSize();
Size getMinSize();
};
class BackingWindow : public Window
{
struct LoadRecentFile
{
rtl::OUString aTargetURL;
com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > aArgSeq;
};
com::sun::star::uno::Reference<com::sun::star::frame::XDesktop> mxDesktop;
com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider > mxDesktopDispatchProvider;
com::sun::star::uno::Reference<com::sun::star::frame::XFrame> mxFrame;
com::sun::star::uno::Reference<com::sun::star::document::XEventBroadcaster> mxBroadcaster;
ImageButton maWriterButton;
ImageButton maCalcButton;
ImageButton maImpressButton;
MenuButton maOpenButton;
ImageButton maDrawButton;
ImageButton maDBButton;
ImageButton maMathButton;
ImageButton maTemplateButton;
DecoToolBox maToolbox;
BitmapEx maBackgroundLeft;
BitmapEx maBackgroundMiddle;
BitmapEx maBackgroundRight;
String maCreateString;
String maOpenString;
String maTemplateString;
Font maTextFont;
Rectangle maControlRect;
long mnColumnWidth[2];
long mnTextColumnWidth[2];
Color maLabelTextColor;
Size maButtonImageSize;
bool mbInitControls;
sal_Int32 mnHideExternalLinks;
svt::AcceleratorExecute* mpAccExec;
long mnBtnPos;
long mnBtnTop;
PopupMenu* mpRecentMenu;
std::vector< LoadRecentFile > maRecentFiles;
static const int nItemId_Extensions = 1;
static const int nItemId_Info = 3;
static const int nItemId_TplRep = 4;
static const int nShadowTop = 32;
static const int nShadowLeft = 35;
static const int nShadowRight = 45;
static const int nShadowBottom = 50;
void loadImage( const ResId& i_rId, PushButton& i_rButton );
void layoutButton( const char* i_pURL, int nColumn, int i_nExtraWidth, const std::set<rtl::OUString>& i_rURLS,
SvtModuleOptions& i_rOpt, SvtModuleOptions::EModule i_eMod,
PushButton& i_rBtn,
MnemonicGenerator& i_rMnemonicGen,
const String& i_rStr = String()
);
void dispatchURL( const rtl::OUString& i_rURL,
const rtl::OUString& i_rTarget = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "_default" ) ),
const com::sun::star::uno::Reference< com::sun::star::frame::XDispatchProvider >& i_xProv = com::sun::star::uno::Reference< com::sun::star::frame::XDispatchProvider >(),
const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& = com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >()
);
DECL_LINK( ClickHdl, Button* );
DECL_LINK( SelectHdl, Button* );
DECL_LINK( ActivateHdl, Button* );
DECL_LINK( ToolboxHdl, void* );
void initControls();
void initBackground();
void prepareRecentFileMenu();
public:
BackingWindow( Window* pParent );
~BackingWindow();
virtual void Paint( const Rectangle& rRect );
virtual void Resize();
virtual long Notify( NotifyEvent& rNEvt );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
virtual void GetFocus();
void setOwningFrame( const com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& xFrame );
};
}
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */