From e51480469f94f398d44fa83243bae5f79e9ea033 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Fri, 15 Nov 2013 00:07:42 +0100 Subject: [PATCH] moved settings files from local dir to standar paths added YACReaderLibraries class, libraries are now identified by id --- YACReader/YACReader.pri | 3 +- YACReader/main.cpp | 4 +- YACReader/main_window_viewer.cpp | 4 +- YACReader/options_dialog.cpp | 10 +- YACReader/render.cpp | 6 +- YACReader/viewer.cpp | 4 +- YACReaderLibrary/YACReaderLibrary.pro | 9 +- YACReaderLibrary/create_library_dialog.cpp | 2 +- YACReaderLibrary/create_library_dialog.h | 6 +- YACReaderLibrary/db_helper.cpp | 65 ++------ YACReaderLibrary/db_helper.h | 5 +- YACReaderLibrary/import_library_dialog.cpp | 2 +- YACReaderLibrary/import_library_dialog.h | 6 +- YACReaderLibrary/library_window.cpp | 87 ++++------- YACReaderLibrary/library_window.h | 3 +- YACReaderLibrary/main.cpp | 25 +-- .../server/controllers/comiccontroller.cpp | 9 +- .../server/controllers/covercontroller.cpp | 5 +- .../controllers/librariescontroller.cpp | 15 +- YACReaderLibrary/server/requestmapper.cpp | 5 +- YACReaderLibrary/server_config_dialog.cpp | 6 +- YACReaderLibrary/yacreader_libraries.cpp | 147 ++++++++++++++++++ YACReaderLibrary/yacreader_libraries.h | 34 ++++ common/yacreader_global.cpp | 13 ++ common/yacreader_global.h | 11 ++ 25 files changed, 318 insertions(+), 168 deletions(-) create mode 100644 YACReaderLibrary/yacreader_libraries.cpp create mode 100644 YACReaderLibrary/yacreader_libraries.h create mode 100644 common/yacreader_global.cpp diff --git a/YACReader/YACReader.pri b/YACReader/YACReader.pri index fbc4a9c9..285067df 100644 --- a/YACReader/YACReader.pri +++ b/YACReader/YACReader.pri @@ -98,7 +98,8 @@ SOURCES += $$PWD/../common/comic.cpp \ $$PWD/../common/folder.cpp \ $$PWD/../common/library_item.cpp \ $$PWD/yacreader_local_client.cpp \ - $$PWD/../common/http_worker.cpp + $$PWD/../common/http_worker.cpp \ + $$PWD/../common/yacreader_global.cpp \ include($$PWD/../custom_widgets/custom_widgets_yacreader.pri) include($$PWD/../compressed_archive/wrapper.pri) diff --git a/YACReader/main.cpp b/YACReader/main.cpp index 70288c3f..ed5796c5 100644 --- a/YACReader/main.cpp +++ b/YACReader/main.cpp @@ -30,11 +30,13 @@ int main(int argc, char * argv[]) QApplication app(argc, argv); + app.setApplicationName("YACReader"); + app.setOrganizationName("YACReader"); + QTranslator translator; QString sufix = QLocale::system().name(); translator.load(QCoreApplication::applicationDirPath()+"/languages/yacreader_"+sufix); app.installTranslator(&translator); - app.setApplicationName("YACReader"); MainWindowViewer * mwv = new MainWindowViewer(); mwv->show(); diff --git a/YACReader/main_window_viewer.cpp b/YACReader/main_window_viewer.cpp index 930570f8..0cb06f31 100644 --- a/YACReader/main_window_viewer.cpp +++ b/YACReader/main_window_viewer.cpp @@ -16,6 +16,8 @@ #include "comic_db.h" #include "yacreader_local_client.h" +#include "yacreader_global.h" + #include #include #include @@ -105,7 +107,7 @@ MainWindowViewer::~MainWindowViewer() } void MainWindowViewer::loadConfiguration() { - settings = new QSettings(QCoreApplication::applicationDirPath()+"/YACReader.ini",QSettings::IniFormat); + settings = new QSettings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); Configuration & config = Configuration::getConfiguration(); config.load(settings); diff --git a/YACReader/options_dialog.cpp b/YACReader/options_dialog.cpp index 14aef7fc..83a2de20 100644 --- a/YACReader/options_dialog.cpp +++ b/YACReader/options_dialog.cpp @@ -242,7 +242,7 @@ void OptionsDialog::fitToWidthRatio(int value) void OptionsDialog::brightnessChanged(int value) { - QSettings settings(QCoreApplication::applicationDirPath()+"/YACReader.ini",QSettings::IniFormat); + QSettings settings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); settings.setValue(BRIGHTNESS,value); emit changedFilters(brightnessS->getValue(), contrastS->getValue(), gammaS->getValue()); //emit(changedImageOptions()); @@ -250,7 +250,7 @@ void OptionsDialog::brightnessChanged(int value) void OptionsDialog::contrastChanged(int value) { - QSettings settings(QCoreApplication::applicationDirPath()+"/YACReader.ini",QSettings::IniFormat); + QSettings settings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); settings.setValue(CONTRAST,value); emit changedFilters(brightnessS->getValue(), contrastS->getValue(), gammaS->getValue()); ///emit(changedImageOptions()); @@ -258,7 +258,7 @@ void OptionsDialog::contrastChanged(int value) void OptionsDialog::gammaChanged(int value) { - QSettings settings(QCoreApplication::applicationDirPath()+"/YACReader.ini",QSettings::IniFormat); + QSettings settings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); settings.setValue(GAMMA,value); emit changedFilters(brightnessS->getValue(), contrastS->getValue(), gammaS->getValue()); //emit(changedImageOptions()); @@ -269,7 +269,7 @@ void OptionsDialog::resetImageConfig() brightnessS->setValue(0); contrastS->setValue(100); gammaS->setValue(100); - QSettings settings(QCoreApplication::applicationDirPath()+"/YACReader.ini",QSettings::IniFormat); + QSettings settings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); settings.setValue(BRIGHTNESS,0); settings.setValue(CONTRAST,100); settings.setValue(GAMMA,100); @@ -280,7 +280,7 @@ void OptionsDialog::resetImageConfig() void OptionsDialog::show() { //TODO solucionar el tema de las settings, esto sólo debería aparecer en una única línea de código - QSettings *s = new QSettings(QCoreApplication::applicationDirPath()+"/YACReader.ini",QSettings::IniFormat); + QSettings *s = new QSettings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); fitToWidthRatioS->disconnect(); fitToWidthRatioS->setSliderPosition(settings->value(FIT_TO_WIDTH_RATIO).toFloat()*100); connect(fitToWidthRatioS,SIGNAL(valueChanged(int)),this,SLOT(fitToWidthRatio(int))); diff --git a/YACReader/render.cpp b/YACReader/render.cpp index eec84d3b..d6036001 100644 --- a/YACReader/render.cpp +++ b/YACReader/render.cpp @@ -242,7 +242,7 @@ QImage BrightnessFilter::setFilter(const QImage & image) return result;*/ if(level ==-1) { - QSettings settings(QCoreApplication::applicationDirPath()+"/YACReader.ini",QSettings::IniFormat); + QSettings settings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); return changeBrightness(image,settings.value(BRIGHTNESS,0).toInt()); } else @@ -320,7 +320,7 @@ QImage ContrastFilter::setFilter(const QImage & image) return result;*/ if(level ==-1) { - QSettings settings(QCoreApplication::applicationDirPath()+"/YACReader.ini",QSettings::IniFormat); + QSettings settings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); return changeContrast(image,settings.value(CONTRAST,100).toInt()); } else @@ -341,7 +341,7 @@ QImage GammaFilter::setFilter(const QImage & image) { if(level ==-1) { - QSettings settings(QCoreApplication::applicationDirPath()+"/YACReader.ini",QSettings::IniFormat); + QSettings settings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); return changeGamma(image,settings.value(GAMMA,100).toInt()); } else diff --git a/YACReader/viewer.cpp b/YACReader/viewer.cpp index a5026884..427c1588 100644 --- a/YACReader/viewer.cpp +++ b/YACReader/viewer.cpp @@ -61,7 +61,7 @@ shouldOpenPrevious(false) goToDialog = new GoToDialog(this); - QSettings * settings = new QSettings(QCoreApplication::applicationDirPath()+"/YACReader.ini",QSettings::IniFormat); + QSettings * settings = new QSettings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); //CONFIG GOTO_FLOW-------------------------------------------------------- if(QGLFormat::hasOpenGL() && !settings->contains(USE_OPEN_GL)) @@ -894,7 +894,7 @@ void Viewer::updateComic(ComicDB & comic) comic.info.bookmark3 = boomarksList[2]; //set filters //TODO: avoid use settings for this... - QSettings settings(QCoreApplication::applicationDirPath()+"/YACReader.ini",QSettings::IniFormat); + QSettings settings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); int brightness = settings.value(BRIGHTNESS,0).toInt(); int contrast = settings.value(CONTRAST,100).toInt(); int gamma = settings.value(GAMMA,100).toInt(); diff --git a/YACReaderLibrary/YACReaderLibrary.pro b/YACReaderLibrary/YACReaderLibrary.pro index 8eda42f7..10129b29 100644 --- a/YACReaderLibrary/YACReaderLibrary.pro +++ b/YACReaderLibrary/YACReaderLibrary.pro @@ -78,7 +78,8 @@ HEADERS += comic_flow.h \ yacreader_local_server.h \ yacreader_main_toolbar.h \ comics_remover.h \ - ../common/http_worker.h + ../common/http_worker.h \ + yacreader_libraries.h SOURCES += comic_flow.cpp \ create_library_dialog.cpp \ @@ -86,7 +87,7 @@ SOURCES += comic_flow.cpp \ library_window.cpp \ main.cpp \ add_library_dialog.cpp \ - rename_library_dialog.cpp \ + rename_library_dialog.cpp \ properties_dialog.cpp \ options_dialog.cpp \ export_library_dialog.cpp \ @@ -118,7 +119,9 @@ SOURCES += comic_flow.cpp \ yacreader_local_server.cpp \ yacreader_main_toolbar.cpp \ comics_remover.cpp \ - ../common/http_worker.cpp + ../common/http_worker.cpp \ +../common/yacreader_global.cpp \ + yacreader_libraries.cpp include(./server/server.pri) diff --git a/YACReaderLibrary/create_library_dialog.cpp b/YACReaderLibrary/create_library_dialog.cpp index 65ad21bb..a86ddbfb 100644 --- a/YACReaderLibrary/create_library_dialog.cpp +++ b/YACReaderLibrary/create_library_dialog.cpp @@ -75,7 +75,7 @@ void CreateLibraryDialog::setupUI() setWindowTitle(tr("Create new library")); } -void CreateLibraryDialog::show(const QMap & libs) +void CreateLibraryDialog::show(const YACReaderLibraries & libs) { libraries = libs; QDialog::show(); diff --git a/YACReaderLibrary/create_library_dialog.h b/YACReaderLibrary/create_library_dialog.h index e162cf1a..55cbcb90 100644 --- a/YACReaderLibrary/create_library_dialog.h +++ b/YACReaderLibrary/create_library_dialog.h @@ -1,6 +1,8 @@ #ifndef __CREATE_LIBRARY_DIALOG_H #define __CREATE_LIBRARY_DIALOG_H +#include "yacreader_libraries.h" + #include #include #include @@ -23,7 +25,7 @@ QPushButton * find; QPushButton * accept; QPushButton * cancel; - QMap libraries; + YACReaderLibraries libraries; void setupUI(); public slots: void create(); @@ -32,7 +34,7 @@ void setDataAndStart(QString name, QString paht); void nameSetted(const QString & text); void pathSetted(const QString & text); - void show(const QMap & libraries); + void show(const YACReaderLibraries &libraries); signals: void createLibrary(QString source, QString target, QString name); void cancelCreate(); diff --git a/YACReaderLibrary/db_helper.cpp b/YACReaderLibrary/db_helper.cpp index 15828dc1..04a3c424 100644 --- a/YACReaderLibrary/db_helper.cpp +++ b/YACReaderLibrary/db_helper.cpp @@ -16,54 +16,21 @@ #include "comic_db.h" #include "data_base_management.h" #include "folder.h" +#include "yacreader_libraries.h" #include "qnaturalsorting.h" //server -//TODO optimizar, evitar que se tenga que leer en cada petición el archivo -//conservar un QDateTime stático que compruebe si libraries.yacr ha sido modificado -//libraries debe ser una variable estática -static QDateTime lastModified; -static QMap libraries; - -QMap DBHelper::getLibraries() +YACReaderLibraries DBHelper::getLibraries() { - QFileInfo fi(QCoreApplication::applicationDirPath()+"/libraries.yacr"); - if(fi.lastModified() == lastModified) - return libraries; - - lastModified = fi.lastModified(); - libraries.clear(); - 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 - { - //sólo se agregan las bibliotecas realmente disponibles - QSqlDatabase db = DataBaseManagement::loadDatabase(line.trimmed()+"/.yacreaderlibrary"); - if(db.isValid()) - libraries.insert(name.trimmed(),line.trimmed()); - db.close(); - } - i++; - } - f.close(); + YACReaderLibraries libraries; + libraries.load(); return libraries; } QList DBHelper::getFolderContentFromLibrary(const QString & libraryName, qulonglong folderId) { - QString libraryPath = DBHelper::getLibraries().value(libraryName); + QString libraryPath = DBHelper::getLibraries().getPath(libraryName); QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary"); QList list = DBHelper::getFoldersFromParent(folderId,db,false); @@ -74,7 +41,7 @@ QList DBHelper::getFolderContentFromLibrary(const QString & libra } QList DBHelper::getFolderComicsFromLibrary(const QString & libraryName, qulonglong folderId) { - QString libraryPath = DBHelper::getLibraries().value(libraryName); + QString libraryPath = DBHelper::getLibraries().getPath(libraryName); QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary"); QList list = DBHelper::getComicsFromParent(folderId,db,false); @@ -85,7 +52,7 @@ QList DBHelper::getFolderComicsFromLibrary(const QString & librar } qulonglong DBHelper::getParentFromComicFolderId(const QString & libraryName, qulonglong id) { - QString libraryPath = DBHelper::getLibraries().value(libraryName); + QString libraryPath = DBHelper::getLibraries().getPath(libraryName); QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary"); Folder f = DBHelper::loadFolder(id,db); @@ -96,7 +63,7 @@ qulonglong DBHelper::getParentFromComicFolderId(const QString & libraryName, qul } ComicDB DBHelper::getComicInfo(const QString & libraryName, qulonglong id) { - QString libraryPath = DBHelper::getLibraries().value(libraryName); + QString libraryPath = DBHelper::getLibraries().getPath(libraryName); QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary"); ComicDB comic = DBHelper::loadComic(id,db); @@ -108,7 +75,7 @@ ComicDB DBHelper::getComicInfo(const QString & libraryName, qulonglong id) QList DBHelper::getSiblings(const QString & libraryName, qulonglong parentId) { - QString libraryPath = DBHelper::getLibraries().value(libraryName); + QString libraryPath = DBHelper::getLibraries().getPath(libraryName); QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary"); QList comics = DBHelper::getSortedComicsFromParent(parentId,db); @@ -119,7 +86,7 @@ QList DBHelper::getSiblings(const QString & libraryName, qulonglong par QString DBHelper::getFolderName(const QString & libraryName, qulonglong id) { - QString libraryPath = DBHelper::getLibraries().value(libraryName); + QString libraryPath = DBHelper::getLibraries().getPath(libraryName); QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary"); QString name=""; @@ -143,19 +110,13 @@ QString DBHelper::getFolderName(const QString & libraryName, qulonglong id) } QList DBHelper::getLibrariesNames() { - QStringList names = getLibraries().keys(); + QStringList names = getLibraries().getNames(); qSort(names.begin(),names.end(),naturalSortLessThanCI); return names; } QString DBHelper::getLibraryName(int id) { - QStringList names = getLibrariesNames(); - if(names.isEmpty()) - return ""; - if(id>=0 && id getLibraries(); + static YACReaderLibraries getLibraries(); static QList getFolderContentFromLibrary(const QString & libraryName, qulonglong folderId); static QList getFolderComicsFromLibrary(const QString & libraryName, qulonglong folderId); static qulonglong getParentFromComicFolderId(const QString & libraryName, qulonglong id); @@ -59,4 +60,4 @@ private: static void bindField(const QString & name, bool * field, QSqlQuery & query); }; -#endif \ No newline at end of file +#endif diff --git a/YACReaderLibrary/import_library_dialog.cpp b/YACReaderLibrary/import_library_dialog.cpp index bef61b1e..02e2e6d1 100644 --- a/YACReaderLibrary/import_library_dialog.cpp +++ b/YACReaderLibrary/import_library_dialog.cpp @@ -86,7 +86,7 @@ void ImportLibraryDialog::setupUI() setModal(true); setWindowTitle(tr("Extract a catalog")); } -void ImportLibraryDialog::show(const QMap & libs) +void ImportLibraryDialog::show(const YACReaderLibraries &libs) { libraries = libs; QDialog::show(); diff --git a/YACReaderLibrary/import_library_dialog.h b/YACReaderLibrary/import_library_dialog.h index b41b646c..d43efe1b 100644 --- a/YACReaderLibrary/import_library_dialog.h +++ b/YACReaderLibrary/import_library_dialog.h @@ -1,6 +1,6 @@ #ifndef IMPORT_LIBRARY_DIALOG_H #define IMPORT_LIBRARY_DIALOG_H - +#include "yacreader_libraries.h" #include #include @@ -29,14 +29,14 @@ void setupUI(); int progressCount; void closeEvent ( QCloseEvent * e ); - QMap libraries; + YACReaderLibraries libraries; public slots: void add(); void findPath(); void findDestination(); void close(); void nameEntered(); - void show(const QMap & libs); + void show(const YACReaderLibraries & libs); signals: void unpackCLC(QString clc,QString targetFolder, QString name); diff --git a/YACReaderLibrary/library_window.cpp b/YACReaderLibrary/library_window.cpp index 0d9eff44..722c1fb1 100644 --- a/YACReaderLibrary/library_window.cpp +++ b/YACReaderLibrary/library_window.cpp @@ -68,13 +68,14 @@ LibraryWindow::LibraryWindow() setupUI(); loadLibraries(); - if(libraries.size()==0) + if(libraries.isEmpty()) { showNoLibrariesWidget(); } else { showRootWidget(); + selectedLibrary->setCurrentIndex(0); } } @@ -87,7 +88,7 @@ void LibraryWindow::setupUI() libraryCreator = new LibraryCreator(); packageManager = new PackageManager(); - settings = new QSettings(QCoreApplication::applicationDirPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor + settings = new QSettings(YACReader::getSettingsPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor settings->beginGroup("libraryConfig"); createActions(); @@ -754,7 +755,7 @@ void LibraryWindow::createConnections() void LibraryWindow::loadLibrary(const QString & name) { - if(libraries.size()>0) //si hay bibliotecas... + if(!libraries.isEmpty()) //si hay bibliotecas... { currentFolderNavigation=0; backAction->setDisabled(true); @@ -763,7 +764,7 @@ void LibraryWindow::loadLibrary(const QString & name) history.append(QModelIndex()); showRootWidget(); - QString path=libraries.value(name)+"/.yacreaderlibrary"; + QString path=libraries.getPath(name)+"/.yacreaderlibrary"; QDir d; //TODO change this by static methods (utils class?? with delTree for example) QString dbVersion; if(d.exists(path) && d.exists(path+"/library.ydb") && (dbVersion = DataBaseManagement::checkValidDB(path+"/library.ydb")) != "") //si existe en disco la biblioteca seleccionada, y es válida.. @@ -804,7 +805,7 @@ void LibraryWindow::loadLibrary(const QString & name) else disableFoldersActions(true); - d.setCurrent(libraries.value(name)); + d.setCurrent(libraries.getPath(name)); d.setFilter(QDir::AllDirs | QDir::Files | QDir::Hidden | QDir::NoSymLinks | QDir::NoDotAndDotDot); if(d.count()<=1) //librería de sólo lectura { @@ -878,7 +879,7 @@ void LibraryWindow::loadLibrary(const QString & name) else { QString currentLibrary = selectedLibrary->currentText(); - QString path = libraries.value(selectedLibrary->currentText()); + QString path = libraries.getPath(selectedLibrary->currentText()); if(QMessageBox::question(this,tr("Old library"),tr("Library '%1' has been created with an older version of YACReaderLibrary. It must be created again. Do you want to create the library now?").arg(currentLibrary),QMessageBox::Yes,QMessageBox::No)==QMessageBox::Yes) { QDir d(path+"/.yacreaderlibrary"); @@ -1107,10 +1108,10 @@ void LibraryWindow::openLastCreated() selectedLibrary->disconnect(); selectedLibrary->setCurrentIndex(selectedLibrary->findText(_lastAdded)); - libraries.insert(_lastAdded,_sourceLastAdded); + libraries.addLibrary(_lastAdded,_sourceLastAdded); selectedLibrary->addItem(_lastAdded,_sourceLastAdded); selectedLibrary->setCurrentIndex(selectedLibrary->findText(_lastAdded)); - saveLibraries(); + libraries.save(); connect(selectedLibrary,SIGNAL(currentIndexChanged(QString)),this,SLOT(loadLibrary(QString))); @@ -1147,40 +1148,17 @@ void LibraryWindow::openLibrary(QString path, QString name) void LibraryWindow::loadLibraries() { - 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; - bool librariesAvailable = false; - foreach(line,lines) - { - if((i%2)==0) - { - name = line; - } - else - { - librariesAvailable = true; - libraries.insert(name.trimmed(),line.trimmed()); - selectedLibrary->addItem(name.trimmed(),line.trimmed()); - } - i++; - } - - if(!librariesAvailable) - { - disableAllActions(); - } - else - selectedLibrary->setCurrentIndex(0); + libraries.load(); + foreach(QString name,libraries.getNames()) + selectedLibrary->addItem(name,libraries.getPath(name)); } + void LibraryWindow::saveLibraries() { - QFile f(QCoreApplication::applicationDirPath()+"/libraries.yacr"); + + libraries.save(); + /*QFile f(QCoreApplication::applicationDirPath()+"/libraries.yacr"); if(!f.open(QIODevice::WriteOnly)) { QMessageBox::critical(NULL,tr("Saving libraries file...."),tr("There was a problem saving YACReaderLibrary libraries file. Please, check if you have enough permissions in the YACReader root folder.")); @@ -1193,7 +1171,7 @@ void LibraryWindow::saveLibraries() txtS << i.key() << "\n"; txtS << i.value() << "\n"; } - } + }*/ } void LibraryWindow::updateLibrary() @@ -1202,7 +1180,7 @@ void LibraryWindow::updateLibrary() showImportingWidget(); QString currentLibrary = selectedLibrary->currentText(); - QString path = libraries.value(currentLibrary); + QString path = libraries.getPath(currentLibrary); _lastAdded = currentLibrary; libraryCreator->updateLibrary(path,path+"/.yacreaderlibrary"); libraryCreator->start(); @@ -1210,7 +1188,7 @@ void LibraryWindow::updateLibrary() void LibraryWindow::deleteCurrentLibrary() { - QString path = libraries.value(selectedLibrary->currentText()); + QString path = libraries.getPath(selectedLibrary->currentText()); libraries.remove(selectedLibrary->currentText()); selectedLibrary->removeItem(selectedLibrary->currentIndex()); //selectedLibrary->setCurrentIndex(0); @@ -1219,13 +1197,13 @@ void LibraryWindow::deleteCurrentLibrary() QDir d(path); delTree(d); d.rmdir(path); - if(libraries.size()==0)//no more libraries avaliable. + if(libraries.isEmpty())//no more libraries avaliable. { comicView->setModel(NULL); foldersView->setModel(NULL); comicFlow->clear(); } - saveLibraries(); + libraries.save(); } void LibraryWindow::removeLibrary() @@ -1239,20 +1217,20 @@ void LibraryWindow::removeLibrary() libraries.remove(currentLibrary); selectedLibrary->removeItem(selectedLibrary->currentIndex()); //selectedLibrary->setCurrentIndex(0); - if(libraries.size()==0)//no more libraries avaliable. + if(libraries.isEmpty())//no more libraries avaliable. { comicView->setModel(NULL); foldersView->setModel(NULL); comicFlow->clear(); } - saveLibraries(); + libraries.save(); } else if(ret == QMessageBox::YesToAll) { deleteCurrentLibrary(); } - if(libraries.size()==0) + if(libraries.isEmpty()) { disableAllActions(); showNoLibrariesWidget(); @@ -1264,19 +1242,18 @@ void LibraryWindow::renameLibrary() renameLibraryDialog->show(); } -void LibraryWindow::rename(QString newName) +void LibraryWindow::rename(QString newName) //TODO replace { QString currentLibrary = selectedLibrary->currentText(); if(newName != currentLibrary) { if(!libraries.contains(newName)) { - QString path = libraries.value(currentLibrary); - libraries.remove(currentLibrary); + libraries.rename(currentLibrary,newName); //selectedLibrary->removeItem(selectedLibrary->currentIndex()); - libraries.insert(newName,path); + //libraries.addLibrary(newName,path); selectedLibrary->renameCurrentLibrary(newName); - saveLibraries(); + libraries.save(); renameLibraryDialog->close(); #ifndef Q_OS_MAC if(!foldersView->currentIndex().isValid()) @@ -1306,9 +1283,9 @@ void LibraryWindow::stopLibraryCreator() void LibraryWindow::setRootIndex() { - if(libraries.size()>0) + if(!libraries.isEmpty()) { - QString path=libraries.value(selectedLibrary->currentText())+"/.yacreaderlibrary"; + QString path=libraries.getPath(selectedLibrary->currentText())+"/.yacreaderlibrary"; QDir d; //TODO change this by static methods (utils class?? with delTree for example) if(d.exists(path)) { @@ -1498,7 +1475,7 @@ void LibraryWindow::openContainingFolder() void LibraryWindow::exportLibrary(QString destPath) { QString currentLibrary = selectedLibrary->currentText(); - QString path = libraries.value(currentLibrary)+"/.yacreaderlibrary"; + QString path = libraries.getPath(currentLibrary)+"/.yacreaderlibrary"; packageManager->createPackage(path,destPath+"/"+currentLibrary); } @@ -1517,7 +1494,7 @@ void LibraryWindow::reloadOptions() QString LibraryWindow::currentPath() { - return libraries.value(selectedLibrary->currentText()); + return libraries.getPath(selectedLibrary->currentText()); } void LibraryWindow::hideComicFlow(bool hide) diff --git a/YACReaderLibrary/library_window.h b/YACReaderLibrary/library_window.h index e0a418aa..19e3d69c 100644 --- a/YACReaderLibrary/library_window.h +++ b/YACReaderLibrary/library_window.h @@ -6,6 +6,7 @@ #include #include #include "yacreader_global.h" +#include class QTreeView; class QDirModel; @@ -97,7 +98,7 @@ private: TreeModel * dm; TableModel * dmCV; //QStringList paths; - QMap libraries; + YACReaderLibraries libraries; QLabel * fullScreenToolTip; QStackedWidget * mainWidget; diff --git a/YACReaderLibrary/main.cpp b/YACReaderLibrary/main.cpp index 4a7d9f78..d197a0a5 100644 --- a/YACReaderLibrary/main.cpp +++ b/YACReaderLibrary/main.cpp @@ -10,17 +10,12 @@ #include #include -#if QT_VERSION >= 0x050000 - #include -#else - #include -#endif - #include "yacreader_global.h" #include "startup.h" #include "yacreader_local_server.h" #include "comic_db.h" #include "db_helper.h" +#include "yacreader_libraries.h" #include "QsLog.h" #include "QsLogDest.h" @@ -110,7 +105,7 @@ void logSystemAndConfig() else QLOG_INFO() << "qrencode : not found"; - QSettings settings(QCoreApplication::applicationDirPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); + QSettings settings(YACReader::getSettingsPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); settings.beginGroup("libraryConfig"); if(settings.value(SERVER_ON).toBool()) QLOG_INFO() << "server : enabled"; @@ -122,7 +117,7 @@ void logSystemAndConfig() else QLOG_INFO() << "OpenGL : disabled"; - QLOG_INFO() << "Libraries: " << DBHelper::getLibraries(); + QLOG_INFO() << "Libraries: " << DBHelper::getLibraries().getLibraries(); QLOG_INFO() << "--------------------------------------------"; } @@ -133,16 +128,8 @@ int main( int argc, char ** argv ) app.setApplicationName("YACReaderLibrary"); app.setOrganizationName("YACReader"); -#if QT_VERSION >= 0x050000 - QString destLog = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation)+"/yacreaderlibrary.log"; - QString destErr = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation)+"/yacreaderlibrary.err"; - QDir().mkpath(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation)); - -#else - QString destLog = QDesktopServices::storageLocation(QDesktopServices::DataLocation)+"/yacreaderlibrary.log"; - QString destErr = QDesktopServices::storageLocation(QDesktopServices::DataLocation)+"/yacreaderlibrary.err"; - QDir().mkpath(QDesktopServices::storageLocation(QDesktopServices::DataLocation)); -#endif + QString destLog = YACReader::getSettingsPath()+"/yacreaderlibrary.log"; + QDir().mkpath(YACReader::getSettingsPath()); Logger& logger = Logger::instance(); logger.setLoggingLevel(QsLogging::TraceLevel); @@ -166,7 +153,7 @@ int main( int argc, char ** argv ) qRegisterMetaType("ComicDB"); #ifdef SERVER_RELEASE - QSettings * settings = new QSettings(QCoreApplication::applicationDirPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor + QSettings * settings = new QSettings(YACReader::getSettingsPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor settings->beginGroup("libraryConfig"); s = new Startup(); diff --git a/YACReaderLibrary/server/controllers/comiccontroller.cpp b/YACReaderLibrary/server/controllers/comiccontroller.cpp index 38d069c8..188e5d52 100644 --- a/YACReaderLibrary/server/controllers/comiccontroller.cpp +++ b/YACReaderLibrary/server/controllers/comiccontroller.cpp @@ -1,6 +1,7 @@ #include "comiccontroller.h" #include "db_helper.h" +#include "yacreader_libraries.h" #include "template.h" #include "../static.h" @@ -38,14 +39,14 @@ void ComicController::service(HttpRequest& request, HttpResponse& response) //que crear una clase que se encargue de estas cosas //¿Se está accediendo a la UI desde un hilo? - QMap libraries = DBHelper::getLibraries(); + YACReaderLibraries libraries = DBHelper::getLibraries(); ComicDB comic = DBHelper::getComicInfo(libraryName, comicId); session.setDownloadedComic(comic.info.hash); - Comic * comicFile = FactoryComic::newComic(libraries.value(libraryName)+comic.path); + Comic * comicFile = FactoryComic::newComic(libraries.getPath(libraryName)+comic.path); if(comicFile != NULL) { @@ -58,7 +59,7 @@ void ComicController::service(HttpRequest& request, HttpResponse& response) connect(thread, SIGNAL(started()), comicFile, SLOT(process())); connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater())); - comicFile->load(libraries.value(libraryName)+comic.path); + comicFile->load(libraries.getPath(libraryName)+comic.path); if(thread != NULL) thread->start(); @@ -78,4 +79,4 @@ void ComicController::service(HttpRequest& request, HttpResponse& response) } //response.write(t.toLatin1(),true); -} \ No newline at end of file +} diff --git a/YACReaderLibrary/server/controllers/covercontroller.cpp b/YACReaderLibrary/server/controllers/covercontroller.cpp index 2cd2f518..4614ce59 100644 --- a/YACReaderLibrary/server/controllers/covercontroller.cpp +++ b/YACReaderLibrary/server/controllers/covercontroller.cpp @@ -1,5 +1,6 @@ #include "covercontroller.h" #include "db_helper.h" //get libraries +#include "yacreader_libraries.h" #include "template.h" #include "../static.h" @@ -15,7 +16,7 @@ void CoverController::service(HttpRequest& request, HttpResponse& response) response.setHeader("Connection","close"); //response.setHeader("Content-Type", "plain/text; charset=ISO-8859-1"); - QMap libraries = DBHelper::getLibraries(); + YACReaderLibraries libraries = DBHelper::getLibraries(); QString path = QUrl::fromPercentEncoding(request.getPath()).toLatin1(); QStringList pathElements = path.split('/'); @@ -40,7 +41,7 @@ void CoverController::service(HttpRequest& request, HttpResponse& response) // file.close(); //} - QImage img(libraries.value(libraryName)+"/.yacreaderlibrary/covers/"+fileName); + QImage img(libraries.getPath(libraryName)+"/.yacreaderlibrary/covers/"+fileName); if (!img.isNull()) { int width = 80; diff --git a/YACReaderLibrary/server/controllers/librariescontroller.cpp b/YACReaderLibrary/server/controllers/librariescontroller.cpp index a61ae684..fc6472f0 100644 --- a/YACReaderLibrary/server/controllers/librariescontroller.cpp +++ b/YACReaderLibrary/server/controllers/librariescontroller.cpp @@ -1,5 +1,6 @@ #include "librariescontroller.h" #include "db_helper.h" //get libraries +#include "yacreader_libraries.h" #include "template.h" #include "../static.h" @@ -39,16 +40,20 @@ void LibrariesController::service(HttpRequest& request, HttpResponse& response) Template t=Static::templateLoader->getTemplate("libraries_"+session.getDeviceType(),request.getHeader("Accept-Language")); t.enableWarnings(); + YACReaderLibraries libraries = DBHelper::getLibraries(); QList names = DBHelper::getLibrariesNames(); t.loop("library",names.length()); - int i=0; - while (igetSession(request,response,false); if(!session.isNull() && session.contains("ySession")) { - if(library.indexIn(path)!=-1 && DBHelper::getLibraries().count() > library.cap(1).toInt() ) + if(library.indexIn(path)!=-1 && DBHelper::getLibraries().contains(library.cap(1).toInt()) ) { //listar el contenido del folder if(folder.exactMatch(path)) @@ -89,4 +90,4 @@ void RequestMapper::service(HttpRequest& request, HttpResponse& response) { } } -} \ No newline at end of file +} diff --git a/YACReaderLibrary/server_config_dialog.cpp b/YACReaderLibrary/server_config_dialog.cpp index aa77596e..a80891ab 100644 --- a/YACReaderLibrary/server_config_dialog.cpp +++ b/YACReaderLibrary/server_config_dialog.cpp @@ -166,7 +166,7 @@ ServerConfigDialog::ServerConfigDialog(QWidget * parent) this->setFixedSize(image.size()); - QSettings * settings = new QSettings(QCoreApplication::applicationDirPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor + QSettings * settings = new QSettings(YACReader::getSettingsPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor settings->beginGroup("libraryConfig"); if(settings->value(SERVER_ON,true).toBool()) @@ -184,7 +184,7 @@ ServerConfigDialog::ServerConfigDialog(QWidget * parent) void ServerConfigDialog::enableServer(int status) { - QSettings * settings = new QSettings(QCoreApplication::applicationDirPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor + QSettings * settings = new QSettings(YACReader::getSettingsPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor settings->beginGroup("libraryConfig"); if(status == Qt::Checked) @@ -313,7 +313,7 @@ void ServerConfigDialog::regenerateQR(const QString & ip) void ServerConfigDialog::updatePort() { - QSettings * settings = new QSettings(QCoreApplication::applicationDirPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor + QSettings * settings = new QSettings(YACReader::getSettingsPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor settings->beginGroup("listener"); settings->setValue("port",port->text().toInt()); settings->endGroup(); diff --git a/YACReaderLibrary/yacreader_libraries.cpp b/YACReaderLibrary/yacreader_libraries.cpp new file mode 100644 index 00000000..686c5f28 --- /dev/null +++ b/YACReaderLibrary/yacreader_libraries.cpp @@ -0,0 +1,147 @@ +#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 name, libraries.keys()) + newID = qMax(0,libraries.value(name).first); + newID++; + libraries.insert(name,QPair(newID,path)); +} + +void YACReaderLibraries::load() +{ + QSettings settings(YACReader::getSettingsPath()+"/YACReaderLibrary.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()+"/YACReaderLibrary.ini",QSettings::IniFormat); + + QByteArray data; + QDataStream out(&data, QIODevice::WriteOnly); + out << libraries; + settings.setValue(LIBRARIES, data); + + return settings.isWritable(); +} diff --git a/YACReaderLibrary/yacreader_libraries.h b/YACReaderLibrary/yacreader_libraries.h new file mode 100644 index 00000000..5cc32a82 --- /dev/null +++ b/YACReaderLibrary/yacreader_libraries.h @@ -0,0 +1,34 @@ +#ifndef YACREADER_LIBRARIES_H +#define YACREADER_LIBRARIES_H + +#include + +class YACReaderLibraries : public QObject +{ + Q_OBJECT + +public: + YACReaderLibraries(); + YACReaderLibraries(const YACReaderLibraries & source); + QList getNames(); + QString getPath(const QString & name); + QString getPath(int id); + QString getName(int id); + bool isEmpty(); + bool contains(const QString & name); + bool contains(int id); + void remove(const QString & name); + void rename(const QString & oldName, const QString & newName); + int getId(const QString & name); + YACReaderLibraries & operator=(const YACReaderLibraries & source); + QMap > getLibraries(); +public slots: + void addLibrary(const QString & name, const QString & path); + void load(); + bool save(); +private: + //name + QMap > libraries; +}; + +#endif // YACREADER_LIBRARIES_H diff --git a/common/yacreader_global.cpp b/common/yacreader_global.cpp new file mode 100644 index 00000000..e825a478 --- /dev/null +++ b/common/yacreader_global.cpp @@ -0,0 +1,13 @@ +#include "yacreader_global.h" + +using namespace YACReader; + +QString YACReader::getSettingsPath() +{ +#if QT_VERSION >= 0x050000 + return QStandardPaths::writableLocation(QStandardPaths::ConfigLocation); +#else + return QDesktopServices::storageLocation(QDesktopServices::DataLocation); +#endif + +} diff --git a/common/yacreader_global.h b/common/yacreader_global.h index 73b4673f..fd957b4d 100644 --- a/common/yacreader_global.h +++ b/common/yacreader_global.h @@ -1,6 +1,13 @@ #ifndef __YACREADER_GLOBAL_H #define __YACREADER_GLOBAL_H +#if QT_VERSION >= 0x050000 + #include +#else + #include +#endif + + #define VERSION "6.5.3" #define PATH "PATH" @@ -53,6 +60,8 @@ #define YACREADERLIBRARY_GUID "ea343ff3-2005-4865-b212-7fa7c43999b8" +#define LIBRARIES "LIBRARIES" + namespace YACReader { @@ -79,6 +88,8 @@ namespace YACReader Opened = 2 }; +QString getSettingsPath(); + } #endif