mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 07:50:04 +00:00
First addition of qt6ct based color palettes to give dark mode on all platforms.
This commit is contained in:
parent
194638f759
commit
0bce0e2bd7
15 changed files with 187 additions and 1 deletions
4
scwx-qt/res/qt6ct_colors/airy.conf
Normal file
4
scwx-qt/res/qt6ct_colors/airy.conf
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
[ColorScheme]
|
||||
active_colors=#ff000000, #ffdcdcdc, #ffdcdcdc, #ff5e5c5b, #ff646464, #ffe1e1e1, #ff000000, #ff0a0a0a, #ff0a0a0a, #ffc8c8c8, #ffffffff, #ffe7e4e0, #ff0986d3, #ff0a0a0a, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff646464, #ff050505, #80000000
|
||||
disabled_colors=#ffffffff, #ff424245, #ffdcdcdc, #ff5e5c5b, #ff646464, #ffe1e1e1, #ff808080, #ffffffff, #ff808080, #ff969696, #ffc8c8c8, #ffe7e4e0, #ff0986d3, #ff808080, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff646464, #ffffffff, #80000000
|
||||
inactive_colors=#ff323232, #ffb4b4b4, #ffdcdcdc, #ff5e5c5b, #ff646464, #ffe1e1e1, #ff323232, #ff323232, #ff323232, #ff969696, #ffc8c8c8, #ffe7e4e0, #ff0986d3, #ff323232, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff646464, #ff323232, #80000000
|
||||
4
scwx-qt/res/qt6ct_colors/darker.conf
Normal file
4
scwx-qt/res/qt6ct_colors/darker.conf
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
[ColorScheme]
|
||||
active_colors=#ffffffff, #ff424245, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ffffffff, #ffffffff, #ffffffff, #ff3d3d3d, #ff222020, #ffe7e4e0, #ff12608a, #fff9f9f9, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff3f3f36, #ffffffff, #80ffffff
|
||||
disabled_colors=#ff808080, #ff424245, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ff808080, #ffffffff, #ff808080, #ff3d3d3d, #ff222020, #ffe7e4e0, #ff12608a, #ff808080, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff3f3f36, #ffffffff, #80ffffff
|
||||
inactive_colors=#ffffffff, #ff424245, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ffffffff, #ffffffff, #ffffffff, #ff3d3d3d, #ff222020, #ffe7e4e0, #ff12608a, #fff9f9f9, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff3f3f36, #ffffffff, #80ffffff
|
||||
4
scwx-qt/res/qt6ct_colors/dusk.conf
Normal file
4
scwx-qt/res/qt6ct_colors/dusk.conf
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
[ColorScheme]
|
||||
active_colors=#ff000000, #ff7f7f7f, #ffffffff, #ffcbc7c4, #ff7f7f7f, #ffb8b5b2, #ff000000, #ffffffff, #ff000000, #ff7f7f7f, #ff7f7f7f, #ff707070, #ff308cc6, #ffffffff, #ff0000ff, #ffff00ff, #ff7f7f7f, #ff000000, #ff7f7f7f, #ff000000, #80000000
|
||||
disabled_colors=#ffbebebe, #ff7f7f7f, #ffffffff, #ffcbc7c4, #ff7f7f7f, #ffb8b5b2, #ffbebebe, #ffffffff, #ffbebebe, #ff7f7f7f, #ff7f7f7f, #ffb1aeab, #ff7f7f7f, #ffffffff, #ff0000ff, #ffff00ff, #ff7f7f7f, #ff000000, #ff7f7f7f, #ff000000, #80000000
|
||||
inactive_colors=#ff000000, #ff7f7f7f, #ffffffff, #ffcbc7c4, #ff7f7f7f, #ffb8b5b2, #ff000000, #ffffffff, #ff000000, #ff7f7f7f, #ff7f7f7f, #ff707070, #ff308cc6, #ffffffff, #ff0000ff, #ffff00ff, #ff7f7f7f, #ff000000, #ff7f7f7f, #ff000000, #80000000
|
||||
4
scwx-qt/res/qt6ct_colors/ia_ora.conf
Normal file
4
scwx-qt/res/qt6ct_colors/ia_ora.conf
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
[ColorScheme]
|
||||
active_colors=#ff000000, #ffeff3f7, #ffffffff, #ffe9e7e3, #ffc7cbce, #ffa0a0a4, #ff000000, #ffffffff, #ff000000, #ffeff3f7, #ffeff3f7, #ffb8bbbe, #ff4965ae, #ffffffff, #ff0000ff, #ffff00ff, #ffeff3f7, #ff000000, #ffffffdc, #ff000000, #80000000
|
||||
disabled_colors=#ff808080, #ffeff3f7, #ffffffff, #ffe9e7e3, #ffc7cbce, #ffa0a0a4, #ff808080, #ffffffff, #ff808080, #ffeff3f7, #ffeff3f7, #ffb8bbbe, #ff4965ae, #ff808080, #ff0000ff, #ffff00ff, #ffeff3f7, #ff000000, #ffffffdc, #ff000000, #80000000
|
||||
inactive_colors=#ff000000, #ffeff3f7, #ffffffff, #ffe9e7e3, #ffc7cbce, #ffa0a0a4, #ff000000, #ffffffff, #ff000000, #ffeff3f7, #ffeff3f7, #ffb8bbbe, #ff4965ae, #ffffffff, #ff0000ff, #ffff00ff, #ffeff3f7, #ff000000, #ffffffdc, #ff000000, #80000000
|
||||
4
scwx-qt/res/qt6ct_colors/sand.conf
Normal file
4
scwx-qt/res/qt6ct_colors/sand.conf
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
[ColorScheme]
|
||||
active_colors=#ff000000, #ffffffdc, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ff000000, #ff000000, #ff000000, #ffffffdc, #ffffffdc, #ffe7e4e0, #ff5f5b5d, #fff9f9f9, #ff0986d3, #ffa70b06, #ffffffdc, #ff000000, #ff3f3f36, #ff000000, #80000000
|
||||
disabled_colors=#ff4a4947, #ffffffdc, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ff4a4947, #ff4a4947, #ff4a4947, #ffffffdc, #ffffffdc, #ffe7e4e0, #ff5f5b5d, #fff9f9f9, #ff0986d3, #ffa70b06, #ffffffdc, #ff000000, #ff3f3f36, #ff000000, #80000000
|
||||
inactive_colors=#ff000000, #ffffffdc, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ff000000, #ff000000, #ff000000, #ffffffdc, #ffffffdc, #ffe7e4e0, #ff5f5b5d, #fff9f9f9, #ff0986d3, #ffa70b06, #ffffffdc, #ff000000, #ff3f3f36, #ff000000, #80000000
|
||||
4
scwx-qt/res/qt6ct_colors/simple.conf
Normal file
4
scwx-qt/res/qt6ct_colors/simple.conf
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
[ColorScheme]
|
||||
active_colors=#ff000000, #ffefebe7, #ffffffff, #ffcbc7c4, #ff9f9d9a, #ffb8b5b2, #ff000000, #ffffffff, #ff000000, #ffffffff, #ffefebe7, #ffb1aeab, #ff308cc6, #ffffffff, #ff0000ff, #ffff0000, #fff7f5f3, #ff000000, #ffffffdc, #ff000000, #80000000
|
||||
disabled_colors=#ffbebebe, #ffefebe7, #ffffffff, #ffcbc7c4, #ff9f9d9a, #ffb8b5b2, #ffbebebe, #ffffffff, #ffbebebe, #ffefebe7, #ffefebe7, #ffb1aeab, #ff9f9d9a, #ffffffff, #ff0000ff, #ffff0000, #fff7f5f3, #ff000000, #ffffffdc, #ff000000, #80000000
|
||||
inactive_colors=#ff000000, #ffefebe7, #ffffffff, #ffcbc7c4, #ff9f9d9a, #ffb8b5b2, #ff000000, #ffffffff, #ff000000, #ffffffff, #ffefebe7, #ffb1aeab, #ff308cc6, #ffffffff, #ff0000ff, #ffff0000, #fff7f5f3, #ff000000, #ffffffdc, #ff000000, #80000000
|
||||
4
scwx-qt/res/qt6ct_colors/waves.conf
Normal file
4
scwx-qt/res/qt6ct_colors/waves.conf
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
[ColorScheme]
|
||||
active_colors=#ffb0b0b0, #ff010b2c, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ffb0b0b0, #ffb0b0b0, #ffb0b0b0, #ff010b2c, #ff010b2c, #ffb0b0b0, #ff302f2e, #ffb0b0b0, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff0a0a0a, #ffffffff, #80b0b0b0
|
||||
disabled_colors=#ff808080, #ff010b2c, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ff808080, #ff808080, #ff808080, #ff00071d, #ff00071d, #ffb0b0b0, #ff00071d, #ff808080, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff0a0a0a, #ffffffff, #80b0b0b0
|
||||
inactive_colors=#ffb0b0b0, #ff010b2c, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ffb0b0b0, #ffb0b0b0, #ffb0b0b0, #ff010b2c, #ff010b2c, #ffb0b0b0, #ff302f2e, #ffb0b0b0, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff0a0a0a, #ffffffff, #80b0b0b0
|
||||
|
|
@ -357,6 +357,7 @@ set(HDR_UTIL source/scwx/qt/util/color.hpp
|
|||
source/scwx/qt/util/texture_atlas.hpp
|
||||
source/scwx/qt/util/q_file_buffer.hpp
|
||||
source/scwx/qt/util/q_file_input_stream.hpp
|
||||
source/scwx/qt/util/qt6ct_palette.hpp
|
||||
source/scwx/qt/util/time.hpp
|
||||
source/scwx/qt/util/tooltip.hpp)
|
||||
set(SRC_UTIL source/scwx/qt/util/color.cpp
|
||||
|
|
@ -369,6 +370,7 @@ set(SRC_UTIL source/scwx/qt/util/color.cpp
|
|||
source/scwx/qt/util/texture_atlas.cpp
|
||||
source/scwx/qt/util/q_file_buffer.cpp
|
||||
source/scwx/qt/util/q_file_input_stream.cpp
|
||||
source/scwx/qt/util/qt6ct_palette.cpp
|
||||
source/scwx/qt/util/time.cpp
|
||||
source/scwx/qt/util/tooltip.cpp)
|
||||
set(HDR_VIEW source/scwx/qt/view/level2_product_view.hpp
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@
|
|||
<file>res/palettes/wct/SW.pal</file>
|
||||
<file>res/palettes/wct/VIL.pal</file>
|
||||
<file>res/palettes/wct/ZDR.pal</file>
|
||||
<file>res/qt6ct_colors/darker.conf</file>
|
||||
<file>res/textures/lines/default-1x7.png</file>
|
||||
<file>res/textures/lines/test-pattern.png</file>
|
||||
<file>res/textures/images/cursor-17.png</file>
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include <scwx/qt/settings/general_settings.hpp>
|
||||
#include <scwx/qt/types/qt_types.hpp>
|
||||
#include <scwx/qt/ui/setup/setup_wizard.hpp>
|
||||
#include <scwx/qt/util/qt6ct_palette.hpp>
|
||||
#include <scwx/network/cpr.hpp>
|
||||
#include <scwx/util/environment.hpp>
|
||||
#include <scwx/util/logger.hpp>
|
||||
|
|
@ -27,6 +28,8 @@
|
|||
#include <QStandardPaths>
|
||||
#include <QStyleHints>
|
||||
#include <QTranslator>
|
||||
#include <QPalette>
|
||||
#include <QStyle>
|
||||
|
||||
static const std::string logPrefix_ = "scwx::main";
|
||||
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
|
||||
|
|
@ -162,6 +165,15 @@ static void ConfigureTheme(const std::vector<std::string>& args)
|
|||
}
|
||||
|
||||
QGuiApplication::styleHints()->setColorScheme(qtColorScheme);
|
||||
|
||||
if (uiStyle == scwx::qt::types::UiStyle::FusionQt6Ct)
|
||||
{
|
||||
auto palette =
|
||||
std::make_unique<QPalette>(scwx::qt::util::qt6ct::loadColorScheme(
|
||||
":res/qt6ct_colors/darker.conf",
|
||||
QApplication::style()->standardPalette()));
|
||||
QApplication::setPalette(*palette);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ static const std::unordered_map<UiStyle, std::string> qtStyleName_ {
|
|||
{UiStyle::Fusion, "Fusion"},
|
||||
{UiStyle::FusionLight, "Fusion"},
|
||||
{UiStyle::FusionDark, "Fusion"},
|
||||
{UiStyle::FusionQt6Ct, "Fusion"},
|
||||
{UiStyle::Unknown, "?"}};
|
||||
|
||||
static const std::unordered_map<UiStyle, std::string> uiStyleName_ {
|
||||
|
|
@ -22,6 +23,7 @@ static const std::unordered_map<UiStyle, std::string> uiStyleName_ {
|
|||
{UiStyle::Fusion, "Fusion"},
|
||||
{UiStyle::FusionLight, "Fusion Light"},
|
||||
{UiStyle::FusionDark, "Fusion Dark"},
|
||||
{UiStyle::FusionQt6Ct, "Fusion with qt6ct Palette"},
|
||||
{UiStyle::Unknown, "?"}};
|
||||
|
||||
static const std::unordered_map<UiStyle, Qt::ColorScheme> qtColorSchemeMap_ {
|
||||
|
|
@ -29,6 +31,7 @@ static const std::unordered_map<UiStyle, Qt::ColorScheme> qtColorSchemeMap_ {
|
|||
{UiStyle::Fusion, Qt::ColorScheme::Unknown},
|
||||
{UiStyle::FusionLight, Qt::ColorScheme::Light},
|
||||
{UiStyle::FusionDark, Qt::ColorScheme::Dark},
|
||||
{UiStyle::FusionQt6Ct, Qt::ColorScheme::Unknown},
|
||||
{UiStyle::Unknown, Qt::ColorScheme::Unknown}};
|
||||
|
||||
SCWX_GET_ENUM(UiStyle, GetUiStyle, uiStyleName_)
|
||||
|
|
|
|||
|
|
@ -26,9 +26,10 @@ enum class UiStyle
|
|||
Fusion,
|
||||
FusionLight,
|
||||
FusionDark,
|
||||
FusionQt6Ct,
|
||||
Unknown
|
||||
};
|
||||
typedef scwx::util::Iterator<UiStyle, UiStyle::Default, UiStyle::FusionDark>
|
||||
typedef scwx::util::Iterator<UiStyle, UiStyle::Default, UiStyle::FusionQt6Ct>
|
||||
UiStyleIterator;
|
||||
|
||||
Qt::ColorScheme GetQtColorScheme(UiStyle uiStyle);
|
||||
|
|
|
|||
87
scwx-qt/source/scwx/qt/util/qt6ct_palette.cpp
Normal file
87
scwx-qt/source/scwx/qt/util/qt6ct_palette.cpp
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
/* This code is drawn from qt6ct, and loads qt6ct color palette files.
|
||||
* qt6ct is licensed under BSD-2-Clause below.
|
||||
*
|
||||
* Copyright (c) 2020-2024, Ilya Kotov <forkotov02@ya.ru>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <QPalette>
|
||||
#include <QSettings>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace qt
|
||||
{
|
||||
namespace util
|
||||
{
|
||||
namespace qt6ct
|
||||
{
|
||||
|
||||
QPalette loadColorScheme(const QString &filePath, const QPalette &fallback)
|
||||
{
|
||||
QPalette customPalette;
|
||||
QSettings settings(filePath, QSettings::IniFormat);
|
||||
settings.beginGroup("ColorScheme");
|
||||
QStringList activeColors = settings.value("active_colors").toStringList();
|
||||
QStringList inactiveColors = settings.value("inactive_colors").toStringList();
|
||||
QStringList disabledColors = settings.value("disabled_colors").toStringList();
|
||||
settings.endGroup();
|
||||
|
||||
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(6,6,0))
|
||||
if(activeColors.count() == QPalette::Accent)
|
||||
activeColors << activeColors.at(QPalette::Highlight);
|
||||
if(inactiveColors.count() == QPalette::Accent)
|
||||
inactiveColors << inactiveColors.at(QPalette::Highlight);
|
||||
if(disabledColors.count() == QPalette::Accent)
|
||||
disabledColors << disabledColors.at(QPalette::Highlight);
|
||||
#endif
|
||||
|
||||
|
||||
if(activeColors.count() >= QPalette::NColorRoles &&
|
||||
inactiveColors.count() >= QPalette::NColorRoles &&
|
||||
disabledColors.count() >= QPalette::NColorRoles)
|
||||
{
|
||||
for (int i = 0; i < QPalette::NColorRoles; i++)
|
||||
{
|
||||
QPalette::ColorRole role = QPalette::ColorRole(i);
|
||||
customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i)));
|
||||
customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i)));
|
||||
customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i)));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
customPalette = fallback; //load fallback palette
|
||||
}
|
||||
|
||||
return customPalette;
|
||||
}
|
||||
|
||||
} // namespace qt6ct
|
||||
} // namespace util
|
||||
} // namespace qt
|
||||
} // namespace scwx
|
||||
50
scwx-qt/source/scwx/qt/util/qt6ct_palette.hpp
Normal file
50
scwx-qt/source/scwx/qt/util/qt6ct_palette.hpp
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
#pragma once
|
||||
|
||||
/* This code is drawn from qt6ct, and loads qt6ct color palette files.
|
||||
* qt6ct is licensed under BSD-2-Clause below.
|
||||
*
|
||||
* Copyright (c) 2020-2024, Ilya Kotov <forkotov02@ya.ru>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <QString>
|
||||
#include <QPalette>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace qt
|
||||
{
|
||||
namespace util
|
||||
{
|
||||
namespace qt6ct
|
||||
{
|
||||
|
||||
QPalette loadColorScheme(const QString &filePath, const QPalette &fallback);
|
||||
|
||||
} // namespace qt6ct
|
||||
} // namespace util
|
||||
} // namespace qt
|
||||
} // namespace scwx
|
||||
Loading…
Add table
Add a link
Reference in a new issue