1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #ifndef _SVX_GALLERY1_HXX_ 25*b1cdbd2cSJim Jagielski #define _SVX_GALLERY1_HXX_ 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include <tools/string.hxx> 28*b1cdbd2cSJim Jagielski #include <tools/list.hxx> 29*b1cdbd2cSJim Jagielski #include <tools/urlobj.hxx> 30*b1cdbd2cSJim Jagielski #include <svl/brdcst.hxx> 31*b1cdbd2cSJim Jagielski #include "svx/svxdllapi.h" 32*b1cdbd2cSJim Jagielski //#include "gallery.hrc" 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski #include <cstdio> 35*b1cdbd2cSJim Jagielski #include <list> 36*b1cdbd2cSJim Jagielski 37*b1cdbd2cSJim Jagielski // --------------------- 38*b1cdbd2cSJim Jagielski // - GalleryThemeEntry - 39*b1cdbd2cSJim Jagielski // --------------------- 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski class SvStream; 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski class GalleryThemeEntry 44*b1cdbd2cSJim Jagielski { 45*b1cdbd2cSJim Jagielski private: 46*b1cdbd2cSJim Jagielski 47*b1cdbd2cSJim Jagielski String aName; 48*b1cdbd2cSJim Jagielski INetURLObject aThmURL; 49*b1cdbd2cSJim Jagielski INetURLObject aSdgURL; 50*b1cdbd2cSJim Jagielski INetURLObject aSdvURL; 51*b1cdbd2cSJim Jagielski sal_uInt32 nFileNumber; 52*b1cdbd2cSJim Jagielski sal_uInt32 nId; 53*b1cdbd2cSJim Jagielski sal_Bool bReadOnly; 54*b1cdbd2cSJim Jagielski sal_Bool bImported; 55*b1cdbd2cSJim Jagielski sal_Bool bModified; 56*b1cdbd2cSJim Jagielski sal_Bool bThemeNameFromResource; 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielski GalleryThemeEntry(); 59*b1cdbd2cSJim Jagielski INetURLObject ImplGetURLIgnoreCase( const INetURLObject& rURL ) const; 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski public: 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski GalleryThemeEntry( const INetURLObject& rBaseURL, const String& rName, 64*b1cdbd2cSJim Jagielski sal_uInt32 nFileNumber, sal_Bool bReadOnly, sal_Bool bImported, 65*b1cdbd2cSJim Jagielski sal_Bool bNewFile, sal_uInt32 nId, sal_Bool bThemeNameFromResource ); ~GalleryThemeEntry()66*b1cdbd2cSJim Jagielski ~GalleryThemeEntry() {}; 67*b1cdbd2cSJim Jagielski GetThemeName() const68*b1cdbd2cSJim Jagielski const String& GetThemeName() const { return aName; } GetFileNumber() const69*b1cdbd2cSJim Jagielski sal_uInt32 GetFileNumber() const { return nFileNumber; } 70*b1cdbd2cSJim Jagielski GetThmURL() const71*b1cdbd2cSJim Jagielski const INetURLObject& GetThmURL() const { return aThmURL; } GetSdgURL() const72*b1cdbd2cSJim Jagielski const INetURLObject& GetSdgURL() const { return aSdgURL; } GetSdvURL() const73*b1cdbd2cSJim Jagielski const INetURLObject& GetSdvURL() const { return aSdvURL; } 74*b1cdbd2cSJim Jagielski IsImported() const75*b1cdbd2cSJim Jagielski sal_Bool IsImported() const { return bImported; } IsReadOnly() const76*b1cdbd2cSJim Jagielski sal_Bool IsReadOnly() const { return bReadOnly; } 77*b1cdbd2cSJim Jagielski sal_Bool IsDefault() const; 78*b1cdbd2cSJim Jagielski IsHidden() const79*b1cdbd2cSJim Jagielski sal_Bool IsHidden() const { return aName.SearchAscii( "private://gallery/hidden/" ) == 0; } 80*b1cdbd2cSJim Jagielski IsModified() const81*b1cdbd2cSJim Jagielski sal_Bool IsModified() const { return bModified; } SetModified(sal_Bool bSet)82*b1cdbd2cSJim Jagielski void SetModified( sal_Bool bSet ) { bModified = ( bSet && !IsImported() && !IsReadOnly() ); } 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski void SetName( const String& rNewName ); IsNameFromResource() const85*b1cdbd2cSJim Jagielski sal_Bool IsNameFromResource() const { return bThemeNameFromResource; } 86*b1cdbd2cSJim Jagielski GetId() const87*b1cdbd2cSJim Jagielski sal_uInt32 GetId() const { return nId; } 88*b1cdbd2cSJim Jagielski void SetId( sal_uInt32 nNewId, sal_Bool bResetThemeName ); 89*b1cdbd2cSJim Jagielski }; 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski DECLARE_LIST( GalleryThemeList, GalleryThemeEntry* ) 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski // --------------------------- 94*b1cdbd2cSJim Jagielski // - GalleryImportThemeEntry - 95*b1cdbd2cSJim Jagielski // --------------------------- 96*b1cdbd2cSJim Jagielski 97*b1cdbd2cSJim Jagielski struct GalleryImportThemeEntry 98*b1cdbd2cSJim Jagielski { 99*b1cdbd2cSJim Jagielski String aThemeName; 100*b1cdbd2cSJim Jagielski String aUIName; 101*b1cdbd2cSJim Jagielski INetURLObject aURL; 102*b1cdbd2cSJim Jagielski String aImportName; 103*b1cdbd2cSJim Jagielski }; 104*b1cdbd2cSJim Jagielski DECLARE_LIST( GalleryImportThemeList, GalleryImportThemeEntry* ) 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------------- 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski SvStream& operator<<( SvStream& rOut, const GalleryImportThemeEntry& rEntry ); 109*b1cdbd2cSJim Jagielski SvStream& operator>>( SvStream& rIn, GalleryImportThemeEntry& rEntry ); 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski // ----------- 112*b1cdbd2cSJim Jagielski // - Gallery - 113*b1cdbd2cSJim Jagielski // ----------- 114*b1cdbd2cSJim Jagielski 115*b1cdbd2cSJim Jagielski class SfxListener; 116*b1cdbd2cSJim Jagielski class GalleryTheme; 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski class Gallery : public SfxBroadcaster 119*b1cdbd2cSJim Jagielski { 120*b1cdbd2cSJim Jagielski // only for gengal utility! 121*b1cdbd2cSJim Jagielski friend Gallery* createGallery( const rtl::OUString& ); 122*b1cdbd2cSJim Jagielski friend void disposeGallery( Gallery* ); 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski private: 125*b1cdbd2cSJim Jagielski 126*b1cdbd2cSJim Jagielski GalleryThemeList aThemeList; 127*b1cdbd2cSJim Jagielski GalleryImportThemeList aImportList; 128*b1cdbd2cSJim Jagielski List aThemeCache; 129*b1cdbd2cSJim Jagielski INetURLObject aRelURL; 130*b1cdbd2cSJim Jagielski INetURLObject aUserURL; 131*b1cdbd2cSJim Jagielski rtl_TextEncoding nReadTextEncoding; 132*b1cdbd2cSJim Jagielski sal_uIntPtr nLastFileNumber; 133*b1cdbd2cSJim Jagielski sal_Bool bMultiPath; 134*b1cdbd2cSJim Jagielski 135*b1cdbd2cSJim Jagielski void ImplLoad( const String& rMultiPath ); 136*b1cdbd2cSJim Jagielski void ImplLoadSubDirs( const INetURLObject& rBaseURL, sal_Bool& rbIsReadOnly ); 137*b1cdbd2cSJim Jagielski void ImplLoadImports(); 138*b1cdbd2cSJim Jagielski void ImplWriteImportList(); 139*b1cdbd2cSJim Jagielski 140*b1cdbd2cSJim Jagielski SVX_DLLPUBLIC GalleryThemeEntry* ImplGetThemeEntry( const String& rThemeName ); 141*b1cdbd2cSJim Jagielski GalleryThemeEntry* ImplGetThemeEntry( sal_uIntPtr nThemeId ); 142*b1cdbd2cSJim Jagielski GalleryImportThemeEntry* ImplGetImportThemeEntry( const String& rImportName ); 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski GalleryTheme* ImplGetCachedTheme( const GalleryThemeEntry* pThemeEntry ); 145*b1cdbd2cSJim Jagielski void ImplDeleteCachedTheme( GalleryTheme* pTheme ); 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski SVX_DLLPUBLIC Gallery( const String& rMultiPath ); 148*b1cdbd2cSJim Jagielski SVX_DLLPUBLIC ~Gallery(); 149*b1cdbd2cSJim Jagielski 150*b1cdbd2cSJim Jagielski public: 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielski SVX_DLLPUBLIC static Gallery* GetGalleryInstance(); 153*b1cdbd2cSJim Jagielski GetThemeCount() const154*b1cdbd2cSJim Jagielski sal_uIntPtr GetThemeCount() const { return aThemeList.Count(); } GetThemeInfo(sal_uIntPtr nPos)155*b1cdbd2cSJim Jagielski const GalleryThemeEntry* GetThemeInfo( sal_uIntPtr nPos ) { return aThemeList.GetObject( nPos ); } GetThemeInfo(const String & rThemeName)156*b1cdbd2cSJim Jagielski const GalleryThemeEntry* GetThemeInfo( const String& rThemeName ) { return ImplGetThemeEntry( rThemeName ); } 157*b1cdbd2cSJim Jagielski 158*b1cdbd2cSJim Jagielski SVX_DLLPUBLIC sal_Bool HasTheme( const String& rThemeName ); 159*b1cdbd2cSJim Jagielski String GetThemeName( sal_uIntPtr nThemeId ) const; 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski SVX_DLLPUBLIC sal_Bool CreateTheme( const String& rThemeName, sal_uInt32 nNumFrom = 0 ); 162*b1cdbd2cSJim Jagielski sal_Bool CreateImportTheme( const INetURLObject& rURL, const String& rFileName ); 163*b1cdbd2cSJim Jagielski sal_Bool RenameTheme( const String& rOldName, const String& rNewName ); 164*b1cdbd2cSJim Jagielski SVX_DLLPUBLIC sal_Bool RemoveTheme( const String& rThemeName ); 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski SVX_DLLPUBLIC GalleryTheme* AcquireTheme( const String& rThemeName, SfxListener& rListener ); 167*b1cdbd2cSJim Jagielski SVX_DLLPUBLIC void ReleaseTheme( GalleryTheme* pTheme, SfxListener& rListener ); 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim Jagielski public: 170*b1cdbd2cSJim Jagielski 171*b1cdbd2cSJim Jagielski INetURLObject GetImportURL( const String& rThemeName ); 172*b1cdbd2cSJim Jagielski GetUserURL() const173*b1cdbd2cSJim Jagielski const INetURLObject& GetUserURL() const { return aUserURL; } GetRelativeURL() const174*b1cdbd2cSJim Jagielski const INetURLObject& GetRelativeURL() const { return aRelURL; } 175*b1cdbd2cSJim Jagielski IsMultiPath() const176*b1cdbd2cSJim Jagielski sal_Bool IsMultiPath() const { return bMultiPath; } 177*b1cdbd2cSJim Jagielski }; 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski #endif // _SVX_GALLERY1_HXX_ 180