20 #include "subscriptiondialog_p.h"
23 #include "recursivecollectionfilterproxymodel.h"
24 #include "subscriptionjob_p.h"
25 #include "subscriptionmodel_p.h"
29 #include <ksharedconfig.h>
31 #include <klocalizedstring.h>
33 #include <QVBoxLayout>
34 #include <QHBoxLayout>
36 #ifndef KDEPIM_MOBILE_UI
37 #include <klineedit.h>
38 #include <KPushButton>
39 #include <krecursivefilterproxymodel.h>
40 #include <QHeaderView>
45 #include <kdescendantsproxymodel.h>
47 #include <QSortFilterProxyModel>
52 CheckableFilterProxyModel(
QObject *parent = 0)
67 using namespace Akonadi;
72 class SubscriptionDialog::Private
85 connect(job, SIGNAL(result(KJob*)), q, SLOT(subscriptionResult(KJob*)));
88 void subscriptionResult(KJob *job)
92 kWarning() << job->errorString();
99 collectionView->setEnabled(
true);
100 #ifndef KDEPIM_MOBILE_UI
101 collectionView->expandAll();
103 q->enableButtonOk(
true);
106 void slotSetPattern(
const QString &text)
108 filterRecursiveCollectionFilter->setSearchPattern(text);
109 #ifndef KDEPIM_MOBILE_UI
110 collectionView->expandAll();
114 void slotSetIncludeCheckedOnly(
bool checked)
116 filterRecursiveCollectionFilter->setIncludeCheckedOnly(checked);
121 KConfigGroup group(KGlobal::config(),
"SubscriptionDialog");
122 group.writeEntry(
"Size", q->size());
127 KConfigGroup group(KGlobal::config(),
"SubscriptionDialog");
128 const QSize sizeDialog = group.readEntry(
"Size",
QSize(400, 300));
130 q->resize(sizeDialog);
134 void slotUnSubscribe();
135 void slotSubscribe();
138 #ifndef KDEPIM_MOBILE_UI
140 KPushButton *subscribe;
141 KPushButton *unSubscribe;
150 void SubscriptionDialog::Private::slotSubscribe()
152 #ifndef KDEPIM_MOBILE_UI
153 QModelIndexList list = collectionView->selectionModel()->selectedIndexes();
155 model->setData(index, Qt::Checked, Qt::CheckStateRole);
157 collectionView->setFocus();
161 void SubscriptionDialog::Private::slotUnSubscribe()
163 #ifndef KDEPIM_MOBILE_UI
164 QModelIndexList list = collectionView->selectionModel()->selectedIndexes();
166 model->setData(index, Qt::Unchecked, Qt::CheckStateRole);
168 collectionView->setFocus();
174 , d(new Private(this))
181 , d(new Private(this))
188 d->model->showHiddenCollection(showHidden);
191 void SubscriptionDialog::init(
const QStringList &mimetypes)
193 enableButtonOk(
false);
194 setCaption(i18n(
"Local Subscriptions"));
198 setMainWidget(mainWidget);
202 #ifndef KDEPIM_MOBILE_UI
203 d->filterRecursiveCollectionFilter
205 d->filterRecursiveCollectionFilter->setDynamicSortFilter(
true);
206 d->filterRecursiveCollectionFilter->setSourceModel(d->model);
207 d->filterRecursiveCollectionFilter->setFilterCaseSensitivity(Qt::CaseInsensitive);
209 d->filterRecursiveCollectionFilter->addContentMimeTypeInclusionFilters(mimetypes);
212 d->collectionView =
new QTreeView(mainWidget);
213 d->collectionView->setEditTriggers(QAbstractItemView::NoEditTriggers);
214 d->collectionView->header()->hide();
215 d->collectionView->setModel(d->filterRecursiveCollectionFilter);
216 d->collectionView->setSelectionMode(QAbstractItemView::ExtendedSelection);
222 KLineEdit *lineEdit =
new KLineEdit(mainWidget);
223 lineEdit->setClearButtonShown(
true);
224 lineEdit->setFocus();
225 connect(lineEdit, SIGNAL(textChanged(
QString)),
226 this, SLOT(slotSetPattern(
QString)));
229 connect(checkBox, SIGNAL(clicked(
bool)),
230 this, SLOT(slotSetIncludeCheckedOnly(
bool)));
234 hboxLayout->
addWidget(d->collectionView);
237 d->subscribe =
new KPushButton(i18n(
"Subscribe"));
238 subscribeButtonLayout->
addWidget(d->subscribe);
239 connect(d->subscribe, SIGNAL(clicked()),
this, SLOT(slotSubscribe()));
241 d->unSubscribe =
new KPushButton(i18n(
"Unsubscribe"));
242 subscribeButtonLayout->
addWidget(d->unSubscribe);
243 connect(d->unSubscribe, SIGNAL(clicked()),
this, SLOT(slotUnSubscribe()));
244 subscribeButtonLayout->
addItem(
new QSpacerItem(5, 5, QSizePolicy::Minimum, QSizePolicy::Expanding));
246 hboxLayout->
addLayout(subscribeButtonLayout);
253 d->filterRecursiveCollectionFilter
256 d->filterRecursiveCollectionFilter->addContentMimeTypeInclusionFilters(mimetypes);
259 d->filterRecursiveCollectionFilter->setSourceModel(d->model);
261 KDescendantsProxyModel *flatModel =
new KDescendantsProxyModel(
this);
262 flatModel->setDisplayAncestorData(
true);
264 flatModel->setSourceModel(d->filterRecursiveCollectionFilter);
266 CheckableFilterProxyModel *checkableModel =
new CheckableFilterProxyModel(
this);
267 checkableModel->setSourceModel(flatModel);
269 d->collectionView =
new QListView(mainWidget);
271 d->collectionView->setModel(checkableModel);
272 mainLayout->
addWidget(d->collectionView);
275 connect(d->model, SIGNAL(loaded()), SLOT(modelLoaded()));
276 connect(
this, SIGNAL(okClicked()), SLOT(done()));
277 connect(
this, SIGNAL(cancelClicked()), SLOT(deleteLater()));
288 #include "moc_subscriptiondialog_p.cpp"
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const =0
void subscribe(const Collection::List &collections)
Subscribes to the given list of collections.
~SubscriptionDialog()
Destroys the subscription dialog.
void showHiddenCollection(bool showHidden)
static void widgetNeedsAkonadi(QWidget *widget)
Disable the given widget when Akonadi is not operational and show an error overlay (given enough spac...
virtual void addItem(QLayoutItem *item)
A model to filter out collections of non-matching content types.
SubscriptionDialog(QWidget *parent=0)
Creates a new subscription dialog.
virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
QAbstractItemModel * sourceModel() const
Job to manipulate the local subscription state of a set of collections.
void unsubscribe(const Collection::List &collections)
Unsubscribes from the given list of collections.
virtual Qt::ItemFlags flags(const QModelIndex &index) const
void addLayout(QLayout *layout, int stretch)