Task.h 697 Bytes
Newer Older
Valentin Platzgummer's avatar
Valentin Platzgummer committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
#ifndef COMMAND_H
#define COMMAND_H

#include <functional>
#include <future>

#include <QVariant>

namespace nemo_interface {

class Task {
public:
  typedef std::function<void(std::promise<QVariant> p)> Functor;
  typedef std::function<bool()> BooleanFunctor;

  Task(const Functor &onExec);

  void exec(std::promise<QVariant> p);
  bool isReady();   // default == true
  bool isExpired(); // default == false

  void setOnExec(const Functor &onExec);
  void setIsReady(const BooleanFunctor &isReady);
  void setIsExpired(const BooleanFunctor &isExpired);

private:
  Functor _onExec;
  BooleanFunctor _isExpired;
  BooleanFunctor _isReady;
};
} // namespace nemo_interface

#endif // COMMAND_H