From ccb647b4d0f7627bddf5df8b488ebcac2f463829 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 2 Jan 2017 13:57:44 +0100 Subject: Less boilerplate --- framework/domain/composercontroller.cpp | 20 ++++---------------- framework/domain/composercontroller.h | 11 ++--------- framework/domain/controller.h | 7 +++++++ framework/domain/foldercontroller.cpp | 3 +-- framework/domain/mailcontroller.cpp | 16 +++++----------- framework/domain/outboxcontroller.cpp | 3 +-- 6 files changed, 20 insertions(+), 40 deletions(-) (limited to 'framework') diff --git a/framework/domain/composercontroller.cpp b/framework/domain/composercontroller.cpp index 75396735..7122f201 100644 --- a/framework/domain/composercontroller.cpp +++ b/framework/domain/composercontroller.cpp @@ -82,12 +82,11 @@ public: ComposerController::ComposerController() : Kube::Controller(), - mSendAction{new Kube::ControllerAction}, - mSaveAsDraftAction{new Kube::ControllerAction}, + action_send{new Kube::ControllerAction{this, &ComposerController::send}}, + action_saveAsDraft{new Kube::ControllerAction{this, &ComposerController::saveAsDraft}}, mRecipientCompleter{new RecipientCompleter}, mIdentitySelector{new IdentitySelector{*this}} { - QObject::connect(mSaveAsDraftAction.data(), &Kube::ControllerAction::triggered, this, &ComposerController::saveAsDraft); updateSaveAsDraftAction(); // mSendAction->monitorProperty(); // mSendAction->monitorProperty([] (const QString &) -> bool{ @@ -96,7 +95,6 @@ ComposerController::ComposerController() // registerAction(&ComposerController::send); // actionDepends(); // TODO do in constructor - QObject::connect(mSendAction.data(), &Kube::ControllerAction::triggered, this, &ComposerController::send); QObject::connect(this, &ComposerController::toChanged, &ComposerController::updateSendAction); QObject::connect(this, &ComposerController::subjectChanged, &ComposerController::updateSendAction); @@ -166,16 +164,6 @@ void applyAddresses(const QString &list, std::functionsetEnabled(enabled); + sendAction()->setEnabled(enabled); } void ComposerController::send() @@ -242,7 +230,7 @@ void ComposerController::send() void ComposerController::updateSaveAsDraftAction() { - mSendAction->setEnabled(true); + sendAction()->setEnabled(true); } void ComposerController::saveAsDraft() diff --git a/framework/domain/composercontroller.h b/framework/domain/composercontroller.h index 2e74954e..161bcebc 100644 --- a/framework/domain/composercontroller.h +++ b/framework/domain/composercontroller.h @@ -65,8 +65,8 @@ class ComposerController : public Kube::Controller Q_PROPERTY (Selector* identitySelector READ identitySelector CONSTANT) //Q_PROPERTY (QValidator* subjectValidator READ subjectValidator CONSTANT) - Q_PROPERTY (Kube::ControllerAction* sendAction READ sendAction CONSTANT) - Q_PROPERTY (Kube::ControllerAction* saveAsDraftAction READ saveAsDraftAction CONSTANT) + KUBE_CONTROLLER_ACTION(send) + KUBE_CONTROLLER_ACTION(saveAsDraft) public: explicit ComposerController(); @@ -76,22 +76,15 @@ public: Q_INVOKABLE void loadMessage(const QVariant &draft, bool loadAsDraft); - Kube::ControllerAction* sendAction(); - Kube::ControllerAction* saveAsDraftAction(); - private slots: void updateSendAction(); - void send(); void updateSaveAsDraftAction(); - void saveAsDraft(); private: void recordForAutocompletion(const QByteArray &addrSpec, const QByteArray &displayName); void setMessage(const QSharedPointer &msg); KMime::Message::Ptr assembleMessage(); - QScopedPointer mSendAction; - QScopedPointer mSaveAsDraftAction; QScopedPointer mRecipientCompleter; QScopedPointer mIdentitySelector; }; diff --git a/framework/domain/controller.h b/framework/domain/controller.h index 77baa606..9370fdc7 100644 --- a/framework/domain/controller.h +++ b/framework/domain/controller.h @@ -50,6 +50,13 @@ class ControllerAction : public QObject { Q_PROPERTY(bool enabled MEMBER mEnabled NOTIFY enabledChanged) public: ControllerAction(); + template + ControllerAction(const typename QtPrivate::FunctionPointer::Object *obj, Func slot) + : ControllerAction() + { + QObject::connect(this, &ControllerAction::triggered, obj, slot); + } + ~ControllerAction() = default; Q_INVOKABLE void execute(); diff --git a/framework/domain/foldercontroller.cpp b/framework/domain/foldercontroller.cpp index 45fb86a6..d06ccb52 100644 --- a/framework/domain/foldercontroller.cpp +++ b/framework/domain/foldercontroller.cpp @@ -25,9 +25,8 @@ SINK_DEBUG_AREA("foldercontroller"); FolderController::FolderController() : Kube::Controller(), - action_synchronize{new Kube::ControllerAction} + action_synchronize{new Kube::ControllerAction{this, &FolderController::synchronize}} { - QObject::connect(synchronizeAction(), &Kube::ControllerAction::triggered, this, &FolderController::synchronize); } void FolderController::synchronize() diff --git a/framework/domain/mailcontroller.cpp b/framework/domain/mailcontroller.cpp index 0163d41e..a65c2692 100644 --- a/framework/domain/mailcontroller.cpp +++ b/framework/domain/mailcontroller.cpp @@ -28,18 +28,12 @@ using namespace Sink::ApplicationDomain; MailController::MailController() : Kube::Controller(), - action_markAsRead{new Kube::ControllerAction}, - action_markAsImportant{new Kube::ControllerAction}, - action_moveToTrash{new Kube::ControllerAction}, - action_restoreFromTrash{new Kube::ControllerAction}, - action_remove{new Kube::ControllerAction} + action_markAsRead{new Kube::ControllerAction{this, &MailController::markAsRead}}, + action_markAsImportant{new Kube::ControllerAction{this, &MailController::markAsImportant}}, + action_moveToTrash{new Kube::ControllerAction{this, &MailController::moveToTrash}}, + action_restoreFromTrash{new Kube::ControllerAction{this, &MailController::restoreFromTrash}}, + action_remove{new Kube::ControllerAction{this, &MailController::remove}} { - QObject::connect(markAsReadAction(), &Kube::ControllerAction::triggered, this, &MailController::markAsRead); - QObject::connect(markAsImportantAction(), &Kube::ControllerAction::triggered, this, &MailController::markAsImportant); - QObject::connect(moveToTrashAction(), &Kube::ControllerAction::triggered, this, &MailController::moveToTrash); - QObject::connect(restoreFromTrashAction(), &Kube::ControllerAction::triggered, this, &MailController::restoreFromTrash); - QObject::connect(removeAction(), &Kube::ControllerAction::triggered, this, &MailController::remove); - QObject::connect(this, &MailController::mailChanged, &MailController::updateActions); updateActions(); } diff --git a/framework/domain/outboxcontroller.cpp b/framework/domain/outboxcontroller.cpp index 3b4f0e62..49cba54f 100644 --- a/framework/domain/outboxcontroller.cpp +++ b/framework/domain/outboxcontroller.cpp @@ -25,9 +25,8 @@ SINK_DEBUG_AREA("outboxcontroller"); OutboxController::OutboxController() : Kube::Controller(), - mSynchronizeOutboxAction{new Kube::ControllerAction} + mSynchronizeOutboxAction{new Kube::ControllerAction{this, &OutboxController::sendOutbox}} { - QObject::connect(mSynchronizeOutboxAction.data(), &Kube::ControllerAction::triggered, this, &OutboxController::sendOutbox); } Kube::ControllerAction* OutboxController::sendOutboxAction() const -- cgit v1.2.3