3
0
mirror of https://github.com/Qortal/Brooklyn.git synced 2025-01-31 07:12:18 +00:00
Brooklyn/plasma/kcms/activities/PrivacyTab.cpp
Scare Crowe d2ebfd0519 QortalOS Titan 5.60.12
Screw the description like that inbred T3Q
2022-03-05 21:17:59 +05:00

164 lines
5.0 KiB
C++

/*
SPDX-FileCopyrightText: 2012-2016 Ivan Cukic <ivan.cukic@kde.org>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
#include "PrivacyTab.h"
#include "kactivitymanagerd_plugins_settings.h"
#include "kactivitymanagerd_settings.h"
#include "resourcescoring_interface.h"
#include <QDBusConnection>
#include <QDBusPendingCall>
#include <QMenu>
#include <QQmlComponent>
#include <QQmlContext>
#include <QQmlEngine>
#include <QQuickWidget>
#include <KConfigGroup>
#include <KMessageWidget>
#include <KSharedConfig>
#include "BlacklistedApplicationsModel.h"
#include "ui_PrivacyTabBase.h"
#include <utils/d_ptr_implementation.h>
#include "kactivities-kcm-features.h"
#include "common/dbus/common.h"
class PrivacyTab::Private : public Ui::PrivacyTabBase
{
public:
KActivityManagerdSettings *mainConfig;
KActivityManagerdPluginsSettings *pluginConfig;
BlacklistedApplicationsModel *blacklistedApplicationsModel;
Private(QObject *parent)
: mainConfig(new KActivityManagerdSettings(parent))
, pluginConfig(new KActivityManagerdPluginsSettings(parent))
{
}
};
KCoreConfigSkeleton *PrivacyTab::pluginConfig()
{
return d->pluginConfig;
}
PrivacyTab::PrivacyTab(QWidget *parent)
: QWidget(parent)
, d(this)
{
d->setupUi(this);
// Keep history initialization
d->kcfg_keepHistoryFor->setRange(0, INT_MAX);
d->kcfg_keepHistoryFor->setSpecialValueText(i18nc("unlimited number of months", "Forever"));
connect(d->kcfg_keepHistoryFor, SIGNAL(valueChanged(int)), this, SLOT(spinKeepHistoryValueChanged(int)));
spinKeepHistoryValueChanged(0);
// Clear recent history button
auto menu = new QMenu(this);
connect(menu->addAction(i18n("Forget the last hour")), &QAction::triggered, this, &PrivacyTab::forgetLastHour);
connect(menu->addAction(i18n("Forget the last two hours")), &QAction::triggered, this, &PrivacyTab::forgetTwoHours);
connect(menu->addAction(i18n("Forget a day")), &QAction::triggered, this, &PrivacyTab::forgetDay);
connect(menu->addAction(i18n("Forget everything")), &QAction::triggered, this, &PrivacyTab::forgetAll);
d->buttonClearRecentHistory->setMenu(menu);
// Blacklist applications
d->blacklistedApplicationsModel = new BlacklistedApplicationsModel(this);
connect(d->blacklistedApplicationsModel, &BlacklistedApplicationsModel::changed, this, &PrivacyTab::blackListModelChanged);
connect(d->blacklistedApplicationsModel, &BlacklistedApplicationsModel::defaulted, this, &PrivacyTab::blackListModelDefaulted);
d->viewBlacklistedApplications->setClearColor(QGuiApplication::palette().window().color());
d->viewBlacklistedApplications->rootContext()->setContextProperty(QStringLiteral("applicationModel"), d->blacklistedApplicationsModel);
d->viewBlacklistedApplications->setSource(QUrl::fromLocalFile(KAMD_KCM_DATADIR + QStringLiteral("/qml/privacyTab/BlacklistApplicationView.qml")));
// React to changes
connect(d->radioRememberSpecificApplications, &QAbstractButton::toggled, d->blacklistedApplicationsModel, &BlacklistedApplicationsModel::setEnabled);
d->blacklistedApplicationsModel->setEnabled(false);
d->messageWidget->setVisible(false);
}
PrivacyTab::~PrivacyTab()
{
}
void PrivacyTab::defaults()
{
d->blacklistedApplicationsModel->defaults();
}
void PrivacyTab::load()
{
d->blacklistedApplicationsModel->load();
}
void PrivacyTab::save()
{
d->blacklistedApplicationsModel->save();
// clang-format off
const auto whatToRemember =
d->radioRememberSpecificApplications->isChecked() ? SpecificApplications :
d->radioDontRememberApplications->isChecked() ? NoApplications :
/* otherwise */ AllApplications;
// clang-format on
d->mainConfig->setResourceScoringEnabled(whatToRemember != NoApplications);
d->mainConfig->save();
}
void PrivacyTab::forget(int count, const QString &what)
{
org::kde::ActivityManager::ResourcesScoring rankingsservice(QStringLiteral(KAMD_DBUS_SERVICE),
QStringLiteral(KAMD_DBUS_RESOURCES_SCORING_PATH),
QDBusConnection::sessionBus());
rankingsservice.DeleteRecentStats(QString(), count, what);
d->messageWidget->animatedShow();
}
void PrivacyTab::forgetLastHour()
{
forget(1, QStringLiteral("h"));
}
void PrivacyTab::forgetTwoHours()
{
forget(2, QStringLiteral("h"));
}
void PrivacyTab::forgetDay()
{
forget(1, QStringLiteral("d"));
}
void PrivacyTab::forgetAll()
{
forget(0, QStringLiteral("everything"));
}
void PrivacyTab::spinKeepHistoryValueChanged(int value)
{
static auto months = ki18ncp("unit of time. months to keep the history", " month", " months");
if (value) {
d->kcfg_keepHistoryFor->setPrefix(i18nc("for in 'keep history for 5 months'", "For "));
d->kcfg_keepHistoryFor->setSuffix(months.subs(value).toString());
}
}