UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
settings_ui.hpp
Go to the documentation of this file.
1#ifndef SETTINGS_UI_HPP
2#define SETTINGS_UI_HPP
3
4#include <QObject>
5#include <QString>
6#include <QFormLayout>
7#include <QWidget>
8#include <memory>
9#include <map>
10
12#include "ui_ultragrid_window.h"
13#include "ui_settings.h"
14#include "settings.hpp"
15#include "checkbox_ui.hpp"
17#include "combobox_ui.hpp"
18#include "lineedit_ui.hpp"
19#include "spinbox_ui.hpp"
20#include "groupBox_ui.hpp"
21#include "radioButton_ui.hpp"
22#include "audio_opts.hpp"
23#include "video_opts.hpp"
24
26 ControlForm() : uiContainer(new QWidget()) {
27 formLayout = new QFormLayout(uiContainer.get());
28 uiContainer->setLayout(formLayout);
29 }
30 std::vector<std::unique_ptr<WidgetUi>> uiControls;
31 std::unique_ptr<QWidget> uiContainer;
32 QFormLayout *formLayout = nullptr; //owned by uiContainer
33};
34
36 std::unique_ptr<QWidget> page;
37 QListWidget *listWidget = nullptr;
38 QScrollArea *scrollArea = nullptr;
39
40 std::vector<std::unique_ptr<WidgetUi>> uiControls;
41 std::string keyPrefix;
42};
43
44class SettingsUi : public QObject{
45 Q_OBJECT
46
47public:
49 void initMainWin(Ui::UltragridWindow *ui);
50 void initSettingsWin(Ui::Settings *ui);
51
52 void refreshAll();
53
54private:
55 Ui::UltragridWindow *mainWin = nullptr;
56 Ui::Settings *settingsWin = nullptr;
57 Settings *settings = nullptr;
59
60 std::vector<std::unique_ptr<WidgetUi>> uiControls;
61 std::vector<std::unique_ptr<WidgetUi>> codecControls;
62 std::vector<std::unique_ptr<WidgetUi>> displayControls;
63
64 std::map<SettingType, DeviceOptTab> deviceTabs;
65
66 static void refreshAllCallback(Option&, bool, void *);
67
68 void addCallbacks();
69
70 void addControl(WidgetUi *widget);
71
72 void addDeviceTabs();
73 void buildSettingsDeviceList(QListWidget *list, SettingType type);
74 void buildDeviceOptControls(const Device& dev, DeviceOptTab& tab);
75
77 std::string_view keyPrefix,
78 const std::vector<CapabOpt>& opts);
79
80private slots:
81
82 void test();
83
85 void settingsCodecSelected(QListWidgetItem *curr, QListWidgetItem *prev);
87
88 void settingsDeviceSelected(QListWidgetItem *curr, QListWidgetItem *prev);
89
90signals:
91 void changed();
92};
93
94
95#endif //SETTINGS_UI
static void refreshAllCallback(Option &, bool, void *)
Ui::Settings * settingsWin
std::vector< std::unique_ptr< WidgetUi > > uiControls
std::map< SettingType, DeviceOptTab > deviceTabs
void addControl(WidgetUi *widget)
void refreshAll()
AvailableSettings * availableSettings
void changed()
Settings * settings
void addCallbacks()
void buildSettingsDeviceList(QListWidget *list, SettingType type)
void initSettingsWin(Ui::Settings *ui)
std::vector< std::unique_ptr< WidgetUi > > displayControls
Ui::UltragridWindow * mainWin
void buildCodecOptControls(const Codec &codec)
void initMainWin(Ui::UltragridWindow *ui)
void buildSettingsCodecList()
void fillFormOptions(ControlForm &form, std::string_view keyPrefix, const std::vector< CapabOpt > &opts)
void init(Settings *settings, AvailableSettings *availableSettings)
void buildDeviceOptControls(const Device &dev, DeviceOptTab &tab)
void settingsCodecSelected(QListWidgetItem *curr, QListWidgetItem *prev)
void settingsDeviceSelected(QListWidgetItem *curr, QListWidgetItem *prev)
void addDeviceTabs()
std::vector< std::unique_ptr< WidgetUi > > codecControls
Option::OptType type
Definition settings.cpp:194
std::vector< std::unique_ptr< WidgetUi > > uiControls
QFormLayout * formLayout
std::unique_ptr< QWidget > uiContainer
std::vector< std::unique_ptr< WidgetUi > > uiControls
std::unique_ptr< QWidget > page
std::string keyPrefix
QScrollArea * scrollArea
QListWidget * listWidget