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:
parent
9790b0cdad
commit
9f0b6e0b5c
@ -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
|
||||
)
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
97
app/settings/screensdialog/screenshandler.cpp
Normal file
97
app/settings/screensdialog/screenshandler.cpp
Normal 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);
|
||||
}*/
|
||||
|
||||
}
|
||||
}
|
||||
}
|
70
app/settings/screensdialog/screenshandler.h
Normal file
70
app/settings/screensdialog/screenshandler.h
Normal 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
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user