xref: /AOO41X/main/sfx2/source/appl/newhelp.hxx (revision 353d8f4d17010cd2d0ea815067cad67e477f2bee)
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 #ifndef INCLUDED_SFX_NEWHELP_HXX
24 #define INCLUDED_SFX_NEWHELP_HXX
25 
26 #include <cppuhelper/implbase1.hxx>
27 #include <com/sun/star/uno/Reference.h>
28 #include <com/sun/star/frame/XDispatchResultListener.hpp>
29 #include <com/sun/star/frame/XDispatch.hpp>
30 #include <com/sun/star/frame/XFrame.hpp>
31 
32 namespace com { namespace sun { namespace star { namespace awt { class XWindow; } } } }
33 namespace com { namespace sun { namespace star { namespace frame { class XFrame; } } } }
34 namespace com { namespace sun { namespace star { namespace i18n { class XBreakIterator; } } } }
35 namespace com { namespace sun { namespace star { namespace text { class XTextRange; } } } }
36 
37 #include <vcl/window.hxx>
38 #include <vcl/toolbox.hxx>
39 #include <vcl/tabpage.hxx>
40 #include <vcl/splitwin.hxx>
41 #include <vcl/tabctrl.hxx>
42 #include <vcl/combobox.hxx>
43 #include <vcl/fixed.hxx>
44 #include <vcl/button.hxx>
45 #include <vcl/lstbox.hxx>
46 #include <vcl/dialog.hxx>
47 #include <svtools/svtreebx.hxx>
48 #include <unotools/moduleoptions.hxx>
49 
50 #include "srchdlg.hxx"
51 
52 // class OpenStatusListener_Impl -----------------------------------------
53 
54 class OpenStatusListener_Impl : public ::cppu::WeakImplHelper1< ::com::sun::star::frame::XDispatchResultListener >
55 {
56 private:
57     sal_Bool    m_bFinished;
58     sal_Bool    m_bSuccess;
59     Link        m_aOpenLink;
60     String      m_sURL;
61 
62 public:
OpenStatusListener_Impl()63     OpenStatusListener_Impl() : m_bFinished( sal_False ), m_bSuccess( sal_False ) {}
64 
65     virtual void SAL_CALL   dispatchFinished( const ::com::sun::star::frame::DispatchResultEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
66     virtual void SAL_CALL   disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
67 
IsFinished() const68     inline sal_Bool         IsFinished() const { return m_bFinished; }
IsSuccessful() const69     inline sal_Bool         IsSuccessful() const { return m_bSuccess; }
SetURL(const String & rURL)70     inline void             SetURL( const String& rURL ) { m_sURL = rURL; }
GetURL() const71     inline String           GetURL() const  { return m_sURL; }
SetOpenHdl(const Link & rLink)72     inline void             SetOpenHdl( const Link& rLink ) { m_aOpenLink = rLink; }
73 };
74 
75 // ContentListBox_Impl ---------------------------------------------------
76 
77 class ContentListBox_Impl : public SvTreeListBox
78 {
79 private:
80     Image           aOpenBookImage;
81     Image           aClosedBookImage;
82     Image           aDocumentImage;
83 
84     void            InitRoot();
85     void            ClearChildren( SvLBoxEntry* pParent );
86 
87 public:
88     ContentListBox_Impl( Window* pParent, const ResId& rResId );
89     ~ContentListBox_Impl();
90 
91 
92     virtual void    RequestingChilds( SvLBoxEntry* pParent );
93     virtual long    Notify( NotifyEvent& rNEvt );
94 
SetOpenHdl(const Link & rLink)95     inline void     SetOpenHdl( const Link& rLink ) { SetDoubleClickHdl( rLink ); }
96     String          GetSelectEntry() const;
97 };
98 
99 // class HelpTabPage_Impl ------------------------------------------------
100 
101 class SfxHelpIndexWindow_Impl;
102 
103 class HelpTabPage_Impl : public TabPage
104 {
105 protected:
106     SfxHelpIndexWindow_Impl*    m_pIdxWin;
107 
108 public:
109     HelpTabPage_Impl( Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin, const ResId& rResId );
110 
111     virtual Control*    GetLastFocusControl() = 0;
112 };
113 
114 // class ContentTabPage_Impl ---------------------------------------------
115 
116 class ContentTabPage_Impl : public HelpTabPage_Impl
117 {
118 private:
119     ContentListBox_Impl aContentBox;
120 
121 public:
122     ContentTabPage_Impl( Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin );
123 
124     virtual void        Resize();
125     virtual void        ActivatePage();
126     virtual Control*    GetLastFocusControl();
127 
SetOpenHdl(const Link & rLink)128     inline void     SetOpenHdl( const Link& rLink ) { aContentBox.SetOpenHdl( rLink ); }
GetSelectEntry() const129     inline String   GetSelectEntry() const { return aContentBox.GetSelectEntry(); }
SetFocusOnBox()130     inline void     SetFocusOnBox() { aContentBox.GrabFocus(); }
131 };
132 
133 // class IndexTabPage_Impl -----------------------------------------------
134 
135 class IndexBox_Impl : public ComboBox
136 {
137 public:
138     IndexBox_Impl( Window* pParent, const ResId& rResId );
139 
140     virtual void        UserDraw( const UserDrawEvent& rUDEvt );
141     virtual long        Notify( NotifyEvent& rNEvt );
142 
143     void                SelectExecutableEntry();
144 };
145 
146 class IndexTabPage_Impl : public HelpTabPage_Impl
147 {
148 private:
149     FixedText           aExpressionFT;
150     IndexBox_Impl       aIndexCB;
151     PushButton          aOpenBtn;
152 
153     Timer               aFactoryTimer;
154     Timer               aKeywordTimer;
155     Link                aKeywordLink;
156 
157     String              sFactory;
158     String              sKeyword;
159 
160     long                nMinWidth;
161     sal_Bool            bIsActivated;
162 
163     void                InitializeIndex();
164     void                ClearIndex();
165 
166     DECL_LINK(          OpenHdl, PushButton* );
167     DECL_LINK(          TimeoutHdl, Timer* );
168 
169 public:
170     IndexTabPage_Impl( Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin );
171     ~IndexTabPage_Impl();
172 
173     virtual void        Resize();
174     virtual void        ActivatePage();
175     virtual Control*    GetLastFocusControl();
176 
177     void                SetDoubleClickHdl( const Link& rLink );
178     void                SetFactory( const String& rFactory );
GetFactory() const179     inline String       GetFactory() const { return sFactory; }
180     String              GetSelectEntry() const;
SetFocusOnBox()181     inline void         SetFocusOnBox() { aIndexCB.GrabFocus(); }
HasFocusOnEdit() const182     inline sal_Bool     HasFocusOnEdit() const { return aIndexCB.HasChildPathFocus(); }
183 
SetKeywordHdl(const Link & rLink)184     inline void         SetKeywordHdl( const Link& rLink ) { aKeywordLink = rLink; }
185     void                SetKeyword( const String& rKeyword );
186     sal_Bool            HasKeyword() const;
187     sal_Bool            HasKeywordIgnoreCase(); //added by BerryJia for fixing Bug98251, 2002-12-11
188     void                OpenKeyword();
189 
SelectExecutableEntry()190     inline void         SelectExecutableEntry() { aIndexCB.SelectExecutableEntry(); }
191 };
192 
193 // class SearchTabPage_Impl ----------------------------------------------
194 
195 class SearchBox_Impl : public ComboBox
196 {
197 private:
198     Link                aSearchLink;
199 
200 public:
SearchBox_Impl(Window * pParent,const ResId & rResId)201     SearchBox_Impl( Window* pParent, const ResId& rResId ) :
202         ComboBox( pParent, rResId ) { SetDropDownLineCount( 5 ); }
203 
204     virtual long        PreNotify( NotifyEvent& rNEvt );
205     virtual void        Select();
206 
SetSearchLink(const Link & rLink)207     inline void         SetSearchLink( const Link& rLink ) { aSearchLink = rLink; }
208 };
209 
210 class SearchResultsBox_Impl : public ListBox
211 {
212 public:
SearchResultsBox_Impl(Window * pParent,const ResId & rResId)213     SearchResultsBox_Impl( Window* pParent, const ResId& rResId ) : ListBox( pParent, rResId ) {}
214 
215     virtual long    Notify( NotifyEvent& rNEvt );
216 };
217 
218 class SearchTabPage_Impl : public HelpTabPage_Impl
219 {
220 private:
221     FixedText               aSearchFT;
222     SearchBox_Impl          aSearchED;
223     PushButton              aSearchBtn;
224     CheckBox                aFullWordsCB;
225     CheckBox                aScopeCB;
226     SearchResultsBox_Impl   aResultsLB;
227     PushButton              aOpenBtn;
228 
229     Size                    aMinSize;
230     String                  aFactory;
231 
232     ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator >
233                             xBreakIterator;
234 
235     void                ClearSearchResults();
236     void                RememberSearchText( const String& rSearchText );
237 
238     DECL_LINK(          SearchHdl, PushButton* );
239     DECL_LINK(          OpenHdl, PushButton* );
240     DECL_LINK(          ModifyHdl, Edit* );
241 
242 public:
243     SearchTabPage_Impl( Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin );
244     ~SearchTabPage_Impl();
245 
246     virtual void        Resize();
247     virtual void        ActivatePage();
248     virtual Control*    GetLastFocusControl();
249 
250     void                SetDoubleClickHdl( const Link& rLink );
SetFactory(const String & rFactory)251     inline void         SetFactory( const String& rFactory ) { aFactory = rFactory; }
252     String              GetSelectEntry() const;
253     void                ClearPage();
SetFocusOnBox()254     inline void         SetFocusOnBox() { aResultsLB.GrabFocus(); }
HasFocusOnEdit() const255     inline sal_Bool     HasFocusOnEdit() const { return aSearchED.HasChildPathFocus(); }
GetSearchText() const256     inline String       GetSearchText() const { return aSearchED.GetText(); }
IsFullWordSearch() const257     inline sal_Bool     IsFullWordSearch() const { return aFullWordsCB.IsChecked(); }
258     sal_Bool            OpenKeyword( const String& rKeyword );
259 };
260 
261 // class BookmarksTabPage_Impl -------------------------------------------
262 
263 class BookmarksBox_Impl : public ListBox
264 {
265 private:
266     void                DoAction( sal_uInt16 nAction );
267 
268 public:
269     BookmarksBox_Impl( Window* pParent, const ResId& rResId );
270     ~BookmarksBox_Impl();
271 
272     virtual long        Notify( NotifyEvent& rNEvt );
273 };
274 
275 class BookmarksTabPage_Impl : public HelpTabPage_Impl
276 {
277 private:
278     FixedText           aBookmarksFT;
279     BookmarksBox_Impl   aBookmarksBox;
280     PushButton          aBookmarksPB;
281 
282     long                nMinWidth;
283 
284     DECL_LINK(          OpenHdl, PushButton* );
285 
286 public:
287     BookmarksTabPage_Impl( Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin );
288 
289     virtual void        Resize();
290     virtual void        ActivatePage();
291     virtual Control*    GetLastFocusControl();
292 
293     void                SetDoubleClickHdl( const Link& rLink );
294     String              GetSelectEntry() const;
295     void                AddBookmarks( const String& rTitle, const String& rURL );
SetFocusOnBox()296     inline void         SetFocusOnBox() { aBookmarksBox.GrabFocus(); }
297 };
298 
299 // class SfxHelpIndexWindow_Impl -----------------------------------------
300 
301 class SfxHelpWindow_Impl;
302 
303 class SfxHelpIndexWindow_Impl : public Window
304 {
305 private:
306     ListBox             aActiveLB;
307     FixedLine           aActiveLine;
308 
309     TabControl          aTabCtrl;
310     Timer               aTimer;
311 
312     Link                aSelectFactoryLink;
313     Link                aPageDoubleClickLink;
314     Link                aIndexKeywordLink;
315     String              sKeyword;
316 
317     SfxHelpWindow_Impl*     pParentWin;
318 
319     ContentTabPage_Impl*    pCPage;
320     IndexTabPage_Impl*      pIPage;
321     SearchTabPage_Impl*     pSPage;
322     BookmarksTabPage_Impl*  pBPage;
323 
324     long                nMinWidth;
325     bool                bWasCursorLeftOrRight;
326     bool                bIsInitDone;
327 
328     void                Initialize();
329     void                SetActiveFactory();
330     HelpTabPage_Impl*   GetCurrentPage( sal_uInt16& rCurId );
331 
332     inline ContentTabPage_Impl*     GetContentPage();
333     inline IndexTabPage_Impl*       GetIndexPage();
334     inline SearchTabPage_Impl*      GetSearchPage();
335     inline BookmarksTabPage_Impl*   GetBookmarksPage();
336 
337     DECL_LINK(          ActivatePageHdl, TabControl* );
338     DECL_LINK(          SelectHdl, ListBox* );
339     DECL_LINK(          InitHdl, Timer* );
340     DECL_LINK(          SelectFactoryHdl, Timer* );
341     DECL_LINK(          KeywordHdl, IndexTabPage_Impl* );
342 
343 public:
344     SfxHelpIndexWindow_Impl( SfxHelpWindow_Impl* pParent );
345     ~SfxHelpIndexWindow_Impl();
346 
347     virtual void        Resize();
348     virtual long        PreNotify( NotifyEvent& rNEvt );
349     virtual void        DataChanged( const DataChangedEvent& rDCEvt );
350 
351     void                SetDoubleClickHdl( const Link& rLink );
SetSelectFactoryHdl(const Link & rLink)352     inline void         SetSelectFactoryHdl( const Link& rLink ) { aSelectFactoryLink = rLink; }
353     void                SetFactory( const String& rFactory, sal_Bool bActive );
GetFactory() const354     inline String       GetFactory() const { return pIPage->GetFactory(); }
355     String              GetSelectEntry() const;
356     void                AddBookmarks( const String& rTitle, const String& rURL );
357     bool                IsValidFactory( const String& _rFactory );
GetActiveFactoryTitle() const358     inline String       GetActiveFactoryTitle() const { return aActiveLB.GetSelectEntry(); }
UpdateTabControl()359     inline void         UpdateTabControl() { aTabCtrl.Invalidate(); }
360     void                ClearSearchPage();
361     void                GrabFocusBack();
362     sal_Bool            HasFocusOnEdit() const;
363     String              GetSearchText() const;
364     sal_Bool            IsFullWordSearch() const;
365     void                OpenKeyword( const String& rKeyword );
366     void                SelectExecutableEntry();
367     inline bool         WasCursorLeftOrRight();
368 };
369 
370 // inlines ---------------------------------------------------------------
371 
GetContentPage()372 ContentTabPage_Impl* SfxHelpIndexWindow_Impl::GetContentPage()
373 {
374     if ( !pCPage )
375     {
376         pCPage = new ContentTabPage_Impl( &aTabCtrl, this );
377         pCPage->SetOpenHdl( aPageDoubleClickLink );
378     }
379     return pCPage;
380 }
GetIndexPage()381 IndexTabPage_Impl* SfxHelpIndexWindow_Impl::GetIndexPage()
382 {
383     if ( !pIPage )
384     {
385         pIPage = new IndexTabPage_Impl( &aTabCtrl, this );
386         pIPage->SetDoubleClickHdl( aPageDoubleClickLink );
387         pIPage->SetKeywordHdl( aIndexKeywordLink );
388     }
389     return pIPage;
390 }
391 
GetSearchPage()392 SearchTabPage_Impl* SfxHelpIndexWindow_Impl::GetSearchPage()
393 {
394     if ( !pSPage )
395     {
396         pSPage = new SearchTabPage_Impl( &aTabCtrl, this );
397         pSPage->SetDoubleClickHdl( aPageDoubleClickLink );
398     }
399     return pSPage;
400 }
401 
GetBookmarksPage()402 BookmarksTabPage_Impl* SfxHelpIndexWindow_Impl::GetBookmarksPage()
403 {
404     if ( !pBPage )
405     {
406         pBPage = new BookmarksTabPage_Impl( &aTabCtrl, this );
407         pBPage->SetDoubleClickHdl( aPageDoubleClickLink );
408     }
409     return pBPage;
410 }
411 
WasCursorLeftOrRight()412 bool SfxHelpIndexWindow_Impl::WasCursorLeftOrRight()
413 {
414     bool bRet = bWasCursorLeftOrRight;
415     bWasCursorLeftOrRight = false;
416     return bRet;
417 }
418 
419 // class TextWin_Impl ----------------------------------------------------
420 
421 class TextWin_Impl : public DockingWindow
422 {
423 public:
424                             TextWin_Impl( Window* pParent );
425     virtual                 ~TextWin_Impl();
426 
427     virtual long            Notify( NotifyEvent& rNEvt );
428 };
429 
430 // class SfxHelpTextWindow_Impl ------------------------------------------
431 
432 class SvtMiscOptions;
433 class SfxHelpWindow_Impl;
434 
435 class SfxHelpTextWindow_Impl : public Window
436 {
437 private:
438     ToolBox                 aToolBox;
439     CheckBox                aOnStartupCB;
440     Timer                   aSelectTimer;
441     Image                   aIndexOnImage;
442     Image                   aIndexOffImage;
443     String                  aIndexOnText;
444     String                  aIndexOffText;
445     String                  aSearchText;
446     String                  aOnStartupText;
447     ::rtl::OUString         sCurrentFactory;
448 
449     SfxHelpWindow_Impl*     pHelpWin;
450     Window*                 pTextWin;
451     sfx2::SearchDialog*     pSrchDlg;
452     ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame >
453                             xFrame;
454     ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator >
455                             xBreakIterator;
456     ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
457                             xConfiguration;
458     long                    nMinPos;
459     sal_Bool                bIsDebug;
460     sal_Bool                bIsIndexOn;
461     sal_Bool                bIsInClose;
462     sal_Bool                bIsFullWordSearch;
463 
464     sal_Bool                HasSelection() const;
465     void                    InitToolBoxImages();
466     void                    InitOnStartupBox( bool bOnlyText );
467     void                    SetOnStartupBoxPosition();
468 
469     ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator >
470                             GetBreakIterator();
471     ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >
472                             getCursor() const;
473     bool                    isHandledKey( const KeyCode& _rKeyCode );
474 
475     DECL_LINK(              SelectHdl, Timer* );
476     DECL_LINK(              NotifyHdl, SvtMiscOptions* );
477     DECL_LINK(              FindHdl, sfx2::SearchDialog* );
478     DECL_LINK(              CloseHdl, sfx2::SearchDialog* );
479     DECL_LINK(              CheckHdl, CheckBox* );
480 
481 public:
482     SfxHelpTextWindow_Impl( SfxHelpWindow_Impl* pParent );
483     ~SfxHelpTextWindow_Impl();
484 
485     virtual void            Resize();
486     virtual long            PreNotify( NotifyEvent& rNEvt );
487     virtual void            GetFocus();
488     virtual void            DataChanged( const DataChangedEvent& rDCEvt );
489 
490     inline ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame >
getFrame() const491                             getFrame() const { return xFrame; }
492 
SetSelectHdl(const Link & rLink)493     inline void             SetSelectHdl( const Link& rLink ) { aToolBox.SetSelectHdl( rLink ); }
494     void                    ToggleIndex( sal_Bool bOn );
495     void                    SelectSearchText( const String& rSearchText, sal_Bool _bIsFullWordSearch );
496     void                    SetPageStyleHeaderOff() const;
GetToolBox()497     inline ToolBox&         GetToolBox() { return aToolBox; }
498     void                    CloseFrame();
499     void                    DoSearch();
500 };
501 
502 // class SfxHelpWindow_Impl ----------------------------------------------
503 
504 class HelpInterceptor_Impl;
505 class HelpListener_Impl;
506 class SfxHelpWindow_Impl : public SplitWindow
507 {
508 private:
509 friend class SfxHelpIndexWindow_Impl;
510 
511     ::com::sun::star::uno::Reference < ::com::sun::star::awt::XWindow >
512                                 xWindow;
513     ::com::sun::star::uno::Reference < ::com::sun::star::frame::XDispatchResultListener >
514                                 xOpenListener;
515     ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame >
516                                 xFrame;
517 
518     SfxHelpIndexWindow_Impl*    pIndexWin;
519     SfxHelpTextWindow_Impl*     pTextWin;
520     HelpInterceptor_Impl*       pHelpInterceptor;
521     HelpListener_Impl*          pHelpListener;
522 
523     sal_Int32           nExpandWidth;
524     sal_Int32           nCollapseWidth;
525     sal_Int32           nHeight;
526     long                nIndexSize;
527     long                nTextSize;
528     sal_Bool            bIndex;
529     sal_Bool            bGrabFocusToToolBox;
530     Point               aWinPos;
531     String              sTitle;
532     String              sKeyword;
533 
534     virtual void        Resize();
535     virtual void        Split();
536     virtual void        GetFocus();
537 
538     void                MakeLayout();
539     void                InitSizes();
540     void                LoadConfig();
541     void                SaveConfig();
542     void                ShowStartPage();
543 
544     DECL_LINK(          SelectHdl, ToolBox* );
545     DECL_LINK(          OpenHdl, SfxHelpIndexWindow_Impl* );
546     DECL_LINK(          SelectFactoryHdl, SfxHelpIndexWindow_Impl* );
547     DECL_LINK(          ChangeHdl, HelpListener_Impl* );
548 
549 public:
550     SfxHelpWindow_Impl( const ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame >& rFrame,
551                         Window* pParent, WinBits nBits );
552     ~SfxHelpWindow_Impl();
553 
554     virtual long        PreNotify( NotifyEvent& rNEvt );
555 
556     void                setContainerWindow(
557                             ::com::sun::star::uno::Reference < ::com::sun::star::awt::XWindow > xWin );
558     inline ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame >
getTextFrame() const559                         getTextFrame() const { return pTextWin->getFrame(); }
560     inline ::com::sun::star::uno::Reference < ::com::sun::star::frame::XDispatchResultListener >
getOpenListener() const561                         getOpenListener() const { return xOpenListener; }
562 
563     void                SetFactory( const String& rFactory );
564     void                SetHelpURL( const String& rURL );
565     void                DoAction( sal_uInt16 nActionId );
566     void                CloseWindow();
567 
568     void                UpdateToolbox();
OpenKeyword(const String & rKeyword)569     inline void         OpenKeyword( const String& rKeyword ) { pIndexWin->OpenKeyword( rKeyword ); }
GetFactory() const570     inline String       GetFactory() const { return pIndexWin->GetFactory(); }
571 
572     sal_Bool            HasHistoryPredecessor() const;      // forward to interceptor
573     sal_Bool            HasHistorySuccessor() const;        // forward to interceptor
574 
575     void                openDone(const ::rtl::OUString& sURL    ,
576                                        sal_Bool         bSuccess);
577 
578     static sal_Bool     splitHelpURL(const ::rtl::OUString& sHelpURL,
579                                            ::rtl::OUString& sFactory,
580                                            ::rtl::OUString& sContent,
581                                            ::rtl::OUString& sAnchor );
582 
583     static ::rtl::OUString  buildHelpURL(const ::rtl::OUString& sFactory        ,
584                                          const ::rtl::OUString& sContent        ,
585                                          const ::rtl::OUString& sAnchor         ,
586                                                sal_Bool         bUseQuestionMark);
587 
588     void                loadHelpContent(const ::rtl::OUString& sHelpURL                ,
589                                               sal_Bool         bAddToHistory = sal_True);
590 };
591 
592 class SfxAddHelpBookmarkDialog_Impl : public ModalDialog
593 {
594 private:
595     FixedText       aTitleFT;
596     Edit            aTitleED;
597     OKButton        aOKBtn;
598     CancelButton    aEscBtn;
599     HelpButton      aHelpBtn;
600 
601 public:
602     SfxAddHelpBookmarkDialog_Impl( Window* pParent, sal_Bool bRename = sal_True );
603     ~SfxAddHelpBookmarkDialog_Impl();
604 
605     void            SetTitle( const String& rTitle );
GetTitle() const606     inline String   GetTitle() const { return aTitleED.GetText(); }
607 };
608 
609 #endif // #ifndef INCLUDED_SFX_NEWHELP_HXX
610 
611