From a1d3ec0147dfc1f8d17adbd0e7fdfdd8d011be3c Mon Sep 17 00:00:00 2001 From: Yuriy Puchkov Date: Thu, 25 Feb 2021 11:13:25 +0200 Subject: [PATCH 1/4] fix - 'Launch at startup feature' doesn't work after uncheck/check in the Configuration window (cherry picked from commit 2d3b02b462300a3de24f2d4115086b5ae7c7bd46) --- src/utils/confighandler.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/utils/confighandler.cpp b/src/utils/confighandler.cpp index c0d44102..a9b87c25 100644 --- a/src/utils/confighandler.cpp +++ b/src/utils/confighandler.cpp @@ -318,31 +318,29 @@ bool ConfigHandler::startupLaunchValue() bool ConfigHandler::verifyLaunchFile() { - bool res = false; - #if defined(Q_OS_LINUX) || defined(Q_OS_UNIX) QString path = QStandardPaths::locate(QStandardPaths::GenericConfigLocation, "autostart/", QStandardPaths::LocateDirectory) + "Flameshot.desktop"; - res = QFile(path).exists(); + bool res = QFile(path).exists(); #elif defined(Q_OS_WIN) QSettings bootUpSettings( "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat); - res = bootUpSettings.value("Flameshot").toString() == - QDir::toNativeSeparators(QCoreApplication::applicationFilePath()); + bool res = + bootUpSettings.value("Flameshot").toString() == + QDir::toNativeSeparators(QCoreApplication::applicationFilePath()); #endif return res; } void ConfigHandler::setStartupLaunch(const bool start) { - - m_settings.setValue(QStringLiteral("startupLaunch"), start); if (start == m_settings.value(QStringLiteral("startupLaunch")).toBool()) { return; } + m_settings.setValue(QStringLiteral("startupLaunch"), start); #if defined(Q_OS_MACOS) /* TODO - there should be more correct way via API, but didn't find it without extra dependencies, there should be something like that: From a64b9803d7fb86a42939c21fe199e9a76c17fd88 Mon Sep 17 00:00:00 2001 From: Yuriy Puchkov Date: Thu, 25 Feb 2021 14:03:45 +0200 Subject: [PATCH 2/4] fix - MacOS - Image is not copied to the clipboard when the 'Use JPG format for clipboard' checkbox is set (cherry picked from commit 802d8bc3dfd2644d264938b4fc1e0adbc39d110b) --- src/config/generalconf.cpp | 4 ++++ src/utils/confighandler.cpp | 3 +++ src/utils/screenshotsaver.cpp | 4 +--- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/config/generalconf.cpp b/src/config/generalconf.cpp index 4fc0743a..e3c163c8 100644 --- a/src/config/generalconf.cpp +++ b/src/config/generalconf.cpp @@ -386,6 +386,10 @@ void GeneralConf::initUseJpgForClipboard() tr("Use JPG format for clipboard (PNG default)")); m_layout->addWidget(m_useJpgForClipboard); +#if defined(Q_OS_MACOS) + // FIXME - temporary fix to disable option for MacOS + m_useJpgForClipboard->hide(); +#endif connect(m_useJpgForClipboard, &QCheckBox::clicked, this, diff --git a/src/utils/confighandler.cpp b/src/utils/confighandler.cpp index a9b87c25..61235057 100644 --- a/src/utils/confighandler.cpp +++ b/src/utils/confighandler.cpp @@ -506,9 +506,12 @@ void ConfigHandler::setCopyPathAfterSaveEnabled(const bool value) bool ConfigHandler::useJpgForClipboard() const { +#if not defined(Q_OS_MACOS) + // FIXME - temporary fix to disable option for MacOS if (m_settings.contains(QStringLiteral("useJpgForClipboard"))) { return m_settings.value(QStringLiteral("useJpgForClipboard")).toBool(); } +#endif return false; } diff --git a/src/utils/screenshotsaver.cpp b/src/utils/screenshotsaver.cpp index 63990035..34b9ab5d 100644 --- a/src/utils/screenshotsaver.cpp +++ b/src/utils/screenshotsaver.cpp @@ -29,7 +29,6 @@ ScreenshotSaver::ScreenshotSaver(const unsigned id) // dbus, the application freezes. void ScreenshotSaver::saveToClipboard(const QPixmap& capture) { - // If we are able to properly save the file, save the file and copy to // clipboard. if ((ConfigHandler().saveAfterCopyValue()) && @@ -42,6 +41,7 @@ void ScreenshotSaver::saveToClipboard(const QPixmap& capture) // Otherwise only save to clipboard else { if (ConfigHandler().useJpgForClipboard()) { + // FIXME - it doesn't work on MacOS QByteArray array; QBuffer buffer{ &array }; QImageWriter imageWriter{ &buffer, "JPEG" }; @@ -58,14 +58,12 @@ void ScreenshotSaver::saveToClipboard(const QPixmap& capture) QMimeData* mimeData = new QMimeData; mimeData->setData("image/jpeg", array); QApplication::clipboard()->setMimeData(mimeData); - } else { SystemNotification().sendMessage( QObject::tr("Error while saving to clipboard")); return; } } else { - // Need to send message before copying to clipboard SystemNotification().sendMessage( QObject::tr("Capture saved to clipboard")); From 1c5dbb3c9e4d02c3b1c4976a2d08ac4af6cfd614 Mon Sep 17 00:00:00 2001 From: Yuriy Puchkov Date: Thu, 25 Feb 2021 18:02:34 +0200 Subject: [PATCH 3/4] Reset button doesn't reset configurations to the initial values (cherry picked from commit 3cc8e1bc1e6c59917169941c97ea87021e7c268f) --- src/config/generalconf.cpp | 23 +++++++++++++++++++++++ src/config/generalconf.h | 2 ++ 2 files changed, 25 insertions(+) diff --git a/src/config/generalconf.cpp b/src/config/generalconf.cpp index e3c163c8..e737b0b3 100644 --- a/src/config/generalconf.cpp +++ b/src/config/generalconf.cpp @@ -155,9 +155,32 @@ void GeneralConf::resetConfiguration() m_savePath->setText( QStandardPaths::writableLocation(QStandardPaths::PicturesLocation)); ConfigHandler().setDefaultSettings(); + setActualFormData(); } } +void GeneralConf::setActualFormData() +{ + // read and set current settings + ConfigHandler config; + m_sysNotifications->setChecked(config.desktopNotificationValue()); + m_showTray->setChecked(!config.disabledTrayIconValue()); + m_helpMessage->setChecked(config.showHelpValue()); + m_sidePanelButton->setChecked(config.showSidePanelButtonValue()); + m_checkForUpdates->setChecked(config.checkForUpdates()); + m_autostart->setChecked(config.startupLaunchValue()); + m_showStartupLaunchMessage->setChecked(config.showStartupLaunchMessage()); + m_copyAndCloseAfterUpload->setChecked( + config.copyAndCloseAfterUploadEnabled()); + m_copyPathAfterSave->setChecked(config.copyPathAfterSaveEnabled()); + m_saveAfterCopy->setChecked(config.saveAfterCopyValue()); + m_savePath->setText(config.savePath()); + m_screenshotPathFixedCheck->setChecked(config.savePathFixed()); + m_historyConfirmationToDelete->setChecked( + config.historyConfirmationToDelete()); + m_useJpgForClipboard->setChecked(config.useJpgForClipboard()); +} + void GeneralConf::initShowHelp() { m_helpMessage = new QCheckBox(tr("Show help message"), this); diff --git a/src/config/generalconf.h b/src/config/generalconf.h index aefabffb..cddbe1eb 100644 --- a/src/config/generalconf.h +++ b/src/config/generalconf.h @@ -53,6 +53,8 @@ private: void initCopyPathAfterSave(); void initUseJpgForClipboard(); + void setActualFormData(); + // class members QVBoxLayout* m_layout; QCheckBox* m_sysNotifications; From d32ed7704b12bb0dc2569b142f1498ba68c2ecd4 Mon Sep 17 00:00:00 2001 From: Yuriy Puchkov Date: Thu, 25 Feb 2021 21:27:48 +0200 Subject: [PATCH 4/4] fix - File name pattern editor 'Clear' and 'Reset' behavior (configuration window) (cherry picked from commit 116c807f166841e1ba2745e32ae1ef5fd7f25276) --- src/utils/confighandler.cpp | 12 +++++++++++- src/utils/confighandler.h | 1 + src/utils/filenamehandler.cpp | 9 +++++---- src/utils/filenamehandler.h | 2 +- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/utils/confighandler.cpp b/src/utils/confighandler.cpp index 61235057..6786225a 100644 --- a/src/utils/confighandler.cpp +++ b/src/utils/confighandler.cpp @@ -238,9 +238,19 @@ void ConfigHandler::setDesktopNotification(const bool showDesktopNotification) showDesktopNotification); } +QString ConfigHandler::filenamePatternDefault() +{ + m_strRes = QLatin1String("%F_%H-%M"); + return m_strRes; +} + QString ConfigHandler::filenamePatternValue() { - return m_settings.value(QStringLiteral("filenamePattern")).toString(); + m_strRes = m_settings.value(QStringLiteral("filenamePattern")).toString(); + if (m_strRes.isEmpty()) { + m_strRes = filenamePatternDefault(); + } + return m_strRes; } void ConfigHandler::setFilenamePattern(const QString& pattern) diff --git a/src/utils/confighandler.h b/src/utils/confighandler.h index d3e563f2..9bb9106a 100644 --- a/src/utils/confighandler.h +++ b/src/utils/confighandler.h @@ -43,6 +43,7 @@ public: bool desktopNotificationValue(); void setDesktopNotification(const bool); + QString filenamePatternDefault(); QString filenamePatternValue(); void setFilenamePattern(const QString&); diff --git a/src/utils/filenamehandler.cpp b/src/utils/filenamehandler.cpp index d3b5a29f..023679ff 100644 --- a/src/utils/filenamehandler.cpp +++ b/src/utils/filenamehandler.cpp @@ -33,16 +33,17 @@ QString FileNameHandler::parsedPattern() QString FileNameHandler::parseFilename(const QString& name) { QString res = name; - // remove trailing characters '%' in the pattern if (name.isEmpty()) { - res = QLatin1String("%F_%H-%M"); + res = ConfigHandler().filenamePatternDefault(); } + + // remove trailing characters '%' in the pattern while (res.endsWith('%')) { res.chop(1); } std::time_t t = std::time(NULL); - char* tempData = QStringTocharArr(res); + char* tempData = QStringToCharArr(res); char data[MAX_CHARACTERS] = { 0 }; std::strftime(data, sizeof(data), tempData, std::localtime(&t)); res = QString::fromLocal8Bit(data, (int)strlen(data)); @@ -92,7 +93,7 @@ QString FileNameHandler::charArrToQString(const char* c) return QString::fromLocal8Bit(c, MAX_CHARACTERS); } -char* FileNameHandler::QStringTocharArr(const QString& s) +char* FileNameHandler::QStringToCharArr(const QString& s) { QByteArray ba = s.toLocal8Bit(); return const_cast(strdup(ba.constData())); diff --git a/src/utils/filenamehandler.h b/src/utils/filenamehandler.h index 875ba996..1c1068fe 100644 --- a/src/utils/filenamehandler.h +++ b/src/utils/filenamehandler.h @@ -25,7 +25,7 @@ public slots: private: // using charArr = char[MAX_CHARACTERS]; QString charArrToQString(const char* c); - char* QStringTocharArr(const QString& s); + char* QStringToCharArr(const QString& s); void fixPath(QString& directory, QString& filename); };