[taskmanager] Add filter for task role IsHidden, port requestToggleMinimized to use it

Needed to make panel Adaptive Transparency work with "Show window thumbnails: always"
Needed to make Minimize All work with "Show window thumbnails: always"
wilder-5.24
Bharadwaj Raju 5 years ago committed by Nate Graham
parent 14785c7d42
commit 8b67f97d84
  1. 26
      libtaskmanager/taskfilterproxymodel.cpp
  2. 19
      libtaskmanager/taskfilterproxymodel.h
  3. 4
      libtaskmanager/taskgroupingproxymodel.cpp
  4. 11
      libtaskmanager/tasksmodel.cpp
  5. 19
      libtaskmanager/tasksmodel.h
  6. 2
      libtaskmanager/xwindowtasksmodel.cpp

@ -41,6 +41,7 @@ public:
bool filterByActivity = false;
bool filterNotMinimized = false;
bool filterNotMaximized = false;
bool filterHidden = false;
bool filterSkipTaskbar = true;
bool filterSkipPager = false;
@ -202,6 +203,22 @@ void TaskFilterProxyModel::setFilterNotMaximized(bool filter)
}
}
bool TaskFilterProxyModel::filterHidden() const
{
return d->filterHidden;
}
void TaskFilterProxyModel::setFilterHidden(bool filter)
{
if (d->filterHidden != filter) {
d->filterHidden = filter;
invalidateFilter();
emit filterHiddenChanged();
}
}
bool TaskFilterProxyModel::filterSkipTaskbar() const
{
return d->filterSkipTaskbar;
@ -327,6 +344,15 @@ bool TaskFilterProxyModel::acceptsRow(int sourceRow) const
}
}
// Filter hidden.
if (d->filterHidden) {
bool isHidden = sourceIdx.data(AbstractTasksModel::IsHidden).toBool();
if (isHidden) {
return false;
}
}
return true;
}

@ -53,6 +53,7 @@ class TASKMANAGER_EXPORT TaskFilterProxyModel : public QSortFilterProxyModel, pu
Q_PROPERTY(bool filterByActivity READ filterByActivity WRITE setFilterByActivity NOTIFY filterByActivityChanged)
Q_PROPERTY(bool filterNotMinimized READ filterNotMinimized WRITE setFilterNotMinimized NOTIFY filterNotMinimizedChanged)
Q_PROPERTY(bool filterNotMaximized READ filterNotMaximized WRITE setFilterNotMaximized NOTIFY filterNotMaximizedChanged)
Q_PROPERTY(bool filterHidden READ filterHidden WRITE setFilterHidden NOTIFY filterHiddenChanged)
Q_PROPERTY(bool filterSkipTaskbar READ filterSkipTaskbar WRITE setFilterSkipTaskbar NOTIFY filterSkipTaskbarChanged)
Q_PROPERTY(bool filterSkipPager READ filterSkipPager WRITE setFilterSkipPager NOTIFY filterSkipPagerChanged)
@ -230,6 +231,23 @@ public:
**/
void setFilterNotMaximized(bool filter);
/**
* Whether hidden tasks should be filtered. Defaults to
* @c false.
*
* @see setFilterHidden
* @returns @c true if hidden tasks should be filtered.
**/
bool filterHidden() const;
/**
* Set whether hidden tasks should be filtered.
*
* @see filterHidden
* @param filter Whether hidden tasks should be filtered.
**/
void setFilterHidden(bool filter);
/**
* Whether tasks which should be omitted from 'task bars' should be
* filtered. Defaults to @c true.
@ -304,6 +322,7 @@ Q_SIGNALS:
void filterByActivityChanged() const;
void filterNotMinimizedChanged() const;
void filterNotMaximizedChanged() const;
void filterHiddenChanged() const;
void filterSkipTaskbarChanged() const;
void filterSkipPagerChanged() const;
void demandingAttentionSkipsFiltersChanged() const;

@ -979,12 +979,12 @@ void TaskGroupingProxyModel::requestToggleMinimized(const QModelIndex &index)
if (index.parent().isValid() || !d->isGroup(index.row())) {
d->abstractTasksSourceModel->requestToggleMinimized(mapToSource(index));
} else {
const bool goalState = !index.data(AbstractTasksModel::IsMinimized).toBool();
const bool goalState = !index.data(AbstractTasksModel::IsHidden).toBool();
for (int i = 0; i < rowCount(index); ++i) {
const QModelIndex &child = this->index(i, 0, index);
if (child.data(AbstractTasksModel::IsMinimized).toBool() != goalState) {
if (child.data(AbstractTasksModel::IsHidden).toBool() != goalState) {
d->abstractTasksSourceModel->requestToggleMinimized(mapToSource(child));
}
}

@ -303,6 +303,7 @@ void TasksModel::Private::initModels()
QObject::connect(filterProxyModel, &TaskFilterProxyModel::filterByActivityChanged, q, &TasksModel::filterByActivityChanged);
QObject::connect(filterProxyModel, &TaskFilterProxyModel::filterNotMinimizedChanged, q, &TasksModel::filterNotMinimizedChanged);
QObject::connect(filterProxyModel, &TaskFilterProxyModel::filterNotMaximizedChanged, q, &TasksModel::filterNotMaximizedChanged);
QObject::connect(filterProxyModel, &TaskFilterProxyModel::filterHiddenChanged, q, &TasksModel::filterHiddenChanged);
groupingProxyModel = new TaskGroupingProxyModel(q);
groupingProxyModel->setSourceModel(filterProxyModel);
@ -1163,6 +1164,16 @@ void TasksModel::setFilterNotMaximized(bool filter)
d->filterProxyModel->setFilterNotMaximized(filter);
}
bool TasksModel::filterHidden() const
{
return d->filterProxyModel->filterHidden();
}
void TasksModel::setFilterHidden(bool filter)
{
d->filterProxyModel->setFilterHidden(filter);
}
TasksModel::SortMode TasksModel::sortMode() const
{
return d->sortMode;

@ -74,6 +74,7 @@ class TASKMANAGER_EXPORT TasksModel : public QSortFilterProxyModel, public Abstr
Q_PROPERTY(bool filterByActivity READ filterByActivity WRITE setFilterByActivity NOTIFY filterByActivityChanged)
Q_PROPERTY(bool filterNotMinimized READ filterNotMinimized WRITE setFilterNotMinimized NOTIFY filterNotMinimizedChanged)
Q_PROPERTY(bool filterNotMaximized READ filterNotMaximized WRITE setFilterNotMaximized NOTIFY filterNotMaximizedChanged)
Q_PROPERTY(bool filterHidden READ filterHidden WRITE setFilterHidden NOTIFY filterHiddenChanged)
Q_PROPERTY(SortMode sortMode READ sortMode WRITE setSortMode NOTIFY sortModeChanged)
Q_PROPERTY(bool separateLaunchers READ separateLaunchers WRITE setSeparateLaunchers NOTIFY separateLaunchersChanged)
@ -313,6 +314,23 @@ public:
**/
void setFilterNotMaximized(bool filter);
/**
* Whether hidden tasks should be filtered. Defaults to
* @c false.
*
* @see setFilterHidden
* @returns @c true if hidden tasks should be filtered.
**/
bool filterHidden() const;
/**
* Set whether hidden tasks should be filtered.
*
* @see filterHidden
* @param filter Whether hidden tasks should be filtered.
**/
void setFilterHidden(bool filter);
/**
* The sort mode used in sorting tasks. Defaults to SortAlpha.
*
@ -867,6 +885,7 @@ Q_SIGNALS:
void filterByActivityChanged() const;
void filterNotMinimizedChanged() const;
void filterNotMaximizedChanged() const;
void filterHiddenChanged() const;
void sortModeChanged() const;
void separateLaunchersChanged() const;
void launchInPlaceChanged() const;

@ -832,7 +832,7 @@ void XWindowTasksModel::requestToggleMinimized(const QModelIndex &index)
const WId window = d->windows.at(index.row());
const KWindowInfo *info = d->windowInfo(window);
if (info->isMinimized()) {
if (index.data(AbstractTasksModel::IsHidden).toBool()) {
bool onCurrent = info->isOnCurrentDesktop();
// FIXME: Move logic up into proxy? (See also others.)

Loading…
Cancel
Save