Merge branch 'master-flameshotorg' into master_nc_merge_upstream
# Conflicts: # .travis.yml # appveyor.yml # data/graphics.qrc # data/img/app/keyboard.svg # data/img/material/black/delete.png # data/img/material/black/delete.svg # data/img/material/black/filepath.svg # data/img/material/black/shortcut.svg # data/img/material/white/filepath.svg # data/img/material/white/shortcut.svg # data/translations/Internationalization_hu.ts # data/translations/Internationalization_ka.ts # external/Qt-Color-Widgets/src/color_wheel.cpp # external/singleapplication/singleapplication.cpp # flameshot.pro # src/cli/commandlineparser.cpp # src/config/buttonlistview.cpp # src/config/configwindow.cpp # src/config/configwindow.h # src/config/geneneralconf.cpp # src/config/geneneralconf.h # src/config/uicoloreditor.cpp # src/config/uicoloreditor.h # src/core/controller.cpp # src/core/globalshortcutfilter.cpp # src/main.cpp # src/third-party/Qt-Color-Widgets/src/color_utils.cpp # src/tools/abstractactiontool.h # src/tools/abstractpathtool.h # src/tools/arrow/arrowtool.cpp # src/tools/arrow/arrowtool.h # src/tools/blur/blurtool.cpp # src/tools/capturetool.h # src/tools/circle/circletool.cpp # src/tools/circle/circletool.h # src/tools/copy/copytool.cpp # src/tools/copy/copytool.h # src/tools/exit/exittool.cpp # src/tools/exit/exittool.h # src/tools/imgur/imguruploader.cpp # src/tools/launcher/applaunchertool.cpp # src/tools/launcher/applaunchertool.h # src/tools/launcher/applauncherwidget.cpp # src/tools/launcher/openwithprogram.cpp # src/tools/line/linetool.cpp # src/tools/line/linetool.h # src/tools/marker/markertool.cpp # src/tools/marker/markertool.h # src/tools/move/movetool.cpp # src/tools/pencil/penciltool.cpp # src/tools/pencil/penciltool.h # src/tools/pin/pintool.cpp # src/tools/pin/pintool.h # src/tools/pin/pinwidget.cpp # src/tools/pixelate/pixelatetool.h # src/tools/rectangle/rectangletool.cpp # src/tools/rectangle/rectangletool.h # src/tools/redo/redotool.cpp # src/tools/redo/redotool.h # src/tools/save/savetool.cpp # src/tools/save/savetool.h # src/tools/selection/selectiontool.cpp # src/tools/selection/selectiontool.h # src/tools/sizeindicator/sizeindicatortool.cpp # src/tools/sizeindicator/sizeindicatortool.h # src/tools/storage/imgur/imguruploader.h # src/tools/storage/imgur/imguruploadertool.cpp # src/tools/storage/imgur/imguruploadertool.h # src/tools/text/textconfig.cpp # src/tools/text/texttool.cpp # src/tools/text/texttool.h # src/tools/toolfactory.cpp # src/tools/toolfactory.h # src/tools/undo/undotool.cpp # src/tools/undo/undotool.h # src/utils/confighandler.cpp # src/utils/confighandler.h # src/utils/dbusutils.cpp # src/utils/screenshotsaver.cpp # src/utils/screenshotsaver.h # src/widgets/capture/buttonhandler.cpp # src/widgets/capture/buttonhandler.h # src/widgets/capture/capturebutton.cpp # src/widgets/capture/capturebutton.h # src/widgets/capture/capturewidget.cpp # src/widgets/capture/capturewidget.h # src/widgets/capture/colorpicker.cpp # src/widgets/capturelauncher.cpp # src/widgets/infowindow.cpp # src/widgets/infowindow.h # src/widgets/panel/sidepanelwidget.cpp # src/widgets/panel/utilitypanel.cpp # src/widgets/panel/utilitypanel.h # translations/Internationalization_ca.ts # translations/Internationalization_de_DE.ts # translations/Internationalization_es.ts # translations/Internationalization_fr.ts # translations/Internationalization_ja.ts # translations/Internationalization_nl.ts # translations/Internationalization_pl.ts # translations/Internationalization_pt_br.ts # translations/Internationalization_ru.ts # translations/Internationalization_sk.ts # translations/Internationalization_sr.ts # translations/Internationalization_tr.ts # translations/Internationalization_uk.ts # translations/Internationalization_zh_CN.ts # translations/Internationalization_zh_TW.ts
This commit is contained in:
21
src/utils/CMakeLists.txt
Normal file
21
src/utils/CMakeLists.txt
Normal file
@@ -0,0 +1,21 @@
|
||||
# Required to generate MOC
|
||||
target_sources(
|
||||
flameshot
|
||||
PRIVATE dbusutils.h
|
||||
filenamehandler.h
|
||||
screengrabber.h
|
||||
systemnotification.h)
|
||||
|
||||
target_sources(
|
||||
flameshot
|
||||
PRIVATE filenamehandler.cpp
|
||||
screengrabber.cpp
|
||||
confighandler.cpp
|
||||
systemnotification.cpp
|
||||
screenshotsaver.cpp
|
||||
dbusutils.cpp
|
||||
globalvalues.cpp
|
||||
desktopfileparse.cpp
|
||||
desktopinfo.cpp
|
||||
pathinfo.cpp
|
||||
colorutils.cpp)
|
||||
@@ -30,9 +30,9 @@ ConfigHandler::ConfigHandler()
|
||||
m_settings.setDefaultFormat(QSettings::IniFormat);
|
||||
}
|
||||
|
||||
QVector<CaptureButton::ButtonType> ConfigHandler::getButtons()
|
||||
QVector<CaptureToolButton::ButtonType> ConfigHandler::getButtons()
|
||||
{
|
||||
QVector<CaptureButton::ButtonType> buttons;
|
||||
QVector<CaptureToolButton::ButtonType> buttons;
|
||||
if (m_settings.contains(QStringLiteral("buttons"))) {
|
||||
// TODO: remove toList in v1.0
|
||||
QVector<int> buttonsInt = m_settings.value(QStringLiteral("buttons"))
|
||||
@@ -46,31 +46,35 @@ QVector<CaptureButton::ButtonType> ConfigHandler::getButtons()
|
||||
buttons = fromIntToButton(buttonsInt);
|
||||
} else {
|
||||
// Default tools
|
||||
buttons << CaptureButton::TYPE_PENCIL << CaptureButton::TYPE_DRAWER
|
||||
<< CaptureButton::TYPE_ARROW << CaptureButton::TYPE_SELECTION
|
||||
<< CaptureButton::TYPE_RECTANGLE << CaptureButton::TYPE_CIRCLE
|
||||
<< CaptureButton::TYPE_MARKER << CaptureButton::TYPE_BLUR
|
||||
<< CaptureButton::TYPE_SELECTIONINDICATOR
|
||||
<< CaptureButton::TYPE_MOVESELECTION << CaptureButton::TYPE_UNDO
|
||||
<< CaptureButton::TYPE_REDO << CaptureButton::TYPE_COPY
|
||||
<< CaptureButton::TYPE_SAVE << CaptureButton::TYPE_EXIT
|
||||
<< CaptureButton::TYPE_IMAGEUPLOADER
|
||||
#if defined(Q_OS_LINUX) || defined(Q_OS_UNIX)
|
||||
<< CaptureButton::TYPE_OPEN_APP
|
||||
#endif
|
||||
<< CaptureButton::TYPE_PIN << CaptureButton::TYPE_TEXT;
|
||||
buttons << CaptureToolButton::TYPE_PENCIL
|
||||
<< CaptureToolButton::TYPE_DRAWER
|
||||
<< CaptureToolButton::TYPE_ARROW
|
||||
<< CaptureToolButton::TYPE_SELECTION
|
||||
<< CaptureToolButton::TYPE_RECTANGLE
|
||||
<< CaptureToolButton::TYPE_CIRCLE
|
||||
<< CaptureToolButton::TYPE_MARKER
|
||||
<< CaptureToolButton::TYPE_PIXELATE
|
||||
<< CaptureToolButton::TYPE_SELECTIONINDICATOR
|
||||
<< CaptureToolButton::TYPE_MOVESELECTION
|
||||
<< CaptureToolButton::TYPE_UNDO << CaptureToolButton::TYPE_REDO
|
||||
<< CaptureToolButton::TYPE_COPY << CaptureToolButton::TYPE_SAVE
|
||||
<< CaptureToolButton::TYPE_EXIT
|
||||
<< CaptureToolButton::TYPE_IMAGEUPLOADER
|
||||
<< CaptureToolButton::TYPE_OPEN_APP
|
||||
<< CaptureToolButton::TYPE_PIN << CaptureToolButton::TYPE_TEXT
|
||||
<< CaptureToolButton::TYPE_CIRCLECOUNT;
|
||||
}
|
||||
|
||||
using bt = CaptureButton::ButtonType;
|
||||
using bt = CaptureToolButton::ButtonType;
|
||||
std::sort(buttons.begin(), buttons.end(), [](bt a, bt b) {
|
||||
return CaptureButton::getPriorityByButton(a) <
|
||||
CaptureButton::getPriorityByButton(b);
|
||||
return CaptureToolButton::getPriorityByButton(a) <
|
||||
CaptureToolButton::getPriorityByButton(b);
|
||||
});
|
||||
return buttons;
|
||||
}
|
||||
|
||||
void ConfigHandler::setButtons(
|
||||
const QVector<CaptureButton::ButtonType>& buttons)
|
||||
const QVector<CaptureToolButton::ButtonType>& buttons)
|
||||
{
|
||||
QVector<int> l = fromButtonToInt(buttons);
|
||||
normalizeButtons(l);
|
||||
@@ -172,9 +176,9 @@ QColor ConfigHandler::uiContrastColorValue()
|
||||
{
|
||||
QColor res = QColor(39, 0, 50);
|
||||
|
||||
if (m_settings.contains(QStringLiteral("contastUiColor"))) {
|
||||
if (m_settings.contains(QStringLiteral("contrastUiColor"))) {
|
||||
QString hex =
|
||||
m_settings.value(QStringLiteral("contastUiColor")).toString();
|
||||
m_settings.value(QStringLiteral("contrastUiColor")).toString();
|
||||
|
||||
if (QColor::isValidColor(hex)) {
|
||||
res = QColor(hex);
|
||||
@@ -186,7 +190,7 @@ QColor ConfigHandler::uiContrastColorValue()
|
||||
|
||||
void ConfigHandler::setUIContrastColor(const QColor& c)
|
||||
{
|
||||
m_settings.setValue(QStringLiteral("contastUiColor"), c.name());
|
||||
m_settings.setValue(QStringLiteral("contrastUiColor"), c.name());
|
||||
}
|
||||
|
||||
QColor ConfigHandler::drawColorValue()
|
||||
@@ -223,6 +227,18 @@ void ConfigHandler::setShowHelp(const bool showHelp)
|
||||
m_settings.setValue(QStringLiteral("showHelp"), showHelp);
|
||||
}
|
||||
|
||||
bool ConfigHandler::showSidePanelButtonValue()
|
||||
{
|
||||
return m_settings.value(QStringLiteral("showSidePanelButton"), true)
|
||||
.toBool();
|
||||
}
|
||||
|
||||
void ConfigHandler::setShowSidePanelButton(const bool showSidePanelButton)
|
||||
{
|
||||
m_settings.setValue(QStringLiteral("showSidePanelButton"),
|
||||
showSidePanelButton);
|
||||
}
|
||||
|
||||
bool ConfigHandler::desktopNotificationValue()
|
||||
{
|
||||
bool res = true;
|
||||
@@ -425,6 +441,15 @@ void ConfigHandler::setCopyAndCloseAfterUploadEnabled(const bool value)
|
||||
{
|
||||
m_settings.setValue(QStringLiteral("copyAndCloseAfterUpload"), value);
|
||||
}
|
||||
bool ConfigHandler::saveAfterCopyValue()
|
||||
{
|
||||
return m_settings.value(QStringLiteral("saveAfterCopy")).toBool();
|
||||
}
|
||||
|
||||
void ConfigHandler::setSaveAfterCopy(const bool save)
|
||||
{
|
||||
m_settings.setValue(QStringLiteral("saveAfterCopy"), save);
|
||||
}
|
||||
|
||||
bool ConfigHandler::copyPathAfterSaveEnabled()
|
||||
{
|
||||
@@ -455,6 +480,16 @@ const QString& ConfigHandler::uploadStorage()
|
||||
return m_strRes;
|
||||
}
|
||||
|
||||
QString ConfigHandler::saveAfterCopyPathValue()
|
||||
{
|
||||
return m_settings.value(QStringLiteral("saveAfterCopyPath")).toString();
|
||||
}
|
||||
|
||||
void ConfigHandler::setSaveAfterCopyPath(const QString& path)
|
||||
{
|
||||
m_settings.setValue(QStringLiteral("saveAfterCopyPath"), path);
|
||||
}
|
||||
|
||||
void ConfigHandler::setDefaults()
|
||||
{
|
||||
m_settings.clear();
|
||||
@@ -463,8 +498,8 @@ void ConfigHandler::setDefaults()
|
||||
void ConfigHandler::setAllTheButtons()
|
||||
{
|
||||
QVector<int> buttons;
|
||||
auto listTypes = CaptureButton::getIterableButtonTypes();
|
||||
for (const CaptureButton::ButtonType t : listTypes) {
|
||||
auto listTypes = CaptureToolButton::getIterableButtonTypes();
|
||||
for (const CaptureToolButton::ButtonType t : listTypes) {
|
||||
buttons << static_cast<int>(t);
|
||||
}
|
||||
// TODO: remove toList in v1.0
|
||||
@@ -479,7 +514,7 @@ QString ConfigHandler::configFilePath() const
|
||||
|
||||
bool ConfigHandler::normalizeButtons(QVector<int>& buttons)
|
||||
{
|
||||
auto listTypes = CaptureButton::getIterableButtonTypes();
|
||||
auto listTypes = CaptureToolButton::getIterableButtonTypes();
|
||||
QVector<int> listTypesInt;
|
||||
for (auto i : listTypes)
|
||||
listTypesInt << static_cast<int>(i);
|
||||
@@ -494,17 +529,17 @@ bool ConfigHandler::normalizeButtons(QVector<int>& buttons)
|
||||
return hasChanged;
|
||||
}
|
||||
|
||||
QVector<CaptureButton::ButtonType> ConfigHandler::fromIntToButton(
|
||||
QVector<CaptureToolButton::ButtonType> ConfigHandler::fromIntToButton(
|
||||
const QVector<int>& l)
|
||||
{
|
||||
QVector<CaptureButton::ButtonType> buttons;
|
||||
QVector<CaptureToolButton::ButtonType> buttons;
|
||||
for (auto const i : l)
|
||||
buttons << static_cast<CaptureButton::ButtonType>(i);
|
||||
buttons << static_cast<CaptureToolButton::ButtonType>(i);
|
||||
return buttons;
|
||||
}
|
||||
|
||||
QVector<int> ConfigHandler::fromButtonToInt(
|
||||
const QVector<CaptureButton::ButtonType>& l)
|
||||
const QVector<CaptureToolButton::ButtonType>& l)
|
||||
{
|
||||
QVector<int> buttons;
|
||||
for (auto const i : l)
|
||||
|
||||
@@ -17,19 +17,18 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "src/widgets/capture/capturebutton.h"
|
||||
#include "src/widgets/capture/capturetoolbutton.h"
|
||||
#include <QSettings>
|
||||
#include <QStringList>
|
||||
#include <QVector>
|
||||
|
||||
class ConfigHandler : public QObject
|
||||
class ConfigHandler
|
||||
{
|
||||
|
||||
public:
|
||||
explicit ConfigHandler();
|
||||
|
||||
QVector<CaptureButton::ButtonType> getButtons();
|
||||
void setButtons(const QVector<CaptureButton::ButtonType>&);
|
||||
QVector<CaptureToolButton::ButtonType> getButtons();
|
||||
void setButtons(const QVector<CaptureToolButton::ButtonType>&);
|
||||
|
||||
QVector<QColor> getUserColors();
|
||||
void setUserColors(const QVector<QColor>&);
|
||||
@@ -51,6 +50,9 @@ public:
|
||||
bool showHelpValue();
|
||||
void setShowHelp(const bool);
|
||||
|
||||
bool showSidePanelButtonValue();
|
||||
void setShowSidePanelButton(const bool);
|
||||
|
||||
bool desktopNotificationValue();
|
||||
void setDesktopNotification(const bool);
|
||||
|
||||
@@ -81,6 +83,11 @@ public:
|
||||
|
||||
bool copyAndCloseAfterUploadEnabled();
|
||||
void setCopyAndCloseAfterUploadEnabled(const bool);
|
||||
bool saveAfterCopyValue();
|
||||
void setSaveAfterCopy(const bool);
|
||||
|
||||
QString saveAfterCopyPathValue();
|
||||
void setSaveAfterCopyPath(const QString&);
|
||||
|
||||
bool copyPathAfterSaveEnabled();
|
||||
void setCopyPathAfterSaveEnabled(const bool);
|
||||
@@ -105,6 +112,8 @@ private:
|
||||
|
||||
bool normalizeButtons(QVector<int>&);
|
||||
|
||||
QVector<CaptureButton::ButtonType> fromIntToButton(const QVector<int>& l);
|
||||
QVector<int> fromButtonToInt(const QVector<CaptureButton::ButtonType>& l);
|
||||
QVector<CaptureToolButton::ButtonType> fromIntToButton(
|
||||
const QVector<int>& l);
|
||||
QVector<int> fromButtonToInt(
|
||||
const QVector<CaptureToolButton::ButtonType>& l);
|
||||
};
|
||||
|
||||
@@ -29,14 +29,14 @@ void DBusUtils::connectPrintCapture(QDBusConnection& session, uint id)
|
||||
{
|
||||
m_id = id;
|
||||
// captureTaken
|
||||
session.connect(QStringLiteral("org.dharkael.Flameshot"),
|
||||
session.connect(QStringLiteral("org.flameshot.Flameshot"),
|
||||
QStringLiteral("/"),
|
||||
QLatin1String(""),
|
||||
QStringLiteral("captureTaken"),
|
||||
this,
|
||||
SLOT(captureTaken(uint, QByteArray)));
|
||||
// captureFailed
|
||||
session.connect(QStringLiteral("org.dharkael.Flameshot"),
|
||||
session.connect(QStringLiteral("org.flameshot.Flameshot"),
|
||||
QStringLiteral("/"),
|
||||
QLatin1String(""),
|
||||
QStringLiteral("captureFailed"),
|
||||
|
||||
@@ -27,14 +27,31 @@
|
||||
|
||||
ScreenshotSaver::ScreenshotSaver() {}
|
||||
|
||||
// TODO: If data is saved to the clipboard before the notification is sent via
|
||||
// dbus, the application freezes.
|
||||
void ScreenshotSaver::saveToClipboard(const QPixmap& capture)
|
||||
{
|
||||
SystemNotification().sendMessage(QObject::tr("Capture saved to clipboard"));
|
||||
QApplication::clipboard()->setPixmap(capture);
|
||||
|
||||
// If we are able to properly save the file, save the file and copy to
|
||||
// clipboard.
|
||||
if ((ConfigHandler().saveAfterCopyValue()) &&
|
||||
(!ConfigHandler().saveAfterCopyPathValue().isEmpty())) {
|
||||
saveToFilesystem(capture,
|
||||
ConfigHandler().saveAfterCopyPathValue(),
|
||||
QObject::tr("Capture saved to clipboard."));
|
||||
QApplication::clipboard()->setPixmap(capture);
|
||||
}
|
||||
// Otherwise only save to clipboard
|
||||
else {
|
||||
SystemNotification().sendMessage(
|
||||
QObject::tr("Capture saved to clipboard"));
|
||||
QApplication::clipboard()->setPixmap(capture);
|
||||
}
|
||||
}
|
||||
|
||||
bool ScreenshotSaver::saveToFilesystem(const QPixmap& capture,
|
||||
const QString& path)
|
||||
const QString& path,
|
||||
const QString& messagePrefix)
|
||||
{
|
||||
QString completePath = FileNameHandler().generateAbsolutePath(path);
|
||||
completePath += QLatin1String(".png");
|
||||
@@ -44,9 +61,11 @@ bool ScreenshotSaver::saveToFilesystem(const QPixmap& capture,
|
||||
|
||||
if (ok) {
|
||||
ConfigHandler().setSavePath(path);
|
||||
saveMessage = QObject::tr("Capture saved as ") + completePath;
|
||||
saveMessage =
|
||||
messagePrefix + QObject::tr("Capture saved as ") + completePath;
|
||||
} else {
|
||||
saveMessage = QObject::tr("Error trying to save as ") + completePath;
|
||||
saveMessage = messagePrefix + QObject::tr("Error trying to save as ") +
|
||||
completePath;
|
||||
notificationPath = "";
|
||||
}
|
||||
|
||||
@@ -83,10 +102,9 @@ bool ScreenshotSaver::saveToFilesystemGUI(const QPixmap& capture)
|
||||
ok = capture.save(savePath);
|
||||
|
||||
if (ok) {
|
||||
ConfigHandler config;
|
||||
QString pathNoFile =
|
||||
savePath.left(savePath.lastIndexOf(QLatin1String("/")));
|
||||
config.setSavePath(pathNoFile);
|
||||
ConfigHandler().setSavePath(pathNoFile);
|
||||
QString msg = QObject::tr("Capture saved as ") + savePath;
|
||||
if (config.copyPathAfterSaveEnabled()) {
|
||||
QApplication::clipboard()->setText(savePath);
|
||||
|
||||
@@ -26,6 +26,8 @@ public:
|
||||
ScreenshotSaver();
|
||||
|
||||
void saveToClipboard(const QPixmap& capture);
|
||||
bool saveToFilesystem(const QPixmap& capture, const QString& path);
|
||||
bool saveToFilesystem(const QPixmap& capture,
|
||||
const QString& path,
|
||||
const QString& messagePrefix);
|
||||
bool saveToFilesystemGUI(const QPixmap& capture);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user