void Backbone::init() {
_interval = 250; //msec
- if(!_configPath.size())
- _configPath = QDir::homePath() + "/.mdictionary";
-
- loadPrefs();
-
-
- if(!_pluginPath.size())
- _pluginPath = "/usr/lib/mdictionary/";
+ _configPath = QDir::homePath() + "/.mdictionary/mdictionary.config";
+ _defaultConfigPath = QDir::homePath() + "/.mdictionary/mdictionary.defaults";
+ _pluginPath = "/usr/lib/mdictionary";
+ _historyLen = 10;
+ _searchLimit = 15;
+
+ loadPrefs(_defaultConfigPath);
+ _defaultPluginPath = _pluginPath;
+ _defaultHistoryLen = _historyLen;
+ _defaultSearchLimit = _searchLimit;
+ loadPrefs(_configPath);
loadPlugins();
- loadDicts();
+
+ loadDicts(_defaultConfigPath, true);
+ loadDicts(_configPath);
connect(&_timerSearch, SIGNAL(timeout()), this, SLOT(translationReady()));
connect(&_timerHtmlSearch, SIGNAL(timeout()), this,
QStringList nameFilter;
nameFilter << "*.so";
QStringList files = getFilesFromDir(_pluginPath, nameFilter);
+ qDebug() << files;
foreach(QString file, files) {
QPluginLoader loader(file);
-void Backbone::loadPrefs() {
- QDir confDir(_configPath);
- if(!confDir.exists())
- qDebug() << "Configuration file dosn't exists (" << _configPath << ")";
+void Backbone::loadPrefs(QString fileName) {
+ QFileInfo file(QDir::toNativeSeparators(fileName));
+ QDir confDir(file.dir());
+ if(!confDir.exists()){
+ qDebug() << "Configuration file dosn't exists ("
+ << file.filePath() << ")";
return;
- QSettings set(_configPath + "/mdictionary.config", QSettings::IniFormat);
+ }
+ QSettings set(file.filePath(), QSettings::IniFormat);
_pluginPath = set.value("general/plugin_path", _pluginPath).toString();
_historyLen = set.value("general/history_length", 10).toInt();
_searchLimit = set.value("general/search_limit", 15).toInt();
-void Backbone::loadDicts() {
- QDir confDir(_configPath);
- if(!confDir.exists())
- qDebug() << confDir.mkpath(_configPath);
+void Backbone::savePrefs(QSettings *set) {
+ set->setValue("general/plugin_path", _pluginPath);
+ set->setValue("general/history_length", _historyLen);
+ set->setValue("general/search_limit", _searchLimit);
+}
+
+
+
+void Backbone::saveDefaultPrefs(QSettings *set) {
+ set->setValue("general/plugin_path", _defaultPluginPath);
+ set->setValue("general/history_length", _defaultHistoryLen);
+ set->setValue("general/search_limit", _defaultSearchLimit);
+}
+
+
+
+void Backbone::loadDicts(QString fileName, bool _default) {
+ QFileInfo file(QDir::toNativeSeparators(fileName));
+ qDebug() << file.filePath();
+ QDir confDir(file.dir());
+ if(!confDir.exists()){
+ qDebug() << "Configuration file dosn't exists ("
+ << file.filePath() << ")";
+ return;
+ }
- QSettings set(_configPath + "/mdictionary.config", QSettings::IniFormat);
+ QSettings set(file.filePath(), QSettings::IniFormat);
QStringList dicts = set.childGroups();
foreach(QString dict, dicts) {
if(!dict.contains("dictionary_"))
Settings* plugSet = new Settings();
set.beginGroup(dict);
QStringList items = set.childKeys();
- foreach(QString item, items)
+ foreach(QString item, items) {
plugSet->setValue(item, set.value(item, "").toString());
+ }
bool active = set.value("active",1).toBool();
+
+ if(_default)
+ plugSet->setValue("_default_", "true");
+
set.endGroup();
addInternalDictionary(plug->getNew(plugSet), active);
}
void Backbone::dictUpdated() {
- QDir confDir(_configPath);
+ QFileInfo file(QDir::toNativeSeparators(_configPath));
+ QDir confDir(file.dir());
if(!confDir.exists())
- qDebug() << confDir.mkpath(_configPath);
- QSettings set(_configPath + "/mdictionary.config", QSettings::IniFormat);
+ confDir.mkpath(file.dir().path());
+ QSettings set(file.filePath(), QSettings::IniFormat);
+ set.clear();
+
+ QFileInfo defFile(QDir::toNativeSeparators(_defaultConfigPath));
+ QDir defConfDir(defFile.dir());
+ if(!defConfDir.exists())
+ defConfDir.mkpath(defFile.dir().path());
+ QSettings defSet(defFile.filePath(), QSettings::IniFormat);
+ defSet.clear();
+ savePrefs(&set);
+ saveDefaultPrefs(&defSet);
+
foreach(CommonDictInterface* dict, _dicts.keys())
- saveState(&set, dict->settings(), _dicts[dict], dict->hash());
+ if(!dict->settings()->keys().contains("_default_"))
+ saveState(&set, dict->settings(), _dicts[dict], dict->hash());
+ else
+ saveState(&defSet, dict->settings(), _dicts[dict], dict->hash());
}