summaryrefslogtreecommitdiff
path: root/src/bookmarks/bookmarkstreemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bookmarks/bookmarkstreemodel.cpp')
-rw-r--r--src/bookmarks/bookmarkstreemodel.cpp34
1 files changed, 7 insertions, 27 deletions
diff --git a/src/bookmarks/bookmarkstreemodel.cpp b/src/bookmarks/bookmarkstreemodel.cpp
index 444d2e7b..8086ff64 100644
--- a/src/bookmarks/bookmarkstreemodel.cpp
+++ b/src/bookmarks/bookmarkstreemodel.cpp
@@ -11,33 +11,14 @@
#include "bookmarkstreeformats.hpp"
#include <QBuffer>
#include <QDateTime>
-#include <QFile>
#include <QMimeData>
-BookmarkModel::BookmarkModel(const QString &path, QObject *parent)
- : QAbstractItemModel(parent), bookmarksFile(new QFile(path))
+BookmarkModel::BookmarkModel(QObject *parent) : QAbstractItemModel(parent)
{
rootItem = new BookmarksTreeItem(BookmarksTreeItem::Root, {.title = tr("Title"), .href = tr("Address")}, nullptr);
-
- if (bookmarksFile->open(QIODevice::ReadOnly | QIODevice::Text)) {
- if (path.endsWith(".xbel")) { readFns[Formats::FormatXbel](bookmarksFile, rootItem); }
- bookmarksFile->close();
- }
-}
-
-BookmarkModel::~BookmarkModel()
-{
- save(); // save on exit
- bookmarksFile->flush();
-
- delete rootItem;
- delete bookmarksFile;
}
-void BookmarkModel::load(const QIODevice *buffer)
-{
- if (buffer->isOpen() && buffer->isReadable()) { readFns[Formats::FormatXbel](buffer, rootItem); }
-}
+BookmarkModel::~BookmarkModel() { delete rootItem; }
QVariant BookmarkModel::headerData(int section, Qt::Orientation, int role) const
{
@@ -246,11 +227,10 @@ bool BookmarkModel::dropMimeData(const QMimeData *mimeData, Qt::DropAction actio
return true;
}
-void BookmarkModel::save()
+QList<QString> BookmarkModel::load(QIODevice *buffer) { return readFns[Formats::FormatXbel](buffer, rootItem); }
+
+void BookmarkModel::save(QIODevice *buffer)
{
- if (m_isModified) {
- bookmarksFile->open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate);
- m_isModified = !writeFns[Formats::FormatXbel](bookmarksFile, {rootItem});
- bookmarksFile->close();
- }
+ if (!buffer->isOpen() || !buffer->isWritable()) return;
+ if (m_isModified) m_isModified = !writeFns[Formats::FormatXbel](buffer, {rootItem});
}