File indexing completed on 2025-02-02 04:26:11
0001 /* SPDX-FileCopyrightText: 2022 Noah Davis <noahadvs@gmail.com> 0002 * SPDX-License-Identifier: LGPL-2.0-or-later 0003 */ 0004 0005 #ifndef OPTIONSMENU_H 0006 #define OPTIONSMENU_H 0007 0008 #include "SpectacleMenu.h" 0009 0010 #include "Gui/SmartSpinBox.h" 0011 0012 #include <QActionGroup> 0013 #include <QHBoxLayout> 0014 #include <QLabel> 0015 #include <QList> 0016 #include <QWidgetAction> 0017 0018 #include <memory> 0019 0020 /** 0021 * A menu that allows choosing capture modes and related options. 0022 */ 0023 class OptionsMenu : public SpectacleMenu 0024 { 0025 Q_OBJECT 0026 0027 public: 0028 static OptionsMenu *instance(); 0029 0030 Q_SLOT void showPreferencesDialog(); 0031 0032 void setCaptureModeOptionsEnabled(bool enabled); 0033 0034 protected: 0035 void changeEvent(QEvent *event) override; 0036 0037 private: 0038 explicit OptionsMenu(QWidget *parent = nullptr); 0039 0040 void delayActionLayoutUpdate(); 0041 Q_SLOT void updateCaptureModes(); 0042 0043 QList<QAction *> captureModeActions; 0044 const std::unique_ptr<QAction> captureModeSection; 0045 const std::unique_ptr<QActionGroup> captureModeGroup; 0046 const std::unique_ptr<QAction> captureSettingsSection; 0047 const std::unique_ptr<QAction> includeMousePointerAction; 0048 const std::unique_ptr<QAction> includeWindowDecorationsAction; 0049 const std::unique_ptr<QAction> includeWindowShadowAction; 0050 const std::unique_ptr<QAction> onlyCapturePopupAction; 0051 const std::unique_ptr<QAction> quitAfterSaveAction; 0052 const std::unique_ptr<QAction> captureOnClickAction; 0053 const std::unique_ptr<QWidgetAction> delayAction; 0054 const std::unique_ptr<QWidget> delayWidget; 0055 const std::unique_ptr<QHBoxLayout> delayLayout; 0056 const std::unique_ptr<QLabel> delayLabel; 0057 const std::unique_ptr<SmartSpinBox> delaySpinBox; 0058 0059 bool captureModesInitialized = false; 0060 bool shouldUpdateCaptureModes = true; 0061 bool updatingDelayActionLayout = false; 0062 bool captureModeOptionsEnabled = true; 0063 0064 friend class OptionsMenuSingleton; 0065 }; 0066 0067 #endif // OPTIONSMENU_H