You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
4.1 KiB
121 lines
4.1 KiB
/* |
|
* Copyright (c) 2011 Montel Laurent <montel@kde.org> |
|
* |
|
* This program is free software; you can redistribute it and/or modify |
|
* it under the terms of the GNU General Public License as published by |
|
* the Free Software Foundation; version 2 of the License |
|
* |
|
* This program is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
* GNU General Public License for more details. |
|
* |
|
* You should have received a copy of the GNU General Public License |
|
* along with this program; if not, write to the Free Software |
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
* |
|
* In addition, as a special exception, the copyright holders give |
|
* permission to link the code of this program with any edition of |
|
* the Qt library by Trolltech AS, Norway (or with modified versions |
|
* of Qt that use the same license as Qt), and distribute linked |
|
* combinations including the two. You must obey the GNU General |
|
* Public License in all respects for all of the code used other than |
|
* Qt. If you modify this file, you may extend this exception to |
|
* your version of the file, but you are not obligated to do so. If |
|
* you do not wish to do so, delete this exception statement from |
|
* your version. |
|
*/ |
|
|
|
#include "tagselectdialog.h" |
|
#include "tag.h" |
|
#include "kmkernel.h" |
|
|
|
#include <KListWidgetSearchLine> |
|
|
|
#include <Nepomuk2/Resource> |
|
#include <Nepomuk2/ResourceManager> |
|
#include <Nepomuk2/Tag> |
|
#include <QGridLayout> |
|
#include <QListWidget> |
|
#include <akonadi/item.h> |
|
|
|
using namespace KMail; |
|
|
|
TagSelectDialog::TagSelectDialog( QWidget * parent, int numberOfSelectedMessages, const Akonadi::Item &selectedItem) |
|
: KDialog( parent ) |
|
{ |
|
setCaption( i18n( "Select Tags" ) ); |
|
setButtons( Ok|Cancel ); |
|
setDefaultButton( Ok ); |
|
setModal( true ); |
|
|
|
QWidget *mainWidget = new QWidget( this ); |
|
QGridLayout *mainLayout = new QGridLayout( mainWidget ); |
|
mainLayout->setSpacing( KDialog::spacingHint() ); |
|
mainLayout->setMargin( KDialog::marginHint() ); |
|
setMainWidget( mainWidget ); |
|
|
|
mListTag = new QListWidget( this ); |
|
KListWidgetSearchLine *listWidgetSearchLine = new KListWidgetSearchLine(this,mListTag); |
|
listWidgetSearchLine->setClickMessage(i18n("Search tag")); |
|
listWidgetSearchLine->setClearButtonShown(true); |
|
|
|
mainLayout->addWidget(listWidgetSearchLine); |
|
mainLayout->addWidget( mListTag ); |
|
|
|
QList<MailCommon::Tag::Ptr> tagList; |
|
foreach( const Nepomuk2::Tag &nepomukTag, Nepomuk2::Tag::allTags() ) { |
|
tagList.append( MailCommon::Tag::fromNepomuk( nepomukTag ) ); |
|
} |
|
qSort( tagList.begin(), tagList.end(), MailCommon::Tag::compare ); |
|
|
|
Nepomuk2::Resource itemResource( selectedItem.url() ); |
|
|
|
foreach( const MailCommon::Tag::Ptr &tag, tagList ) { |
|
if(tag->tagStatus) |
|
continue; |
|
QListWidgetItem *item = new QListWidgetItem(KIcon(tag->iconName), tag->tagName, mListTag ); |
|
item->setData(UrlTag, tag->nepomukResourceUri.toString()); |
|
item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable ); |
|
item->setCheckState( Qt::Unchecked ); |
|
mListTag->addItem( item ); |
|
|
|
if ( numberOfSelectedMessages == 1 ) { |
|
const bool hasTag = itemResource.tags().contains( Nepomuk2::Tag( tag->tagName ) ); |
|
item->setCheckState( hasTag ? Qt::Checked : Qt::Unchecked ); |
|
} else { |
|
item->setCheckState( Qt::Unchecked ); |
|
} |
|
} |
|
|
|
KConfigGroup group( KMKernel::self()->config(), "TagSelectDialog" ); |
|
const QSize size = group.readEntry( "Size", QSize() ); |
|
if ( size.isValid() ) { |
|
resize( size ); |
|
} else { |
|
resize( 500, 300 ); |
|
} |
|
|
|
} |
|
|
|
TagSelectDialog::~TagSelectDialog() |
|
{ |
|
KConfigGroup group( KMKernel::self()->config(), "TagSelectDialog" ); |
|
group.writeEntry( "Size", size() ); |
|
|
|
} |
|
|
|
QList<QString> TagSelectDialog::selectedTag() const |
|
{ |
|
QList<QString> lst; |
|
const int numberOfItems( mListTag->count() ); |
|
for ( int i = 0; i< numberOfItems;++i ) { |
|
QListWidgetItem *item = mListTag->item( i ); |
|
if ( item->checkState() == Qt::Checked ) { |
|
lst.append( item->data(UrlTag).toString() ); |
|
} |
|
} |
|
return lst; |
|
} |
|
|
|
#include "tagselectdialog.moc"
|
|
|