File indexing completed on 2024-11-24 04:53:04

0001 /* Copyright (C) Roland Pallai <dap78@magex.hu>
0002 
0003    This file is part of the Trojita Qt IMAP e-mail client,
0004    http://trojita.flaska.net/
0005 
0006    This program is free software; you can redistribute it and/or
0007    modify it under the terms of the GNU General Public License as
0008    published by the Free Software Foundation; either version 2 of
0009    the License or (at your option) version 3 or any later version
0010    accepted by the membership of KDE e.V. (or its successor approved
0011    by the membership of KDE e.V.), which shall act as a proxy
0012    defined in Section 14 of version 3 of the license.
0013 
0014    This program is distributed in the hope that it will be useful,
0015    but WITHOUT ANY WARRANTY; without even the implied warranty of
0016    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0017    GNU General Public License for more details.
0018 
0019    You should have received a copy of the GNU General Public License
0020    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0021 */
0022 
0023 #include "TagAddDialog.h"
0024 #include "ui_TagAddDialog.h"
0025 
0026 namespace Gui
0027 {
0028 
0029 TagAddDialog::TagAddDialog(QWidget *parent, Imap::Mailbox::FavoriteTagsModel *m_favoriteTags) :
0030     QDialog(parent),
0031     ui(new Ui::TagAddDialog)
0032 {
0033     ui->setupUi(this);
0034 
0035     auto tagsLabel = ui->tagsLabel;
0036     tagsLabel->setTextFormat(Qt::RichText);
0037     tagsLabel->setOpenExternalLinks(false);
0038     tagsLabel->setWordWrap(true);
0039 
0040     QStringList tagCloud;
0041     for (int i = 0; i < m_favoriteTags->rowCount(); i++) {
0042         auto tagName = m_favoriteTags->tagNameByIndex(i);
0043         tagCloud.append(QStringLiteral("<a href=\"%1\" style=\"color: %2; text-decoration: none;\">%1</a>")
0044             .arg(tagName, m_favoriteTags->findBestColorForTags({tagName}).name()));
0045     }
0046 
0047     tagsLabel->setText(tagCloud.join(QStringLiteral(", ")));
0048 
0049     connect(tagsLabel, &QLabel::linkActivated, this, [=](const QString &link) {
0050         if (!ui->lineEdit->text().isEmpty())
0051             ui->lineEdit->setText(ui->lineEdit->text() + QStringLiteral(" "));
0052         ui->lineEdit->setText(ui->lineEdit->text() + link);
0053     });
0054 }
0055 
0056 TagAddDialog::~TagAddDialog()
0057 {
0058     delete ui;
0059 }
0060 
0061 QStringList TagAddDialog::getTags(QWidget *parent, Imap::Mailbox::FavoriteTagsModel *m_favoriteTags)
0062 {
0063     return TagAddDialog(parent, m_favoriteTags).getTags();
0064 }
0065 
0066 QStringList TagAddDialog::getTags()
0067 {
0068     QStringList tagList;
0069     if (exec()) {
0070         tagList += ui->lineEdit->text().split(QStringLiteral(" "), Qt::SkipEmptyParts);
0071         tagList.removeDuplicates();
0072     }
0073     return tagList;
0074 }
0075 
0076 }