diff -r 340bc29da9a0 -r 2f002657dada flagrow.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flagrow.cpp Tue May 26 11:24:51 2009 +0000 @@ -0,0 +1,164 @@ +#include "flagrow.h" + +#include +using namespace std; + +///////////////////////////////////////////////////////////////// +// FlagRow +///////////////////////////////////////////////////////////////// +FlagRow::FlagRow() +{ + toolBar=NULL; + masterRow=NULL; +// cout << "Const FlagRow ()\n"; +// init (); +} + +FlagRow::~FlagRow() +{ + //cout << "Destr FlagRow\n"; +// while (!flag.isEmpty()) +// delete (flag.takeFirst() ); +} + +void FlagRow::addFlag (Flag *flag) +{ + Flag *f=new Flag; + f->copy (flag); + flags.append (f); + activeNames.append (flag->getName()); +} + +Flag* FlagRow::getFlag (const QString &name) +{ + int i=0; + while (i<=flags.size()-1) + { + if (flags.at(i)->getName()==name) + return flags.at(i); + i++; + } + return NULL; +} + +QStringList FlagRow::activeFlagNames() +{ + return activeNames; +} + + +bool FlagRow::isActive (const QString &name) +{ + return activeNames.contains (name); +} + +void FlagRow::toggle (const QString &name, FlagRow *masterRow) +{ + if (isActive(name) ) + deactivate (name); + else + { + activate (name); + if (!masterRow) return; + + Flag *flag=masterRow->getFlag (name); + if (!flag) return; + QString mygroup=flag->getGroup(); + + for (int i=0;igetFlag (activeNames.at(i) ); + if (name!=activeNames.at(i) && !mygroup.isEmpty() && mygroup==flag->getGroup()) + deactivate (activeNames.at(i)); + } + } +} + +void FlagRow::activate (const QString &name) +{ + if (!activeNames.contains (name)) + activeNames.append (name); + else + qWarning (QString("FlagRow::activate - %1 is already active").arg(name)); +} + + +void FlagRow::deactivate (const QString &name) +{ + int n=activeNames.indexOf (name); + if (n>=0) + activeNames.removeAt(n); + else + qWarning (QString("FlagRow::deactivate - %1 is not active").arg(name)); +} + +void FlagRow::deactivateAll () +{ + if (!toolBar) activeNames.clear(); +} + + +void FlagRow::resetUsedCounter() +{ + for (int i=0; isetUsed (false); +} + +QString FlagRow::saveToDir (const QString &tmpdir,const QString &prefix, bool writeflags) +{ + // Build xml string + QString s; + + if (!toolBar) + { + if (!activeNames.isEmpty()) + for (int i=0; igetFlag(activeNames.at(i))->setUsed(true); + } + } else + // Save icons to dir, if verbose is set (xml export) + // and I am a master + // and this flag is really used somewhere + if (writeflags) + for (int i=0; iisUsed()) flags.at(i)->saveToDir (tmpdir,prefix); + return s; +} + +void FlagRow::setName (const QString &n) +{ + rowName=n; +} + +void FlagRow::setToolBar (QToolBar *tb) +{ + toolBar=tb; +} + +void FlagRow::setMasterRow (FlagRow *row) +{ + masterRow=row; +} + +void FlagRow::updateToolBar (const QStringList &activeNames) +{ + if (toolBar ) + { + if (activeNames.isEmpty() ) + for (int i=0;igetAction()->setChecked (false); + else + for (int i=0;igetAction()->setChecked ( + activeNames.contains (flags.at(i)->getName())); + } + return; + +} + +