models renaming

This commit is contained in:
Luis Ángel San Martín
2014-10-28 16:49:39 +01:00
parent 0ecae3b44a
commit 6e4506461e
25 changed files with 441 additions and 399 deletions

View File

@ -0,0 +1,47 @@
#include <QStringList>
#include "comic_item.h"
//! [0]
ComicItem::ComicItem(const QList<QVariant> &data)
{
itemData = data;
}
//! [0]
//! [1]
ComicItem::~ComicItem()
{
}
//! [1]
//! [5]
int ComicItem::columnCount() const
{
return itemData.count();
}
//! [5]
//! [6]
QVariant ComicItem::data(int column) const
{
return itemData.value(column);
}
//! [6]
void ComicItem::setData(int column,const QVariant & value)
{
itemData[column] = value;
}
//! [8]
int ComicItem::row() const
{
return 0;
}
//! [8]

View File

@ -5,12 +5,12 @@
#include <QVariant>
//! [0]
class TableItem : public QObject
class ComicItem : public QObject
{
Q_OBJECT
public:
TableItem(const QList<QVariant> &data);
~TableItem();
ComicItem(const QList<QVariant> &data);
~ComicItem();
int columnCount() const;
QVariant data(int column) const;
void setData(int column,const QVariant & value);
@ -24,4 +24,4 @@ private:
};
//! [0]
#endif
#endif

View File

@ -3,8 +3,8 @@
#include <QtDebug>
#include <limits>
#include "tableitem.h"
#include "tablemodel.h"
#include "comic_item.h"
#include "comic_model.h"
#include "data_base_management.h"
#include "qnaturalsorting.h"
#include "comic_db.h"
@ -14,7 +14,7 @@
#include "QsLog.h"
TableModel::TableModel(QObject *parent)
ComicModel::ComicModel(QObject *parent)
: QAbstractItemModel(parent)
{
connect(this,SIGNAL(beforeReset()),this,SIGNAL(modelAboutToBeReset()));
@ -22,7 +22,7 @@ TableModel::TableModel(QObject *parent)
}
//! [0]
TableModel::TableModel( QSqlQuery &sqlquery, QObject *parent)
ComicModel::ComicModel( QSqlQuery &sqlquery, QObject *parent)
: QAbstractItemModel(parent)
{
setupModelData(sqlquery);
@ -30,14 +30,14 @@ TableModel::TableModel( QSqlQuery &sqlquery, QObject *parent)
//! [0]
//! [1]
TableModel::~TableModel()
ComicModel::~ComicModel()
{
qDeleteAll(_data);
}
//! [1]
//! [2]
int TableModel::columnCount(const QModelIndex &parent) const
int ComicModel::columnCount(const QModelIndex &parent) const
{
Q_UNUSED(parent)
if(_data.isEmpty())
@ -46,7 +46,7 @@ int TableModel::columnCount(const QModelIndex &parent) const
}
//! [2]
QHash<int, QByteArray> TableModel::roleNames() const {
QHash<int, QByteArray> ComicModel::roleNames() const {
QHash<int, QByteArray> roles;
roles[NumberRole] = "number";
@ -68,7 +68,7 @@ QHash<int, QByteArray> TableModel::roleNames() const {
}
//! [3]
QVariant TableModel::data(const QModelIndex &index, int role) const
QVariant ComicModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
@ -88,13 +88,13 @@ QVariant TableModel::data(const QModelIndex &index, int role) const
{
switch(index.column())//TODO obtener esto de la query
{
case TableModel::Number:
case ComicModel::Number:
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
case TableModel::NumPages:
case ComicModel::NumPages:
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
case TableModel::Hash:
case ComicModel::Hash:
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
case TableModel::CurrentPage:
case ComicModel::CurrentPage:
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
default:
return QVariant(Qt::AlignLeft | Qt::AlignVCenter);
@ -105,7 +105,7 @@ QVariant TableModel::data(const QModelIndex &index, int role) const
//TODO check here if any view is asking for TableModel::Roles
//these roles will be used from QML/GridView
TableItem *item = static_cast<TableItem*>(index.internalPointer());
ComicItem *item = static_cast<ComicItem*>(index.internalPointer());
if (role == NumberRole)
return item->data(Number);
@ -122,19 +122,19 @@ QVariant TableModel::data(const QModelIndex &index, int role) const
else if (role == ReadColumnRole)
return item->data(ReadColumn).toBool();
else if (role == HasBeenOpenedRole)
return item->data(TableModel::HasBeenOpened);
return item->data(ComicModel::HasBeenOpened);
if (role != Qt::DisplayRole)
return QVariant();
if(index.column() == TableModel::Hash)
if(index.column() == ComicModel::Hash)
return QString::number(item->data(index.column()).toString().right(item->data(index.column()).toString().length()-40).toInt()/1024.0/1024.0,'f',2)+"Mb";
if(index.column() == TableModel::ReadColumn)
return (item->data(TableModel::CurrentPage).toInt()==item->data(TableModel::NumPages).toInt() || item->data(TableModel::ReadColumn).toBool())?QVariant(tr("yes")):QVariant(tr("no"));
if(index.column() == TableModel::CurrentPage)
return item->data(TableModel::HasBeenOpened).toBool()?item->data(index.column()):QVariant("-");
if(index.column() == ComicModel::ReadColumn)
return (item->data(ComicModel::CurrentPage).toInt()==item->data(ComicModel::NumPages).toInt() || item->data(ComicModel::ReadColumn).toBool())?QVariant(tr("yes")):QVariant(tr("no"));
if(index.column() == ComicModel::CurrentPage)
return item->data(ComicModel::HasBeenOpened).toBool()?item->data(index.column()):QVariant("-");
if (index.column() == TableModel::Rating)
if (index.column() == ComicModel::Rating)
return QVariant();
return item->data(index.column());
@ -142,39 +142,39 @@ QVariant TableModel::data(const QModelIndex &index, int role) const
//! [3]
//! [4]
Qt::ItemFlags TableModel::flags(const QModelIndex &index) const
Qt::ItemFlags ComicModel::flags(const QModelIndex &index) const
{
if (!index.isValid())
return 0;
if(index.column() == TableModel::Rating)
if(index.column() == ComicModel::Rating)
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable;
return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
}
//! [4]
//! [5]
QVariant TableModel::headerData(int section, Qt::Orientation orientation,
QVariant ComicModel::headerData(int section, Qt::Orientation orientation,
int role) const
{
if (orientation == Qt::Horizontal && role == Qt::DisplayRole)
{
switch(section)//TODO obtener esto de la query
{
case TableModel::Number:
case ComicModel::Number:
return QVariant(QString("#"));
case TableModel::Title:
case ComicModel::Title:
return QVariant(QString(tr("Title")));
case TableModel::FileName:
case ComicModel::FileName:
return QVariant(QString(tr("File Name")));
case TableModel::NumPages:
case ComicModel::NumPages:
return QVariant(QString(tr("Pages")));
case TableModel::Hash:
case ComicModel::Hash:
return QVariant(QString(tr("Size")));
case TableModel::ReadColumn:
case ComicModel::ReadColumn:
return QVariant(QString(tr("Read")));
case TableModel::CurrentPage:
case ComicModel::CurrentPage:
return QVariant(QString(tr("Current Page")));
case TableModel::Rating:
case ComicModel::Rating:
return QVariant(QString(tr("Rating")));
}
}
@ -183,13 +183,13 @@ QVariant TableModel::headerData(int section, Qt::Orientation orientation,
{
switch(section)//TODO obtener esto de la query
{
case TableModel::Number:
case ComicModel::Number:
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
case TableModel::NumPages:
case ComicModel::NumPages:
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
case TableModel::Hash:
case ComicModel::Hash:
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
case TableModel::CurrentPage:
case ComicModel::CurrentPage:
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
default:
return QVariant(Qt::AlignLeft | Qt::AlignVCenter);
@ -199,7 +199,7 @@ QVariant TableModel::headerData(int section, Qt::Orientation orientation,
if(orientation == Qt::Vertical && role == Qt::DecorationRole)
{
QString fileName = _data.value(section)->data(TableModel::FileName).toString();
QString fileName = _data.value(section)->data(ComicModel::FileName).toString();
QFileInfo fi(fileName);
QString ext = fi.suffix();
@ -229,7 +229,7 @@ QVariant TableModel::headerData(int section, Qt::Orientation orientation,
//! [5]
//! [6]
QModelIndex TableModel::index(int row, int column, const QModelIndex &parent)
QModelIndex ComicModel::index(int row, int column, const QModelIndex &parent)
const
{
if (!hasIndex(row, column, parent))
@ -240,7 +240,7 @@ QModelIndex TableModel::index(int row, int column, const QModelIndex &parent)
//! [6]
//! [7]
QModelIndex TableModel::parent(const QModelIndex &index) const
QModelIndex ComicModel::parent(const QModelIndex &index) const
{
Q_UNUSED(index)
return QModelIndex();
@ -248,7 +248,7 @@ QModelIndex TableModel::parent(const QModelIndex &index) const
//! [7]
//! [8]
int TableModel::rowCount(const QModelIndex &parent) const
int ComicModel::rowCount(const QModelIndex &parent) const
{
if (parent.column() > 0)
return 0;
@ -260,21 +260,21 @@ int TableModel::rowCount(const QModelIndex &parent) const
}
//! [8]
QStringList TableModel::getPaths(const QString & _source)
QStringList ComicModel::getPaths(const QString & _source)
{
QStringList paths;
QString source = _source + "/.yacreaderlibrary/covers/";
QList<TableItem *>::ConstIterator itr;
QList<ComicItem *>::ConstIterator itr;
for(itr = _data.constBegin();itr != _data.constEnd();itr++)
{
QString hash = (*itr)->data(TableModel::Hash).toString();
QString hash = (*itr)->data(ComicModel::Hash).toString();
paths << source+ hash +".jpg";
}
return paths;
}
void TableModel::setupModelData(unsigned long long int folderId,const QString & databasePath)
void ComicModel::setupModelData(unsigned long long int folderId,const QString & databasePath)
{
//QFile f(QCoreApplication::applicationDirPath()+"/performance.txt");
//f.open(QIODevice::Append);
@ -309,7 +309,7 @@ void TableModel::setupModelData(unsigned long long int folderId,const QString &
emit isEmpty();
}
void TableModel::setupModelData(const SearchModifiers modifier, const QString &filter, const QString &databasePath)
void ComicModel::setupModelData(const SearchModifiers modifier, const QString &filter, const QString &databasePath)
{
//QFile f(QCoreApplication::applicationDirPath()+"/performance.txt");
//f.open(QIODevice::Append);
@ -376,16 +376,16 @@ void TableModel::setupModelData(const SearchModifiers modifier, const QString &f
emit searchNumResults(_data.length());
}
QString TableModel::getComicPath(QModelIndex mi)
QString ComicModel::getComicPath(QModelIndex mi)
{
if(mi.isValid())
return _data.at(mi.row())->data(TableModel::Path).toString();
return _data.at(mi.row())->data(ComicModel::Path).toString();
return "";
}
void TableModel::setupModelData(QSqlQuery &sqlquery)
void ComicModel::setupModelData(QSqlQuery &sqlquery)
{
TableItem * currentItem;
ComicItem * currentItem;
while (sqlquery.next())
{
QList<QVariant> data;
@ -393,26 +393,26 @@ void TableModel::setupModelData(QSqlQuery &sqlquery)
for(int i=0;i<record.count();i++)
data << record.value(i);
currentItem = new TableItem(data);
currentItem = new ComicItem(data);
bool lessThan = false;
if(_data.isEmpty())
_data.append(currentItem);
else
{
TableItem * last = _data.back();
QString nameLast = last->data(TableModel::FileName).toString();
QString nameCurrent = currentItem->data(TableModel::FileName).toString();
ComicItem * last = _data.back();
QString nameLast = last->data(ComicModel::FileName).toString();
QString nameCurrent = currentItem->data(ComicModel::FileName).toString();
int numberLast,numberCurrent;
int max = (std::numeric_limits<int>::max)();
numberLast = numberCurrent = max;
if(!last->data(TableModel::Number).isNull())
numberLast = last->data(TableModel::Number).toInt();
if(!last->data(ComicModel::Number).isNull())
numberLast = last->data(ComicModel::Number).toInt();
if(!currentItem->data(TableModel::Number).isNull())
numberCurrent = currentItem->data(TableModel::Number).toInt();
if(!currentItem->data(ComicModel::Number).isNull())
numberCurrent = currentItem->data(ComicModel::Number).toInt();
QList<TableItem *>::iterator i;
QList<ComicItem *>::iterator i;
i = _data.end();
i--;
@ -423,8 +423,8 @@ void TableModel::setupModelData(QSqlQuery &sqlquery)
i--;
numberLast = max;
if(!(*i)->data(TableModel::Number).isNull())
numberLast = (*i)->data(TableModel::Number).toInt();
if(!(*i)->data(ComicModel::Number).isNull())
numberLast = (*i)->data(ComicModel::Number).toInt();
}
}
else
@ -432,11 +432,11 @@ void TableModel::setupModelData(QSqlQuery &sqlquery)
while ((lessThan = naturalSortLessThanCI(nameCurrent,nameLast)) && i != _data.begin() && numberLast == max)
{
i--;
nameLast = (*i)->data(TableModel::FileName).toString();
nameLast = (*i)->data(ComicModel::FileName).toString();
numberLast = max;
if(!(*i)->data(TableModel::Number).isNull())
numberLast = (*i)->data(TableModel::Number).toInt();
if(!(*i)->data(ComicModel::Number).isNull())
numberLast = (*i)->data(ComicModel::Number).toInt();
}
}
@ -445,7 +445,7 @@ void TableModel::setupModelData(QSqlQuery &sqlquery)
if(numberCurrent != max)
{
if(numberCurrent == numberLast)
if(currentItem->data(TableModel::IsBis).toBool())
if(currentItem->data(ComicModel::IsBis).toBool())
{
_data.insert(++i,currentItem);
}
@ -466,20 +466,20 @@ void TableModel::setupModelData(QSqlQuery &sqlquery)
}
}
ComicDB TableModel::getComic(const QModelIndex & mi)
ComicDB ComicModel::getComic(const QModelIndex & mi)
{
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
ComicDB c = DBHelper::loadComic(_data.at(mi.row())->data(TableModel::Id).toULongLong(),db);
ComicDB c = DBHelper::loadComic(_data.at(mi.row())->data(ComicModel::Id).toULongLong(),db);
db.close();
QSqlDatabase::removeDatabase(_databasePath);
return c;
}
ComicDB TableModel::_getComic(const QModelIndex & mi)
ComicDB ComicModel::_getComic(const QModelIndex & mi)
{
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
ComicDB c = DBHelper::loadComic(_data.at(mi.row())->data(TableModel::Id).toULongLong(),db);
ComicDB c = DBHelper::loadComic(_data.at(mi.row())->data(ComicModel::Id).toULongLong(),db);
db.close();
QSqlDatabase::removeDatabase(_databasePath);
@ -487,17 +487,17 @@ ComicDB TableModel::_getComic(const QModelIndex & mi)
}
QVector<YACReaderComicReadStatus> TableModel::getReadList()
QVector<YACReaderComicReadStatus> ComicModel::getReadList()
{
int numComics = _data.count();
QVector<YACReaderComicReadStatus> readList(numComics);
for(int i=0;i<numComics;i++)
{
if(_data.value(i)->data(TableModel::ReadColumn).toBool())
if(_data.value(i)->data(ComicModel::ReadColumn).toBool())
readList[i] = YACReader::Read;
else if (_data.value(i)->data(TableModel::CurrentPage).toInt() == _data.value(i)->data(TableModel::NumPages).toInt())
else if (_data.value(i)->data(ComicModel::CurrentPage).toInt() == _data.value(i)->data(ComicModel::NumPages).toInt())
readList[i] = YACReader::Read;
else if (_data.value(i)->data(TableModel::HasBeenOpened).toBool())
else if (_data.value(i)->data(ComicModel::HasBeenOpened).toBool())
readList[i] = YACReader::Opened;
else
readList[i] = YACReader::Unread;
@ -505,12 +505,12 @@ QVector<YACReaderComicReadStatus> TableModel::getReadList()
return readList;
}
//TODO untested, this method is no longer used
QVector<YACReaderComicReadStatus> TableModel::setAllComicsRead(YACReaderComicReadStatus read)
QVector<YACReaderComicReadStatus> ComicModel::setAllComicsRead(YACReaderComicReadStatus read)
{
return setComicsRead(persistentIndexList(),read);
}
QList<ComicDB> TableModel::getAllComics()
QList<ComicDB> ComicModel::getAllComics()
{
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
db.transaction();
@ -519,7 +519,7 @@ QList<ComicDB> TableModel::getAllComics()
int numComics = _data.count();
for(int i=0;i<numComics;i++)
{
comics.append(DBHelper::loadComic(_data.value(i)->data(TableModel::Id).toULongLong(),db));
comics.append(DBHelper::loadComic(_data.value(i)->data(ComicModel::Id).toULongLong(),db));
}
db.commit();
@ -529,7 +529,7 @@ QList<ComicDB> TableModel::getAllComics()
return comics;
}
QList<ComicDB> TableModel::getComics(QList<QModelIndex> list)
QList<ComicDB> ComicModel::getComics(QList<QModelIndex> list)
{
QList<ComicDB> comics;
@ -546,7 +546,7 @@ QList<ComicDB> TableModel::getComics(QList<QModelIndex> list)
return comics;
}
//TODO
QVector<YACReaderComicReadStatus> TableModel::setComicsRead(QList<QModelIndex> list,YACReaderComicReadStatus read)
QVector<YACReaderComicReadStatus> ComicModel::setComicsRead(QList<QModelIndex> list,YACReaderComicReadStatus read)
{
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
db.transaction();
@ -554,17 +554,17 @@ QVector<YACReaderComicReadStatus> TableModel::setComicsRead(QList<QModelIndex> l
{
if(read == YACReader::Read)
{
_data.value(mi.row())->setData(TableModel::ReadColumn, QVariant(true));
ComicDB c = DBHelper::loadComic(_data.value(mi.row())->data(TableModel::Id).toULongLong(),db);
_data.value(mi.row())->setData(ComicModel::ReadColumn, QVariant(true));
ComicDB c = DBHelper::loadComic(_data.value(mi.row())->data(ComicModel::Id).toULongLong(),db);
c.info.read = true;
DBHelper::update(&(c.info),db);
}
if(read == YACReader::Unread)
{
_data.value(mi.row())->setData(TableModel::ReadColumn, QVariant(false));
_data.value(mi.row())->setData(TableModel::CurrentPage, QVariant(1));
_data.value(mi.row())->setData(TableModel::HasBeenOpened, QVariant(false));
ComicDB c = DBHelper::loadComic(_data.value(mi.row())->data(TableModel::Id).toULongLong(),db);
_data.value(mi.row())->setData(ComicModel::ReadColumn, QVariant(false));
_data.value(mi.row())->setData(ComicModel::CurrentPage, QVariant(1));
_data.value(mi.row())->setData(ComicModel::HasBeenOpened, QVariant(false));
ComicDB c = DBHelper::loadComic(_data.value(mi.row())->data(ComicModel::Id).toULongLong(),db);
c.info.read = false;
c.info.currentPage = 1;
c.info.hasBeenOpened = false;
@ -575,19 +575,19 @@ QVector<YACReaderComicReadStatus> TableModel::setComicsRead(QList<QModelIndex> l
db.close();
QSqlDatabase::removeDatabase(_databasePath);
emit dataChanged(index(list.first().row(),TableModel::ReadColumn),index(list.last().row(),TableModel::HasBeenOpened),QVector<int>() << ReadColumnRole << CurrentPageRole << HasBeenOpenedRole);
emit dataChanged(index(list.first().row(),ComicModel::ReadColumn),index(list.last().row(),ComicModel::HasBeenOpened),QVector<int>() << ReadColumnRole << CurrentPageRole << HasBeenOpenedRole);
return getReadList();
}
qint64 TableModel::asignNumbers(QList<QModelIndex> list,int startingNumber)
qint64 ComicModel::asignNumbers(QList<QModelIndex> list,int startingNumber)
{
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
db.transaction();
qint64 idFirst = _data.value(list[0].row())->data(TableModel::Id).toULongLong();
qint64 idFirst = _data.value(list[0].row())->data(ComicModel::Id).toULongLong();
int i = 0;
foreach (QModelIndex mi, list)
{
ComicDB c = DBHelper::loadComic(_data.value(mi.row())->data(TableModel::Id).toULongLong(),db);
ComicDB c = DBHelper::loadComic(_data.value(mi.row())->data(ComicModel::Id).toULongLong(),db);
c.info.number = startingNumber+i;
c.info.edited = true;
DBHelper::update(&(c.info),db);
@ -602,13 +602,13 @@ qint64 TableModel::asignNumbers(QList<QModelIndex> list,int startingNumber)
return idFirst;
}
QModelIndex TableModel::getIndexFromId(quint64 id)
QModelIndex ComicModel::getIndexFromId(quint64 id)
{
QList<TableItem *>::ConstIterator itr;
QList<ComicItem *>::ConstIterator itr;
int i=0;
for(itr = _data.constBegin();itr != _data.constEnd();itr++)
{
if((*itr)->data(TableModel::Id).toULongLong() == id)
if((*itr)->data(ComicModel::Id).toULongLong() == id)
break;
i++;
}
@ -616,14 +616,14 @@ QModelIndex TableModel::getIndexFromId(quint64 id)
return index(i,0);
}
void TableModel::startTransaction()
void ComicModel::startTransaction()
{
dbTransaction = DataBaseManagement::loadDatabase(_databasePath);
dbTransaction.transaction();
}
void TableModel::finishTransaction()
void ComicModel::finishTransaction()
{
dbTransaction.commit();
dbTransaction.close();
@ -632,9 +632,9 @@ void TableModel::finishTransaction()
}
void TableModel::removeInTransaction(int row)
void ComicModel::removeInTransaction(int row)
{
ComicDB c = DBHelper::loadComic(_data.at(row)->data(TableModel::Id).toULongLong(),dbTransaction);
ComicDB c = DBHelper::loadComic(_data.at(row)->data(ComicModel::Id).toULongLong(),dbTransaction);
DBHelper::removeFromDB(&c,dbTransaction);
beginRemoveRows(QModelIndex(),row,row);
@ -645,7 +645,7 @@ void TableModel::removeInTransaction(int row)
endRemoveRows();
}
void TableModel::remove(ComicDB * comic, int row)
void ComicModel::remove(ComicDB * comic, int row)
{
beginRemoveRows(QModelIndex(),row,row);
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
@ -666,23 +666,23 @@ void TableModel::remove(ComicDB * comic, int row)
return getComic(index(row,0));
}*/
void TableModel::remove(int row)
void ComicModel::remove(int row)
{
removeInTransaction(row);
}
void TableModel::reload(const ComicDB & comic)
void ComicModel::reload(const ComicDB & comic)
{
int row = 0;
bool found = false;
foreach(TableItem * item,_data)
foreach(ComicItem * item,_data)
{
if(item->data(TableModel::Id).toULongLong() == comic.id)
if(item->data(ComicModel::Id).toULongLong() == comic.id)
{
found = true;
item->setData(TableModel::ReadColumn,comic.info.read);
item->setData(TableModel::CurrentPage,comic.info.currentPage);
item->setData(TableModel::HasBeenOpened,true);
item->setData(ComicModel::ReadColumn,comic.info.read);
item->setData(ComicModel::CurrentPage,comic.info.currentPage);
item->setData(ComicModel::HasBeenOpened,true);
break;
}
@ -692,14 +692,14 @@ void TableModel::reload(const ComicDB & comic)
emit dataChanged(index(row,ReadColumn),index(row,HasBeenOpened), QVector<int>() << ReadColumnRole << CurrentPageRole << HasBeenOpenedRole);
}
void TableModel::resetComicRating(const QModelIndex &mi)
void ComicModel::resetComicRating(const QModelIndex &mi)
{
ComicDB comic = getComic(mi);
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
comic.info.rating = 0;
_data[mi.row()]->setData(TableModel::Rating,0);
_data[mi.row()]->setData(ComicModel::Rating,0);
DBHelper::update(&(comic.info),db);
emit dataChanged(mi,mi);
@ -709,7 +709,7 @@ void TableModel::resetComicRating(const QModelIndex &mi)
}
void TableModel::updateRating(int rating, QModelIndex mi)
void ComicModel::updateRating(int rating, QModelIndex mi)
{
ComicDB comic = getComic(mi);
@ -717,7 +717,7 @@ void TableModel::updateRating(int rating, QModelIndex mi)
//TODO optimize update
comic.info.rating = rating;
_data[mi.row()]->setData(TableModel::Rating,rating);
_data[mi.row()]->setData(ComicModel::Rating,rating);
DBHelper::update(&(comic.info),db);
emit dataChanged(mi,mi);

View File

@ -11,19 +11,19 @@
class ComicDB;
class TableItem;
class ComicItem;
using namespace YACReader;
//! [0]
class TableModel : public QAbstractItemModel
class ComicModel : public QAbstractItemModel
{
Q_OBJECT
public:
TableModel(QObject *parent = 0);
TableModel( QSqlQuery &sqlquery, QObject *parent = 0);
~TableModel();
ComicModel(QObject *parent = 0);
ComicModel( QSqlQuery &sqlquery, QObject *parent = 0);
~ComicModel();
QVariant data(const QModelIndex &index, int role) const;
Qt::ItemFlags flags(const QModelIndex &index) const;
@ -106,7 +106,7 @@ protected:
private:
void setupModelData( QSqlQuery &sqlquery);
ComicDB _getComic(const QModelIndex & mi);
QList<TableItem *> _data;
QList<ComicItem *> _data;
QString _databasePath;

View File

@ -5,7 +5,7 @@
#include <QtSql>
#include <QSqlDatabase>
#include "treemodel.h"
#include "folder_model.h"
class ComicsInfoExporter : public QThread
{

View File

@ -1,20 +1,20 @@
#include <QStringList>
#include "treeitem.h"
#include "folder_item.h"
#include "qnaturalsorting.h"
TreeItem::TreeItem(const QList<QVariant> &data, TreeItem *parent)
FolderItem::FolderItem(const QList<QVariant> &data, FolderItem *parent)
{
parentItem = parent;
itemData = data;
}
TreeItem::~TreeItem()
FolderItem::~FolderItem()
{
qDeleteAll(childItems);
}
void TreeItem::appendChild(TreeItem *item)
void FolderItem::appendChild(FolderItem *item)
{
item->parentItem = this;
@ -22,10 +22,10 @@ void TreeItem::appendChild(TreeItem *item)
childItems.append(item);
else
{
TreeItem * last = childItems.back();
FolderItem * last = childItems.back();
QString nameLast = last->data(1).toString(); //TODO usar info name si est<73> disponible, sino el nombre del fichero.....
QString nameCurrent = item->data(1).toString();
QList<TreeItem *>::iterator i;
QList<FolderItem *>::iterator i;
i = childItems.end();
i--;
while (naturalSortLessThanCI(nameCurrent,nameLast) && i != childItems.begin())
@ -43,61 +43,61 @@ void TreeItem::appendChild(TreeItem *item)
//childItems.append(item);
}
TreeItem *TreeItem::child(int row)
FolderItem *FolderItem::child(int row)
{
return childItems.value(row);
}
int TreeItem::childCount() const
int FolderItem::childCount() const
{
return childItems.count();
}
int TreeItem::columnCount() const
int FolderItem::columnCount() const
{
return itemData.count();
}
QVariant TreeItem::data(int column) const
QVariant FolderItem::data(int column) const
{
return itemData.value(column);
}
void TreeItem::setData(int column, const QVariant & value)
void FolderItem::setData(int column, const QVariant & value)
{
itemData[column] = value;
}
void TreeItem::removeChild(int childIndex)
void FolderItem::removeChild(int childIndex)
{
childItems.removeAt(childIndex);
}
void TreeItem::clearChildren()
void FolderItem::clearChildren()
{
qDeleteAll(childItems);
childItems.clear();
}
QList<TreeItem *> TreeItem::children()
QList<FolderItem *> FolderItem::children()
{
return childItems;
}
TreeItem *TreeItem::parent()
FolderItem *FolderItem::parent()
{
return parentItem;
}
int TreeItem::row() const
int FolderItem::row() const
{
if (parentItem)
return parentItem->childItems.indexOf(const_cast<TreeItem*>(this));
return parentItem->childItems.indexOf(const_cast<FolderItem*>(this));
return 0;
}
QList<QVariant> TreeItem::getData() const
QList<QVariant> FolderItem::getData() const
{
return itemData;
}

View File

@ -45,31 +45,31 @@
#include <QVariant>
#include <QModelIndex>
class TreeItem
class FolderItem
{
public:
TreeItem(const QList<QVariant> &data, TreeItem *parent = 0);
~TreeItem();
FolderItem(const QList<QVariant> &data, FolderItem *parent = 0);
~FolderItem();
void appendChild(TreeItem *child);
void appendChild(FolderItem *child);
TreeItem *child(int row);
FolderItem *child(int row);
int childCount() const;
int columnCount() const;
QVariant data(int column) const;
QList<QVariant> getData() const;
int row() const;
TreeItem *parent();
TreeItem *parentItem;
FolderItem *parent();
FolderItem *parentItem;
unsigned long long int id;
QList<QString> comicNames;
TreeItem * originalItem;
FolderItem * originalItem;
void setData(int column, const QVariant &value);
void removeChild(int childIndex);
void clearChildren();
QList<TreeItem*> children();
QList<FolderItem*> children();
private:
QList<TreeItem*> childItems;
QList<FolderItem*> childItems;
QList<QVariant> itemData;

View File

@ -48,8 +48,8 @@
#include <QtGui>
#include "treeitem.h"
#include "treemodel.h"
#include "folder_item.h"
#include "folder_model.h"
#include "data_base_management.h"
#include "folder.h"
#include "db_helper.h"
@ -98,7 +98,7 @@ void drawMacOSXFinishedFolderIcon()
#define ROOT 1
TreeModel::TreeModel(QObject *parent)
FolderModel::FolderModel(QObject *parent)
: QAbstractItemModel(parent),rootItem(0),rootBeforeFilter(0),filterEnabled(false),includeComics(false)
{
connect(this,SIGNAL(beforeReset()),this,SIGNAL(modelAboutToBeReset()));
@ -106,13 +106,13 @@ TreeModel::TreeModel(QObject *parent)
}
//! [0]
TreeModel::TreeModel( QSqlQuery &sqlquery, QObject *parent)
FolderModel::FolderModel( QSqlQuery &sqlquery, QObject *parent)
: QAbstractItemModel(parent),rootItem(0),rootBeforeFilter(0),filterEnabled(false),includeComics(false)
{
//lo m<>s probable es que el nodo ra<72>z no necesite tener informaci<63>n
QList<QVariant> rootData;
rootData << "root"; //id 0, padre 0, title "root" (el id, y el id del padre van a ir en la clase TreeItem)
rootItem = new TreeItem(rootData);
rootItem = new FolderItem(rootData);
rootItem->id = ROOT;
rootItem->parentItem = 0;
setupModelData(sqlquery, rootItem);
@ -121,7 +121,7 @@ TreeModel::TreeModel( QSqlQuery &sqlquery, QObject *parent)
//! [0]
//! [1]
TreeModel::~TreeModel()
FolderModel::~FolderModel()
{
if(rootItem != 0)
delete rootItem;
@ -129,22 +129,22 @@ TreeModel::~TreeModel()
//! [1]
//! [2]
int TreeModel::columnCount(const QModelIndex &parent) const
int FolderModel::columnCount(const QModelIndex &parent) const
{
if (parent.isValid())
return static_cast<TreeItem*>(parent.internalPointer())->columnCount();
return static_cast<FolderItem*>(parent.internalPointer())->columnCount();
else
return rootItem->columnCount();
}
//! [2]
//! [3]
QVariant TreeModel::data(const QModelIndex &index, int role) const
QVariant FolderModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
TreeItem *item = static_cast<TreeItem*>(index.internalPointer());
FolderItem *item = static_cast<FolderItem*>(index.internalPointer());
if (role == Qt::DecorationRole)
@ -160,7 +160,7 @@ QVariant TreeModel::data(const QModelIndex &index, int role) const
return QVariant(QFileIconProvider().icon(QFileIconProvider::Folder));
}
#else
if(item->data(TreeModel::Finished).toBool())
if(item->data(FolderModel::Finished).toBool())
return QVariant(QIcon(":/images/folder_finished.png"));
else
return QVariant(QIcon(":/images/folder.png"));
@ -176,7 +176,7 @@ QVariant TreeModel::data(const QModelIndex &index, int role) const
//! [3]
//! [4]
Qt::ItemFlags TreeModel::flags(const QModelIndex &index) const
Qt::ItemFlags FolderModel::flags(const QModelIndex &index) const
{
if (!index.isValid())
return 0;
@ -186,7 +186,7 @@ Qt::ItemFlags TreeModel::flags(const QModelIndex &index) const
//! [4]
//! [5]
QVariant TreeModel::headerData(int section, Qt::Orientation orientation,
QVariant FolderModel::headerData(int section, Qt::Orientation orientation,
int role) const
{
if (orientation == Qt::Horizontal && role == Qt::DisplayRole)
@ -197,20 +197,20 @@ QVariant TreeModel::headerData(int section, Qt::Orientation orientation,
//! [5]
//! [6]
QModelIndex TreeModel::index(int row, int column, const QModelIndex &parent)
QModelIndex FolderModel::index(int row, int column, const QModelIndex &parent)
const
{
if (!hasIndex(row, column, parent))
return QModelIndex();
TreeItem *parentItem;
FolderItem *parentItem;
if (!parent.isValid())
parentItem = rootItem;
else
parentItem = static_cast<TreeItem*>(parent.internalPointer());
parentItem = static_cast<FolderItem*>(parent.internalPointer());
TreeItem *childItem = parentItem->child(row);
FolderItem *childItem = parentItem->child(row);
if (childItem)
return createIndex(row, column, childItem);
else
@ -219,13 +219,13 @@ QModelIndex TreeModel::index(int row, int column, const QModelIndex &parent)
//! [6]
//! [7]
QModelIndex TreeModel::parent(const QModelIndex &index) const
QModelIndex FolderModel::parent(const QModelIndex &index) const
{
if (!index.isValid())
return QModelIndex();
TreeItem *childItem = static_cast<TreeItem*>(index.internalPointer());
TreeItem *parentItem = childItem->parent();
FolderItem *childItem = static_cast<FolderItem*>(index.internalPointer());
FolderItem *parentItem = childItem->parent();
if (parentItem == rootItem)
return QModelIndex();
@ -234,7 +234,7 @@ QModelIndex TreeModel::parent(const QModelIndex &index) const
}
//! [7]
QModelIndex TreeModel::indexFromItem(TreeItem * item,int column)
QModelIndex FolderModel::indexFromItem(FolderItem * item,int column)
{
//if(item->parent() != 0)
// return index(item->row(),column,parent(indexFromItem(item->parent(),column-1)));
@ -245,22 +245,22 @@ QModelIndex TreeModel::indexFromItem(TreeItem * item,int column)
//! [8]
int TreeModel::rowCount(const QModelIndex &parent) const
int FolderModel::rowCount(const QModelIndex &parent) const
{
TreeItem *parentItem;
FolderItem *parentItem;
if (parent.column() > 0)
return 0;
if (!parent.isValid())
parentItem = rootItem;
else
parentItem = static_cast<TreeItem*>(parent.internalPointer());
parentItem = static_cast<FolderItem*>(parent.internalPointer());
return parentItem->childCount();
}
//! [8]
void TreeModel::setupModelData(QString path)
void FolderModel::setupModelData(QString path)
{
beginResetModel();
if(rootItem != 0)
@ -271,7 +271,7 @@ void TreeModel::setupModelData(QString path)
//inicializar el nodo ra<72>z
QList<QVariant> rootData;
rootData << "root"; //id 0, padre 0, title "root" (el id, y el id del padre van a ir en la clase TreeItem)
rootItem = new TreeItem(rootData);
rootItem = new FolderItem(rootData);
rootItem->id = ROOT;
rootItem->parentItem = 0;
@ -292,7 +292,7 @@ void TreeModel::setupModelData(QString path)
}
void TreeModel::setupModelData(QSqlQuery &sqlquery, TreeItem *parent)
void FolderModel::setupModelData(QSqlQuery &sqlquery, FolderItem *parent)
{
//64 bits para la primary key, es decir la misma precisi<73>n que soporta sqlit 2^64
//el diccionario permitir<69> encontrar cualquier nodo del <20>rbol r<>pidamente, de forma que a<>adir un hijo a un padre sea O(1)
@ -308,11 +308,11 @@ void TreeModel::setupModelData(QSqlQuery &sqlquery, TreeItem *parent)
data << record.value("path").toString();
data << record.value("finished").toBool();
data << record.value("completed").toBool();
TreeItem * item = new TreeItem(data);
FolderItem * item = new FolderItem(data);
item->id = record.value("id").toULongLong();
//la inserci<63>n de hijos se hace de forma ordenada
TreeItem * parent = items.value(record.value("parentId").toULongLong());
FolderItem * parent = items.value(record.value("parentId").toULongLong());
//if(parent !=0) //TODO if parent==0 the parent of item was removed from the DB and delete on cascade didn't work, ERROR.
parent->appendChild(item);
//se a<>ade el item al map, de forma que se pueda encontrar como padre en siguientes iteraciones
@ -320,7 +320,7 @@ void TreeModel::setupModelData(QSqlQuery &sqlquery, TreeItem *parent)
}
}
void TreeModel::updateFolderModelData(QSqlQuery &sqlquery, TreeItem *parent)
void FolderModel::updateFolderModelData(QSqlQuery &sqlquery, FolderItem *parent)
{
while (sqlquery.next()) {
QList<QVariant> data;
@ -330,11 +330,11 @@ void TreeModel::updateFolderModelData(QSqlQuery &sqlquery, TreeItem *parent)
data << record.value("path").toString();
data << record.value("finished").toBool();
data << record.value("completed").toBool();
TreeItem * item = new TreeItem(data);
FolderItem * item = new FolderItem(data);
item->id = record.value("id").toULongLong();
//la inserci<63>n de hijos se hace de forma ordenada
TreeItem * parent = items.value(record.value("parentId").toULongLong());
FolderItem * parent = items.value(record.value("parentId").toULongLong());
if(parent !=0) //TODO if parent==0 the parent of item was removed from the DB and delete on cascade didn't work, ERROR.
parent->appendChild(item);
//se a<>ade el item al map, de forma que se pueda encontrar como padre en siguientes iteraciones
@ -342,7 +342,7 @@ void TreeModel::updateFolderModelData(QSqlQuery &sqlquery, TreeItem *parent)
}
}
void TreeModel::setupFilteredModelData()
void FolderModel::setupFilteredModelData()
{
beginResetModel();
@ -357,7 +357,7 @@ void TreeModel::setupFilteredModelData()
QList<QVariant> rootData;
rootData << "root"; //id 1, padre 1, title "root" (el id, y el id del padre van a ir en la clase TreeItem)
rootItem = new TreeItem(rootData);
rootItem = new FolderItem(rootData);
rootItem->id = ROOT;
rootItem->parentItem = 0;
@ -418,7 +418,7 @@ void TreeModel::setupFilteredModelData()
endResetModel();
}
void TreeModel::setupFilteredModelData(QSqlQuery &sqlquery, TreeItem *parent)
void FolderModel::setupFilteredModelData(QSqlQuery &sqlquery, FolderItem *parent)
{
//64 bits para la primary key, es decir la misma precisi<73>n que soporta sqlit 2^64
filteredItems.clear();
@ -436,7 +436,7 @@ void TreeModel::setupFilteredModelData(QSqlQuery &sqlquery, TreeItem *parent)
data << record.value("finished").toBool();
data << record.value("completed").toBool();
TreeItem * item = new TreeItem(data);
FolderItem * item = new FolderItem(data);
item->id = sqlquery.value(0).toULongLong();
//id del padre
@ -461,9 +461,9 @@ void TreeModel::setupFilteredModelData(QSqlQuery &sqlquery, TreeItem *parent)
while(parentId != ROOT )
{
//el padre no estaba en el modelo filtrado, as<61> que se rescata del modelo original
TreeItem * parentItem = items.value(parentId);
FolderItem * parentItem = items.value(parentId);
//se debe crear un nuevo nodo (para no compartir los hijos con el nodo original)
TreeItem * newparentItem = new TreeItem(parentItem->getData()); //padre que se a<>adir<69> a la estructura de directorios filtrados
FolderItem * newparentItem = new FolderItem(parentItem->getData()); //padre que se a<>adir<69> a la estructura de directorios filtrados
newparentItem->id = parentId;
newparentItem->originalItem = parentItem;
@ -496,19 +496,19 @@ void TreeModel::setupFilteredModelData(QSqlQuery &sqlquery, TreeItem *parent)
QString TreeModel::getDatabase()
QString FolderModel::getDatabase()
{
return _databasePath;
}
QString TreeModel::getFolderPath(const QModelIndex &folder)
QString FolderModel::getFolderPath(const QModelIndex &folder)
{
if(!folder.isValid()) //root folder
return "/";
return static_cast<TreeItem*>(folder.internalPointer())->data(TreeModel::Path).toString();
return static_cast<FolderItem*>(folder.internalPointer())->data(FolderModel::Path).toString();
}
void TreeModel::setFilter(const YACReader::SearchModifiers modifier, QString filter, bool includeComics)
void FolderModel::setFilter(const YACReader::SearchModifiers modifier, QString filter, bool includeComics)
{
this->filter = filter;
this->includeComics = includeComics;
@ -517,7 +517,7 @@ void TreeModel::setFilter(const YACReader::SearchModifiers modifier, QString fil
setupFilteredModelData();
}
void TreeModel::resetFilter()
void FolderModel::resetFilter()
{
beginResetModel();
filter = "";
@ -525,7 +525,7 @@ void TreeModel::resetFilter()
//TODO hay que liberar la memoria reservada para el filtrado
//items.clear();
filteredItems.clear();
TreeItem * root = rootItem;
FolderItem * root = rootItem;
rootItem = rootBeforeFilter; //TODO si no se aplica el filtro previamente, esto invalidar<61>a en modelo
if(root !=0)
delete root;
@ -537,14 +537,14 @@ void TreeModel::resetFilter()
}
void TreeModel::updateFolderCompletedStatus(const QModelIndexList &list, bool status)
void FolderModel::updateFolderCompletedStatus(const QModelIndexList &list, bool status)
{
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
db.transaction();
foreach (QModelIndex mi, list)
{
TreeItem * item = static_cast<TreeItem*>(mi.internalPointer());
item->setData(TreeModel::Completed,status);
FolderItem * item = static_cast<FolderItem*>(mi.internalPointer());
item->setData(FolderModel::Completed,status);
Folder f = DBHelper::loadFolder(item->id,db);
f.setCompleted(status);
@ -554,17 +554,17 @@ void TreeModel::updateFolderCompletedStatus(const QModelIndexList &list, bool st
db.close();
QSqlDatabase::removeDatabase(_databasePath);
emit dataChanged(index(list.first().row(),TreeModel::Name),index(list.last().row(),TreeModel::Completed));
emit dataChanged(index(list.first().row(),FolderModel::Name),index(list.last().row(),FolderModel::Completed));
}
void TreeModel::updateFolderFinishedStatus(const QModelIndexList &list, bool status)
void FolderModel::updateFolderFinishedStatus(const QModelIndexList &list, bool status)
{
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
db.transaction();
foreach (QModelIndex mi, list)
{
TreeItem * item = static_cast<TreeItem*>(mi.internalPointer());
item->setData(TreeModel::Finished,status);
FolderItem * item = static_cast<FolderItem*>(mi.internalPointer());
item->setData(FolderModel::Finished,status);
Folder f = DBHelper::loadFolder(item->id,db);
f.setFinished(status);
@ -574,15 +574,15 @@ void TreeModel::updateFolderFinishedStatus(const QModelIndexList &list, bool sta
db.close();
QSqlDatabase::removeDatabase(_databasePath);
emit dataChanged(index(list.first().row(),TreeModel::Name),index(list.last().row(),TreeModel::Completed));
emit dataChanged(index(list.first().row(),FolderModel::Name),index(list.last().row(),FolderModel::Completed));
}
QStringList TreeModel::getSubfoldersNames(const QModelIndex &mi)
QStringList FolderModel::getSubfoldersNames(const QModelIndex &mi)
{
QStringList result;
qulonglong id = 1;
if(mi.isValid()){
TreeItem * item = static_cast<TreeItem*>(mi.internalPointer());
FolderItem * item = static_cast<FolderItem*>(mi.internalPointer());
id = item->id;
}
@ -600,11 +600,11 @@ QStringList TreeModel::getSubfoldersNames(const QModelIndex &mi)
return result;
}
void TreeModel::fetchMoreFromDB(const QModelIndex &parent)
void FolderModel::fetchMoreFromDB(const QModelIndex &parent)
{
TreeItem * item;
FolderItem * item;
if(parent.isValid())
item = static_cast<TreeItem*>(parent.internalPointer());
item = static_cast<FolderItem*>(parent.internalPointer());
else
item = rootItem;
@ -615,8 +615,8 @@ void TreeModel::fetchMoreFromDB(const QModelIndex &parent)
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
QList<TreeItem *> items;
QList<TreeItem *> nextLevelItems;
QList<FolderItem *> items;
QList<FolderItem *> nextLevelItems;
QSqlQuery selectQuery(db);
selectQuery.prepare("select * from folder where id <> 1 and parentId = :parentId order by parentId,name");
@ -626,7 +626,7 @@ void TreeModel::fetchMoreFromDB(const QModelIndex &parent)
while(items.size() > 0)
{
nextLevelItems.clear();
foreach(TreeItem * item, items)
foreach(FolderItem * item, items)
{
selectQuery.bindValue(":parentId", item->id);
@ -655,12 +655,12 @@ void TreeModel::fetchMoreFromDB(const QModelIndex &parent)
QSqlDatabase::removeDatabase(_databasePath);
}
QModelIndex TreeModel::addFolderAtParent(const QString &folderName, const QModelIndex &parent)
QModelIndex FolderModel::addFolderAtParent(const QString &folderName, const QModelIndex &parent)
{
TreeItem * parentItem;
FolderItem * parentItem;
if(parent.isValid())
parentItem = static_cast<TreeItem*>(parent.internalPointer());
parentItem = static_cast<FolderItem*>(parent.internalPointer());
else
parentItem = rootItem;
@ -681,7 +681,7 @@ QModelIndex TreeModel::addFolderAtParent(const QString &folderName, const QModel
data << false; //finished
data << true; //completed
TreeItem * item = new TreeItem(data);
FolderItem * item = new FolderItem(data);
item->id = newFolder.id;
parentItem->appendChild(item);
@ -695,13 +695,13 @@ QModelIndex TreeModel::addFolderAtParent(const QString &folderName, const QModel
return index(destRow,0,parent);
}
void TreeModel::deleteFolder(const QModelIndex &mi)
void FolderModel::deleteFolder(const QModelIndex &mi)
{
beginRemoveRows(mi.parent(),mi.row(),mi.row());
TreeItem * item = static_cast<TreeItem*>(mi.internalPointer());
FolderItem * item = static_cast<FolderItem*>(mi.internalPointer());
TreeItem * parent = item->parent();
FolderItem * parent = item->parent();
parent->removeChild(mi.row());
Folder f;

View File

@ -49,17 +49,17 @@
#include "yacreader_global.h"
class TreeItem;
class FolderItem;
//! [0]
class TreeModel : public QAbstractItemModel
class FolderModel : public QAbstractItemModel
{
Q_OBJECT
public:
TreeModel(QObject *parent = 0);
TreeModel( QSqlQuery &sqlquery, QObject *parent = 0);
~TreeModel();
FolderModel(QObject *parent = 0);
FolderModel( QSqlQuery &sqlquery, QObject *parent = 0);
~FolderModel();
QVariant data(const QModelIndex &index, int role) const;
Qt::ItemFlags flags(const QModelIndex &index) const;
@ -68,7 +68,7 @@ public:
QModelIndex index(int row, int column,
const QModelIndex &parent = QModelIndex()) const;
QModelIndex parent(const QModelIndex &index) const;
QModelIndex indexFromItem(TreeItem * item, int column);
QModelIndex indexFromItem(FolderItem * item, int column);
/*QModelIndex _indexFromItem(TreeItem * item, int column);
int column;*/
@ -104,16 +104,16 @@ public slots:
void deleteFolder(const QModelIndex & mi);
private:
void setupModelData( QSqlQuery &sqlquery, TreeItem *parent);
void updateFolderModelData( QSqlQuery &sqlquery, TreeItem *parent);
void setupFilteredModelData( QSqlQuery &sqlquery, TreeItem *parent);
void setupModelData( QSqlQuery &sqlquery, FolderItem *parent);
void updateFolderModelData( QSqlQuery &sqlquery, FolderItem *parent);
void setupFilteredModelData( QSqlQuery &sqlquery, FolderItem *parent);
void setupFilteredModelData();
TreeItem *rootItem; //el árbol
QMap<unsigned long long int, TreeItem *> items; //relación entre folders
FolderItem *rootItem; //el árbol
QMap<unsigned long long int, FolderItem *> items; //relación entre folders
TreeItem *rootBeforeFilter;
QMap<unsigned long long int, TreeItem *> filteredItems; //relación entre folders
FolderItem *rootBeforeFilter;
QMap<unsigned long long int, FolderItem *> filteredItems; //relación entre folders
QString _databasePath;

View File

@ -0,0 +1,5 @@
#include "reading_list_item.h"
ReadingListItem::ReadingListItem()
{
}

View File

@ -0,0 +1,10 @@
#ifndef READING_LIST_ITEM_H
#define READING_LIST_ITEM_H
class ReadingListItem
{
public:
ReadingListItem();
};
#endif // READING_LIST_ITEM_H

View File

@ -0,0 +1,6 @@
#include "reading_list_model.h"
ReadingListModel::ReadingListModel(QObject *parent) :
QAbstractItemModel(parent)
{
}

View File

@ -0,0 +1,18 @@
#ifndef READING_LIST_MODEL_H
#define READING_LIST_MODEL_H
#include <QAbstractItemModel>
class ReadingListModel : public QAbstractItemModel
{
Q_OBJECT
public:
explicit ReadingListModel(QObject *parent = 0);
signals:
public slots:
};
#endif // READING_LIST_MODEL_H

View File

@ -1,47 +0,0 @@
#include <QStringList>
#include "tableitem.h"
//! [0]
TableItem::TableItem(const QList<QVariant> &data)
{
itemData = data;
}
//! [0]
//! [1]
TableItem::~TableItem()
{
}
//! [1]
//! [5]
int TableItem::columnCount() const
{
return itemData.count();
}
//! [5]
//! [6]
QVariant TableItem::data(int column) const
{
return itemData.value(column);
}
//! [6]
void TableItem::setData(int column,const QVariant & value)
{
itemData[column] = value;
}
//! [8]
int TableItem::row() const
{
return 0;
}
//! [8]