File indexing completed on 2024-12-01 10:41:07

0001 /*
0002     The configuration dialog of Smb4K
0003 
0004     SPDX-FileCopyrightText: 2004-2023 Alexander Reinholdt <alexander.reinholdt@kdemail.net>
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef SMB4KCONFIGDIALOG_H
0009 #define SMB4KCONFIGDIALOG_H
0010 
0011 // application specific includes
0012 #include "core/smb4kglobal.h"
0013 #include "smb4kconfigpageauthentication.h"
0014 #include "smb4kconfigpagebookmarks.h"
0015 #include "smb4kconfigpagecustomsettings.h"
0016 #include "smb4kconfigpagemounting.h"
0017 #include "smb4kconfigpagenetwork.h"
0018 #include "smb4kconfigpageprofiles.h"
0019 #include "smb4kconfigpagesynchronization.h"
0020 #include "smb4kconfigpageuserinterface.h"
0021 
0022 // Qt includes
0023 #include <QAbstractButton>
0024 
0025 // KDE includes
0026 #include <KConfigDialog>
0027 
0028 // forward declarations
0029 class Smb4KSettings;
0030 
0031 /**
0032  * This is the (new) configuration dialog of Smb4K.
0033  *
0034  * @author Alexander Reinholdt <alexander.reinholdt@kdemail.net>
0035  */
0036 
0037 class Q_DECL_EXPORT Smb4KConfigDialog : public KConfigDialog
0038 {
0039     Q_OBJECT
0040 
0041 public:
0042     /**
0043      * The constructor
0044      * @param parent        The parent widget
0045      * @param args          The argument list
0046      */
0047     Smb4KConfigDialog(QWidget *parent, const QList<QVariant> &args);
0048 
0049     /**
0050      * The destructor
0051      */
0052     ~Smb4KConfigDialog();
0053 
0054 protected Q_SLOTS:
0055     /**
0056      * Reimplemented from KConfigDialog. Used to do things that
0057      * KConfigDialog::updateSettings() does not do.
0058      */
0059     void updateSettings() override;
0060 
0061     /**
0062      * Enable/disable the "Apply" button if settings that are not managed by
0063      * KConfig XT have changed.
0064      */
0065     void slotEnableApplyButton();
0066 
0067     /**
0068      * This slot is used to check the settings of the different pages.
0069      *
0070      * @param current     the current dialog page
0071      * @param before      the previous dialog page
0072      */
0073     void slotCheckPage(KPageWidgetItem *current, KPageWidgetItem *before);
0074 
0075 private:
0076     /**
0077      * Set up the config dialog.
0078      */
0079     void setupDialog();
0080 
0081     /**
0082      * Checks that mandatory needed input is provided for settings that
0083      * need it. This function will report all missing input to the user
0084      * via a message box.
0085      *
0086      * @param page          The page to check
0087      *
0088      * @returns TRUE if the check passed and FALSE if it failed.
0089      */
0090     bool checkSettings(KPageWidgetItem *page = nullptr);
0091 
0092     Smb4KConfigPageUserInterface *m_userInterfacePage;
0093     Smb4KConfigPageNetwork *m_networkPage;
0094     Smb4KConfigPageMounting *m_mountingPage;
0095     Smb4KConfigPageAuthentication *m_authenticationPage;
0096     Smb4KConfigPageSynchronization *m_synchronizationPage;
0097     Smb4KConfigPageCustomSettings *m_customSettingsPage;
0098     Smb4KConfigPageProfiles *m_profilesPage;
0099     Smb4KConfigPageBookmarks *m_bookmarksPage;
0100 
0101     KPageWidgetItem *m_userInterface;
0102     KPageWidgetItem *m_network;
0103     KPageWidgetItem *m_mounting;
0104     KPageWidgetItem *m_authentication;
0105     KPageWidgetItem *m_synchronization;
0106     KPageWidgetItem *m_customSettings;
0107     KPageWidgetItem *m_profiles;
0108     KPageWidgetItem *m_bookmarks;
0109 };
0110 
0111 #endif