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 :
20 : #include "sal/config.h"
21 :
22 : #include <officecfg/Office/Common.hxx>
23 : #include <tools/shl.hxx>
24 : #include <svtools/ctrltool.hxx>
25 : #include <svtools/svlbitm.hxx>
26 : #include <vcl/svapp.hxx>
27 : #include <vcl/wrkwin.hxx>
28 : #include <svtools/fontsubstconfig.hxx>
29 : #include "fontsubs.hxx"
30 : #include <dialmgr.hxx>
31 : #include "helpid.hrc"
32 : #include <cuires.hrc>
33 :
34 : /*********************************************************************/
35 : /* */
36 : /* TabPage font replacement */
37 : /* */
38 : /*********************************************************************/
39 :
40 0 : SvxFontSubstTabPage::SvxFontSubstTabPage( Window* pParent,
41 : const SfxItemSet& rSet )
42 : : SfxTabPage(pParent, "OptFontsPage", "cui/ui/optfontspage.ui", rSet)
43 0 : , pConfig(new SvtFontSubstConfig)
44 0 : , pCheckButtonData(0)
45 : {
46 0 : get(m_pUseTableCB, "usetable");
47 0 : get(m_pReplacements, "replacements");
48 0 : get(m_pFont1CB, "font1");
49 0 : get(m_pFont2CB, "font2");
50 0 : m_pFont1CB->SetStyle(m_pFont1CB->GetStyle() | WB_SORT);
51 0 : m_pFont2CB->SetStyle(m_pFont2CB->GetStyle() | WB_SORT);
52 0 : get(m_pApply, "apply");
53 0 : get(m_pDelete, "delete");
54 0 : get(m_pFontNameLB, "fontname");
55 0 : m_sAutomatic = m_pFontNameLB->GetEntry(0);
56 : assert(!m_sAutomatic.isEmpty());
57 0 : get(m_pNonPropFontsOnlyCB, "nonpropfontonly");
58 0 : get(m_pFontHeightLB, "fontheight");
59 :
60 0 : SvSimpleTableContainer *pCheckLBContainer = get<SvSimpleTableContainer>("checklb");
61 0 : Size aControlSize(248, 75);
62 0 : aControlSize = LogicToPixel(aControlSize, MAP_APPFONT);
63 0 : pCheckLBContainer->set_width_request(aControlSize.Width());
64 0 : pCheckLBContainer->set_height_request(aControlSize.Height());
65 :
66 0 : m_pCheckLB = new SvxFontSubstCheckListBox(*pCheckLBContainer, 0);
67 0 : m_pCheckLB->SetHelpId(HID_OFA_FONT_SUBST_CLB);
68 :
69 0 : m_pCheckLB->SetStyle(m_pCheckLB->GetStyle()|WB_HSCROLL|WB_VSCROLL);
70 0 : m_pCheckLB->SetSelectionMode(MULTIPLE_SELECTION);
71 0 : m_pCheckLB->SortByCol(2);
72 0 : long aStaticTabs[] = { 4, 0, 0, 0, 0 };
73 0 : m_pCheckLB->SvSimpleTable::SetTabs(&aStaticTabs[0]);
74 :
75 0 : OUString sHeader1(get<FixedText>("always")->GetText());
76 0 : OUString sHeader2(get<FixedText>("screenonly")->GetText());
77 0 : OUStringBuffer sHeader;
78 0 : sHeader.append(sHeader1).append("\t").append(sHeader2)
79 0 : .append("\t ").append(get<FixedText>("font")->GetText())
80 0 : .append("\t ").append(get<FixedText>("replacewith")->GetText());
81 0 : m_pCheckLB->InsertHeaderEntry(sHeader.makeStringAndClear());
82 :
83 0 : HeaderBar &rBar = m_pCheckLB->GetTheHeaderBar();
84 0 : HeaderBarItemBits nBits = rBar.GetItemBits(1) | HIB_FIXEDPOS | HIB_FIXED;
85 0 : nBits &= ~HIB_CLICKABLE;
86 0 : rBar.SetItemBits(1, nBits);
87 0 : rBar.SetItemBits(2, nBits);
88 :
89 0 : m_pCheckLB->setColSizes();
90 :
91 0 : aTextColor = m_pCheckLB->GetTextColor();
92 0 : Link aLink(LINK(this, SvxFontSubstTabPage, SelectHdl));
93 :
94 0 : m_pCheckLB->SetSelectHdl(aLink);
95 0 : m_pUseTableCB->SetClickHdl(aLink);
96 0 : m_pFont1CB->SetSelectHdl(aLink);
97 0 : m_pFont1CB->SetModifyHdl(aLink);
98 0 : m_pFont2CB->SetSelectHdl(aLink);
99 0 : m_pFont2CB->SetModifyHdl(aLink);
100 0 : m_pApply->SetClickHdl(aLink);
101 0 : m_pDelete->SetClickHdl(aLink);
102 :
103 0 : m_pNonPropFontsOnlyCB->SetClickHdl(LINK(this, SvxFontSubstTabPage, NonPropFontsHdl));
104 :
105 : sal_uInt16 nHeight;
106 0 : for(nHeight = 6; nHeight <= 16; nHeight++)
107 0 : m_pFontHeightLB->InsertEntry(OUString::number(nHeight));
108 0 : for(nHeight = 18; nHeight <= 28; nHeight+= 2)
109 0 : m_pFontHeightLB->InsertEntry(OUString::number(nHeight));
110 0 : for(nHeight = 32; nHeight <= 48; nHeight+= 4)
111 0 : m_pFontHeightLB->InsertEntry(OUString::number(nHeight));
112 0 : for(nHeight = 54; nHeight <= 72; nHeight+= 6)
113 0 : m_pFontHeightLB->InsertEntry(OUString::number(nHeight));
114 0 : for(nHeight = 80; nHeight <= 96; nHeight+= 8)
115 0 : m_pFontHeightLB->InsertEntry(OUString::number(nHeight));
116 0 : }
117 :
118 0 : SvTreeListEntry* SvxFontSubstTabPage::CreateEntry(OUString& rFont1, OUString& rFont2)
119 : {
120 0 : SvTreeListEntry* pEntry = new SvTreeListEntry;
121 :
122 0 : if( !pCheckButtonData )
123 0 : pCheckButtonData = new SvLBoxButtonData( m_pCheckLB );
124 :
125 0 : pEntry->AddItem( new SvLBoxContextBmp( pEntry, 0, Image(), Image(), false)); // Sonst Puff!
126 :
127 : pEntry->AddItem( new SvLBoxButton( pEntry,
128 : SvLBoxButtonKind_enabledCheckbox, 0,
129 0 : pCheckButtonData ) );
130 : pEntry->AddItem( new SvLBoxButton( pEntry,
131 : SvLBoxButtonKind_enabledCheckbox, 0,
132 0 : pCheckButtonData ) );
133 :
134 0 : pEntry->AddItem( new SvLBoxString( pEntry, 0, rFont1 ) );
135 0 : pEntry->AddItem( new SvLBoxString( pEntry, 0, rFont2 ) );
136 :
137 0 : return pEntry;
138 : }
139 :
140 0 : SvxFontSubstTabPage::~SvxFontSubstTabPage()
141 : {
142 0 : delete pCheckButtonData;
143 0 : delete pConfig;
144 0 : delete m_pCheckLB;
145 0 : }
146 :
147 0 : SfxTabPage* SvxFontSubstTabPage::Create( Window* pParent,
148 : const SfxItemSet& rAttrSet)
149 : {
150 0 : return new SvxFontSubstTabPage(pParent, rAttrSet);
151 : }
152 :
153 0 : bool SvxFontSubstTabPage::FillItemSet( SfxItemSet& )
154 : {
155 0 : pConfig->ClearSubstitutions();// remove all entries
156 :
157 0 : pConfig->Enable(m_pUseTableCB->IsChecked());
158 :
159 0 : SvTreeListEntry* pEntry = m_pCheckLB->First();
160 :
161 0 : while (pEntry)
162 : {
163 0 : SubstitutionStruct aAdd;
164 0 : aAdd.sFont = m_pCheckLB->GetEntryText(pEntry, 0);
165 0 : aAdd.sReplaceBy = m_pCheckLB->GetEntryText(pEntry, 1);
166 0 : aAdd.bReplaceAlways = m_pCheckLB->IsChecked(pEntry, 0);
167 0 : aAdd.bReplaceOnScreenOnly = m_pCheckLB->IsChecked(pEntry, 1);
168 0 : pConfig->AddSubstitution(aAdd);
169 0 : pEntry = m_pCheckLB->Next(pEntry);
170 0 : }
171 0 : if(pConfig->IsModified())
172 0 : pConfig->Commit();
173 0 : pConfig->Apply();
174 : boost::shared_ptr< comphelper::ConfigurationChanges > batch(
175 0 : comphelper::ConfigurationChanges::create());
176 0 : if(m_pFontHeightLB->GetSavedValue() != m_pFontHeightLB->GetSelectEntryPos())
177 : officecfg::Office::Common::Font::SourceViewFont::FontHeight::set(
178 0 : static_cast< sal_Int16 >(m_pFontHeightLB->GetSelectEntry().toInt32()),
179 0 : batch);
180 0 : if(m_pNonPropFontsOnlyCB->GetSavedValue() != TriState(m_pNonPropFontsOnlyCB->IsChecked()))
181 : officecfg::Office::Common::Font::SourceViewFont::
182 : NonProportionalFontsOnly::set(
183 0 : m_pNonPropFontsOnlyCB->IsChecked(), batch);
184 : //font name changes cannot be detected by saved values
185 0 : OUString sFontName;
186 0 : if(m_pFontNameLB->GetSelectEntryPos())
187 0 : sFontName = m_pFontNameLB->GetSelectEntry();
188 : officecfg::Office::Common::Font::SourceViewFont::FontName::set(
189 0 : boost::optional< OUString >(sFontName), batch);
190 0 : batch->commit();
191 :
192 0 : return false;
193 : }
194 :
195 0 : void SvxFontSubstTabPage::Reset( const SfxItemSet& )
196 : {
197 0 : m_pCheckLB->SetUpdateMode(false);
198 0 : m_pCheckLB->Clear();
199 :
200 0 : FontList aFntLst( Application::GetDefaultDevice() );
201 0 : m_pFont1CB->Fill( &aFntLst );
202 0 : m_pFont2CB->Fill( &aFntLst );
203 :
204 0 : sal_Int32 nCount = pConfig->SubstitutionCount();
205 0 : if (nCount)
206 0 : m_pUseTableCB->Check(pConfig->IsEnabled());
207 :
208 0 : for (sal_Int32 i = 0; i < nCount; ++i)
209 : {
210 0 : const SubstitutionStruct* pSubs = pConfig->GetSubstitution(i);
211 0 : OUString aTmpStr1(pSubs->sFont);
212 0 : OUString aTmpStr2(pSubs->sReplaceBy);
213 0 : SvTreeListEntry* pEntry = CreateEntry(aTmpStr1, aTmpStr2);
214 0 : m_pCheckLB->Insert(pEntry);
215 0 : m_pCheckLB->CheckEntry(pEntry, 0, pSubs->bReplaceAlways);
216 0 : m_pCheckLB->CheckEntry(pEntry, 1, pSubs->bReplaceOnScreenOnly);
217 0 : }
218 :
219 0 : CheckEnable();
220 0 : m_pCheckLB->SetUpdateMode(true);
221 :
222 : //fill font name box first
223 : m_pNonPropFontsOnlyCB->Check(
224 : officecfg::Office::Common::Font::SourceViewFont::
225 0 : NonProportionalFontsOnly::get());
226 0 : NonPropFontsHdl(m_pNonPropFontsOnlyCB);
227 : OUString sFontName(
228 : officecfg::Office::Common::Font::SourceViewFont::FontName::get().
229 0 : get_value_or(OUString()));
230 0 : if(!sFontName.isEmpty())
231 0 : m_pFontNameLB->SelectEntry(sFontName);
232 : else
233 0 : m_pFontNameLB->SelectEntryPos(0);
234 : m_pFontHeightLB->SelectEntry(
235 : OUString::number(
236 : officecfg::Office::Common::Font::SourceViewFont::FontHeight::
237 0 : get()));
238 0 : m_pNonPropFontsOnlyCB->SaveValue();
239 0 : m_pFontHeightLB->SaveValue();
240 0 : }
241 :
242 0 : IMPL_LINK(SvxFontSubstTabPage, SelectHdl, Window*, pWin)
243 : {
244 0 : if (pWin == m_pApply || pWin == m_pDelete)
245 : {
246 : SvTreeListEntry* pEntry;
247 : // nCol is stupidly the nCol'th text column, not counted!
248 : // Therefor "0" as column.
249 0 : sal_uLong nPos = m_pCheckLB->GetEntryPos(m_pFont1CB->GetText(), 0);
250 :
251 0 : if (pWin == m_pApply)
252 : {
253 0 : if (nPos != 0xffffffff)
254 : {
255 : // change entry
256 0 : m_pCheckLB->SetEntryText(m_pFont2CB->GetText(), nPos, 1);
257 0 : pEntry = m_pCheckLB->GetEntry(nPos);
258 : }
259 : else
260 : {
261 : // new entry
262 0 : OUString sFont1 = m_pFont1CB->GetText();
263 0 : OUString sFont2 = m_pFont2CB->GetText();
264 :
265 0 : pEntry = CreateEntry(sFont1, sFont2);
266 0 : m_pCheckLB->Insert(pEntry);
267 : }
268 0 : m_pCheckLB->SelectAll(false);
269 0 : m_pCheckLB->Select(pEntry);
270 : }
271 0 : else if (pWin == m_pDelete)
272 : {
273 0 : if (nPos != 0xffffffff)
274 : {
275 0 : pEntry = m_pCheckLB->FirstSelected();
276 0 : while (pEntry)
277 : {
278 0 : SvTreeListEntry* pDelEntry = pEntry;
279 0 : pEntry = m_pCheckLB->NextSelected(pEntry);
280 0 : m_pCheckLB->RemoveEntry(pDelEntry);
281 : }
282 : }
283 : }
284 : }
285 :
286 0 : if (pWin == m_pCheckLB)
287 : {
288 0 : SvTreeListEntry* pEntry = m_pCheckLB->FirstSelected();
289 :
290 0 : if (m_pCheckLB->NextSelected(pEntry) == 0)
291 : {
292 0 : m_pFont1CB->SetText(m_pCheckLB->GetEntryText(pEntry, 0));
293 0 : m_pFont2CB->SetText(m_pCheckLB->GetEntryText(pEntry, 1));
294 : }
295 : }
296 :
297 0 : if (pWin == m_pFont1CB)
298 : {
299 0 : sal_uLong nPos = m_pCheckLB->GetEntryPos(m_pFont1CB->GetText(), 0);
300 :
301 0 : if (nPos != 0xffffffff)
302 : {
303 0 : SvTreeListEntry* pEntry = m_pCheckLB->GetEntry(nPos);
304 :
305 0 : if (pEntry != m_pCheckLB->FirstSelected())
306 : {
307 0 : m_pCheckLB->SelectAll(false);
308 0 : m_pCheckLB->Select(pEntry);
309 : }
310 : }
311 : }
312 :
313 0 : CheckEnable();
314 :
315 0 : return 0;
316 : }
317 :
318 :
319 0 : IMPL_LINK(SvxFontSubstTabPage, NonPropFontsHdl, CheckBox*, pBox)
320 : {
321 0 : OUString sFontName = m_pFontNameLB->GetSelectEntry();
322 0 : sal_Bool bNonPropOnly = pBox->IsChecked();
323 0 : m_pFontNameLB->Clear();
324 0 : FontList aFntLst( Application::GetDefaultDevice() );
325 0 : m_pFontNameLB->InsertEntry(m_sAutomatic);
326 0 : sal_uInt16 nFontCount = aFntLst.GetFontNameCount();
327 0 : for(sal_uInt16 nFont = 0; nFont < nFontCount; nFont++)
328 : {
329 0 : const FontInfo& rInfo = aFntLst.GetFontName( nFont );
330 0 : if(!bNonPropOnly || rInfo.GetPitch() == PITCH_FIXED)
331 0 : m_pFontNameLB->InsertEntry(rInfo.GetName());
332 : }
333 0 : m_pFontNameLB->SelectEntry(sFontName);
334 0 : return 0;
335 : }
336 :
337 0 : void SvxFontSubstTabPage::CheckEnable()
338 : {
339 0 : sal_Bool bEnableAll = m_pUseTableCB->IsChecked();
340 0 : m_pReplacements->Enable(bEnableAll);
341 0 : if (bEnableAll)
342 : {
343 : sal_Bool bApply, bDelete;
344 :
345 0 : SvTreeListEntry* pEntry = m_pCheckLB->FirstSelected();
346 :
347 0 : OUString sEntry = m_pFont1CB->GetText();
348 0 : sEntry += "\t";
349 0 : sEntry += m_pFont2CB->GetText();
350 :
351 : // because of OS/2 optimization error (Bug #56267) a bit more intricate:
352 0 : if (m_pFont1CB->GetText().isEmpty() || m_pFont2CB->GetText().isEmpty())
353 0 : bApply = sal_False;
354 0 : else if(m_pFont1CB->GetText() == m_pFont2CB->GetText())
355 0 : bApply = sal_False;
356 0 : else if(m_pCheckLB->GetEntryPos(sEntry) != 0xffffffff)
357 0 : bApply = sal_False;
358 0 : else if(pEntry != 0 && m_pCheckLB->NextSelected(pEntry) != 0)
359 0 : bApply = sal_False;
360 : else
361 0 : bApply = sal_True;
362 :
363 0 : bDelete = pEntry != 0;
364 :
365 0 : m_pApply->Enable(bApply);
366 0 : m_pDelete->Enable(bDelete);
367 : }
368 :
369 0 : if (bEnableAll)
370 : {
371 0 : if (!m_pCheckLB->IsEnabled())
372 : {
373 0 : m_pCheckLB->EnableTable();
374 0 : m_pCheckLB->SetTextColor(aTextColor);
375 0 : m_pCheckLB->Invalidate();
376 0 : SelectHdl(m_pFont1CB);
377 : }
378 : }
379 : else
380 : {
381 0 : if (m_pCheckLB->IsEnabled())
382 : {
383 0 : m_pCheckLB->DisableTable();
384 0 : m_pCheckLB->SetTextColor(Color(COL_GRAY));
385 0 : m_pCheckLB->Invalidate();
386 0 : m_pCheckLB->SelectAll(false);
387 : }
388 : }
389 0 : }
390 :
391 0 : void SvxFontSubstCheckListBox::setColSizes()
392 : {
393 0 : HeaderBar &rBar = GetTheHeaderBar();
394 0 : if (rBar.GetItemCount() < 4)
395 0 : return;
396 0 : long nW1 = rBar.GetTextWidth(rBar.GetItemText(3));
397 0 : long nW2 = rBar.GetTextWidth(rBar.GetItemText(4));
398 0 : long nMax = std::max( nW1, nW2 ) + 6; // width of the longest header + a little offset
399 0 : long nMin = rBar.LogicToPixel(Size(10, 0), MAP_APPFONT).Width();
400 0 : nMax = std::max( nMax, nMin );
401 0 : const long nDoubleMax = 2*nMax;
402 0 : const long nRest = GetSizePixel().Width() - nDoubleMax;
403 0 : long aStaticTabs[] = { 4, 0, 0, 0, 0 };
404 0 : aStaticTabs[2] = nMax;
405 0 : aStaticTabs[3] = nDoubleMax;
406 0 : aStaticTabs[4] = nDoubleMax + nRest/2;
407 0 : SvSimpleTable::SetTabs(aStaticTabs, MAP_PIXEL);
408 : }
409 :
410 0 : void SvxFontSubstCheckListBox::Resize()
411 : {
412 0 : SvSimpleTable::Resize();
413 0 : setColSizes();
414 0 : }
415 :
416 0 : void SvxFontSubstCheckListBox::SetTabs()
417 : {
418 0 : SvSimpleTable::SetTabs();
419 0 : sal_uInt16 nAdjust = SV_LBOXTAB_ADJUST_RIGHT|SV_LBOXTAB_ADJUST_LEFT|SV_LBOXTAB_ADJUST_CENTER|SV_LBOXTAB_ADJUST_NUMERIC|SV_LBOXTAB_FORCE;
420 :
421 0 : SvLBoxTab* pTab = aTabs[1];
422 0 : pTab->nFlags &= ~nAdjust;
423 0 : pTab->nFlags |= SV_LBOXTAB_PUSHABLE|SV_LBOXTAB_ADJUST_CENTER|SV_LBOXTAB_FORCE;
424 :
425 0 : pTab = aTabs[2];
426 0 : pTab->nFlags &= ~nAdjust;
427 0 : pTab->nFlags |= SV_LBOXTAB_PUSHABLE|SV_LBOXTAB_ADJUST_CENTER|SV_LBOXTAB_FORCE;
428 0 : }
429 :
430 0 : void SvxFontSubstCheckListBox::KeyInput( const KeyEvent& rKEvt )
431 : {
432 0 : if(!rKEvt.GetKeyCode().GetModifier() &&
433 0 : KEY_SPACE == rKEvt.GetKeyCode().GetCode())
434 : {
435 0 : sal_uLong nSelPos = GetModel()->GetAbsPos(GetCurEntry());
436 0 : sal_uInt16 nCol = GetCurrentTabPos() - 1;
437 0 : if ( nCol < 2 )
438 : {
439 0 : CheckEntryPos( nSelPos, nCol, !IsChecked( nSelPos, nCol ) );
440 0 : CallImplEventListeners( VCLEVENT_CHECKBOX_TOGGLE, (void*)GetEntry( nSelPos ) );
441 : }
442 : else
443 : {
444 0 : sal_uInt16 nCheck = IsChecked(nSelPos, 1) ? 1 : 0;
445 0 : if(IsChecked(nSelPos, 0))
446 0 : nCheck += 2;
447 0 : nCheck--;
448 0 : nCheck &= 3;
449 0 : CheckEntryPos(nSelPos, 1, 0 != (nCheck & 1));
450 0 : CheckEntryPos(nSelPos, 0, 0 != (nCheck & 2));
451 : }
452 : }
453 : else
454 0 : SvSimpleTable::KeyInput(rKEvt);
455 0 : }
456 :
457 0 : void SvxFontSubstCheckListBox::CheckEntryPos(sal_uLong nPos, sal_uInt16 nCol, sal_Bool bChecked)
458 : {
459 0 : if ( nPos < GetEntryCount() )
460 : SetCheckButtonState(
461 : GetEntry(nPos),
462 : nCol,
463 : bChecked ? SvButtonState( SV_BUTTON_CHECKED ) :
464 0 : SvButtonState( SV_BUTTON_UNCHECKED ) );
465 0 : }
466 :
467 0 : void SvxFontSubstCheckListBox::CheckEntry(SvTreeListEntry* pEntry, sal_uInt16 nCol, sal_Bool bChecked)
468 : {
469 0 : if ( pEntry )
470 : SetCheckButtonState(
471 : pEntry,
472 : nCol,
473 : bChecked ? SvButtonState( SV_BUTTON_CHECKED ) :
474 0 : SvButtonState( SV_BUTTON_UNCHECKED ) );
475 0 : }
476 :
477 0 : sal_Bool SvxFontSubstCheckListBox::IsChecked(sal_uLong nPos, sal_uInt16 nCol)
478 : {
479 0 : return GetCheckButtonState( GetEntry(nPos), nCol ) == SV_BUTTON_CHECKED;
480 : }
481 :
482 0 : sal_Bool SvxFontSubstCheckListBox::IsChecked(SvTreeListEntry* pEntry, sal_uInt16 nCol)
483 : {
484 0 : return GetCheckButtonState( pEntry, nCol ) == SV_BUTTON_CHECKED;
485 : }
486 :
487 0 : void SvxFontSubstCheckListBox::SetCheckButtonState( SvTreeListEntry* pEntry, sal_uInt16 nCol, SvButtonState eState)
488 : {
489 0 : SvLBoxButton* pItem = (SvLBoxButton*)(pEntry->GetItem(nCol + 1));
490 :
491 : DBG_ASSERT(pItem,"SetCheckButton:Item not found");
492 0 : if (pItem->GetType() == SV_ITEM_ID_LBOXBUTTON)
493 : {
494 0 : switch( eState )
495 : {
496 : case SV_BUTTON_CHECKED:
497 0 : pItem->SetStateChecked();
498 0 : break;
499 :
500 : case SV_BUTTON_UNCHECKED:
501 0 : pItem->SetStateUnchecked();
502 0 : break;
503 :
504 : case SV_BUTTON_TRISTATE:
505 0 : pItem->SetStateTristate();
506 0 : break;
507 : }
508 0 : InvalidateEntry( pEntry );
509 : }
510 0 : }
511 :
512 0 : SvButtonState SvxFontSubstCheckListBox::GetCheckButtonState( SvTreeListEntry* pEntry, sal_uInt16 nCol ) const
513 : {
514 0 : SvButtonState eState = SV_BUTTON_UNCHECKED;
515 0 : SvLBoxButton* pItem = (SvLBoxButton*)(pEntry->GetItem(nCol + 1));
516 : DBG_ASSERT(pItem,"GetChButnState:Item not found");
517 :
518 0 : if (pItem->GetType() == SV_ITEM_ID_LBOXBUTTON)
519 : {
520 0 : sal_uInt16 nButtonFlags = pItem->GetButtonFlags();
521 0 : eState = pCheckButtonData->ConvertToButtonState( nButtonFlags );
522 : }
523 :
524 0 : return eState;
525 0 : }
526 :
527 :
528 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|