1f6e50924SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3f6e50924SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4f6e50924SAndrew Rist * or more contributor license agreements. See the NOTICE file
5f6e50924SAndrew Rist * distributed with this work for additional information
6f6e50924SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7f6e50924SAndrew Rist * to you under the Apache License, Version 2.0 (the
8f6e50924SAndrew Rist * "License"); you may not use this file except in compliance
9f6e50924SAndrew Rist * with the License. You may obtain a copy of the License at
10f6e50924SAndrew Rist *
11f6e50924SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12f6e50924SAndrew Rist *
13f6e50924SAndrew Rist * Unless required by applicable law or agreed to in writing,
14f6e50924SAndrew Rist * software distributed under the License is distributed on an
15f6e50924SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16f6e50924SAndrew Rist * KIND, either express or implied. See the License for the
17f6e50924SAndrew Rist * specific language governing permissions and limitations
18f6e50924SAndrew Rist * under the License.
19f6e50924SAndrew Rist *
20f6e50924SAndrew Rist *************************************************************/
21f6e50924SAndrew Rist
22f6e50924SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_svx.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir #include <tools/datetime.hxx>
28cdf0e10cSrcweir #include <unotools/datetime.hxx>
29cdf0e10cSrcweir #include <vcl/msgbox.hxx>
30cdf0e10cSrcweir #include <ucbhelper/content.hxx>
31cdf0e10cSrcweir #include <sfx2/app.hxx>
32cdf0e10cSrcweir #include "helpid.hrc"
33cdf0e10cSrcweir #include "svx/gallery1.hxx"
34cdf0e10cSrcweir #include "svx/galtheme.hxx"
35cdf0e10cSrcweir #include "svx/galmisc.hxx"
36cdf0e10cSrcweir #include "galbrws1.hxx"
37cdf0e10cSrcweir #include <com/sun/star/util/DateTime.hpp>
38cdf0e10cSrcweir #include "gallery.hrc"
39cdf0e10cSrcweir #include <algorithm>
40cdf0e10cSrcweir #include <svx/dialogs.hrc>
41cdf0e10cSrcweir #include <svx/dialmgr.hxx>
42cdf0e10cSrcweir
43cdf0e10cSrcweir #include <svx/svxdlg.hxx> //CHINA001
44cdf0e10cSrcweir //CHINA001 #include <svx/dialogs.hrc> //CHINA001
45cdf0e10cSrcweir
46cdf0e10cSrcweir // --------------
47cdf0e10cSrcweir // - Namespaces -
48cdf0e10cSrcweir // --------------
49cdf0e10cSrcweir
50cdf0e10cSrcweir using namespace ::rtl;
51cdf0e10cSrcweir using namespace ::com::sun::star;
52cdf0e10cSrcweir
53cdf0e10cSrcweir // -----------------
54cdf0e10cSrcweir // - GalleryButton -
55cdf0e10cSrcweir // -----------------
DBG_NAME(GalleryButton)56cdf0e10cSrcweir DBG_NAME(GalleryButton)
57cdf0e10cSrcweir
58cdf0e10cSrcweir GalleryButton::GalleryButton( GalleryBrowser1* pParent, WinBits nWinBits ) :
59cdf0e10cSrcweir PushButton( pParent, nWinBits )
60cdf0e10cSrcweir {
61cdf0e10cSrcweir DBG_CTOR(GalleryButton,NULL);
62cdf0e10cSrcweir
63cdf0e10cSrcweir }
64cdf0e10cSrcweir
65cdf0e10cSrcweir // -----------------------------------------------------------------------------
66cdf0e10cSrcweir
~GalleryButton()67cdf0e10cSrcweir GalleryButton::~GalleryButton()
68cdf0e10cSrcweir {
69cdf0e10cSrcweir
70cdf0e10cSrcweir DBG_DTOR(GalleryButton,NULL);
71cdf0e10cSrcweir }
72cdf0e10cSrcweir
73cdf0e10cSrcweir // -----------------------------------------------------------------------------
74cdf0e10cSrcweir
KeyInput(const KeyEvent & rKEvt)75cdf0e10cSrcweir void GalleryButton::KeyInput( const KeyEvent& rKEvt )
76cdf0e10cSrcweir {
77cdf0e10cSrcweir if( !static_cast< GalleryBrowser1* >( GetParent() )->KeyInput( rKEvt, this ) )
78cdf0e10cSrcweir PushButton::KeyInput( rKEvt );
79cdf0e10cSrcweir }
80cdf0e10cSrcweir
81cdf0e10cSrcweir // -----------------------
82cdf0e10cSrcweir // - GalleryThemeListBox -
83cdf0e10cSrcweir // -----------------------
DBG_NAME(GalleryThemeListBox)84cdf0e10cSrcweir DBG_NAME(GalleryThemeListBox)
85cdf0e10cSrcweir
86cdf0e10cSrcweir GalleryThemeListBox::GalleryThemeListBox( GalleryBrowser1* pParent, WinBits nWinBits ) :
87cdf0e10cSrcweir ListBox( pParent, nWinBits )
88cdf0e10cSrcweir {
89cdf0e10cSrcweir DBG_CTOR(GalleryThemeListBox,NULL);
90cdf0e10cSrcweir
91cdf0e10cSrcweir InitSettings();
92cdf0e10cSrcweir }
93cdf0e10cSrcweir
94cdf0e10cSrcweir // -----------------------------------------------------------------------------
95cdf0e10cSrcweir
~GalleryThemeListBox()96cdf0e10cSrcweir GalleryThemeListBox::~GalleryThemeListBox()
97cdf0e10cSrcweir {
98cdf0e10cSrcweir
99cdf0e10cSrcweir DBG_DTOR(GalleryThemeListBox,NULL);
100cdf0e10cSrcweir }
101cdf0e10cSrcweir
102cdf0e10cSrcweir // ------------------------------------------------------------------------
103cdf0e10cSrcweir
InitSettings()104cdf0e10cSrcweir void GalleryThemeListBox::InitSettings()
105cdf0e10cSrcweir {
106cdf0e10cSrcweir SetBackground( Wallpaper( GALLERY_BG_COLOR ) );
107cdf0e10cSrcweir SetControlBackground( GALLERY_BG_COLOR );
108cdf0e10cSrcweir SetControlForeground( GALLERY_FG_COLOR );
109cdf0e10cSrcweir }
110cdf0e10cSrcweir
111cdf0e10cSrcweir // -----------------------------------------------------------------------
112cdf0e10cSrcweir
DataChanged(const DataChangedEvent & rDCEvt)113cdf0e10cSrcweir void GalleryThemeListBox::DataChanged( const DataChangedEvent& rDCEvt )
114cdf0e10cSrcweir {
115cdf0e10cSrcweir if ( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
116cdf0e10cSrcweir InitSettings();
117cdf0e10cSrcweir else
118cdf0e10cSrcweir ListBox::DataChanged( rDCEvt );
119cdf0e10cSrcweir }
120cdf0e10cSrcweir
121cdf0e10cSrcweir // -----------------------------------------------------------------------------
122cdf0e10cSrcweir
PreNotify(NotifyEvent & rNEvt)123cdf0e10cSrcweir long GalleryThemeListBox::PreNotify( NotifyEvent& rNEvt )
124cdf0e10cSrcweir {
125cdf0e10cSrcweir long nDone = 0;
126cdf0e10cSrcweir
127cdf0e10cSrcweir if( rNEvt.GetType() == EVENT_COMMAND )
128cdf0e10cSrcweir {
129cdf0e10cSrcweir const CommandEvent* pCEvt = rNEvt.GetCommandEvent();
130cdf0e10cSrcweir
131cdf0e10cSrcweir if( pCEvt && pCEvt->GetCommand() == COMMAND_CONTEXTMENU )
132cdf0e10cSrcweir static_cast< GalleryBrowser1* >( GetParent() )->ShowContextMenu();
133cdf0e10cSrcweir }
134cdf0e10cSrcweir else if( rNEvt.GetType() == EVENT_KEYINPUT )
135cdf0e10cSrcweir {
136cdf0e10cSrcweir const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
137cdf0e10cSrcweir
138cdf0e10cSrcweir if( pKEvt )
139cdf0e10cSrcweir nDone = static_cast< GalleryBrowser1* >( GetParent() )->KeyInput( *pKEvt, this );
140cdf0e10cSrcweir }
141cdf0e10cSrcweir
142cdf0e10cSrcweir return( nDone ? nDone : ListBox::PreNotify( rNEvt ) );
143cdf0e10cSrcweir }
144cdf0e10cSrcweir
145cdf0e10cSrcweir // -------------------
146cdf0e10cSrcweir // - GalleryBrowser1 -
147cdf0e10cSrcweir // -------------------
DBG_NAME(GalleryBrowser1)148cdf0e10cSrcweir DBG_NAME(GalleryBrowser1)
149cdf0e10cSrcweir
150*02c50d82SAndre Fischer GalleryBrowser1::GalleryBrowser1(
151*02c50d82SAndre Fischer Window* pParent,
152*02c50d82SAndre Fischer const ResId& rResId,
153*02c50d82SAndre Fischer Gallery* pGallery,
154*02c50d82SAndre Fischer const ::boost::function<sal_Bool(const KeyEvent&,Window*)>& rKeyInputHandler,
155*02c50d82SAndre Fischer const ::boost::function<void(void)>& rThemeSlectionHandler)
156*02c50d82SAndre Fischer :
157cdf0e10cSrcweir Control ( pParent, rResId ),
158cdf0e10cSrcweir maNewTheme ( this, WB_3DLOOK ),
159cdf0e10cSrcweir mpThemes ( new GalleryThemeListBox( this, WB_TABSTOP | WB_3DLOOK | WB_BORDER | WB_HSCROLL | WB_VSCROLL | WB_AUTOHSCROLL | WB_SORT ) ),
160cdf0e10cSrcweir mpGallery ( pGallery ),
161cdf0e10cSrcweir mpExchangeData ( new ExchangeData ),
162cdf0e10cSrcweir mpThemePropsDlgItemSet( NULL ),
163cdf0e10cSrcweir aImgNormal ( GalleryResGetBitmapEx( RID_SVXBMP_THEME_NORMAL ) ),
164cdf0e10cSrcweir aImgDefault ( GalleryResGetBitmapEx( RID_SVXBMP_THEME_DEFAULT ) ),
165cdf0e10cSrcweir aImgReadOnly ( GalleryResGetBitmapEx( RID_SVXBMP_THEME_READONLY ) ),
166*02c50d82SAndre Fischer aImgImported ( GalleryResGetBitmapEx( RID_SVXBMP_THEME_IMPORTED ) ),
167*02c50d82SAndre Fischer maKeyInputHandler(rKeyInputHandler),
168*02c50d82SAndre Fischer maThemeSlectionHandler(rThemeSlectionHandler)
169cdf0e10cSrcweir {
170cdf0e10cSrcweir DBG_CTOR(GalleryBrowser1,NULL);
171cdf0e10cSrcweir
172cdf0e10cSrcweir StartListening( *mpGallery );
173cdf0e10cSrcweir
174cdf0e10cSrcweir maNewTheme.SetHelpId( HID_GALLERY_NEWTHEME );
175cdf0e10cSrcweir maNewTheme.SetText( String( GAL_RESID( RID_SVXSTR_GALLERY_CREATETHEME ) ) );
176cdf0e10cSrcweir maNewTheme.SetClickHdl( LINK( this, GalleryBrowser1, ClickNewThemeHdl ) );
177cdf0e10cSrcweir
178cdf0e10cSrcweir // disable creation of new themes if a writable directory is not available
179cdf0e10cSrcweir if( mpGallery->GetUserURL().GetProtocol() == INET_PROT_NOT_VALID )
180cdf0e10cSrcweir maNewTheme.Disable();
181cdf0e10cSrcweir
182cdf0e10cSrcweir mpThemes->SetHelpId( HID_GALLERY_THEMELIST );
183cdf0e10cSrcweir mpThemes->SetSelectHdl( LINK( this, GalleryBrowser1, SelectThemeHdl ) );
184cdf0e10cSrcweir mpThemes->SetAccessibleName(String(SVX_RES( RID_SVXSTR_GALLERYPROPS_GALTHEME ) ) );
185cdf0e10cSrcweir
186cdf0e10cSrcweir for( sal_uIntPtr i = 0, nCount = mpGallery->GetThemeCount(); i < nCount; i++ )
187cdf0e10cSrcweir ImplInsertThemeEntry( mpGallery->GetThemeInfo( i ) );
188cdf0e10cSrcweir
189cdf0e10cSrcweir ImplAdjustControls();
190cdf0e10cSrcweir maNewTheme.Show( sal_True );
191cdf0e10cSrcweir mpThemes->Show( sal_True );
192cdf0e10cSrcweir }
193cdf0e10cSrcweir
194cdf0e10cSrcweir // -----------------------------------------------------------------------------
195cdf0e10cSrcweir
~GalleryBrowser1()196cdf0e10cSrcweir GalleryBrowser1::~GalleryBrowser1()
197cdf0e10cSrcweir {
198cdf0e10cSrcweir EndListening( *mpGallery );
199cdf0e10cSrcweir delete mpThemes;
200cdf0e10cSrcweir mpThemes = NULL;
201cdf0e10cSrcweir delete mpExchangeData;
202cdf0e10cSrcweir mpExchangeData = NULL;
203cdf0e10cSrcweir
204cdf0e10cSrcweir DBG_DTOR(GalleryBrowser1,NULL);
205cdf0e10cSrcweir }
206cdf0e10cSrcweir
207cdf0e10cSrcweir // -----------------------------------------------------------------------------
208cdf0e10cSrcweir
ImplInsertThemeEntry(const GalleryThemeEntry * pEntry)209cdf0e10cSrcweir sal_uIntPtr GalleryBrowser1::ImplInsertThemeEntry( const GalleryThemeEntry* pEntry )
210cdf0e10cSrcweir {
211cdf0e10cSrcweir static const sal_Bool bShowHiddenThemes = ( getenv( "GALLERY_SHOW_HIDDEN_THEMES" ) != NULL );
212cdf0e10cSrcweir
213cdf0e10cSrcweir sal_uIntPtr nRet = LISTBOX_ENTRY_NOTFOUND;
214cdf0e10cSrcweir
215cdf0e10cSrcweir if( pEntry && ( !pEntry->IsHidden() || bShowHiddenThemes ) )
216cdf0e10cSrcweir {
217cdf0e10cSrcweir const Image* pImage;
218cdf0e10cSrcweir
219cdf0e10cSrcweir if( pEntry->IsImported() )
220cdf0e10cSrcweir pImage = &aImgImported;
221cdf0e10cSrcweir else if( pEntry->IsReadOnly() )
222cdf0e10cSrcweir pImage = &aImgReadOnly;
223cdf0e10cSrcweir else if( pEntry->IsDefault() )
224cdf0e10cSrcweir pImage = &aImgDefault;
225cdf0e10cSrcweir else
226cdf0e10cSrcweir pImage = &aImgNormal;
227cdf0e10cSrcweir
228cdf0e10cSrcweir nRet = mpThemes->InsertEntry( pEntry->GetThemeName(), *pImage );
229cdf0e10cSrcweir }
230cdf0e10cSrcweir
231cdf0e10cSrcweir return nRet;
232cdf0e10cSrcweir }
233cdf0e10cSrcweir
234cdf0e10cSrcweir // -----------------------------------------------------------------------------
235cdf0e10cSrcweir
ImplAdjustControls()236cdf0e10cSrcweir void GalleryBrowser1::ImplAdjustControls()
237cdf0e10cSrcweir {
238cdf0e10cSrcweir const Size aOutSize( GetOutputSizePixel() );
239cdf0e10cSrcweir const long nNewThemeHeight = LogicToPixel( Size( 0, 14 ), MAP_APPFONT ).Height();
240cdf0e10cSrcweir const long nStartY = nNewThemeHeight + 4;
241cdf0e10cSrcweir
242cdf0e10cSrcweir maNewTheme.SetPosSizePixel( Point(),
243cdf0e10cSrcweir Size( aOutSize.Width(), nNewThemeHeight ) );
244cdf0e10cSrcweir
245cdf0e10cSrcweir mpThemes->SetPosSizePixel( Point( 0, nStartY ),
246cdf0e10cSrcweir Size( aOutSize.Width(), aOutSize.Height() - nStartY ) );
247cdf0e10cSrcweir }
248cdf0e10cSrcweir
249cdf0e10cSrcweir // -----------------------------------------------------------------------------
250cdf0e10cSrcweir
ImplFillExchangeData(const GalleryTheme * pThm,ExchangeData & rData)251cdf0e10cSrcweir void GalleryBrowser1::ImplFillExchangeData( const GalleryTheme* pThm, ExchangeData& rData )
252cdf0e10cSrcweir {
253cdf0e10cSrcweir rData.pTheme = (GalleryTheme*) pThm;
254cdf0e10cSrcweir rData.aEditedTitle = pThm->GetName();
255cdf0e10cSrcweir
256cdf0e10cSrcweir try
257cdf0e10cSrcweir {
258cdf0e10cSrcweir ::ucbhelper::Content aCnt( pThm->GetThmURL().GetMainURL( INetURLObject::NO_DECODE ), uno::Reference< ucb::XCommandEnvironment >() );
259cdf0e10cSrcweir util::DateTime aDateTimeModified;
260cdf0e10cSrcweir DateTime aDateTime;
261cdf0e10cSrcweir
262cdf0e10cSrcweir aCnt.getPropertyValue( OUString::createFromAscii( "DateModified" ) ) >>= aDateTimeModified;
263cdf0e10cSrcweir ::utl::typeConvert( aDateTimeModified, aDateTime );
264cdf0e10cSrcweir rData.aThemeChangeDate = aDateTime;
265cdf0e10cSrcweir rData.aThemeChangeTime = aDateTime;
266cdf0e10cSrcweir }
267cdf0e10cSrcweir catch( const ucb::ContentCreationException& )
268cdf0e10cSrcweir {
269cdf0e10cSrcweir }
270cdf0e10cSrcweir catch( const uno::RuntimeException& )
271cdf0e10cSrcweir {
272cdf0e10cSrcweir }
273cdf0e10cSrcweir catch( const uno::Exception& )
274cdf0e10cSrcweir {
275cdf0e10cSrcweir }
276cdf0e10cSrcweir }
277cdf0e10cSrcweir
278cdf0e10cSrcweir // -----------------------------------------------------------------------------
279cdf0e10cSrcweir
ImplGetExecuteVector(::std::vector<sal_uInt16> & o_aExec)280cdf0e10cSrcweir void GalleryBrowser1::ImplGetExecuteVector(::std::vector< sal_uInt16 >& o_aExec)
281cdf0e10cSrcweir {
282cdf0e10cSrcweir GalleryTheme* pTheme = mpGallery->AcquireTheme( GetSelectedTheme(), *this );
283cdf0e10cSrcweir
284cdf0e10cSrcweir if( pTheme )
285cdf0e10cSrcweir {
286cdf0e10cSrcweir sal_Bool bUpdateAllowed, bRenameAllowed, bRemoveAllowed;
287cdf0e10cSrcweir static const sal_Bool bIdDialog = ( getenv( "GALLERY_ENABLE_ID_DIALOG" ) != NULL );
288cdf0e10cSrcweir
289cdf0e10cSrcweir if( pTheme->IsReadOnly() )
290cdf0e10cSrcweir bUpdateAllowed = bRenameAllowed = bRemoveAllowed = sal_False;
291cdf0e10cSrcweir else if( pTheme->IsImported() )
292cdf0e10cSrcweir {
293cdf0e10cSrcweir bUpdateAllowed = sal_False;
294cdf0e10cSrcweir bRenameAllowed = bRemoveAllowed = sal_True;
295cdf0e10cSrcweir }
296cdf0e10cSrcweir else if( pTheme->IsDefault() )
297cdf0e10cSrcweir {
298cdf0e10cSrcweir bUpdateAllowed = bRenameAllowed = sal_True;
299cdf0e10cSrcweir bRemoveAllowed = sal_False;
300cdf0e10cSrcweir }
301cdf0e10cSrcweir else
302cdf0e10cSrcweir bUpdateAllowed = bRenameAllowed = bRemoveAllowed = sal_True;
303cdf0e10cSrcweir
304cdf0e10cSrcweir if( bUpdateAllowed && pTheme->GetObjectCount() )
305cdf0e10cSrcweir o_aExec.push_back( MN_ACTUALIZE );
306cdf0e10cSrcweir
307cdf0e10cSrcweir if( bRenameAllowed )
308cdf0e10cSrcweir o_aExec.push_back( MN_RENAME );
309cdf0e10cSrcweir
310cdf0e10cSrcweir if( bRemoveAllowed )
311cdf0e10cSrcweir o_aExec.push_back( MN_DELETE );
312cdf0e10cSrcweir
313cdf0e10cSrcweir if( bIdDialog && !pTheme->IsReadOnly() && !pTheme->IsImported() )
314cdf0e10cSrcweir o_aExec.push_back( MN_ASSIGN_ID );
315cdf0e10cSrcweir
316cdf0e10cSrcweir o_aExec.push_back( MN_PROPERTIES );
317cdf0e10cSrcweir
318cdf0e10cSrcweir mpGallery->ReleaseTheme( pTheme, *this );
319cdf0e10cSrcweir }
320cdf0e10cSrcweir }
321cdf0e10cSrcweir
322cdf0e10cSrcweir // -----------------------------------------------------------------------------
323cdf0e10cSrcweir
ImplGalleryThemeProperties(const String & rThemeName,bool bCreateNew)324cdf0e10cSrcweir void GalleryBrowser1::ImplGalleryThemeProperties( const String & rThemeName, bool bCreateNew )
325cdf0e10cSrcweir {
326cdf0e10cSrcweir DBG_ASSERT(!mpThemePropsDlgItemSet, "mpThemePropsDlgItemSet already set!");
327cdf0e10cSrcweir mpThemePropsDlgItemSet = new SfxItemSet( SFX_APP()->GetPool() );
328cdf0e10cSrcweir GalleryTheme* pTheme = mpGallery->AcquireTheme( rThemeName, *this );
329cdf0e10cSrcweir
330cdf0e10cSrcweir ImplFillExchangeData( pTheme, *mpExchangeData );
331cdf0e10cSrcweir
332cdf0e10cSrcweir SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
333cdf0e10cSrcweir DBG_ASSERT(pFact, "Got no AbstractDialogFactory!");
334cdf0e10cSrcweir VclAbstractDialog2* pThemeProps = pFact->CreateGalleryThemePropertiesDialog( NULL, mpExchangeData, mpThemePropsDlgItemSet );
335cdf0e10cSrcweir DBG_ASSERT(pThemeProps, "Got no GalleryThemePropertiesDialog!");
336cdf0e10cSrcweir
337cdf0e10cSrcweir if ( bCreateNew )
338cdf0e10cSrcweir {
339cdf0e10cSrcweir pThemeProps->StartExecuteModal(
340cdf0e10cSrcweir LINK( this, GalleryBrowser1, EndNewThemePropertiesDlgHdl ) );
341cdf0e10cSrcweir }
342cdf0e10cSrcweir else
343cdf0e10cSrcweir {
344cdf0e10cSrcweir pThemeProps->StartExecuteModal(
345cdf0e10cSrcweir LINK( this, GalleryBrowser1, EndThemePropertiesDlgHdl ) );
346cdf0e10cSrcweir }
347cdf0e10cSrcweir }
348cdf0e10cSrcweir
349cdf0e10cSrcweir // -----------------------------------------------------------------------------
350cdf0e10cSrcweir
ImplEndGalleryThemeProperties(VclAbstractDialog2 * pDialog,bool bCreateNew)351cdf0e10cSrcweir void GalleryBrowser1::ImplEndGalleryThemeProperties( VclAbstractDialog2* pDialog, bool bCreateNew )
352cdf0e10cSrcweir {
353cdf0e10cSrcweir long nRet = pDialog->GetResult();
354cdf0e10cSrcweir
355cdf0e10cSrcweir if( nRet == RET_OK )
356cdf0e10cSrcweir {
357cdf0e10cSrcweir String aName( mpExchangeData->pTheme->GetName() );
358cdf0e10cSrcweir
359cdf0e10cSrcweir if( mpExchangeData->aEditedTitle.Len() && aName != mpExchangeData->aEditedTitle )
360cdf0e10cSrcweir {
361cdf0e10cSrcweir const String aOldName( aName );
362cdf0e10cSrcweir String aTitle( mpExchangeData->aEditedTitle );
363cdf0e10cSrcweir sal_uInt16 nCount = 0;
364cdf0e10cSrcweir
365cdf0e10cSrcweir while( mpGallery->HasTheme( aTitle ) && ( nCount++ < 16000 ) )
366cdf0e10cSrcweir {
367cdf0e10cSrcweir aTitle = mpExchangeData->aEditedTitle;
368cdf0e10cSrcweir aTitle += ' ';
369cdf0e10cSrcweir aTitle += String::CreateFromInt32( nCount );
370cdf0e10cSrcweir }
371cdf0e10cSrcweir
372cdf0e10cSrcweir mpGallery->RenameTheme( aOldName, aTitle );
373cdf0e10cSrcweir }
374cdf0e10cSrcweir
375cdf0e10cSrcweir if ( bCreateNew )
376cdf0e10cSrcweir {
377cdf0e10cSrcweir mpThemes->SelectEntry( mpExchangeData->pTheme->GetName() );
378cdf0e10cSrcweir SelectThemeHdl( NULL );
379cdf0e10cSrcweir }
380cdf0e10cSrcweir }
381cdf0e10cSrcweir
382cdf0e10cSrcweir String aThemeName( mpExchangeData->pTheme->GetName() );
383cdf0e10cSrcweir mpGallery->ReleaseTheme( mpExchangeData->pTheme, *this );
384cdf0e10cSrcweir
385cdf0e10cSrcweir if ( bCreateNew && ( nRet != RET_OK ) )
386cdf0e10cSrcweir {
387cdf0e10cSrcweir mpGallery->RemoveTheme( aThemeName );
388cdf0e10cSrcweir }
389cdf0e10cSrcweir
390cdf0e10cSrcweir // destroy mpThemeProps asynchronously
391cdf0e10cSrcweir Application::PostUserEvent( LINK( this, GalleryBrowser1, DestroyThemePropertiesDlgHdl ) );
392cdf0e10cSrcweir }
393cdf0e10cSrcweir
394cdf0e10cSrcweir // -----------------------------------------------------------------------------
395cdf0e10cSrcweir
IMPL_LINK(GalleryBrowser1,EndNewThemePropertiesDlgHdl,VclAbstractDialog2 *,pDialog)396cdf0e10cSrcweir IMPL_LINK( GalleryBrowser1, EndNewThemePropertiesDlgHdl, VclAbstractDialog2*, pDialog )
397cdf0e10cSrcweir {
398cdf0e10cSrcweir ImplEndGalleryThemeProperties( pDialog, true );
399cdf0e10cSrcweir return 0L;
400cdf0e10cSrcweir }
401cdf0e10cSrcweir
402cdf0e10cSrcweir // -----------------------------------------------------------------------------
403cdf0e10cSrcweir
IMPL_LINK(GalleryBrowser1,EndThemePropertiesDlgHdl,VclAbstractDialog2 *,pDialog)404cdf0e10cSrcweir IMPL_LINK( GalleryBrowser1, EndThemePropertiesDlgHdl, VclAbstractDialog2*, pDialog )
405cdf0e10cSrcweir {
406cdf0e10cSrcweir ImplEndGalleryThemeProperties( pDialog, false );
407cdf0e10cSrcweir return 0L;
408cdf0e10cSrcweir }
409cdf0e10cSrcweir
410cdf0e10cSrcweir // -----------------------------------------------------------------------------
411cdf0e10cSrcweir
IMPL_LINK(GalleryBrowser1,DestroyThemePropertiesDlgHdl,VclAbstractDialog2 *,pDialog)412cdf0e10cSrcweir IMPL_LINK( GalleryBrowser1, DestroyThemePropertiesDlgHdl, VclAbstractDialog2*, pDialog )
413cdf0e10cSrcweir {
414cdf0e10cSrcweir delete pDialog;
415cdf0e10cSrcweir delete mpThemePropsDlgItemSet;
416cdf0e10cSrcweir mpThemePropsDlgItemSet = 0;
417cdf0e10cSrcweir return 0L;
418cdf0e10cSrcweir }
419cdf0e10cSrcweir
420cdf0e10cSrcweir // -----------------------------------------------------------------------------
421cdf0e10cSrcweir
ImplExecute(sal_uInt16 nId)422cdf0e10cSrcweir void GalleryBrowser1::ImplExecute( sal_uInt16 nId )
423cdf0e10cSrcweir {
424cdf0e10cSrcweir switch( nId )
425cdf0e10cSrcweir {
426cdf0e10cSrcweir case( MN_ACTUALIZE ):
427cdf0e10cSrcweir {
428cdf0e10cSrcweir GalleryTheme* pTheme = mpGallery->AcquireTheme( GetSelectedTheme(), *this );
429cdf0e10cSrcweir //CHINA001 ActualizeProgress aActualizeProgress( this, pTheme );
430cdf0e10cSrcweir SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
431cdf0e10cSrcweir if(pFact)
432cdf0e10cSrcweir {
433cdf0e10cSrcweir VclAbstractRefreshableDialog* aActualizeProgress = pFact->CreateActualizeProgressDialog( this, pTheme );
434cdf0e10cSrcweir DBG_ASSERT(aActualizeProgress, "Dialogdiet fail!");//CHINA001
435cdf0e10cSrcweir
436cdf0e10cSrcweir aActualizeProgress->Update(); //CHINA001 aActualizeProgress.Update();
437cdf0e10cSrcweir aActualizeProgress->Execute(); //CHINA001 aActualizeProgress.Execute();
438cdf0e10cSrcweir mpGallery->ReleaseTheme( pTheme, *this );
439cdf0e10cSrcweir delete aActualizeProgress; //add CHINA001
440cdf0e10cSrcweir }
441cdf0e10cSrcweir }
442cdf0e10cSrcweir break;
443cdf0e10cSrcweir
444cdf0e10cSrcweir case( MN_DELETE ):
445cdf0e10cSrcweir {
446cdf0e10cSrcweir if( QueryBox( NULL, WB_YES_NO, String( GAL_RESID( RID_SVXSTR_GALLERY_DELETETHEME ) ) ).Execute() == RET_YES )
447cdf0e10cSrcweir mpGallery->RemoveTheme( mpThemes->GetSelectEntry() );
448cdf0e10cSrcweir }
449cdf0e10cSrcweir break;
450cdf0e10cSrcweir
451cdf0e10cSrcweir case( MN_RENAME ):
452cdf0e10cSrcweir {
453cdf0e10cSrcweir GalleryTheme* pTheme = mpGallery->AcquireTheme( GetSelectedTheme(), *this );
454cdf0e10cSrcweir const String aOldName( pTheme->GetName() );
455cdf0e10cSrcweir //CHINA001 TitleDialog aDlg( this, aOldName );
456cdf0e10cSrcweir SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
457cdf0e10cSrcweir DBG_ASSERT(pFact, "Dialogdiet fail!");//CHINA001
458cdf0e10cSrcweir AbstractTitleDialog* aDlg = pFact->CreateTitleDialog( this, aOldName );
459cdf0e10cSrcweir DBG_ASSERT(aDlg, "Dialogdiet fail!");//CHINA001
460cdf0e10cSrcweir
461cdf0e10cSrcweir if( aDlg->Execute() == RET_OK ) //CHINA001 if( aDlg.Execute() == RET_OK )
462cdf0e10cSrcweir {
463cdf0e10cSrcweir const String aNewName( aDlg->GetTitle() ); //CHINA001 aDlg.GetTitle() );
464cdf0e10cSrcweir
465cdf0e10cSrcweir if( aNewName.Len() && ( aNewName != aOldName ) )
466cdf0e10cSrcweir {
467cdf0e10cSrcweir String aName( aNewName );
468cdf0e10cSrcweir sal_uInt16 nCount = 0;
469cdf0e10cSrcweir
470cdf0e10cSrcweir while( mpGallery->HasTheme( aName ) && ( nCount++ < 16000 ) )
471cdf0e10cSrcweir {
472cdf0e10cSrcweir aName = aNewName;
473cdf0e10cSrcweir aName += ' ';
474cdf0e10cSrcweir aName += String::CreateFromInt32( nCount );
475cdf0e10cSrcweir }
476cdf0e10cSrcweir
477cdf0e10cSrcweir mpGallery->RenameTheme( aOldName, aName );
478cdf0e10cSrcweir }
479cdf0e10cSrcweir }
480cdf0e10cSrcweir mpGallery->ReleaseTheme( pTheme, *this );
481cdf0e10cSrcweir delete aDlg; //add CHINA001
482cdf0e10cSrcweir }
483cdf0e10cSrcweir break;
484cdf0e10cSrcweir
485cdf0e10cSrcweir case( MN_ASSIGN_ID ):
486cdf0e10cSrcweir {
487cdf0e10cSrcweir GalleryTheme* pTheme = mpGallery->AcquireTheme( GetSelectedTheme(), *this );
488cdf0e10cSrcweir
489cdf0e10cSrcweir if( pTheme && !pTheme->IsReadOnly() && !pTheme->IsImported() )
490cdf0e10cSrcweir {
491cdf0e10cSrcweir //CHINA001 GalleryIdDialog aDlg( this, pTheme );
492cdf0e10cSrcweir SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
493cdf0e10cSrcweir if(pFact)
494cdf0e10cSrcweir {
495cdf0e10cSrcweir AbstractGalleryIdDialog* aDlg = pFact->CreateGalleryIdDialog( this, pTheme );
496cdf0e10cSrcweir DBG_ASSERT(aDlg, "Dialogdiet fail!");//CHINA001
497cdf0e10cSrcweir
498cdf0e10cSrcweir if( aDlg->Execute() == RET_OK ) //CHINA001 if( aDlg.Execute() == RET_OK )
499cdf0e10cSrcweir pTheme->SetId( aDlg->GetId(), sal_True ); //CHINA001 pTheme->SetId( aDlg.GetId(), sal_True );
500cdf0e10cSrcweir delete aDlg; //add CHINA001
501cdf0e10cSrcweir }
502cdf0e10cSrcweir }
503cdf0e10cSrcweir
504cdf0e10cSrcweir mpGallery->ReleaseTheme( pTheme, *this );
505cdf0e10cSrcweir }
506cdf0e10cSrcweir break;
507cdf0e10cSrcweir
508cdf0e10cSrcweir case( MN_PROPERTIES ):
509cdf0e10cSrcweir {
510cdf0e10cSrcweir ImplGalleryThemeProperties( GetSelectedTheme(), false );
511cdf0e10cSrcweir }
512cdf0e10cSrcweir break;
513cdf0e10cSrcweir }
514cdf0e10cSrcweir }
515cdf0e10cSrcweir
516cdf0e10cSrcweir // -----------------------------------------------------------------------------
517cdf0e10cSrcweir
Resize()518cdf0e10cSrcweir void GalleryBrowser1::Resize()
519cdf0e10cSrcweir {
520cdf0e10cSrcweir Control::Resize();
521cdf0e10cSrcweir ImplAdjustControls();
522cdf0e10cSrcweir }
523cdf0e10cSrcweir
524cdf0e10cSrcweir // -----------------------------------------------------------------------------
525cdf0e10cSrcweir
GetFocus()526cdf0e10cSrcweir void GalleryBrowser1::GetFocus()
527cdf0e10cSrcweir {
528cdf0e10cSrcweir Control::GetFocus();
529cdf0e10cSrcweir if( mpThemes )
530cdf0e10cSrcweir mpThemes->GrabFocus();
531cdf0e10cSrcweir }
532cdf0e10cSrcweir
533cdf0e10cSrcweir // -----------------------------------------------------------------------------
534cdf0e10cSrcweir
Notify(SfxBroadcaster &,const SfxHint & rHint)535cdf0e10cSrcweir void GalleryBrowser1::Notify( SfxBroadcaster&, const SfxHint& rHint )
536cdf0e10cSrcweir {
537cdf0e10cSrcweir const GalleryHint& rGalleryHint = (const GalleryHint&) rHint;
538cdf0e10cSrcweir
539cdf0e10cSrcweir switch( rGalleryHint.GetType() )
540cdf0e10cSrcweir {
541cdf0e10cSrcweir case( GALLERY_HINT_THEME_CREATED ):
542cdf0e10cSrcweir ImplInsertThemeEntry( mpGallery->GetThemeInfo( rGalleryHint.GetThemeName() ) );
543cdf0e10cSrcweir break;
544cdf0e10cSrcweir
545cdf0e10cSrcweir case( GALLERY_HINT_THEME_RENAMED ):
546cdf0e10cSrcweir {
547cdf0e10cSrcweir const sal_uInt16 nCurSelectPos = mpThemes->GetSelectEntryPos();
548cdf0e10cSrcweir const sal_uInt16 nRenameEntryPos = mpThemes->GetEntryPos( rGalleryHint.GetThemeName() );
549cdf0e10cSrcweir
550cdf0e10cSrcweir mpThemes->RemoveEntry( rGalleryHint.GetThemeName() );
551cdf0e10cSrcweir ImplInsertThemeEntry( mpGallery->GetThemeInfo( rGalleryHint.GetStringData() ) );
552cdf0e10cSrcweir
553cdf0e10cSrcweir if( nCurSelectPos == nRenameEntryPos )
554cdf0e10cSrcweir {
555cdf0e10cSrcweir mpThemes->SelectEntry( rGalleryHint.GetStringData() );
556cdf0e10cSrcweir SelectThemeHdl( NULL );
557cdf0e10cSrcweir }
558cdf0e10cSrcweir }
559cdf0e10cSrcweir break;
560cdf0e10cSrcweir
561cdf0e10cSrcweir case( GALLERY_HINT_THEME_REMOVED ):
562cdf0e10cSrcweir {
563cdf0e10cSrcweir mpThemes->RemoveEntry( rGalleryHint.GetThemeName() );
564cdf0e10cSrcweir }
565cdf0e10cSrcweir break;
566cdf0e10cSrcweir
567cdf0e10cSrcweir case( GALLERY_HINT_CLOSE_THEME ):
568cdf0e10cSrcweir {
569cdf0e10cSrcweir const sal_uInt16 nCurSelectPos = mpThemes->GetSelectEntryPos();
570cdf0e10cSrcweir const sal_uInt16 nCloseEntryPos = mpThemes->GetEntryPos( rGalleryHint.GetThemeName() );
571cdf0e10cSrcweir
572cdf0e10cSrcweir if( nCurSelectPos == nCloseEntryPos )
573cdf0e10cSrcweir {
574cdf0e10cSrcweir if( nCurSelectPos < ( mpThemes->GetEntryCount() - 1 ) )
575cdf0e10cSrcweir mpThemes->SelectEntryPos( nCurSelectPos + 1 );
576cdf0e10cSrcweir else if( nCurSelectPos )
577cdf0e10cSrcweir mpThemes->SelectEntryPos( nCurSelectPos - 1 );
578cdf0e10cSrcweir else
579cdf0e10cSrcweir mpThemes->SetNoSelection();
580cdf0e10cSrcweir
581cdf0e10cSrcweir SelectThemeHdl( NULL );
582cdf0e10cSrcweir }
583cdf0e10cSrcweir }
584cdf0e10cSrcweir break;
585cdf0e10cSrcweir
586cdf0e10cSrcweir default:
587cdf0e10cSrcweir break;
588cdf0e10cSrcweir }
589cdf0e10cSrcweir }
590cdf0e10cSrcweir
591cdf0e10cSrcweir // -----------------------------------------------------------------------------
592cdf0e10cSrcweir
ShowContextMenu()593cdf0e10cSrcweir void GalleryBrowser1::ShowContextMenu()
594cdf0e10cSrcweir {
595cdf0e10cSrcweir Application::PostUserEvent( LINK( this, GalleryBrowser1, ShowContextMenuHdl ), this );
596cdf0e10cSrcweir }
597cdf0e10cSrcweir
598cdf0e10cSrcweir // -----------------------------------------------------------------------------
599cdf0e10cSrcweir
KeyInput(const KeyEvent & rKEvt,Window * pWindow)600cdf0e10cSrcweir sal_Bool GalleryBrowser1::KeyInput( const KeyEvent& rKEvt, Window* pWindow )
601cdf0e10cSrcweir {
602*02c50d82SAndre Fischer sal_Bool bRet (sal_False);
603*02c50d82SAndre Fischer if (maKeyInputHandler)
604*02c50d82SAndre Fischer bRet = maKeyInputHandler(rKEvt, pWindow);
605cdf0e10cSrcweir
606cdf0e10cSrcweir if( !bRet )
607cdf0e10cSrcweir {
608cdf0e10cSrcweir ::std::vector< sal_uInt16 > aExecVector;
609cdf0e10cSrcweir ImplGetExecuteVector(aExecVector);
610cdf0e10cSrcweir sal_uInt16 nExecuteId = 0;
611cdf0e10cSrcweir sal_Bool bMod1 = rKEvt.GetKeyCode().IsMod1();
612cdf0e10cSrcweir
613cdf0e10cSrcweir switch( rKEvt.GetKeyCode().GetCode() )
614cdf0e10cSrcweir {
615cdf0e10cSrcweir case( KEY_INSERT ):
616cdf0e10cSrcweir ClickNewThemeHdl( NULL );
617cdf0e10cSrcweir break;
618cdf0e10cSrcweir
619cdf0e10cSrcweir case( KEY_I ):
620cdf0e10cSrcweir {
621cdf0e10cSrcweir if( bMod1 )
622cdf0e10cSrcweir ClickNewThemeHdl( NULL );
623cdf0e10cSrcweir }
624cdf0e10cSrcweir break;
625cdf0e10cSrcweir
626cdf0e10cSrcweir case( KEY_U ):
627cdf0e10cSrcweir {
628cdf0e10cSrcweir if( bMod1 )
629cdf0e10cSrcweir nExecuteId = MN_ACTUALIZE;
630cdf0e10cSrcweir }
631cdf0e10cSrcweir break;
632cdf0e10cSrcweir
633cdf0e10cSrcweir case( KEY_DELETE ):
634cdf0e10cSrcweir nExecuteId = MN_DELETE;
635cdf0e10cSrcweir break;
636cdf0e10cSrcweir
637cdf0e10cSrcweir case( KEY_D ):
638cdf0e10cSrcweir {
639cdf0e10cSrcweir if( bMod1 )
640cdf0e10cSrcweir nExecuteId = MN_DELETE;
641cdf0e10cSrcweir }
642cdf0e10cSrcweir break;
643cdf0e10cSrcweir
644cdf0e10cSrcweir case( KEY_R ):
645cdf0e10cSrcweir {
646cdf0e10cSrcweir if( bMod1 )
647cdf0e10cSrcweir nExecuteId = MN_RENAME;
648cdf0e10cSrcweir }
649cdf0e10cSrcweir break;
650cdf0e10cSrcweir
651cdf0e10cSrcweir case( KEY_RETURN ):
652cdf0e10cSrcweir {
653cdf0e10cSrcweir if( bMod1 )
654cdf0e10cSrcweir nExecuteId = MN_PROPERTIES;
655cdf0e10cSrcweir }
656cdf0e10cSrcweir break;
657cdf0e10cSrcweir }
658cdf0e10cSrcweir
659cdf0e10cSrcweir if( nExecuteId && ( ::std::find( aExecVector.begin(), aExecVector.end(), nExecuteId ) != aExecVector.end() ) )
660cdf0e10cSrcweir {
661cdf0e10cSrcweir ImplExecute( nExecuteId );
662cdf0e10cSrcweir bRet = sal_True;
663cdf0e10cSrcweir }
664cdf0e10cSrcweir }
665cdf0e10cSrcweir
666cdf0e10cSrcweir return bRet;
667cdf0e10cSrcweir }
668cdf0e10cSrcweir
669cdf0e10cSrcweir // -----------------------------------------------------------------------------
670cdf0e10cSrcweir
IMPL_LINK(GalleryBrowser1,ShowContextMenuHdl,void *,EMPTYARG)671cdf0e10cSrcweir IMPL_LINK( GalleryBrowser1, ShowContextMenuHdl, void*, EMPTYARG )
672cdf0e10cSrcweir {
673cdf0e10cSrcweir ::std::vector< sal_uInt16 > aExecVector;
674cdf0e10cSrcweir ImplGetExecuteVector(aExecVector);
675cdf0e10cSrcweir
676cdf0e10cSrcweir if( !aExecVector.empty() )
677cdf0e10cSrcweir {
678cdf0e10cSrcweir PopupMenu aMenu( GAL_RESID( RID_SVXMN_GALLERY1 ) );
679cdf0e10cSrcweir
680cdf0e10cSrcweir aMenu.EnableItem( MN_ACTUALIZE, ::std::find( aExecVector.begin(), aExecVector.end(), MN_ACTUALIZE ) != aExecVector.end() );
681cdf0e10cSrcweir aMenu.EnableItem( MN_RENAME, ::std::find( aExecVector.begin(), aExecVector.end(), MN_RENAME ) != aExecVector.end() );
682cdf0e10cSrcweir aMenu.EnableItem( MN_DELETE, ::std::find( aExecVector.begin(), aExecVector.end(), MN_DELETE ) != aExecVector.end() );
683cdf0e10cSrcweir aMenu.EnableItem( MN_ASSIGN_ID, ::std::find( aExecVector.begin(), aExecVector.end(), MN_ASSIGN_ID ) != aExecVector.end() );
684cdf0e10cSrcweir aMenu.EnableItem( MN_PROPERTIES, ::std::find( aExecVector.begin(), aExecVector.end(), MN_PROPERTIES ) != aExecVector.end() );
685cdf0e10cSrcweir aMenu.SetSelectHdl( LINK( this, GalleryBrowser1, PopupMenuHdl ) );
686cdf0e10cSrcweir aMenu.RemoveDisabledEntries();
687cdf0e10cSrcweir
688cdf0e10cSrcweir const Rectangle aThemesRect( mpThemes->GetPosPixel(), mpThemes->GetOutputSizePixel() );
689cdf0e10cSrcweir Point aSelPos( mpThemes->GetBoundingRectangle( mpThemes->GetSelectEntryPos() ).Center() );
690cdf0e10cSrcweir
691cdf0e10cSrcweir aSelPos.X() = Max( Min( aSelPos.X(), aThemesRect.Right() ), aThemesRect.Left() );
692cdf0e10cSrcweir aSelPos.Y() = Max( Min( aSelPos.Y(), aThemesRect.Bottom() ), aThemesRect.Top() );
693cdf0e10cSrcweir
694cdf0e10cSrcweir aMenu.Execute( this, aSelPos );
695cdf0e10cSrcweir }
696cdf0e10cSrcweir
697cdf0e10cSrcweir return 0L;
698cdf0e10cSrcweir }
699cdf0e10cSrcweir
700cdf0e10cSrcweir // -----------------------------------------------------------------------------
701cdf0e10cSrcweir
IMPL_LINK(GalleryBrowser1,PopupMenuHdl,Menu *,pMenu)702cdf0e10cSrcweir IMPL_LINK( GalleryBrowser1, PopupMenuHdl, Menu*, pMenu )
703cdf0e10cSrcweir {
704cdf0e10cSrcweir ImplExecute( pMenu->GetCurItemId() );
705cdf0e10cSrcweir return 0L;
706cdf0e10cSrcweir }
707cdf0e10cSrcweir
708cdf0e10cSrcweir // -----------------------------------------------------------------------------
709cdf0e10cSrcweir
IMPL_LINK(GalleryBrowser1,SelectThemeHdl,void *,EMPTYARG)710cdf0e10cSrcweir IMPL_LINK( GalleryBrowser1, SelectThemeHdl, void*, EMPTYARG )
711cdf0e10cSrcweir {
712*02c50d82SAndre Fischer if (maThemeSlectionHandler)
713*02c50d82SAndre Fischer maThemeSlectionHandler();
714cdf0e10cSrcweir return 0L;
715cdf0e10cSrcweir }
716cdf0e10cSrcweir
717cdf0e10cSrcweir // -----------------------------------------------------------------------------
718cdf0e10cSrcweir
IMPL_LINK(GalleryBrowser1,ClickNewThemeHdl,void *,EMPTYARG)719cdf0e10cSrcweir IMPL_LINK( GalleryBrowser1, ClickNewThemeHdl, void*, EMPTYARG )
720cdf0e10cSrcweir {
721cdf0e10cSrcweir String aNewTheme( GAL_RESID( RID_SVXSTR_GALLERY_NEWTHEME ) );
722cdf0e10cSrcweir String aName( aNewTheme );
723cdf0e10cSrcweir sal_uIntPtr nCount = 0;
724cdf0e10cSrcweir
725cdf0e10cSrcweir while( mpGallery->HasTheme( aName ) && ( nCount++ < 16000 ) )
726cdf0e10cSrcweir {
727cdf0e10cSrcweir aName = aNewTheme;
728cdf0e10cSrcweir aName += ' ';
729cdf0e10cSrcweir aName += String::CreateFromInt32( nCount );
730cdf0e10cSrcweir }
731cdf0e10cSrcweir
732cdf0e10cSrcweir if( !mpGallery->HasTheme( aName ) && mpGallery->CreateTheme( aName ) )
733cdf0e10cSrcweir {
734cdf0e10cSrcweir ImplGalleryThemeProperties( aName, true );
735cdf0e10cSrcweir }
736cdf0e10cSrcweir
737cdf0e10cSrcweir return 0L;
738cdf0e10cSrcweir }
739cdf0e10cSrcweir
740