#include "RecourceHelper.h" #include #include #include #include #include #include #include #include #include #include "config.h" #include "common/SpdLogger.h" template<> RecourceHelper* Singleton::instance_ = nullptr; RecourceHelper::RecourceHelper(QObject* parent) : QObject(parent) { Init(); } RecourceHelper::~RecourceHelper() { } void RecourceHelper::OnDestory() { } void RecourceHelper::SetIcon(QLabel* lab, QChar c, quint32 size) { iconFont_.setPointSize(size); lab->setFont(iconFont_); lab->setText(c); } void RecourceHelper::SetIcon(QAbstractButton* btn, QChar c, quint32 size) { iconFont_.setPointSize(size); btn->setFont(iconFont_); btn->setText(c); } void RecourceHelper::OnChangeStyle() { QAction* act = reinterpret_cast(sender()); QString skin = act->data().toString(); ChangeSkin(skin); } const QString RecourceHelper::GetBasePath() const { return QApplication::applicationDirPath(); } const QString RecourceHelper::GetResourcesPath() const { return QApplication::applicationDirPath() + "/resources"; } const QString RecourceHelper::GetUiConfigPath() const { #if _DEBUG const QString iniFile = QString("%1config/ui.ini").arg(QString(CONFIG_PATH)); #else const QString appDirPath = QApplication::applicationDirPath(); const QString iniFile = QString("%1/config/ui.ini").arg(appDirPath); #endif return iniFile; } void RecourceHelper::ChangeSkin(const QString& skin) { #if _DEBUG const QString qssFile = QString("%1skin/%2.qss").arg(QString(CONFIG_PATH)).arg(skin); #else const QString appDirPath = QApplication::applicationDirPath(); const QString qssFile = QString("%1/config/skin/%2.qss").arg(appDirPath).arg(skin); #endif QFile file(qssFile); if (file.open(QFile::ReadOnly | QFile::Text)) { QTextStream stream(&file); QString qss = stream.readAll(); qss += "\nDialogTitleBar{border-top-left-radius:10px;border-top-right-radius:10px;}\n"; qss += "QWidget#DialogContainer{border-radius:10px;background: palette(window);}\n"; qApp->setStyleSheet(qss); file.close(); } } void RecourceHelper::Init() { int fontId = QFontDatabase::addApplicationFont(":/fonts/res/fonts/fontawesome-webfont.ttf"); QStringList fontName = QFontDatabase::applicationFontFamilies(fontId); if (fontName.count() > 0) { iconFont_ = QFont(fontName.at(0)); } else { LOG_WARN("fontName count <= 0 error"); } const QString appName = QApplication::applicationDisplayName(); #ifndef NDEBUG const QString transName = QString("./%1_%2.qm").arg(appName, QLocale().name()); #else const QString appDirPath = QApplication::applicationDirPath(); const QString transName = QString("%1/translations/%2_zh_CN.qm").arg(appDirPath, appName/*, QLocale().name()*/); #endif qDebug() << transName; bool success = trans_.load(transName); if (success) { QApplication::installTranslator(&trans_); } else { LOG_WARN("load translations error: {}", transName.toStdString()); } const QString systemTransName = QString("./translations/qt_zh_CN.qm")/*.arg( QLocale::system().name())*/; success = systemTrans_.load(systemTransName); if (success) { QApplication::installTranslator(&systemTrans_); } else { LOG_WARN("load translations error: {}", systemTransName.toStdString()); } } void RecourceHelper::EmitFontChanged() { emit FontChanged(); } void RecourceHelper::ApplyGlobalFont(const QFont& f) { qApp->setFont(f); const QWidgetList widgets = QApplication::allWidgets(); for (QWidget* w : widgets) { if (w) w->setFont(f); } EmitFontChanged(); }