xref: /trunk/main/sc/source/ui/optdlg/opredlin.cxx (revision c7be74b1)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sc.hxx"
26 
27 #undef SC_DLLIMPLEMENTATION
28 
29 
30 
31 //------------------------------------------------------------------
32 
33 #include <svx/dlgutil.hxx>
34 #include <svx/drawitem.hxx>
35 #include <svx/xtable.hxx>
36 
37 #include "appoptio.hxx"
38 #include "scmod.hxx"
39 #include "scitems.hxx"
40 #include "tpview.hxx"
41 #include "global.hxx"
42 #include "viewopti.hxx"
43 #include "tabvwsh.hxx"
44 #include "uiitems.hxx"
45 #include "scresid.hxx"
46 #include "docsh.hxx"
47 #include "sc.hrc"       // -> Slot-IDs
48 #include "optdlg.hrc"
49 #include "globstr.hrc"
50 
51 #include "opredlin.hxx"
52 #include "opredlin.hrc"
53 
54 //------------------------------------------------------------------
55 
56 ScRedlineOptionsTabPage::ScRedlineOptionsTabPage( Window* pParent,
57 													const SfxItemSet& rSet )
58 	: SfxTabPage(pParent, ScResId(RID_SCPAGE_OPREDLINE), rSet),
59 	aContentFT      ( this, ScResId(FT_CONTENT	)),
60 	aContentColorLB ( this, ScResId(CLB_CONTENT	)),
61 	aRemoveFT       ( this, ScResId(FT_REMOVE	)),
62 	aRemoveColorLB	( this, ScResId(CLB_REMOVE	)),
63 	aInsertFT       ( this, ScResId(FT_INSERT	)),
64 	aInsertColorLB  ( this, ScResId(CLB_INSERT	)),
65 	aMoveFT         ( this, ScResId(FT_MOVE		)),
66 	aMoveColorLB    ( this, ScResId(CLB_MOVE	)),
67 	aChangedGB		( this, ScResId(GB_COLORCHGS)),
68 	aAuthorStr		(ScResId(STR_AUTHOR))
69 {
70 	FreeResource();
71 
72 	Link aLk = LINK(this, ScRedlineOptionsTabPage, ColorHdl);
73 	aContentColorLB.SetSelectHdl( aLk );
74 	aMoveColorLB.SetSelectHdl( aLk );
75 	aInsertColorLB.SetSelectHdl( aLk );
76 	aRemoveColorLB.SetSelectHdl( aLk );
77 }
78 
79 /*-----------------------------------------------------------------------
80 	Beschreibung:
81  -----------------------------------------------------------------------*/
82 
83 __EXPORT ScRedlineOptionsTabPage::~ScRedlineOptionsTabPage()
84 {
85 }
86 
87 /*-----------------------------------------------------------------------
88 	Beschreibung:
89  -----------------------------------------------------------------------*/
90 
91 SfxTabPage*	__EXPORT ScRedlineOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet )
92 {
93 	return new ScRedlineOptionsTabPage( pParent, rSet );
94 }
95 
96 /*-----------------------------------------------------------------------
97 	Beschreibung:
98  -----------------------------------------------------------------------*/
99 
100 sal_Bool __EXPORT ScRedlineOptionsTabPage::FillItemSet( SfxItemSet& /* rSet */ )
101 {
102 	ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
103 
104 	sal_uLong nNew=0;
105 	sal_uInt16 nPos=0;
106 
107 	nPos = aContentColorLB.GetSelectEntryPos();
108 	if (nPos != LISTBOX_ENTRY_NOTFOUND)
109 	{
110 		nPos = aContentColorLB.GetSelectEntryPos();
111 		if (nPos!=0)
112 			nNew= aContentColorLB.GetEntryColor(nPos).GetColor();
113 		else
114 			nNew= COL_TRANSPARENT;
115 
116 		aAppOptions.SetTrackContentColor(nNew);
117 
118 	}
119 	nPos = aMoveColorLB.GetSelectEntryPos();
120 	if (nPos != LISTBOX_ENTRY_NOTFOUND)
121 	{
122 		nPos = aMoveColorLB.GetSelectEntryPos();
123 		if (nPos!=0)
124 			nNew= aMoveColorLB.GetEntryColor(nPos).GetColor();
125 		else
126 			nNew= COL_TRANSPARENT;
127 
128 		aAppOptions.SetTrackMoveColor(nNew);
129 
130 	}
131 	nPos = aInsertColorLB.GetSelectEntryPos();
132 	if (nPos != LISTBOX_ENTRY_NOTFOUND)
133 	{
134 		nPos = aInsertColorLB.GetSelectEntryPos();
135 		if (nPos!=0)
136 			nNew= aInsertColorLB.GetEntryColor(nPos).GetColor();
137 		else
138 			nNew= COL_TRANSPARENT;
139 
140 		aAppOptions.SetTrackInsertColor(nNew);
141 
142 	}
143 	nPos = aRemoveColorLB.GetSelectEntryPos();
144 	if (nPos != LISTBOX_ENTRY_NOTFOUND)
145 	{
146 		nPos = aRemoveColorLB.GetSelectEntryPos();
147 		if (nPos!=0)
148 			nNew= aRemoveColorLB.GetEntryColor(nPos).GetColor();
149 		else
150 			nNew= COL_TRANSPARENT;
151 
152 		aAppOptions.SetTrackDeleteColor(nNew);
153 
154 	}
155 
156 	SC_MOD()->SetAppOptions(aAppOptions);
157 
158 	//	Repaint (wenn alles ueber Items laufen wuerde, wie es sich gehoert,
159 	//	waere das nicht noetig...)
160 	ScDocShell* pDocSh = PTR_CAST(ScDocShell, SfxObjectShell::Current());
161 	if (pDocSh)
162 		pDocSh->PostPaintGridAll();
163 
164 	return sal_False;
165 }
166 
167 /*-----------------------------------------------------------------------
168 	Beschreibung:
169  -----------------------------------------------------------------------*/
170 
171 void __EXPORT ScRedlineOptionsTabPage::Reset( const SfxItemSet& /* rSet */ )
172 {
173 
174 	XColorListSharedPtr aColorTbl = XColorList::GetStdColorList();
175 	aContentColorLB.InsertEntry(aAuthorStr);
176 	aMoveColorLB.InsertEntry(aAuthorStr);
177 	aInsertColorLB.InsertEntry(aAuthorStr);
178 	aRemoveColorLB.InsertEntry(aAuthorStr);
179 
180 	aContentColorLB.SetUpdateMode( sal_False);
181 	aMoveColorLB.SetUpdateMode( sal_False);
182 	aInsertColorLB.SetUpdateMode( sal_False);
183 	aRemoveColorLB.SetUpdateMode( sal_False);
184 
185 	for( sal_uInt16 i = 0; i < aColorTbl->Count(); ++i )
186 	{
187 		XColorEntry* pEntry = aColorTbl->GetColor( i );
188 		Color aColor = pEntry->GetColor();
189 		String sName = pEntry->GetName();
190 
191 		aContentColorLB.InsertEntry( aColor, sName );
192 		aMoveColorLB.InsertEntry( aColor, sName );
193 		aInsertColorLB.InsertEntry( aColor, sName );
194 		aRemoveColorLB.InsertEntry( aColor, sName );
195 	}
196 	aContentColorLB.SetUpdateMode( sal_True );
197 	aMoveColorLB.SetUpdateMode( sal_True );
198 	aInsertColorLB.SetUpdateMode( sal_True );
199 	aRemoveColorLB.SetUpdateMode( sal_True );
200 
201 
202 	ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
203 
204 	sal_uLong nColor = aAppOptions.GetTrackContentColor();
205 	if (nColor == COL_TRANSPARENT)
206 		aContentColorLB.SelectEntryPos(0);
207 	else
208 		aContentColorLB.SelectEntry(Color(nColor));
209 
210 	nColor = aAppOptions.GetTrackMoveColor();
211 	if (nColor == COL_TRANSPARENT)
212 		aMoveColorLB.SelectEntryPos(0);
213 	else
214 		aMoveColorLB.SelectEntry(Color(nColor));
215 
216 
217 	nColor = aAppOptions.GetTrackInsertColor();
218 	if (nColor == COL_TRANSPARENT)
219 		aInsertColorLB.SelectEntryPos(0);
220 	else
221 		aInsertColorLB.SelectEntry(Color(nColor));
222 
223 
224 	nColor = aAppOptions.GetTrackDeleteColor();
225 	if (nColor == COL_TRANSPARENT)
226 		aRemoveColorLB.SelectEntryPos(0);
227 	else
228 		aRemoveColorLB.SelectEntry(Color(nColor));
229 
230 }
231 
232 
233 IMPL_LINK( ScRedlineOptionsTabPage, ColorHdl, ColorListBox *, EMPTYARG )
234 {
235 /*
236 	SvxFontPrevWindow *pPrev;
237 	ListBox *pLB;
238 
239 	if (pColorLB == &aInsertColorLB)
240 	{
241 		pPrev = &aInsertPreviewWN;
242 		pLB = &aInsertLB;
243 	}
244 	else
245 	{
246 		pPrev = &aDeletedPreviewWN;
247 		pLB = &aDeletedLB;
248 	}
249 
250 	SvxFont& rFont = pPrev->GetFont();
251 	sal_uInt16 nPos = pLB->GetSelectEntryPos();
252 	if (nPos == LISTBOX_ENTRY_NOTFOUND)
253 		nPos = 0;
254 
255 	CharAttr *pAttr = (CharAttr *)pLB->GetEntryData(nPos);
256 
257 	if (pAttr->nItemId == SID_ATTR_BRUSH)
258 	{
259 		rFont.SetColor(Color(COL_BLACK));
260 		nPos = pColorLB->GetSelectEntryPos();
261 		if (nPos && nPos != LISTBOX_ENTRY_NOTFOUND)
262 		{
263 			Brush aBrush(Color(pColorLB->GetSelectEntryColor()));
264 			pPrev->SetBrush(aBrush);
265 		}
266 		else
267 		{
268 			Brush aBrush(Color(COL_LIGHTGRAY));
269 			pPrev->SetBrush(aBrush);
270 		}
271 	}
272 	else
273 	{
274 		nPos = pColorLB->GetSelectEntryPos();
275 		if (nPos && nPos != LISTBOX_ENTRY_NOTFOUND)
276 			rFont.SetColor(pColorLB->GetEntryColor(nPos));
277 		else
278 			rFont.SetColor(Color(COL_RED));
279 	}
280 
281 	pPrev->Invalidate();
282 */
283 	return 0;
284 }
285 
286