Browse Source

refactor(settings): replace getAppDataDirPath with Paths

reviewable/pr6649/r4
sudden6 7 years ago
parent
commit
5cebc98abf
No known key found for this signature in database
GPG Key ID: 279509B499E032B9
  1. 37
      src/persistence/settings.cpp
  2. 2
      src/persistence/settings.h
  3. 10
      src/widget/form/chatform.cpp

37
src/persistence/settings.cpp

@ -712,6 +712,11 @@ uint32_t Settings::makeProfileId(const QString& profile) @@ -712,6 +712,11 @@ uint32_t Settings::makeProfileId(const QString& profile)
return dwords[0] ^ dwords[1] ^ dwords[2] ^ dwords[3];
}
const Paths &Settings::getPaths() const
{
return paths;
}
/**
* @brief Get path to directory, where the settings files are stored.
* @return Path to settings directory, ends with a directory separator.
@ -723,38 +728,6 @@ QString Settings::getSettingsDirPath() const @@ -723,38 +728,6 @@ QString Settings::getSettingsDirPath() const
return QFileInfo{settingsFile}.dir().absolutePath();
}
/**
* @brief Get path to directory, where the application data are stored.
* @return Path to application data, ends with a directory separator.
*/
QString Settings::getAppDataDirPath() const
{
QMutexLocker locker{&bigLock};
if (makeToxPortable)
return qApp->applicationDirPath() + QDir::separator();
// workaround for https://bugreports.qt-project.org/browse/QTBUG-38845
#ifdef Q_OS_WIN
return QDir::cleanPath(QStandardPaths::writableLocation(QStandardPaths::HomeLocation)
+ QDir::separator() + "AppData" + QDir::separator() + "Roaming"
+ QDir::separator() + "tox")
+ QDir::separator();
#elif defined(Q_OS_OSX)
return QDir::cleanPath(QStandardPaths::writableLocation(QStandardPaths::HomeLocation)
+ QDir::separator() + "Library" + QDir::separator()
+ "Application Support" + QDir::separator() + "Tox")
+ QDir::separator();
#else
/*
* TODO: Change QStandardPaths::DataLocation to AppDataLocation when upgrate Qt to 5.4+
* For now we need support Qt 5.3, so we use deprecated DataLocation
* BTW, it's not a big deal since for linux AppDataLocation and DataLocation are equal
*/
return QDir::cleanPath(QStandardPaths::writableLocation(QStandardPaths::DataLocation))
+ QDir::separator();
#endif
}
/**
* @brief Get path to directory, where the application cache are stored.
* @return Path to application cache, ends with a directory separator.

2
src/persistence/settings.h

@ -139,7 +139,6 @@ public: @@ -139,7 +139,6 @@ public:
~Settings() override;
static Settings& getInstance();
QString getSettingsDirPath() const;
QString getAppDataDirPath() const;
QString getAppCacheDirPath() const;
void createSettingsDir();
@ -570,6 +569,7 @@ public: @@ -570,6 +569,7 @@ public:
}
static uint32_t makeProfileId(const QString& profile);
const Paths& getPaths() const;
private:
struct friendProp;

10
src/widget/form/chatform.cpp

@ -30,6 +30,7 @@ @@ -30,6 +30,7 @@
#include "src/persistence/history.h"
#include "src/persistence/offlinemsgengine.h"
#include "src/persistence/profile.h"
#include "src/persistence/paths.h"
#include "src/persistence/settings.h"
#include "src/video/netcamview.h"
#include "src/widget/chatformheader.h"
@ -893,16 +894,13 @@ void ChatForm::doScreenshot() @@ -893,16 +894,13 @@ void ChatForm::doScreenshot()
void ChatForm::sendImage(const QPixmap& pixmap)
{
QDir(Settings::getInstance().getAppDataDirPath()).mkpath("images");
QString filepath{Settings::getInstance().getPaths().getScreenshotsDir()};
// use ~ISO 8601 for screenshot timestamp, considering FS limitations
// https://en.wikipedia.org/wiki/ISO_8601
// Windows has to be supported, thus filename can't have `:` in it :/
// Format should be: `qTox_Screenshot_yyyy-MM-dd HH-mm-ss.zzz.png`
QString filepath = QString("%1images%2qTox_Image_%3.png")
.arg(Settings::getInstance().getAppDataDirPath())
.arg(QDir::separator())
.arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH-mm-ss.zzz"));
filepath += QString("qTox_Image_%1.png")
.arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH-mm-ss.zzz"));
QFile file(filepath);
if (file.open(QFile::ReadWrite)) {

Loading…
Cancel
Save