Files
libreoffice/vcl/qt5/QtInstanceTreeView.cxx

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

785 lines
20 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
/*
* 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/.
*/
#include <QtInstanceTreeView.hxx>
#include <QtInstanceTreeView.moc>
#include <vcl/qt/QtUtils.hxx>
// role used for the ID in the QStandardItem
constexpr int ROLE_ID = Qt::UserRole + 1000;
QtInstanceTreeView::QtInstanceTreeView(QTreeView* pTreeView)
: QtInstanceWidget(pTreeView)
, m_pTreeView(pTreeView)
{
assert(m_pTreeView);
m_pModel = qobject_cast<QStandardItemModel*>(m_pTreeView->model());
assert(m_pModel && "tree view doesn't have expected item model set");
m_pSelectionModel = m_pTreeView->selectionModel();
assert(m_pSelectionModel);
connect(m_pTreeView, &QTreeView::activated, this, &QtInstanceTreeView::handleActivated);
connect(m_pSelectionModel, &QItemSelectionModel::selectionChanged, this,
&QtInstanceTreeView::handleSelectionChanged);
}
void QtInstanceTreeView::insert(const weld::TreeIter* pParent, int pos, const OUString* pStr,
const OUString* pId, const OUString* pIconName,
VirtualDevice* pImageSurface, bool bChildrenOnDemand,
weld::TreeIter* pRet)
{
// Only specific subset of parameters handled so far;
// assert only these are used at the moment and implement remaining cases
// when needed to support more dialogs, then adjust/remove asserts below
assert(!pParent && "Not implemented yet");
assert(pos == -1 && "Not implemented yet");
assert(!pIconName && "Not implemented yet");
assert(!pImageSurface && "Not implemented yet");
assert(!bChildrenOnDemand && "Not implemented yet");
assert(!pRet && "Not implemented yet");
// avoid -Werror=unused-parameter for release build
(void)pParent;
(void)pos;
(void)pIconName;
(void)pImageSurface;
(void)bChildrenOnDemand;
(void)pRet;
SolarMutexGuard g;
GetQtInstance().RunInMainThread([&] {
QStandardItem* pItem = new QStandardItem;
if (pStr)
pItem->setText(toQString(*pStr));
if (pId)
pItem->setData(toQString(*pId), ROLE_ID);
m_pModel->appendRow(pItem);
});
}
void QtInstanceTreeView::insert_separator(int, const OUString&)
{
assert(false && "Not implemented yet");
}
OUString QtInstanceTreeView::get_selected_text() const
{
SolarMutexGuard g;
OUString sText;
GetQtInstance().RunInMainThread([&] {
const QModelIndexList aSelectedIndexes = m_pSelectionModel->selectedIndexes();
if (aSelectedIndexes.empty())
return;
sText = toOUString(m_pModel->itemFromIndex(aSelectedIndexes.first())->text());
});
return sText;
}
OUString QtInstanceTreeView::get_selected_id() const
{
SolarMutexGuard g;
OUString sId;
GetQtInstance().RunInMainThread([&] {
const QModelIndexList aSelectedIndexes = m_pSelectionModel->selectedIndexes();
if (aSelectedIndexes.empty())
return;
QVariant aIdData = aSelectedIndexes.first().data(ROLE_ID);
if (aIdData.canConvert<QString>())
sId = toOUString(aIdData.toString());
});
return sId;
}
void QtInstanceTreeView::enable_toggle_buttons(weld::ColumnToggleType)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::set_clicks_to_toggle(int) { assert(false && "Not implemented yet"); }
int QtInstanceTreeView::get_selected_index() const
{
SolarMutexGuard g;
int nIndex = -1;
GetQtInstance().RunInMainThread([&] {
const QModelIndexList aSelectedIndexes = m_pSelectionModel->selectedIndexes();
if (aSelectedIndexes.empty())
return;
nIndex = aSelectedIndexes.first().row();
});
return nIndex;
}
void QtInstanceTreeView::select(int nPos)
{
SolarMutexGuard g;
GetQtInstance().RunInMainThread(
[&] { m_pSelectionModel->select(m_pModel->index(nPos, 0), QItemSelectionModel::Select); });
}
void QtInstanceTreeView::unselect(int nPos)
{
SolarMutexGuard g;
GetQtInstance().RunInMainThread([&] {
m_pSelectionModel->select(m_pModel->index(nPos, 0), QItemSelectionModel::Deselect);
});
}
void QtInstanceTreeView::remove(int) { assert(false && "Not implemented yet"); }
OUString QtInstanceTreeView::get_text(int nRow, int nCol) const
{
assert(nCol == -1 && "Column support not implemented yet");
(void)nCol; // for release build
SolarMutexGuard g;
OUString sText;
GetQtInstance().RunInMainThread([&] {
const QModelIndex aIndex = m_pModel->index(nRow, 0);
const QVariant aData = m_pModel->data(aIndex);
assert(aData.canConvert<QString>() && "model data not a string");
sText = toOUString(aData.toString());
});
return sText;
}
void QtInstanceTreeView::set_text(int nRow, const OUString& rText, int nCol)
{
assert(nCol != -1 && "Support for special index -1 (first text column) not implemented yet");
SolarMutexGuard g;
GetQtInstance().RunInMainThread([&] {
QStandardItem* pItem = m_pModel->item(nRow, nCol);
if (!pItem)
{
pItem = new QStandardItem;
m_pModel->setItem(nRow, nCol, pItem);
}
pItem->setText(toQString(rText));
});
}
void QtInstanceTreeView::set_sensitive(int, bool, int) { assert(false && "Not implemented yet"); }
bool QtInstanceTreeView::get_sensitive(int, int) const
{
assert(false && "Not implemented yet");
return false;
}
void QtInstanceTreeView::set_id(int, const OUString&) { assert(false && "Not implemented yet"); }
void QtInstanceTreeView::set_toggle(int, TriState, int) { assert(false && "Not implemented yet"); }
TriState QtInstanceTreeView::get_toggle(int, int) const
{
assert(false && "Not implemented yet");
return TRISTATE_INDET;
}
void QtInstanceTreeView::set_image(int, const OUString&, int)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::set_image(int, VirtualDevice&, int)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::set_image(int, const css::uno::Reference<css::graphic::XGraphic>&, int)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::set_text_emphasis(int, bool, int)
{
assert(false && "Not implemented yet");
}
bool QtInstanceTreeView::get_text_emphasis(int, int) const
{
assert(false && "Not implemented yet");
return false;
}
void QtInstanceTreeView::set_text_align(int, double, int)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::swap(int, int) { assert(false && "Not implemented yet"); }
std::vector<int> QtInstanceTreeView::get_selected_rows() const
{
SolarMutexGuard g;
std::vector<int> aSelectedRows;
GetQtInstance().RunInMainThread([&] {
const QModelIndexList aSelectionIndexes = m_pSelectionModel->selectedRows();
for (const QModelIndex& aIndex : aSelectionIndexes)
aSelectedRows.push_back(aIndex.row());
});
return aSelectedRows;
}
void QtInstanceTreeView::set_font_color(int, const Color&)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::scroll_to_row(int) { assert(false && "Not implemented yet"); }
bool QtInstanceTreeView::is_selected(int) const
{
assert(false && "Not implemented yet");
return false;
}
int QtInstanceTreeView::get_cursor_index() const
{
SolarMutexGuard g;
int nIndex = -1;
GetQtInstance().RunInMainThread([&] {
const QModelIndex aCurrentIndex = m_pSelectionModel->currentIndex();
if (aCurrentIndex.isValid())
nIndex = aCurrentIndex.row();
});
return nIndex;
}
void QtInstanceTreeView::set_cursor(int nPos)
{
SolarMutexGuard g;
GetQtInstance().RunInMainThread([&] {
m_pSelectionModel->setCurrentIndex(m_pModel->index(nPos, 0), QItemSelectionModel::NoUpdate);
});
}
int QtInstanceTreeView::find_text(const OUString& rText) const
{
SolarMutexGuard g;
int nIndex = -1;
GetQtInstance().RunInMainThread([&] {
const QList<QStandardItem*> aItems = m_pModel->findItems(toQString(rText));
if (!aItems.empty())
nIndex = aItems.at(0)->index().row();
});
return nIndex;
}
OUString QtInstanceTreeView::get_id(int nPos) const
{
SolarMutexGuard g;
OUString sId;
GetQtInstance().RunInMainThread([&] {
tdf#130857 qt weld: Fix incorrect param order for row/col In QtInstanceTreeView::get_id, the nPos param is the row number, but was incorrectly passed as the second parameter to QStandardItemModel::index [1] which is for the column. Swap the params to fix that. Passing incorrectly would trigger a crash in a WIP branch for Writer's "Tools" -> "XML Filter Settings" dialog when clicking on the second row, as the ID data is only set for the item in the first, not the second column, so `pInfo` in XMLFilterSettingsDialog::updateStates would be null. Backtrace: 1 XMLFilterSettingsDialog::updateStates xmlfiltersettingsdialog.cxx 183 0x7f3eb862194e 2 XMLFilterSettingsDialog::SelectionChangedHdl_Impl xmlfiltersettingsdialog.cxx 153 0x7f3eb8621859 3 XMLFilterSettingsDialog::LinkStubSelectionChangedHdl_Impl xmlfiltersettingsdialog.cxx 151 0x7f3eb861e8cd 4 Link<weld::TreeView&, void>::Call link.hxx 111 0x7f3eeb997aa1 5 weld::TreeView::signal_selection_changed weld.hxx 989 0x7f3eeb99733c 6 QtInstanceTreeView::handleSelectionChanged QtInstanceTreeView.cxx 781 0x7f3eeb98cb2d 7 QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (QtInstanceTreeView:: *)()>::call(void (QtInstanceTreeView:: *)(), QtInstanceTreeView *, void * *)::{lambda()#1}::operator()() const qobjectdefs_impl.h 127 0x7f3eeb998141 8 QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (QtInstanceTreeView:: *)()>::call(void (QtInstanceTreeView:: *)(), QtInstanceTreeView *, void * *)::{lambda()#1}>(void * *, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (QtInstanceTreeView:: *)()>::call(void (QtInstanceTreeView:: *)(), QtInstanceTreeView *, void * *)::{lambda()#1}&&) qobjectdefs_impl.h 65 0x7f3eeb998079 9 QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (QtInstanceTreeView:: *)()>::call(void (QtInstanceTreeView:: *)(), QtInstanceTreeView *, void * *) qobjectdefs_impl.h 126 0x7f3eeb997fab 10 QtPrivate::FunctionPointer<void (QtInstanceTreeView:: *)()>::call<QtPrivate::List<>, void>(void (QtInstanceTreeView:: *)(), QtInstanceTreeView *, void * *) qobjectdefs_impl.h 174 0x7f3eeb997f2d 11 QtPrivate::QCallableObject<void (QtInstanceTreeView:: *)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void * *, bool *) qobjectdefs_impl.h 545 0x7f3eeb997e56 12 QtPrivate::QSlotObjectBase::call qobjectdefs_impl.h 461 0x7f3eeaa5ce22 13 doActivate<false> qobject.cpp 4139 0x7f3eeab1c644 14 QMetaObject::activate qobject.cpp 4199 0x7f3eeab121b3 15 QMetaObject::activate<void, QItemSelection, QItemSelection> qobjectdefs.h 306 0x7f3eeaf93da5 16 QItemSelectionModel::selectionChanged moc_qitemselectionmodel.cpp 390 0x7f3eeaf85b76 17 QItemSelectionModel::emitSelectionChanged qitemselectionmodel.cpp 2029 0x7f3eeaf87a2f 18 QItemSelectionModel::select qitemselectionmodel.cpp 1372 0x7f3eeaf872f9 19 QTreeViewPrivate::select qtreeview.cpp 4016 0x7f3ee906f2ec 20 QTreeView::setSelection qtreeview.cpp 2393 0x7f3ee906eaae ... <More> Change-Id: Icf6b3004ab95991da69c0ff86201421d620aaa43 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178066 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-12-07 23:02:08 +01:00
QVariant aRoleData = m_pModel->data(m_pModel->index(nPos, 0), ROLE_ID);
if (aRoleData.canConvert<QString>())
sId = toOUString(aRoleData.toString());
});
return sId;
}
int QtInstanceTreeView::find_id(const OUString& rId) const
{
SolarMutexGuard g;
int nIndex = -1;
GetQtInstance().RunInMainThread([&] {
for (int i = 0; i < m_pModel->rowCount(); i++)
{
if (get_id(i) == rId)
{
nIndex = i;
return;
}
}
});
return nIndex;
}
std::unique_ptr<weld::TreeIter> QtInstanceTreeView::make_iterator(const weld::TreeIter*) const
{
assert(false && "Not implemented yet");
return nullptr;
}
void QtInstanceTreeView::copy_iterator(const weld::TreeIter&, weld::TreeIter&) const
{
assert(false && "Not implemented yet");
}
bool QtInstanceTreeView::get_selected(weld::TreeIter*) const
{
assert(false && "Not implemented yet");
return false;
}
bool QtInstanceTreeView::get_cursor(weld::TreeIter*) const
{
assert(false && "Not implemented yet");
return false;
}
void QtInstanceTreeView::set_cursor(const weld::TreeIter&)
{
assert(false && "Not implemented yet");
}
bool QtInstanceTreeView::get_iter_first(weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return false;
}
bool QtInstanceTreeView::iter_next_sibling(weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return false;
}
bool QtInstanceTreeView::iter_previous_sibling(weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return false;
}
bool QtInstanceTreeView::iter_next(weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return false;
}
bool QtInstanceTreeView::iter_previous(weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return false;
}
bool QtInstanceTreeView::iter_children(weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return false;
}
bool QtInstanceTreeView::iter_parent(weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return false;
}
int QtInstanceTreeView::get_iter_depth(const weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return -1;
}
int QtInstanceTreeView::get_iter_index_in_parent(const weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return -1;
}
int QtInstanceTreeView::iter_compare(const weld::TreeIter&, const weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return 0;
}
bool QtInstanceTreeView::iter_has_child(const weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return false;
}
int QtInstanceTreeView::iter_n_children(const weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return -1;
}
void QtInstanceTreeView::remove(const weld::TreeIter&) { assert(false && "Not implemented yet"); }
void QtInstanceTreeView::select(const weld::TreeIter&) { assert(false && "Not implemented yet"); }
void QtInstanceTreeView::unselect(const weld::TreeIter&) { assert(false && "Not implemented yet"); }
void QtInstanceTreeView::set_extra_row_indent(const weld::TreeIter&, int)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::set_text(const weld::TreeIter&, const OUString&, int)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::set_sensitive(const weld::TreeIter&, bool, int)
{
assert(false && "Not implemented yet");
}
bool QtInstanceTreeView::get_sensitive(const weld::TreeIter&, int) const
{
assert(false && "Not implemented yet");
return false;
}
void QtInstanceTreeView::set_text_emphasis(const weld::TreeIter&, bool, int)
{
assert(false && "Not implemented yet");
}
bool QtInstanceTreeView::get_text_emphasis(const weld::TreeIter&, int) const
{
assert(false && "Not implemented yet");
return false;
}
void QtInstanceTreeView::set_text_align(const weld::TreeIter&, double, int)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::set_toggle(const weld::TreeIter&, TriState, int)
{
assert(false && "Not implemented yet");
}
TriState QtInstanceTreeView::get_toggle(const weld::TreeIter&, int) const
{
assert(false && "Not implemented yet");
return TRISTATE_INDET;
}
OUString QtInstanceTreeView::get_text(const weld::TreeIter&, int) const
{
assert(false && "Not implemented yet");
return OUString();
}
void QtInstanceTreeView::set_id(const weld::TreeIter&, const OUString&)
{
assert(false && "Not implemented yet");
}
OUString QtInstanceTreeView::get_id(const weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return OUString();
}
void QtInstanceTreeView::set_image(const weld::TreeIter&, const OUString&, int)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::set_image(const weld::TreeIter&, VirtualDevice&, int)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::set_image(const weld::TreeIter&,
const css::uno::Reference<css::graphic::XGraphic>&, int)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::set_font_color(const weld::TreeIter&, const Color&)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::scroll_to_row(const weld::TreeIter&)
{
assert(false && "Not implemented yet");
}
bool QtInstanceTreeView::is_selected(const weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return false;
}
void QtInstanceTreeView::move_subtree(weld::TreeIter&, const weld::TreeIter*, int)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::all_foreach(const std::function<bool(weld::TreeIter&)>&)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::selected_foreach(const std::function<bool(weld::TreeIter&)>&)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::visible_foreach(const std::function<bool(weld::TreeIter&)>&)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::bulk_insert_for_each(
int, const std::function<void(weld::TreeIter&, int nSourceIndex)>&, const weld::TreeIter*,
const std::vector<int>*, bool)
{
assert(false && "Not implemented yet");
}
bool QtInstanceTreeView::get_row_expanded(const weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return false;
}
void QtInstanceTreeView::expand_row(const weld::TreeIter&)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::collapse_row(const weld::TreeIter&)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::set_children_on_demand(const weld::TreeIter&, bool)
{
assert(false && "Not implemented yet");
}
bool QtInstanceTreeView::get_children_on_demand(const weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return false;
}
void QtInstanceTreeView::set_show_expanders(bool) { assert(false && "Not implemented yet"); }
void QtInstanceTreeView::start_editing(const weld::TreeIter&)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::end_editing() { assert(false && "Not implemented yet"); }
void QtInstanceTreeView::enable_drag_source(rtl::Reference<TransferDataContainer>&, sal_uInt8)
{
assert(false && "Not implemented yet");
}
int QtInstanceTreeView::n_children() const
{
SolarMutexGuard g;
int nChildCount;
GetQtInstance().RunInMainThread(
[&] { nChildCount = m_pModel->rowCount(m_pModel->invisibleRootItem()->index()); });
return nChildCount;
}
void QtInstanceTreeView::make_sorted() { assert(false && "Not implemented yet"); }
void QtInstanceTreeView::make_unsorted() { assert(false && "Not implemented yet"); }
bool QtInstanceTreeView::get_sort_order() const
{
assert(false && "Not implemented yet");
return false;
}
void QtInstanceTreeView::set_sort_order(bool) { assert(false && "Not implemented yet"); }
void QtInstanceTreeView::set_sort_indicator(TriState, int)
{
assert(false && "Not implemented yet");
}
TriState QtInstanceTreeView::get_sort_indicator(int) const
{
assert(false && "Not implemented yet");
return TRISTATE_INDET;
}
int QtInstanceTreeView::get_sort_column() const
{
assert(false && "Not implemented yet");
return -1;
}
void QtInstanceTreeView::set_sort_column(int) { assert(false && "Not implemented yet"); }
void QtInstanceTreeView::clear()
{
SolarMutexGuard g;
GetQtInstance().RunInMainThread([&] {
// don't use QStandardItemModel::clear, as that would remove header data as well
m_pModel->removeRows(0, m_pModel->rowCount());
});
}
int QtInstanceTreeView::get_height_rows(int) const
{
SAL_WARN("vcl.qt", "QtInstanceTreeView::get_height_rows just returns 0 for now");
return 0;
}
void QtInstanceTreeView::columns_autosize()
{
SolarMutexGuard g;
GetQtInstance().RunInMainThread([&] {
for (int i = 0; i < m_pModel->columnCount(); i++)
m_pTreeView->resizeColumnToContents(i);
});
}
void QtInstanceTreeView::set_column_fixed_widths(const std::vector<int>&)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::set_column_editables(const std::vector<bool>&)
{
assert(false && "Not implemented yet");
}
int QtInstanceTreeView::get_column_width(int) const
{
assert(false && "Not implemented yet");
return 0;
}
void QtInstanceTreeView::set_centered_column(int) { assert(false && "Not implemented yet"); }
OUString QtInstanceTreeView::get_column_title(int) const
{
assert(false && "Not implemented yet");
return OUString();
}
void QtInstanceTreeView::set_column_title(int, const OUString&)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::set_selection_mode(SelectionMode eMode)
{
SolarMutexGuard g;
GetQtInstance().RunInMainThread(
[&] { m_pTreeView->setSelectionMode(mapSelectionMode(eMode)); });
}
int QtInstanceTreeView::count_selected_rows() const
{
assert(false && "Not implemented yet");
return 0;
}
void QtInstanceTreeView::remove_selection() { assert(false && "Not implemented yet"); }
bool QtInstanceTreeView::changed_by_hover() const
{
assert(false && "Not implemented yet");
return false;
}
void QtInstanceTreeView::vadjustment_set_value(int) { assert(false && "Not implemented yet"); }
int QtInstanceTreeView::vadjustment_get_value() const
{
assert(false && "Not implemented yet");
return -1;
}
void QtInstanceTreeView::set_column_custom_renderer(int, bool)
{
assert(false && "Not implemented yet");
}
void QtInstanceTreeView::queue_draw() { assert(false && "Not implemented yet"); }
bool QtInstanceTreeView::get_dest_row_at_pos(const Point&, weld::TreeIter*, bool, bool)
{
assert(false && "Not implemented yet");
return false;
}
void QtInstanceTreeView::unset_drag_dest_row() { assert(false && "Not implemented yet"); }
tools::Rectangle QtInstanceTreeView::get_row_area(const weld::TreeIter&) const
{
assert(false && "Not implemented yet");
return tools::Rectangle();
}
weld::TreeView* QtInstanceTreeView::get_drag_source() const
{
assert(false && "Not implemented yet");
return nullptr;
}
QAbstractItemView::SelectionMode QtInstanceTreeView::mapSelectionMode(SelectionMode eMode)
{
switch (eMode)
{
case SelectionMode::NONE:
return QAbstractItemView::NoSelection;
case SelectionMode::Single:
return QAbstractItemView::SingleSelection;
case SelectionMode::Range:
return QAbstractItemView::ContiguousSelection;
case SelectionMode::Multiple:
return QAbstractItemView::ExtendedSelection;
default:
assert(false && "unhandled selection mode");
return QAbstractItemView::SingleSelection;
}
}
void QtInstanceTreeView::handleActivated()
{
SolarMutexGuard g;
signal_row_activated();
}
void QtInstanceTreeView::handleSelectionChanged()
{
SolarMutexGuard g;
signal_selection_changed();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */