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 <memory>
21 #include <vcl/svapp.hxx>
22 #include <rtl/ustring.hxx>
23 #include <tools/lineend.hxx>
24 #include <svtools/unitconv.hxx>
25 #include <com/sun/star/uno/Sequence.h>
26 #include <swtypes.hxx>
27 #include <labimp.hxx>
28 #include "swuilabimp.hxx"
29 #include "labfmt.hxx"
30 #include "labprt.hxx"
31 #include <dbmgr.hxx>
32 #include <uitool.hxx>
33 #include <cmdid.h>
34 #include <helpids.h>
35 #include <strings.hrc>
36 #include <envimg.hxx>
37
SetFromItem(const SwLabItem & rItem)38 void SwLabRec::SetFromItem( const SwLabItem& rItem )
39 {
40 m_nHDist = rItem.m_lHDist;
41 m_nVDist = rItem.m_lVDist;
42 m_nWidth = rItem.m_lWidth;
43 m_nHeight = rItem.m_lHeight;
44 m_nLeft = rItem.m_lLeft;
45 m_nUpper = rItem.m_lUpper;
46 m_nCols = rItem.m_nCols;
47 m_nRows = rItem.m_nRows;
48 m_nPWidth = rItem.m_lPWidth;
49 m_nPHeight = rItem.m_lPHeight;
50 m_bCont = rItem.m_bCont;
51 }
52
FillItem(SwLabItem & rItem) const53 void SwLabRec::FillItem( SwLabItem& rItem ) const
54 {
55 rItem.m_lHDist = m_nHDist;
56 rItem.m_lVDist = m_nVDist;
57 rItem.m_lWidth = m_nWidth;
58 rItem.m_lHeight = m_nHeight;
59 rItem.m_lLeft = m_nLeft;
60 rItem.m_lUpper = m_nUpper;
61 rItem.m_nCols = m_nCols;
62 rItem.m_lPWidth = m_nPWidth;
63 rItem.m_lPHeight = m_nPHeight;
64 rItem.m_nRows = m_nRows;
65 }
66
ReplaceGroup_(const OUString & rMake)67 void SwLabDlg::ReplaceGroup_( const OUString &rMake )
68 {
69 // Remove old entries
70 m_pRecs->erase(m_pRecs->begin() + 1, m_pRecs->end());
71 m_aLabelsCfg.FillLabels(rMake, *m_pRecs);
72 m_aLstGroup = rMake;
73 }
74
PageCreated(const OUString & rId,SfxTabPage & rPage)75 void SwLabDlg::PageCreated(const OUString &rId, SfxTabPage &rPage)
76 {
77 if (rId == "labels")
78 {
79 static_cast<SwLabPage*>(&rPage)->SetDBManager(m_pDBManager);
80 static_cast<SwLabPage*>(&rPage)->InitDatabaseBox();
81 if (!m_bLabel)
82 static_cast<SwLabPage*>(&rPage)->SetToBusinessCard();
83 }
84 else if (rId == "options")
85 m_pPrtPage = static_cast<SwLabPrtPage*>(&rPage);
86 }
87
SwLabDlg(weld::Window * pParent,const SfxItemSet & rSet,SwDBManager * pDBManager_,bool bLabel)88 SwLabDlg::SwLabDlg(weld::Window* pParent, const SfxItemSet& rSet,
89 SwDBManager* pDBManager_, bool bLabel)
90 : SfxTabDialogController(pParent, u"modules/swriter/ui/labeldialog.ui"_ustr, u"LabelDialog"_ustr, &rSet)
91 , m_pDBManager(pDBManager_)
92 , m_pPrtPage(nullptr)
93 , m_aTypeIds(50, 10)
94 , m_pRecs(new SwLabRecs)
95 , m_bLabel(bLabel)
96 {
97 weld::WaitObject aWait(pParent);
98
99 // Read user label from writer.cfg
100 SwLabItem aItem(static_cast<const SwLabItem&>(rSet.Get( FN_LABEL )));
101 std::unique_ptr<SwLabRec> pRec(new SwLabRec);
102 pRec->m_aMake = pRec->m_aType = SwResId(STR_CUSTOM_LABEL);
103 pRec->SetFromItem( aItem );
104
105 bool bDouble = false;
106
107 for (const std::unique_ptr<SwLabRec> & i : *m_pRecs)
108 {
109 if (pRec->m_aMake == i->m_aMake &&
110 pRec->m_aType == i->m_aType)
111 {
112 bDouble = true;
113 break;
114 }
115 }
116
117 if (!bDouble)
118 m_pRecs->insert( m_pRecs->begin(), std::move(pRec));
119
120 size_t nLstGroup = 0;
121 const std::vector<OUString>& rMan = m_aLabelsCfg.GetManufacturers();
122 for(size_t nMan = 0; nMan < rMan.size(); ++nMan)
123 {
124 m_aMakes.push_back(rMan[nMan]);
125 if ( rMan[nMan] == aItem.m_aLstMake )
126 nLstGroup = nMan;
127 }
128
129 if ( !m_aMakes.empty() )
130 ReplaceGroup_( m_aMakes[nLstGroup] );
131
132 if (m_xExampleSet)
133 m_xExampleSet->Put(aItem);
134
135 AddTabPage(u"format"_ustr, SwLabFormatPage::Create, nullptr);
136 AddTabPage(u"options"_ustr, SwLabPrtPage::Create, nullptr);
137 AddTabPage(u"labels"_ustr, SwLabPage::Create, nullptr);
138 m_sBusinessCardDlg = SwResId(STR_BUSINESS_CARDS);
139
140 if (m_bLabel)
141 {
142 RemoveTabPage(u"business"_ustr);
143 RemoveTabPage(u"private"_ustr);
144 }
145 else
146 {
147 AddTabPage(u"business"_ustr, SwBusinessDataPage::Create, nullptr );
148 AddTabPage(u"private"_ustr, SwPrivateDataPage::Create, nullptr);
149 m_xDialog->set_title(m_sBusinessCardDlg);
150 }
151 }
152
~SwLabDlg()153 SwLabDlg::~SwLabDlg()
154 {
155 m_pRecs.reset();
156 }
157
GetLabItem(SwLabItem & rItem)158 void SwLabDlg::GetLabItem(SwLabItem &rItem)
159 {
160 const SwLabItem& rActItem = static_cast<const SwLabItem&>(GetExampleSet()->Get(FN_LABEL));
161 const SwLabItem& rOldItem = static_cast<const SwLabItem&>(GetInputSetImpl()->Get(FN_LABEL));
162
163 if (rActItem != rOldItem)
164 {
165 // Was already "put" with (hopefully) correct content
166 rItem = rActItem;
167 }
168 else
169 {
170 rItem = rOldItem;
171
172 // In rItem there are only settings defined by users.
173 // Therefore get the real settings directly from Record
174 SwLabRec* pRec = GetRecord(rItem.m_aType, rItem.m_bCont);
175 pRec->FillItem( rItem );
176 }
177 }
178
GetRecord(std::u16string_view rRecName,bool bCont)179 SwLabRec* SwLabDlg::GetRecord(std::u16string_view rRecName, bool bCont)
180 {
181 SwLabRec* pRec = nullptr;
182 bool bFound = false;
183 const OUString sCustom(SwResId(STR_CUSTOM_LABEL));
184
185 const size_t nCount = Recs().size();
186 for (size_t i = 0; i < nCount; ++i)
187 {
188 pRec = Recs()[i].get();
189 if (pRec->m_aType != sCustom &&
190 rRecName == pRec->m_aType && bCont == pRec->m_bCont)
191 {
192 bFound = true;
193 break;
194 }
195 }
196 if (!bFound) // User defined
197 pRec = Recs()[0].get();
198
199 return pRec;
200 }
201
GetPrt()202 Printer *SwLabDlg::GetPrt()
203 {
204 if (m_pPrtPage)
205 return m_pPrtPage->GetPrt();
206 else
207 return nullptr;
208 }
209
SwLabPage(weld::Container * pPage,weld::DialogController * pController,const SfxItemSet & rSet)210 SwLabPage::SwLabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet)
211 : SfxTabPage(pPage, pController, u"modules/swriter/ui/cardmediumpage.ui"_ustr, u"CardMediumPage"_ustr, &rSet)
212 , m_pDBManager(nullptr)
213 , m_aItem(static_cast<const SwLabItem&>(rSet.Get(FN_LABEL)))
214 , m_xAddressFrame(m_xBuilder->weld_widget(u"addressframe"_ustr))
215 , m_xAddrBox(m_xBuilder->weld_check_button(u"address"_ustr))
216 , m_xWritingEdit(m_xBuilder->weld_text_view(u"textview"_ustr))
217 , m_xDatabaseLB(m_xBuilder->weld_combo_box(u"database"_ustr))
218 , m_xTableLB(m_xBuilder->weld_combo_box(u"table"_ustr))
219 , m_xInsertBT(m_xBuilder->weld_button(u"insert"_ustr))
220 , m_xDBFieldLB(m_xBuilder->weld_combo_box(u"field"_ustr))
221 , m_xContButton(m_xBuilder->weld_radio_button(u"continuous"_ustr))
222 , m_xSheetButton(m_xBuilder->weld_radio_button(u"sheet"_ustr))
223 , m_xMakeBox(m_xBuilder->weld_combo_box(u"brand"_ustr))
224 , m_xTypeBox(m_xBuilder->weld_combo_box(u"type"_ustr))
225 , m_xHiddenSortTypeBox(m_xBuilder->weld_combo_box(u"hiddentype"_ustr))
226 , m_xFormatInfo(m_xBuilder->weld_label(u"formatinfo"_ustr))
227 {
228 weld::WaitObject aWait(GetFrameWeld());
229
230 m_xWritingEdit->set_size_request(m_xWritingEdit->get_approximate_digit_width() * 30,
231 m_xWritingEdit->get_height_rows(10));
232 m_xHiddenSortTypeBox->make_sorted();
233
234 tools::Long nListBoxWidth = m_xWritingEdit->get_approximate_digit_width() * 25;
235 m_xTableLB->set_size_request(nListBoxWidth, -1);
236 m_xDatabaseLB->set_size_request(nListBoxWidth, -1);
237 m_xDBFieldLB->set_size_request(nListBoxWidth, -1);
238
239 SetExchangeSupport();
240
241 // Install handlers
242 m_xAddrBox->connect_toggled(LINK(this, SwLabPage, AddrHdl));
243 m_xDatabaseLB->connect_changed(LINK(this, SwLabPage, DatabaseHdl));
244 m_xTableLB->connect_changed(LINK(this, SwLabPage, DatabaseHdl));
245 m_xDBFieldLB->connect_changed(LINK(this, SwLabPage, DatabaseHdl));
246 m_xInsertBT->connect_clicked(LINK(this, SwLabPage, FieldHdl));
247 // Disable insert button first,
248 // it'll be enabled if m_xDatabaseLB, m_pTableLB and m_pInsertBT are filled
249 m_xInsertBT->set_sensitive(false);
250 m_xContButton->connect_toggled(LINK(this, SwLabPage, PageHdl));
251 m_xSheetButton->connect_toggled(LINK(this, SwLabPage, PageHdl));
252 auto nMaxWidth = m_xMakeBox->get_approximate_digit_width() * 32;
253 m_xMakeBox->set_size_request(nMaxWidth, -1);
254 m_xTypeBox->set_size_request(nMaxWidth, -1);
255 m_xMakeBox->connect_changed(LINK(this, SwLabPage, MakeHdl));
256 m_xTypeBox->connect_changed(LINK(this, SwLabPage, TypeHdl));
257
258 InitDatabaseBox();
259 }
260
~SwLabPage()261 SwLabPage::~SwLabPage()
262 {
263 }
264
SetToBusinessCard()265 void SwLabPage::SetToBusinessCard()
266 {
267 m_xContainer->set_help_id(HID_BUSINESS_FMT_PAGE);
268 m_xContButton->set_help_id(HID_BUSINESS_FMT_PAGE_CONT);
269 m_xSheetButton->set_help_id(HID_BUSINESS_FMT_PAGE_SHEET);
270 m_xMakeBox->set_help_id(HID_BUSINESS_FMT_PAGE_BRAND);
271 m_xTypeBox->set_help_id(HID_BUSINESS_FMT_PAGE_TYPE);
272 };
273
IMPL_LINK_NOARG(SwLabPage,AddrHdl,weld::Toggleable &,void)274 IMPL_LINK_NOARG(SwLabPage, AddrHdl, weld::Toggleable&, void)
275 {
276 OUString aWriting;
277
278 if (m_xAddrBox->get_active())
279 aWriting = convertLineEnd(MakeSender(), GetSystemLineEnd());
280
281 m_xWritingEdit->set_text(aWriting);
282 m_xWritingEdit->grab_focus();
283 }
284
IMPL_LINK(SwLabPage,DatabaseHdl,weld::ComboBox &,rListBox,void)285 IMPL_LINK( SwLabPage, DatabaseHdl, weld::ComboBox&, rListBox, void )
286 {
287 m_sActDBName = m_xDatabaseLB->get_active_text();
288
289 weld::WaitObject aObj(GetParentSwLabDlg()->getDialog());
290
291 if (&rListBox == m_xDatabaseLB.get())
292 GetDBManager()->GetTableNames(*m_xTableLB, m_sActDBName);
293
294 if (&rListBox == m_xDatabaseLB.get() || &rListBox == m_xTableLB.get())
295 GetDBManager()->GetColumnNames(*m_xDBFieldLB, m_sActDBName, m_xTableLB->get_active_text());
296
297 if (!m_xDatabaseLB->get_active_text().isEmpty() && !m_xTableLB->get_active_text().isEmpty()
298 && !m_xDBFieldLB->get_active_text().isEmpty())
299 m_xInsertBT->set_sensitive(true);
300 else
301 m_xInsertBT->set_sensitive(false);
302 }
303
IMPL_LINK_NOARG(SwLabPage,FieldHdl,weld::Button &,void)304 IMPL_LINK_NOARG(SwLabPage, FieldHdl, weld::Button&, void)
305 {
306 OUString aStr("<" + m_xDatabaseLB->get_active_text() + "." +
307 m_xTableLB->get_active_text() + "." +
308 m_xTableLB->get_active_id() + "." +
309 m_xDBFieldLB->get_active_text() + ">");
310 m_xWritingEdit->replace_selection(aStr);
311 int nStartPos, nEndPos;
312 m_xWritingEdit->get_selection_bounds(nStartPos, nEndPos);
313 m_xWritingEdit->grab_focus();
314 m_xWritingEdit->select_region(nStartPos, nEndPos);
315 }
316
IMPL_LINK_NOARG(SwLabPage,PageHdl,weld::Toggleable &,void)317 IMPL_LINK_NOARG(SwLabPage, PageHdl, weld::Toggleable&, void)
318 {
319 MakeHdl(*m_xMakeBox);
320 }
321
IMPL_LINK_NOARG(SwLabPage,MakeHdl,weld::ComboBox &,void)322 IMPL_LINK_NOARG(SwLabPage, MakeHdl, weld::ComboBox&, void)
323 {
324 weld::WaitObject aWait(GetParentSwLabDlg()->getDialog());
325
326 m_xTypeBox->clear();
327 m_xHiddenSortTypeBox->clear();
328 GetParentSwLabDlg()->TypeIds().clear();
329
330 const OUString aMake = m_xMakeBox->get_active_text();
331 GetParentSwLabDlg()->ReplaceGroup( aMake );
332 m_aItem.m_aLstMake = aMake;
333
334 const bool bCont = m_xContButton->get_active();
335 const size_t nCount = GetParentSwLabDlg()->Recs().size();
336 size_t nLstType = 0;
337
338 const OUString sCustom(SwResId(STR_CUSTOM_LABEL));
339 //insert the entries into the sorted list box
340 for ( size_t i = 0; i < nCount; ++i )
341 {
342 const OUString aType(GetParentSwLabDlg()->Recs()[i]->m_aType);
343 bool bInsert = false;
344 if (GetParentSwLabDlg()->Recs()[i]->m_aType == sCustom)
345 {
346 bInsert = true;
347 m_xTypeBox->append_text(aType );
348 }
349 else if (GetParentSwLabDlg()->Recs()[i]->m_bCont == bCont)
350 {
351 if (m_xHiddenSortTypeBox->find_text(aType) == -1)
352 {
353 bInsert = true;
354 m_xHiddenSortTypeBox->append_text( aType );
355 }
356 }
357 if(bInsert)
358 {
359 GetParentSwLabDlg()->TypeIds().push_back(i);
360 if ( !nLstType && aType == m_aItem.m_aLstType )
361 nLstType = GetParentSwLabDlg()->TypeIds().size();
362 }
363 }
364 for (int nEntry = 0; nEntry < m_xHiddenSortTypeBox->get_count(); ++nEntry)
365 {
366 m_xTypeBox->append_text(m_xHiddenSortTypeBox->get_text(nEntry));
367 }
368 if (nLstType)
369 m_xTypeBox->set_active_text(m_aItem.m_aLstType);
370 else
371 m_xTypeBox->set_active(0);
372 TypeHdl(*m_xTypeBox);
373 }
374
IMPL_LINK_NOARG(SwLabPage,TypeHdl,weld::ComboBox &,void)375 IMPL_LINK_NOARG(SwLabPage, TypeHdl, weld::ComboBox&, void)
376 {
377 DisplayFormat();
378 m_aItem.m_aType = m_xTypeBox->get_active_text();
379 }
380
DisplayFormat()381 void SwLabPage::DisplayFormat()
382 {
383 std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetFrameWeld(), u"cui/ui/spinbox.ui"_ustr));
384 std::unique_ptr<weld::Dialog> xTopLevel(xBuilder->weld_dialog(u"SpinDialog"_ustr));
385 std::unique_ptr<weld::MetricSpinButton> xField(xBuilder->weld_metric_spin_button(u"spin"_ustr, FieldUnit::CM));
386 SetFieldUnit(*xField, ::GetDfltMetric(false));
387 xField->set_digits(2);
388 xField->set_range(0, INT_MAX - 1, FieldUnit::NONE);
389
390 SwLabRec* pRec = GetSelectedEntryPos();
391 m_aItem.m_aLstType = pRec->m_aType;
392 setfldval(*xField, pRec->m_nWidth);
393 xField->reformat();
394 const OUString aWString = xField->get_text();
395
396 setfldval(*xField, pRec->m_nHeight);
397 xField->reformat();
398
399 OUString aText = pRec->m_aType + ": " + aWString +
400 " x " + xField->get_text() +
401 " (" + OUString::number( pRec->m_nCols ) +
402 " x " + OUString::number( pRec->m_nRows ) + ")";
403 m_xFormatInfo->set_label(aText);
404 }
405
GetSelectedEntryPos()406 SwLabRec* SwLabPage::GetSelectedEntryPos()
407 {
408 OUString sSelEntry(m_xTypeBox->get_active_text());
409
410 return GetParentSwLabDlg()->GetRecord(sSelEntry, m_xContButton->get_active());
411 }
412
InitDatabaseBox()413 void SwLabPage::InitDatabaseBox()
414 {
415 if( !GetDBManager() )
416 return;
417
418 m_xDatabaseLB->clear();
419 const css::uno::Sequence<OUString> aDataNames = SwDBManager::GetExistingDatabaseNames();
420 for (const OUString& rDataName : aDataNames)
421 m_xDatabaseLB->append_text(rDataName);
422 sal_Int32 nIdx{ 0 };
423 OUString sDBName = m_sActDBName.getToken( 0, DB_DELIM, nIdx );
424 OUString sTableName = m_sActDBName.getToken( 0, DB_DELIM, nIdx );
425 m_xDatabaseLB->set_active_text(sDBName);
426 if( !sDBName.isEmpty() && GetDBManager()->GetTableNames(*m_xTableLB, sDBName))
427 {
428 m_xTableLB->set_active_text(sTableName);
429 GetDBManager()->GetColumnNames(*m_xDBFieldLB, m_sActDBName, sTableName);
430 }
431 else
432 m_xDBFieldLB->clear();
433 }
434
Create(weld::Container * pPage,weld::DialogController * pController,const SfxItemSet * rSet)435 std::unique_ptr<SfxTabPage> SwLabPage::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rSet)
436 {
437 return std::make_unique<SwLabPage>(pPage, pController, *rSet);
438 }
439
ActivatePage(const SfxItemSet & rSet)440 void SwLabPage::ActivatePage(const SfxItemSet& rSet)
441 {
442 Reset( &rSet );
443 }
444
DeactivatePage(SfxItemSet * _pSet)445 DeactivateRC SwLabPage::DeactivatePage(SfxItemSet* _pSet)
446 {
447 if (_pSet)
448 FillItemSet(_pSet);
449
450 return DeactivateRC::LeavePage;
451 }
452
FillItem(SwLabItem & rItem)453 void SwLabPage::FillItem(SwLabItem& rItem)
454 {
455 rItem.m_bAddr = m_xAddrBox->get_active();
456 rItem.m_aWriting = m_xWritingEdit->get_text();
457 rItem.m_bCont = m_xContButton->get_active();
458 rItem.m_aMake = m_xMakeBox->get_active_text();
459 rItem.m_aType = m_xTypeBox->get_active_text();
460 rItem.m_sDBName = m_sActDBName;
461
462 SwLabRec* pRec = GetSelectedEntryPos();
463 pRec->FillItem( rItem );
464
465 rItem.m_aLstMake = m_xMakeBox->get_active_text();
466 rItem.m_aLstType = m_xTypeBox->get_active_text();
467 }
468
FillItemSet(SfxItemSet * rSet)469 bool SwLabPage::FillItemSet(SfxItemSet* rSet)
470 {
471 FillItem( m_aItem );
472 rSet->Put( m_aItem );
473
474 return true;
475 }
476
Reset(const SfxItemSet * rSet)477 void SwLabPage::Reset(const SfxItemSet* rSet)
478 {
479 m_xMakeBox->clear();
480
481 size_t nLstGroup = 0;
482
483 const size_t nCount = GetParentSwLabDlg()->Makes().size();
484 for(size_t i = 0; i < nCount; ++i)
485 {
486 OUString& rStr = GetParentSwLabDlg()->Makes()[i];
487 m_xMakeBox->append_text(rStr);
488
489 if ( rStr == m_aItem.m_aLstMake)
490 nLstGroup = i;
491 }
492
493 m_xMakeBox->set_active( nLstGroup );
494 MakeHdl(*m_xMakeBox);
495
496 m_aItem = static_cast<const SwLabItem&>( rSet->Get(FN_LABEL));
497 OUString sDBName = m_aItem.m_sDBName;
498
499 OUString aWriting(convertLineEnd(m_aItem.m_aWriting, GetSystemLineEnd()));
500
501 m_xAddrBox->set_active( m_aItem.m_bAddr );
502 m_xWritingEdit->set_text( aWriting );
503
504 for(const auto& rMake : GetParentSwLabDlg()->Makes())
505 {
506 if (m_xMakeBox->find_text(rMake) == -1)
507 m_xMakeBox->append_text(rMake);
508 }
509
510 m_xMakeBox->set_active_text(m_aItem.m_aMake);
511 //save the current type
512 OUString sType(m_aItem.m_aType);
513 MakeHdl(*m_xMakeBox);
514 m_aItem.m_aType = sType;
515 //#102806# a newly added make may not be in the type ListBox already
516 if (m_xTypeBox->find_text(m_aItem.m_aType) == -1 && !m_aItem.m_aMake.isEmpty())
517 GetParentSwLabDlg()->UpdateGroup( m_aItem.m_aMake );
518 if (m_xTypeBox->find_text(m_aItem.m_aType) != -1)
519 {
520 m_xTypeBox->set_active_text(m_aItem.m_aType);
521 TypeHdl(*m_xTypeBox);
522 }
523 if (m_xDatabaseLB->find_text(sDBName) != -1)
524 {
525 m_xDatabaseLB->set_active_text(sDBName);
526 DatabaseHdl(*m_xDatabaseLB);
527 }
528
529 if (m_aItem.m_bCont)
530 m_xContButton->set_active(true);
531 else
532 m_xSheetButton->set_active(true);
533 }
534
SwPrivateDataPage(weld::Container * pPage,weld::DialogController * pController,const SfxItemSet & rSet)535 SwPrivateDataPage::SwPrivateDataPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet)
536 : SfxTabPage(pPage, pController, u"modules/swriter/ui/privateuserpage.ui"_ustr, u"PrivateUserPage"_ustr, &rSet)
537 , m_xFirstNameED(m_xBuilder->weld_entry(u"firstname"_ustr))
538 , m_xNameED(m_xBuilder->weld_entry(u"lastname"_ustr))
539 , m_xShortCutED(m_xBuilder->weld_entry(u"shortname"_ustr))
540 , m_xFirstName2ED(m_xBuilder->weld_entry(u"firstname2"_ustr))
541 , m_xName2ED(m_xBuilder->weld_entry(u"lastname2"_ustr))
542 , m_xShortCut2ED(m_xBuilder->weld_entry(u"shortname2"_ustr))
543 , m_xStreetED(m_xBuilder->weld_entry(u"street"_ustr))
544 , m_xZipED(m_xBuilder->weld_entry(u"izip"_ustr))
545 , m_xCityED(m_xBuilder->weld_entry(u"icity"_ustr))
546 , m_xCountryED(m_xBuilder->weld_entry(u"country"_ustr))
547 , m_xStateED(m_xBuilder->weld_entry(u"state"_ustr))
548 , m_xTitleED(m_xBuilder->weld_entry(u"title"_ustr))
549 , m_xProfessionED(m_xBuilder->weld_entry(u"job"_ustr))
550 , m_xPhoneED(m_xBuilder->weld_entry(u"phone"_ustr))
551 , m_xMobilePhoneED(m_xBuilder->weld_entry(u"mobile"_ustr))
552 , m_xFaxED(m_xBuilder->weld_entry(u"fax"_ustr))
553 , m_xHomePageED(m_xBuilder->weld_entry(u"url"_ustr))
554 , m_xMailED(m_xBuilder->weld_entry(u"email"_ustr))
555 {
556 SetExchangeSupport();
557 }
558
~SwPrivateDataPage()559 SwPrivateDataPage::~SwPrivateDataPage()
560 {
561 }
562
Create(weld::Container * pPage,weld::DialogController * pController,const SfxItemSet * rSet)563 std::unique_ptr<SfxTabPage> SwPrivateDataPage::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rSet)
564 {
565 return std::make_unique<SwPrivateDataPage>(pPage, pController, *rSet);
566 }
567
ActivatePage(const SfxItemSet & rSet)568 void SwPrivateDataPage::ActivatePage(const SfxItemSet& rSet)
569 {
570 Reset(&rSet);
571 }
572
DeactivatePage(SfxItemSet * _pSet)573 DeactivateRC SwPrivateDataPage::DeactivatePage(SfxItemSet* _pSet)
574 {
575 if (_pSet)
576 FillItemSet(_pSet);
577 return DeactivateRC::LeavePage;
578 }
579
FillItemSet(SfxItemSet * rSet)580 bool SwPrivateDataPage::FillItemSet(SfxItemSet* rSet)
581 {
582 const SfxItemSet* pExampleSet = GetDialogExampleSet();
583 assert(pExampleSet);
584 SwLabItem aItem = static_cast<const SwLabItem&>(pExampleSet->Get(FN_LABEL));
585
586 aItem.m_aPrivFirstName = m_xFirstNameED->get_text();
587 aItem.m_aPrivName = m_xNameED->get_text();
588 aItem.m_aPrivShortCut = m_xShortCutED->get_text();
589 aItem.m_aPrivFirstName2 = m_xFirstName2ED->get_text();
590 aItem.m_aPrivName2 = m_xName2ED->get_text();
591 aItem.m_aPrivShortCut2 = m_xShortCut2ED->get_text();
592 aItem.m_aPrivStreet = m_xStreetED->get_text();
593 aItem.m_aPrivZip = m_xZipED->get_text();
594 aItem.m_aPrivCity = m_xCityED->get_text();
595 aItem.m_aPrivCountry = m_xCountryED->get_text();
596 aItem.m_aPrivState = m_xStateED->get_text();
597 aItem.m_aPrivTitle = m_xTitleED->get_text();
598 aItem.m_aPrivProfession= m_xProfessionED->get_text();
599 aItem.m_aPrivPhone = m_xPhoneED->get_text();
600 aItem.m_aPrivMobile = m_xMobilePhoneED->get_text();
601 aItem.m_aPrivFax = m_xFaxED->get_text();
602 aItem.m_aPrivWWW = m_xHomePageED->get_text();
603 aItem.m_aPrivMail = m_xMailED->get_text();
604
605 rSet->Put(aItem);
606 return true;
607 }
608
Reset(const SfxItemSet * rSet)609 void SwPrivateDataPage::Reset(const SfxItemSet* rSet)
610 {
611 const SwLabItem& aItem = static_cast<const SwLabItem&>( rSet->Get(FN_LABEL) );
612 m_xFirstNameED->set_text(aItem.m_aPrivFirstName);
613 m_xNameED->set_text(aItem.m_aPrivName);
614 m_xShortCutED->set_text(aItem.m_aPrivShortCut);
615 m_xFirstName2ED->set_text(aItem.m_aPrivFirstName2);
616 m_xName2ED->set_text(aItem.m_aPrivName2);
617 m_xShortCut2ED->set_text(aItem.m_aPrivShortCut2);
618 m_xStreetED->set_text(aItem.m_aPrivStreet);
619 m_xZipED->set_text(aItem.m_aPrivZip);
620 m_xCityED->set_text(aItem.m_aPrivCity);
621 m_xCountryED->set_text(aItem.m_aPrivCountry);
622 m_xStateED->set_text(aItem.m_aPrivState);
623 m_xTitleED->set_text(aItem.m_aPrivTitle);
624 m_xProfessionED->set_text(aItem.m_aPrivProfession);
625 m_xPhoneED->set_text(aItem.m_aPrivPhone);
626 m_xMobilePhoneED->set_text(aItem.m_aPrivMobile);
627 m_xFaxED->set_text(aItem.m_aPrivFax);
628 m_xHomePageED->set_text(aItem.m_aPrivWWW);
629 m_xMailED->set_text(aItem.m_aPrivMail);
630 }
631
SwBusinessDataPage(weld::Container * pPage,weld::DialogController * pController,const SfxItemSet & rSet)632 SwBusinessDataPage::SwBusinessDataPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet)
633 : SfxTabPage(pPage, pController, u"modules/swriter/ui/businessdatapage.ui"_ustr, u"BusinessDataPage"_ustr, &rSet)
634 , m_xCompanyED(m_xBuilder->weld_entry(u"company"_ustr))
635 , m_xCompanyExtED(m_xBuilder->weld_entry(u"company2"_ustr))
636 , m_xSloganED(m_xBuilder->weld_entry(u"slogan"_ustr))
637 , m_xStreetED(m_xBuilder->weld_entry(u"street"_ustr))
638 , m_xZipED(m_xBuilder->weld_entry(u"izip"_ustr))
639 , m_xCityED(m_xBuilder->weld_entry(u"icity"_ustr))
640 , m_xCountryED(m_xBuilder->weld_entry(u"country"_ustr))
641 , m_xStateED(m_xBuilder->weld_entry(u"state"_ustr))
642 , m_xPositionED(m_xBuilder->weld_entry(u"position"_ustr))
643 , m_xPhoneED(m_xBuilder->weld_entry(u"phone"_ustr))
644 , m_xMobilePhoneED(m_xBuilder->weld_entry(u"mobile"_ustr))
645 , m_xFaxED(m_xBuilder->weld_entry(u"fax"_ustr))
646 , m_xHomePageED(m_xBuilder->weld_entry(u"url"_ustr))
647 , m_xMailED(m_xBuilder->weld_entry(u"email"_ustr))
648 {
649 SetExchangeSupport();
650 }
651
~SwBusinessDataPage()652 SwBusinessDataPage::~SwBusinessDataPage()
653 {
654 }
655
Create(weld::Container * pPage,weld::DialogController * pController,const SfxItemSet * rSet)656 std::unique_ptr<SfxTabPage> SwBusinessDataPage::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rSet)
657 {
658 return std::make_unique<SwBusinessDataPage>(pPage, pController, *rSet);
659 }
660
ActivatePage(const SfxItemSet & rSet)661 void SwBusinessDataPage::ActivatePage(const SfxItemSet& rSet)
662 {
663 Reset(&rSet);
664 }
665
DeactivatePage(SfxItemSet * _pSet)666 DeactivateRC SwBusinessDataPage::DeactivatePage(SfxItemSet* _pSet)
667 {
668 if (_pSet)
669 FillItemSet(_pSet);
670 return DeactivateRC::LeavePage;
671 }
672
FillItemSet(SfxItemSet * rSet)673 bool SwBusinessDataPage::FillItemSet(SfxItemSet* rSet)
674 {
675 const SfxItemSet* pExampleSet = GetDialogExampleSet();
676 assert(pExampleSet);
677 SwLabItem aItem = static_cast<const SwLabItem&>(pExampleSet->Get(FN_LABEL));
678
679 aItem.m_aCompCompany = m_xCompanyED->get_text();
680 aItem.m_aCompCompanyExt= m_xCompanyExtED->get_text();
681 aItem.m_aCompSlogan = m_xSloganED->get_text();
682 aItem.m_aCompStreet = m_xStreetED->get_text();
683 aItem.m_aCompZip = m_xZipED->get_text();
684 aItem.m_aCompCity = m_xCityED->get_text();
685 aItem.m_aCompCountry = m_xCountryED->get_text();
686 aItem.m_aCompState = m_xStateED->get_text();
687 aItem.m_aCompPosition = m_xPositionED->get_text();
688 aItem.m_aCompPhone = m_xPhoneED->get_text();
689 aItem.m_aCompMobile = m_xMobilePhoneED->get_text();
690 aItem.m_aCompFax = m_xFaxED->get_text();
691 aItem.m_aCompWWW = m_xHomePageED->get_text();
692 aItem.m_aCompMail = m_xMailED->get_text();
693
694 rSet->Put(aItem);
695 return true;
696 }
697
Reset(const SfxItemSet * rSet)698 void SwBusinessDataPage::Reset(const SfxItemSet* rSet)
699 {
700 const SwLabItem& aItem = static_cast<const SwLabItem&>( rSet->Get(FN_LABEL) );
701 m_xCompanyED->set_text(aItem.m_aCompCompany);
702 m_xCompanyExtED->set_text(aItem.m_aCompCompanyExt);
703 m_xSloganED->set_text(aItem.m_aCompSlogan);
704 m_xStreetED->set_text(aItem.m_aCompStreet);
705 m_xZipED->set_text(aItem.m_aCompZip);
706 m_xCityED->set_text(aItem.m_aCompCity);
707 m_xCountryED->set_text(aItem.m_aCompCountry);
708 m_xStateED->set_text(aItem.m_aCompState);
709 m_xPositionED->set_text(aItem.m_aCompPosition);
710 m_xPhoneED->set_text(aItem.m_aCompPhone);
711 m_xMobilePhoneED->set_text(aItem.m_aCompMobile);
712 m_xFaxED->set_text(aItem.m_aCompFax);
713 m_xHomePageED->set_text(aItem.m_aCompWWW);
714 m_xMailED->set_text(aItem.m_aCompMail);
715 }
716
717 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
718