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 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 75 SwFieldDokPage::~SwFieldDokPage() 76 { 77 } 78 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 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(-31, 31); // one month 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 418 void SwFieldDokPage::AddSubType(SwFieldTypesEnum nTypeId) 419 { 420 m_xSelectionLB->append(OUString::number(static_cast<sal_uInt16>(nTypeId)), SwFieldType::GetTypeStr(nTypeId)); 421 } 422 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 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 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 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 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 617 sal_uInt16 SwFieldDokPage::GetGroup() 618 { 619 return GRP_DOC; 620 } 621 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
