mirror of
https://github.com/YACReader/yacreader
synced 2025-07-17 20:44:32 -04:00
Implemented selection model in info comics view, so toolbar actions become usable.
This commit is contained in:
@ -8,7 +8,7 @@
|
||||
#include "QsLog.h"
|
||||
|
||||
InfoComicsView::InfoComicsView(QWidget *parent)
|
||||
:ComicsView(parent)
|
||||
:ComicsView(parent),_selectionModel(nullptr)
|
||||
{
|
||||
qmlRegisterType<ComicModel>("com.yacreader.ComicModel",1,0,"ComicModel");
|
||||
qmlRegisterType<ComicDB>("com.yacreader.ComicDB",1,0,"ComicDB");
|
||||
@ -27,6 +27,7 @@ InfoComicsView::InfoComicsView(QWidget *parent)
|
||||
list = rootObject->findChild<QObject*>("list");
|
||||
|
||||
connect(flow, SIGNAL(currentCoverChanged(int)), this, SLOT(updateInfoForIndex(int)));
|
||||
connect(flow, SIGNAL(currentCoverChanged(int)), this, SLOT(setCurrentIndex(int)));
|
||||
|
||||
QVBoxLayout * l = new QVBoxLayout;
|
||||
l->addWidget(container);
|
||||
@ -57,6 +58,11 @@ void InfoComicsView::setModel(ComicModel *model)
|
||||
if(model == NULL)
|
||||
return;
|
||||
|
||||
if(_selectionModel != nullptr)
|
||||
delete _selectionModel;
|
||||
|
||||
_selectionModel = new QItemSelectionModel(model);
|
||||
|
||||
ComicsView::setModel(model);
|
||||
|
||||
QQmlContext *ctxt = view->rootContext();
|
||||
@ -72,8 +78,8 @@ void InfoComicsView::setModel(ComicModel *model)
|
||||
else
|
||||
ctxt->setContextProperty("backgroundImage", QUrl());
|
||||
|
||||
/*ctxt->setContextProperty("comicsSelection", _selectionModel);
|
||||
ctxt->setContextProperty("contextMenuHelper",this);
|
||||
ctxt->setContextProperty("comicsSelection", _selectionModel);
|
||||
/*ctxt->setContextProperty("contextMenuHelper",this);
|
||||
ctxt->setContextProperty("comicsSelectionHelper", this);
|
||||
ctxt->setContextProperty("comicRatingHelper", this);
|
||||
ctxt->setContextProperty("dummyValue", true);
|
||||
@ -92,20 +98,41 @@ void InfoComicsView::setModel(ComicModel *model)
|
||||
void InfoComicsView::setCurrentIndex(const QModelIndex &index)
|
||||
{
|
||||
QQmlProperty(list, "currentIndex").write(index.row());
|
||||
|
||||
_selectionModel->clear();
|
||||
_selectionModel->select(index, QItemSelectionModel::Select | QItemSelectionModel::Rows);
|
||||
}
|
||||
|
||||
void InfoComicsView::setCurrentIndex(int index)
|
||||
{
|
||||
_selectionModel->clear();
|
||||
_selectionModel->select(model->index(index,0), QItemSelectionModel::Select | QItemSelectionModel::Rows);
|
||||
}
|
||||
|
||||
QModelIndex InfoComicsView::currentIndex()
|
||||
{
|
||||
int FIXME;
|
||||
if(!_selectionModel)
|
||||
return QModelIndex();
|
||||
|
||||
return QModelIndex();
|
||||
QModelIndexList indexes = _selectionModel->selectedRows();
|
||||
if(indexes.length()>0)
|
||||
return indexes[0];
|
||||
|
||||
this->selectIndex(0);
|
||||
indexes = _selectionModel->selectedRows();
|
||||
if(indexes.length()>0)
|
||||
return indexes[0];
|
||||
else
|
||||
return QModelIndex();
|
||||
}
|
||||
|
||||
QItemSelectionModel *InfoComicsView::selectionModel()
|
||||
{
|
||||
int FIXME;
|
||||
QModelIndexList indexes = _selectionModel->selectedRows();
|
||||
if(indexes.length()==0)
|
||||
this->selectIndex(0);
|
||||
|
||||
return 0;
|
||||
return _selectionModel;
|
||||
}
|
||||
|
||||
void InfoComicsView::scrollTo(const QModelIndex &mi, QAbstractItemView::ScrollHint hint)
|
||||
@ -136,7 +163,10 @@ void InfoComicsView::enableFilterMode(bool enabled)
|
||||
|
||||
void InfoComicsView::selectIndex(int index)
|
||||
{
|
||||
int FIXME;
|
||||
if(_selectionModel != nullptr && model!=NULL)
|
||||
{
|
||||
_selectionModel->select(model->index(index,0),QItemSelectionModel::Select | QItemSelectionModel::Rows);
|
||||
}
|
||||
}
|
||||
|
||||
void InfoComicsView::setShowMarks(bool show)
|
||||
@ -147,5 +177,8 @@ void InfoComicsView::setShowMarks(bool show)
|
||||
|
||||
void InfoComicsView::selectAll()
|
||||
{
|
||||
int FIXME;
|
||||
QModelIndex top = model->index(0, 0);
|
||||
QModelIndex bottom = model->index(model->rowCount()-1, 0);
|
||||
QItemSelection selection(top, bottom);
|
||||
_selectionModel->select(selection, QItemSelectionModel::Select | QItemSelectionModel::Rows);
|
||||
}
|
||||
|
@ -31,10 +31,15 @@ public slots:
|
||||
void setShowMarks(bool show);
|
||||
void selectAll();
|
||||
|
||||
protected slots:
|
||||
void setCurrentIndex(int index);
|
||||
|
||||
protected:
|
||||
QToolBar * toolbar;
|
||||
QObject *flow;
|
||||
QObject *list;
|
||||
|
||||
QItemSelectionModel * _selectionModel;
|
||||
};
|
||||
|
||||
#endif // INFOCOMICSVIEW_H
|
||||
|
Reference in New Issue
Block a user