Version 7.6.3.2-android, tag libreoffice-7.6.3.2-android
[LibreOffice.git] / include / sfx2 / dinfdlg.hxx
blob81692a2fc96fae32f306ddc48ef37a475f013503
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
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 <config_options.h>
23 #include <sal/config.h>
24 #include <sfx2/dllapi.h>
26 #include <com/sun/star/beans/PropertyValue.hpp>
27 #include <com/sun/star/util/DateTime.hpp>
28 #include <com/sun/star/util/Duration.hpp>
29 #include <com/sun/star/document/CmisProperty.hpp>
31 #include <svl/numformat.hxx>
32 #include <svl/stritem.hxx>
33 #include <svtools/ctrlbox.hxx>
35 #include <vcl/idle.hxx>
36 #include <vcl/weldutils.hxx>
38 #include <sfx2/tabdlg.hxx>
40 #include <optional>
41 #include <memory>
42 #include <vcl/abstdlg.hxx>
44 namespace com::sun::star::beans { struct PropertyValue; }
46 namespace com::sun::star {
47 namespace document {
48 class XDocumentProperties;
52 struct CustomProperty;
53 class SvtCalendarBox;
55 // class SfxDocumentInfoItem ---------------------------------------------
57 class UNLESS_MERGELIBS(SFX2_DLLPUBLIC) SfxDocumentInfoItem final : public SfxStringItem
59 private:
60 sal_Int32 m_AutoloadDelay;
61 OUString m_AutoloadURL;
62 bool m_isAutoloadEnabled;
63 OUString m_DefaultTarget;
64 OUString m_TemplateName;
65 OUString m_Author;
66 css::util::DateTime m_CreationDate;
67 OUString m_ModifiedBy;
68 css::util::DateTime m_ModificationDate;
69 OUString m_PrintedBy;
70 css::util::DateTime m_PrintDate;
71 sal_Int16 m_EditingCycles;
72 sal_Int32 m_EditingDuration;
73 OUString m_Description;
74 OUString m_Keywords;
75 OUString m_Subject;
76 OUString m_Title;
77 bool m_bHasTemplate;
78 bool m_bDeleteUserData;
79 bool m_bUseUserData;
80 bool m_bUseThumbnailSave;
81 std::vector< std::unique_ptr<CustomProperty> > m_aCustomProperties;
82 css::uno::Sequence< css::document::CmisProperty > m_aCmisProperties;
84 public:
85 static SfxPoolItem* CreateDefault();
86 SfxDocumentInfoItem();
87 SfxDocumentInfoItem( const OUString &rFileName,
88 const css::uno::Reference< css::document::XDocumentProperties> & i_xDocProps,
89 const css::uno::Sequence< css::document::CmisProperty> & i_cmisProps,
90 bool bUseUserData, bool bUseThumbnailSave );
91 SfxDocumentInfoItem( const SfxDocumentInfoItem& );
92 virtual ~SfxDocumentInfoItem() override;
94 /// update i_xDocProps with the data in this object
95 void UpdateDocumentInfo(
96 const css::uno::Reference< css::document::XDocumentProperties> & i_xDocProps,
97 bool i_bDoNotUpdateUserDefined = false)
98 const;
99 bool isCmisDocument() const { return m_aCmisProperties.hasElements();}
101 bool isAutoloadEnabled() const { return m_isAutoloadEnabled; }
102 sal_Int32 getAutoloadDelay() const { return m_AutoloadDelay; }
103 const OUString& getAutoloadURL() const { return m_AutoloadURL; }
104 const OUString& getDefaultTarget() const { return m_DefaultTarget; }
105 const OUString& getTemplateName() const { return m_TemplateName; }
106 const OUString& getAuthor() const { return m_Author; }
108 const css::util::DateTime&
109 getCreationDate() const { return m_CreationDate; }
110 const OUString& getModifiedBy() const { return m_ModifiedBy; }
112 const css::util::DateTime&
113 getModificationDate() const { return m_ModificationDate; }
114 const OUString& getPrintedBy() const { return m_PrintedBy; }
115 const css::util::DateTime&
116 getPrintDate() const { return m_PrintDate; }
117 sal_Int16 getEditingCycles() const { return m_EditingCycles; }
118 sal_Int32 getEditingDuration() const { return m_EditingDuration; }
119 const OUString& getDescription() const { return m_Description; }
120 void setDescription(const OUString& i_val) { m_Description = i_val; }
121 const OUString& getKeywords() const { return m_Keywords; }
122 void setKeywords(const OUString& i_val) { m_Keywords = i_val; }
123 const OUString& getSubject() const { return m_Subject; }
124 void setSubject(const OUString& i_val) { m_Subject = i_val; }
125 const OUString& getTitle() const { return m_Title; }
126 void setTitle(const OUString& i_val) { m_Title = i_val; }
128 /// reset user-specific data (author, modified-by, ...)
129 void resetUserData(const OUString & i_rAuthor);
131 void SetTemplate( bool b ) { m_bHasTemplate = b; }
132 bool HasTemplate() const { return m_bHasTemplate; }
133 void SetDeleteUserData( bool bSet );
134 void SetUseUserData( bool bSet );
135 void SetUseThumbnailSave( bool bSet );
136 bool IsUseUserData() const { return m_bUseUserData;}
137 bool IsUseThumbnailSave() const { return m_bUseThumbnailSave;}
140 std::vector< std::unique_ptr<CustomProperty> > GetCustomProperties() const;
141 void ClearCustomProperties();
142 void AddCustomProperty( const OUString& sName,
143 const css::uno::Any& rValue );
145 const css::uno::Sequence< css::document::CmisProperty >&
146 GetCmisProperties() const { return m_aCmisProperties;}
148 void SetCmisProperties(const css::uno::Sequence< css::document::CmisProperty >& cmisProps );
149 virtual SfxDocumentInfoItem* Clone( SfxItemPool* pPool = nullptr ) const override;
150 virtual bool operator==( const SfxPoolItem& ) const override;
151 virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
152 virtual bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override;
155 // class SfxDocumentPage -------------------------------------------------
157 class SfxDocumentPage final : public SfxTabPage
159 private:
160 OUString m_aUnknownSize;
161 OUString m_aMultiSignedStr;
163 bool bEnableUseUserData : 1,
164 bHandleDelete : 1;
166 std::unique_ptr<weld::Image> m_xBmp;
167 std::unique_ptr<weld::Label> m_xNameED;
168 std::unique_ptr<weld::Button> m_xChangePassBtn;
170 std::unique_ptr<weld::Label> m_xShowTypeFT;
171 std::unique_ptr<weld::LinkButton> m_xFileValEd;
172 std::unique_ptr<weld::Label> m_xShowSizeFT;
174 std::unique_ptr<weld::Label> m_xCreateValFt;
175 std::unique_ptr<weld::Label> m_xChangeValFt;
176 std::unique_ptr<weld::Label> m_xSignedValFt;
177 std::unique_ptr<weld::Button> m_xSignatureBtn;
178 std::unique_ptr<weld::Label> m_xPrintValFt;
179 std::unique_ptr<weld::Label> m_xTimeLogValFt;
180 std::unique_ptr<weld::Label> m_xDocNoValFt;
182 std::unique_ptr<weld::CheckButton> m_xUseUserDataCB;
183 std::unique_ptr<weld::Button> m_xDeleteBtn;
184 std::unique_ptr<weld::CheckButton> m_xUseThumbnailSaveCB;
186 std::unique_ptr<weld::Label> m_xTemplFt;
187 std::unique_ptr<weld::Label> m_xTemplValFt;
188 std::unique_ptr<weld::CheckButton> m_xImagePreferredDpiCheckButton;
189 std::unique_ptr<weld::ComboBox> m_xImagePreferredDpiComboBox;
191 DECL_LINK(DeleteHdl, weld::Button&, void);
192 DECL_LINK(SignatureHdl, weld::Button&, void);
193 DECL_LINK(ChangePassHdl, weld::Button&, void);
194 DECL_LINK(ImagePreferredDPICheckBoxClicked, weld::Toggleable&, void);
196 void ImplUpdateSignatures();
197 void ImplCheckPasswordState();
199 virtual bool FillItemSet( SfxItemSet* ) override;
200 virtual void Reset( const SfxItemSet* ) override;
201 VclPtr<AbstractPasswordToOpenModifyDialog> m_xPasswordDialog;
203 public:
204 SfxDocumentPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet&);
205 static std::unique_ptr<SfxTabPage> Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* );
206 virtual ~SfxDocumentPage() override;
208 void EnableUseUserData();
211 // class SfxDocumentDescPage ---------------------------------------------
213 class SfxDocumentDescPage final : public SfxTabPage
215 private:
216 SfxDocumentInfoItem* m_pInfoItem;
217 std::unique_ptr<weld::Entry> m_xTitleEd;
218 std::unique_ptr<weld::Entry> m_xThemaEd;
219 std::unique_ptr<weld::Entry> m_xKeywordsEd;
220 std::unique_ptr<weld::TextView> m_xCommentEd;
222 virtual bool FillItemSet( SfxItemSet* ) override;
223 virtual void Reset( const SfxItemSet* ) override;
225 public:
226 SfxDocumentDescPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet&);
227 virtual ~SfxDocumentDescPage() override;
228 static std::unique_ptr<SfxTabPage> Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* );
231 // class SfxDocumentInfoDialog -------------------------------------------
233 class SFX2_DLLPUBLIC SfxDocumentInfoDialog final : public SfxTabDialogController
235 virtual void PageCreated(const OUString& rId, SfxTabPage& rPage) override;
237 public:
238 SfxDocumentInfoDialog(weld::Window* pParent, const SfxItemSet&);
239 void AddFontTabPage();
242 // class CustomPropertiesRemoveButton ------------------------------------
243 struct CustomPropertyLine;
245 class CustomPropertiesDateField
247 private:
248 std::unique_ptr<SvtCalendarBox> m_xDateField;
249 public:
250 ::std::optional<sal_Int16> m_TZ;
252 CustomPropertiesDateField(SvtCalendarBox* pDateField);
253 void set_visible(bool bVisible);
254 Date get_date() const;
255 void set_date(const Date& rDate);
256 ~CustomPropertiesDateField();
259 namespace weld
261 class TimeFormatter;
264 class CustomPropertiesTimeField
266 public:
267 std::unique_ptr<weld::FormattedSpinButton> m_xTimeField;
268 std::unique_ptr<weld::TimeFormatter> m_xFormatter;
269 bool m_isUTC;
271 CustomPropertiesTimeField(std::unique_ptr<weld::FormattedSpinButton> xTimeField);
272 void set_visible(bool bVisible) { m_xTimeField->set_visible(bVisible); }
273 tools::Time get_value() const;
274 void set_value(const tools::Time& rTime);
276 ~CustomPropertiesTimeField();
279 class DurationDialog_Impl : public weld::GenericDialogController
281 std::unique_ptr<weld::CheckButton> m_xNegativeCB;
282 std::unique_ptr<weld::SpinButton> m_xYearNF;
283 std::unique_ptr<weld::SpinButton> m_xMonthNF;
284 std::unique_ptr<weld::SpinButton> m_xDayNF;
285 std::unique_ptr<weld::SpinButton> m_xHourNF;
286 std::unique_ptr<weld::SpinButton> m_xMinuteNF;
287 std::unique_ptr<weld::SpinButton> m_xSecondNF;
288 std::unique_ptr<weld::SpinButton> m_xMSecondNF;
290 public:
291 DurationDialog_Impl(weld::Widget* pParent, const css::util::Duration& rDuration);
292 css::util::Duration GetDuration() const;
295 class CustomPropertiesDurationField
297 css::util::Duration m_aDuration;
298 std::unique_ptr<weld::Entry> m_xEntry;
299 std::unique_ptr<weld::Button> m_xEditButton;
300 std::shared_ptr<DurationDialog_Impl> m_xDurationDialog;
302 DECL_LINK(ClickHdl, weld::Button&, void);
303 public:
304 CustomPropertiesDurationField(std::unique_ptr<weld::Entry> xEntry,
305 std::unique_ptr<weld::Button> xEditButton);
307 void SetDuration( const css::util::Duration& rDuration );
308 const css::util::Duration& GetDuration() const { return m_aDuration; }
310 void set_visible(bool bVisible);
312 ~CustomPropertiesDurationField();
315 class CustomPropertiesYesNoButton
317 private:
318 std::unique_ptr<weld::Widget> m_xTopLevel;
319 std::unique_ptr<weld::RadioButton> m_xYesButton;
320 std::unique_ptr<weld::RadioButton> m_xNoButton;
322 public:
323 CustomPropertiesYesNoButton(std::unique_ptr<weld::Widget>,
324 std::unique_ptr<weld::RadioButton> xYesButton,
325 std::unique_ptr<weld::RadioButton> xNoButton);
326 ~CustomPropertiesYesNoButton();
328 void CheckYes() { m_xYesButton->set_active(true); }
329 void CheckNo() { m_xNoButton->set_active(true); }
330 bool IsYesChecked() const { return m_xYesButton->get_active(); }
331 void set_visible(bool bVisible) { m_xTopLevel->set_visible(bVisible); }
334 class CustomPropertiesWindow;
336 // struct CustomPropertyLine ---------------------------------------------
337 struct CustomPropertyLine
339 CustomPropertiesWindow* m_pParent;
341 std::unique_ptr<weld::Builder> m_xBuilder;
342 std::unique_ptr<weld::Container> m_xLine;
343 std::unique_ptr<weld::ComboBox> m_xNameBox;
344 std::unique_ptr<weld::ComboBox> m_xTypeBox;
345 std::unique_ptr<weld::Entry> m_xValueEdit;
346 std::unique_ptr<weld::Widget> m_xDateTimeBox;
347 std::unique_ptr<CustomPropertiesDateField> m_xDateField;
348 std::unique_ptr<CustomPropertiesTimeField> m_xTimeField;
349 std::unique_ptr<weld::Widget> m_xDurationBox;
350 std::unique_ptr<CustomPropertiesDurationField> m_xDurationField;
351 std::unique_ptr<CustomPropertiesYesNoButton> m_xYesNoButton;
352 std::unique_ptr<weld::Button> m_xRemoveButton;
354 bool m_bTypeLostFocus;
356 CustomPropertyLine(CustomPropertiesWindow* pParent, weld::Widget* pContainer);
357 DECL_LINK(TypeHdl, weld::ComboBox&, void);
358 DECL_LINK(RemoveHdl, weld::Button&, void);
359 DECL_LINK(EditLoseFocusHdl, weld::Widget&, void);
360 DECL_LINK(BoxLoseFocusHdl, weld::Widget&, void);
362 void DoTypeHdl(const weld::ComboBox& rBox);
364 void Clear();
365 void Hide();
368 // class CustomPropertiesWindow ------------------------------------------
370 class CustomPropertiesWindow
372 private:
373 sal_Int32 m_nHeight;
374 sal_Int32 m_nLineHeight;
375 sal_Int32 m_nScrollPos;
376 std::vector<std::unique_ptr<CustomProperty>> m_aCustomProperties;
377 std::vector<std::unique_ptr<CustomPropertyLine>> m_aCustomPropertiesLines;
378 CustomPropertyLine* m_pCurrentLine;
379 SvNumberFormatter m_aNumberFormatter;
380 Idle m_aEditLoseFocusIdle;
381 Idle m_aBoxLoseFocusIdle;
382 Link<void*,void> m_aRemovedHdl;
384 weld::Container& m_rBody;
385 weld::Label& m_rHeaderAccName;
386 weld::Label& m_rHeaderAccType;
387 weld::Label& m_rHeaderAccValue;
389 DECL_LINK(EditTimeoutHdl, Timer *, void);
390 DECL_LINK(BoxTimeoutHdl, Timer *, void);
392 bool IsLineValid( CustomPropertyLine* pLine ) const;
393 void ValidateLine( CustomPropertyLine* pLine, bool bIsFromTypeBox );
394 void CreateNewLine();
395 void StoreCustomProperties();
396 sal_uInt32 GetCurrentDataModelPosition() const { return -1 * m_nScrollPos / m_nLineHeight; }
398 public:
399 CustomPropertiesWindow(weld::Container& rParent, weld::Label& rHeaderAccName,
400 weld::Label& rHeaderAccType, weld::Label& rHeaderAccValue);
401 ~CustomPropertiesWindow();
403 sal_uInt16 GetExistingLineCount() const { return m_aCustomPropertiesLines.size(); }
404 sal_uInt16 GetTotalLineCount() const { return m_aCustomProperties.size(); }
405 void SetVisibleLineCount(sal_uInt32 nCount);
406 sal_Int32 GetHeight() const { return m_nHeight; }
407 void SetHeight(int nHeight) { m_nHeight = nHeight; }
408 sal_Int32 GetLineHeight() const { return m_nLineHeight; }
409 void SetLineHeight(sal_Int32 nLineHeight) { m_nLineHeight = nLineHeight; }
410 void AddLine( const OUString& sName, css::uno::Any const & rAny );
411 bool AreAllLinesValid() const;
412 void ClearAllLines();
413 void DoScroll( sal_Int32 nNewPos );
414 void ReloadLinesContent();
416 css::uno::Sequence< css::beans::PropertyValue >
417 GetCustomProperties();
418 void SetCustomProperties(std::vector< std::unique_ptr<CustomProperty> >&& rProperties);
419 void SetRemovedHdl( const Link<void*,void>& rLink ) { m_aRemovedHdl = rLink; }
421 void BoxLoseFocus(CustomPropertyLine* pLine);
422 void EditLoseFocus(CustomPropertyLine* pLine);
423 void Remove(const CustomPropertyLine* pLine);
426 // class CustomPropertiesControl -----------------------------------------
428 class CustomPropertiesControl
430 private:
431 sal_Int32 m_nThumbPos;
433 std::unique_ptr<weld::Widget> m_xBox;
434 std::unique_ptr<weld::Container> m_xBody;
435 std::unique_ptr<weld::ScrolledWindow> m_xVertScroll;
436 std::unique_ptr<CustomPropertiesWindow> m_xPropertiesWin;
437 std::unique_ptr<weld::Label> m_xName;
438 std::unique_ptr<weld::Label> m_xType;
439 std::unique_ptr<weld::Label> m_xValue;
441 DECL_LINK( ResizeHdl, const Size&, void );
442 DECL_LINK( ScrollHdl, weld::ScrolledWindow&, void );
443 DECL_LINK( RemovedHdl, void*, void );
445 public:
446 CustomPropertiesControl();
447 ~CustomPropertiesControl();
449 void AddLine(css::uno::Any const & rAny);
451 bool AreAllLinesValid() const { return m_xPropertiesWin->AreAllLinesValid(); }
452 void ClearAllLines() { m_xPropertiesWin->ClearAllLines(); }
454 css::uno::Sequence<css::beans::PropertyValue>
455 GetCustomProperties() const
456 { return m_xPropertiesWin->GetCustomProperties(); }
457 void SetCustomProperties(std::vector< std::unique_ptr<CustomProperty> >&& rProperties);
459 void Init(weld::Builder& rParent);
462 // class SfxCustomPropertiesPage -----------------------------------------
464 class SfxCustomPropertiesPage final : public SfxTabPage
466 private:
467 DECL_LINK(AddHdl, weld::Button&, void);
469 std::unique_ptr<CustomPropertiesControl> m_xPropertiesCtrl;
470 std::unique_ptr<weld::Button> m_xAdd;
472 virtual bool FillItemSet( SfxItemSet* ) override;
473 virtual void Reset( const SfxItemSet* ) override;
474 virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override;
476 public:
477 SfxCustomPropertiesPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet&);
478 static std::unique_ptr<SfxTabPage> Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* );
479 virtual ~SfxCustomPropertiesPage() override;
482 struct CmisValue
484 std::unique_ptr<weld::Builder> m_xBuilder;
485 std::unique_ptr<weld::Frame> m_xFrame;
486 std::unique_ptr<weld::Entry> m_xValueEdit;
488 CmisValue(weld::Widget* pParent, const OUString& rStr);
491 struct CmisDateTime
493 std::unique_ptr<weld::Builder> m_xBuilder;
494 std::unique_ptr<weld::Frame> m_xFrame;
495 std::unique_ptr<SvtCalendarBox> m_xDateField;
496 std::unique_ptr<weld::FormattedSpinButton> m_xTimeField;
497 std::unique_ptr<weld::TimeFormatter> m_xFormatter;
499 CmisDateTime(weld::Widget* pParent, const css::util::DateTime& rDateTime);
502 struct CmisYesNo
504 std::unique_ptr<weld::Builder> m_xBuilder;
505 std::unique_ptr<weld::Frame> m_xFrame;
506 std::unique_ptr<weld::RadioButton> m_xYesButton;
507 std::unique_ptr<weld::RadioButton> m_xNoButton;
509 CmisYesNo(weld::Widget* pParent, bool bValue);
512 // struct CmisPropertyLine ---------------------------------------------
514 struct CmisPropertyLine
516 std::unique_ptr<weld::Builder> m_xBuilder;
517 OUString m_sId;
518 OUString m_sType;
519 bool m_bUpdatable;
520 bool m_bRequired;
521 bool m_bMultiValued;
522 bool m_bOpenChoice;
523 std::unique_ptr<weld::Frame> m_xFrame;
524 std::unique_ptr<weld::Label> m_xName;
525 std::unique_ptr<weld::Label> m_xType;
526 std::vector< std::unique_ptr<CmisValue> > m_aValues;
527 std::vector< std::unique_ptr<CmisDateTime> > m_aDateTimes;
528 std::vector< std::unique_ptr<CmisYesNo> > m_aYesNos;
529 CmisPropertyLine(weld::Widget* pParent);
530 ~CmisPropertyLine();
533 // class CmisPropertiesWindow ------------------------------------------
535 class CmisPropertiesWindow
537 private:
538 std::unique_ptr<weld::Container> m_xBox;
539 SvNumberFormatter m_aNumberFormatter;
540 std::vector< std::unique_ptr<CmisPropertyLine> > m_aCmisPropertiesLines;
541 public:
542 CmisPropertiesWindow(std::unique_ptr<weld::Container> xParent);
543 ~CmisPropertiesWindow();
545 void AddLine( const OUString& sId, const OUString& sName,
546 const OUString& sType, const bool bUpdatable,
547 const bool bRequired, const bool bMultiValued,
548 const bool bOpenChoice,
549 css::uno::Any& aChoices,
550 css::uno::Any const & rAny );
551 void ClearAllLines();
553 css::uno::Sequence< css::document::CmisProperty >
554 GetCmisProperties() const;
557 // class CmisPropertiesControl -----------------------------------------
559 class CmisPropertiesControl
561 private:
562 CmisPropertiesWindow m_aPropertiesWin;
563 std::unique_ptr<weld::ScrolledWindow> m_xScrolledWindow;
565 public:
566 CmisPropertiesControl(weld::Builder& rBuilder);
568 void AddLine( const OUString& sId, const OUString& sName,
569 const OUString& sType, const bool bUpdatable,
570 const bool bRequired, const bool bMultiValude,
571 const bool bOpenChoice,
572 css::uno::Any& aChoices,
573 css::uno::Any const & rAny );
575 void ClearAllLines();
576 css::uno::Sequence< css::document::CmisProperty >
577 GetCmisProperties() const
578 { return m_aPropertiesWin.GetCmisProperties(); }
581 // class SfxCmisPropertiesPage -------------------------------------------------
583 class SfxCmisPropertiesPage final : public SfxTabPage
585 private:
586 std::unique_ptr<CmisPropertiesControl> m_xPropertiesCtrl;
588 virtual bool FillItemSet( SfxItemSet* ) override;
589 virtual void Reset( const SfxItemSet* ) override;
590 virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override;
592 public:
593 SfxCmisPropertiesPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet&);
594 virtual ~SfxCmisPropertiesPage() override;
595 static std::unique_ptr<SfxTabPage> Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet*);
598 #endif // #ifndef _ INCLUDED_SFX2_DINFDLG_HXX
600 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */