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_CUI_SOURCE_INC_BORDER_HXX
20 : #define INCLUDED_CUI_SOURCE_INC_BORDER_HXX
21 :
22 : #include <svtools/ctrlbox.hxx>
23 : #include <vcl/group.hxx>
24 : #include <vcl/field.hxx>
25 : #include <vcl/fixed.hxx>
26 : #include <svtools/valueset.hxx>
27 : #include <sfx2/tabdlg.hxx>
28 : #include <svx/frmsel.hxx>
29 : #include <svx/flagsdef.hxx>
30 :
31 : #include <set>
32 :
33 : // forward ---------------------------------------------------------------
34 :
35 : namespace editeng
36 : {
37 : class SvxBorderLine;
38 : }
39 :
40 :
41 : class SvxBorderTabPage : public SfxTabPage
42 : {
43 : friend class VclPtr<SvxBorderTabPage>;
44 : using TabPage::DeactivatePage;
45 :
46 : static const sal_uInt16 pRanges[];
47 :
48 : public:
49 : virtual ~SvxBorderTabPage();
50 : virtual void dispose() SAL_OVERRIDE;
51 : static VclPtr<SfxTabPage> Create( vcl::Window* pParent,
52 : const SfxItemSet* rAttrSet);
53 0 : static const sal_uInt16* GetRanges() { return pRanges; }
54 :
55 : virtual bool FillItemSet( SfxItemSet* rCoreAttrs ) SAL_OVERRIDE;
56 : virtual void Reset( const SfxItemSet* ) SAL_OVERRIDE;
57 :
58 : void HideShadowControls();
59 : virtual void PageCreated(const SfxAllItemSet& aSet) SAL_OVERRIDE;
60 : void SetTableMode();
61 : protected:
62 : virtual sfxpg DeactivatePage( SfxItemSet* pSet = 0 ) SAL_OVERRIDE;
63 : virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
64 :
65 : private:
66 : SvxBorderTabPage( vcl::Window* pParent, const SfxItemSet& rCoreAttrs );
67 :
68 : // Controls
69 : VclPtr<ValueSet> m_pWndPresets;
70 : VclPtr<FixedText> m_pUserDefFT;
71 : VclPtr<svx::FrameSelector> m_pFrameSel;
72 :
73 : VclPtr<LineListBox> m_pLbLineStyle;
74 : VclPtr<ColorListBox> m_pLbLineColor;
75 : VclPtr<MetricField> m_pLineWidthMF;
76 :
77 : VclPtr<VclContainer> m_pSpacingFrame;
78 : VclPtr<FixedText> m_pLeftFT;
79 : VclPtr<MetricField> m_pLeftMF;
80 : VclPtr<FixedText> m_pRightFT;
81 : VclPtr<MetricField> m_pRightMF;
82 : VclPtr<FixedText> m_pTopFT;
83 : VclPtr<MetricField> m_pTopMF;
84 : VclPtr<FixedText> m_pBottomFT;
85 : VclPtr<MetricField> m_pBottomMF;
86 : VclPtr<CheckBox> m_pSynchronizeCB;
87 :
88 : VclPtr<VclContainer> m_pShadowFrame;
89 : VclPtr<ValueSet> m_pWndShadows;
90 : VclPtr<FixedText> m_pFtShadowSize;
91 : VclPtr<MetricField> m_pEdShadowSize;
92 : VclPtr<FixedText> m_pFtShadowColor;
93 : VclPtr<ColorListBox> m_pLbShadowColor;
94 :
95 :
96 : VclPtr<VclContainer> m_pPropertiesFrame;///< properties - "Merge with next paragraph" in Writer
97 : VclPtr<CheckBox> m_pMergeWithNextCB;
98 : // #i29550#
99 : VclPtr<CheckBox> m_pMergeAdjacentBordersCB;
100 :
101 : ImageList aShadowImgLstH;
102 : ImageList aShadowImgLst;
103 : ImageList aBorderImgLstH;
104 : ImageList aBorderImgLst;
105 :
106 : long nMinValue; ///< minimum distance
107 : SwBorderModes nSWMode; ///< table, textframe, paragraph
108 :
109 : bool mbHorEnabled; ///< true = Inner horizontal border enabled.
110 : bool mbVerEnabled; ///< true = Inner vertical border enabled.
111 : bool mbTLBREnabled; ///< true = Top-left to bottom-right border enabled.
112 : bool mbBLTREnabled; ///< true = Bottom-left to top-right border enabled.
113 : bool mbUseMarginItem;
114 : bool mbSync;
115 :
116 : std::set<sal_Int16> maUsedBorderStyles;
117 :
118 : // Handler
119 : DECL_LINK( SelStyleHdl_Impl, ListBox* );
120 : DECL_LINK( SelColHdl_Impl, ListBox* );
121 : DECL_LINK( SelPreHdl_Impl, void* );
122 : DECL_LINK( SelSdwHdl_Impl, void* );
123 : DECL_LINK( LinesChanged_Impl, void* );
124 : DECL_LINK( ModifyDistanceHdl_Impl, MetricField*);
125 : DECL_LINK( ModifyWidthHdl_Impl, void*);
126 : DECL_LINK( SyncHdl_Impl, CheckBox*);
127 :
128 : sal_uInt16 GetPresetImageId( sal_uInt16 nValueSetIdx ) const;
129 : sal_uInt16 GetPresetStringId( sal_uInt16 nValueSetIdx ) const;
130 :
131 : void FillPresetVS();
132 : void FillShadowVS();
133 : void FillValueSets();
134 :
135 : // Filler
136 : void FillLineListBox_Impl();
137 :
138 : /// share for individual Frame-/Core-Line
139 : void ResetFrameLine_Impl( svx::FrameBorderType eBorder,
140 : const editeng::SvxBorderLine* pCurLine,
141 : bool bValid );
142 :
143 : bool IsBorderLineStyleAllowed( sal_Int16 nStyle ) const;
144 : };
145 :
146 :
147 : #endif
148 :
149 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|