[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.4' - 2 commits - include/vcl vcl/inc vcl/jsdialog vcl/source
Szymon KÅos (via logerrit)
logerrit at kemper.freedesktop.org
Tue Jan 12 09:33:02 UTC 2021
include/vcl/salvtables.hxx | 59 +++++
vcl/inc/jsdialog/jsdialogbuilder.hxx | 20 +
vcl/jsdialog/jsdialogbuilder.cxx | 55 ++++
vcl/source/app/salvtables.cxx | 402 ++++++++++++++++-------------------
4 files changed, 328 insertions(+), 208 deletions(-)
New commits:
commit 64054b927413cea718ba97c2b98da7aca392e0e0
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Wed Dec 16 23:00:11 2020 +0300
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Tue Jan 12 10:32:42 2021 +0100
jsdialogs: implemented IconView
Change-Id: I05f5009efc879aaf3fc6055ff8dfa7c26aa33d1b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108983
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index a440b7c0da97..ccc33b466da8 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -30,6 +30,7 @@
class ToolBox;
class SfxViewShell;
class VclMultiLineEdit;
+class IconView;
typedef std::map<OString, weld::Widget*> WidgetMap;
@@ -174,6 +175,8 @@ public:
bool bTakeOwnership = false) override;
virtual std::unique_ptr<weld::Expander> weld_expander(const OString& id,
bool bTakeOwnership = false) override;
+ virtual std::unique_ptr<weld::IconView> weld_icon_view(const OString& id,
+ bool bTakeOwnership = false) override;
static weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent,
VclMessageType eMessageType,
@@ -408,4 +411,21 @@ public:
virtual void set_expanded(bool bExpand) override;
};
+class JSIconView : public JSWidget<SalInstanceIconView, ::IconView>
+{
+public:
+ JSIconView(VclPtr<vcl::Window> aNotifierWindow, VclPtr<vcl::Window> aContentWindow,
+ ::IconView* pIconView, SalInstanceBuilder* pBuilder, bool bTakeOwnership,
+ std::string sTypeOfJSON);
+
+ virtual void insert(int pos, const OUString* pStr, const OUString* pId,
+ const OUString* pIconName, weld::TreeIter* pRet) override;
+
+ virtual void insert(int pos, const OUString* pStr, const OUString* pId,
+ const VirtualDevice* pIcon, weld::TreeIter* pRet) override;
+ virtual void clear() override;
+ virtual void select(int pos) override;
+ virtual void unselect(int pos) override;
+};
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index 6873683a8cda..f0cb0475db08 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -600,6 +600,21 @@ std::unique_ptr<weld::Expander> JSInstanceBuilder::weld_expander(const OString&
return pWeldWidget;
}
+std::unique_ptr<weld::IconView> JSInstanceBuilder::weld_icon_view(const OString& id,
+ bool bTakeOwnership)
+{
+ ::IconView* pIconView = m_xBuilder->get<::IconView>(id);
+ auto pWeldWidget
+ = pIconView ? std::make_unique<JSIconView>(GetNotifierWindow(), GetContentWindow(),
+ pIconView, this, bTakeOwnership, m_sTypeOfJSON)
+ : nullptr;
+
+ if (pWeldWidget)
+ RememberWidget(id, pWeldWidget.get());
+
+ return pWeldWidget;
+}
+
weld::MessageDialog* JSInstanceBuilder::CreateMessageDialog(weld::Widget* pParent,
VclMessageType eMessageType,
VclButtonsType eButtonType,
@@ -997,4 +1012,44 @@ void JSExpander::set_expanded(bool bExpand)
notifyDialogState();
}
+JSIconView::JSIconView(VclPtr<vcl::Window> aNotifierWindow, VclPtr<vcl::Window> aContentWindow,
+ ::IconView* pIconView, SalInstanceBuilder* pBuilder, bool bTakeOwnership,
+ std::string sTypeOfJSON)
+ : JSWidget<SalInstanceIconView, ::IconView>(aNotifierWindow, aContentWindow, pIconView,
+ pBuilder, bTakeOwnership, sTypeOfJSON)
+{
+}
+
+void JSIconView::insert(int pos, const OUString* pStr, const OUString* pId,
+ const OUString* pIconName, weld::TreeIter* pRet)
+{
+ SalInstanceIconView::insert(pos, pStr, pId, pIconName, pRet);
+ notifyDialogState();
+}
+
+void JSIconView::insert(int pos, const OUString* pStr, const OUString* pId,
+ const VirtualDevice* pIcon, weld::TreeIter* pRet)
+{
+ SalInstanceIconView::insert(pos, pStr, pId, pIcon, pRet);
+ notifyDialogState();
+}
+
+void JSIconView::clear()
+{
+ SalInstanceIconView::clear();
+ notifyDialogState();
+}
+
+void JSIconView::select(int pos)
+{
+ SalInstanceIconView::select(pos);
+ notifyDialogState();
+}
+
+void JSIconView::unselect(int pos)
+{
+ SalInstanceIconView::unselect(pos);
+ notifyDialogState();
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
commit 002299777776e55619a6a2708bbece1ada9a4dd2
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Fri Jan 8 10:16:07 2021 +0100
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Tue Jan 12 10:32:23 2021 +0100
Move SalInstanceIconView decl to header file
Change-Id: I179f044b3db38ee51f539ef4023b136eac55f4ed
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108982
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
diff --git a/include/vcl/salvtables.hxx b/include/vcl/salvtables.hxx
index b96d02f0a5a8..d63d8b00dd36 100644
--- a/include/vcl/salvtables.hxx
+++ b/include/vcl/salvtables.hxx
@@ -16,6 +16,7 @@
#include <vcl/messagedialog.hxx>
#include <vcl/svtabbx.hxx>
#include <vcl/svlbitm.hxx>
+#include <iconview.hxx>
class SalInstanceBuilder : public weld::Builder
{
@@ -1450,4 +1451,62 @@ public:
virtual ~SalInstanceExpander() override;
};
+class SalInstanceIconView : public SalInstanceContainer, public virtual weld::IconView
+{
+private:
+ // owner for UserData
+ std::vector<std::unique_ptr<OUString>> m_aUserData;
+ VclPtr<::IconView> m_xIconView;
+
+ DECL_LINK(SelectHdl, SvTreeListBox*, void);
+ DECL_LINK(DeSelectHdl, SvTreeListBox*, void);
+ DECL_LINK(DoubleClickHdl, SvTreeListBox*, bool);
+
+public:
+ SalInstanceIconView(::IconView* pIconView, SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+ virtual void freeze() override;
+
+ virtual void thaw() override;
+
+ virtual void insert(int pos, const OUString* pStr, const OUString* pId,
+ const OUString* pIconName, weld::TreeIter* pRet) override;
+
+ virtual void insert(int pos, const OUString* pStr, const OUString* pId,
+ const VirtualDevice* pIcon, weld::TreeIter* pRet) override;
+
+ virtual OUString get_selected_id() const override;
+
+ virtual OUString get_selected_text() const override;
+
+ virtual int count_selected_items() const override;
+
+ virtual void select(int pos) override;
+
+ virtual void unselect(int pos) override;
+
+ virtual int n_children() const override;
+
+ virtual std::unique_ptr<weld::TreeIter> make_iterator(const weld::TreeIter* pOrig
+ = nullptr) const override;
+
+ virtual bool get_selected(weld::TreeIter* pIter) const override;
+
+ virtual bool get_cursor(weld::TreeIter* pIter) const override;
+
+ virtual void set_cursor(const weld::TreeIter& rIter) override;
+
+ virtual bool get_iter_first(weld::TreeIter& rIter) const override;
+
+ virtual void scroll_to_item(const weld::TreeIter& rIter) override;
+
+ virtual void selected_foreach(const std::function<bool(weld::TreeIter&)>& func) override;
+
+ virtual OUString get_id(const weld::TreeIter& rIter) const override;
+
+ virtual void clear() override;
+
+ virtual ~SalInstanceIconView() override;
+};
+
#endif
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 77498436bf86..c4275fefb8be 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -20,7 +20,6 @@
#include <com/sun/star/accessibility/AccessibleRelationType.hpp>
#include <com/sun/star/awt/XWindow.hpp>
#include <officecfg/Office/Common.hxx>
-#include <iconview.hxx>
#include <salframe.hxx>
#include <salinst.hxx>
#include <salvd.hxx>
@@ -4741,258 +4740,245 @@ IMPL_LINK(SalInstanceTreeView, EditedEntryHdl, IterString, rIterString, bool)
return signal_editing_done(std::pair<const weld::TreeIter&, OUString>(SalInstanceTreeIter(rIterString.first), rIterString.second));
}
-class SalInstanceIconView : public SalInstanceContainer, public virtual weld::IconView
+SalInstanceIconView::SalInstanceIconView(::IconView* pIconView, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+ : SalInstanceContainer(pIconView, pBuilder, bTakeOwnership)
+ , m_xIconView(pIconView)
{
-private:
- // owner for UserData
- std::vector<std::unique_ptr<OUString>> m_aUserData;
- VclPtr<::IconView> m_xIconView;
+ m_xIconView->SetSelectHdl(LINK(this, SalInstanceIconView, SelectHdl));
+ m_xIconView->SetDeselectHdl(LINK(this, SalInstanceIconView, DeSelectHdl));
+ m_xIconView->SetDoubleClickHdl(LINK(this, SalInstanceIconView, DoubleClickHdl));
+}
- DECL_LINK(SelectHdl, SvTreeListBox*, void);
- DECL_LINK(DeSelectHdl, SvTreeListBox*, void);
- DECL_LINK(DoubleClickHdl, SvTreeListBox*, bool);
+void SalInstanceIconView::freeze()
+{
+ SalInstanceWidget::freeze();
+ m_xIconView->SetUpdateMode(false);
+}
-public:
- SalInstanceIconView(::IconView* pIconView, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
- : SalInstanceContainer(pIconView, pBuilder, bTakeOwnership)
- , m_xIconView(pIconView)
- {
- m_xIconView->SetSelectHdl(LINK(this, SalInstanceIconView, SelectHdl));
- m_xIconView->SetDeselectHdl(LINK(this, SalInstanceIconView, DeSelectHdl));
- m_xIconView->SetDoubleClickHdl(LINK(this, SalInstanceIconView, DoubleClickHdl));
- }
+void SalInstanceIconView::thaw()
+{
+ m_xIconView->SetUpdateMode(true);
+ SalInstanceWidget::thaw();
+}
- virtual void freeze() override
+void SalInstanceIconView::insert(int pos, const OUString* pStr, const OUString* pId,
+ const OUString* pIconName, weld::TreeIter* pRet)
+{
+ disable_notify_events();
+ auto nInsertPos = pos == -1 ? TREELIST_APPEND : pos;
+ void* pUserData;
+ if (pId)
{
- SalInstanceWidget::freeze();
- m_xIconView->SetUpdateMode(false);
+ m_aUserData.emplace_back(std::make_unique<OUString>(*pId));
+ pUserData = m_aUserData.back().get();
}
+ else
+ pUserData = nullptr;
- virtual void thaw() override
+ SvTreeListEntry* pEntry = new SvTreeListEntry;
+ if (pIconName)
{
- m_xIconView->SetUpdateMode(true);
- SalInstanceWidget::thaw();
+ Image aImage(createImage(*pIconName));
+ pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(aImage, aImage, false));
}
-
- virtual void insert(int pos, const OUString* pStr, const OUString* pId,
- const OUString* pIconName, weld::TreeIter* pRet) override
+ else
{
- disable_notify_events();
- auto nInsertPos = pos == -1 ? TREELIST_APPEND : pos;
- void* pUserData;
- if (pId)
- {
- m_aUserData.emplace_back(std::make_unique<OUString>(*pId));
- pUserData = m_aUserData.back().get();
- }
- else
- pUserData = nullptr;
-
- SvTreeListEntry* pEntry = new SvTreeListEntry;
- if (pIconName)
- {
- Image aImage(createImage(*pIconName));
- pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(aImage, aImage, false));
- }
- else
- {
- Image aDummy;
- pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(aDummy, aDummy, false));
- }
- if (pStr)
- pEntry->AddItem(std::make_unique<SvLBoxString>(*pStr));
- pEntry->SetUserData(pUserData);
- m_xIconView->Insert(pEntry, nullptr, nInsertPos);
-
- if (pRet)
- {
- SalInstanceTreeIter* pVclRetIter = static_cast<SalInstanceTreeIter*>(pRet);
- pVclRetIter->iter = pEntry;
- }
-
- enable_notify_events();
+ Image aDummy;
+ pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(aDummy, aDummy, false));
}
+ if (pStr)
+ pEntry->AddItem(std::make_unique<SvLBoxString>(*pStr));
+ pEntry->SetUserData(pUserData);
+ m_xIconView->Insert(pEntry, nullptr, nInsertPos);
- virtual void insert(int pos, const OUString* pStr, const OUString* pId, const VirtualDevice* pIcon, weld::TreeIter* pRet) override
+ if (pRet)
{
- disable_notify_events();
- auto nInsertPos = pos == -1 ? TREELIST_APPEND : pos;
- void* pUserData;
- if (pId)
- {
- m_aUserData.emplace_back(std::make_unique<OUString>(*pId));
- pUserData = m_aUserData.back().get();
- }
- else
- pUserData = nullptr;
-
- SvTreeListEntry* pEntry = new SvTreeListEntry;
- if (pIcon)
- {
- const Point aNull(0, 0);
- const Size aSize = pIcon->GetOutputSizePixel();
- Image aImage(pIcon->GetBitmapEx(aNull, aSize));
- pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(aImage, aImage, false));
- }
- else
- {
- Image aDummy;
- pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(aDummy, aDummy, false));
- }
- if (pStr)
- pEntry->AddItem(std::make_unique<SvLBoxString>(*pStr));
- pEntry->SetUserData(pUserData);
- m_xIconView->Insert(pEntry, nullptr, nInsertPos);
-
- if (pRet)
- {
- SalInstanceTreeIter* pVclRetIter = static_cast<SalInstanceTreeIter*>(pRet);
- pVclRetIter->iter = pEntry;
- }
-
- enable_notify_events();
+ SalInstanceTreeIter* pVclRetIter = static_cast<SalInstanceTreeIter*>(pRet);
+ pVclRetIter->iter = pEntry;
}
- virtual OUString get_selected_id() const override
- {
- assert(m_xIconView->IsUpdateMode() && "don't request selection when frozen");
- if (SvTreeListEntry* pEntry = m_xIconView->FirstSelected())
- {
- if (const OUString* pStr = static_cast<const OUString*>(pEntry->GetUserData()))
- return *pStr;
- }
- return OUString();
- }
+ enable_notify_events();
+}
- virtual OUString get_selected_text() const override
+void SalInstanceIconView::insert(int pos, const OUString* pStr, const OUString* pId, const VirtualDevice* pIcon, weld::TreeIter* pRet)
+{
+ disable_notify_events();
+ auto nInsertPos = pos == -1 ? TREELIST_APPEND : pos;
+ void* pUserData;
+ if (pId)
{
- assert(m_xIconView->IsUpdateMode() && "don't request selection when frozen");
- if (SvTreeListEntry* pEntry = m_xIconView->FirstSelected())
- return m_xIconView->GetEntryText(pEntry);
- return OUString();
+ m_aUserData.emplace_back(std::make_unique<OUString>(*pId));
+ pUserData = m_aUserData.back().get();
}
+ else
+ pUserData = nullptr;
- virtual int count_selected_items() const override
+ SvTreeListEntry* pEntry = new SvTreeListEntry;
+ if (pIcon)
{
- return m_xIconView->GetSelectionCount();
+ const Point aNull(0, 0);
+ const Size aSize = pIcon->GetOutputSizePixel();
+ Image aImage(pIcon->GetBitmapEx(aNull, aSize));
+ pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(aImage, aImage, false));
}
-
- virtual void select(int pos) override
+ else
{
- assert(m_xIconView->IsUpdateMode() && "don't select when frozen");
- disable_notify_events();
- if (pos == -1 || (pos == 0 && n_children() == 0))
- m_xIconView->SelectAll(false);
- else
- {
- SvTreeListEntry* pEntry = m_xIconView->GetEntry(nullptr, pos);
- m_xIconView->Select(pEntry, true);
- m_xIconView->MakeVisible(pEntry);
- }
- enable_notify_events();
+ Image aDummy;
+ pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(aDummy, aDummy, false));
}
+ if (pStr)
+ pEntry->AddItem(std::make_unique<SvLBoxString>(*pStr));
+ pEntry->SetUserData(pUserData);
+ m_xIconView->Insert(pEntry, nullptr, nInsertPos);
- virtual void unselect(int pos) override
+ if (pRet)
{
- assert(m_xIconView->IsUpdateMode() && "don't select when frozen");
- disable_notify_events();
- if (pos == -1)
- m_xIconView->SelectAll(true);
- else
- {
- SvTreeListEntry* pEntry = m_xIconView->GetEntry(nullptr, pos);
- m_xIconView->Select(pEntry, false);
- }
- enable_notify_events();
+ SalInstanceTreeIter* pVclRetIter = static_cast<SalInstanceTreeIter*>(pRet);
+ pVclRetIter->iter = pEntry;
}
- virtual int n_children() const override
- {
- return m_xIconView->GetModel()->GetChildList(nullptr).size();
- }
+ enable_notify_events();
+}
- virtual std::unique_ptr<weld::TreeIter> make_iterator(const weld::TreeIter* pOrig) const override
+OUString SalInstanceIconView::get_selected_id() const
+{
+ assert(m_xIconView->IsUpdateMode() && "don't request selection when frozen");
+ if (SvTreeListEntry* pEntry = m_xIconView->FirstSelected())
{
- return std::unique_ptr<weld::TreeIter>(new SalInstanceTreeIter(static_cast<const SalInstanceTreeIter*>(pOrig)));
+ if (const OUString* pStr = static_cast<const OUString*>(pEntry->GetUserData()))
+ return *pStr;
}
+ return OUString();
+}
- virtual bool get_selected(weld::TreeIter* pIter) const override
- {
- SvTreeListEntry* pEntry = m_xIconView->FirstSelected();
- auto pVclIter = static_cast<SalInstanceTreeIter*>(pIter);
- if (pVclIter)
- pVclIter->iter = pEntry;
- return pEntry != nullptr;
- }
+OUString SalInstanceIconView::get_selected_text() const
+{
+ assert(m_xIconView->IsUpdateMode() && "don't request selection when frozen");
+ if (SvTreeListEntry* pEntry = m_xIconView->FirstSelected())
+ return m_xIconView->GetEntryText(pEntry);
+ return OUString();
+}
- virtual bool get_cursor(weld::TreeIter* pIter) const override
- {
- SvTreeListEntry* pEntry = m_xIconView->GetCurEntry();
- auto pVclIter = static_cast<SalInstanceTreeIter*>(pIter);
- if (pVclIter)
- pVclIter->iter = pEntry;
- return pEntry != nullptr;
- }
+int SalInstanceIconView::count_selected_items() const
+{
+ return m_xIconView->GetSelectionCount();
+}
- virtual void set_cursor(const weld::TreeIter& rIter) override
+void SalInstanceIconView::select(int pos)
+{
+ assert(m_xIconView->IsUpdateMode() && "don't select when frozen");
+ disable_notify_events();
+ if (pos == -1 || (pos == 0 && n_children() == 0))
+ m_xIconView->SelectAll(false);
+ else
{
- const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter);
- disable_notify_events();
- m_xIconView->SetCurEntry(rVclIter.iter);
- enable_notify_events();
+ SvTreeListEntry* pEntry = m_xIconView->GetEntry(nullptr, pos);
+ m_xIconView->Select(pEntry, true);
+ m_xIconView->MakeVisible(pEntry);
}
+ enable_notify_events();
+}
- virtual bool get_iter_first(weld::TreeIter& rIter) const override
+void SalInstanceIconView::unselect(int pos)
+{
+ assert(m_xIconView->IsUpdateMode() && "don't select when frozen");
+ disable_notify_events();
+ if (pos == -1)
+ m_xIconView->SelectAll(true);
+ else
{
- SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter);
- rVclIter.iter = m_xIconView->GetEntry(0);
- return rVclIter.iter != nullptr;
+ SvTreeListEntry* pEntry = m_xIconView->GetEntry(nullptr, pos);
+ m_xIconView->Select(pEntry, false);
}
+ enable_notify_events();
+}
- virtual void scroll_to_item(const weld::TreeIter& rIter) override
- {
- assert(m_xIconView->IsUpdateMode() && "don't select when frozen");
- disable_notify_events();
- const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter);
- m_xIconView->MakeVisible(rVclIter.iter);
- enable_notify_events();
- }
+int SalInstanceIconView::n_children() const
+{
+ return m_xIconView->GetModel()->GetChildList(nullptr).size();
+}
- virtual void selected_foreach(const std::function<bool(weld::TreeIter&)>& func) override
- {
- SalInstanceTreeIter aVclIter(m_xIconView->FirstSelected());
- while (aVclIter.iter)
- {
- if (func(aVclIter))
- return;
- aVclIter.iter = m_xIconView->NextSelected(aVclIter.iter);
- }
- }
+std::unique_ptr<weld::TreeIter> SalInstanceIconView::make_iterator(const weld::TreeIter* pOrig) const
+{
+ return std::unique_ptr<weld::TreeIter>(new SalInstanceTreeIter(static_cast<const SalInstanceTreeIter*>(pOrig)));
+}
- virtual OUString get_id(const weld::TreeIter& rIter) const override
- {
- const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter);
- const OUString* pStr = static_cast<const OUString*>(rVclIter.iter->GetUserData());
- if (pStr)
- return *pStr;
- return OUString();
- }
+bool SalInstanceIconView::get_selected(weld::TreeIter* pIter) const
+{
+ SvTreeListEntry* pEntry = m_xIconView->FirstSelected();
+ auto pVclIter = static_cast<SalInstanceTreeIter*>(pIter);
+ if (pVclIter)
+ pVclIter->iter = pEntry;
+ return pEntry != nullptr;
+}
- virtual void clear() override
- {
- disable_notify_events();
- m_xIconView->Clear();
- m_aUserData.clear();
- enable_notify_events();
- }
+bool SalInstanceIconView::get_cursor(weld::TreeIter* pIter) const
+{
+ SvTreeListEntry* pEntry = m_xIconView->GetCurEntry();
+ auto pVclIter = static_cast<SalInstanceTreeIter*>(pIter);
+ if (pVclIter)
+ pVclIter->iter = pEntry;
+ return pEntry != nullptr;
+}
+
+void SalInstanceIconView::set_cursor(const weld::TreeIter& rIter)
+{
+ const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter);
+ disable_notify_events();
+ m_xIconView->SetCurEntry(rVclIter.iter);
+ enable_notify_events();
+}
+
+bool SalInstanceIconView::get_iter_first(weld::TreeIter& rIter) const
+{
+ SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter);
+ rVclIter.iter = m_xIconView->GetEntry(0);
+ return rVclIter.iter != nullptr;
+}
+
+void SalInstanceIconView::scroll_to_item(const weld::TreeIter& rIter)
+{
+ assert(m_xIconView->IsUpdateMode() && "don't select when frozen");
+ disable_notify_events();
+ const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter);
+ m_xIconView->MakeVisible(rVclIter.iter);
+ enable_notify_events();
+}
- virtual ~SalInstanceIconView() override
+void SalInstanceIconView::selected_foreach(const std::function<bool(weld::TreeIter&)>& func)
+{
+ SalInstanceTreeIter aVclIter(m_xIconView->FirstSelected());
+ while (aVclIter.iter)
{
- m_xIconView->SetDoubleClickHdl(Link<SvTreeListBox*, bool>());
- m_xIconView->SetSelectHdl(Link<SvTreeListBox*, void>());
- m_xIconView->SetDeselectHdl(Link<SvTreeListBox*, void>());
+ if (func(aVclIter))
+ return;
+ aVclIter.iter = m_xIconView->NextSelected(aVclIter.iter);
}
-};
+}
+
+OUString SalInstanceIconView::get_id(const weld::TreeIter& rIter) const
+{
+ const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter);
+ const OUString* pStr = static_cast<const OUString*>(rVclIter.iter->GetUserData());
+ if (pStr)
+ return *pStr;
+ return OUString();
+}
+
+void SalInstanceIconView::clear()
+{
+ disable_notify_events();
+ m_xIconView->Clear();
+ m_aUserData.clear();
+ enable_notify_events();
+}
+
+SalInstanceIconView::~SalInstanceIconView()
+{
+ m_xIconView->SetDoubleClickHdl(Link<SvTreeListBox*, bool>());
+ m_xIconView->SetSelectHdl(Link<SvTreeListBox*, void>());
+ m_xIconView->SetDeselectHdl(Link<SvTreeListBox*, void>());
+}
IMPL_LINK_NOARG(SalInstanceIconView, SelectHdl, SvTreeListBox*, void)
{
More information about the Libreoffice-commits
mailing list