diff options
Diffstat (limited to 'sfx2')
36 files changed, 1765 insertions, 1512 deletions
diff --git a/sfx2/inc/sfx2/dispatch.hxx b/sfx2/inc/sfx2/dispatch.hxx index 363c9280fd5a..e0d25fb121d7 100644 --- a/sfx2/inc/sfx2/dispatch.hxx +++ b/sfx2/inc/sfx2/dispatch.hxx @@ -51,7 +51,7 @@ class SfxViewFrame; class SfxBindings; class SfxItemSet; class SfxPopupMenuManager; - +class SfxModule; struct SfxDispatcher_Impl; struct SfxPlugInInfo_Impl; @@ -202,7 +202,7 @@ public: SfxShell* GetShell(USHORT nIdx) const; SfxViewFrame* GetFrame() const; - + SfxModule* GetModule() const; // caller has to clean up the Manager on his own static SfxPopupMenuManager* Popup( sal_uInt16 nConfigId,Window *pWin, const Point *pPos ); diff --git a/sfx2/inc/sfx2/dllapi.h b/sfx2/inc/sfx2/dllapi.h index 3d8cd8621985..966f6b7f29f7 100644 --- a/sfx2/inc/sfx2/dllapi.h +++ b/sfx2/inc/sfx2/dllapi.h @@ -40,4 +40,6 @@ #define SFX2_DLLPUBLIC SAL_DLLPUBLIC_IMPORT #endif +#define SFX2_DLLPRIVATE SAL_DLLPRIVATE + #endif diff --git a/sfx2/inc/sfx2/linkmgr.hxx b/sfx2/inc/sfx2/linkmgr.hxx index 960faed33473..4d37dd0a1670 100644 --- a/sfx2/inc/sfx2/linkmgr.hxx +++ b/sfx2/inc/sfx2/linkmgr.hxx @@ -37,9 +37,15 @@ #include <svl/svarray.hxx> class SfxObjectShell; +class Graphic; +class Size; namespace sfx2 { + // Damit der Link ueber den Status der zu ladenen Grafik informierten werden + // verschickt das FileObject ein SvData, mit der FormatId + // "RegisterStatusInfoId" und ein einem String als Datentraeger. Dieser + // enthaelt den folgenden enum. class SvBaseLink; class SvBaseLinkRef; @@ -50,7 +56,7 @@ SV_DECL_PTRARR( SvBaseLinks, SvBaseLinkRefPtr, 1, 1 ) typedef SvLinkSource* SvLinkSourcePtr; SV_DECL_PTRARR( SvLinkSources, SvLinkSourcePtr, 1, 1 ) -class SFX2_DLLPUBLIC SvLinkManager +class SFX2_DLLPUBLIC LinkManager { SvBaseLinks aLinkTbl; SvLinkSources aServerTbl; @@ -60,8 +66,17 @@ protected: BOOL InsertLink( SvBaseLink* pLink, USHORT nObjType, USHORT nUpdateType, const String* pName = 0 ); public: - SvLinkManager(); - virtual ~SvLinkManager(); + + enum LinkState + { + STATE_LOAD_OK, + STATE_LOAD_ERROR, + STATE_LOAD_ABORT + }; + + LinkManager( SfxObjectShell * pCacheCont ); + ~LinkManager(); + SfxObjectShell* GetPersist() const { return pPersist; } void SetPersist( SfxObjectShell * p ) { pPersist = p; } @@ -78,14 +93,24 @@ public: // falls am Link schon alles eingestellt ist ! BOOL InsertDDELink( SvBaseLink* ); + // den Link mit einem PseudoObject verbinden und in die Liste eintragen + BOOL InsertFileLink( sfx2::SvBaseLink&, + USHORT nFileType, + const String& rTxt, + const String* pFilterNm = 0, + const String* pRange = 0 ); + + // falls am Link schon alles eingestellt ist ! + BOOL InsertFileLink( sfx2::SvBaseLink& ); + // erfrage die Strings fuer den Dialog - virtual BOOL GetDisplayNames( const SvBaseLink *, + BOOL GetDisplayNames( const SvBaseLink *, String* pType, String* pFile = 0, String* pLink = 0, String* pFilter = 0 ) const; - virtual SvLinkSourceRef CreateObj( SvBaseLink* ); + SvLinkSourceRef CreateObj( SvBaseLink* ); void UpdateAllLinks( BOOL bAskUpdate = TRUE, BOOL bCallErrHdl = TRUE, @@ -105,10 +130,28 @@ public: void RemoveServer( USHORT nPos, USHORT nCnt = 1 ) { aServerTbl.Remove( nPos, nCnt ); } + // eine Uebertragung wird abgebrochen, also alle DownloadMedien canceln + // (ist zur Zeit nur fuer die FileLinks interressant!) + void CancelTransfers(); + + static void SetTransferPriority( sfx2::SvBaseLink& rLink, USHORT nPrio ); + + // um Status Informationen aus dem FileObject an den BaseLink zu + // senden, gibt es eine eigene ClipBoardId. Das SvData-Object hat + // dann die entsprechenden Informationen als String. + // Wird zur Zeit fuer FileObject in Verbindung mit JavaScript benoetigt + // - das braucht Informationen ueber Load/Abort/Error + static ULONG RegisterStatusInfoId(); + + // if the mimetype says graphic/bitmap/gdimetafile then get the + // graphic from the Any. Return says no errors + static BOOL GetGraphicFromAny( const String& rMimeType, + const ::com::sun::star::uno::Any & rValue, + Graphic& rGrf ); + private: - // diese Methoden gibts nicht! - SvLinkManager( const SvLinkManager& ); - SvLinkManager& operator=( const SvLinkManager& ); + LinkManager( const LinkManager& ); + LinkManager& operator=( const LinkManager& ); }; // Trenner im LinkName fuer die DDE-/File-/Grafik- Links diff --git a/sfx2/inc/sfx2/lnkbase.hxx b/sfx2/inc/sfx2/lnkbase.hxx index 1cec933bbcaa..19a6d6c33bc5 100644 --- a/sfx2/inc/sfx2/lnkbase.hxx +++ b/sfx2/inc/sfx2/lnkbase.hxx @@ -51,7 +51,7 @@ namespace sfx2 { struct ImplBaseLinkData; -class SvLinkManager; +class LinkManager; class SvLinkSource; class FileDialogHelper; @@ -82,7 +82,7 @@ struct BaseLink_Impl; class SFX2_DLLPUBLIC SvBaseLink : public SvRefBase { private: - friend class SvLinkManager; + friend class LinkManager; friend class SvLinkSource; SvLinkSourceRef xObj; @@ -148,9 +148,9 @@ public: ULONG GetContentType() const; BOOL SetContentType( ULONG nType ); - SvLinkManager* GetLinkManager(); - const SvLinkManager* GetLinkManager() const; - void SetLinkManager( SvLinkManager* _pMgr ); + LinkManager* GetLinkManager(); + const LinkManager* GetLinkManager() const; + void SetLinkManager( LinkManager* _pMgr ); BOOL Update(); void Disconnect(); diff --git a/sfx2/inc/sfx2/module.hxx b/sfx2/inc/sfx2/module.hxx index f59832085dc6..cd2028eee0e1 100644 --- a/sfx2/inc/sfx2/module.hxx +++ b/sfx2/inc/sfx2/module.hxx @@ -36,9 +36,10 @@ #include <sfx2/shell.hxx> #include <sfx2/imgdef.hxx> #include <sal/types.h> +#include <vcl/fldunit.hxx> + class ImageList; -class SfxAcceleratorManager; class SfxBindings; class SfxObjectFactory; class ModalDialog; @@ -96,6 +97,8 @@ public: BOOL IsActive() const; static SfxModule* GetActiveModule( SfxViewFrame* pFrame=NULL ); + static FieldUnit GetCurrentFieldUnit(); + FieldUnit GetFieldUnit() const; //#if 0 // _SOLAR__PRIVATE SAL_DLLPRIVATE static SfxModuleArr_Impl& GetModules_Impl(); diff --git a/sfx2/inc/sfx2/objsh.hxx b/sfx2/inc/sfx2/objsh.hxx index f81be0aa7bba..1dab10abb842 100644 --- a/sfx2/inc/sfx2/objsh.hxx +++ b/sfx2/inc/sfx2/objsh.hxx @@ -96,7 +96,6 @@ class Bitmap; class INetURLObject; class IndexBitSet; class SfxTopFrame; -class SfxAcceleratorManager; class JobSetup; class Size; class Point; @@ -798,7 +797,6 @@ public: // configuration items SAL_DLLPRIVATE SfxEventConfigItem_Impl* GetEventConfig_Impl( sal_Bool bForce=sal_False ); - SAL_DLLPRIVATE SfxAcceleratorManager* GetAccMgr_Impl(); SAL_DLLPRIVATE SfxToolBoxConfig* GetToolBoxConfig_Impl(); SAL_DLLPRIVATE sal_uInt16 ImplGetSignatureState( sal_Bool bScriptingContent = FALSE ); diff --git a/sfx2/inc/sfx2/opengrf.hxx b/sfx2/inc/sfx2/opengrf.hxx new file mode 100644 index 000000000000..0972859b6680 --- /dev/null +++ b/sfx2/inc/sfx2/opengrf.hxx @@ -0,0 +1,73 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: opengrf.hxx,v $ + * $Revision: 1.9 $ + * + * 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 _SFX2_OPENGRF_HXX +#define _SFX2_OPENGRF_HXX + +#include <memory> // auto_ptr +#include <svtools/filter.hxx> +#include <sfx2/dllapi.h> + +struct SvxOpenGrf_Impl; + +class SFX2_DLLPUBLIC SvxOpenGraphicDialog +{ +public: + SvxOpenGraphicDialog ( const String& rTitle ); + ~SvxOpenGraphicDialog (); + + short Execute(); + + void SetPath( const String& rPath ); + void SetPath( const String& rPath, sal_Bool bLinkState ); + String GetPath() const; + + int GetGraphic(Graphic&) const; + + void EnableLink(sal_Bool); + void AsLink(sal_Bool); + sal_Bool IsAsLink() const; + + String GetCurrentFilter() const; + void SetCurrentFilter(const String&); + + /// Set dialog help id at FileDlgHelper + void SetControlHelpIds( const INT16* _pControlId, const INT32* _pHelpId ); + /// Set control help ids at FileDlgHelper + void SetDialogHelpId( const INT32 _nHelpId ); +private: + // disable copy and assignment + SFX2_DLLPRIVATE SvxOpenGraphicDialog (const SvxOpenGraphicDialog&); + SFX2_DLLPRIVATE SvxOpenGraphicDialog& operator = ( const SvxOpenGraphicDialog & ); + + const std::auto_ptr< SvxOpenGrf_Impl > mpImpl; +}; + +#endif // _SVX_OPENGRF_HXX + diff --git a/sfx2/inc/sfx2/sfxdlg.hxx b/sfx2/inc/sfx2/sfxdlg.hxx index 47ee31c66575..256e4a03ce47 100644 --- a/sfx2/inc/sfx2/sfxdlg.hxx +++ b/sfx2/inc/sfx2/sfxdlg.hxx @@ -61,7 +61,7 @@ struct TransferableObjectDescriptor; namespace sfx2 { - class SvLinkManager; + class LinkManager; } namespace com { namespace sun { namespace star { namespace frame { @@ -115,9 +115,10 @@ public: namespace com { namespace sun { namespace star { namespace frame { class XFrame; } } } } -class SFX2_DLLPUBLIC SfxAbstractDialogFactory : public VclAbstractDialogFactory +class SFX2_DLLPUBLIC SfxAbstractDialogFactory : virtual public VclAbstractDialogFactory { public: + virtual ~SfxAbstractDialogFactory(); // needed for export of vtable static SfxAbstractDialogFactory* Create(); virtual VclAbstractDialog* CreateSfxDialog( Window* pParent, const SfxBindings& rBindings, sal_uInt32 nResId ) = 0; virtual VclAbstractDialog* CreateFrameDialog( Window* pParent, const com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& rFrame, sal_uInt32 nResId, const String& rParameter ) = 0; @@ -141,7 +142,7 @@ public: virtual VclAbstractDialog* CreateEditObjectDialog( Window* pParent, USHORT nSlotId, const com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject >& xObj )=0; virtual SfxAbstractPasteDialog* CreatePasteDialog( Window* pParent )=0; - virtual SfxAbstractLinksDialog* CreateLinksDialog( Window* pParent, sfx2::SvLinkManager* pMgr, BOOL bHTML=FALSE, sfx2::SvBaseLink* p=0 )=0; + virtual SfxAbstractLinksDialog* CreateLinksDialog( Window* pParent, sfx2::LinkManager* pMgr, BOOL bHTML=FALSE, sfx2::SvBaseLink* p=0 )=0; virtual VclAbstractDialog * CreateSvxScriptOrgDialog( Window* pParent, const String& rLanguage ) = 0; virtual AbstractScriptSelectorDialog* diff --git a/sfx2/inc/sfx2/sfxhtml.hxx b/sfx2/inc/sfx2/sfxhtml.hxx index 270087cf24a9..80804cf72fad 100644 --- a/sfx2/inc/sfx2/sfxhtml.hxx +++ b/sfx2/inc/sfx2/sfxhtml.hxx @@ -84,8 +84,6 @@ public: LanguageType& eNumLang, const String& aValStr, const String& aNumStr, SvNumberFormatter& rFormatter ); - static rtl_TextEncoding GetEncodingByHttpHeader( SvKeyValueIterator *pHTTPHeader ); - protected: // Start eines File-Downloads. Dieser erfolgt synchron oder asynchron. @@ -124,9 +122,6 @@ protected: // Default (auch ohne Iterator) ist JavaScript ScriptType GetScriptType( SvKeyValueIterator* ) const; const String& GetScriptTypeString( SvKeyValueIterator* ) const; - - BOOL SetEncodingByHTTPHeader( SvKeyValueIterator *pHTTPHeader ); - }; inline BOOL SfxHTMLParser::ParseAreaOptions(ImageMap * pImageMap, const String& rBaseURL, diff --git a/sfx2/inc/sfx2/sfxsids.hrc b/sfx2/inc/sfx2/sfxsids.hrc index bcbb39c96638..dcbed691e668 100644 --- a/sfx2/inc/sfx2/sfxsids.hrc +++ b/sfx2/inc/sfx2/sfxsids.hrc @@ -32,92 +32,25 @@ // include --------------------------------------------------------------- -#ifndef _SOLAR_HRC #include <svl/solar.hrc> -#endif - -#define SID_SFX_START 5000 -#define SID_SFX_END 8999 - -#ifndef _CNTIDS_HRC #include <sfx2/cntids.hrc> -#endif +#include <svl/memberid.hrc> // Please be careful: // Changing just one part here doesn't add new // docking windows automatically! // -#define SID_DOCKWIN_START 9800 -#define SID_DOCKWIN_0 9800 -#define SID_DOCKWIN_1 9801 -#define SID_DOCKWIN_2 9802 -#define SID_DOCKWIN_3 9803 -#define SID_DOCKWIN_4 9804 -#define SID_DOCKWIN_5 9805 -#define SID_DOCKWIN_6 9806 -#define SID_DOCKWIN_7 9807 -#define SID_DOCKWIN_8 9808 -#define SID_DOCKWIN_9 9809 -/* -#define SID_DOCKWIN_10 9810 -#define SID_DOCKWIN_11 9811 -#define SID_DOCKWIN_12 9812 -#define SID_DOCKWIN_13 9813 -#define SID_DOCKWIN_14 9814 -#define SID_DOCKWIN_15 9815 -#define SID_DOCKWIN_16 9816 -#define SID_DOCKWIN_17 9817 -#define SID_DOCKWIN_18 9818 -#define SID_DOCKWIN_19 9819 -#define SID_DOCKWIN_20 9820 -#define SID_DOCKWIN_21 9821 -#define SID_DOCKWIN_22 9822 -#define SID_DOCKWIN_23 9823 -#define SID_DOCKWIN_24 9824 -#define SID_DOCKWIN_25 9825 -#define SID_DOCKWIN_26 9826 -#define SID_DOCKWIN_27 9827 -#define SID_DOCKWIN_28 9828 -#define SID_DOCKWIN_29 9829 -*/ -#define SID_DOCKWIN_END 9999 - -#define SID_LIB_START 10000 -#define SID_LIB_END 19999 - -#define SID_APP_START 20000 -#define SID_APP_END 29999 - -#define SID_SW_START 20000 -#define SID_SW_END 25999 - -#define SID_SC_START 26000 -#define SID_SC_END 26999 - -#define SID_SD_START 27000 -#define SID_SD_END 27999 - -#define SID_Sa_START 28000 -#define SID_Sa_END 28999 - -#define SID_Sb_START 29000 -#define SID_Sb_END 29999 - -#define SID_OBJ_START 30000 -#define SID_OBJ0_START (SID_OBJ_START + 0) -#define SID_OBJ2_START (SID_OBJ_START + 256) -#define SID_OBJ1_START (SID_OBJ_START + 512) -#define SID_OBJ3_START (SID_OBJ_START + 768) -#define SID_OBJ4_START (SID_OBJ_START + 1024) -#define SID_OBJ5_START (SID_OBJ_START + 1280) -#define SID_OBJ6_START (SID_OBJ_START + 1536) -#define SID_OBJ7_START (SID_OBJ_START + 1792) -#define SID_OBJ_END(nStart) (nStart+255) - -#define SID_SIM_START SID_OBJ0_START -#define SID_SCH_START SID_OBJ1_START -#define SID_SMA_START SID_OBJ2_START -#define SID_BASICIDE_START SID_OBJ3_START + +#define SID_DOCKWIN_0 SID_DOCKWIN_START +#define SID_DOCKWIN_1 SID_DOCKWIN_START+1 +#define SID_DOCKWIN_2 SID_DOCKWIN_START+2 +#define SID_DOCKWIN_3 SID_DOCKWIN_START+3 +#define SID_DOCKWIN_4 SID_DOCKWIN_START+4 +#define SID_DOCKWIN_5 SID_DOCKWIN_START+5 +#define SID_DOCKWIN_6 SID_DOCKWIN_START+6 +#define SID_DOCKWIN_7 SID_DOCKWIN_START+7 +#define SID_DOCKWIN_8 SID_DOCKWIN_START+8 +#define SID_DOCKWIN_9 SID_DOCKWIN_START+9 //========================================================================= @@ -994,19 +927,6 @@ #define SID_SFXNODES_ATTACHLIST (SID_SFXNODES_START + 41) #define SID_SFXNODES_END SID_SFXNODES_ATTACHLIST -#define SID_OPTIONS_START (SID_LIB_START + 2000) -#define SID_OPTIONS_FIRSTFREE 99 -#define SID_OPTIONS_END (SID_OPTIONS_START + 100) - -#define SID_SBA_START (SID_LIB_START + 2101) -#define SID_SBA_END (SID_SBA_START + 149) - -#define SID_DBACCESS_START (SID_LIB_START + 2251) -#define SID_DBACCESS_END (SID_DBACCESS_START + 200) - -#define SID_RPTUI_START (SID_LIB_START + 2452) -#define SID_RPTUI_END (SID_RPTUI_START + 197) - // SaveTabPage #define SID_ATTR_DOCINFO (SID_OPTIONS_START + 0) #define SID_ATTR_BACKUP (SID_OPTIONS_START + 1) @@ -1132,30 +1052,6 @@ // slot IDs from SVX (svxids.hrc) --------------------------------------------- -#define SID_SVX_START (SID_LIB_START + 0) - -#define SID_ATTR_CHAR (SID_SVX_START + 6) -#define SID_ATTR_CHAR_FONT (SID_SVX_START + 7) -#define SID_ATTR_CHAR_POSTURE (SID_SVX_START + 8) -#define SID_ATTR_CHAR_WEIGHT (SID_SVX_START + 9) -#define SID_ATTR_CHAR_SHADOWED (SID_SVX_START + 10) -#define SID_ATTR_CHAR_WORDLINEMODE (SID_SVX_START + 11) -#define SID_ATTR_CHAR_CONTOUR (SID_SVX_START + 12) -#define SID_ATTR_CHAR_STRIKEOUT (SID_SVX_START + 13) -#define SID_ATTR_CHAR_UNDERLINE (SID_SVX_START + 14) -#define SID_ATTR_CHAR_FONTHEIGHT (SID_SVX_START + 15) -#define SID_ATTR_CHAR_PROPSIZE (SID_SVX_START + 16) -#define SID_ATTR_CHAR_COLOR (SID_SVX_START + 17) -#define SID_ATTR_CHAR_KERNING (SID_SVX_START + 18) -#define SID_ATTR_CHAR_CASEMAP (SID_SVX_START + 19) -#define SID_ATTR_CHAR_LANGUAGE (SID_SVX_START + 20) -#define SID_ATTR_CHAR_ESCAPEMENT (SID_SVX_START + 21) -#define SID_ATTR_CHAR_FONTLIST (SID_SVX_START + 22) -// Temp-Id f"ur FontMapType -#define SID_ATTR_CHAR_MAPTYPE (SID_SVX_START + 64) -// zusaetzlich f"ur die Ext-Zeichen-TabPage -#define SID_ATTR_CHAR_AUTOKERN (SID_SVX_START + 67) -#define SID_ATTR_CHAR_OVERLINE (SID_SVX_START + 68) #define SID_ZOOM_TOOLBOX (SID_SVX_START + 96) #define SID_ZOOM_OUT (SID_SVX_START + 97) #define SID_ZOOM_IN (SID_SVX_START + 98) @@ -1290,30 +1186,6 @@ #define SID_ATTR_CHAR_FILLCOLOR (SID_SFX_START + 1551) -#define MID_SEARCH_STYLEFAMILY 1 -#define MID_SEARCH_CELLTYPE 2 -#define MID_SEARCH_ROWDIRECTION 3 -#define MID_SEARCH_ALLTABLES 4 -#define MID_SEARCH_BACKWARD 5 -#define MID_SEARCH_PATTERN 6 -#define MID_SEARCH_CONTENT 7 -#define MID_SEARCH_ASIANOPTIONS 8 -#define MID_SEARCH_ALGORITHMTYPE 9 -#define MID_SEARCH_FLAGS 10 -#define MID_SEARCH_SEARCHSTRING 11 -#define MID_SEARCH_REPLACESTRING 12 -#define MID_SEARCH_LOCALE 13 -#define MID_SEARCH_CHANGEDCHARS 14 -#define MID_SEARCH_DELETEDCHARS 15 -#define MID_SEARCH_INSERTEDCHARS 16 -#define MID_SEARCH_TRANSLITERATEFLAGS 17 -#define MID_SEARCH_COMMAND 18 - -// SvxSizeItem -#define MID_SIZE_SIZE 0 -#define MID_SIZE_WIDTH 1 -#define MID_SIZE_HEIGHT 2 - // SfxScriptOrganizerItem #define MID_SCRIPT_ORGANIZER_LANGUAGE 1 // Don't use zero for MID's. It's forbidden to do it! diff --git a/sfx2/inc/sfx2/srchdefs.hxx b/sfx2/inc/sfx2/srchdefs.hxx deleted file mode 100644 index 385ad1c87582..000000000000 --- a/sfx2/inc/sfx2/srchdefs.hxx +++ /dev/null @@ -1,52 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: srchdefs.hxx,v $ - * $Revision: 1.3 $ - * - * 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 _SFX_SRCHDEFS_HXX_ -#define _SFX_SRCHDEFS_HXX_ - - -#define SEARCH_OPTIONS_SEARCH ((sal_uInt16)0x0001) -#define SEARCH_OPTIONS_SEARCH_ALL ((sal_uInt16)0x0002) -#define SEARCH_OPTIONS_REPLACE ((sal_uInt16)0x0004) -#define SEARCH_OPTIONS_REPLACE_ALL ((sal_uInt16)0x0008) -#define SEARCH_OPTIONS_WHOLE_WORDS ((sal_uInt16)0x0010) -#define SEARCH_OPTIONS_BACKWARDS ((sal_uInt16)0x0020) -#define SEARCH_OPTIONS_REG_EXP ((sal_uInt16)0x0040) -#define SEARCH_OPTIONS_EXACT ((sal_uInt16)0x0080) -#define SEARCH_OPTIONS_SELECTION ((sal_uInt16)0x0100) -#define SEARCH_OPTIONS_FAMILIES ((sal_uInt16)0x0200) -#define SEARCH_OPTIONS_FORMAT ((sal_uInt16)0x0400) -#define SEARCH_OPTIONS_MORE ((sal_uInt16)0x0800) -#define SEARCH_OPTIONS_SIMILARITY ((sal_uInt16)0x1000) -#define SEARCH_OPTIONS_CONTENT ((sal_uInt16)0x2000) - - -#endif - diff --git a/sfx2/inc/sfx2/srchitem.hxx b/sfx2/inc/sfx2/srchitem.hxx deleted file mode 100644 index 594d12cf05b5..000000000000 --- a/sfx2/inc/sfx2/srchitem.hxx +++ /dev/null @@ -1,306 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: srchitem.hxx,v $ - * $Revision: 1.4 $ - * - * 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 _SFX_SRCHITEM_HXX -#define _SFX_SRCHITEM_HXX - -#include "sal/config.h" -#include "sfx2/dllapi.h" -#include <com/sun/star/util/XSearchDescriptor.hpp> -#include <com/sun/star/util/SearchOptions.hpp> -#include <com/sun/star/util/SearchFlags.hpp> -#include <com/sun/star/i18n/TransliterationModules.hpp> -#include <unotools/configitem.hxx> -#include <rsc/rscsfx.hxx> -#include <tools/string.hxx> -#include <svl/poolitem.hxx> -#include <sfx2/msg.hxx> -#include <sfx2/srchdefs.hxx> - -// defines --------------------------------------------------------------- - -// Kommandos -#define SVX_SEARCHCMD_FIND ((sal_uInt16)0) -#define SVX_SEARCHCMD_FIND_ALL ((sal_uInt16)1) -#define SVX_SEARCHCMD_REPLACE ((sal_uInt16)2) -#define SVX_SEARCHCMD_REPLACE_ALL ((sal_uInt16)3) - -// Suche in (fuer Calc) -#define SVX_SEARCHIN_FORMULA ((sal_uInt16)0) -#define SVX_SEARCHIN_VALUE ((sal_uInt16)1) -#define SVX_SEARCHIN_NOTE ((sal_uInt16)2) - -// Applicationsflag -#define SVX_SEARCHAPP_WRITER ((sal_uInt16)0) -#define SVX_SEARCHAPP_CALC ((sal_uInt16)1) -#define SVX_SEARCHAPP_DRAW ((sal_uInt16)2) -#define SVX_SEARCHAPP_BASE ((sal_uInt16)3) - -// class SvxSearchItem --------------------------------------------------- - -//#ifdef ITEMID_SEARCH - -/* [Beschreibung] - - In diesem Item werden alle Such-Attribute gespeichert. -*/ -class SFX2_DLLPUBLIC SvxSearchItem : - public SfxPoolItem, - public utl::ConfigItem -{ - com::sun::star::util::SearchOptions aSearchOpt; - - SfxStyleFamily eFamily; // Vorlagen-Familie - - sal_uInt16 nCommand; // Kommando (Suchen, Alle Suchen, Ersetzen, Alle Ersetzen) - - // Calc-Spezifische Daten - sal_uInt16 nCellType; // Suche in Formeln/Werten/Notizen - sal_uInt16 nAppFlag; // Fuer welche Applikation ist der Dialog ueberhaupt - sal_Bool bRowDirection; // Suchrichtung Zeilenweise/Spaltenweise - sal_Bool bAllTables; // in alle Tabellen suchen - - // Writer-spezifisch - sal_Bool bNotes; - - sal_Bool bBackward; // Suche Rueckwaerts - sal_Bool bPattern; // Suche nach Vorlagen - sal_Bool bContent; // Suche im Inhalt - sal_Bool bAsianOptions; // use asian options? - -public: - TYPEINFO(); - - SvxSearchItem( const sal_uInt16 nId /*= ITEMID_SEARCH*/ ); - SvxSearchItem( const SvxSearchItem& rItem ); - virtual ~SvxSearchItem(); - - virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const; - virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ); - virtual int operator == ( const SfxPoolItem& ) const; - virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const; - virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres, - SfxMapUnit eCoreMetric, - SfxMapUnit ePresMetric, - String &rText, const IntlWrapper * = 0 ) const; - - // ConfigItem - virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString > &rPropertyNames ); - virtual void Commit(); - - sal_uInt16 GetCommand() const { return nCommand; } - void SetCommand(sal_uInt16 nNewCommand) { nCommand = nNewCommand; } - - inline const String GetSearchString() const; - inline void SetSearchString(const String& rNewString); - - inline const String GetReplaceString() const; - inline void SetReplaceString(const String& rNewString); - - inline sal_Bool GetWordOnly() const; - void SetWordOnly(sal_Bool bNewWordOnly); - - inline sal_Bool GetExact() const; - void SetExact(sal_Bool bNewExact); - - sal_Bool GetBackward() const { return bBackward; } - void SetBackward(sal_Bool bNewBackward) { bBackward = bNewBackward; } - - inline sal_Bool GetSelection() const; - void SetSelection(sal_Bool bNewSelection); - - inline sal_Bool GetRegExp() const; - void SetRegExp( sal_Bool bVal ); - - sal_Bool GetPattern() const { return bPattern; } - void SetPattern(sal_Bool bNewPattern) { bPattern = bNewPattern; } - - sal_Bool IsContent() const { return bContent; } - void SetContent( sal_Bool bNew ) { bContent = bNew; } - - SfxStyleFamily GetFamily() const { return eFamily; } - void SetFamily( SfxStyleFamily eNewFamily ) - { eFamily = eNewFamily; } - - sal_Bool GetRowDirection() const { return bRowDirection; } - void SetRowDirection(sal_Bool bNewRowDirection) { bRowDirection = bNewRowDirection; } - - sal_Bool IsAllTables() const { return bAllTables; } - void SetAllTables(sal_Bool bNew) { bAllTables = bNew; } - - sal_uInt16 GetCellType() const { return nCellType; } - void SetCellType(sal_uInt16 nNewCellType) { nCellType = nNewCellType; } - - sal_Bool GetNotes() const { return bNotes; } - void SetNotes(sal_Bool bNew) { bNotes = bNew; } - - sal_uInt16 GetAppFlag() const { return nAppFlag; } - void SetAppFlag(sal_uInt16 nNewAppFlag) { nAppFlag = nNewAppFlag; } - - inline sal_Bool IsLevenshtein() const; - void SetLevenshtein( sal_Bool bVal ); - - inline sal_Bool IsLEVRelaxed() const; - void SetLEVRelaxed(sal_Bool bSet); - - inline sal_uInt16 GetLEVOther() const; - inline void SetLEVOther(sal_uInt16 nSet); - - inline sal_uInt16 GetLEVShorter() const; - inline void SetLEVShorter(sal_uInt16 nSet); - - inline sal_uInt16 GetLEVLonger() const; - inline void SetLEVLonger(sal_uInt16 nSet); - - void GetFromDescriptor( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor > & rDescr ); - void SetToDescriptor( ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor > & rDescr ); - - inline const com::sun::star::util::SearchOptions & - GetSearchOptions() const; - inline void SetSearchOptions( const com::sun::star::util::SearchOptions &rOpt ); - - inline sal_Int32 GetTransliterationFlags() const; - void SetTransliterationFlags( sal_Int32 nFlags ); - - inline sal_Bool IsMatchFullHalfWidthForms() const; - void SetMatchFullHalfWidthForms( sal_Bool bVal ); - - inline sal_Bool IsUseAsianOptions() const { return bAsianOptions; } - inline void SetUseAsianOptions( sal_Bool bVal ) { bAsianOptions = bVal; } -}; - -const String SvxSearchItem::GetSearchString() const -{ - return aSearchOpt.searchString; -} - -void SvxSearchItem::SetSearchString(const String& rNewString) -{ - aSearchOpt.searchString = rNewString; -} - -const String SvxSearchItem::GetReplaceString() const -{ - return aSearchOpt.replaceString; -} - -void SvxSearchItem::SetReplaceString(const String& rNewString) -{ - aSearchOpt.replaceString = rNewString; -} - -sal_Bool SvxSearchItem::GetWordOnly() const -{ - return 0 != (aSearchOpt.searchFlag & - com::sun::star::util::SearchFlags::NORM_WORD_ONLY); -} - -sal_Bool SvxSearchItem::GetExact() const -{ - return 0 == (aSearchOpt.transliterateFlags & - com::sun::star::i18n::TransliterationModules_IGNORE_CASE); -} - -sal_Bool SvxSearchItem::GetSelection() const -{ - return 0 != (aSearchOpt.searchFlag & - com::sun::star::util::SearchFlags::REG_NOT_BEGINOFLINE); -} - -sal_Bool SvxSearchItem::GetRegExp() const -{ - return aSearchOpt.algorithmType == com::sun::star::util::SearchAlgorithms_REGEXP ; -} - -sal_Bool SvxSearchItem::IsLEVRelaxed() const -{ - return 0 != (aSearchOpt.searchFlag & - com::sun::star::util::SearchFlags::LEV_RELAXED); -} - -sal_uInt16 SvxSearchItem::GetLEVOther() const -{ - return (INT16) aSearchOpt.changedChars; -} - -void SvxSearchItem::SetLEVOther( sal_uInt16 nVal ) -{ - aSearchOpt.changedChars = nVal; -} - -sal_uInt16 SvxSearchItem::GetLEVShorter() const -{ - return (INT16) aSearchOpt.insertedChars; -} - -void SvxSearchItem::SetLEVShorter( sal_uInt16 nVal ) -{ - aSearchOpt.insertedChars = nVal; -} - -sal_uInt16 SvxSearchItem::GetLEVLonger() const -{ - return (INT16) aSearchOpt.deletedChars; -} - -void SvxSearchItem::SetLEVLonger( sal_uInt16 nVal ) -{ - aSearchOpt.deletedChars = nVal; -} - -sal_Bool SvxSearchItem::IsLevenshtein() const -{ - return aSearchOpt.algorithmType == com::sun::star::util::SearchAlgorithms_APPROXIMATE; -} - -const com::sun::star::util::SearchOptions & SvxSearchItem::GetSearchOptions() const -{ - return aSearchOpt; -} - -void SvxSearchItem::SetSearchOptions( const com::sun::star::util::SearchOptions &rOpt ) -{ - aSearchOpt = rOpt; -} - -sal_Int32 SvxSearchItem::GetTransliterationFlags() const -{ - return aSearchOpt.transliterateFlags; -} - -sal_Bool SvxSearchItem::IsMatchFullHalfWidthForms() const -{ - return 0 != (aSearchOpt.transliterateFlags & - com::sun::star::i18n::TransliterationModules_IGNORE_WIDTH); -} - -#endif - -//#endif - diff --git a/sfx2/inc/sfxhelp.hxx b/sfx2/inc/sfxhelp.hxx index ce0921c23a23..c86ac6d61e6a 100644 --- a/sfx2/inc/sfxhelp.hxx +++ b/sfx2/inc/sfxhelp.hxx @@ -50,6 +50,7 @@ class SFX2_DLLPUBLIC SfxHelp : public Help private: SAL_DLLPRIVATE virtual BOOL Start( ULONG nHelpId, const Window* pWindow ); SAL_DLLPRIVATE virtual BOOL Start( const String& rURL, const Window* pWindow ); + SAL_DLLPRIVATE virtual void OpenHelpAgent( ULONG nHelpId ); SAL_DLLPRIVATE String GetHelpModuleName_Impl(); SAL_DLLPRIVATE String CreateHelpURL_Impl( ULONG nHelpId, const String& rModuleName ); diff --git a/sfx2/prj/d.lst b/sfx2/prj/d.lst index fe71b1715769..0748aa19cd65 100644 --- a/sfx2/prj/d.lst +++ b/sfx2/prj/d.lst @@ -22,112 +22,25 @@ mkdir: %_DEST%\inc%_EXT%\sfx2 ..\%COMMON_OUTDIR%\srs\sfxslots_srs.hid %COMMON_DEST%\res%_EXT%\sfxslots_srs.hid ..\util\sfx.xml %_DEST%\xml%_EXT%\sfx.xml ..\%__SRC%\misc\sfx2.csv %_DEST%\inc%_EXT%\sfx2.csv -..\inc\sfx2\dllapi.h %_DEST%\inc%_EXT%\sfx2\dllapi.h + +..\inc\sfx2\*.h %_DEST%\inc%_EXT%\sfx2\*.h +..\inc\sfx2\*.hxx %_DEST%\inc%_EXT%\sfx2\*.hxx +..\inc\sfx2\*.hrc %_DEST%\inc%_EXT%\sfx2\*.hrc ..\sdi\sfx.sdi %_DEST%\inc%_EXT%\sfx2\sfx.sdi ..\sdi\sfxitems.sdi %_DEST%\inc%_EXT%\sfx2\sfxitems.sdi -..\inc\sfx2\app.hxx %_DEST%\inc%_EXT%\sfx2\app.hxx -..\inc\sfx2\basedlgs.hxx %_DEST%\inc%_EXT%\sfx2\basedlgs.hxx -..\inc\sfx2\bindings.hxx %_DEST%\inc%_EXT%\sfx2\bindings.hxx ..\inc\brokenpackageint.hxx %_DEST%\inc%_EXT%\sfx2\brokenpackageint.hxx -..\inc\sfx2\chalign.hxx %_DEST%\inc%_EXT%\sfx2\chalign.hxx -..\inc\sfx2\childwin.hxx %_DEST%\inc%_EXT%\sfx2\childwin.hxx -..\inc\sfx2\ctrlitem.hxx %_DEST%\inc%_EXT%\sfx2\ctrlitem.hxx -..\inc\sfx2\dispatch.hxx %_DEST%\inc%_EXT%\sfx2\dispatch.hxx -..\inc\sfx2\dinfdlg.hxx %_DEST%\inc%_EXT%\sfx2\dinfdlg.hxx ..\inc\dinfedt.hxx %_DEST%\inc%_EXT%\sfx2\dinfedt.hxx -..\inc\sfx2\docinf.hxx %_DEST%\inc%_EXT%\sfx2\docinf.hxx -..\inc\sfx2\docfac.hxx %_DEST%\inc%_EXT%\sfx2\docfac.hxx -..\inc\sfx2\docfile.hxx %_DEST%\inc%_EXT%\sfx2\docfile.hxx -..\inc\sfx2\docfilt.hxx %_DEST%\inc%_EXT%\sfx2\docfilt.hxx -..\inc\sfx2\dockwin.hxx %_DEST%\inc%_EXT%\sfx2\dockwin.hxx -..\inc\sfx2\doctempl.hxx %_DEST%\inc%_EXT%\sfx2\doctempl.hxx -..\inc\sfx2\doctdlg.hxx %_DEST%\inc%_EXT%\sfx2\doctdlg.hxx -..\inc\sfx2\event.hxx %_DEST%\inc%_EXT%\sfx2\event.hxx -..\inc\sfx2\evntconf.hxx %_DEST%\inc%_EXT%\sfx2\evntconf.hxx -..\inc\sfx2\filedlghelper.hxx %_DEST%\inc%_EXT%\sfx2\filedlghelper.hxx -..\inc\sfx2\fcontnr.hxx %_DEST%\inc%_EXT%\sfx2\fcontnr.hxx -..\inc\sfx2\frame.hxx %_DEST%\inc%_EXT%\sfx2\frame.hxx -..\inc\sfx2\frmdescr.hxx %_DEST%\inc%_EXT%\sfx2\frmdescr.hxx -..\inc\sfx2\frmhtml.hxx %_DEST%\inc%_EXT%\sfx2\frmhtml.hxx -..\inc\sfx2\frmhtmlw.hxx %_DEST%\inc%_EXT%\sfx2\frmhtmlw.hxx -..\inc\sfx2\genlink.hxx %_DEST%\inc%_EXT%\sfx2\genlink.hxx -..\inc\sfx2\hintpost.hxx %_DEST%\inc%_EXT%\sfx2\hintpost.hxx ..\inc\imgmgr.hxx %_DEST%\inc%_EXT%\sfx2\imgmgr.hxx -..\inc\sfx2\imgdef.hxx %_DEST%\inc%_EXT%\sfx2\imgdef.hxx -..\inc\sfx2\ipclient.hxx %_DEST%\inc%_EXT%\sfx2\ipclient.hxx -..\inc\sfx2\macrconf.hxx %_DEST%\inc%_EXT%\sfx2\macrconf.hxx -..\inc\sfx2\topfrm.hxx %_DEST%\inc%_EXT%\sfx2\topfrm.hxx -..\inc\sfx2\mgetempl.hxx %_DEST%\inc%_EXT%\sfx2\mgetempl.hxx ..\inc\mieclip.hxx %_DEST%\inc%_EXT%\sfx2\mieclip.hxx -..\inc\sfx2\minarray.hxx %_DEST%\inc%_EXT%\sfx2\minarray.hxx ..\inc\minfitem.hxx %_DEST%\inc%_EXT%\sfx2\minfitem.hxx -..\inc\sfx2\minstack.hxx %_DEST%\inc%_EXT%\sfx2\minstack.hxx -..\inc\sfx2\mnuitem.hxx %_DEST%\inc%_EXT%\sfx2\mnuitem.hxx -..\inc\sfx2\module.hxx %_DEST%\inc%_EXT%\sfx2\module.hxx -..\inc\sfx2\msg.hxx %_DEST%\inc%_EXT%\sfx2\msg.hxx -..\inc\sfx2\mnumgr.hxx %_DEST%\inc%_EXT%\sfx2\mnumgr.hxx -..\inc\sfx2\newstyle.hxx %_DEST%\inc%_EXT%\sfx2\newstyle.hxx -..\inc\sfx2\new.hxx %_DEST%\inc%_EXT%\sfx2\new.hxx -..\inc\sfx2\navigat.hxx %_DEST%\inc%_EXT%\sfx2\navigat.hxx -..\inc\sfx2\msgpool.hxx %_DEST%\inc%_EXT%\sfx2\msgpool.hxx -..\inc\sfx2\passwd.hxx %_DEST%\inc%_EXT%\sfx2\passwd.hxx -..\inc\sfx2\prnmon.hxx %_DEST%\inc%_EXT%\sfx2\prnmon.hxx -..\inc\sfx2\objface.hxx %_DEST%\inc%_EXT%\sfx2\objface.hxx -..\inc\sfx2\objitem.hxx %_DEST%\inc%_EXT%\sfx2\objitem.hxx -..\inc\sfx2\signaturestate.hxx %_DEST%\inc%_EXT%\sfx2\signaturestate.hxx -..\inc\sfx2\docmacromode.hxx %_DEST%\inc%_EXT%\sfx2\docmacromode.hxx -..\inc\sfx2\userinputinterception.hxx %_DEST%\inc%_EXT%\sfx2\userinputinterception.hxx -..\inc\sfx2\docstoragemodifylistener.hxx %_DEST%\inc%_EXT%\sfx2\docstoragemodifylistener.hxx -..\inc\sfx2\sfxmodelfactory.hxx %_DEST%\inc%_EXT%\sfx2\sfxmodelfactory.hxx -..\inc\sfx2\objsh.hxx %_DEST%\inc%_EXT%\sfx2\objsh.hxx -..\inc\sfx2\printer.hxx %_DEST%\inc%_EXT%\sfx2\printer.hxx -..\inc\sfx2\printopt.hxx %_DEST%\inc%_EXT%\sfx2\printopt.hxx -..\inc\sfx2\progress.hxx %_DEST%\inc%_EXT%\sfx2\progress.hxx -..\inc\sfx2\request.hxx %_DEST%\inc%_EXT%\sfx2\request.hxx -..\inc\sfx2\sfx.hrc %_DEST%\inc%_EXT%\sfx2\sfx.hrc -..\inc\sfx2\sfxdefs.hxx %_DEST%\inc%_EXT%\sfx2\sfxdefs.hxx ..\inc\sfxhelp.hxx %_DEST%\inc%_EXT%\sfx2\sfxhelp.hxx -..\inc\sfx2\sfxhtml.hxx %_DEST%\inc%_EXT%\sfx2\sfxhtml.hxx -..\inc\sfx2\sfxsids.hrc %_DEST%\inc%_EXT%\sfx2\sfxsids.hrc -..\inc\sfx2\shell.hxx %_DEST%\inc%_EXT%\sfx2\shell.hxx ..\inc\stbitem.hxx %_DEST%\inc%_EXT%\sfx2\stbitem.hxx -..\inc\sfx2\styfitem.hxx %_DEST%\inc%_EXT%\sfx2\styfitem.hxx -..\inc\sfx2\styledlg.hxx %_DEST%\inc%_EXT%\sfx2\styledlg.hxx -..\inc\sfx2\tabdlg.hxx %_DEST%\inc%_EXT%\sfx2\tabdlg.hxx -..\inc\sfx2\tbxctrl.hxx %_DEST%\inc%_EXT%\sfx2\tbxctrl.hxx -..\inc\sfx2\templdlg.hxx %_DEST%\inc%_EXT%\sfx2\templdlg.hxx ..\inc\tplpitem.hxx %_DEST%\inc%_EXT%\sfx2\tplpitem.hxx -..\inc\sfx2\viewfrm.hxx %_DEST%\inc%_EXT%\sfx2\viewfrm.hxx -..\inc\sfx2\viewsh.hxx %_DEST%\inc%_EXT%\sfx2\viewsh.hxx ..\inc\viewfac.hxx %_DEST%\inc%_EXT%\sfx2\viewfac.hxx -..\inc\sfx2\appuno.hxx %_DEST%\inc%_EXT%\sfx2\appuno.hxx -..\inc\sfx2\sfxuno.hxx %_DEST%\inc%_EXT%\sfx2\sfxuno.hxx -..\inc\sfx2\sfxbasemodel.hxx %_DEST%\inc%_EXT%\sfx2\sfxbasemodel.hxx -..\inc\sfx2\sfxbasecontroller.hxx %_DEST%\inc%_EXT%\sfx2\sfxbasecontroller.hxx -..\inc\sfx2\unoctitm.hxx %_DEST%\inc%_EXT%\sfx2\unoctitm.hxx -..\inc\sfx2\srchitem.hxx %_DEST%\inc%_EXT%\sfx2\srchitem.hxx -..\inc\sfx2\srchdefs.hxx %_DEST%\inc%_EXT%\sfx2\srchdefs.hxx -..\inc\sfx2\cntids.hrc %_DEST%\inc%_EXT%\sfx2\cntids.hrc ..\inc\basmgr.hxx %_DEST%\inc%_EXT%\sfx2\basmgr.hxx ..\inc\imagemgr.hxx %_DEST%\inc%_EXT%\sfx2\imagemgr.hxx -..\inc\sfx2\sfxdlg.hxx %_DEST%\inc%_EXT%\sfx2\sfxdlg.hxx -..\inc\sfx2\dialogs.hrc %_DEST%\inc%_EXT%\sfx2\dialogs.hrc -..\inc\sfx2\itemwrapper.hxx %_DEST%\inc%_EXT%\sfx2\itemwrapper.hxx -..\inc\sfx2\controlwrapper.hxx %_DEST%\inc%_EXT%\sfx2\controlwrapper.hxx -..\inc\sfx2\itemconnect.hxx %_DEST%\inc%_EXT%\sfx2\itemconnect.hxx -..\inc\sfx2\lnkbase.hxx %_DEST%\inc%_EXT%\sfx2\lnkbase.hxx -..\inc\sfx2\linkmgr.hxx %_DEST%\inc%_EXT%\sfx2\linkmgr.hxx -..\inc\sfx2\linksrc.hxx %_DEST%\inc%_EXT%\sfx2\linksrc.hxx -..\inc\sfx2\querystatus.hxx %_DEST%\inc%_EXT%\sfx2\querystatus.hxx -..\inc\sfx2\sfxstatuslistener.hxx %_DEST%\inc%_EXT%\sfx2\sfxstatuslistener.hxx ..\inc\QuerySaveDocument.hxx %_DEST%\inc%_EXT%\sfx2\QuerySaveDocument.hxx ..\inc\mailmodelapi.hxx %_DEST%\inc%_EXT%\sfx2\mailmodelapi.hxx ..\inc\docinsert.hxx %_DEST%\inc%_EXT%\sfx2\docinsert.hxx -..\inc\sfx2\layout.hxx %_DEST%\inc%_EXT%\sfx2\layout.hxx -..\inc\sfx2\layout-tabdlg.hxx %_DEST%\inc%_EXT%\sfx2\layout-tabdlg.hxx -..\inc\sfx2\layout-post.hxx %_DEST%\inc%_EXT%\sfx2\layout-post.hxx -..\inc\sfx2\layout-pre.hxx %_DEST%\inc%_EXT%\sfx2\layout-pre.hxx -..\inc\sfx2\XmlIdRegistry.hxx %_DEST%\inc%_EXT%\sfx2\XmlIdRegistry.hxx -..\inc\sfx2\DocumentMetadataAccess.hxx %_DEST%\inc%_EXT%\sfx2\DocumentMetadataAccess.hxx -..\inc\sfx2\Metadatable.hxx %_DEST%\inc%_EXT%\sfx2\Metadatable.hxx + diff --git a/sfx2/source/appl/app.hrc b/sfx2/source/appl/app.hrc index c08f46effc81..70dca1cf1d6b 100644 --- a/sfx2/source/appl/app.hrc +++ b/sfx2/source/appl/app.hrc @@ -258,6 +258,18 @@ #define STR_DDE_ERROR (RID_SFX_APP_START + 193) #define RID_SECURITY_WARNING_NO_HYPERLINKS (RID_SFX_APP_START + 194) +#define RID_SVXSTR_FILELINK (RID_SFX_APP_START + 195) +#define RID_SVXSTR_GRAFIKLINK (RID_SFX_APP_START + 196) +#define RID_SVXSTR_EDITGRFLINK (RID_SFX_APP_START + 197) + +// strings for error messsages of OpenGraphics dialog +#define RID_SVXSTR_GRFILTER_OPENERROR (RID_SFX_APP_START + 198) +#define RID_SVXSTR_GRFILTER_IOERROR (RID_SFX_APP_START + 199) +#define RID_SVXSTR_GRFILTER_FORMATERROR (RID_SFX_APP_START + 200) +#define RID_SVXSTR_GRFILTER_VERSIONERROR (RID_SFX_APP_START + 201) +#define RID_SVXSTR_GRFILTER_FILTERERROR (RID_SFX_APP_START + 202) +#define RID_SVXSTR_GRFILTER_TOOBIG (RID_SFX_APP_START + 203) + #define MD_DDE_LINKEDIT (RID_SFX_APP_START + 1) #endif // #ifndef _SFX_APP_HRC diff --git a/sfx2/source/appl/app.src b/sfx2/source/appl/app.src index 463788d2d6d0..0530b5aeb9db 100644 --- a/sfx2/source/appl/app.src +++ b/sfx2/source/appl/app.src @@ -1061,3 +1061,42 @@ Image IMG_MISSING_4 { ImageBitmap = Bitmap { File = "sn064.bmp" ; }; }; + +String RID_SVXSTR_FILELINK +{ + Text [ en-US ] = "Document" ; +}; +String RID_SVXSTR_GRAFIKLINK +{ + Text [ en-US ] = "Graphic" ; +}; +String RID_SVXSTR_EDITGRFLINK +{ + Text [ en-US ] = "Link graphics" ; +}; + +String RID_SVXSTR_GRFILTER_OPENERROR +{ + Text [ en-US ] = "Graphics file cannot be opened" ; +}; +String RID_SVXSTR_GRFILTER_IOERROR +{ + Text [ en-US ] = "Graphics file cannot be read" ; +}; +String RID_SVXSTR_GRFILTER_FORMATERROR +{ + Text [ en-US ] = "Unknown graphics format" ; +}; +String RID_SVXSTR_GRFILTER_VERSIONERROR +{ + Text [ en-US ] = "This version of the graphics file is not supported" ; +}; +String RID_SVXSTR_GRFILTER_FILTERERROR +{ + Text [ en-US ] = "Graphics filter not found" ; +}; +String RID_SVXSTR_GRFILTER_TOOBIG +{ + Text [ en-US ] = "Not enough memory to insert graphic" ; +}; + diff --git a/sfx2/source/appl/appbas.cxx b/sfx2/source/appl/appbas.cxx index 4fe352c3c4bc..f2687fcb34ec 100644 --- a/sfx2/source/appl/appbas.cxx +++ b/sfx2/source/appl/appbas.cxx @@ -89,7 +89,7 @@ #define ITEMID_SEARCH SID_SEARCH_ITEM -#include <sfx2/srchitem.hxx> +#include <svl/srchitem.hxx> #include <vos/socket.hxx> #define SFX_TYPEMAP diff --git a/sfx2/source/appl/appinit.cxx b/sfx2/source/appl/appinit.cxx index 837ccc461586..f9e8273c47e4 100644 --- a/sfx2/source/appl/appinit.cxx +++ b/sfx2/source/appl/appinit.cxx @@ -276,8 +276,6 @@ FASTBOOL SfxApplication::Initialize_Impl() new SfxErrorHandler( RID_SO_ERROR_HANDLER, ERRCODE_AREA_SO, ERRCODE_AREA_SO_END); new SfxErrorHandler( - (RID_SJ_START +1), ERRCODE_AREA_JAVA, ERRCODE_AREA_JAVA_END); - new SfxErrorHandler( RID_BASIC_START, ERRCODE_AREA_SBX, ERRCODE_AREA_SBX_END ); // diverse Pointer diff --git a/sfx2/source/appl/fileobj.cxx b/sfx2/source/appl/fileobj.cxx new file mode 100644 index 000000000000..a414ccc8b07c --- /dev/null +++ b/sfx2/source/appl/fileobj.cxx @@ -0,0 +1,719 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: fileobj.cxx,v $ + * $Revision: 1.24 $ + * + * 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. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sfx2.hxx" + +#include <vcl/wrkwin.hxx> +#include <vcl/msgbox.hxx> +#include <tools/urlobj.hxx> +#include <tools/stream.hxx> +#include <sot/formats.hxx> +#include <svtools/filter.hxx> +#include <sfx2/lnkbase.hxx> +#include <sfx2/app.hxx> +#include <sfx2/progress.hxx> +#include <sfx2/docfilt.hxx> +#include <sfx2/filedlghelper.hxx> +#include <sot/exchange.hxx> +#include <com/sun/star/uno/Any.hxx> +#include <com/sun/star/uno/Sequence.hxx> +#include <sfx2/docfac.hxx> +#include <com/sun/star/document/XTypeDetection.hpp> +#include <comphelper/mediadescriptor.hxx> +#include <comphelper/processfactory.hxx> +#include <sfx2/linkmgr.hxx> +#include <sfx2/opengrf.hxx> +#include "sfxresid.hxx" +#include "fileobj.hxx" +#include "app.hrc" + +namespace css = ::com::sun::star; + +#define FILETYPE_TEXT 1 +#define FILETYPE_GRF 2 +#define FILETYPE_OBJECT 3 + +struct Impl_DownLoadData +{ + Graphic aGrf; + Timer aTimer; + + Impl_DownLoadData( const Link& rLink ) + { + aTimer.SetTimeout( 100 ); + aTimer.SetTimeoutHdl( rLink ); + aGrf.SetDefaultType(); + } + ~Impl_DownLoadData() + { + aTimer.Stop(); + } +}; + +// -------------------------------------------------------------------------- + + +SvFileObject::SvFileObject() : + pDownLoadData( NULL ), pOldParent( NULL ), nType( FILETYPE_TEXT ) +{ + bLoadAgain = TRUE; + bSynchron = bLoadError = bWaitForData = bDataReady = bNativFormat = + bClearMedium = bStateChangeCalled = bInCallDownLoad = FALSE; +} + + +SvFileObject::~SvFileObject() +{ + if ( xMed.Is() ) + { + xMed->SetDataAvailableLink( Link() ); + xMed->SetDoneLink( Link() ); + xMed.Clear(); + } + delete pDownLoadData; +} + + +BOOL SvFileObject::GetData( ::com::sun::star::uno::Any & rData, + const String & rMimeType, + BOOL bGetSynchron ) +{ + ULONG nFmt = SotExchange::GetFormatStringId( rMimeType ); + switch( nType ) + { + case FILETYPE_TEXT: + if( FORMAT_FILE == nFmt ) + { + // das Medium muss in der Applikation geoffnet werden, um die + // relativen Datei Links aufzuloesen!!!! Wird ueber den + // LinkManager und damit von dessen Storage erledigt. + rData <<= rtl::OUString( sFileNm ); + } + break; + + case FILETYPE_GRF: + if( !bLoadError ) + { + SfxMediumRef xTmpMed; + + if( FORMAT_GDIMETAFILE == nFmt || FORMAT_BITMAP == nFmt || + SOT_FORMATSTR_ID_SVXB == nFmt ) + { + Graphic aGrf; + + //JP 15.07.98: Bug 52959 + // falls das Nativformat doch erwuenscht ist, muss am + // Ende das Flag zurueckgesetzt werden. +// wird einzig und allein im sw/ndgrf.cxx benutzt, wenn der Link vom +// GraphicNode entfernt wird. + BOOL bOldNativFormat = bNativFormat; +//!!?? bNativFormat = 0 != (ASPECT_ICON & pSvData->GetAspect()); + + // falls gedruckt werden soll, warten wir bis die + // Daten vorhanden sind + if( bGetSynchron ) + { + // testhalber mal ein LoadFile rufen um das nach- + // laden ueberahaupt anzustossen + if( !xMed.Is() ) + LoadFile_Impl(); + + if( !bInCallDownLoad ) + { + xTmpMed = xMed; + while( bWaitForData ) + Application::Reschedule(); + + xMed = xTmpMed; + bClearMedium = TRUE; + } + } + + if( pDownLoadData || + ( !bWaitForData && ( xMed.Is() || // wurde als URL geladen + ( bSynchron && LoadFile_Impl() && xMed.Is() ) )) ) + { + // falls + + // falls es uebers Internet gesogen wurde, nicht + // wieder versuchen + if( !bGetSynchron ) + bLoadAgain = !xMed->IsRemote(); + bLoadError = !GetGraphic_Impl( aGrf, xMed->GetInStream() ); + } + else if( !LoadFile_Impl() || + !GetGraphic_Impl( aGrf, xMed.Is() ? xMed->GetInStream() : 0 )) + { + if( !xMed.Is() ) + break; + aGrf.SetDefaultType(); + } + + if( SOT_FORMATSTR_ID_SVXB != nFmt ) + nFmt = (bLoadError || GRAPHIC_BITMAP == aGrf.GetType()) + ? FORMAT_BITMAP + : FORMAT_GDIMETAFILE; + + SvMemoryStream aMemStm( 0, 65535 ); + switch ( nFmt ) + { + case SOT_FORMATSTR_ID_SVXB: + if( GRAPHIC_NONE != aGrf.GetType() ) + { + aMemStm.SetVersion( SOFFICE_FILEFORMAT_50 ); + aMemStm << aGrf; + } + break; + + case FORMAT_BITMAP: + if( !aGrf.GetBitmap().IsEmpty()) + aMemStm << aGrf.GetBitmap(); + break; + + default: + if( aGrf.GetGDIMetaFile().GetActionCount() ) + { + GDIMetaFile aMeta( aGrf.GetGDIMetaFile() ); + aMeta.Write( aMemStm ); + } + } + rData <<= css::uno::Sequence< sal_Int8 >( (sal_Int8*) aMemStm.GetData(), + aMemStm.Seek( STREAM_SEEK_TO_END ) ); + + bNativFormat = bOldNativFormat; + + // alles fertig? + if( xMed.Is() && !bSynchron && bClearMedium ) + { + xMed.Clear(); + bClearMedium = FALSE; + } + } + } + break; + case FILETYPE_OBJECT: + // TODO/LATER: possibility to insert a new object + rData <<= rtl::OUString( sFileNm ); + break; + } + return sal_True/*0 != aTypeList.Count()*/; +} + + + + +BOOL SvFileObject::Connect( sfx2::SvBaseLink* pLink ) +{ + if( !pLink || !pLink->GetLinkManager() ) + return FALSE; + + // teste doch mal, ob nicht ein anderer Link mit der gleichen + // Verbindung schon existiert + pLink->GetLinkManager()->GetDisplayNames( pLink, 0, &sFileNm, 0, &sFilter ); + + if( OBJECT_CLIENT_GRF == pLink->GetObjType() ) + { + SfxObjectShellRef pShell = pLink->GetLinkManager()->GetPersist(); + if( pShell.Is() ) + { + if( pShell->IsAbortingImport() ) + return FALSE; + + if( pShell->GetMedium() ) + sReferer = pShell->GetMedium()->GetName(); + } + } + + switch( pLink->GetObjType() ) + { + case OBJECT_CLIENT_GRF: + nType = FILETYPE_GRF; + bSynchron = pLink->IsSynchron(); + break; + + case OBJECT_CLIENT_FILE: + nType = FILETYPE_TEXT; + break; + + case OBJECT_CLIENT_OLE: + nType = FILETYPE_OBJECT; + // TODO/LATER: introduce own type to be used for exchanging + break; + + default: + return FALSE; + } + + SetUpdateTimeout( 0 ); + + // und jetzt bei diesem oder gefundenem Pseudo-Object anmelden + AddDataAdvise( pLink, SotExchange::GetFormatMimeType( pLink->GetContentType()), 0 ); + return TRUE; +} + + +BOOL SvFileObject::LoadFile_Impl() +{ + // wir sind noch im Laden!! + if( bWaitForData || !bLoadAgain || xMed.Is() || pDownLoadData ) + return FALSE; + + // z.Z. nur auf die aktuelle DocShell + xMed = new SfxMedium( sFileNm, STREAM_STD_READ, TRUE ); + SvLinkSource::StreamToLoadFrom aStreamToLoadFrom = + getStreamToLoadFrom(); + xMed->setStreamToLoadFrom( + aStreamToLoadFrom.m_xInputStreamToLoadFrom, + aStreamToLoadFrom.m_bIsReadOnly); + // setStreamToLoadFrom(0,0); + // Keinen Eintrag im Roter Button Menu + xMed->SetDontCreateCancellable(); + if( sReferer.Len() ) + xMed->SetReferer( sReferer ); + + if( !bSynchron ) + { + bLoadAgain = bDataReady = bInNewData = FALSE; + bWaitForData = TRUE; + + SfxMediumRef xTmpMed = xMed; + xMed->SetDataAvailableLink( STATIC_LINK( this, SvFileObject, LoadGrfNewData_Impl ) ); + bInCallDownLoad = TRUE; + xMed->DownLoad( STATIC_LINK( this, SvFileObject, LoadGrfReady_Impl ) ); + bInCallDownLoad = FALSE; + + bClearMedium = !xMed.Is(); + if( bClearMedium ) + xMed = xTmpMed; // falls gleich im DownLoad schon schluss ist + return bDataReady; + } + + bWaitForData = TRUE; + bDataReady = bInNewData = FALSE; + xMed->DownLoad(); + bLoadAgain = !xMed->IsRemote(); + bWaitForData = FALSE; + + // Grafik ist fertig, also DataChanged von der Statusaederung schicken: + SendStateChg_Impl( xMed->GetInStream() && xMed->GetInStream()->GetError() + ? sfx2::LinkManager::STATE_LOAD_ERROR : sfx2::LinkManager::STATE_LOAD_OK ); + return TRUE; +} + + +BOOL SvFileObject::GetGraphic_Impl( Graphic& rGrf, SvStream* pStream ) +{ + GraphicFilter* pGF = GraphicFilter::GetGraphicFilter(); + + const USHORT nFilter = sFilter.Len() && pGF->GetImportFormatCount() + ? pGF->GetImportFormatNumber( sFilter ) + : GRFILTER_FORMAT_DONTKNOW; + + String aEmptyStr; + int nRes; + + // vermeiden, dass ein native Link angelegt wird + if( ( !pStream || !pDownLoadData ) && !rGrf.IsLink() && + !rGrf.GetContext() && !bNativFormat ) + rGrf.SetLink( GfxLink() ); + + if( !pStream ) + nRes = xMed.Is() ? GRFILTER_OPENERROR + : pGF->ImportGraphic( rGrf, INetURLObject(sFileNm), + nFilter ); + else if( !pDownLoadData ) + { + pStream->Seek( STREAM_SEEK_TO_BEGIN ); + nRes = pGF->ImportGraphic( rGrf, aEmptyStr, *pStream, nFilter ); + } + else + { + nRes = pGF->ImportGraphic( pDownLoadData->aGrf, aEmptyStr, + *pStream, nFilter ); + + if( pDownLoadData ) + { + rGrf = pDownLoadData->aGrf; + if( GRAPHIC_NONE == rGrf.GetType() ) + rGrf.SetDefaultType(); + + + if( !pDownLoadData->aGrf.GetContext() ) + { + xMed->SetDataAvailableLink( Link() ); +// xMed->SetDoneLink( Link() ); + delete pDownLoadData, pDownLoadData = 0; + bDataReady = TRUE; + bWaitForData = FALSE; + } + else if( FALSE ) + { + // Timer aufsetzen, um zurueck zukehren + pDownLoadData->aTimer.Start(); + } + } + } + + if( pStream && ERRCODE_IO_PENDING == pStream->GetError() ) + pStream->ResetError(); + +#ifdef DBG_UTIL + if( nRes ) + { + if( xMed.Is() && !pStream ) + { + DBG_WARNING3( "GrafikFehler [%d] - [%s] URL[%s]", + nRes, + xMed->GetPhysicalName().GetBuffer(), + sFileNm.GetBuffer() ); + } + else + { + DBG_WARNING2( "GrafikFehler [%d] - [%s]", + nRes, sFileNm.GetBuffer() ); + } + } +#endif + + return GRFILTER_OK == nRes; +} + +/** detect the filter of the given file + + @param _rURL + specifies the URL of the file which filter is to detected.<br/> + If the URL doesn't denote a valid (existent and accessible) file, the + request is silently dropped. +*/ +String impl_getFilter( const String& _rURL ) +{ + String sFilter; + if ( _rURL.Len() == 0 ) + return sFilter; + + try + { + css::uno::Reference< ::com::sun::star::document::XTypeDetection > xTypeDetection( + ::comphelper::getProcessServiceFactory()->createInstance( + ::rtl::OUString::createFromAscii("com.sun.star.document.TypeDetection") ), + css::uno::UNO_QUERY ); + if ( xTypeDetection.is() ) + { + ::comphelper::MediaDescriptor aDescr; + aDescr[ ::comphelper::MediaDescriptor::PROP_URL() ] <<= ::rtl::OUString( _rURL ); + css::uno::Sequence< css::beans::PropertyValue > aDescrList = + aDescr.getAsConstPropertyValueList(); + ::rtl::OUString sType = xTypeDetection->queryTypeByDescriptor( aDescrList, sal_True ); + if ( sType.getLength() ) + { + css::uno::Reference< css::container::XNameAccess > xTypeCont( xTypeDetection, + css::uno::UNO_QUERY ); + if ( xTypeCont.is() ) + { + ::comphelper::SequenceAsHashMap lTypeProps( xTypeCont->getByName( sType ) ); + sFilter = lTypeProps.getUnpackedValueOrDefault( + ::rtl::OUString::createFromAscii("PreferredFilter"), ::rtl::OUString() ); + } + } + } + } + catch( const css::uno::Exception& ) + { + } + + return sFilter; +} + +void SvFileObject::Edit( Window* pParent, sfx2::SvBaseLink* pLink, const Link& rEndEditHdl ) +{ + aEndEditLink = rEndEditHdl; + String sFile, sRange, sTmpFilter; + if( pLink && pLink->GetLinkManager() ) + { + pLink->GetLinkManager()->GetDisplayNames( pLink, 0, &sFile, &sRange, &sTmpFilter ); + + switch( pLink->GetObjType() ) + { + case OBJECT_CLIENT_GRF: + { + nType = FILETYPE_GRF; // falls noch nicht gesetzt + + SvxOpenGraphicDialog aDlg(SfxResId(RID_SVXSTR_EDITGRFLINK)); + aDlg.EnableLink(sal_False); + aDlg.SetPath( sFile, sal_True ); + aDlg.SetCurrentFilter( sTmpFilter ); + + if( !aDlg.Execute() ) + { + sFile = aDlg.GetPath(); + sFile += ::sfx2::cTokenSeperator; + sFile += ::sfx2::cTokenSeperator; + sFile += aDlg.GetCurrentFilter(); + + if ( aEndEditLink.IsSet() ) + aEndEditLink.Call( &sFile ); + } + else + sFile.Erase(); + } + break; + + case OBJECT_CLIENT_OLE: + { + nType = FILETYPE_OBJECT; // if not set already + pOldParent = Application::GetDefDialogParent(); + Application::SetDefDialogParent( pParent ); + + ::sfx2::FileDialogHelper* pFileDlg = + pLink->GetFileDialog( (SFXWB_INSERT | WB_3DLOOK), String() ); + pFileDlg->StartExecuteModal( LINK( this, SvFileObject, DialogClosedHdl ) ); + } + break; + + case OBJECT_CLIENT_FILE: + { + nType = FILETYPE_TEXT; // if not set already + pOldParent = Application::GetDefDialogParent(); + Application::SetDefDialogParent( pParent ); + + String sFactory; + SfxObjectShell* pShell = pLink->GetLinkManager()->GetPersist(); + if ( pShell ) + sFactory = pShell->GetFactory().GetFactoryName(); + + ::sfx2::FileDialogHelper* pFileDlg = + pLink->GetFileDialog( (SFXWB_INSERT | WB_3DLOOK), sFactory ); + pFileDlg->StartExecuteModal( LINK( this, SvFileObject, DialogClosedHdl ) ); + } + break; + + default: + sFile.Erase(); + } + } +} + +IMPL_STATIC_LINK( SvFileObject, LoadGrfReady_Impl, void*, EMPTYARG ) +{ + // wenn wir von hier kommen, kann es kein Fehler mehr sein + pThis->bLoadError = FALSE; + pThis->bWaitForData = FALSE; + pThis->bInCallDownLoad = FALSE; + + if( !pThis->bInNewData && !pThis->bDataReady ) + { + // Grafik ist fertig, also DataChanged von der Status- + // aederung schicken: + pThis->bDataReady = TRUE; + pThis->SendStateChg_Impl( sfx2::LinkManager::STATE_LOAD_OK ); + + // und dann nochmal die Daten senden + pThis->NotifyDataChanged(); + } + + if( pThis->bDataReady ) + { + pThis->bLoadAgain = TRUE; + if( pThis->xMed.Is() ) + { + pThis->xMed->SetDataAvailableLink( Link() ); + pThis->xMed->SetDoneLink( Link() ); + + Application::PostUserEvent( + STATIC_LINK( pThis, SvFileObject, DelMedium_Impl ), + new SfxMediumRef( pThis->xMed )); + pThis->xMed.Clear(); + } + if( pThis->pDownLoadData ) + delete pThis->pDownLoadData, pThis->pDownLoadData = 0; + } + + return 0; +} + +IMPL_STATIC_LINK( SvFileObject, DelMedium_Impl, SfxMediumRef*, pDelMed ) +{ + (void)pThis; + delete pDelMed; + return 0; +} + +IMPL_STATIC_LINK( SvFileObject, LoadGrfNewData_Impl, void*, EMPTYARG ) +{ + // wenn wir von hier kommen, kann es kein Fehler mehr sein + if( pThis->bInNewData ) + return 0; + + pThis->bInNewData = TRUE; + pThis->bLoadError = FALSE; + + if( !pThis->pDownLoadData ) + { + pThis->pDownLoadData = new Impl_DownLoadData( + STATIC_LINK( pThis, SvFileObject, LoadGrfNewData_Impl ) ); + + // Null-Link setzen, damit keine temporaeren Grafiken + // rausgeswapt werden; der Filter prueft, ob schon + // ein Link gesetzt ist => falls dies zutrifft, wird + // _kein_ neuer Link gesetzt; der Link muss hier gesetzt werden, + // (bevor das erste Mal gefiltert wird), um zu verhindern, + // dass der Kontext zurueckgesetzt wird (aynchrones Laden) + if( !pThis->bNativFormat ) + { + static GfxLink aDummyLink; + pThis->pDownLoadData->aGrf.SetLink( aDummyLink ); + } + } + + pThis->NotifyDataChanged(); + + SvStream* pStrm = pThis->xMed.Is() ? pThis->xMed->GetInStream() : 0; + if( pStrm && pStrm->GetError() ) + { + if( ERRCODE_IO_PENDING == pStrm->GetError() ) + pStrm->ResetError(); + + // im DataChanged ein DataReady? + else if( pThis->bWaitForData && pThis->pDownLoadData ) + { + pThis->bLoadError = TRUE; + } + } + + if( pThis->bDataReady ) + { + // Grafik ist fertig, also DataChanged von der Status- + // aederung schicken: + pThis->SendStateChg_Impl( pStrm->GetError() ? sfx2::LinkManager::STATE_LOAD_ERROR : sfx2::LinkManager::STATE_LOAD_OK ); + } + + pThis->bInNewData = FALSE; + return 0; +} + +IMPL_LINK( SvFileObject, DialogClosedHdl, sfx2::FileDialogHelper*, _pFileDlg ) +{ + String sFile; + Application::SetDefDialogParent( pOldParent ); + + if ( FILETYPE_TEXT == nType || FILETYPE_OBJECT == nType ) + { + if ( _pFileDlg && _pFileDlg->GetError() == ERRCODE_NONE ) + { + String sURL( _pFileDlg->GetPath() ); + sFile = sURL; + sFile += ::sfx2::cTokenSeperator; + sFile += ::sfx2::cTokenSeperator; + sFile += impl_getFilter( sURL ); + } + } + else + { + DBG_ERRORFILE( "SvFileObject::DialogClosedHdl(): wrong file type" ); + } + + if ( aEndEditLink.IsSet() ) + aEndEditLink.Call( &sFile ); + return 0; +} + +/* [Beschreibung] + + Die Methode stellt fest, ob aus einem DDE-Object die Daten gelesen + werden kann. + Zurueckgegeben wird: + ERRCODE_NONE wenn sie komplett gelesen wurde + ERRCODE_SO_PENDING wenn sie noch nicht komplett gelesen wurde + ERRCODE_SO_FALSE sonst +*/ +BOOL SvFileObject::IsPending() const +{ + return FILETYPE_GRF == nType && !bLoadError && + ( pDownLoadData || bWaitForData ); +} +BOOL SvFileObject::IsDataComplete() const +{ + BOOL bRet = FALSE; + if( FILETYPE_GRF != nType ) + bRet = TRUE; + else if( !bLoadError && ( !bWaitForData && !pDownLoadData )) + { + SvFileObject* pThis = (SvFileObject*)this; + if( bDataReady || + ( bSynchron && pThis->LoadFile_Impl() && xMed.Is() ) ) + bRet = TRUE; + else + { + INetURLObject aUrl( sFileNm ); + if( aUrl.HasError() || + INET_PROT_NOT_VALID == aUrl.GetProtocol() ) + bRet = TRUE; + } + } + return bRet; +} + + + +void SvFileObject::CancelTransfers() +{ + if( xMed.Is() ) + xMed->CancelTransfers(); + + // und aus dem Cache austragen, wenn man mitten im Laden ist + if( !bDataReady ) + { + // nicht noch mal aufsetzen + bLoadAgain = FALSE; + bDataReady = bLoadError = bWaitForData = TRUE; + SendStateChg_Impl( sfx2::LinkManager::STATE_LOAD_ABORT ); + } +} + + +void SvFileObject::SetTransferPriority( USHORT ) +{ +} + + +void SvFileObject::SendStateChg_Impl( sfx2::LinkManager::LinkState nState ) +{ + if( !bStateChangeCalled && HasDataLinks() ) + { + css::uno::Any aAny; + aAny <<= rtl::OUString::valueOf( (sal_Int32)nState ); + DataChanged( SotExchange::GetFormatName( + sfx2::LinkManager::RegisterStatusInfoId()), aAny ); + bStateChangeCalled = TRUE; + } +} + + diff --git a/sfx2/source/appl/fileobj.hxx b/sfx2/source/appl/fileobj.hxx new file mode 100644 index 000000000000..a769ed9e2843 --- /dev/null +++ b/sfx2/source/appl/fileobj.hxx @@ -0,0 +1,99 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: fileobj.hxx,v $ + * $Revision: 1.9 $ + * + * 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 _FILEOBJ_HXX +#define _FILEOBJ_HXX + +#include <tools/string.hxx> +#include <sfx2/linksrc.hxx> +#include <sfx2/docfile.hxx> +#include <sfx2/linkmgr.hxx> + +class Graphic; +struct Impl_DownLoadData; +namespace sfx2 { class FileDialogHelper; } + +class SvFileObject : public sfx2::SvLinkSource +{ + String sFileNm; + String sFilter; + String sReferer; + Link aEndEditLink; + SfxMediumRef xMed; + Impl_DownLoadData* pDownLoadData; + Window* pOldParent; + + BYTE nType; + + BOOL bLoadAgain : 1; + BOOL bSynchron : 1; + BOOL bLoadError : 1; + BOOL bWaitForData : 1; + BOOL bInNewData : 1; + BOOL bDataReady : 1; + BOOL bMedUseCache : 1; + BOOL bNativFormat : 1; + BOOL bClearMedium : 1; + BOOL bStateChangeCalled : 1; + BOOL bInCallDownLoad : 1; + + BOOL GetGraphic_Impl( Graphic&, SvStream* pStream = 0 ); + BOOL LoadFile_Impl(); + void SendStateChg_Impl( sfx2::LinkManager::LinkState nState ); + + DECL_STATIC_LINK( SvFileObject, DelMedium_Impl, SfxMediumRef* ); + DECL_STATIC_LINK( SvFileObject, LoadGrfReady_Impl, void* ); + DECL_STATIC_LINK( SvFileObject, LoadGrfNewData_Impl, void* ); + DECL_LINK( DialogClosedHdl, sfx2::FileDialogHelper* ); + +protected: + virtual ~SvFileObject(); + +public: + SvFileObject(); + + virtual BOOL GetData( ::com::sun::star::uno::Any & rData /*out param*/, + const String & rMimeType, + BOOL bSynchron = FALSE ); + + virtual BOOL Connect( sfx2::SvBaseLink* ); + virtual void Edit( Window *, sfx2::SvBaseLink *, const Link& rEndEditHdl ); + + // erfrage ob das man direkt auf die Daten zugreifen kann oder ob das + // erst angestossen werden muss + virtual BOOL IsPending() const; + virtual BOOL IsDataComplete() const; + + void CancelTransfers(); + void SetTransferPriority( USHORT nPrio ); +}; + + +#endif + diff --git a/sfx2/source/appl/linkmgr2.cxx b/sfx2/source/appl/linkmgr2.cxx index 3533fb8a428f..681cf7742664 100644 --- a/sfx2/source/appl/linkmgr2.cxx +++ b/sfx2/source/appl/linkmgr2.cxx @@ -31,37 +31,54 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sfx2.hxx" - -#include <tools/debug.hxx> #include <sfx2/linkmgr.hxx> - +#include <com/sun/star/document/UpdateDocMode.hpp> +#include <sfx2/objsh.hxx> +#include <svl/urihelper.hxx> +#include <sot/formats.hxx> +#include <tools/urlobj.hxx> +#include <sot/exchange.hxx> +#include <tools/debug.hxx> #include <vcl/msgbox.hxx> #include <sfx2/lnkbase.hxx> -//#include <sfx2/linksrc.hxx> +#include <sfx2/app.hxx> +#include <vcl/graph.hxx> +#include <svl/stritem.hxx> +#include <svl/eitem.hxx> +#include <svl/intitem.hxx> +#include <unotools/localfilehelper.hxx> +#include <i18npool/mslangid.hxx> +#include <sfx2/request.hxx> + +#include "fileobj.hxx" #include "impldde.hxx" -//#include "svuidlg.hrc" -//#include "iface.hxx" - #include "app.hrc" #include "sfxresid.hxx" #define _SVSTDARR_STRINGSDTOR - #include <svl/svstdarr.hxx> - namespace sfx2 { +class SvxInternalLink : public sfx2::SvLinkSource +{ +public: + SvxInternalLink() {} + + virtual BOOL Connect( sfx2::SvBaseLink* ); +}; + + SV_IMPL_PTRARR( SvBaseLinks, SvBaseLinkRefPtr ) -SvLinkManager::SvLinkManager() - : pPersist( 0 ) +LinkManager::LinkManager(SfxObjectShell* p) + : pPersist( p ) { } -SvLinkManager::~SvLinkManager() +LinkManager::~LinkManager() { SvBaseLinkRef** ppRef = (SvBaseLinkRef**)aLinkTbl.GetData(); for( USHORT n = aLinkTbl.Count(); n; --n, ++ppRef ) @@ -77,12 +94,12 @@ SvLinkManager::~SvLinkManager() /************************************************************************ -|* SvLinkManager::Remove() +|* LinkManager::Remove() |* |* Beschreibung *************************************************************************/ -void SvLinkManager::Remove( SvBaseLink *pLink ) +void LinkManager::Remove( SvBaseLink *pLink ) { // keine Links doppelt einfuegen int bFound = FALSE; @@ -110,7 +127,7 @@ void SvLinkManager::Remove( SvBaseLink *pLink ) } -void SvLinkManager::Remove( USHORT nPos, USHORT nCnt ) +void LinkManager::Remove( USHORT nPos, USHORT nCnt ) { if( nCnt && nPos < aLinkTbl.Count() ) { @@ -132,7 +149,7 @@ void SvLinkManager::Remove( USHORT nPos, USHORT nCnt ) } -BOOL SvLinkManager::Insert( SvBaseLink* pLink ) +BOOL LinkManager::Insert( SvBaseLink* pLink ) { // keine Links doppelt einfuegen for( USHORT n = 0; n < aLinkTbl.Count(); ++n ) @@ -152,7 +169,7 @@ BOOL SvLinkManager::Insert( SvBaseLink* pLink ) } -BOOL SvLinkManager::InsertLink( SvBaseLink * pLink, +BOOL LinkManager::InsertLink( SvBaseLink * pLink, USHORT nObjType, USHORT nUpdateMode, const String* pName ) @@ -166,7 +183,7 @@ BOOL SvLinkManager::InsertLink( SvBaseLink * pLink, } -BOOL SvLinkManager::InsertDDELink( SvBaseLink * pLink, +BOOL LinkManager::InsertDDELink( SvBaseLink * pLink, const String& rServer, const String& rTopic, const String& rItem ) @@ -183,7 +200,7 @@ BOOL SvLinkManager::InsertDDELink( SvBaseLink * pLink, } -BOOL SvLinkManager::InsertDDELink( SvBaseLink * pLink ) +BOOL LinkManager::InsertDDELink( SvBaseLink * pLink ) { DBG_ASSERT( OBJECT_CLIENT_SO & pLink->GetObjType(), "no OBJECT_CLIENT_SO" ); if( !( OBJECT_CLIENT_SO & pLink->GetObjType() ) ) @@ -197,34 +214,70 @@ BOOL SvLinkManager::InsertDDELink( SvBaseLink * pLink ) // erfrage die Strings fuer den Dialog -BOOL SvLinkManager::GetDisplayNames( const SvBaseLink * pLink, +BOOL LinkManager::GetDisplayNames( const SvBaseLink * pLink, String* pType, String* pFile, String* pLinkStr, - String* /*pFilter*/ ) const + String* pFilter ) const { BOOL bRet = FALSE; - String aLN = pLink->GetLinkSourceName(); - if( aLN.Len() != 0 && pLink->GetObjType() == OBJECT_CLIENT_DDE ) + const String sLNm( pLink->GetLinkSourceName() ); + if( sLNm.Len() ) { - USHORT nTmp = 0; - String sCmd( aLN ); - String sServer( sCmd.GetToken( 0, cTokenSeperator, nTmp ) ); - String sTopic( sCmd.GetToken( 0, cTokenSeperator, nTmp ) ); - - if( pType ) - *pType = sServer; - if( pFile ) - *pFile = sTopic; - if( pLinkStr ) - *pLinkStr = sCmd.Copy( nTmp ); - bRet = TRUE; + switch( pLink->GetObjType() ) + { + case OBJECT_CLIENT_FILE: + case OBJECT_CLIENT_GRF: + case OBJECT_CLIENT_OLE: + { + USHORT nPos = 0; + String sFile( sLNm.GetToken( 0, ::sfx2::cTokenSeperator, nPos ) ); + String sRange( sLNm.GetToken( 0, ::sfx2::cTokenSeperator, nPos ) ); + + if( pFile ) + *pFile = sFile; + if( pLinkStr ) + *pLinkStr = sRange; + if( pFilter ) + *pFilter = sLNm.Copy( nPos ); + + if( pType ) + { + sal_uInt16 nObjType = pLink->GetObjType(); + *pType = String( SfxResId( + ( OBJECT_CLIENT_FILE == nObjType || OBJECT_CLIENT_OLE == nObjType ) + ? RID_SVXSTR_FILELINK + : RID_SVXSTR_GRAFIKLINK )); + } + bRet = TRUE; + } + break; + case OBJECT_CLIENT_DDE: + { + USHORT nTmp = 0; + String sCmd( sLNm ); + String sServer( sCmd.GetToken( 0, cTokenSeperator, nTmp ) ); + String sTopic( sCmd.GetToken( 0, cTokenSeperator, nTmp ) ); + + if( pType ) + *pType = sServer; + if( pFile ) + *pFile = sTopic; + if( pLinkStr ) + *pLinkStr = sCmd.Copy( nTmp ); + bRet = TRUE; + } + break; + default: + break; + } } + return bRet; } -void SvLinkManager::UpdateAllLinks( +void LinkManager::UpdateAllLinks( BOOL bAskUpdate, BOOL /*bCallErrHdl*/, BOOL bUpdateGrfLinks, @@ -287,14 +340,24 @@ void SvLinkManager::UpdateAllLinks( |* Beschreibung *************************************************************************/ -SvLinkSourceRef SvLinkManager::CreateObj( SvBaseLink * pLink ) +SvLinkSourceRef LinkManager::CreateObj( SvBaseLink * pLink ) { - if( OBJECT_CLIENT_DDE == pLink->GetObjType() ) - return new SvDDEObject(); - return SvLinkSourceRef(); + switch( pLink->GetObjType() ) + { + case OBJECT_CLIENT_FILE: + case OBJECT_CLIENT_GRF: + case OBJECT_CLIENT_OLE: + return new SvFileObject; + case OBJECT_INTERN: + return new SvxInternalLink; + case OBJECT_CLIENT_DDE: + return new SvDDEObject; + default: + return SvLinkSourceRef(); + } } -BOOL SvLinkManager::InsertServer( SvLinkSource* pObj ) +BOOL LinkManager::InsertServer( SvLinkSource* pObj ) { // keine doppelt einfuegen if( !pObj || USHRT_MAX != aServerTbl.GetPos( pObj ) ) @@ -305,7 +368,7 @@ BOOL SvLinkManager::InsertServer( SvLinkSource* pObj ) } -void SvLinkManager::RemoveServer( SvLinkSource* pObj ) +void LinkManager::RemoveServer( SvLinkSource* pObj ) { USHORT nPos = aServerTbl.GetPos( pObj ); if( USHRT_MAX != nPos ) @@ -327,6 +390,259 @@ void MakeLnkName( String& rName, const String* pType, const String& rFile, ((rName += cTokenSeperator ) += *pFilter).EraseLeadingChars().EraseTrailingChars(); } +BOOL LinkManager::InsertFileLink( sfx2::SvBaseLink& rLink, + USHORT nFileType, + const String& rFileNm, + const String* pFilterNm, + const String* pRange ) +{ + if( !( OBJECT_CLIENT_SO & rLink.GetObjType() )) + return FALSE; + + String sCmd( rFileNm ); + sCmd += ::sfx2::cTokenSeperator; + if( pRange ) + sCmd += *pRange; + if( pFilterNm ) + ( sCmd += ::sfx2::cTokenSeperator ) += *pFilterNm; + + return InsertLink( &rLink, nFileType, sfx2::LINKUPDATE_ONCALL, &sCmd ); +} + +BOOL LinkManager::InsertFileLink( sfx2::SvBaseLink& rLink ) +{ + if( OBJECT_CLIENT_FILE == ( OBJECT_CLIENT_FILE & rLink.GetObjType() )) + return InsertLink( &rLink, rLink.GetObjType(), sfx2::LINKUPDATE_ONCALL ); + return FALSE; +} + +// eine Uebertragung wird abgebrochen, also alle DownloadMedien canceln +// (ist zur Zeit nur fuer die FileLinks interressant!) +void LinkManager::CancelTransfers() +{ + SvFileObject* pFileObj; + sfx2::SvBaseLink* pLnk; + + const sfx2::SvBaseLinks& rLnks = GetLinks(); + for( USHORT n = rLnks.Count(); n; ) + if( 0 != ( pLnk = &(*rLnks[ --n ])) && + OBJECT_CLIENT_FILE == (OBJECT_CLIENT_FILE & pLnk->GetObjType()) && + 0 != ( pFileObj = (SvFileObject*)pLnk->GetObj() ) ) +// 0 != ( pFileObj = (SvFileObject*)SvFileObject::ClassFactory()-> +// CastAndAddRef( pLnk->GetObj() )) ) + pFileObj->CancelTransfers(); +} + +void LinkManager::SetTransferPriority( sfx2::SvBaseLink& /*rLink*/, USHORT /*nPrio*/ ) +{ +// SvFileObject* pFileObj = +// (SvFileObject*)SvFileObject::ClassFactory()-> +// CastAndAddRef( rLink.GetObj() ); +// OBJECT_CLIENT_FILE == (OBJECT_CLIENT_FILE & rLink.GetObjType()) ? +// (SvFileObject*)rLink.GetObj() : 0; +} + + + // um Status Informationen aus dem FileObject an den BaseLink zu + // senden, gibt es eine eigene ClipBoardId. Das SvData-Object hat + // dann die entsprechenden Informationen als String. + // Wird zur Zeit fuer FileObject in Verbindung mit JavaScript benoetigt + // - das braucht Informationen ueber Load/Abort/Error +ULONG LinkManager::RegisterStatusInfoId() +{ + static ULONG nFormat = 0; + + if( !nFormat ) + { +// wie sieht die neue Schnittstelle aus? +// nFormat = Exchange::RegisterFormatName( "StatusInfo vom SvxInternalLink" ); + nFormat = SotExchange::RegisterFormatName( + String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( + "StatusInfo vom SvxInternalLink" ))); + } + return nFormat; +} + +// ---------------------------------------------------------------------- + +BOOL LinkManager::GetGraphicFromAny( const String& rMimeType, + const ::com::sun::star::uno::Any & rValue, + Graphic& rGrf ) +{ + BOOL bRet = FALSE; + ::com::sun::star::uno::Sequence< sal_Int8 > aSeq; + if( rValue.hasValue() && ( rValue >>= aSeq ) ) + { + SvMemoryStream aMemStm( (void*)aSeq.getConstArray(), aSeq.getLength(), + STREAM_READ ); + aMemStm.Seek( 0 ); + + switch( SotExchange::GetFormatIdFromMimeType( rMimeType ) ) + { + case SOT_FORMATSTR_ID_SVXB: + { + aMemStm >> rGrf; + bRet = TRUE; + } + break; + case FORMAT_GDIMETAFILE: + { + GDIMetaFile aMtf; + aMtf.Read( aMemStm ); + rGrf = aMtf; + bRet = TRUE; + } + break; + case FORMAT_BITMAP: + { + Bitmap aBmp; + aMemStm >> aBmp; + rGrf = aBmp; + bRet = TRUE; + } + break; + } + } + return bRet; +} + + +// ---------------------------------------------------------------------- +String lcl_DDE_RelToAbs( const String& rTopic, const String& rBaseURL ) +{ + String sRet; + INetURLObject aURL( rTopic ); + if( INET_PROT_NOT_VALID == aURL.GetProtocol() ) + utl::LocalFileHelper::ConvertSystemPathToURL( rTopic, rBaseURL, sRet ); + if( !sRet.Len() ) + sRet = URIHelper::SmartRel2Abs( INetURLObject(rBaseURL), rTopic, URIHelper::GetMaybeFileHdl(), true ); + return sRet; +} + +BOOL SvxInternalLink::Connect( sfx2::SvBaseLink* pLink ) +{ + SfxObjectShell* pFndShell = 0; + USHORT nUpdateMode = com::sun::star::document::UpdateDocMode::NO_UPDATE; + String sTopic, sItem, sReferer; + if( pLink->GetLinkManager() && + pLink->GetLinkManager()->GetDisplayNames( pLink, 0, &sTopic, &sItem ) + && sTopic.Len() ) + { + // erstmal nur ueber die DocumentShells laufen und die mit dem + // Namen heraussuchen: + + com::sun::star::lang::Locale aLocale; + MsLangId::convertLanguageToLocale( LANGUAGE_SYSTEM, aLocale ); + CharClass aCC( aLocale ); + + String sNm( sTopic ), sTmp; + aCC.toLower( sNm ); + + TypeId aType( TYPE(SfxObjectShell) ); + + BOOL bFirst = TRUE; + SfxObjectShell* pShell = pLink->GetLinkManager()->GetPersist(); + if( pShell && pShell->GetMedium() ) + { + sReferer = pShell->GetMedium()->GetBaseURL(); + SFX_ITEMSET_ARG( pShell->GetMedium()->GetItemSet(), pItem, SfxUInt16Item, SID_UPDATEDOCMODE, sal_False ); + if ( pItem ) + nUpdateMode = pItem->GetValue(); + } + + String sNmURL( lcl_DDE_RelToAbs( sTopic, sReferer ) ); + aCC.toLower( sNmURL ); + + if ( !pShell ) + { + bFirst = FALSE; + pShell = SfxObjectShell::GetFirst( &aType, sal_False ); + } + + while( pShell ) + { + if( !sTmp.Len() ) + { + sTmp = pShell->GetTitle( SFX_TITLE_FULLNAME ); + sTmp = lcl_DDE_RelToAbs(sTmp, sReferer ); + } + + + aCC.toLower( sTmp ); + if( sTmp == sNmURL ) // die wollen wir haben + { + pFndShell = pShell; + break; + } + + if( bFirst ) + { + bFirst = FALSE; + pShell = SfxObjectShell::GetFirst( &aType, sal_False ); + } + else + pShell = SfxObjectShell::GetNext( *pShell, &aType, sal_False ); + + sTmp.Erase(); + } + } + + // empty topics are not allowed - which document is it + if( !sTopic.Len() ) + return FALSE; + + if( !pFndShell ) + { + // dann versuche die Datei zu laden: + INetURLObject aURL( sTopic ); + INetProtocol eOld = aURL.GetProtocol(); + aURL.SetURL( sTopic = lcl_DDE_RelToAbs( sTopic, sReferer ) ); + if( INET_PROT_NOT_VALID != eOld || + INET_PROT_HTTP != aURL.GetProtocol() ) + { + SfxStringItem aName( SID_FILE_NAME, sTopic ); + SfxBoolItem aMinimized(SID_MINIMIZED, TRUE); + SfxBoolItem aHidden(SID_HIDDEN, TRUE); + SfxStringItem aTarget( SID_TARGETNAME, String::CreateFromAscii("_blank") ); + SfxStringItem aReferer( SID_REFERER, sReferer ); + SfxUInt16Item aUpdate( SID_UPDATEDOCMODE, nUpdateMode ); + SfxBoolItem aReadOnly(SID_DOC_READONLY, TRUE); + + // #i14200# (DDE-link crashes wordprocessor) + SfxAllItemSet aArgs( SFX_APP()->GetPool() ); + aArgs.Put(aReferer); + aArgs.Put(aTarget); + aArgs.Put(aHidden); + aArgs.Put(aMinimized); + aArgs.Put(aName); + aArgs.Put(aUpdate); + aArgs.Put(aReadOnly); + pFndShell = SfxObjectShell::CreateAndLoadObject( aArgs ); + } + } + + BOOL bRet = FALSE; + if( pFndShell ) + { + sfx2::SvLinkSource* pNewSrc = pFndShell->DdeCreateLinkSource( sItem ); + if( pNewSrc ) + { + bRet = TRUE; + + ::com::sun::star::datatransfer::DataFlavor aFl; + SotExchange::GetFormatDataFlavor( pLink->GetContentType(), aFl ); + + pLink->SetObj( pNewSrc ); + pNewSrc->AddDataAdvise( pLink, aFl.MimeType, + sfx2::LINKUPDATE_ONCALL == pLink->GetUpdateMode() + ? ADVISEMODE_ONLYONCE + : 0 ); + } + } + return bRet; +} + + } diff --git a/sfx2/source/appl/lnkbase2.cxx b/sfx2/source/appl/lnkbase2.cxx index 8a852b44b6f7..516e7eccf400 100644 --- a/sfx2/source/appl/lnkbase2.cxx +++ b/sfx2/source/appl/lnkbase2.cxx @@ -37,19 +37,12 @@ #include <com/sun/star/uno/Any.hxx> #include <com/sun/star/uno/Sequence.hxx> #include <vcl/msgbox.hxx> - #include <sfx2/linkmgr.hxx> -//#include "svuidlg.hrc" -//#include "iface.hxx" #include <vcl/svapp.hxx> -//#include <soerr.hxx> - #include "app.hrc" #include "sfxresid.hxx" #include <sfx2/filedlghelper.hxx> - #include <tools/debug.hxx> - #include <svl/svdde.hxx> using namespace ::com::sun::star::uno; @@ -66,7 +59,7 @@ class ImplDdeItem; struct BaseLink_Impl { Link m_aEndEditLink; - SvLinkManager* m_pLinkMgr; + LinkManager* m_pLinkMgr; Window* m_pParentWin; FileDialogHelper* m_pFileDlg; bool m_bIsConnect; @@ -472,17 +465,17 @@ BOOL SvBaseLink::SetContentType( ULONG nType ) return FALSE; } -SvLinkManager* SvBaseLink::GetLinkManager() +LinkManager* SvBaseLink::GetLinkManager() { return pImpl->m_pLinkMgr; } -const SvLinkManager* SvBaseLink::GetLinkManager() const +const LinkManager* SvBaseLink::GetLinkManager() const { return pImpl->m_pLinkMgr; } -void SvBaseLink::SetLinkManager( SvLinkManager* _pMgr ) +void SvBaseLink::SetLinkManager( LinkManager* _pMgr ) { pImpl->m_pLinkMgr = _pMgr; } diff --git a/sfx2/source/appl/makefile.mk b/sfx2/source/appl/makefile.mk index 48d1258e2838..1673a4953a97 100644 --- a/sfx2/source/appl/makefile.mk +++ b/sfx2/source/appl/makefile.mk @@ -93,6 +93,7 @@ SFX_OBJECTS = \ $(SLO)$/appuno.obj \ $(SLO)$/appbaslib.obj \ $(SLO)$/childwin.obj \ + $(SLO)$/fileobj.obj \ $(SLO)$/helpdispatch.obj \ $(SLO)$/helpinterceptor.obj \ $(SLO)$/imagemgr.obj\ @@ -103,6 +104,7 @@ SFX_OBJECTS = \ $(SLO)$/lnkbase2.obj \ $(SLO)$/module.obj \ $(SLO)$/newhelp.obj \ + $(SLO)$/opengrf.obj \ $(SLO)$/sfxdll.obj \ $(SLO)$/sfxhelp.obj \ $(SLO)$/sfxpicklist.obj \ @@ -143,8 +145,10 @@ EXCEPTIONSFILES=\ $(SLO)$/appmisc.obj \ $(SLO)$/appinit.obj \ $(SLO)$/appcfg.obj \ + $(SLO)$/fileobj.obj \ $(SLO)$/helpinterceptor.obj \ $(SLO)$/newhelp.obj \ + $(SLO)$/opengrf.obj \ $(SLO)$/sfxhelp.obj \ $(SLO)$/shutdownicon.obj \ $(SLO)$/shutdowniconw32.obj \ diff --git a/sfx2/source/appl/module.cxx b/sfx2/source/appl/module.cxx index 566d1af69242..1bba58ba0318 100644 --- a/sfx2/source/appl/module.cxx +++ b/sfx2/source/appl/module.cxx @@ -51,6 +51,7 @@ #include <sfx2/docfac.hxx> #include <sfx2/objface.hxx> #include <sfx2/viewfrm.hxx> +#include <svl/intitem.hxx> #define SfxModule #include "sfxslots.hxx" @@ -411,3 +412,29 @@ SfxModule* SfxModule::GetActiveModule( SfxViewFrame* pFrame ) pSh = pFrame->GetObjectShell(); return pSh ? pSh->GetModule() : 0; } + +FieldUnit SfxModule::GetCurrentFieldUnit() +{ + FieldUnit eUnit = FUNIT_INCH; + SfxModule* pModule = GetActiveModule(); + if ( pModule ) + { + const SfxPoolItem* pItem = pModule->GetItem( SID_ATTR_METRIC ); + DBG_ASSERT( pItem, "GetFieldUnit(): no item" ); + if ( pItem ) + eUnit = (FieldUnit)( (SfxUInt16Item*)pItem )->GetValue(); + } + else + DBG_ERRORFILE( "GetModuleFieldUnit(): no module found" ); + return eUnit; +} + +FieldUnit SfxModule::GetFieldUnit() const +{ + FieldUnit eUnit = FUNIT_INCH; + const SfxPoolItem* pItem = GetItem( SID_ATTR_METRIC ); + DBG_ASSERT( pItem, "GetFieldUnit(): no item" ); + if ( pItem ) + eUnit = (FieldUnit)( (SfxUInt16Item*)pItem )->GetValue(); + return eUnit; +} diff --git a/sfx2/source/appl/opengrf.cxx b/sfx2/source/appl/opengrf.cxx new file mode 100644 index 000000000000..e10fa3899d39 --- /dev/null +++ b/sfx2/source/appl/opengrf.cxx @@ -0,0 +1,298 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: opengrf.cxx,v $ + * $Revision: 1.22 $ + * + * 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. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sfx2.hxx" + +#include <tools/urlobj.hxx> +#include <cppuhelper/implbase1.hxx> +#include <com/sun/star/uno/Reference.h> +#include <com/sun/star/lang/XInitialization.hpp> +#include <com/sun/star/ui/dialogs/CommonFilePickerElementIds.hpp> +#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp> +#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp> +#include <com/sun/star/ui/dialogs/FilePreviewImageFormats.hpp> +#include <com/sun/star/ui/dialogs/ListboxControlActions.hpp> +#include <com/sun/star/ui/dialogs/TemplateDescription.hpp> +#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp> +#include <com/sun/star/ui/dialogs/XFilePicker.hpp> +#include <com/sun/star/ui/dialogs/XFilePickerListener.hpp> +#include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp> +#include <com/sun/star/ui/dialogs/XFilePreview.hpp> +#include <com/sun/star/ui/dialogs/XFilterManager.hpp> +#include <svl/urihelper.hxx> +#include <unotools/ucbstreamhelper.hxx> +#include <svtools/transfer.hxx> +#include <sot/formats.hxx> +#include <vcl/msgbox.hxx> +#include <sfx2/filedlghelper.hxx> +#include <sfx2/docfile.hxx> +#include <unotools/pathoptions.hxx> +#include <sfx2/opengrf.hxx> +#include "app.hrc" +#include "sfxresid.hxx" + +//----------------------------------------------------------------------------- + +using namespace ::com::sun::star; +using namespace ::com::sun::star::lang; +using namespace ::com::sun::star::ui::dialogs; +using namespace ::com::sun::star::uno; +using namespace ::rtl; +using namespace ::cppu; + + +//----------------------------------------------------------------------------- + +USHORT SvxOpenGrfErr2ResId( short err ) +{ + switch( err ) + { + case GRFILTER_OPENERROR: + return RID_SVXSTR_GRFILTER_OPENERROR; + case GRFILTER_IOERROR: + return RID_SVXSTR_GRFILTER_IOERROR; + case GRFILTER_VERSIONERROR: + return RID_SVXSTR_GRFILTER_VERSIONERROR; + case GRFILTER_FILTERERROR: + return RID_SVXSTR_GRFILTER_FILTERERROR; + case GRFILTER_FORMATERROR: + default: + return RID_SVXSTR_GRFILTER_FORMATERROR; + } +} + + +struct SvxOpenGrf_Impl +{ + SvxOpenGrf_Impl (); + + sfx2::FileDialogHelper aFileDlg; + uno::Reference < XFilePickerControlAccess > xCtrlAcc; +}; + + +SvxOpenGrf_Impl::SvxOpenGrf_Impl() : + aFileDlg(SFXWB_GRAPHIC) +{ + uno::Reference < XFilePicker > xFP = aFileDlg.GetFilePicker(); + xCtrlAcc = uno::Reference < XFilePickerControlAccess >(xFP, UNO_QUERY); +} + + +SvxOpenGraphicDialog::SvxOpenGraphicDialog( const String& rTitle ) : + mpImpl( new SvxOpenGrf_Impl ) +{ + mpImpl->aFileDlg.SetTitle(rTitle); +} + + +SvxOpenGraphicDialog::~SvxOpenGraphicDialog() +{ +} + + +short SvxOpenGraphicDialog::Execute() +{ + USHORT nImpRet; + BOOL bQuitLoop(FALSE); + + while( bQuitLoop == FALSE && + mpImpl->aFileDlg.Execute() == ERRCODE_NONE ) + { + if( GetPath().Len() ) + { + GraphicFilter* pFilter = GraphicFilter::GetGraphicFilter(); + INetURLObject aObj( GetPath() ); + + // check whether we can load the graphic + String aCurFilter( GetCurrentFilter() ); + USHORT nFormatNum = pFilter->GetImportFormatNumber( aCurFilter ); + USHORT nRetFormat = 0; + USHORT nFound = USHRT_MAX; + + // non-local? + if ( INET_PROT_FILE != aObj.GetProtocol() ) + { + SfxMedium aMed( aObj.GetMainURL( INetURLObject::NO_DECODE ), STREAM_READ, TRUE ); + aMed.DownLoad(); + SvStream* pStream = aMed.GetInStream(); + + if( pStream ) + nImpRet = pFilter->CanImportGraphic( aObj.GetMainURL( INetURLObject::NO_DECODE ), *pStream, nFormatNum, &nRetFormat ); + else + nImpRet = pFilter->CanImportGraphic( aObj, nFormatNum, &nRetFormat ); + + if ( GRFILTER_OK != nImpRet ) + { + if ( !pStream ) + nImpRet = pFilter->CanImportGraphic( aObj, GRFILTER_FORMAT_DONTKNOW, &nRetFormat ); + else + nImpRet = pFilter->CanImportGraphic( aObj.GetMainURL( INetURLObject::NO_DECODE ), *pStream, + GRFILTER_FORMAT_DONTKNOW, &nRetFormat ); + } + } + else + { + if( (nImpRet=pFilter->CanImportGraphic( aObj, nFormatNum, &nRetFormat )) != GRFILTER_OK ) + nImpRet = pFilter->CanImportGraphic( aObj, GRFILTER_FORMAT_DONTKNOW, &nRetFormat ); + } + + if ( GRFILTER_OK == nImpRet ) + nFound = nRetFormat; + + // could not load? + if ( nFound == USHRT_MAX ) + { + WarningBox aWarningBox( NULL, WB_3DLOOK | WB_RETRY_CANCEL, String( SfxResId( SvxOpenGrfErr2ResId(nImpRet) ) ) ); + bQuitLoop = aWarningBox.Execute()==RET_RETRY ? FALSE : TRUE; + } + else + { + // setup appropriate filter (so next time, it will work) + if( pFilter->GetImportFormatCount() ) + { + String aFormatName(pFilter->GetImportFormatName(nFound)); + SetCurrentFilter(aFormatName); + } + + return nImpRet; + } + } + } + + // cancel + return -1; +} + + +void SvxOpenGraphicDialog::SetPath( const String& rPath ) +{ + mpImpl->aFileDlg.SetDisplayDirectory(rPath); +} + +void SvxOpenGraphicDialog::SetPath( const String& rPath, sal_Bool bLinkState ) +{ + SetPath(rPath); + AsLink(bLinkState); +} + + +void SvxOpenGraphicDialog::EnableLink( sal_Bool state ) +{ + if( mpImpl->xCtrlAcc.is() ) + { + try + { + mpImpl->xCtrlAcc->enableControl( ExtendedFilePickerElementIds::CHECKBOX_LINK, state ); + } + catch(IllegalArgumentException) + { +#ifdef DBG_UTIL + DBG_ERROR( "Cannot enable \"link\" checkbox" ); +#endif + } + } +} + + +void SvxOpenGraphicDialog::AsLink(sal_Bool bState) +{ + if( mpImpl->xCtrlAcc.is() ) + { + try + { + Any aAny; aAny <<= bState; + mpImpl->xCtrlAcc->setValue( ExtendedFilePickerElementIds::CHECKBOX_LINK, 0, aAny ); + } + catch(IllegalArgumentException) + { +#ifdef DBG_UTIL + DBG_ERROR( "Cannot check \"link\" checkbox" ); +#endif + } + } +} + + +sal_Bool SvxOpenGraphicDialog::IsAsLink() const +{ + try + { + if( mpImpl->xCtrlAcc.is() ) + { + Any aVal = mpImpl->xCtrlAcc->getValue( ExtendedFilePickerElementIds::CHECKBOX_LINK, 0 ); + DBG_ASSERT(aVal.hasValue(), "Value CBX_INSERT_AS_LINK not found"); + return aVal.hasValue() ? *(sal_Bool*) aVal.getValue() : sal_False; + } + } + catch(IllegalArgumentException) + { +#ifdef DBG_UTIL + DBG_ERROR( "Cannot access \"link\" checkbox" ); +#endif + } + + return sal_False; +} + + +int SvxOpenGraphicDialog::GetGraphic(Graphic& rGraphic) const +{ + return mpImpl->aFileDlg.GetGraphic(rGraphic); +} + + +String SvxOpenGraphicDialog::GetPath() const +{ + return mpImpl->aFileDlg.GetPath(); +} + + +String SvxOpenGraphicDialog::GetCurrentFilter() const +{ + return mpImpl->aFileDlg.GetCurrentFilter(); +} + + +void SvxOpenGraphicDialog::SetCurrentFilter(const String& rStr) +{ + mpImpl->aFileDlg.SetCurrentFilter(rStr); +} + +void SvxOpenGraphicDialog::SetControlHelpIds( const INT16* _pControlId, const INT32* _pHelpId ) +{ + mpImpl->aFileDlg.SetControlHelpIds( _pControlId, _pHelpId ); +} + +void SvxOpenGraphicDialog::SetDialogHelpId( const INT32 _nHelpId ) +{ + mpImpl->aFileDlg.SetDialogHelpId( _nHelpId ); +} diff --git a/sfx2/source/appl/sfxhelp.cxx b/sfx2/source/appl/sfxhelp.cxx index 491de2138917..e6f04749be84 100644 --- a/sfx2/source/appl/sfxhelp.cxx +++ b/sfx2/source/appl/sfxhelp.cxx @@ -38,9 +38,7 @@ #include <com/sun/star/frame/XFrame.hpp> #include <com/sun/star/frame/XComponentLoader.hpp> #include <com/sun/star/lang/XComponent.hpp> -#ifndef _UNOTOOLS_PROCESSFACTORY_HXX #include <comphelper/processfactory.hxx> -#endif #include <com/sun/star/awt/XWindow.hpp> #include <com/sun/star/awt/XTopWindow.hpp> #include <com/sun/star/awt/PosSize.hpp> @@ -60,13 +58,11 @@ #include <tools/urlobj.hxx> #include <unotools/configmgr.hxx> #include <ucbhelper/content.hxx> - #include <unotools/pathoptions.hxx> #include <rtl/ustring.hxx> #include <osl/process.h> #include <osl/file.hxx> #include <unotools/bootstrap.hxx> - #include <rtl/uri.hxx> #include <vcl/msgbox.hxx> #include <svtools/ehdl.hxx> @@ -76,16 +72,13 @@ #define _SVSTDARR_ULONGSSORT #include <svl/svstdarr.hxx> -#include <sfx2/sfxsids.hrc> -#include <sfx2/app.hxx> -#include <sfx2/viewfrm.hxx> -#include <sfx2/msgpool.hxx> #include "newhelp.hxx" -#include <sfx2/objsh.hxx> -#include <sfx2/docfac.hxx> #include "sfxresid.hxx" #include "helper.hxx" #include "app.hrc" +#include <sfx2/sfxuno.hxx> +#include <vcl/svapp.hxx> +#include <sfx2/frame.hxx> using namespace ::com::sun::star::beans; using namespace ::com::sun::star::frame; @@ -967,26 +960,39 @@ String SfxHelp::CreateHelpURL( const String& aCommandURL, const String& rModuleN return aURL; } -void SfxHelp::OpenHelpAgent( SfxFrame *pFrame, ULONG nHelpId ) +void SfxHelp::OpenHelpAgent( SfxFrame*, ULONG nHelpId ) { - if ( SvtHelpOptions().IsHelpAgentAutoStartMode() ) - { SfxHelp* pHelp = SAL_STATIC_CAST( SfxHelp*, Application::GetHelp() ); if ( pHelp ) - { - SfxHelpOptions_Impl *pOpt = pHelp->pImp->GetOptions(); + pHelp->OpenHelpAgent( nHelpId ); +} + +void SfxHelp::OpenHelpAgent( ULONG nHelpId ) +{ + if ( SvtHelpOptions().IsHelpAgentAutoStartMode() ) + { +// SfxHelp* pHelp = SAL_STATIC_CAST( SfxHelp*, Application::GetHelp() ); +// if ( pHelp ) +// { + SfxHelpOptions_Impl *pOpt = pImp->GetOptions(); if ( !pOpt->HasId( nHelpId ) ) return; try { URL aURL; - aURL.Complete = pHelp->CreateHelpURL_Impl( nHelpId, pHelp->GetHelpModuleName_Impl() ); + aURL.Complete = CreateHelpURL_Impl( nHelpId, GetHelpModuleName_Impl() ); Reference < XURLTransformer > xTrans( ::comphelper::getProcessServiceFactory()->createInstance( ::rtl::OUString::createFromAscii("com.sun.star.util.URLTransformer" ) ), UNO_QUERY ); xTrans->parseStrict(aURL); - Reference< XDispatchProvider > xDispProv( pFrame->GetTopFrame()->GetFrameInterface(), UNO_QUERY ); + Reference < XFrame > xCurrentFrame; + Reference < XDesktop > xDesktop( ::comphelper::getProcessServiceFactory()->createInstance( + DEFINE_CONST_UNICODE("com.sun.star.frame.Desktop") ), UNO_QUERY ); + if ( xDesktop.is() ) + xCurrentFrame = xDesktop->getCurrentFrame(); + + Reference< XDispatchProvider > xDispProv( xCurrentFrame, UNO_QUERY ); Reference< XDispatch > xHelpDispatch; if ( xDispProv.is() ) xHelpDispatch = xDispProv->queryDispatch( @@ -1001,7 +1007,7 @@ void SfxHelp::OpenHelpAgent( SfxFrame *pFrame, ULONG nHelpId ) { DBG_ERRORFILE( "OpenHelpAgent: caught an exception while executing the dispatch!" ); } - } +// } } } diff --git a/sfx2/source/bastyp/sfxhtml.cxx b/sfx2/source/bastyp/sfxhtml.cxx index 794ee142708c..ee3dd4519337 100644 --- a/sfx2/source/bastyp/sfxhtml.cxx +++ b/sfx2/source/bastyp/sfxhtml.cxx @@ -357,40 +357,6 @@ IMPL_STATIC_LINK( SfxHTMLParser, FileDownloadDone, void*, EMPTYARG ) return 0; } -rtl_TextEncoding SfxHTMLParser::GetEncodingByHttpHeader( SvKeyValueIterator *pHTTPHeader ) -{ - rtl_TextEncoding eRet = RTL_TEXTENCODING_DONTKNOW; - if( pHTTPHeader ) - { - SvKeyValue aKV; - for( BOOL bCont = pHTTPHeader->GetFirst( aKV ); bCont; - bCont = pHTTPHeader->GetNext( aKV ) ) - { - if( aKV.GetKey().EqualsIgnoreCaseAscii( OOO_STRING_SVTOOLS_HTML_META_content_type ) ) - { - if( aKV.GetValue().Len() ) - { - eRet = SfxHTMLParser::GetEncodingByMIME( aKV.GetValue() ); - } - } - } - } - return eRet; -} - -BOOL SfxHTMLParser::SetEncodingByHTTPHeader( - SvKeyValueIterator *pHTTPHeader ) -{ - BOOL bRet = FALSE; - rtl_TextEncoding eEnc = SfxHTMLParser::GetEncodingByHttpHeader( pHTTPHeader ); - if(RTL_TEXTENCODING_DONTKNOW != eEnc) - { - SetSrcEncoding( eEnc ); - bRet = TRUE; - } - return bRet; -} - void SfxHTMLParser::GetScriptType_Impl( SvKeyValueIterator *pHTTPHeader ) { aScriptType = DEFINE_CONST_UNICODE(SVX_MACRO_LANGUAGE_JAVASCRIPT); diff --git a/sfx2/source/control/dispatch.cxx b/sfx2/source/control/dispatch.cxx index fa3330059859..c3b85348f35d 100644..100755 --- a/sfx2/source/control/dispatch.cxx +++ b/sfx2/source/control/dispatch.cxx @@ -3215,3 +3215,14 @@ sal_uInt32 SfxDispatcher::GetDisableFlags() const return pImp->nDisableFlags; } +SfxModule* SfxDispatcher::GetModule() const +{ + for ( sal_uInt16 nShell = 0;; ++nShell ) + { + SfxShell *pSh = GetShell(nShell); + if ( pSh == NULL ) + return 0; + if ( pSh->ISA(SfxModule) ) + return (SfxModule*) pSh; + } +} diff --git a/sfx2/source/control/makefile.mk b/sfx2/source/control/makefile.mk index 9d936549b5b3..a64cd08cd3ed 100644 --- a/sfx2/source/control/makefile.mk +++ b/sfx2/source/control/makefile.mk @@ -68,7 +68,6 @@ SLOFILES = \ $(SLO)$/sfxstatuslistener.obj \ $(SLO)$/shell.obj \ $(SLO)$/sorgitm.obj \ - $(SLO)$/srchitem.obj \ $(SLO)$/statcach.obj \ $(SLO)$/unoctitm.obj diff --git a/sfx2/source/control/srchitem.cxx b/sfx2/source/control/srchitem.cxx deleted file mode 100644 index 5702103e3398..000000000000 --- a/sfx2/source/control/srchitem.cxx +++ /dev/null @@ -1,665 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: srchitem.cxx,v $ - * $Revision: 1.24 $ - * - * 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sfx2.hxx" - -// include --------------------------------------------------------------- - -#ifndef __SBX_SBXVARIABLE_HXX -#include <basic/sbxvar.hxx> -#endif -#include <unotools/searchopt.hxx> -#include <com/sun/star/util/XReplaceable.hpp> -#include <com/sun/star/util/XSearchable.hpp> -#include <com/sun/star/util/XSearchDescriptor.hpp> -#include <com/sun/star/util/XPropertyReplace.hpp> -#include <com/sun/star/util/XReplaceDescriptor.hpp> -#include <com/sun/star/lang/Locale.hpp> - -#include <svl/memberid.hrc> -#include <i18npool/mslangid.hxx> - -#ifndef GCC -#endif - -#define _SVX_SRCHITEM_CXX - -#include <sfx2/sfxsids.hrc> -#define ITEMID_SEARCH SID_SEARCH_ITEM -#include <sfx2/srchitem.hxx> - -#include <sfx2/sfxuno.hxx> - -using namespace utl; -using namespace com::sun::star::beans; -using namespace com::sun::star::i18n; -using namespace com::sun::star::lang; -using namespace com::sun::star::uno; -using namespace com::sun::star::util; - -#define CFG_ROOT_NODE "Office.Common/SearchOptions" - -#define SRCH_PARAMS 11 -#define SRCH_PARA_OPTIONS "Options" -#define SRCH_PARA_FAMILY "Family" -#define SRCH_PARA_COMMAND "Command" -#define SRCH_PARA_CELLTYPE "CellType" -#define SRCH_PARA_APPFLAG "AppFlag" -#define SRCH_PARA_ROWDIR "RowDirection" -#define SRCH_PARA_ALLTABLES "AllTables" -#define SRCH_PARA_BACKWARD "Backward" -#define SRCH_PARA_PATTERN "Pattern" -#define SRCH_PARA_CONTENT "Content" -#define SRCH_PARA_ASIANOPT "AsianOptions" - -// STATIC DATA ----------------------------------------------------------- - -TYPEINIT1_FACTORY(SvxSearchItem, SfxPoolItem, new SvxSearchItem(0)); - -// ----------------------------------------------------------------------- - -static Sequence< ::rtl::OUString > lcl_GetNotifyNames() -{ - // names of transliteration relevant properties - static const char* aTranslitNames[] = - { - "IsMatchCase", // 0 - "Japanese/IsMatchFullHalfWidthForms", // 1 - "Japanese/IsMatchHiraganaKatakana", // 2 - "Japanese/IsMatchContractions", // 3 - "Japanese/IsMatchMinusDashCho-on", // 4 - "Japanese/IsMatchRepeatCharMarks", // 5 - "Japanese/IsMatchVariantFormKanji", // 6 - "Japanese/IsMatchOldKanaForms", // 7 - "Japanese/IsMatch_DiZi_DuZu", // 8 - "Japanese/IsMatch_BaVa_HaFa", // 9 - "Japanese/IsMatch_TsiThiChi_DhiZi", // 10 - "Japanese/IsMatch_HyuIyu_ByuVyu", // 11 - "Japanese/IsMatch_SeShe_ZeJe", // 12 - "Japanese/IsMatch_IaIya", // 13 - "Japanese/IsMatch_KiKu", // 14 - "Japanese/IsIgnorePunctuation", // 15 - "Japanese/IsIgnoreWhitespace", // 16 - "Japanese/IsIgnoreProlongedSoundMark", // 17 - "Japanese/IsIgnoreMiddleDot" // 18 - }; - - const int nCount = sizeof( aTranslitNames ) / sizeof( aTranslitNames[0] ); - Sequence< ::rtl::OUString > aNames( nCount ); - ::rtl::OUString* pNames = aNames.getArray(); - for (INT32 i = 0; i < nCount; ++i) - pNames[i] = ::rtl::OUString::createFromAscii( aTranslitNames[i] ); - - return aNames; -} - -// ----------------------------------------------------------------------- -SvxSearchItem::SvxSearchItem( const sal_uInt16 nId ) : - - SfxPoolItem( nId ), - ConfigItem( ::rtl::OUString::createFromAscii( CFG_ROOT_NODE ) ), - - aSearchOpt ( SearchAlgorithms_ABSOLUTE, - SearchFlags::LEV_RELAXED, - ::rtl::OUString(), - ::rtl::OUString(), - Locale(), - 2, 2, 2, - TransliterationModules_IGNORE_CASE ), - eFamily ( SFX_STYLE_FAMILY_PARA ), - nCommand ( 0 ), - nCellType ( SVX_SEARCHIN_FORMULA ), - nAppFlag ( SVX_SEARCHAPP_WRITER ), - bRowDirection ( sal_True ), - bAllTables ( sal_False ), - bNotes ( sal_False), - bBackward ( sal_False ), - bPattern ( sal_False ), - bContent ( sal_False ), - bAsianOptions ( FALSE ) -{ - EnableNotification( lcl_GetNotifyNames() ); - - SvtSearchOptions aOpt; - - bBackward = aOpt.IsBackwards(); - bAsianOptions = aOpt.IsUseAsianOptions(); - bNotes = aOpt.IsNotes(); - - if (aOpt.IsUseRegularExpression()) - aSearchOpt.algorithmType = SearchAlgorithms_REGEXP; - if (aOpt.IsSimilaritySearch()) - aSearchOpt.algorithmType = SearchAlgorithms_APPROXIMATE; - if (aOpt.IsWholeWordsOnly()) - aSearchOpt.searchFlag |= SearchFlags::NORM_WORD_ONLY; - - INT32 &rFlags = aSearchOpt.transliterateFlags; - - if (!aOpt.IsMatchCase()) - rFlags |= TransliterationModules_IGNORE_CASE; - if ( aOpt.IsMatchFullHalfWidthForms()) - rFlags |= TransliterationModules_IGNORE_WIDTH; - if ( aOpt.IsMatchHiraganaKatakana()) - rFlags |= TransliterationModules_IGNORE_KANA; - if ( aOpt.IsMatchContractions()) - rFlags |= TransliterationModules_ignoreSize_ja_JP; - if ( aOpt.IsMatchMinusDashChoon()) - rFlags |= TransliterationModules_ignoreMinusSign_ja_JP; - if ( aOpt.IsMatchRepeatCharMarks()) - rFlags |= TransliterationModules_ignoreIterationMark_ja_JP; - if ( aOpt.IsMatchVariantFormKanji()) - rFlags |= TransliterationModules_ignoreTraditionalKanji_ja_JP; - if ( aOpt.IsMatchOldKanaForms()) - rFlags |= TransliterationModules_ignoreTraditionalKana_ja_JP; - if ( aOpt.IsMatchDiziDuzu()) - rFlags |= TransliterationModules_ignoreZiZu_ja_JP; - if ( aOpt.IsMatchBavaHafa()) - rFlags |= TransliterationModules_ignoreBaFa_ja_JP; - if ( aOpt.IsMatchTsithichiDhizi()) - rFlags |= TransliterationModules_ignoreTiJi_ja_JP; - if ( aOpt.IsMatchHyuiyuByuvyu()) - rFlags |= TransliterationModules_ignoreHyuByu_ja_JP; - if ( aOpt.IsMatchSesheZeje()) - rFlags |= TransliterationModules_ignoreSeZe_ja_JP; - if ( aOpt.IsMatchIaiya()) - rFlags |= TransliterationModules_ignoreIandEfollowedByYa_ja_JP; - if ( aOpt.IsMatchKiku()) - rFlags |= TransliterationModules_ignoreKiKuFollowedBySa_ja_JP; - if ( aOpt.IsIgnorePunctuation()) - rFlags |= TransliterationModules_ignoreSeparator_ja_JP; - if ( aOpt.IsIgnoreWhitespace()) - rFlags |= TransliterationModules_ignoreSpace_ja_JP; - if ( aOpt.IsIgnoreProlongedSoundMark()) - rFlags |= TransliterationModules_ignoreProlongedSoundMark_ja_JP; - if ( aOpt.IsIgnoreMiddleDot()) - rFlags |= TransliterationModules_ignoreMiddleDot_ja_JP; -} - -// ----------------------------------------------------------------------- - -SvxSearchItem::SvxSearchItem( const SvxSearchItem& rItem ) : - - SfxPoolItem ( rItem ), - ConfigItem( ::rtl::OUString::createFromAscii( CFG_ROOT_NODE ) ), - - aSearchOpt ( rItem.aSearchOpt ), - eFamily ( rItem.eFamily ), - nCommand ( rItem.nCommand ), - nCellType ( rItem.nCellType ), - nAppFlag ( rItem.nAppFlag ), - bRowDirection ( rItem.bRowDirection ), - bAllTables ( rItem.bAllTables ), - bNotes ( rItem.bNotes), - bBackward ( rItem.bBackward ), - bPattern ( rItem.bPattern ), - bContent ( rItem.bContent ), - bAsianOptions ( rItem.bAsianOptions ) -{ - EnableNotification( lcl_GetNotifyNames() ); -} - -// ----------------------------------------------------------------------- - -SvxSearchItem::~SvxSearchItem() -{ -} - -// ----------------------------------------------------------------------- -SfxPoolItem* SvxSearchItem::Clone( SfxItemPool *) const -{ - return new SvxSearchItem(*this); -} - -// ----------------------------------------------------------------------- - -//! used below -static BOOL operator == ( const SearchOptions& rItem1, const SearchOptions& rItem2 ) -{ - return rItem1.algorithmType == rItem2.algorithmType && - rItem1.searchFlag == rItem2.searchFlag && - rItem1.searchString == rItem2.searchString && - rItem1.replaceString == rItem2.replaceString && - //rItem1.Locale == rItem2.Locale && - rItem1.changedChars == rItem2.changedChars && - rItem1.deletedChars == rItem2.deletedChars && - rItem1.insertedChars == rItem2.insertedChars && - rItem1.transliterateFlags == rItem2.transliterateFlags; -} - - -int SvxSearchItem::operator==( const SfxPoolItem& rItem ) const -{ - DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal which or type" ); - const SvxSearchItem &rSItem = (SvxSearchItem &) rItem; - return ( nCommand == rSItem.nCommand ) && - ( bBackward == rSItem.bBackward ) && - ( bPattern == rSItem.bPattern ) && - ( bContent == rSItem.bContent ) && - ( eFamily == rSItem.eFamily ) && - ( bRowDirection == rSItem.bRowDirection ) && - ( bAllTables == rSItem.bAllTables ) && - ( nCellType == rSItem.nCellType ) && - ( nAppFlag == rSItem.nAppFlag ) && - ( bAsianOptions == rSItem.bAsianOptions ) && - ( aSearchOpt == rSItem.aSearchOpt ) && - ( bNotes == rSItem.bNotes ); -} - - -//------------------------------------------------------------------------ - -SfxItemPresentation SvxSearchItem::GetPresentation -( - SfxItemPresentation , - SfxMapUnit , - SfxMapUnit , - XubString& , - const IntlWrapper * -) const -{ - return SFX_ITEM_PRESENTATION_NONE; -} - -void SvxSearchItem::GetFromDescriptor( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor >& rDescr ) -{ - SetSearchString( rDescr->getSearchString() ); - ::com::sun::star::uno::Any aAny = rDescr->getPropertyValue( DEFINE_CONST_UNICODE("SearchWords") ); - sal_Bool bTemp = false; - aAny >>= bTemp ; - SetWordOnly( bTemp ); - aAny = rDescr->getPropertyValue( DEFINE_CONST_UNICODE("SearchCaseSensitive") ); - aAny >>= bTemp ; - SetExact( bTemp ); - aAny = rDescr->getPropertyValue( DEFINE_CONST_UNICODE("SearchBackwards") ); - aAny >>= bTemp ; - SetBackward( bTemp ); - aAny = rDescr->getPropertyValue( DEFINE_CONST_UNICODE("SearchInSelection") ); - aAny >>= bTemp ; - SetSelection( bTemp ); - aAny = rDescr->getPropertyValue( DEFINE_CONST_UNICODE("SearchRegularExpression") ); - aAny >>= bTemp ; - SetRegExp( bTemp ); - aAny = rDescr->getPropertyValue( DEFINE_CONST_UNICODE("SearchSimilarity") ); - aAny >>= bTemp ; - SetLevenshtein( bTemp ); - aAny = rDescr->getPropertyValue( DEFINE_CONST_UNICODE("SearchSimilarityRelax") ); - aAny >>= bTemp ; - SetLEVRelaxed( bTemp ); - aAny = rDescr->getPropertyValue( DEFINE_CONST_UNICODE("SearchSimilarityExchange") ); - sal_Int16 nTemp = 0; - aAny >>= nTemp ; - SetLEVOther( nTemp ); - aAny = rDescr->getPropertyValue( DEFINE_CONST_UNICODE("SearchSimilarityRemove") ); - aAny >>= nTemp ; - SetLEVShorter( nTemp ); - aAny = rDescr->getPropertyValue( DEFINE_CONST_UNICODE("SearchSimilarityAdd") ); - aAny >>= nTemp ; - SetLEVLonger( nTemp ); -} - -void SvxSearchItem::SetToDescriptor( ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor > & rDescr ) -{ - rDescr->setSearchString( GetSearchString() ); - ::com::sun::star::uno::Any aAny; - aAny <<= GetWordOnly() ; - rDescr->setPropertyValue( DEFINE_CONST_UNICODE("SearchWords"), aAny ); - aAny <<= GetExact() ; - rDescr->setPropertyValue( DEFINE_CONST_UNICODE("SearchCaseSensitive"), aAny ); - aAny <<= GetBackward() ; - rDescr->setPropertyValue( DEFINE_CONST_UNICODE("SearchBackwards"), aAny ); - aAny <<= GetSelection() ; - rDescr->setPropertyValue( DEFINE_CONST_UNICODE("SearchInSelection"), aAny ); - aAny <<= GetRegExp() ; - rDescr->setPropertyValue( DEFINE_CONST_UNICODE("SearchRegularExpression"), aAny ); - aAny <<= IsLevenshtein() ; - rDescr->setPropertyValue( DEFINE_CONST_UNICODE("SearchSimilarity"), aAny ); - aAny <<= IsLEVRelaxed() ; - rDescr->setPropertyValue( DEFINE_CONST_UNICODE("SearchSimilarityRelax"), aAny ); - aAny <<= GetLEVOther() ; - rDescr->setPropertyValue( DEFINE_CONST_UNICODE("SearchSimilarityExchange"), aAny ); - aAny <<= GetLEVShorter() ; - rDescr->setPropertyValue( DEFINE_CONST_UNICODE("SearchSimilarityRemove"), aAny ); - aAny <<= GetLEVLonger() ; - rDescr->setPropertyValue( DEFINE_CONST_UNICODE("SearchSimilarityAdd"), aAny ); -} - - -void SvxSearchItem::Notify( const Sequence< ::rtl::OUString > & ) -{ - // applies transliteration changes in the configuration database - // to the current SvxSearchItem - SetTransliterationFlags( SvtSearchOptions().GetTransliterationFlags() ); -} - -void SvxSearchItem::Commit() -{ -} - -void SvxSearchItem::SetMatchFullHalfWidthForms( sal_Bool bVal ) -{ - if (bVal) - aSearchOpt.transliterateFlags |= TransliterationModules_IGNORE_WIDTH; - else - aSearchOpt.transliterateFlags &= ~TransliterationModules_IGNORE_WIDTH; -} - - -void SvxSearchItem::SetWordOnly( sal_Bool bVal ) -{ - if (bVal) - aSearchOpt.searchFlag |= SearchFlags::NORM_WORD_ONLY; - else - aSearchOpt.searchFlag &= ~SearchFlags::NORM_WORD_ONLY; -} - - -void SvxSearchItem::SetExact( sal_Bool bVal ) -{ - if (!bVal) - aSearchOpt.transliterateFlags |= TransliterationModules_IGNORE_CASE; - else - aSearchOpt.transliterateFlags &= ~TransliterationModules_IGNORE_CASE; -} - - -void SvxSearchItem::SetSelection( sal_Bool bVal ) -{ - if (bVal) - { - aSearchOpt.searchFlag |= (SearchFlags::REG_NOT_BEGINOFLINE | - SearchFlags::REG_NOT_ENDOFLINE); - } - else - { - aSearchOpt.searchFlag &= ~(SearchFlags::REG_NOT_BEGINOFLINE | - SearchFlags::REG_NOT_ENDOFLINE); - } -} - - -void SvxSearchItem::SetRegExp( sal_Bool bVal ) -{ - if ( bVal ) - aSearchOpt.algorithmType = SearchAlgorithms_REGEXP; - else if ( SearchAlgorithms_REGEXP == aSearchOpt.algorithmType ) - aSearchOpt.algorithmType = SearchAlgorithms_ABSOLUTE; -} - - -void SvxSearchItem::SetLEVRelaxed( sal_Bool bVal ) -{ - if (bVal) - aSearchOpt.searchFlag |= SearchFlags::LEV_RELAXED; - else - aSearchOpt.searchFlag &= ~SearchFlags::LEV_RELAXED; -} - - -void SvxSearchItem::SetLevenshtein( sal_Bool bVal ) -{ - if ( bVal ) - aSearchOpt.algorithmType = SearchAlgorithms_APPROXIMATE; - else if ( SearchAlgorithms_APPROXIMATE == aSearchOpt.algorithmType ) - aSearchOpt.algorithmType = SearchAlgorithms_ABSOLUTE; -} - - -void SvxSearchItem::SetTransliterationFlags( sal_Int32 nFlags ) -{ - aSearchOpt.transliterateFlags = nFlags; -} - -sal_Bool SvxSearchItem::QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId ) const -{ - nMemberId &= ~CONVERT_TWIPS; - switch ( nMemberId ) - { - case 0 : - { - Sequence< PropertyValue > aSeq( SRCH_PARAMS ); - aSeq[0].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_OPTIONS ) ); - aSeq[0].Value <<= aSearchOpt; - aSeq[1].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_FAMILY )); - aSeq[1].Value <<= sal_Int16( eFamily ); - aSeq[2].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_COMMAND )); - aSeq[2].Value <<= nCommand; - aSeq[3].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_CELLTYPE )); - aSeq[3].Value <<= nCellType; - aSeq[4].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_APPFLAG )); - aSeq[4].Value <<= nAppFlag; - aSeq[5].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_ROWDIR )); - aSeq[5].Value <<= bRowDirection; - aSeq[6].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_ALLTABLES )); - aSeq[6].Value <<= bAllTables; - aSeq[7].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_BACKWARD )); - aSeq[7].Value <<= bBackward; - aSeq[8].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_PATTERN )); - aSeq[8].Value <<= bPattern; - aSeq[9].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_CONTENT )); - aSeq[9].Value <<= bContent; - aSeq[10].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_ASIANOPT )); - aSeq[10].Value <<= bAsianOptions; - rVal <<= aSeq; - } - break; - case MID_SEARCH_COMMAND: - rVal <<= (sal_Int16) nCommand; break; - case MID_SEARCH_STYLEFAMILY: - rVal <<= (sal_Int16) eFamily; break; - case MID_SEARCH_CELLTYPE: - rVal <<= (sal_Int32) nCellType; break; - case MID_SEARCH_ROWDIRECTION: - rVal <<= (sal_Bool) bRowDirection; break; - case MID_SEARCH_ALLTABLES: - rVal <<= (sal_Bool) bAllTables; break; - case MID_SEARCH_BACKWARD: - rVal <<= (sal_Bool) bBackward; break; - case MID_SEARCH_PATTERN: - rVal <<= (sal_Bool) bPattern; break; - case MID_SEARCH_CONTENT: - rVal <<= (sal_Bool) bContent; break; - case MID_SEARCH_ASIANOPTIONS: - rVal <<= (sal_Bool) bAsianOptions; break; - case MID_SEARCH_ALGORITHMTYPE: - rVal <<= (sal_Int16) aSearchOpt.algorithmType; break; - case MID_SEARCH_FLAGS: - rVal <<= aSearchOpt.searchFlag; break; - case MID_SEARCH_SEARCHSTRING: - rVal <<= aSearchOpt.searchString; break; - case MID_SEARCH_REPLACESTRING: - rVal <<= aSearchOpt.replaceString; break; - case MID_SEARCH_CHANGEDCHARS: - rVal <<= aSearchOpt.changedChars; break; - case MID_SEARCH_DELETEDCHARS: - rVal <<= aSearchOpt.deletedChars; break; - case MID_SEARCH_INSERTEDCHARS: - rVal <<= aSearchOpt.insertedChars; break; - case MID_SEARCH_TRANSLITERATEFLAGS: - rVal <<= aSearchOpt.transliterateFlags; break; - case MID_SEARCH_LOCALE: - { - sal_Int16 nLocale; - if (aSearchOpt.Locale.Language.getLength() || aSearchOpt.Locale.Country.getLength() ) - nLocale = MsLangId::convertLocaleToLanguage( aSearchOpt.Locale ); - else - nLocale = LANGUAGE_NONE; - rVal <<= nLocale; - break; - } - - default: - DBG_ERRORFILE( "SvxSearchItem::QueryValue(): Unknown MemberId" ); - return sal_False; - } - - return sal_True; -} - -// ----------------------------------------------------------------------- - -sal_Bool SvxSearchItem::PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId ) -{ - nMemberId &= ~CONVERT_TWIPS; - sal_Bool bRet = sal_False; - sal_Int32 nInt = 0; - switch ( nMemberId ) - { - case 0 : - { - Sequence< PropertyValue > aSeq; - if ( ( rVal >>= aSeq ) && ( aSeq.getLength() == SRCH_PARAMS ) ) - { - sal_Int16 nConvertedCount( 0 ); - for ( sal_Int32 i = 0; i < aSeq.getLength(); ++i ) - { - if ( aSeq[i].Name.equalsAscii( SRCH_PARA_OPTIONS ) ) - { - if ( ( aSeq[i].Value >>= aSearchOpt ) == sal_True ) - ++nConvertedCount; - } - else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_FAMILY ) ) - { - sal_uInt16 nTemp( 0 ); - if ( ( aSeq[i].Value >>= nTemp ) == sal_True ) - { - eFamily = SfxStyleFamily( nTemp ); - ++nConvertedCount; - } - } - else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_COMMAND ) ) - { - if ( ( aSeq[i].Value >>= nCommand ) == sal_True ) - ++nConvertedCount; - } - else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_CELLTYPE ) ) - { - if ( ( aSeq[i].Value >>= nCellType ) == sal_True ) - ++nConvertedCount; - } - else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_APPFLAG ) ) - { - if ( ( aSeq[i].Value >>= nAppFlag ) == sal_True ) - ++nConvertedCount; - } - else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_ROWDIR ) ) - { - if ( ( aSeq[i].Value >>= bRowDirection ) == sal_True ) - ++nConvertedCount; - } - else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_ALLTABLES ) ) - { - if ( ( aSeq[i].Value >>= bAllTables ) == sal_True ) - ++nConvertedCount; - } - else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_BACKWARD ) ) - { - if ( ( aSeq[i].Value >>= bBackward ) == sal_True ) - ++nConvertedCount; - } - else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_PATTERN ) ) - { - if ( ( aSeq[i].Value >>= bPattern ) == sal_True ) - ++nConvertedCount; - } - else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_CONTENT ) ) - { - if ( ( aSeq[i].Value >>= bContent ) == sal_True ) - ++nConvertedCount; - } - else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_ASIANOPT ) ) - { - if ( ( aSeq[i].Value >>= bAsianOptions ) == sal_True ) - ++nConvertedCount; - } - } - - bRet = ( nConvertedCount == SRCH_PARAMS ); - } - break; - } - case MID_SEARCH_COMMAND: - bRet = (rVal >>= nInt); nCommand = (sal_uInt16) nInt; break; - case MID_SEARCH_STYLEFAMILY: - bRet = (rVal >>= nInt); eFamily = (SfxStyleFamily) (sal_Int16) nInt; break; - case MID_SEARCH_CELLTYPE: - bRet = (rVal >>= nInt); nCellType = (sal_uInt16) nInt; break; - case MID_SEARCH_ROWDIRECTION: - bRet = (rVal >>= bRowDirection); break; - case MID_SEARCH_ALLTABLES: - bRet = (rVal >>= bAllTables); break; - case MID_SEARCH_BACKWARD: - bRet = (rVal >>= bBackward); break; - case MID_SEARCH_PATTERN: - bRet = (rVal >>= bPattern); break; - case MID_SEARCH_CONTENT: - bRet = (rVal >>= bContent); break; - case MID_SEARCH_ASIANOPTIONS: - bRet = (rVal >>= bAsianOptions); break; - case MID_SEARCH_ALGORITHMTYPE: - bRet = (rVal >>= nInt); aSearchOpt.algorithmType = (SearchAlgorithms)(sal_Int16)nInt; break; - case MID_SEARCH_FLAGS: - bRet = (rVal >>= aSearchOpt.searchFlag); break; - case MID_SEARCH_SEARCHSTRING: - bRet = (rVal >>= aSearchOpt.searchString); break; - case MID_SEARCH_REPLACESTRING: - bRet = (rVal >>= aSearchOpt.replaceString); break; - case MID_SEARCH_CHANGEDCHARS: - bRet = (rVal >>= aSearchOpt.changedChars); break; - case MID_SEARCH_DELETEDCHARS: - bRet = (rVal >>= aSearchOpt.deletedChars); break; - case MID_SEARCH_INSERTEDCHARS: - bRet = (rVal >>= aSearchOpt.insertedChars); break; - case MID_SEARCH_TRANSLITERATEFLAGS: - bRet = (rVal >>= aSearchOpt.transliterateFlags); break; - case MID_SEARCH_LOCALE: - { - bRet = (rVal >>= nInt); - if ( bRet ) - { - if ( nInt == LANGUAGE_NONE ) - { - aSearchOpt.Locale = ::com::sun::star::lang::Locale(); - } - else - { - MsLangId::convertLanguageToLocale( (sal_Int16) nInt, aSearchOpt.Locale ); - } - } - break; - } - default: - DBG_ERROR( "Unknown MemberId" ); - } - - return bRet; -} - - diff --git a/sfx2/source/dialog/sfxdlg.cxx b/sfx2/source/dialog/sfxdlg.cxx index 0e5f91ccea34..b67f8fc73860 100644..100755 --- a/sfx2/source/dialog/sfxdlg.cxx +++ b/sfx2/source/dialog/sfxdlg.cxx @@ -39,5 +39,9 @@ SfxAbstractDialogFactory* SfxAbstractDialogFactory::Create() { - return (SfxAbstractDialogFactory*) VclAbstractDialogFactory::Create(); + return dynamic_cast <SfxAbstractDialogFactory*>( VclAbstractDialogFactory::Create() ); +} + +SfxAbstractDialogFactory::~SfxAbstractDialogFactory() +{ } diff --git a/sfx2/source/doc/objcont.cxx b/sfx2/source/doc/objcont.cxx index 8514ca9a917a..9f4f489c836c 100644 --- a/sfx2/source/doc/objcont.cxx +++ b/sfx2/source/doc/objcont.cxx @@ -962,11 +962,8 @@ BOOL SfxObjectShell::Remove String aName(pMySheet->GetName()); String aEmpty; SfxStyleFamily eFamily = pMySheet->GetFamily(); - if (pMySheet) - { - pMyPool->Remove(pMySheet); - bRet = TRUE; - } + pMyPool->Remove(pMySheet); + bRet = TRUE; SfxStyleSheetBase* pTestSheet = pMyPool->First(); while (pTestSheet) @@ -987,20 +984,10 @@ BOOL SfxObjectShell::Remove pTestSheet = pMyPool->Next(); } - if(bRet) - SetModified( TRUE ); - } -/* - else if (nIdx1 == CONTENT_CONFIG) - { - if (GetConfigManager()->RemoveItem(nIdx2)) - { - SetModified(TRUE); - bRet = TRUE; - SFX_APP()->GetDispatcher_Impl()->Update_Impl(TRUE); - } + + SetModified( TRUE ); } -*/ + return bRet; } diff --git a/sfx2/source/doc/objxtor.cxx b/sfx2/source/doc/objxtor.cxx index 91c0f605e453..bfcf8d9c20b8 100644 --- a/sfx2/source/doc/objxtor.cxx +++ b/sfx2/source/doc/objxtor.cxx @@ -190,7 +190,6 @@ TYPEINIT1(SfxObjectShell, SfxShell); //-------------------------------------------------------------------- SfxObjectShell_Impl::SfxObjectShell_Impl( SfxObjectShell& _rDocShell ) :mpObjectContainer(0) - ,pAccMgr(0) ,pCfgMgr( 0) ,pBasicManager( new SfxBasicManagerHolder ) ,rDocShell( _rDocShell ) diff --git a/sfx2/source/inc/objshimp.hxx b/sfx2/source/inc/objshimp.hxx index fed465c69986..bb35941d989e 100644 --- a/sfx2/source/inc/objshimp.hxx +++ b/sfx2/source/inc/objshimp.hxx @@ -59,13 +59,11 @@ struct MarkData_Impl class SfxFrame; class SfxToolBoxConfig; -class SfxAcceleratorManager; class SfxBasicManagerHolder; struct SfxObjectShell_Impl : public ::sfx2::IMacroDocumentAccess { ::comphelper::EmbeddedObjectContainer* mpObjectContainer; - SfxAcceleratorManager* pAccMgr; SfxConfigManager* pCfgMgr; SfxBasicManagerHolder* pBasicManager; diff --git a/sfx2/source/inc/speakerdlg.hxx b/sfx2/source/inc/speakerdlg.hxx deleted file mode 100644 index b3d16cd578cf..000000000000 --- a/sfx2/source/inc/speakerdlg.hxx +++ /dev/null @@ -1,70 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: speakerdlg.hxx,v $ - * $Revision: 1.3 $ - * - * 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 _SPEAKERDLG_HXX -#define _SPEAKERDLG_HXX - -#ifndef _GOODIES_RECOGNIZER_HXX_ -#include <goodies/recognizer.hxx> -#endif - -#ifndef _DIALOG_HXX -#include <vcl/dialog.hxx> -#endif -#ifndef _BUTTON_HXX -#include <vcl/button.hxx> -#endif -#ifndef _LSTBOX_HXX -#include <vcl/lstbox.hxx> -#endif - -// --------------- -// - SfxSpeakerDlg - -// --------------- - -class SfxSpeakerDlg: public ModalDialog -{ - OKButton aBtnOK; - CancelButton aBtnCancel; - ListBox aListBox; - CharSet aCharSet; - - OSpeakerManagerRef m_aSpeakerMgr; - -public: - - SfxSpeakerDlg(Window *pParent, OSpeakerManagerRef& aSpeakerMgr); - ~SfxSpeakerDlg(); - - virtual short Execute(); -}; - - -#endif // _SPEAKER_HXX diff --git a/sfx2/source/menu/virtmenu.cxx b/sfx2/source/menu/virtmenu.cxx index 87f35805d1e7..b94b61e80326 100644 --- a/sfx2/source/menu/virtmenu.cxx +++ b/sfx2/source/menu/virtmenu.cxx @@ -1256,36 +1256,6 @@ String SfxVirtualMenu::GetItemHelpText( USHORT nSlotId ) const } //-------------------------------------------------------------------- -/* -void SfxVirtualMenu::InvalidateKeyCodes() -{ - DBG_ASSERT( pSVMenu, "invalidating key of incomplete menu" ); - - SfxApplication* pSfxApp = SFX_APP(); - SfxViewFrame *pViewFrame = pBindings->GetDispatcher()->GetFrame(); - SfxAcceleratorManager* pAccMgr = pViewFrame->GetViewShell()->GetAccMgr_Impl(); - SfxAcceleratorManager* pAppAccel = pSfxApp->GetAppAccel_Impl(); - if ( !pAccMgr ) - pAccMgr = pAppAccel; - - for ( USHORT nPos = 0; nPos < pSVMenu->GetItemCount(); ++nPos ) - { - USHORT nId = pSVMenu->GetItemId(nPos); - SfxVirtualMenu *pPopup = GetPopupMenu(nId); -// if ( pPopup ) -// pPopup->InvalidateKeyCodes(); -// else if ( nId ) - if ( nId && !pSVMenu->GetPopupMenu( nId ) ) - { - KeyCode aCode = pAccMgr->GetKeyCode( nId ); - if ( !aCode.GetCode() && pAccMgr != pAppAccel ) - aCode = pAppAccel->GetKeyCode( nId ); - pSVMenu->SetAccelKey( nId, aCode ); - } - } -} */ - -//-------------------------------------------------------------------- // set the checkmark of the specified item |