Navigation Menu

Skip to content

Commit

Permalink
Widgets|libappfw: Added CallbackAction for calling a std::function
Browse files Browse the repository at this point in the history
  • Loading branch information
skyjake committed Jan 29, 2016
1 parent 1e65efd commit 0e7b1c3
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 0 deletions.
1 change: 1 addition & 0 deletions doomsday/sdk/libappfw/include/de/CallbackAction
@@ -0,0 +1 @@
#include "framework/callbackaction.h"
45 changes: 45 additions & 0 deletions doomsday/sdk/libappfw/include/de/framework/callbackaction.h
@@ -0,0 +1,45 @@
/** @file callbackaction.h Action with a std::function callback.
*
* @authors Copyright (c) 2016 Jaakko Keränen <jaakko.keranen@iki.fi>
*
* @par License
* LGPL: http://www.gnu.org/licenses/lgpl.html
*
* <small>This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 3 of the License, or (at your
* option) any later version. This program is distributed in the hope that it
* will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
* http://www.gnu.org/licenses</small>
*/

#ifndef LIBAPPFW_CALLBACKACTION_H
#define LIBAPPFW_CALLBACKACTION_H

#include <de/Action>
#include <functional>

namespace de {

/**
* Action that calls a callback function when triggered.
*/
class CallbackAction : public Action
{
public:
typedef std::function<void ()> Callback;

public:
CallbackAction(Callback callback);
void trigger() override;

private:
Callback _func;
};

} // namespace de

#endif // LIBAPPFW_CALLBACKACTION_H
33 changes: 33 additions & 0 deletions doomsday/sdk/libappfw/src/callbackaction.cpp
@@ -0,0 +1,33 @@
/** @file callbackaction.cpp Action with a std::function callback.
*
* @authors Copyright (c) 2016 Jaakko Keränen <jaakko.keranen@iki.fi>
*
* @par License
* LGPL: http://www.gnu.org/licenses/lgpl.html
*
* <small>This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 3 of the License, or (at your
* option) any later version. This program is distributed in the hope that it
* will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy of
* the GNU Lesser General Public License along with this program; if not, see:
* http://www.gnu.org/licenses</small>
*/

#include "de/CallbackAction"

namespace de {

CallbackAction::CallbackAction(Callback callback)
: _func(callback)
{}

void CallbackAction::trigger()
{
Action::trigger();
_func();
}

} // namespace de

0 comments on commit 0e7b1c3

Please sign in to comment.