diff options
author | Muhammet Kara <muhammet.kara@pardus.org.tr> | 2017-07-05 10:36:06 +0300 |
---|---|---|
committer | Muhammet Kara <muhammet.kara@pardus.org.tr> | 2017-07-22 22:27:14 +0200 |
commit | 9f45e431abf0cc24cb1db86a0dd0979848d8eb8d (patch) | |
tree | a7413242624927d22c9fc0a22f239971d02fb798 /cui | |
parent | 5a883e94f372da0cb2340df5af8cf9b8bc54fc74 (diff) |
Add new helper class to cui for SvxConfigPage
And kill the temporary namespace killmelater.
This class will contain helper functions/methods
for use of the tab pages of the Customize Dialog.
Change-Id: I63a05c9495a79009ed5b47f7790a46cff9f58c6a
Reviewed-on: https://gerrit.libreoffice.org/39617
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Muhammet Kara <muhammet.kara@pardus.org.tr>
Reviewed-on: https://gerrit.libreoffice.org/40308
Diffstat (limited to 'cui')
-rw-r--r-- | cui/Library_cui.mk | 1 | ||||
-rw-r--r-- | cui/source/customize/SvxConfigPageHelper.cxx | 476 | ||||
-rw-r--r-- | cui/source/customize/SvxMenuConfigPage.cxx | 11 | ||||
-rw-r--r-- | cui/source/customize/SvxToolbarConfigPage.cxx | 23 | ||||
-rw-r--r-- | cui/source/customize/cfg.cxx | 87 | ||||
-rw-r--r-- | cui/source/inc/SvxConfigPageHelper.hxx | 89 | ||||
-rw-r--r-- | cui/source/inc/cfg.hxx | 502 |
7 files changed, 627 insertions, 562 deletions
diff --git a/cui/Library_cui.mk b/cui/Library_cui.mk index 8f29a4fa3ce0..4efdb440b242 100644 --- a/cui/Library_cui.mk +++ b/cui/Library_cui.mk @@ -88,6 +88,7 @@ $(eval $(call gb_Library_add_exception_objects,cui,\ cui/source/customize/cfgutil \ cui/source/customize/eventdlg \ cui/source/customize/macropg \ + cui/source/customize/SvxConfigPageHelper \ cui/source/customize/SvxMenuConfigPage \ cui/source/customize/SvxToolbarConfigPage \ cui/source/dialogs/about \ diff --git a/cui/source/customize/SvxConfigPageHelper.cxx b/cui/source/customize/SvxConfigPageHelper.cxx new file mode 100644 index 000000000000..0e8c9ec5e6e0 --- /dev/null +++ b/cui/source/customize/SvxConfigPageHelper.cxx @@ -0,0 +1,476 @@ +/* -*- 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 "SvxConfigPageHelper.hxx" + +static sal_Int16 theImageType = + css::ui::ImageType::COLOR_NORMAL | + css::ui::ImageType::SIZE_DEFAULT; + +void SvxConfigPageHelper::RemoveEntry( SvxEntries* pEntries, SvxConfigEntry* pChildEntry ) +{ + SvxEntries::iterator iter = pEntries->begin(); + + while ( iter != pEntries->end() ) + { + if ( pChildEntry == *iter ) + { + pEntries->erase( iter ); + break; + } + ++iter; + } +} + +OUString SvxConfigPageHelper::replaceSaveInName( const OUString& rMessage, const OUString& rSaveInName ) +{ + const OUString placeholder("%SAVE IN SELECTION%" ); + + OUString name = rMessage.replaceFirst(placeholder, rSaveInName); + + return name; +} + +OUString SvxConfigPageHelper::stripHotKey( const OUString& str ) +{ + return str.replaceFirst("~", ""); +} + +OUString SvxConfigPageHelper::replaceSixteen( const OUString& str, sal_Int32 nReplacement ) +{ + return str.replaceAll( OUString::number( 16 ), OUString::number( nReplacement )); +} + +sal_Int16 SvxConfigPageHelper::GetImageType() +{ + return theImageType; +} + +void SvxConfigPageHelper::InitImageType() +{ + theImageType = + css::ui::ImageType::COLOR_NORMAL | + css::ui::ImageType::SIZE_DEFAULT; + + if (SvtMiscOptions().GetSymbolsSize() == SFX_SYMBOLS_SIZE_LARGE) + { + theImageType |= css::ui::ImageType::SIZE_LARGE; + } + else if (SvtMiscOptions().GetSymbolsSize() == SFX_SYMBOLS_SIZE_32) + { + theImageType |= css::ui::ImageType::SIZE_32; + } +} + +css::uno::Reference< css::graphic::XGraphic > SvxConfigPageHelper::GetGraphic( + const css::uno::Reference< css::ui::XImageManager >& xImageManager, + const OUString& rCommandURL ) +{ + css::uno::Reference< css::graphic::XGraphic > result; + + if ( xImageManager.is() ) + { + // TODO handle large graphics + css::uno::Sequence< css::uno::Reference< css::graphic::XGraphic > > aGraphicSeq; + + css::uno::Sequence<OUString> aImageCmdSeq { rCommandURL }; + + try + { + aGraphicSeq = + xImageManager->getImages( GetImageType(), aImageCmdSeq ); + + if ( aGraphicSeq.getLength() > 0 ) + { + result = aGraphicSeq[0]; + } + } + catch ( css::uno::Exception& ) + { + // will return empty XGraphic + } + } + + return result; +} + +OUString +SvxConfigPageHelper::generateCustomName( + const OUString& prefix, + SvxEntries* entries, + sal_Int32 suffix /*= 1*/ ) +{ + OUString name; + sal_Int32 pos = 0; + + // find and replace the %n placeholder in the prefix string + name = prefix.replaceFirst( "%n", OUString::number( suffix ), &pos ); + + if ( pos == -1 ) + { + // no placeholder found so just append the suffix + name += OUString::number( suffix ); + } + + if (!entries) + return name; + + // now check if there is an already existing entry with this name + SvxEntries::const_iterator iter = entries->begin(); + + while ( iter != entries->end() ) + { + SvxConfigEntry* pEntry = *iter; + + if ( name.equals( pEntry->GetName() ) ) + { + break; + } + ++iter; + } + + if ( iter != entries->end() ) + { + // name already exists so try the next number up + return generateCustomName( prefix, entries, ++suffix ); + } + + return name; +} + +OUString SvxConfigPageHelper::generateCustomMenuURL( + SvxEntries* entries, + sal_Int32 suffix /*= 1*/ ) +{ + OUString url = "vnd.openoffice.org:CustomMenu" + OUString::number( suffix ); + if (!entries) + return url; + + // now check is there is an already existing entry with this url + SvxEntries::const_iterator iter = entries->begin(); + + while ( iter != entries->end() ) + { + SvxConfigEntry* pEntry = *iter; + + if ( url.equals( pEntry->GetCommand() ) ) + { + break; + } + ++iter; + } + + if ( iter != entries->end() ) + { + // url already exists so try the next number up + return generateCustomMenuURL( entries, ++suffix ); + } + + return url; +} + +sal_uInt32 SvxConfigPageHelper::generateRandomValue() +{ + return comphelper::rng::uniform_uint_distribution(0, std::numeric_limits<unsigned int>::max()); +} + +OUString SvxConfigPageHelper::generateCustomURL( SvxEntries* entries ) +{ + OUString url = ITEM_TOOLBAR_URL; + url += CUSTOM_TOOLBAR_STR; + + // use a random number to minimize possible clash with existing custom toolbars + url += OUString::number( generateRandomValue(), 16 ); + + // now check is there is an already existing entry with this url + SvxEntries::const_iterator iter = entries->begin(); + + while ( iter != entries->end() ) + { + SvxConfigEntry* pEntry = *iter; + + if ( url.equals( pEntry->GetCommand() ) ) + { + break; + } + ++iter; + } + + if ( iter != entries->end() ) + { + // url already exists so try the next number up + return generateCustomURL( entries ); + } + + return url; +} + +OUString SvxConfigPageHelper::GetModuleName( const OUString& aModuleId ) +{ + if ( aModuleId == "com.sun.star.text.TextDocument" || + aModuleId == "com.sun.star.text.GlobalDocument" ) + return OUString("Writer"); + else if ( aModuleId == "com.sun.star.text.WebDocument" ) + return OUString("Writer/Web"); + else if ( aModuleId == "com.sun.star.drawing.DrawingDocument" ) + return OUString("Draw"); + else if ( aModuleId == "com.sun.star.presentation.PresentationDocument" ) + return OUString("Impress"); + else if ( aModuleId == "com.sun.star.sheet.SpreadsheetDocument" ) + return OUString("Calc"); + else if ( aModuleId == "com.sun.star.script.BasicIDE" ) + return OUString("Basic"); + else if ( aModuleId == "com.sun.star.formula.FormulaProperties" ) + return OUString("Math"); + else if ( aModuleId == "com.sun.star.sdb.RelationDesign" ) + return OUString("Relation Design"); + else if ( aModuleId == "com.sun.star.sdb.QueryDesign" ) + return OUString("Query Design"); + else if ( aModuleId == "com.sun.star.sdb.TableDesign" ) + return OUString("Table Design"); + else if ( aModuleId == "com.sun.star.sdb.DataSourceBrowser" ) + return OUString("Data Source Browser" ); + else if ( aModuleId == "com.sun.star.sdb.DatabaseDocument" ) + return OUString("Database" ); + + return OUString(); +} + +OUString SvxConfigPageHelper::GetUIModuleName( + const OUString& aModuleId, + const css::uno::Reference< css::frame::XModuleManager2 >& rModuleManager ) +{ + assert(rModuleManager.is()); + + OUString aModuleUIName; + + try + { + css::uno::Any a = rModuleManager->getByName( aModuleId ); + css::uno::Sequence< css::beans::PropertyValue > aSeq; + + if ( a >>= aSeq ) + { + for ( sal_Int32 i = 0; i < aSeq.getLength(); ++i ) + { + if ( aSeq[i].Name == "ooSetupFactoryUIName" ) + { + aSeq[i].Value >>= aModuleUIName; + break; + } + } + } + } + catch ( css::uno::RuntimeException& ) + { + throw; + } + catch ( css::uno::Exception& ) + { + } + + if ( aModuleUIName.isEmpty() ) + aModuleUIName = GetModuleName( aModuleId ); + + return aModuleUIName; +} + +bool SvxConfigPageHelper::GetMenuItemData( + const css::uno::Reference< css::container::XIndexAccess >& rItemContainer, + sal_Int32 nIndex, + OUString& rCommandURL, + OUString& rLabel, + sal_uInt16& rType, + css::uno::Reference< css::container::XIndexAccess >& rSubMenu ) +{ + try + { + css::uno::Sequence< css::beans::PropertyValue > aProp; + if ( rItemContainer->getByIndex( nIndex ) >>= aProp ) + { + for ( sal_Int32 i = 0; i < aProp.getLength(); ++i ) + { + if ( aProp[i].Name == ITEM_DESCRIPTOR_COMMANDURL ) + { + aProp[i].Value >>= rCommandURL; + } + else if ( aProp[i].Name == ITEM_DESCRIPTOR_CONTAINER ) + { + aProp[i].Value >>= rSubMenu; + } + else if ( aProp[i].Name == ITEM_DESCRIPTOR_LABEL ) + { + aProp[i].Value >>= rLabel; + } + else if ( aProp[i].Name == ITEM_DESCRIPTOR_TYPE ) + { + aProp[i].Value >>= rType; + } + } + + return true; + } + } + catch ( css::lang::IndexOutOfBoundsException& ) + { + } + + return false; +} + +bool SvxConfigPageHelper::GetToolbarItemData( + const css::uno::Reference< css::container::XIndexAccess >& rItemContainer, + sal_Int32 nIndex, + OUString& rCommandURL, + OUString& rLabel, + sal_uInt16& rType, + bool& rIsVisible, + sal_Int32& rStyle ) +{ + try + { + css::uno::Sequence< css::beans::PropertyValue > aProp; + if ( rItemContainer->getByIndex( nIndex ) >>= aProp ) + { + for ( sal_Int32 i = 0; i < aProp.getLength(); ++i ) + { + if ( aProp[i].Name == ITEM_DESCRIPTOR_COMMANDURL ) + { + aProp[i].Value >>= rCommandURL; + } + else if ( aProp[i].Name == ITEM_DESCRIPTOR_STYLE ) + { + aProp[i].Value >>= rStyle; + } + else if ( aProp[i].Name == ITEM_DESCRIPTOR_LABEL ) + { + aProp[i].Value >>= rLabel; + } + else if ( aProp[i].Name == ITEM_DESCRIPTOR_TYPE ) + { + aProp[i].Value >>= rType; + } + else if ( aProp[i].Name == ITEM_DESCRIPTOR_ISVISIBLE ) + { + aProp[i].Value >>= rIsVisible; + } + } + + return true; + } + } + catch ( css::lang::IndexOutOfBoundsException& ) + { + } + + return false; +} + +css::uno::Sequence< css::beans::PropertyValue > SvxConfigPageHelper::ConvertSvxConfigEntry( + const SvxConfigEntry* pEntry ) +{ + css::uno::Sequence< css::beans::PropertyValue > aPropSeq( 3 ); + + aPropSeq[0].Name = ITEM_DESCRIPTOR_COMMANDURL; + aPropSeq[0].Value <<= pEntry->GetCommand(); + + aPropSeq[1].Name = ITEM_DESCRIPTOR_TYPE; + aPropSeq[1].Value <<= css::ui::ItemType::DEFAULT; + + // If the name has not been changed, then the label can be stored + // as an empty string. + // It will be initialised again later using the command to label map. + aPropSeq[2].Name = ITEM_DESCRIPTOR_LABEL; + if ( !pEntry->HasChangedName() && !pEntry->GetCommand().isEmpty() ) + { + aPropSeq[2].Value <<= OUString(); + } + else + { + aPropSeq[2].Value <<= pEntry->GetName(); + } + + return aPropSeq; +} + +css::uno::Sequence< css::beans::PropertyValue > SvxConfigPageHelper::ConvertToolbarEntry( + const SvxConfigEntry* pEntry ) +{ + css::uno::Sequence< css::beans::PropertyValue > aPropSeq( 4 ); + + aPropSeq[0].Name = ITEM_DESCRIPTOR_COMMANDURL; + aPropSeq[0].Value <<= pEntry->GetCommand(); + + aPropSeq[1].Name = ITEM_DESCRIPTOR_TYPE; + aPropSeq[1].Value <<= css::ui::ItemType::DEFAULT; + + // If the name has not been changed, then the label can be stored + // as an empty string. + // It will be initialised again later using the command to label map. + aPropSeq[2].Name = ITEM_DESCRIPTOR_LABEL; + if ( !pEntry->HasChangedName() && !pEntry->GetCommand().isEmpty() ) + { + aPropSeq[2].Value <<= OUString(); + } + else + { + aPropSeq[2].Value <<= pEntry->GetName(); + } + + aPropSeq[3].Name = ITEM_DESCRIPTOR_ISVISIBLE; + aPropSeq[3].Value <<= pEntry->IsVisible(); + + return aPropSeq; +} + +bool SvxConfigPageHelper::showKeyConfigTabPage( + const css::uno::Reference< css::frame::XFrame >& xFrame ) +{ + if (!xFrame.is()) + { + return false; + } + OUString sModuleId( + css::frame::ModuleManager::create( + comphelper::getProcessComponentContext()) + ->identify(xFrame)); + return !sModuleId.isEmpty() + && sModuleId != "com.sun.star.frame.StartModule"; +} + +bool SvxConfigPageHelper::EntrySort( SvxConfigEntry* a, SvxConfigEntry* b ) +{ + return a->GetName().compareTo( b->GetName() ) < 0; +} + +bool SvxConfigPageHelper::SvxConfigEntryModified( SvxConfigEntry* pEntry ) +{ + SvxEntries* pEntries = pEntry->GetEntries(); + if ( !pEntries ) + return false; + + for ( const auto& entry : *pEntries ) + { + if ( entry->IsModified() || SvxConfigEntryModified( entry ) ) + return true; + } + return false; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/customize/SvxMenuConfigPage.cxx b/cui/source/customize/SvxMenuConfigPage.cxx index 26a16baee01c..ec4b2866fe86 100644 --- a/cui/source/customize/SvxMenuConfigPage.cxx +++ b/cui/source/customize/SvxMenuConfigPage.cxx @@ -59,6 +59,7 @@ #include "acccfg.hxx" #include "cfg.hxx" #include "SvxMenuConfigPage.hxx" +#include "SvxConfigPageHelper.hxx" #include "eventdlg.hxx" #include <dialmgr.hxx> @@ -252,7 +253,7 @@ void SvxMenuConfigPage::DeleteSelectedTopLevel() SvxEntries* pParentEntries = FindParentForChild( GetSaveInData()->GetEntries(), pMenuData ); - killmelater::RemoveEntry( pParentEntries, pMenuData ); + SvxConfigPageHelper::RemoveEntry( pParentEntries, pMenuData ); delete pMenuData; ReloadTopLevelListBox(); @@ -274,7 +275,7 @@ void SvxMenuConfigPage::DeleteSelectedContent() SvxConfigEntry* pMenu = GetTopLevelSelection(); // remove menu entry from the list for this menu - killmelater::RemoveEntry( pMenu->GetEntries(), pMenuEntry ); + SvxConfigPageHelper::RemoveEntry( pMenu->GetEntries(), pMenuEntry ); // remove menu entry from UI m_pContentsListBox->GetModel()->Remove( pActEntry ); @@ -300,7 +301,7 @@ short SvxMenuConfigPage::QueryReset() OUString saveInName = m_pSaveInListBox->GetEntry( m_pSaveInListBox->GetSelectEntryPos() ); - OUString label = killmelater::replaceSaveInName( msg, saveInName ); + OUString label = SvxConfigPageHelper::replaceSaveInName( msg, saveInName ); ScopedVclPtrInstance<QueryBox> qbox( this, WB_YES_NO, label ); @@ -350,7 +351,7 @@ IMPL_LINK( SvxMenuConfigPage, MenuSelectHdl, MenuButton *, pButton, void ) { SvxConfigEntry* pMenuData = GetTopLevelSelection(); - OUString aNewName( killmelater::stripHotKey( pMenuData->GetName() ) ); + OUString aNewName( SvxConfigPageHelper::stripHotKey( pMenuData->GetName() ) ); OUString aDesc = CuiResId( RID_SVXSTR_LABEL_NEW_NAME ); VclPtrInstance< SvxNameDialog > pNameDialog( this, aNewName, aDesc ); @@ -394,7 +395,7 @@ IMPL_LINK( SvxMenuConfigPage, EntrySelectHdl, MenuButton *, pButton, void ) SvxConfigEntry* pEntry = static_cast<SvxConfigEntry*>(pActEntry->GetUserData()); - OUString aNewName( killmelater::stripHotKey( pEntry->GetName() ) ); + OUString aNewName( SvxConfigPageHelper::stripHotKey( pEntry->GetName() ) ); OUString aDesc = CuiResId( RID_SVXSTR_LABEL_NEW_NAME ); VclPtrInstance< SvxNameDialog > pNameDialog( this, aNewName, aDesc ); diff --git a/cui/source/customize/SvxToolbarConfigPage.cxx b/cui/source/customize/SvxToolbarConfigPage.cxx index 272409d2825e..5df50650cd57 100644 --- a/cui/source/customize/SvxToolbarConfigPage.cxx +++ b/cui/source/customize/SvxToolbarConfigPage.cxx @@ -59,6 +59,7 @@ #include "acccfg.hxx" #include "cfg.hxx" #include "SvxToolbarConfigPage.hxx" +#include "SvxConfigPageHelper.hxx" #include "eventdlg.hxx" #include <dialmgr.hxx> @@ -281,7 +282,7 @@ void SvxToolbarConfigPage::DeleteSelectedContent() SvxConfigEntry* pToolbar = GetTopLevelSelection(); // remove entry from the list for this toolbar - killmelater::RemoveEntry( pToolbar->GetEntries(), pEntry ); + SvxConfigPageHelper::RemoveEntry( pToolbar->GetEntries(), pEntry ); // remove toolbar entry from UI m_pContentsListBox->GetModel()->Remove( pActEntry ); @@ -347,7 +348,7 @@ IMPL_LINK( SvxToolbarConfigPage, ToolbarSelectHdl, MenuButton *, pButton, void ) } else if (sCommand == "modtoolrename") { - OUString aNewName( killmelater::stripHotKey( pToolbar->GetName() ) ); + OUString aNewName( SvxConfigPageHelper::stripHotKey( pToolbar->GetName() ) ); OUString aDesc = CuiResId( RID_SVXSTR_LABEL_NEW_NAME ); VclPtrInstance< SvxNameDialog > pNameDialog( this, aNewName, aDesc ); @@ -386,7 +387,7 @@ IMPL_LINK( SvxToolbarConfigPage, EntrySelectHdl, MenuButton *, pButton, void ) SvxConfigEntry* pEntry = static_cast<SvxConfigEntry*>(pActEntry->GetUserData()); - OUString aNewName( killmelater::stripHotKey( pEntry->GetName() ) ); + OUString aNewName( SvxConfigPageHelper::stripHotKey( pEntry->GetName() ) ); OUString aDesc = CuiResId( RID_SVXSTR_LABEL_NEW_NAME ); VclPtrInstance< SvxNameDialog > pNameDialog( this, aNewName, aDesc ); @@ -433,7 +434,7 @@ IMPL_LINK( SvxToolbarConfigPage, EntrySelectHdl, MenuButton *, pButton, void ) { pEntry->SetName( aSystemName ); m_pContentsListBox->SetEntryText( - pActEntry, killmelater::stripHotKey( aSystemName ) ); + pActEntry, SvxConfigPageHelper::stripHotKey( aSystemName ) ); bNeedsApply = true; } @@ -442,7 +443,7 @@ IMPL_LINK( SvxToolbarConfigPage, EntrySelectHdl, MenuButton *, pButton, void ) try { GetSaveInData()->GetImageManager()->removeImages( - killmelater::GetImageType(), aURLSeq ); + SvxConfigPageHelper::GetImageType(), aURLSeq ); // reset backup in entry pEntry->SetBackupGraphic( @@ -508,7 +509,7 @@ IMPL_LINK( SvxToolbarConfigPage, EntrySelectHdl, MenuButton *, pButton, void ) if ( !pEntry->GetBackupGraphic().is() ) { css::uno::Reference< css::graphic::XGraphic > backup; - backup = killmelater::GetGraphic( + backup = SvxConfigPageHelper::GetGraphic( GetSaveInData()->GetImageManager(), aURLSeq[ 0 ] ); if ( backup.is() ) @@ -521,7 +522,7 @@ IMPL_LINK( SvxToolbarConfigPage, EntrySelectHdl, MenuButton *, pButton, void ) try { GetSaveInData()->GetImageManager()->replaceImages( - killmelater::GetImageType(), aURLSeq, aGraphicSeq ); + SvxConfigPageHelper::GetImageType(), aURLSeq, aGraphicSeq ); m_pContentsListBox->GetModel()->Remove( pActEntry ); SvTreeListEntry* pNewLBEntry = @@ -574,7 +575,7 @@ IMPL_LINK( SvxToolbarConfigPage, EntrySelectHdl, MenuButton *, pButton, void ) try { GetSaveInData()->GetImageManager()->replaceImages( - killmelater::GetImageType(), aURLSeq, aGraphicSeq ); + SvxConfigPageHelper::GetImageType(), aURLSeq, aGraphicSeq ); m_pContentsListBox->GetModel()->Remove( pActEntry ); @@ -704,7 +705,7 @@ short SvxToolbarConfigPage::QueryReset() OUString saveInName = m_pSaveInListBox->GetEntry( m_pSaveInListBox->GetSelectEntryPos() ); - OUString label = killmelater::replaceSaveInName( msg, saveInName ); + OUString label = SvxConfigPageHelper::replaceSaveInName( msg, saveInName ); ScopedVclPtrInstance< QueryBox > qbox( this, WB_YES_NO, label ); @@ -828,10 +829,10 @@ IMPL_LINK_NOARG( SvxToolbarConfigPage, NewToolbarHdl, Button *, void ) OUString prefix = CuiResId( RID_SVXSTR_NEW_TOOLBAR ); OUString aNewName = - killmelater::generateCustomName( prefix, GetSaveInData()->GetEntries() ); + SvxConfigPageHelper::generateCustomName( prefix, GetSaveInData()->GetEntries() ); OUString aNewURL = - killmelater::generateCustomURL( GetSaveInData()->GetEntries() ); + SvxConfigPageHelper::generateCustomURL( GetSaveInData()->GetEntries() ); VclPtrInstance< SvxNewToolbarDialog > pNameDialog( nullptr, aNewName ); diff --git a/cui/source/customize/cfg.cxx b/cui/source/customize/cfg.cxx index 89d6db93a34e..675e6370907a 100644 --- a/cui/source/customize/cfg.cxx +++ b/cui/source/customize/cfg.cxx @@ -59,6 +59,7 @@ #include "cfg.hxx" #include "SvxMenuConfigPage.hxx" #include "SvxToolbarConfigPage.hxx" +#include "SvxConfigPageHelper.hxx" #include "eventdlg.hxx" #include <dialmgr.hxx> @@ -217,7 +218,7 @@ SvxConfigDialog::SvxConfigDialog(vcl::Window * pParent, const SfxItemSet* pInSet , m_nToolbarsPageId(0) , m_nEventsPageId(0) { - killmelater::InitImageType(); + SvxConfigPageHelper::InitImageType(); m_nMenusPageId = AddTabPage("menus", CreateSvxMenuConfigPage, nullptr); m_nContextMenusPageId = AddTabPage("contextmenus", CreateSvxContextMenuConfigPage, nullptr); @@ -243,7 +244,7 @@ void SvxConfigDialog::SetFrame(const css::uno::Reference< css::frame::XFrame >& { m_xFrame = xFrame; - if (!killmelater::showKeyConfigTabPage( xFrame )) + if (!SvxConfigPageHelper::showKeyConfigTabPage( xFrame )) RemoveTabPage(m_nKeyboardPageId); } @@ -330,7 +331,7 @@ Image SaveInData::GetImage( const OUString& rCommandURL ) Image aImage; uno::Reference< graphic::XGraphic > xGraphic = - killmelater::GetGraphic( m_xImgMgr, rCommandURL ); + SvxConfigPageHelper::GetGraphic( m_xImgMgr, rCommandURL ); if ( xGraphic.is() ) { @@ -338,7 +339,7 @@ Image SaveInData::GetImage( const OUString& rCommandURL ) } else if ( xDefaultImgMgr != nullptr && (*xDefaultImgMgr).is() ) { - xGraphic = killmelater::GetGraphic( (*xDefaultImgMgr), rCommandURL ); + xGraphic = SvxConfigPageHelper::GetGraphic( (*xDefaultImgMgr), rCommandURL ); if ( xGraphic.is() ) { @@ -470,7 +471,7 @@ bool SaveInData::LoadSubMenus( const uno::Reference< container::XIndexAccess >& sal_uInt16 nType( css::ui::ItemType::DEFAULT ); - bool bItem = killmelater::GetMenuItemData( xMenuSettings, nIndex, + bool bItem = SvxConfigPageHelper::GetMenuItemData( xMenuSettings, nIndex, aCommandURL, aLabel, nType, xSubMenu ); if ( bItem ) @@ -548,7 +549,7 @@ bool SaveInData::LoadSubMenus( const uno::Reference< container::XIndexAccess >& pEntry->SetMain(); } - subMenuTitle += killmelater::stripHotKey( aLabel ); + subMenuTitle += SvxConfigPageHelper::stripHotKey( aLabel ); LoadSubMenus( xSubMenu, subMenuTitle, pEntry, bContextMenu ); } @@ -629,7 +630,7 @@ void MenuSaveInData::Apply( SvxConfigEntry* pEntryData = *iter; uno::Sequence< beans::PropertyValue > aPropValueSeq = - killmelater::ConvertSvxConfigEntry( pEntryData ); + SvxConfigPageHelper::ConvertSvxConfigEntry( pEntryData ); uno::Reference< container::XIndexContainer > xSubMenuBar( rFactory->createInstanceWithContext( xContext ), @@ -662,7 +663,7 @@ void SaveInData::ApplyMenu( if ( pEntry->IsPopup() ) { uno::Sequence< beans::PropertyValue > aPropValueSeq = - killmelater::ConvertSvxConfigEntry( pEntry ); + SvxConfigPageHelper::ConvertSvxConfigEntry( pEntry ); uno::Reference< container::XIndexContainer > xSubMenuBar( rFactory->createInstanceWithContext( xContext ), @@ -687,7 +688,7 @@ void SaveInData::ApplyMenu( else { uno::Sequence< beans::PropertyValue > aPropValueSeq = - killmelater::ConvertSvxConfigEntry( pEntry ); + SvxConfigPageHelper::ConvertSvxConfigEntry( pEntry ); rMenuBar->insertByIndex( rMenuBar->getCount(), uno::Any( aPropValueSeq )); } @@ -857,7 +858,7 @@ SvxEntries* ContextMenuSaveInData::GetEntries() LoadSubMenus( xPopupMenu, aUIMenuName, pEntry, true ); } } - std::sort( m_pRootEntry->GetEntries()->begin(), m_pRootEntry->GetEntries()->end(), killmelater::EntrySort ); + std::sort( m_pRootEntry->GetEntries()->begin(), m_pRootEntry->GetEntries()->end(), SvxConfigPageHelper::EntrySort ); } return m_pRootEntry->GetEntries(); } @@ -891,7 +892,7 @@ bool ContextMenuSaveInData::Apply() SvxEntries* pEntries = GetEntries(); for ( const auto& pEntry : *pEntries ) { - if ( pEntry->IsModified() || killmelater::SvxConfigEntryModified( pEntry ) ) + if ( pEntry->IsModified() || SvxConfigPageHelper::SvxConfigEntryModified( pEntry ) ) { css::uno::Reference< css::container::XIndexContainer > xIndexContainer( GetConfigManager()->createSettings(), css::uno::UNO_QUERY ); css::uno::Reference< css::lang::XSingleComponentFactory > xFactory( xIndexContainer, css::uno::UNO_QUERY ); @@ -1235,7 +1236,7 @@ void SvxConfigPage::Reset( const SfxItemSet* ) // replace %MODULENAME in the label with the correct module name uno::Reference< css::frame::XModuleManager2 > xModuleManager( css::frame::ModuleManager::create( xContext )); - OUString aModuleName = killmelater::GetUIModuleName( aModuleId, xModuleManager ); + OUString aModuleName = SvxConfigPageHelper::GetUIModuleName( aModuleId, xModuleManager ); OUString title = m_pTopLevel->get_label(); OUString aSearchString("%MODULENAME" ); @@ -1524,13 +1525,13 @@ void SvxConfigPage::ReloadTopLevelListBox( SvxConfigEntry* pToSelect ) for ( ; iter != end; ++iter ) { SvxConfigEntry* pEntryData = *iter; - const sal_Int32 nPos = m_pTopLevelListBox->InsertEntry( killmelater::stripHotKey( pEntryData->GetName() ) ); + const sal_Int32 nPos = m_pTopLevelListBox->InsertEntry( SvxConfigPageHelper::stripHotKey( pEntryData->GetName() ) ); m_pTopLevelListBox->SetEntryData( nPos, pEntryData ); if ( pEntryData == pToSelect ) nSelectionPos = nPos; - AddSubMenusToUI( killmelater::stripHotKey( pEntryData->GetName() ), pEntryData ); + AddSubMenusToUI( SvxConfigPageHelper::stripHotKey( pEntryData->GetName() ), pEntryData ); } } #ifdef DBG_UTIL @@ -1561,7 +1562,7 @@ void SvxConfigPage::AddSubMenusToUI( if ( pEntryData->IsPopup() ) { - OUString subMenuTitle = rBaseTitle + aMenuSeparatorStr + killmelater::stripHotKey( pEntryData->GetName() ); + OUString subMenuTitle = rBaseTitle + aMenuSeparatorStr + SvxConfigPageHelper::stripHotKey( pEntryData->GetName() ); const sal_Int32 nPos = m_pTopLevelListBox->InsertEntry( subMenuTitle ); m_pTopLevelListBox->SetEntryData( nPos, pEntryData ); @@ -1724,7 +1725,7 @@ SvTreeListEntry* SvxConfigPage::InsertEntryIntoUI( } else { - OUString aName = killmelater::stripHotKey( pNewEntryData->GetName() ); + OUString aName = SvxConfigPageHelper::stripHotKey( pNewEntryData->GetName() ); Image aImage = GetSaveInData()->GetImage( pNewEntryData->GetCommand()); @@ -1819,7 +1820,7 @@ bool SvxConfigPage::MoveEntryData( if ( pSourceData != nullptr && pTargetData != nullptr ) { // remove the source entry from our list - killmelater::RemoveEntry( pEntries, pSourceData ); + SvxConfigPageHelper::RemoveEntry( pEntries, pSourceData ); SvxEntries::iterator iter = pEntries->begin(); SvxEntries::const_iterator end = pEntries->end(); @@ -1839,8 +1840,6 @@ bool SvxConfigPage::MoveEntryData( return false; } -// SvxMenuConfigPage was here - SvxMainMenuOrganizerDialog::SvxMainMenuOrganizerDialog( vcl::Window* pParent, SvxEntries* entries, SvxConfigEntry* selection, bool bCreateMenu ) @@ -1865,7 +1864,7 @@ SvxMainMenuOrganizerDialog::SvxMainMenuOrganizerDialog( { SvxConfigEntry* pEntry = *iter; SvTreeListEntry* pLBEntry = - m_pMenuListBox->InsertEntry( killmelater::stripHotKey( pEntry->GetName() ) ); + m_pMenuListBox->InsertEntry( SvxConfigPageHelper::stripHotKey( pEntry->GetName() ) ); pLBEntry->SetUserData( pEntry ); mpEntries->push_back( pEntry ); @@ -1882,8 +1881,8 @@ SvxMainMenuOrganizerDialog::SvxMainMenuOrganizerDialog( // Generate custom name for new menu OUString prefix = CuiResId( RID_SVXSTR_NEW_MENU ); - OUString newname = killmelater::generateCustomName( prefix, entries ); - OUString newurl = killmelater::generateCustomMenuURL( mpEntries ); + OUString newname = SvxConfigPageHelper::generateCustomName( prefix, entries ); + OUString newurl = SvxConfigPageHelper::generateCustomMenuURL( mpEntries ); SvxConfigEntry* pNewEntryData = new SvxConfigEntry( newname, newurl, true ); @@ -1892,7 +1891,7 @@ SvxMainMenuOrganizerDialog::SvxMainMenuOrganizerDialog( pNewEntryData->SetMain(); pNewMenuEntry = - m_pMenuListBox->InsertEntry( killmelater::stripHotKey( pNewEntryData->GetName() ) ); + m_pMenuListBox->InsertEntry( SvxConfigPageHelper::stripHotKey( pNewEntryData->GetName() ) ); m_pMenuListBox->Select( pNewMenuEntry ); pNewMenuEntry->SetUserData( pNewEntryData ); @@ -2471,7 +2470,7 @@ SvxEntries* ToolbarSaveInData::GetEntries() } } - std::sort( GetEntries()->begin(), GetEntries()->end(), killmelater::EntrySort ); + std::sort( GetEntries()->begin(), GetEntries()->end(), SvxConfigPageHelper::EntrySort ); } return pRootEntry->GetEntries(); @@ -2577,7 +2576,7 @@ void ToolbarSaveInData::ApplyToolbar( if ( pEntry->IsPopup() ) { uno::Sequence< beans::PropertyValue > aPropValueSeq = - killmelater::ConvertToolbarEntry( pEntry ); + SvxConfigPageHelper::ConvertToolbarEntry( pEntry ); uno::Reference< container::XIndexContainer > xSubMenuBar( rFactory->createInstanceWithContext( xContext ), @@ -2600,7 +2599,7 @@ void ToolbarSaveInData::ApplyToolbar( else { uno::Sequence< beans::PropertyValue > aPropValueSeq = - killmelater::ConvertToolbarEntry( pEntry ); + SvxConfigPageHelper::ConvertToolbarEntry( pEntry ); rToolbarBar->insertByIndex( rToolbarBar->getCount(), uno::Any( aPropValueSeq )); @@ -2708,7 +2707,7 @@ void ToolbarSaveInData::RemoveToolbar( SvxConfigEntry* pToolbar ) { OUString url = pToolbar->GetCommand(); GetConfigManager()->removeSettings( url ); - killmelater::RemoveEntry( GetEntries(), pToolbar ); + SvxConfigPageHelper::RemoveEntry( GetEntries(), pToolbar ); delete pToolbar; PersistChanges( GetConfigManager() ); @@ -2774,7 +2773,7 @@ void ToolbarSaveInData::RestoreToolbar( SvxConfigEntry* pToolbar ) try { - GetImageManager()->removeImages( killmelater::GetImageType(), aURLSeq ); + GetImageManager()->removeImages( SvxConfigPageHelper::GetImageType(), aURLSeq ); } catch ( uno::Exception& ) { @@ -2805,7 +2804,7 @@ void ToolbarSaveInData::LoadToolbar( sal_uInt16 nType( css::ui::ItemType::DEFAULT ); - bool bItem = killmelater::GetToolbarItemData( xToolbarSettings, nIndex, aCommandURL, + bool bItem = SvxConfigPageHelper::GetToolbarItemData( xToolbarSettings, nIndex, aCommandURL, aLabel, nType, bIsVisible, nStyle ); if ( bItem ) @@ -2921,14 +2920,14 @@ SvxIconSelectorDialog::SvxIconSelectorDialog( vcl::Window *pWindow, pTbSymbol->SetPageScroll( true ); m_nExpectedSize = 16; - if (killmelater::GetImageType() & css::ui::ImageType::SIZE_LARGE) + if (SvxConfigPageHelper::GetImageType() & css::ui::ImageType::SIZE_LARGE) m_nExpectedSize = 26; - else if (killmelater::GetImageType() & css::ui::ImageType::SIZE_32) + else if (SvxConfigPageHelper::GetImageType() & css::ui::ImageType::SIZE_32) m_nExpectedSize = 32; if ( m_nExpectedSize != 16 ) { - pFtNote->SetText( killmelater::replaceSixteen( pFtNote->GetText(), m_nExpectedSize ) ); + pFtNote->SetText( SvxConfigPageHelper::replaceSixteen( pFtNote->GetText(), m_nExpectedSize ) ); } uno::Reference< uno::XComponentContext > xComponentContext = @@ -2987,7 +2986,7 @@ SvxIconSelectorDialog::SvxIconSelectorDialog( vcl::Window *pWindow, uno::Sequence< OUString > names; if ( m_xImportedImageManager.is() ) { - names = m_xImportedImageManager->getAllImageNames( killmelater::GetImageType() ); + names = m_xImportedImageManager->getAllImageNames( SvxConfigPageHelper::GetImageType() ); for ( sal_Int32 n = 0; n < names.getLength(); ++n ) aImageInfo1.insert( ImageInfo::value_type( names[n], false )); } @@ -2997,7 +2996,7 @@ SvxIconSelectorDialog::SvxIconSelectorDialog( vcl::Window *pWindow, while ( pConstIter != aImageInfo1.end() ) { name[ 0 ] = pConstIter->first; - uno::Sequence< uno::Reference< graphic::XGraphic> > graphics = m_xImportedImageManager->getImages( killmelater::GetImageType(), name ); + uno::Sequence< uno::Reference< graphic::XGraphic> > graphics = m_xImportedImageManager->getImages( SvxConfigPageHelper::GetImageType(), name ); if ( graphics.getLength() > 0 ) { Image img = Image( graphics[ 0 ] ); @@ -3017,12 +3016,12 @@ SvxIconSelectorDialog::SvxIconSelectorDialog( vcl::Window *pWindow, if ( m_xParentImageManager.is() ) { - names = m_xParentImageManager->getAllImageNames( killmelater::GetImageType() ); + names = m_xParentImageManager->getAllImageNames( SvxConfigPageHelper::GetImageType() ); for ( sal_Int32 n = 0; n < names.getLength(); ++n ) aImageInfo.insert( ImageInfo::value_type( names[n], false )); } - names = m_xImageManager->getAllImageNames( killmelater::GetImageType() ); + names = m_xImageManager->getAllImageNames( SvxConfigPageHelper::GetImageType() ); for ( sal_Int32 n = 0; n < names.getLength(); ++n ) { ImageInfo::iterator pIter = aImageInfo.find( names[n] ); @@ -3042,9 +3041,9 @@ SvxIconSelectorDialog::SvxIconSelectorDialog( vcl::Window *pWindow, try { if ( pConstIter->second ) - graphics = m_xImageManager->getImages( killmelater::GetImageType(), name ); + graphics = m_xImageManager->getImages( SvxConfigPageHelper::GetImageType(), name ); else - graphics = m_xParentImageManager->getImages( killmelater::GetImageType(), name ); + graphics = m_xParentImageManager->getImages( SvxConfigPageHelper::GetImageType(), name ); } catch ( uno::Exception& ) { @@ -3148,7 +3147,7 @@ IMPL_LINK_NOARG( SvxIconSelectorDialog, SelectHdl, ToolBox *, void ) pTbSymbol->CheckItem( nId ); OUString aSelImageText = pTbSymbol->GetItemText( nId ); - if ( m_xImportedImageManager->hasImage( killmelater::GetImageType(), aSelImageText ) ) + if ( m_xImportedImageManager->hasImage( SvxConfigPageHelper::GetImageType(), aSelImageText ) ) { pBtnDelete->Enable(); } @@ -3200,7 +3199,7 @@ IMPL_LINK_NOARG( SvxIconSelectorDialog, DeleteHdl, Button *, void ) OUString aSelImageText = pTbSymbol->GetItemText( nId ); uno::Sequence< OUString > URLs { aSelImageText }; pTbSymbol->RemoveItem( pTbSymbol->GetItemPos( nId ) ); - m_xImportedImageManager->removeImages( killmelater::GetImageType(), URLs ); + m_xImportedImageManager->removeImages( SvxConfigPageHelper::GetImageType(), URLs ); uno::Reference< css::ui::XUIConfigurationPersistence > xConfigPersistence( m_xImportedImageManager, uno::UNO_QUERY ); if ( xConfigPersistence.is() && xConfigPersistence->isModified() ) @@ -3273,7 +3272,7 @@ bool SvxIconSelectorDialog::ReplaceGraphicItem( URLs[0] = aURL; aImportGraph[ 0 ] = xGraphic; - m_xImportedImageManager->replaceImages( killmelater::GetImageType(), URLs, aImportGraph ); + m_xImportedImageManager->replaceImages( SvxConfigPageHelper::GetImageType(), URLs, aImportGraph ); xConfigPer->store(); bResult = true; @@ -3303,7 +3302,7 @@ void SvxIconSelectorDialog::ImportGraphics( if ( rPaths.getLength() == 1 ) { - if ( m_xImportedImageManager->hasImage( killmelater::GetImageType(), rPaths[0] ) ) + if ( m_xImportedImageManager->hasImage( SvxConfigPageHelper::GetImageType(), rPaths[0] ) ) { aIndex = rPaths[0].lastIndexOf( '/' ); aIconName = rPaths[0].copy( aIndex+1 ); @@ -3331,7 +3330,7 @@ void SvxIconSelectorDialog::ImportGraphics( for ( sal_Int32 i = 1; i < rPaths.getLength(); ++i ) { OUString aPath = aSourcePath + rPaths[i]; - if ( m_xImportedImageManager->hasImage( killmelater::GetImageType(), aPath ) ) + if ( m_xImportedImageManager->hasImage( SvxConfigPageHelper::GetImageType(), aPath ) ) { aIndex = rPaths[i].lastIndexOf( '/' ); aIconName = rPaths[i].copy( aIndex+1 ); @@ -3437,7 +3436,7 @@ bool SvxIconSelectorDialog::ImportGraphic( const OUString& aURL ) uno::Sequence<OUString> aImportURL { aURL }; uno::Sequence< uno::Reference<graphic::XGraphic > > aImportGraph( 1 ); aImportGraph[ 0 ] = xGraphic; - m_xImportedImageManager->insertImages( killmelater::GetImageType(), aImportURL, aImportGraph ); + m_xImportedImageManager->insertImages( SvxConfigPageHelper::GetImageType(), aImportURL, aImportGraph ); uno::Reference< css::ui::XUIConfigurationPersistence > xConfigPersistence( m_xImportedImageManager, uno::UNO_QUERY ); diff --git a/cui/source/inc/SvxConfigPageHelper.hxx b/cui/source/inc/SvxConfigPageHelper.hxx new file mode 100644 index 000000000000..4b83b1c7dfd6 --- /dev/null +++ b/cui/source/inc/SvxConfigPageHelper.hxx @@ -0,0 +1,89 @@ +/* -*- 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_CUI_SOURCE_INC_SVXCONFIGPAGEHELPER_HXX +#define INCLUDED_CUI_SOURCE_INC_SVXCONFIGPAGEHELPER_HXX + +#include <vector> + +#include "cfg.hxx" + +class SvxConfigPageHelper +{ +public: + static void RemoveEntry( SvxEntries* pEntries, SvxConfigEntry* pChildEntry ); + + static OUString replaceSaveInName( const OUString& rMessage, const OUString& rSaveInName ); + static OUString stripHotKey( const OUString& str ); + static OUString replaceSixteen( const OUString& str, sal_Int32 nReplacement ); + + static sal_Int16 GetImageType(); + static void InitImageType(); + static css::uno::Reference< css::graphic::XGraphic > GetGraphic( + const css::uno::Reference< css::ui::XImageManager >& xImageManager, + const OUString& rCommandURL ); + + static OUString generateCustomName( + const OUString& prefix, + SvxEntries* entries, + sal_Int32 suffix = 1 ); + static OUString generateCustomMenuURL( + SvxEntries* entries, + sal_Int32 suffix = 1 ); + static sal_uInt32 generateRandomValue(); + static OUString generateCustomURL( SvxEntries* entries ); + + static OUString GetModuleName( const OUString& aModuleId ); + static OUString GetUIModuleName( + const OUString& aModuleId, + const css::uno::Reference< css::frame::XModuleManager2 >& rModuleManager ); + + static bool GetMenuItemData( + const css::uno::Reference< css::container::XIndexAccess >& rItemContainer, + sal_Int32 nIndex, + OUString& rCommandURL, + OUString& rLabel, + sal_uInt16& rType, + css::uno::Reference< css::container::XIndexAccess >& rSubMenu ); + static bool GetToolbarItemData( + const css::uno::Reference< css::container::XIndexAccess >& rItemContainer, + sal_Int32 nIndex, + OUString& rCommandURL, + OUString& rLabel, + sal_uInt16& rType, + bool& rIsVisible, + sal_Int32& rStyle ); + + static css::uno::Sequence< css::beans::PropertyValue > ConvertSvxConfigEntry( + const SvxConfigEntry* pEntry ); + static css::uno::Sequence< css::beans::PropertyValue > ConvertToolbarEntry( + const SvxConfigEntry* pEntry ); + + static bool showKeyConfigTabPage( + const css::uno::Reference< css::frame::XFrame >& xFrame ); + + static bool EntrySort( SvxConfigEntry* a, SvxConfigEntry* b ); + + static bool SvxConfigEntryModified( SvxConfigEntry* pEntry ); + +}; + +#endif // INCLUDED_CUI_SOURCE_INC_SVXCONFIGPAGEHELPER_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/inc/cfg.hxx b/cui/source/inc/cfg.hxx index 44e738f8a419..6b8950ee5146 100644 --- a/cui/source/inc/cfg.hxx +++ b/cui/source/inc/cfg.hxx @@ -676,508 +676,6 @@ public: virtual void dispose() override; }; -namespace killmelater -{ -//TODO:This is copy/pasted from cfg.cxx -inline void RemoveEntry( SvxEntries* pEntries, SvxConfigEntry* pChildEntry ) -{ - SvxEntries::iterator iter = pEntries->begin(); - - while ( iter != pEntries->end() ) - { - if ( pChildEntry == *iter ) - { - pEntries->erase( iter ); - break; - } - ++iter; - } -} - -//TODO:This is copy/pasted from cfg.cxx -inline OUString replaceSaveInName( - const OUString& rMessage, - const OUString& rSaveInName ) -{ - OUString name; - OUString placeholder("%SAVE IN SELECTION%" ); - - sal_Int32 pos = rMessage.indexOf( placeholder ); - - if ( pos != -1 ) - { - name = rMessage.replaceAt( - pos, placeholder.getLength(), rSaveInName ); - } - - return name; -} - -//TODO:This is copy/pasted from cfg.cxx -inline OUString -stripHotKey( const OUString& str ) -{ - sal_Int32 index = str.indexOf( '~' ); - if ( index == -1 ) - { - return str; - } - else - { - return str.replaceAt( index, 1, OUString() ); - } -} - -inline OUString -replaceSixteen( const OUString& str, sal_Int32 nReplacement ) -{ - OUString result( str ); - OUString sixteen = OUString::number( 16 ); - OUString expected = OUString::number( nReplacement ); - - sal_Int32 len = sixteen.getLength(); - sal_Int32 index = result.indexOf( sixteen ); - - while ( index != -1 ) - { - result = result.replaceAt( index, len, expected ); - index = result.indexOf( sixteen, index ); - } - - return result; -} - -static sal_Int16 theImageType = - css::ui::ImageType::COLOR_NORMAL | - css::ui::ImageType::SIZE_DEFAULT; - -//TODO:This is copy/pasted from cfg.cxx -inline sal_Int16 GetImageType() -{ - return theImageType; -} - -inline void InitImageType() -{ - theImageType = - css::ui::ImageType::COLOR_NORMAL | - css::ui::ImageType::SIZE_DEFAULT; - - if (SvtMiscOptions().GetSymbolsSize() == SFX_SYMBOLS_SIZE_LARGE) - { - theImageType |= css::ui::ImageType::SIZE_LARGE; - } - else if (SvtMiscOptions().GetSymbolsSize() == SFX_SYMBOLS_SIZE_32) - { - theImageType |= css::ui::ImageType::SIZE_32; - } -} - -//TODO:This is copy/pasted from cfg.cxx -inline css::uno::Reference< css::graphic::XGraphic > GetGraphic( - const css::uno::Reference< css::ui::XImageManager >& xImageManager, - const OUString& rCommandURL ) -{ - css::uno::Reference< css::graphic::XGraphic > result; - - if ( xImageManager.is() ) - { - // TODO handle large graphics - css::uno::Sequence< css::uno::Reference< css::graphic::XGraphic > > aGraphicSeq; - - css::uno::Sequence<OUString> aImageCmdSeq { rCommandURL }; - - try - { - aGraphicSeq = - xImageManager->getImages( killmelater::GetImageType(), aImageCmdSeq ); - - if ( aGraphicSeq.getLength() > 0 ) - { - result = aGraphicSeq[0]; - } - } - catch ( css::uno::Exception& ) - { - // will return empty XGraphic - } - } - - return result; -} - -//TODO:This is copy/pasted from cfg.cxx -inline OUString -generateCustomName( - const OUString& prefix, - SvxEntries* entries, - sal_Int32 suffix = 1 ) -{ - // find and replace the %n placeholder in the prefix string - OUString name; - OUString placeholder("%n" ); - - sal_Int32 pos = prefix.indexOf( placeholder ); - - if ( pos != -1 ) - { - name = prefix.replaceAt( - pos, placeholder.getLength(), OUString::number( suffix ) ); - } - else - { - // no placeholder found so just append the suffix - name = prefix + OUString::number( suffix ); - } - - if (!entries) - return name; - - // now check is there is an already existing entry with this name - SvxEntries::const_iterator iter = entries->begin(); - - while ( iter != entries->end() ) - { - SvxConfigEntry* pEntry = *iter; - - if ( name.equals( pEntry->GetName() ) ) - { - break; - } - ++iter; - } - - if ( iter != entries->end() ) - { - // name already exists so try the next number up - return generateCustomName( prefix, entries, ++suffix ); - } - - return name; -} - -inline OUString -generateCustomMenuURL( - SvxEntries* entries, - sal_Int32 suffix = 1 ) -{ - OUString url = "vnd.openoffice.org:CustomMenu" + OUString::number( suffix ); - if (!entries) - return url; - - // now check is there is an already existing entry with this url - SvxEntries::const_iterator iter = entries->begin(); - - while ( iter != entries->end() ) - { - SvxConfigEntry* pEntry = *iter; - - if ( url.equals( pEntry->GetCommand() ) ) - { - break; - } - ++iter; - } - - if ( iter != entries->end() ) - { - // url already exists so try the next number up - return generateCustomMenuURL( entries, ++suffix ); - } - - return url; -} - -inline sal_uInt32 generateRandomValue() -{ - return comphelper::rng::uniform_uint_distribution(0, std::numeric_limits<unsigned int>::max()); -} - -inline OUString -generateCustomURL( - SvxEntries* entries ) -{ - OUString url = ITEM_TOOLBAR_URL; - url += CUSTOM_TOOLBAR_STR; - - // use a random number to minimize possible clash with existing custom toolbars - url += OUString::number( generateRandomValue(), 16 ); - - // now check is there is an already existing entry with this url - SvxEntries::const_iterator iter = entries->begin(); - - while ( iter != entries->end() ) - { - SvxConfigEntry* pEntry = *iter; - - if ( url.equals( pEntry->GetCommand() ) ) - { - break; - } - ++iter; - } - - if ( iter != entries->end() ) - { - // url already exists so try the next number up - return generateCustomURL( entries ); - } - - return url; -} - -inline OUString GetModuleName( const OUString& aModuleId ) -{ - if ( aModuleId == "com.sun.star.text.TextDocument" || - aModuleId == "com.sun.star.text.GlobalDocument" ) - return OUString("Writer"); - else if ( aModuleId == "com.sun.star.text.WebDocument" ) - return OUString("Writer/Web"); - else if ( aModuleId == "com.sun.star.drawing.DrawingDocument" ) - return OUString("Draw"); - else if ( aModuleId == "com.sun.star.presentation.PresentationDocument" ) - return OUString("Impress"); - else if ( aModuleId == "com.sun.star.sheet.SpreadsheetDocument" ) - return OUString("Calc"); - else if ( aModuleId == "com.sun.star.script.BasicIDE" ) - return OUString("Basic"); - else if ( aModuleId == "com.sun.star.formula.FormulaProperties" ) - return OUString("Math"); - else if ( aModuleId == "com.sun.star.sdb.RelationDesign" ) - return OUString("Relation Design"); - else if ( aModuleId == "com.sun.star.sdb.QueryDesign" ) - return OUString("Query Design"); - else if ( aModuleId == "com.sun.star.sdb.TableDesign" ) - return OUString("Table Design"); - else if ( aModuleId == "com.sun.star.sdb.DataSourceBrowser" ) - return OUString("Data Source Browser" ); - else if ( aModuleId == "com.sun.star.sdb.DatabaseDocument" ) - return OUString("Database" ); - - return OUString(); -} - -inline OUString GetUIModuleName( const OUString& aModuleId, const css::uno::Reference< css::frame::XModuleManager2 >& rModuleManager ) -{ - assert(rModuleManager.is()); - - OUString aModuleUIName; - - try - { - css::uno::Any a = rModuleManager->getByName( aModuleId ); - css::uno::Sequence< css::beans::PropertyValue > aSeq; - - if ( a >>= aSeq ) - { - for ( sal_Int32 i = 0; i < aSeq.getLength(); ++i ) - { - if ( aSeq[i].Name == "ooSetupFactoryUIName" ) - { - aSeq[i].Value >>= aModuleUIName; - break; - } - } - } - } - catch ( css::uno::RuntimeException& ) - { - throw; - } - catch ( css::uno::Exception& ) - { - } - - if ( aModuleUIName.isEmpty() ) - aModuleUIName = GetModuleName( aModuleId ); - - return aModuleUIName; -} - -inline bool GetMenuItemData( - const css::uno::Reference< css::container::XIndexAccess >& rItemContainer, - sal_Int32 nIndex, - OUString& rCommandURL, - OUString& rLabel, - sal_uInt16& rType, - css::uno::Reference< css::container::XIndexAccess >& rSubMenu ) -{ - try - { - css::uno::Sequence< css::beans::PropertyValue > aProp; - if ( rItemContainer->getByIndex( nIndex ) >>= aProp ) - { - for ( sal_Int32 i = 0; i < aProp.getLength(); ++i ) - { - if ( aProp[i].Name == ITEM_DESCRIPTOR_COMMANDURL ) - { - aProp[i].Value >>= rCommandURL; - } - else if ( aProp[i].Name == ITEM_DESCRIPTOR_CONTAINER ) - { - aProp[i].Value >>= rSubMenu; - } - else if ( aProp[i].Name == ITEM_DESCRIPTOR_LABEL ) - { - aProp[i].Value >>= rLabel; - } - else if ( aProp[i].Name == ITEM_DESCRIPTOR_TYPE ) - { - aProp[i].Value >>= rType; - } - } - - return true; - } - } - catch ( css::lang::IndexOutOfBoundsException& ) - { - } - - return false; -} - -inline bool GetToolbarItemData( - const css::uno::Reference< css::container::XIndexAccess >& rItemContainer, - sal_Int32 nIndex, - OUString& rCommandURL, - OUString& rLabel, - sal_uInt16& rType, - bool& rIsVisible, - sal_Int32& rStyle ) -{ - try - { - css::uno::Sequence< css::beans::PropertyValue > aProp; - if ( rItemContainer->getByIndex( nIndex ) >>= aProp ) - { - for ( sal_Int32 i = 0; i < aProp.getLength(); ++i ) - { - if ( aProp[i].Name == ITEM_DESCRIPTOR_COMMANDURL ) - { - aProp[i].Value >>= rCommandURL; - } - else if ( aProp[i].Name == ITEM_DESCRIPTOR_STYLE ) - { - aProp[i].Value >>= rStyle; - } - else if ( aProp[i].Name == ITEM_DESCRIPTOR_LABEL ) - { - aProp[i].Value >>= rLabel; - } - else if ( aProp[i].Name == ITEM_DESCRIPTOR_TYPE ) - { - aProp[i].Value >>= rType; - } - else if ( aProp[i].Name == ITEM_DESCRIPTOR_ISVISIBLE ) - { - aProp[i].Value >>= rIsVisible; - } - } - - return true; - } - } - catch ( css::lang::IndexOutOfBoundsException& ) - { - } - - return false; -} - -inline css::uno::Sequence< css::beans::PropertyValue > -ConvertSvxConfigEntry( const SvxConfigEntry* pEntry ) -{ - css::uno::Sequence< css::beans::PropertyValue > aPropSeq( 3 ); - - aPropSeq[0].Name = ITEM_DESCRIPTOR_COMMANDURL; - aPropSeq[0].Value <<= pEntry->GetCommand(); - - aPropSeq[1].Name = ITEM_DESCRIPTOR_TYPE; - aPropSeq[1].Value <<= css::ui::ItemType::DEFAULT; - - // If the name has not been changed, then the label can be stored - // as an empty string. - // It will be initialised again later using the command to label map. - aPropSeq[2].Name = ITEM_DESCRIPTOR_LABEL; - if ( !pEntry->HasChangedName() && !pEntry->GetCommand().isEmpty() ) - { - aPropSeq[2].Value <<= OUString(); - } - else - { - aPropSeq[2].Value <<= pEntry->GetName(); - } - - return aPropSeq; -} - -inline css::uno::Sequence< css::beans::PropertyValue > -ConvertToolbarEntry( const SvxConfigEntry* pEntry ) -{ - css::uno::Sequence< css::beans::PropertyValue > aPropSeq( 4 ); - - aPropSeq[0].Name = ITEM_DESCRIPTOR_COMMANDURL; - aPropSeq[0].Value <<= pEntry->GetCommand(); - - aPropSeq[1].Name = ITEM_DESCRIPTOR_TYPE; - aPropSeq[1].Value <<= css::ui::ItemType::DEFAULT; - - // If the name has not been changed, then the label can be stored - // as an empty string. - // It will be initialised again later using the command to label map. - aPropSeq[2].Name = ITEM_DESCRIPTOR_LABEL; - if ( !pEntry->HasChangedName() && !pEntry->GetCommand().isEmpty() ) - { - aPropSeq[2].Value <<= OUString(); - } - else - { - aPropSeq[2].Value <<= pEntry->GetName(); - } - - aPropSeq[3].Name = ITEM_DESCRIPTOR_ISVISIBLE; - aPropSeq[3].Value <<= pEntry->IsVisible(); - - return aPropSeq; -} - -//Was in anonymous namespace in cfg.cxx -inline bool showKeyConfigTabPage( const css::uno::Reference< css::frame::XFrame >& xFrame ) -{ - if (!xFrame.is()) - { - return false; - } - OUString sModuleId( - css::frame::ModuleManager::create( - comphelper::getProcessComponentContext()) - ->identify(xFrame)); - return !sModuleId.isEmpty() - && sModuleId != "com.sun.star.frame.StartModule"; -} - -inline bool EntrySort( SvxConfigEntry* a, SvxConfigEntry* b ) -{ - return a->GetName().compareTo( b->GetName() ) < 0; -} - -inline bool SvxConfigEntryModified( SvxConfigEntry* pEntry ) -{ - SvxEntries* pEntries = pEntry->GetEntries(); - if ( !pEntries ) - return false; - - for ( const auto& entry : *pEntries ) - { - if ( entry->IsModified() || SvxConfigEntryModified( entry ) ) - return true; - } - return false; -} - -} - #endif // INCLUDED_CUI_SOURCE_INC_CFG_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |