20 #include "collectionrequester.h"
21 #include "collectiondialog.h"
23 #include <klineedit.h>
25 #include <kpushbutton.h>
26 #include <kstandardshortcut.h>
28 #include <QtCore/QEvent>
29 #include <QtGui/QAction>
30 #include <QtGui/QApplication>
32 using namespace Akonadi;
34 class CollectionRequester::Private
37 Private( CollectionRequester *parent )
52 void _k_slotOpenDialog();
54 CollectionRequester *q;
55 Collection collection;
58 CollectionDialog *collectionDialog;
62 void CollectionRequester::Private::init()
66 edit =
new KLineEdit( q );
67 edit->setReadOnly(
true );
68 edit->setClickMessage( i18n(
"No Folder" ) );
69 edit->setClearButtonShown(
false );
70 edit->setFocusPolicy( Qt::NoFocus );
72 button =
new KPushButton( q );
73 button->setIcon( KIcon( QLatin1String(
"document-open" ) ) );
74 const int buttonSize = edit->sizeHint().height();
75 button->setFixedSize( buttonSize, buttonSize );
76 button->setToolTip( i18n(
"Open collection dialog" ) );
80 edit->installEventFilter( q );
81 q->setFocusProxy( button );
82 q->setFocusPolicy( Qt::StrongFocus );
84 q->connect( button, SIGNAL(clicked()), q, SLOT(_k_slotOpenDialog()) );
86 QAction *openAction =
new QAction( q );
87 openAction->setShortcut( KStandardShortcut::Open );
88 q->connect( openAction, SIGNAL(triggered(
bool)), q, SLOT(_k_slotOpenDialog()) );
90 collectionDialog =
new CollectionDialog( q );
91 collectionDialog->setCaption( i18n(
"Select a collection" ) );
92 collectionDialog->setSelectionMode( QAbstractItemView::SingleSelection );
95 void CollectionRequester::Private::_k_slotOpenDialog()
97 CollectionDialog *dlg = collectionDialog;
99 if ( dlg->exec() != QDialog::Accepted )
102 const Akonadi::Collection collection = dlg->selectedCollection();
103 q->setCollection( collection );
104 emit q->collectionChanged( collection );
107 CollectionRequester::CollectionRequester( QWidget *parent )
109 d( new Private( this ) )
115 CollectionRequester::CollectionRequester(
const Akonadi::Collection &collection, QWidget *parent )
117 d( new Private( this ) )
120 setCollection( collection );
124 CollectionRequester::~CollectionRequester()
130 Collection CollectionRequester::collection()
const
132 return d->collection;
136 void CollectionRequester::setCollection(
const Collection& collection )
138 d->collection = collection;
139 d->edit->setText( collection.isValid() ? collection.name() : QString() );
140 emit collectionChanged( collection );
143 void CollectionRequester::setMimeTypeFilter(
const QStringList &mimeTypes )
145 if ( d->collectionDialog )
146 d->collectionDialog->setMimeTypeFilter( mimeTypes );
149 QStringList CollectionRequester::mimeTypeFilter()
const
151 if ( d->collectionDialog )
152 return d->collectionDialog->mimeTypeFilter();
154 return QStringList();
157 void CollectionRequester::setAccessRightsFilter( Collection::Rights rights )
159 if ( d->collectionDialog )
160 d->collectionDialog->setAccessRightsFilter( rights );
163 Collection::Rights CollectionRequester::accessRightsFilter()
const
165 if ( d->collectionDialog )
166 return d->collectionDialog->accessRightsFilter();
171 void CollectionRequester::changeCollectionDialogOptions( CollectionDialog::CollectionDialogOptions options )
173 if ( d->collectionDialog )
174 d->collectionDialog->changeCollectionDialogOptions( options );
177 #include "collectionrequester.moc"