source: smplayer/trunk/src/filesettingshash.cpp@ 106

Last change on this file since 106 was 93, checked in by Silvan Scherrer, 15 years ago

smplayer: 0.6.9

File size: 3.3 KB
Line 
1/* smplayer, GUI front-end for mplayer.
2 Copyright (C) 2006-2010 Ricardo Villalba <rvm@escomposlinux.org>
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 "osparser.h" // hash function
22#include <QSettings>
23#include <QFile>
24#include <QDir>
25
26FileSettingsHash::FileSettingsHash(QString directory) : FileSettingsBase(directory)
27{
28 base_dir = directory + "/file_settings";
29}
30
31FileSettingsHash::~FileSettingsHash() {
32}
33
34
35QString FileSettingsHash::configFile(const QString & filename, QString * output_dir) {
36 QString res;
37
38 QString hash = OSParser::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
46bool 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
56void 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
74void 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
Note: See TracBrowser for help on using the repository browser.