96 lines
2.5 KiB
C++
96 lines
2.5 KiB
C++
#include "ribbonui.h"
|
|
#include <QMutex>
|
|
#include <QOperatingSystemVersion>
|
|
#include <QWKQuick/qwkquickglobal.h>
|
|
#include <QtQuick/QQuickWindow>
|
|
#include <QGuiApplication>
|
|
#include <QDir>
|
|
#include "ribbonui_version.h"
|
|
|
|
RibbonUI::RibbonUI(QObject *parent)
|
|
: QObject(parent)
|
|
{
|
|
_version = RIBBONUI_VERSION;
|
|
_qtVersion = QString(qVersion()).replace('.',"").toInt();
|
|
_isWin11 = QOperatingSystemVersion::current() >= QOperatingSystemVersion(QOperatingSystemVersion::Windows, 10, 0, 22000);
|
|
_translator = RibbonLocalization::getInstance();
|
|
initialBind();
|
|
}
|
|
|
|
void RibbonUI::init()
|
|
{
|
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
|
qputenv("QT_QUICK_CONTROLS_STYLE", "Basic");
|
|
#else
|
|
qputenv("QT_QUICK_CONTROLS_STYLE", "Default");
|
|
#endif
|
|
#ifdef Q_OS_WIN
|
|
qputenv("QSG_RHI_BACKEND", "opengl");
|
|
#endif
|
|
QQuickWindow::setDefaultAlphaBuffer(true);
|
|
QGuiApplication::setHighDpiScaleFactorRoundingPolicy(
|
|
Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
|
|
}
|
|
|
|
void RibbonUI::registerTypes(const char *uri)
|
|
{
|
|
Q_UNUSED(uri);
|
|
QWK::registerTypes(nullptr);
|
|
}
|
|
|
|
void RibbonUI::setTranslator(RibbonLocalization *translator){
|
|
_translator->enabled(false);
|
|
_translator = translator;
|
|
_translator->enabled(true);
|
|
initTranslator();
|
|
}
|
|
|
|
void RibbonUI::initTranslator(){
|
|
QDir dir(":/i18n");
|
|
QStringList filters;
|
|
filters<<"*.qm";
|
|
dir.setNameFilters(filters);
|
|
QStringList matchedFiles = dir.entryList();
|
|
for(auto &file : std::as_const(matchedFiles)){
|
|
QString project, lang;
|
|
int start = 0;
|
|
int end = file.indexOf('_');
|
|
|
|
if (end > start)
|
|
project = file.mid(start, end - start);
|
|
|
|
start = file.indexOf('_') + 1;
|
|
end = file.lastIndexOf('.');
|
|
if (start > 0 && end > start)
|
|
lang = file.mid(start, end - start);
|
|
|
|
if(!lang.isEmpty() && !project.isEmpty()){
|
|
if(_autoLoadLanguage || (!_autoLoadLanguage && project == "RibbonUI")){
|
|
_translator->registerLanguage(lang, ":/i18n/" + file, project);
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
emit initTranslatorFinished();
|
|
}
|
|
|
|
void RibbonUI::setAutoLoadLanguage(bool value){
|
|
_autoLoadLanguage = value;
|
|
initTranslator();
|
|
}
|
|
|
|
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
|
|
Q_INVOKABLE QColor RibbonUI::color(QString colorName){
|
|
return QColor(colorName);
|
|
}
|
|
|
|
Q_INVOKABLE QColor RibbonUI::alpha(QString colorName, float alpha){
|
|
QColor c(colorName);
|
|
if(alpha > 1)
|
|
c.setAlpha(alpha);
|
|
else
|
|
c.setAlphaF(alpha);
|
|
return c;
|
|
}
|
|
#endif
|