xref: /trunk/main/sfx2/inc/sfx2/dinfdlg.hxx (revision c3916d03)
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 _SFX_DINFDLG_HXX
24 #define _SFX_DINFDLG_HXX
25 
26 #include "sal/config.h"
27 #include "sfx2/dllapi.h"
28 
29 #include <com/sun/star/util/DateTime.hpp>
30 #include <vcl/edit.hxx>
31 #include <vcl/field.hxx>
32 #include <svtools/stdctrl.hxx>
33 #include <svl/stritem.hxx>
34 #include <svtools/svmedit.hxx>
35 
36 #include <vcl/edit.hxx>
37 #include <vcl/lstbox.hxx>
38 #include <vcl/scrbar.hxx>
39 #include <svtools/headbar.hxx>
40 #include <unotools/syslocale.hxx>
41 #include <svl/zforlist.hxx>
42 #include <com/sun/star/util/Duration.hpp>
43 #include "tabdlg.hxx"
44 
45 namespace com { namespace sun { namespace star {
46     namespace document {
47         class XDocumentProperties;
48     }
49 } } }
50 
51 struct CustomProperty;
52 
53 
54 // class SfxDocumentInfoItem ---------------------------------------------
55 
56 class SFX2_DLLPUBLIC SfxDocumentInfoItem : public SfxStringItem
57 {
58 private:
59     sal_Int32                           m_AutoloadDelay;
60     ::rtl::OUString                     m_AutoloadURL;
61     sal_Bool                            m_isAutoloadEnabled;
62     ::rtl::OUString                     m_DefaultTarget;
63     ::rtl::OUString                     m_TemplateName;
64     ::rtl::OUString                     m_Author;
65     ::com::sun::star::util::DateTime    m_CreationDate;
66     ::rtl::OUString                     m_ModifiedBy;
67     ::com::sun::star::util::DateTime    m_ModificationDate;
68     ::rtl::OUString                     m_PrintedBy;
69     ::com::sun::star::util::DateTime    m_PrintDate;
70     sal_Int16                           m_EditingCycles;
71     sal_Int32                           m_EditingDuration;
72     ::rtl::OUString                     m_Description;
73     ::rtl::OUString                     m_Keywords;
74     ::rtl::OUString                     m_Subject;
75     ::rtl::OUString                     m_Title;
76     sal_Bool                            m_bHasTemplate;
77     sal_Bool                            m_bDeleteUserData;
78     sal_Bool                            m_bUseUserData;
79     std::vector< CustomProperty* >      m_aCustomProperties;
80 
81 public:
82 	TYPEINFO();
83 	SfxDocumentInfoItem();
84 	SfxDocumentInfoItem( const String &rFileName,
85         const ::com::sun::star::uno::Reference<
86             ::com::sun::star::document::XDocumentProperties> & i_xDocProps,
87         sal_Bool bUseUserData );
88 	SfxDocumentInfoItem( const SfxDocumentInfoItem& );
89 	virtual ~SfxDocumentInfoItem();
90 
91     /// update i_xDocProps with the data in this object
92     void UpdateDocumentInfo(
93         const ::com::sun::star::uno::Reference<
94             ::com::sun::star::document::XDocumentProperties> & i_xDocProps,
95         bool i_bDoNotUpdateUserDefined = false)
96         const;
97 
isAutoloadEnabled() const98     sal_Bool    isAutoloadEnabled() const { return m_isAutoloadEnabled; }
setAutoloadEnabled(sal_Bool i_val)99     void        setAutoloadEnabled(sal_Bool i_val) { m_isAutoloadEnabled = i_val; }
getAutoloadDelay() const100     sal_Int32   getAutoloadDelay() const { return m_AutoloadDelay; }
setAutoloadDelay(sal_Int32 i_val)101     void        setAutoloadDelay(sal_Int32 i_val) { m_AutoloadDelay = i_val; }
getAutoloadURL() const102     ::rtl::OUString getAutoloadURL() const { return m_AutoloadURL; }
setAutoloadURL(::rtl::OUString i_val)103     void        setAutoloadURL(::rtl::OUString i_val) { m_AutoloadURL = i_val; }
getDefaultTarget() const104     ::rtl::OUString getDefaultTarget() const { return m_DefaultTarget; }
setDefaultTarget(::rtl::OUString i_val)105     void        setDefaultTarget(::rtl::OUString i_val) { m_DefaultTarget = i_val; }
getTemplateName() const106     ::rtl::OUString getTemplateName() const { return m_TemplateName; }
setTemplateName(::rtl::OUString i_val)107     void        setTemplateName(::rtl::OUString i_val) { m_TemplateName = i_val; }
getAuthor() const108     ::rtl::OUString getAuthor() const { return m_Author; }
setAuthor(::rtl::OUString i_val)109     void        setAuthor(::rtl::OUString i_val) { m_Author = i_val; }
110 
111     ::com::sun::star::util::DateTime
getCreationDate() const112                 getCreationDate() const { return m_CreationDate; }
setCreationDate(::com::sun::star::util::DateTime i_val)113     void        setCreationDate(::com::sun::star::util::DateTime i_val) {
114                     m_CreationDate = i_val;
115                 }
getModifiedBy() const116     ::rtl::OUString getModifiedBy() const { return m_ModifiedBy; }
setModifiedBy(::rtl::OUString i_val)117     void        setModifiedBy(::rtl::OUString i_val) { m_ModifiedBy = i_val; }
118 
119     ::com::sun::star::util::DateTime
getModificationDate() const120                 getModificationDate() const { return m_ModificationDate; }
setModificationDate(::com::sun::star::util::DateTime i_val)121     void        setModificationDate(::com::sun::star::util::DateTime i_val) {
122                     m_ModificationDate = i_val;
123                 }
getPrintedBy() const124     ::rtl::OUString getPrintedBy() const { return m_PrintedBy; }
setPrintedBy(::rtl::OUString i_val)125     void        setPrintedBy(::rtl::OUString i_val) { m_PrintedBy = i_val; }
126     ::com::sun::star::util::DateTime
getPrintDate() const127                 getPrintDate() const { return m_PrintDate; }
setPrintDate(::com::sun::star::util::DateTime i_val)128     void        setPrintDate(::com::sun::star::util::DateTime i_val) {
129                     m_PrintDate = i_val;
130                 }
getEditingCycles() const131     sal_Int16   getEditingCycles() const { return m_EditingCycles; }
setEditingCycles(sal_Int16 i_val)132     void        setEditingCycles(sal_Int16 i_val) { m_EditingCycles = i_val; }
getEditingDuration() const133     sal_Int32   getEditingDuration() const { return m_EditingDuration; }
setEditingDuration(sal_Int32 i_val)134     void        setEditingDuration(sal_Int32 i_val) { m_EditingDuration = i_val; }
getDescription() const135     ::rtl::OUString getDescription() const { return m_Description; }
setDescription(::rtl::OUString i_val)136     void        setDescription(::rtl::OUString i_val) { m_Description = i_val; }
getKeywords() const137     ::rtl::OUString getKeywords() const { return m_Keywords; }
setKeywords(::rtl::OUString i_val)138     void        setKeywords(::rtl::OUString i_val) { m_Keywords = i_val; }
getSubject() const139     ::rtl::OUString getSubject() const { return m_Subject; }
setSubject(::rtl::OUString i_val)140     void        setSubject(::rtl::OUString i_val) { m_Subject = i_val; }
getTitle() const141     ::rtl::OUString getTitle() const { return m_Title; }
setTitle(::rtl::OUString i_val)142     void        setTitle(::rtl::OUString i_val) { m_Title = i_val; }
143 
144     /// reset user-specific data (author, modified-by, ...)
145     void        resetUserData(const ::rtl::OUString & i_rAuthor);
146 
SetTemplate(sal_Bool b)147     void        SetTemplate( sal_Bool b ) { m_bHasTemplate = b; }
HasTemplate() const148     sal_Bool    HasTemplate() const { return m_bHasTemplate; }
149     void        SetDeleteUserData( sal_Bool bSet );
150     void        SetUseUserData( sal_Bool bSet );
151     sal_Bool    IsDeleteUserData() const;
152     sal_Bool    IsUseUserData() const;
153 
154     std::vector< CustomProperty* >  GetCustomProperties() const;
155     void        ClearCustomProperties();
156     void        AddCustomProperty(  const ::rtl::OUString& sName,
157                                     const com::sun::star::uno::Any& rValue );
158 
159 	virtual SfxPoolItem*    Clone( SfxItemPool* pPool = NULL ) const;
160 	virtual int             operator==( const SfxPoolItem& ) const;
161 	virtual	sal_Bool        QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const;
162 	virtual	sal_Bool		PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 );
163 };
164 
165 // class SfxDocumentPage -------------------------------------------------
166 
167 class SfxDocumentPage : public SfxTabPage
168 {
169 private:
170     FixedImage                  aBmp1;
171     Edit                        aNameED;
172 
173     FixedLine                   aLine1FL;
174     FixedText                   aTypeFT;
175     svt::SelectableFixedText    aShowTypeFT;
176     CheckBox                    aReadOnlyCB;
177     FixedText                   aFileFt;
178     svt::SelectableFixedText    aFileValFt;
179     FixedText                   aSizeFT;
180     svt::SelectableFixedText    aShowSizeFT;
181 
182     FixedLine                   aLine2FL;
183     FixedText                   aCreateFt;
184     svt::SelectableFixedText    aCreateValFt;
185     FixedText                   aChangeFt;
186     svt::SelectableFixedText    aChangeValFt;
187     FixedText                   aSignedFt;
188     svt::SelectableFixedText    aSignedValFt;
189     PushButton                  aSignatureBtn;
190     FixedText                   aPrintFt;
191     svt::SelectableFixedText    aPrintValFt;
192     FixedText                   aTimeLogFt;
193     svt::SelectableFixedText    aTimeLogValFt;
194     FixedText                   aDocNoFt;
195     svt::SelectableFixedText    aDocNoValFt;
196     CheckBox                    aUseUserDataCB;
197     PushButton                  aDeleteBtn;
198 
199     FixedLine                   aLine3FL;
200     FixedText                   aTemplFt;
201     svt::SelectableFixedText    aTemplValFt;
202 
203     String                      aUnknownSize;
204     String                      aMultiSignedStr;
205 
206     sal_Bool                        bEnableUseUserData  : 1,
207                                 bHandleDelete       : 1;
208 
209     DECL_LINK(          DeleteHdl, PushButton * );
210     DECL_LINK(          SignatureHdl, PushButton * );
211     void                ImplUpdateSignatures();
212 
213 protected:
214 	SfxDocumentPage( Window* pParent, const SfxItemSet& );
215 
216 	virtual sal_Bool		FillItemSet( SfxItemSet& );
217 	virtual void		Reset( const SfxItemSet& );
218 
219 public:
220 	static SfxTabPage*	Create( Window* pParent, const SfxItemSet& );
221 
222 	void				EnableUseUserData();
223 };
224 
225 // class SfxDocumentDescPage ---------------------------------------------
226 
227 class SfxDocumentDescPage : public SfxTabPage
228 {
229 private:
230 	FixedText				aTitleFt;
231 	Edit					aTitleEd;
232 	FixedText				aThemaFt;
233 	Edit					aThemaEd;
234 	FixedText				aKeywordsFt;
235 	Edit					aKeywordsEd;
236 	FixedText				aCommentFt;
237 	MultiLineEdit			aCommentEd;
238 	SfxDocumentInfoItem*	pInfoItem;
239 
240 protected:
241 	SfxDocumentDescPage( Window* pParent, const SfxItemSet& );
242 
243 	virtual sal_Bool        	FillItemSet( SfxItemSet& );
244 	virtual void        	Reset( const SfxItemSet& );
245 
246 public:
247 	static SfxTabPage*		Create( Window* pParent, const SfxItemSet& );
248 };
249 
250 // class SfxInternetPage -------------------------------------------------
251 
252 class TargetList;
253 namespace sfx2
254 {
255     class FileDialogHelper;
256 }
257 
258 class SfxInternetPage : public SfxTabPage
259 {
260 private:
261 	RadioButton				aRBNoAutoUpdate;
262 	RadioButton				aRBReloadUpdate;
263 	RadioButton				aRBForwardUpdate;
264 
265 	FixedText				aFTEvery;
266 	NumericField			aNFReload;
267 	FixedText				aFTReloadSeconds;
268 
269 	FixedText				aFTAfter;
270 	NumericField			aNFAfter;
271 	FixedText				aFTAfterSeconds;
272 	FixedText				aFTURL;
273 	Edit					aEDForwardURL;
274 	PushButton				aPBBrowseURL;
275 	FixedText				aFTFrame;
276 	ComboBox				aCBFrame;
277 
278 	String					aForwardErrorMessg;
279     String                  aBaseURL;
280 	SfxDocumentInfoItem*	pInfoItem;
281     sfx2::FileDialogHelper* pFileDlg;
282 
283     enum STATE              { S_Init, S_NoUpdate, S_Reload, S_Forward };
284 							// S_Init is only valid as initial value
285 	STATE					eState;
286 
287 	void					ChangeState( STATE eNewState );		// S_Init is not a valid value here
288 																// also checks corresponding radiobutton
289 	void					EnableNoUpdate( sal_Bool bEnable );
290 	void					EnableReload( sal_Bool bEnable );
291 	void					EnableForward( sal_Bool bEnable );
292 
293 	DECL_LINK( ClickHdlNoUpdate, Control* );
294 	DECL_LINK( ClickHdlReload, Control* );
295 	DECL_LINK( ClickHdlForward, Control* );
296     DECL_LINK( ClickHdlBrowseURL, PushButton* );
297     DECL_LINK( DialogClosedHdl, sfx2::FileDialogHelper* );
298 
299         using TabPage::DeactivatePage;
300 
301 protected:
302     SfxInternetPage( Window* pParent, const SfxItemSet& );
303     ~SfxInternetPage();
304 
305 	virtual sal_Bool			FillItemSet( SfxItemSet& );
306 	virtual void			Reset( const SfxItemSet& );
307 	virtual int                     DeactivatePage( SfxItemSet* pSet = 0 );
308 
309 public:
310 	static SfxTabPage*	Create( Window* pParent, const SfxItemSet& );
311 };
312 
313 // class SfxDocumentInfoDialog -------------------------------------------
314 
315 class SFX2_DLLPUBLIC SfxDocumentInfoDialog : public SfxTabDialog
316 {
317 protected:
318 	virtual void	PageCreated( sal_uInt16 nId, SfxTabPage& rPage );
319 
320 public:
321 	SfxDocumentInfoDialog(	Window* pParent, const SfxItemSet& );
322 };
323 
324 // class CustomPropertiesRemoveButton ------------------------------------
325 
326 struct CustomPropertyLine;
327 
328 class CustomPropertiesEdit : public Edit
329 {
330 private:
331     CustomPropertyLine*             m_pLine;
332 
333 public:
CustomPropertiesEdit(Window * pParent,const ResId & rResId,CustomPropertyLine * pLine)334     inline CustomPropertiesEdit(
335         Window* pParent, const ResId& rResId, CustomPropertyLine* pLine ) :
336             Edit( pParent, rResId ), m_pLine( pLine ) {}
337 
GetLine() const338     inline CustomPropertyLine*      GetLine() const { return m_pLine; }
339 };
340 
341 class CustomPropertiesTypeBox : public ListBox
342 {
343 private:
344     CustomPropertyLine*             m_pLine;
345 
346 public:
CustomPropertiesTypeBox(Window * pParent,const ResId & rResId,CustomPropertyLine * pLine)347     inline CustomPropertiesTypeBox(
348         Window* pParent, const ResId& rResId, CustomPropertyLine* pLine ) :
349             ListBox( pParent, rResId ), m_pLine( pLine ) {}
350 
GetLine() const351     inline CustomPropertyLine*      GetLine() const { return m_pLine; }
352 };
353 
354 class CustomPropertiesDateField : public DateField
355 {
356 private:
357     CustomPropertyLine*             m_pLine;
358 
359 public:
CustomPropertiesDateField(Window * pParent,const ResId & rResId,CustomPropertyLine * pLine)360     inline CustomPropertiesDateField(
361         Window* pParent, const ResId& rResId, CustomPropertyLine* pLine ) :
362             DateField( pParent, rResId ), m_pLine( pLine ) {}
363 
GetLine() const364     inline CustomPropertyLine*      GetLine() const { return m_pLine; }
365 };
366 class CustomPropertiesTimeField : public TimeField
367 {
368 private:
369     CustomPropertyLine*             m_pLine;
370 
371 public:
CustomPropertiesTimeField(Window * pParent,const ResId & rResId,CustomPropertyLine * pLine)372     inline CustomPropertiesTimeField(
373         Window* pParent, const ResId& rResId, CustomPropertyLine* pLine ) :
374             TimeField( pParent, rResId ), m_pLine( pLine ) {}
375 
GetLine() const376     inline CustomPropertyLine*      GetLine() const { return m_pLine; }
377 };
378 class CustomPropertiesDurationField : public Edit
379 {
380     CustomPropertyLine*             m_pLine;
381     com::sun::star::util::Duration  m_aDuration;
382 protected:
383     virtual void    RequestHelp(const HelpEvent& rEvt);
384 public:
385     CustomPropertiesDurationField( Window* pParent, const ResId& rResId, CustomPropertyLine* pLine );
386     ~CustomPropertiesDurationField();
387 
388     void SetDuration( const com::sun::star::util::Duration& rDuration );
GetDuration() const389     const com::sun::star::util::Duration& GetDuration() const { return m_aDuration; }
390 };
391 
392 class CustomPropertiesEditButton : public PushButton
393 {
394     CustomPropertyLine*             m_pLine;
395 
396 public:
397     CustomPropertiesEditButton( Window* pParent, const ResId& rResId, CustomPropertyLine* pLine );
398     ~CustomPropertiesEditButton();
399 
400     DECL_LINK(ClickHdl, PushButton*);
401 };
402 
403 class CustomPropertiesRemoveButton : public ImageButton
404 {
405 private:
406     CustomPropertyLine*             m_pLine;
407 
408 public:
CustomPropertiesRemoveButton(Window * pParent,const ResId & rResId,CustomPropertyLine * pLine)409     inline CustomPropertiesRemoveButton(
410         Window* pParent, const ResId& rResId, CustomPropertyLine* pLine ) :
411             ImageButton( pParent, rResId ), m_pLine( pLine ) {}
412 
GetLine() const413     inline CustomPropertyLine*      GetLine() const { return m_pLine; }
414 };
415 
416 class CustomPropertiesYesNoButton : public Control
417 {
418 private:
419     RadioButton                     m_aYesButton;
420     RadioButton                     m_aNoButton;
421 
422 public:
423     CustomPropertiesYesNoButton( Window* pParent, const ResId& rResId );
424 
425     virtual void    Resize();
426 
CheckYes()427     inline void     CheckYes() { m_aYesButton.Check(); }
CheckNo()428     inline void     CheckNo() { m_aNoButton.Check(); }
IsYesChecked() const429     inline bool     IsYesChecked() const { return m_aYesButton.IsChecked() != sal_False; }
430 };
431 
432 // struct CustomPropertyLine ---------------------------------------------
433 
434 struct CustomPropertyLine
435 {
436     ComboBox                        m_aNameBox;
437     CustomPropertiesTypeBox         m_aTypeBox;
438     CustomPropertiesEdit            m_aValueEdit;
439     CustomPropertiesDateField       m_aDateField;
440     CustomPropertiesTimeField       m_aTimeField;
441     const String                    m_sDurationFormat;
442     CustomPropertiesDurationField   m_aDurationField;
443     CustomPropertiesEditButton      m_aEditButton;
444     CustomPropertiesYesNoButton     m_aYesNoButton;
445     CustomPropertiesRemoveButton    m_aRemoveButton;
446 
447     bool                            m_bIsRemoved;
448     bool                            m_bTypeLostFocus;
449 
450     CustomPropertyLine( Window* pParent );
451 
452     void    SetRemoved();
453 };
454 
455 // class CustomPropertiesWindow ------------------------------------------
456 
457 class CustomPropertiesWindow : public Window
458 {
459 private:
460     ComboBox                            m_aNameBox;
461     ListBox                             m_aTypeBox;
462     Edit                                m_aValueEdit;
463     DateField                           m_aDateField;
464     TimeField                           m_aTimeField;
465     Edit                                m_aDurationField;
466     PushButton                          m_aEditButton;
467     CustomPropertiesYesNoButton         m_aYesNoButton;
468     ImageButton                         m_aRemoveButton;
469 
470     long                                m_nDatePosX;
471     long                                m_nTimePosX;
472 
473     sal_Int32                           m_nLineHeight;
474 	sal_Int32							m_nScrollPos;
475     SvtSysLocale                        m_aSysLocale;
476     std::vector< CustomPropertyLine* >  m_aCustomPropertiesLines;
477     CustomPropertyLine*                 m_pCurrentLine;
478     SvNumberFormatter                   m_aNumberFormatter;
479     Timer                               m_aEditLoseFocusTimer;
480     Timer                               m_aBoxLoseFocusTimer;
481 	Link								m_aRemovedHdl;
482 
483     DECL_LINK(  TypeHdl, CustomPropertiesTypeBox* );
484     DECL_LINK(  RemoveHdl, CustomPropertiesRemoveButton* );
485     DECL_LINK(  EditLoseFocusHdl, CustomPropertiesEdit* );
486     DECL_LINK(  BoxLoseFocusHdl, CustomPropertiesTypeBox* );
487     //add lose focus handlers of Date/TimeField?
488 
489     DECL_LINK(  EditTimeoutHdl, Timer* );
490     DECL_LINK(  BoxTimeoutHdl, Timer* );
491 
492     bool        IsLineValid( CustomPropertyLine* pLine ) const;
493     void        ValidateLine( CustomPropertyLine* pLine, bool bIsFromTypeBox );
494 
495 public:
496     CustomPropertiesWindow( Window* pParent, const ResId& rResId );
497     ~CustomPropertiesWindow();
498 
499     void                InitControls( HeaderBar* pHeaderBar, const ScrollBar* pScrollBar );
500     sal_uInt16              GetVisibleLineCount() const;
GetLineHeight() const501     inline sal_Int32    GetLineHeight() const { return m_nLineHeight; }
502     void                AddLine( const ::rtl::OUString& sName, com::sun::star::uno::Any& rAny );
503     bool                AreAllLinesValid() const;
504     void                ClearAllLines();
505     void                DoScroll( sal_Int32 nNewPos );
506 
507     bool                DoesCustomPropertyExist( const String& rName ) const;
508     ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >
509                         GetCustomProperties() const;
SetRemovedHdl(const Link & rLink)510 	void				SetRemovedHdl( const Link& rLink ) { m_aRemovedHdl = rLink; }
511 };
512 
513 // class CustomPropertiesControl -----------------------------------------
514 
515 class CustomPropertiesControl : public Control
516 {
517 private:
518     HeaderBar               m_aHeaderBar;
519     CustomPropertiesWindow  m_aPropertiesWin;
520     ScrollBar               m_aVertScroll;
521 
522     bool                    m_bIsInitialized;
523     sal_Int32               m_nThumbPos;
524 
525     void                    Initialize();
526 
527     DECL_LINK( ScrollHdl, ScrollBar* );
528     DECL_LINK( RemovedHdl, void* );
529 
530 public:
531     CustomPropertiesControl( Window* pParent, const ResId& rResId );
532     ~CustomPropertiesControl();
533 
534     void            AddLine( const ::rtl::OUString& sName, com::sun::star::uno::Any& rAny, bool bInteractive );
535 
AreAllLinesValid() const536     inline bool     AreAllLinesValid() const { return m_aPropertiesWin.AreAllLinesValid(); }
ClearAllLines()537     inline void     ClearAllLines() { m_aPropertiesWin.ClearAllLines(); }
DoesCustomPropertyExist(const String & rName) const538     inline bool     DoesCustomPropertyExist( const String& rName ) const
539                         { return m_aPropertiesWin.DoesCustomPropertyExist( rName ); }
540     inline ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >
GetCustomProperties() const541                     GetCustomProperties() const
542                         { return m_aPropertiesWin.GetCustomProperties(); }
543 };
544 
545 // class SfxCustomPropertiesPage -----------------------------------------
546 
547 class SfxCustomPropertiesPage : public SfxTabPage
548 {
549 private:
550     CustomPropertiesControl m_aPropertiesCtrl;
551     PushButton              m_aAddBtn;
552 	FixedText               m_aPropertiesFT;
553 
554     DECL_LINK(  AddHdl, PushButton* );
555 
556     using TabPage::DeactivatePage;
557 
558 protected:
559     SfxCustomPropertiesPage( Window* pParent, const SfxItemSet& );
560 
561     virtual sal_Bool        FillItemSet( SfxItemSet& );
562     virtual void        Reset( const SfxItemSet& );
563     virtual int         DeactivatePage( SfxItemSet* pSet = NULL );
564 
565 public:
566     static SfxTabPage*  Create( Window* pParent, const SfxItemSet& );
567 };
568 
569 #endif // #ifndef _SFX_DINFDLG_HXX
570 
571