make the setings dialog adapt to the pages size
[trojita.git] / src / Gui / TagListWidget.cpp
blobd6763f2bbc282499981c8f3fd4790eed8a8dfc78
1 /* Copyright (C) 2012 Mildred <mildred-pub@mildred.fr>
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 do what you want with it, including
7 changing its license (which is this text right here).
8 */
10 #include <QHBoxLayout>
11 #include <QInputDialog>
12 #include <QLabel>
13 #include <QMessageBox>
14 #include <QPushButton>
16 #include "TagListWidget.h"
17 #include "FlowLayout.h"
18 #include "TagWidget.h"
20 namespace Gui
23 TagListWidget::TagListWidget(QWidget *parent) :
24 QWidget(parent)
26 setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
27 parentLayout = new FlowLayout(this, 0);
28 setLayout(parentLayout);
30 addButton = new TagWidget(QLatin1String("+"));
31 connect(addButton, SIGNAL(clicked()), this, SLOT(newTagRequested()));
33 QLabel *lbl = new QLabel(tr("<b>Tags:</b>"));
34 lbl->setIndent(5);
35 parentLayout->addWidget(lbl);
36 parentLayout->addWidget(addButton);
38 m_ignoredFlags.insert(QLatin1String("\\seen"));
39 m_ignoredFlags.insert(QLatin1String("\\recent"));
40 m_ignoredFlags.insert(QLatin1String("\\deleted"));
41 m_ignoredFlags.insert(QLatin1String("\\answered"));
42 m_ignoredFlags.insert(QLatin1String("\\flagged"));
43 m_ignoredFlags.insert(QLatin1String("\\draft"));
44 m_ignoredFlags.insert(QLatin1String("$mdnsent"));
45 m_ignoredFlags.insert(QLatin1String("$forwarded"));
46 m_ignoredFlags.insert(QLatin1String("$submitpending"));
47 m_ignoredFlags.insert(QLatin1String("$submitted"));
50 void TagListWidget::setTagList(QStringList list)
52 empty();
53 parentLayout->removeWidget(addButton);
55 foreach(const QString &tagName, list) {
56 if (m_ignoredFlags.contains(tagName.toLower()))
57 continue;
58 TagWidget *lbl = new TagWidget(tagName, QLatin1String("x"));
59 parentLayout->addWidget(lbl);
60 connect(lbl, SIGNAL(removeClicked(QString)), this, SIGNAL(tagRemoved(QString)));
62 children << lbl;
65 parentLayout->addWidget(addButton);
68 void TagListWidget::empty()
70 qDeleteAll(children.begin(), children.end());
71 children.clear();
74 void TagListWidget::newTagRequested()
76 QString tag = QInputDialog::getText(this, tr("New Tag"), tr("Tag name:"));
77 if (tag.isEmpty()) {
78 return;
80 if (m_ignoredFlags.contains(tag.toLower())) {
81 QMessageBox::warning(this, tr("Invalid tag value"),
82 tr("Tag name %1 is a reserved name which cannot be manipulated this way.").arg(tag));
83 return;
86 emit tagAdded(tag);