summaryrefslogtreecommitdiff
path: root/vcl/source/window/NotebookBarAddonsMerger.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/source/window/NotebookBarAddonsMerger.cxx')
-rw-r--r--vcl/source/window/NotebookBarAddonsMerger.cxx94
1 files changed, 68 insertions, 26 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;
}
}
}