33 #include <mailcommon/tag/addtagdialog.h>
35 #include <KListWidgetSearchLine>
37 #include <Nepomuk2/Resource>
38 #include <Nepomuk2/ResourceManager>
39 #include <Nepomuk2/Tag>
40 #include <QGridLayout>
41 #include <QListWidget>
42 #include <akonadi/item.h>
44 using namespace KMail;
48 mNumberOfSelectedMessages(numberOfSelectedMessages),
49 mSelectedItem(selectedItem)
51 setCaption( i18n(
"Select Tags" ) );
52 setButtons( User1|Ok|Cancel );
53 setButtonText(User1, i18n(
"Add new tag..."));
54 setDefaultButton( Ok );
58 QGridLayout *mainLayout =
new QGridLayout( mainWidget );
59 mainLayout->setSpacing( KDialog::spacingHint() );
60 mainLayout->setMargin( KDialog::marginHint() );
61 setMainWidget( mainWidget );
64 KListWidgetSearchLine *listWidgetSearchLine =
new KListWidgetSearchLine(
this,mListTag);
65 listWidgetSearchLine->setClickMessage(i18n(
"Search tag"));
66 listWidgetSearchLine->setClearButtonShown(
true);
68 mainLayout->addWidget(listWidgetSearchLine);
69 mainLayout->addWidget( mListTag );
72 connect(
this, SIGNAL(user1Clicked()), SLOT(slotAddNewTag()));
74 KConfigGroup group(
KMKernel::self()->config(),
"TagSelectDialog" );
75 const QSize size = group.readEntry(
"Size", QSize(500, 300) );
76 if ( size.isValid() ) {
83 KConfigGroup group(
KMKernel::self()->config(),
"TagSelectDialog" );
84 group.writeEntry(
"Size", size() );
87 void TagSelectDialog::slotAddNewTag()
90 dialog->setTags(mTagList);
91 if ( dialog->exec() ) {
99 void TagSelectDialog::createTagList()
101 foreach(
const Nepomuk2::Tag &nepomukTag, Nepomuk2::Tag::allTags() ) {
102 mTagList.append( MailCommon::Tag::fromNepomuk( nepomukTag ) );
104 qSort( mTagList.begin(), mTagList.end(), MailCommon::Tag::compare );
106 Nepomuk2::Resource itemResource( mSelectedItem.url() );
108 foreach(
const MailCommon::Tag::Ptr &tag, mTagList ) {
112 item->setData(UrlTag, tag->nepomukResourceUri.toString());
113 item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable );
114 item->setCheckState( Qt::Unchecked );
115 mListTag->addItem( item );
117 if ( mNumberOfSelectedMessages == 1 ) {
118 const bool hasTag = itemResource.tags().contains( Nepomuk2::Tag( tag->tagName ) );
119 item->setCheckState( hasTag ? Qt::Checked : Qt::Unchecked );
121 item->setCheckState( Qt::Unchecked );
130 const int numberOfItems( mListTag->count() );
131 for (
int i = 0; i< numberOfItems;++i ) {
133 if ( item->checkState() == Qt::Checked ) {
134 lst.append( item->data(UrlTag).toString() );
140 #include "tagselectdialog.moc"
static KMKernel * self()
normal control stuff