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).
10 #include <QHBoxLayout>
11 #include <QInputDialog>
13 #include <QMessageBox>
14 #include <QPushButton>
16 #include "TagListWidget.h"
17 #include "FlowLayout.h"
18 #include "TagWidget.h"
23 TagListWidget::TagListWidget(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>"));
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
)
53 parentLayout
->removeWidget(addButton
);
55 foreach(const QString
&tagName
, list
) {
56 if (m_ignoredFlags
.contains(tagName
.toLower()))
58 TagWidget
*lbl
= new TagWidget(tagName
, QLatin1String("x"));
59 parentLayout
->addWidget(lbl
);
60 connect(lbl
, SIGNAL(removeClicked(QString
)), this, SIGNAL(tagRemoved(QString
)));
65 parentLayout
->addWidget(addButton
);
68 void TagListWidget::empty()
70 qDeleteAll(children
.begin(), children
.end());
74 void TagListWidget::newTagRequested()
76 QString tag
= QInputDialog::getText(this, tr("New Tag"), tr("Tag name:"));
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
));