mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 21:20:06 +00:00
Merge pull request #66 from dpaulat/feature/collapsible-groups
Collapsible Groups
This commit is contained in:
commit
809adfd422
16 changed files with 766 additions and 427 deletions
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M384 432c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0zm64-16c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z"/></svg>
|
||||||
|
After Width: | Height: | Size: 641 B |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M400 96c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320zM384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z"/></svg>
|
||||||
|
After Width: | Height: | Size: 639 B |
|
|
@ -121,7 +121,8 @@ set(HDR_SETTINGS source/scwx/qt/settings/general_settings.hpp
|
||||||
source/scwx/qt/settings/settings_interface.hpp
|
source/scwx/qt/settings/settings_interface.hpp
|
||||||
source/scwx/qt/settings/settings_interface_base.hpp
|
source/scwx/qt/settings/settings_interface_base.hpp
|
||||||
source/scwx/qt/settings/settings_variable.hpp
|
source/scwx/qt/settings/settings_variable.hpp
|
||||||
source/scwx/qt/settings/settings_variable_base.hpp)
|
source/scwx/qt/settings/settings_variable_base.hpp
|
||||||
|
source/scwx/qt/settings/ui_settings.hpp)
|
||||||
set(SRC_SETTINGS source/scwx/qt/settings/general_settings.cpp
|
set(SRC_SETTINGS source/scwx/qt/settings/general_settings.cpp
|
||||||
source/scwx/qt/settings/map_settings.cpp
|
source/scwx/qt/settings/map_settings.cpp
|
||||||
source/scwx/qt/settings/palette_settings.cpp
|
source/scwx/qt/settings/palette_settings.cpp
|
||||||
|
|
@ -130,7 +131,8 @@ set(SRC_SETTINGS source/scwx/qt/settings/general_settings.cpp
|
||||||
source/scwx/qt/settings/settings_interface.cpp
|
source/scwx/qt/settings/settings_interface.cpp
|
||||||
source/scwx/qt/settings/settings_interface_base.cpp
|
source/scwx/qt/settings/settings_interface_base.cpp
|
||||||
source/scwx/qt/settings/settings_variable.cpp
|
source/scwx/qt/settings/settings_variable.cpp
|
||||||
source/scwx/qt/settings/settings_variable_base.cpp)
|
source/scwx/qt/settings/settings_variable_base.cpp
|
||||||
|
source/scwx/qt/settings/ui_settings.cpp)
|
||||||
set(HDR_TYPES source/scwx/qt/types/alert_types.hpp
|
set(HDR_TYPES source/scwx/qt/types/alert_types.hpp
|
||||||
source/scwx/qt/types/font_types.hpp
|
source/scwx/qt/types/font_types.hpp
|
||||||
source/scwx/qt/types/github_types.hpp
|
source/scwx/qt/types/github_types.hpp
|
||||||
|
|
@ -147,6 +149,7 @@ set(HDR_UI source/scwx/qt/ui/about_dialog.hpp
|
||||||
source/scwx/qt/ui/alert_dialog.hpp
|
source/scwx/qt/ui/alert_dialog.hpp
|
||||||
source/scwx/qt/ui/alert_dock_widget.hpp
|
source/scwx/qt/ui/alert_dock_widget.hpp
|
||||||
source/scwx/qt/ui/animation_dock_widget.hpp
|
source/scwx/qt/ui/animation_dock_widget.hpp
|
||||||
|
source/scwx/qt/ui/collapsible_group.hpp
|
||||||
source/scwx/qt/ui/flow_layout.hpp
|
source/scwx/qt/ui/flow_layout.hpp
|
||||||
source/scwx/qt/ui/imgui_debug_dialog.hpp
|
source/scwx/qt/ui/imgui_debug_dialog.hpp
|
||||||
source/scwx/qt/ui/imgui_debug_widget.hpp
|
source/scwx/qt/ui/imgui_debug_widget.hpp
|
||||||
|
|
@ -160,6 +163,7 @@ set(SRC_UI source/scwx/qt/ui/about_dialog.cpp
|
||||||
source/scwx/qt/ui/alert_dialog.cpp
|
source/scwx/qt/ui/alert_dialog.cpp
|
||||||
source/scwx/qt/ui/alert_dock_widget.cpp
|
source/scwx/qt/ui/alert_dock_widget.cpp
|
||||||
source/scwx/qt/ui/animation_dock_widget.cpp
|
source/scwx/qt/ui/animation_dock_widget.cpp
|
||||||
|
source/scwx/qt/ui/collapsible_group.cpp
|
||||||
source/scwx/qt/ui/flow_layout.cpp
|
source/scwx/qt/ui/flow_layout.cpp
|
||||||
source/scwx/qt/ui/imgui_debug_dialog.cpp
|
source/scwx/qt/ui/imgui_debug_dialog.cpp
|
||||||
source/scwx/qt/ui/imgui_debug_widget.cpp
|
source/scwx/qt/ui/imgui_debug_widget.cpp
|
||||||
|
|
@ -173,6 +177,7 @@ set(UI_UI source/scwx/qt/ui/about_dialog.ui
|
||||||
source/scwx/qt/ui/alert_dialog.ui
|
source/scwx/qt/ui/alert_dialog.ui
|
||||||
source/scwx/qt/ui/alert_dock_widget.ui
|
source/scwx/qt/ui/alert_dock_widget.ui
|
||||||
source/scwx/qt/ui/animation_dock_widget.ui
|
source/scwx/qt/ui/animation_dock_widget.ui
|
||||||
|
source/scwx/qt/ui/collapsible_group.ui
|
||||||
source/scwx/qt/ui/imgui_debug_dialog.ui
|
source/scwx/qt/ui/imgui_debug_dialog.ui
|
||||||
source/scwx/qt/ui/radar_site_dialog.ui
|
source/scwx/qt/ui/radar_site_dialog.ui
|
||||||
source/scwx/qt/ui/settings_dialog.ui
|
source/scwx/qt/ui/settings_dialog.ui
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,8 @@
|
||||||
<file>res/icons/font-awesome-6/play-solid.svg</file>
|
<file>res/icons/font-awesome-6/play-solid.svg</file>
|
||||||
<file>res/icons/font-awesome-6/rotate-left-solid.svg</file>
|
<file>res/icons/font-awesome-6/rotate-left-solid.svg</file>
|
||||||
<file>res/icons/font-awesome-6/sliders-solid.svg</file>
|
<file>res/icons/font-awesome-6/sliders-solid.svg</file>
|
||||||
|
<file>res/icons/font-awesome-6/square-caret-down-regular.svg</file>
|
||||||
|
<file>res/icons/font-awesome-6/square-caret-right-regular.svg</file>
|
||||||
<file>res/icons/font-awesome-6/square-minus-regular.svg</file>
|
<file>res/icons/font-awesome-6/square-minus-regular.svg</file>
|
||||||
<file>res/icons/font-awesome-6/square-plus-regular.svg</file>
|
<file>res/icons/font-awesome-6/square-plus-regular.svg</file>
|
||||||
<file>res/palettes/wct/CC.pal</file>
|
<file>res/palettes/wct/CC.pal</file>
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,12 @@
|
||||||
#include <scwx/qt/map/map_provider.hpp>
|
#include <scwx/qt/map/map_provider.hpp>
|
||||||
#include <scwx/qt/map/map_widget.hpp>
|
#include <scwx/qt/map/map_widget.hpp>
|
||||||
#include <scwx/qt/model/radar_product_model.hpp>
|
#include <scwx/qt/model/radar_product_model.hpp>
|
||||||
#include <scwx/qt/ui/alert_dock_widget.hpp>
|
#include <scwx/qt/settings/ui_settings.hpp>
|
||||||
#include <scwx/qt/ui/flow_layout.hpp>
|
|
||||||
#include <scwx/qt/ui/about_dialog.hpp>
|
#include <scwx/qt/ui/about_dialog.hpp>
|
||||||
|
#include <scwx/qt/ui/alert_dock_widget.hpp>
|
||||||
#include <scwx/qt/ui/animation_dock_widget.hpp>
|
#include <scwx/qt/ui/animation_dock_widget.hpp>
|
||||||
|
#include <scwx/qt/ui/collapsible_group.hpp>
|
||||||
|
#include <scwx/qt/ui/flow_layout.hpp>
|
||||||
#include <scwx/qt/ui/imgui_debug_dialog.hpp>
|
#include <scwx/qt/ui/imgui_debug_dialog.hpp>
|
||||||
#include <scwx/qt/ui/level2_products_widget.hpp>
|
#include <scwx/qt/ui/level2_products_widget.hpp>
|
||||||
#include <scwx/qt/ui/level2_settings_widget.hpp>
|
#include <scwx/qt/ui/level2_settings_widget.hpp>
|
||||||
|
|
@ -61,6 +63,11 @@ public:
|
||||||
mainWindow_ {mainWindow},
|
mainWindow_ {mainWindow},
|
||||||
settings_ {},
|
settings_ {},
|
||||||
activeMap_ {nullptr},
|
activeMap_ {nullptr},
|
||||||
|
mapSettingsGroup_ {nullptr},
|
||||||
|
level2ProductsGroup_ {nullptr},
|
||||||
|
level2SettingsGroup_ {nullptr},
|
||||||
|
level3ProductsGroup_ {nullptr},
|
||||||
|
timelineGroup_ {nullptr},
|
||||||
level2ProductsWidget_ {nullptr},
|
level2ProductsWidget_ {nullptr},
|
||||||
level2SettingsWidget_ {nullptr},
|
level2SettingsWidget_ {nullptr},
|
||||||
level3ProductsWidget_ {nullptr},
|
level3ProductsWidget_ {nullptr},
|
||||||
|
|
@ -115,6 +122,7 @@ public:
|
||||||
void AsyncSetup();
|
void AsyncSetup();
|
||||||
void ConfigureMapLayout();
|
void ConfigureMapLayout();
|
||||||
void ConfigureMapStyles();
|
void ConfigureMapStyles();
|
||||||
|
void ConfigureUiSettings();
|
||||||
void ConnectAnimationSignals();
|
void ConnectAnimationSignals();
|
||||||
void ConnectMapSignals();
|
void ConnectMapSignals();
|
||||||
void ConnectOtherSignals();
|
void ConnectOtherSignals();
|
||||||
|
|
@ -142,6 +150,11 @@ public:
|
||||||
map::MapProvider mapProvider_;
|
map::MapProvider mapProvider_;
|
||||||
map::MapWidget* activeMap_;
|
map::MapWidget* activeMap_;
|
||||||
|
|
||||||
|
ui::CollapsibleGroup* mapSettingsGroup_;
|
||||||
|
ui::CollapsibleGroup* level2ProductsGroup_;
|
||||||
|
ui::CollapsibleGroup* level2SettingsGroup_;
|
||||||
|
ui::CollapsibleGroup* level3ProductsGroup_;
|
||||||
|
ui::CollapsibleGroup* timelineGroup_;
|
||||||
ui::Level2ProductsWidget* level2ProductsWidget_;
|
ui::Level2ProductsWidget* level2ProductsWidget_;
|
||||||
ui::Level2SettingsWidget* level2SettingsWidget_;
|
ui::Level2SettingsWidget* level2SettingsWidget_;
|
||||||
|
|
||||||
|
|
@ -193,23 +206,12 @@ MainWindow::MainWindow(QWidget* parent) :
|
||||||
p->alertDockWidget_->setVisible(false);
|
p->alertDockWidget_->setVisible(false);
|
||||||
addDockWidget(Qt::BottomDockWidgetArea, p->alertDockWidget_);
|
addDockWidget(Qt::BottomDockWidgetArea, p->alertDockWidget_);
|
||||||
|
|
||||||
// Animation Dock Widget
|
|
||||||
p->animationDockWidget_ = new ui::AnimationDockWidget(this);
|
|
||||||
p->animationDockWidget_->setVisible(true);
|
|
||||||
addDockWidget(Qt::LeftDockWidgetArea, p->animationDockWidget_);
|
|
||||||
|
|
||||||
// Configure Menu
|
// Configure Menu
|
||||||
ui->menuView->insertAction(ui->actionRadarToolbox,
|
ui->menuView->insertAction(ui->actionRadarToolbox,
|
||||||
ui->radarToolboxDock->toggleViewAction());
|
ui->radarToolboxDock->toggleViewAction());
|
||||||
ui->radarToolboxDock->toggleViewAction()->setText(tr("Radar &Toolbox"));
|
ui->radarToolboxDock->toggleViewAction()->setText(tr("Radar &Toolbox"));
|
||||||
ui->actionRadarToolbox->setVisible(false);
|
ui->actionRadarToolbox->setVisible(false);
|
||||||
|
|
||||||
ui->menuView->insertAction(ui->actionAnimationToolbox,
|
|
||||||
p->animationDockWidget_->toggleViewAction());
|
|
||||||
p->animationDockWidget_->toggleViewAction()->setText(
|
|
||||||
tr("A&nimation Toolbox"));
|
|
||||||
ui->actionAnimationToolbox->setVisible(false);
|
|
||||||
|
|
||||||
ui->menuView->insertAction(ui->actionResourceExplorer,
|
ui->menuView->insertAction(ui->actionResourceExplorer,
|
||||||
ui->resourceExplorerDock->toggleViewAction());
|
ui->resourceExplorerDock->toggleViewAction());
|
||||||
ui->resourceExplorerDock->toggleViewAction()->setText(
|
ui->resourceExplorerDock->toggleViewAction()->setText(
|
||||||
|
|
@ -240,24 +242,55 @@ MainWindow::MainWindow(QWidget* parent) :
|
||||||
// Settings Dialog
|
// Settings Dialog
|
||||||
p->settingsDialog_ = new ui::SettingsDialog(this);
|
p->settingsDialog_ = new ui::SettingsDialog(this);
|
||||||
|
|
||||||
|
// Map Settings
|
||||||
|
p->mapSettingsGroup_ = new ui::CollapsibleGroup(tr("Map Settings"), this);
|
||||||
|
p->mapSettingsGroup_->GetContentsLayout()->addWidget(ui->mapStyleLabel);
|
||||||
|
p->mapSettingsGroup_->GetContentsLayout()->addWidget(ui->mapStyleComboBox);
|
||||||
|
ui->radarToolboxScrollAreaContents->layout()->replaceWidget(
|
||||||
|
ui->mapSettingsGroupBox, p->mapSettingsGroup_);
|
||||||
|
ui->mapSettingsGroupBox->setVisible(false);
|
||||||
|
|
||||||
// Add Level 2 Products
|
// Add Level 2 Products
|
||||||
|
p->level2ProductsGroup_ =
|
||||||
|
new ui::CollapsibleGroup(tr("Level 2 Products"), this);
|
||||||
p->level2ProductsWidget_ = new ui::Level2ProductsWidget(this);
|
p->level2ProductsWidget_ = new ui::Level2ProductsWidget(this);
|
||||||
ui->radarProductGroupBox->layout()->replaceWidget(ui->level2ProductFrame,
|
p->level2ProductsGroup_->GetContentsLayout()->addWidget(
|
||||||
p->level2ProductsWidget_);
|
p->level2ProductsWidget_);
|
||||||
delete ui->level2ProductFrame;
|
ui->radarToolboxScrollAreaContents->layout()->addWidget(
|
||||||
ui->level2ProductFrame = p->level2ProductsWidget_;
|
p->level2ProductsGroup_);
|
||||||
|
|
||||||
// Add Level 3 Products
|
// Add Level 3 Products
|
||||||
|
p->level3ProductsGroup_ =
|
||||||
|
new ui::CollapsibleGroup(tr("Level 3 Products"), this);
|
||||||
p->level3ProductsWidget_ = new ui::Level3ProductsWidget(this);
|
p->level3ProductsWidget_ = new ui::Level3ProductsWidget(this);
|
||||||
ui->radarProductGroupBox->layout()->replaceWidget(ui->level3ProductFrame,
|
p->level3ProductsGroup_->GetContentsLayout()->addWidget(
|
||||||
p->level3ProductsWidget_);
|
p->level3ProductsWidget_);
|
||||||
delete ui->level3ProductFrame;
|
ui->radarToolboxScrollAreaContents->layout()->addWidget(
|
||||||
ui->level3ProductFrame = p->level3ProductsWidget_;
|
p->level3ProductsGroup_);
|
||||||
|
|
||||||
// Add Level 2 Settings
|
// Add Level 2 Settings
|
||||||
p->level2SettingsWidget_ = new ui::Level2SettingsWidget(ui->settingsFrame);
|
p->level2SettingsGroup_ =
|
||||||
ui->settingsFrame->layout()->addWidget(p->level2SettingsWidget_);
|
new ui::CollapsibleGroup(tr("Level 2 Settings"), this);
|
||||||
p->level2SettingsWidget_->setVisible(false);
|
p->level2SettingsWidget_ = new ui::Level2SettingsWidget(this);
|
||||||
|
p->level2SettingsGroup_->GetContentsLayout()->addWidget(
|
||||||
|
p->level2SettingsWidget_);
|
||||||
|
ui->radarToolboxScrollAreaContents->layout()->addWidget(
|
||||||
|
p->level2SettingsGroup_);
|
||||||
|
p->level2SettingsGroup_->setVisible(false);
|
||||||
|
ui->radarToolboxScrollAreaContents->layout()->addWidget(
|
||||||
|
p->level2SettingsGroup_);
|
||||||
|
|
||||||
|
// Timeline
|
||||||
|
p->timelineGroup_ = new ui::CollapsibleGroup(tr("Timeline"), this);
|
||||||
|
p->animationDockWidget_ = new ui::AnimationDockWidget(this);
|
||||||
|
p->timelineGroup_->GetContentsLayout()->addWidget(p->animationDockWidget_);
|
||||||
|
ui->radarToolboxScrollAreaContents->layout()->addWidget(p->timelineGroup_);
|
||||||
|
|
||||||
|
// Reset toolbox spacer at the bottom
|
||||||
|
ui->radarToolboxScrollAreaContents->layout()->removeItem(
|
||||||
|
ui->radarToolboxSpacer);
|
||||||
|
ui->radarToolboxScrollAreaContents->layout()->addItem(
|
||||||
|
ui->radarToolboxSpacer);
|
||||||
|
|
||||||
// ImGui Debug Dialog
|
// ImGui Debug Dialog
|
||||||
p->imGuiDebugDialog_ = new ui::ImGuiDebugDialog(this);
|
p->imGuiDebugDialog_ = new ui::ImGuiDebugDialog(this);
|
||||||
|
|
@ -280,6 +313,7 @@ MainWindow::MainWindow(QWidget* parent) :
|
||||||
|
|
||||||
p->PopulateMapStyles();
|
p->PopulateMapStyles();
|
||||||
p->ConfigureMapStyles();
|
p->ConfigureMapStyles();
|
||||||
|
p->ConfigureUiSettings();
|
||||||
p->ConnectMapSignals();
|
p->ConnectMapSignals();
|
||||||
p->ConnectAnimationSignals();
|
p->ConnectAnimationSignals();
|
||||||
p->ConnectOtherSignals();
|
p->ConnectOtherSignals();
|
||||||
|
|
@ -637,6 +671,42 @@ void MainWindowImpl::ConfigureMapStyles()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindowImpl::ConfigureUiSettings()
|
||||||
|
{
|
||||||
|
auto& uiSettings = settings::UiSettings::Instance();
|
||||||
|
|
||||||
|
level2ProductsGroup_->SetExpanded(
|
||||||
|
uiSettings.level2_products_expanded().GetValue());
|
||||||
|
level2SettingsGroup_->SetExpanded(
|
||||||
|
uiSettings.level2_settings_expanded().GetValue());
|
||||||
|
level3ProductsGroup_->SetExpanded(
|
||||||
|
uiSettings.level3_products_expanded().GetValue());
|
||||||
|
mapSettingsGroup_->SetExpanded(
|
||||||
|
uiSettings.map_settings_expanded().GetValue());
|
||||||
|
timelineGroup_->SetExpanded(uiSettings.timeline_expanded().GetValue());
|
||||||
|
|
||||||
|
connect(level2ProductsGroup_,
|
||||||
|
&ui::CollapsibleGroup::StateChanged,
|
||||||
|
[&](bool expanded)
|
||||||
|
{ uiSettings.level2_products_expanded().StageValue(expanded); });
|
||||||
|
connect(level2SettingsGroup_,
|
||||||
|
&ui::CollapsibleGroup::StateChanged,
|
||||||
|
[&](bool expanded)
|
||||||
|
{ uiSettings.level2_settings_expanded().StageValue(expanded); });
|
||||||
|
connect(level3ProductsGroup_,
|
||||||
|
&ui::CollapsibleGroup::StateChanged,
|
||||||
|
[&](bool expanded)
|
||||||
|
{ uiSettings.level3_products_expanded().StageValue(expanded); });
|
||||||
|
connect(mapSettingsGroup_,
|
||||||
|
&ui::CollapsibleGroup::StateChanged,
|
||||||
|
[&](bool expanded)
|
||||||
|
{ uiSettings.map_settings_expanded().StageValue(expanded); });
|
||||||
|
connect(timelineGroup_,
|
||||||
|
&ui::CollapsibleGroup::StateChanged,
|
||||||
|
[&](bool expanded)
|
||||||
|
{ uiSettings.timeline_expanded().StageValue(expanded); });
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindowImpl::ConnectMapSignals()
|
void MainWindowImpl::ConnectMapSignals()
|
||||||
{
|
{
|
||||||
for (const auto& mapWidget : maps_)
|
for (const auto& mapWidget : maps_)
|
||||||
|
|
@ -1011,11 +1081,11 @@ void MainWindowImpl::UpdateRadarProductSettings()
|
||||||
if (activeMap_->GetRadarProductGroup() == common::RadarProductGroup::Level2)
|
if (activeMap_->GetRadarProductGroup() == common::RadarProductGroup::Level2)
|
||||||
{
|
{
|
||||||
level2SettingsWidget_->UpdateSettings(activeMap_);
|
level2SettingsWidget_->UpdateSettings(activeMap_);
|
||||||
level2SettingsWidget_->setVisible(true);
|
level2SettingsGroup_->setVisible(true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
level2SettingsWidget_->setVisible(false);
|
level2SettingsGroup_->setVisible(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,6 @@
|
||||||
<string>&View</string>
|
<string>&View</string>
|
||||||
</property>
|
</property>
|
||||||
<addaction name="actionRadarToolbox"/>
|
<addaction name="actionRadarToolbox"/>
|
||||||
<addaction name="actionAnimationToolbox"/>
|
|
||||||
<addaction name="actionResourceExplorer"/>
|
<addaction name="actionResourceExplorer"/>
|
||||||
<addaction name="actionAlerts"/>
|
<addaction name="actionAlerts"/>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
@ -121,7 +120,7 @@
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="horizontalScrollBarPolicy">
|
<property name="horizontalScrollBarPolicy">
|
||||||
<enum>Qt::ScrollBarAlwaysOff</enum>
|
<enum>Qt::ScrollBarAsNeeded</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeAdjustPolicy">
|
<property name="sizeAdjustPolicy">
|
||||||
<enum>QAbstractScrollArea::AdjustToContents</enum>
|
<enum>QAbstractScrollArea::AdjustToContents</enum>
|
||||||
|
|
@ -134,8 +133,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>175</width>
|
<width>157</width>
|
||||||
<height>696</height>
|
<height>702</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||||
|
|
@ -240,60 +239,6 @@
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QGroupBox" name="radarProductGroupBox">
|
|
||||||
<property name="title">
|
|
||||||
<string>Radar Products</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="level2Label">
|
|
||||||
<property name="text">
|
|
||||||
<string>Level 2</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QWidget" name="level2ProductFrame" native="true"/>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="Line" name="level2Separator">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="level3Label">
|
|
||||||
<property name="text">
|
|
||||||
<string>Level 3</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QWidget" name="level3ProductFrame" native="true"/>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QWidget" name="settingsFrame" native="true">
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
|
||||||
<property name="leftMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<spacer name="radarToolboxSpacer">
|
<spacer name="radarToolboxSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
|
@ -470,11 +415,6 @@
|
||||||
<string>&Check for Updates</string>
|
<string>&Check for Updates</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionAnimationToolbox">
|
|
||||||
<property name="text">
|
|
||||||
<string>A&nimation Toolbox</string>
|
|
||||||
</property>
|
|
||||||
</action>
|
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../../../../scwx-qt.qrc"/>
|
<include location="../../../../scwx-qt.qrc"/>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#include <scwx/qt/manager/settings_manager.hpp>
|
#include <scwx/qt/manager/settings_manager.hpp>
|
||||||
#include <scwx/qt/map/map_provider.hpp>
|
#include <scwx/qt/map/map_provider.hpp>
|
||||||
|
#include <scwx/qt/settings/ui_settings.hpp>
|
||||||
#include <scwx/qt/util/json.hpp>
|
#include <scwx/qt/util/json.hpp>
|
||||||
#include <scwx/util/logger.hpp>
|
#include <scwx/util/logger.hpp>
|
||||||
|
|
||||||
|
|
@ -96,6 +97,7 @@ void Shutdown()
|
||||||
|
|
||||||
dataChanged |= general_settings().Shutdown();
|
dataChanged |= general_settings().Shutdown();
|
||||||
dataChanged |= map_settings().Shutdown();
|
dataChanged |= map_settings().Shutdown();
|
||||||
|
dataChanged |= settings::UiSettings::Instance().Shutdown();
|
||||||
|
|
||||||
if (dataChanged)
|
if (dataChanged)
|
||||||
{
|
{
|
||||||
|
|
@ -128,6 +130,7 @@ static boost::json::value ConvertSettingsToJson()
|
||||||
general_settings().WriteJson(settingsJson);
|
general_settings().WriteJson(settingsJson);
|
||||||
map_settings().WriteJson(settingsJson);
|
map_settings().WriteJson(settingsJson);
|
||||||
palette_settings().WriteJson(settingsJson);
|
palette_settings().WriteJson(settingsJson);
|
||||||
|
settings::UiSettings::Instance().WriteJson(settingsJson);
|
||||||
|
|
||||||
return settingsJson;
|
return settingsJson;
|
||||||
}
|
}
|
||||||
|
|
@ -139,6 +142,7 @@ static void GenerateDefaultSettings()
|
||||||
general_settings().SetDefaults();
|
general_settings().SetDefaults();
|
||||||
map_settings().SetDefaults();
|
map_settings().SetDefaults();
|
||||||
palette_settings().SetDefaults();
|
palette_settings().SetDefaults();
|
||||||
|
settings::UiSettings::Instance().SetDefaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool LoadSettings(const boost::json::object& settingsJson)
|
static bool LoadSettings(const boost::json::object& settingsJson)
|
||||||
|
|
@ -150,6 +154,7 @@ static bool LoadSettings(const boost::json::object& settingsJson)
|
||||||
jsonDirty |= !general_settings().ReadJson(settingsJson);
|
jsonDirty |= !general_settings().ReadJson(settingsJson);
|
||||||
jsonDirty |= !map_settings().ReadJson(settingsJson);
|
jsonDirty |= !map_settings().ReadJson(settingsJson);
|
||||||
jsonDirty |= !palette_settings().ReadJson(settingsJson);
|
jsonDirty |= !palette_settings().ReadJson(settingsJson);
|
||||||
|
jsonDirty |= !settings::UiSettings::Instance().ReadJson(settingsJson);
|
||||||
|
|
||||||
return jsonDirty;
|
return jsonDirty;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
104
scwx-qt/source/scwx/qt/settings/ui_settings.cpp
Normal file
104
scwx-qt/source/scwx/qt/settings/ui_settings.cpp
Normal file
|
|
@ -0,0 +1,104 @@
|
||||||
|
#include <scwx/qt/settings/ui_settings.hpp>
|
||||||
|
|
||||||
|
namespace scwx
|
||||||
|
{
|
||||||
|
namespace qt
|
||||||
|
{
|
||||||
|
namespace settings
|
||||||
|
{
|
||||||
|
|
||||||
|
static const std::string logPrefix_ = "scwx::qt::settings::ui_settings";
|
||||||
|
|
||||||
|
class UiSettingsImpl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit UiSettingsImpl()
|
||||||
|
{
|
||||||
|
level2ProductsExpanded_.SetDefault(false);
|
||||||
|
level2SettingsExpanded_.SetDefault(true);
|
||||||
|
level3ProductsExpanded_.SetDefault(true);
|
||||||
|
mapSettingsExpanded_.SetDefault(true);
|
||||||
|
timelineExpanded_.SetDefault(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
~UiSettingsImpl() {}
|
||||||
|
|
||||||
|
SettingsVariable<bool> level2ProductsExpanded_ {"level2_products_expanded"};
|
||||||
|
SettingsVariable<bool> level2SettingsExpanded_ {"level2_settings_expanded"};
|
||||||
|
SettingsVariable<bool> level3ProductsExpanded_ {"level3_products_expanded"};
|
||||||
|
SettingsVariable<bool> mapSettingsExpanded_ {"map_settings_expanded"};
|
||||||
|
SettingsVariable<bool> timelineExpanded_ {"timeline_expanded"};
|
||||||
|
};
|
||||||
|
|
||||||
|
UiSettings::UiSettings() :
|
||||||
|
SettingsCategory("ui"), p(std::make_unique<UiSettingsImpl>())
|
||||||
|
{
|
||||||
|
RegisterVariables({&p->level2ProductsExpanded_,
|
||||||
|
&p->level2SettingsExpanded_,
|
||||||
|
&p->level3ProductsExpanded_,
|
||||||
|
&p->mapSettingsExpanded_,
|
||||||
|
&p->timelineExpanded_});
|
||||||
|
SetDefaults();
|
||||||
|
}
|
||||||
|
UiSettings::~UiSettings() = default;
|
||||||
|
|
||||||
|
UiSettings::UiSettings(UiSettings&&) noexcept = default;
|
||||||
|
UiSettings& UiSettings::operator=(UiSettings&&) noexcept = default;
|
||||||
|
|
||||||
|
SettingsVariable<bool>& UiSettings::level2_products_expanded() const
|
||||||
|
{
|
||||||
|
return p->level2ProductsExpanded_;
|
||||||
|
}
|
||||||
|
|
||||||
|
SettingsVariable<bool>& UiSettings::level2_settings_expanded() const
|
||||||
|
{
|
||||||
|
return p->level2SettingsExpanded_;
|
||||||
|
}
|
||||||
|
|
||||||
|
SettingsVariable<bool>& UiSettings::level3_products_expanded() const
|
||||||
|
{
|
||||||
|
return p->level3ProductsExpanded_;
|
||||||
|
}
|
||||||
|
|
||||||
|
SettingsVariable<bool>& UiSettings::map_settings_expanded() const
|
||||||
|
{
|
||||||
|
return p->mapSettingsExpanded_;
|
||||||
|
}
|
||||||
|
|
||||||
|
SettingsVariable<bool>& UiSettings::timeline_expanded() const
|
||||||
|
{
|
||||||
|
return p->timelineExpanded_;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool UiSettings::Shutdown()
|
||||||
|
{
|
||||||
|
bool dataChanged = false;
|
||||||
|
|
||||||
|
// Commit settings that are managed separate from the settings dialog
|
||||||
|
dataChanged |= p->level2ProductsExpanded_.Commit();
|
||||||
|
dataChanged |= p->level2SettingsExpanded_.Commit();
|
||||||
|
dataChanged |= p->level3ProductsExpanded_.Commit();
|
||||||
|
dataChanged |= p->mapSettingsExpanded_.Commit();
|
||||||
|
dataChanged |= p->timelineExpanded_.Commit();
|
||||||
|
|
||||||
|
return dataChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
UiSettings& UiSettings::Instance()
|
||||||
|
{
|
||||||
|
static UiSettings uiSettings_;
|
||||||
|
return uiSettings_;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==(const UiSettings& lhs, const UiSettings& rhs)
|
||||||
|
{
|
||||||
|
return (lhs.p->level2ProductsExpanded_ == rhs.p->level2ProductsExpanded_ &&
|
||||||
|
lhs.p->level2SettingsExpanded_ == rhs.p->level2SettingsExpanded_ &&
|
||||||
|
lhs.p->level3ProductsExpanded_ == rhs.p->level3ProductsExpanded_ &&
|
||||||
|
lhs.p->mapSettingsExpanded_ == rhs.p->mapSettingsExpanded_ &&
|
||||||
|
lhs.p->timelineExpanded_ == rhs.p->timelineExpanded_);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace settings
|
||||||
|
} // namespace qt
|
||||||
|
} // namespace scwx
|
||||||
48
scwx-qt/source/scwx/qt/settings/ui_settings.hpp
Normal file
48
scwx-qt/source/scwx/qt/settings/ui_settings.hpp
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <scwx/qt/settings/settings_category.hpp>
|
||||||
|
#include <scwx/qt/settings/settings_variable.hpp>
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace scwx
|
||||||
|
{
|
||||||
|
namespace qt
|
||||||
|
{
|
||||||
|
namespace settings
|
||||||
|
{
|
||||||
|
|
||||||
|
class UiSettingsImpl;
|
||||||
|
|
||||||
|
class UiSettings : public SettingsCategory
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit UiSettings();
|
||||||
|
~UiSettings();
|
||||||
|
|
||||||
|
UiSettings(const UiSettings&) = delete;
|
||||||
|
UiSettings& operator=(const UiSettings&) = delete;
|
||||||
|
|
||||||
|
UiSettings(UiSettings&&) noexcept;
|
||||||
|
UiSettings& operator=(UiSettings&&) noexcept;
|
||||||
|
|
||||||
|
SettingsVariable<bool>& level2_products_expanded() const;
|
||||||
|
SettingsVariable<bool>& level2_settings_expanded() const;
|
||||||
|
SettingsVariable<bool>& level3_products_expanded() const;
|
||||||
|
SettingsVariable<bool>& map_settings_expanded() const;
|
||||||
|
SettingsVariable<bool>& timeline_expanded() const;
|
||||||
|
|
||||||
|
bool Shutdown();
|
||||||
|
|
||||||
|
static UiSettings& Instance();
|
||||||
|
|
||||||
|
friend bool operator==(const UiSettings& lhs, const UiSettings& rhs);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::unique_ptr<UiSettingsImpl> p;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace settings
|
||||||
|
} // namespace qt
|
||||||
|
} // namespace scwx
|
||||||
|
|
@ -51,7 +51,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
AnimationDockWidget::AnimationDockWidget(QWidget* parent) :
|
AnimationDockWidget::AnimationDockWidget(QWidget* parent) :
|
||||||
QDockWidget(parent),
|
QFrame(parent),
|
||||||
p {std::make_unique<AnimationDockWidgetImpl>(this)},
|
p {std::make_unique<AnimationDockWidgetImpl>(this)},
|
||||||
ui(new Ui::AnimationDockWidget)
|
ui(new Ui::AnimationDockWidget)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
|
||||||
#include <QDockWidget>
|
#include <QFrame>
|
||||||
|
|
||||||
namespace Ui
|
namespace Ui
|
||||||
{
|
{
|
||||||
|
|
@ -20,7 +20,7 @@ namespace ui
|
||||||
|
|
||||||
class AnimationDockWidgetImpl;
|
class AnimationDockWidgetImpl;
|
||||||
|
|
||||||
class AnimationDockWidget : public QDockWidget
|
class AnimationDockWidget : public QFrame
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,353 +1,304 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>AnimationDockWidget</class>
|
<class>AnimationDockWidget</class>
|
||||||
<widget class="QDockWidget" name="AnimationDockWidget">
|
<widget class="QFrame" name="AnimationDockWidget">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>200</width>
|
<width>189</width>
|
||||||
<height>543</height>
|
<height>264</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="frameShape">
|
||||||
<string>Animation Toolbox</string>
|
<enum>QFrame::StyledPanel</enum>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="dockWidgetContents">
|
<property name="frameShadow">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<enum>QFrame::Raised</enum>
|
||||||
<item>
|
</property>
|
||||||
<widget class="QScrollArea" name="scrollArea">
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
<property name="frameShape">
|
<property name="leftMargin">
|
||||||
<enum>QFrame::NoFrame</enum>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="lineWidth">
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="autoUpdateLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Auto Update: Enabled</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="liveViewRadioButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Live View</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="archiveViewRadioButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Archive View</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDateEdit" name="dateEdit">
|
||||||
|
<property name="correctionMode">
|
||||||
|
<enum>QAbstractSpinBox::CorrectToNearestValue</enum>
|
||||||
|
</property>
|
||||||
|
<property name="minimumDateTime">
|
||||||
|
<datetime>
|
||||||
|
<hour>0</hour>
|
||||||
|
<minute>0</minute>
|
||||||
|
<second>0</second>
|
||||||
|
<year>1991</year>
|
||||||
|
<month>6</month>
|
||||||
|
<day>1</day>
|
||||||
|
</datetime>
|
||||||
|
</property>
|
||||||
|
<property name="displayFormat">
|
||||||
|
<string>yyyy-MM-dd</string>
|
||||||
|
</property>
|
||||||
|
<property name="calendarPopup">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="frame">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="horizontalScrollBarPolicy">
|
<property name="topMargin">
|
||||||
<enum>Qt::ScrollBarAlwaysOff</enum>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="widgetResizable">
|
<property name="rightMargin">
|
||||||
<bool>true</bool>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="scrollAreaContents">
|
<property name="bottomMargin">
|
||||||
<property name="geometry">
|
<number>0</number>
|
||||||
<rect>
|
</property>
|
||||||
<x>0</x>
|
<item>
|
||||||
<y>0</y>
|
<widget class="QTimeEdit" name="timeEdit">
|
||||||
<width>182</width>
|
<property name="correctionMode">
|
||||||
<height>506</height>
|
<enum>QAbstractSpinBox::CorrectToNearestValue</enum>
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
|
||||||
<property name="leftMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="topMargin">
|
<property name="displayFormat">
|
||||||
<number>0</number>
|
<string>HH:mm</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="rightMargin">
|
</widget>
|
||||||
<number>0</number>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>UTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="bottomMargin">
|
</widget>
|
||||||
<number>0</number>
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="frame_3">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QSpinBox" name="loopTimeSpinBox">
|
||||||
|
<property name="correctionMode">
|
||||||
|
<enum>QAbstractSpinBox::CorrectToNearestValue</enum>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<property name="suffix">
|
||||||
<widget class="QGroupBox" name="timelineGroupBox">
|
<string> min</string>
|
||||||
<property name="title">
|
</property>
|
||||||
<string>Timeline</string>
|
<property name="minimum">
|
||||||
</property>
|
<number>1</number>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
</property>
|
||||||
<item>
|
<property name="maximum">
|
||||||
<widget class="QLabel" name="autoUpdateLabel">
|
<number>1440</number>
|
||||||
<property name="text">
|
</property>
|
||||||
<string>Auto Update: Enabled</string>
|
<property name="value">
|
||||||
</property>
|
<number>30</number>
|
||||||
</widget>
|
</property>
|
||||||
</item>
|
</widget>
|
||||||
<item>
|
</item>
|
||||||
<widget class="QRadioButton" name="liveViewRadioButton">
|
<item row="1" column="0">
|
||||||
<property name="text">
|
<widget class="QLabel" name="loopSpeedLabel">
|
||||||
<string>Live View</string>
|
<property name="text">
|
||||||
</property>
|
<string>Loop Speed</string>
|
||||||
<property name="checked">
|
</property>
|
||||||
<bool>true</bool>
|
</widget>
|
||||||
</property>
|
</item>
|
||||||
</widget>
|
<item row="2" column="0">
|
||||||
</item>
|
<widget class="QLabel" name="loopDelayLabel">
|
||||||
<item>
|
<property name="text">
|
||||||
<widget class="QRadioButton" name="archiveViewRadioButton">
|
<string>Loop Delay</string>
|
||||||
<property name="text">
|
</property>
|
||||||
<string>Archive View</string>
|
</widget>
|
||||||
</property>
|
</item>
|
||||||
</widget>
|
<item row="2" column="1">
|
||||||
</item>
|
<widget class="QDoubleSpinBox" name="loopDelaySpinBox">
|
||||||
<item>
|
<property name="suffix">
|
||||||
<widget class="QDateEdit" name="dateEdit">
|
<string> sec</string>
|
||||||
<property name="correctionMode">
|
</property>
|
||||||
<enum>QAbstractSpinBox::CorrectToNearestValue</enum>
|
<property name="decimals">
|
||||||
</property>
|
<number>1</number>
|
||||||
<property name="minimumDateTime">
|
</property>
|
||||||
<datetime>
|
<property name="maximum">
|
||||||
<hour>0</hour>
|
<double>15.000000000000000</double>
|
||||||
<minute>0</minute>
|
</property>
|
||||||
<second>0</second>
|
<property name="singleStep">
|
||||||
<year>1991</year>
|
<double>0.100000000000000</double>
|
||||||
<month>6</month>
|
</property>
|
||||||
<day>1</day>
|
<property name="value">
|
||||||
</datetime>
|
<double>2.500000000000000</double>
|
||||||
</property>
|
</property>
|
||||||
<property name="displayFormat">
|
</widget>
|
||||||
<string>yyyy-MM-dd</string>
|
</item>
|
||||||
</property>
|
<item row="1" column="1">
|
||||||
<property name="calendarPopup">
|
<widget class="QDoubleSpinBox" name="loopSpeedSpinBox">
|
||||||
<bool>true</bool>
|
<property name="correctionMode">
|
||||||
</property>
|
<enum>QAbstractSpinBox::CorrectToNearestValue</enum>
|
||||||
</widget>
|
</property>
|
||||||
</item>
|
<property name="suffix">
|
||||||
<item>
|
<string>x</string>
|
||||||
<widget class="QFrame" name="frame">
|
</property>
|
||||||
<property name="frameShape">
|
<property name="minimum">
|
||||||
<enum>QFrame::StyledPanel</enum>
|
<double>1.000000000000000</double>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
<property name="value">
|
||||||
<enum>QFrame::Raised</enum>
|
<double>1.000000000000000</double>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
</widget>
|
||||||
<property name="leftMargin">
|
</item>
|
||||||
<number>0</number>
|
<item row="0" column="0">
|
||||||
</property>
|
<widget class="QLabel" name="loopTimeLabel">
|
||||||
<property name="topMargin">
|
<property name="text">
|
||||||
<number>0</number>
|
<string>Loop Time</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="rightMargin">
|
</widget>
|
||||||
<number>0</number>
|
</item>
|
||||||
</property>
|
</layout>
|
||||||
<property name="bottomMargin">
|
</widget>
|
||||||
<number>0</number>
|
</item>
|
||||||
</property>
|
<item>
|
||||||
<item>
|
<widget class="QFrame" name="frame_2">
|
||||||
<widget class="QTimeEdit" name="timeEdit">
|
<property name="frameShape">
|
||||||
<property name="correctionMode">
|
<enum>QFrame::StyledPanel</enum>
|
||||||
<enum>QAbstractSpinBox::CorrectToNearestValue</enum>
|
</property>
|
||||||
</property>
|
<property name="frameShadow">
|
||||||
<property name="displayFormat">
|
<enum>QFrame::Raised</enum>
|
||||||
<string>HH:mm</string>
|
</property>
|
||||||
</property>
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
</widget>
|
<property name="spacing">
|
||||||
</item>
|
<number>1</number>
|
||||||
<item>
|
</property>
|
||||||
<widget class="QLabel" name="label">
|
<property name="leftMargin">
|
||||||
<property name="text">
|
<number>0</number>
|
||||||
<string>UTC</string>
|
</property>
|
||||||
</property>
|
<property name="topMargin">
|
||||||
</widget>
|
<number>0</number>
|
||||||
</item>
|
</property>
|
||||||
</layout>
|
<property name="rightMargin">
|
||||||
</widget>
|
<number>0</number>
|
||||||
</item>
|
</property>
|
||||||
<item>
|
<property name="bottomMargin">
|
||||||
<widget class="QFrame" name="frame_3">
|
<number>0</number>
|
||||||
<property name="frameShape">
|
</property>
|
||||||
<enum>QFrame::StyledPanel</enum>
|
<item>
|
||||||
</property>
|
<widget class="QToolButton" name="beginButton">
|
||||||
<property name="frameShadow">
|
<property name="text">
|
||||||
<enum>QFrame::Raised</enum>
|
<string>...</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<property name="icon">
|
||||||
<property name="leftMargin">
|
<iconset resource="../../../../scwx-qt.qrc">
|
||||||
<number>0</number>
|
<normaloff>:/res/icons/font-awesome-6/backward-step-solid.svg</normaloff>:/res/icons/font-awesome-6/backward-step-solid.svg</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="topMargin">
|
</widget>
|
||||||
<number>0</number>
|
</item>
|
||||||
</property>
|
<item>
|
||||||
<property name="rightMargin">
|
<widget class="QToolButton" name="stepBackButton">
|
||||||
<number>0</number>
|
<property name="text">
|
||||||
</property>
|
<string>...</string>
|
||||||
<property name="bottomMargin">
|
</property>
|
||||||
<number>0</number>
|
<property name="icon">
|
||||||
</property>
|
<iconset resource="../../../../scwx-qt.qrc">
|
||||||
<item row="0" column="1">
|
<normaloff>:/res/icons/font-awesome-6/angle-left-solid.svg</normaloff>:/res/icons/font-awesome-6/angle-left-solid.svg</iconset>
|
||||||
<widget class="QSpinBox" name="loopTimeSpinBox">
|
</property>
|
||||||
<property name="correctionMode">
|
</widget>
|
||||||
<enum>QAbstractSpinBox::CorrectToNearestValue</enum>
|
</item>
|
||||||
</property>
|
<item>
|
||||||
<property name="suffix">
|
<widget class="QToolButton" name="playButton">
|
||||||
<string> min</string>
|
<property name="text">
|
||||||
</property>
|
<string>...</string>
|
||||||
<property name="minimum">
|
</property>
|
||||||
<number>1</number>
|
<property name="icon">
|
||||||
</property>
|
<iconset resource="../../../../scwx-qt.qrc">
|
||||||
<property name="maximum">
|
<normaloff>:/res/icons/font-awesome-6/play-solid.svg</normaloff>:/res/icons/font-awesome-6/play-solid.svg</iconset>
|
||||||
<number>1440</number>
|
</property>
|
||||||
</property>
|
</widget>
|
||||||
<property name="value">
|
</item>
|
||||||
<number>30</number>
|
<item>
|
||||||
</property>
|
<widget class="QToolButton" name="stepNextButton">
|
||||||
</widget>
|
<property name="text">
|
||||||
</item>
|
<string>...</string>
|
||||||
<item row="0" column="0">
|
</property>
|
||||||
<widget class="QLabel" name="loopTimeLabel">
|
<property name="icon">
|
||||||
<property name="text">
|
<iconset resource="../../../../scwx-qt.qrc">
|
||||||
<string>Loop Time</string>
|
<normaloff>:/res/icons/font-awesome-6/angle-right-solid.svg</normaloff>:/res/icons/font-awesome-6/angle-right-solid.svg</iconset>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item>
|
||||||
<widget class="QLabel" name="loopSpeedLabel">
|
<widget class="QToolButton" name="endButton">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Loop Speed</string>
|
<string>...</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
<property name="icon">
|
||||||
</item>
|
<iconset resource="../../../../scwx-qt.qrc">
|
||||||
<item row="1" column="1">
|
<normaloff>:/res/icons/font-awesome-6/forward-step-solid.svg</normaloff>:/res/icons/font-awesome-6/forward-step-solid.svg</iconset>
|
||||||
<widget class="QDoubleSpinBox" name="loopSpeedSpinBox">
|
</property>
|
||||||
<property name="correctionMode">
|
</widget>
|
||||||
<enum>QAbstractSpinBox::CorrectToNearestValue</enum>
|
</item>
|
||||||
</property>
|
</layout>
|
||||||
<property name="suffix">
|
</widget>
|
||||||
<string>x</string>
|
</item>
|
||||||
</property>
|
</layout>
|
||||||
<property name="minimum">
|
|
||||||
<double>1.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<double>1.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QLabel" name="loopDelayLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Loop Delay</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QDoubleSpinBox" name="loopDelaySpinBox">
|
|
||||||
<property name="suffix">
|
|
||||||
<string> sec</string>
|
|
||||||
</property>
|
|
||||||
<property name="decimals">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<double>15.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="singleStep">
|
|
||||||
<double>0.100000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<double>2.500000000000000</double>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QFrame" name="frame_2">
|
|
||||||
<property name="frameShape">
|
|
||||||
<enum>QFrame::StyledPanel</enum>
|
|
||||||
</property>
|
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Raised</enum>
|
|
||||||
</property>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
||||||
<property name="spacing">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="leftMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<widget class="QToolButton" name="beginButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="../../../../scwx-qt.qrc">
|
|
||||||
<normaloff>:/res/icons/font-awesome-6/backward-step-solid.svg</normaloff>:/res/icons/font-awesome-6/backward-step-solid.svg</iconset>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QToolButton" name="stepBackButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="../../../../scwx-qt.qrc">
|
|
||||||
<normaloff>:/res/icons/font-awesome-6/angle-left-solid.svg</normaloff>:/res/icons/font-awesome-6/angle-left-solid.svg</iconset>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QToolButton" name="playButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="../../../../scwx-qt.qrc">
|
|
||||||
<normaloff>:/res/icons/font-awesome-6/play-solid.svg</normaloff>:/res/icons/font-awesome-6/play-solid.svg</iconset>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QToolButton" name="stepNextButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="../../../../scwx-qt.qrc">
|
|
||||||
<normaloff>:/res/icons/font-awesome-6/angle-right-solid.svg</normaloff>:/res/icons/font-awesome-6/angle-right-solid.svg</iconset>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QToolButton" name="endButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="../../../../scwx-qt.qrc">
|
|
||||||
<normaloff>:/res/icons/font-awesome-6/forward-step-solid.svg</normaloff>:/res/icons/font-awesome-6/forward-step-solid.svg</iconset>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="verticalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>40</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../../../../scwx-qt.qrc"/>
|
<include location="../../../../scwx-qt.qrc"/>
|
||||||
|
|
|
||||||
102
scwx-qt/source/scwx/qt/ui/collapsible_group.cpp
Normal file
102
scwx-qt/source/scwx/qt/ui/collapsible_group.cpp
Normal file
|
|
@ -0,0 +1,102 @@
|
||||||
|
#include "collapsible_group.hpp"
|
||||||
|
#include "ui_collapsible_group.h"
|
||||||
|
|
||||||
|
namespace scwx
|
||||||
|
{
|
||||||
|
namespace qt
|
||||||
|
{
|
||||||
|
namespace ui
|
||||||
|
{
|
||||||
|
|
||||||
|
class CollapsibleGroupImpl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit CollapsibleGroupImpl(CollapsibleGroup* self) : self_ {self} {}
|
||||||
|
~CollapsibleGroupImpl() = default;
|
||||||
|
|
||||||
|
void Initialize();
|
||||||
|
|
||||||
|
const QIcon kCollapsedIcon_ {
|
||||||
|
":/res/icons/font-awesome-6/square-caret-right-regular.svg"};
|
||||||
|
const QIcon kExpandedIcon_ {
|
||||||
|
":/res/icons/font-awesome-6/square-caret-down-regular.svg"};
|
||||||
|
|
||||||
|
const std::map<bool, const QIcon&> kIcon_ {{false, kCollapsedIcon_},
|
||||||
|
{true, kExpandedIcon_}};
|
||||||
|
|
||||||
|
CollapsibleGroup* self_;
|
||||||
|
|
||||||
|
bool expanded_ {true};
|
||||||
|
};
|
||||||
|
|
||||||
|
CollapsibleGroup::CollapsibleGroup(QWidget* parent) :
|
||||||
|
QFrame(parent),
|
||||||
|
p {std::make_unique<CollapsibleGroupImpl>(this)},
|
||||||
|
ui(new Ui::CollapsibleGroup)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
p->Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
CollapsibleGroup::CollapsibleGroup(const QString& title, QWidget* parent) :
|
||||||
|
QFrame(parent),
|
||||||
|
p {std::make_unique<CollapsibleGroupImpl>(this)},
|
||||||
|
ui(new Ui::CollapsibleGroup)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
ui->titleButton->setText(title);
|
||||||
|
p->Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
CollapsibleGroup::~CollapsibleGroup()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CollapsibleGroupImpl::Initialize()
|
||||||
|
{
|
||||||
|
QObject::connect(
|
||||||
|
self_->ui->titleButton,
|
||||||
|
&QAbstractButton::clicked,
|
||||||
|
self_,
|
||||||
|
[this]() { self_->SetExpanded(!expanded_); },
|
||||||
|
Qt::DirectConnection);
|
||||||
|
|
||||||
|
self_->SetExpanded(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
QLayout* CollapsibleGroup::GetContentsLayout()
|
||||||
|
{
|
||||||
|
return ui->contentsFrame->layout();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CollapsibleGroup::SetContentsLayout(QLayout* layout)
|
||||||
|
{
|
||||||
|
ui->contentsFrame->setLayout(layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CollapsibleGroup::SetTitle(const QString& title)
|
||||||
|
{
|
||||||
|
ui->titleButton->setText(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CollapsibleGroup::SetExpanded(bool expanded)
|
||||||
|
{
|
||||||
|
// Update icon
|
||||||
|
ui->titleButton->setIcon(p->kIcon_.at(expanded));
|
||||||
|
|
||||||
|
// Update contents visibility
|
||||||
|
ui->contentsFrame->setVisible(expanded);
|
||||||
|
|
||||||
|
// Update internal state
|
||||||
|
if (p->expanded_ != expanded)
|
||||||
|
{
|
||||||
|
p->expanded_ = expanded;
|
||||||
|
|
||||||
|
Q_EMIT StateChanged(expanded);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace ui
|
||||||
|
} // namespace qt
|
||||||
|
} // namespace scwx
|
||||||
46
scwx-qt/source/scwx/qt/ui/collapsible_group.hpp
Normal file
46
scwx-qt/source/scwx/qt/ui/collapsible_group.hpp
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QFrame>
|
||||||
|
|
||||||
|
namespace Ui
|
||||||
|
{
|
||||||
|
class CollapsibleGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace scwx
|
||||||
|
{
|
||||||
|
namespace qt
|
||||||
|
{
|
||||||
|
namespace ui
|
||||||
|
{
|
||||||
|
|
||||||
|
class CollapsibleGroupImpl;
|
||||||
|
|
||||||
|
class CollapsibleGroup : public QFrame
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit CollapsibleGroup(QWidget* parent = nullptr);
|
||||||
|
explicit CollapsibleGroup(const QString& title, QWidget* parent = nullptr);
|
||||||
|
~CollapsibleGroup();
|
||||||
|
|
||||||
|
QLayout* GetContentsLayout();
|
||||||
|
void SetContentsLayout(QLayout* contents);
|
||||||
|
void SetTitle(const QString& title);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void SetExpanded(bool expanded);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void StateChanged(bool expanded);
|
||||||
|
|
||||||
|
private:
|
||||||
|
friend class CollapsibleGroupImpl;
|
||||||
|
std::unique_ptr<CollapsibleGroupImpl> p;
|
||||||
|
Ui::CollapsibleGroup* ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace ui
|
||||||
|
} // namespace qt
|
||||||
|
} // namespace scwx
|
||||||
64
scwx-qt/source/scwx/qt/ui/collapsible_group.ui
Normal file
64
scwx-qt/source/scwx/qt/ui/collapsible_group.ui
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>CollapsibleGroup</class>
|
||||||
|
<widget class="QFrame" name="CollapsibleGroup">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Frame</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="titleButton">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">text-align: left;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Title</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../../../scwx-qt.qrc">
|
||||||
|
<normaloff>:/res/icons/font-awesome-6/square-caret-right-regular.svg</normaloff>
|
||||||
|
<normalon>:/res/icons/font-awesome-6/square-caret-down-regular.svg</normalon>:/res/icons/font-awesome-6/square-caret-right-regular.svg</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="contentsFrame">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::Box</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Sunken</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="contentsLayout"/>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources>
|
||||||
|
<include location="../../../../scwx-qt.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 875afa5ead329536f802096ca1d2ef1010a7cc6b
|
Subproject commit b2fa7d866800902f4c092c567017c832bcdbe702
|
||||||
Loading…
Add table
Add a link
Reference in a new issue