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