You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

67 lines
1.6 KiB

/*
SPDX-FileCopyrightText: 2008 Robert Knight <robertknight@gmail.com>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef CHECKABLESESSIONMODEL_H
#define CHECKABLESESSIONMODEL_H
// Qt
#include <QPointer>
#include <QSet>
// Konsole
#include "session/Session.h"
#include "session/SessionListModel.h"
namespace Konsole
{
/**
* A list of sessions with a checkbox next to each one which allows the
* user to select a subset of the available sessions to perform
* some action on them.
*/
class CheckableSessionModel : public SessionListModel
{
Q_OBJECT
public:
explicit CheckableSessionModel(QObject *parent);
void setCheckColumn(int column);
int checkColumn() const;
/**
* Sets whether a session can be checked or un-checked.
* Non-checkable items have the Qt::ItemIsEnabled flag unset.
*/
void setCheckable(Session *session, bool checkable);
/** Sets the list of sessions which are currently checked. */
void setCheckedSessions(const QSet<Session *> &sessions);
/** Returns the set of checked sessions. */
QSet<Session *> checkedSessions() const;
// reimplemented from QAbstractItemModel
Qt::ItemFlags flags(const QModelIndex &index) const override;
QVariant data(const QModelIndex &index, int role) const override;
bool setData(const QModelIndex &index, const QVariant &value, int role) override;
protected:
void sessionRemoved(Session *) override;
private:
QSet<Session *> _checkedSessions;
QSet<Session *> _fixedSessions;
int _checkColumn;
};
inline int CheckableSessionModel::checkColumn() const
{
return _checkColumn;
}
}
#endif