/
preferences-dialog.h
135 lines (109 loc) · 3.14 KB
/
preferences-dialog.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#ifndef PREFERENCES_DIALOG_H
#define PREFERENCES_DIALOG_H
#include <QObject>
#include <QWidget>
#include <QDialog>
#include <QTreeWidgetItem>
#include <QStackedWidget>
#include <QPushButton>
#include <QSpinBox>
#include <QLineEdit>
#include <QToolButton>
#include <QColor>
#include <QLabel>
#include <QGraphicsOpacityEffect>
#include <unordered_map>
#include <QGridLayout>
#include "qaccelerator-db.h"
#include "speed-grapher.h"
class PreferencePage : public QWidget {
Q_OBJECT
public:
PreferencePage(QWidget* parent, PreferenceManager* preference_manager);
protected slots:
virtual void ResetDefaults() = 0;
protected:
virtual void SetFieldValuesFromDb() = 0;
PreferenceManager* preference_manager_;
void CreateResetButton();
};
class GeneralPage : public PreferencePage {
Q_OBJECT
public:
GeneralPage(QWidget* parent, PreferenceManager* preference_manager);
protected slots:
virtual void ResetDefaults() override;
private slots:
void OnDownloadDirChanged(const QString& text);
void PromptDownloadDir();
void UpdateNumConnections(int newValue);
void UpdateConcurrentCap(int newValue);
protected:
virtual void SetFieldValuesFromDb() override;
private:
void ConnectSlots();
void DisconnectSlots();
QPushButton* download_dir_button_;
QSpinBox* num_connections_spin_;
QSpinBox* concurrent_cap_spin_;
QLineEdit* download_dir_edit_;
};
class PreferencesDialog : public QDialog {
Q_OBJECT
public:
PreferencesDialog(QWidget* parent, PreferenceManager* preference_manager);
private slots:
void OnTreeItemChanged(QTreeWidgetItem* prev_item,
QTreeWidgetItem* curr_item);
private:
QStackedWidget* stack_;
};
class ColorButton : public QToolButton {
Q_OBJECT
public:
ColorButton(QWidget* parent, const QColor& color);
void SetColor(const QColor& color);
const QColor& Color() { return color_; }
private:
QColor color_;
QLabel* colored_label_;
QGraphicsOpacityEffect* effect_;
};
class ChartPage : public PreferencePage {
Q_OBJECT
public:
ChartPage(QWidget* parent, PreferenceManager* preference_manager,
SpeedGrapherState state);
protected slots:
virtual void ResetDefaults() override;
void OnIndicatorDotSizeChanged(int newSize);
private slots:
void OnColorButtonClicked(const QString& preference_root);
protected:
void CreateControls();
void NewColorRow(const QString& preference_root, const QString& label_text);
virtual void SetFieldValuesFromDb() override;
void ConnectSlots();
void DisconnectSlots();
SpeedGrapher* grapher_;
std::unordered_map<QString, ColorButton*> color_buttons_;
QString state_;
QGridLayout* controls_layout_;
QSpinBox* indicator_dot_size_spin_;
};
class InProgressChartPage : public ChartPage {
Q_OBJECT
public:
InProgressChartPage(QWidget* parent, PreferenceManager* preference_manager);
};
class PausedChartPage : public ChartPage {
Q_OBJECT
public:
PausedChartPage(QWidget* parent, PreferenceManager* preference_manager);
};
class CompletedChartPage : public ChartPage {
Q_OBJECT
public:
CompletedChartPage(QWidget* parent, PreferenceManager* preference_manager);
};
#endif // PREFERENCES_DIALOG_H