Big code refactor

The design was defective and I didn't expect the popularity of the project. After these changes the code will be more mantainable and understandable.

Among the changes we can see:
- A better code structure
- Decoupled button widget from its logic
- More code reuse
- Easier way to add buttons
- Specialized classes
This commit is contained in:
lupoDharkael
2017-07-19 09:49:24 +02:00
parent 9357312855
commit d4e7c63cb4
69 changed files with 2436 additions and 565 deletions

View File

@@ -16,20 +16,18 @@
// along with Flameshot. If not, see <http://www.gnu.org/licenses/>.
#include "filenamehandler.h"
#include "src/utils/confighandler.h"
#include <ctime>
#include <locale>
#include <QSettings>
#include <QStandardPaths>
#include <QDir>
FileNameHandler::FileNameHandler(QObject *parent) : QObject(parent) {
std::locale::global(std::locale(std::locale("").name()));
}
QString FileNameHandler::getActualPattern() {
return QSettings().value("filenamePattern").toString();
}
QString FileNameHandler::getParsedPattern() {
return parseFilename(getActualPattern());
return parseFilename(ConfigHandler().getFilenamePattern());
}
QString FileNameHandler::parseFilename(const QString &name) {
@@ -50,7 +48,40 @@ QString FileNameHandler::parseFilename(const QString &name) {
}
void FileNameHandler::savePattern(const QString &pattern) {
QSettings().setValue("filenamePattern", pattern);
ConfigHandler().setFilenamePattern(pattern);
}
QString FileNameHandler::getAbsoluteSavePath() {
ConfigHandler config;
QString savePath = config.getSavePath();
bool changed = false;
if (savePath.isEmpty() || !QDir(savePath).exists() || !QFileInfo(savePath).isWritable()) {
changed = true;
savePath = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
if (savePath.isEmpty()) {
savePath = QDir::currentPath();
}
}
if(changed) {
config.setSavePath(savePath);
}
QString tempName = "/"+ FileNameHandler().getParsedPattern();
// find unused name adding _n where n is a number
QFileInfo checkFile(savePath + tempName + ".png");
if (checkFile.exists()) {
tempName += "_";
int i = 1;
while (true) {
checkFile.setFile(
savePath + tempName + QString::number(i) + ".png");
if (!checkFile.exists()) {
tempName += QString::number(i);
break;
}
++i;
}
}
return savePath + tempName + ".png";
}
QString FileNameHandler::charArrToQString(const char *c) {