/* * 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 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); }