88#include " taskmanager.h"
99
1010namespace dock {
11- AbstractWindowMonitor::AbstractWindowMonitor (QObject* parent)
11+ AbstractWindowMonitor::AbstractWindowMonitor (QObject * parent)
1212 : QAbstractListModel(parent)
13+ , AbstractTaskManagerInterface(nullptr )
1314{
1415}
1516
@@ -30,6 +31,48 @@ int AbstractWindowMonitor::rowCount(const QModelIndex &parent) const
3031 return m_trackedWindows.size ();
3132}
3233
34+ void AbstractWindowMonitor::requestActivate (const QModelIndex &index) const
35+ {
36+ auto window = m_trackedWindows.value (index.row (), nullptr );
37+ if (nullptr == window)
38+ return ;
39+
40+ if (window->isActive ()) {
41+ window->minimize ();
42+ } else {
43+ window->activate ();
44+ }
45+ }
46+
47+ void AbstractWindowMonitor::requestOpenUrls (const QModelIndex &index, const QList<QUrl> &urls) const
48+ {
49+ }
50+
51+ void AbstractWindowMonitor::requestNewInstance (const QModelIndex &index, const QString &action) const
52+ {
53+ }
54+
55+ void AbstractWindowMonitor::requestClose (const QModelIndex &index, bool force) const
56+ {
57+ auto window = m_trackedWindows.value (index.row (), nullptr );
58+ if (nullptr == window)
59+ return ;
60+ if (force) {
61+ window->killClient ();
62+ } else {
63+ window->close ();
64+ }
65+ }
66+
67+ void AbstractWindowMonitor::requestUpdateWindowGeometry (const QModelIndex &index, const QRect &geometry, QObject *delegate) const
68+ {
69+ }
70+
71+ void AbstractWindowMonitor::requestWindowsView (const QModelIndexList &indexes) const
72+ {
73+ qDebug () << indexes;
74+ }
75+
3376QVariant AbstractWindowMonitor::data (const QModelIndex &index, int role) const
3477{
3578 auto pos = index.row ();
@@ -84,10 +127,10 @@ void AbstractWindowMonitor::trackWindow(AbstractWindow* window)
84127 Q_EMIT dataChanged (modelIndex, modelIndex, {TaskManager::WinTitleRole});
85128 });
86129
87- connect (window, &AbstractWindow::isActiveChanged , this , [this , window]() {
130+ connect (window, &AbstractWindow::stateChanged , this , [this , window]() {
88131 auto pos = m_trackedWindows.indexOf (window);
89132 auto modelIndex = index (pos);
90- Q_EMIT dataChanged (modelIndex, modelIndex, {TaskManager::ActiveRole});
133+ Q_EMIT dataChanged (modelIndex, modelIndex, {TaskManager::ActiveRole, TaskManager::AttentionRole });
91134 });
92135 connect (window, &AbstractWindow::shouldSkipChanged, this , [this , window]() {
93136 auto pos = m_trackedWindows.indexOf (window);
0 commit comments