4 #include "mainwindow.h"
7 extern Main *mainWindow;
9 /////////////////////////////////////////////////////////////////
11 /////////////////////////////////////////////////////////////////
14 //qDebug()<< "Const FlagRow ()";
20 //qDebug()<< "Destr FlagRow masterRow=" << masterRow;
23 const QStringList FlagRow::activeFlagNames() { return QStringList(); }
25 const QList<QUuid> FlagRow::activeFlagUids() { return activeUids; }
27 bool FlagRow::isActive(const QString &name)
29 Flag *f = masterRow->findFlagByName(name);
31 qWarning() << "FlagRow::isActive couldn't find flag named " << name;
35 return isActive(f->getUuid());
38 bool FlagRow::isActive(const QUuid &uid)
41 foreach (i, activeUids)
47 bool FlagRow::toggle(const QString &name, bool useGroups)
49 // First get UID from mastRow
51 qWarning() << "FlagRow::toggle name " << name << " no masterRow";
55 Flag *flag = masterRow->findFlagByName(name);
57 qWarning() << "FlagRow::toggle name " << name
58 << " masterRow has no such flag";
62 return toggle(flag->getUuid());
65 bool FlagRow::toggle(const QUuid &uid, bool useGroups)
67 // returns true, if flag really is changed
70 return deactivate(uid);
76 // From here on we have been able to activate the flag
82 qWarning() << "FlagRow::toggle no masterRow defined for UID "
87 // Deactivate all other active flags group except "name"
88 Flag *flag = masterRow->findFlagByUid(uid);
92 QString mygroup = flag->getGroup();
94 for (int i = 0; i < activeUids.size(); ++i) {
95 flag = masterRow->findFlagByUid(activeUids.at(i));
96 if (uid != activeUids.at(i) && !mygroup.isEmpty() &&
97 mygroup == flag->getGroup())
98 deactivate(activeUids.at(i));
104 bool FlagRow::activate(const QString &name)
107 qWarning() << "FlagRow::activate - no masterRow to activate " << name;
111 // Check, if flag exists after all...
112 Flag *flag = masterRow->findFlagByName(name);
114 qWarning() << "FlagRow::activate - flag " << name
115 << " does not exist here!";
119 // Some flags might be hidden, if inactive
120 if (!flag->isVisible()) {
121 QAction *action = flag->getAction();
123 action->setVisible(true);
126 QUuid uid = flag->getUuid();
127 if (!activeUids.contains(uid)) activeUids.append(uid);
131 bool FlagRow::activate(const QUuid &uid)
135 qWarning() << QString("FlagRow::activate - %1 is already active")
136 .arg(uid.toString());
141 qWarning() << "FlagRow::activate - no masterRow to activate "
146 // Check, if flag exists after all...
147 Flag *flag = masterRow->findFlagByUid(uid);
149 qWarning() << "FlagRow::activate - flag " << uid.toString()
150 << " does not exist here!";
154 activeUids.append(uid);
158 bool FlagRow::deactivate(const QString &name)
160 Flag *flag = masterRow->findFlagByName(name);
161 return deactivate(flag->getUuid());
164 bool FlagRow::deactivate(const QUuid &uid)
166 int n = activeUids.indexOf(uid);
168 activeUids.removeAt(n);
169 // Returns true, if flag is changed
173 qWarning() << QString("FlagRow::deactivate - %1 is not active")
174 .arg(uid.toString());
178 bool FlagRow::deactivateGroup(const QString &gname)
185 foreach (QUuid uid, activeUids) {
186 Flag *flag = masterRow->findFlagByUid(uid);
187 if (flag && gname == flag->getGroup())
188 deactivate(flag->getUuid());
193 void FlagRow::deactivateAll()
198 QString FlagRow::saveState()
202 if (!activeUids.isEmpty())
203 for (int i = 0; i < activeUids.size(); ++i) {
204 Flag *flag = masterRow->findFlagByUid(activeUids.at(i));
206 // save flag to xml, if flag is set
207 s += flag->saveState();
209 // and tell parentRow, that this flag is used
211 // FIXME-3 used flag IDs should be saved for each vymmodel to avoid
212 // problems in parallel saving of maps
218 void FlagRow::setMasterRow(FlagRowMaster *row) { masterRow = row; }