1*2d839242SAndre Fischer /**************************************************************
2*2d839242SAndre Fischer *
3*2d839242SAndre Fischer * Licensed to the Apache Software Foundation (ASF) under one
4*2d839242SAndre Fischer * or more contributor license agreements. See the NOTICE file
5*2d839242SAndre Fischer * distributed with this work for additional information
6*2d839242SAndre Fischer * regarding copyright ownership. The ASF licenses this file
7*2d839242SAndre Fischer * to you under the Apache License, Version 2.0 (the
8*2d839242SAndre Fischer * "License"); you may not use this file except in compliance
9*2d839242SAndre Fischer * with the License. You may obtain a copy of the License at
10*2d839242SAndre Fischer *
11*2d839242SAndre Fischer * http://www.apache.org/licenses/LICENSE-2.0
12*2d839242SAndre Fischer *
13*2d839242SAndre Fischer * Unless required by applicable law or agreed to in writing,
14*2d839242SAndre Fischer * software distributed under the License is distributed on an
15*2d839242SAndre Fischer * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*2d839242SAndre Fischer * KIND, either express or implied. See the License for the
17*2d839242SAndre Fischer * specific language governing permissions and limitations
18*2d839242SAndre Fischer * under the License.
19*2d839242SAndre Fischer *
20*2d839242SAndre Fischer *************************************************************/
21*2d839242SAndre Fischer
22*2d839242SAndre Fischer #include "precompiled_svx.hxx"
23*2d839242SAndre Fischer
24*2d839242SAndre Fischer #include "ColorPanel.hxx"
25*2d839242SAndre Fischer
26*2d839242SAndre Fischer #include <vcl/image.hxx>
27*2d839242SAndre Fischer #include <vcl/svapp.hxx>
28*2d839242SAndre Fischer
29*2d839242SAndre Fischer namespace svx { namespace sidebar {
30*2d839242SAndre Fischer
ColorPanel(::Window * pParent)31*2d839242SAndre Fischer ColorPanel::ColorPanel (::Window* pParent)
32*2d839242SAndre Fischer : ValueSet(pParent),
33*2d839242SAndre Fischer mnPreferredColumnCount(2)
34*2d839242SAndre Fischer {
35*2d839242SAndre Fischer WinBits aStyle =
36*2d839242SAndre Fischer WB_ITEMBORDER
37*2d839242SAndre Fischer | WB_DOUBLEBORDER
38*2d839242SAndre Fischer | WB_NAMEFIELD
39*2d839242SAndre Fischer | WB_FLATVALUESET
40*2d839242SAndre Fischer | WB_TABSTOP
41*2d839242SAndre Fischer | WB_VSCROLL;
42*2d839242SAndre Fischer
43*2d839242SAndre Fischer SetStyle(GetStyle() | aStyle);
44*2d839242SAndre Fischer SetExtraSpacing(2);
45*2d839242SAndre Fischer
46*2d839242SAndre Fischer Fill ();
47*2d839242SAndre Fischer Show();
48*2d839242SAndre Fischer }
49*2d839242SAndre Fischer
50*2d839242SAndre Fischer
51*2d839242SAndre Fischer
52*2d839242SAndre Fischer
~ColorPanel(void)53*2d839242SAndre Fischer ColorPanel::~ColorPanel (void)
54*2d839242SAndre Fischer {
55*2d839242SAndre Fischer }
56*2d839242SAndre Fischer
57*2d839242SAndre Fischer
58*2d839242SAndre Fischer
59*2d839242SAndre Fischer
GetPreferredHeight(sal_Int32 nWidth)60*2d839242SAndre Fischer sal_Int32 ColorPanel::GetPreferredHeight (sal_Int32 nWidth)
61*2d839242SAndre Fischer {
62*2d839242SAndre Fischer sal_Int32 nPreferredHeight = 0;
63*2d839242SAndre Fischer if (GetItemCount()>0)
64*2d839242SAndre Fischer {
65*2d839242SAndre Fischer Image aImage = GetItemImage(GetItemId(0));
66*2d839242SAndre Fischer Size aItemSize = CalcItemSizePixel (aImage.GetSizePixel());
67*2d839242SAndre Fischer if (nWidth>0 && aItemSize.Width()>0)
68*2d839242SAndre Fischer {
69*2d839242SAndre Fischer int nColumnCount = nWidth / aItemSize.Width();
70*2d839242SAndre Fischer if (nColumnCount <= 0)
71*2d839242SAndre Fischer nColumnCount = 1;
72*2d839242SAndre Fischer else if (nColumnCount > 4)
73*2d839242SAndre Fischer nColumnCount = 4;
74*2d839242SAndre Fischer int nRowCount = (GetItemCount() + nColumnCount-1)
75*2d839242SAndre Fischer / nColumnCount;
76*2d839242SAndre Fischer nPreferredHeight = nRowCount * aItemSize.Height();
77*2d839242SAndre Fischer }
78*2d839242SAndre Fischer }
79*2d839242SAndre Fischer return nPreferredHeight;
80*2d839242SAndre Fischer }
81*2d839242SAndre Fischer
82*2d839242SAndre Fischer
83*2d839242SAndre Fischer
84*2d839242SAndre Fischer
Resize(void)85*2d839242SAndre Fischer void ColorPanel::Resize (void)
86*2d839242SAndre Fischer {
87*2d839242SAndre Fischer ::Window::Resize();
88*2d839242SAndre Fischer Size aWindowSize = GetOutputSizePixel();
89*2d839242SAndre Fischer SetPosSizePixel(Point(0,0), aWindowSize);
90*2d839242SAndre Fischer if (IsVisible() && aWindowSize.Width() > 0)
91*2d839242SAndre Fischer {
92*2d839242SAndre Fischer // Calculate the number of rows and columns.
93*2d839242SAndre Fischer if (GetItemCount() > 0)
94*2d839242SAndre Fischer {
95*2d839242SAndre Fischer Image aImage = GetItemImage(GetItemId(0));
96*2d839242SAndre Fischer Size aItemSize = CalcItemSizePixel (
97*2d839242SAndre Fischer aImage.GetSizePixel());
98*2d839242SAndre Fischer int nColumnCount = aWindowSize.Width() / 30;
99*2d839242SAndre Fischer if (nColumnCount < 1)
100*2d839242SAndre Fischer nColumnCount = 1;
101*2d839242SAndre Fischer else if (nColumnCount > 4)
102*2d839242SAndre Fischer nColumnCount = 4;
103*2d839242SAndre Fischer
104*2d839242SAndre Fischer sal_uInt16 nRowCount = (sal_uInt16)CalculateRowCount(aItemSize, nColumnCount);
105*2d839242SAndre Fischer
106*2d839242SAndre Fischer SetColCount((sal_uInt16)nColumnCount);
107*2d839242SAndre Fischer SetLineCount(nRowCount);
108*2d839242SAndre Fischer }
109*2d839242SAndre Fischer }
110*2d839242SAndre Fischer
111*2d839242SAndre Fischer }
112*2d839242SAndre Fischer
113*2d839242SAndre Fischer
114*2d839242SAndre Fischer
115*2d839242SAndre Fischer
CalculateRowCount(const Size &,int nColumnCount)116*2d839242SAndre Fischer int ColorPanel::CalculateRowCount (const Size&, int nColumnCount)
117*2d839242SAndre Fischer {
118*2d839242SAndre Fischer int nRowCount = 0;
119*2d839242SAndre Fischer
120*2d839242SAndre Fischer if (GetItemCount()>0 && nColumnCount>0)
121*2d839242SAndre Fischer {
122*2d839242SAndre Fischer nRowCount = GetOutputSizePixel().Height() / 30;
123*2d839242SAndre Fischer if (nRowCount < 1)
124*2d839242SAndre Fischer nRowCount = 1;
125*2d839242SAndre Fischer }
126*2d839242SAndre Fischer
127*2d839242SAndre Fischer return nRowCount;
128*2d839242SAndre Fischer }
129*2d839242SAndre Fischer
130*2d839242SAndre Fischer
131*2d839242SAndre Fischer
132*2d839242SAndre Fischer
DataChanged(const DataChangedEvent & rEvent)133*2d839242SAndre Fischer void ColorPanel::DataChanged (const DataChangedEvent& rEvent)
134*2d839242SAndre Fischer {
135*2d839242SAndre Fischer Fill();
136*2d839242SAndre Fischer }
137*2d839242SAndre Fischer
138*2d839242SAndre Fischer
139*2d839242SAndre Fischer
140*2d839242SAndre Fischer
Fill(void)141*2d839242SAndre Fischer void ColorPanel::Fill (void)
142*2d839242SAndre Fischer {
143*2d839242SAndre Fischer const StyleSettings& rSettings (
144*2d839242SAndre Fischer Application::GetSettings().GetStyleSettings());
145*2d839242SAndre Fischer Clear();
146*2d839242SAndre Fischer SetItemWidth (30);
147*2d839242SAndre Fischer SetItemHeight (30);
148*2d839242SAndre Fischer sal_uInt16 i = 0;
149*2d839242SAndre Fischer InsertItem (++i, rSettings.GetFaceColor());
150*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("FaceColor"));
151*2d839242SAndre Fischer InsertItem (++i, rSettings.GetCheckedColor());
152*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("CheckedColor"));
153*2d839242SAndre Fischer InsertItem (++i, rSettings.GetLightColor());
154*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("LightColor"));
155*2d839242SAndre Fischer InsertItem (++i, rSettings.GetLightBorderColor());
156*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("LightBorderColor"));
157*2d839242SAndre Fischer InsertItem (++i, rSettings.GetShadowColor());
158*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("ShadowColor"));
159*2d839242SAndre Fischer InsertItem (++i, rSettings.GetDarkShadowColor());
160*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("DarkShadowColor"));
161*2d839242SAndre Fischer InsertItem (++i, rSettings.GetButtonTextColor());
162*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("ButtonTextColor"));
163*2d839242SAndre Fischer InsertItem (++i, rSettings.GetRadioCheckTextColor());
164*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("RadioCheckTextColor"));
165*2d839242SAndre Fischer InsertItem (++i, rSettings.GetGroupTextColor());
166*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("GroupTextColor"));
167*2d839242SAndre Fischer InsertItem (++i, rSettings.GetLabelTextColor());
168*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("LabelTextColor"));
169*2d839242SAndre Fischer InsertItem (++i, rSettings.GetInfoTextColor());
170*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("InfoTextColor"));
171*2d839242SAndre Fischer InsertItem (++i, rSettings.GetWindowColor());
172*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("WindowColor"));
173*2d839242SAndre Fischer InsertItem (++i, rSettings.GetWindowTextColor());
174*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("WindowTextColor"));
175*2d839242SAndre Fischer InsertItem (++i, rSettings.GetDialogColor());
176*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("DialogColor"));
177*2d839242SAndre Fischer InsertItem (++i, rSettings.GetDialogTextColor());
178*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("DialogTextColor"));
179*2d839242SAndre Fischer InsertItem (++i, rSettings.GetWorkspaceColor());
180*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("WorkspaceColor"));
181*2d839242SAndre Fischer InsertItem (++i, rSettings.GetFieldColor());
182*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("FieldColor"));
183*2d839242SAndre Fischer InsertItem (++i, rSettings.GetFieldTextColor());
184*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("FieldTextColor"));
185*2d839242SAndre Fischer InsertItem (++i, rSettings.GetActiveColor());
186*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("ActiveColor"));
187*2d839242SAndre Fischer InsertItem (++i, rSettings.GetActiveColor2());
188*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("ActiveColor2"));
189*2d839242SAndre Fischer InsertItem (++i, rSettings.GetActiveTextColor());
190*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("ActiveTextColor"));
191*2d839242SAndre Fischer InsertItem (++i, rSettings.GetActiveBorderColor());
192*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("ActiveBorderColor"));
193*2d839242SAndre Fischer InsertItem (++i, rSettings.GetDeactiveColor());
194*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("DeactiveColor"));
195*2d839242SAndre Fischer InsertItem (++i, rSettings.GetDeactiveColor2());
196*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("DeactiveColor2"));
197*2d839242SAndre Fischer InsertItem (++i, rSettings.GetDeactiveTextColor());
198*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("DeactiveTextColor"));
199*2d839242SAndre Fischer InsertItem (++i, rSettings.GetDeactiveBorderColor());
200*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("DeactiveBorderColor"));
201*2d839242SAndre Fischer InsertItem (++i, rSettings.GetHighlightColor());
202*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("HighlightColor"));
203*2d839242SAndre Fischer InsertItem (++i, rSettings.GetHighlightTextColor());
204*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("HighlightTextColor"));
205*2d839242SAndre Fischer InsertItem (++i, rSettings.GetDisableColor());
206*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("DisableColor"));
207*2d839242SAndre Fischer InsertItem (++i, rSettings.GetHelpColor());
208*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("HelpColor"));
209*2d839242SAndre Fischer InsertItem (++i, rSettings.GetHelpTextColor());
210*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("HelpTextColor"));
211*2d839242SAndre Fischer InsertItem (++i, rSettings.GetMenuColor());
212*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("MenuColor"));
213*2d839242SAndre Fischer InsertItem (++i, rSettings.GetMenuBarColor());
214*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("MenuBarColor"));
215*2d839242SAndre Fischer InsertItem (++i, rSettings.GetMenuBorderColor());
216*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("MenuBorderColor"));
217*2d839242SAndre Fischer InsertItem (++i, rSettings.GetMenuTextColor());
218*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("MenuTextColor"));
219*2d839242SAndre Fischer InsertItem (++i, rSettings.GetMenuHighlightColor());
220*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("MenuHighlightColor"));
221*2d839242SAndre Fischer InsertItem (++i, rSettings.GetMenuHighlightTextColor());
222*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("MenuHighlightTextColor"));
223*2d839242SAndre Fischer InsertItem (++i, rSettings.GetLinkColor());
224*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("LinkColor"));
225*2d839242SAndre Fischer InsertItem (++i, rSettings.GetVisitedLinkColor());
226*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("VisitedLinkColor"));
227*2d839242SAndre Fischer InsertItem (++i, rSettings.GetHighlightLinkColor());
228*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("HighlightLinkColor"));
229*2d839242SAndre Fischer InsertItem (++i, rSettings.GetFontColor());
230*2d839242SAndre Fischer SetItemText (i, String::CreateFromAscii("FontColor"));
231*2d839242SAndre Fischer }
232*2d839242SAndre Fischer
233*2d839242SAndre Fischer } } // end of namespace ::svx::sidebar
234