mirror of
https://github.com/YACReader/yacreader
synced 2025-05-25 18:00:46 -04:00
139 lines
3.4 KiB
C++
139 lines
3.4 KiB
C++
#include "yacreader_libraries.h"
|
|
#include "yacreader_global.h"
|
|
|
|
YACReaderLibraries::YACReaderLibraries()
|
|
: QObject()
|
|
{
|
|
}
|
|
|
|
YACReaderLibraries::YACReaderLibraries(const YACReaderLibraries &source)
|
|
: QObject(), libraries(source.libraries)
|
|
{
|
|
}
|
|
|
|
QList<QString> 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<int, QString> 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<QString, QPair<int, QString>> 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<int, QString>(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();
|
|
}
|