1 | /* smplayer, GUI front-end for mplayer.
|
---|
2 | Copyright (C) 2006-2013 Ricardo Villalba <rvm@users.sourceforge.net>
|
---|
3 |
|
---|
4 | This program is free software; you can redistribute it and/or modify
|
---|
5 | it under the terms of the GNU General Public License as published by
|
---|
6 | the Free Software Foundation; either version 2 of the License, or
|
---|
7 | (at your option) any later version.
|
---|
8 |
|
---|
9 | This program is distributed in the hope that it will be useful,
|
---|
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
12 | GNU General Public License for more details.
|
---|
13 |
|
---|
14 | You should have received a copy of the GNU General Public License
|
---|
15 | along with this program; if not, write to the Free Software
|
---|
16 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
---|
17 | */
|
---|
18 |
|
---|
19 | #include "filesettingshash.h"
|
---|
20 | #include "mediasettings.h"
|
---|
21 | #include "filehash.h" // hash function
|
---|
22 | #include <QSettings>
|
---|
23 | #include <QFile>
|
---|
24 | #include <QDir>
|
---|
25 |
|
---|
26 | FileSettingsHash::FileSettingsHash(QString directory) : FileSettingsBase(directory)
|
---|
27 | {
|
---|
28 | base_dir = directory + "/file_settings";
|
---|
29 | }
|
---|
30 |
|
---|
31 | FileSettingsHash::~FileSettingsHash() {
|
---|
32 | }
|
---|
33 |
|
---|
34 |
|
---|
35 | QString FileSettingsHash::configFile(const QString & filename, QString * output_dir) {
|
---|
36 | QString res;
|
---|
37 |
|
---|
38 | QString hash = FileHash::calculateHash(filename);
|
---|
39 | if (!hash.isEmpty()) {
|
---|
40 | if (output_dir != 0) (*output_dir) = hash[0];
|
---|
41 | res = base_dir +"/"+ hash[0] +"/"+ hash + ".ini";
|
---|
42 | }
|
---|
43 | return res;
|
---|
44 | }
|
---|
45 |
|
---|
46 | bool FileSettingsHash::existSettingsFor(QString filename) {
|
---|
47 | qDebug("FileSettingsHash::existSettingsFor: '%s'", filename.toUtf8().constData());
|
---|
48 |
|
---|
49 | QString config_file = configFile(filename);
|
---|
50 |
|
---|
51 | qDebug("FileSettingsHash::existSettingsFor: config_file: '%s'", config_file.toUtf8().constData());
|
---|
52 |
|
---|
53 | return QFile::exists(config_file);
|
---|
54 | }
|
---|
55 |
|
---|
56 | void FileSettingsHash::loadSettingsFor(QString filename, MediaSettings & mset) {
|
---|
57 | qDebug("FileSettings::loadSettingsFor: '%s'", filename.toUtf8().constData());
|
---|
58 |
|
---|
59 | QString config_file = configFile(filename);
|
---|
60 |
|
---|
61 | qDebug("FileSettingsHash::loadSettingsFor: config_file: '%s'", config_file.toUtf8().constData());
|
---|
62 |
|
---|
63 | mset.reset();
|
---|
64 |
|
---|
65 | if ((!config_file.isEmpty()) && (QFile::exists(config_file))) {
|
---|
66 | QSettings settings(config_file, QSettings::IniFormat);
|
---|
67 |
|
---|
68 | settings.beginGroup("file_settings");
|
---|
69 | mset.load(&settings);
|
---|
70 | settings.endGroup();
|
---|
71 | }
|
---|
72 | }
|
---|
73 |
|
---|
74 | void FileSettingsHash::saveSettingsFor(QString filename, MediaSettings & mset) {
|
---|
75 | qDebug("FileSettingsHash::saveSettingsFor: '%s'", filename.toUtf8().constData());
|
---|
76 |
|
---|
77 | QString output_dir;
|
---|
78 | QString config_file = configFile(filename, &output_dir);
|
---|
79 |
|
---|
80 | qDebug("FileSettingsHash::saveSettingsFor: config_file: '%s'", config_file.toUtf8().constData());
|
---|
81 | qDebug("FileSettingsHash::saveSettingsFor: output_dir: '%s'", output_dir.toUtf8().constData());
|
---|
82 |
|
---|
83 | if (!config_file.isEmpty()) {
|
---|
84 | QDir d(base_dir);
|
---|
85 | if (!d.exists(output_dir)) {
|
---|
86 | if (!d.mkpath(output_dir)) {
|
---|
87 | qWarning("FileSettingsHash::saveSettingsFor: can't create directory '%s'", QString(base_dir + "/" + output_dir).toUtf8().constData());
|
---|
88 | return;
|
---|
89 | }
|
---|
90 | }
|
---|
91 |
|
---|
92 | QSettings settings(config_file, QSettings::IniFormat);
|
---|
93 |
|
---|
94 | /* settings.setValue("filename", filename); */
|
---|
95 |
|
---|
96 | settings.beginGroup("file_settings");
|
---|
97 | mset.save(&settings);
|
---|
98 | settings.endGroup();
|
---|
99 | settings.sync();
|
---|
100 | }
|
---|
101 | }
|
---|
102 |
|
---|