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 <vcl/waitobj.hxx>
21 : #include <rtl/ustring.hxx>
22 : #include "svtools/treelistentry.hxx"
23 : #include <com/sun/star/uno/Sequence.h>
24 : #include <swtypes.hxx>
25 : #include <wrtsh.hxx>
26 : #include <initui.hxx>
27 : #include <labimp.hxx>
28 : #include <labfmt.hxx>
29 : #include <labprt.hxx>
30 : #include <unotools.hxx>
31 : #include <dbmgr.hxx>
32 : #include "uitool.hxx"
33 : #include <cmdid.h>
34 : #include <helpid.h>
35 : #include <globals.hrc>
36 : #include <label.hrc>
37 :
38 : //impl in envimg.cxx
39 : extern SW_DLLPUBLIC String MakeSender();
40 :
41 :
42 0 : void SwLabRec::SetFromItem( const SwLabItem& rItem )
43 : {
44 0 : lHDist = rItem.lHDist;
45 0 : lVDist = rItem.lVDist;
46 0 : lWidth = rItem.lWidth;
47 0 : lHeight = rItem.lHeight;
48 0 : lLeft = rItem.lLeft;
49 0 : lUpper = rItem.lUpper;
50 0 : nCols = rItem.nCols;
51 0 : nRows = rItem.nRows;
52 0 : lPWidth = rItem.lPWidth;
53 0 : lPHeight = rItem.lPHeight;
54 0 : bCont = rItem.bCont;
55 0 : }
56 :
57 0 : void SwLabRec::FillItem( SwLabItem& rItem ) const
58 : {
59 0 : rItem.lHDist = lHDist;
60 0 : rItem.lVDist = lVDist;
61 0 : rItem.lWidth = lWidth;
62 0 : rItem.lHeight = lHeight;
63 0 : rItem.lLeft = lLeft;
64 0 : rItem.lUpper = lUpper;
65 0 : rItem.nCols = nCols;
66 0 : rItem.lPWidth = lPWidth;
67 0 : rItem.lPHeight = lPHeight;
68 0 : rItem.nRows = nRows;
69 0 : }
70 :
71 0 : void SwLabDlg::_ReplaceGroup( const String &rMake )
72 : {
73 : // Remove old entries
74 0 : pRecs->erase(pRecs->begin() + 1, pRecs->end());
75 0 : aLabelsCfg.FillLabels(rtl::OUString(rMake), *pRecs);
76 0 : aLstGroup = rMake;
77 0 : }
78 :
79 0 : void SwLabDlg::PageCreated(sal_uInt16 nId, SfxTabPage &rPage)
80 : {
81 0 : if (nId == TP_LAB_LAB)
82 : {
83 0 : if(m_bLabel)
84 : {
85 0 : ((SwLabPage*)&rPage)->SetNewDBMgr(pNewDBMgr);
86 0 : ((SwLabPage*)&rPage)->InitDatabaseBox();
87 : }
88 : else
89 0 : ((SwLabPage*)&rPage)->SetToBusinessCard();
90 : }
91 0 : else if (nId == TP_LAB_PRT)
92 0 : pPrtPage = (SwLabPrtPage*)&rPage;
93 0 : }
94 :
95 0 : SwLabDlg::SwLabDlg(Window* pParent, const SfxItemSet& rSet,
96 : SwNewDBMgr* pDBMgr, sal_Bool bLabel) :
97 : SfxTabDialog( pParent, SW_RES(DLG_LAB), &rSet, sal_False ),
98 : pNewDBMgr(pDBMgr),
99 : pPrtPage(0),
100 : aTypeIds( 50, 10 ),
101 0 : pRecs ( new SwLabRecs() ),
102 : sBusinessCardDlg(SW_RES(ST_BUSINESSCARDDLG)),
103 : sFormat(SW_RES(ST_FIRSTPAGE_LAB)),
104 : sMedium(SW_RES(ST_FIRSTPAGE_BC)),
105 0 : m_bLabel(bLabel)
106 : {
107 0 : WaitObject aWait( pParent );
108 :
109 0 : FreeResource();
110 :
111 0 : GetOKButton().SetText(String(SW_RES(STR_BTN_NEW_DOC)));
112 0 : GetOKButton().SetHelpId(HID_LABEL_INSERT);
113 0 : GetOKButton().SetHelpText(aEmptyStr); // in order for generated help text to get used
114 :
115 0 : AddTabPage(TP_LAB_LAB, m_bLabel ? sFormat : sMedium ,SwLabPage ::Create, 0, sal_False, 0);
116 0 : AddTabPage(TP_VISITING_CARDS, SwVisitingCardPage::Create, 0);
117 0 : AddTabPage(TP_LAB_FMT, SwLabFmtPage::Create, 0);
118 0 : AddTabPage(TP_LAB_PRT, SwLabPrtPage::Create, 0);
119 0 : AddTabPage(TP_BUSINESS_DATA, SwBusinessDataPage::Create, 0 );
120 0 : AddTabPage(TP_PRIVATE_DATA, SwPrivateDataPage::Create, 0);
121 :
122 :
123 0 : if(m_bLabel)
124 : {
125 0 : RemoveTabPage(TP_BUSINESS_DATA);
126 0 : RemoveTabPage(TP_PRIVATE_DATA);
127 0 : RemoveTabPage(TP_VISITING_CARDS);
128 : }
129 : else
130 : {
131 0 : SetText(sBusinessCardDlg);
132 : }
133 : // Read user label from writer.cfg
134 0 : SwLabItem aItem((const SwLabItem&)rSet.Get( FN_LABEL ));
135 0 : SwLabRec* pRec = new SwLabRec;
136 0 : const String aTmp( SW_RES( STR_CUSTOM ) );
137 0 : pRec->aMake = pRec->aType = aTmp;
138 0 : pRec->SetFromItem( aItem );
139 :
140 0 : sal_Bool bDouble = sal_False;
141 :
142 0 : for (sal_uInt16 nRecPos = 0; nRecPos < pRecs->size(); nRecPos++)
143 : {
144 0 : if (pRec->aMake == (*pRecs)[nRecPos]->aMake &&
145 0 : pRec->aType == (*pRecs)[nRecPos]->aType)
146 : {
147 0 : bDouble = sal_True;
148 0 : break;
149 : }
150 : }
151 :
152 0 : if (!bDouble)
153 0 : pRecs->insert( pRecs->begin(), pRec );
154 :
155 0 : sal_uInt16 nLstGroup = 0;
156 0 : const ::com::sun::star::uno::Sequence<rtl::OUString>& rMan = aLabelsCfg.GetManufacturers();
157 0 : const rtl::OUString* pMan = rMan.getConstArray();
158 0 : for(sal_Int32 nMan = 0; nMan < rMan.getLength(); nMan++)
159 : {
160 0 : aMakes.push_back(pMan[nMan]);
161 0 : if ( pMan[nMan] == aItem.aLstMake )
162 0 : nLstGroup = (sal_uInt16) nMan;
163 : }
164 :
165 0 : if ( !aMakes.empty() )
166 0 : _ReplaceGroup( aMakes[nLstGroup] );
167 :
168 0 : if (pExampleSet)
169 0 : pExampleSet->Put(aItem);
170 0 : }
171 :
172 0 : SwLabDlg::~SwLabDlg()
173 : {
174 0 : delete pRecs;
175 0 : }
176 :
177 0 : void SwLabDlg::GetLabItem(SwLabItem &rItem)
178 : {
179 0 : const SwLabItem& rActItem = (const SwLabItem&)GetExampleSet()->Get(FN_LABEL);
180 0 : const SwLabItem& rOldItem = (const SwLabItem&)GetInputSetImpl()->Get(FN_LABEL);
181 :
182 0 : if (rActItem != rOldItem)
183 : {
184 : // Was already "put" with (hopefully) correct content
185 0 : rItem = rActItem;
186 : }
187 : else
188 : {
189 0 : rItem = rOldItem;
190 :
191 : // In rItem there are only settings defined by users.
192 : // Therefore get the real settings directly from Record
193 0 : SwLabRec* pRec = GetRecord(rItem.aType, rItem.bCont);
194 0 : pRec->FillItem( rItem );
195 : }
196 0 : }
197 :
198 0 : SwLabRec* SwLabDlg::GetRecord(const String &rRecName, sal_Bool bCont)
199 : {
200 0 : SwLabRec* pRec = NULL;
201 0 : sal_Bool bFound = sal_False;
202 0 : String sCustom(SW_RES(STR_CUSTOM));
203 :
204 0 : const sal_uInt16 nCount = Recs().size();
205 0 : for (sal_uInt16 i = 0; i < nCount; i++)
206 : {
207 0 : pRec = Recs()[i];
208 0 : if (pRec->aType != sCustom &&
209 0 : rRecName == pRec->aType && bCont == pRec->bCont)
210 : {
211 0 : bFound = sal_True;
212 0 : break;
213 : }
214 : }
215 0 : if (!bFound) // User defined
216 0 : pRec = Recs()[0];
217 :
218 0 : return(pRec);
219 : }
220 :
221 0 : Printer *SwLabDlg::GetPrt()
222 : {
223 0 : if (pPrtPage)
224 0 : return (pPrtPage->GetPrt());
225 : else
226 0 : return (NULL);
227 : }
228 :
229 0 : SwLabPage::SwLabPage(Window* pParent, const SfxItemSet& rSet) :
230 : SfxTabPage(pParent, SW_RES(TP_LAB_LAB), rSet),
231 : pNewDBMgr(NULL),
232 0 : aItem ((const SwLabItem&) rSet.Get(FN_LABEL)),
233 :
234 : aWritingFL (this, SW_RES(FL_WRITING)),
235 : aWritingText (this, SW_RES(TXT_WRITING)),
236 : aAddrBox (this, SW_RES(BOX_ADDR )),
237 : aWritingEdit (this, SW_RES(EDT_WRITING)),
238 : aDatabaseFT (this, SW_RES(FT_DATABASE)),
239 : aDatabaseLB (this, SW_RES(LB_DATABASE)),
240 : aTableFT (this, SW_RES(FT_TABLE )),
241 : aTableLB (this, SW_RES(LB_TABLE )),
242 : aInsertBT (this, SW_RES(BTN_INSERT )),
243 : aDBFieldFT (this, SW_RES(FT_DBFIELD )),
244 : aDBFieldLB (this, SW_RES(LB_DBFIELD )),
245 : aFormatFL (this, SW_RES(FL_FORMAT )),
246 : aContButton (this, SW_RES(BTN_CONT )),
247 : aSheetButton (this, SW_RES(BTN_SHEET )),
248 : aMakeText (this, SW_RES(TXT_MAKE )),
249 : aMakeBox (this, SW_RES(BOX_MAKE )),
250 : aTypeText (this, SW_RES(TXT_TYPE )),
251 : aTypeBox (this, SW_RES(BOX_TYPE )),
252 : aHiddenSortTypeBox(this, WB_SORT|WB_HIDE),
253 0 : aFormatInfo (this, SW_RES(INF_FORMAT ))
254 : {
255 0 : WaitObject aWait( pParent );
256 :
257 0 : FreeResource();
258 0 : SetExchangeSupport();
259 :
260 :
261 : // Install handlers
262 0 : aAddrBox .SetClickHdl (LINK(this, SwLabPage, AddrHdl ));
263 0 : aDatabaseLB .SetSelectHdl(LINK(this, SwLabPage, DatabaseHdl ));
264 0 : aTableLB .SetSelectHdl(LINK(this, SwLabPage, DatabaseHdl ));
265 0 : aInsertBT .SetClickHdl (LINK(this, SwLabPage, FieldHdl ));
266 0 : aContButton .SetClickHdl (LINK(this, SwLabPage, PageHdl ));
267 0 : aSheetButton .SetClickHdl (LINK(this, SwLabPage, PageHdl ));
268 0 : aMakeBox .SetSelectHdl(LINK(this, SwLabPage, MakeHdl ));
269 0 : aTypeBox .SetSelectHdl(LINK(this, SwLabPage, TypeHdl ));
270 :
271 0 : InitDatabaseBox();
272 :
273 0 : size_t nLstGroup = 0;
274 :
275 0 : const sal_uInt16 nCount = (sal_uInt16)GetParentSwLabDlg()->Makes().size();
276 0 : for(size_t i = 0; i < nCount; ++i)
277 : {
278 0 : rtl::OUString& rStr = GetParentSwLabDlg()->Makes()[i];
279 0 : aMakeBox.InsertEntry( rStr );
280 :
281 0 : if ( rStr == aItem.aLstMake)
282 0 : nLstGroup = i;
283 : }
284 :
285 0 : aMakeBox.SelectEntryPos( nLstGroup );
286 0 : aMakeBox.GetSelectHdl().Call( &aMakeBox );
287 0 : }
288 :
289 0 : SwLabPage::~SwLabPage()
290 : {
291 0 : }
292 :
293 0 : static void lcl_ChgYPos(Window& rWin, long nDiff)
294 : {
295 0 : Point aTempPos(rWin.GetPosPixel());
296 0 : aTempPos.Y() += nDiff;
297 0 : rWin.SetPosPixel(aTempPos);
298 0 : }
299 :
300 0 : void SwLabPage::SetToBusinessCard()
301 : {
302 0 : SetHelpId(HID_BUSINESS_FMT_PAGE);
303 0 : aContButton.SetHelpId(HID_BUSINESS_FMT_PAGE_CONT);
304 0 : aSheetButton.SetHelpId(HID_BUSINESS_FMT_PAGE_SHEET);
305 0 : aMakeBox.SetHelpId(HID_BUSINESS_FMT_PAGE_BRAND);
306 0 : aTypeBox.SetHelpId(HID_BUSINESS_FMT_PAGE_TYPE);
307 0 : m_bLabel = sal_False;
308 0 : aWritingText.Hide();
309 0 : aAddrBox.Hide();
310 0 : aWritingEdit.Hide();
311 0 : aDatabaseFT.Hide();
312 0 : aDatabaseLB.Hide();
313 0 : aTableFT.Hide();
314 0 : aTableLB.Hide();
315 0 : aInsertBT.Hide();
316 0 : aDBFieldFT.Hide();
317 0 : aDBFieldLB.Hide();
318 0 : aWritingFL.Hide();
319 :
320 : //resize the form
321 0 : Point aFLPos(aWritingFL.GetPosPixel());
322 0 : long nDiffPos = aFormatFL.GetPosPixel().Y() - aFLPos.Y();
323 0 : Size aFLSz(aFormatFL.GetSizePixel());
324 0 : aFormatFL.SetPosSizePixel(aFLPos, aFLSz);
325 :
326 : // move all controls up
327 0 : lcl_ChgYPos(aContButton, -nDiffPos);
328 0 : lcl_ChgYPos(aSheetButton, -nDiffPos);
329 0 : lcl_ChgYPos(aMakeText, -nDiffPos);
330 :
331 0 : lcl_ChgYPos(aTypeText, -nDiffPos);
332 0 : lcl_ChgYPos(aFormatInfo, -nDiffPos);
333 :
334 0 : Size aTmpSz(3, 3);
335 0 : aTmpSz = LogicToPixel(aTmpSz, MAP_APPFONT);
336 :
337 0 : lcl_ChgYPos(aMakeBox, - nDiffPos);
338 0 : Point aLBPos(aMakeBox.GetPosPixel());
339 0 : aLBPos.Y() += aMakeBox.GetSizePixel().Height() + aTmpSz.Height();
340 0 : aTypeBox.SetPosPixel(aLBPos);
341 0 : };
342 :
343 0 : IMPL_LINK_NOARG(SwLabPage, AddrHdl)
344 : {
345 0 : String aWriting;
346 :
347 0 : if ( aAddrBox.IsChecked() )
348 0 : aWriting = convertLineEnd(MakeSender(), GetSystemLineEnd());
349 :
350 0 : aWritingEdit.SetText( aWriting );
351 0 : aWritingEdit.GrabFocus();
352 0 : return 0;
353 : }
354 :
355 0 : IMPL_LINK( SwLabPage, DatabaseHdl, ListBox *, pListBox )
356 : {
357 0 : sActDBName = aDatabaseLB.GetSelectEntry();
358 :
359 0 : WaitObject aObj( GetParentSwLabDlg() );
360 :
361 0 : if (pListBox == &aDatabaseLB)
362 0 : GetNewDBMgr()->GetTableNames(&aTableLB, sActDBName);
363 :
364 0 : GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sActDBName, aTableLB.GetSelectEntry());
365 0 : return 0;
366 : }
367 :
368 0 : IMPL_LINK_NOARG(SwLabPage, FieldHdl)
369 : {
370 0 : rtl::OUStringBuffer aStr;
371 0 : aStr.append('<');
372 0 : aStr.append(aDatabaseLB.GetSelectEntry());
373 0 : aStr.append('.');
374 0 : aStr.append(aTableLB.GetSelectEntry());
375 0 : aStr.append('.');
376 0 : aStr.append(aTableLB.GetEntryData(aTableLB.GetSelectEntryPos()) == 0 ? '0' : '1');
377 0 : aStr.append('.');
378 0 : aStr.append(aDBFieldLB.GetSelectEntry());
379 0 : aStr.append('>');
380 0 : aWritingEdit.ReplaceSelected(aStr.makeStringAndClear());
381 0 : Selection aSel = aWritingEdit.GetSelection();
382 0 : aWritingEdit.GrabFocus();
383 0 : aWritingEdit.SetSelection(aSel);
384 0 : return 0;
385 : }
386 :
387 0 : IMPL_LINK_NOARG_INLINE_START(SwLabPage, PageHdl)
388 : {
389 0 : aMakeBox.GetSelectHdl().Call( &aMakeBox );
390 0 : return 0;
391 : }
392 0 : IMPL_LINK_NOARG_INLINE_END(SwLabPage, PageHdl)
393 :
394 0 : IMPL_LINK_NOARG(SwLabPage, MakeHdl)
395 : {
396 0 : WaitObject aWait( GetParentSwLabDlg() );
397 :
398 0 : aTypeBox.Clear();
399 0 : aHiddenSortTypeBox.Clear();
400 0 : GetParentSwLabDlg()->TypeIds().clear();
401 :
402 0 : const String aMake = aMakeBox.GetSelectEntry();
403 0 : GetParentSwLabDlg()->ReplaceGroup( aMake );
404 0 : aItem.aLstMake = aMake;
405 :
406 0 : const sal_Bool bCont = aContButton.IsChecked();
407 0 : const sal_uInt16 nCount = GetParentSwLabDlg()->Recs().size();
408 0 : sal_uInt16 nLstType = 0;
409 :
410 0 : const String sCustom(SW_RES(STR_CUSTOM));
411 : //insert the entries into the sorted list box
412 0 : for ( sal_uInt16 i = 0; i < nCount; ++i )
413 : {
414 0 : const String aType ( GetParentSwLabDlg()->Recs()[i]->aType );
415 0 : sal_Bool bInsert = sal_False;
416 0 : if ( GetParentSwLabDlg()->Recs()[i]->aType == sCustom )
417 : {
418 0 : bInsert = sal_True;
419 0 : aTypeBox.InsertEntry(aType );
420 : }
421 0 : else if ( GetParentSwLabDlg()->Recs()[i]->bCont == bCont )
422 : {
423 0 : if ( aHiddenSortTypeBox.GetEntryPos(aType) == LISTBOX_ENTRY_NOTFOUND )
424 : {
425 0 : bInsert = sal_True;
426 0 : aHiddenSortTypeBox.InsertEntry( aType );
427 : }
428 : }
429 0 : if(bInsert)
430 : {
431 0 : GetParentSwLabDlg()->TypeIds().push_back(i);
432 0 : if ( !nLstType && aType == String(aItem.aLstType) )
433 0 : nLstType = GetParentSwLabDlg()->TypeIds().size();
434 : }
435 0 : }
436 0 : for(sal_uInt16 nEntry = 0; nEntry < aHiddenSortTypeBox.GetEntryCount(); nEntry++)
437 : {
438 0 : aTypeBox.InsertEntry(aHiddenSortTypeBox.GetEntry(nEntry));
439 : }
440 0 : if (nLstType)
441 0 : aTypeBox.SelectEntry(aItem.aLstType);
442 : else
443 0 : aTypeBox.SelectEntryPos(0);
444 0 : aTypeBox.GetSelectHdl().Call( &aTypeBox );
445 0 : return 0;
446 : }
447 :
448 0 : IMPL_LINK_NOARG_INLINE_START(SwLabPage, TypeHdl)
449 : {
450 0 : DisplayFormat();
451 0 : aItem.aType = aTypeBox.GetSelectEntry();
452 0 : return 0;
453 : }
454 0 : IMPL_LINK_NOARG_INLINE_END(SwLabPage, TypeHdl)
455 :
456 0 : void SwLabPage::DisplayFormat()
457 : {
458 0 : MetricField aField(this, WinBits(0));
459 0 : FieldUnit aMetric = ::GetDfltMetric(sal_False);
460 0 : SetMetric(aField, aMetric);
461 0 : aField.SetDecimalDigits(2);
462 0 : aField.SetMin (0);
463 0 : aField.SetMax (LONG_MAX);
464 :
465 0 : SwLabRec* pRec = GetSelectedEntryPos();
466 0 : aItem.aLstType = pRec->aType;
467 0 : SETFLDVAL(aField, pRec->lWidth);
468 0 : aField.Reformat();
469 0 : const String aWString = aField.GetText();
470 :
471 0 : SETFLDVAL(aField, pRec->lHeight);
472 0 : aField.Reformat();
473 :
474 0 : String aText = pRec->aType;
475 0 : aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": "));
476 0 : aText += aWString;
477 0 : aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" x "));
478 0 : aText += aField.GetText();
479 0 : aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" ("));
480 0 : aText += String::CreateFromInt32( pRec->nCols );
481 0 : aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" x "));
482 0 : aText += String::CreateFromInt32( pRec->nRows );
483 0 : aText += ')';
484 0 : aFormatInfo.SetText(aText);
485 0 : }
486 :
487 0 : SwLabRec* SwLabPage::GetSelectedEntryPos()
488 : {
489 0 : String sSelEntry(aTypeBox.GetSelectEntry());
490 :
491 0 : return GetParentSwLabDlg()->GetRecord(sSelEntry, aContButton.IsChecked());
492 : }
493 :
494 0 : void SwLabPage::InitDatabaseBox()
495 : {
496 0 : if( GetNewDBMgr() )
497 : {
498 0 : aDatabaseLB.Clear();
499 0 : ::com::sun::star::uno::Sequence<rtl::OUString> aDataNames = SwNewDBMgr::GetExistingDatabaseNames();
500 0 : const rtl::OUString* pDataNames = aDataNames.getConstArray();
501 0 : for (long i = 0; i < aDataNames.getLength(); i++)
502 0 : aDatabaseLB.InsertEntry(pDataNames[i]);
503 0 : String sDBName = sActDBName.GetToken( 0, DB_DELIM );
504 0 : String sTableName = sActDBName.GetToken( 1, DB_DELIM );
505 0 : aDatabaseLB.SelectEntry(sDBName);
506 0 : if( sDBName.Len() && GetNewDBMgr()->GetTableNames(&aTableLB, sDBName))
507 : {
508 0 : aTableLB.SelectEntry(sTableName);
509 0 : GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sActDBName, sTableName);
510 : }
511 : else
512 0 : aDBFieldLB.Clear();
513 : }
514 0 : }
515 :
516 0 : SfxTabPage* SwLabPage::Create(Window* pParent, const SfxItemSet& rSet)
517 : {
518 0 : return new SwLabPage(pParent, rSet);
519 : }
520 :
521 0 : void SwLabPage::ActivatePage(const SfxItemSet& rSet)
522 : {
523 0 : Reset( rSet );
524 0 : }
525 :
526 0 : int SwLabPage::DeactivatePage(SfxItemSet* _pSet)
527 : {
528 0 : if (_pSet)
529 0 : FillItemSet(*_pSet);
530 :
531 0 : return sal_True;
532 : }
533 :
534 0 : void SwLabPage::FillItem(SwLabItem& rItem)
535 : {
536 0 : rItem.bAddr = aAddrBox.IsChecked();
537 0 : rItem.aWriting = aWritingEdit.GetText();
538 0 : rItem.bCont = aContButton.IsChecked();
539 0 : rItem.aMake = aMakeBox.GetSelectEntry();
540 0 : rItem.aType = aTypeBox.GetSelectEntry();
541 0 : rItem.sDBName = sActDBName;
542 :
543 0 : SwLabRec* pRec = GetSelectedEntryPos();
544 0 : pRec->FillItem( rItem );
545 :
546 0 : rItem.aLstMake = aMakeBox.GetSelectEntry();
547 0 : rItem.aLstType = aTypeBox.GetSelectEntry();
548 0 : }
549 :
550 0 : sal_Bool SwLabPage::FillItemSet(SfxItemSet& rSet)
551 : {
552 0 : FillItem( aItem );
553 0 : rSet.Put( aItem );
554 :
555 0 : return sal_True;
556 : }
557 :
558 0 : void SwLabPage::Reset(const SfxItemSet& rSet)
559 : {
560 0 : aItem = (const SwLabItem&) rSet.Get(FN_LABEL);
561 0 : String sDBName = aItem.sDBName;
562 :
563 0 : String aWriting(convertLineEnd(aItem.aWriting, GetSystemLineEnd()));
564 :
565 0 : aAddrBox .Check ( aItem.bAddr );
566 0 : aWritingEdit.SetText ( aWriting );
567 :
568 0 : for(std::vector<rtl::OUString>::const_iterator i = GetParentSwLabDlg()->Makes().begin(); i != GetParentSwLabDlg()->Makes().end(); ++i)
569 : {
570 0 : if(aMakeBox.GetEntryPos(String(*i)) == LISTBOX_ENTRY_NOTFOUND)
571 0 : aMakeBox.InsertEntry(*i);
572 : }
573 :
574 0 : aMakeBox .SelectEntry( aItem.aMake );
575 : //save the current type
576 0 : String sType(aItem.aType);
577 0 : aMakeBox.GetSelectHdl().Call( &aMakeBox );
578 0 : aItem.aType = sType;
579 : //#102806# a newly added make may not be in the type ListBox already
580 0 : if (aTypeBox.GetEntryPos(String(aItem.aType)) == LISTBOX_ENTRY_NOTFOUND && !aItem.aMake.isEmpty())
581 0 : GetParentSwLabDlg()->UpdateGroup( aItem.aMake );
582 0 : if (aTypeBox.GetEntryPos(String(aItem.aType)) != LISTBOX_ENTRY_NOTFOUND)
583 : {
584 0 : aTypeBox.SelectEntry(aItem.aType);
585 0 : aTypeBox.GetSelectHdl().Call(&aTypeBox);
586 : }
587 0 : if (aDatabaseLB.GetEntryPos(sDBName) != LISTBOX_ENTRY_NOTFOUND)
588 : {
589 0 : aDatabaseLB.SelectEntry(sDBName);
590 0 : aDatabaseLB.GetSelectHdl().Call(&aDatabaseLB);
591 : }
592 :
593 0 : if (aItem.bCont)
594 0 : aContButton .Check();
595 : else
596 0 : aSheetButton.Check();
597 0 : }
598 :
599 0 : void SwVisitingCardPage::ClearUserData()
600 : {
601 0 : SvTreeListEntry* pEntry = aAutoTextLB.First();
602 0 : while(pEntry)
603 : {
604 0 : delete (String*)pEntry->GetUserData();
605 0 : pEntry = aAutoTextLB.Next(pEntry);
606 : }
607 0 : }
608 :
609 0 : void SwVisitingCardPage::SetUserData( sal_uInt32 nCnt,
610 : const rtl::OUString* pNames, const rtl::OUString* pValues )
611 : {
612 0 : for( sal_uInt32 i = 0; i < nCnt; ++i )
613 : {
614 0 : SvTreeListEntry* pEntry = aAutoTextLB.InsertEntry( pNames[ i ] );
615 0 : pEntry->SetUserData( new String( pValues[ i ] ));
616 : }
617 0 : }
618 :
619 0 : SwVisitingCardPage::SwVisitingCardPage(Window* pParent, const SfxItemSet& rSet) :
620 : SfxTabPage(pParent, SW_RES(TP_VISITING_CARDS), rSet),
621 : aContentFL(this, SW_RES( FL_CONTENT )),
622 : aAutoTextLB(this, SW_RES( LB_AUTO_TEXT )),
623 : aAutoTextGroupFT(this, SW_RES( FT_AUTO_TEXT_GROUP )),
624 : aAutoTextGroupLB(this, SW_RES( LB_AUTO_TEXT_GROUP )),
625 : aExampleWIN(this, SW_RES( WIN_EXAMPLE )),
626 : sVisCardGroup(SW_RES(ST_VISCARD_GROUP)),
627 0 : pExampleFrame(0)
628 : {
629 0 : FreeResource();
630 0 : aAutoTextLB.SetStyle( aAutoTextLB.GetStyle() | WB_HSCROLL );
631 0 : aAutoTextLB.SetSpaceBetweenEntries(0);
632 0 : aAutoTextLB.SetSelectionMode( SINGLE_SELECTION );
633 0 : aAutoTextLB.SetHelpId(HID_BUSINESS_CARD_CONTENT);
634 :
635 0 : SetExchangeSupport();
636 0 : aAutoTextLB.SetSelectHdl(LINK(this, SwVisitingCardPage, AutoTextSelectHdl));
637 0 : aAutoTextGroupLB.SetSelectHdl(LINK(this, SwVisitingCardPage, AutoTextSelectHdl));
638 :
639 0 : aExampleWIN.Hide();
640 :
641 0 : aAutoTextLB.Show();
642 0 : aAutoTextGroupFT.Show();
643 0 : aAutoTextGroupLB.Show();
644 0 : InitFrameControl();
645 0 : }
646 :
647 0 : SwVisitingCardPage::~SwVisitingCardPage()
648 : {
649 0 : for(sal_uInt16 i = 0; i < aAutoTextGroupLB.GetEntryCount(); i++)
650 0 : delete (String*)aAutoTextGroupLB.GetEntryData( i );
651 0 : _xAutoText = 0;
652 :
653 0 : ClearUserData();
654 0 : delete pExampleFrame;
655 0 : }
656 :
657 0 : SfxTabPage* SwVisitingCardPage::Create(Window* pParent, const SfxItemSet& rSet)
658 : {
659 0 : return new SwVisitingCardPage(pParent, rSet);
660 : }
661 :
662 0 : void SwVisitingCardPage::ActivatePage(const SfxItemSet& rSet)
663 : {
664 0 : Reset( rSet );
665 0 : UpdateFields();
666 0 : }
667 :
668 0 : int SwVisitingCardPage::DeactivatePage(SfxItemSet* _pSet)
669 : {
670 0 : if (_pSet)
671 0 : FillItemSet(*_pSet);
672 0 : return LEAVE_PAGE;
673 : }
674 :
675 0 : sal_Bool SwVisitingCardPage::FillItemSet(SfxItemSet& rSet)
676 : {
677 : String* pGroup = (String*)aAutoTextGroupLB.GetEntryData(
678 0 : aAutoTextGroupLB.GetSelectEntryPos());
679 : OSL_ENSURE(pGroup, "no group selected?");
680 :
681 0 : if(pGroup)
682 0 : aLabItem.sGlossaryGroup = *pGroup;
683 :
684 0 : SvTreeListEntry* pSelEntry = aAutoTextLB.FirstSelected();
685 0 : if(pSelEntry)
686 0 : aLabItem.sGlossaryBlockName = *(String*)pSelEntry->GetUserData();
687 0 : rSet.Put(aLabItem);
688 0 : return sal_True;
689 : }
690 :
691 0 : static void lcl_SelectBlock(SvTreeListBox& rAutoTextLB, const String& rBlockName)
692 : {
693 0 : SvTreeListEntry* pEntry = rAutoTextLB.First();
694 0 : while(pEntry)
695 : {
696 0 : if(*(String*)pEntry->GetUserData() == rBlockName)
697 : {
698 0 : rAutoTextLB.Select(pEntry);
699 0 : rAutoTextLB.MakeVisible(pEntry);
700 0 : break;
701 : }
702 0 : pEntry = rAutoTextLB.Next(pEntry);
703 : }
704 0 : }
705 :
706 0 : static sal_Bool lcl_FindBlock(SvTreeListBox& rAutoTextLB, const String& rBlockName)
707 : {
708 0 : SvTreeListEntry* pEntry = rAutoTextLB.First();
709 0 : while(pEntry)
710 : {
711 0 : if(*(String*)pEntry->GetUserData() == rBlockName)
712 : {
713 0 : rAutoTextLB.Select(pEntry);
714 0 : return sal_True;
715 : }
716 0 : pEntry = rAutoTextLB.Next(pEntry);
717 : }
718 0 : return sal_False;
719 : }
720 :
721 0 : void SwVisitingCardPage::Reset(const SfxItemSet& rSet)
722 : {
723 0 : aLabItem = (const SwLabItem&) rSet.Get(FN_LABEL);
724 :
725 0 : sal_Bool bFound = sal_False;
726 : sal_uInt16 i;
727 0 : for(i = 0; i < aAutoTextGroupLB.GetEntryCount() && !bFound; i++)
728 0 : if( String(aLabItem.sGlossaryGroup) ==
729 0 : *(String*)aAutoTextGroupLB.GetEntryData( i ))
730 : {
731 0 : bFound = sal_True;
732 0 : break;
733 : }
734 :
735 0 : if(!bFound)
736 : {
737 : // initially search for a group starting with "crd" which is the name of the
738 : // business card AutoTexts
739 0 : for(i = 0; i < aAutoTextGroupLB.GetEntryCount() && !bFound; i++)
740 0 : if(0 == (*(String*)aAutoTextGroupLB.GetEntryData( i )).SearchAscii( "crd") )
741 : {
742 0 : bFound = sal_True;
743 0 : break;
744 : }
745 : }
746 0 : if(bFound)
747 : {
748 0 : if(aAutoTextGroupLB.GetSelectEntryPos() != i)
749 : {
750 0 : aAutoTextGroupLB.SelectEntryPos(i);
751 0 : AutoTextSelectHdl(&aAutoTextGroupLB);
752 : }
753 0 : if(lcl_FindBlock(aAutoTextLB, aLabItem.sGlossaryBlockName))
754 : {
755 0 : SvTreeListEntry* pSelEntry = aAutoTextLB.FirstSelected();
756 0 : if( pSelEntry &&
757 0 : *(String*)pSelEntry->GetUserData() != String(aLabItem.sGlossaryBlockName))
758 : {
759 0 : lcl_SelectBlock(aAutoTextLB, aLabItem.sGlossaryBlockName);
760 0 : AutoTextSelectHdl(&aAutoTextLB);
761 : }
762 : }
763 : }
764 0 : }
765 :
766 0 : SwPrivateDataPage::SwPrivateDataPage(Window* pParent, const SfxItemSet& rSet) :
767 : SfxTabPage(pParent, SW_RES(TP_PRIVATE_DATA), rSet),
768 : aDataFL (this, SW_RES( FL_DATA )),
769 :
770 : aNameFT (this, SW_RES( FT_NAME )),
771 : aFirstNameED (this, SW_RES( ED_FIRSTNAME )),
772 : aNameED (this, SW_RES( ED_NAME )),
773 : aShortCutED (this, SW_RES( ED_SHORTCUT )),
774 :
775 : aName2FT (this, SW_RES( FT_NAME_2 )),
776 : aFirstName2ED (this, SW_RES( ED_FIRSTNAME_2)),
777 : aName2ED (this, SW_RES( ED_NAME_2 )),
778 : aShortCut2ED (this, SW_RES( ED_SHORTCUT_2 )),
779 :
780 : aStreetFT (this, SW_RES( FT_STREET )),
781 : aStreetED (this, SW_RES( ED_STREET )),
782 : aZipCityFT (this, SW_RES( FT_ZIPCITY )),
783 : aZipED (this, SW_RES( ED_ZIP )),
784 : aCityED (this, SW_RES( ED_CITY )),
785 : aCountryStateFT (this, SW_RES( FT_COUNTRYSTATE )),
786 : aCountryED (this, SW_RES( ED_COUNTRY )),
787 : aStateED (this, SW_RES( ED_STATE )),
788 : aTitleProfessionFT (this, SW_RES( FT_TITLEPROF )),
789 : aTitleED (this, SW_RES( ED_TITLE )),
790 : aProfessionED (this, SW_RES( ED_PROFESSION )),
791 : aPhoneFT (this, SW_RES( FT_PHONE_MOBILE )),
792 : aPhoneED (this, SW_RES( ED_PHONE )),
793 : aMobilePhoneED (this, SW_RES( ED_MOBILE )),
794 : aFaxFT (this, SW_RES( FT_FAX )),
795 : aFaxED (this, SW_RES( ED_FAX )),
796 : aWWWMailFT (this, SW_RES( FT_WWWMAIL )),
797 : aHomePageED (this, SW_RES( ED_WWW )),
798 0 : aMailED (this, SW_RES( ED_MAIL ))
799 : {
800 0 : FreeResource();
801 0 : SetExchangeSupport();
802 0 : }
803 :
804 0 : SwPrivateDataPage::~SwPrivateDataPage()
805 : {
806 0 : }
807 :
808 0 : SfxTabPage* SwPrivateDataPage::Create(Window* pParent, const SfxItemSet& rSet)
809 : {
810 0 : return new SwPrivateDataPage(pParent, rSet);
811 : }
812 :
813 0 : void SwPrivateDataPage::ActivatePage(const SfxItemSet& rSet)
814 : {
815 0 : Reset(rSet);
816 0 : }
817 :
818 0 : int SwPrivateDataPage::DeactivatePage(SfxItemSet* _pSet)
819 : {
820 0 : if (_pSet)
821 0 : FillItemSet(*_pSet);
822 0 : return LEAVE_PAGE;
823 : }
824 :
825 0 : sal_Bool SwPrivateDataPage::FillItemSet(SfxItemSet& rSet)
826 : {
827 :
828 0 : SwLabItem aItem = (const SwLabItem&) GetTabDialog()->GetExampleSet()->Get(FN_LABEL);
829 0 : aItem.aPrivFirstName = aFirstNameED .GetText();
830 0 : aItem.aPrivName = aNameED .GetText( );
831 0 : aItem.aPrivShortCut = aShortCutED .GetText( );
832 0 : aItem.aPrivFirstName2 = aFirstName2ED .GetText();
833 0 : aItem.aPrivName2 = aName2ED .GetText( );
834 0 : aItem.aPrivShortCut2 = aShortCut2ED .GetText( );
835 0 : aItem.aPrivStreet = aStreetED .GetText( );
836 0 : aItem.aPrivZip = aZipED .GetText( );
837 0 : aItem.aPrivCity = aCityED .GetText( );
838 0 : aItem.aPrivCountry = aCountryED .GetText( );
839 0 : aItem.aPrivState = aStateED .GetText( );
840 0 : aItem.aPrivTitle = aTitleED .GetText( );
841 0 : aItem.aPrivProfession= aProfessionED.GetText( );
842 0 : aItem.aPrivPhone = aPhoneED .GetText( );
843 0 : aItem.aPrivMobile = aMobilePhoneED.GetText( );
844 0 : aItem.aPrivFax = aFaxED .GetText( );
845 0 : aItem.aPrivWWW = aHomePageED .GetText( );
846 0 : aItem.aPrivMail = aMailED .GetText( );
847 :
848 0 : rSet.Put(aItem);
849 0 : return sal_True;
850 : }
851 :
852 0 : void SwPrivateDataPage::Reset(const SfxItemSet& rSet)
853 : {
854 0 : const SwLabItem& aItem = (const SwLabItem&) rSet.Get(FN_LABEL);
855 0 : aFirstNameED.SetText(aItem.aPrivFirstName);
856 0 : aNameED .SetText(aItem.aPrivName);
857 0 : aShortCutED .SetText(aItem.aPrivShortCut);
858 0 : aFirstName2ED.SetText(aItem.aPrivFirstName2);
859 0 : aName2ED .SetText(aItem.aPrivName2);
860 0 : aShortCut2ED .SetText(aItem.aPrivShortCut2);
861 0 : aStreetED .SetText(aItem.aPrivStreet);
862 0 : aZipED .SetText(aItem.aPrivZip);
863 0 : aCityED .SetText(aItem.aPrivCity);
864 0 : aCountryED .SetText(aItem.aPrivCountry);
865 0 : aStateED .SetText(aItem.aPrivState);
866 0 : aTitleED .SetText(aItem.aPrivTitle);
867 0 : aProfessionED.SetText(aItem.aPrivProfession);
868 0 : aPhoneED .SetText(aItem.aPrivPhone);
869 0 : aMobilePhoneED.SetText(aItem.aPrivMobile);
870 0 : aFaxED .SetText(aItem.aPrivFax);
871 0 : aHomePageED .SetText(aItem.aPrivWWW);
872 0 : aMailED .SetText(aItem.aPrivMail);
873 0 : }
874 :
875 0 : SwBusinessDataPage::SwBusinessDataPage(Window* pParent, const SfxItemSet& rSet) :
876 : SfxTabPage(pParent, SW_RES(TP_BUSINESS_DATA), rSet),
877 : aDataFL (this, SW_RES( FL_DATA )),
878 : aCompanyFT (this, SW_RES( FT_COMP )),
879 : aCompanyED (this, SW_RES( ED_COMP )),
880 : aCompanyExtFT (this, SW_RES( FT_COMP_EXT )),
881 : aCompanyExtED (this, SW_RES( ED_COMP_EXT )),
882 : aSloganFT (this, SW_RES( FT_SLOGAN )),
883 : aSloganED (this, SW_RES( ED_SLOGAN )),
884 : aStreetFT (this, SW_RES( FT_STREET )),
885 : aStreetED (this, SW_RES( ED_STREET )),
886 : aZipCityFT (this, SW_RES( FT_ZIPCITY )),
887 : aZipED (this, SW_RES( ED_ZIP )),
888 : aCityED (this, SW_RES( ED_CITY )),
889 : aCountryStateFT (this, SW_RES( FT_COUNTRYSTATE )),
890 : aCountryED (this, SW_RES( ED_COUNTRY )),
891 : aStateED (this, SW_RES( ED_STATE )),
892 : aPositionFT (this, SW_RES( FT_POSITION )),
893 : aPositionED (this, SW_RES( ED_POSITION )),
894 : aPhoneFT (this, SW_RES( FT_PHONE_MOBILE )),
895 : aPhoneED (this, SW_RES( ED_PHONE )),
896 : aMobilePhoneED (this, SW_RES( ED_MOBILE )),
897 : aFaxFT (this, SW_RES( FT_FAX )),
898 : aFaxED (this, SW_RES( ED_FAX )),
899 : aWWWMailFT (this, SW_RES( FT_WWWMAIL )),
900 : aHomePageED (this, SW_RES( ED_WWW )),
901 0 : aMailED (this, SW_RES( ED_MAIL ))
902 : {
903 0 : FreeResource();
904 0 : SetExchangeSupport();
905 0 : }
906 :
907 :
908 0 : SwBusinessDataPage::~SwBusinessDataPage()
909 : {
910 0 : }
911 :
912 0 : SfxTabPage* SwBusinessDataPage::Create(Window* pParent, const SfxItemSet& rSet)
913 : {
914 0 : return new SwBusinessDataPage(pParent, rSet);
915 : }
916 :
917 0 : void SwBusinessDataPage::ActivatePage(const SfxItemSet& rSet)
918 : {
919 0 : Reset(rSet);
920 0 : }
921 :
922 0 : int SwBusinessDataPage::DeactivatePage(SfxItemSet* _pSet)
923 : {
924 0 : if (_pSet)
925 0 : FillItemSet(*_pSet);
926 0 : return LEAVE_PAGE;
927 : }
928 :
929 0 : sal_Bool SwBusinessDataPage::FillItemSet(SfxItemSet& rSet)
930 : {
931 0 : SwLabItem aItem = (const SwLabItem&) GetTabDialog()->GetExampleSet()->Get(FN_LABEL);
932 :
933 0 : aItem.aCompCompany = aCompanyED .GetText();
934 0 : aItem.aCompCompanyExt= aCompanyExtED .GetText();
935 0 : aItem.aCompSlogan = aSloganED .GetText();
936 0 : aItem.aCompStreet = aStreetED .GetText();
937 0 : aItem.aCompZip = aZipED .GetText();
938 0 : aItem.aCompCity = aCityED .GetText();
939 0 : aItem.aCompCountry = aCountryED .GetText();
940 0 : aItem.aCompState = aStateED .GetText();
941 0 : aItem.aCompPosition = aPositionED .GetText();
942 0 : aItem.aCompPhone = aPhoneED .GetText();
943 0 : aItem.aCompMobile = aMobilePhoneED .GetText();
944 0 : aItem.aCompFax = aFaxED .GetText();
945 0 : aItem.aCompWWW = aHomePageED .GetText();
946 0 : aItem.aCompMail = aMailED .GetText();
947 :
948 0 : rSet.Put(aItem);
949 0 : return sal_True;
950 : }
951 :
952 0 : void SwBusinessDataPage::Reset(const SfxItemSet& rSet)
953 : {
954 0 : const SwLabItem& aItem = (const SwLabItem&) rSet.Get(FN_LABEL);
955 0 : aCompanyED .SetText(aItem.aCompCompany);
956 0 : aCompanyExtED .SetText(aItem.aCompCompanyExt);
957 0 : aSloganED .SetText(aItem.aCompSlogan);
958 0 : aStreetED .SetText(aItem.aCompStreet);
959 0 : aZipED .SetText(aItem.aCompZip);
960 0 : aCityED .SetText(aItem.aCompCity);
961 0 : aCountryED .SetText(aItem.aCompCountry);
962 0 : aStateED .SetText(aItem.aCompState);
963 0 : aPositionED .SetText(aItem.aCompPosition);
964 0 : aPhoneED .SetText(aItem.aCompPhone);
965 0 : aMobilePhoneED .SetText(aItem.aCompMobile);
966 0 : aFaxED .SetText(aItem.aCompFax);
967 0 : aHomePageED .SetText(aItem.aCompWWW);
968 0 : aMailED .SetText(aItem.aCompMail);
969 0 : }
970 :
971 :
972 :
973 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|