yacreader/YACReaderLibrary/yacreader_libraries.cpp
Luis Ángel San Martín 5aa02a19bb clang-format
2021-10-18 21:56:52 +02:00

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();
}