diff --git a/src/contentmanager.cpp b/src/contentmanager.cpp index e4f22ee..e95702e 100644 --- a/src/contentmanager.cpp +++ b/src/contentmanager.cpp @@ -200,7 +200,7 @@ QString ContentManager::downloadBook(const QString &id) void ContentManager::eraseBookFilesFromComputer(const QString fileToRemove) { - QString dirName = QString::fromUtf8(getDataDirectory().c_str()); + QString dirName = KiwixApp::instance()->getLibraryDirectory(); QDir dir(dirName, fileToRemove); for(const QString& filename: dir.entryList()) { dir.remove(filename); diff --git a/src/kiwixapp.cpp b/src/kiwixapp.cpp index 45bbc53..8d9183f 100644 --- a/src/kiwixapp.cpp +++ b/src/kiwixapp.cpp @@ -27,6 +27,7 @@ kiwix::Downloader* createDownloader() { KiwixApp::KiwixApp(int& argc, char *argv[]) : QApplication(argc, argv), + m_libraryDirectory(findLibraryDirectory()), m_library(), mp_downloader(createDownloader()), m_manager(&m_library, mp_downloader) @@ -109,6 +110,17 @@ KiwixApp::~KiwixApp() delete mp_mainWindow; } +QString KiwixApp::findLibraryDirectory() +{ + QString currentPathLibrary = QString::fromStdString(appendToDirectory(removeLastPathElement(getExecutablePath()),"library.xml")); + QFileInfo libraryFile(currentPathLibrary); + + if (libraryFile.exists()) + return QString::fromStdString(removeLastPathElement(getExecutablePath())); + else + return QString::fromStdString(getDataDirectory()); +} + KiwixApp *KiwixApp::instance() { return static_cast(QApplication::instance()); diff --git a/src/kiwixapp.h b/src/kiwixapp.h index 7723d32..8977764 100644 --- a/src/kiwixapp.h +++ b/src/kiwixapp.h @@ -71,6 +71,7 @@ public: kiwix::Downloader* getDownloader() { return mp_downloader; } TabBar* getTabWidget() { return mp_tabWidget; } QAction* getAction(Actions action); + QString getLibraryDirectory() { return m_libraryDirectory; }; bool isCurrentArticleBookmarked(); @@ -93,6 +94,7 @@ protected: private: QTranslator m_qtTranslator, m_appTranslator; UrlSchemeHandler m_schemeHandler; + QString m_libraryDirectory; Library m_library; kiwix::Downloader* mp_downloader; ContentManager m_manager; @@ -102,6 +104,8 @@ private: QErrorMessage* mp_errorDialog; QAction* mpa_actions[MAX_ACTION]; + + QString findLibraryDirectory(); }; #endif // KIWIXAPP_H diff --git a/src/library.cpp b/src/library.cpp index 9c0e989..f583c35 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -1,5 +1,5 @@ #include "library.h" - +#include "kiwixapp.h" #include @@ -25,9 +25,10 @@ Library::Library() { auto manipulator = LibraryManipulator(this); auto manager = kiwix::Manager(&manipulator); - qInfo() << QString::fromStdString(getDataDirectory()); - manager.readFile(appendToDirectory(getDataDirectory(),"library.xml"), false); - manager.readBookmarkFile(appendToDirectory(getDataDirectory(),"library.bookmarks.xml")); + m_libraryDirectory = KiwixApp::instance()->getLibraryDirectory(); + qInfo() << m_libraryDirectory; + manager.readFile(appendToDirectory(m_libraryDirectory.toStdString(),"library.xml"), false); + manager.readBookmarkFile(appendToDirectory(m_libraryDirectory.toStdString(),"library.bookmarks.xml")); qInfo() << getBookIds().length(); emit(booksChanged()); } @@ -131,8 +132,8 @@ void Library::removeBookmark(const QString &zimId, const QString &url) void Library::save() { - m_library.writeToFile(appendToDirectory(getDataDirectory(),"library.xml")); - m_library.writeBookmarksToFile(appendToDirectory(getDataDirectory(), "library.bookmarks.xml")); + m_library.writeToFile(appendToDirectory(m_libraryDirectory.toStdString(),"library.xml")); + m_library.writeBookmarksToFile(appendToDirectory(m_libraryDirectory.toStdString(), "library.bookmarks.xml")); } kiwix::Book &Library::getBookById(QString id) diff --git a/src/library.h b/src/library.h index b6705bb..1fbc911 100644 --- a/src/library.h +++ b/src/library.h @@ -47,6 +47,7 @@ signals: private: kiwix::Library m_library; QMap> m_readersMap; + QString m_libraryDirectory; friend class LibraryManipulator; };