From c403c86c6da4db0a6f2864ad4e13def9a3898cd4 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Sun, 17 Mar 2019 19:22:08 +0000 Subject: weld SwFieldRefPage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I5ae3965aa681ea1f5a005fbc8dad4d0ce36af1b3 Reviewed-on: https://gerrit.libreoffice.org/69373 Tested-by: Jenkins Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- cui/uiconfig/ui/pageformatpage.ui | 264 ++++++++-------- include/vcl/weld.hxx | 8 + solenv/bin/native-code.py | 1 - sw/Library_swui.mk | 1 - sw/source/ui/fldui/FldRefTreeListBox.cxx | 69 ----- sw/source/ui/fldui/FldRefTreeListBox.hxx | 34 -- sw/source/ui/fldui/fldref.cxx | 500 ++++++++++++++---------------- sw/source/ui/fldui/fldref.hxx | 40 ++- sw/uiconfig/swriter/ui/fldrefpage.ui | 184 +++++++++-- sw/uiconfig/swriter/ui/templatedialog8.ui | 22 +- vcl/source/app/salvtables.cxx | 7 +- vcl/unx/gtk3/gtk3gtkinst.cxx | 10 + 12 files changed, 567 insertions(+), 573 deletions(-) delete mode 100644 sw/source/ui/fldui/FldRefTreeListBox.cxx delete mode 100644 sw/source/ui/fldui/FldRefTreeListBox.hxx diff --git a/cui/uiconfig/ui/pageformatpage.ui b/cui/uiconfig/ui/pageformatpage.ui index f864e9f6fdd9..61ae2fca7fe1 100644 --- a/cui/uiconfig/ui/pageformatpage.ui +++ b/cui/uiconfig/ui/pageformatpage.ui @@ -81,7 +81,6 @@ True start True - if-valid 1 @@ -217,6 +216,7 @@ True + False False center center @@ -310,31 +310,43 @@ 6 12 - - True - False - Top: - True - spinMargTop - 0 - - - 0 - 2 - - - - + True False - Bottom: - True - spinMargBot - 0 + center + vertical + + + False + Left: + True + spinMargLeft + 0 + + + False + True + 0 + + + + + False + I_nner: + True + spinMargLeft + 0 + + + False + True + 1 + + 0 - 3 + 0 @@ -348,39 +360,6 @@ 0 - - - True - True - True - - - 1 - 1 - - - - - True - True - True - - - 1 - 2 - - - - - True - True - True - - - 1 - 3 - - True @@ -422,43 +401,64 @@ - + + True + True + True + + + 1 + 1 + + + + True False - center - vertical - - - False - Left: - True - spinMargLeft - 0 - - - False - True - 0 - - - - - False - I_nner: - True - spinMargLeft - 0 - - - False - True - 1 - - + Top: + True + spinMargTop + 0 0 - 0 + 2 + + + + + True + True + True + + + 1 + 2 + + + + + True + False + Bottom: + True + spinMargBot + 0 + + + 0 + 3 + + + + + True + True + True + + + 1 + 3 @@ -547,6 +547,52 @@ 2 + + + True + False + 12 + + + True + False + vertical + 6 + + + False + True + Reference _Style: + True + comboRegisterStyle + 0 + + + False + True + 0 + + + + + False + True + + + False + True + 1 + + + + + + + 0 + 3 + 2 + + True @@ -636,52 +682,6 @@ 2 - - - True - False - 12 - - - True - False - vertical - 6 - - - False - True - Reference _Style: - True - comboRegisterStyle - 0 - - - False - True - 0 - - - - - False - True - - - False - True - 1 - - - - - - - 0 - 3 - 2 - - diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index f0f7c95f3cf6..a88cfe5ea04f 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -515,6 +515,9 @@ public: class VCL_DLLPUBLIC TreeView : virtual public Container { +private: + OUString m_sSavedValue; + protected: Link m_aChangeHdl; Link m_aRowActivatedHdl; @@ -713,6 +716,7 @@ public: virtual int n_children() const = 0; virtual void make_sorted() = 0; + virtual void make_unsorted() = 0; virtual bool get_sort_order() const = 0; virtual void set_sort_order(bool bAscending) = 0; // TRUE ascending, FALSE, descending, INDET, neither (off) @@ -736,6 +740,10 @@ public: void set_toggle_columns_as_radio(const std::vector& rCols) { m_aRadioIndexes = rCols; } + void save_value() { m_sSavedValue = get_selected_text(); } + OUString const& get_saved_value() const { return m_sSavedValue; } + bool get_value_changed_from_saved() const { return m_sSavedValue != get_selected_text(); } + using Widget::set_sensitive; }; diff --git a/solenv/bin/native-code.py b/solenv/bin/native-code.py index 88942fe07037..8c93cd1f081f 100755 --- a/solenv/bin/native-code.py +++ b/solenv/bin/native-code.py @@ -516,7 +516,6 @@ custom_widgets = [ 'SvxTextEncodingBox', 'SvxTextEncodingBox', 'SwAddressPreview', - 'SwFieldRefTreeListBox', 'SwGlTreeListBox', 'SwMarkPreview', 'SwNavHelpToolBox', diff --git a/sw/Library_swui.mk b/sw/Library_swui.mk index 2da933936257..51d80f89cff9 100644 --- a/sw/Library_swui.mk +++ b/sw/Library_swui.mk @@ -111,7 +111,6 @@ $(eval $(call gb_Library_add_exception_objects,swui,\ sw/source/ui/envelp/mailmrge \ sw/source/ui/fldui/DropDownFieldDialog \ sw/source/ui/fldui/DropDownFormFieldDialog \ - sw/source/ui/fldui/FldRefTreeListBox \ sw/source/ui/fldui/changedb \ sw/source/ui/fldui/flddb \ sw/source/ui/fldui/flddinf \ diff --git a/sw/source/ui/fldui/FldRefTreeListBox.cxx b/sw/source/ui/fldui/FldRefTreeListBox.cxx deleted file mode 100644 index c69d6141c74c..000000000000 --- a/sw/source/ui/fldui/FldRefTreeListBox.cxx +++ /dev/null @@ -1,69 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#include "FldRefTreeListBox.hxx" - -#include -#include -#include - -SwFieldRefTreeListBox::SwFieldRefTreeListBox(vcl::Window* pParent, WinBits nStyle) - : SvTreeListBox(pParent, nStyle) -{ -} - -VCL_BUILDER_FACTORY_CONSTRUCTOR(SwFieldRefTreeListBox, WB_TABSTOP) - -void SwFieldRefTreeListBox::RequestHelp( const HelpEvent& rHEvt ) -{ - bool bCallBase( true ); - if ( rHEvt.GetMode() & HelpEventMode::QUICK ) - { - Point aPos( ScreenToOutputPixel( rHEvt.GetMousePosPixel() )); - SvTreeListEntry* pEntry = GetEntry( aPos ); - if( pEntry ) - { - OUString sEntry( GetEntryText( pEntry ) ); - SvLBoxTab* pTab; - SvLBoxItem* pItem = GetItem( pEntry, aPos.X(), &pTab ); - if( pItem ) - { - aPos = GetEntryPosition( pEntry ); - - aPos.setX( GetTabPos( pEntry, pTab ) ); - Size aSize( pItem->GetSize( this, pEntry ) ); - - if((aPos.X() + aSize.Width()) > GetSizePixel().Width()) - aSize.setWidth( GetSizePixel().Width() - aPos.X() ); - - aPos = OutputToScreenPixel(aPos); - tools::Rectangle aItemRect( aPos, aSize ); - Help::ShowQuickHelp( this, aItemRect, sEntry, - QuickHelpFlags::Left|QuickHelpFlags::VCenter ); - bCallBase = false; - } - } - } - if ( bCallBase ) - { - Window::RequestHelp( rHEvt ); - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/ui/fldui/FldRefTreeListBox.hxx b/sw/source/ui/fldui/FldRefTreeListBox.hxx deleted file mode 100644 index 6f7631f4489c..000000000000 --- a/sw/source/ui/fldui/FldRefTreeListBox.hxx +++ /dev/null @@ -1,34 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ -#ifndef INCLUDED_SW_SOURCE_UI_FLDUI_FLDREFTREELISTBOX_HXX -#define INCLUDED_SW_SOURCE_UI_FLDUI_FLDREFTREELISTBOX_HXX - -#include - -class SwFieldRefTreeListBox : public SvTreeListBox -{ -protected: - virtual void RequestHelp( const HelpEvent& rHEvt ) override; - -public: - SwFieldRefTreeListBox(vcl::Window* pParent, WinBits nStyle); -}; -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/ui/fldui/fldref.cxx b/sw/source/ui/fldui/fldref.cxx index 5e00e0992a6e..d9e084f01413 100644 --- a/sw/source/ui/fldui/fldref.cxx +++ b/sw/source/ui/fldui/fldref.cxx @@ -53,70 +53,61 @@ static sal_uInt16 nFieldDlgFormatSel = 0; #define USER_DATA_VERSION_1 "1" #define USER_DATA_VERSION USER_DATA_VERSION_1 -SwFieldRefPage::SwFieldRefPage(vcl::Window* pParent, const SfxItemSet *const pCoreSet ) - : SwFieldPage(pParent, "FieldRefPage", - "modules/swriter/ui/fldrefpage.ui", pCoreSet) +SwFieldRefPage::SwFieldRefPage(TabPageParent pParent, const SfxItemSet *const pCoreSet ) + : SwFieldPage(pParent, "modules/swriter/ui/fldrefpage.ui", "FieldRefPage", pCoreSet) , maOutlineNodes() , maNumItems() , mpSavedSelectedTextNode(nullptr) , mnSavedSelectedPos(0) + , m_xTypeLB(m_xBuilder->weld_tree_view("type")) + , m_xSelection(m_xBuilder->weld_widget("selectframe")) + , m_xSelectionLB(m_xBuilder->weld_tree_view("select")) + , m_xSelectionToolTipLB(m_xBuilder->weld_tree_view("selecttip")) + , m_xFormat(m_xBuilder->weld_widget("formatframe")) + , m_xFormatLB(m_xBuilder->weld_tree_view("format")) + , m_xNameFT(m_xBuilder->weld_label("nameft")) + , m_xNameED(m_xBuilder->weld_entry("name")) + , m_xValueED(m_xBuilder->weld_entry("value")) + , m_xFilterED(m_xBuilder->weld_entry("filter")) { - get(m_pTypeLB, "type"); - get(m_pSelection, "selectframe"); - get(m_pSelectionLB, "select"); - m_pSelectionLB->SetStyle(m_pSelectionLB->GetStyle() | WB_SORT); + m_xSelectionLB->make_sorted(); // #i83479# - get(m_pSelectionToolTipLB, "selecttip"); - get(m_pFormat, "formatframe"); - get(m_pFormatLB, "format"); for (size_t i = 0; i < SAL_N_ELEMENTS(FLD_REF_PAGE_TYPES); ++i) { - m_pTypeLB->InsertEntry(SwResId(FLD_REF_PAGE_TYPES[i])); - m_pFormatLB->InsertEntry(SwResId(FLD_REF_PAGE_TYPES[i])); + m_xTypeLB->append_text(SwResId(FLD_REF_PAGE_TYPES[i])); + m_xFormatLB->append_text(SwResId(FLD_REF_PAGE_TYPES[i])); } - get(m_pNameFT, "nameft"); - get(m_pNameED, "name"); - get(m_pValueED, "value"); - get(m_pFilterED, "filter"); - - sBookmarkText = m_pTypeLB->GetEntry(0); - sFootnoteText = m_pTypeLB->GetEntry(1); - sEndnoteText = m_pTypeLB->GetEntry(2); - // #i83479# - sHeadingText = m_pTypeLB->GetEntry(3); - sNumItemText = m_pTypeLB->GetEntry(4); - m_pTypeLB->Clear(); - long nHeight = m_pTypeLB->GetTextHeight() * 20; - m_pSelection->set_height_request(nHeight); - m_pSelectionToolTipLB->set_height_request(nHeight); + sBookmarkText = m_xTypeLB->get_text(0); + sFootnoteText = m_xTypeLB->get_text(1); + sEndnoteText = m_xTypeLB->get_text(2); + // #i83479# + sHeadingText = m_xTypeLB->get_text(3); + sNumItemText = m_xTypeLB->get_text(4); - nHeight = m_pTypeLB->GetTextHeight() * 8; - m_pTypeLB->set_height_request(nHeight); - m_pFormatLB->set_height_request(nHeight); + auto nHeight = m_xTypeLB->get_height_rows(8); + auto nWidth = LogicToPixel(Size(FIELD_COLUMN_WIDTH, 0), MapMode(MapUnit::MapAppFont)).Width(); + m_xTypeLB->set_size_request(nWidth, nHeight); + m_xFormatLB->set_size_request(nWidth, nHeight); + m_xSelection->set_size_request(nWidth * 2, nHeight); + nHeight = m_xTypeLB->get_height_rows(20); + m_xSelectionToolTipLB->set_size_request(nHeight, nWidth*2); - long nWidth = m_pTypeLB->LogicToPixel(Size(FIELD_COLUMN_WIDTH, 0), MapMode(MapUnit::MapAppFont)).Width(); - m_pTypeLB->set_width_request(nWidth); - m_pFormatLB->set_width_request(nWidth); - m_pSelection->set_width_request(nWidth*2); - m_pSelectionToolTipLB->set_width_request(nWidth*2); + m_xTypeLB->clear(); - m_pNameED->SetModifyHdl(LINK(this, SwFieldRefPage, ModifyHdl)); - m_pFilterED->SetModifyHdl( LINK( this, SwFieldRefPage, ModifyHdl_Impl ) ); + m_xNameED->connect_changed(LINK(this, SwFieldRefPage, ModifyHdl)); + m_xFilterED->connect_changed( LINK( this, SwFieldRefPage, ModifyHdl_Impl ) ); - m_pTypeLB->SetDoubleClickHdl (LINK(this, SwFieldRefPage, ListBoxInsertHdl)); - m_pTypeLB->SetSelectHdl (LINK(this, SwFieldRefPage, TypeHdl)); - m_pSelectionLB->SetSelectHdl (LINK(this, SwFieldRefPage, SubTypeListBoxHdl)); - m_pSelectionLB->SetDoubleClickHdl (LINK(this, SwFieldRefPage, ListBoxInsertHdl)); - m_pFormatLB->SetDoubleClickHdl (LINK(this, SwFieldRefPage, ListBoxInsertHdl)); + m_xTypeLB->connect_row_activated(LINK(this, SwFieldRefPage, TreeViewInsertHdl)); + m_xTypeLB->connect_changed(LINK(this, SwFieldRefPage, TypeHdl)); + m_xSelectionLB->connect_changed(LINK(this, SwFieldRefPage, SubTypeListBoxHdl)); + m_xSelectionLB->connect_row_activated(LINK(this, SwFieldRefPage, TreeViewInsertHdl)); + m_xFormatLB->connect_row_activated(LINK(this, SwFieldRefPage, TreeViewInsertHdl)); // #i83479# - m_pSelectionToolTipLB->SetSelectHdl( LINK(this, SwFieldRefPage, SubTypeTreeListBoxHdl) ); - m_pSelectionToolTipLB->SetDoubleClickHdl( LINK(this, SwFieldRefPage, TreeListBoxInsertHdl) ); - m_pSelectionToolTipLB->SetStyle( m_pSelectionToolTipLB->GetStyle() | WB_HSCROLL ); - m_pSelectionToolTipLB->SetSpaceBetweenEntries(1); - m_pSelectionToolTipLB->SetHighlightRange(); - m_pFilterED->GrabFocus(); + m_xSelectionToolTipLB->connect_changed( LINK(this, SwFieldRefPage, SubTypeTreeListBoxHdl) ); + m_xSelectionToolTipLB->connect_row_activated( LINK(this, SwFieldRefPage, TreeViewInsertHdl) ); + m_xFilterED->grab_focus(); } SwFieldRefPage::~SwFieldRefPage() @@ -124,24 +115,9 @@ SwFieldRefPage::~SwFieldRefPage() disposeOnce(); } -void SwFieldRefPage::dispose() -{ - m_pTypeLB.clear(); - m_pSelection.clear(); - m_pSelectionLB.clear(); - m_pSelectionToolTipLB.clear(); - m_pFormat.clear(); - m_pFormatLB.clear(); - m_pNameFT.clear(); - m_pNameED.clear(); - m_pFilterED.clear(); - m_pValueED.clear(); - SwFieldPage::dispose(); -} - -IMPL_LINK_NOARG(SwFieldRefPage, ModifyHdl_Impl, Edit&, void) +IMPL_LINK_NOARG(SwFieldRefPage, ModifyHdl_Impl, weld::Entry&, void) { - UpdateSubType(comphelper::string::strip(m_pFilterED->GetText(), ' ')); + UpdateSubType(comphelper::string::strip(m_xFilterED->get_text(), ' ')); } // #i83479# @@ -149,16 +125,16 @@ void SwFieldRefPage::SaveSelectedTextNode() { mpSavedSelectedTextNode = nullptr; mnSavedSelectedPos = 0; - if ( m_pSelectionToolTipLB->IsVisible() ) + if ( m_xSelectionToolTipLB->get_visible() ) { - SvTreeListEntry* pEntry = m_pSelectionToolTipLB->GetCurEntry(); - if ( pEntry ) + int nEntry = m_xSelectionToolTipLB->get_selected_index(); + if (nEntry != -1) { - const sal_uInt16 nTypeId = static_cast(reinterpret_cast(m_pTypeLB->GetEntryData(GetTypeSel()))); + const sal_uInt16 nTypeId = m_xTypeLB->get_id(GetTypeSel()).toUInt32(); if ( nTypeId == REFFLDFLAG_HEADING ) { - mnSavedSelectedPos = static_cast(reinterpret_cast(pEntry->GetUserData())); + mnSavedSelectedPos = m_xSelectionToolTipLB->get_id(nEntry).toUInt32(); if ( mnSavedSelectedPos < maOutlineNodes.size() ) { mpSavedSelectedTextNode = maOutlineNodes[mnSavedSelectedPos]; @@ -166,7 +142,7 @@ void SwFieldRefPage::SaveSelectedTextNode() } else if ( nTypeId == REFFLDFLAG_NUMITEM ) { - mnSavedSelectedPos = static_cast(reinterpret_cast(pEntry->GetUserData())); + mnSavedSelectedPos = m_xSelectionToolTipLB->get_id(nEntry).toUInt32(); if ( mnSavedSelectedPos < maNumItems.size() ) { mpSavedSelectedTextNode = maNumItems[mnSavedSelectedPos]->GetTextNode(); @@ -180,21 +156,20 @@ void SwFieldRefPage::Reset(const SfxItemSet* ) { if (!IsFieldEdit()) { - SavePos(m_pTypeLB); + SavePos(*m_xTypeLB); // #i83479# SaveSelectedTextNode(); } - SetSelectionSel(LISTBOX_ENTRY_NOTFOUND); - SetTypeSel(LISTBOX_ENTRY_NOTFOUND); + SetSelectionSel(-1); + SetTypeSel(-1); Init(); // general initialisation // initialise TypeListBox - m_pTypeLB->SetUpdateMode(false); - m_pTypeLB->Clear(); + m_xTypeLB->freeze(); + m_xTypeLB->clear(); // fill Type-Listbox - sal_Int32 nPos; // set/insert reference const SwFieldGroupRgn& rRg = SwFieldMgr::GetGroupRange(IsFieldDlgHtmlMode(), GetGroup()); @@ -204,17 +179,14 @@ void SwFieldRefPage::Reset(const SfxItemSet* ) if (!IsFieldEdit() || nTypeId != TYP_SETREFFLD) { - nPos = m_pTypeLB->InsertEntry(SwFieldMgr::GetTypeStr(i), i - rRg.nStart); - m_pTypeLB->SetEntryData(nPos, reinterpret_cast(nTypeId)); + m_xTypeLB->append(OUString::number(nTypeId), SwFieldMgr::GetTypeStr(i)); } } // #i83479# // entries for headings and numbered items - nPos = m_pTypeLB->InsertEntry(sHeadingText); - m_pTypeLB->SetEntryData(nPos, reinterpret_cast(REFFLDFLAG_HEADING)); - nPos = m_pTypeLB->InsertEntry(sNumItemText); - m_pTypeLB->SetEntryData(nPos, reinterpret_cast(REFFLDFLAG_NUMITEM)); + m_xTypeLB->append(OUString::number(REFFLDFLAG_HEADING), sHeadingText); + m_xTypeLB->append(OUString::number(REFFLDFLAG_NUMITEM), sNumItemText); // fill up with the sequence types SwWrtShell *pSh = GetWrtShell(); @@ -234,34 +206,30 @@ void SwFieldRefPage::Reset(const SfxItemSet* ) if ((nsSwGetSetExpType::GSE_SEQ & pType->GetType()) && pType->HasWriterListeners() && pSh->IsUsed(*pType)) { - nPos = m_pTypeLB->InsertEntry(pType->GetName()); - m_pTypeLB->SetEntryData(nPos, reinterpret_cast(static_cast(REFFLDFLAG | n))); + m_xTypeLB->append(OUString::number(REFFLDFLAG | n), pType->GetName()); } } // text marks - now always (because of globaldocuments) - nPos = m_pTypeLB->InsertEntry(sBookmarkText); - m_pTypeLB->SetEntryData(nPos, reinterpret_cast(REFFLDFLAG_BOOKMARK)); + m_xTypeLB->append(OUString::number(REFFLDFLAG_BOOKMARK), sBookmarkText); // footnotes: if( pSh->HasFootnotes() ) { - nPos = m_pTypeLB->InsertEntry(sFootnoteText); - m_pTypeLB->SetEntryData(nPos, reinterpret_cast(REFFLDFLAG_FOOTNOTE)); + m_xTypeLB->append(OUString::number(REFFLDFLAG_FOOTNOTE), sFootnoteText); } // endnotes: if ( pSh->HasFootnotes(true) ) { - nPos = m_pTypeLB->InsertEntry(sEndnoteText); - m_pTypeLB->SetEntryData(nPos, reinterpret_cast(REFFLDFLAG_ENDNOTE)); + m_xTypeLB->append(OUString::number(REFFLDFLAG_ENDNOTE), sEndnoteText); } + m_xTypeLB->thaw(); + // select old Pos if (!IsFieldEdit()) - RestorePos(m_pTypeLB); - - m_pTypeLB->SetUpdateMode(true); + RestorePos(*m_xTypeLB); nFieldDlgFormatSel = 0; @@ -276,11 +244,11 @@ void SwFieldRefPage::Reset(const SfxItemSet* ) const sal_uInt16 nVal = static_cast< sal_uInt16 >(sUserData.getToken(0, ';', nIdx).toInt32()); if(nVal != USHRT_MAX) { - for(sal_Int32 i = 0; i < m_pTypeLB->GetEntryCount(); i++) + for(sal_Int32 i = 0, nEntryCount = m_xTypeLB->n_children(); i < nEntryCount; ++i) { - if(nVal == static_cast(reinterpret_cast(m_pTypeLB->GetEntryData(i)))) + if (nVal == m_xTypeLB->get_id(i).toUInt32()) { - m_pTypeLB->SelectEntryPos(i); + m_xTypeLB->select(i); break; } } @@ -291,31 +259,31 @@ void SwFieldRefPage::Reset(const SfxItemSet* ) } } } - TypeHdl(*m_pTypeLB); + TypeHdl(*m_xTypeLB); if(nFormatBoxPosition != USHRT_MAX) { - m_pFormatLB->SelectEntryPos(nFormatBoxPosition); + m_xFormatLB->select(nFormatBoxPosition); } if (IsFieldEdit()) { - m_pTypeLB->SaveValue(); - m_pSelectionLB->SaveValue(); - m_pFormatLB->SaveValue(); - m_pNameED->SaveValue(); - m_pValueED->SaveValue(); - m_pFilterED->SetText(OUString()); + m_xTypeLB->save_value(); + m_xSelectionLB->save_value(); + m_xFormatLB->save_value(); + m_xNameED->save_value(); + m_xValueED->save_value(); + m_xFilterED->set_text(OUString()); } } -IMPL_LINK_NOARG(SwFieldRefPage, TypeHdl, ListBox&, void) +IMPL_LINK_NOARG(SwFieldRefPage, TypeHdl, weld::TreeView&, void) { // save old ListBoxPos const sal_Int32 nOld = GetTypeSel(); // current ListBoxPos - SetTypeSel(m_pTypeLB->GetSelectedEntryPos()); + SetTypeSel(m_xTypeLB->get_selected_index()); - if(GetTypeSel() == LISTBOX_ENTRY_NOTFOUND) + if(GetTypeSel() == -1) { if (IsFieldEdit()) { @@ -370,47 +338,46 @@ IMPL_LINK_NOARG(SwFieldRefPage, TypeHdl, ListBox&, void) break; } - if (m_pTypeLB->GetEntryPos(sName) == LISTBOX_ENTRY_NOTFOUND) // reference to deleted mark + if (m_xTypeLB->find_text(sName) == -1) // reference to deleted mark { - sal_Int32 nPos = m_pTypeLB->InsertEntry(sName); - m_pTypeLB->SetEntryData(nPos, reinterpret_cast(nFlag)); + m_xTypeLB->append(OUString::number(nFlag), sName); } - m_pTypeLB->SelectEntry(sName); - SetTypeSel(m_pTypeLB->GetSelectedEntryPos()); + m_xTypeLB->select_text(sName); + SetTypeSel(m_xTypeLB->get_selected_index()); } else { SetTypeSel(0); - m_pTypeLB->SelectEntryPos(0); + m_xTypeLB->select(0); } } if (nOld == GetTypeSel()) return; - sal_uInt16 nTypeId = static_cast(reinterpret_cast(m_pTypeLB->GetEntryData(GetTypeSel()))); + sal_uInt16 nTypeId = m_xTypeLB->get_id(GetTypeSel()).toUInt32(); // fill selection-ListBox - UpdateSubType(comphelper::string::strip(m_pFilterED->GetText(), ' ')); + UpdateSubType(comphelper::string::strip(m_xFilterED->get_text(), ' ')); bool bName = false; nFieldDlgFormatSel = 0; - if ( ( !IsFieldEdit() || m_pSelectionLB->GetEntryCount() ) && - nOld != LISTBOX_ENTRY_NOTFOUND ) + if ( ( !IsFieldEdit() || m_xSelectionLB->n_children() ) && + nOld != -1 ) { - m_pNameED->SetText(OUString()); - m_pValueED->SetText(OUString()); - m_pFilterED->SetText(OUString()); + m_xNameED->set_text(OUString()); + m_xValueED->set_text(OUString()); + m_xFilterED->set_text(OUString()); } switch (nTypeId) { case TYP_GETREFFLD: - if (REFFLDFLAG & static_cast(reinterpret_cast(m_pTypeLB->GetEntryData(nOld)))) + if (REFFLDFLAG & m_xTypeLB->get_id(nOld).toUInt32()) // the old one stays - nFieldDlgFormatSel = m_pFormatLB->GetSelectedEntryPos(); + nFieldDlgFormatSel = m_xFormatLB->get_selected_index(); bName = true; break; @@ -424,47 +391,48 @@ IMPL_LINK_NOARG(SwFieldRefPage, TypeHdl, ListBox&, void) default: if( REFFLDFLAG & nTypeId ) { - const sal_uInt16 nOldId = static_cast(reinterpret_cast(m_pTypeLB->GetEntryData(nOld))); + const sal_uInt16 nOldId = m_xTypeLB->get_id(nOld).toUInt32(); if( nOldId & REFFLDFLAG || nOldId == TYP_GETREFFLD ) // then the old one stays - nFieldDlgFormatSel = m_pFormatLB->GetSelectedEntryPos(); + nFieldDlgFormatSel = m_xFormatLB->get_selected_index(); } break; } - m_pNameED->Enable(bName); - m_pNameFT->Enable(bName); + m_xNameED->set_sensitive(bName); + m_xNameFT->set_sensitive(bName); // fill Format-Listbox sal_Int32 nSize = FillFormatLB(nTypeId); bool bFormat = nSize != 0; - m_pFormat->Enable(bFormat); + m_xFormat->set_sensitive(bFormat); SubTypeHdl(); - ModifyHdl(*m_pNameED); - ModifyHdl(*m_pFilterED); - + ModifyHdl(*m_xNameED); + ModifyHdl(*m_xFilterED); } -IMPL_LINK_NOARG(SwFieldRefPage, SubTypeTreeListBoxHdl, SvTreeListBox*, void) +IMPL_LINK_NOARG(SwFieldRefPage, SubTypeTreeListBoxHdl, weld::TreeView&, void) { SubTypeHdl(); } -IMPL_LINK_NOARG(SwFieldRefPage, SubTypeListBoxHdl, ListBox&, void) + +IMPL_LINK_NOARG(SwFieldRefPage, SubTypeListBoxHdl, weld::TreeView&, void) { SubTypeHdl(); } + void SwFieldRefPage::SubTypeHdl() { - sal_uInt16 nTypeId = static_cast(reinterpret_cast(m_pTypeLB->GetEntryData(GetTypeSel()))); + sal_uInt16 nTypeId = m_xTypeLB->get_id(GetTypeSel()).toUInt32(); switch(nTypeId) { case TYP_GETREFFLD: - if (!IsFieldEdit() || m_pSelectionLB->GetSelectedEntryCount()) + if (!IsFieldEdit() || m_xSelectionLB->get_selected_index() != -1) { - m_pNameED->SetText(m_pSelectionLB->GetSelectedEntry()); - ModifyHdl(*m_pNameED); + m_xNameED->set_text(m_xSelectionLB->get_selected_text()); + ModifyHdl(*m_xNameED); } break; @@ -475,7 +443,7 @@ void SwFieldRefPage::SubTypeHdl() pSh = ::GetActiveWrtShell(); if(pSh) { - m_pValueED->SetText(pSh->GetSelText()); + m_xValueED->set_text(pSh->GetSelText()); } } @@ -484,17 +452,15 @@ void SwFieldRefPage::SubTypeHdl() case REFFLDFLAG_HEADING: case REFFLDFLAG_NUMITEM: { - if ( m_pSelectionToolTipLB->GetCurEntry() ) - { - m_pNameED->SetText( m_pSelectionToolTipLB->GetEntryText( - m_pSelectionToolTipLB->GetCurEntry() ) ); - } + int nEntry = m_xSelectionToolTipLB->get_selected_index(); + if (nEntry != -1) + m_xNameED->set_text(m_xSelectionToolTipLB->get_text(nEntry)); } break; default: - if (!IsFieldEdit() || m_pSelectionLB->GetSelectedEntryCount()) - m_pNameED->SetText(m_pSelectionLB->GetSelectedEntry()); + if (!IsFieldEdit() || m_xSelectionLB->get_selected_index() != -1) + m_xNameED->set_text(m_xSelectionLB->get_selected_text()); break; } } @@ -506,33 +472,32 @@ void SwFieldRefPage::UpdateSubType(const OUString& filterString) if(!pSh) pSh = ::GetActiveWrtShell(); SwGetRefField* pRefField = static_cast(GetCurField()); - const sal_uInt16 nTypeId = static_cast(reinterpret_cast(m_pTypeLB->GetEntryData(GetTypeSel()))); + const sal_uInt16 nTypeId = m_xTypeLB->get_id(GetTypeSel()).toUInt32(); OUString sOldSel; // #i83479# - if ( m_pSelectionLB->IsVisible() ) + if ( m_xSelectionLB->get_visible() ) { - const sal_Int32 nSelectionSel = m_pSelectionLB->GetSelectedEntryPos(); - if (nSelectionSel != LISTBOX_ENTRY_NOTFOUND) - { - sOldSel = m_pSelectionLB->GetEntry(nSelectionSel); - } + const sal_Int32 nSelectionSel = m_xSelectionLB->get_selected_index(); + if (nSelectionSel != -1) + sOldSel = m_xSelectionLB->get_text(nSelectionSel); } if (IsFieldEdit() && sOldSel.isEmpty()) sOldSel = OUString::number( pRefField->GetSeqNo() + 1 ); - m_pSelectionLB->SetUpdateMode(false); - m_pSelectionLB->Clear(); + m_xSelectionLB->freeze(); + m_xSelectionLB->clear(); // #i83479# - m_pSelectionToolTipLB->SetUpdateMode(false); - m_pSelectionToolTipLB->Clear(); + m_xSelectionToolTipLB->freeze(); + m_xSelectionToolTipLB->clear(); + OUString m_sSelectionToolTipLBId; bool bShowSelectionToolTipLB( false ); if( REFFLDFLAG & nTypeId ) { if (nTypeId == REFFLDFLAG_BOOKMARK) // text marks! { - m_pSelectionLB->SetStyle(m_pSelectionLB->GetStyle()|WB_SORT); + m_xSelectionLB->make_sorted(); // get all text marks IDocumentMarkAccess* const pMarkAccess = pSh->getIDocumentMarkAccess(); for(IDocumentMarkAccess::const_iterator_t ppMark = pMarkAccess->getBookmarksBegin(); @@ -545,7 +510,7 @@ void SwFieldRefPage::UpdateSubType(const OUString& filterString) bool isSubstring = MatchSubstring(pBkmk->GetName(), filterString); if(isSubstring) { - m_pSelectionLB->InsertEntry( pBkmk->GetName() ); + m_xSelectionLB->append_text( pBkmk->GetName() ); } } } @@ -554,7 +519,7 @@ void SwFieldRefPage::UpdateSubType(const OUString& filterString) } else if (nTypeId == REFFLDFLAG_FOOTNOTE) { - m_pSelectionLB->SetStyle(m_pSelectionLB->GetStyle() & ~WB_SORT); + m_xSelectionLB->make_unsorted(); SwSeqFieldList aArr; const size_t nCnt = pSh->GetSeqFootnoteList( aArr ); @@ -563,7 +528,7 @@ void SwFieldRefPage::UpdateSubType(const OUString& filterString) bool isSubstring = MatchSubstring(aArr[ n ].sDlgEntry, filterString); if(isSubstring) { - m_pSelectionLB->InsertEntry( aArr[ n ].sDlgEntry ); + m_xSelectionLB->append_text( aArr[ n ].sDlgEntry ); } if (IsFieldEdit() && pRefField->GetSeqNo() == aArr[ n ].nSeqNo) sOldSel = aArr[n].sDlgEntry; @@ -571,7 +536,7 @@ void SwFieldRefPage::UpdateSubType(const OUString& filterString) } else if (nTypeId == REFFLDFLAG_ENDNOTE) { - m_pSelectionLB->SetStyle(m_pSelectionLB->GetStyle() & ~WB_SORT); + m_xSelectionLB->make_unsorted(); SwSeqFieldList aArr; const size_t nCnt = pSh->GetSeqFootnoteList( aArr, true ); @@ -580,7 +545,7 @@ void SwFieldRefPage::UpdateSubType(const OUString& filterString) bool isSubstring = MatchSubstring(aArr[ n ].sDlgEntry, filterString); if(isSubstring) { - m_pSelectionLB->InsertEntry( aArr[ n ].sDlgEntry ); + m_xSelectionLB->append_text( aArr[ n ].sDlgEntry ); } if (IsFieldEdit() && pRefField->GetSeqNo() == aArr[ n ].nSeqNo) sOldSel = aArr[n].sDlgEntry; @@ -603,20 +568,20 @@ void SwFieldRefPage::UpdateSubType(const OUString& filterString) bool isSubstring = MatchSubstring(pIDoc->getOutlineText(nOutlIdx, pSh->GetLayout(), true, true, false), filterString); if(isSubstring) { - SvTreeListEntry* pEntry = m_pSelectionToolTipLB->InsertEntry( - pIDoc->getOutlineText(nOutlIdx, pSh->GetLayout(), true, true, false)); - pEntry->SetUserData( reinterpret_cast(nOutlIdx) ); + OUString sId(OUString::number(nOutlIdx)); + m_xSelectionToolTipLB->append(sId, + pIDoc->getOutlineText(nOutlIdx, pSh->GetLayout(), true, true, false)); if ( ( IsFieldEdit() && pRefField->GetReferencedTextNode() == maOutlineNodes[nOutlIdx] ) || mpSavedSelectedTextNode == maOutlineNodes[nOutlIdx] ) { - m_pSelectionToolTipLB->Select( pEntry ); + m_sSelectionToolTipLBId = sId; sOldSel.clear(); bCertainTextNodeSelected = true; } else if ( !bCertainTextNodeSelected && mnSavedSelectedPos == nOutlIdx ) { - m_pSelectionToolTipLB->Select( pEntry ); + m_sSelectionToolTipLBId = sId; sOldSel.clear(); } } @@ -638,20 +603,20 @@ void SwFieldRefPage::UpdateSubType(const OUString& filterString) bool isSubstring = MatchSubstring(pIDoc->getListItemText(*maNumItems[nNumItemIdx], *pSh->GetLayout()), filterString); if(isSubstring) { - SvTreeListEntry* pEntry = m_pSelectionToolTipLB->InsertEntry( + OUString sId(OUString::number(nNumItemIdx)); + m_xSelectionToolTipLB->append(sId, pIDoc->getListItemText(*maNumItems[nNumItemIdx], *pSh->GetLayout())); - pEntry->SetUserData( reinterpret_cast(nNumItemIdx) ); if ( ( IsFieldEdit() && pRefField->GetReferencedTextNode() == maNumItems[nNumItemIdx]->GetTextNode() ) || mpSavedSelectedTextNode == maNumItems[nNumItemIdx]->GetTextNode() ) { - m_pSelectionToolTipLB->Select( pEntry ); + m_sSelectionToolTipLBId = sId; sOldSel.clear(); bCertainTextNodeSelected = true; } else if ( !bCertainTextNodeSelected && mnSavedSelectedPos == nNumItemIdx ) { - m_pSelectionToolTipLB->Select( pEntry ); + m_sSelectionToolTipLBId = sId; sOldSel.clear(); } } @@ -659,7 +624,7 @@ void SwFieldRefPage::UpdateSubType(const OUString& filterString) } else { - m_pSelectionLB->SetStyle(m_pSelectionLB->GetStyle()|WB_SORT); + m_xSelectionLB->make_sorted(); // get the fields to Seq-FieldType: SwSetExpFieldType* pType = static_cast(pSh->GetFieldType( @@ -677,7 +642,7 @@ void SwFieldRefPage::UpdateSubType(const OUString& filterString) bool isSubstring = MatchSubstring(aArr[ n ].sDlgEntry, filterString); if(isSubstring) { - m_pSelectionLB->InsertEntry( aArr[ n ].sDlgEntry ); + m_xSelectionLB->append_text( aArr[ n ].sDlgEntry ); } if (IsFieldEdit() && sOldSel.isEmpty() && aArr[ n ].nSeqNo == pRefField->GetSeqNo()) @@ -698,7 +663,7 @@ void SwFieldRefPage::UpdateSubType(const OUString& filterString) bool isSubstring = MatchSubstring( i , filterString ); if(isSubstring) { - m_pSelectionLB->InsertEntry(i); + m_xSelectionLB->append_text(i); } } @@ -707,42 +672,41 @@ void SwFieldRefPage::UpdateSubType(const OUString& filterString) } // #i83479# - m_pSelectionToolTipLB->Show( bShowSelectionToolTipLB ); - m_pSelectionLB->Show( !bShowSelectionToolTipLB ); + m_xSelectionLB->thaw(); + m_xSelectionToolTipLB->thaw(); + if (!m_sSelectionToolTipLBId.isEmpty()) + m_xSelectionToolTipLB->select_id(m_sSelectionToolTipLBId); + m_xSelectionToolTipLB->set_visible( bShowSelectionToolTipLB ); + m_xSelectionLB->set_visible( !bShowSelectionToolTipLB ); if ( bShowSelectionToolTipLB ) { - m_pSelectionToolTipLB->SetUpdateMode(true); + bool bEnable = m_xSelectionToolTipLB->n_children() != 0; + m_xSelection->set_sensitive( bEnable ); - bool bEnable = m_pSelectionToolTipLB->GetEntryCount() != 0; - m_pSelection->Enable( bEnable ); + int nEntry = m_xSelectionToolTipLB->get_selected_index(); + if (nEntry != -1) + m_xSelectionToolTipLB->scroll_to_row(nEntry); - if ( m_pSelectionToolTipLB->GetCurEntry() != nullptr ) + if (IsFieldEdit() && nEntry == -1) { - m_pSelectionToolTipLB->MakeVisible( m_pSelectionToolTipLB->GetCurEntry() ); - } - - if ( IsFieldEdit() && m_pSelectionToolTipLB->GetCurEntry() == nullptr ) - { - m_pNameED->SetText(sOldSel); + m_xNameED->set_text(sOldSel); } } else { - m_pSelectionLB->SetUpdateMode(true); - // enable or disable - bool bEnable = m_pSelectionLB->GetEntryCount() != 0; - m_pSelection->Enable( bEnable ); + bool bEnable = m_xSelectionLB->n_children() != 0; + m_xSelection->set_sensitive( bEnable ); if ( bEnable ) { - m_pSelectionLB->SelectEntry(sOldSel); - if (!m_pSelectionLB->GetSelectedEntryCount() && !IsFieldEdit()) - m_pSelectionLB->SelectEntryPos(0); + m_xSelectionLB->select_text(sOldSel); + if (m_xSelectionLB->get_selected_index() == -1 && !IsFieldEdit()) + m_xSelectionLB->select(0); } - if (IsFieldEdit() && !m_pSelectionLB->GetSelectedEntryCount()) // in case the reference was already deleted... - m_pNameED->SetText(sOldSel); + if (IsFieldEdit() && m_xSelectionLB->get_selected_index() == -1) // in case the reference was already deleted... + m_xNameED->set_text(sOldSel); } } @@ -789,12 +753,12 @@ sal_Int32 SwFieldRefPage::FillFormatLB(sal_uInt16 nTypeId) { OUString sOldSel; - sal_Int32 nFormatSel = m_pFormatLB->GetSelectedEntryPos(); - if (nFormatSel != LISTBOX_ENTRY_NOTFOUND) - sOldSel = m_pFormatLB->GetEntry(nFormatSel); + sal_Int32 nFormatSel = m_xFormatLB->get_selected_index(); + if (nFormatSel != -1) + sOldSel = m_xFormatLB->get_text(nFormatSel); // fill Format-Listbox - m_pFormatLB->Clear(); + m_xFormatLB->clear(); // reference has less that the annotation sal_uInt16 nSize( 0 ); @@ -833,8 +797,8 @@ sal_Int32 SwFieldRefPage::FillFormatLB(sal_uInt16 nTypeId) for (sal_uInt16 i = 0; i < nSize; i++) { - sal_Int32 nPos = m_pFormatLB->InsertEntry(GetFieldMgr().GetFormatStr( nTypeId, i )); - m_pFormatLB->SetEntryData( nPos, reinterpret_cast(GetFieldMgr().GetFormatId( nTypeId, i ))); + OUString sId(OUString::number(GetFieldMgr().GetFormatId( nTypeId, i ))); + m_xFormatLB->append(sId, GetFieldMgr().GetFormatStr(nTypeId, i)); } // #i83479# @@ -842,14 +806,14 @@ sal_Int32 SwFieldRefPage::FillFormatLB(sal_uInt16 nTypeId) if ( bAddCrossRefFormats ) { sal_uInt16 nFormat = FMT_REF_NUMBER_IDX; - sal_Int32 nPos = m_pFormatLB->InsertEntry(GetFieldMgr().GetFormatStr( nTypeId, nFormat )); - m_pFormatLB->SetEntryData( nPos, reinterpret_cast(GetFieldMgr().GetFormatId( nTypeId, nFormat ))); + OUString sId(OUString::number(GetFieldMgr().GetFormatId(nTypeId, nFormat))); + m_xFormatLB->append(sId, GetFieldMgr().GetFormatStr( nTypeId, nFormat )); nFormat = FMT_REF_NUMBER_NO_CONTEXT_IDX; - nPos = m_pFormatLB->InsertEntry(GetFieldMgr().GetFormatStr( nTypeId, nFormat )); - m_pFormatLB->SetEntryData( nPos, reinterpret_cast(GetFieldMgr().GetFormatId( nTypeId, nFormat ))); + sId = OUString::number(GetFieldMgr().GetFormatId(nTypeId, nFormat)); + m_xFormatLB->append(sId, GetFieldMgr().GetFormatStr( nTypeId, nFormat )); nFormat = FMT_REF_NUMBER_FULL_CONTEXT_IDX; - nPos = m_pFormatLB->InsertEntry(GetFieldMgr().GetFormatStr( nTypeId, nFormat )); - m_pFormatLB->SetEntryData( nPos, reinterpret_cast(GetFieldMgr().GetFormatId( nTypeId, nFormat ))); + sId = OUString::number(GetFieldMgr().GetFormatId(nTypeId, nFormat)); + m_xFormatLB->append(sId, GetFieldMgr().GetFormatStr( nTypeId, nFormat )); nExtraSize = 3; } @@ -861,42 +825,42 @@ sal_Int32 SwFieldRefPage::FillFormatLB(sal_uInt16 nTypeId) { for (sal_uInt16 i = 0; i < nSize; i++) { - sal_Int32 nPos = m_pFormatLB->InsertEntry(SwResId(FMT_REF_WITH_LOWERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, i )); - m_pFormatLB->SetEntryData( nPos, reinterpret_cast(GetFieldMgr().GetFormatId( nTypeId, i + SAL_N_ELEMENTS(FMT_REF_ARY)))); + OUString sId(OUString::number(GetFieldMgr().GetFormatId( nTypeId, i + SAL_N_ELEMENTS(FMT_REF_ARY)))); + m_xFormatLB->append(sId, SwResId(FMT_REF_WITH_LOWERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, i )); } nExtraSize += nSize; if ( bAddCrossRefFormats ) { sal_uInt16 nFormat = FMT_REF_NUMBER_IDX + SAL_N_ELEMENTS(FMT_REF_ARY); - sal_Int32 nPos = m_pFormatLB->InsertEntry(SwResId(FMT_REF_WITH_LOWERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, nFormat % SAL_N_ELEMENTS(FMT_REF_ARY))); - m_pFormatLB->SetEntryData( nPos, reinterpret_cast(GetFieldMgr().GetFormatId( nTypeId, nFormat ))); + OUString sId(OUString::number(GetFieldMgr().GetFormatId(nTypeId, nFormat))); + m_xFormatLB->append(sId, SwResId(FMT_REF_WITH_LOWERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, nFormat % SAL_N_ELEMENTS(FMT_REF_ARY))); nFormat = FMT_REF_NUMBER_NO_CONTEXT_IDX + SAL_N_ELEMENTS(FMT_REF_ARY); - nPos = m_pFormatLB->InsertEntry(SwResId(FMT_REF_WITH_LOWERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, nFormat % SAL_N_ELEMENTS(FMT_REF_ARY))); - m_pFormatLB->SetEntryData( nPos, reinterpret_cast(GetFieldMgr().GetFormatId( nTypeId, nFormat ))); + sId = OUString::number(GetFieldMgr().GetFormatId(nTypeId, nFormat)); + m_xFormatLB->append(sId, SwResId(FMT_REF_WITH_LOWERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, nFormat % SAL_N_ELEMENTS(FMT_REF_ARY))); nFormat = FMT_REF_NUMBER_FULL_CONTEXT_IDX + SAL_N_ELEMENTS(FMT_REF_ARY); - nPos = m_pFormatLB->InsertEntry(SwResId(FMT_REF_WITH_LOWERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, nFormat % SAL_N_ELEMENTS(FMT_REF_ARY))); - m_pFormatLB->SetEntryData( nPos, reinterpret_cast(GetFieldMgr().GetFormatId( nTypeId, nFormat ))); + sId = OUString::number(GetFieldMgr().GetFormatId(nTypeId, nFormat)); + m_xFormatLB->append(sId, SwResId(FMT_REF_WITH_LOWERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, nFormat % SAL_N_ELEMENTS(FMT_REF_ARY))); nExtraSize += 3; } // uppercase article for (sal_uInt16 i = 0; i < nSize; i++) { - sal_Int32 nPos = m_pFormatLB->InsertEntry(SwResId(FMT_REF_WITH_UPPERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, i )); - m_pFormatLB->SetEntryData( nPos, reinterpret_cast(GetFieldMgr().GetFormatId( nTypeId, i + 2 * SAL_N_ELEMENTS(FMT_REF_ARY)))); + OUString sId(OUString::number(GetFieldMgr().GetFormatId( nTypeId, i + 2 * SAL_N_ELEMENTS(FMT_REF_ARY)))); + m_xFormatLB->append(sId, SwResId(FMT_REF_WITH_UPPERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, i )); } nExtraSize += nSize; if ( bAddCrossRefFormats ) { sal_uInt16 nFormat = FMT_REF_NUMBER_IDX + 2 * SAL_N_ELEMENTS(FMT_REF_ARY); - sal_Int32 nPos = m_pFormatLB->InsertEntry(SwResId(FMT_REF_WITH_UPPERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, nFormat % SAL_N_ELEMENTS(FMT_REF_ARY))); - m_pFormatLB->SetEntryData( nPos, reinterpret_cast(GetFieldMgr().GetFormatId( nTypeId, nFormat ))); + OUString sId(OUString::number(GetFieldMgr().GetFormatId(nTypeId, nFormat))); + m_xFormatLB->append(sId, SwResId(FMT_REF_WITH_UPPERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, nFormat % SAL_N_ELEMENTS(FMT_REF_ARY))); nFormat = FMT_REF_NUMBER_NO_CONTEXT_IDX + 2 * SAL_N_ELEMENTS(FMT_REF_ARY); - nPos = m_pFormatLB->InsertEntry(SwResId(FMT_REF_WITH_UPPERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, nFormat % SAL_N_ELEMENTS(FMT_REF_ARY))); - m_pFormatLB->SetEntryData( nPos, reinterpret_cast(GetFieldMgr().GetFormatId( nTypeId, nFormat ))); + sId = OUString::number(GetFieldMgr().GetFormatId(nTypeId, nFormat)); + m_xFormatLB->append(sId, SwResId(FMT_REF_WITH_UPPERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, nFormat % SAL_N_ELEMENTS(FMT_REF_ARY))); nFormat = FMT_REF_NUMBER_FULL_CONTEXT_IDX + 2 * SAL_N_ELEMENTS(FMT_REF_ARY); - nPos = m_pFormatLB->InsertEntry(SwResId(FMT_REF_WITH_UPPERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, nFormat % SAL_N_ELEMENTS(FMT_REF_ARY))); - m_pFormatLB->SetEntryData( nPos, reinterpret_cast(GetFieldMgr().GetFormatId( nTypeId, nFormat ))); + sId = OUString::number(GetFieldMgr().GetFormatId(nTypeId, nFormat)); + m_xFormatLB->append(sId, SwResId(FMT_REF_WITH_UPPERCASE_HU_ARTICLE) + GetFieldMgr().GetFormatStr( nTypeId, nFormat % SAL_N_ELEMENTS(FMT_REF_ARY))); nExtraSize += 3; } } @@ -907,15 +871,16 @@ sal_Int32 SwFieldRefPage::FillFormatLB(sal_uInt16 nTypeId) if (nSize) { if (!IsFieldEdit()) - m_pFormatLB->SelectEntry(sOldSel); + m_xFormatLB->select_text(sOldSel); else - m_pFormatLB->SelectEntry(SwResId(FMT_REF_ARY[GetCurField()->GetFormat() % SAL_N_ELEMENTS(FMT_REF_ARY)])); + m_xFormatLB->select_text(SwResId(FMT_REF_ARY[GetCurField()->GetFormat() % SAL_N_ELEMENTS(FMT_REF_ARY)])); - if (!m_pFormatLB->GetSelectedEntryCount()) + if (m_xFormatLB->get_selected_index() == -1) { - m_pFormatLB->SelectEntryPos(nFieldDlgFormatSel); - if (!m_pFormatLB->GetSelectedEntryCount()) - m_pFormatLB->SelectEntryPos(0); + if (nFieldDlgFormatSel < m_xFormatLB->n_children()) + m_xFormatLB->select(nFieldDlgFormatSel); + else + m_xFormatLB->select(0); } } @@ -923,13 +888,13 @@ sal_Int32 SwFieldRefPage::FillFormatLB(sal_uInt16 nTypeId) } // Modify -IMPL_LINK_NOARG(SwFieldRefPage, ModifyHdl, Edit&, void) +IMPL_LINK_NOARG(SwFieldRefPage, ModifyHdl, weld::Entry&, void) { - OUString aName(m_pNameED->GetText()); + OUString aName(m_xNameED->get_text()); const bool bEmptyName = aName.isEmpty(); bool bEnable = true; - sal_uInt16 nTypeId = static_cast(reinterpret_cast(m_pTypeLB->GetEntryData(GetTypeSel()))); + sal_uInt16 nTypeId = m_xTypeLB->get_id(GetTypeSel()).toUInt32(); if ((nTypeId == TYP_SETREFFLD && !GetFieldMgr().CanInsertRefMark(aName)) || (bEmptyName && (nTypeId == TYP_GETREFFLD || nTypeId == TYP_SETREFFLD || @@ -938,21 +903,21 @@ IMPL_LINK_NOARG(SwFieldRefPage, ModifyHdl, Edit&, void) EnableInsert(bEnable); - m_pSelectionLB->SelectEntry(aName); + m_xSelectionLB->select_text(aName); } bool SwFieldRefPage::FillItemSet(SfxItemSet* ) { bool bModified = false; - sal_uInt16 nTypeId = static_cast(reinterpret_cast(m_pTypeLB->GetEntryData(GetTypeSel()))); + sal_uInt16 nTypeId = m_xTypeLB->get_id(GetTypeSel()).toUInt32(); sal_uInt16 nSubType = 0; - const sal_Int32 nEntryPos = m_pFormatLB->GetSelectedEntryPos(); - const sal_uLong nFormat = (nEntryPos == LISTBOX_ENTRY_NOTFOUND) - ? 0 : reinterpret_cast(m_pFormatLB->GetEntryData(nEntryPos)); + const sal_Int32 nEntryPos = m_xFormatLB->get_selected_index(); + const sal_uLong nFormat = (nEntryPos == -1) + ? 0 : m_xFormatLB->get_id(nEntryPos).toUInt32(); - OUString aVal(m_pValueED->GetText()); - OUString aName(m_pNameED->GetText()); + OUString aVal(m_xValueED->get_text()); + OUString aName(m_xNameED->get_text()); switch(nTypeId) { @@ -966,8 +931,8 @@ bool SwFieldRefPage::FillItemSet(SfxItemSet* ) if(!pType) // Only insert when the name doesn't exist yet { - m_pSelectionLB->InsertEntry(aName); - m_pSelection->Enable(); + m_xSelectionLB->append_text(aName); + m_xSelection->set_sensitive(true); } break; } @@ -984,14 +949,14 @@ bool SwFieldRefPage::FillItemSet(SfxItemSet* ) } if (nTypeId == REFFLDFLAG_BOOKMARK) // text marks! { - aName = m_pNameED->GetText(); + aName = m_xNameED->get_text(); nTypeId = TYP_GETREFFLD; nSubType = REF_BOOKMARK; } else if (REFFLDFLAG_FOOTNOTE == nTypeId) // footnotes { SwSeqFieldList aArr; - SeqFieldLstElem aElem( m_pSelectionLB->GetSelectedEntry(), 0 ); + SeqFieldLstElem aElem( m_xSelectionLB->get_selected_text(), 0 ); size_t nPos = 0; @@ -1012,7 +977,7 @@ bool SwFieldRefPage::FillItemSet(SfxItemSet* ) else if (REFFLDFLAG_ENDNOTE == nTypeId) // endnotes { SwSeqFieldList aArr; - SeqFieldLstElem aElem( m_pSelectionLB->GetSelectedEntry(), 0 ); + SeqFieldLstElem aElem( m_xSelectionLB->get_selected_text(), 0 ); size_t nPos = 0; @@ -1033,13 +998,12 @@ bool SwFieldRefPage::FillItemSet(SfxItemSet* ) // #i83479# else if ( nTypeId == REFFLDFLAG_HEADING ) { - SvTreeListEntry* pEntry = m_pSelectionToolTipLB->GetCurEntry(); - OSL_ENSURE( pEntry, + int nEntry = m_xSelectionToolTipLB->get_selected_index(); + OSL_ENSURE( nEntry != -1, " - no entry selected in selection tool tip listbox!" ); - if ( pEntry ) + if (nEntry != -1) { - const size_t nOutlIdx( static_cast - (reinterpret_cast(pEntry->GetUserData())) ); + const size_t nOutlIdx(m_xSelectionToolTipLB->get_id(nEntry).toUInt32()); pSh->getIDocumentOutlineNodesAccess()->getOutlineNodes( maOutlineNodes ); if ( nOutlIdx < maOutlineNodes.size() ) { @@ -1054,14 +1018,13 @@ bool SwFieldRefPage::FillItemSet(SfxItemSet* ) } else if ( nTypeId == REFFLDFLAG_NUMITEM ) { - SvTreeListEntry* pEntry = m_pSelectionToolTipLB->GetCurEntry(); - OSL_ENSURE( pEntry, + int nEntry = m_xSelectionToolTipLB->get_selected_index(); + OSL_ENSURE( nEntry != -1, " - no entry selected in selection tool tip listbox!" ); - if ( pEntry ) + if (nEntry != -1) { - const size_t nNumItemIdx( static_cast - (reinterpret_cast(pEntry->GetUserData())) ); - pSh->getIDocumentListItemsAccess()->getNumItems( maNumItems ); + const size_t nNumItemIdx(m_xSelectionToolTipLB->get_id(nEntry).toUInt32()); + pSh->getIDocumentListItemsAccess()->getNumItems(maNumItems); if ( nNumItemIdx < maNumItems.size() ) { ::sw::mark::IMark const * const pMark = pSh->getIDocumentMarkAccess()->getMarkForTextNode( @@ -1081,7 +1044,7 @@ bool SwFieldRefPage::FillItemSet(SfxItemSet* ) if( pType ) { SwSeqFieldList aArr; - SeqFieldLstElem aElem( m_pSelectionLB->GetSelectedEntry(), 0 ); + SeqFieldLstElem aElem( m_xSelectionLB->get_selected_text(), 0 ); size_t nPos = 0; @@ -1109,16 +1072,16 @@ bool SwFieldRefPage::FillItemSet(SfxItemSet* ) } if (!IsFieldEdit() || bModified || - m_pNameED->IsValueChangedFromSaved() || - m_pValueED->IsValueChangedFromSaved() || - m_pTypeLB->IsValueChangedFromSaved() || - m_pSelectionLB->IsValueChangedFromSaved() || - m_pFormatLB->IsValueChangedFromSaved()) + m_xNameED->get_value_changed_from_saved() || + m_xValueED->get_value_changed_from_saved() || + m_xTypeLB->get_value_changed_from_saved() || + m_xSelectionLB->get_value_changed_from_saved() || + m_xFormatLB->get_value_changed_from_saved()) { InsertField( nTypeId, nSubType, aName, aVal, nFormat ); } - ModifyHdl(*m_pNameED); // enable/disable insert if applicable + ModifyHdl(*m_xNameED); // enable/disable insert if applicable return false; } @@ -1126,7 +1089,7 @@ bool SwFieldRefPage::FillItemSet(SfxItemSet* ) VclPtr SwFieldRefPage::Create( TabPageParent pParent, const SfxItemSet *const pAttrSet) { - return VclPtr::Create( pParent.pParent, pAttrSet ); + return VclPtr::Create( pParent, pAttrSet ); } sal_uInt16 SwFieldRefPage::GetGroup() @@ -1136,13 +1099,12 @@ sal_uInt16 SwFieldRefPage::GetGroup() void SwFieldRefPage::FillUserData() { - const sal_Int32 nEntryPos = m_pTypeLB->GetSelectedEntryPos(); - const sal_uInt16 nTypeSel = ( LISTBOX_ENTRY_NOTFOUND == nEntryPos ) + const sal_Int32 nEntryPos = m_xTypeLB->get_selected_index(); + const sal_uInt16 nTypeSel = ( -1 == nEntryPos ) ? USHRT_MAX - : sal::static_int_cast< sal_uInt16 > - (reinterpret_cast< sal_uIntPtr >(m_pTypeLB->GetEntryData( nEntryPos ))); - const sal_Int32 nFormatEntryPos = m_pFormatLB->GetSelectedEntryPos(); - const sal_uInt32 nFormatSel = LISTBOX_ENTRY_NOTFOUND == nFormatEntryPos ? USHRT_MAX : nFormatEntryPos; + : m_xTypeLB->get_id(nEntryPos).toUInt32(); + const sal_Int32 nFormatEntryPos = m_xFormatLB->get_selected_index(); + const sal_uInt32 nFormatSel = -1 == nFormatEntryPos ? USHRT_MAX : nFormatEntryPos; SetUserData( USER_DATA_VERSION ";" + OUString::number( nTypeSel ) + ";" + OUString::number( nFormatSel )); diff --git a/sw/source/ui/fldui/fldref.hxx b/sw/source/ui/fldui/fldref.hxx index 15f026adc385..eacf917b5bb5 100644 --- a/sw/source/ui/fldui/fldref.hxx +++ b/sw/source/ui/fldui/fldref.hxx @@ -28,22 +28,10 @@ #include "fldpage.hxx" #include #include -#include "FldRefTreeListBox.hxx" class SwTextNode; class SwFieldRefPage : public SwFieldPage { - VclPtr m_pTypeLB; - VclPtr m_pSelection; - VclPtr m_pSelectionLB; - // #i83479# - VclPtr m_pSelectionToolTipLB; - VclPtr m_pFormat; - VclPtr m_pFormatLB; - VclPtr m_pNameFT; - VclPtr m_pNameED; - VclPtr m_pValueED; - VclPtr m_pFilterED; OUString sBookmarkText; OUString sFootnoteText; OUString sEndnoteText; @@ -60,11 +48,23 @@ class SwFieldRefPage : public SwFieldPage // fallback, if previously selected text node doesn't exist anymore size_t mnSavedSelectedPos; - DECL_LINK(TypeHdl, ListBox&, void); - DECL_LINK(SubTypeListBoxHdl, ListBox&, void); - DECL_LINK(SubTypeTreeListBoxHdl, SvTreeListBox*, void); - DECL_LINK(ModifyHdl, Edit&, void); - DECL_LINK(ModifyHdl_Impl, Edit&, void); + std::unique_ptr m_xTypeLB; + std::unique_ptr m_xSelection; + std::unique_ptr m_xSelectionLB; + // #i83479# + std::unique_ptr m_xSelectionToolTipLB; + std::unique_ptr m_xFormat; + std::unique_ptr m_xFormatLB; + std::unique_ptr m_xNameFT; + std::unique_ptr m_xNameED; + std::unique_ptr m_xValueED; + std::unique_ptr m_xFilterED; + + DECL_LINK(TypeHdl, weld::TreeView&, void); + DECL_LINK(SubTypeListBoxHdl, weld::TreeView&, void); + DECL_LINK(SubTypeTreeListBoxHdl, weld::TreeView&, void); + DECL_LINK(ModifyHdl, weld::Entry&, void); + DECL_LINK(ModifyHdl_Impl, weld::Entry&, void); void SubTypeHdl(); @@ -81,10 +81,8 @@ protected: virtual sal_uInt16 GetGroup() override; public: - SwFieldRefPage(vcl::Window* pParent, const SfxItemSet* pSet); - - virtual ~SwFieldRefPage() override; - virtual void dispose() override; + SwFieldRefPage(TabPageParent pParent, const SfxItemSet* pSet); + virtual ~SwFieldRefPage() override; static VclPtr Create(TabPageParent pParent, const SfxItemSet* rAttrSet); diff --git a/sw/uiconfig/swriter/ui/fldrefpage.ui b/sw/uiconfig/swriter/ui/fldrefpage.ui index 042b373f88f4..812ee1cfa0ef 100644 --- a/sw/uiconfig/swriter/ui/fldrefpage.ui +++ b/sw/uiconfig/swriter/ui/fldrefpage.ui @@ -1,11 +1,36 @@ - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -44,14 +69,37 @@ True 6 - + True True - liststore1 - 0 - False - - + True + True + in + + + True + True + True + True + liststore1 + False + False + 0 + False + + + + + + + + + 0 + + + + + @@ -61,9 +109,9 @@ True False - 0 _Type True + 0 @@ -90,14 +138,37 @@ True 6 - + True True - liststore1 - 0 - False - - + True + True + in + + + True + True + True + True + liststore2 + False + False + 0 + False + + + + + + + + + 0 + + + + + @@ -107,9 +178,9 @@ True False - 0 Insert _reference to True + 0 @@ -162,9 +233,6 @@ 0 - - - 0 @@ -176,7 +244,7 @@ True True True - out + True Filter Selection @@ -199,25 +267,49 @@ True 0 none - + True False True 6 - + True False vertical - + True True True True - - + in + + + True + True + True + True + liststore3 + False + False + 0 + False + + + + + + + + + 0 + + + + + @@ -227,14 +319,37 @@ - + True True True True - False - - + in + + + True + True + True + True + liststore4 + False + False + 0 + False + + + + + + + + + 0 + + + + + @@ -249,11 +364,10 @@ - False False - 0 S_election True + 0 @@ -278,10 +392,10 @@ True False False - 0 _Value True value + 0 0 @@ -294,6 +408,7 @@ False True True + True 1 @@ -304,10 +419,10 @@ True False - 0 Na_me True name + 0 0 @@ -319,6 +434,7 @@ True True True + True 1 diff --git a/sw/uiconfig/swriter/ui/templatedialog8.ui b/sw/uiconfig/swriter/ui/templatedialog8.ui index 20640bcddf93..87d5a777394c 100644 --- a/sw/uiconfig/swriter/ui/templatedialog8.ui +++ b/sw/uiconfig/swriter/ui/templatedialog8.ui @@ -68,7 +68,7 @@ - Standard + Standard True True True @@ -162,7 +162,7 @@ True - False + True Organizer @@ -208,7 +208,7 @@ True - False + True Page @@ -255,7 +255,7 @@ True - False + True Area @@ -302,7 +302,7 @@ True - False + True Transparency @@ -349,7 +349,7 @@ True - False + True Header @@ -396,7 +396,7 @@ True - False + True Footer @@ -443,7 +443,7 @@ True - False + True Borders @@ -490,7 +490,7 @@ True - False + True Columns @@ -537,7 +537,7 @@ True - False + True Footnote @@ -584,7 +584,7 @@ True - False + True Text Grid diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 216de7759527..47f2ecda410f 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -2682,7 +2682,7 @@ public: const OUString* getEntryData(int index) const { SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, index); - return static_cast(pEntry->GetUserData()); + return pEntry ? static_cast(pEntry->GetUserData()) : nullptr; } virtual OUString get_id(int pos) const override @@ -2986,6 +2986,11 @@ public: set_sort_order(true); } + virtual void make_unsorted() override + { + m_xTreeView->SetStyle(m_xTreeView->GetStyle() & ~WB_SORT); + } + virtual void set_sort_order(bool bAscending) override { SvTreeList* pListModel = m_xTreeView->GetModel(); diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 84f13af7c1a6..2a7551456922 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -5935,6 +5935,16 @@ public: gtk_tree_sortable_set_sort_column_id(pSortable, m_nTextCol, GTK_SORT_ASCENDING); } + virtual void make_unsorted() override + { + m_xSorter.reset(); + int nSortColumn; + GtkSortType eSortType; + GtkTreeSortable* pSortable = GTK_TREE_SORTABLE(m_pTreeStore); + gtk_tree_sortable_get_sort_column_id(pSortable, &nSortColumn, &eSortType); + gtk_tree_sortable_set_sort_column_id(pSortable, GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID, eSortType); + } + virtual void set_sort_order(bool bAscending) override { GtkSortType eSortType = bAscending ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING; -- cgit