mirror-chatterino2/src/widgets/helper/SettingsDialogTab.hpp

61 lines
1.1 KiB
C++
Raw Normal View History

#pragma once
2017-01-01 18:43:52 +01:00
2018-06-26 14:09:39 +02:00
#include "widgets/BaseWidget.hpp"
2018-01-12 23:09:05 +01:00
#include <QIcon>
2017-01-18 04:52:47 +01:00
#include <QPaintEvent>
2017-01-01 18:43:52 +01:00
#include <QWidget>
2020-02-21 01:59:58 +01:00
#include <functional>
2017-01-01 18:43:52 +01:00
2017-01-18 21:30:23 +01:00
namespace chatterino {
2018-06-26 16:37:59 +02:00
class SettingsPage;
2017-01-02 03:02:32 +01:00
class SettingsDialog;
enum class SettingsTabId {
2020-02-21 01:17:22 +01:00
None,
Accounts,
Moderation,
};
2018-01-27 21:51:08 +01:00
class SettingsDialogTab : public BaseWidget
2017-01-01 18:43:52 +01:00
{
Q_OBJECT
2017-01-02 03:02:32 +01:00
2017-01-01 18:43:52 +01:00
public:
2020-02-21 01:59:58 +01:00
SettingsDialogTab(SettingsDialog *dialog_,
std::function<SettingsPage *()> page_,
const QString &name, QString imageFileName,
2020-02-28 19:05:50 +01:00
SettingsTabId id);
2017-01-02 03:02:32 +01:00
2018-07-06 19:23:47 +02:00
void setSelected(bool selected_);
2020-02-21 00:46:19 +01:00
SettingsPage *page();
2020-02-21 01:17:22 +01:00
SettingsTabId id() const;
2017-01-02 03:02:32 +01:00
2020-02-21 01:59:58 +01:00
const QString &name() const;
2017-01-02 03:02:32 +01:00
signals:
void selectedChanged(bool);
2017-01-01 18:43:52 +01:00
private:
void paintEvent(QPaintEvent *);
2017-04-14 17:47:28 +02:00
void mousePressEvent(QMouseEvent *event);
2017-01-02 03:02:32 +01:00
2017-07-02 12:36:50 +02:00
struct {
QString labelText;
QIcon icon;
2018-07-06 19:23:47 +02:00
} ui_;
2017-01-02 03:02:32 +01:00
2017-07-02 12:36:50 +02:00
// Parent settings dialog
2020-02-21 01:59:58 +01:00
SettingsDialog *dialog_{};
SettingsPage *page_{};
std::function<SettingsPage *()> lazyPage_;
2020-02-21 01:17:22 +01:00
SettingsTabId id_;
2020-02-21 01:59:58 +01:00
QString name_;
2017-01-02 03:02:32 +01:00
2018-07-06 19:23:47 +02:00
bool selected_ = false;
2017-01-01 18:43:52 +01:00
};
2017-04-14 17:52:22 +02:00
} // namespace chatterino