xref: /trunk/main/svx/source/sidebar/ColorPanel.cxx (revision cf6516809c57e1bb0a940545cca99cdad54d4ce2)
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