Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
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/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
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 .
18 : */
19 : #ifndef INCLUDED_SFX2_DINFDLG_HXX
20 : #define INCLUDED_SFX2_DINFDLG_HXX
21 :
22 : #include <boost/optional/optional.hpp>
23 :
24 : #include <boost/ptr_container/ptr_vector.hpp>
25 :
26 : #include <sal/config.h>
27 : #include <sfx2/dllapi.h>
28 :
29 : #include <com/sun/star/util/DateTime.hpp>
30 : #include <com/sun/star/util/Duration.hpp>
31 : #include <com/sun/star/document/CmisProperty.hpp>
32 :
33 : #include <svl/stritem.hxx>
34 : #include <svl/zforlist.hxx>
35 :
36 : #include <svtools/headbar.hxx>
37 : #include <svtools/stdctrl.hxx>
38 : #include <svtools/svmedit.hxx>
39 :
40 : #include <unotools/syslocale.hxx>
41 :
42 : #include <vcl/edit.hxx>
43 : #include <vcl/field.hxx>
44 : #include <vcl/layout.hxx>
45 : #include <vcl/lstbox.hxx>
46 : #include <vcl/scrbar.hxx>
47 : #include <vcl/fixed.hxx>
48 : #include <vcl/ctrl.hxx>
49 :
50 : #include <sfx2/tabdlg.hxx>
51 :
52 : namespace com { namespace sun { namespace star {
53 : namespace document {
54 : class XDocumentProperties;
55 : }
56 : } } }
57 :
58 : struct CustomProperty;
59 :
60 : // class SfxDocumentInfoItem ---------------------------------------------
61 :
62 : class SFX2_DLLPUBLIC SfxDocumentInfoItem : public SfxStringItem
63 : {
64 : private:
65 : sal_Int32 m_AutoloadDelay;
66 : OUString m_AutoloadURL;
67 : bool m_isAutoloadEnabled;
68 : OUString m_DefaultTarget;
69 : OUString m_TemplateName;
70 : OUString m_Author;
71 : ::com::sun::star::util::DateTime m_CreationDate;
72 : OUString m_ModifiedBy;
73 : ::com::sun::star::util::DateTime m_ModificationDate;
74 : OUString m_PrintedBy;
75 : ::com::sun::star::util::DateTime m_PrintDate;
76 : sal_Int16 m_EditingCycles;
77 : sal_Int32 m_EditingDuration;
78 : OUString m_Description;
79 : OUString m_Keywords;
80 : OUString m_Subject;
81 : OUString m_Title;
82 : bool m_bHasTemplate;
83 : bool m_bDeleteUserData;
84 : bool m_bUseUserData;
85 : std::vector< CustomProperty* > m_aCustomProperties;
86 : ::com::sun::star::uno::Sequence< ::com::sun::star::document::CmisProperty > m_aCmisProperties;
87 :
88 : public:
89 : TYPEINFO_OVERRIDE();
90 : SfxDocumentInfoItem();
91 : SfxDocumentInfoItem( const OUString &rFileName,
92 : const ::com::sun::star::uno::Reference<
93 : ::com::sun::star::document::XDocumentProperties> & i_xDocProps,
94 : const ::com::sun::star::uno::Sequence<
95 : ::com::sun::star::document::CmisProperty> & i_cmisProps,
96 : bool bUseUserData );
97 : SfxDocumentInfoItem( const SfxDocumentInfoItem& );
98 : virtual ~SfxDocumentInfoItem();
99 :
100 : /// update i_xDocProps with the data in this object
101 : void UpdateDocumentInfo(
102 : const ::com::sun::star::uno::Reference<
103 : ::com::sun::star::document::XDocumentProperties> & i_xDocProps,
104 : bool i_bDoNotUpdateUserDefined = false)
105 : const;
106 0 : bool isCmisDocument() const { return m_aCmisProperties.getLength() > 0;}
107 :
108 0 : bool isAutoloadEnabled() const { return m_isAutoloadEnabled; }
109 0 : void setAutoloadEnabled(bool i_val) { m_isAutoloadEnabled = i_val; }
110 0 : sal_Int32 getAutoloadDelay() const { return m_AutoloadDelay; }
111 0 : void setAutoloadDelay(sal_Int32 i_val) { m_AutoloadDelay = i_val; }
112 0 : OUString getAutoloadURL() const { return m_AutoloadURL; }
113 0 : void setAutoloadURL(const OUString& i_val) { m_AutoloadURL = i_val; }
114 0 : OUString getDefaultTarget() const { return m_DefaultTarget; }
115 0 : void setDefaultTarget(const OUString& i_val) { m_DefaultTarget = i_val; }
116 0 : OUString getTemplateName() const { return m_TemplateName; }
117 : void setTemplateName(const OUString& i_val) { m_TemplateName = i_val; }
118 0 : OUString getAuthor() const { return m_Author; }
119 0 : void setAuthor(const OUString& i_val) { m_Author = i_val; }
120 :
121 : ::com::sun::star::util::DateTime
122 0 : getCreationDate() const { return m_CreationDate; }
123 0 : void setCreationDate(::com::sun::star::util::DateTime i_val) {
124 0 : m_CreationDate = i_val;
125 0 : }
126 0 : OUString getModifiedBy() const { return m_ModifiedBy; }
127 0 : void setModifiedBy(const OUString& i_val) { m_ModifiedBy = i_val; }
128 :
129 : ::com::sun::star::util::DateTime
130 0 : getModificationDate() const { return m_ModificationDate; }
131 0 : void setModificationDate(::com::sun::star::util::DateTime i_val) {
132 0 : m_ModificationDate = i_val;
133 0 : }
134 0 : OUString getPrintedBy() const { return m_PrintedBy; }
135 0 : void setPrintedBy(const OUString& i_val) { m_PrintedBy = i_val; }
136 : ::com::sun::star::util::DateTime
137 0 : getPrintDate() const { return m_PrintDate; }
138 0 : void setPrintDate(::com::sun::star::util::DateTime i_val) {
139 0 : m_PrintDate = i_val;
140 0 : }
141 0 : sal_Int16 getEditingCycles() const { return m_EditingCycles; }
142 0 : void setEditingCycles(sal_Int16 i_val) { m_EditingCycles = i_val; }
143 0 : sal_Int32 getEditingDuration() const { return m_EditingDuration; }
144 0 : void setEditingDuration(sal_Int32 i_val) { m_EditingDuration = i_val; }
145 0 : OUString getDescription() const { return m_Description; }
146 0 : void setDescription(const OUString& i_val) { m_Description = i_val; }
147 0 : OUString getKeywords() const { return m_Keywords; }
148 0 : void setKeywords(const OUString& i_val) { m_Keywords = i_val; }
149 0 : OUString getSubject() const { return m_Subject; }
150 0 : void setSubject(const OUString& i_val) { m_Subject = i_val; }
151 0 : OUString getTitle() const { return m_Title; }
152 0 : void setTitle(const OUString& i_val) { m_Title = i_val; }
153 :
154 : /// reset user-specific data (author, modified-by, ...)
155 : void resetUserData(const OUString & i_rAuthor);
156 :
157 0 : void SetTemplate( bool b ) { m_bHasTemplate = b; }
158 0 : bool HasTemplate() const { return m_bHasTemplate; }
159 : void SetDeleteUserData( bool bSet );
160 : void SetUseUserData( bool bSet );
161 : bool IsDeleteUserData() const;
162 : bool IsUseUserData() const;
163 :
164 : std::vector< CustomProperty* > GetCustomProperties() const;
165 : void ClearCustomProperties();
166 : void AddCustomProperty( const OUString& sName,
167 : const com::sun::star::uno::Any& rValue );
168 :
169 : ::com::sun::star::uno::Sequence< ::com::sun::star::document::CmisProperty >
170 : GetCmisProperties() const;
171 :
172 : void SetCmisProperties(::com::sun::star::uno::Sequence< ::com::sun::star::document::CmisProperty > cmisProps );
173 : virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const SAL_OVERRIDE;
174 : virtual bool operator==( const SfxPoolItem& ) const SAL_OVERRIDE;
175 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const SAL_OVERRIDE;
176 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) SAL_OVERRIDE;
177 : };
178 :
179 : // class SfxDocumentPage -------------------------------------------------
180 :
181 0 : class SfxDocumentPage : public SfxTabPage
182 : {
183 : private:
184 : FixedImage* m_pBmp;
185 : Edit* m_pNameED;
186 : PushButton* m_pChangePassBtn;
187 :
188 : SelectableFixedText* m_pShowTypeFT;
189 : CheckBox* m_pReadOnlyCB;
190 : FixedText* m_pFileValFt;
191 : SelectableFixedText* m_pShowSizeFT;
192 :
193 : SelectableFixedText* m_pCreateValFt;
194 : SelectableFixedText* m_pChangeValFt;
195 : SelectableFixedText* m_pSignedValFt;
196 : PushButton* m_pSignatureBtn;
197 : SelectableFixedText* m_pPrintValFt;
198 : SelectableFixedText* m_pTimeLogValFt;
199 : SelectableFixedText* m_pDocNoValFt;
200 :
201 : CheckBox* m_pUseUserDataCB;
202 : PushButton* m_pDeleteBtn;
203 :
204 : FixedText* m_pTemplFt;
205 : SelectableFixedText* m_pTemplValFt;
206 :
207 : OUString m_aUnknownSize;
208 : OUString m_aMultiSignedStr;
209 :
210 : bool bEnableUseUserData : 1,
211 : bHandleDelete : 1;
212 :
213 : DECL_LINK(DeleteHdl, void *);
214 : DECL_LINK(SignatureHdl, void *);
215 : DECL_LINK(ChangePassHdl, void *);
216 : void ImplUpdateSignatures();
217 : void ImplCheckPasswordState();
218 :
219 : protected:
220 : SfxDocumentPage( Window* pParent, const SfxItemSet& );
221 :
222 : virtual bool FillItemSet( SfxItemSet& ) SAL_OVERRIDE;
223 : virtual void Reset( const SfxItemSet& ) SAL_OVERRIDE;
224 :
225 : public:
226 : static SfxTabPage* Create( Window* pParent, const SfxItemSet& );
227 :
228 : void EnableUseUserData();
229 : };
230 :
231 : // class SfxDocumentDescPage ---------------------------------------------
232 :
233 0 : class SfxDocumentDescPage : public SfxTabPage
234 : {
235 : private:
236 : Edit* m_pTitleEd;
237 : Edit* m_pThemaEd;
238 : Edit* m_pKeywordsEd;
239 : VclMultiLineEdit* m_pCommentEd;
240 : SfxDocumentInfoItem* m_pInfoItem;
241 :
242 : protected:
243 : SfxDocumentDescPage( Window* pParent, const SfxItemSet& );
244 :
245 : virtual bool FillItemSet( SfxItemSet& ) SAL_OVERRIDE;
246 : virtual void Reset( const SfxItemSet& ) SAL_OVERRIDE;
247 :
248 : public:
249 : static SfxTabPage* Create( Window* pParent, const SfxItemSet& );
250 : };
251 :
252 : // class SfxDocumentInfoDialog -------------------------------------------
253 :
254 0 : class SFX2_DLLPUBLIC SfxDocumentInfoDialog : public SfxTabDialog
255 : {
256 : private:
257 : sal_uInt16 m_nDocInfoId;
258 : protected:
259 : virtual void PageCreated( sal_uInt16 nId, SfxTabPage& rPage ) SAL_OVERRIDE;
260 :
261 : public:
262 : SfxDocumentInfoDialog( Window* pParent, const SfxItemSet& );
263 : void AddFontTabPage();
264 : };
265 :
266 : // class CustomPropertiesRemoveButton ------------------------------------
267 :
268 : struct CustomPropertyLine;
269 :
270 0 : class CustomPropertiesEdit : public Edit
271 : {
272 : private:
273 : CustomPropertyLine* m_pLine;
274 :
275 : public:
276 0 : inline CustomPropertiesEdit(
277 : Window* pParent, const ResId& rResId, CustomPropertyLine* pLine ) :
278 0 : Edit( pParent, rResId ), m_pLine( pLine ) {}
279 :
280 0 : inline CustomPropertyLine* GetLine() const { return m_pLine; }
281 : };
282 :
283 0 : class CustomPropertiesTypeBox : public ListBox
284 : {
285 : private:
286 : CustomPropertyLine* m_pLine;
287 :
288 : public:
289 0 : inline CustomPropertiesTypeBox(
290 : Window* pParent, const ResId& rResId, CustomPropertyLine* pLine ) :
291 0 : ListBox( pParent, rResId ), m_pLine( pLine ) {}
292 :
293 0 : inline CustomPropertyLine* GetLine() const { return m_pLine; }
294 : };
295 :
296 0 : class CustomPropertiesDateField : public DateField
297 : {
298 : private:
299 : CustomPropertyLine* m_pLine;
300 :
301 : public:
302 : ::boost::optional<sal_Int16> m_TZ;
303 :
304 0 : inline CustomPropertiesDateField(
305 : Window* pParent, const ResId& rResId, CustomPropertyLine* pLine ) :
306 0 : DateField( pParent, rResId ), m_pLine( pLine ) {}
307 :
308 : inline CustomPropertyLine* GetLine() const { return m_pLine; }
309 : };
310 0 : class CustomPropertiesTimeField : public TimeField
311 : {
312 : private:
313 : CustomPropertyLine* m_pLine;
314 :
315 : public:
316 : bool m_isUTC;
317 :
318 0 : inline CustomPropertiesTimeField(
319 : Window* pParent, const ResId& rResId, CustomPropertyLine* pLine ) :
320 0 : TimeField( pParent, rResId ), m_pLine( pLine ), m_isUTC(false) {}
321 :
322 : inline CustomPropertyLine* GetLine() const { return m_pLine; }
323 : };
324 : class CustomPropertiesDurationField : public Edit
325 : {
326 : CustomPropertyLine* m_pLine;
327 : com::sun::star::util::Duration m_aDuration;
328 : protected:
329 : virtual void RequestHelp(const HelpEvent& rEvt) SAL_OVERRIDE;
330 : public:
331 : CustomPropertiesDurationField( Window* pParent, const ResId& rResId, CustomPropertyLine* pLine );
332 : virtual ~CustomPropertiesDurationField();
333 :
334 : void SetDuration( const com::sun::star::util::Duration& rDuration );
335 0 : const com::sun::star::util::Duration& GetDuration() const { return m_aDuration; }
336 : };
337 :
338 : class CustomPropertiesEditButton : public PushButton
339 : {
340 : CustomPropertyLine* m_pLine;
341 :
342 : public:
343 : CustomPropertiesEditButton( Window* pParent, const ResId& rResId, CustomPropertyLine* pLine );
344 : virtual ~CustomPropertiesEditButton();
345 :
346 : DECL_LINK(ClickHdl, void *);
347 : };
348 :
349 0 : class CustomPropertiesRemoveButton : public ImageButton
350 : {
351 : private:
352 : CustomPropertyLine* m_pLine;
353 :
354 : public:
355 0 : inline CustomPropertiesRemoveButton(
356 : Window* pParent, const ResId& rResId, CustomPropertyLine* pLine ) :
357 0 : ImageButton( pParent, rResId ), m_pLine( pLine ) {}
358 :
359 0 : inline CustomPropertyLine* GetLine() const { return m_pLine; }
360 : };
361 :
362 0 : class CustomPropertiesYesNoButton : public Control
363 : {
364 : private:
365 : RadioButton m_aYesButton;
366 : RadioButton m_aNoButton;
367 :
368 : public:
369 : CustomPropertiesYesNoButton( Window* pParent, const ResId& rResId );
370 :
371 : virtual void Resize() SAL_OVERRIDE;
372 :
373 0 : inline void CheckYes() { m_aYesButton.Check(); }
374 0 : inline void CheckNo() { m_aNoButton.Check(); }
375 0 : inline bool IsYesChecked() const { return m_aYesButton.IsChecked(); }
376 : };
377 :
378 : // struct CustomPropertyLine ---------------------------------------------
379 :
380 0 : struct CustomPropertyLine
381 : {
382 : ComboBox m_aNameBox;
383 : CustomPropertiesTypeBox m_aTypeBox;
384 : CustomPropertiesEdit m_aValueEdit;
385 : CustomPropertiesDateField m_aDateField;
386 : CustomPropertiesTimeField m_aTimeField;
387 : const OUString m_sDurationFormat;
388 : CustomPropertiesDurationField m_aDurationField;
389 : CustomPropertiesEditButton m_aEditButton;
390 : CustomPropertiesYesNoButton m_aYesNoButton;
391 : CustomPropertiesRemoveButton m_aRemoveButton;
392 :
393 : Point m_aDatePos;
394 : Point m_aTimePos;
395 : Size m_aDateTimeSize;
396 :
397 : bool m_bIsRemoved;
398 : bool m_bTypeLostFocus;
399 :
400 : CustomPropertyLine( Window* pParent );
401 :
402 : void SetRemoved();
403 : };
404 :
405 : // class CustomPropertiesWindow ------------------------------------------
406 :
407 : class CustomPropertiesWindow : public Window
408 : {
409 : private:
410 : ComboBox m_aNameBox;
411 : ListBox m_aTypeBox;
412 : Edit m_aValueEdit;
413 : DateField m_aDateField;
414 : TimeField m_aTimeField;
415 : Edit m_aDurationField;
416 : PushButton m_aEditButton;
417 : CustomPropertiesYesNoButton m_aYesNoButton;
418 : ImageButton m_aRemoveButton;
419 :
420 : sal_Int32 m_nLineHeight;
421 : sal_Int32 m_nScrollPos;
422 : SvtSysLocale m_aSysLocale;
423 : std::vector< CustomPropertyLine* > m_aCustomPropertiesLines;
424 : CustomPropertyLine* m_pCurrentLine;
425 : SvNumberFormatter m_aNumberFormatter;
426 : Timer m_aEditLoseFocusTimer;
427 : Timer m_aBoxLoseFocusTimer;
428 : Link m_aRemovedHdl;
429 :
430 : DECL_LINK( TypeHdl, CustomPropertiesTypeBox* );
431 : DECL_LINK( RemoveHdl, CustomPropertiesRemoveButton* );
432 : DECL_LINK( EditLoseFocusHdl, CustomPropertiesEdit* );
433 : DECL_LINK( BoxLoseFocusHdl, CustomPropertiesTypeBox* );
434 : //add lose focus handlers of Date/TimeField?
435 :
436 : DECL_LINK(EditTimeoutHdl, void *);
437 : DECL_LINK(BoxTimeoutHdl, void *);
438 :
439 : bool IsLineValid( CustomPropertyLine* pLine ) const;
440 : void ValidateLine( CustomPropertyLine* pLine, bool bIsFromTypeBox );
441 :
442 : public:
443 : CustomPropertiesWindow(Window* pParent,
444 : const OUString &rHeaderAccName,
445 : const OUString &rHeaderAccType,
446 : const OUString &rHeaderAccValue);
447 : virtual ~CustomPropertiesWindow();
448 :
449 : void InitControls( HeaderBar* pHeaderBar, const ScrollBar* pScrollBar );
450 : sal_uInt16 GetVisibleLineCount() const;
451 0 : inline sal_Int32 GetLineHeight() const { return m_nLineHeight; }
452 : void AddLine( const OUString& sName, com::sun::star::uno::Any& rAny );
453 : bool AreAllLinesValid() const;
454 : void ClearAllLines();
455 : void DoScroll( sal_Int32 nNewPos );
456 :
457 : ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >
458 : GetCustomProperties() const;
459 0 : void SetRemovedHdl( const Link& rLink ) { m_aRemovedHdl = rLink; }
460 :
461 : void InitRemoveButton(const ScrollBar &rScrollBar);
462 : void updateLineWidth();
463 : };
464 :
465 : // class CustomPropertiesControl -----------------------------------------
466 :
467 : class CustomPropertiesControl : public VclVBox
468 : {
469 : private:
470 : HeaderBar* m_pHeaderBar;
471 : VclHBox* m_pBody;
472 : CustomPropertiesWindow* m_pPropertiesWin;
473 : ScrollBar* m_pVertScroll;
474 :
475 : sal_Int32 m_nThumbPos;
476 :
477 : DECL_LINK( ScrollHdl, ScrollBar* );
478 : DECL_LINK( RemovedHdl, void* );
479 :
480 : public:
481 : CustomPropertiesControl(Window* pParent);
482 : virtual ~CustomPropertiesControl();
483 :
484 : void AddLine( const OUString& sName, com::sun::star::uno::Any& rAny, bool bInteractive );
485 :
486 0 : inline bool AreAllLinesValid() const { return m_pPropertiesWin->AreAllLinesValid(); }
487 0 : inline void ClearAllLines() { m_pPropertiesWin->ClearAllLines(); }
488 : inline ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >
489 0 : GetCustomProperties() const
490 0 : { return m_pPropertiesWin->GetCustomProperties(); }
491 : void Init(VclBuilderContainer& rParent);
492 : virtual void setAllocation(const Size &rAllocation) SAL_OVERRIDE;
493 : };
494 :
495 : // class SfxCustomPropertiesPage -----------------------------------------
496 :
497 0 : class SfxCustomPropertiesPage : public SfxTabPage
498 : {
499 : private:
500 : CustomPropertiesControl* m_pPropertiesCtrl;
501 :
502 : DECL_LINK(AddHdl, void *);
503 :
504 : using TabPage::DeactivatePage;
505 :
506 : protected:
507 : SfxCustomPropertiesPage( Window* pParent, const SfxItemSet& );
508 :
509 : virtual bool FillItemSet( SfxItemSet& ) SAL_OVERRIDE;
510 : virtual void Reset( const SfxItemSet& ) SAL_OVERRIDE;
511 : virtual int DeactivatePage( SfxItemSet* pSet = NULL ) SAL_OVERRIDE;
512 :
513 : public:
514 : static SfxTabPage* Create( Window* pParent, const SfxItemSet& );
515 : };
516 :
517 0 : struct CmisValue : public VclBuilderContainer
518 : {
519 : Edit* m_aValueEdit;
520 :
521 : CmisValue( Window* pParent, const OUString& aStr );
522 : };
523 :
524 0 : struct CmisDateTime : public VclBuilderContainer
525 : {
526 : DateField* m_aDateField;
527 : TimeField* m_aTimeField;
528 :
529 : CmisDateTime( Window* pParent, const ::com::sun::star::util::DateTime& aDateTime );
530 : };
531 :
532 0 : struct CmisYesNo : public VclBuilderContainer
533 : {
534 : RadioButton* m_aYesButton;
535 : RadioButton* m_aNoButton;
536 :
537 : CmisYesNo( Window* pParent, bool bValue);
538 : };
539 :
540 : // struct CmisPropertyLine ---------------------------------------------
541 :
542 : struct CmisPropertyLine : public VclBuilderContainer
543 : {
544 : VclFrame* m_pFrame;
545 : OUString m_sId;
546 : OUString m_sType;
547 : bool m_bUpdatable;
548 : bool m_bRequired;
549 : bool m_bMultiValued;
550 : bool m_bOpenChoice;
551 : FixedText* m_aName;
552 : FixedText* m_aType;
553 : std::vector< CmisValue* > m_aValues;
554 : std::vector< CmisDateTime* > m_aDateTimes;
555 : std::vector< CmisYesNo* > m_aYesNos;
556 : sal_Int32 m_nNumValue;
557 : long getItemHeight() const;
558 : CmisPropertyLine( Window* pParent );
559 : virtual ~CmisPropertyLine();
560 : };
561 :
562 : // class CmisPropertiesWindow ------------------------------------------
563 :
564 : class CmisPropertiesWindow
565 : {
566 : private:
567 : VclBox* m_pBox;
568 : sal_Int32 m_nItemHeight;
569 : SvNumberFormatter m_aNumberFormatter;
570 : std::vector< CmisPropertyLine* > m_aCmisPropertiesLines;
571 : public:
572 : CmisPropertiesWindow(SfxTabPage* pParent);
573 : ~CmisPropertiesWindow();
574 :
575 : sal_uInt16 GetLineCount() const;
576 0 : inline sal_Int32 GetItemHeight() const { return m_nItemHeight; }
577 : void AddLine( const OUString& sId, const OUString& sName,
578 : const OUString& sType, const bool bUpdatable,
579 : const bool bRequired, const bool bMultiValued,
580 : const bool bOpenChoice,
581 : com::sun::star::uno::Any& aChoices,
582 : com::sun::star::uno::Any& rAny );
583 : void ClearAllLines();
584 : void DoScroll( sal_Int32 nNewPos );
585 :
586 : ::com::sun::star::uno::Sequence< ::com::sun::star::document::CmisProperty >
587 : GetCmisProperties() const;
588 : };
589 :
590 : // class CmisPropertiesControl -----------------------------------------
591 :
592 0 : class CmisPropertiesControl
593 : {
594 : private:
595 : CmisPropertiesWindow m_pPropertiesWin;
596 : VclScrolledWindow& m_rScrolledWindow;
597 : ScrollBar& m_rVertScroll;
598 : DECL_LINK( ScrollHdl, ScrollBar* );
599 :
600 : void checkAutoVScroll();
601 :
602 : public:
603 : CmisPropertiesControl(SfxTabPage* pParent);
604 : void setScrollRange();
605 :
606 : void AddLine( const OUString& sId, const OUString& sName,
607 : const OUString& sType, const bool bUpdatable,
608 : const bool bRequired, const bool bMultiValude,
609 : const bool bOpenChoice,
610 : com::sun::star::uno::Any& aChoices,
611 : com::sun::star::uno::Any& rAny );
612 :
613 : void ClearAllLines();
614 : inline ::com::sun::star::uno::Sequence< ::com::sun::star::document::CmisProperty >
615 0 : GetCmisProperties() const
616 0 : { return m_pPropertiesWin.GetCmisProperties(); }
617 : };
618 :
619 : // class SfxCmisPropertiesPage -------------------------------------------------
620 :
621 0 : class SfxCmisPropertiesPage : public SfxTabPage
622 : {
623 : private:
624 : CmisPropertiesControl m_pPropertiesCtrl;
625 : using TabPage::DeactivatePage;
626 : DECL_LINK(UpdateHdl, void *);
627 :
628 : protected:
629 : SfxCmisPropertiesPage( Window* pParent, const SfxItemSet& );
630 :
631 : virtual bool FillItemSet( SfxItemSet& ) SAL_OVERRIDE;
632 : virtual void Reset( const SfxItemSet& ) SAL_OVERRIDE;
633 : virtual int DeactivatePage( SfxItemSet* pSet = NULL ) SAL_OVERRIDE;
634 :
635 : public:
636 : static SfxTabPage* Create( Window* pParent, const SfxItemSet& );
637 : };
638 :
639 : #endif // #ifndef _ INCLUDED_SFX2_DINFDLG_HXX
640 :
641 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|