aboutsummaryrefslogtreecommitdiff
path: root/src/bookmarks/editbookmarkdialog.cpp
blob: 4461840f50cac9253cc8a8b0191f799325ed819b (plain)
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);
}