1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 #ifndef INCLUDED_SFX2_DINFDLG_HXX
20 #define INCLUDED_SFX2_DINFDLG_HXX
22 #include <sal/config.h>
23 #include <sfx2/dllapi.h>
25 #include <com/sun/star/beans/PropertyValue.hpp>
26 #include <com/sun/star/util/DateTime.hpp>
27 #include <com/sun/star/util/Duration.hpp>
28 #include <com/sun/star/document/CmisProperty.hpp>
30 #include <svl/stritem.hxx>
31 #include <svl/zforlist.hxx>
33 #include <svtools/ctrlbox.hxx>
35 #include <vcl/idle.hxx>
37 #include <sfx2/tabdlg.hxx>
39 #include <boost/optional/optional.hpp>
42 namespace com::sun::star::beans
{ struct PropertyValue
; }
44 namespace com
{ namespace sun
{ namespace star
{
46 class XDocumentProperties
;
50 struct CustomProperty
;
52 // class SfxDocumentInfoItem ---------------------------------------------
54 class SFX2_DLLPUBLIC SfxDocumentInfoItem final
: public SfxStringItem
57 sal_Int32 m_AutoloadDelay
;
58 OUString m_AutoloadURL
;
59 bool m_isAutoloadEnabled
;
60 OUString m_DefaultTarget
;
61 OUString
const m_TemplateName
;
63 css::util::DateTime m_CreationDate
;
64 OUString m_ModifiedBy
;
65 css::util::DateTime m_ModificationDate
;
67 css::util::DateTime m_PrintDate
;
68 sal_Int16 m_EditingCycles
;
69 sal_Int32 m_EditingDuration
;
70 OUString m_Description
;
75 bool m_bDeleteUserData
;
77 bool m_bUseThumbnailSave
;
78 std::vector
< std::unique_ptr
<CustomProperty
> > m_aCustomProperties
;
79 css::uno::Sequence
< css::document::CmisProperty
> m_aCmisProperties
;
82 static SfxPoolItem
* CreateDefault();
83 SfxDocumentInfoItem();
84 SfxDocumentInfoItem( const OUString
&rFileName
,
85 const css::uno::Reference
< css::document::XDocumentProperties
> & i_xDocProps
,
86 const css::uno::Sequence
< css::document::CmisProperty
> & i_cmisProps
,
87 bool bUseUserData
, bool bUseThumbnailSave
);
88 SfxDocumentInfoItem( const SfxDocumentInfoItem
& );
89 virtual ~SfxDocumentInfoItem() override
;
91 /// update i_xDocProps with the data in this object
92 void UpdateDocumentInfo(
93 const css::uno::Reference
< css::document::XDocumentProperties
> & i_xDocProps
,
94 bool i_bDoNotUpdateUserDefined
= false)
96 bool isCmisDocument() const { return m_aCmisProperties
.hasElements();}
98 bool isAutoloadEnabled() const { return m_isAutoloadEnabled
; }
99 void setAutoloadEnabled(bool i_val
) { m_isAutoloadEnabled
= i_val
; }
100 sal_Int32
getAutoloadDelay() const { return m_AutoloadDelay
; }
101 void setAutoloadDelay(sal_Int32 i_val
) { m_AutoloadDelay
= i_val
; }
102 const OUString
& getAutoloadURL() const { return m_AutoloadURL
; }
103 void setAutoloadURL(const OUString
& i_val
) { m_AutoloadURL
= i_val
; }
104 const OUString
& getDefaultTarget() const { return m_DefaultTarget
; }
105 void setDefaultTarget(const OUString
& i_val
) { m_DefaultTarget
= i_val
; }
106 const OUString
& getTemplateName() const { return m_TemplateName
; }
107 const OUString
& getAuthor() const { return m_Author
; }
108 void setAuthor(const OUString
& i_val
) { m_Author
= i_val
; }
110 const css::util::DateTime
&
111 getCreationDate() const { return m_CreationDate
; }
112 const OUString
& getModifiedBy() const { return m_ModifiedBy
; }
113 void setModifiedBy(const OUString
& i_val
) { m_ModifiedBy
= i_val
; }
115 const css::util::DateTime
&
116 getModificationDate() const { return m_ModificationDate
; }
117 const OUString
& getPrintedBy() const { return m_PrintedBy
; }
118 void setPrintedBy(const OUString
& i_val
) { m_PrintedBy
= i_val
; }
119 const css::util::DateTime
&
120 getPrintDate() const { return m_PrintDate
; }
121 sal_Int16
getEditingCycles() const { return m_EditingCycles
; }
122 void setEditingCycles(sal_Int16 i_val
) { m_EditingCycles
= i_val
; }
123 sal_Int32
getEditingDuration() const { return m_EditingDuration
; }
124 void setEditingDuration(sal_Int32 i_val
) { m_EditingDuration
= i_val
; }
125 const OUString
& getDescription() const { return m_Description
; }
126 void setDescription(const OUString
& i_val
) { m_Description
= i_val
; }
127 const OUString
& getKeywords() const { return m_Keywords
; }
128 void setKeywords(const OUString
& i_val
) { m_Keywords
= i_val
; }
129 const OUString
& getSubject() const { return m_Subject
; }
130 void setSubject(const OUString
& i_val
) { m_Subject
= i_val
; }
131 const OUString
& getTitle() const { return m_Title
; }
132 void setTitle(const OUString
& i_val
) { m_Title
= i_val
; }
134 /// reset user-specific data (author, modified-by, ...)
135 void resetUserData(const OUString
& i_rAuthor
);
137 void SetTemplate( bool b
) { m_bHasTemplate
= b
; }
138 bool HasTemplate() const { return m_bHasTemplate
; }
139 void SetDeleteUserData( bool bSet
);
140 void SetUseUserData( bool bSet
);
141 void SetUseThumbnailSave( bool bSet
);
142 bool IsDeleteUserData() const { return m_bDeleteUserData
;}
143 bool IsUseUserData() const { return m_bUseUserData
;}
144 bool IsUseThumbnailSave() const { return m_bUseThumbnailSave
;}
147 std::vector
< std::unique_ptr
<CustomProperty
> > GetCustomProperties() const;
148 void ClearCustomProperties();
149 void AddCustomProperty( const OUString
& sName
,
150 const css::uno::Any
& rValue
);
152 const css::uno::Sequence
< css::document::CmisProperty
>&
153 GetCmisProperties() const { return m_aCmisProperties
;}
155 void SetCmisProperties(const css::uno::Sequence
< css::document::CmisProperty
>& cmisProps
);
156 virtual SfxPoolItem
* Clone( SfxItemPool
* pPool
= nullptr ) const override
;
157 virtual bool operator==( const SfxPoolItem
& ) const override
;
158 virtual bool QueryValue( css::uno::Any
& rVal
, sal_uInt8 nMemberId
= 0 ) const override
;
159 virtual bool PutValue( const css::uno::Any
& rVal
, sal_uInt8 nMemberId
) override
;
162 // class SfxDocumentPage -------------------------------------------------
164 class SfxDocumentPage final
: public SfxTabPage
167 OUString m_aUnknownSize
;
168 OUString m_aMultiSignedStr
;
170 bool bEnableUseUserData
: 1,
173 std::unique_ptr
<weld::Image
> m_xBmp
;
174 std::unique_ptr
<weld::Label
> m_xNameED
;
175 std::unique_ptr
<weld::Button
> m_xChangePassBtn
;
177 std::unique_ptr
<weld::Label
> m_xShowTypeFT
;
178 std::unique_ptr
<weld::Label
> m_xFileValEd
;
179 std::unique_ptr
<weld::Label
> m_xShowSizeFT
;
181 std::unique_ptr
<weld::Label
> m_xCreateValFt
;
182 std::unique_ptr
<weld::Label
> m_xChangeValFt
;
183 std::unique_ptr
<weld::Label
> m_xSignedValFt
;
184 std::unique_ptr
<weld::Button
> m_xSignatureBtn
;
185 std::unique_ptr
<weld::Label
> m_xPrintValFt
;
186 std::unique_ptr
<weld::Label
> m_xTimeLogValFt
;
187 std::unique_ptr
<weld::Label
> m_xDocNoValFt
;
189 std::unique_ptr
<weld::CheckButton
> m_xUseUserDataCB
;
190 std::unique_ptr
<weld::Button
> m_xDeleteBtn
;
191 std::unique_ptr
<weld::CheckButton
> m_xUseThumbnailSaveCB
;
193 std::unique_ptr
<weld::Label
> m_xTemplFt
;
194 std::unique_ptr
<weld::Label
> m_xTemplValFt
;
196 DECL_LINK(DeleteHdl
, weld::Button
&, void);
197 DECL_LINK(SignatureHdl
, weld::Button
&, void);
198 DECL_LINK(ChangePassHdl
, weld::Button
&, void);
199 void ImplUpdateSignatures();
200 void ImplCheckPasswordState();
202 virtual bool FillItemSet( SfxItemSet
* ) override
;
203 virtual void Reset( const SfxItemSet
* ) override
;
206 SfxDocumentPage(weld::Container
* pPage
, weld::DialogController
* pController
, const SfxItemSet
&);
207 static std::unique_ptr
<SfxTabPage
> Create( weld::Container
* pPage
, weld::DialogController
* pController
, const SfxItemSet
* );
208 virtual ~SfxDocumentPage() override
;
210 void EnableUseUserData();
213 // class SfxDocumentDescPage ---------------------------------------------
215 class SfxDocumentDescPage final
: public SfxTabPage
218 SfxDocumentInfoItem
* m_pInfoItem
;
219 std::unique_ptr
<weld::Entry
> m_xTitleEd
;
220 std::unique_ptr
<weld::Entry
> m_xThemaEd
;
221 std::unique_ptr
<weld::Entry
> m_xKeywordsEd
;
222 std::unique_ptr
<weld::TextView
> m_xCommentEd
;
224 virtual bool FillItemSet( SfxItemSet
* ) override
;
225 virtual void Reset( const SfxItemSet
* ) override
;
228 SfxDocumentDescPage(weld::Container
* pPage
, weld::DialogController
* pController
, const SfxItemSet
&);
229 virtual ~SfxDocumentDescPage() override
;
230 static std::unique_ptr
<SfxTabPage
> Create( weld::Container
* pPage
, weld::DialogController
* pController
, const SfxItemSet
* );
233 // class SfxDocumentInfoDialog -------------------------------------------
235 class SFX2_DLLPUBLIC SfxDocumentInfoDialog final
: public SfxTabDialogController
237 virtual void PageCreated(const OString
& rId
, SfxTabPage
& rPage
) override
;
240 SfxDocumentInfoDialog(weld::Window
* pParent
, const SfxItemSet
&);
241 void AddFontTabPage();
244 // class CustomPropertiesRemoveButton ------------------------------------
245 struct CustomPropertyLine
;
247 class CustomPropertiesDateField
250 std::unique_ptr
<SvtCalendarBox
> m_xDateField
;
252 ::boost::optional
<sal_Int16
> m_TZ
;
254 CustomPropertiesDateField(SvtCalendarBox
* pDateField
);
255 void set_visible(bool bVisible
) { m_xDateField
->set_visible(bVisible
); }
256 Date
get_date() const { return m_xDateField
->get_date(); }
257 void set_date(const Date
& rDate
) { m_xDateField
->set_date(rDate
); }
258 ~CustomPropertiesDateField();
261 class CustomPropertiesTimeField
264 std::unique_ptr
<weld::TimeSpinButton
> m_xTimeField
;
267 CustomPropertiesTimeField(std::unique_ptr
<weld::TimeSpinButton
> xTimeField
);
268 void set_visible(bool bVisible
) { m_xTimeField
->set_visible(bVisible
); }
269 tools::Time
get_value() const { return m_xTimeField
->get_value(); }
270 void set_value(const tools::Time
& rTime
) { m_xTimeField
->set_value(rTime
); }
271 ~CustomPropertiesTimeField();
274 class CustomPropertiesDurationField
276 css::util::Duration m_aDuration
;
277 std::unique_ptr
<weld::Entry
> m_xEntry
;
278 std::unique_ptr
<weld::Button
> m_xEditButton
;
280 DECL_LINK(ClickHdl
, weld::Button
&, void);
282 CustomPropertiesDurationField(std::unique_ptr
<weld::Entry
> xEntry
,
283 std::unique_ptr
<weld::Button
> xEditButton
);
285 void SetDuration( const css::util::Duration
& rDuration
);
286 const css::util::Duration
& GetDuration() const { return m_aDuration
; }
288 void set_visible(bool bVisible
);
291 class CustomPropertiesYesNoButton
294 std::unique_ptr
<weld::Widget
> m_xTopLevel
;
295 std::unique_ptr
<weld::RadioButton
> m_xYesButton
;
296 std::unique_ptr
<weld::RadioButton
> m_xNoButton
;
299 CustomPropertiesYesNoButton(std::unique_ptr
<weld::Widget
>,
300 std::unique_ptr
<weld::RadioButton
> xYesButton
,
301 std::unique_ptr
<weld::RadioButton
> xNoButton
);
302 ~CustomPropertiesYesNoButton();
304 void CheckYes() { m_xYesButton
->set_active(true); }
305 void CheckNo() { m_xNoButton
->set_active(true); }
306 bool IsYesChecked() const { return m_xYesButton
->get_active(); }
307 void set_visible(bool bVisible
) { m_xTopLevel
->set_visible(bVisible
); }
310 class CustomPropertiesWindow
;
312 // struct CustomPropertyLine ---------------------------------------------
313 struct CustomPropertyLine
315 CustomPropertiesWindow
* m_pParent
;
317 std::unique_ptr
<weld::Builder
> m_xBuilder
;
318 std::unique_ptr
<weld::Container
> m_xLine
;
319 std::unique_ptr
<weld::ComboBox
> m_xNameBox
;
320 std::unique_ptr
<weld::ComboBox
> m_xTypeBox
;
321 std::unique_ptr
<weld::Entry
> m_xValueEdit
;
322 std::unique_ptr
<weld::Widget
> m_xDateTimeBox
;
323 std::unique_ptr
<CustomPropertiesDateField
> m_xDateField
;
324 std::unique_ptr
<CustomPropertiesTimeField
> m_xTimeField
;
325 std::unique_ptr
<weld::Widget
> m_xDurationBox
;
326 std::unique_ptr
<CustomPropertiesDurationField
> m_xDurationField
;
327 std::unique_ptr
<CustomPropertiesYesNoButton
> m_xYesNoButton
;
328 std::unique_ptr
<weld::Button
> m_xRemoveButton
;
330 bool m_bTypeLostFocus
;
332 CustomPropertyLine(CustomPropertiesWindow
* pParent
, weld::Widget
* pContainer
);
333 DECL_LINK(TypeHdl
, weld::ComboBox
&, void);
334 DECL_LINK(RemoveHdl
, weld::Button
&, void);
335 DECL_LINK(EditLoseFocusHdl
, weld::Widget
&, void);
336 DECL_LINK(BoxLoseFocusHdl
, weld::Widget
&, void);
338 void DoTypeHdl(const weld::ComboBox
& rBox
);
344 // class CustomPropertiesWindow ------------------------------------------
346 class CustomPropertiesWindow
350 sal_Int32 m_nLineHeight
;
351 sal_Int32 m_nScrollPos
;
352 std::vector
<std::unique_ptr
<CustomProperty
>> m_aCustomProperties
;
353 std::vector
<std::unique_ptr
<CustomPropertyLine
>> m_aCustomPropertiesLines
;
354 CustomPropertyLine
* m_pCurrentLine
;
355 SvNumberFormatter m_aNumberFormatter
;
356 Idle m_aEditLoseFocusIdle
;
357 Idle m_aBoxLoseFocusIdle
;
358 Link
<void*,void> m_aRemovedHdl
;
360 weld::Container
& m_rBody
;
361 weld::Label
& m_rHeaderAccName
;
362 weld::Label
& m_rHeaderAccType
;
363 weld::Label
& m_rHeaderAccValue
;
365 DECL_LINK(EditTimeoutHdl
, Timer
*, void);
366 DECL_LINK(BoxTimeoutHdl
, Timer
*, void);
368 bool IsLineValid( CustomPropertyLine
* pLine
) const;
369 void ValidateLine( CustomPropertyLine
* pLine
, bool bIsFromTypeBox
);
370 void CreateNewLine();
371 void StoreCustomProperties();
372 sal_uInt32
GetCurrentDataModelPosition() const { return -1 * m_nScrollPos
/ m_nLineHeight
; }
375 CustomPropertiesWindow(weld::Container
& rParent
, weld::Label
& rHeaderAccName
,
376 weld::Label
& rHeaderAccType
, weld::Label
& rHeaderAccValue
);
377 ~CustomPropertiesWindow();
379 sal_uInt16
GetExistingLineCount() const { return m_aCustomPropertiesLines
.size(); }
380 sal_uInt16
GetTotalLineCount() const { return m_aCustomProperties
.size(); }
381 void SetVisibleLineCount(sal_uInt32 nCount
);
382 sal_Int32
GetHeight() const { return m_nHeight
; }
383 void SetHeight(int nHeight
) { m_nHeight
= nHeight
; }
384 sal_Int32
GetLineHeight() const { return m_nLineHeight
; }
385 void SetLineHeight(sal_Int32 nLineHeight
) { m_nLineHeight
= nLineHeight
; }
386 void AddLine( const OUString
& sName
, css::uno::Any
const & rAny
);
387 bool AreAllLinesValid() const;
388 void ClearAllLines();
389 void DoScroll( sal_Int32 nNewPos
);
390 void ReloadLinesContent();
392 css::uno::Sequence
< css::beans::PropertyValue
>
393 GetCustomProperties();
394 void SetCustomProperties(std::vector
< std::unique_ptr
<CustomProperty
> >&& rProperties
);
395 void SetRemovedHdl( const Link
<void*,void>& rLink
) { m_aRemovedHdl
= rLink
; }
397 void BoxLoseFocus(CustomPropertyLine
* pLine
);
398 void EditLoseFocus(CustomPropertyLine
* pLine
);
399 void Remove(const CustomPropertyLine
* pLine
);
402 // class CustomPropertiesControl -----------------------------------------
404 class CustomPropertiesControl
407 sal_Int32 m_nThumbPos
;
409 std::unique_ptr
<weld::Widget
> m_xBox
;
410 std::unique_ptr
<weld::Container
> m_xBody
;
411 std::unique_ptr
<weld::ScrolledWindow
> m_xVertScroll
;
412 std::unique_ptr
<CustomPropertiesWindow
> m_xPropertiesWin
;
413 std::unique_ptr
<weld::Label
> m_xName
;
414 std::unique_ptr
<weld::Label
> m_xType
;
415 std::unique_ptr
<weld::Label
> m_xValue
;
417 DECL_LINK( ResizeHdl
, const Size
&, void );
418 DECL_LINK( ScrollHdl
, weld::ScrolledWindow
&, void );
419 DECL_LINK( RemovedHdl
, void*, void );
422 CustomPropertiesControl();
423 ~CustomPropertiesControl();
425 void AddLine(css::uno::Any
const & rAny
);
427 bool AreAllLinesValid() const { return m_xPropertiesWin
->AreAllLinesValid(); }
428 void ClearAllLines() { m_xPropertiesWin
->ClearAllLines(); }
430 css::uno::Sequence
<css::beans::PropertyValue
>
431 GetCustomProperties() const
432 { return m_xPropertiesWin
->GetCustomProperties(); }
433 void SetCustomProperties(std::vector
< std::unique_ptr
<CustomProperty
> >&& rProperties
);
435 void Init(weld::Builder
& rParent
);
438 // class SfxCustomPropertiesPage -----------------------------------------
440 class SfxCustomPropertiesPage final
: public SfxTabPage
443 DECL_LINK(AddHdl
, weld::Button
&, void);
445 std::unique_ptr
<CustomPropertiesControl
> m_xPropertiesCtrl
;
446 std::unique_ptr
<weld::Button
> m_xAdd
;
448 virtual bool FillItemSet( SfxItemSet
* ) override
;
449 virtual void Reset( const SfxItemSet
* ) override
;
450 virtual DeactivateRC
DeactivatePage( SfxItemSet
* pSet
) override
;
453 SfxCustomPropertiesPage(weld::Container
* pPage
, weld::DialogController
* pController
, const SfxItemSet
&);
454 static std::unique_ptr
<SfxTabPage
> Create( weld::Container
* pPage
, weld::DialogController
* pController
, const SfxItemSet
* );
455 virtual ~SfxCustomPropertiesPage() override
;
460 std::unique_ptr
<weld::Builder
> m_xBuilder
;
461 std::unique_ptr
<weld::Frame
> m_xFrame
;
462 std::unique_ptr
<weld::Entry
> m_xValueEdit
;
464 CmisValue(weld::Widget
* pParent
, const OUString
& rStr
);
469 std::unique_ptr
<weld::Builder
> m_xBuilder
;
470 std::unique_ptr
<weld::Frame
> m_xFrame
;
471 std::unique_ptr
<SvtCalendarBox
> m_xDateField
;
472 std::unique_ptr
<weld::TimeSpinButton
> m_xTimeField
;
474 CmisDateTime(weld::Widget
* pParent
, const css::util::DateTime
& rDateTime
);
479 std::unique_ptr
<weld::Builder
> m_xBuilder
;
480 std::unique_ptr
<weld::Frame
> m_xFrame
;
481 std::unique_ptr
<weld::RadioButton
> m_xYesButton
;
482 std::unique_ptr
<weld::RadioButton
> m_xNoButton
;
484 CmisYesNo(weld::Widget
* pParent
, bool bValue
);
487 // struct CmisPropertyLine ---------------------------------------------
489 struct CmisPropertyLine
491 std::unique_ptr
<weld::Builder
> m_xBuilder
;
498 std::unique_ptr
<weld::Frame
> m_xFrame
;
499 std::unique_ptr
<weld::Label
> m_xName
;
500 std::unique_ptr
<weld::Label
> m_xType
;
501 std::vector
< std::unique_ptr
<CmisValue
> > m_aValues
;
502 std::vector
< std::unique_ptr
<CmisDateTime
> > m_aDateTimes
;
503 std::vector
< std::unique_ptr
<CmisYesNo
> > m_aYesNos
;
504 CmisPropertyLine(weld::Widget
* pParent
);
508 // class CmisPropertiesWindow ------------------------------------------
510 class CmisPropertiesWindow
513 std::unique_ptr
<weld::Container
> m_xBox
;
514 SvNumberFormatter m_aNumberFormatter
;
515 std::vector
< std::unique_ptr
<CmisPropertyLine
> > m_aCmisPropertiesLines
;
517 CmisPropertiesWindow(std::unique_ptr
<weld::Container
> xParent
);
518 ~CmisPropertiesWindow();
520 void AddLine( const OUString
& sId
, const OUString
& sName
,
521 const OUString
& sType
, const bool bUpdatable
,
522 const bool bRequired
, const bool bMultiValued
,
523 const bool bOpenChoice
,
524 css::uno::Any
& aChoices
,
525 css::uno::Any
const & rAny
);
526 void ClearAllLines();
528 css::uno::Sequence
< css::document::CmisProperty
>
529 GetCmisProperties() const;
532 // class CmisPropertiesControl -----------------------------------------
534 class CmisPropertiesControl
537 CmisPropertiesWindow m_aPropertiesWin
;
538 std::unique_ptr
<weld::ScrolledWindow
> m_xScrolledWindow
;
541 CmisPropertiesControl(weld::Builder
& rBuilder
);
543 void AddLine( const OUString
& sId
, const OUString
& sName
,
544 const OUString
& sType
, const bool bUpdatable
,
545 const bool bRequired
, const bool bMultiValude
,
546 const bool bOpenChoice
,
547 css::uno::Any
& aChoices
,
548 css::uno::Any
const & rAny
);
550 void ClearAllLines();
551 css::uno::Sequence
< css::document::CmisProperty
>
552 GetCmisProperties() const
553 { return m_aPropertiesWin
.GetCmisProperties(); }
556 // class SfxCmisPropertiesPage -------------------------------------------------
558 class SfxCmisPropertiesPage final
: public SfxTabPage
561 std::unique_ptr
<CmisPropertiesControl
> m_xPropertiesCtrl
;
563 virtual bool FillItemSet( SfxItemSet
* ) override
;
564 virtual void Reset( const SfxItemSet
* ) override
;
565 virtual DeactivateRC
DeactivatePage( SfxItemSet
* pSet
) override
;
568 SfxCmisPropertiesPage(weld::Container
* pPage
, weld::DialogController
* pController
, const SfxItemSet
&);
569 virtual ~SfxCmisPropertiesPage() override
;
570 static std::unique_ptr
<SfxTabPage
> Create(weld::Container
* pPage
, weld::DialogController
* pController
, const SfxItemSet
*);
573 #endif // #ifndef _ INCLUDED_SFX2_DINFDLG_HXX
575 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */