File indexing completed on 2024-05-12 05:20:43

0001 /*
0002  * kmail: KDE mail client
0003  * SPDX-FileCopyrightText: 1996-1998 Stefan Taferner <taferner@kde.org>
0004  *
0005  * SPDX-License-Identifier: GPL-2.0-or-later
0006  *
0007  */
0008 #pragma once
0009 
0010 #include "kmail_export.h"
0011 
0012 #include <kxmlguiwindow.h>
0013 
0014 class KMMainWidget;
0015 class KToggleAction;
0016 class QLabel;
0017 class KHamburgerMenu;
0018 class KToggleFullScreenAction;
0019 namespace KPIM
0020 {
0021 class ProgressStatusBarWidget;
0022 }
0023 
0024 class KMAIL_EXPORT KMMainWin : public KXmlGuiWindow
0025 {
0026     Q_OBJECT
0027 
0028 public:
0029     // the main window needs to have a name since else restoring the window
0030     // settings by kwin doesn't work
0031     explicit KMMainWin(QWidget *parent = nullptr);
0032     ~KMMainWin() override;
0033     KMMainWidget *mainKMWidget() const;
0034 
0035     /// Same as KMMainWin::restore(), except that it also restores the docked state,
0036     /// which we have saved in saveProperties().
0037     bool restoreDockedState(int number);
0038 
0039     void showAndActivateWindow();
0040 public Q_SLOTS:
0041     void displayStatusMessage(const QString &);
0042     void slotEditToolbars();
0043     void slotUpdateGui();
0044     void setupStatusBar();
0045 
0046 protected:
0047     /// Reimplemented to save the docked state
0048     void saveProperties(KConfigGroup &) override;
0049 
0050     bool queryClose() override;
0051 
0052 protected Q_SLOTS:
0053     void slotQuit();
0054 
0055 private:
0056     void slotConfigureShortcuts();
0057     void slotToggleMenubar(bool dontShowWarning);
0058     void updateHamburgerMenu();
0059     void slotShortcutSaved();
0060     void slotFullScreen(bool t);
0061     KPIM::ProgressStatusBarWidget *mProgressBar = nullptr;
0062     KMMainWidget *mKMMainWidget = nullptr;
0063     KToggleAction *mShowMenuBarAction = nullptr;
0064     QLabel *const mMessageLabel;
0065     KHamburgerMenu *mHamburgerMenu = nullptr;
0066     KToggleFullScreenAction *mShowFullScreenAction = nullptr;
0067     bool mReallyClose = false;
0068 };