7#include "configureactivitieswidget.h"
8#include <KLocalizedString>
9#include <PlasmaActivities/ActivitiesModel>
11#include <QItemDelegate>
17using namespace PimCommonActivities;
24 CheckboxDelegate(QObject *parent)
25 : QItemDelegate(parent)
29 void paint(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index)
const override
31 auto wholeRect = option.rect;
34 auto checkRect = wholeRect;
35 checkRect.setWidth(checkRect.height());
39 auto textRect = wholeRect;
40 textRect.setLeft(textRect.left() + 8 + textRect.height());
44 [[nodiscard]] QSize sizeHint(
const QStyleOptionViewItem &option,
const QModelIndex &index)
const override
48 return QSize(100, 22);
53ConfigureActivitiesWidget::ConfigureActivitiesWidget(
QWidget *parent)
56 , mEnableActivitiesSupport(new
QCheckBox(
i18nc(
"@option:check",
"Limit to the selected activities:"), this))
59 mainLayout->setObjectName(
"mainLayout"_L1);
62 "If you limit this account to activity, it will be shown only when you are in those activities. Furthermore, when "
63 "you switch to an activity it should not be available in, it will automatically be hidden."),
65 label->setWordWrap(
true);
66 label->setObjectName(
"label"_L1);
67 mainLayout->addWidget(label);
69 mEnableActivitiesSupport->setObjectName(
"mEnableActivitiesSupport"_L1);
70 mainLayout->addWidget(mEnableActivitiesSupport);
71 mEnableActivitiesSupport->setChecked(
false);
73 mListView->setObjectName(
"mListView"_L1);
74 mListView->setModel(
new KActivities::ActivitiesModel(
this));
75 mListView->setItemDelegate(
new CheckboxDelegate(
this));
76 mainLayout->addWidget(mListView);
78 mListView->setEnabled(
false);
82ConfigureActivitiesWidget::~ConfigureActivitiesWidget() =
default;
84ActivitiesBaseManager::ActivitySettings ConfigureActivitiesWidget::activitiesSettings()
const
86 if (!mEnableActivitiesSupport->isChecked()) {
89 const auto selection = mListView->selectionModel();
90 const auto selected = selection->selectedIndexes();
91 QStringList selectedActivities;
92 selectedActivities.
reserve(selected.count());
93 for (
const auto &selectedIndex : selected) {
94 selectedActivities << selectedIndex.
data(KActivities::ActivitiesModel::ActivityId).toString();
96 const ActivitiesBaseManager::ActivitySettings activities{selectedActivities,
true};
100void ConfigureActivitiesWidget::setActivitiesSettings(
const ActivitiesBaseManager::ActivitySettings &activitySettings)
102 auto model = mListView->model();
103 auto selection = mListView->selectionModel();
104 selection->clearSelection();
106 bool listIsEmpty{activitySettings.activities.
isEmpty()};
107 mListView->setEnabled(activitySettings.enabled);
108 mEnableActivitiesSupport->setChecked(activitySettings.enabled);
109 bool hasFoundActivities =
false;
111 for (
int row = 0; row < model->rowCount(); ++row) {
112 const auto index = model->index(row, 0);
113 const auto activity = model->data(index, KActivities::ActivitiesModel::ActivityId).toString();
115 if (activitySettings.contains(activity)) {
117 hasFoundActivities =
true;
121 if (!hasFoundActivities) {
122 mListView->setEnabled(
false);
123 mEnableActivitiesSupport->setChecked(
false);
128#include "moc_configureactivitieswidget.cpp"
QString i18nc(const char *context, const char *text, const TYPE &arg...)
QString label(StandardShortcut id)
bool isEmpty() const const
void reserve(qsizetype size)
QVariant data(int role) const const
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)
QString toString() const const