5#include "aggregationcombobox.h"
6#include "aggregationcombobox_p.h"
8#include "core/aggregation.h"
9#include "core/manager.h"
10#include "messagelistsettings.h"
11#include "storagemodel.h"
14using namespace MessageList::Utils;
16AggregationComboBox::AggregationComboBox(
QWidget *parent)
18 , d(new AggregationComboBoxPrivate(this))
20 if (Manager::instance()) {
21 d->slotLoadAggregations();
27AggregationComboBox::~AggregationComboBox() =
default;
29QString AggregationComboBox::currentAggregation()
const
34void AggregationComboBox::writeDefaultConfig()
const
36 KConfigGroup group(MessageListSettings::self()->config(), QStringLiteral(
"MessageListView::StorageModelAggregations"));
38 const QString aggregationID = currentAggregation();
39 group.writeEntry(QStringLiteral(
"DefaultSet"), aggregationID);
41 if (Manager::instance()) {
42 Manager::instance()->aggregationsConfigurationCompleted();
46void AggregationComboBox::writeStorageModelConfig(MessageList::Core::StorageModel *storageModel,
bool isPrivateSetting)
const
48 writeStorageModelConfig(storageModel->
id(), isPrivateSetting);
51void AggregationComboBox::writeStorageModelConfig(
const QString &
id,
bool isPrivateSetting)
const
53 if (Manager::instance()) {
55 QString aggregationID;
56 if (isPrivateSetting) {
57 aggregationID = currentAggregation();
59 aggregationID = Manager::instance()->defaultAggregation()->id();
61 Manager::instance()->saveAggregationForStorageModel(
id, aggregationID, isPrivateSetting);
62 Manager::instance()->aggregationsConfigurationCompleted();
66void AggregationComboBox::readStorageModelConfig(
const QString &
id,
bool &isPrivateSetting)
68 if (Manager::instance()) {
69 const Aggregation *aggregation = Manager::instance()->aggregationForStorageModel(
id, &isPrivateSetting);
70 d->setCurrentAggregation(aggregation);
74void AggregationComboBox::readStorageModelConfig(MessageList::Core::StorageModel *storageModel,
bool &isPrivateSetting)
76 readStorageModelConfig(storageModel->
id(), isPrivateSetting);
79void AggregationComboBox::readStorageModelConfig(
const Akonadi::Collection &col,
bool &isPrivateSetting)
86void AggregationComboBox::selectDefault()
88 if (Manager::instance()) {
89 const Aggregation *defaultAggregation = Manager::instance()->defaultAggregation();
90 d->setCurrentAggregation(defaultAggregation);
94void AggregationComboBox::slotLoadAggregations()
96 d->slotLoadAggregations();
99void AggregationComboBoxPrivate::slotLoadAggregations()
101 if (!Manager::instance()) {
107 QList<Aggregation *> aggregations = Manager::instance()->aggregations().values();
108 std::sort(aggregations.
begin(), aggregations.
end(), MessageList::Core::Aggregation::compareName);
110 for (
const Aggregation *aggregation : std::as_const(aggregations)) {
111 q->addItem(aggregation->
name(), QVariant(aggregation->
id()));
115void AggregationComboBoxPrivate::setCurrentAggregation(
const Aggregation *aggregation)
117 Q_ASSERT(aggregation !=
nullptr);
119 const QString aggregationID = aggregation->
id();
120 const int aggregationIndex = q->findData(QVariant(aggregationID));
121 q->setCurrentIndex(aggregationIndex);
124#include "moc_aggregationcombobox.cpp"
const QString & id() const
Returns the unique id of this OptionSet.
const QString & name() const
Returns the name of this OptionSet.
virtual QString id() const =0
Returns an unique id for this Storage collection.
The implementation independent part of the MessageList library.
QVariant itemData(int index, int role) const const
QString number(double n, char format, int precision)
QString toString() const const