#include "yacreader_libraries.h" #include "yacreader_global.h" YACReaderLibraries::YACReaderLibraries() : QObject() { } YACReaderLibraries::YACReaderLibraries(const YACReaderLibraries &source) : QObject(), libraries(source.libraries) { } QList YACReaderLibraries::getNames() { return libraries.keys(); } QString YACReaderLibraries::getPath(const QString &name) { return libraries.value(name).second; } QString YACReaderLibraries::getPath(int id) { foreach (QString name, libraries.keys()) if (libraries.value(name).first == id) return libraries.value(name).second; return ""; } QString YACReaderLibraries::getName(int id) { foreach (QString name, libraries.keys()) if (libraries.value(name).first == id) return name; return ""; } bool YACReaderLibraries::isEmpty() { return libraries.isEmpty(); } bool YACReaderLibraries::contains(const QString &name) { return libraries.contains(name); } bool YACReaderLibraries::contains(int id) { foreach (QString name, libraries.keys()) if (libraries.value(name).first == id) return true; return false; } void YACReaderLibraries::remove(const QString &name) { libraries.remove(name); } void YACReaderLibraries::rename(const QString &oldName, const QString &newName) { if (libraries.contains(oldName)) { QPair value = libraries.value(oldName); libraries.remove(oldName); libraries.insert(newName, value); } } int YACReaderLibraries::getId(const QString &name) { return libraries.value(name).first; } YACReaderLibraries &YACReaderLibraries::operator=(const YACReaderLibraries &source) { libraries = source.libraries; return *this; } QMap> YACReaderLibraries::getLibraries() { return libraries; } void YACReaderLibraries::addLibrary(const QString &name, const QString &path) { int newID = 0; foreach (QString lName, libraries.keys()) newID = qMax(newID, libraries.value(lName).first); newID++; libraries.insert(name, QPair(newID, path)); } void YACReaderLibraries::load() { QSettings settings(YACReader::getSettingsPath() + "/" + QCoreApplication::applicationName() + ".ini", QSettings::IniFormat); if (settings.value(LIBRARIES).isValid()) { QByteArray data = settings.value(LIBRARIES).toByteArray(); QDataStream in(&data, QIODevice::ReadOnly); in >> libraries; } else // only for compatibility with old versions (<7.0) { QFile f(QCoreApplication::applicationDirPath() + "/libraries.yacr"); f.open(QIODevice::ReadOnly); QTextStream txtS(&f); QString content = txtS.readAll(); QStringList lines = content.split('\n'); QString line, name; int i = 0; foreach (line, lines) { if ((i % 2) == 0) name = line; else addLibrary(name.trimmed(), line.trimmed()); i++; } f.close(); if (save()) f.remove(); } } bool YACReaderLibraries::save() { QSettings settings(YACReader::getSettingsPath() + "/" + QCoreApplication::applicationName() + ".ini", QSettings::IniFormat); QByteArray data; QDataStream out(&data, QIODevice::WriteOnly); out << libraries; settings.setValue(LIBRARIES, data); return settings.isWritable(); }