diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2021-07-26 17:05:26 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-07-27 08:43:31 +0200 |
commit | ae34c3fe49267be34f9fb055ea1cb92240796a26 (patch) | |
tree | c9c5250268b5d574c45f6c7fa3fda1c2e4481063 | |
parent | df2b617b612f24b1dd394faf6fd605bdc69790cb (diff) |
use officecfg for SvtHistoryOptions
Change-Id: I5cfd3a51bc4026ccb66ee23eb6f49a5dff5fe042
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119525
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r-- | dbaccess/source/ui/app/AppController.cxx | 2 | ||||
-rw-r--r-- | dbaccess/source/ui/control/opendoccontrols.cxx | 14 | ||||
-rw-r--r-- | framework/source/uielement/recentfilesmenucontroller.cxx | 21 | ||||
-rw-r--r-- | include/unotools/historyoptions.hxx | 48 | ||||
-rw-r--r-- | include/unotools/itemholderbase.hxx | 2 | ||||
-rw-r--r-- | sfx2/source/appl/newhelp.cxx | 29 | ||||
-rw-r--r-- | sfx2/source/appl/sfxpicklist.cxx | 2 | ||||
-rw-r--r-- | sfx2/source/appl/shutdowniconaqua.mm | 25 | ||||
-rw-r--r-- | sfx2/source/control/recentdocsview.cxx | 44 | ||||
-rw-r--r-- | sfx2/source/control/recentdocsviewitem.cxx | 2 | ||||
-rw-r--r-- | sfx2/source/dialog/backingwindow.cxx | 2 | ||||
-rw-r--r-- | sfx2/source/inet/inettbc.cxx | 15 | ||||
-rw-r--r-- | svtools/source/control/inettbc.cxx | 76 | ||||
-rw-r--r-- | unotools/source/config/historyoptions.cxx | 436 | ||||
-rw-r--r-- | unotools/source/config/itemholder1.cxx | 4 |
15 files changed, 245 insertions, 477 deletions
diff --git a/dbaccess/source/ui/app/AppController.cxx b/dbaccess/source/ui/app/AppController.cxx index b704fdca97a9..a8fd1cec3c94 100644 --- a/dbaccess/source/ui/app/AppController.cxx +++ b/dbaccess/source/ui/app/AppController.cxx @@ -357,7 +357,7 @@ void SAL_CALL OApplicationController::disposing() aFilter = pFilter->GetFilterName(); // add to svtool history options - SvtHistoryOptions().AppendItem( EHistoryType::PickList, + SvtHistoryOptions::AppendItem( EHistoryType::PickList, aURL.GetURLNoPass( INetURLObject::DecodeMechanism::NONE ), aFilter, getStrippedDatabaseName(), diff --git a/dbaccess/source/ui/control/opendoccontrols.cxx b/dbaccess/source/ui/control/opendoccontrols.cxx index 99be8a42763d..bf958d4a30b7 100644 --- a/dbaccess/source/ui/control/opendoccontrols.cxx +++ b/dbaccess/source/ui/control/opendoccontrols.cxx @@ -130,22 +130,20 @@ namespace dbaui { OSL_ENSURE( _pAsciiModuleName, "OpenDocumentListBox::impl_init: invalid module name!" ); - Sequence< Sequence< PropertyValue> > aHistory = SvtHistoryOptions().GetList( EHistoryType::PickList ); + std::vector< SvtHistoryOptions::HistoryItem > aHistory = SvtHistoryOptions::GetList( EHistoryType::PickList ); Reference< XNameAccess > xFilterFactory; xFilterFactory.set(::comphelper::getProcessServiceFactory()->createInstance( "com.sun.star.document.FilterFactory" ), css::uno::UNO_QUERY); - sal_uInt32 nCount = aHistory.getLength(); - for ( sal_uInt32 nItem = 0; nItem < nCount; ++nItem ) + for ( const SvtHistoryOptions::HistoryItem& rHistoryItem : aHistory ) { try { // Get the current history item's properties. - ::comphelper::SequenceAsHashMap aItemProperties( aHistory[ nItem ] ); - OUString sURL = aItemProperties.getUnpackedValueOrDefault( HISTORY_PROPERTYNAME_URL, OUString() ); - OUString sFilter = aItemProperties.getUnpackedValueOrDefault( HISTORY_PROPERTYNAME_FILTER, OUString() ); - OUString sTitle = aItemProperties.getUnpackedValueOrDefault( HISTORY_PROPERTYNAME_TITLE, OUString() ); - OUString sPassword = aItemProperties.getUnpackedValueOrDefault( HISTORY_PROPERTYNAME_PASSWORD, OUString() ); + OUString sURL = rHistoryItem.sURL; + OUString sFilter = rHistoryItem.sFilter; + OUString sTitle = rHistoryItem.sTitle; + OUString sPassword = rHistoryItem.sPassword; // If the entry is an impress file then insert it into the // history list and the list box. diff --git a/framework/source/uielement/recentfilesmenucontroller.cxx b/framework/source/uielement/recentfilesmenucontroller.cxx index b25c84256cc2..ef6b3f00e922 100644 --- a/framework/source/uielement/recentfilesmenucontroller.cxx +++ b/framework/source/uielement/recentfilesmenucontroller.cxx @@ -130,28 +130,17 @@ void RecentFilesMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > if ( !pVCLPopupMenu ) return; - Sequence< Sequence< PropertyValue > > aHistoryList = SvtHistoryOptions().GetList( EHistoryType::PickList ); + std::vector< SvtHistoryOptions::HistoryItem > aHistoryList = SvtHistoryOptions::GetList( EHistoryType::PickList ); - int nPickListMenuItems = std::min<sal_Int32>( aHistoryList.getLength(), MAX_MENU_ITEMS ); + int nPickListMenuItems = std::min<sal_Int32>( aHistoryList.size(), MAX_MENU_ITEMS ); m_aRecentFilesItems.clear(); if (( nPickListMenuItems > 0 ) && !m_bDisabled ) { for ( int i = 0; i < nPickListMenuItems; i++ ) { - const Sequence< PropertyValue >& rPickListEntry = aHistoryList[i]; - OUString aURL; - - for ( PropertyValue const & prop : rPickListEntry ) - { - if ( prop.Name == HISTORY_PROPERTYNAME_URL ) - { - prop.Value >>= aURL; - break; - } - } - - m_aRecentFilesItems.push_back( aURL ); + const SvtHistoryOptions::HistoryItem& rPickListEntry = aHistoryList[i]; + m_aRecentFilesItems.push_back( rPickListEntry.sURL ); } } @@ -308,7 +297,7 @@ void SAL_CALL RecentFilesMenuController::itemSelected( const css::awt::MenuEvent if ( aCommand == CMD_CLEAR_LIST ) { - SvtHistoryOptions().Clear( EHistoryType::PickList ); + SvtHistoryOptions::Clear( EHistoryType::PickList ); dispatchCommand( "vnd.org.libreoffice.recentdocs:ClearRecentFileList", css::uno::Sequence< css::beans::PropertyValue >() ); diff --git a/include/unotools/historyoptions.hxx b/include/unotools/historyoptions.hxx index 34e2c74ea4ec..088b2f51dc26 100644 --- a/include/unotools/historyoptions.hxx +++ b/include/unotools/historyoptions.hxx @@ -16,30 +16,14 @@ * 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_UNOTOOLS_HISTORYOPTIONS_HXX -#define INCLUDED_UNOTOOLS_HISTORYOPTIONS_HXX +#pragma once #include <unotools/unotoolsdllapi.h> #include <sal/types.h> -#include <com/sun/star/uno/Sequence.h> #include <rtl/ustring.hxx> -#include <unotools/options.hxx> -#include <memory> - +#include <vector> #include <optional> -namespace com::sun::star::beans { struct PropertyValue; } - -// The method GetList() returns a list of property values. -// Use follow defines to separate values by names. - -#define HISTORY_PROPERTYNAME_URL "URL" -#define HISTORY_PROPERTYNAME_FILTER "Filter" -#define HISTORY_PROPERTYNAME_TITLE "Title" -#define HISTORY_PROPERTYNAME_PASSWORD "Password" -#define HISTORY_PROPERTYNAME_THUMBNAIL "Thumbnail" - /// You can use these enum values to specify right history if you call our interface methods. enum class EHistoryType { @@ -47,8 +31,6 @@ enum class EHistoryType HelpBookmarks }; -class SvtHistoryOptions_Impl; - /** Collect information about history features. Interface methods to get and set value of config key "org.openoffice.Office.Common/History/..." @@ -56,24 +38,29 @@ class SvtHistoryOptions_Impl; key "PickList": The last used documents displayed in the file menu. key "History": The last opened documents general. */ -class SAL_WARN_UNUSED UNOTOOLS_DLLPUBLIC SvtHistoryOptions final : public utl::detail::Options +namespace SvtHistoryOptions { -public: - SvtHistoryOptions(); - virtual ~SvtHistoryOptions() override; /** Clear complete specified list. @param eHistory select right history. */ - void Clear(EHistoryType eHistory); + UNOTOOLS_DLLPUBLIC void Clear(EHistoryType eHistory); /** Return the complete specified history list. @param eHistory select right history. @return A list of history items is returned. */ - css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > GetList(EHistoryType eHistory) const; + struct HistoryItem + { + OUString sURL; + OUString sFilter; + OUString sTitle; + OUString sPassword; + OUString sThumbnail; + }; + UNOTOOLS_DLLPUBLIC std::vector< HistoryItem > GetList(EHistoryType eHistory); /** Append a new item to the specified list. @@ -84,18 +71,13 @@ public: @param sFilter filter name to save in history @param sTitle document title to save in history */ - void AppendItem(EHistoryType eHistory, + UNOTOOLS_DLLPUBLIC void AppendItem(EHistoryType eHistory, const OUString& sURL, const OUString& sFilter, const OUString& sTitle, const std::optional<OUString>& sThumbnail); /** Delete item from the specified list. */ - void DeleteItem(EHistoryType eHistory, const OUString& sURL); - -private: - std::shared_ptr<SvtHistoryOptions_Impl> m_pImpl; + UNOTOOLS_DLLPUBLIC void DeleteItem(EHistoryType eHistory, const OUString& sURL); }; -#endif // INCLUDED_UNOTOOLS_HISTORYOPTIONS_HXX - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/unotools/itemholderbase.hxx b/include/unotools/itemholderbase.hxx index 6503e3285e3b..b7a8a7bbc825 100644 --- a/include/unotools/itemholderbase.hxx +++ b/include/unotools/itemholderbase.hxx @@ -41,8 +41,6 @@ enum class EItem EventConfig , - HistoryOptions , - LinguConfig , MiscOptions , diff --git a/sfx2/source/appl/newhelp.cxx b/sfx2/source/appl/newhelp.cxx index 1862684f8796..346699fbfa41 100644 --- a/sfx2/source/appl/newhelp.cxx +++ b/sfx2/source/appl/newhelp.cxx @@ -1079,21 +1079,6 @@ bool SearchTabPage_Impl::OpenKeyword( const OUString& rKeyword ) } // class BookmarksTabPage_Impl ------------------------------------------- -static void GetBookmarkEntry_Impl -( - const Sequence< PropertyValue >& aBookmarkEntry, - OUString& rTitle, - OUString& rURL -) -{ - for ( const PropertyValue& aValue : aBookmarkEntry ) - { - if ( aValue.Name == HISTORY_PROPERTYNAME_URL ) - aValue.Value >>= rURL; - else if ( aValue.Name == HISTORY_PROPERTYNAME_TITLE ) - aValue.Value >>= rTitle; - } -} void BookmarksTabPage_Impl::DoAction(std::string_view rAction) { @@ -1174,26 +1159,20 @@ BookmarksTabPage_Impl::BookmarksTabPage_Impl(weld::Widget* pParent, SfxHelpIndex m_xBookmarksBox->connect_key_press(LINK(this, BookmarksTabPage_Impl, KeyInputHdl)); // load bookmarks from configuration - const Sequence< Sequence< PropertyValue > > aBookmarkSeq = SvtHistoryOptions().GetList( EHistoryType::HelpBookmarks ); - - OUString aTitle; - OUString aURL; - + const std::vector< SvtHistoryOptions::HistoryItem > aBookmarkSeq = SvtHistoryOptions::GetList( EHistoryType::HelpBookmarks ); for ( const auto& rBookmark : aBookmarkSeq ) { - GetBookmarkEntry_Impl( rBookmark, aTitle, aURL ); - AddBookmarks( aTitle, aURL ); + AddBookmarks( rBookmark.sTitle, rBookmark.sURL ); } } BookmarksTabPage_Impl::~BookmarksTabPage_Impl() { // save bookmarks to configuration - SvtHistoryOptions aHistOpt; - aHistOpt.Clear( EHistoryType::HelpBookmarks ); + SvtHistoryOptions::Clear( EHistoryType::HelpBookmarks ); const sal_Int32 nCount = m_xBookmarksBox->n_children(); for (sal_Int32 i = 0; i < nCount; ++i) - aHistOpt.AppendItem(EHistoryType::HelpBookmarks, m_xBookmarksBox->get_id(i), "", m_xBookmarksBox->get_text(i), std::nullopt); + SvtHistoryOptions::AppendItem(EHistoryType::HelpBookmarks, m_xBookmarksBox->get_id(i), "", m_xBookmarksBox->get_text(i), std::nullopt); m_xBookmarksBox.reset(); m_xBookmarksPB.reset(); diff --git a/sfx2/source/appl/sfxpicklist.cxx b/sfx2/source/appl/sfxpicklist.cxx index e25b90818768..ea7f460fc403 100644 --- a/sfx2/source/appl/sfxpicklist.cxx +++ b/sfx2/source/appl/sfxpicklist.cxx @@ -134,7 +134,7 @@ void SfxPickListImpl::AddDocumentToPickList( const SfxObjectShell* pDocSh ) } // add to svtool history options - SvtHistoryOptions().AppendItem( EHistoryType::PickList, + SvtHistoryOptions::AppendItem( EHistoryType::PickList, aURL.GetURLNoPass( INetURLObject::DecodeMechanism::NONE ), aFilter, aTitle, diff --git a/sfx2/source/appl/shutdowniconaqua.mm b/sfx2/source/appl/shutdowniconaqua.mm index 5a92f38adda5..e36958ec3740 100644 --- a/sfx2/source/appl/shutdowniconaqua.mm +++ b/sfx2/source/appl/shutdowniconaqua.mm @@ -180,32 +180,21 @@ class RecentFilesStringLength : public ::cppu::WeakImplHelper< css::util::XStrin [menu removeItemAtIndex: 0]; // update recent item list - css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > aHistoryList( SvtHistoryOptions().GetList( EHistoryType::PickList ) ); + std::vector< SvtHistoryOptions::HistoryItem > aHistoryList( SvtHistoryOptions::GetList( EHistoryType::PickList ) ); - int nPickListMenuItems = ( aHistoryList.getLength() > 99 ) ? 99 : aHistoryList.getLength(); + int nPickListMenuItems = ( aHistoryList.size() > 99 ) ? 99 : aHistoryList.size(); m_pRecentFilesItems->clear(); if( nPickListMenuItems > 0 ) { for ( int i = 0; i < nPickListMenuItems; i++ ) { - css::uno::Sequence< css::beans::PropertyValue > const & rPickListEntry = aHistoryList[i]; + const SvtHistoryOptions::HistoryItem & rPickListEntry = aHistoryList[i]; RecentMenuEntry aRecentFile; - - for ( const css::beans::PropertyValue& rProp : rPickListEntry ) - { - const css::uno::Any& a = rProp.Value; - - if ( rProp.Name == HISTORY_PROPERTYNAME_URL ) - a >>= aRecentFile.aURL; - else if ( rProp.Name == HISTORY_PROPERTYNAME_FILTER ) - a >>= aRecentFile.aFilter; - else if ( rProp.Name == HISTORY_PROPERTYNAME_TITLE ) - a >>= aRecentFile.aTitle; - else if ( rProp.Name == HISTORY_PROPERTYNAME_PASSWORD ) - a >>= aRecentFile.aPassword; - } - + aRecentFile.aURL = rPickListEntry.sURL; + aRecentFile.aFilter = rPickListEntry.sFilter; + aRecentFile.aTitle = rPickListEntry.sTitle; + aRecentFile.aPassword = rPickListEntry.sPassword; m_pRecentFilesItems->push_back( aRecentFile ); } } diff --git a/sfx2/source/control/recentdocsview.cxx b/sfx2/source/control/recentdocsview.cxx index 0b01603d3914..3493df385120 100644 --- a/sfx2/source/control/recentdocsview.cxx +++ b/sfx2/source/control/recentdocsview.cxx @@ -240,42 +240,34 @@ void RecentDocsView::Reload() { Clear(); - Sequence< Sequence< PropertyValue > > aHistoryList = SvtHistoryOptions().GetList( EHistoryType::PickList ); - for ( int i = 0; i < aHistoryList.getLength(); i++ ) + std::vector< SvtHistoryOptions::HistoryItem > aHistoryList = SvtHistoryOptions::GetList( EHistoryType::PickList ); + for ( size_t i = 0; i < aHistoryList.size(); i++ ) { - const Sequence< PropertyValue >& rRecentEntry = aHistoryList[i]; + const SvtHistoryOptions::HistoryItem& rRecentEntry = aHistoryList[i]; - OUString aURL; + OUString aURL = rRecentEntry.sURL; OUString aTitle; BitmapEx aThumbnail; BitmapEx aModule; - for ( const auto& rProp : rRecentEntry ) + //fdo#74834: only load thumbnail if the corresponding option is not disabled in the configuration + if (officecfg::Office::Common::History::RecentDocsThumbnail::get()) { - Any a = rProp.Value; - - if (rProp.Name == "URL") - a >>= aURL; - //fdo#74834: only load thumbnail if the corresponding option is not disabled in the configuration - else if (rProp.Name == "Thumbnail" && officecfg::Office::Common::History::RecentDocsThumbnail::get()) + OUString aBase64 = rRecentEntry.sThumbnail; + if (!aBase64.isEmpty()) { - OUString aBase64; - a >>= aBase64; - if (!aBase64.isEmpty()) - { - Sequence<sal_Int8> aDecoded; - comphelper::Base64::decode(aDecoded, aBase64); + Sequence<sal_Int8> aDecoded; + comphelper::Base64::decode(aDecoded, aBase64); - SvMemoryStream aStream(aDecoded.getArray(), aDecoded.getLength(), StreamMode::READ); - vcl::PngImageReader aReader(aStream); - aThumbnail = aReader.read(); - } else + SvMemoryStream aStream(aDecoded.getArray(), aDecoded.getLength(), StreamMode::READ); + vcl::PngImageReader aReader(aStream); + aThumbnail = aReader.read(); + } else + { + INetURLObject aUrl(aURL); + if (mnFileTypes & ApplicationType::TYPE_DATABASE && typeMatchesExtension(ApplicationType::TYPE_DATABASE, aUrl.getExtension())) { - INetURLObject aUrl(aURL); - if (mnFileTypes & ApplicationType::TYPE_DATABASE && typeMatchesExtension(ApplicationType::TYPE_DATABASE, aUrl.getExtension())) - { - aThumbnail = BitmapEx(ThumbnailView::ItemHeight() > 192 ? SFX_THUMBNAIL_BASE_256 : SFX_THUMBNAIL_BASE_192); - } + aThumbnail = BitmapEx(ThumbnailView::ItemHeight() > 192 ? SFX_THUMBNAIL_BASE_256 : SFX_THUMBNAIL_BASE_192); } } } diff --git a/sfx2/source/control/recentdocsviewitem.cxx b/sfx2/source/control/recentdocsviewitem.cxx index 95660738346a..e76c500ecbb0 100644 --- a/sfx2/source/control/recentdocsviewitem.cxx +++ b/sfx2/source/control/recentdocsviewitem.cxx @@ -163,7 +163,7 @@ void RecentDocsViewItem::MouseButtonUp(const MouseEvent& rMEvt) { if (getRemoveIconArea().IsInside(rMEvt.GetPosPixel())) { - SvtHistoryOptions().DeleteItem(EHistoryType::PickList, maURL); + SvtHistoryOptions::DeleteItem(EHistoryType::PickList, maURL); mrParent.Reload(); return; } diff --git a/sfx2/source/dialog/backingwindow.cxx b/sfx2/source/dialog/backingwindow.cxx index df7f52253a6d..f58bf46329b0 100644 --- a/sfx2/source/dialog/backingwindow.cxx +++ b/sfx2/source/dialog/backingwindow.cxx @@ -607,7 +607,7 @@ IMPL_LINK (BackingWindow, MenuSelectHdl, const OString&, rId, void) { if (rId == "clear_all") { - SvtHistoryOptions().Clear(EHistoryType::PickList); + SvtHistoryOptions::Clear(EHistoryType::PickList); mxAllRecentThumbnails->Reload(); return; } diff --git a/sfx2/source/inet/inettbc.cxx b/sfx2/source/inet/inettbc.cxx index 52b1d7ad1341..0db4f7729008 100644 --- a/sfx2/source/inet/inettbc.cxx +++ b/sfx2/source/inet/inettbc.cxx @@ -243,19 +243,12 @@ void SfxURLToolBoxControl_Impl::StateChangedAtToolBoxControl SvtURLBox* pURLBox = GetURLBox(); pURLBox->clear(); - const css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > lList = SvtHistoryOptions().GetList(EHistoryType::PickList); - for (const css::uno::Sequence< css::beans::PropertyValue >& lProps : lList) + const std::vector< SvtHistoryOptions::HistoryItem > lList = SvtHistoryOptions::GetList(EHistoryType::PickList); + for (const SvtHistoryOptions::HistoryItem& lProps : lList) { - for (const auto& rProp : lProps) + if (!lProps.sURL.isEmpty()) { - if (rProp.Name != HISTORY_PROPERTYNAME_URL) - continue; - - OUString sURL; - if (!(rProp.Value>>=sURL) || sURL.isEmpty()) - continue; - - INetURLObject aURL ( sURL ); + INetURLObject aURL ( lProps.sURL ); OUString sMainURL( aURL.GetMainURL( INetURLObject::DecodeMechanism::WithCharset ) ); OUString sFile; diff --git a/svtools/source/control/inettbc.cxx b/svtools/source/control/inettbc.cxx index fe61e4c28e25..5f8cf08eb72f 100644 --- a/svtools/source/control/inettbc.cxx +++ b/svtools/source/control/inettbc.cxx @@ -138,24 +138,14 @@ SvtMatchContext_Impl::~SvtMatchContext_Impl() void SvtMatchContext_Impl::FillPicklist(std::vector<OUString>& rPickList) { // Read the history of picks - Sequence< Sequence< PropertyValue > > seqPicklist = SvtHistoryOptions().GetList( EHistoryType::PickList ); - sal_uInt32 nCount = seqPicklist.getLength(); + std::vector< SvtHistoryOptions::HistoryItem > seqPicklist = SvtHistoryOptions::GetList( EHistoryType::PickList ); + sal_uInt32 nCount = seqPicklist.size(); for( sal_uInt32 nItem=0; nItem < nCount; nItem++ ) { - Sequence< PropertyValue > seqPropertySet = seqPicklist[ nItem ]; - - auto pProperty = std::find_if(seqPropertySet.begin(), seqPropertySet.end(), - [](const PropertyValue& rProperty) { return rProperty.Name == HISTORY_PROPERTYNAME_TITLE; }); - if (pProperty != seqPropertySet.end()) - { - OUString sTitle; - INetURLObject aURL; - - pProperty->Value >>= sTitle; - aURL.SetURL( sTitle ); - rPickList.insert(rPickList.begin() + nItem, aURL.GetMainURL(INetURLObject::DecodeMechanism::WithCharset)); - } + INetURLObject aURL; + aURL.SetURL( seqPicklist[nItem].sTitle ); + rPickList.insert(rPickList.begin() + nItem, aURL.GetMainURL(INetURLObject::DecodeMechanism::WithCharset)); } } @@ -915,47 +905,39 @@ void SvtURLBox::UpdatePicklistForSmartProtocol_Impl() return; // read history pick list - const Sequence< Sequence< PropertyValue > > seqPicklist = SvtHistoryOptions().GetList( EHistoryType::PickList ); + const std::vector< SvtHistoryOptions::HistoryItem > seqPicklist = SvtHistoryOptions::GetList( EHistoryType::PickList ); INetURLObject aCurObj; - for( const Sequence< PropertyValue >& rPropertySet : seqPicklist ) + for( const SvtHistoryOptions::HistoryItem& rPropertySet : seqPicklist ) { - auto pProperty = std::find_if(rPropertySet.begin(), rPropertySet.end(), - [](const PropertyValue& rProperty) { return rProperty.Name == HISTORY_PROPERTYNAME_URL; }); - if (pProperty != rPropertySet.end()) + aCurObj.SetURL( rPropertySet.sURL ); + + if ( !rPropertySet.sURL.isEmpty() && ( eSmartProtocol != INetProtocol::NotValid ) ) { - OUString sURL; + if( aCurObj.GetProtocol() != eSmartProtocol ) + continue; + } - pProperty->Value >>= sURL; - aCurObj.SetURL( sURL ); + OUString aURL( aCurObj.GetMainURL( INetURLObject::DecodeMechanism::WithCharset ) ); - if ( !sURL.isEmpty() && ( eSmartProtocol != INetProtocol::NotValid ) ) + if ( !aURL.isEmpty() ) + { + bool bFound = aURL.endsWith("/"); + if ( !bFound ) { - if( aCurObj.GetProtocol() != eSmartProtocol ) - continue; - } + OUString aUpperURL = aURL.toAsciiUpperCase(); - OUString aURL( aCurObj.GetMainURL( INetURLObject::DecodeMechanism::WithCharset ) ); - - if ( !aURL.isEmpty() ) + bFound = ::std::any_of(pImpl->m_aFilters.begin(), + pImpl->m_aFilters.end(), + FilterMatch( aUpperURL ) ); + } + if ( bFound ) { - bool bFound = aURL.endsWith("/"); - if ( !bFound ) - { - OUString aUpperURL = aURL.toAsciiUpperCase(); - - bFound = ::std::any_of(pImpl->m_aFilters.begin(), - pImpl->m_aFilters.end(), - FilterMatch( aUpperURL ) ); - } - if ( bFound ) - { - OUString aFile; - if (osl::FileBase::getSystemPathFromFileURL(aURL, aFile) == osl::FileBase::E_None) - m_xWidget->append_text(aFile); - else - m_xWidget->append_text(aURL); - } + OUString aFile; + if (osl::FileBase::getSystemPathFromFileURL(aURL, aFile) == osl::FileBase::E_None) + m_xWidget->append_text(aFile); + else + m_xWidget->append_text(aURL); } } } diff --git a/unotools/source/config/historyoptions.cxx b/unotools/source/config/historyoptions.cxx index 2d95036d54c8..62de1e70d1c4 100644 --- a/unotools/source/config/historyoptions.cxx +++ b/unotools/source/config/historyoptions.cxx @@ -36,20 +36,12 @@ #include <tools/diagnose_ex.h> #include <optional> -using namespace ::std; using namespace ::utl; -using namespace ::osl; using namespace ::com::sun::star; using namespace ::com::sun::star::uno; using namespace ::com::sun::star::beans; namespace { - const ::sal_Int32 s_nOffsetURL = 0; - const ::sal_Int32 s_nOffsetFilter = 1; - const ::sal_Int32 s_nOffsetTitle = 2; - const ::sal_Int32 s_nOffsetPassword = 3; - const ::sal_Int32 s_nOffsetThumbnail = 4; - constexpr OUStringLiteral s_sItemList = u"ItemList"; constexpr OUStringLiteral s_sOrderList = u"OrderList"; constexpr OUStringLiteral s_sHistoryItemRef = u"HistoryItemRef"; @@ -57,177 +49,31 @@ namespace { constexpr OUStringLiteral s_sTitle = u"Title"; constexpr OUStringLiteral s_sPassword = u"Password"; constexpr OUStringLiteral s_sThumbnail = u"Thumbnail"; - - class theHistoryOptionsMutex : public rtl::Static<osl::Mutex, theHistoryOptionsMutex>{}; } -/// Internal implementation of the SvtHistoryOptions. -class SvtHistoryOptions_Impl -{ -public: - SvtHistoryOptions_Impl(); - - /// Returns the maximum size of the internal lists, ie. the capacity not the size. - sal_uInt32 GetCapacity(EHistoryType eHistory) const; - - /// Clear the specified history list. - void Clear(EHistoryType eHistory); - - /// Get a sequence list from the items. - Sequence< Sequence<PropertyValue> > GetList(EHistoryType eHistory); - - void AppendItem(EHistoryType eHistory, - const OUString& sURL, const OUString& sFilter, const OUString& sTitle, - const std::optional<OUString>& sThumbnail); - - void DeleteItem(EHistoryType eHistory, const OUString& sURL); - -private: - /// Return the appropriate list of recent documents (based on eHistory). - uno::Reference<container::XNameAccess> GetListAccess(EHistoryType eHistory) const; - - void impl_truncateList(EHistoryType eHistory, sal_uInt32 nSize); - -private: - uno::Reference<container::XNameAccess> m_xCfg; - uno::Reference<container::XNameAccess> m_xCommonXCU; -}; - -SvtHistoryOptions_Impl::SvtHistoryOptions_Impl() +static uno::Reference<container::XNameAccess> GetConfig(); +static uno::Reference<container::XNameAccess> GetCommonXCU(); +static uno::Reference<container::XNameAccess> GetListAccess( + uno::Reference<container::XNameAccess> const & xCfg, + EHistoryType eHistory); +static void TruncateList( + const uno::Reference<container::XNameAccess>& xCfg, + const uno::Reference<container::XNameAccess>& xList, + sal_uInt32 nSize); +static sal_uInt32 GetCapacity(const uno::Reference<container::XNameAccess>& xCommonXCU, EHistoryType eHistory); + +namespace SvtHistoryOptions { - try - { - m_xCfg.set( - ::comphelper::ConfigurationHelper::openConfig( - ::comphelper::getProcessComponentContext(), - "org.openoffice.Office.Histories/Histories", - ::comphelper::EConfigurationModes::Standard), - uno::UNO_QUERY); - - m_xCommonXCU.set( - ::comphelper::ConfigurationHelper::openConfig( - ::comphelper::getProcessComponentContext(), - "org.openoffice.Office.Common/History", - ::comphelper::EConfigurationModes::Standard), - uno::UNO_QUERY); - } - catch(const uno::Exception&) - { - DBG_UNHANDLED_EXCEPTION("unotools.config"); - m_xCfg.clear(); - m_xCommonXCU.clear(); - } -} -sal_uInt32 SvtHistoryOptions_Impl::GetCapacity(EHistoryType eHistory) const +void Clear( EHistoryType eHistory ) { - uno::Reference<beans::XPropertySet> xListAccess(m_xCommonXCU, uno::UNO_QUERY); - - if (!xListAccess.is()) - return 0; - - sal_uInt32 nSize = 0; - try { - switch (eHistory) - { - case EHistoryType::PickList: - xListAccess->getPropertyValue("PickListSize") >>= nSize; - break; - - case EHistoryType::HelpBookmarks: - xListAccess->getPropertyValue("HelpBookmarkSize") >>= nSize; - break; - - default: - break; - } - } - catch (const uno::Exception&) - { - DBG_UNHANDLED_EXCEPTION("unotools.config"); - } - - return nSize; -} - -uno::Reference<container::XNameAccess> SvtHistoryOptions_Impl::GetListAccess(EHistoryType eHistory) const -{ - uno::Reference<container::XNameAccess> xListAccess; - - try - { - switch (eHistory) - { - case EHistoryType::PickList: - m_xCfg->getByName("PickList") >>= xListAccess; - break; - - case EHistoryType::HelpBookmarks: - m_xCfg->getByName("HelpBookmarks") >>= xListAccess; - break; - - default: - break; - } - } - catch (const uno::Exception&) - { - DBG_UNHANDLED_EXCEPTION("unotools.config"); - } - - return xListAccess; -} - -void SvtHistoryOptions_Impl::impl_truncateList(EHistoryType eHistory, sal_uInt32 nSize) -{ - uno::Reference<container::XNameAccess> xList(GetListAccess(eHistory)); - if (!xList.is()) - return; - - uno::Reference<container::XNameContainer> xItemList; - uno::Reference<container::XNameContainer> xOrderList; - uno::Reference<beans::XPropertySet> xSet; - - try - { - xList->getByName(s_sOrderList) >>= xOrderList; - xList->getByName(s_sItemList) >>= xItemList; - - const sal_uInt32 nLength = xOrderList->getElementNames().getLength(); - if (nSize < nLength) - { - for (sal_uInt32 i=nLength-1; i>=nSize; --i) - { - OUString sTmp; - const OUString sRemove = OUString::number(i); - xOrderList->getByName(sRemove) >>= xSet; - xSet->getPropertyValue(s_sHistoryItemRef) >>= sTmp; - xItemList->removeByName(sTmp); - xOrderList->removeByName(sRemove); - } - - ::comphelper::ConfigurationHelper::flush(m_xCfg); - } - } - catch(const uno::Exception&) - { - DBG_UNHANDLED_EXCEPTION("unotools.config"); - } -} + uno::Reference<container::XNameAccess> xCfg = GetConfig(); + uno::Reference<container::XNameAccess> xListAccess(GetListAccess(xCfg, eHistory)); -void SvtHistoryOptions_Impl::Clear( EHistoryType eHistory ) -{ - uno::Reference<container::XNameAccess> xListAccess(GetListAccess(eHistory)); - if (!xListAccess.is()) - return; - - uno::Reference<container::XNameContainer> xNode; - - try - { // clear ItemList + uno::Reference<container::XNameContainer> xNode; xListAccess->getByName(s_sItemList) >>= xNode; Sequence<OUString> aStrings(xNode->getElementNames()); @@ -241,7 +87,7 @@ void SvtHistoryOptions_Impl::Clear( EHistoryType eHistory ) for (const auto& rString : std::as_const(aStrings)) xNode->removeByName(rString); - ::comphelper::ConfigurationHelper::flush(m_xCfg); + ::comphelper::ConfigurationHelper::flush(xCfg); } catch(const uno::Exception&) { @@ -249,92 +95,81 @@ void SvtHistoryOptions_Impl::Clear( EHistoryType eHistory ) } } -Sequence< Sequence<PropertyValue> > SvtHistoryOptions_Impl::GetList(EHistoryType eHistory) +std::vector< HistoryItem > GetList( EHistoryType eHistory ) { - uno::Reference<container::XNameAccess> xListAccess(GetListAccess(eHistory)); - if (!xListAccess.is()) - return Sequence< Sequence<PropertyValue> >(); - - impl_truncateList(eHistory, GetCapacity(eHistory)); - - Sequence<PropertyValue> seqProperties(5); - seqProperties[s_nOffsetURL ].Name = HISTORY_PROPERTYNAME_URL; - seqProperties[s_nOffsetFilter ].Name = HISTORY_PROPERTYNAME_FILTER; - seqProperties[s_nOffsetTitle ].Name = HISTORY_PROPERTYNAME_TITLE; - seqProperties[s_nOffsetPassword ].Name = HISTORY_PROPERTYNAME_PASSWORD; - seqProperties[s_nOffsetThumbnail ].Name = HISTORY_PROPERTYNAME_THUMBNAIL; - - uno::Reference<container::XNameAccess> xItemList; - uno::Reference<container::XNameAccess> xOrderList; + std::vector< HistoryItem > aRet; try { + uno::Reference<container::XNameAccess> xCfg = GetConfig(); + uno::Reference<container::XNameAccess> xCommonXCU = GetCommonXCU(); + uno::Reference<container::XNameAccess> xListAccess(GetListAccess(xCfg, eHistory)); + + TruncateList(xCfg, xListAccess, GetCapacity(xCommonXCU, eHistory)); + + uno::Reference<container::XNameAccess> xItemList; + uno::Reference<container::XNameAccess> xOrderList; xListAccess->getByName(s_sItemList) >>= xItemList; xListAccess->getByName(s_sOrderList) >>= xOrderList; - } - catch(const uno::Exception&) - { - DBG_UNHANDLED_EXCEPTION("unotools.config"); - } - const sal_Int32 nLength = xOrderList->getElementNames().getLength(); - Sequence< Sequence<PropertyValue> > aRet(nLength); - sal_Int32 nCount = 0; + const sal_Int32 nLength = xOrderList->getElementNames().getLength(); + aRet.reserve(nLength); - for (sal_Int32 nItem = 0; nItem < nLength; ++nItem) - { - try - { - OUString sUrl; - uno::Reference<beans::XPropertySet> xSet; - xOrderList->getByName(OUString::number(nItem)) >>= xSet; - xSet->getPropertyValue(s_sHistoryItemRef) >>= sUrl; - - xItemList->getByName(sUrl) >>= xSet; - seqProperties[s_nOffsetURL ].Value <<= sUrl; - - seqProperties[s_nOffsetFilter ].Value = xSet->getPropertyValue(s_sFilter); - seqProperties[s_nOffsetTitle ].Value = xSet->getPropertyValue(s_sTitle); - seqProperties[s_nOffsetPassword ].Value = xSet->getPropertyValue(s_sPassword); - seqProperties[s_nOffsetThumbnail].Value = xSet->getPropertyValue(s_sThumbnail); - aRet[nCount++] = seqProperties; - } - catch(const uno::Exception&) + for (sal_Int32 nItem = 0; nItem < nLength; ++nItem) { - // <https://bugs.libreoffice.org/show_bug.cgi?id=46074> - // "FILEOPEN: No Recent Documents..." discusses a problem - // with corrupted /org.openoffice.Office/Histories/Histories - // configuration items; to work around that problem, simply - // ignore such corrupted individual items here, so that at - // least newly added items are successfully reported back - // from this function: - DBG_UNHANDLED_EXCEPTION("unotools.config"); + try + { + OUString sUrl; + uno::Reference<beans::XPropertySet> xSet; + xOrderList->getByName(OUString::number(nItem)) >>= xSet; + xSet->getPropertyValue(s_sHistoryItemRef) >>= sUrl; + + xItemList->getByName(sUrl) >>= xSet; + HistoryItem aItem; + aItem.sURL = sUrl; + xSet->getPropertyValue(s_sFilter) >>= aItem.sFilter; + xSet->getPropertyValue(s_sTitle) >>= aItem.sTitle; + xSet->getPropertyValue(s_sPassword) >>= aItem.sPassword; + xSet->getPropertyValue(s_sThumbnail) >>= aItem.sThumbnail; + aRet.push_back(aItem); + } + catch(const uno::Exception&) + { + // <https://bugs.libreoffice.org/show_bug.cgi?id=46074> + // "FILEOPEN: No Recent Documents..." discusses a problem + // with corrupted /org.openoffice.Office/Histories/Histories + // configuration items; to work around that problem, simply + // ignore such corrupted individual items here, so that at + // least newly added items are successfully reported back + // from this function: + DBG_UNHANDLED_EXCEPTION("unotools.config"); + } } } - assert(nCount <= nLength); - aRet.realloc(nCount); + catch(const uno::Exception&) + { + DBG_UNHANDLED_EXCEPTION("unotools.config"); + } return aRet; } -void SvtHistoryOptions_Impl::AppendItem(EHistoryType eHistory, +void AppendItem(EHistoryType eHistory, const OUString& sURL, const OUString& sFilter, const OUString& sTitle, const std::optional<OUString>& sThumbnail) { - uno::Reference<container::XNameAccess> xListAccess(GetListAccess(eHistory)); - if (!xListAccess.is()) - return; - - impl_truncateList(eHistory, GetCapacity(eHistory)); + try + { + uno::Reference<container::XNameAccess> xCfg = GetConfig(); + uno::Reference<container::XNameAccess> xCommonXCU = GetCommonXCU(); + uno::Reference<container::XNameAccess> xListAccess(GetListAccess(xCfg, eHistory)); - sal_Int32 nMaxSize = GetCapacity(eHistory); - if (nMaxSize == 0) - return; + TruncateList(xCfg, xListAccess, GetCapacity(xCommonXCU, eHistory)); - uno::Reference<container::XNameContainer> xItemList; - uno::Reference<container::XNameContainer> xOrderList; - uno::Reference<beans::XPropertySet> xSet; + sal_Int32 nMaxSize = GetCapacity(xCommonXCU, eHistory); + if (nMaxSize == 0) + return; - try - { + uno::Reference<container::XNameContainer> xItemList; + uno::Reference<container::XNameContainer> xOrderList; xListAccess->getByName(s_sItemList) >>= xItemList; xListAccess->getByName(s_sOrderList) >>= xOrderList; sal_Int32 nLength = xOrderList->getElementNames().getLength(); @@ -342,6 +177,7 @@ void SvtHistoryOptions_Impl::AppendItem(EHistoryType eHistory, // The item to be appended already exists if (xItemList->hasByName(sURL)) { + uno::Reference<beans::XPropertySet> xSet; if (sThumbnail) { // update the thumbnail @@ -374,10 +210,11 @@ void SvtHistoryOptions_Impl::AppendItem(EHistoryType eHistory, } } - ::comphelper::ConfigurationHelper::flush(m_xCfg); + ::comphelper::ConfigurationHelper::flush(xCfg); } else // The item to be appended does not exist yet { + uno::Reference<beans::XPropertySet> xSet; uno::Reference<lang::XSingleServiceFactory> xFac; uno::Reference<uno::XInterface> xInst; uno::Reference<beans::XPropertySet> xPrevSet; @@ -436,7 +273,7 @@ void SvtHistoryOptions_Impl::AppendItem(EHistoryType eHistory, xSet->setPropertyValue(s_sPassword, uno::makeAny(OUString())); xSet->setPropertyValue(s_sThumbnail, uno::makeAny(sThumbnail.value_or(OUString()))); - ::comphelper::ConfigurationHelper::flush(m_xCfg); + ::comphelper::ConfigurationHelper::flush(xCfg); } } catch(const uno::Exception&) @@ -445,18 +282,15 @@ void SvtHistoryOptions_Impl::AppendItem(EHistoryType eHistory, } } -void SvtHistoryOptions_Impl::DeleteItem(EHistoryType eHistory, const OUString& sURL) +void DeleteItem(EHistoryType eHistory, const OUString& sURL) { - uno::Reference<container::XNameAccess> xListAccess(GetListAccess(eHistory)); - if (!xListAccess.is()) - return; - - uno::Reference<container::XNameContainer> xItemList; - uno::Reference<container::XNameContainer> xOrderList; - uno::Reference<beans::XPropertySet> xSet; - try { + uno::Reference<container::XNameAccess> xCfg = GetConfig(); + uno::Reference<container::XNameAccess> xListAccess(GetListAccess(xCfg, eHistory)); + + uno::Reference<container::XNameContainer> xItemList; + uno::Reference<container::XNameContainer> xOrderList; xListAccess->getByName(s_sItemList) >>= xItemList; xListAccess->getByName(s_sOrderList) >>= xOrderList; sal_Int32 nLength = xOrderList->getElementNames().getLength(); @@ -476,6 +310,7 @@ void SvtHistoryOptions_Impl::DeleteItem(EHistoryType eHistory, const OUString& s sal_Int32 nFromWhere = 0; for (; nFromWhere < nLength - 1; ++nFromWhere) { + uno::Reference<beans::XPropertySet> xSet; OUString aItem; xOrderList->getByName(OUString::number(nFromWhere)) >>= xSet; xSet->getPropertyValue(s_sHistoryItemRef) >>= aItem; @@ -501,7 +336,7 @@ void SvtHistoryOptions_Impl::DeleteItem(EHistoryType eHistory, const OUString& s // and finally remove it from the ItemList xItemList->removeByName(sURL); - ::comphelper::ConfigurationHelper::flush(m_xCfg); + ::comphelper::ConfigurationHelper::flush(xCfg); } catch (const uno::Exception&) { @@ -509,60 +344,95 @@ void SvtHistoryOptions_Impl::DeleteItem(EHistoryType eHistory, const OUString& s } } -namespace { +} // namespace -std::weak_ptr<SvtHistoryOptions_Impl> g_pHistoryOptions; +static uno::Reference<container::XNameAccess> GetConfig() +{ + return uno::Reference<container::XNameAccess>( + ::comphelper::ConfigurationHelper::openConfig( + ::comphelper::getProcessComponentContext(), + "org.openoffice.Office.Histories/Histories", + ::comphelper::EConfigurationModes::Standard), + uno::UNO_QUERY_THROW); } -SvtHistoryOptions::SvtHistoryOptions() +static uno::Reference<container::XNameAccess> GetCommonXCU() { - MutexGuard aGuard(theHistoryOptionsMutex::get()); - - m_pImpl = g_pHistoryOptions.lock(); - if( !m_pImpl ) - { - m_pImpl = std::make_shared<SvtHistoryOptions_Impl>(); - g_pHistoryOptions = m_pImpl; - ItemHolder1::holdConfigItem(EItem::HistoryOptions); - } + return uno::Reference<container::XNameAccess>( + ::comphelper::ConfigurationHelper::openConfig( + ::comphelper::getProcessComponentContext(), + "org.openoffice.Office.Common/History", + ::comphelper::EConfigurationModes::Standard), + uno::UNO_QUERY_THROW); } -SvtHistoryOptions::~SvtHistoryOptions() +static uno::Reference<container::XNameAccess> GetListAccess( + const uno::Reference<container::XNameAccess>& xCfg, + EHistoryType eHistory) { - MutexGuard aGuard(theHistoryOptionsMutex::get()); + uno::Reference<container::XNameAccess> xListAccess; + switch (eHistory) + { + case EHistoryType::PickList: + xCfg->getByName("PickList") >>= xListAccess; + break; - m_pImpl.reset(); + case EHistoryType::HelpBookmarks: + xCfg->getByName("HelpBookmarks") >>= xListAccess; + break; + } + return xListAccess; } -void SvtHistoryOptions::Clear( EHistoryType eHistory ) +static void TruncateList( + const uno::Reference<container::XNameAccess>& xCfg, + const uno::Reference<container::XNameAccess>& xList, + sal_uInt32 nSize) { - MutexGuard aGuard(theHistoryOptionsMutex::get()); + uno::Reference<container::XNameContainer> xItemList; + uno::Reference<container::XNameContainer> xOrderList; + xList->getByName(s_sOrderList) >>= xOrderList; + xList->getByName(s_sItemList) >>= xItemList; + + const sal_uInt32 nLength = xOrderList->getElementNames().getLength(); + if (nSize < nLength) + { + for (sal_uInt32 i=nLength-1; i>=nSize; --i) + { + uno::Reference<beans::XPropertySet> xSet; + OUString sTmp; + const OUString sRemove = OUString::number(i); + xOrderList->getByName(sRemove) >>= xSet; + xSet->getPropertyValue(s_sHistoryItemRef) >>= sTmp; + xItemList->removeByName(sTmp); + xOrderList->removeByName(sRemove); + } - m_pImpl->Clear( eHistory ); + ::comphelper::ConfigurationHelper::flush(xCfg); + } } -Sequence< Sequence< PropertyValue > > SvtHistoryOptions::GetList( EHistoryType eHistory ) const -{ - MutexGuard aGuard(theHistoryOptionsMutex::get()); - return m_pImpl->GetList( eHistory ); -} -void SvtHistoryOptions::AppendItem(EHistoryType eHistory, - const OUString& sURL, const OUString& sFilter, const OUString& sTitle, - const std::optional<OUString>& sThumbnail) +static sal_uInt32 GetCapacity(const uno::Reference<container::XNameAccess>& xCommonXCU, EHistoryType eHistory) { - MutexGuard aGuard(theHistoryOptionsMutex::get()); + uno::Reference<beans::XPropertySet> xListAccess(xCommonXCU, uno::UNO_QUERY_THROW); - m_pImpl->AppendItem(eHistory, sURL, sFilter, sTitle, sThumbnail); -} + sal_uInt32 nSize = 0; -void SvtHistoryOptions::DeleteItem(EHistoryType eHistory, const OUString& sURL) -{ - MutexGuard aGuard(theHistoryOptionsMutex::get()); + switch (eHistory) + { + case EHistoryType::PickList: + xListAccess->getPropertyValue("PickListSize") >>= nSize; + break; + + case EHistoryType::HelpBookmarks: + xListAccess->getPropertyValue("HelpBookmarkSize") >>= nSize; + break; + } - m_pImpl->DeleteItem(eHistory, sURL); + return nSize; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/itemholder1.cxx b/unotools/source/config/itemholder1.cxx index 7183ea2e12f9..a5a78edbd299 100644 --- a/unotools/source/config/itemholder1.cxx +++ b/unotools/source/config/itemholder1.cxx @@ -129,10 +129,6 @@ void ItemHolder1::impl_newItem(TItemInfo& rItem) //rItem.pItem.reset( new GlobalEventConfig() ); break; - case EItem::HistoryOptions : - rItem.pItem.reset( new SvtHistoryOptions() ); - break; - case EItem::LinguConfig : rItem.pItem.reset( new SvtLinguConfig() ); break; |