Skip to content

Commit 4f2ce6b

Browse files
committed
chore: update window icon geometry via new taskmanager interface
目前,更新窗口所在任务栏区域的调用仍在依赖 ItemModel::instance() 模型, 此提交转而将相关实现补充到新的 taskmanager interface 中,并移除对即将 废弃的接口的调用. Log:
1 parent 2467e97 commit 4f2ce6b

12 files changed

+40
-30
lines changed

panels/dock/taskmanager/abstracttaskmanagerinterface.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ class AbstractTaskManagerInterface
6262
{
6363
callInterfaceMethod(index, &AbstractTaskManagerInterface::requestClose, force);
6464
}
65-
virtual void requestUpdateWindowGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate = nullptr) const
65+
virtual void requestUpdateWindowIconGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate = nullptr) const
6666
{
67-
callInterfaceMethod(index, &AbstractTaskManagerInterface::requestUpdateWindowGeometry, geometry, delegate);
67+
callInterfaceMethod(index, &AbstractTaskManagerInterface::requestUpdateWindowIconGeometry, geometry, delegate);
6868
}
6969
virtual void requestWindowsView(const QModelIndexList &indexes) const
7070
{

panels/dock/taskmanager/abstractwindowmonitor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ void AbstractWindowMonitor::requestClose(const QModelIndex &index, bool force) c
6565
}
6666
}
6767

68-
void AbstractWindowMonitor::requestUpdateWindowGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate) const
68+
void AbstractWindowMonitor::requestUpdateWindowIconGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate) const
6969
{
7070
}
7171

panels/dock/taskmanager/abstractwindowmonitor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class AbstractWindowMonitor : public QAbstractListModel, public AbstractTaskMana
3939
void requestOpenUrls(const QModelIndex &index, const QList<QUrl> &urls) const override;
4040
void requestNewInstance(const QModelIndex &index, const QString &action) const override;
4141
void requestClose(const QModelIndex &index, bool force = false) const override;
42-
void requestUpdateWindowGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate = nullptr) const override;
42+
void requestUpdateWindowIconGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate = nullptr) const override;
4343

4444
virtual void
4545
requestPreview(QAbstractItemModel *sourceModel, QWindow *relativePositionItem, int32_t previewXoffset, int32_t previewYoffset, uint32_t direction) = 0;

panels/dock/taskmanager/dockglobalelementmodel.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -398,11 +398,18 @@ void DockGlobalElementModel::requestClose(const QModelIndex &index, bool force)
398398

399399
qWarning() << "unable to close app not running";
400400
}
401-
void DockGlobalElementModel::requestUpdateWindowGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate) const
401+
402+
void DockGlobalElementModel::requestUpdateWindowIconGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate) const
402403
{
403-
Q_UNUSED(index)
404-
Q_UNUSED(geometry)
405-
Q_UNUSED(delegate)
404+
auto data = m_data.value(index.row());
405+
auto id = std::get<0>(data);
406+
auto sourceModel = std::get<1>(data);
407+
auto sourceRow = std::get<2>(data);
408+
409+
if (sourceModel == m_activeAppModel) {
410+
auto sourceIndex = sourceModel->index(sourceRow, 0);
411+
m_activeAppModel->requestUpdateWindowIconGeometry(sourceIndex, geometry, delegate);
412+
}
406413
}
407414

408415
void DockGlobalElementModel::requestWindowsView(const QModelIndexList &indexes) const

panels/dock/taskmanager/dockglobalelementmodel.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class DockGlobalElementModel : public QAbstractListModel, public AbstractTaskMan
3232

3333
void requestOpenUrls(const QModelIndex &index, const QList<QUrl> &urls) const override;
3434
void requestClose(const QModelIndex &index, bool force = false) const override;
35-
void requestUpdateWindowGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate = nullptr) const override;
35+
void requestUpdateWindowIconGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate = nullptr) const override;
3636

3737
void requestWindowsView(const QModelIndexList &indexes) const override;
3838

panels/dock/taskmanager/dockgroupmodel.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,17 @@ void DockGroupModel::requestClose(const QModelIndex &index, bool force) const
132132
}
133133
}
134134

135-
void DockGroupModel::requestUpdateWindowGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate) const
135+
void DockGroupModel::requestUpdateWindowIconGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate) const
136136
{
137-
Q_UNUSED(index)
138-
Q_UNUSED(geometry)
139-
Q_UNUSED(delegate)
137+
auto interface = dynamic_cast<AbstractTaskManagerInterface *>(sourceModel());
138+
if (nullptr == interface)
139+
return;
140+
141+
auto indexRowCount = RoleGroupModel::rowCount(index);
142+
for (int i = 0; i < indexRowCount; i++) {
143+
auto cIndex = RoleGroupModel::index(i, 0, index);
144+
callInterfaceMethod(cIndex, &AbstractTaskManagerInterface::requestUpdateWindowIconGeometry, geometry, delegate);
145+
}
140146
}
141147

142148
void DockGroupModel::requestWindowsView(const QModelIndexList &indexes) const

panels/dock/taskmanager/dockgroupmodel.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class DockGroupModel : public RoleGroupModel, public AbstractTaskManagerInterfac
2121

2222
void requestActivate(const QModelIndex &index) const override;
2323
void requestClose(const QModelIndex &index, bool force = false) const override;
24-
void requestUpdateWindowGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate = nullptr) const override;
24+
void requestUpdateWindowIconGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate = nullptr) const override;
2525
void requestWindowsView(const QModelIndexList &indexes) const override;
2626

2727
private:

panels/dock/taskmanager/package/AppItem.qml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,8 +272,8 @@ Item {
272272
repeat: false
273273
onTriggered: {
274274
var pos = icon.mapToItem(null, 0, 0)
275-
taskmanager.Applet.setAppItemWindowIconGeometry(root.itemId, Panel.rootObject, pos.x, pos.y,
276-
pos.x + icon.width, pos.y + icon.height)
275+
taskmanager.Applet.requestUpdateWindowIconGeometry(root.modelIndex, Qt.rect(pos.x, pos.y,
276+
icon.width, icon.height), Panel.rootObject)
277277
}
278278
}
279279

panels/dock/taskmanager/taskmanager.cpp

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -201,9 +201,9 @@ void TaskManager::requestClose(const QModelIndex &index, bool force) const
201201
m_itemModel->requestClose(index, force);
202202
}
203203

204-
void TaskManager::requestUpdateWindowGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate) const
204+
void TaskManager::requestUpdateWindowIconGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate) const
205205
{
206-
m_itemModel->requestUpdateWindowGeometry(index, geometry, delegate);
206+
m_itemModel->requestUpdateWindowIconGeometry(index, geometry, delegate);
207207
}
208208

209209
void TaskManager::requestPreview(const QModelIndex &index, QObject *relativePositionItem, int32_t previewXoffset, int32_t previewYoffset, uint32_t direction)
@@ -312,16 +312,6 @@ void TaskManager::hideItemPreview()
312312
m_windowMonitor->hideItemPreview();
313313
}
314314

315-
void TaskManager::setAppItemWindowIconGeometry(const QString& appid, QObject* relativePositionItem, const int& x1, const int& y1, const int& x2, const int& y2)
316-
{
317-
QPointer<AppItem> item = static_cast<AppItem*>(ItemModel::instance()->getItemById(appid).get());
318-
if (item.isNull()) return;
319-
320-
for (auto window : item->getAppendWindows()) {
321-
window->setWindowIconGeometry(qobject_cast<QWindow*>(relativePositionItem), QRect(QPoint(x1, y1),QPoint(x2, y2)));
322-
}
323-
}
324-
325315
bool TaskManager::allowForceQuit()
326316
{
327317
return Settings->isAllowedForceQuit();

panels/dock/taskmanager/taskmanager.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class TaskManager : public DS_NAMESPACE::DContainment, public AbstractTaskManage
7878

7979
Q_INVOKABLE void requestOpenUrls(const QModelIndex &index, const QList<QUrl> &urls) const override;
8080
Q_INVOKABLE void requestClose(const QModelIndex &index, bool force = false) const override;
81-
Q_INVOKABLE void requestUpdateWindowGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate = nullptr) const override;
81+
Q_INVOKABLE void requestUpdateWindowIconGeometry(const QModelIndex &index, const QRect &geometry, QObject *delegate = nullptr) const override;
8282
Q_INVOKABLE void
8383
requestPreview(const QModelIndex &index, QObject *relativePositionItem, int32_t previewXoffset, int32_t previewYoffset, uint32_t direction);
8484
Q_INVOKABLE void requestWindowsView(const QModelIndexList &indexes) const override;
@@ -93,7 +93,6 @@ class TaskManager : public DS_NAMESPACE::DContainment, public AbstractTaskManage
9393
Q_INVOKABLE void dropFilesOnItem(const QString &itemId, const QStringList &urls);
9494
Q_INVOKABLE void hideItemPreview();
9595

96-
Q_INVOKABLE void setAppItemWindowIconGeometry(const QString& appid, QObject* relativePositionItem, const int& x1, const int& y1, const int& x2, const int& y2);
9796
Q_INVOKABLE void activateWindow(uint32_t windowID);
9897
Q_INVOKABLE void saveDockElementsOrder(const QStringList &appIds);
9998

0 commit comments

Comments
 (0)