1
0
mirror of https://github.com/KDE/latte-dock.git synced 2025-03-10 20:58:18 +03:00

screensdialog:introduce relevant handler

This commit is contained in:
Michail Vourlakos 2021-05-30 19:34:04 +03:00
parent 9790b0cdad
commit 9f0b6e0b5c
7 changed files with 178 additions and 8 deletions

View File

@ -1,6 +1,7 @@
set(lattedock-app_SRCS
${lattedock-app_SRCS}
${CMAKE_CURRENT_SOURCE_DIR}/screensdialog.cpp
${CMAKE_CURRENT_SOURCE_DIR}/screenshandler.cpp
${CMAKE_CURRENT_SOURCE_DIR}/screensmodel.cpp
PARENT_SCOPE
)

View File

@ -7,7 +7,7 @@
// local
#include "ui_screensdialog.h"
//#include "screenshandler.h"
#include "screenshandler.h"
#include "../settingsdialog/layoutscontroller.h"
#include "../../layouts/manager.h"
#include "../../layouts/synchronizer.h"
@ -26,7 +26,7 @@ ScreensDialog::ScreensDialog(SettingsDialog *parent)
init();
initRemoveNowButton();
//! we must create handlers after creating/adjusting the ui
//m_handler = new Handler::ExportTemplateHandler(this, layout);
m_handler = new Handler::ScreensHandler(this);
initSignals();
}

View File

@ -22,9 +22,9 @@ class ScreensDialog;
namespace Latte {
namespace Settings {
//namespace Handler {
//class ScreensHandler;
//}
namespace Handler {
class ScreensHandler;
}
}
}
@ -69,7 +69,7 @@ private:
Ui::ScreensDialog *m_ui;
Controller::Layouts *m_layoutsController{nullptr};
//Handler::ScreensHandler *m_handler;
Handler::ScreensHandler *m_handler;
};
}

View File

@ -0,0 +1,97 @@
/*
SPDX-FileCopyrightText: 2021 Michail Vourlakos <mvourlakos@gmail.com>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "screenshandler.h"
// local
#include <coretypes.h>
#include "ui_screensdialog.h"
#include "screensdialog.h"
#include "screensmodel.h"
#include "../../lattecorona.h"
#include "../../screenpool.h"
// KDE
#include <KMessageBox>
namespace Latte {
namespace Settings {
namespace Handler {
ScreensHandler::ScreensHandler(Dialog::ScreensDialog *dialog)
: Generic(dialog),
m_dialog(dialog),
m_ui(m_dialog->ui()),
m_screensModel(new Model::Screens(this))
{
init();
}
ScreensHandler::~ScreensHandler()
{
}
void ScreensHandler::init()
{
m_ui->screensTable->horizontalHeader()->setSectionsClickable(false);
m_ui->screensTable->verticalHeader()->setVisible(false);
//! Data Changed
connect(m_screensModel, &Settings::Model::Screens::screensDataChanged, this, &ScreensHandler::dataChanged);
//! Screens Proxy Model
m_screensProxyModel = new QSortFilterProxyModel(this);
m_screensProxyModel->setSourceModel(m_screensModel);
m_screensProxyModel->setSortRole(Model::Screens::SORTINGROLE);
m_screensProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
m_ui->screensTable->setModel(m_screensProxyModel);
//! Buttons
connect(m_ui->buttonBox->button(QDialogButtonBox::Reset), &QPushButton::clicked, this, &ScreensHandler::reset);
//! load data
m_screensModel->setData(m_dialog->corona()->screenPool()->screensTable());
}
bool ScreensHandler::hasChangedData() const
{
return m_screensModel->hasChangedData();
}
bool ScreensHandler::inDefaultValues() const
{
return m_screensModel->inDefaultValues();
}
void ScreensHandler::reset()
{
if (m_screensModel->hasChangedData()) {
m_screensModel->reset();
}
}
void ScreensHandler::resetDefaults()
{
reset();
}
void ScreensHandler::save()
{
//do nothing
}
/*bool ScreensHandler::overwriteConfirmation(const QString &fileName)
{
return (KMessageBox::warningYesNo(m_dialog,
i18n("The file \"%1\" already exists. Do you wish to overwrite it?", fileName),
i18n("Overwrite File?"),
KStandardGuiItem::overwrite(),
KStandardGuiItem::cancel()) == KMessageBox::Yes);
}*/
}
}
}

View File

@ -0,0 +1,70 @@
/*
SPDX-FileCopyrightText: 2021 Michail Vourlakos <mvourlakos@gmail.com>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef SCREENSHANDLER_H
#define SCREENSHANDLER_H
// local
#include "../generic/generichandler.h"
#include "../../data/screendata.h"
// Qt
#include <QButtonGroup>
#include <QSortFilterProxyModel>
namespace Ui {
class ScreensDialog;
}
namespace Latte{
namespace Settings{
namespace Model {
class Screens;
}
namespace Dialog{
class ScreensDialog;
}
}
}
namespace Latte {
namespace Settings {
namespace Handler {
class ScreensHandler : public Generic
{
Q_OBJECT
public:
ScreensHandler(Dialog::ScreensDialog *dialog);
~ScreensHandler();
bool hasChangedData() const override;
bool inDefaultValues() const override;
Latte::Data::ScreensTable currentData() const;
public slots:
void reset() override;
void resetDefaults() override;
void save() override;
private:
void init();
void initDefaults();
private:
Dialog::ScreensDialog *m_dialog{nullptr};
Ui::ScreensDialog *m_ui{nullptr};
//! current data
Model::Screens *m_screensModel{nullptr};
QSortFilterProxyModel *m_screensProxyModel{nullptr};
};
}
}
}
#endif

View File

@ -151,7 +151,9 @@ Qt::ItemFlags Screens::flags(const QModelIndex &index) const
auto flags = QAbstractTableModel::flags(index);
flags |= Qt::ItemIsUserCheckable;
if (!c_screens[row].isActive) {
flags |= Qt::ItemIsUserCheckable;
}
return flags;
}

View File

@ -143,7 +143,7 @@ void SettingsDialog::initFileMenu()
QAction *screensAction = m_fileMenu->addAction(i18n("Sc&reens..."));
screensAction->setIcon(QIcon::fromTheme("document-properties"));
screensAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R));
//screensAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R));
screensAction->setToolTip(i18n("Examing your screens and remove deprecated references"));
connect(screensAction, &QAction::triggered, this, &SettingsDialog::showScreensDialog);