// Copyright(c) 2017-2018 Alejandro Sirgo Rica & Contributors
//
// This file is part of Flameshot.
//
// Flameshot is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Flameshot is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Flameshot. If not, see .
#include "screenshotsaver.h"
#include "src/utils/systemnotification.h"
#include "src/utils/filenamehandler.h"
#include "src/utils/confighandler.h"
#include
#include
#include
#include
#include
ScreenshotSaver::ScreenshotSaver() {
}
void ScreenshotSaver::saveToClipboard(const QPixmap &capture) {
SystemNotification().sendMessage(
QObject::tr("Capture saved to clipboard"));
QApplication::clipboard()->setPixmap(capture);
}
bool ScreenshotSaver::saveToFilesystem(const QPixmap &capture,
const QString &path)
{
QString completePath = FileNameHandler().generateAbsolutePath(path);
completePath += ".png";
bool ok = capture.save(completePath);
QString saveMessage;
if (ok) {
ConfigHandler().setSavePath(path);
saveMessage = QObject::tr("Capture saved as ") + completePath;
} else {
saveMessage = QObject::tr("Error trying to save as ") + completePath;
}
SystemNotification().sendMessage(saveMessage);
return ok;
}
bool ScreenshotSaver::saveToFilesystemGUI(const QPixmap &capture) {
bool ok = false;
while (!ok) {
QString savePath = QFileDialog::getSaveFileName(
nullptr,
QString(),
FileNameHandler().absoluteSavePath() + ".png");
if (savePath.isNull()) {
break;
}
if (!savePath.endsWith(".png")) {
savePath += ".png";
}
ok = capture.save(savePath);
if (ok) {
QString pathNoFile = savePath.left(savePath.lastIndexOf("/"));
ConfigHandler().setSavePath(pathNoFile);
QString msg = QObject::tr("Capture saved as ") + savePath;
SystemNotification().sendMessage(msg);
} else {
QString msg = QObject::tr("Error trying to save as ") + savePath;
QMessageBox saveErrBox(
QMessageBox::Warning,
QObject::tr("Save Error"),
msg);
saveErrBox.setWindowIcon(QIcon(":img/app/flameshot.svg"));
saveErrBox.exec();
}
}
return ok;
}