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