summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorSumit Chauhan <sumitcn25@gmail.com>2019-07-25 02:51:10 +0530
committerSzymon Kłos <szymon.klos@collabora.com>2019-07-26 18:36:08 +0200
commit7b0dd98941911c686c0d127810d1c333df5026c3 (patch)
treede5d0e746ad44ad53c51cca70d67e756724d0df7 /vcl
parent7942929685fafb0f9c82feb8da7279e5103c87f0 (diff)
Extension support for gtkmenuItem and notebookbar.ui file added for writer
Change-Id: I65a07fbef7726cdaa9061ebf2227fbedd725d4db Reviewed-on: https://gerrit.libreoffice.org/76278 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/window/NotebookBarAddonsMerger.cxx94
-rw-r--r--vcl/source/window/builder.cxx11
2 files changed, 76 insertions, 29 deletions
diff --git a/vcl/source/window/NotebookBarAddonsMerger.cxx b/vcl/source/window/NotebookBarAddonsMerger.cxx
index d65aba9624f8..5fc0b14b8087 100644
--- a/vcl/source/window/NotebookBarAddonsMerger.cxx
+++ b/vcl/source/window/NotebookBarAddonsMerger.cxx
@@ -19,6 +19,7 @@
#include <vcl/NotebookBarAddonsMerger.hxx>
#include <vcl/commandinfoprovider.hxx>
+#include <vcl/vclenum.hxx>
#include <vcl/toolbox.hxx>
static const char STYLE_TEXT[] = "Text";
@@ -33,13 +34,34 @@ static const char MERGE_NOTEBOOKBAR_CONTROLTYPE[] = "ControlType";
static const char MERGE_NOTEBOOKBAR_WIDTH[] = "Width";
static const char MERGE_NOTEBOOKBAR_STYLE[] = "Style";
-NotebookBarAddonsMerger::NotebookBarAddonsMerger(
- vcl::Window* pParent, const css::uno::Reference<css::frame::XFrame>& m_xFrame,
- const NotebookBarAddonsItem& aNotebookBarAddonsItem)
+static void GetAddonNotebookBarItem(const css::uno::Sequence<css::beans::PropertyValue>& pExtension,
+ AddonNotebookBarItem& aAddonNotebookBarItem)
{
- MergeNotebookBarAddons(pParent, m_xFrame, aNotebookBarAddonsItem);
+ for (int nIdx = 0; nIdx < pExtension.getLength(); nIdx++)
+ {
+ if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_URL)
+ pExtension[nIdx].Value >>= aAddonNotebookBarItem.sCommandURL;
+ else if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_TITLE)
+ pExtension[nIdx].Value >>= aAddonNotebookBarItem.sLabel;
+ else if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_IMAGEID)
+ pExtension[nIdx].Value >>= aAddonNotebookBarItem.sImageIdentifier;
+ else if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_CONTEXT)
+ pExtension[nIdx].Value >>= aAddonNotebookBarItem.sContext;
+ else if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_TARGET)
+ pExtension[nIdx].Value >>= aAddonNotebookBarItem.sTarget;
+ else if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_CONTROLTYPE)
+ pExtension[nIdx].Value >>= aAddonNotebookBarItem.sControlType;
+ else if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_WIDTH)
+ pExtension[nIdx].Value >>= aAddonNotebookBarItem.nWidth;
+ else if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_STYLE)
+ pExtension[nIdx].Value >>= aAddonNotebookBarItem.sStyle;
+ }
}
+NotebookBarAddonsMerger::NotebookBarAddonsMerger() {}
+
+NotebookBarAddonsMerger::~NotebookBarAddonsMerger() {}
+
void NotebookBarAddonsMerger::MergeNotebookBarAddons(
vcl::Window* pParent, const css::uno::Reference<css::frame::XFrame>& m_xFrame,
const NotebookBarAddonsItem& aNotebookBarAddonsItem)
@@ -53,29 +75,10 @@ void NotebookBarAddonsMerger::MergeNotebookBarAddons(
for (int nSecIdx = 0; nSecIdx < aExtension.getLength(); nSecIdx++)
{
+ sal_uInt16 nItemId = 0;
AddonNotebookBarItem aAddonNotebookBarItem;
const css::uno::Sequence<css::beans::PropertyValue> pExtension = aExtension[nSecIdx];
- for (int nRes = 0; nRes < pExtension.getLength(); nRes++)
- {
- if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_URL)
- pExtension[nRes].Value >>= aAddonNotebookBarItem.sCommandURL;
- else if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_TITLE)
- pExtension[nRes].Value >>= aAddonNotebookBarItem.sLabel;
- else if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_IMAGEID)
- pExtension[nRes].Value >>= aAddonNotebookBarItem.sImageIdentifier;
- else if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_CONTEXT)
- pExtension[nRes].Value >>= aAddonNotebookBarItem.sContext;
- else if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_TARGET)
- pExtension[nRes].Value >>= aAddonNotebookBarItem.sTarget;
- else if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_CONTROLTYPE)
- pExtension[nRes].Value >>= aAddonNotebookBarItem.sControlType;
- else if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_WIDTH)
- pExtension[nRes].Value >>= aAddonNotebookBarItem.nWidth;
- else if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_STYLE)
- pExtension[nRes].Value >>= aAddonNotebookBarItem.sStyle;
- }
-
- sal_uInt16 nItemId = 0;
+ GetAddonNotebookBarItem(pExtension, aAddonNotebookBarItem);
ToolBox* pToolbox = dynamic_cast<ToolBox*>(pParent);
if (pToolbox)
{
@@ -108,7 +111,46 @@ void NotebookBarAddonsMerger::MergeNotebookBarAddons(
pToolbox->SetItemImage(nItemId, sImage);
}
}
- pToolbox->InsertSeparator();
+ if (nSecIdx == aExtension.getLength() - 1)
+ pToolbox->InsertSeparator();
+ }
+ }
+}
+
+void NotebookBarAddonsMerger::MergeNotebookBarMenuAddons(
+ PopupMenu* pPopupMenu, sal_Int16 nItemId, const OString& sItemIdName,
+ NotebookBarAddonsItem& aNotebookBarAddonsItem)
+{
+ std::vector<Image> aImageVec = aNotebookBarAddonsItem.aImageValues;
+ unsigned long nIter = 0;
+ css::uno::Sequence<css::uno::Sequence<css::beans::PropertyValue>> aExtension;
+ for (unsigned long nIdx = 0; nIdx < aNotebookBarAddonsItem.aAddonValues.size(); nIdx++)
+ {
+ aExtension = aNotebookBarAddonsItem.aAddonValues[nIdx];
+
+ for (int nSecIdx = 0; nSecIdx < aExtension.getLength(); nSecIdx++)
+ {
+ AddonNotebookBarItem aAddonNotebookBarItem;
+ Image sImage;
+ MenuItemBits nBits = MenuItemBits::ICON;
+ const css::uno::Sequence<css::beans::PropertyValue> pExtension = aExtension[nSecIdx];
+
+ GetAddonNotebookBarItem(pExtension, aAddonNotebookBarItem);
+
+ pPopupMenu->InsertItem(nItemId, aAddonNotebookBarItem.sLabel, nBits, sItemIdName);
+ pPopupMenu->SetItemCommand(nItemId, aAddonNotebookBarItem.sCommandURL);
+
+ if (nIter < aImageVec.size())
+ {
+ sImage = aImageVec[nIter];
+ nIter++;
+ }
+ pPopupMenu->SetItemImage(nItemId, sImage);
+
+ if (nSecIdx == aExtension.getLength() - 1)
+ pPopupMenu->InsertSeparator();
+
+ ++nItemId;
}
}
}
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 0a4c66e0cbf1..75112c8514a4 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -2170,9 +2170,9 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OString &
{
xWindow = VclPtr<ToolBox>::Create(pParent, WB_3DLOOK | WB_TABSTOP);
}
- else if (name == "NotebookBarAddonsMergePoint")
+ else if (name == "NotebookBarAddonsToolMergePoint")
{
- NotebookBarAddonsMerger aNotebookBarAddonsMerger(pParent,m_xFrame, m_pNotebookBarAddonsItem);
+ NotebookBarAddonsMerger::MergeNotebookBarAddons(pParent, m_xFrame, m_pNotebookBarAddonsItem);
return nullptr;
}
else if (name == "GtkToolButton" || name == "GtkMenuToolButton" ||
@@ -3514,7 +3514,12 @@ void VclBuilder::insertMenuObject(PopupMenu *pParent, PopupMenu *pSubMenu, const
sal_uInt16 nOldCount = pParent->GetItemCount();
sal_uInt16 nNewId = ++m_pParserState->m_nLastMenuItemId;
- if (rClass == "GtkMenuItem")
+ if(rClass == "NotebookBarAddonsMenuMergePoint")
+ {
+ NotebookBarAddonsMerger::MergeNotebookBarMenuAddons(pParent, nNewId, rID, m_pNotebookBarAddonsItem);
+ m_pParserState->m_nLastMenuItemId = pParent->GetItemCount();
+ }
+ else if (rClass == "GtkMenuItem")
{
OUString sLabel(BuilderUtils::convertMnemonicMarkup(extractLabel(rProps)));
OUString aCommand(extractActionName(rProps));