Chatterino
SettingsDialog.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "widgets/BaseWindow.hpp"
4 
5 #include <QPushButton>
6 #include <QStackedLayout>
7 #include <QVBoxLayout>
8 #include <QWidget>
9 #include <functional>
10 #include <pajlada/settings/setting.hpp>
12 
13 #include <QFrame>
14 
15 class QLineEdit;
16 
17 namespace chatterino {
18 
19 class SettingsPage;
20 class SettingsDialogTab;
21 class ModerationPage;
22 
23 class PageHeader : public QFrame
24 {
25  Q_OBJECT
26 };
27 
30  Accounts,
32 };
33 
34 class SettingsDialog : public BaseWindow
35 {
36  SettingsDialog(QWidget *parent);
37 
38 public:
39  static void showDialog(QWidget *parent,
40  SettingsDialogPreference preferredTab =
42 
43 protected:
44  virtual void scaleChangedEvent(float newDpi) override;
45  virtual void themeChangedEvent() override;
46  virtual void showEvent(QShowEvent *) override;
47 
48 private:
49  void refresh();
50 
51  void initUi();
53  void addTabs();
54  void addTab(std::function<SettingsPage *()> page, const QString &name,
55  const QString &iconPath, SettingsTabId id = {},
56  Qt::Alignment alignment = Qt::AlignTop);
57  void selectTab(SettingsDialogTab *tab, const bool byUser = true);
58  void selectTab(SettingsTabId id);
59  void filterElements(const QString &query);
60 
61  void onOkClicked();
62  void onCancelClicked();
63  void addShortcuts() override;
64  void setSearchPlaceholderText();
65 
66  struct {
67  QWidget *tabContainerContainer{};
68  QVBoxLayout *tabContainer{};
69  QStackedLayout *pageStack{};
70  QPushButton *okButton{};
71  QPushButton *cancelButton{};
72  QLineEdit *search{};
73  } ui_;
74  std::vector<SettingsDialogTab *> tabs_;
75  SettingsDialogTab *selectedTab_{};
76  SettingsDialogTab *lastSelectedByUser_{};
77 
78  friend class SettingsDialogTab;
79 };
80 
81 } // namespace chatterino
SettingsTabId
Definition: SettingsDialogTab.hpp:15
Definition: BaseWindow.hpp:20
Definition: Application.cpp:48
Definition: SettingsPage.hpp:49
Definition: SettingsDialogTab.hpp:17
Definition: SettingsDialog.hpp:34
SettingsDialogPreference
Definition: SettingsDialog.hpp:28
Definition: SettingsDialogTab.hpp:21
QString name
Definition: Credentials.cpp:94
Definition: SettingsDialog.hpp:23