Files
flameshot/src/utils/history.cpp
2020-08-06 21:54:20 +03:00

94 lines
2.6 KiB
C++

#include "history.h"
#include "src/utils/confighandler.h"
#include <QDir>
#include <QFile>
#include <QDebug>
#include <QStringList>
History::History()
{
// Get cache history path
ConfigHandler config;
#ifdef Q_OS_WIN
m_historyPath = QDir::homePath() + "/AppData/Roaming/flameshot/history/";
#else
m_historyPath = QDir::homePath() + "/.cache/flameshot/history/";
#endif
// Check if directory for history exists and create if doesn't
QDir dir = QDir(m_historyPath);
if (!dir.exists())
dir.mkpath(".");
}
const QString &History::path() {
return m_historyPath;
}
void History::save(const QPixmap &pixmap, const QString &fileName) {
QFile file(path() + fileName);
file.open(QIODevice::WriteOnly);
pixmap.save(&file, "PNG");
history();
}
const QList<QString> &History::history() {
QDir directory(path());
QStringList images = directory.entryList(QStringList() << "*.png" << "*.PNG", QDir::Files, QDir::Time);
int cnt = 0;
m_thumbs.clear();
foreach(QString fileName, images) {
if(++cnt <= HISTORY_MAX_SIZE) {
m_thumbs.append(fileName);
}
else {
QFile file(path() + fileName);
file.remove();
}
}
return m_thumbs;
}
const HISTORY_FILE_NAME &History::unpackFileName(const QString &fileNamePacked) {
int nPathIndex = fileNamePacked.lastIndexOf("/");
QStringList unpackedFileName;
if(nPathIndex == -1) {
unpackedFileName = fileNamePacked.split("-");
} else {
unpackedFileName = fileNamePacked.mid(nPathIndex + 1).split("-");
}
switch (unpackedFileName.length()) {
case 3:
m_unpackedFileName.file = unpackedFileName[2];
m_unpackedFileName.token = unpackedFileName[1];
m_unpackedFileName.type = unpackedFileName[0];
break;
case 2:
m_unpackedFileName.file = unpackedFileName[1];
m_unpackedFileName.token = "";
m_unpackedFileName.type = unpackedFileName[0];
break;
default:
m_unpackedFileName.file = unpackedFileName[0];
m_unpackedFileName.token = "";
m_unpackedFileName.type = SCREENSHOT_STORAGE_TYPE_LOCAL;
break;
}
return m_unpackedFileName;
}
const QString &History::packFileName(const QString &storageType, const QString &deleteToken, const QString &fileName) {
m_packedFileName = fileName;
if(storageType.length() > 0) {
if(deleteToken.length() > 0) {
m_packedFileName = storageType + "-" + deleteToken + "-" + m_packedFileName;
}
else {
m_packedFileName = storageType + "-" + m_packedFileName;
}
}
return m_packedFileName;
}