{
return MODES_ERROR_NOT_SUPPORTED;
}
- virtual int undo(PluginAction *piAction)
+ virtual void undo(PluginAction *piAction)
{
- if (NULL == piAction)
- return MODES_ERROR_INVALID_PARAMETER;
- int ret = piAction->undo();
- delete piAction;
-
- return ret;
+ if (piAction) {
+ piAction->undo();
+ delete piAction;
+ }
}
virtual PluginAction* getUndoAction(const std::string &key, const std::string &info)
{
{
return name;
}
- virtual int undo()
+ virtual void undo()
{
- return MODES_ERROR_NOT_SUPPORTED;
}
virtual std::string serialize()
{
{
return MODES_ERROR_NOT_SUPPORTED;
}
- virtual int unSetChangedCallback(valueChangedCB callback, void *userData)
+ virtual void unSetChangedCallback(valueChangedCB callback, void *userData)
{
- return MODES_ERROR_NOT_SUPPORTED;
}
private:
const std::string name;
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;
+ void undo(PluginAction *piAction) override;
PluginAction* getUndoAction(const std::string &key, const std::string &info) override;
int getInt(const std::string &key) override;
return MODES_ERROR_NONE;
}
-int TestPlugin::undo(PluginAction *piAction)
+void TestPlugin::undo(PluginAction *piAction)
{
if (piAction) {
DBG("TestPlugin::undo(Action:%s)", piAction->getName().c_str());
-
delete piAction;
}
-
- return MODES_ERROR_NONE;
}
PluginAction* TestPlugin::getUndoAction(const std::string &key, const std::string &info)
{
}
-int TestPluginAction::undo()
+void TestPluginAction::undo()
{
DBG("TestPluginAction::undo() is Called");
- return MODES_ERROR_NONE;
}
std::string TestPluginAction::serialize()
return MODES_ERROR_NONE;
}
-int TestPluginAction::unSetChangedCallback(valueChangedCB callback, void *userData)
+void TestPluginAction::unSetChangedCallback(valueChangedCB callback, void *userData)
{
- return MODES_ERROR_NONE;
}
TestPluginAction();
~TestPluginAction() override;
- int undo() override;
+ void undo() override;
std::string serialize() override;
int parse(const std::string &data) override;
int setChangedCallback(valueChangedCB callback, void *userData) override;
- int unSetChangedCallback(valueChangedCB callback, void *userData) override;
+ void unSetChangedCallback(valueChangedCB callback, void *userData) override;
};
MODES_NAMESPACE_END
MODES_NAMESPACE_USE;
-void Action::valueChangedCallback(void *userData)
-{
- Action *action = (Action*)userData;
- RET_IF(NULL == action);
-
- action->setIsChanged();
- DBG("Action(%s) Changed", action->ruleName.c_str());
-}
-
Action::Action()
- :plugin(nullptr), piAction(nullptr), stopOnErr(false), isChanged(false), restriction(REQ_NONE)
+ :isChanged(false), plugin(nullptr), piAction(nullptr), stopOnErr(false), restriction(REQ_NONE)
{
}
Action::Action(const std::string &name)
- :ruleName(name), plugin(nullptr), piAction(nullptr), stopOnErr(false), isChanged(false), restriction(REQ_NONE)
+ :ruleName(name), isChanged(false), plugin(nullptr), piAction(nullptr), stopOnErr(false), restriction(REQ_NONE)
{
}
plugin = pi;
}
-void Action::setIsChanged()
+void Action::valueChangedCallback(void *userData)
{
- isChanged = true;
- plugin->freeAction(piAction);
- piAction = nullptr;
-}
+ Action *action = (Action*)userData;
+ RET_IF(NULL == action);
-bool Action::getIsChanged()
-{
- return isChanged;
+ action->isChanged = true;
+ action->piAction->unSetChangedCallback(valueChangedCallback, userData);
+ DBG("Action(%s) Changed", action->ruleName.c_str());
}
-
ActionRestrict getRestrict();
void setStopOnErr(bool val);
bool getStopOnErr();
- void setIsChanged();
- bool getIsChanged();
void setPlugin(Plugin *pi);
virtual int setValue(const std::string &val) = 0;
virtual std::string getStringOfValue() = 0;
virtual int restoreUndoInfo(const std::string &info) = 0;
virtual std::string backupUndoInfo() = 0;
protected:
+ static void valueChangedCallback(void *userData);
std::string ruleName;
+ bool isChanged;
Plugin *plugin;
PluginAction *piAction;
- static void valueChangedCallback(void *userData);
-
private:
std::string id;
bool stopOnErr;
- bool isChanged;
ActionRestrict restriction;
};
void undo() override
{
RETM_IF(NULL == plugin, "Action(%s) : No plugin", ruleName.c_str());
+ RETM_IF(NULL == piAction, "Plugin(%s) : No piAction(%s)", plugin->getName().c_str(), ruleName.c_str());
- if (nullptr != piAction) {
+ if (isChanged) {
+ INFO("Action(%s) : value changed", ruleName.c_str());
+ plugin->freeAction(piAction);
+ } else {
piAction->unSetChangedCallback(valueChangedCallback, this);
plugin->undo(piAction); // piAction is deleted in undo()
- piAction = nullptr;
- } else {
- ERR("Action(%s) : value changed or no Action", ruleName.c_str());
}
+ piAction = nullptr;
}
private: