Merge "persistent color scheme selection"
[trojita.git] / src / Gui / TagAddDialog.cpp
bloba1c20f899b39b3243013995da34f65f89b49525e
1 /* Copyright (C) Roland Pallai <dap78@magex.hu>
3 This file is part of the Trojita Qt IMAP e-mail client,
4 http://trojita.flaska.net/
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License as
8 published by the Free Software Foundation; either version 2 of
9 the License or (at your option) version 3 or any later version
10 accepted by the membership of KDE e.V. (or its successor approved
11 by the membership of KDE e.V.), which shall act as a proxy
12 defined in Section 14 of version 3 of the license.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>.
23 #include "TagAddDialog.h"
24 #include "ui_TagAddDialog.h"
26 namespace Gui
29 TagAddDialog::TagAddDialog(QWidget *parent, Imap::Mailbox::FavoriteTagsModel *m_favoriteTags) :
30 QDialog(parent),
31 ui(new Ui::TagAddDialog)
33 ui->setupUi(this);
35 auto tagsLabel = ui->tagsLabel;
36 tagsLabel->setTextFormat(Qt::RichText);
37 tagsLabel->setOpenExternalLinks(false);
38 tagsLabel->setWordWrap(true);
40 QStringList tagCloud;
41 for (int i = 0; i < m_favoriteTags->rowCount(); i++) {
42 auto tagName = m_favoriteTags->tagNameByIndex(i);
43 tagCloud.append(QStringLiteral("<a href=\"%1\" style=\"color: %2; text-decoration: none;\">%1</a>")
44 .arg(tagName, m_favoriteTags->findBestColorForTags({tagName}).name()));
47 tagsLabel->setText(tagCloud.join(QStringLiteral(", ")));
49 connect(tagsLabel, &QLabel::linkActivated, this, [=](const QString &link) {
50 if (!ui->lineEdit->text().isEmpty())
51 ui->lineEdit->setText(ui->lineEdit->text() + QStringLiteral(" "));
52 ui->lineEdit->setText(ui->lineEdit->text() + link);
53 });
56 TagAddDialog::~TagAddDialog()
58 delete ui;
61 QStringList TagAddDialog::getTags(QWidget *parent, Imap::Mailbox::FavoriteTagsModel *m_favoriteTags)
63 return TagAddDialog(parent, m_favoriteTags).getTags();
66 QStringList TagAddDialog::getTags()
68 QStringList tagList;
69 if (exec()) {
70 tagList += ui->lineEdit->text().split(QStringLiteral(" "), QString::SkipEmptyParts);
71 tagList.removeDuplicates();
73 return tagList;