better approach to avoid comic model problems after switching views

This commit is contained in:
Luis Ángel San Martín
2016-04-10 22:51:20 +02:00
parent ea4b9a69d4
commit 7ed4c27c01
3 changed files with 10 additions and 8 deletions

View File

@ -156,6 +156,8 @@ void GridComicsView::setToolBar(QToolBar *toolBar)
void GridComicsView::setModel(ComicModel *model)
{
BOOL setModel = model != this->model;
if(model == NULL)
return;
@ -168,8 +170,8 @@ void GridComicsView::setModel(ComicModel *model)
_selectionModel = new QItemSelectionModel(model);
//TODO fix crash in the following line on comics views switch
ctxt->setContextProperty("comicsList", model);
if(setModel)
ctxt->setContextProperty("comicsList", model);
ctxt->setContextProperty("comicsSelection", _selectionModel);
ctxt->setContextProperty("contextMenuHelper",this);
ctxt->setContextProperty("comicsSelectionHelper", this);

View File

@ -47,6 +47,8 @@ void InfoComicsView::setToolBar(QToolBar *toolBar)
void InfoComicsView::setModel(ComicModel *model)
{
BOOL setModel = model != this->model;
if(model == NULL)
return;
@ -62,7 +64,9 @@ void InfoComicsView::setModel(ComicModel *model)
//TODO fix crash in the following line on comics views switch
int row = currentIndex().row();
ctxt->setContextProperty("comicsList", model);
if(setModel)
ctxt->setContextProperty("comicsList", model);
ctxt->setContextProperty("backgroundImage", this->model->data(this->model->index(0, 0), ComicModel::CoverPathRole));
/*ctxt->setContextProperty("comicsSelection", _selectionModel);

View File

@ -404,7 +404,7 @@ void LibraryWindow::doModels()
foldersModelProxy = new FolderModelProxy();
//foldersModelProxy->setSourceModel(foldersModel);
//comics
comicsModel = new ComicModel();
comicsModel = new ComicModel(this);
//lists
listsModel = new ReadingListModel();
listsModelProxy = new ReadingListModelProxy();
@ -1265,12 +1265,8 @@ void LibraryWindow::loadLibrary(const QString & name)
}
}
#include "classic_comics_view.h"
void LibraryWindow::loadCoversFromCurrentModel()
{
//TODO this is a workaround for the crash in setModel, crash on views switching (QML)
if(typeid(*comicsViewsManager->comicsView) != typeid(ClassicComicsView))
comicsViewsManager->comicsView->setModel(new ComicModel());
comicsViewsManager->comicsView->setModel(comicsModel);
}