From a5f86786054b7f811b87998934fbb5e0975f1efc Mon Sep 17 00:00:00 2001 From: gee12 Date: Sun, 12 Jan 2025 17:13:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D1=83=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=82=D0=B5=D0=BC=D1=8B=20=D0=BE?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20(?= =?UTF-8?q?=D1=81=D0=B2=D0=B5=D1=82=D0=BB=D0=B0=D1=8F/=D1=82=D0=B5=D0=BC?= =?UTF-8?q?=D0=BD=D0=B0=D1=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/bin/mytetra.qrc | 7 + .../any/styles/dark/pic/branch-closed.png | Bin 0 -> 7548 bytes .../any/styles/dark/pic/branch-end.png | Bin 0 -> 5156 bytes .../any/styles/dark/pic/branch-more.png | Bin 0 -> 5436 bytes .../any/styles/dark/pic/branch-open.png | Bin 0 -> 8287 bytes .../any/styles/dark/pic/vline.png | Bin 0 -> 4939 bytes .../any/styles/dark/stylesheet.css | 169 ++++++++++++++++++ .../any/styles/light/stylesheet.css | 13 ++ app/bin/resource/translations/mytetra_ru.ts | 37 +++- app/src/libraries/GlobalParameters.cpp | 19 +- app/src/libraries/GlobalParameters.h | 2 +- app/src/libraries/helpers/CssHelper.cpp | 24 ++- app/src/libraries/helpers/DiskHelper.cpp | 26 +++ app/src/libraries/helpers/DiskHelper.h | 2 + app/src/models/appConfig/AppConfig.cpp | 45 +++++ app/src/models/appConfig/AppConfig.h | 11 ++ .../AppConfigPage_Appearance.cpp | 41 +++++ .../AppConfigPage_Appearance.h | 8 + 18 files changed, 397 insertions(+), 7 deletions(-) create mode 100644 app/bin/resource/standartconfig/any/styles/dark/pic/branch-closed.png create mode 100644 app/bin/resource/standartconfig/any/styles/dark/pic/branch-end.png create mode 100644 app/bin/resource/standartconfig/any/styles/dark/pic/branch-more.png create mode 100644 app/bin/resource/standartconfig/any/styles/dark/pic/branch-open.png create mode 100644 app/bin/resource/standartconfig/any/styles/dark/pic/vline.png create mode 100644 app/bin/resource/standartconfig/any/styles/dark/stylesheet.css create mode 100644 app/bin/resource/standartconfig/any/styles/light/stylesheet.css diff --git a/app/bin/mytetra.qrc b/app/bin/mytetra.qrc index 60c0e471c..b2c5e1303 100644 --- a/app/bin/mytetra.qrc +++ b/app/bin/mytetra.qrc @@ -85,6 +85,13 @@ resource/standartconfig/any/conf.ini resource/standartconfig/any/editorconf.ini resource/standartconfig/any/stylesheet.css + resource/standartconfig/any/styles/dark/pic/branch-closed.png + resource/standartconfig/any/styles/dark/pic/branch-end.png + resource/standartconfig/any/styles/dark/pic/branch-more.png + resource/standartconfig/any/styles/dark/pic/branch-open.png + resource/standartconfig/any/styles/dark/pic/vline.png + resource/standartconfig/any/styles/dark/stylesheet.css + resource/standartconfig/any/styles/light/stylesheet.css resource/standartconfig/meego/conf.ini resource/standartconfig/meego/editorconf.ini resource/standartconfig/meego/stylesheet.css diff --git a/app/bin/resource/standartconfig/any/styles/dark/pic/branch-closed.png b/app/bin/resource/standartconfig/any/styles/dark/pic/branch-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..d9eb4af45eb126128fa8cff013db390ebf1b84f2 GIT binary patch literal 7548 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 literal 0 HcmV?d00001 diff --git a/app/bin/resource/standartconfig/any/styles/dark/pic/branch-end.png b/app/bin/resource/standartconfig/any/styles/dark/pic/branch-end.png new file mode 100644 index 0000000000000000000000000000000000000000..16998364037d77e3a490838617d751f083ffa886 GIT binary patch literal 5156 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 BTGapm literal 0 HcmV?d00001 diff --git a/app/bin/resource/standartconfig/any/styles/dark/pic/branch-open.png b/app/bin/resource/standartconfig/any/styles/dark/pic/branch-open.png new file mode 100644 index 0000000000000000000000000000000000000000..a22b9f4f7beac22f49a23809996983d82ab8baf5 GIT binary patch literal 8287 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 literal 0 HcmV?d00001 diff --git a/app/bin/resource/standartconfig/any/styles/dark/pic/vline.png b/app/bin/resource/standartconfig/any/styles/dark/pic/vline.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f0a1540bb936227a8f8bd36f27f6dcf7138800 GIT binary patch literal 4939 zcmeHKc~leU79T(mrBNs%E>WjJTNaZ{_C*3p!V+jS0EIH(yMeXlNcnyUa#_D9el{74rol#&L9I<8U^3lE zz=Tz+h9GNG`K*M3U;W>EuJJiIASNto;=m4}#)6#Pa=e7Ixw^fm`0|Ht@0I%R8vjLB zPu)$w=PPWb+dUhCe_F?%$ErT(I_Bnu-Bh0L(T@C>S+@JTAHjqI$sVwGQ+`pwi|VIK zhg>N6YWo&y`X}DqPh_8;J$6%g=iu7hq|R%mb%lPn&C3dwm#!&k>rD5^2)*{CNAB_f z+1=WB;9(J^jdx0Xym?O;JCM8Zh-@;s&nzUwuuFv#W7dS#3B>!2Bo zqod0$3DoPmeA53>L#h3_K7=~7Sm14%vn6ytb;*;bi<Y@~jL$E4_pg|gIe|FXUMNzwoO_`O4J;S1uEl%Y-0KAwJE z-(?Rm6C$@yR&g4ol|l~+zqbD5R*eMDKkhq`oVc-a)aMPf~IogM3hSj>>EuGx8= z=cbfaP%~*0_d-%<*RMw9#%?>mezm(yJRmUh!u#nt&c$aauqbbQQcG~*>7a<5fFMkm zNX;3!PAOMi{4nNkvsr<6s<-)N=jBDrP%QXmL-}|)OB-EVA3V&Kdn$23?YZVsAK(0a zMa|8UjM`1EIVJbj(K9X_8n$Q7twXokotMX2ZV>rZ*^>5(?xL<(uMpnMy*uYV*^sPl zF24OdY3H1df`p&1ctuMr?K=~?iZVvJmw$ks-0DXe9rD=Ux1nH9+E0TTl6IcXiM@Q0 zu?xM@cEa_1i)_2vbCqw=Vo{CxZR;nu z;x6rM&L=&F?0&*zCBs|#jaf= z%Wm_yH^t9>zk6dFW&ao5E~UpJM$eznRai4N!TM!$LfP#x^-Eh?4=LRr)*KwSW=TH( zh+o}jwzkHOlx-9s`lzO7tj-!)bTqfk+kSs>Z+iD4|E#pTS8e#Tvgz`m&s3z~!Q{-} zX)~{M?lGS!FFcsnag|$XwcHQAVrV)b&fYRq^xR`&Ma}&Olg}qWkW-dcDpks*(w997 zI&;&KwUVe4lc}dZjSF9!C$+5<;yb1eKe{|vub-L4fx44xyp@$hzw(`-fZ^u1+AbD`ZDeUXx@duNgmAtc2r!W=2 zGO+W=@qF0L>r~mvk0op8pZm_d`1*i6G|3d>qG>dcPs!m?(r9_Ag;l%M`IXUx(s=CKc* zNxVCIvQOan>Y+UYk5%zJF3AM}o-T(!P3gvlwO)1Ikb12rq@w-apj%7b_LWr}Yl76F z^8Jht(_L?;kA zDMq9FDxZLi>n+!hZa(@Vqom>HQ0S`Z*2OKmSA$tPLJMZ*Y{kc7%%EeSxIslQtU4o@ zsSp$#YBi!*GC{&BLZj77Xb-E7(O@kuq0Qnc5QR}nBx$1-nTWVWQ{%Bk$(RVIg@z0c zwu%9Ojv!Iks!P$E#a0Q;fhz{jb}^F%J5beB@&642%E`f(}4!voUSKPD_w8)vqSV^ z$OtoL(i%yvK@Zz8QI#Q;l+b8kAAT91&Ztnlg4dh-SO9!5t*DX7VjxVNj@jSBOom$k zNMAsIYGIBCKRwJ?!fZ%2VMMrv(35`sA#m)Ky)o64;z$R_m_!Pp1FB}=mGy?pNV!7! z%EC^8MyoSAtN__>Xp&m>YqH*m&A#JEr+*;8{1xsS+Ani=C<85pLM$_2srK;XG6~J@ zUyK_tEiQIE3JEoavsElQ7vm6gu8_;2iv$FlE@Y!3K8r=*I2-E+CD)rtRF4sMC;-mT z0vwi5h@xzcfKKo^LOPen#pogxAE6^Ej!GnA2?PjV)emBtNeikHP3a$%9SR3fxEkkT zY(7dCs#F3H4Tnb;5}1fC;0d{iK+WQ?kltu;OdMe_=}>T-S{AZE zR2IVE^dj32Mhwyc)S~uE1pp2Ukd0VsB2dy`iZ>WiBs6FFt}D3jKxvu6ku>#A0-2ck^5Y)ZVfsr@30l8HdFOF=Ul2Mn6%qvW|Ks!l`oBYwPiaZOkCM#g@; z{`A$xD`f_&sr}l*x~HkRa9EcAO3x3%hRMJ>m Misc - Разное + + AppConfigPage_Appearance + + + Interface theme + Тема + + + + Light + Светлая + + + + Dark + Темная + + + + Run MyTetra in a minimized window + Запускать MyTetra в свернутом окне + + + + Hide detached windows if close main window + Сворачивать открепляемые окна при закрытии главного окна + + + + Interface + Интерфейс + + + + Windows behavior + Поведение diff --git a/app/src/libraries/GlobalParameters.cpp b/app/src/libraries/GlobalParameters.cpp index 94c5bf3fe..6cc6f2ccd 100644 --- a/app/src/libraries/GlobalParameters.cpp +++ b/app/src/libraries/GlobalParameters.cpp @@ -21,6 +21,7 @@ #include "libraries/WindowSwitcher.h" #include "libraries/FixedParameters.h" #include "libraries/helpers/DebugHelper.h" +#include "libraries/helpers/DiskHelper.h" #ifdef Q_OS_WIN32 #include "windows.h" @@ -268,11 +269,23 @@ void GlobalParameters::createFirstProgramFiles(QString dirName) } -void GlobalParameters::createStyleSheetFile(QString dirName) +void GlobalParameters::createStyleSheetFile(QString dirName, QString themeName) { QString targetOs=getTargetOs(); - QFile::copy(":/resource/standartconfig/"+targetOs+"/stylesheet.css", dirName+"/stylesheet.css"); - QFile::setPermissions(dirName+"/stylesheet.css", QFile::ReadUser | QFile::WriteUser); + if (targetOs == "any" && !themeName.isNull() && !themeName.isEmpty()) + { + QString fromDir=":/resource/standartconfig/any/styles/"+themeName; + QString toDir=dirName+"/style"; + DiskHelper::removeDirectory(toDir); + DiskHelper::copyDirectoryRecursively(fromDir, toDir, QFile::ReadUser | QFile::WriteUser); + } + else + { + QDir styleDir(dirName); + styleDir.mkdir("style"); + QFile::copy(":/resource/standartconfig/"+targetOs+"/stylesheet.css", dirName+"/style/stylesheet.css"); + QFile::setPermissions(dirName+"/style/stylesheet.css", QFile::ReadUser | QFile::WriteUser); + } } diff --git a/app/src/libraries/GlobalParameters.h b/app/src/libraries/GlobalParameters.h index dc27d39d1..42a151e27 100644 --- a/app/src/libraries/GlobalParameters.h +++ b/app/src/libraries/GlobalParameters.h @@ -64,7 +64,7 @@ class GlobalParameters : public QObject // Файл стилей может создаваться и после развертывания начальных файлов MyTetra // Так как в более старых версиях MyTetra его еще не было - void createStyleSheetFile(QString dirName); + void createStyleSheetFile(QString dirName, QString themeName=NULL); public: // Указание на обрабатываемую панель инструментов редактора текста diff --git a/app/src/libraries/helpers/CssHelper.cpp b/app/src/libraries/helpers/CssHelper.cpp index 5312338f8..a28f75d10 100644 --- a/app/src/libraries/helpers/CssHelper.cpp +++ b/app/src/libraries/helpers/CssHelper.cpp @@ -7,9 +7,11 @@ #include "CssHelper.h" #include "libraries/GlobalParameters.h" +#include "models/appConfig/AppConfig.h" extern GlobalParameters globalParameters; +extern AppConfig mytetraConfig; CssHelper::CssHelper() @@ -54,7 +56,18 @@ QString CssHelper::replaceCssMetaIconSize(QString styleText) void CssHelper::setCssStyle() { - QString csspath = globalParameters.getWorkDirectory()+"/stylesheet.css"; + QString dirName=globalParameters.getWorkDirectory(); + + // Если файл стилей есть по старому пути, переносим его в каталог style + QFile file(dirName+"/stylesheet.css"); + if (file.exists()) + { + QDir styleDir(dirName); + styleDir.mkdir("style"); + file.rename(dirName+"/style/stylesheet.css"); + } + + QString csspath = dirName+"/style/stylesheet.css"; QFile css(csspath); @@ -64,7 +77,14 @@ void CssHelper::setCssStyle() if(!openResult) { qDebug() << "Stylesheet not found in " << csspath << ". Create new css file."; - globalParameters.createStyleSheetFile( globalParameters.getWorkDirectory() ); + + QString themeName; + switch (mytetraConfig.getInterfaceTheme()) + { + case AppConfig::Light: themeName="light"; break; + case AppConfig::Dark: themeName="dark"; break; + } + globalParameters.createStyleSheetFile( globalParameters.getWorkDirectory(), themeName); } css.close(); diff --git a/app/src/libraries/helpers/DiskHelper.cpp b/app/src/libraries/helpers/DiskHelper.cpp index 4ec526ec6..526b60d22 100644 --- a/app/src/libraries/helpers/DiskHelper.cpp +++ b/app/src/libraries/helpers/DiskHelper.cpp @@ -187,6 +187,32 @@ bool DiskHelper::copyDirectory(const QString &fromName, const QString &toName) } +// Копирование содержимого директории +// Рекурсивно вместе с подкаталогами +bool DiskHelper::copyDirectoryRecursively(const QString &fromName, const QString &toName, QFile::Permissions permissionSpec) +{ + QDir fromDir(fromName); + if (!fromDir.exists()) + return false; + QDir toDir(toName); + if (!toDir.exists()) + toDir.mkpath("."); + + foreach (QString dirName, fromDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) { + QString destPath = toName + QDir::separator() + dirName; + fromDir.mkpath(destPath); + copyDirectoryRecursively(fromName+ QDir::separator() + dirName, destPath, permissionSpec); + } + + foreach (QString fileName, fromDir.entryList(QDir::Files)) { + QString destPath = toName + QDir::separator() + fileName; + QFile::copy(fromName + QDir::separator() + fileName, destPath); + QFile::setPermissions(destPath, permissionSpec); + } + return true; +} + + // Получение списка файлов с их содержимым в указанной директории QMap DiskHelper::getFilesFromDirectory(QString dirName, QString fileMask) { diff --git a/app/src/libraries/helpers/DiskHelper.h b/app/src/libraries/helpers/DiskHelper.h index 6e12f6b35..5eddaca00 100644 --- a/app/src/libraries/helpers/DiskHelper.h +++ b/app/src/libraries/helpers/DiskHelper.h @@ -1,6 +1,7 @@ #ifndef DISKHELPER_H #define DISKHELPER_H +#include #include #include #include @@ -19,6 +20,7 @@ class DiskHelper static QString createTempDirectory(void); static bool removeDirectory(const QString &dirName); static bool copyDirectory(const QString &fromName, const QString &toName); + static bool copyDirectoryRecursively(const QString &fromName, const QString &toName, QFile::Permissions permissionSpec); static QMap getFilesFromDirectory(QString dirName, QString fileMask); static bool saveFilesToDirectory(QString dirName, QMap fileList); diff --git a/app/src/models/appConfig/AppConfig.cpp b/app/src/models/appConfig/AppConfig.cpp index 5cc27d700..7762c11c1 100644 --- a/app/src/models/appConfig/AppConfig.cpp +++ b/app/src/models/appConfig/AppConfig.cpp @@ -963,6 +963,30 @@ void AppConfig::setDockableWindowsBehavior(QString mode) } +// Тема оформления +AppConfig::InterfaceTheme AppConfig::getInterfaceTheme() +{ + QString themeName = get_parameter("theme"); + + InterfaceTheme theme; + if (themeName == "dark") theme=InterfaceTheme::Dark; + else theme=InterfaceTheme::Light; + + return theme; +} + +void AppConfig::setInterfaceTheme(InterfaceTheme theme) +{ + QString themeName; + switch (theme) + { + case InterfaceTheme::Light: themeName="light"; break; + case InterfaceTheme::Dark: themeName="dark"; break; + } + conf->setValue("theme", themeName); +} + + // -------------------- // Номер версии конфига // -------------------- @@ -1127,6 +1151,7 @@ void AppConfig::update_version_process(void) parameterFunctions << &AppConfig::get_parameter_table_36; parameterFunctions << &AppConfig::get_parameter_table_37; parameterFunctions << &AppConfig::get_parameter_table_38; + parameterFunctions << &AppConfig::get_parameter_table_39; for(int i=1; i #include #include #include "AppConfigPage_Appearance.h" + #include "models/appConfig/AppConfig.h" #include "libraries/GlobalParameters.h" +#include "libraries/helpers/DiskHelper.h" #include "libraries/wyedit/EditorShowTextDispatcher.h" @@ -29,6 +32,16 @@ void AppConfigPage_Appearance::setupUi() { qDebug() << "Create appearance config page"; + // Выбор темы интерфейса + themeLabel=new QLabel(this); + themeLabel->setText(tr("Interface theme")); + + theme=new MtComboBox(this); + theme->setMinimumContentsLength(2); + theme->addItem(tr("Light")); + theme->addItem(tr("Dark")); + theme->setCurrentIndex((int)mytetraConfig.getInterfaceTheme()); + // Настройка запуска MyTetra в свернутом окне runInMinimizedWindow=new QCheckBox(this); runInMinimizedWindow->setText(tr("Run MyTetra in a minimized window")); @@ -50,6 +63,21 @@ void AppConfigPage_Appearance::setupSignals() void AppConfigPage_Appearance::assembly() { + // Группировщик настроек интерфейса + interfaceBox=new QGroupBox(this); + interfaceBox->setTitle(tr("Interface")); + + // Выбор темы + QHBoxLayout *themeLayout=new QHBoxLayout(); + themeLayout->addWidget(theme); + + // Виджеты вставляются в группировщик настроек курсора при навигации по истории + QGridLayout *interfaceLayout = new QGridLayout; + interfaceLayout->addWidget(themeLabel,0,0); + interfaceLayout->addLayout(themeLayout,0,1); + interfaceLayout->setColumnStretch(1,100); + interfaceBox->setLayout(interfaceLayout); + // Группировщик виджетов настройки поведения окна behaviorBox=new QGroupBox(this); behaviorBox->setTitle(tr("Windows behavior")); @@ -62,6 +90,7 @@ void AppConfigPage_Appearance::assembly() // Собирается основной слой QVBoxLayout *centralLayout=new QVBoxLayout(); + centralLayout->addWidget(interfaceBox); centralLayout->addWidget(behaviorBox); centralLayout->addStretch(); @@ -79,6 +108,18 @@ int AppConfigPage_Appearance::applyChanges() int result=0; + // Если был изменена тема + if(mytetraConfig.getInterfaceTheme()!=theme->currentIndex()) + { + mytetraConfig.setInterfaceTheme((AppConfig::InterfaceTheme)theme->currentIndex()); + + // Удаляем существующий стиль, чтобы при следующем запуске установить новый + QString dirName=globalParameters.getWorkDirectory(); + DiskHelper::removeDirectory(dirName+"/style"); + + result=1; + } + // Сохраняется настройка режима запуска MyTetra - обычный или свернутый if(mytetraConfig.get_runinminimizedwindow()!=runInMinimizedWindow->isChecked()) { diff --git a/app/src/views/appConfigWindow/AppConfigPage_Appearance.h b/app/src/views/appConfigWindow/AppConfigPage_Appearance.h index b17d2db4e..fa523ef10 100644 --- a/app/src/views/appConfigWindow/AppConfigPage_Appearance.h +++ b/app/src/views/appConfigWindow/AppConfigPage_Appearance.h @@ -4,12 +4,16 @@ #include #include #include +#include #include "ConfigPage.h" +#include "libraries/MtComboBox.h" class AppConfigPage_Appearance : public ConfigPage { + Q_OBJECT + public: AppConfigPage_Appearance(QWidget *parent = nullptr); virtual ~AppConfigPage_Appearance(); @@ -24,6 +28,10 @@ class AppConfigPage_Appearance : public ConfigPage // Объединяющая рамка QGroupBox *behaviorBox; + QGroupBox *interfaceBox; + + QLabel *themeLabel; + MtComboBox *theme; QCheckBox *runInMinimizedWindow; // Разрешен ли запуск в свернутом окне QCheckBox *dockableWindowsBehavior; // Поведение открепляемых окон