diff options
| author | Petr Mrázek <peterix@gmail.com> | 2021-10-25 23:51:42 +0200 |
|---|---|---|
| committer | Petr Mrázek <peterix@gmail.com> | 2021-10-25 23:51:42 +0200 |
| commit | ae4939e0d2e8774b823865cce0a8e822d04673a5 (patch) | |
| tree | 921873298ec1d39cedb68e1d64c3340122620a93 /launcher | |
| parent | 85ecbad46755d42e3e0682dfe24e587ee3157565 (diff) | |
| download | PrismLauncher-ae4939e0d2e8774b823865cce0a8e822d04673a5.tar.gz PrismLauncher-ae4939e0d2e8774b823865cce0a8e822d04673a5.tar.bz2 PrismLauncher-ae4939e0d2e8774b823865cce0a8e822d04673a5.zip | |
GH-4164 Assign instances to groups using drag & drop
Diffstat (limited to 'launcher')
| -rw-r--r-- | launcher/CMakeLists.txt | 24 | ||||
| -rw-r--r-- | launcher/InstanceList.cpp | 47 | ||||
| -rw-r--r-- | launcher/InstanceList.h | 12 | ||||
| -rw-r--r-- | launcher/InstanceProxyModel.cpp | 38 | ||||
| -rw-r--r-- | launcher/InstanceProxyModel.h | 19 | ||||
| -rw-r--r-- | launcher/Launcher.cpp | 2 | ||||
| -rw-r--r-- | launcher/MainWindow.cpp | 16 | ||||
| -rw-r--r-- | launcher/MainWindow.h | 4 | ||||
| -rw-r--r-- | launcher/dialogs/IconPickerDialog.cpp | 8 | ||||
| -rw-r--r-- | launcher/groupview/GroupedProxyModel.cpp | 48 | ||||
| -rw-r--r-- | launcher/instanceview/AccessibleInstanceView.cpp (renamed from launcher/groupview/AccessibleGroupView.cpp) | 140 | ||||
| -rw-r--r-- | launcher/instanceview/AccessibleInstanceView.h (renamed from launcher/groupview/AccessibleGroupView.h) | 0 | ||||
| -rw-r--r-- | launcher/instanceview/AccessibleInstanceView_p.h (renamed from launcher/groupview/AccessibleGroupView_p.h) | 14 | ||||
| -rw-r--r-- | launcher/instanceview/InstanceDelegate.cpp (renamed from launcher/groupview/InstanceDelegate.cpp) | 6 | ||||
| -rw-r--r-- | launcher/instanceview/InstanceDelegate.h (renamed from launcher/groupview/InstanceDelegate.h) | 0 | ||||
| -rw-r--r-- | launcher/instanceview/InstanceProxyModel.cpp | 71 | ||||
| -rw-r--r-- | launcher/instanceview/InstanceProxyModel.h (renamed from launcher/groupview/GroupedProxyModel.h) | 13 | ||||
| -rw-r--r-- | launcher/instanceview/InstanceView.cpp (renamed from launcher/groupview/GroupView.cpp) | 181 | ||||
| -rw-r--r-- | launcher/instanceview/InstanceView.h (renamed from launcher/groupview/GroupView.h) | 24 | ||||
| -rw-r--r-- | launcher/instanceview/VisualGroup.cpp (renamed from launcher/groupview/VisualGroup.cpp) | 6 | ||||
| -rw-r--r-- | launcher/instanceview/VisualGroup.h (renamed from launcher/groupview/VisualGroup.h) | 6 |
21 files changed, 345 insertions, 334 deletions
diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index d67dcdbf..691ff004 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -573,8 +573,6 @@ SET(LAUNCHER_SOURCES GuiUtil.cpp ColumnResizer.h ColumnResizer.cpp - InstanceProxyModel.h - InstanceProxyModel.cpp VersionProxyModel.h VersionProxyModel.cpp ColorCache.h @@ -802,17 +800,17 @@ SET(LAUNCHER_SOURCES widgets/WideBar.cpp # GUI - instance group view - groupview/GroupedProxyModel.cpp - groupview/GroupedProxyModel.h - groupview/AccessibleGroupView.cpp - groupview/AccessibleGroupView.h - groupview/AccessibleGroupView_p.h - groupview/GroupView.cpp - groupview/GroupView.h - groupview/InstanceDelegate.cpp - groupview/InstanceDelegate.h - groupview/VisualGroup.cpp - groupview/VisualGroup.h + instanceview/InstanceProxyModel.cpp + instanceview/InstanceProxyModel.h + instanceview/AccessibleInstanceView.cpp + instanceview/AccessibleInstanceView.h + instanceview/AccessibleInstanceView_p.h + instanceview/InstanceView.cpp + instanceview/InstanceView.h + instanceview/InstanceDelegate.cpp + instanceview/InstanceDelegate.h + instanceview/VisualGroup.cpp + instanceview/VisualGroup.h ) ######## UIs ######## diff --git a/launcher/InstanceList.cpp b/launcher/InstanceList.cpp index ae905414..ad18740b 100644 --- a/launcher/InstanceList.cpp +++ b/launcher/InstanceList.cpp @@ -26,6 +26,7 @@ #include <QUuid> #include <QJsonArray> #include <QJsonDocument> +#include <QMimeData> #include "InstanceList.h" #include "BaseInstance.h" @@ -63,6 +64,50 @@ InstanceList::~InstanceList() { } +Qt::DropActions InstanceList::supportedDragActions() const +{ + return Qt::MoveAction; +} + +Qt::DropActions InstanceList::supportedDropActions() const +{ + return Qt::MoveAction; +} + +bool InstanceList::canDropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) const +{ + if(data && data->hasFormat("application/x-instanceid")) { + return true; + } + return false; +} + +bool InstanceList::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) +{ + if(data && data->hasFormat("application/x-instanceid")) { + return true; + } + return false; +} + +QStringList InstanceList::mimeTypes() const +{ + auto types = QAbstractListModel::mimeTypes(); + types.push_back("application/x-instanceid"); + return types; +} + +QMimeData * InstanceList::mimeData(const QModelIndexList& indexes) const +{ + auto mimeData = QAbstractListModel::mimeData(indexes); + if(indexes.size() == 1) { + auto instanceId = data(indexes[0], InstanceIDRole).toString(); + mimeData->setData("application/x-instanceid", instanceId.toUtf8()); + } + return mimeData; +} + + int InstanceList::rowCount(const QModelIndex &parent) const { Q_UNUSED(parent); @@ -112,7 +157,7 @@ QVariant InstanceList::data(const QModelIndex &index, int role) const { return pdata->iconKey(); } - // HACK: see GroupView.h in gui! + // HACK: see InstanceView.h in gui! case GroupRole: { return getInstanceGroup(pdata->id()); diff --git a/launcher/InstanceList.h b/launcher/InstanceList.h index 4d2dc1f6..bc6c3af0 100644 --- a/launcher/InstanceList.h +++ b/launcher/InstanceList.h @@ -93,7 +93,6 @@ public: InstListError loadList(); void saveNow(); - InstancePtr getInstanceById(QString id) const; QModelIndex getInstanceIndexById(const QString &id) const; QStringList getGroups(); @@ -128,6 +127,17 @@ public: int getTotalPlayTime(); + Qt::DropActions supportedDragActions() const override; + + Qt::DropActions supportedDropActions() const override; + + bool canDropMimeData(const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent) const override; + + bool dropMimeData(const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent) override; + + QStringList mimeTypes() const override; + QMimeData *mimeData(const QModelIndexList &indexes) const override; + signals: void dataIsInvalid(); void instancesChanged(); diff --git a/launcher/InstanceProxyModel.cpp b/launcher/InstanceProxyModel.cpp deleted file mode 100644 index 9ee38a65..00000000 --- a/launcher/InstanceProxyModel.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include "InstanceProxyModel.h" -#include "Launcher.h" -#include <BaseInstance.h> -#include <icons/IconList.h> - -InstanceProxyModel::InstanceProxyModel(QObject *parent) : GroupedProxyModel(parent) -{ - m_naturalSort.setNumericMode(true); - m_naturalSort.setCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive); - // FIXME: use loaded translation as source of locale instead, hook this up to translation changes - m_naturalSort.setLocale(QLocale::system()); -} - -QVariant InstanceProxyModel::data(const QModelIndex & index, int role) const -{ - QVariant data = QSortFilterProxyModel::data(index, role); - if(role == Qt::DecorationRole) - { - return QVariant(LAUNCHER->icons()->getIcon(data.toString())); - } - return data; -} - -bool InstanceProxyModel::subSortLessThan(const QModelIndex &left, - const QModelIndex &right) const -{ - BaseInstance *pdataLeft = static_cast<BaseInstance *>(left.internalPointer()); - BaseInstance *pdataRight = static_cast<BaseInstance *>(right.internalPointer()); - QString sortMode = LAUNCHER->settings()->get("InstSortMode").toString(); - if (sortMode == "LastLaunch") - { - return pdataLeft->lastLaunch() > pdataRight->lastLaunch(); - } - else - { - return m_naturalSort.compare(pdataLeft->name(), pdataRight->name()) < 0; - } -} diff --git a/launcher/InstanceProxyModel.h b/launcher/InstanceProxyModel.h deleted file mode 100644 index baf2794b..00000000 --- a/launcher/InstanceProxyModel.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include "groupview/GroupedProxyModel.h" -#include <QCollator> - -/** - * A proxy model that is responsible for sorting instances into groups - */ -class InstanceProxyModel : public GroupedProxyModel -{ -public: - explicit InstanceProxyModel(QObject *parent = 0); - QVariant data(const QModelIndex & index, int role) const override; - -protected: - virtual bool subSortLessThan(const QModelIndex &left, const QModelIndex &right) const override; -private: - QCollator m_naturalSort; -}; diff --git a/launcher/Launcher.cpp b/launcher/Launcher.cpp index e5deb791..5036b7ff 100644 --- a/launcher/Launcher.cpp +++ b/launcher/Launcher.cpp @@ -3,7 +3,7 @@ #include "MainWindow.h" #include "InstanceWindow.h" -#include "groupview/AccessibleGroupView.h" +#include "instanceview/AccessibleInstanceView.h" #include <QAccessible> #include "pages/BasePageProvider.h" diff --git a/launcher/MainWindow.cpp b/launcher/MainWindow.cpp index 0c414285..21502894 100644 --- a/launcher/MainWindow.cpp +++ b/launcher/MainWindow.cpp @@ -67,11 +67,11 @@ #include <DesktopServices.h> #include "InstanceWindow.h" #include "InstancePageProvider.h" -#include "InstanceProxyModel.h" +#include "instanceview/InstanceProxyModel.h" #include "JavaCommon.h" #include "LaunchController.h" -#include "groupview/GroupView.h" -#include "groupview/InstanceDelegate.h" +#include "instanceview/InstanceView.h" +#include "instanceview/InstanceDelegate.h" #include "widgets/LabeledToolButton.h" #include "dialogs/NewInstanceDialog.h" #include "dialogs/ProgressDialog.h" @@ -695,7 +695,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new MainWindow // Create the instance list widget { - view = new GroupView(ui->centralWidget); + view = new InstanceView(ui->centralWidget); view->setSelectionMode(QAbstractItemView::SingleSelection); // FIXME: leaks ListViewDelegate @@ -707,7 +707,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new MainWindow view->installEventFilter(this); view->setContextMenuPolicy(Qt::CustomContextMenu); connect(view, &QWidget::customContextMenuRequested, this, &MainWindow::showInstanceContextMenu); - connect(view, &GroupView::droppedURLs, this, &MainWindow::droppedURLs, Qt::QueuedConnection); + connect(view, &InstanceView::droppedURLs, this, &MainWindow::droppedURLs, Qt::QueuedConnection); proxymodel = new InstanceProxyModel(this); proxymodel->setSourceModel(LAUNCHER->instances().get()); @@ -718,7 +718,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new MainWindow view->setSourceOfGroupCollapseStatus([](const QString & groupName)->bool { return LAUNCHER->instances()->isGroupCollapsed(groupName); }); - connect(view, &GroupView::groupStateChanged, LAUNCHER->instances().get(), &InstanceList::on_GroupStateChanged); + connect(view, &InstanceView::groupStateChanged, LAUNCHER->instances().get(), &InstanceList::on_GroupStateChanged); ui->horizontalLayout->addWidget(view); } // The cat background @@ -730,7 +730,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new MainWindow setCatBackground(cat_enable); } // start instance when double-clicked - connect(view, &GroupView::activated, this, &MainWindow::instanceActivated); + connect(view, &InstanceView::activated, this, &MainWindow::instanceActivated); // track the selection -- update the instance toolbar connect(view->selectionModel(), &QItemSelectionModel::currentChanged, this, &MainWindow::instanceChanged); @@ -1313,7 +1313,7 @@ void MainWindow::setCatBackground(bool enabled) QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0)); QString cat = (non_stupid_abs(now.daysTo(xmas)) <= 4) ? "catmas" : "kitteh"; view->setStyleSheet(QString(R"( -GroupView +InstanceView { background-image: url(:/backgrounds/%1); background-attachment: fixed; diff --git a/launcher/MainWindow.h b/launcher/MainWindow.h index 38e5b4b5..c2ad46ea 100644 --- a/launcher/MainWindow.h +++ b/launcher/MainWindow.h @@ -35,7 +35,7 @@ class LabeledToolButton; class QLabel; class MinecraftLauncher; class BaseProfilerFactory; -class GroupView; +class InstanceView; class KonamiCode; class InstanceTask; @@ -201,7 +201,7 @@ private: std::unique_ptr<Ui> ui; // these are managed by Qt's memory management model! - GroupView *view = nullptr; + InstanceView *view = nullptr; InstanceProxyModel *proxymodel = nullptr; QToolButton *newsLabel = nullptr; QLabel *m_statusLeft = nullptr; diff --git a/launcher/dialogs/IconPickerDialog.cpp b/launcher/dialogs/IconPickerDialog.cpp index 3878d8e3..a1c432a8 100644 --- a/launcher/dialogs/IconPickerDialog.cpp +++ b/launcher/dialogs/IconPickerDialog.cpp @@ -22,7 +22,7 @@ #include "IconPickerDialog.h" #include "ui_IconPickerDialog.h" -#include "groupview/InstanceDelegate.h" +#include "instanceview/InstanceDelegate.h" #include "icons/IconList.h" #include "icons/IconUtils.h" @@ -126,8 +126,9 @@ void IconPickerDialog::selectionChanged(QItemSelection selected, QItemSelection return; QString key = selected.first().indexes().first().data(Qt::UserRole).toString(); - if (!key.isEmpty()) + if (!key.isEmpty()) { selectedIconKey = key; + } } int IconPickerDialog::execWithSelection(QString selection) @@ -141,8 +142,7 @@ int IconPickerDialog::execWithSelection(QString selection) contentsWidget->selectionModel()->select( model_index, QItemSelectionModel::Current | QItemSelectionModel::Select); - QMetaObject::invokeMethod(this, "delayed_scroll", Qt::QueuedConnection, - Q_ARG(QModelIndex, model_index)); + QMetaObject::invokeMethod(this, "delayed_scroll", Qt::QueuedConnection, Q_ARG(QModelIndex, model_index)); return QDialog::exec(); } diff --git a/launcher/groupview/GroupedProxyModel.cpp b/launcher/groupview/GroupedProxyModel.cpp deleted file mode 100644 index dc4212d5..00000000 --- a/launcher/groupview/GroupedProxyModel.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "GroupedProxyModel.h" - -#include "GroupView.h" -#include <QDebug> - -GroupedProxyModel::GroupedProxyModel(QObject *parent) : QSortFilterProxyModel(parent) -{ -} - -bool GroupedProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const -{ - const QString leftCategory = left.data(GroupViewRoles::GroupRole).toString(); - const QString rightCategory = right.data(GroupViewRoles::GroupRole).toString(); - if (leftCategory == rightCategory) - { - return subSortLessThan(left, right); - } - else - { - // FIXME: real group sorting happens in GroupView::updateGeometries(), see LocaleString - auto result = leftCategory.localeAwareCompare(rightCategory); - if(result == 0) - { - return subSortLessThan(left, right); - } - return result < 0; - } -} - -bool GroupedProxyModel::subSortLessThan(const QModelIndex &left, const QModelIndex &right) const -{ - return left.row() < right.row(); -} diff --git a/launcher/groupview/AccessibleGroupView.cpp b/launcher/instanceview/AccessibleInstanceView.cpp index c6541f18..7de3ac72 100644 --- a/launcher/groupview/AccessibleGroupView.cpp +++ b/launcher/instanceview/AccessibleInstanceView.cpp @@ -1,6 +1,6 @@ -#include "GroupView.h" -#include "AccessibleGroupView.h" -#include "AccessibleGroupView_p.h" +#include "InstanceView.h" +#include "AccessibleInstanceView.h" +#include "AccessibleInstanceView_p.h" #include <qvariant.h> #include <qaccessible.h> @@ -16,44 +16,44 @@ QAccessibleInterface *groupViewAccessibleFactory(const QString &classname, QObje QWidget *widget = static_cast<QWidget*>(object); - if (classname == QLatin1String("GroupView")) { - iface = new AccessibleGroupView((GroupView *)widget); + if (classname == QLatin1String("InstanceView")) { + iface = new AccessibleInstanceView((InstanceView *)widget); } return iface; } -QAbstractItemView *AccessibleGroupView::view() const +QAbstractItemView *AccessibleInstanceView::view() const { return qobject_cast<QAbstractItemView*>(object()); } -int AccessibleGroupView::logicalIndex(const QModelIndex &index) const +int AccessibleInstanceView::logicalIndex(const QModelIndex &index) const { if (!view()->model() || !index.isValid()) return -1; return index.row() * (index.model()->columnCount()) + index.column(); } -AccessibleGroupView::AccessibleGroupView(QWidget *w) +AccessibleInstanceView::AccessibleInstanceView(QWidget *w) : QAccessibleObject(w) { Q_ASSERT(view()); } -bool AccessibleGroupView::isValid() const +bool AccessibleInstanceView::isValid() const { return view(); } -AccessibleGroupView::~AccessibleGroupView() +AccessibleInstanceView::~AccessibleInstanceView() { for (QAccessible::Id id : childToId) { QAccessible::deleteAccessibleInterface(id); } } -QAccessibleInterface *AccessibleGroupView::cellAt(int row, int column) const +QAccessibleInterface *AccessibleInstanceView::cellAt(int row, int column) const { if (!view()->model()) { return 0; @@ -61,19 +61,19 @@ QAccessibleInterface *AccessibleGroupView::cellAt(int row, int column) const QModelIndex index = view()->model()->index(row, column, view()->rootIndex()); if (Q_UNLIKELY(!index.isValid())) { - qWarning() << "AccessibleGroupView::cellAt: invalid index: " << index << " for " << view(); + qWarning() << "AccessibleInstanceView::cellAt: invalid index: " << index << " for " << view(); return 0; } return child(logicalIndex(index)); } -QAccessibleInterface *AccessibleGroupView::caption() const +QAccessibleInterface *AccessibleInstanceView::caption() const { return 0; } -QString AccessibleGroupView::columnDescription(int column) const +QString AccessibleInstanceView::columnDescription(int column) const { if (!view()->model()) return QString(); @@ -81,49 +81,49 @@ QString AccessibleGroupView::columnDescription(int column) const return view()->model()->headerData(column, Qt::Horizontal).toString(); } -int AccessibleGroupView::columnCount() const +int AccessibleInstanceView::columnCount() const { if (!view()->model()) return 0; return 1; } -int AccessibleGroupView::rowCount() const +int AccessibleInstanceView::rowCount() const { if (!view()->model()) return 0; return view()->model()->rowCount(); } -int AccessibleGroupView::selectedCellCount() const +int AccessibleInstanceView::selectedCellCount() const { if (!view()->selectionModel()) return 0; return view()->selectionModel()->selectedIndexes().count(); } -int AccessibleGroupView::selectedColumnCount() const +int AccessibleInstanceView::selectedColumnCount() const { if (!view()->selectionModel()) return 0; return view()->selectionModel()->selectedColumns().count(); } -int AccessibleGroupView::selectedRowCount() const +int AccessibleInstanceView::selectedRowCount() const { if (!view()->selectionModel()) return 0; return view()->selectionModel()->selectedRows().count(); } -QString AccessibleGroupView::rowDescription(int row) const +QString AccessibleInstanceView::rowDescription(int row) const { if (!view()->model()) return QString(); return view()->model()->headerData(row, Qt::Vertical).toString(); } -QList<QAccessibleInterface *> AccessibleGroupView::selectedCells() const +QList<QAccessibleInterface *> AccessibleInstanceView::selectedCells() const { QList<QAccessibleInterface*> cells; if (!view()->selectionModel()) @@ -135,7 +135,7 @@ QList<QAccessibleInterface *> AccessibleGroupView::selectedCells() const return cells; } -QList<int> AccessibleGroupView::selectedColumns() const +QList<int> AccessibleInstanceView::selectedColumns() const { if (!view()->selectionModel()) { return QList<int>(); @@ -152,7 +152,7 @@ QList<int> AccessibleGroupView::selectedColumns() const return columns; } -QList<int> AccessibleGroupView::selectedRows() const +QList<int> AccessibleInstanceView::selectedRows() const { if (!view()->selectionModel()) { return QList<int>(); @@ -170,12 +170,12 @@ QList<int> AccessibleGroupView::selectedRows() const return rows; } -QAccessibleInterface *AccessibleGroupView::summary() const +QAccessibleInterface *AccessibleInstanceView::summary() const { return 0; } -bool AccessibleGroupView::isColumnSelected(int column) const +bool AccessibleInstanceView::isColumnSelected(int column) const { if (!view()->selectionModel()) { return false; @@ -184,7 +184,7 @@ bool AccessibleGroupView::isColumnSelected(int column) const return view()->selectionModel()->isColumnSelected(column, QModelIndex()); } -bool AccessibleGroupView::isRowSelected(int row) const +bool AccessibleInstanceView::isRowSelected(int row) const { if (!view()->selectionModel()) { return false; @@ -193,7 +193,7 @@ bool AccessibleGroupView::isRowSelected(int row) const return view()->selectionModel()->isRowSelected(row, QModelIndex()); } -bool AccessibleGroupView::selectRow(int row) +bool AccessibleInstanceView::selectRow(int row) { if (!view()->model() || !view()->selectionModel()) { return false; @@ -229,7 +229,7 @@ bool AccessibleGroupView::selectRow(int row) return true; } -bool AccessibleGroupView::selectColumn(int column) +bool AccessibleInstanceView::selectColumn(int column) { if (!view()->model() || !view()->selectionModel()) { return false; @@ -265,7 +265,7 @@ bool AccessibleGroupView::selectColumn(int column) return true; } -bool AccessibleGroupView::unselectRow(int row) +bool AccessibleInstanceView::unselectRow(int row) { if (!view()->model() || !view()->selectionModel()) { return false; @@ -308,7 +308,7 @@ bool AccessibleGroupView::unselectRow(int row) return true; } -bool AccessibleGroupView::unselectColumn(int column) +bool AccessibleInstanceView::unselectColumn(int column) { auto model = view()->model(); if (!model || !view()->selectionModel()) { @@ -350,17 +350,17 @@ bool AccessibleGroupView::unselectColumn(int column) return true; } -QAccessible::Role AccessibleGroupView::role() const +QAccessible::Role AccessibleInstanceView::role() const { return QAccessible::List; } -QAccessible::State AccessibleGroupView::state() const +QAccessible::State AccessibleInstanceView::state() const { return QAccessible::State(); } -QAccessibleInterface *AccessibleGroupView::childAt(int x, int y) const +QAccessibleInterface *AccessibleInstanceView::childAt(int x, int y) const { QPoint viewportOffset = view()->viewport()->mapTo(view(), QPoint(0,0)); QPoint indexPosition = view()->mapFromGlobal(QPoint(x, y) - viewportOffset); @@ -373,7 +373,7 @@ QAccessibleInterface *AccessibleGroupView::childAt(int x, int y) const return 0; } -int AccessibleGroupView::childCount() const +int AccessibleInstanceView::childCount() const { if (!view()->model()) { return 0; @@ -381,7 +381,7 @@ int AccessibleGroupView::childCount() const return (view()->model()->rowCount()) * (view()->model()->columnCount()); } -int AccessibleGroupView::indexOfChild(const QAccessibleInterface *iface) const +int AccessibleInstanceView::indexOfChild(const QAccessibleInterface *iface) const { if (!view()->model()) return -1; @@ -391,25 +391,25 @@ int AccessibleGroupView::indexOfChild(const QAccessibleInterface *iface) const Q_ASSERT(iface->role() != QAccessible::TreeItem); // should be handled by tree class if (iface->role() == QAccessible::Cell || iface->role() == QAccessible::ListItem) { - const AccessibleGroupViewItem* cell = static_cast<const AccessibleGroupViewItem*>(iface); + const AccessibleInstanceViewItem* cell = static_cast<const AccessibleInstanceViewItem*>(iface); return logicalIndex(cell->m_index); } else if (iface->role() == QAccessible::Pane) { return 0; // corner button } else { - qWarning() << "AccessibleGroupView::indexOfChild has a child with unknown role..." << iface->role() << iface->text(QAccessible::Name); + qWarning() << "AccessibleInstanceView::indexOfChild has a child with unknown role..." << iface->role() << iface->text(QAccessible::Name); } // FIXME: we are in denial of our children. this should stop. return -1; } -QString AccessibleGroupView::text(QAccessible::Text t) const +QString AccessibleInstanceView::text(QAccessible::Text t) const { if (t == QAccessible::Description) return view()->accessibleDescription(); return view()->accessibleName(); } -QRect AccessibleGroupView::rect() const +QRect AccessibleInstanceView::rect() const { if (!view()->isVisible()) return QRect(); @@ -417,7 +417,7 @@ QRect AccessibleGroupView::rect() const return QRect(pos.x(), pos.y(), view()->width(), view()->height()); } -QAccessibleInterface *AccessibleGroupView::parent() const +QAccessibleInterface *AccessibleInstanceView::parent() const { if (view() && view()->parent()) { if (qstrcmp("QComboBoxPrivateContainer", view()->parent()->metaObject()->className()) == 0) { @@ -428,7 +428,7 @@ QAccessibleInterface *AccessibleGroupView::parent() const return 0; } -QAccessibleInterface *AccessibleGroupView::child(int logicalIndex) const +QAccessibleInterface *AccessibleInstanceView::child(int logicalIndex) const { if (!view()->model()) return 0; @@ -446,24 +446,24 @@ QAccessibleInterface *AccessibleGroupView::child(int logicalIndex) const QModelIndex index = view()->model()->index(row, column, view()->rootIndex()); if (Q_UNLIKELY(!index.isValid())) { - qWarning("AccessibleGroupView::child: Invalid index at: %d %d", row, column); + qWarning("AccessibleInstanceView::child: Invalid index at: %d %d", row, column); return 0; } - iface = new AccessibleGroupViewItem(view(), index); + iface = new AccessibleInstanceViewItem(view(), index); QAccessible::registerAccessibleInterface(iface); childToId.insert(logicalIndex, QAccessible::uniqueId(iface)); return iface; } -void *AccessibleGroupView::interface_cast(QAccessible::InterfaceType t) +void *AccessibleInstanceView::interface_cast(QAccessible::InterfaceType t) { if (t == QAccessible::TableInterface) return static_cast<QAccessibleTableInterface*>(this); return 0; } -void AccessibleGroupView::modelChange(QAccessibleTableModelChangeEvent *event) +void AccessibleInstanceView::modelChange(QAccessibleTableModelChangeEvent *event) { // if there is no cache yet, we don't update anything if (childToId.isEmpty()) @@ -511,7 +511,7 @@ void AccessibleGroupView::modelChange(QAccessibleTableModelChangeEvent *event) Q_ASSERT(iface); if (iface->role() == QAccessible::Cell || iface->role() == QAccessible::ListItem) { Q_ASSERT(iface->tableCellInterface()); - AccessibleGroupViewItem *cell = static_cast<AccessibleGroupViewItem*>(iface->tableCellInterface()); + AccessibleInstanceViewItem *cell = static_cast<AccessibleInstanceViewItem*>(iface->tableCellInterface()); // Since it is a QPersistentModelIndex, we only need to check if it is valid if (cell->m_index.isValid()) newCache.insert(indexOfChild(cell), id); @@ -532,14 +532,14 @@ void AccessibleGroupView::modelChange(QAccessibleTableModelChangeEvent *event) // TABLE CELL -AccessibleGroupViewItem::AccessibleGroupViewItem(QAbstractItemView *view_, const QModelIndex &index_) +AccessibleInstanceViewItem::AccessibleInstanceViewItem(QAbstractItemView *view_, const QModelIndex &index_) : view(view_), m_index(index_) { if (Q_UNLIKELY(!index_.isValid())) - qWarning() << "AccessibleGroupViewItem::AccessibleGroupViewItem with invalid index: " << index_; + qWarning() << "AccessibleInstanceViewItem::AccessibleInstanceViewItem with invalid index: " << index_; } -void *AccessibleGroupViewItem::interface_cast(QAccessible::InterfaceType t) +void *AccessibleInstanceViewItem::interface_cast(QAccessible::InterfaceType t) { if (t == QAccessible::TableCellInterface) return static_cast<QAccessibleTableCellInterface*>(this); @@ -548,20 +548,20 @@ void *AccessibleGroupViewItem::interface_cast(QAccessible::InterfaceType t) return 0; } -int AccessibleGroupViewItem::columnExtent() const { return 1; } -int AccessibleGroupViewItem::rowExtent() const { return 1; } +int AccessibleInstanceViewItem::columnExtent() const { return 1; } +int AccessibleInstanceViewItem::rowExtent() const { return 1; } -QList<QAccessibleInterface*> AccessibleGroupViewItem::rowHeaderCells() const +QList<QAccessibleInterface*> AccessibleInstanceViewItem::rowHeaderCells() const { return {}; } -QList<QAccessibleInterface*> AccessibleGroupViewItem::columnHeaderCells() const +QList<QAccessibleInterface*> AccessibleInstanceViewItem::columnHeaderCells() const { return {}; } -int AccessibleGroupViewItem::columnIndex() const +int AccessibleInstanceViewItem::columnIndex() const { if (!isValid()) { return -1; @@ -570,7 +570,7 @@ int AccessibleGroupViewItem::columnIndex() const return m_index.column(); } -int AccessibleGroupViewItem::rowIndex() const +int AccessibleInstanceViewItem::rowIndex() const { if (!isValid()) { return -1; @@ -579,7 +579,7 @@ int AccessibleGroupViewItem::rowIndex() const return m_index.row(); } -bool AccessibleGroupViewItem::isSelected() const +bool AccessibleInstanceViewItem |
