added ComicModel::mimeData

This commit is contained in:
Luis Ángel San Martín
2014-12-01 15:41:34 +01:00
parent 57cd8170e2
commit 6f9af74151
2 changed files with 24 additions and 19 deletions

View File

@ -21,22 +21,17 @@ ComicModel::ComicModel(QObject *parent)
connect(this,SIGNAL(reset()),this,SIGNAL(modelReset())); connect(this,SIGNAL(reset()),this,SIGNAL(modelReset()));
} }
//! [0]
ComicModel::ComicModel( QSqlQuery &sqlquery, QObject *parent) ComicModel::ComicModel( QSqlQuery &sqlquery, QObject *parent)
: QAbstractItemModel(parent) : QAbstractItemModel(parent)
{ {
setupModelData(sqlquery); setupModelData(sqlquery);
} }
//! [0]
//! [1]
ComicModel::~ComicModel() ComicModel::~ComicModel()
{ {
qDeleteAll(_data); qDeleteAll(_data);
} }
//! [1]
//! [2]
int ComicModel::columnCount(const QModelIndex &parent) const int ComicModel::columnCount(const QModelIndex &parent) const
{ {
Q_UNUSED(parent) Q_UNUSED(parent)
@ -44,7 +39,27 @@ int ComicModel::columnCount(const QModelIndex &parent) const
return 0; return 0;
return _data.first()->columnCount(); return _data.first()->columnCount();
} }
//! [2]
QMimeData *ComicModel::mimeData(const QModelIndexList &indexes) const
{
//custom model data
//application/yacreader-comics-ids + list of ids in a QByteArray
QList<qulonglong> ids;
foreach(QModelIndex index, indexes)
{
ids << index.data(IdRole).toULongLong();
}
QByteArray data;
QBuffer buffer(&data);
QDataStream out(&buffer);
out << ids; //serialize the list of identifiers
QMimeData * mimeData = new QMimeData();
mimeData->setData("application/yacreaderlibrary-comics-ids", data);
return mimeData;
}
QHash<int, QByteArray> ComicModel::roleNames() const { QHash<int, QByteArray> ComicModel::roleNames() const {
QHash<int, QByteArray> roles; QHash<int, QByteArray> roles;
@ -67,7 +82,6 @@ QHash<int, QByteArray> ComicModel::roleNames() const {
return roles; return roles;
} }
//! [3]
QVariant ComicModel::data(const QModelIndex &index, int role) const QVariant ComicModel::data(const QModelIndex &index, int role) const
{ {
if (!index.isValid()) if (!index.isValid())
@ -139,9 +153,7 @@ QVariant ComicModel::data(const QModelIndex &index, int role) const
return item->data(index.column()); return item->data(index.column());
} }
//! [3]
//! [4]
Qt::ItemFlags ComicModel::flags(const QModelIndex &index) const Qt::ItemFlags ComicModel::flags(const QModelIndex &index) const
{ {
if (!index.isValid()) if (!index.isValid())
@ -150,9 +162,7 @@ Qt::ItemFlags ComicModel::flags(const QModelIndex &index) const
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable; return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable;
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled; return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled;
} }
//! [4]
//! [5]
QVariant ComicModel::headerData(int section, Qt::Orientation orientation, QVariant ComicModel::headerData(int section, Qt::Orientation orientation,
int role) const int role) const
{ {
@ -226,9 +236,7 @@ QVariant ComicModel::headerData(int section, Qt::Orientation orientation,
return QVariant(); return QVariant();
} }
//! [5]
//! [6]
QModelIndex ComicModel::index(int row, int column, const QModelIndex &parent) QModelIndex ComicModel::index(int row, int column, const QModelIndex &parent)
const const
{ {
@ -237,17 +245,13 @@ QModelIndex ComicModel::index(int row, int column, const QModelIndex &parent)
return createIndex(row, column, _data.at(row)); return createIndex(row, column, _data.at(row));
} }
//! [6]
//! [7]
QModelIndex ComicModel::parent(const QModelIndex &index) const QModelIndex ComicModel::parent(const QModelIndex &index) const
{ {
Q_UNUSED(index) Q_UNUSED(index)
return QModelIndex(); return QModelIndex();
} }
//! [7]
//! [8]
int ComicModel::rowCount(const QModelIndex &parent) const int ComicModel::rowCount(const QModelIndex &parent) const
{ {
if (parent.column() > 0) if (parent.column() > 0)
@ -258,7 +262,6 @@ int ComicModel::rowCount(const QModelIndex &parent) const
return 0; return 0;
} }
//! [8]
QStringList ComicModel::getPaths(const QString & _source) QStringList ComicModel::getPaths(const QString & _source)
{ {

View File

@ -34,6 +34,8 @@ public:
QModelIndex parent(const QModelIndex &index) const; QModelIndex parent(const QModelIndex &index) const;
int rowCount(const QModelIndex &parent = QModelIndex()) const; int rowCount(const QModelIndex &parent = QModelIndex()) const;
int columnCount(const QModelIndex &parent = QModelIndex()) const; int columnCount(const QModelIndex &parent = QModelIndex()) const;
QMimeData * mimeData(const QModelIndexList &indexes) const;
void setupFolderModelData(unsigned long long int parentFolder,const QString & databasePath); void setupFolderModelData(unsigned long long int parentFolder,const QString & databasePath);
void setupLabelModelData(unsigned long long int parentLabel, const QString & databasePath); void setupLabelModelData(unsigned long long int parentLabel, const QString & databasePath);
void setupReadingListModelData(unsigned long long int parentReadingList, const QString & databasePath); void setupReadingListModelData(unsigned long long int parentReadingList, const QString & databasePath);