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/svapp.hxx>
21 #include <flddat.hxx>
22 #include <docufld.hxx>
23 #include <globals.hrc>
24 #include <strings.hrc>
25 #include <chpfld.hxx>
26 #include "flddok.hxx"
27 #include <swmodule.hxx>
28 #include <view.hxx>
29 #include <wrtsh.hxx>
30 #include <svl/zformat.hxx>
31
32 #define USER_DATA_VERSION_1 "1"
33 #define USER_DATA_VERSION USER_DATA_VERSION_1
34
SwFieldDokPage(weld::Container * pPage,weld::DialogController * pController,const SfxItemSet * const pCoreSet)35 SwFieldDokPage::SwFieldDokPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet *const pCoreSet)
36 : SwFieldPage(pPage, pController, "modules/swriter/ui/flddocumentpage.ui",
37 "FieldDocumentPage", pCoreSet)
38 , nOldSel(0)
39 , nOldFormat(0)
40 , m_xTypeLB(m_xBuilder->weld_tree_view("type"))
41 , m_xSelection(m_xBuilder->weld_widget("selectframe"))
42 , m_xSelectionLB(m_xBuilder->weld_tree_view("select"))
43 , m_xValueFT(m_xBuilder->weld_label("valueft"))
44 , m_xValueED(m_xBuilder->weld_entry("value"))
45 , m_xLevelFT(m_xBuilder->weld_label("levelft"))
46 , m_xLevelED(m_xBuilder->weld_spin_button("level"))
47 , m_xDateFT(m_xBuilder->weld_label("daysft"))
48 , m_xTimeFT(m_xBuilder->weld_label("minutesft"))
49 , m_xDateOffsetED(m_xBuilder->weld_spin_button("offset"))
50 , m_xFormat(m_xBuilder->weld_widget("formatframe"))
51 , m_xFormatLB(m_xBuilder->weld_tree_view("format"))
52 , m_xNumFormatLB(new SwNumFormatTreeView(m_xBuilder->weld_tree_view("numformat")))
53 , m_xFixedCB(m_xBuilder->weld_check_button("fixed"))
54 {
55 m_xTypeLB->make_sorted();
56 m_xFormatLB->make_sorted();
57
58 auto nWidth = m_xTypeLB->get_approximate_digit_width() * FIELD_COLUMN_WIDTH;
59 auto nHeight = m_xTypeLB->get_height_rows(20);
60
61 m_xTypeLB->set_size_request(nWidth, nHeight);
62 m_xSelectionLB->set_size_request(nWidth, nHeight);
63 m_xFormatLB->set_size_request(nWidth, nHeight);
64
65 m_xSelectionLB->connect_row_activated(LINK(this, SwFieldDokPage, TreeViewInsertHdl));
66 m_xFormatLB->connect_row_activated(LINK(this, SwFieldDokPage, TreeViewInsertHdl));
67 m_xNumFormatLB->connect_row_activated(LINK(this, SwFieldDokPage, NumFormatHdl));
68
69 m_xLevelED->set_max(MAXLEVEL);
70 m_xDateOffsetED->set_range(INT_MIN, INT_MAX);
71 //enable 'active' language selection
72 m_xNumFormatLB->SetShowLanguageControl(true);
73 }
74
~SwFieldDokPage()75 SwFieldDokPage::~SwFieldDokPage()
76 {
77 }
78
Reset(const SfxItemSet *)79 void SwFieldDokPage::Reset(const SfxItemSet* )
80 {
81 SavePos(*m_xTypeLB);
82 Init(); // general initialisation
83
84 // initialise TypeListBox
85 const SwFieldGroupRgn& rRg = SwFieldMgr::GetGroupRange(IsFieldDlgHtmlMode(), GetGroup());
86
87 m_xTypeLB->freeze();
88 m_xTypeLB->clear();
89
90 if (!IsFieldEdit())
91 {
92 bool bPage = false;
93 // fill Type-Listbox
94 for(sal_uInt16 i = rRg.nStart; i < rRg.nEnd; ++i)
95 {
96 const SwFieldTypesEnum nTypeId = SwFieldMgr::GetTypeId(i);
97
98 switch (nTypeId)
99 {
100 case SwFieldTypesEnum::PreviousPage:
101 case SwFieldTypesEnum::NextPage:
102 case SwFieldTypesEnum::PageNumber:
103 if (!bPage)
104 {
105 m_xTypeLB->append(OUString::number(USHRT_MAX), SwResId(FMT_REF_PAGE));
106 bPage = true;
107 }
108 break;
109
110 default:
111 m_xTypeLB->append(OUString::number(static_cast<sal_uInt16>(nTypeId)), SwFieldMgr::GetTypeStr(i));
112 break;
113 }
114 }
115 }
116 else
117 {
118 const SwField* pCurField = GetCurField();
119 SwFieldTypesEnum nTypeId = pCurField->GetTypeId();
120 if (nTypeId == SwFieldTypesEnum::FixedDate)
121 nTypeId = SwFieldTypesEnum::Date;
122 if (nTypeId == SwFieldTypesEnum::FixedTime)
123 nTypeId = SwFieldTypesEnum::Time;
124 m_xTypeLB->append(OUString::number(static_cast<sal_uInt16>(nTypeId)), SwFieldMgr::GetTypeStr(SwFieldMgr::GetPos(nTypeId)));
125 m_xNumFormatLB->SetAutomaticLanguage(pCurField->IsAutomaticLanguage());
126 SwWrtShell *pSh = GetWrtShell();
127 if(!pSh)
128 pSh = ::GetActiveWrtShell();
129 if(pSh)
130 {
131 const SvNumberformat* pFormat = pSh->GetNumberFormatter()->GetEntry(pCurField->GetFormat());
132 if(pFormat)
133 m_xNumFormatLB->SetLanguage(pFormat->GetLanguage());
134 }
135 }
136
137
138 m_xTypeLB->thaw();
139
140 // select old Pos
141 RestorePos(*m_xTypeLB);
142
143 m_xTypeLB->connect_row_activated(LINK(this, SwFieldDokPage, TreeViewInsertHdl));
144 m_xTypeLB->connect_changed(LINK(this, SwFieldDokPage, TypeHdl));
145 m_xFormatLB->connect_changed(LINK(this, SwFieldDokPage, FormatHdl));
146
147 if( !IsRefresh() )
148 {
149 const OUString sUserData = GetUserData();
150 sal_Int32 nIdx{ 0 };
151 if (sUserData.getToken(0, ';', nIdx).equalsIgnoreAsciiCase(USER_DATA_VERSION_1))
152 {
153 const sal_uInt16 nVal = static_cast< sal_uInt16 >(sUserData.getToken(0, ';', nIdx).toInt32());
154 if(nVal != USHRT_MAX)
155 {
156 for (int i = 0, nEntryCount = m_xTypeLB->n_children(); i < nEntryCount; i++)
157 {
158 if (nVal == m_xTypeLB->get_id(i).toUInt32())
159 {
160 m_xTypeLB->select(i);
161 break;
162 }
163 }
164 }
165 }
166 }
167 TypeHdl(*m_xTypeLB);
168
169 if (IsFieldEdit())
170 {
171 nOldSel = m_xSelectionLB->get_selected_index();
172 nOldFormat = GetCurField()->GetFormat();
173 m_xFixedCB->save_state();
174 m_xValueED->save_value();
175 m_xLevelED->save_value();
176 m_xDateOffsetED->save_value();
177 }
178 }
179
IMPL_LINK_NOARG(SwFieldDokPage,TypeHdl,weld::TreeView &,void)180 IMPL_LINK_NOARG(SwFieldDokPage, TypeHdl, weld::TreeView&, void)
181 {
182 // save old ListBoxPos
183 const sal_Int32 nOld = GetTypeSel();
184
185 // current ListBoxPos
186 SetTypeSel(m_xTypeLB->get_selected_index());
187
188 if(GetTypeSel() == -1)
189 {
190 SetTypeSel(0);
191 m_xTypeLB->select(0);
192 }
193
194 if (nOld == GetTypeSel())
195 return;
196
197 size_t nCount;
198
199 m_xDateFT->hide();
200 m_xTimeFT->hide();
201
202 SwFieldTypesEnum nTypeId = static_cast<SwFieldTypesEnum>(m_xTypeLB->get_id(GetTypeSel()).toUInt32());
203
204 // fill Selection-Listbox
205 m_xSelectionLB->clear();
206
207 if (nTypeId != SwFieldTypesEnum::Unknown)
208 {
209 std::vector<OUString> aLst;
210 GetFieldMgr().GetSubTypes(nTypeId, aLst);
211
212 if (nTypeId != SwFieldTypesEnum::Author)
213 nCount = aLst.size();
214 else
215 nCount = GetFieldMgr().GetFormatCount(nTypeId, IsFieldDlgHtmlMode());
216
217 for (size_t i = 0; i < nCount; ++i)
218 {
219 if (!IsFieldEdit())
220 {
221 OUString sId(OUString::number(i));
222 if (nTypeId != SwFieldTypesEnum::Author)
223 m_xSelectionLB->append(sId, aLst[i]);
224 else
225 m_xSelectionLB->append(sId, GetFieldMgr().GetFormatStr(nTypeId, i));
226 }
227 else
228 {
229 bool bInsert = false;
230
231 OUString sId(OUString::number(i));
232
233 switch (nTypeId)
234 {
235 case SwFieldTypesEnum::Date:
236 case SwFieldTypesEnum::Time:
237 m_xSelectionLB->append(sId, aLst[i]);
238 if (static_cast<SwDateTimeField*>(GetCurField())->IsFixed() && !i)
239 m_xSelectionLB->select_id(sId);
240 if (!static_cast<SwDateTimeField*>(GetCurField())->IsFixed() && i)
241 m_xSelectionLB->select_id(sId);
242 break;
243 case SwFieldTypesEnum::ExtendedUser:
244 case SwFieldTypesEnum::DocumentStatistics:
245 m_xSelectionLB->append(sId, aLst[i]);
246 if (GetCurField()->GetSubType() == i)
247 m_xSelectionLB->select_id(sId);
248 break;
249
250 case SwFieldTypesEnum::Author:
251 {
252 const OUString sFormat(GetFieldMgr().GetFormatStr(nTypeId, i));
253 m_xSelectionLB->append(sId, sFormat);
254 m_xSelectionLB->select_text(GetFieldMgr().GetFormatStr(nTypeId, GetCurField()->GetFormat()));
255 break;
256 }
257
258 default:
259 if (aLst[i] == GetCurField()->GetPar1())
260 bInsert = true;
261 break;
262 }
263 if (bInsert)
264 {
265 m_xSelectionLB->append(sId, aLst[i]);
266 break;
267 }
268 }
269 }
270 m_xSelectionLB->connect_changed(Link<weld::TreeView&,void>());
271 }
272 else
273 {
274 AddSubType(SwFieldTypesEnum::PageNumber);
275 AddSubType(SwFieldTypesEnum::PreviousPage);
276 AddSubType(SwFieldTypesEnum::NextPage);
277 nTypeId = static_cast<SwFieldTypesEnum>(m_xSelectionLB->get_id(0).toUInt32());
278 nCount = 3;
279 m_xSelectionLB->connect_changed(LINK(this, SwFieldDokPage, SubTypeHdl));
280 }
281
282 bool bEnable = nCount != 0;
283
284 if (bEnable && m_xSelectionLB->get_selected_index() == -1)
285 m_xSelectionLB->select(0);
286
287 m_xSelection->set_sensitive( bEnable );
288
289 // fill Format-Listbox
290 sal_Int32 nSize = FillFormatLB(nTypeId);
291
292 bool bValue = false, bLevel = false, bNumFormat = false, bOffset = false;
293 bool bFormat = nSize != 0;
294 bool bOneArea = false;
295 bool bFixed = false;
296 SvNumFormatType nFormatType = SvNumFormatType::ALL;
297
298 switch (nTypeId)
299 {
300 case SwFieldTypesEnum::Date:
301 bFormat = bNumFormat = bOneArea = bOffset = true;
302
303 nFormatType = SvNumFormatType::DATE;
304
305 m_xDateFT->show();
306
307 m_xDateOffsetED->set_range(INT_MIN, INT_MAX); // no limit
308
309 if (IsFieldEdit())
310 m_xDateOffsetED->set_value( static_cast<SwDateTimeField*>(GetCurField())->GetOffset() / 24 / 60);
311 break;
312
313 case SwFieldTypesEnum::Time:
314 bFormat = bNumFormat = bOneArea = bOffset = true;
315
316 nFormatType = SvNumFormatType::TIME;
317
318 m_xTimeFT->show();
319
320 m_xDateOffsetED->set_range(-1440, 1440); // one day
321
322 if (IsFieldEdit())
323 m_xDateOffsetED->set_value( static_cast<SwDateTimeField*>(GetCurField())->GetOffset() );
324 break;
325
326 case SwFieldTypesEnum::PreviousPage:
327 case SwFieldTypesEnum::NextPage:
328 if (IsFieldEdit())
329 {
330 const sal_uInt16 nTmp = m_xFormatLB->get_selected_id().toUInt32();
331
332 if(SVX_NUM_CHAR_SPECIAL != nTmp)
333 {
334 sal_Int32 nOff = GetCurField()->GetPar2().toInt32();
335 if( SwFieldTypesEnum::NextPage == nTypeId && 1 != nOff )
336 m_xValueED->set_text(
337 OUString::number(nOff - 1) );
338 else if( SwFieldTypesEnum::PreviousPage == nTypeId && -1 != nOff )
339 m_xValueED->set_text(
340 OUString::number(nOff + 1) );
341 else
342 m_xValueED->set_text(OUString());
343 }
344 else
345 m_xValueED->set_text(static_cast<SwPageNumberField*>(GetCurField())->GetUserString());
346 }
347 bValue = true;
348 break;
349
350 case SwFieldTypesEnum::Chapter:
351 m_xValueFT->set_label(SwResId(STR_LEVEL));
352 if (IsFieldEdit())
353 m_xLevelED->set_text(OUString::number(static_cast<SwChapterField*>(GetCurField())->GetLevel(GetWrtShell()->GetLayout()) + 1));
354 bLevel = true;
355 break;
356
357 case SwFieldTypesEnum::PageNumber:
358 m_xValueFT->set_label( SwResId( STR_OFFSET ));
359 if (IsFieldEdit())
360 m_xValueED->set_text(GetCurField()->GetPar2());
361 bValue = true;
362 break;
363
364 case SwFieldTypesEnum::ExtendedUser:
365 case SwFieldTypesEnum::Author:
366 case SwFieldTypesEnum::Filename:
367 bFixed = true;
368 break;
369
370 default:
371 break;
372 }
373
374 if (bNumFormat)
375 {
376 if (IsFieldEdit())
377 {
378 m_xNumFormatLB->SetDefFormat(GetCurField()->GetFormat());
379
380 if (m_xNumFormatLB->GetFormatType() == (SvNumFormatType::DATE|SvNumFormatType::TIME))
381 {
382 // always set Format-Type because otherwise when date/time formats are combined,
383 // both formats would be displayed at the same time
384 m_xNumFormatLB->SetFormatType(SvNumFormatType::ALL);
385 m_xNumFormatLB->SetFormatType(nFormatType);
386 // set correct format once again
387 m_xNumFormatLB->SetDefFormat(GetCurField()->GetFormat());
388 }
389 }
390 else
391 m_xNumFormatLB->SetFormatType(nFormatType);
392
393 m_xNumFormatLB->SetOneArea(bOneArea);
394 }
395
396 m_xFormatLB->set_visible(!bNumFormat);
397 m_xNumFormatLB->set_visible(bNumFormat);
398
399 m_xValueFT->set_visible(bValue);
400 m_xValueED->set_visible(bValue);
401 m_xLevelFT->set_visible(bLevel);
402 m_xLevelED->set_visible(bLevel);
403 m_xDateOffsetED->set_visible(bOffset);
404 m_xFixedCB->set_visible(!bValue && !bLevel && !bOffset);
405
406 m_xFormat->set_sensitive(bFormat);
407 m_xFixedCB->set_sensitive(bFixed);
408
409 if (IsFieldEdit())
410 m_xFixedCB->set_active((GetCurField()->GetFormat() & AF_FIXED) != 0 && bFixed);
411
412 if (m_xNumFormatLB->get_selected_index() == -1)
413 m_xNumFormatLB->select(0);
414 m_xValueFT->set_sensitive(bValue || bLevel || bOffset);
415 m_xValueED->set_sensitive(bValue);
416 }
417
AddSubType(SwFieldTypesEnum nTypeId)418 void SwFieldDokPage::AddSubType(SwFieldTypesEnum nTypeId)
419 {
420 m_xSelectionLB->append(OUString::number(static_cast<sal_uInt16>(nTypeId)), SwFieldType::GetTypeStr(nTypeId));
421 }
422
IMPL_LINK_NOARG(SwFieldDokPage,SubTypeHdl,weld::TreeView &,void)423 IMPL_LINK_NOARG(SwFieldDokPage, SubTypeHdl, weld::TreeView&, void)
424 {
425 sal_Int32 nPos = m_xSelectionLB->get_selected_index();
426 if(nPos == -1)
427 nPos = 0;
428
429 const SwFieldTypesEnum nTypeId = static_cast<SwFieldTypesEnum>(m_xSelectionLB->get_id(nPos).toUInt32());
430 FillFormatLB(nTypeId);
431
432 const char* pTextRes = nullptr;
433 switch (nTypeId)
434 {
435 case SwFieldTypesEnum::Chapter:
436 pTextRes = STR_LEVEL;
437 break;
438
439 case SwFieldTypesEnum::PreviousPage:
440 case SwFieldTypesEnum::NextPage:
441 pTextRes = SVX_NUM_CHAR_SPECIAL == m_xFormatLB->get_selected_id().toUInt32()
442 ? STR_VALUE : STR_OFFSET;
443 break;
444
445 case SwFieldTypesEnum::PageNumber:
446 pTextRes = STR_OFFSET;
447 break;
448 default: break;
449 }
450
451 if (pTextRes)
452 m_xValueFT->set_label(SwResId(pTextRes));
453 }
454
FillFormatLB(SwFieldTypesEnum nTypeId)455 sal_Int32 SwFieldDokPage::FillFormatLB(SwFieldTypesEnum nTypeId)
456 {
457 // fill Format-Listbox
458 m_xFormatLB->clear();
459
460 if (nTypeId == SwFieldTypesEnum::Author)
461 return m_xFormatLB->n_children();
462
463 const sal_uInt16 nSize = GetFieldMgr().GetFormatCount(nTypeId, IsFieldDlgHtmlMode());
464
465 for( sal_uInt16 i = 0; i < nSize; ++i )
466 {
467 const sal_uInt16 nFormatId = GetFieldMgr().GetFormatId( nTypeId, i );
468 OUString sId(OUString::number(nFormatId));
469 m_xFormatLB->append(sId, GetFieldMgr().GetFormatStr(nTypeId, i));
470 if (IsFieldEdit() && nFormatId == (GetCurField()->GetFormat() & ~AF_FIXED))
471 m_xFormatLB->select_id(sId);
472 }
473
474 if (nSize && m_xFormatLB->get_selected_index() == -1)
475 {
476 m_xFormatLB->select_text( SwResId(FMT_NUM_PAGEDESC) );
477 if (m_xFormatLB->get_selected_index() == -1)
478 {
479 m_xFormatLB->select_text( SwResId(FMT_NUM_ARABIC) );
480 if (m_xFormatLB->get_selected_index() == -1)
481 m_xFormatLB->select( 0 );
482 }
483 }
484
485 FormatHdl(*m_xFormatLB);
486
487 return nSize;
488 }
489
IMPL_LINK_NOARG(SwFieldDokPage,FormatHdl,weld::TreeView &,void)490 IMPL_LINK_NOARG(SwFieldDokPage, FormatHdl, weld::TreeView&, void)
491 {
492 SwFieldTypesEnum nTypeId = static_cast<SwFieldTypesEnum>(m_xTypeLB->get_id(GetTypeSel()).toUInt32());
493
494 if (nTypeId == SwFieldTypesEnum::Unknown)
495 {
496 sal_Int32 nPos = m_xSelectionLB->get_selected_index();
497 if(nPos == -1)
498 nPos = 0;
499
500 nTypeId = static_cast<SwFieldTypesEnum>(m_xSelectionLB->get_id(nPos).toUInt32());
501 }
502
503 if (nTypeId == SwFieldTypesEnum::NextPage || nTypeId == SwFieldTypesEnum::PreviousPage)
504 {
505 // Prev/Next - PageNumFields special treatment:
506 sal_uInt16 nTmp = m_xFormatLB->get_selected_id().toUInt32();
507 const OUString sOldText( m_xValueFT->get_label() );
508 const OUString sNewText( SwResId( SVX_NUM_CHAR_SPECIAL == nTmp ? STR_VALUE
509 : STR_OFFSET ));
510
511 if (sOldText != sNewText)
512 m_xValueFT->set_label(sNewText);
513
514 if (sOldText != m_xValueFT->get_label())
515 m_xValueED->set_text(OUString());
516 }
517 }
518
FillItemSet(SfxItemSet *)519 bool SwFieldDokPage::FillItemSet(SfxItemSet* )
520 {
521 SwFieldTypesEnum nTypeId = static_cast<SwFieldTypesEnum>(m_xTypeLB->get_id(GetTypeSel()).toUInt32());
522
523 if (nTypeId == SwFieldTypesEnum::Unknown)
524 {
525 sal_Int32 nPos = m_xSelectionLB->get_selected_index();
526 if(nPos == -1)
527 nPos = 0;
528 nTypeId = static_cast<SwFieldTypesEnum>(m_xSelectionLB->get_id(nPos).toUInt32());
529 }
530
531 OUString aVal(m_xValueED->get_text());
532 sal_uLong nFormat = 0;
533 sal_uInt16 nSubType = 0;
534
535 if (m_xFormatLB->get_sensitive())
536 {
537 sal_Int32 nPos = m_xFormatLB->get_selected_index();
538 if(nPos != -1)
539 nFormat = m_xFormatLB->get_id(nPos).toUInt32();
540 }
541
542 if (m_xSelectionLB->get_sensitive())
543 {
544 sal_Int32 nPos = m_xSelectionLB->get_selected_index();
545 if(nPos != -1)
546 nSubType = m_xSelectionLB->get_id(nPos).toUInt32();
547 }
548
549 switch (nTypeId)
550 {
551 case SwFieldTypesEnum::Author:
552 nFormat = nSubType;
553 nSubType = 0;
554 [[fallthrough]];
555 case SwFieldTypesEnum::ExtendedUser:
556 nFormat |= m_xFixedCB->get_active() ? AF_FIXED : 0;
557 break;
558
559 case SwFieldTypesEnum::Filename:
560 nFormat |= m_xFixedCB->get_active() ? FF_FIXED : 0;
561 break;
562
563 case SwFieldTypesEnum::Date:
564 case SwFieldTypesEnum::Time:
565 {
566 nFormat = m_xNumFormatLB->GetFormat();
567 long nVal = static_cast< long >(m_xDateOffsetED->get_value());
568 if (nTypeId == SwFieldTypesEnum::Date)
569 aVal = OUString::number(nVal * 60 * 24);
570 else
571 aVal = OUString::number(nVal);
572 break;
573 }
574
575 case SwFieldTypesEnum::NextPage:
576 case SwFieldTypesEnum::PreviousPage:
577 case SwFieldTypesEnum::PageNumber:
578 case SwFieldTypesEnum::GetRefPage:
579 {
580 if( SVX_NUM_CHAR_SPECIAL != nFormat &&
581 (SwFieldTypesEnum::PreviousPage == nTypeId || SwFieldTypesEnum::NextPage == nTypeId))
582 {
583 sal_Int32 nVal = m_xValueED->get_text().toInt32();
584 aVal = OUString::number(nVal);
585 }
586 break;
587 }
588
589 case SwFieldTypesEnum::Chapter:
590 aVal = m_xLevelED->get_text();
591 break;
592
593 default:
594 break;
595 }
596
597 if (!IsFieldEdit() ||
598 nOldSel != m_xSelectionLB->get_selected_index() ||
599 nOldFormat != nFormat ||
600 m_xFixedCB->get_state_changed_from_saved() ||
601 m_xValueED->get_value_changed_from_saved() ||
602 m_xLevelED->get_value_changed_from_saved() ||
603 m_xDateOffsetED->get_value_changed_from_saved())
604 {
605 InsertField(nTypeId, nSubType, OUString(), aVal, nFormat, ' ', m_xNumFormatLB->IsAutomaticLanguage());
606 }
607
608 return false;
609 }
610
Create(weld::Container * pPage,weld::DialogController * pController,const SfxItemSet * const pAttrSet)611 std::unique_ptr<SfxTabPage> SwFieldDokPage::Create(weld::Container* pPage, weld::DialogController* pController,
612 const SfxItemSet *const pAttrSet)
613 {
614 return std::make_unique<SwFieldDokPage>(pPage, pController, pAttrSet);
615 }
616
GetGroup()617 sal_uInt16 SwFieldDokPage::GetGroup()
618 {
619 return GRP_DOC;
620 }
621
FillUserData()622 void SwFieldDokPage::FillUserData()
623 {
624 const sal_Int32 nEntryPos = m_xTypeLB->get_selected_index();
625 const sal_uInt16 nTypeSel = ( -1 == nEntryPos )
626 ? USHRT_MAX : m_xTypeLB->get_id(nEntryPos).toUInt32();
627 SetUserData(USER_DATA_VERSION ";" + OUString::number( nTypeSel ));
628 }
629
630 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
631