From 24ee056485396881137366e641113fe4bdb402ca Mon Sep 17 00:00:00 2001 From: ArsenArsen Date: Sun, 23 Apr 2017 20:29:24 +0200 Subject: [PATCH] Add auto saving. --- .gitignore | 2 ++ KShare.pro | 6 +++-- formatter.cpp | 18 +++++++++++++++ formatter.hpp | 12 ++++++++++ main.cpp | 7 +++--- mainwindow.cpp | 18 ++++++++++++++- mainwindow.hpp | 3 +++ mainwindow.ui | 39 ++++++++++++++++++++++++++++----- uploaders/uploadersingleton.cpp | 10 +++++++++ 9 files changed, 103 insertions(+), 12 deletions(-) create mode 100644 formatter.cpp create mode 100644 formatter.hpp diff --git a/.gitignore b/.gitignore index d6839f7..3dc99e9 100644 --- a/.gitignore +++ b/.gitignore @@ -45,4 +45,6 @@ KShare *.Debug +vgcore.* + *.Release diff --git a/KShare.pro b/KShare.pro index 61733fc..c36fed8 100644 --- a/KShare.pro +++ b/KShare.pro @@ -34,7 +34,8 @@ SOURCES += main.cpp\ uploaders/default/imguruploader.cpp \ io/ioutils.cpp \ settings.cpp \ - uploaders/default/clipboarduploader.cpp + uploaders/default/clipboarduploader.cpp \ + formatter.cpp HEADERS += mainwindow.hpp \ cropeditor/cropeditor.hpp \ @@ -47,7 +48,8 @@ HEADERS += mainwindow.hpp \ uploaders/default/imguruploader.hpp \ io/ioutils.hpp \ settings.hpp \ - uploaders/default/clipboarduploader.hpp + uploaders/default/clipboarduploader.hpp \ + formatter.hpp FORMS += mainwindow.ui diff --git a/formatter.cpp b/formatter.cpp new file mode 100644 index 0000000..7f0084f --- /dev/null +++ b/formatter.cpp @@ -0,0 +1,18 @@ +#include "formatter.hpp" + +#include +#include + +QString formatter::format(QString toFormat) +{ + QRegExp dateRegex("%\\((.+)\\)date"); + dateRegex.indexIn(toFormat); + QStringList capturedTexts(dateRegex.capturedTexts()); + QString formatted(toFormat); + QDateTime date = QDateTime::currentDateTime(); + for (int i = 0; i < capturedTexts.length(); i += 2) + { + formatted = formatted.replace(capturedTexts.at(i), date.toString(capturedTexts.at(i + 1))); + } + return formatted; +} diff --git a/formatter.hpp b/formatter.hpp new file mode 100644 index 0000000..c551721 --- /dev/null +++ b/formatter.hpp @@ -0,0 +1,12 @@ +#ifndef FORMATTER_HPP +#define FORMATTER_HPP + +#include +#include + +namespace formatter +{ +QString format(QString toFormat); +} + +#endif // FORMATTER_HPP diff --git a/main.cpp b/main.cpp index 6589c23..9bc96c5 100644 --- a/main.cpp +++ b/main.cpp @@ -1,13 +1,12 @@ #include "mainwindow.hpp" #include -#include -#include -#include -#include int main(int argc, char *argv[]) { QApplication a(argc, argv); + a.setApplicationName("KShare"); + a.setOrganizationName("ArsenArsen"); + a.setApplicationName("1.0"); MainWindow w; w.show(); return a.exec(); diff --git a/mainwindow.cpp b/mainwindow.cpp index db959cc..2c0fd20 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) @@ -41,10 +42,15 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi { QListWidgetItem *item = new QListWidgetItem(u->name()); item->setToolTip(u->description()); - // ui->uploaderList->setCurrentIndex(ui->uploaderList->model()->index(++i, 0)) ui->uploaderList->addItem(item); if (u->name() == UploaderSingleton::inst().selectedUploader()) item->setSelected(true); } + + // Set filename scheme + if ((settings::settings().contains("fileFormat"))) + setScheme(settings::settings().value("fileFormat").toString()); + else + setScheme("Screenshot %(yyyy-MM-dd HH:mm:ss)date"); } MainWindow::~MainWindow() @@ -52,6 +58,11 @@ MainWindow::~MainWindow() delete ui; } +void MainWindow::setScheme(QString scheme) +{ + ui->nameScheme->setText(scheme); +} + void MainWindow::closeEvent(QCloseEvent *event) { event->ignore(); @@ -91,3 +102,8 @@ void MainWindow::on_uploaderList_clicked(const QModelIndex &) UploaderSingleton::inst().set(index.at(0)->text()); } } + +void MainWindow::on_nameScheme_textEdited(const QString &arg1) +{ + settings::settings().setValue("fileFormat", arg1); +} diff --git a/mainwindow.hpp b/mainwindow.hpp index 3a72857..59cf7bd 100644 --- a/mainwindow.hpp +++ b/mainwindow.hpp @@ -20,11 +20,14 @@ class MainWindow : public QMainWindow void on_actionFullscreen_triggered(); void on_actionArea_triggered(); void on_uploaderList_clicked(const QModelIndex &); + void on_nameScheme_textEdited(const QString &arg1); public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); + void setScheme(QString scheme); + private: Ui::MainWindow *ui; QSystemTrayIcon *tray; diff --git a/mainwindow.ui b/mainwindow.ui index 9693bc1..6c1dc1a 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 262 - 239 + 256 + 286 @@ -29,7 +29,7 @@ 0 0 - 241 + 181 19 @@ -42,18 +42,47 @@ 0 20 - 256 + 251 192 + + + + 0 + 230 + 251 + 27 + + + + http://doc.qt.io/qt-5/qdatetime.html#toString + + + Screenshot %(yyyy-MM-dd HH:mm:ss)date + + + + + + 0 + 210 + 141 + 19 + + + + File name scheme: + + 0 0 - 262 + 256 24 diff --git a/uploaders/uploadersingleton.cpp b/uploaders/uploadersingleton.cpp index 9f48716..040b05a 100644 --- a/uploaders/uploadersingleton.cpp +++ b/uploaders/uploadersingleton.cpp @@ -3,6 +3,7 @@ #include "default/imguruploader.hpp" #include #include +#include #include UploaderSingleton::UploaderSingleton() @@ -40,6 +41,15 @@ void UploaderSingleton::registerUploader(Uploader *uploader) void UploaderSingleton::upload(QPixmap *pixmap) { + if (settings::settings().contains("fileFormat")) + { + QString format = settings::settings().value("fileFormat").toString(); + if (!format.isEmpty()) + { + pixmap->save(QDir(QStandardPaths::writableLocation(QStandardPaths::PicturesLocation)).absoluteFilePath(formatter::format(format) + ".png"), + "PNG"); + } + } uploaders.value(uploader)->doUpload(pixmap); }