1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef _CUI_GALDLG_HXX_ 25 #define _CUI_GALDLG_HXX_ 26 27 #include <vos/thread.hxx> 28 #include <vcl/dialog.hxx> 29 #include <vcl/graph.hxx> 30 #include <vcl/fixed.hxx> 31 #include <vcl/button.hxx> 32 #include <vcl/lstbox.hxx> 33 #include <vcl/menu.hxx> 34 #include <vcl/edit.hxx> 35 #include <vcl/combobox.hxx> 36 #include <svl/slstitm.hxx> 37 #include <svtools/transfer.hxx> 38 #include <svtools/grfmgr.hxx> 39 #include <sfx2/tabdlg.hxx> 40 #include <svx/galctrl.hxx> 41 #include <svx/galmisc.hxx> 42 #include <com/sun/star/media/XPlayer.hpp> 43 #include <com/sun/star/ui/dialogs/XFolderPicker.hpp> 44 #include <svtools/dialogclosedlistener.hxx> 45 46 DECLARE_LIST( StringList, String* ) 47 48 // ------------ 49 // - Forwards - 50 // ------------ 51 52 class Gallery; 53 class GalleryTheme; 54 class SearchProgress; 55 class TakeProgress; 56 class TPGalleryThemeProperties; 57 58 // --------------- 59 // - FilterEntry - 60 // --------------- 61 62 struct FilterEntry 63 { 64 String aFilterName; 65 }; 66 67 // ---------------- 68 // - SearchThread - 69 // ---------------- 70 71 class SearchThread : public ::vos::OThread 72 { 73 private: 74 75 SearchProgress* mpProgress; 76 TPGalleryThemeProperties* mpBrowser; 77 INetURLObject maStartURL; 78 79 void ImplSearch( const INetURLObject& rStartURL, 80 const ::std::vector< String >& rFormats, 81 sal_Bool bRecursive ); 82 83 virtual void SAL_CALL run(); 84 virtual void SAL_CALL onTerminated(); 85 86 public: 87 88 SearchThread( SearchProgress* pProgess, 89 TPGalleryThemeProperties* pBrowser, 90 const INetURLObject& rStartURL ); 91 virtual ~SearchThread(); 92 }; 93 94 // ------------------ 95 // - SearchProgress - 96 // ------------------ 97 98 class SearchProgress : public ModalDialog 99 { 100 private: 101 102 FixedText aFtSearchDir; 103 FixedLine aFLSearchDir; 104 FixedText aFtSearchType; 105 FixedLine aFLSearchType; 106 CancelButton aBtnCancel; 107 SearchThread maSearchThread; 108 109 DECL_LINK( ClickCancelBtn, void* ); 110 void Terminate(); 111 112 public: 113 SearchProgress( Window* pParent, const INetURLObject& rStartURL ); ~SearchProgress()114 ~SearchProgress() {}; 115 116 DECL_LINK( CleanUpHdl, void* ); 117 118 virtual short Execute(); 119 virtual void StartExecuteModal( const Link& rEndDialogHdl ); SetFileType(const String & rType)120 void SetFileType( const String& rType ) { aFtSearchType.SetText( rType ); } SetDirectory(const INetURLObject & rURL)121 void SetDirectory( const INetURLObject& rURL ) { aFtSearchDir.SetText( GetReducedString( rURL, 30 ) ); } 122 }; 123 124 // -------------- 125 // - TakeThread - 126 // -------------- 127 128 class TakeThread : public ::vos::OThread 129 { 130 private: 131 132 TakeProgress* mpProgress; 133 TPGalleryThemeProperties* mpBrowser; 134 List& mrTakenList; 135 136 virtual void SAL_CALL run(); 137 virtual void SAL_CALL onTerminated(); 138 139 public: 140 141 TakeThread( TakeProgress* pProgess, TPGalleryThemeProperties* pBrowser, List& rTakenList ); 142 virtual ~TakeThread(); 143 }; 144 145 // ---------------- 146 // - TakeProgress - 147 // ---------------- 148 149 class TakeProgress : public ModalDialog 150 { 151 private: 152 153 FixedText aFtTakeFile; 154 FixedLine aFLTakeProgress; 155 CancelButton aBtnCancel; 156 TakeThread maTakeThread; 157 List maTakenList; 158 159 DECL_LINK( ClickCancelBtn, void* ); 160 void Terminate(); 161 162 public: 163 164 TakeProgress( Window* pWindow ); ~TakeProgress()165 ~TakeProgress() {}; 166 167 DECL_LINK( CleanUpHdl, void* ); 168 SetFile(const INetURLObject & rURL)169 void SetFile( const INetURLObject& rURL ) { aFtTakeFile.SetText( GetReducedString( rURL, 30 ) ); } 170 virtual short Execute(); 171 virtual void StartExecuteModal( const Link& rEndDialogHdl ); 172 }; 173 174 // --------------------- 175 // - ActualizeProgress - 176 // --------------------- 177 178 class ActualizeProgress : public ModalDialog 179 { 180 private: 181 182 FixedText aFtActualizeFile; 183 FixedLine aFLActualizeProgress; 184 CancelButton aBtnCancel; 185 Timer* pTimer; 186 GalleryTheme* pTheme; 187 GalleryProgress aStatusProgress; 188 189 DECL_LINK( ClickCancelBtn, void* ); 190 DECL_LINK( TimeoutHdl, Timer* ); 191 DECL_LINK( ActualizeHdl, INetURLObject* pURL ); 192 193 public: 194 ActualizeProgress( Window* pWindow, GalleryTheme* pThm ); ~ActualizeProgress()195 ~ActualizeProgress() {}; 196 197 virtual short Execute(); 198 }; 199 200 // --------------- 201 // - TitleDialog - 202 // --------------- 203 204 class TitleDialog : public ModalDialog 205 { 206 private: 207 208 OKButton maOk; 209 CancelButton maCancel; 210 HelpButton maHelp; 211 FixedLine maFL; 212 Edit maEdit; 213 214 public: 215 216 TitleDialog( Window* pParent, const String& rOldText ); GetTitle() const217 String GetTitle() const { return maEdit.GetText(); } 218 }; 219 220 // ------------------- 221 // - GalleryIdDialog - 222 // ------------------- 223 224 class GalleryIdDialog : public ModalDialog 225 { 226 private: 227 228 OKButton aBtnOk; 229 CancelButton aBtnCancel; 230 FixedLine aFLId; 231 ListBox aLbResName; 232 GalleryTheme* pThm; 233 234 DECL_LINK( ClickOkHdl, void* ); 235 DECL_LINK( ClickResNameHdl, void* ); 236 237 public: 238 239 GalleryIdDialog( Window* pParent, GalleryTheme* pThm ); ~GalleryIdDialog()240 ~GalleryIdDialog() {} 241 GetId() const242 sal_uLong GetId() const { return aLbResName.GetSelectEntryPos(); } 243 }; 244 245 // -------------------------- 246 // - GalleryThemeProperties - 247 // -------------------------- 248 249 class GalleryThemeProperties : public SfxTabDialog 250 { 251 ExchangeData* pData; 252 253 virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage ); 254 255 public: 256 257 GalleryThemeProperties( Window* pParent, ExchangeData* pData, SfxItemSet* pItemSet ); ~GalleryThemeProperties()258 ~GalleryThemeProperties() {} 259 }; 260 261 // ------------------------- 262 // - TPGalleryThemeGeneral - 263 // ------------------------- 264 265 class TPGalleryThemeGeneral : public SfxTabPage 266 { 267 private: 268 269 FixedImage aFiMSImage; 270 Edit aEdtMSName; 271 FixedLine aFlMSGeneralFirst; 272 FixedText aFtMSType; 273 FixedText aFtMSShowType; 274 FixedText aFtMSPath; 275 FixedText aFtMSShowPath; 276 FixedText aFtMSContent; 277 FixedText aFtMSShowContent; 278 FixedLine aFlMSGeneralSecond; 279 FixedText aFtMSChangeDate; 280 FixedText aFtMSShowChangeDate; 281 ExchangeData* pData; 282 Reset(const SfxItemSet &)283 virtual void Reset( const SfxItemSet& ) {} 284 virtual sal_Bool FillItemSet( SfxItemSet& rSet ); 285 286 287 public: 288 289 TPGalleryThemeGeneral( Window* pParent, const SfxItemSet& rSet ); ~TPGalleryThemeGeneral()290 ~TPGalleryThemeGeneral() {} 291 292 void SetXChgData( ExchangeData* pData ); GetXChgData() const293 const ExchangeData* GetXChgData() const { return pData; } 294 295 static SfxTabPage* Create( Window* pParent, const SfxItemSet& rSet ); 296 }; 297 298 // ---------------------------- 299 // - TPGalleryThemeProperties - 300 // ---------------------------- 301 302 class TPGalleryThemeProperties : public SfxTabPage 303 { 304 friend class SearchThread; 305 friend class TakeProgress; 306 friend class TakeThread; 307 308 FixedText aFtFileType; 309 ComboBox aCbbFileType; 310 MultiListBox aLbxFound; 311 PushButton aBtnSearch; 312 PushButton aBtnTake; 313 PushButton aBtnTakeAll; 314 CheckBox aCbxPreview; 315 GalleryPreview aWndPreview; 316 317 ExchangeData* pData; 318 StringList aFoundList; 319 List aFilterEntryList; 320 Timer aPreviewTimer; 321 String aLastFilterName; 322 String aPreviewString; 323 INetURLObject aURL; 324 sal_uInt16 nCurFilterPos; 325 sal_uInt16 nFirstExtFilterPos; 326 sal_Bool bEntriesFound; 327 sal_Bool bInputAllowed; 328 sal_Bool bTakeAll; 329 sal_Bool bSearchRecursive; 330 331 ::com::sun::star::uno::Reference< ::svt::DialogClosedListener > xDialogListener; 332 ::com::sun::star::uno::Reference< ::com::sun::star::media::XPlayer > xMediaPlayer; 333 ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFolderPicker > xFolderPicker; 334 Reset(const SfxItemSet &)335 virtual void Reset( const SfxItemSet& /*rSet*/ ) {} FillItemSet(SfxItemSet &)336 virtual sal_Bool FillItemSet( SfxItemSet& /*rSet*/ ) { return sal_True; } 337 ::rtl::OUString addExtension( const ::rtl::OUString&, const ::rtl::OUString& ); 338 void FillFilterList(); 339 340 void SearchFiles(); 341 void TakeFiles(); 342 void DoPreview(); 343 344 DECL_LINK( ClickPreviewHdl, void* ); 345 DECL_LINK( ClickCloseBrowserHdl, void* ); 346 DECL_LINK( ClickSearchHdl, void* ); 347 DECL_LINK( ClickTakeHdl, void* ); 348 DECL_LINK( ClickTakeAllHdl, void* ); 349 DECL_LINK( SelectFoundHdl, void* ); 350 DECL_LINK( SelectThemeHdl, void* ); 351 DECL_LINK( SelectFileTypeHdl, void* ); 352 DECL_LINK( DClickFoundHdl, void* ); 353 DECL_LINK( PreviewTimerHdl, void* ); 354 DECL_LINK( EndSearchProgressHdl, SearchProgress* ); 355 DECL_LINK( DialogClosedHdl, ::com::sun::star::ui::dialogs::DialogClosedEvent* ); 356 357 public: 358 TPGalleryThemeProperties( Window* pWindow, const SfxItemSet& rSet ); 359 ~TPGalleryThemeProperties(); 360 361 void SetXChgData( ExchangeData* pData ); GetXChgData() const362 const ExchangeData* GetXChgData() const { return pData; } 363 364 void StartSearchFiles( const String& _rFolderURL, short _nDlgResult ); 365 366 static SfxTabPage* Create( Window* pParent, const SfxItemSet& rSet ); 367 }; 368 369 #endif // _CUI_GALDLG_HXX_ 370