use officecfg for menu options
Change-Id: I94c9cf310ed6975f158548913439445faf6d178f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119483 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
committed by
Noel Grandin
parent
6e155959de
commit
131759a3db
@@ -30,7 +30,6 @@
|
||||
#include <i18nlangtag/mslangid.hxx>
|
||||
#include <i18nlangtag/languagetag.hxx>
|
||||
#include <unotools/compatibility.hxx>
|
||||
#include <svtools/menuoptions.hxx>
|
||||
#include <svl/languageoptions.hxx>
|
||||
#include <svtools/miscopt.hxx>
|
||||
#include <unotools/syslocaleoptions.hxx>
|
||||
@@ -661,11 +660,10 @@ std::unique_ptr<SfxTabPage> OfaViewTabPage::Create( weld::Container* pPage, weld
|
||||
|
||||
bool OfaViewTabPage::FillItemSet( SfxItemSet* )
|
||||
{
|
||||
SvtMenuOptions aMenuOpt;
|
||||
|
||||
bool bModified = false;
|
||||
bool bMenuOptModified = false;
|
||||
bool bRepaintWindows(false);
|
||||
std::shared_ptr<comphelper::ConfigurationChanges> xChanges(comphelper::ConfigurationChanges::create());
|
||||
|
||||
SvtMiscOptions aMiscOptions;
|
||||
const sal_Int32 nSizeLB_NewSelection = m_xIconSizeLB->get_active();
|
||||
@@ -698,9 +696,7 @@ bool OfaViewTabPage::FillItemSet( SfxItemSet* )
|
||||
default:
|
||||
OSL_FAIL( "OfaViewTabPage::FillItemSet(): This state of m_xSidebarIconSizeLB should not be possible!" );
|
||||
}
|
||||
auto xChanges = comphelper::ConfigurationChanges::create();
|
||||
officecfg::Office::Common::Misc::SidebarIconSize::set(static_cast<sal_Int16>(eSet), xChanges);
|
||||
xChanges->commit();
|
||||
}
|
||||
|
||||
const sal_Int32 nNotebookbarSizeLB_NewSelection = m_xNotebookbarIconSizeLB->get_active();
|
||||
@@ -716,9 +712,7 @@ bool OfaViewTabPage::FillItemSet( SfxItemSet* )
|
||||
default:
|
||||
OSL_FAIL( "OfaViewTabPage::FillItemSet(): This state of m_xNotebookbarIconSizeLB should not be possible!" );
|
||||
}
|
||||
auto xChanges = comphelper::ConfigurationChanges::create();
|
||||
officecfg::Office::Common::Misc::NotebookbarIconSize::set(static_cast<sal_Int16>(eSet), xChanges);
|
||||
xChanges->commit();
|
||||
}
|
||||
|
||||
const sal_Int32 nStyleLB_NewSelection = m_xIconStyleLB->get_active();
|
||||
@@ -768,17 +762,19 @@ bool OfaViewTabPage::FillItemSet( SfxItemSet* )
|
||||
|
||||
if (m_xFontShowCB->get_state_changed_from_saved())
|
||||
{
|
||||
std::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create());
|
||||
officecfg::Office::Common::Font::View::ShowFontBoxWYSIWYG::set(m_xFontShowCB->get_active(), batch);
|
||||
batch->commit();
|
||||
officecfg::Office::Common::Font::View::ShowFontBoxWYSIWYG::set(m_xFontShowCB->get_active(), xChanges);
|
||||
bModified = true;
|
||||
}
|
||||
|
||||
if (m_xMenuIconsLB->get_value_changed_from_saved())
|
||||
{
|
||||
aMenuOpt.SetMenuIconsState(m_xMenuIconsLB->get_active() == 0 ?
|
||||
TriState eMenuIcons = m_xMenuIconsLB->get_active() == 0 ?
|
||||
TRISTATE_INDET :
|
||||
static_cast<TriState>(m_xMenuIconsLB->get_active() - 1));
|
||||
static_cast<TriState>(m_xMenuIconsLB->get_active() - 1);
|
||||
// Output cache of current setting as possibly modified by System Theme for older version
|
||||
bool bMenuIcons = Application::GetSettings().GetStyleSettings().GetUseImagesInMenus();
|
||||
officecfg::Office::Common::View::Menu::IsSystemIconsInMenus::set(eMenuIcons == TRISTATE_INDET, xChanges);
|
||||
officecfg::Office::Common::View::Menu::ShowIconsInMenues::set(bMenuIcons, xChanges);
|
||||
bModified = true;
|
||||
bMenuOptModified = true;
|
||||
bAppearanceChanged = true;
|
||||
@@ -786,9 +782,11 @@ bool OfaViewTabPage::FillItemSet( SfxItemSet* )
|
||||
|
||||
if (m_xContextMenuShortcutsLB->get_value_changed_from_saved())
|
||||
{
|
||||
aMenuOpt.SetContextMenuShortcuts(m_xContextMenuShortcutsLB->get_active() == 0 ?
|
||||
officecfg::Office::Common::View::Menu::ShortcutsInContextMenus::set(
|
||||
m_xContextMenuShortcutsLB->get_active() == 0 ?
|
||||
TRISTATE_INDET :
|
||||
static_cast<TriState>(m_xContextMenuShortcutsLB->get_active() - 1));
|
||||
static_cast<TriState>(m_xContextMenuShortcutsLB->get_active() - 1),
|
||||
xChanges);
|
||||
bModified = true;
|
||||
bMenuOptModified = true;
|
||||
bAppearanceChanged = true;
|
||||
@@ -818,13 +816,13 @@ bool OfaViewTabPage::FillItemSet( SfxItemSet* )
|
||||
if (m_xUseSkia->get_state_changed_from_saved() ||
|
||||
m_xForceSkiaRaster->get_state_changed_from_saved())
|
||||
{
|
||||
std::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create());
|
||||
officecfg::Office::Common::VCL::UseSkia::set(m_xUseSkia->get_active(), batch);
|
||||
officecfg::Office::Common::VCL::ForceSkiaRaster::set(m_xForceSkiaRaster->get_active(), batch);
|
||||
batch->commit();
|
||||
officecfg::Office::Common::VCL::UseSkia::set(m_xUseSkia->get_active(), xChanges);
|
||||
officecfg::Office::Common::VCL::ForceSkiaRaster::set(m_xForceSkiaRaster->get_active(), xChanges);
|
||||
bModified = true;
|
||||
}
|
||||
|
||||
xChanges->commit();
|
||||
|
||||
if( bMenuOptModified )
|
||||
{
|
||||
// Set changed settings to the application instance
|
||||
@@ -926,11 +924,13 @@ void OfaViewTabPage::Reset( const SfxItemSet* )
|
||||
|
||||
// WorkingSet
|
||||
m_xFontShowCB->set_active(officecfg::Office::Common::Font::View::ShowFontBoxWYSIWYG::get());
|
||||
SvtMenuOptions aMenuOpt;
|
||||
m_xMenuIconsLB->set_active(aMenuOpt.GetMenuIconsState() == 2 ? 0 : aMenuOpt.GetMenuIconsState() + 1);
|
||||
bool bMenuIcons = officecfg::Office::Common::View::Menu::ShowIconsInMenues::get();
|
||||
bool bSystemMenuIcons = officecfg::Office::Common::View::Menu::IsSystemIconsInMenus::get();
|
||||
TriState eMenuIcons = bSystemMenuIcons ? TRISTATE_INDET : static_cast<TriState>(bMenuIcons);
|
||||
m_xMenuIconsLB->set_active(eMenuIcons == 2 ? 0 : eMenuIcons + 1);
|
||||
m_xMenuIconsLB->save_value();
|
||||
|
||||
TriState eContextMenuShortcuts = aMenuOpt.GetContextMenuShortcuts();
|
||||
TriState eContextMenuShortcuts = static_cast<TriState>(officecfg::Office::Common::View::Menu::ShortcutsInContextMenus::get());
|
||||
bool bContextMenuShortcutsNonDefault = eContextMenuShortcuts == TRISTATE_FALSE || eContextMenuShortcuts == TRISTATE_TRUE;
|
||||
m_xContextMenuShortcutsLB->set_active(bContextMenuShortcutsNonDefault ? eContextMenuShortcuts + 1 : 0);
|
||||
m_xContextMenuShortcutsLB->save_value();
|
||||
|
@@ -100,7 +100,6 @@
|
||||
#include <rtl/byteseq.hxx>
|
||||
#include <unotools/pathoptions.hxx>
|
||||
#include <unotools/VersionConfig.hxx>
|
||||
#include <svtools/menuoptions.hxx>
|
||||
#include <rtl/bootstrap.hxx>
|
||||
#include <vcl/test/GraphicsRenderTests.hxx>
|
||||
#include <vcl/glxtestprocess.hxx>
|
||||
@@ -1863,9 +1862,11 @@ void Desktop::OverrideSystemSettings( AllSettings& rSettings )
|
||||
hMouseSettings.SetFollow( aAppearanceCfg.IsMenuMouseFollow() ? (nFollow|MouseFollowFlags::Menu) : (nFollow&~MouseFollowFlags::Menu));
|
||||
rSettings.SetMouseSettings(hMouseSettings);
|
||||
|
||||
SvtMenuOptions aMenuOpt;
|
||||
hStyleSettings.SetUseImagesInMenus(aMenuOpt.GetMenuIconsState());
|
||||
hStyleSettings.SetContextMenuShortcuts(aMenuOpt.GetContextMenuShortcuts());
|
||||
bool bMenuIcons = officecfg::Office::Common::View::Menu::ShowIconsInMenues::get();
|
||||
bool bSystemMenuIcons = officecfg::Office::Common::View::Menu::IsSystemIconsInMenus::get();
|
||||
TriState eMenuIcons = bSystemMenuIcons ? TRISTATE_INDET : static_cast<TriState>(bMenuIcons);
|
||||
hStyleSettings.SetUseImagesInMenus(eMenuIcons);
|
||||
hStyleSettings.SetContextMenuShortcuts(static_cast<TriState>(officecfg::Office::Common::View::Menu::ShortcutsInContextMenus::get()));
|
||||
hStyleSettings.SetDragFullOptions( nDragFullOptions );
|
||||
rSettings.SetStyleSettings ( hStyleSettings );
|
||||
}
|
||||
|
@@ -43,7 +43,6 @@
|
||||
|
||||
#include <comphelper/propertysequence.hxx>
|
||||
#include <officecfg/Office/Common.hxx>
|
||||
#include <svtools/menuoptions.hxx>
|
||||
#include <svtools/javainteractionhandler.hxx>
|
||||
#include <uno/current_context.hxx>
|
||||
#include <unotools/cmdoptions.hxx>
|
||||
@@ -571,7 +570,7 @@ IMPL_LINK( MenuBarManager, Activate, Menu *, pMenu, bool )
|
||||
css::uno::getCurrentContext()));
|
||||
|
||||
// set/unset hiding disabled menu entries
|
||||
bool bDontHide = SvtMenuOptions().IsEntryHidingEnabled();
|
||||
bool bDontHide = officecfg::Office::Common::View::Menu::DontHideDisabledEntry::get();
|
||||
const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
|
||||
bool bShowMenuImages = rSettings.GetUseImagesInMenus();
|
||||
bool bShowShortcuts = m_bHasMenuBar || rSettings.GetContextMenuShortcuts();
|
||||
|
@@ -73,8 +73,6 @@
|
||||
#include <vcl/weldutils.hxx>
|
||||
#include <tools/debug.hxx>
|
||||
|
||||
#include <svtools/menuoptions.hxx>
|
||||
|
||||
// namespaces
|
||||
|
||||
using namespace ::com::sun::star::awt;
|
||||
@@ -1887,7 +1885,7 @@ void ToolBarManager::AddCustomizeMenuItems(ToolBox const * pToolBar)
|
||||
}
|
||||
|
||||
// popup menu for quick customization
|
||||
bool bHideDisabledEntries = !SvtMenuOptions().IsEntryHidingEnabled();
|
||||
bool bHideDisabledEntries = !officecfg::Office::Common::View::Menu::DontHideDisabledEntry::get();
|
||||
|
||||
::PopupMenu *pMenu = pToolBar->GetMenu();
|
||||
|
||||
|
@@ -1,90 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/*
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* This file incorporates work covered by the following license notice:
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed
|
||||
* with this work for additional information regarding copyright
|
||||
* ownership. The ASF licenses this file to you under the Apache
|
||||
* License, Version 2.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <svtools/svtdllapi.h>
|
||||
#include <sal/types.h>
|
||||
#include <tools/gen.hxx>
|
||||
#include <unotools/options.hxx>
|
||||
#include <memory>
|
||||
|
||||
namespace osl
|
||||
{
|
||||
class Mutex;
|
||||
}
|
||||
|
||||
/*-************************************************************************************************************
|
||||
@short forward declaration to our private date container implementation
|
||||
@descr We use these class as internal member to support small memory requirements.
|
||||
You can create the container if it is necessary. The class which use these mechanism
|
||||
is faster and smaller then a complete implementation!
|
||||
**-***********************************************************************************************************/
|
||||
|
||||
class SvtMenuOptions_Impl;
|
||||
|
||||
/*-************************************************************************************************************
|
||||
@short collect information about menu features
|
||||
@devstatus ready to use
|
||||
**-***********************************************************************************************************/
|
||||
|
||||
class SAL_WARN_UNUSED SVT_DLLPUBLIC SvtMenuOptions final : public utl::detail::Options
|
||||
{
|
||||
public:
|
||||
SvtMenuOptions();
|
||||
virtual ~SvtMenuOptions() override;
|
||||
|
||||
/*-****************************************************************************************************
|
||||
@short interface methods to get and set value of config key "org.openoffice.Office.Common/View/Menu/..."
|
||||
@descr These options describe internal states to enable/disable features of installed office.
|
||||
|
||||
IsEntryHidingEnabled()
|
||||
SetEntryHidingState() => Activate this field for viewing all deactivated menu entries.
|
||||
Menu commands that are normally not necessary are hidden by default.
|
||||
Default=false
|
||||
|
||||
IsFollowMouseEnabled()
|
||||
SetFollowMouseState() => Automatic selection while moving the mouse on a menu.
|
||||
Default=true
|
||||
|
||||
@seealso configuration package "org.openoffice.Office.Common/View/Menu"
|
||||
**-***************************************************************************************************/
|
||||
|
||||
bool IsEntryHidingEnabled() const;
|
||||
TriState GetMenuIconsState() const;
|
||||
void SetMenuIconsState(TriState eState);
|
||||
TriState GetContextMenuShortcuts() const;
|
||||
void SetContextMenuShortcuts(TriState eState);
|
||||
|
||||
private:
|
||||
/*-****************************************************************************************************
|
||||
@short return a reference to a static mutex
|
||||
@descr These class is partially threadsafe (for de-/initialization only).
|
||||
All access methods aren't safe!
|
||||
We create a static mutex only for one ime and use at different times.
|
||||
@return A reference to a static mutex member.
|
||||
**-***************************************************************************************************/
|
||||
|
||||
SVT_DLLPRIVATE static ::osl::Mutex& GetOwnStaticMutex();
|
||||
|
||||
private:
|
||||
std::shared_ptr<SvtMenuOptions_Impl> m_pImpl;
|
||||
|
||||
}; // class SvtMenuOptions
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
@@ -48,7 +48,6 @@ enum class EItem
|
||||
|
||||
LinguConfig ,
|
||||
|
||||
MenuOptions ,
|
||||
MiscOptions ,
|
||||
ModuleOptions ,
|
||||
|
||||
|
@@ -82,7 +82,6 @@ $(eval $(call gb_Library_add_exception_objects,svt,\
|
||||
svtools/source/config/fontsubstconfig \
|
||||
svtools/source/config/htmlcfg \
|
||||
svtools/source/config/itemholder2 \
|
||||
svtools/source/config/menuoptions \
|
||||
svtools/source/config/miscopt \
|
||||
svtools/source/config/slidesorterbaropt \
|
||||
svtools/source/config/optionsdrawinglayer \
|
||||
|
@@ -26,7 +26,6 @@
|
||||
#include <com/sun/star/configuration/theDefaultProvider.hpp>
|
||||
|
||||
#include <svtools/accessibilityoptions.hxx>
|
||||
#include <svtools/menuoptions.hxx>
|
||||
#include <svtools/colorcfg.hxx>
|
||||
#include <svtools/printoptions.hxx>
|
||||
#include <unotools/options.hxx>
|
||||
@@ -128,10 +127,6 @@ void ItemHolder2::impl_newItem(TItemInfo& rItem)
|
||||
rItem.pItem.reset( new ::svtools::ColorConfig() );
|
||||
break;
|
||||
|
||||
case EItem::MenuOptions :
|
||||
rItem.pItem.reset( new SvtMenuOptions() );
|
||||
break;
|
||||
|
||||
case EItem::MiscOptions :
|
||||
rItem.pItem.reset( new SvtMiscOptions() );
|
||||
break;
|
||||
|
@@ -1,413 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/*
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* This file incorporates work covered by the following license notice:
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed
|
||||
* with this work for additional information regarding copyright
|
||||
* ownership. The ASF licenses this file to you under the Apache
|
||||
* License, Version 2.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
*/
|
||||
|
||||
#include <svtools/menuoptions.hxx>
|
||||
#include <unotools/configitem.hxx>
|
||||
#include <tools/debug.hxx>
|
||||
#include <com/sun/star/uno/Any.hxx>
|
||||
#include <com/sun/star/uno/Sequence.hxx>
|
||||
#include <vcl/svapp.hxx>
|
||||
#include <vcl/settings.hxx>
|
||||
|
||||
#include "itemholder2.hxx"
|
||||
|
||||
// namespaces
|
||||
|
||||
using namespace ::utl ;
|
||||
using namespace ::osl ;
|
||||
using namespace ::com::sun::star::uno ;
|
||||
|
||||
#define ROOTNODE_MENU "Office.Common/View/Menu"
|
||||
#define DEFAULT_DONTHIDEDISABLEDENTRIES false
|
||||
#define DEFAULT_FOLLOWMOUSE true
|
||||
#define DEFAULT_MENUICONS TRISTATE_INDET
|
||||
#define DEFAULT_CONTEXTMENUSHORTCUTS TRISTATE_INDET
|
||||
|
||||
#define PROPERTYNAME_DONTHIDEDISABLEDENTRIES "DontHideDisabledEntry"
|
||||
#define PROPERTYNAME_FOLLOWMOUSE "FollowMouse"
|
||||
#define PROPERTYNAME_SHOWICONSINMENUES "ShowIconsInMenues"
|
||||
#define PROPERTYNAME_SYSTEMICONSINMENUES "IsSystemIconsInMenus"
|
||||
#define PROPERTYNAME_SHORTCUTSINCONTEXMENU "ShortcutsInContextMenus"
|
||||
|
||||
#define PROPERTYHANDLE_DONTHIDEDISABLEDENTRIES 0
|
||||
#define PROPERTYHANDLE_FOLLOWMOUSE 1
|
||||
#define PROPERTYHANDLE_SHOWICONSINMENUES 2
|
||||
#define PROPERTYHANDLE_SYSTEMICONSINMENUES 3
|
||||
#define PROPERTYHANDLE_SHORTCUTSINCONTEXMENU 4
|
||||
|
||||
// private declarations!
|
||||
|
||||
class SvtMenuOptions_Impl : public ConfigItem
|
||||
{
|
||||
|
||||
// private member
|
||||
|
||||
private:
|
||||
bool m_bDontHideDisabledEntries ; /// cache "DontHideDisabledEntries" of Menu section
|
||||
bool m_bFollowMouse ; /// cache "FollowMouse" of Menu section
|
||||
TriState m_eMenuIcons ; /// cache "MenuIcons" of Menu section
|
||||
TriState m_eContextMenuShortcuts ; /// cache "ShortcutsInContextMenus" of Menu section
|
||||
|
||||
// public methods
|
||||
|
||||
public:
|
||||
|
||||
// constructor / destructor
|
||||
|
||||
SvtMenuOptions_Impl();
|
||||
virtual ~SvtMenuOptions_Impl() override;
|
||||
|
||||
// override methods of baseclass
|
||||
|
||||
/*-****************************************************************************************************
|
||||
@short called for notify of configmanager
|
||||
@descr This method is called from the ConfigManager before application ends or from the
|
||||
PropertyChangeListener if the sub tree broadcasts changes. You must update your
|
||||
internal values.
|
||||
|
||||
@seealso baseclass ConfigItem
|
||||
|
||||
@param "seqPropertyNames" is the list of properties which should be updated.
|
||||
*//*-*****************************************************************************************************/
|
||||
|
||||
virtual void Notify( const Sequence< OUString >& seqPropertyNames ) override;
|
||||
|
||||
// public interface
|
||||
|
||||
/*-****************************************************************************************************
|
||||
@short access method to get internal values
|
||||
@descr These methods give us a chance to regulate access to our internal values.
|
||||
It's not used at the moment - but it's possible for the future!
|
||||
*//*-*****************************************************************************************************/
|
||||
|
||||
bool IsEntryHidingEnabled() const
|
||||
{ return m_bDontHideDisabledEntries; }
|
||||
|
||||
TriState GetMenuIconsState() const
|
||||
{ return m_eMenuIcons; }
|
||||
|
||||
void SetMenuIconsState(TriState eState)
|
||||
{
|
||||
m_eMenuIcons = eState;
|
||||
SetModified();
|
||||
// tdf#93451: don't Commit() here, it's too early
|
||||
}
|
||||
|
||||
TriState GetContextMenuShortcuts() const
|
||||
{ return m_eContextMenuShortcuts; }
|
||||
|
||||
void SetContextMenuShortcuts(TriState eState)
|
||||
{
|
||||
m_eContextMenuShortcuts = eState;
|
||||
SetModified();
|
||||
Commit();
|
||||
}
|
||||
|
||||
// private methods
|
||||
|
||||
private:
|
||||
|
||||
virtual void ImplCommit() override;
|
||||
|
||||
/*-****************************************************************************************************
|
||||
@short return list of fix key names of our configuration management which represent our module tree
|
||||
@descr This method returns a static const list of key names. We need it to get needed values from our
|
||||
configuration management.
|
||||
@return A list of needed configuration keys is returned.
|
||||
*//*-*****************************************************************************************************/
|
||||
|
||||
static Sequence< OUString > const & impl_GetPropertyNames();
|
||||
};
|
||||
|
||||
// constructor
|
||||
|
||||
SvtMenuOptions_Impl::SvtMenuOptions_Impl()
|
||||
// Init baseclasses first
|
||||
: ConfigItem ( ROOTNODE_MENU )
|
||||
// Init member then.
|
||||
, m_bDontHideDisabledEntries ( DEFAULT_DONTHIDEDISABLEDENTRIES )
|
||||
, m_bFollowMouse ( DEFAULT_FOLLOWMOUSE )
|
||||
, m_eMenuIcons ( DEFAULT_MENUICONS )
|
||||
, m_eContextMenuShortcuts ( DEFAULT_CONTEXTMENUSHORTCUTS )
|
||||
{
|
||||
// Use our static list of configuration keys to get his values.
|
||||
Sequence< OUString > seqNames = impl_GetPropertyNames();
|
||||
Sequence< Any > seqValues = GetProperties( seqNames ) ;
|
||||
|
||||
// Safe impossible cases.
|
||||
// We need values from ALL configuration keys.
|
||||
// Follow assignment use order of values in relation to our list of key names!
|
||||
DBG_ASSERT( !(seqNames.getLength()!=seqValues.getLength()), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nI miss some values of configuration keys!\n" );
|
||||
|
||||
bool bMenuIcons = true;
|
||||
bool bSystemMenuIcons = true;
|
||||
if (m_eMenuIcons == TRISTATE_INDET)
|
||||
bMenuIcons = Application::GetSettings().GetStyleSettings().GetPreferredUseImagesInMenus();
|
||||
else
|
||||
{
|
||||
bSystemMenuIcons = false;
|
||||
bMenuIcons = m_eMenuIcons != TRISTATE_FALSE;
|
||||
}
|
||||
|
||||
// Copy values from list in right order to our internal member.
|
||||
sal_Int32 nPropertyCount = seqValues.getLength() ;
|
||||
sal_Int32 nProperty = 0 ;
|
||||
for( nProperty=0; nProperty<nPropertyCount; ++nProperty )
|
||||
{
|
||||
// Safe impossible cases.
|
||||
// Check any for valid value.
|
||||
DBG_ASSERT( seqValues[nProperty].hasValue(), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nInvalid property value for property detected!\n" );
|
||||
|
||||
if (!seqValues[nProperty].hasValue())
|
||||
continue;
|
||||
|
||||
switch( nProperty )
|
||||
{
|
||||
case PROPERTYHANDLE_DONTHIDEDISABLEDENTRIES : {
|
||||
DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Menu\\DontHideDisabledEntry\"?" );
|
||||
seqValues[nProperty] >>= m_bDontHideDisabledEntries;
|
||||
}
|
||||
break;
|
||||
|
||||
case PROPERTYHANDLE_FOLLOWMOUSE : {
|
||||
DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Menu\\FollowMouse\"?" );
|
||||
seqValues[nProperty] >>= m_bFollowMouse;
|
||||
}
|
||||
break;
|
||||
case PROPERTYHANDLE_SHOWICONSINMENUES : {
|
||||
DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Menu\\ShowIconsInMenues\"?" );
|
||||
seqValues[nProperty] >>= bMenuIcons;
|
||||
}
|
||||
break;
|
||||
case PROPERTYHANDLE_SYSTEMICONSINMENUES : {
|
||||
DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Menu\\IsSystemIconsInMenus\"?" );
|
||||
seqValues[nProperty] >>= bSystemMenuIcons;
|
||||
}
|
||||
break;
|
||||
case PROPERTYHANDLE_SHORTCUTSINCONTEXMENU : {
|
||||
DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_SHORT), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Menu\\ShortcutsInContextMenus\"?" );
|
||||
sal_Int16 nContextMenuShortcuts;
|
||||
if ( seqValues[nProperty] >>= nContextMenuShortcuts )
|
||||
m_eContextMenuShortcuts = static_cast<TriState>(nContextMenuShortcuts);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
m_eMenuIcons = bSystemMenuIcons ? TRISTATE_INDET : static_cast<TriState>(bMenuIcons);
|
||||
|
||||
EnableNotification( seqNames );
|
||||
}
|
||||
|
||||
// destructor
|
||||
|
||||
SvtMenuOptions_Impl::~SvtMenuOptions_Impl()
|
||||
{
|
||||
assert(!IsModified()); // should have been committed
|
||||
}
|
||||
|
||||
// public method
|
||||
|
||||
void SvtMenuOptions_Impl::Notify( const Sequence< OUString >& seqPropertyNames )
|
||||
{
|
||||
// Use given list of updated properties to get his values from configuration directly!
|
||||
Sequence< Any > seqValues = GetProperties( seqPropertyNames );
|
||||
// Safe impossible cases.
|
||||
// We need values from ALL notified configuration keys.
|
||||
DBG_ASSERT( !(seqPropertyNames.getLength()!=seqValues.getLength()), "SvtMenuOptions_Impl::Notify()\nI miss some values of configuration keys!\n" );
|
||||
|
||||
bool bMenuSettingsChanged = false;
|
||||
bool bMenuIcons = true;
|
||||
bool bSystemMenuIcons = true;
|
||||
if (m_eMenuIcons == TRISTATE_INDET)
|
||||
bMenuIcons = Application::GetSettings().GetStyleSettings().GetUseImagesInMenus();
|
||||
else
|
||||
{
|
||||
bSystemMenuIcons = false;
|
||||
bMenuIcons = m_eMenuIcons != TRISTATE_FALSE;
|
||||
}
|
||||
|
||||
// Step over list of property names and get right value from corresponding value list to set it on internal members!
|
||||
sal_Int32 nCount = seqPropertyNames.getLength();
|
||||
for( sal_Int32 nProperty=0; nProperty<nCount; ++nProperty )
|
||||
{
|
||||
if( seqPropertyNames[nProperty] == PROPERTYNAME_DONTHIDEDISABLEDENTRIES )
|
||||
{
|
||||
DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtMenuOptions_Impl::Notify()\nWho has changed the value type of \"Office.Common\\View\\Menu\\DontHideDisabledEntry\"?" );
|
||||
seqValues[nProperty] >>= m_bDontHideDisabledEntries;
|
||||
}
|
||||
else if( seqPropertyNames[nProperty] == PROPERTYNAME_FOLLOWMOUSE )
|
||||
{
|
||||
DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtMenuOptions_Impl::Notify()\nWho has changed the value type of \"Office.Common\\View\\Menu\\FollowMouse\"?" );
|
||||
seqValues[nProperty] >>= m_bFollowMouse;
|
||||
}
|
||||
else if( seqPropertyNames[nProperty] == PROPERTYNAME_SHOWICONSINMENUES )
|
||||
{
|
||||
DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Menu\\ShowIconsInMenues\"?" );
|
||||
bMenuSettingsChanged |= seqValues[nProperty] >>= bMenuIcons;
|
||||
}
|
||||
else if( seqPropertyNames[nProperty] == PROPERTYNAME_SYSTEMICONSINMENUES )
|
||||
{
|
||||
DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Menu\\IsSystemIconsInMenus\"?" );
|
||||
bMenuSettingsChanged |= seqValues[nProperty] >>= bSystemMenuIcons;
|
||||
}
|
||||
else if( seqPropertyNames[nProperty] == PROPERTYNAME_SHORTCUTSINCONTEXMENU )
|
||||
{
|
||||
DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_SHORT), "SvtMenuOptions_Impl::SvtMenuOptions_Impl()\nWho has changed the value type of \"Office.Common\\View\\Menu\\ShortcutsInContextMenus\"?" );
|
||||
sal_Int16 nContextMenuShortcuts;
|
||||
if ( seqValues[nProperty] >>= nContextMenuShortcuts )
|
||||
m_eContextMenuShortcuts = static_cast<TriState>(nContextMenuShortcuts);
|
||||
}
|
||||
else assert( false && "SvtMenuOptions_Impl::Notify()\nUnknown property detected ... I can't handle these!" );
|
||||
}
|
||||
|
||||
if ( bMenuSettingsChanged )
|
||||
m_eMenuIcons = bSystemMenuIcons ? TRISTATE_INDET : static_cast<TriState>(bMenuIcons);
|
||||
}
|
||||
|
||||
// public method
|
||||
|
||||
void SvtMenuOptions_Impl::ImplCommit()
|
||||
{
|
||||
// Get names of supported properties, create a list for values and copy current values to it.
|
||||
Sequence< OUString > seqNames = impl_GetPropertyNames();
|
||||
sal_Int32 nCount = seqNames.getLength();
|
||||
Sequence< Any > seqValues ( nCount );
|
||||
for( sal_Int32 nProperty=0; nProperty<nCount; ++nProperty )
|
||||
{
|
||||
switch( nProperty )
|
||||
{
|
||||
case PROPERTYHANDLE_DONTHIDEDISABLEDENTRIES : {
|
||||
seqValues[nProperty] <<= m_bDontHideDisabledEntries;
|
||||
}
|
||||
break;
|
||||
|
||||
case PROPERTYHANDLE_FOLLOWMOUSE : {
|
||||
seqValues[nProperty] <<= m_bFollowMouse;
|
||||
}
|
||||
break;
|
||||
//Output cache of current setting as possibly modified by System Theme for older version
|
||||
case PROPERTYHANDLE_SHOWICONSINMENUES : {
|
||||
bool bValue = Application::GetSettings().GetStyleSettings().GetUseImagesInMenus();
|
||||
seqValues[nProperty] <<= bValue;
|
||||
}
|
||||
break;
|
||||
case PROPERTYHANDLE_SYSTEMICONSINMENUES : {
|
||||
bool bValue = m_eMenuIcons == TRISTATE_INDET;
|
||||
seqValues[nProperty] <<= bValue;
|
||||
}
|
||||
break;
|
||||
case PROPERTYHANDLE_SHORTCUTSINCONTEXMENU : {
|
||||
seqValues[nProperty] <<= static_cast<sal_Int16>(m_eContextMenuShortcuts);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Set properties in configuration.
|
||||
PutProperties( seqNames, seqValues );
|
||||
}
|
||||
|
||||
// private method
|
||||
|
||||
Sequence< OUString > const & SvtMenuOptions_Impl::impl_GetPropertyNames()
|
||||
{
|
||||
static const Sequence<OUString> seqPropertyNames {
|
||||
OUString(PROPERTYNAME_DONTHIDEDISABLEDENTRIES) ,
|
||||
OUString(PROPERTYNAME_FOLLOWMOUSE) ,
|
||||
OUString(PROPERTYNAME_SHOWICONSINMENUES) ,
|
||||
OUString(PROPERTYNAME_SYSTEMICONSINMENUES) ,
|
||||
OUString(PROPERTYNAME_SHORTCUTSINCONTEXMENU)
|
||||
};
|
||||
return seqPropertyNames;
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
std::weak_ptr<SvtMenuOptions_Impl> g_pMenuOptions;
|
||||
|
||||
}
|
||||
|
||||
SvtMenuOptions::SvtMenuOptions()
|
||||
{
|
||||
// Global access, must be guarded (multithreading!).
|
||||
MutexGuard aGuard( GetOwnStaticMutex() );
|
||||
|
||||
m_pImpl = g_pMenuOptions.lock();
|
||||
if( !m_pImpl )
|
||||
{
|
||||
m_pImpl = std::make_shared<SvtMenuOptions_Impl>();
|
||||
g_pMenuOptions = m_pImpl;
|
||||
svtools::ItemHolder2::holdConfigItem(EItem::MenuOptions);
|
||||
}
|
||||
}
|
||||
|
||||
SvtMenuOptions::~SvtMenuOptions()
|
||||
{
|
||||
// Global access, must be guarded (multithreading!)
|
||||
MutexGuard aGuard( GetOwnStaticMutex() );
|
||||
|
||||
m_pImpl.reset();
|
||||
}
|
||||
|
||||
// public method
|
||||
|
||||
bool SvtMenuOptions::IsEntryHidingEnabled() const
|
||||
{
|
||||
MutexGuard aGuard( GetOwnStaticMutex() );
|
||||
return m_pImpl->IsEntryHidingEnabled();
|
||||
}
|
||||
|
||||
// public method
|
||||
|
||||
TriState SvtMenuOptions::GetMenuIconsState() const
|
||||
{
|
||||
MutexGuard aGuard( GetOwnStaticMutex() );
|
||||
return m_pImpl->GetMenuIconsState();
|
||||
}
|
||||
|
||||
// public method
|
||||
|
||||
void SvtMenuOptions::SetMenuIconsState(TriState eState)
|
||||
{
|
||||
MutexGuard aGuard( GetOwnStaticMutex() );
|
||||
m_pImpl->SetMenuIconsState(eState);
|
||||
}
|
||||
|
||||
TriState SvtMenuOptions::GetContextMenuShortcuts() const
|
||||
{
|
||||
MutexGuard aGuard( GetOwnStaticMutex() );
|
||||
return m_pImpl->GetContextMenuShortcuts();
|
||||
}
|
||||
|
||||
void SvtMenuOptions::SetContextMenuShortcuts(TriState eState)
|
||||
{
|
||||
MutexGuard aGuard( GetOwnStaticMutex() );
|
||||
m_pImpl->SetContextMenuShortcuts(eState);
|
||||
}
|
||||
|
||||
// private method
|
||||
|
||||
Mutex& SvtMenuOptions::GetOwnStaticMutex()
|
||||
{
|
||||
static Mutex ourMutex;
|
||||
|
||||
return ourMutex;
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
Reference in New Issue
Block a user