File indexing completed on 2024-04-28 09:25:36

0001 /*
0002     SPDX-FileCopyrightText: 2021 Michail Vourlakos <mvourlakos@gmail.com>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #ifndef SCREENSHANDLER_H
0007 #define SCREENSHANDLER_H
0008 
0009 // local
0010 #include "../generic/generichandler.h"
0011 #include "../../data/screendata.h"
0012 
0013 // Qt
0014 #include <QButtonGroup>
0015 #include <QSortFilterProxyModel>
0016 
0017 namespace Ui {
0018 class ScreensDialog;
0019 }
0020 
0021 namespace Latte{
0022 namespace Settings{
0023 namespace Model {
0024 class Screens;
0025 }
0026 namespace Dialog{
0027 class ScreensDialog;
0028 }
0029 }
0030 }
0031 
0032 namespace Latte {
0033 namespace Settings {
0034 namespace Handler {
0035 
0036 class ScreensHandler : public Generic
0037 {
0038     Q_OBJECT
0039 public:
0040     ScreensHandler(Dialog::ScreensDialog *dialog);
0041     ~ScreensHandler();
0042 
0043     bool hasChangedData() const override;
0044     bool inDefaultValues() const override;
0045 
0046     Latte::Data::ScreensTable currentData() const;
0047 
0048 public slots:
0049     void deselectAll();
0050     void reset() override;
0051     void resetDefaults() override;
0052     void save() override;
0053 
0054 private:
0055     void init();
0056     void initDefaults();
0057 
0058     bool removalConfirmation(const QStringList &screens) const;
0059 
0060 private slots:
0061     void onRemoveNow();
0062     void onScreenDataChanged();
0063 
0064 private:
0065     Dialog::ScreensDialog *m_dialog{nullptr};
0066     Ui::ScreensDialog *m_ui{nullptr};
0067 
0068     //! current data
0069     Model::Screens *m_screensModel{nullptr};
0070     QSortFilterProxyModel *m_screensProxyModel{nullptr};
0071 };
0072 
0073 }
0074 }
0075 }
0076 
0077 #endif