From f628f4a2b1560e174a5a62ab54fa84365db3fecd Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Mon, 8 Jan 2018 20:10:32 +0100 Subject: BookmarksModel::insertItem --- lib/bookmarks/bookmarksmodel.cpp | 69 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) (limited to 'lib/bookmarks/bookmarksmodel.cpp') diff --git a/lib/bookmarks/bookmarksmodel.cpp b/lib/bookmarks/bookmarksmodel.cpp index 7e0c35b..69f6334 100644 --- a/lib/bookmarks/bookmarksmodel.cpp +++ b/lib/bookmarks/bookmarksmodel.cpp @@ -114,6 +114,26 @@ int BookmarksModel::rowCount(const QModelIndex &parent) const return parentItem->childCount(); } +QModelIndex BookmarksModel::insertItem(BookmarkItem::BookmarkItemType type, const QModelIndex &parent) +{ + BookmarkItem *parentItem; + if(!parent.isValid()) { + parentItem = m_rootItem; + } else { + parentItem = static_cast(parent.internalPointer()); + if(parentItem->type() == BookmarkItem::Bookmark) + parentItem = parentItem->parentItem(); + } + + beginInsertRows(index(parentItem), parentItem->row(), parentItem->row()); + auto *node = new BookmarkItem(type, parentItem); + node->title = tr("title"); + node->href = tr("href"); + endInsertRows(); + + return index(node); +} + int BookmarksModel::columnCount(const QModelIndex &parent) const { if(parent.isValid()) { @@ -123,6 +143,26 @@ int BookmarksModel::columnCount(const QModelIndex &parent) const } } +Qt::ItemFlags BookmarksModel::flags(const QModelIndex &index) const +{ + if(!index.isValid()) + return Qt::NoItemFlags; + + Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled; + auto *node = static_cast(index.internalPointer()); + switch(node->type()) { + case BookmarkItem::Root: + break; + case BookmarkItem::Folder: + flags |= Qt::ItemIsEditable; + break; + case BookmarkItem::Bookmark: + flags |= Qt::ItemIsEnabled | Qt::ItemNeverHasChildren; + break; + } + return flags; +} + QVariant BookmarksModel::data(const QModelIndex &index, int role) const { // get data of invalid index? @@ -167,6 +207,35 @@ QVariant BookmarksModel::data(const QModelIndex &index, int role) const } } +bool BookmarksModel::setData(const QModelIndex &index, const QVariant &value, int role) +{ + if(!index.isValid()) + return false; + + auto *node = static_cast(index.internalPointer()); + switch(node->type()) { + case BookmarkItem::Root: + return false; + + case BookmarkItem::Folder: + if(index.column() == 0) { + node->title = value.toString(); + return true; + } + return false; + + case BookmarkItem::Bookmark: + if(index.column() == 0) { + node->title = value.toString(); + return true; + } else if(index.column() == 1) { + node->href = value.toString(); + return true; + } + return false; + } +} + bool BookmarksModel::hasChildren(const QModelIndex &parent) const { if(!parent.isValid()) { -- cgit v1.2.1