aboutsummaryrefslogtreecommitdiff
path: root/lib/bookmarks/bookmarksmodel.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-01-08 20:10:32 +0100
committerAqua-sama <aqua@iserlohn-fortress.net>2018-01-08 20:10:32 +0100
commitf628f4a2b1560e174a5a62ab54fa84365db3fecd (patch)
tree2fd67eb7b851a19eca93c036e61f14424cd61f8d /lib/bookmarks/bookmarksmodel.cpp
parentAddress bar completer doesn't show up if there's nothing to suggest (diff)
downloadsmolbote-f628f4a2b1560e174a5a62ab54fa84365db3fecd.tar.xz
BookmarksModel::insertItem
Diffstat (limited to 'lib/bookmarks/bookmarksmodel.cpp')
-rw-r--r--lib/bookmarks/bookmarksmodel.cpp69
1 files changed, 69 insertions, 0 deletions
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<BookmarkItem *>(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<BookmarkItem *>(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<BookmarkItem *>(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()) {