aboutsummaryrefslogtreecommitdiff
path: root/src/bookmarks/editbookmarkdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bookmarks/editbookmarkdialog.cpp')
-rw-r--r--src/bookmarks/editbookmarkdialog.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/bookmarks/editbookmarkdialog.cpp b/src/bookmarks/editbookmarkdialog.cpp
new file mode 100644
index 0000000..4461840
--- /dev/null
+++ b/src/bookmarks/editbookmarkdialog.cpp
@@ -0,0 +1,74 @@
+/*
+ * This file is part of smolbote. It's copyrighted by the contributors recorded
+ * in the version control history of the file, available from its original
+ * location: https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote
+ *
+ * SPDX-License-Identifier: GPL-3.0
+ */
+
+#include "editbookmarkdialog.h"
+#include "bookmarkitem.h"
+#include "bookmarkmodel.h"
+#include "ui_editbookmarkdialog.h"
+#include <QDateTime>
+
+EditBookmarkDialog::EditBookmarkDialog(BookmarkModel *model, const QModelIndex &index, QWidget *parent)
+ : QDialog(parent)
+ , ui(new Ui::EditBookmarkDialog)
+{
+ ui->setupUi(this);
+ setAttribute(Qt::WA_DeleteOnClose, true);
+
+ Q_CHECK_PTR(model);
+ m_model = model;
+ m_index = index;
+
+ ui->title->setText(model->data(index, BookmarkItem::Title, Qt::DisplayRole).toString());
+ connect(ui->title, &QLineEdit::editingFinished, this, [this]() {
+ titleChanged = true;
+ });
+
+ ui->address->setText(model->data(index, BookmarkItem::Href, Qt::DisplayRole).toString());
+ connect(ui->address, &QLineEdit::editingFinished, this, [this]() {
+ hrefChanged = true;
+ });
+
+ ui->tags->setText(model->data(index, BookmarkItem::Tags, Qt::DisplayRole).toStringList().join(", "));
+ connect(ui->tags, &QLineEdit::editingFinished, this, [this]() {
+ tagsChanged = true;
+ });
+
+ ui->description->setPlainText(model->data(index, BookmarkItem::Description, Qt::DisplayRole).toString());
+ connect(ui->description, &QPlainTextEdit::textChanged, this, [this]() {
+ descriptionChanged = true;
+ });
+
+ connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &EditBookmarkDialog::saveChanges);
+}
+
+EditBookmarkDialog::~EditBookmarkDialog()
+{
+ delete ui;
+}
+
+void EditBookmarkDialog::saveChanges()
+{
+ if(titleChanged) {
+ m_model->setData(m_index, ui->title->text(), BookmarkItem::Title, Qt::DisplayRole);
+ }
+
+ if(hrefChanged) {
+ m_model->setData(m_index, ui->address->text(), BookmarkItem::Href, Qt::DisplayRole);
+ }
+
+ if(tagsChanged) {
+ m_model->setData(m_index, ui->tags->text().split(", "), BookmarkItem::Tags, Qt::DisplayRole);
+ }
+
+ if(descriptionChanged) {
+ m_model->setData(m_index, ui->description->toPlainText(), BookmarkItem::Description, Qt::DisplayRole);
+ }
+
+ if(titleChanged || hrefChanged || tagsChanged || descriptionChanged)
+ m_model->setData(m_index, QDateTime::currentDateTime(), BookmarkItem::LastModified, Qt::DisplayRole);
+}