File indexing completed on 2024-05-05 05:39:29

0001 /*
0002  *   SPDX-FileCopyrightText: 2009 Ben Cooksley <bcooksley@kde.org>
0003  *
0004  *   SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef SETTINGS_BASE_H
0008 #define SETTINGS_BASE_H
0009 
0010 #include "BaseMode.h"
0011 #include "MenuItem.h"
0012 #include "tooltipmanager.h"
0013 #include <QButtonGroup>
0014 #include <QMap>
0015 #include <QStackedWidget>
0016 
0017 #include <KAboutApplicationDialog>
0018 #include <KActionMenu>
0019 #include <KConfigDialog>
0020 #include <KLineEdit>
0021 #include <KXmlGuiWindow>
0022 
0023 class QScreen;
0024 
0025 class SettingsBase : public KXmlGuiWindow
0026 {
0027     Q_OBJECT
0028 
0029 public:
0030     explicit SettingsBase(BaseMode::ApplicationMode mode, const QString &startupModule, const QStringList &startupModuleArgs, QWidget *parent = nullptr);
0031     ~SettingsBase() override;
0032     bool queryClose() override;
0033 
0034     void setStartupModule(const QString &startupModule);
0035     void setStartupModuleArgs(const QStringList &startupModuleArgs);
0036     void reloadStartupModule();
0037 
0038 protected:
0039     QSize sizeHint() const override;
0040 
0041 private Q_SLOTS:
0042     void initApplication();
0043     void initToolBar();
0044     void initHelpMenu();
0045     void initMenuList(MenuItem *parent);
0046     void about();
0047     void viewChange(bool state);
0048     void updateViewActions();
0049     void changeToolBar(BaseMode::ToolBarItems toolbar);
0050 
0051 private Q_SLOTS:
0052     /**
0053      * Updates the window size limit
0054      */
0055     void slotGeometryChanged();
0056 
0057 private:
0058     /**
0059      * Initializes the sidebar plugin
0060      */
0061     void loadCurrentView();
0062 
0063     // Follow screen resolution
0064     QScreen *m_screen = nullptr;
0065 
0066     // The plugins
0067     QList<ToolTipManager *> tooltipManagers;
0068     BaseMode *view = nullptr;
0069     // The search bar
0070     QWidget *spacerWidget = nullptr;
0071     // The toolbar
0072     QWidgetAction *spacerAction = nullptr;
0073     QAction *highlightChangesAction = nullptr;
0074     QAction *reportPageSpecificBugAction = nullptr;
0075     QAction *quitAction = nullptr;
0076     // The help menu
0077     QAction *aboutViewAction = nullptr;
0078     KActionMenu *helpActionMenu = nullptr;
0079     // The control module
0080     QStackedWidget *stackedWidget = nullptr;
0081     // The module list
0082     MenuItem *rootModule = nullptr;
0083     MenuItem *homeModule = nullptr;
0084     MenuItem *lostFound = nullptr;
0085     QStringList categories;
0086     QList<KPluginMetaData> pluginModules;
0087     // The about dialog
0088     KAboutApplicationDialog *aboutDialog = nullptr;
0089     BaseMode::ApplicationMode m_mode = BaseMode::SystemSettings;
0090     QString m_startupModule;
0091     QStringList m_startupModuleArgs;
0092 };
0093 #endif