diff --git a/YACReaderLibrary/YACReaderLibrary.pro b/YACReaderLibrary/YACReaderLibrary.pro index d501f1df..db6d7eda 100644 --- a/YACReaderLibrary/YACReaderLibrary.pro +++ b/YACReaderLibrary/YACReaderLibrary.pro @@ -28,8 +28,8 @@ LIBS += -lpoppler-qt4 INCLUDEPATH += ../dependencies/poppler/include/qt4 } -QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT /GL -QMAKE_LFLAGS_RELEASE += /LTCG +#QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT /GL +#QMAKE_LFLAGS_RELEASE += /LTCG CONFIG -= embed_manifest_exe } diff --git a/YACReaderLibrary/db/folder_item.h b/YACReaderLibrary/db/folder_item.h index 084b429f..f0841c0f 100644 --- a/YACReaderLibrary/db/folder_item.h +++ b/YACReaderLibrary/db/folder_item.h @@ -70,11 +70,7 @@ public: QList children(); private: QList childItems; - QList itemData; - - - - + QList itemData; }; //! [0] diff --git a/YACReaderLibrary/db/folder_model.cpp b/YACReaderLibrary/db/folder_model.cpp index de16f132..f080fac1 100644 --- a/YACReaderLibrary/db/folder_model.cpp +++ b/YACReaderLibrary/db/folder_model.cpp @@ -230,7 +230,7 @@ QModelIndex FolderModel::parent(const QModelIndex &index) const if (parentItem == rootItem) return QModelIndex(); - return createIndex(parentItem->row(), 0, parentItem); + return createIndex(parentItem->row(), 0, parentItem); } //! [7] diff --git a/YACReaderLibrary/db/reading_list_item.cpp b/YACReaderLibrary/db/reading_list_item.cpp index 3dea3f67..a40f9864 100644 --- a/YACReaderLibrary/db/reading_list_item.cpp +++ b/YACReaderLibrary/db/reading_list_item.cpp @@ -107,3 +107,11 @@ void ReadingListItem::appendChild(ReadingListItem *item) } } + +int ReadingListItem::row() const +{ + if (parent) + return parent->childItems.indexOf(const_cast(this)); + + return 0; +} diff --git a/YACReaderLibrary/db/reading_list_item.h b/YACReaderLibrary/db/reading_list_item.h index cdb0daab..7456f4ef 100644 --- a/YACReaderLibrary/db/reading_list_item.h +++ b/YACReaderLibrary/db/reading_list_item.h @@ -40,13 +40,15 @@ class ReadingListItem : public ListItem public: ReadingListItem(const QList &data, ReadingListItem * parent = 0); QIcon getIcon() const; + ReadingListItem * parent; int childCount() const; + int row() const; ReadingListItem * child(int row); void appendChild(ReadingListItem *item); private: QList childItems; - ReadingListItem * parent; + }; #endif // READING_LIST_ITEM_H diff --git a/YACReaderLibrary/db/reading_list_model.cpp b/YACReaderLibrary/db/reading_list_model.cpp index a006e7e1..bcf584c7 100644 --- a/YACReaderLibrary/db/reading_list_model.cpp +++ b/YACReaderLibrary/db/reading_list_model.cpp @@ -12,7 +12,17 @@ int ReadingListModel::rowCount(const QModelIndex &parent) const if(!parent.isValid()) //TOP return specialLists.count() + labels.count() + rootItem->childCount(); else - return 0; + { + ListItem * item = static_cast(parent.internalPointer()); + + if(typeid(*item) == typeid(ReadingListItem)) + { + ReadingListItem * item = static_cast(parent.internalPointer()); + return item->childCount(); + } + } + + return 0; } int ReadingListModel::columnCount(const QModelIndex &parent) const @@ -63,14 +73,6 @@ QModelIndex ReadingListModel::index(int row, int column, const QModelIndex &pare if (!hasIndex(row, column, parent)) return QModelIndex(); - ListItem *parentItem; - - /*if (!parent.isValid()) - parentItem = rootItem; - else - parentItem = static_cast(parent.internalPointer());*/ - - if(!parent.isValid()) { if(row >= 0 && row < specialLists.count()) @@ -82,6 +84,17 @@ QModelIndex ReadingListModel::index(int row, int column, const QModelIndex &pare if(row >= specialLists.count() + labels.count()) return createIndex(row,column,rootItem->child(row - (specialLists.count() + labels.count()))); + } else //sublist + { + ReadingListItem *parentItem; + + if (!parent.isValid()) + parentItem = rootItem; //this should be impossible + else + parentItem = static_cast(parent.internalPointer()); + + ReadingListItem *childItem = parentItem->child(row); + return createIndex(row,column,childItem); } /*FolderItem *childItem = parentItem->child(row); if (childItem) @@ -93,16 +106,21 @@ QModelIndex ReadingListModel::index(int row, int column, const QModelIndex &pare QModelIndex ReadingListModel::parent(const QModelIndex &index) const { - //if (!index.isValid()) + + if(!index.isValid()) return QModelIndex(); - /*FolderItem *childItem = static_cast(index.internalPointer()); - FolderItem *parentItem = childItem->parent(); + ListItem * item = static_cast(index.internalPointer()); - if (parentItem == rootItem) - return QModelIndex(); + if(typeid(*item) == typeid(ReadingListItem)) + { + ReadingListItem * childItem = static_cast(index.internalPointer()); + ReadingListItem * parent = childItem->parent; + if(parent != 0) + return createIndex(parent->row(), 0, parent); + } - return createIndex(parentItem->row(), 0, parentItem); */ + return QModelIndex(); } void ReadingListModel::setupModelData(QString path) @@ -146,9 +164,12 @@ void ReadingListModel::setupModelData(QString path) rootItem = new ReadingListItem(QList() /*<< 0*/ << "ROOT" << "atr"); //setup reading lists - rootItem->appendChild(new ReadingListItem(QList() /*<< 0*/ << "My reading list" << "atr")); + ReadingListItem * node1; + rootItem->appendChild(node1 = new ReadingListItem(QList() /*<< 0*/ << "My reading list" << "atr")); rootItem->appendChild(new ReadingListItem(QList() /*<< 0*/ << "X timeline" << "atr")); + node1->appendChild(new ReadingListItem(QList() /*<< 0*/ << "sublist" << "atr",node1)); + endResetModel(); }