[fwbuilder-commits] r1959 - branches/v3_1/src/gui
Brought to you by:
mikehorn
From: <ya...@in...> - 2009-11-28 19:14:58
|
Author: yalovoy Date: 2009-11-28 11:13:47 -0800 (Sat, 28 Nov 2009) New Revision: 1959 Modified: branches/v3_1/src/gui/FWCmdRule.cpp branches/v3_1/src/gui/FWCmdRule.h branches/v3_1/src/gui/RuleSetModel.cpp branches/v3_1/src/gui/RuleSetModel.h branches/v3_1/src/gui/RuleSetView.cpp Log: refs #681 pasteRuleAbove Modified: branches/v3_1/src/gui/FWCmdRule.cpp =================================================================== --- branches/v3_1/src/gui/FWCmdRule.cpp 2009-11-28 19:01:20 UTC (rev 1958) +++ branches/v3_1/src/gui/FWCmdRule.cpp 2009-11-28 19:13:47 UTC (rev 1959) @@ -97,6 +97,11 @@ setText(QObject::tr("insert rule")); } +FWCmdRuleInsert::~FWCmdRuleInsert() +{ + +} + void FWCmdRuleInsert::redoOnModel(RuleSetModel *md) { if (ruleToInsert == 0) @@ -110,7 +115,10 @@ insertedRule = md->insertNewRule(index, isAfter); } } else { - //TODO: insert ruleToInsert into the ruleset. + + QModelIndex index = md->indexForPosition(position); + + insertedRule = md->insertRule(ruleToInsert, index, isAfter); } getRuleSetView()->selectRE(insertedRule,0); Modified: branches/v3_1/src/gui/FWCmdRule.h =================================================================== --- branches/v3_1/src/gui/FWCmdRule.h 2009-11-28 19:01:20 UTC (rev 1958) +++ branches/v3_1/src/gui/FWCmdRule.h 2009-11-28 19:13:47 UTC (rev 1959) @@ -76,6 +76,7 @@ public: FWCmdRuleInsert(ProjectPanel *project, libfwbuilder::RuleSet* ruleset, int position=0, bool isAfter=false, libfwbuilder::Rule* ruleToInsert=0); + ~FWCmdRuleInsert(); void redoOnModel(RuleSetModel *md); void undoOnModel(RuleSetModel *md); Modified: branches/v3_1/src/gui/RuleSetModel.cpp =================================================================== --- branches/v3_1/src/gui/RuleSetModel.cpp 2009-11-28 19:01:20 UTC (rev 1958) +++ branches/v3_1/src/gui/RuleSetModel.cpp 2009-11-28 19:13:47 UTC (rev 1959) @@ -536,13 +536,14 @@ return newrule; } -void RuleSetModel::insertRule(libfwbuilder::Rule *rule, QModelIndex &index, bool isAfter) +Rule* RuleSetModel::insertRule(libfwbuilder::Rule *rule, QModelIndex &index, bool isAfter) { + Rule *newrule = 0; if (index.isValid()) { RuleNode *node = nodeFromIndex(index); int pos = node->rule->getPosition(); - Rule *newrule = isAfter?ruleset->appendRuleAfter(pos):ruleset->insertRuleBefore(pos); + newrule = isAfter?ruleset->appendRuleAfter(pos):ruleset->insertRuleBefore(pos); initRule(newrule, rule); string groupName = node->rule->getRuleGroupName(); newrule->setRuleGroupName(groupName); @@ -550,11 +551,12 @@ } else { - Rule *newrule = getRuleSet()->insertRuleAtTop(); + newrule = getRuleSet()->insertRuleAtTop(); initRule(newrule, rule); QModelIndex index; insertRuleToModel(newrule, index); } + return newrule; } void RuleSetModel::removeRow(int row,const QModelIndex &parent) @@ -1143,6 +1145,17 @@ return res; } +int RuleSetModel::getRulePosition(QModelIndex index) +{ + Rule* rule = 0; + if (index.isValid()) + { + rule = nodeFromIndex(index)->rule; + } + return (rule == 0)?0:rule->getPosition(); +} + + ////////////////////////////////////////////////////////////////////////////////////////////////////////// // PolicyModel ////////////////////////////////////////////////////////////////////////////////////////////////////////// Modified: branches/v3_1/src/gui/RuleSetModel.h =================================================================== --- branches/v3_1/src/gui/RuleSetModel.h 2009-11-28 19:01:20 UTC (rev 1958) +++ branches/v3_1/src/gui/RuleSetModel.h 2009-11-28 19:13:47 UTC (rev 1959) @@ -123,7 +123,7 @@ libfwbuilder::Rule* insertNewRule(); libfwbuilder::Rule* insertNewRule(QModelIndex &index, bool isAfter = false); - void insertRule(libfwbuilder::Rule *rule, QModelIndex &index, bool isAfter = false); + libfwbuilder::Rule* insertRule(libfwbuilder::Rule *rule, QModelIndex &index, bool isAfter = false); virtual void initRule(libfwbuilder::Rule *new_rule, libfwbuilder::Rule *old_rule = NULL) = 0; @@ -145,6 +145,9 @@ bool isIndexRule(const QModelIndex index); RuleNode *nodeFromIndex(const QModelIndex &index) const; + int getRulePosition(QModelIndex index); + libfwbuilder::Rule * findRuleForPosition(int position) const; + void setEnabled(const QModelIndex &index, bool flag); virtual bool checkRuleType(libfwbuilder::Rule *rule) = 0; @@ -192,8 +195,8 @@ void removeToList(QList<RuleNode*> &list, const QModelIndex &group, int first, int last); void insertFromList(const QList<RuleNode*> &list, const QModelIndex &parent, int position); - libfwbuilder::Rule * findRuleForPosition(int position) const; + }; ////////////////////////////////////////////////////////////////////////////////////////////////////////// Modified: branches/v3_1/src/gui/RuleSetView.cpp =================================================================== --- branches/v3_1/src/gui/RuleSetView.cpp 2009-11-28 19:01:20 UTC (rev 1958) +++ branches/v3_1/src/gui/RuleSetView.cpp 2009-11-28 19:13:47 UTC (rev 1959) @@ -1313,12 +1313,8 @@ project->m_panel->om->reload(); } - md->insertRule(Rule::cast(co), index); + project->undoStack->push(new FWCmdRuleInsert(project, md->getRuleSet(), md->getRulePosition(index), false, Rule::cast(co))); } - - QCoreApplication::postEvent( - mw, new dataModifiedEvent(project->getFileName(), md->getRuleSet()->getId())); - } void RuleSetView::pasteRuleBelow() @@ -1375,14 +1371,7 @@ void RuleSetView::insertRule(QModelIndex index,bool isAfter) { RuleSetModel* md = ((RuleSetModel*)model()); if (!canChange(md)) return; - - Rule* posRule = 0; - if (index.isValid()) - { - posRule = md->nodeFromIndex(index)->rule; - } - - project->undoStack->push(new FWCmdRuleInsert(project, md->getRuleSet(), (posRule == 0)?0:posRule->getPosition(), isAfter)); + project->undoStack->push(new FWCmdRuleInsert(project, md->getRuleSet(), md->getRulePosition(index), isAfter)); } void RuleSetView::insertRule() |