diff --git a/YACReaderLibrary/db/comic_model.cpp b/YACReaderLibrary/db/comic_model.cpp index 53f0c5e5..548f0056 100644 --- a/YACReaderLibrary/db/comic_model.cpp +++ b/YACReaderLibrary/db/comic_model.cpp @@ -797,6 +797,24 @@ void ComicModel::resetComicRating(const QModelIndex &mi) QSqlDatabase::removeDatabase(_databasePath); } +void ComicModel::addComicsToFavorites(const QList & comicsList) +{ + QList comics = getComics(comicsList); + + DBHelper::insertComicsInFavorites(comics, QSqlDatabase()); + + QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath); + + db.transaction(); + + DBHelper::insertComicsInFavorites(comics,db); + + db.commit(); + + db.close(); + QSqlDatabase::removeDatabase(_databasePath); +} + void ComicModel::updateRating(int rating, QModelIndex mi) { diff --git a/YACReaderLibrary/db/comic_model.h b/YACReaderLibrary/db/comic_model.h index 7f6c9a03..1c13775a 100644 --- a/YACReaderLibrary/db/comic_model.h +++ b/YACReaderLibrary/db/comic_model.h @@ -62,6 +62,7 @@ public: void removeInTransaction(int row); void reload(const ComicDB & comic); void resetComicRating(const QModelIndex & mi); + void addComicsToFavorites(const QList &comicsList); QHash roleNames() const; diff --git a/YACReaderLibrary/db/data_base_management.cpp b/YACReaderLibrary/db/data_base_management.cpp index f74b1ee4..f5eb32df 100644 --- a/YACReaderLibrary/db/data_base_management.cpp +++ b/YACReaderLibrary/db/data_base_management.cpp @@ -279,7 +279,8 @@ bool DataBaseManagement::createV8Tables(QSqlDatabase &database) "default_reading_list_id INTEGER, " //"order INTEGER, " //order???? "FOREIGN KEY(default_reading_list_id) REFERENCES default_reading_list(id) ON DELETE CASCADE, " - "FOREIGN KEY(comic_id) REFERENCES comic(id) ON DELETE CASCADE)"); + "FOREIGN KEY(comic_id) REFERENCES comic(id) ON DELETE CASCADE," + "PRIMARY KEY(default_reading_list_id, comic_id))"); success = success && queryComicDefaultReadingList.exec(); //INSERT DEFAULT READING LISTS diff --git a/YACReaderLibrary/db_helper.cpp b/YACReaderLibrary/db_helper.cpp index a3a390a6..c631d607 100644 --- a/YACReaderLibrary/db_helper.cpp +++ b/YACReaderLibrary/db_helper.cpp @@ -415,6 +415,25 @@ qulonglong DBHelper::insertReadingList(const QString &name, QSqlDatabase &db) query.exec(); return query.lastInsertId().toULongLong(); } + +void DBHelper::insertComicsInFavorites(const QList &comicsList, QSqlDatabase &db) +{ + /*QSqlQuery getNumComicsInFavoritesQuery("SELECT count(*) from comic_reading_list;",db); + getNumComicsInFavoritesQuery.next(); + QSqlRecord record = getNumComicsInFavoritesQuery.record(); + int numComics = record.value(0).toInt();*/ + + QSqlQuery query(db); + query.prepare("INSERT INTO comic_default_reading_list (default_reading_list_id, comic_id) " + "VALUES (1, :comic_id)"); + + foreach(ComicDB comic, comicsList) + { + query.bindValue(":comic_id", comic.id); + //query.bindValue(":order", numComics++); + query.exec(); + } +} //queries QList DBHelper::getFoldersFromParent(qulonglong parentId, QSqlDatabase & db, bool sort) { diff --git a/YACReaderLibrary/db_helper.h b/YACReaderLibrary/db_helper.h index 59daa28f..c6be4d2e 100644 --- a/YACReaderLibrary/db_helper.h +++ b/YACReaderLibrary/db_helper.h @@ -41,6 +41,7 @@ public: static qulonglong insert(ComicDB * comic, QSqlDatabase & db); static qulonglong insertLabel(const QString & name, YACReader::LabelColors color , QSqlDatabase & db); static qulonglong insertReadingList(const QString & name, QSqlDatabase & db); + static void insertComicsInFavorites(const QList & comicsList, QSqlDatabase & db); //updates static void update(qulonglong libraryId, ComicInfo & comicInfo); static void update(ComicDB * comics, QSqlDatabase & db); diff --git a/YACReaderLibrary/library_window.cpp b/YACReaderLibrary/library_window.cpp index 5c8887a0..df3ed670 100644 --- a/YACReaderLibrary/library_window.cpp +++ b/YACReaderLibrary/library_window.cpp @@ -81,6 +81,7 @@ #include "add_label_dialog.h" #include "yacreader_history_controller.h" +#include "db_helper.h" #include "QsLog.h" @@ -1203,6 +1204,10 @@ void LibraryWindow::createConnections() connect(deleteReadingListAction,SIGNAL(triggered()),this,SLOT(deleteSelectedReadingList())); connect(addLabelAction,SIGNAL(triggered()),this,SLOT(showAddNewLabelDialog())); connect(renameListAction,SIGNAL(triggered()),this,SLOT(showRenameCurrentList())); + + //-- + + connect(addToFavoritesAction,SIGNAL(triggered()),this,SLOT(addSelectedComicsToFavorites())); } void LibraryWindow::loadLibrary(const QString & name) @@ -1681,6 +1686,12 @@ void LibraryWindow::showRenameCurrentList() } +void LibraryWindow::addSelectedComicsToFavorites() +{ + QModelIndexList indexList = getSelectedComics(); + comicsModel->addComicsToFavorites(indexList); +} + void LibraryWindow::selectSubfolder(const QModelIndex &mi, int child) { QModelIndex dest = foldersModel->index(child,0,mi); diff --git a/YACReaderLibrary/library_window.h b/YACReaderLibrary/library_window.h index 3f605397..488a4d04 100644 --- a/YACReaderLibrary/library_window.h +++ b/YACReaderLibrary/library_window.h @@ -390,6 +390,7 @@ public slots: void deleteSelectedReadingList(); void showAddNewLabelDialog(); void showRenameCurrentList(); + void addSelectedComicsToFavorites(); };