File indexing completed on 2024-11-10 08:01:12

0001 /*
0002     SPDX-FileCopyrightText: 2020 Michail Vourlakos <mvourlakos@gmail.com>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #ifndef SETTINGSTABPREFERENCESHANDLER_H
0007 #define SETTINGSTABPREFERENCESHANDLER_H
0008 
0009 //! local
0010 #include "../generic/generichandler.h"
0011 #include "../../data/preferencesdata.h"
0012 
0013 //! Qt
0014 #include <QAction>
0015 #include <QObject>
0016 #include <QButtonGroup>
0017 #include <QPushButton>
0018 
0019 namespace Ui {
0020 class SettingsDialog;
0021 }
0022 
0023 namespace Latte {
0024 class Corona;
0025 namespace Settings {
0026 namespace Dialog {
0027 class SettingsDialog;
0028 }
0029 }
0030 }
0031 
0032 namespace Latte {
0033 namespace Settings {
0034 namespace Handler {
0035 
0036 //! Handlers are objects to handle the UI elements that semantically associate with specific
0037 //! ui::tabs or different windows. They are responsible also to handle the user interaction
0038 //! between controllers and views
0039 
0040 class TabPreferences : public Generic
0041 {
0042     Q_OBJECT
0043 public:
0044     TabPreferences(Latte::Settings::Dialog::SettingsDialog *parent);
0045 
0046     bool hasChangedData() const override;
0047     bool inDefaultValues() const override;
0048 
0049     QStringList contextMenuAlwaysActions() const;
0050     void setContextMenuAlwaysActions(const QStringList &actions);
0051 
0052     void reset() override;
0053     void resetDefaults() override;
0054     void save() override;
0055 
0056 signals:
0057     void borderlessMaximizedChanged();
0058     void contextActionsChanged();
0059 
0060 private slots:
0061     void initUi();
0062     void initSettings();
0063     void updateUi();
0064 
0065     void onActionsBtnPressed();
0066 
0067 private:
0068     Latte::Settings::Dialog::SettingsDialog *m_parentDialog{nullptr};
0069     Ui::SettingsDialog *m_ui{nullptr};
0070     Latte::Corona *m_corona{nullptr};
0071 
0072     QButtonGroup *m_parabolicSpreadButtons;
0073     QButtonGroup *m_thicknessMarginInfluenceButtons;
0074 
0075     //! current data
0076     Data::Preferences m_preferences;
0077 
0078     //! original data
0079     Data::Preferences o_preferences;
0080 };
0081 
0082 }
0083 }
0084 }
0085 
0086 #endif