From 06e5dd6145e2653acb9eefe6474b294c755e5c42 Mon Sep 17 00:00:00 2001 From: ilya-fedin Date: Mon, 16 Mar 2020 22:58:00 +0400 Subject: [PATCH] Avoid converting with custom icon (#12) --- Telegram/SourceFiles/mainwindow.cpp | 33 ++++++++----------- .../platform/linux/main_window_linux.cpp | 3 +- .../platform/mac/main_window_mac.mm | 24 ++++++-------- .../platform/win/main_window_win.cpp | 10 ++---- 4 files changed, 28 insertions(+), 42 deletions(-) diff --git a/Telegram/SourceFiles/mainwindow.cpp b/Telegram/SourceFiles/mainwindow.cpp index c2aab91ae..47cb3b6e3 100644 --- a/Telegram/SourceFiles/mainwindow.cpp +++ b/Telegram/SourceFiles/mainwindow.cpp @@ -78,28 +78,23 @@ void FeedLangTestingKey(int key) { MainWindow::MainWindow(not_null controller) : Platform::MainWindow(controller) { - QString iconFilename(cWorkingDir() + "tdata/icon.png"); - auto iconImage = App::readImage(iconFilename, nullptr, false); + QImage iconImage(cWorkingDir() + "tdata/icon.png"); - if (iconImage.isNull()) { - auto logo = Core::App().logo(); - icon16 = logo.scaledToWidth(16, Qt::SmoothTransformation); - icon32 = logo.scaledToWidth(32, Qt::SmoothTransformation); - icon64 = logo.scaledToWidth(64, Qt::SmoothTransformation); + auto logo = iconImage.isNull() + ? Core::App().logo() + : iconImage; - auto logoNoMargin = Core::App().logoNoMargin(); - iconbig16 = logoNoMargin.scaledToWidth(16, Qt::SmoothTransformation); - iconbig32 = logoNoMargin.scaledToWidth(32, Qt::SmoothTransformation); - iconbig64 = logoNoMargin.scaledToWidth(64, Qt::SmoothTransformation); - } else { - icon16 = iconImage.scaledToWidth(16, Qt::SmoothTransformation); - icon32 = iconImage.scaledToWidth(32, Qt::SmoothTransformation); - icon64 = iconImage.scaledToWidth(64, Qt::SmoothTransformation); + icon16 = logo.scaledToWidth(16, Qt::SmoothTransformation); + icon32 = logo.scaledToWidth(32, Qt::SmoothTransformation); + icon64 = logo.scaledToWidth(64, Qt::SmoothTransformation); - iconbig16 = iconImage.scaledToWidth(16, Qt::SmoothTransformation); - iconbig32 = iconImage.scaledToWidth(32, Qt::SmoothTransformation); - iconbig64 = iconImage.scaledToWidth(64, Qt::SmoothTransformation); - } + auto logoNoMargin = iconImage.isNull() + ? Core::App().logoNoMargin() + : iconImage; + + iconbig16 = logoNoMargin.scaledToWidth(16, Qt::SmoothTransformation); + iconbig32 = logoNoMargin.scaledToWidth(32, Qt::SmoothTransformation); + iconbig64 = logoNoMargin.scaledToWidth(64, Qt::SmoothTransformation); resize(st::windowDefaultWidth, st::windowDefaultHeight); diff --git a/Telegram/SourceFiles/platform/linux/main_window_linux.cpp b/Telegram/SourceFiles/platform/linux/main_window_linux.cpp index ea1c081e0..d544dcbea 100644 --- a/Telegram/SourceFiles/platform/linux/main_window_linux.cpp +++ b/Telegram/SourceFiles/platform/linux/main_window_linux.cpp @@ -180,8 +180,7 @@ QIcon TrayIconGen(int counter, bool muted) { .toImage(); } } else { - QString iconFilename(cWorkingDir() + "tdata/icon.png"); - currentImageBack = App::readImage(iconFilename, nullptr, false); + currentImageBack = QImage(cWorkingDir() + "tdata/icon.png"); if (currentImageBack.isNull()) { currentImageBack = Core::App().logo(); } diff --git a/Telegram/SourceFiles/platform/mac/main_window_mac.mm b/Telegram/SourceFiles/platform/mac/main_window_mac.mm index 73381e515..b032851d5 100644 --- a/Telegram/SourceFiles/platform/mac/main_window_mac.mm +++ b/Telegram/SourceFiles/platform/mac/main_window_mac.mm @@ -564,25 +564,21 @@ void MainWindow::psSetupTrayIcon() { if (!trayIcon) { trayIcon = new QSystemTrayIcon(this); QIcon icon; - QString iconFilename(cWorkingDir() + "tdata/icon.png"); - QString iconFilenameSelected(cWorkingDir() + "tdata/icon_selected.png"); + QPixmap iconPixmap(cWorkingDir() + "tdata/icon.png"); + QPixmap iconPixmapSelected(cWorkingDir() + "tdata/icon_selected.png"); - auto iconImage = App::readImage(iconFilename, nullptr, false); - - if (iconImage.isNull()) { - iconImage = psTrayIcon(); + if (!iconPixmap.isNull()) { + icon.addPixmap(iconPixmap); + } else { + icon.addPixmap(QPixmap::fromImage(psTrayIcon(), Qt::ColorOnly)); } - icon = QIcon(QPixmap::fromImage(iconImage, Qt::ColorOnly)); - - auto iconImageSelected = App::readImage(iconFilenameSelected, nullptr, false); - - if (iconImageSelected.isNull()) { - iconImageSelected = psTrayIcon(true); + if (!iconPixmapSelected.isNull()) { + icon.addPixmap(iconPixmapSelected, QIcon::Selected); + } else { + icon.addPixmap(QPixmap::fromImage(psTrayIcon(true), Qt::ColorOnly), QIcon::Selected); } - icon.addPixmap(QPixmap::fromImage(iconImageSelected, Qt::ColorOnly), QIcon::Selected); - trayIcon->setIcon(icon); attachToTrayIcon(trayIcon); } diff --git a/Telegram/SourceFiles/platform/win/main_window_win.cpp b/Telegram/SourceFiles/platform/win/main_window_win.cpp index 3a6ef1869..53e699d9b 100644 --- a/Telegram/SourceFiles/platform/win/main_window_win.cpp +++ b/Telegram/SourceFiles/platform/win/main_window_win.cpp @@ -684,15 +684,11 @@ void MainWindow::psTrayMenuUpdated() { void MainWindow::psSetupTrayIcon() { if (!trayIcon) { trayIcon = new QSystemTrayIcon(this); - QString iconFilename(cWorkingDir() + "tdata/icon.png"); - auto iconImage = App::readImage(iconFilename, nullptr, false); - - if (iconImage.isNull()) { - iconImage = Core::App().logoNoMargin(); + auto icon = QIcon(cWorkingDir() + "tdata/icon.png"); + if (icon.isNull()) { + icon = QIcon(App::pixmapFromImageInPlace(Core::App().logoNoMargin())); } - auto icon = QIcon(App::pixmapFromImageInPlace(std::move(iconImage))); - trayIcon->setIcon(icon); connect(trayIcon, SIGNAL(messageClicked()), this, SLOT(showFromTray())); attachToTrayIcon(trayIcon);