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 _SVX_DOCRECOVERY_HXX 25 #define _SVX_DOCRECOVERY_HXX 26 27 #include <vcl/tabpage.hxx> 28 #ifndef _SV_TABDIALOG_HXX 29 #include <vcl/tabdlg.hxx> 30 #endif 31 #include <vcl/dialog.hxx> 32 #ifndef _SV_BUTTON_HXX 33 #include <vcl/button.hxx> 34 #endif 35 #include <vcl/fixed.hxx> 36 #include <svtools/svmedit2.hxx> 37 #include <svtools/svtreebx.hxx> 38 #include <svx/simptabl.hxx> 39 40 #include <cppuhelper/implbase1.hxx> 41 #include <cppuhelper/implbase2.hxx> 42 #include <com/sun/star/task/XStatusIndicatorFactory.hpp> 43 #include <com/sun/star/frame/XStatusListener.hpp> 44 #include <com/sun/star/frame/XDispatch.hpp> 45 #include <com/sun/star/lang/XComponent.hpp> 46 47 //=============================================== 48 // const 49 50 #define RECOVERY_CMDPART_PROTOCOL ::rtl::OUString::createFromAscii("vnd.sun.star.autorecovery:") 51 52 #define RECOVERY_CMDPART_DO_PREPARE_EMERGENCY_SAVE ::rtl::OUString::createFromAscii("/doPrepareEmergencySave" ) 53 #define RECOVERY_CMDPART_DO_EMERGENCY_SAVE ::rtl::OUString::createFromAscii("/doEmergencySave" ) 54 #define RECOVERY_CMDPART_DO_RECOVERY ::rtl::OUString::createFromAscii("/doAutoRecovery" ) 55 #define RECOVERY_CMDPART_DO_CRASHREPORT ::rtl::OUString::createFromAscii("/doCrashReport" ) 56 #define RECOVERY_CMDPART_DO_ENTRY_BACKUP ::rtl::OUString::createFromAscii("/doEntryBackup" ) 57 #define RECOVERY_CMDPART_DO_ENTRY_CLEANUP ::rtl::OUString::createFromAscii("/doEntryCleanUp" ) 58 59 #define RECOVERY_CMD_DO_PREPARE_EMERGENCY_SAVE ::rtl::OUString::createFromAscii("vnd.sun.star.autorecovery:/doPrepareEmergencySave") 60 #define RECOVERY_CMD_DO_EMERGENCY_SAVE ::rtl::OUString::createFromAscii("vnd.sun.star.autorecovery:/doEmergencySave" ) 61 #define RECOVERY_CMD_DO_RECOVERY ::rtl::OUString::createFromAscii("vnd.sun.star.autorecovery:/doAutoRecovery" ) 62 #define RECOVERY_CMD_DO_CRASHREPORT ::rtl::OUString::createFromAscii("vnd.sun.star.autorecovery:/doCrashReport" ) 63 #define RECOVERY_CMD_DO_ENTRY_BACKUP ::rtl::OUString::createFromAscii("vnd.sun.star.autorecovery:/doEntryBackup" ) 64 #define RECOVERY_CMD_DO_ENTRY_CLEANUP ::rtl::OUString::createFromAscii("vnd.sun.star.autorecovery:/doEntryCleanUp" ) 65 66 #define SERVICENAME_PROGRESSFACTORY ::rtl::OUString::createFromAscii("com.sun.star.task.StatusIndicatorFactory") 67 #define SERVICENAME_URLTRANSFORMER ::rtl::OUString::createFromAscii("com.sun.star.util.URLTransformer" ) 68 #define SERVICENAME_RECOVERYCORE ::rtl::OUString::createFromAscii("com.sun.star.frame.AutoRecovery" ) 69 #define SERVICENAME_FOLDERPICKER ::rtl::OUString::createFromAscii("com.sun.star.ui.dialogs.FolderPicker" ) 70 #define SERVICENAME_DESKTOP ::rtl::OUString::createFromAscii("com.sun.star.frame.Desktop" ) 71 72 #define PROP_PARENTWINDOW ::rtl::OUString::createFromAscii("Window" ) 73 #define PROP_STATUSINDICATOR ::rtl::OUString::createFromAscii("StatusIndicator" ) 74 #define PROP_DISPATCHASYNCHRON ::rtl::OUString::createFromAscii("DispatchAsynchron") 75 #define PROP_SAVEPATH ::rtl::OUString::createFromAscii("SavePath" ) 76 #define PROP_ENTRYID ::rtl::OUString::createFromAscii("EntryID" ) 77 #define PROP_ALLOWPARENTSHOW ::rtl::OUString::createFromAscii("AllowParentShow" ) 78 79 #define STATEPROP_ID ::rtl::OUString::createFromAscii("ID" ) 80 #define STATEPROP_STATE ::rtl::OUString::createFromAscii("DocumentState") 81 #define STATEPROP_ORGURL ::rtl::OUString::createFromAscii("OriginalURL" ) 82 #define STATEPROP_TEMPURL ::rtl::OUString::createFromAscii("TempURL" ) 83 #define STATEPROP_FACTORYURL ::rtl::OUString::createFromAscii("FactoryURL" ) 84 #define STATEPROP_TEMPLATEURL ::rtl::OUString::createFromAscii("TemplateURL" ) 85 #define STATEPROP_TITLE ::rtl::OUString::createFromAscii("Title" ) 86 #define STATEPROP_MODULE ::rtl::OUString::createFromAscii("Module" ) 87 88 #define RECOVERY_OPERATIONSTATE_START ::rtl::OUString::createFromAscii("start" ) 89 #define RECOVERY_OPERATIONSTATE_STOP ::rtl::OUString::createFromAscii("stop" ) 90 #define RECOVERY_OPERATIONSTATE_UPDATE ::rtl::OUString::createFromAscii("update") 91 92 #define DLG_RET_UNKNOWN -1 93 #define DLG_RET_OK 1 94 #define DLG_RET_CANCEL 0 95 #define DLG_RET_BACK 100 96 #define DLG_RET_OK_AUTOLUNCH 101 97 98 //=============================================== 99 // namespace 100 101 namespace svx{ 102 namespace DocRecovery{ 103 104 #ifdef css 105 # error "Who uses css? I need it as temp. namespace alias!" 106 #else 107 # define css ::com::sun::star 108 #endif 109 110 //=============================================== 111 enum EDocStates 112 { 113 /* TEMP STATES */ 114 115 /// default state, if a document was new created or loaded 116 E_UNKNOWN = 0, 117 /// modified against the original file 118 E_MODIFIED = 1, 119 /// an active document can be postponed to be saved later. 120 E_POSTPONED = 2, 121 /// was already handled during one AutoSave/Recovery session. 122 E_HANDLED = 4, 123 /** an action was started (saving/loading) ... Can be interesting later if the process may be was interrupted by an exception. */ 124 E_TRY_SAVE = 8, 125 E_TRY_LOAD_BACKUP = 16, 126 E_TRY_LOAD_ORIGINAL = 32, 127 128 /* FINAL STATES */ 129 130 /// the Auto/Emergency saved document isn't useable any longer 131 E_DAMAGED = 64, 132 /// the Auto/Emergency saved document isn't really up-to-date (some changes can be missing) 133 E_INCOMPLETE = 128, 134 /// the Auto/Emergency saved document was processed successfully 135 E_SUCCEDED = 512 136 }; 137 138 //=============================================== 139 enum ERecoveryState 140 { 141 E_SUCCESSFULLY_RECOVERED, 142 E_ORIGINAL_DOCUMENT_RECOVERED, 143 E_RECOVERY_FAILED, 144 E_RECOVERY_IS_IN_PROGRESS, 145 E_NOT_RECOVERED_YET 146 }; 147 148 //=============================================== 149 struct TURLInfo 150 { 151 public: 152 153 /// unique ID, which is specified by the underlying autorecovery core! 154 sal_Int32 ID; 155 156 /// the full qualified document URL 157 ::rtl::OUString OrgURL; 158 159 /// the full qualified URL of the temp. file (if it's exists) 160 ::rtl::OUString TempURL; 161 162 /// a may be existing factory URL (e.g. for untitled documents) 163 ::rtl::OUString FactoryURL; 164 165 /// may be the document base on a template file !? 166 ::rtl::OUString TemplateURL; 167 168 /// the pure file name, without path, disc etcpp. 169 ::rtl::OUString DisplayName; 170 171 /// the application module, where this document was loaded 172 ::rtl::OUString Module; 173 174 /// state info as e.g. VALID, CORRUPTED, NON EXISTING ... 175 sal_Int32 DocState; 176 177 /// ui representation for DocState! 178 ERecoveryState RecoveryState; 179 180 /// standard icon 181 Image StandardImage; 182 183 /// high contrast icon 184 Image HCImage; 185 186 public: 187 TURLInfosvx::DocRecovery::TURLInfo188 TURLInfo() 189 : ID (-1 ) 190 , DocState (E_UNKNOWN ) 191 , RecoveryState(E_NOT_RECOVERED_YET) 192 {} 193 }; 194 195 //=============================================== 196 typedef ::std::vector< TURLInfo > TURLList; 197 198 //=============================================== 199 class IRecoveryUpdateListener 200 { 201 public: 202 203 // inform listener about changed items, which should be refreshed 204 virtual void updateItems() = 0; 205 206 // inform listener about starting of the asynchronous recovery operation 207 virtual void start() = 0; 208 209 // inform listener about ending of the asynchronous recovery operation 210 virtual void end() = 0; 211 212 // TODO 213 virtual void stepNext(TURLInfo* pItem) = 0; 214 }; 215 216 //=============================================== 217 class RecoveryCore : public ::cppu::WeakImplHelper1< css::frame::XStatusListener > 218 { 219 //------------------------------------------- 220 // types, const 221 public: 222 223 //------------------------------------------- 224 // member 225 private: 226 227 /// TODO 228 css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR; 229 230 /// TODO 231 css::uno::Reference< css::frame::XDispatch > m_xRealCore; 232 233 /// TODO 234 css::uno::Reference< css::task::XStatusIndicator > m_xProgress; 235 236 /// TODO 237 TURLList m_lURLs; 238 239 /// TODO 240 IRecoveryUpdateListener* m_pListener; 241 242 /** @short knows the reason, why we listen on our internal m_xRealCore 243 member. 244 245 @descr Because we listen for different operations 246 on the core dispatch implementation, we must know, 247 which URL we have to use for deregistration! 248 */ 249 sal_Bool m_bListenForSaving; 250 251 //------------------------------------------- 252 // native interface 253 public: 254 255 //--------------------------------------- 256 /** @short TODO */ 257 RecoveryCore(const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR , 258 sal_Bool bUsedForSaving); 259 260 //--------------------------------------- 261 /** @short TODO */ 262 virtual ~RecoveryCore(); 263 264 //--------------------------------------- 265 /** @short TODO */ 266 virtual css::uno::Reference< css::lang::XMultiServiceFactory > getSMGR(); 267 268 //--------------------------------------- 269 /** @short TODO */ 270 virtual TURLList* getURLListAccess(); 271 272 //--------------------------------------- 273 /** @short TODO */ 274 virtual sal_Bool existsBrokenTempEntries(); 275 virtual sal_Bool existsNonRecoveredEntries(); 276 static sal_Bool isBrokenTempEntry(const TURLInfo& rInfo); 277 virtual void saveBrokenTempEntries(const ::rtl::OUString& sSaveDir); 278 virtual void saveAllTempEntries(const ::rtl::OUString& sSaveDir); 279 virtual void forgetBrokenTempEntries(); 280 virtual void forgetAllRecoveryEntries(); 281 void forgetBrokenRecoveryEntries(); 282 283 //--------------------------------------- 284 /** @short TODO */ 285 virtual void setProgressHandler(const css::uno::Reference< css::task::XStatusIndicator >& xProgress); 286 287 //--------------------------------------- 288 /** @short TODO */ 289 virtual void setUpdateListener(IRecoveryUpdateListener* pListener); 290 291 //--------------------------------------- 292 /** @short TODO */ 293 virtual void doEmergencySavePrepare(); 294 virtual void doEmergencySave(); 295 virtual void doRecovery(); 296 297 //--------------------------------------- 298 /** @short TODO */ 299 static ERecoveryState mapDocState2RecoverState(sal_Int32 eDocState); 300 301 //------------------------------------------- 302 // uno interface 303 public: 304 305 // css.frame.XStatusListener 306 virtual void SAL_CALL statusChanged(const css::frame::FeatureStateEvent& aEvent); 307 308 // css.lang.XEventListener 309 virtual void SAL_CALL disposing(const css::lang::EventObject& aEvent); 310 311 //------------------------------------------- 312 // helper 313 private: 314 315 //--------------------------------------- 316 /** @short starts listening on the internal EmergencySave/AutoRecovery core. 317 */ 318 void impl_startListening(); 319 320 //--------------------------------------- 321 /** @short stop listening on the internal EmergencySave/AutoRecovery core. 322 */ 323 void impl_stopListening(); 324 325 //--------------------------------------- 326 /** @short TODO */ 327 css::util::URL impl_getParsedURL(const ::rtl::OUString& sURL); 328 }; 329 330 //=============================================== 331 class PluginProgressWindow : public Window 332 { 333 private: 334 335 css::uno::Reference< css::lang::XComponent > m_xProgress; 336 337 public: 338 339 PluginProgressWindow( Window* pParent , 340 const css::uno::Reference< css::lang::XComponent >& xProgress); 341 ~PluginProgressWindow(); 342 }; 343 344 class PluginProgress : public ::cppu::WeakImplHelper2< css::task::XStatusIndicator , 345 css::lang::XComponent > 346 { 347 348 //------------------------------------------- 349 // member 350 private: 351 352 /** @short TODO */ 353 css::uno::Reference< css::task::XStatusIndicatorFactory > m_xProgressFactory; 354 355 css::uno::Reference< css::task::XStatusIndicator > m_xProgress; 356 357 PluginProgressWindow* m_pPlugProgressWindow; 358 359 //------------------------------------------- 360 // native interface 361 public: 362 363 //--------------------------------------- 364 /** @short TODO */ 365 PluginProgress( Window* pParent, 366 const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR ); 367 368 //--------------------------------------- 369 /** @short TODO */ 370 virtual ~PluginProgress(); 371 372 //--------------------------------------- 373 /** @short TODO */ 374 Window* getPlugWindow(); 375 376 //------------------------------------------- 377 // uno interface 378 public: 379 380 //--------------------------------------- 381 // XStatusIndicator 382 virtual void SAL_CALL start(const ::rtl::OUString& sText , 383 sal_Int32 nRange); 384 385 virtual void SAL_CALL end(); 386 387 virtual void SAL_CALL setText(const ::rtl::OUString& sText); 388 389 virtual void SAL_CALL setValue(sal_Int32 nValue); 390 391 virtual void SAL_CALL reset(); 392 393 //--------------------------------------- 394 // XComponent 395 virtual void SAL_CALL dispose(); 396 397 virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener >& xListener); 398 399 virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::lang::XEventListener >& xListener); 400 }; 401 402 //=============================================== 403 class IExtendedTabPage : public TabPage 404 { 405 //------------------------------------------- 406 // member 407 protected: 408 409 short m_nResult; 410 411 //------------------------------------------- 412 // interface 413 public: 414 IExtendedTabPage(Window * pParent,WinBits nStyle=0)415 IExtendedTabPage( Window* pParent, WinBits nStyle = 0 ) 416 : TabPage( pParent, nStyle ) 417 , m_nResult(DLG_RET_UNKNOWN) 418 {} 419 IExtendedTabPage(Window * pParent,const ResId & rResId)420 IExtendedTabPage( Window* pParent, const ResId& rResId ) 421 : TabPage( pParent, rResId ) 422 , m_nResult(DLG_RET_UNKNOWN) 423 {} 424 ~IExtendedTabPage()425 virtual ~IExtendedTabPage() 426 {} 427 428 virtual short execute() = 0; 429 virtual void setDefButton() = 0; 430 }; 431 432 typedef ::std::vector< IExtendedTabPage* > TTabPageList; 433 434 //=============================================== 435 class TabDialog4Recovery : public TabDialog 436 { 437 //------------------------------------------- 438 // member 439 private: 440 441 TTabPageList m_lTabPages; 442 TTabPageList::iterator m_pActualPage; 443 444 //------------------------------------------- 445 // interface 446 public: 447 448 TabDialog4Recovery(Window* pParent); 449 virtual ~TabDialog4Recovery(); 450 451 virtual void addTabPage(IExtendedTabPage* pPage); 452 virtual short Execute(); 453 }; 454 455 //=============================================== 456 class SaveDialog : public IExtendedTabPage 457 { 458 //------------------------------------------- 459 // member 460 private: 461 462 Window m_aTitleWin; 463 FixedText m_aTitleFT; 464 FixedLine m_aTitleFL; 465 FixedText m_aDescrFT; 466 FixedText m_aFileListFT; 467 ListBox m_aFileListLB; 468 FixedLine m_aBottomFL; 469 OKButton m_aOkBtn; 470 471 RecoveryCore* m_pCore; 472 473 //------------------------------------------- 474 // interface 475 public: 476 477 //--------------------------------------- 478 /** @short create all child controls of this dialog. 479 480 @descr The dialog isn't shown nor it starts any 481 action by itself! 482 483 @param pParent 484 can point to a parent window. 485 If its set to 0, the defmodal-dialog-parent 486 is used automatically. 487 488 @param pCore 489 provides access to the recovery core service 490 and the current list of open documents, 491 which should be shown inside this dialog. 492 */ 493 SaveDialog(Window* pParent, 494 RecoveryCore* pCore ); 495 496 //--------------------------------------- 497 /** @short free all controls and used memory. */ 498 virtual ~SaveDialog(); 499 500 //--------------------------------------- 501 /** @short TODO*/ 502 virtual short execute(); 503 504 //--------------------------------------- 505 /** @short TODO*/ 506 virtual void setDefButton(); 507 508 DECL_LINK(OKButtonHdl, void*); 509 }; 510 511 //=============================================== 512 class SaveProgressDialog : public ModalDialog 513 , public IRecoveryUpdateListener 514 { 515 //------------------------------------------- 516 // member 517 private: 518 519 FixedText m_aHintFT; 520 FixedText m_aProgrFT; 521 String m_aProgrBaseTxt; 522 Window m_aProgrParent; 523 524 // @short TODO 525 RecoveryCore* m_pCore; 526 527 // @short TODO 528 css::uno::Reference< css::task::XStatusIndicator > m_xProgress; 529 530 //------------------------------------------- 531 // interface 532 public: 533 534 //--------------------------------------- 535 /** @short create all child controls of this dialog. 536 537 @descr The dialog isn't shown nor it starts any 538 action by itself! 539 540 @param pParent 541 can point to a parent window. 542 If its set to 0, the defmodal-dialog-parent 543 is used automatically. 544 545 @param pCore 546 used to start emergency save. 547 */ 548 SaveProgressDialog(Window* pParent, 549 RecoveryCore* pCore ); 550 551 //--------------------------------------- 552 /** @short free all controls and used memory. */ 553 virtual ~SaveProgressDialog(); 554 555 //--------------------------------------- 556 /** @short start the emergency save operation. */ 557 virtual short Execute(); 558 559 // IRecoveryUpdateListener 560 virtual void updateItems(); 561 virtual void stepNext(TURLInfo* pItem); 562 virtual void start(); 563 virtual void end(); 564 }; 565 566 //=============================================== 567 class RecovDocListEntry : public SvLBoxString 568 { 569 //------------------------------------------- 570 // interface 571 private: 572 573 //------------------------------------------- 574 // interface 575 public: 576 577 //--------------------------------------- 578 /** @short TODO */ 579 RecovDocListEntry( SvLBoxEntry* pEntry, 580 sal_uInt16 nFlags, 581 const String& sText ); 582 583 //--------------------------------------- 584 /** @short TODO */ 585 virtual void Paint(const Point& aPos , 586 SvLBox& aDevice, 587 sal_uInt16 nFlags , 588 SvLBoxEntry* pEntry ); 589 }; 590 591 //=============================================== 592 class RecovDocList : public SvxSimpleTable 593 { 594 //------------------------------------------- 595 // member 596 public: 597 598 Image m_aGreenCheckImg; 599 Image m_aYellowCheckImg; 600 Image m_aRedCrossImg; 601 Image m_aGreenCheckImgHC; 602 Image m_aYellowCheckImgHC; 603 Image m_aRedCrossImgHC; 604 605 String m_aSuccessRecovStr; 606 String m_aOrigDocRecovStr; 607 String m_aRecovFailedStr; 608 String m_aRecovInProgrStr; 609 String m_aNotRecovYetStr; 610 611 //------------------------------------------- 612 // interface 613 public: 614 615 //--------------------------------------- 616 /** @short TODO */ 617 RecovDocList( Window* pParent, 618 const ResId& rResId ); 619 620 //--------------------------------------- 621 /** @short TODO */ 622 virtual ~RecovDocList(); 623 624 //--------------------------------------- 625 /** @short TODO */ 626 virtual void InitEntry( SvLBoxEntry* pEntry , 627 const XubString& sText , 628 const Image& aImage1, 629 const Image& aImage2, 630 SvLBoxButtonKind eButtonKind); 631 }; 632 633 //=============================================== 634 class RecoveryDialog : public IExtendedTabPage 635 , public IRecoveryUpdateListener 636 { 637 //------------------------------------------- 638 // member 639 private: 640 Window m_aTitleWin; 641 FixedText m_aTitleFT; 642 FixedLine m_aTitleFL; 643 FixedText m_aDescrFT; 644 FixedText m_aProgressFT; 645 Window m_aProgrParent; 646 FixedText m_aFileListFT; 647 RecovDocList m_aFileListLB; 648 FixedLine m_aBottomFL; 649 PushButton m_aNextBtn; 650 CancelButton m_aCancelBtn; 651 String m_aNextStr; 652 String m_aTitleRecoveryInProgress; 653 String m_aTitleRecoveryReport; 654 String m_aRecoveryOnlyFinish; 655 String m_aRecoveryOnlyFinishDescr; 656 657 PushButton* m_pDefButton; 658 RecoveryCore* m_pCore; 659 css::uno::Reference< css::task::XStatusIndicator > m_xProgress; 660 enum EInternalRecoveryState 661 { 662 E_RECOVERY_PREPARED, // dialog started ... recovery prepared 663 E_RECOVERY_IN_PROGRESS, // recovery core still in progress 664 E_RECOVERY_CORE_DONE, // recovery core finished it's task 665 E_RECOVERY_DONE, // user clicked "next" button 666 E_RECOVERY_CANCELED, // user clicked "cancel" button 667 E_RECOVERY_CANCELED_BEFORE, // user clicked "cancel" button before recovery was started 668 E_RECOVERY_CANCELED_AFTERWARDS, // user clicked "cancel" button after reovery was finished 669 E_RECOVERY_HANDLED // the recovery wizard page was shown already ... and will be shown now again ... 670 }; 671 sal_Int32 m_eRecoveryState; 672 sal_Bool m_bWaitForUser; 673 sal_Bool m_bWaitForCore; 674 sal_Bool m_bUserDecideNext; 675 sal_Bool m_bWasRecoveryStarted; 676 sal_Bool m_bRecoveryOnly; 677 678 //------------------------------------------- 679 // member 680 public: 681 682 //--------------------------------------- 683 /** @short TODO */ 684 RecoveryDialog(Window* pParent, 685 RecoveryCore* pCore ); 686 687 //--------------------------------------- 688 /** @short TODO */ 689 virtual ~RecoveryDialog(); 690 691 //--------------------------------------- 692 // IRecoveryUpdateListener 693 virtual void updateItems(); 694 virtual void stepNext(TURLInfo* pItem); 695 virtual void start(); 696 virtual void end(); 697 698 //--------------------------------------- 699 /** @short TODO */ 700 virtual short execute(); 701 702 //--------------------------------------- 703 /** @short TODO*/ 704 virtual void setDefButton(); 705 706 //------------------------------------------- 707 // helper 708 private: 709 710 //--------------------------------------- 711 /** @short TODO */ 712 DECL_LINK(NextButtonHdl, void*); 713 DECL_LINK(CancelButtonHdl, void*); 714 715 //--------------------------------------- 716 /** @short TODO */ 717 void impl_refreshDocList(); 718 719 //--------------------------------------- 720 /** @short TODO */ 721 String impl_getStatusString( const TURLInfo& rInfo ) const; 722 }; 723 724 //=============================================== 725 class BrokenRecoveryDialog : public ModalDialog 726 { 727 //------------------------------------------- 728 // member 729 private: 730 FixedText m_aDescrFT; 731 FixedText m_aFileListFT; 732 ListBox m_aFileListLB; 733 FixedText m_aSaveDirFT; 734 Edit m_aSaveDirED; 735 PushButton m_aSaveDirBtn; 736 FixedLine m_aBottomFL; 737 OKButton m_aOkBtn; 738 CancelButton m_aCancelBtn; 739 740 ::rtl::OUString m_sSavePath; 741 RecoveryCore* m_pCore; 742 sal_Bool m_bBeforeRecovery; 743 sal_Bool m_bExecutionNeeded; 744 745 //------------------------------------------- 746 // interface 747 public: 748 749 //--------------------------------------- 750 /** @short TODO */ 751 BrokenRecoveryDialog(Window* pParent , 752 RecoveryCore* pCore , 753 sal_Bool bBeforeRecovery); 754 755 //--------------------------------------- 756 /** @short TODO */ 757 virtual ~BrokenRecoveryDialog(); 758 759 //--------------------------------------- 760 /** @short TODO */ 761 virtual sal_Bool isExecutionNeeded(); 762 763 //--------------------------------------- 764 /** @short TODO */ 765 virtual ::rtl::OUString getSaveDirURL(); 766 767 //------------------------------------------- 768 // helper 769 private: 770 771 //--------------------------------------- 772 /** @short TODO */ 773 void impl_refresh(); 774 775 //--------------------------------------- 776 /** @short TODO */ 777 DECL_LINK(SaveButtonHdl, void*); 778 779 //--------------------------------------- 780 /** @short TODO */ 781 DECL_LINK(OkButtonHdl, void*); 782 783 //--------------------------------------- 784 /** @short TODO */ 785 DECL_LINK(CancelButtonHdl, void*); 786 787 //--------------------------------------- 788 /** @short TODO */ 789 void impl_askForSavePath(); 790 }; 791 792 793 794 class ErrorRepWelcomeDialog : public IExtendedTabPage 795 { 796 private: 797 Window maTitleWin; 798 FixedText maTitleFT; 799 FixedLine maTitleFL; 800 FixedText maDescrFT; 801 802 FixedLine maBottomFL; 803 PushButton maPrevBtn; 804 OKButton maNextBtn; 805 CancelButton maCancelBtn; 806 807 DECL_LINK( PrevBtnHdl, void* ); 808 DECL_LINK( NextBtnHdl, void* ); 809 DECL_LINK( CancelBtnHdl, void* ); 810 public: 811 ErrorRepWelcomeDialog( Window* _pParent, sal_Bool _bAllowBack = sal_True ); 812 virtual ~ErrorRepWelcomeDialog(); 813 /** @short TODO*/ 814 virtual short execute(); 815 816 //--------------------------------------- 817 /** @short TODO*/ 818 virtual void setDefButton(); 819 }; 820 821 struct ErrorRepParams 822 { ErrorRepParamssvx::DocRecovery::ErrorRepParams823 ErrorRepParams() 824 #ifdef WNT 825 : miHTTPConnectionType( 0 ) 826 #else 827 : miHTTPConnectionType( 1 ) 828 #endif 829 , mbAllowContact( false ) 830 {} 831 832 String maHTTPProxyServer; 833 String maHTTPProxyPort; 834 int miHTTPConnectionType; 835 bool mbAllowContact; 836 String maReturnAddress; 837 String maSubject; 838 String maBody; 839 }; 840 841 class ErrorDescriptionEdit : public MultiLineEdit 842 { 843 private: 844 DECL_LINK( ModifyHdl, void* ); 845 846 public: 847 ErrorDescriptionEdit( Window* pParent, const ResId& rResId ); 848 virtual ~ErrorDescriptionEdit(); 849 }; 850 851 class ErrorRepSendDialog : public IExtendedTabPage 852 { 853 private: 854 Window maTitleWin; 855 FixedText maTitleFT; 856 FixedLine maTitleFL; 857 FixedText maDescrFT; 858 859 FixedText maDocTypeFT; 860 Edit maDocTypeED; 861 FixedText maUsingFT; 862 ErrorDescriptionEdit maUsingML; 863 PushButton maShowRepBtn; 864 PushButton maOptBtn; 865 CheckBox maContactCB; 866 FixedText maEMailAddrFT; 867 Edit maEMailAddrED; 868 869 FixedLine maBottomFL; 870 PushButton maPrevBtn; 871 OKButton maNextBtn; 872 CancelButton maCancelBtn; 873 874 ErrorRepParams maParams; 875 876 DECL_LINK( ShowRepBtnHdl, void* ); 877 DECL_LINK( OptBtnHdl, void* ); 878 DECL_LINK( ContactCBHdl, void* ); 879 DECL_LINK( PrevBtnHdl, void* ); 880 DECL_LINK( SendBtnHdl, void* ); 881 DECL_LINK( CancelBtnHdl, void* ); 882 883 void initControls(); 884 885 public: 886 ErrorRepSendDialog( Window* _pParent ); 887 virtual ~ErrorRepSendDialog(); 888 889 String GetDocType( void ) const; 890 String GetUsing( void ) const; 891 bool IsContactAllowed( void ) const; 892 String GetEMailAddress( void ) const; 893 894 bool ReadParams(); 895 bool SaveParams(); 896 bool SendReport(); 897 898 /** @short TODO*/ 899 virtual short execute(); 900 901 //--------------------------------------- 902 /** @short TODO*/ 903 virtual void setDefButton(); 904 }; 905 906 class ErrorRepOptionsDialog : public ModalDialog 907 { 908 private: 909 FixedLine maProxyFL; 910 RadioButton maSystemBtn; 911 RadioButton maDirectBtn; 912 RadioButton maManualBtn; 913 FixedText maProxyServerFT; 914 Edit maProxyServerEd; 915 FixedText maProxyPortFT; 916 Edit maProxyPortEd; 917 FixedText maDescriptionFT; 918 FixedLine maButtonsFL; 919 OKButton maOKBtn; 920 CancelButton maCancelBtn; 921 922 ErrorRepParams& mrParams; 923 924 DECL_LINK( CancelBtnHdl, void* ); 925 DECL_LINK( OKBtnHdl, void * ); 926 DECL_LINK( ManualBtnHdl, void * ); 927 928 public: 929 ErrorRepOptionsDialog( Window* _pParent, ErrorRepParams& rParams ); 930 virtual ~ErrorRepOptionsDialog(); 931 }; 932 933 class ErrorRepEdit : public ExtMultiLineEdit 934 { 935 public: 936 ErrorRepEdit( Window* pParent, const ResId& rResId ); 937 virtual ~ErrorRepEdit(); 938 }; 939 940 class ErrorRepPreviewDialog : public ModalDialog 941 { 942 private: 943 ErrorRepEdit maContentML; 944 OKButton maOKBtn; 945 946 long mnMinHeight; 947 948 public: 949 ErrorRepPreviewDialog( Window* _pParent ); 950 virtual ~ErrorRepPreviewDialog(); 951 952 virtual void Resize(); 953 }; 954 } // namespace DocRecovery 955 } // namespace svx 956 957 #undef css 958 959 #endif 960