diff --git a/win-linux/res/icons/logo_1.5x.png b/win-linux/res/icons/logo_dark_1.5x.png similarity index 100% rename from win-linux/res/icons/logo_1.5x.png rename to win-linux/res/icons/logo_dark_1.5x.png diff --git a/win-linux/res/icons/maximize_1.5x.png b/win-linux/res/icons/maximize@1.5x.png similarity index 100% rename from win-linux/res/icons/maximize_1.5x.png rename to win-linux/res/icons/maximize@1.5x.png diff --git a/win-linux/res/icons/menu-indicator_1.5x.png b/win-linux/res/icons/menu-indicator@1.5x.png similarity index 100% rename from win-linux/res/icons/menu-indicator_1.5x.png rename to win-linux/res/icons/menu-indicator@1.5x.png diff --git a/win-linux/res/icons/minimize-close_1.5x.png b/win-linux/res/icons/minimize-close@1.5x.png similarity index 100% rename from win-linux/res/icons/minimize-close_1.5x.png rename to win-linux/res/icons/minimize-close@1.5x.png diff --git a/win-linux/res/icons/tabbar/tab_close_dark_1.5x.png b/win-linux/res/icons/tabbar/tab_close_dark@1.5x.png similarity index 100% rename from win-linux/res/icons/tabbar/tab_close_dark_1.5x.png rename to win-linux/res/icons/tabbar/tab_close_dark@1.5x.png diff --git a/win-linux/res/icons/tabbar/tab_close_light_1.5x.png b/win-linux/res/icons/tabbar/tab_close_light@1.5x.png similarity index 100% rename from win-linux/res/icons/tabbar/tab_close_light_1.5x.png rename to win-linux/res/icons/tabbar/tab_close_light@1.5x.png diff --git a/win-linux/res/styles/styles@1.5x.qss b/win-linux/res/styles/styles@1.5x.qss new file mode 100644 index 000000000..d81dee736 --- /dev/null +++ b/win-linux/res/styles/styles@1.5x.qss @@ -0,0 +1,308 @@ + +#labelAppTitle { + margin-top: -3px; + font-size: 17px; +} + +QPushButton#toolButtonDownload { + padding: 9px; +} + +QPushButton#toolButtonMaximize,QPushButton#toolButtonMinimize, + QPushButton#toolButtonClose { + padding: 8px 18px 11px; +} + +QPushButton#toolButtonMaximize { + background-image:url(:/maximize_1.5x.png); +} + +QPushButton#toolButtonMinimize, QPushButton#toolButtonClose { + background-image:url(:/minimize-close_1.5x.png); +} + +QPushButton#toolButtonMain { + /*font-size: 20px;*/ + border-right-width: 2px; +} + +QPushButton#toolButtonMain[theme=light] { + border-width: 2px; + border-bottom: 0 none; +} + +QPushButton#toolButtonMain[class=normal], + QPushButton#toolButtonMain[class=normal]:hover +{ + border-bottom-width: 2px; +} + +QPushButton::menu-indicator { + width: 15px; + height: 15px; + border-image: url(:/menu-indicator_1.5x.png) 0 0 0 0 repeat repeat; + left: -3px; + top: -2px; +} + +QPushButton::menu-indicator:disabled { + border-image: url(:/menu-indicator_1.5x.png) 0 0 0 15 repeat repeat; +} + +QPushButton::menu-indicator:hover { + border-image: url(:/menu-indicator_1.5x.png) 0 15 0 0 repeat repeat; +} + +QPushButton#toolButtonDownload::menu-indicator { + top: -15px; + left: -6px; +} + +/**************************/ +/* dark theme definitions */ +/**************************/ + +#mainPanel[uitheme=theme-dark] QPushButton#toolButtonMaximize { + background-image:url(:/max_light_1.5x.png); +} + +#mainPanel[uitheme=theme-dark] QPushButton#toolButtonMinimize, + #mainPanel[uitheme=theme-dark] QPushButton#toolButtonClose +{ + background-image:url(:/minclose_light_1.5x.png); +} + +/**************************/ + +QTabBar { + font-size: 15px; +} + +QTabBar::tab { + padding-left: 11px; +} + +QTabBar::tab { + padding: 0; +} + +QTabBar::close-button { +} + +QTabBar::close-button:hover { +} + +QTabBar::close-button:pressed { +} + +QTabBar QToolButton, + QTabBar QToolButton:disabled { + margin-right:-2px; + border-width:2px; +} + +QTabBar[scroll=var2] QToolButton::left-arrow, +QTabBar QToolButton::left-arrow { + border-image: url(:/tabbar/icons/scrolltab_ln_2x.png) 0; + border-width:16px 0 16px 2px; +} + +QTabBar QToolButton::left-arrow:disabled { + border-image: url(:/tabbar/icons/scrolltab_ld_2x.png) 0; +} + +QTabBar QToolButton::left-arrow:hover { + border-image: url(:/tabbar/icons/scrolltab_lh_2x.png) 0; +} + +QTabBar QToolButton::left-arrow:pressed { + border-image: url(:/tabbar/icons/scrolltab_lp_2x.png) 0; +} + +QTabBar[scroll=var2] QToolButton::right-arrow, +QTabBar QToolButton::right-arrow { + border-image: url(:/tabbar/icons/scrolltab_rn_2x.png) 0; + /*border-width:12px;*/ + border-width:16px 0 16px 26px; +} + +QTabBar QToolButton::right-arrow:disabled { + border-image: url(:/tabbar/icons/scrolltab_rd_2x.png) 0; +} + +QTabBar QToolButton::right-arrow:hover { + border-image: url(:/tabbar/icons/scrolltab_rh_2x.png) 0; +} +QTabBar QToolButton::right-arrow:pressed { + border-image: url(:/tabbar/icons/scrolltab_rp_2x.png) 0; +} + +QTabBar[scroll=var2]::scroller, +QTabBar::scroller { + width:48px; +} + +QTabBar QToolButton[class=tab-close]{ + background-image:url(:/tabbar/icons/close_normal_1.5x.png); +} +QTabBar QToolButton[class=tab-close][state=active]{ + background-image:url(:/tabbar/icons/close_active_1.5x.png); +} +QTabBar QToolButton[class=tab-close]:hover{ + border-right:2px solid #fff; /* ??? pixmap offsets on hover for 2px ??? */ +} + +/* download widget */ +QMenu[hdpi]#menuButtonDownload { + border-width: 2px; +} + +CDownloadWidget[hdpi] QProgressBar { + border-radius: 4px; + max-height: 10px; + margin-right: 20px; + margin-top: 2px; + min-width: 400px; +} + +CDownloadWidget[hdpi] QProgressBar::chunk { + border-radius: 4px; +} + +CDownloadWidget[hdpi] QPushButton#buttonCancel { + font-size: 24px; +} + +CDownloadWidget[hdpi] QLabel#labelName { + font-size: 32px; +} + +QPushButton { + border: 2px solid #cbcbcb; + padding:0 40px; + height: 44px; + border-radius:4px; + font-size: 22px; +} + +QDialog QPushButton { + min-width: 80px; +} + +QLabel[class=tab-icon] { + padding:0 0 4px 12px; +} + +QPrintDialog QLabel { + font-size: 22px; +} + +QPrintDialog QToolButton{ + border-width: 1px; + border-radius:4px; + height: 44px; +} + +QPrintDialog QLineEdit{ + font-size: 22px; + border-width: 2px; + height: 44px; + border-radius:4px; +} + +QPrintDialog QGroupBox { + border-width: 2px; + margin-top: 8ex; + border-radius:4px; + font-size: 22px; + padding:16px; +} + +QPrintDialog QComboBox{ + border-width: 2px; + font-size: 22px; + height: 44px; + border-radius:4px; +} + +QPrintDialog QComboBox QAbstractItemView { + border-width: 2px; + border-radius:4px; +} + +QPrintDialog QRadioButton::indicator{ + width:26px; + height:26px; +} + +QPrintDialog QRadioButton, QPrintDialog QCheckBox { + font-size: 22px; +} + +QPrintDialog QRadioButton::indicator::unchecked{ + border-image: url(:/radiobox_2x.png) 0 0 0 0 repeat repeat; +} + +QPrintDialog QRadioButton::indicator::checked{ + border-image: url(:/radiobox_2x.png) 26 0 0 0 repeat repeat; +} + +QPrintDialog QCheckBox::indicator{ + width:28px; + height:28px; +} + +QPrintDialog QCheckBox::indicator::checked{ + border-image: url(:/checkbox_2x.png) 28 0 0 0 repeat repeat; +} + +QPrintDialog QCheckBox::indicator::unchecked{ + border-image: url(:/checkbox_2x.png) 0 0 0 0 repeat repeat; +} + +QSpinBox, QDoubleSpinBox, QTimeEdit { + border-width: 2px; + border-radius:4px; + height:44px; + font-size:22px; +} + +QPrintDialog *::up-arrow, QPrintDialog *::down-arrow { + width: 10px; + height: 6px; +} + +QPrintDialog *::up-arrow { + border-image: url(:/arrow_down_2x.png) 6 0 0 0 repeat repeat; + margin-bottom:1px; +} + +QPrintDialog *::up-arrow:disabled, QPrintDialog *::up-arrow:off { + border-image: url(:/arrow_down_2x.png) 6 0 0 10 repeat repeat; +} + +QPrintDialog *::down-arrow { + border-image: url(:/arrow_down_2x.png) 0 0 0 0 repeat repeat; + margin-top:1px; +} + +QPrintDialog *::down-arrow:disabled, QPrintDialog ::down-arrow:off { + border-image: url(:/arrow_down_2x.png) 0 0 0 10 repeat repeat; +} + +QPrintDialog QTabWidget::pane{ + border-width: 2px; + top: -2px; +} +QPrintDialog QTabBar::tab { + border-width: 2px; + padding: 0 20px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + margin-right:-2px; + font-size: 22px; +} + +QPrintDialog QTabBar::tab:selected { + padding: 0 20px; +} diff --git a/win-linux/res/styles/tabbar@1.5x.qss b/win-linux/res/styles/tabbar@1.5x.qss new file mode 100644 index 000000000..e338c3bd2 --- /dev/null +++ b/win-linux/res/styles/tabbar@1.5x.qss @@ -0,0 +1,17 @@ + +QTabWidget::pane {background-color: #f1f1f1; border:none;} +QTabWidget::tab-bar {width: auto; height: 42px; left: 168px; } + +QTabBar::tab { width:203px; background-color: #f1f1f1; border: 0 none; min-width: 62px; max-width: 203px; +height: 42px; margin: 0 0 0 0; } + +QTabBar::tab {border-right: 2px solid #a5a5a5;} +QTabBar::tab:hover{background-color: #cecece;} +QTabBar::tab:selected{background-color: #515252;} +QTabBar::tab-label{active:#fff;normal:#444;} +QTabBar::tab-icon{width:15;height:15;} + +#mainPanel[uitheme=theme-dark] QTabWidget::pane {background-color: #404040;} + +QTabWidget[active=false] QTabBar::tab:selected {background-color: #f1f1f1;} +QTabWidget[active=false] QTabBar::tab:selected:hover {background-color: #cecece;} diff --git a/win-linux/resources.qrc b/win-linux/resources.qrc index fcfdda93d..6c272e2f5 100644 --- a/win-linux/resources.qrc +++ b/win-linux/resources.qrc @@ -11,11 +11,14 @@ res/icons/downloading.gif res/icons/downloading_2x.gif res/icons/minimize-close.png + res/icons/minimize-close@1.5x.png res/icons/minimize-close@2x.png res/icons/maximize.png + res/icons/maximize@1.5x.png res/icons/maximize@2x.png res/icons/menu-indicator.png res/icons/menu-indicator-dark.png + res/icons/menu-indicator@1.5x.png res/icons/menu-indicator_2x.png res/icons/radiobox.png res/icons/radiobox@2x.png @@ -27,13 +30,16 @@ res/icons/splash.png res/icons/splash_2x.png res/icons/logo_dark.png + res/icons/logo_dark_1.5x.png res/icons/logo_dark_2x.png res/icons/logo_light.png res/icons/logo_light_1.5x.png res/icons/logo_light_2x.png res/icons/maximize_light.png + res/icons/maximize_light@1.5x.png res/icons/maximize_light@2x.png res/icons/minimize-close_light.png + res/icons/minimize-close_light@1.5x.png res/icons/minimize-close_light@2x.png res/icons/dock.png res/icons/dock@2x.png @@ -69,8 +75,10 @@ res/icons/tabbar/tabicon_undefined_2x.png res/icons/tabbar/loading.svg res/icons/tabbar/tab_close_dark.png + res/icons/tabbar/tab_close_dark@1.5x.png res/icons/tabbar/tab_close_dark@2x.png res/icons/tabbar/tab_close_light.png + res/icons/tabbar/tab_close_light@1.5x.png res/icons/tabbar/tab_close_light@2x.png @@ -81,6 +89,9 @@ res/styles/styles.qss res/styles/message.qss + + res/styles/styles@1.5x.qss + res/styles/styles@2x.qss @@ -101,6 +112,7 @@ res/styles/tabbar.qss res/styles/tabbar_nix.qss + res/styles/tabbar@1.5x.qss res/styles/tabbar@2x.qss res/styles/tabbar_nix@2x.qss diff --git a/win-linux/src/cascapplicationmanagerwrapper.cpp b/win-linux/src/cascapplicationmanagerwrapper.cpp index d79a429f6..68adb1da5 100644 --- a/win-linux/src/cascapplicationmanagerwrapper.cpp +++ b/win-linux/src/cascapplicationmanagerwrapper.cpp @@ -895,6 +895,7 @@ void CAscApplicationManagerWrapper::initializeApp() } _app.addStylesheets(CScalingFactor::SCALING_FACTOR_1, ":styles/res/styles/styles.qss"); + _app.addStylesheets(CScalingFactor::SCALING_FACTOR_1_5, ":styles@1.5x/styles.qss"); _app.addStylesheets(CScalingFactor::SCALING_FACTOR_2, ":styles@2x/styles.qss"); _app.m_private->applyStylesheets(); @@ -1273,6 +1274,9 @@ QString CAscApplicationManagerWrapper::getWindowStylesheets(double dpifactor) { if ( !(dpifactor < 2) ) return getWindowStylesheets(CScalingFactor::SCALING_FACTOR_2); + else + if ( !(dpifactor < 1.5) ) + return getWindowStylesheets(CScalingFactor::SCALING_FACTOR_1_5); else return getWindowStylesheets(CScalingFactor::SCALING_FACTOR_1); } diff --git a/win-linux/src/cascapplicationmanagerwrapper.h b/win-linux/src/cascapplicationmanagerwrapper.h index 17b76e8ac..bc9a273c3 100644 --- a/win-linux/src/cascapplicationmanagerwrapper.h +++ b/win-linux/src/cascapplicationmanagerwrapper.h @@ -78,6 +78,7 @@ struct sWinTag { enum class CScalingFactor { SCALING_FACTOR_1, + SCALING_FACTOR_1_5, SCALING_FACTOR_2, }; diff --git a/win-linux/src/cmainpanel.cpp b/win-linux/src/cmainpanel.cpp index 2dafed1a1..603c0b270 100644 --- a/win-linux/src/cmainpanel.cpp +++ b/win-linux/src/cmainpanel.cpp @@ -1258,7 +1258,7 @@ void CMainPanel::updateScaling(double dpiratio) m_pButtonMain->setGeometry(0, 0, int(BUTTON_MAIN_WIDTH * dpiratio), int(TITLE_HEIGHT * dpiratio)); - QString _tabs_stylesheets = dpiratio > 1 ? ":/sep-styles/tabbar@2x" : ":/sep-styles/tabbar"; + QString _tabs_stylesheets = dpiratio > 1.55 ? ":/sep-styles/tabbar@2x" : dpiratio > 1.1 ? ":/sep-styles/tabbar@1.5x" : ":/sep-styles/tabbar"; if ( m_isCustomWindow ) { _tabs_stylesheets += ".qss"; } else { diff --git a/win-linux/src/prop/cmainpanelimpl.cpp b/win-linux/src/prop/cmainpanelimpl.cpp index 10c8dd544..6398143b6 100644 --- a/win-linux/src/prop/cmainpanelimpl.cpp +++ b/win-linux/src/prop/cmainpanelimpl.cpp @@ -95,7 +95,7 @@ void CMainPanelImpl::updateScaling(double dpiratio) std::wstring prefix{AscAppManager::themes().value(CThemes::ColorRole::ecrLogoColor)}; QString logo_name = QString(":/logo_%1%2.png") .arg(QString::fromStdWString(prefix)) - .arg(dpiratio > 1 ? dpiratio > 1.5 ? "@2x" : "@1.5x" : ""); + .arg(dpiratio > 1.55 ? "@2x" : dpiratio > 1.1 ? "@1.5x" : ""); // QPixmap pixmap(dpiratio > 1 ? ":/logo@2x.png" : ":/logo.png"); QPixmap pixmap(logo_name); m_pButtonMain->setText(QString()); @@ -107,11 +107,11 @@ void CMainPanelImpl::applyTheme(const std::wstring& theme) { CMainPanel::applyTheme(theme); - int dpiratio = scaling(); + double dpiratio = scaling(); std::wstring prefix{AscAppManager::themes().value(theme, CThemes::ColorRole::ecrLogoColor)}; QString logo_name = QString(":/logo_%1%2.png") .arg(QString::fromStdWString(prefix)) - .arg(dpiratio > 1 ? dpiratio > 1.5 ? "@2x" : "@1.5x" : ""); + .arg(dpiratio > 1.55 ? "@2x" : dpiratio > 1.1 ? "@1.5x" : ""); QPixmap pixmap(logo_name); m_pButtonMain->setText(QString()); m_pButtonMain->setIcon(QIcon(pixmap)); diff --git a/win-linux/src/utils.cpp b/win-linux/src/utils.cpp index a578258d3..a30028e4a 100644 --- a/win-linux/src/utils.cpp +++ b/win-linux/src/utils.cpp @@ -379,7 +379,7 @@ double Utils::getScreenDpiRatio(int scrnum) unsigned int _dpi_x = 0; unsigned int _dpi_y = 0; double nScale = AscAppManager::getInstance().GetMonitorScaleByIndex(scrnum, _dpi_x, _dpi_y); - return (-1 == nScale) ? 1 : nScale; + return nScale > 1.5 ? 2 : nScale > 1 ? 1.5 : 1; } double Utils::getScreenDpiRatio(const QPoint& pt) @@ -399,7 +399,7 @@ double Utils::getScreenDpiRatioByHWND(int hwnd) unsigned int _dpi_x = 0; unsigned int _dpi_y = 0; double nScale = AscAppManager::getInstance().GetMonitorScaleByWindow((WindowHandleId)hwnd, _dpi_x, _dpi_y); - return (-1 == nScale) ? 1 : nScale; + return nScale > 1.5 ? 2 : nScale > 1 ? 1.5 : 1; } double Utils::getScreenDpiRatioByWidget(QWidget* wid) @@ -419,8 +419,8 @@ double Utils::getScreenDpiRatioByWidget(QWidget* wid) if (nRet >= 0) { double dDpiApp = pDpiChecker->GetScale(nDpiX, nDpiY); - // пока только 1 или 2 - return (dDpiApp > 1.9) ? 2 : 1; + // пока только 1, 1.5 или 2 + return dDpiApp > 1.5 ? 2 : dDpiApp > 1 ? 1.5 : 1; } return wid->devicePixelRatio();