Skip to content

Commit a6b17c8

Browse files
committed
Don't write playlists backup to disk on exit if not changed
Based on idea of @cmdrkotori in mpc-qt#255.
1 parent 34fdd32 commit a6b17c8

File tree

3 files changed

+25
-9
lines changed

3 files changed

+25
-9
lines changed

main.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,6 @@ static const char keyDirectory[] = "directory";
3636
static const char keyFiles[] = "files";
3737
static const char keyStreams[] = "streams";
3838

39-
static const char fileFavorites[] = "favorites";
40-
static const char fileGeometryV2[] = "geometry_v2";
41-
static const char fileKeys[] = "keys_v2";
42-
static const char filePlaylists[] = "playlists";
43-
static const char filePlaylistsBackup[] = "playlists_backup";
44-
static const char fileRecent[] = "recent";
45-
static const char fileSettings[] = "settings";
46-
4739
//---------------------------------------------------------------------------
4840

4941
int main(int argc, char *argv[])

storage.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#include <QCoreApplication>
22
#include <QStandardPaths>
33
#include <QSettings>
4-
#include <QJsonDocument>
54
#include <QJsonObject>
65
#include <QJsonArray>
76
#include <QDir>
@@ -12,6 +11,14 @@
1211
#include "storage.h"
1312
#include "platform/unify.h"
1413

14+
const char fileFavorites[] = "favorites";
15+
const char fileGeometryV2[] = "geometry_v2";
16+
const char fileKeys[] = "keys_v2";
17+
const char filePlaylists[] = "playlists";
18+
const char filePlaylistsBackup[] = "playlists_backup";
19+
const char fileRecent[] = "recent";
20+
const char fileSettings[] = "settings";
21+
1522
QString Storage::configPath;
1623

1724
Storage::Storage(QObject *parent) :
@@ -90,6 +97,11 @@ void Storage::writeM3U(const QString &where, QStringList items)
9097

9198
void Storage::writeJsonObject(QString fname, const QJsonDocument &doc)
9299
{
100+
if (fname == filePlaylistsBackup && doc == playlistsBackup &&
101+
QFileInfo::exists(QDir(configPath).absoluteFilePath(fname + ".json"))) {
102+
LogStream("storage") << "backup not needed for " + fname;
103+
return;
104+
}
93105
QFile file(QDir(configPath).absoluteFilePath(fname + ".json"));
94106
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
95107
return;
@@ -102,5 +114,7 @@ QJsonDocument Storage::readJsonObject(QString fname)
102114
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
103115
return QJsonDocument();
104116
QJsonDocument doc = QJsonDocument::fromJson(QTextStream(&file).readAll().toUtf8());
117+
if (fname == filePlaylistsBackup)
118+
playlistsBackup = doc;
105119
return doc;
106120
}

storage.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
#ifndef STORAGE_H
22
#define STORAGE_H
33

4+
#include <QJsonDocument>
45
#include <QObject>
56

7+
extern const char fileFavorites[];
8+
extern const char fileGeometryV2[];
9+
extern const char fileKeys[];
10+
extern const char filePlaylists[];
11+
extern const char filePlaylistsBackup[];
12+
extern const char fileRecent[];
13+
extern const char fileSettings[];
14+
615
class Storage : public QObject
716
{
817
Q_OBJECT
@@ -29,6 +38,7 @@ public slots:
2938

3039
private:
3140
static QString configPath;
41+
QJsonDocument playlistsBackup;
3242
};
3343

3444
#endif // STORAGE_H

0 commit comments

Comments
 (0)