diff options
Diffstat (limited to 'cui/source/customize/acccfg.cxx')
-rw-r--r-- | cui/source/customize/acccfg.cxx | 124 |
1 files changed, 76 insertions, 48 deletions
diff --git a/cui/source/customize/acccfg.cxx b/cui/source/customize/acccfg.cxx index 9745120f3591..027ac72968e8 100644 --- a/cui/source/customize/acccfg.cxx +++ b/cui/source/customize/acccfg.cxx @@ -63,13 +63,15 @@ #include <comphelper/sequenceashashmap.hxx> #include <config_features.h> +#include <com/sun/star/frame/LayoutManager.hpp> + // namespaces using namespace css; -constexpr OUStringLiteral FOLDERNAME_UICONFIG = u"Configurations2"; +constexpr OUString FOLDERNAME_UICONFIG = u"Configurations2"_ustr; -constexpr OUStringLiteral MEDIATYPE_PROPNAME = u"MediaType"; +constexpr OUString MEDIATYPE_PROPNAME = u"MediaType"_ustr; const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1, KEY_F2, @@ -184,11 +186,14 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1, KEY_MOD1 | KEY_X, KEY_MOD1 | KEY_Y, KEY_MOD1 | KEY_Z, + KEY_MOD1 | KEY_NUMBERSIGN, + KEY_MOD1 | KEY_COLON, KEY_MOD1 | KEY_SEMICOLON, KEY_MOD1 | KEY_QUOTELEFT, KEY_MOD1 | KEY_QUOTERIGHT, KEY_MOD1 | KEY_BRACKETLEFT, KEY_MOD1 | KEY_BRACKETRIGHT, + KEY_MOD1 | KEY_RIGHTCURLYBRACKET, KEY_MOD1 | KEY_POINT, KEY_MOD1 | KEY_COMMA, KEY_MOD1 | KEY_TILDE, @@ -267,11 +272,14 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1, KEY_SHIFT | KEY_MOD1 | KEY_X, KEY_SHIFT | KEY_MOD1 | KEY_Y, KEY_SHIFT | KEY_MOD1 | KEY_Z, + KEY_SHIFT | KEY_MOD1 | KEY_NUMBERSIGN, + KEY_SHIFT | KEY_MOD1 | KEY_COLON, KEY_SHIFT | KEY_MOD1 | KEY_SEMICOLON, KEY_SHIFT | KEY_MOD1 | KEY_QUOTELEFT, KEY_SHIFT | KEY_MOD1 | KEY_QUOTERIGHT, KEY_SHIFT | KEY_MOD1 | KEY_BRACKETLEFT, KEY_SHIFT | KEY_MOD1 | KEY_BRACKETRIGHT, + KEY_SHIFT | KEY_MOD1 | KEY_RIGHTCURLYBRACKET, KEY_SHIFT | KEY_MOD1 | KEY_POINT, KEY_SHIFT | KEY_MOD1 | KEY_COMMA, KEY_SHIFT | KEY_MOD1 | KEY_TILDE, @@ -346,11 +354,14 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1, KEY_MOD2 | KEY_X, KEY_MOD2 | KEY_Y, KEY_MOD2 | KEY_Z, + KEY_MOD2 | KEY_NUMBERSIGN, + KEY_MOD2 | KEY_COLON, KEY_MOD2 | KEY_SEMICOLON, KEY_MOD2 | KEY_QUOTELEFT, KEY_MOD2 | KEY_QUOTERIGHT, KEY_MOD2 | KEY_BRACKETLEFT, KEY_MOD2 | KEY_BRACKETRIGHT, + KEY_MOD2 | KEY_RIGHTCURLYBRACKET, KEY_MOD2 | KEY_POINT, KEY_MOD2 | KEY_COMMA, KEY_MOD2 | KEY_TILDE, @@ -423,11 +434,14 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1, KEY_SHIFT | KEY_MOD2 | KEY_X, KEY_SHIFT | KEY_MOD2 | KEY_Y, KEY_SHIFT | KEY_MOD2 | KEY_Z, + KEY_SHIFT | KEY_MOD2 | KEY_NUMBERSIGN, + KEY_SHIFT | KEY_MOD2 | KEY_COLON, KEY_SHIFT | KEY_MOD2 | KEY_SEMICOLON, KEY_SHIFT | KEY_MOD2 | KEY_QUOTELEFT, KEY_SHIFT | KEY_MOD2 | KEY_QUOTERIGHT, KEY_SHIFT | KEY_MOD2 | KEY_BRACKETLEFT, KEY_SHIFT | KEY_MOD2 | KEY_BRACKETRIGHT, + KEY_SHIFT | KEY_MOD2 | KEY_RIGHTCURLYBRACKET, KEY_SHIFT | KEY_MOD2 | KEY_POINT, KEY_SHIFT | KEY_MOD2 | KEY_COMMA, KEY_SHIFT | KEY_MOD2 | KEY_TILDE, @@ -501,11 +515,14 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1, KEY_MOD1 | KEY_MOD2 | KEY_X, KEY_MOD1 | KEY_MOD2 | KEY_Y, KEY_MOD1 | KEY_MOD2 | KEY_Z, + KEY_MOD1 | KEY_MOD2 | KEY_NUMBERSIGN, + KEY_MOD1 | KEY_MOD2 | KEY_COLON, KEY_MOD1 | KEY_MOD2 | KEY_SEMICOLON, KEY_MOD1 | KEY_MOD2 | KEY_QUOTELEFT, KEY_MOD1 | KEY_MOD2 | KEY_QUOTERIGHT, KEY_MOD1 | KEY_MOD2 | KEY_BRACKETLEFT, KEY_MOD1 | KEY_MOD2 | KEY_BRACKETRIGHT, + KEY_MOD1 | KEY_MOD2 | KEY_RIGHTCURLYBRACKET, KEY_MOD1 | KEY_MOD2 | KEY_POINT, KEY_MOD1 | KEY_MOD2 | KEY_COMMA, KEY_MOD1 | KEY_MOD2 | KEY_TILDE, @@ -578,11 +595,14 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1, KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_X, KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_Y, KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_Z, + KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_NUMBERSIGN, + KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_COLON, KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_SEMICOLON, KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_QUOTELEFT, KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_QUOTERIGHT, KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_BRACKETLEFT, KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_BRACKETRIGHT, + KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_RIGHTCURLYBRACKET, KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_POINT, KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_COMMA, KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_TILDE, @@ -657,11 +677,14 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1, KEY_MOD3 | KEY_X, KEY_MOD3 | KEY_Y, KEY_MOD3 | KEY_Z, + KEY_MOD2 | KEY_NUMBERSIGN, + KEY_MOD3 | KEY_COLON, KEY_MOD3 | KEY_SEMICOLON, KEY_MOD3 | KEY_QUOTELEFT, KEY_MOD3 | KEY_QUOTERIGHT, KEY_MOD3 | KEY_BRACKETLEFT, KEY_MOD3 | KEY_BRACKETRIGHT, + KEY_MOD3 | KEY_RIGHTCURLYBRACKET, KEY_MOD3 | KEY_POINT, KEY_MOD3 | KEY_COMMA, KEY_MOD3 | KEY_TILDE, @@ -740,11 +763,14 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1, KEY_SHIFT | KEY_MOD3 | KEY_X, KEY_SHIFT | KEY_MOD3 | KEY_Y, KEY_SHIFT | KEY_MOD3 | KEY_Z, + KEY_SHIFT | KEY_MOD3 | KEY_NUMBERSIGN, + KEY_SHIFT | KEY_MOD3 | KEY_COLON, KEY_SHIFT | KEY_MOD3 | KEY_SEMICOLON, KEY_SHIFT | KEY_MOD3 | KEY_QUOTELEFT, KEY_SHIFT | KEY_MOD3 | KEY_QUOTERIGHT, KEY_SHIFT | KEY_MOD3 | KEY_BRACKETLEFT, KEY_SHIFT | KEY_MOD3 | KEY_BRACKETRIGHT, + KEY_SHIFT | KEY_MOD3 | KEY_RIGHTCURLYBRACKET, KEY_SHIFT | KEY_MOD3 | KEY_POINT, KEY_SHIFT | KEY_MOD3 | KEY_COMMA, KEY_SHIFT | KEY_MOD3 | KEY_TILDE, @@ -785,7 +811,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1, #endif }; -const sal_uInt16 KEYCODE_ARRAY_SIZE = SAL_N_ELEMENTS(KEYCODE_ARRAY); +const sal_uInt16 KEYCODE_ARRAY_SIZE = std::size(KEYCODE_ARRAY); /** select the entry, which match the current key input ... excepting keys, which are used for the dialog itself. @@ -797,23 +823,24 @@ IMPL_LINK(SfxAcceleratorConfigPage, KeyInputHdl, const KeyEvent&, rKey, bool) sal_uInt16 nMod1 = aCode1.GetModifier(); // is it related to our list box ? - if ((nCode1 != KEY_DOWN) && (nCode1 != KEY_UP) && (nCode1 != KEY_LEFT) && (nCode1 != KEY_RIGHT) - && (nCode1 != KEY_PAGEUP) && (nCode1 != KEY_PAGEDOWN)) + if ((nCode1 == KEY_DOWN) || (nCode1 == KEY_UP) || (nCode1 == KEY_LEFT) || (nCode1 == KEY_RIGHT) + || (nCode1 == KEY_PAGEUP) || (nCode1 == KEY_PAGEDOWN)) + // no - handle it as normal dialog input + return false; + + for (int i = 0, nCount = m_xEntriesBox->n_children(); i < nCount; ++i) { - for (int i = 0, nCount = m_xEntriesBox->n_children(); i < nCount; ++i) + TAccInfo* pUserData = weld::fromId<TAccInfo*>(m_xEntriesBox->get_id(i)); + if (pUserData) { - TAccInfo* pUserData = reinterpret_cast<TAccInfo*>(m_xEntriesBox->get_id(i).toInt64()); - if (pUserData) - { - sal_uInt16 nCode2 = pUserData->m_aKey.GetCode(); - sal_uInt16 nMod2 = pUserData->m_aKey.GetModifier(); + sal_uInt16 nCode2 = pUserData->m_aKey.GetCode(); + sal_uInt16 nMod2 = pUserData->m_aKey.GetModifier(); - if (nCode1 == nCode2 && nMod1 == nMod2) - { - m_xEntriesBox->select(i); - m_xEntriesBox->scroll_to_row(i); - return true; - } + if (nCode1 == nCode2 && nMod1 == nMod2) + { + m_xEntriesBox->select(i); + m_xEntriesBox->scroll_to_row(i); + return true; } } } @@ -829,10 +856,10 @@ SfxAcceleratorConfigPage::SfxAcceleratorConfigPage(weld::Container* pPage, #if HAVE_FEATURE_SCRIPTING , m_pMacroInfoItem() #endif - , aLoadAccelConfigStr(CuiResId(RID_SVXSTR_LOADACCELCONFIG)) - , aSaveAccelConfigStr(CuiResId(RID_SVXSTR_SAVEACCELCONFIG)) + , aLoadAccelConfigStr(CuiResId(RID_CUISTR_LOADACCELCONFIG)) + , aSaveAccelConfigStr(CuiResId(RID_CUISTR_SAVEACCELCONFIG)) , aFilterAllStr(SfxResId(STR_SFX_FILTERNAME_ALL)) - , aFilterCfgStr(CuiResId(RID_SVXSTR_FILTERNAME_CFG)) + , aFilterCfgStr(CuiResId(RID_CUISTR_FILTERNAME_CFG)) , m_bStylesInfoInitialized(false) , m_aUpdateDataTimer("SfxAcceleratorConfigPage UpdateDataTimer") , m_aFillGroupIdle("SfxAcceleratorConfigPage m_aFillGroupIdle") @@ -850,16 +877,16 @@ SfxAcceleratorConfigPage::SfxAcceleratorConfigPage(weld::Container* pPage, , m_xResetButton(m_xBuilder->weld_button("reset")) { Size aSize(m_xEntriesBox->get_approximate_digit_width() * 40, - m_xEntriesBox->get_height_rows(12)); + m_xEntriesBox->get_height_rows(10)); m_xEntriesBox->set_size_request(aSize.Width(), aSize.Height()); aSize = Size(m_xEntriesBox->get_approximate_digit_width() * 19, - m_xEntriesBox->get_height_rows(10)); + m_xEntriesBox->get_height_rows(9)); m_xGroupLBox->set_size_request(aSize.Width(), aSize.Height()); aSize = Size(m_xEntriesBox->get_approximate_digit_width() * 21, - m_xEntriesBox->get_height_rows(10)); + m_xEntriesBox->get_height_rows(9)); m_xFunctionBox->set_size_request(aSize.Width(), aSize.Height()); aSize = Size(m_xEntriesBox->get_approximate_digit_width() * 20, - m_xEntriesBox->get_height_rows(10)); + m_xEntriesBox->get_height_rows(9)); m_xKeyBox->set_size_request(aSize.Width(), aSize.Height()); // install handler functions @@ -917,7 +944,7 @@ SfxAcceleratorConfigPage::~SfxAcceleratorConfigPage() // free memory - remove all dynamic user data for (int i = 0, nCount = m_xEntriesBox->n_children(); i < nCount; ++i) { - TAccInfo* pUserData = reinterpret_cast<TAccInfo*>(m_xEntriesBox->get_id(i).toInt64()); + TAccInfo* pUserData = weld::fromId<TAccInfo*>(m_xEntriesBox->get_id(i)); delete pUserData; } } @@ -1002,7 +1029,7 @@ void SfxAcceleratorConfigPage::Init(const uno::Reference<ui::XAcceleratorConfigu if (sKey.isEmpty()) continue; TAccInfo* pEntry = new TAccInfo(i1, 0 /*nListPos*/, aKey); - m_xEntriesBox->append(OUString::number(reinterpret_cast<sal_Int64>(pEntry)), sKey); + m_xEntriesBox->append(weld::toId(pEntry), sKey); int nPos = m_xEntriesBox->n_children() - 1; m_xEntriesBox->set_text(nPos, OUString(), 1); m_xEntriesBox->set_sensitive(nPos, true); @@ -1026,7 +1053,7 @@ void SfxAcceleratorConfigPage::Init(const uno::Reference<ui::XAcceleratorConfigu m_xEntriesBox->set_text(nPos, sLabel, 1); - TAccInfo* pEntry = reinterpret_cast<TAccInfo*>(m_xEntriesBox->get_id(nPos).toInt64()); + TAccInfo* pEntry = weld::fromId<TAccInfo*>(m_xEntriesBox->get_id(nPos)); pEntry->m_bIsConfigurable = true; pEntry->m_sCommand = sCommand; @@ -1044,7 +1071,7 @@ void SfxAcceleratorConfigPage::Init(const uno::Reference<ui::XAcceleratorConfigu continue; // Hardcoded function mapped so no ID possible and mark entry as not changeable - TAccInfo* pEntry = reinterpret_cast<TAccInfo*>(m_xEntriesBox->get_id(nPos).toInt64()); + TAccInfo* pEntry = weld::fromId<TAccInfo*>(m_xEntriesBox->get_id(nPos)); pEntry->m_bIsConfigurable = false; m_xEntriesBox->set_sensitive(nPos, false); @@ -1061,7 +1088,7 @@ void SfxAcceleratorConfigPage::Apply(const uno::Reference<ui::XAcceleratorConfig // physical ones! for (int i = 0, nCount = m_xEntriesBox->n_children(); i < nCount; ++i) { - TAccInfo* pUserData = reinterpret_cast<TAccInfo*>(m_xEntriesBox->get_id(i).toInt64()); + TAccInfo* pUserData = weld::fromId<TAccInfo*>(m_xEntriesBox->get_id(i)); OUString sCommand; awt::KeyEvent aAWTKey; @@ -1140,7 +1167,7 @@ IMPL_LINK_NOARG(SfxAcceleratorConfigPage, ChangeHdl, weld::Button&, void) if (nPos == -1) return; - TAccInfo* pEntry = reinterpret_cast<TAccInfo*>(m_xEntriesBox->get_id(nPos).toInt64()); + TAccInfo* pEntry = weld::fromId<TAccInfo*>(m_xEntriesBox->get_id(nPos)); OUString sNewCommand = m_xFunctionBox->GetCurCommand(); OUString sLabel = m_xFunctionBox->GetCurLabel(); if (sLabel.isEmpty()) @@ -1159,7 +1186,7 @@ IMPL_LINK_NOARG(SfxAcceleratorConfigPage, RemoveHdl, weld::Button&, void) if (nPos == -1) return; - TAccInfo* pEntry = reinterpret_cast<TAccInfo*>(m_xEntriesBox->get_id(nPos).toInt64()); + TAccInfo* pEntry = weld::fromId<TAccInfo*>(m_xEntriesBox->get_id(nPos)); // remove function name from selected entry m_xEntriesBox->set_text(nPos, OUString(), 1); @@ -1172,7 +1199,7 @@ IMPL_LINK(SfxAcceleratorConfigPage, SelectHdl, weld::TreeView&, rListBox, void) { if (&rListBox == m_xEntriesBox.get()) { - TAccInfo* pEntry = reinterpret_cast<TAccInfo*>(m_xEntriesBox->get_selected_id().toInt64()); + TAccInfo* pEntry = weld::fromId<TAccInfo*>(m_xEntriesBox->get_selected_id()); OUString sPossibleNewCommand = m_xFunctionBox->GetCurCommand(); @@ -1214,7 +1241,7 @@ IMPL_LINK(SfxAcceleratorConfigPage, SelectHdl, weld::TreeView&, rListBox, void) m_xChangeButton->set_sensitive(false); // #i36994 First selected can return null! - TAccInfo* pEntry = reinterpret_cast<TAccInfo*>(m_xEntriesBox->get_selected_id().toInt64()); + TAccInfo* pEntry = weld::fromId<TAccInfo*>(m_xEntriesBox->get_selected_id()); if (pEntry) { OUString sPossibleNewCommand = m_xFunctionBox->GetCurCommand(); @@ -1233,12 +1260,10 @@ IMPL_LINK(SfxAcceleratorConfigPage, SelectHdl, weld::TreeView&, rListBox, void) { for (int i = 0, nCount = m_xEntriesBox->n_children(); i < nCount; ++i) { - TAccInfo* pUserData - = reinterpret_cast<TAccInfo*>(m_xEntriesBox->get_id(i).toInt64()); + TAccInfo* pUserData = weld::fromId<TAccInfo*>(m_xEntriesBox->get_id(i)); if (pUserData && pUserData->m_sCommand == sPossibleNewCommand) { - m_xKeyBox->append(OUString::number(reinterpret_cast<sal_Int64>(pUserData)), - pUserData->m_aKey.GetName()); + m_xKeyBox->append(weld::toId(pUserData), pUserData->m_aKey.GetName()); } } } @@ -1248,7 +1273,7 @@ IMPL_LINK(SfxAcceleratorConfigPage, SelectHdl, weld::TreeView&, rListBox, void) { // goto selected "key" entry of the key box int nP2 = -1; - TAccInfo* pU2 = reinterpret_cast<TAccInfo*>(m_xKeyBox->get_selected_id().toInt64()); + TAccInfo* pU2 = weld::fromId<TAccInfo*>(m_xKeyBox->get_selected_id()); if (pU2) nP2 = MapKeyCodeToPos(pU2->m_aKey); if (nP2 != -1) @@ -1319,9 +1344,8 @@ IMPL_LINK_NOARG(SfxAcceleratorConfigPage, LoadHdl, sfx2::FileDialogHelper*, void // don't forget to release the storage afterwards! uno::Reference<lang::XSingleServiceFactory> xStorageFactory( embed::StorageFactory::create(m_xContext)); - uno::Sequence<uno::Any> lArgs(2); - lArgs[0] <<= sCfgName; - lArgs[1] <<= css::embed::ElementModes::READ; + uno::Sequence<uno::Any> lArgs{ uno::Any(sCfgName), + uno::Any(css::embed::ElementModes::READ) }; xRootStorage.set(xStorageFactory->createInstanceWithArguments(lArgs), uno::UNO_QUERY_THROW); uno::Reference<embed::XStorage> xUIConfig @@ -1390,9 +1414,7 @@ IMPL_LINK_NOARG(SfxAcceleratorConfigPage, SaveHdl, sfx2::FileDialogHelper*, void { uno::Reference<lang::XSingleServiceFactory> xStorageFactory( embed::StorageFactory::create(m_xContext)); - uno::Sequence<uno::Any> lArgs(2); - lArgs[0] <<= sCfgName; - lArgs[1] <<= embed::ElementModes::WRITE; + uno::Sequence<uno::Any> lArgs{ uno::Any(sCfgName), uno::Any(embed::ElementModes::WRITE) }; xRootStorage.set(xStorageFactory->createInstanceWithArguments(lArgs), uno::UNO_QUERY_THROW); @@ -1476,6 +1498,13 @@ bool SfxAcceleratorConfigPage::FillItemSet(SfxItemSet*) try { m_xAct->store(); + css::uno::Reference<css::beans::XPropertySet> xFrameProps(m_xFrame, + css::uno::UNO_QUERY_THROW); + css::uno::Reference<css::frame::XLayoutManager> xLayoutManager; + xFrameProps->getPropertyValue("LayoutManager") >>= xLayoutManager; + css::uno::Reference<css::beans::XPropertySet> xLayoutProps(xLayoutManager, + css::uno::UNO_QUERY_THROW); + xLayoutProps->setPropertyValue("RefreshContextToolbarToolTip", css::uno::Any(true)); } catch (const uno::RuntimeException&) { @@ -1514,10 +1543,9 @@ void SfxAcceleratorConfigPage::Reset(const SfxItemSet* rSet) RadioHdl(*m_xOfficeButton); #if HAVE_FEATURE_SCRIPTING - const SfxPoolItem* pMacroItem = nullptr; - if (SfxItemState::SET == rSet->GetItemState(SID_MACROINFO, true, &pMacroItem)) + if (const SfxMacroInfoItem* pMacroItem = rSet->GetItemIfSet(SID_MACROINFO)) { - m_pMacroInfoItem = &dynamic_cast<const SfxMacroInfoItem&>(*pMacroItem); + m_pMacroInfoItem = pMacroItem; m_xGroupLBox->SelectMacro(m_pMacroInfoItem); } #else @@ -1530,7 +1558,7 @@ sal_Int32 SfxAcceleratorConfigPage::MapKeyCodeToPos(const vcl::KeyCode& aKey) co sal_uInt16 nCode1 = aKey.GetCode() + aKey.GetModifier(); for (int i = 0, nCount = m_xEntriesBox->n_children(); i < nCount; ++i) { - TAccInfo* pUserData = reinterpret_cast<TAccInfo*>(m_xEntriesBox->get_id(i).toInt64()); + TAccInfo* pUserData = weld::fromId<TAccInfo*>(m_xEntriesBox->get_id(i)); if (pUserData) { sal_uInt16 nCode2 = pUserData->m_aKey.GetCode() + pUserData->m_aKey.GetModifier(); |