class AppAction : public PluginAction {
public:
- AppAction() = default;
+ AppAction(const std::string &name)
+ : PluginAction(name)
+ {
+ }
virtual ~AppAction() = default;
virtual int set(const std::string &val)
const std::string AppActionLaunch::NAME = "launch";
std::list<std::string> AppActionLaunch::appidList;
+
+AppActionLaunch::AppActionLaunch()
+ : AppAction(NAME)
+{
+}
+
void AppActionLaunch::appContextStatusCallback(app_context_h app_context, app_context_status_e status, void *user_data)
{
- char *appid = NULL;
DBG("appContextStatusCallback(status:%d)", status);
- if (app_context_get_app_id(app_context, &appid) != APP_MANAGER_ERROR_NONE) {
- ERR("Failed to get appid\n");
+ if (APP_CONTEXT_STATUS_TERMINATED != status)
return;
- }
- DBG("app_context_cb(appid:%s)", appid);
- if (APP_CONTEXT_STATUS_TERMINATED == status) {
- DBG("APP_CONTEXT_STATUS_TERMINATED appid : %s\n", appid);
- appidList.remove(appid);
+ char *appid = NULL;
+ int ret = app_context_get_app_id(app_context, &appid);
+ if (APP_MANAGER_ERROR_NONE != ret) {
+ ERR("app_context_get_app_id() Fail(%d)", ret);
+ return;
}
+ appidList.remove(appid);
+
free(appid);
return;
}
-AppActionLaunch::AppActionLaunch()
-{
- setName(NAME);
-}
-
int AppActionLaunch::set(const std::string &val)
{
DBG("id(%s)", val.c_str());
}
int ret = app_manager_unset_app_context_status_cb(AppActionLaunch::appContextStatusCallback, appID.c_str());
- if (APP_MANAGER_ERROR_NONE != ret) {
+ if (APP_MANAGER_ERROR_NONE != ret)
ERR("app_manager_unset_app_context_status_cb() Fail(%s)", get_error_message(ret));
- return MODES_ERROR_SYSTEM;
- }
appidList.remove(appID);
}
return MODES_ERROR_NONE;
}
+
+std::string AppActionLaunch::serialize()
+{
+ return appID;
+}
+
+int AppActionLaunch::parse(const std::string &archive)
+{
+ appID = archive;
+ return MODES_ERROR_NONE;
+}
class AppActionLaunch : public AppAction {
public:
+ static const std::string NAME;
AppActionLaunch();
- virtual int set(const std::string &val) override;
- virtual int get(std::string *val) override;
- virtual int undo() override;
-
- static const std::string NAME;
+ int set(const std::string &val) override;
+ int get(std::string *val) override;
+ int undo() override;
+ std::string serialize() override;
+ int parse(const std::string &data) override;
static void appContextStatusCallback(app_context_h app_context, app_context_status_e status, void *user_data);
-
private:
std::string appID;
static std::list<std::string> appidList;
AppPlugin();
~AppPlugin();
- int set(const std::string &key, const std::string &val, PluginAction **pluginAction) override;
- int undo(PluginAction *pluginAction) override;
-
+ int set(const std::string &key, const std::string &val, PluginAction **piAction) override;
+ int undo(PluginAction *piAction) override;
+ PluginAction* getUndoAction(const std::string &key, const std::string &info) override;
private:
AppFactory appFactory;
};
{
}
-int AppPlugin::set(const std::string &key, const std::string &val, PluginAction **pluginAction)
+int AppPlugin::set(const std::string &key, const std::string &val, PluginAction **piAction)
{
AppAction *action = appFactory.createAction(key);
RETVM_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER, "action(%s) is null", key.c_str());
DBG("set [%s, %s]", key.c_str(), val.c_str());
int ret = action->set(val);
- if (pluginAction)
- *pluginAction = action;
+ if (piAction)
+ *piAction = action;
else
appFactory.destroyAction(action);
return ret;
}
-int AppPlugin::undo(PluginAction *pluginAction)
+int AppPlugin::undo(PluginAction *piAction)
{
- AppAction *action = static_cast<AppAction*>(pluginAction);
+ AppAction *action = static_cast<AppAction*>(piAction);
RETV_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER);
DBG("Action(%s) undo", action->getName().c_str());
return ret;
}
+
+PluginAction* AppPlugin::getUndoAction(const std::string &key, const std::string &info)
+{
+ AppAction *action = appFactory.createAction(key);
+ RETVM_IF(nullptr == action, nullptr, "action(%s) is null", key.c_str());
+
+ int ret = action->parse(info);
+ if (MODES_ERROR_NONE != ret) {
+ ERR("Action(%s) parse(%s) Fail(%d)", key.c_str(), info.c_str(), ret);
+ appFactory.destroyAction(action);
+ return nullptr;
+ }
+
+ return action;
+}
MODES_NAMESPACE_USE;
-BtAction::BtAction()
+BtAction::BtAction(const std::string &name)
+ : PluginAction(name)
{
int btRet = bt_initialize();
if (BT_ERROR_NONE != btRet) {
class BtAction : public PluginAction {
public:
- BtAction();
+ BtAction(const std::string &name);
virtual ~BtAction();
virtual int set(bool val);
MODES_NAMESPACE_USE;
-void BtActionAudioConnect::connectionStateChangedCb(int result, bool connected, const char *remote_address, bt_audio_profile_type_e type, void *user_data)
-{
- INFO("remote_address: %s", remote_address);
-
- if (BT_ERROR_NONE != result) {
- ERR("Connection_state_changed_cb() Fail(%d)", result);
- }
-}
+const std::string BtActionAudioConnect::NAME = "audioConnect";
BtActionAudioConnect::BtActionAudioConnect()
+ : BtAction(NAME)
{
- setName("audioConnect");
-
bt_audio_initialize();
int btRet = bt_audio_set_connection_state_changed_cb(connectionStateChangedCb, this);
if (BT_ERROR_NONE != btRet) {
}
}
+void BtActionAudioConnect::connectionStateChangedCb(int result, bool connected,
+ const char *remote_address, bt_audio_profile_type_e type, void *user_data)
+{
+ INFO("remote_address: %s", remote_address);
+
+ if (BT_ERROR_NONE != result) {
+ ERR("Connection_state_changed_cb() Fail(%d)", result);
+ }
+}
+
bool BtActionAudioConnect::isBtAdapterEnabled()
{
bt_adapter_state_e state;
for (int i = 0; i < deviceInfo->service_count; i++) {
bt_get_uuid_name(deviceInfo->service_uuid[i], &str);
INFO("[%d / %d] %s (%s)", i, deviceInfo->service_count,
- str ? str : "Unknown", deviceInfo->service_uuid[i]);
+ str ? str : "Unknown", deviceInfo->service_uuid[i]);
str = NULL;
}
}
class BtActionAudioConnect : public BtAction {
public:
+ static const std::string NAME;
BtActionAudioConnect();
- int set(const std::string &val) override;
+ int set(const std::string &val) override;
private:
bool isBtAdapterEnabled();
bt_device_info_s *getBondedDeviceInfo(const std::string &val);
*/
#include "BtActionPower.h"
-#include <algorithm>
+#include <sstream>
#include <modes_errors.h>
-#include "plugin-log.h"
#include <bluetooth_internal.h>
+#include "plugin-log.h"
MODES_NAMESPACE_USE;
#define SAFE_POINTER_ASSIGN( arg1, arg2) if ( arg1 != NULL ) { *arg1 = arg2; }
+const std::string BtActionPower::NAME = "power";
+
BtActionPower::BtActionPower()
- :undoVal(false)
+ : BtAction(NAME), undoVal(false)
{
- setName("power");
}
int BtActionPower::set(bool val)
{
return set(undoVal);
}
+
+std::string BtActionPower::serialize()
+{
+ std::ostringstream ostr;
+
+ ostr << undoVal;
+ return ostr.str();
+}
+
+int BtActionPower::parse(const std::string &archive)
+{
+ std::istringstream iss(archive);
+ iss >> undoVal;
+
+ return MODES_ERROR_NONE;
+}
class BtActionPower : public BtAction {
public:
+ static const std::string NAME;
BtActionPower();
int set(bool val) override;
int undo() override;
+ std::string serialize() override;
+ int parse(const std::string & archive) override;
private:
bool undoVal;
};
BtFactory::BtFactory()
{
- registerAction("power", BtActionEnum::POWER);
- registerAction("audioConnect", BtActionEnum::AUDIO_CONNECT);
+ actionMap[BtActionPower::NAME] = POWER;
+ actionMap[BtActionAudioConnect::NAME] = AUDIO_CONNECT;
}
BtAction* BtFactory::createAction(const std::string &key)
}
switch (search->second) {
- case BtActionEnum::POWER:
+ case POWER:
return (new BtActionPower());
- case BtActionEnum::AUDIO_CONNECT:
+ case AUDIO_CONNECT:
return (new BtActionAudioConnect());
}
{
delete action;
}
-
-void BtFactory::registerAction(std::string key, BtActionEnum action)
-{
- DBG("Register Action key[%s]", key.c_str());
- actionMap[key] = action;
-}
BtAction *createAction(const std::string &key);
void destroyAction(BtAction *action);
private:
- enum class BtActionEnum {
+ enum actionKey {
POWER,
AUDIO_CONNECT
};
- void registerAction(std::string key, BtActionEnum action);
- std::map<std::string, BtActionEnum> actionMap;
+ std::map<std::string, actionKey> actionMap;
};
MODES_NAMESPACE_END
BtPlugin();
~BtPlugin();
- int set(const std::string &key, int val, PluginAction **pluginAction) override;
- int set(const std::string &key, double val, PluginAction **pluginAction) override;
- int set(const std::string &key, bool val, PluginAction **pluginAction) override;
- int set(const std::string &key, const std::string &val, PluginAction **pluginAction) override;
- int undo(PluginAction *pluginAction) override;
+ int set(const std::string &key, int val, PluginAction **piAction) override;
+ int set(const std::string &key, double val, PluginAction **piAction) override;
+ int set(const std::string &key, bool val, PluginAction **piAction) override;
+ int set(const std::string &key, const std::string &val, PluginAction **piAction) override;
+ int undo(PluginAction *piAction) override;
+ PluginAction* getUndoAction(const std::string &key, const std::string &info) override;
private:
BtFactory btFactory;
};
{
}
-int BtPlugin::set(const std::string &key, int val, PluginAction **pluginAction)
+int BtPlugin::set(const std::string &key, int val, PluginAction **piAction)
{
BtAction *action = btFactory.createAction(key);
RETVM_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER, "action(%s) is null", key.c_str());
DBG("set [%s, %d]", key.c_str(), val);
int ret = action->set(val);
- if (pluginAction)
- *pluginAction = action;
+ if (piAction)
+ *piAction = action;
else
btFactory.destroyAction(action);
return ret;
}
-int BtPlugin::set(const std::string &key, double val, PluginAction **pluginAction)
+int BtPlugin::set(const std::string &key, double val, PluginAction **piAction)
{
BtAction *action = btFactory.createAction(key);
RETVM_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER, "action(%s) is null", key.c_str());
DBG("set [%s, %f]", key.c_str(), val);
int ret = action->set(val);
- if (pluginAction)
- *pluginAction = action;
+ if (piAction)
+ *piAction = action;
else
btFactory.destroyAction(action);
return ret;
}
-int BtPlugin::set(const std::string &key, bool val, PluginAction **pluginAction)
+int BtPlugin::set(const std::string &key, bool val, PluginAction **piAction)
{
BtAction *action = btFactory.createAction(key);
RETVM_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER, "action(%s) is null", key.c_str());
DBG("set [%s, %s]", key.c_str(), (val ? "on" : "off"));
int ret = action->set(val);
- if (pluginAction)
- *pluginAction = action;
+ if (piAction)
+ *piAction = action;
else
btFactory.destroyAction(action);
return ret;
}
-int BtPlugin::set(const std::string &key, const std::string &val, PluginAction **pluginAction)
+int BtPlugin::set(const std::string &key, const std::string &val, PluginAction **piAction)
{
BtAction *action = btFactory.createAction(key);
RETVM_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER, "action(%s) is null", key.c_str());
DBG("set [%s, %s]", key.c_str(), val.c_str());
int ret = action->set(val);
- if (pluginAction)
- *pluginAction = action;
+ if (piAction)
+ *piAction = action;
else
btFactory.destroyAction(action);
return ret;
}
-int BtPlugin::undo(PluginAction *pluginAction)
+int BtPlugin::undo(PluginAction *piAction)
{
- BtAction *action = static_cast<BtAction*>(pluginAction);
+ BtAction *action = static_cast<BtAction*>(piAction);
RETV_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER);
DBG("Action(%s) undo", action->getName().c_str());
return ret;
}
+
+PluginAction* BtPlugin::getUndoAction(const std::string &key, const std::string &info)
+{
+ BtAction *action = btFactory.createAction(key);
+ RETVM_IF(nullptr == action, nullptr, "action(%s) is null", key.c_str());
+
+ int ret = action->parse(info);
+ if (MODES_ERROR_NONE != ret) {
+ ERR("Action(%s) parse(%s) Fail(%d)", key.c_str(), info.c_str(), ret);
+ btFactory.destroyAction(action);
+ return nullptr;
+ }
+
+ return action;
+}
class MediaAction : public PluginAction {
public:
- MediaAction() = default;
+ MediaAction(const std::string &name)
+ : PluginAction(name)
+ {
+ }
virtual ~MediaAction() = default;
virtual int set(std::string val)
const std::string MediaPlayer::NAME = "player";
+MediaPlayer::MediaPlayer()
+ : MediaAction(NAME), player(NULL), stream_info(NULL)
+{
+}
void MediaPlayer::playerCompletedCb(void *data)
{
h->destroyPlayer();
}
-MediaPlayer::MediaPlayer()
-:player(NULL), stream_info(NULL)
-{
- setName(NAME);
-}
-
-MediaPlayer::~MediaPlayer()
-{
-}
-
int MediaPlayer::createPlayer()
{
int ret = sound_manager_create_stream_information(SOUND_STREAM_TYPE_MEDIA, NULL, NULL, &stream_info);
class MediaPlayer : public MediaAction {
public:
- MediaPlayer();
- ~MediaPlayer();
-
- virtual int set(std::string val);
- virtual int undo();
-
static const std::string NAME;
+ MediaPlayer();
+ ~MediaPlayer() = default;
+ int set(std::string val) override;
+ int undo() override;
private:
int createPlayer();
int destroyPlayer();
MediaPlugin();
~MediaPlugin();
- int set(const std::string &key, const std::string &val, PluginAction **pluginAction) override;
-
+ int set(const std::string &key, const std::string &val, PluginAction **piAction) override;
+ PluginAction* getUndoAction(const std::string &key, const std::string &info) override;
private:
- MediaFactory pkgFactory;
+ MediaFactory mediaFactory;
};
extern "C" API Plugin *objectCreate(void)
{
}
-int MediaPlugin::set(const std::string &key, const std::string &val, PluginAction **pluginAction)
+int MediaPlugin::set(const std::string &key, const std::string &val, PluginAction **piAction)
{
- MediaAction *action = pkgFactory.createAction(key);
+ MediaAction *action = mediaFactory.createAction(key);
RETVM_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER, "action(%s) is null", key.c_str());
DBG("Action(%s) set(%s)", key.c_str(), val.c_str());
int ret = action->set(val);
- if ((ret == MODES_ERROR_NONE) && pluginAction)
- *pluginAction = action;
+ if ((ret == MODES_ERROR_NONE) && piAction)
+ *piAction = action;
else
- pkgFactory.destroyAction(action);
+ mediaFactory.destroyAction(action);
return ret;
}
+
+PluginAction* MediaPlugin::getUndoAction(const std::string &key, const std::string &info)
+{
+ MediaAction *action = mediaFactory.createAction(key);
+ RETVM_IF(nullptr == action, nullptr, "action(%s) is null", key.c_str());
+
+ int ret = action->parse(info);
+ if (MODES_ERROR_NONE != ret) {
+ ERR("Action(%s) parse(%s) Fail(%d)", key.c_str(), info.c_str(), ret);
+ mediaFactory.destroyAction(action);
+ return nullptr;
+ }
+
+ return action;
+}
class PkgAction : public PluginAction {
public:
- PkgAction() = default;
+ PkgAction(const std::string &name)
+ : PluginAction(name)
+ {
+ }
virtual ~PkgAction() = default;
virtual int set(int val)
#include <glib.h>
#include <list>
#include <string>
+#include <sstream>
#include <pkgmgr-info.h>
#include <package-manager.h>
#include <modes_errors.h>
int PkgStartSupportMode::appModeVal = 0;
PkgStartSupportMode::PkgStartSupportMode()
+ : PkgAction(NAME)
{
- setName(NAME);
}
int PkgStartSupportMode::app_list_cb(const pkgmgrinfo_appinfo_h handle, void *userData)
return MODES_ERROR_NONE;
}
+
+std::string PkgStartSupportMode::serialize()
+{
+ std::ostringstream ostr;
+ for (auto it = appList.begin(); it != appList.end(); it++)
+ ostr << *it << delimiter;
+
+ return ostr.str();
+}
+
+int PkgStartSupportMode::parse(const std::string &data)
+{
+ size_t pos;
+ size_t start = 0;
+ while ((pos = data.find(delimiter, start)) != std::string::npos) {
+ appList.push_back(data.substr(start, pos - start));
+ start = pos + 1;
+ }
+ return MODES_ERROR_NONE;
+}
class PkgStartSupportMode : public PkgAction {
public:
+ static const std::string NAME;
PkgStartSupportMode();
- virtual int set(int val);
- virtual int get(int *val);
- virtual int undo() override;
-
- static const std::string NAME;
+ int set(int val) override;
+ int get(int *val) override;
+ int undo() override;
+ std::string serialize() override;
+ int parse(const std::string &data) override;
private:
enum AppSupportMode {
ULTRA_POWER_SAVING = 1,
COOL_DOWN = 2,
SCREEN_READER = 4
};
+ const char delimiter = '#';
static int app_list_cb(const pkgmgrinfo_appinfo_h handle, void *user_data);
static int appModeVal;
PkgPlugin();
~PkgPlugin();
- int set(const std::string &key, int val, PluginAction **pluginAction) override;
- int undo(PluginAction *pluginAction) override;
-
+ int set(const std::string &key, int val, PluginAction **piAction) override;
+ int undo(PluginAction *piAction) override;
+ PluginAction* getUndoAction(const std::string &key, const std::string &info) override;
private:
PkgFactory pkgFactory;
};
{
}
-int PkgPlugin::set(const std::string &key, int val, PluginAction **pluginAction)
+int PkgPlugin::set(const std::string &key, int val, PluginAction **piAction)
{
PkgAction *action = pkgFactory.createAction(key);
RETVM_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER, "action(%s) is null", key.c_str());
DBG("Action(%s) set(%d)", key.c_str(), val);
int ret = action->set(val);
- if (pluginAction)
- *pluginAction = action;
+ if (piAction)
+ *piAction = action;
else
pkgFactory.destroyAction(action);
return ret;
}
-int PkgPlugin::undo(PluginAction *pluginAction)
+int PkgPlugin::undo(PluginAction *piAction)
{
- PkgAction *action = static_cast<PkgAction*>(pluginAction);
+ PkgAction *action = static_cast<PkgAction*>(piAction);
RETV_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER);
DBG("Action(%s) undo", action->getName().c_str());
return ret;
}
+
+PluginAction* PkgPlugin::getUndoAction(const std::string &key, const std::string &info)
+{
+ PkgAction *action = pkgFactory.createAction(key);
+ RETVM_IF(nullptr == action, nullptr, "action(%s) is null", key.c_str());
+
+ int ret = action->parse(info);
+ if (MODES_ERROR_NONE != ret) {
+ ERR("Action(%s) parse(%s) Fail(%d)", key.c_str(), info.c_str(), ret);
+ pkgFactory.destroyAction(action);
+ return nullptr;
+ }
+
+ return action;
+}
*/
#include "VconfActionBool.h"
#include <string>
-#include <algorithm>
+#include <sstream>
#include <vconf.h>
#include "plugin-log.h"
MODES_NAMESPACE_USE;
VconfActionBool::VconfActionBool(const std::string &vconfKey)
- :key(vconfKey), oldVal(false)
+ : PluginAction("boolVconf"), key(vconfKey), oldVal(false)
{
}
return MODES_ERROR_NONE;
}
+
+std::string VconfActionBool::serialize()
+{
+ std::ostringstream ostr;
+
+ ostr << oldVal;
+ return ostr.str();
+}
+
+int VconfActionBool::parse(const std::string &archive)
+{
+ std::istringstream iss(archive);
+ iss >> oldVal;
+
+ return MODES_ERROR_NONE;
+}
int set(bool val);
bool get();
- virtual int undo() override;
+ int undo() override;
+ std::string serialize() override;
+ int parse(const std::string &archive) override;
private:
std::string key;
bool oldVal;
*/
#include "VconfActionDbl.h"
#include <string>
-#include <algorithm>
+#include <sstream>
#include <vconf.h>
#include "plugin-log.h"
MODES_NAMESPACE_USE;
VconfActionDbl::VconfActionDbl(const std::string &vconfKey)
- :key(vconfKey), oldVal(0.0)
+ : PluginAction("dblVconf"), key(vconfKey), oldVal(0.0)
{
}
return MODES_ERROR_NONE;
}
+
+std::string VconfActionDbl::serialize()
+{
+ std::ostringstream ostr;
+
+ ostr << oldVal;
+ return ostr.str();
+}
+
+int VconfActionDbl::parse(const std::string &archive)
+{
+ std::istringstream iss(archive);
+ iss >> oldVal;
+
+ return MODES_ERROR_NONE;
+}
int set(double val);
double get();
- virtual int undo() override;
+ int undo() override;
+ std::string serialize() override;
+ int parse(const std::string &archive) override;
private:
std::string key;
double oldVal;
*/
#include "VconfActionInt.h"
#include <string>
-#include <algorithm>
+#include <sstream>
#include <vconf.h>
#include "plugin-log.h"
MODES_NAMESPACE_USE;
VconfActionInt::VconfActionInt(const std::string &vconfKey)
- :key(vconfKey), oldVal(0)
+ : PluginAction("intVconf"), key(vconfKey), oldVal(0)
{
}
return MODES_ERROR_NONE;
}
+
+std::string VconfActionInt::serialize()
+{
+ std::ostringstream ostr;
+
+ ostr << oldVal;
+ return ostr.str();
+}
+
+int VconfActionInt::parse(const std::string &archive)
+{
+ std::istringstream iss(archive);
+ iss >> oldVal;
+
+ return MODES_ERROR_NONE;
+}
int set(int val);
int get();
- virtual int undo() override;
+ int undo() override;
+ std::string serialize() override;
+ int parse(const std::string &archive) override;
private:
std::string key;
int oldVal;
*/
#include "VconfActionStr.h"
#include <string>
-#include <algorithm>
#include <vconf.h>
#include "plugin-log.h"
MODES_NAMESPACE_USE;
VconfActionStr::VconfActionStr(const std::string &vconfKey)
- :key(vconfKey)
+ : PluginAction("strVconf"), key(vconfKey)
{
}
return MODES_ERROR_NONE;
}
+
+std::string VconfActionStr::serialize()
+{
+ return oldVal;
+}
+
+int VconfActionStr::parse(const std::string &archive)
+{
+ oldVal = archive;
+ return MODES_ERROR_NONE;
+}
int set(const std::string &val);
std::string get();
- virtual int undo() override;
+ int undo() override;
+ std::string serialize() override;
+ int parse(const std::string &archive) override;
private:
std::string key;
std::string oldVal;
public:
VconfPlugin();
- int set(const std::string &key, int val, PluginAction **pluginAction) override;
- int set(const std::string &key, double val, PluginAction **pluginAction) override;
- int set(const std::string &key, bool val, PluginAction **pluginAction) override;
- int set(const std::string &key, const std::string &val, PluginAction **pluginAction) override;
+ int set(const std::string &key, int val, PluginAction **piAction) override;
+ int set(const std::string &key, double val, PluginAction **piAction) override;
+ int set(const std::string &key, bool val, PluginAction **piAction) override;
+ int set(const std::string &key, const std::string &val, PluginAction **piAction) override;
+ PluginAction* getUndoAction(const std::string &key, const std::string &info) override;
+ std::string serializeAction(PluginAction *piAction) override;
int getInt(const std::string &key) override;
double getDouble(const std::string &key) override;
setName("vconf");
}
-int VconfPlugin::set(const std::string &key, int val, PluginAction **pluginAction)
+int VconfPlugin::set(const std::string &key, int val, PluginAction **piAction)
{
int ret;
DBG("set<int>(%s, %d)", key.c_str(), val);
VconfActionInt *action = new VconfActionInt(newKey);
ret = action->set(val);
- if (pluginAction)
- *pluginAction = action;
+ if (piAction)
+ *piAction = action;
else
delete action;
return ret;
}
-int VconfPlugin::set(const std::string &key, double val, PluginAction **pluginAction)
+int VconfPlugin::set(const std::string &key, double val, PluginAction **piAction)
{
int ret;
DBG("set<double>(%s, %lf)", key.c_str(), val);
VconfActionDbl *action = new VconfActionDbl(newKey);
ret = action->set(val);
- if (pluginAction)
- *pluginAction = action;
+ if (piAction)
+ *piAction = action;
else
delete action;
return ret;
}
-int VconfPlugin::set(const std::string &key, bool val, PluginAction **pluginAction)
+int VconfPlugin::set(const std::string &key, bool val, PluginAction **piAction)
{
int ret;
DBG("set<bool>(%s, %d)", key.c_str(), val);
VconfActionBool *action = new VconfActionBool(newKey);
ret = action->set(val);
- if (pluginAction)
- *pluginAction = action;
+ if (piAction)
+ *piAction = action;
else
delete action;
return ret;
}
-int VconfPlugin::set(const std::string &key, const std::string &val, PluginAction **pluginAction)
+int VconfPlugin::set(const std::string &key, const std::string &val, PluginAction **piAction)
{
DBG("set<string>(%s, %s)", key.c_str(), val.c_str());
VconfActionStr *action = new VconfActionStr(newKey);
ret = action->set(val);
- if (pluginAction)
- *pluginAction = action;
+ if (piAction)
+ *piAction = action;
else
delete action;
return ret;
}
+PluginAction* VconfPlugin::getUndoAction(const std::string &key, const std::string &info)
+{
+ std::string newKey(key);
+ std::replace(newKey.begin(), newKey.end(), '.', '/');
+
+ PluginAction *piAction;
+ switch (info.front()) {
+ case 's':
+ piAction = new VconfActionStr(newKey);
+ break;
+ case 'i':
+ piAction = new VconfActionInt(newKey);
+ break;
+ case 'd':
+ piAction = new VconfActionDbl(newKey);
+ break;
+ case 'b':
+ piAction = new VconfActionBool(newKey);
+ break;
+ default:
+ ERR("Unknown Undo Information(%s)", info.c_str());
+ return nullptr;
+ }
+ int ret = piAction->parse(info);
+ if (MODES_ERROR_NONE != ret) {
+ ERR("Action(%s) parse(%s) Fail(%d)", key.c_str(), info.c_str(), ret);
+ delete piAction;
+ return nullptr;
+ }
+
+ return piAction;
+}
+
+std::string VconfPlugin::serializeAction(PluginAction *piAction)
+{
+ RETV_IF(nullptr == piAction, std::string());
+
+ std::string rawStr = piAction->serialize();
+ return piAction->getName().front() + rawStr;
+}
+
int VconfPlugin::getInt(const std::string &key)
{
DBG("getInt(%s)", key.c_str());
MODES_NAMESPACE_USE;
-WifiAction::WifiAction()
+WifiAction::WifiAction(const std::string &name)
+ : PluginAction(name)
{
int ret = wifi_manager_initialize(&wifiManagerHandle);
if (ret != WIFI_MANAGER_ERROR_NONE) {
class WifiAction : public PluginAction {
public:
- WifiAction();
+ WifiAction(const std::string &name);
virtual ~WifiAction();
bool isWifiActivate();
*/
#include "WifiActionPower.h"
-#include <algorithm>
+#include <sstream>
#include <modes_errors.h>
#include "plugin-log.h"
MODES_NAMESPACE_USE;
+const std::string WifiActionPower::NAME = "power";
+
WifiActionPower::WifiActionPower()
- :oldVal(false)
+ : WifiAction(NAME), oldVal(false)
{
- setName("power");
}
void WifiActionPower::activate_cb(wifi_manager_error_e result, void *user_data)
INFO("Wifi power [%s]", oldVal ? "On" : "Off");
return MODES_ERROR_NONE;
}
+
+std::string WifiActionPower::serialize()
+{
+ std::ostringstream ostr;
+
+ ostr << oldVal;
+ return ostr.str();
+}
+
+int WifiActionPower::parse(const std::string &archive)
+{
+ std::istringstream iss(archive);
+ iss >> oldVal;
+
+ return MODES_ERROR_NONE;
+}
class WifiActionPower : public WifiAction {
public:
+ static const std::string NAME;
WifiActionPower();
int set(bool val) override;
int get(bool *val) override;
int undo() override;
+ std::string serialize() override;
+ int parse(const std::string &archive) override;
private:
static void activate_cb(wifi_manager_error_e result, void *user_data);
static void deactivate_cb(wifi_manager_error_e result, void *user_data);
WifiFactory::WifiFactory()
{
- registerAction("power", WifiActionEnum::POWER);
+ actionMap[WifiActionPower::NAME] = POWER;
}
WifiAction* WifiFactory::createAction(const std::string &key)
}
switch (search->second) {
- case WifiActionEnum::POWER:
+ case POWER:
WifiActionPower *wifiActionPower = new WifiActionPower();
return wifiActionPower;
break;
{
delete action;
}
-
-void WifiFactory::registerAction(std::string key, WifiActionEnum action)
-{
- DBG("Register Action key[%s]", key.c_str());
- actionMap[key] = action;
-}
WifiAction *createAction(const std::string &key);
void destroyAction(WifiAction *action);
private:
- enum class WifiActionEnum {
+ enum actionKey {
POWER
};
- void registerAction(std::string key, WifiActionEnum action);
- std::map<std::string, WifiActionEnum> actionMap;
+ std::map<std::string, actionKey> actionMap;
};
MODES_NAMESPACE_END
WifiPlugin();
~WifiPlugin();
- int set(const std::string &key, int val, PluginAction **pluginAction) override;
- int set(const std::string &key, double val, PluginAction **pluginAction) override;
- int set(const std::string &key, bool val, PluginAction **pluginAction) override;
- int set(const std::string &key, const std::string &val, PluginAction **pluginAction) override;
- int undo(PluginAction *pluginAction) override;
+ int set(const std::string &key, int val, PluginAction **piAction) override;
+ int set(const std::string &key, double val, PluginAction **piAction) override;
+ int set(const std::string &key, bool val, PluginAction **piAction) override;
+ int set(const std::string &key, const std::string &val, PluginAction **piAction) override;
+ int undo(PluginAction *piAction) override;
+ PluginAction* getUndoAction(const std::string &key, const std::string &info) override;
private:
WifiFactory wifiFactory;
};
{
}
-int WifiPlugin::set(const std::string &key, int val, PluginAction **pluginAction)
+int WifiPlugin::set(const std::string &key, int val, PluginAction **piAction)
{
WifiAction *action = wifiFactory.createAction(key);
RETVM_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER, "action(%s) is null", key.c_str());
DBG("set [%s, %d]", key.c_str(), val);
int ret = action->set(val);
- if (pluginAction)
- *pluginAction = action;
+ if (piAction)
+ *piAction = action;
else
wifiFactory.destroyAction(action);
return ret;
}
-int WifiPlugin::set(const std::string &key, double val, PluginAction **pluginAction)
+int WifiPlugin::set(const std::string &key, double val, PluginAction **piAction)
{
WifiAction *action = wifiFactory.createAction(key);
RETVM_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER, "action(%s) is null", key.c_str());
DBG("set [%s, %f]", key.c_str(), val);
int ret = action->set(val);
- if (pluginAction)
- *pluginAction = action;
+ if (piAction)
+ *piAction = action;
else
wifiFactory.destroyAction(action);
return ret;
}
-int WifiPlugin::set(const std::string &key, bool val, PluginAction **pluginAction)
+int WifiPlugin::set(const std::string &key, bool val, PluginAction **piAction)
{
WifiAction *action = wifiFactory.createAction(key);
RETVM_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER, "action(%s) is null", key.c_str());
DBG("set [%s, %s]", key.c_str(), (val ? "on" : "off"));
int ret = action->set(val);
- if (pluginAction)
- *pluginAction = action;
+ if (piAction)
+ *piAction = action;
else
wifiFactory.destroyAction(action);
return ret;
}
-int WifiPlugin::set(const std::string &key, const std::string &val, PluginAction **pluginAction)
+int WifiPlugin::set(const std::string &key, const std::string &val, PluginAction **piAction)
{
WifiAction *action = wifiFactory.createAction(key);
RETVM_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER, "action(%s) is null", key.c_str());
DBG("set [%s, %s]", key.c_str(), val.c_str());
int ret = action->set(val);
- if (pluginAction)
- *pluginAction = action;
+ if (piAction)
+ *piAction = action;
else
wifiFactory.destroyAction(action);
return ret;
}
-int WifiPlugin::undo(PluginAction *pluginAction)
+int WifiPlugin::undo(PluginAction *piAction)
{
- WifiAction *action = static_cast<WifiAction*>(pluginAction);
+ WifiAction *action = static_cast<WifiAction*>(piAction);
RETV_IF(nullptr == action, MODES_ERROR_INVALID_PARAMETER);
DBG("Action(%s) undo", action->getName().c_str());
return ret;
}
+PluginAction* WifiPlugin::getUndoAction(const std::string &key, const std::string &info)
+{
+ WifiAction *action = wifiFactory.createAction(key);
+ RETVM_IF(nullptr == action, nullptr, "action(%s) is null", key.c_str());
+
+ int ret = action->parse(info);
+ if (MODES_ERROR_NONE != ret) {
+ ERR("Action(%s) parse(%s) Fail(%d)", key.c_str(), info.c_str(), ret);
+ wifiFactory.destroyAction(action);
+ return nullptr;
+ }
+
+ return action;
+}
+