From 18bb7f3549e4e2f03a7110df8b5f0cfdf969f64c Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 24 Jan 2017 10:47:45 +0100 Subject: Make clear on the controller work --- framework/domain/composercontroller.cpp | 18 +++++++++++++++--- framework/domain/composercontroller.h | 3 +++ framework/domain/controller.h | 2 +- framework/domain/selector.cpp | 5 +++++ framework/domain/selector.h | 2 ++ 5 files changed, 26 insertions(+), 4 deletions(-) (limited to 'framework/domain') diff --git a/framework/domain/composercontroller.cpp b/framework/domain/composercontroller.cpp index f1c04ea9..85faf235 100644 --- a/framework/domain/composercontroller.cpp +++ b/framework/domain/composercontroller.cpp @@ -97,9 +97,20 @@ ComposerController::ComposerController() QObject::connect(this, &ComposerController::toChanged, &ComposerController::updateSendAction); QObject::connect(this, &ComposerController::subjectChanged, &ComposerController::updateSendAction); + QObject::connect(this, &ComposerController::accountIdChanged, &ComposerController::updateSendAction); + QObject::connect(this, &ComposerController::toChanged, &ComposerController::updateSaveAsDraftAction); + QObject::connect(this, &ComposerController::subjectChanged, &ComposerController::updateSaveAsDraftAction); + QObject::connect(this, &ComposerController::accountIdChanged, &ComposerController::updateSaveAsDraftAction); updateSendAction(); } +void ComposerController::clear() +{ + Controller::clear(); + //Reapply account and identity from selection + mIdentitySelector->reapplyCurrentIndex(); +} + Completer *ComposerController::recipientCompleter() const { return mRecipientCompleter.data(); @@ -199,7 +210,7 @@ KMime::Message::Ptr ComposerController::assembleMessage() void ComposerController::updateSendAction() { - auto enabled = !getTo().isEmpty() && !getSubject().isEmpty(); + auto enabled = !getTo().isEmpty() && !getSubject().isEmpty() && !getAccountId().isEmpty(); sendAction()->setEnabled(enabled); } @@ -214,6 +225,7 @@ void ComposerController::send() using namespace Sink; using namespace Sink::ApplicationDomain; + Q_ASSERT(!accountId.isEmpty()); Query query; query.containsFilter(ApplicationDomain::ResourceCapabilities::Mail::transport); query.filter(accountId); @@ -241,7 +253,8 @@ void ComposerController::send() void ComposerController::updateSaveAsDraftAction() { - sendAction()->setEnabled(true); + bool enabled = !getAccountId().isEmpty(); + sendAction()->setEnabled(enabled); } void ComposerController::saveAsDraft() @@ -254,7 +267,6 @@ void ComposerController::saveAsDraft() if (!message) { SinkWarning() << "Failed to get the mail: "; return; - // return KAsync::error(1, "Failed to get the mail."); } using namespace Sink; diff --git a/framework/domain/composercontroller.h b/framework/domain/composercontroller.h index 161bcebc..92467d05 100644 --- a/framework/domain/composercontroller.h +++ b/framework/domain/composercontroller.h @@ -76,6 +76,9 @@ public: Q_INVOKABLE void loadMessage(const QVariant &draft, bool loadAsDraft); +public slots: + virtual void clear() Q_DECL_OVERRIDE; + private slots: void updateSendAction(); void updateSaveAsDraftAction(); diff --git a/framework/domain/controller.h b/framework/domain/controller.h index 9370fdc7..8e6d7155 100644 --- a/framework/domain/controller.h +++ b/framework/domain/controller.h @@ -77,7 +77,7 @@ public: virtual ~Controller() = default; public slots: - void clear(); + virtual void clear(); signals: void done(); diff --git a/framework/domain/selector.cpp b/framework/domain/selector.cpp index ddb23744..d021095b 100644 --- a/framework/domain/selector.cpp +++ b/framework/domain/selector.cpp @@ -24,3 +24,8 @@ Selector::Selector(QAbstractItemModel *model) : mModel{model} { QQmlEngine::setObjectOwnership(mModel, QQmlEngine::CppOwnership); } + +void Selector::reapplyCurrentIndex() +{ + setCurrentIndex(currentIndex()); +} diff --git a/framework/domain/selector.h b/framework/domain/selector.h index 77c47ba7..fedb91d2 100644 --- a/framework/domain/selector.h +++ b/framework/domain/selector.h @@ -40,6 +40,8 @@ public: setCurrent(mModel->index(mCurrentIndex, 0)); } + void reapplyCurrentIndex(); + int currentIndex() { return mCurrentIndex; } virtual void setCurrent(const QModelIndex &) = 0; -- cgit v1.2.3