mirror of
https://github.com/YACReader/yacreader
synced 2025-05-28 03:10:27 -04:00
Added a new class for dealing with comics selection in comics views.
This commit is contained in:
parent
11f0ea61a7
commit
eaee7d78d9
127
YACReaderLibrary/yacreader_comics_selection_helper.cpp
Normal file
127
YACReaderLibrary/yacreader_comics_selection_helper.cpp
Normal file
@ -0,0 +1,127 @@
|
||||
#include "yacreader_comics_selection_helper.h"
|
||||
|
||||
#include "comic_model.h"
|
||||
|
||||
YACReaderComicsSelectionHelper::YACReaderComicsSelectionHelper(QObject *parent) : QObject(parent), _selectionModel(nullptr)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void YACReaderComicsSelectionHelper::setModel(ComicModel *model)
|
||||
{
|
||||
if(model == NULL)
|
||||
return;
|
||||
|
||||
this->model = model;
|
||||
|
||||
if(_selectionModel != nullptr)
|
||||
delete _selectionModel;
|
||||
|
||||
_selectionModel = new QItemSelectionModel(model);
|
||||
}
|
||||
|
||||
void YACReaderComicsSelectionHelper::selectIndex(int index)
|
||||
{
|
||||
if(_selectionModel != nullptr && model!=NULL)
|
||||
{
|
||||
_selectionModel->select(model->index(index,0),QItemSelectionModel::Select | QItemSelectionModel::Rows);
|
||||
|
||||
emit selectionChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void YACReaderComicsSelectionHelper::deselectIndex(int index)
|
||||
{
|
||||
if(_selectionModel != nullptr && model!=NULL)
|
||||
{
|
||||
_selectionModel->select(model->index(index,0),QItemSelectionModel::Deselect | QItemSelectionModel::Rows);
|
||||
|
||||
emit selectionChanged();
|
||||
}
|
||||
}
|
||||
|
||||
bool YACReaderComicsSelectionHelper::isSelectedIndex(int index) const
|
||||
{
|
||||
if(_selectionModel != nullptr && model!=NULL)
|
||||
{
|
||||
QModelIndex mi = model->index(index,0);
|
||||
return _selectionModel->isSelected(mi);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void YACReaderComicsSelectionHelper::clear()
|
||||
{
|
||||
if(_selectionModel != nullptr)
|
||||
{
|
||||
_selectionModel->clear();
|
||||
|
||||
emit selectionChanged();
|
||||
}
|
||||
}
|
||||
|
||||
QModelIndex YACReaderComicsSelectionHelper::currentIndex()
|
||||
{
|
||||
if(!_selectionModel)
|
||||
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();
|
||||
}
|
||||
|
||||
void YACReaderComicsSelectionHelper::selectAll()
|
||||
{
|
||||
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);
|
||||
|
||||
emit selectionChanged();
|
||||
}
|
||||
|
||||
QModelIndexList YACReaderComicsSelectionHelper::selectedRows(int column) const
|
||||
{
|
||||
return _selectionModel->selectedRows(column);
|
||||
}
|
||||
|
||||
QList<QModelIndex> YACReaderComicsSelectionHelper::selectedIndexes() const
|
||||
{
|
||||
return _selectionModel->selectedIndexes();
|
||||
}
|
||||
|
||||
int YACReaderComicsSelectionHelper::numItemsSelected() const
|
||||
{
|
||||
if(_selectionModel != nullptr)
|
||||
{
|
||||
return _selectionModel->selectedRows().length();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int YACReaderComicsSelectionHelper::lastSelectedIndex() const
|
||||
{
|
||||
if(_selectionModel != nullptr)
|
||||
{
|
||||
return _selectionModel->selectedRows().last().row();
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
QItemSelectionModel *YACReaderComicsSelectionHelper::selectionModel()
|
||||
{
|
||||
QModelIndexList indexes = _selectionModel->selectedRows();
|
||||
if(indexes.length()==0)
|
||||
this->selectIndex(0);
|
||||
|
||||
return _selectionModel;
|
||||
}
|
41
YACReaderLibrary/yacreader_comics_selection_helper.h
Normal file
41
YACReaderLibrary/yacreader_comics_selection_helper.h
Normal file
@ -0,0 +1,41 @@
|
||||
#ifndef YACREADERCOMICSSELECTIONHELPER_H
|
||||
#define YACREADERCOMICSSELECTIONHELPER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QtWidgets>
|
||||
|
||||
class ComicModel;
|
||||
|
||||
class YACReaderComicsSelectionHelper : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit YACReaderComicsSelectionHelper(QObject *parent = 0);
|
||||
|
||||
void setModel(ComicModel *model);
|
||||
|
||||
Q_INVOKABLE void selectIndex(int index);
|
||||
Q_INVOKABLE void deselectIndex(int index);
|
||||
Q_INVOKABLE bool isSelectedIndex(int index) const;
|
||||
Q_INVOKABLE void clear();
|
||||
Q_INVOKABLE int numItemsSelected() const;
|
||||
Q_INVOKABLE int lastSelectedIndex() const;
|
||||
Q_INVOKABLE QModelIndex currentIndex();
|
||||
Q_INVOKABLE void selectAll();
|
||||
Q_INVOKABLE QModelIndexList selectedIndexes() const;
|
||||
Q_INVOKABLE QModelIndexList selectedRows(int column = 0) const;
|
||||
|
||||
QItemSelectionModel * selectionModel();
|
||||
|
||||
signals:
|
||||
void selectionChanged();
|
||||
|
||||
public slots:
|
||||
|
||||
protected:
|
||||
QItemSelectionModel * _selectionModel;
|
||||
|
||||
ComicModel * model;
|
||||
};
|
||||
|
||||
#endif // YACREADERCOMICSSELECTIONHELPER_H
|
Loading…
Reference in New Issue
Block a user