1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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);
}
|