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 0 : bool IsDeleteUserData() const { return m_bDeleteUserData;}
162 0 : bool IsUseUserData() const { return m_bUseUserData;}
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 0 : GetCmisProperties() const { return m_aCmisProperties;}
171 :
172 : void SetCmisProperties(const ::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( vcl::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( vcl::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( vcl::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( vcl::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( vcl::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 : vcl::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 : vcl::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 : vcl::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 : vcl::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( vcl::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( vcl::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 : vcl::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( vcl::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 : bool m_bIsDate;
394 : bool m_bIsRemoved;
395 : bool m_bTypeLostFocus;
396 :
397 : CustomPropertyLine( vcl::Window* pParent );
398 :
399 : void SetRemoved();
400 : };
401 :
402 : // class CustomPropertiesWindow ------------------------------------------
403 :
404 : class CustomPropertiesWindow : public vcl::Window
405 : {
406 : private:
407 : FixedText* m_pHeaderAccName;
408 : FixedText* m_pHeaderAccType;
409 : FixedText* m_pHeaderAccValue;
410 :
411 : ComboBox m_aNameBox;
412 : ListBox m_aTypeBox;
413 : Edit m_aValueEdit;
414 : DateField m_aDateField;
415 : TimeField m_aTimeField;
416 : Edit m_aDurationField;
417 : PushButton m_aEditButton;
418 : CustomPropertiesYesNoButton m_aYesNoButton;
419 : ImageButton m_aRemoveButton;
420 :
421 : sal_Int32 m_nLineHeight;
422 : sal_Int32 m_nScrollPos;
423 : SvtSysLocale m_aSysLocale;
424 : std::vector< CustomPropertyLine* > m_aCustomPropertiesLines;
425 : CustomPropertyLine* m_pCurrentLine;
426 : SvNumberFormatter m_aNumberFormatter;
427 : Timer m_aEditLoseFocusTimer;
428 : Timer m_aBoxLoseFocusTimer;
429 : Link m_aRemovedHdl;
430 :
431 : DECL_LINK( TypeHdl, CustomPropertiesTypeBox* );
432 : DECL_LINK( RemoveHdl, CustomPropertiesRemoveButton* );
433 : DECL_LINK( EditLoseFocusHdl, CustomPropertiesEdit* );
434 : DECL_LINK( BoxLoseFocusHdl, CustomPropertiesTypeBox* );
435 : //add lose focus handlers of Date/TimeField?
436 :
437 : DECL_LINK(EditTimeoutHdl, void *);
438 : DECL_LINK(BoxTimeoutHdl, void *);
439 :
440 : bool IsLineValid( CustomPropertyLine* pLine ) const;
441 : void ValidateLine( CustomPropertyLine* pLine, bool bIsFromTypeBox );
442 :
443 : public:
444 : CustomPropertiesWindow(vcl::Window* pParent,
445 : FixedText *pHeaderAccName,
446 : FixedText *pHeaderAccType,
447 : FixedText *pHeaderAccValue);
448 : virtual ~CustomPropertiesWindow();
449 :
450 : bool InitControls( HeaderBar* pHeaderBar, const ScrollBar* pScrollBar );
451 : sal_uInt16 GetVisibleLineCount() const;
452 0 : inline sal_Int32 GetLineHeight() const { return m_nLineHeight; }
453 : void AddLine( const OUString& sName, com::sun::star::uno::Any& rAny );
454 : bool AreAllLinesValid() const;
455 : void ClearAllLines();
456 : void DoScroll( sal_Int32 nNewPos );
457 :
458 : ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >
459 : GetCustomProperties() const;
460 0 : void SetRemovedHdl( const Link& rLink ) { m_aRemovedHdl = rLink; }
461 :
462 : void InitRemoveButton(const ScrollBar &rScrollBar);
463 : void updateLineWidth();
464 : };
465 :
466 : // class CustomPropertiesControl -----------------------------------------
467 :
468 : class CustomPropertiesControl : public vcl::Window
469 : {
470 : private:
471 : VclVBox* m_pVBox;
472 : HeaderBar* m_pHeaderBar;
473 : VclHBox* m_pBody;
474 : CustomPropertiesWindow* m_pPropertiesWin;
475 : ScrollBar* m_pVertScroll;
476 :
477 : sal_Int32 m_nThumbPos;
478 :
479 : DECL_LINK( ScrollHdl, ScrollBar* );
480 : DECL_LINK( RemovedHdl, void* );
481 :
482 : public:
483 : CustomPropertiesControl(vcl::Window* pParent);
484 : virtual ~CustomPropertiesControl();
485 :
486 : void AddLine( const OUString& sName, com::sun::star::uno::Any& rAny, bool bInteractive );
487 :
488 0 : inline bool AreAllLinesValid() const { return m_pPropertiesWin->AreAllLinesValid(); }
489 0 : inline void ClearAllLines() { m_pPropertiesWin->ClearAllLines(); }
490 : inline ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >
491 0 : GetCustomProperties() const
492 0 : { return m_pPropertiesWin->GetCustomProperties(); }
493 : void Init(VclBuilderContainer& rParent);
494 : virtual void Resize() SAL_OVERRIDE;
495 : };
496 :
497 : // class SfxCustomPropertiesPage -----------------------------------------
498 :
499 0 : class SfxCustomPropertiesPage : public SfxTabPage
500 : {
501 : private:
502 : CustomPropertiesControl* m_pPropertiesCtrl;
503 :
504 : DECL_LINK(AddHdl, void *);
505 :
506 : using TabPage::DeactivatePage;
507 :
508 : protected:
509 : SfxCustomPropertiesPage( vcl::Window* pParent, const SfxItemSet& );
510 :
511 : virtual bool FillItemSet( SfxItemSet* ) SAL_OVERRIDE;
512 : virtual void Reset( const SfxItemSet* ) SAL_OVERRIDE;
513 : virtual int DeactivatePage( SfxItemSet* pSet = NULL ) SAL_OVERRIDE;
514 :
515 : public:
516 : static SfxTabPage* Create( vcl::Window* pParent, const SfxItemSet* );
517 : };
518 :
519 0 : struct CmisValue : public VclBuilderContainer
520 : {
521 : Edit* m_aValueEdit;
522 :
523 : CmisValue( vcl::Window* pParent, const OUString& aStr );
524 : };
525 :
526 0 : struct CmisDateTime : public VclBuilderContainer
527 : {
528 : DateField* m_aDateField;
529 : TimeField* m_aTimeField;
530 :
531 : CmisDateTime( vcl::Window* pParent, const ::com::sun::star::util::DateTime& aDateTime );
532 : };
533 :
534 0 : struct CmisYesNo : public VclBuilderContainer
535 : {
536 : RadioButton* m_aYesButton;
537 : RadioButton* m_aNoButton;
538 :
539 : CmisYesNo( vcl::Window* pParent, bool bValue);
540 : };
541 :
542 : // struct CmisPropertyLine ---------------------------------------------
543 :
544 : struct CmisPropertyLine : public VclBuilderContainer
545 : {
546 : VclFrame* m_pFrame;
547 : OUString m_sId;
548 : OUString m_sType;
549 : bool m_bUpdatable;
550 : bool m_bRequired;
551 : bool m_bMultiValued;
552 : bool m_bOpenChoice;
553 : FixedText* m_aName;
554 : FixedText* m_aType;
555 : std::vector< CmisValue* > m_aValues;
556 : std::vector< CmisDateTime* > m_aDateTimes;
557 : std::vector< CmisYesNo* > m_aYesNos;
558 : sal_Int32 m_nNumValue;
559 : long getItemHeight() const;
560 : CmisPropertyLine( vcl::Window* pParent );
561 : virtual ~CmisPropertyLine();
562 : };
563 :
564 : // class CmisPropertiesWindow ------------------------------------------
565 :
566 : class CmisPropertiesWindow
567 : {
568 : private:
569 : VclBox* m_pBox;
570 : sal_Int32 m_nItemHeight;
571 : SvNumberFormatter m_aNumberFormatter;
572 : std::vector< CmisPropertyLine* > m_aCmisPropertiesLines;
573 : public:
574 : CmisPropertiesWindow(SfxTabPage* pParent);
575 : ~CmisPropertiesWindow();
576 :
577 : sal_uInt16 GetLineCount() const;
578 0 : inline sal_Int32 GetItemHeight() const { return m_nItemHeight; }
579 : void AddLine( const OUString& sId, const OUString& sName,
580 : const OUString& sType, const bool bUpdatable,
581 : const bool bRequired, const bool bMultiValued,
582 : const bool bOpenChoice,
583 : com::sun::star::uno::Any& aChoices,
584 : com::sun::star::uno::Any& rAny );
585 : void ClearAllLines();
586 : void DoScroll( sal_Int32 nNewPos );
587 :
588 : ::com::sun::star::uno::Sequence< ::com::sun::star::document::CmisProperty >
589 : GetCmisProperties() const;
590 : };
591 :
592 : // class CmisPropertiesControl -----------------------------------------
593 :
594 0 : class CmisPropertiesControl
595 : {
596 : private:
597 : CmisPropertiesWindow m_pPropertiesWin;
598 : VclScrolledWindow& m_rScrolledWindow;
599 : ScrollBar& m_rVertScroll;
600 : DECL_LINK( ScrollHdl, ScrollBar* );
601 :
602 : void checkAutoVScroll();
603 :
604 : public:
605 : CmisPropertiesControl(SfxTabPage* pParent);
606 : void setScrollRange();
607 :
608 : void AddLine( const OUString& sId, const OUString& sName,
609 : const OUString& sType, const bool bUpdatable,
610 : const bool bRequired, const bool bMultiValude,
611 : const bool bOpenChoice,
612 : com::sun::star::uno::Any& aChoices,
613 : com::sun::star::uno::Any& rAny );
614 :
615 : void ClearAllLines();
616 : inline ::com::sun::star::uno::Sequence< ::com::sun::star::document::CmisProperty >
617 0 : GetCmisProperties() const
618 0 : { return m_pPropertiesWin.GetCmisProperties(); }
619 : };
620 :
621 : // class SfxCmisPropertiesPage -------------------------------------------------
622 :
623 0 : class SfxCmisPropertiesPage : public SfxTabPage
624 : {
625 : private:
626 : CmisPropertiesControl m_pPropertiesCtrl;
627 : using TabPage::DeactivatePage;
628 : DECL_LINK(UpdateHdl, void *);
629 :
630 : protected:
631 : SfxCmisPropertiesPage( vcl::Window* pParent, const SfxItemSet& );
632 :
633 : virtual bool FillItemSet( SfxItemSet* ) SAL_OVERRIDE;
634 : virtual void Reset( const SfxItemSet* ) SAL_OVERRIDE;
635 : virtual int DeactivatePage( SfxItemSet* pSet = NULL ) SAL_OVERRIDE;
636 :
637 : public:
638 : static SfxTabPage* Create( vcl::Window* pParent, const SfxItemSet* );
639 : };
640 :
641 : #endif // #ifndef _ INCLUDED_SFX2_DINFDLG_HXX
642 :
643 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|