Ejemplo n.º 1
0
int Safe::totalNumItems(const SafeGroup *group, int type) const
{
  // c++ didn't like this at toplevel
  if(group == NULL) {
    group = this;
  }

  SafeGroup::Iterator it(group);
  int count = 0;

  while(it.current()) {
    SafeItem *item = *it;
    if(item->rtti() == type) {
      count++;
    }

    if(item->rtti() == SafeGroup::RTTI) {
      count += totalNumItems(dynamic_cast<const SafeGroup *>(item), type);
    }

    ++it;
  }

  return count;
}
Ejemplo n.º 2
0
/** Saves a group and all of its children to a stream.
 */
Safe::Error PlainTextLizer::saveGroup(QTextStream &file, const SafeGroup *group, const QString &group_name)
{
  Safe::Error ret = Safe::Success;
  SafeGroup::Iterator it(group);

  while(it.current()) {
    SafeItem *item = it.current();
    if(item->rtti() == SafeEntry::RTTI) {
      DBGOUT("item");
      ret = saveEntry(file, (SafeEntry *)item, group_name);
    }
    else if(item->rtti() == SafeGroup::RTTI) {
      QString next_group_name(group_name);
      next_group_name = next_group_name + "/" + escapeGroup(((SafeGroup *)item)->name());
      DBGOUT("Group: " << next_group_name);
      ret = saveGroup(file, (SafeGroup *)item, next_group_name);
    }

    if(ret != Safe::Success)
      break;

    ++it;
  }

  return ret;
}
Ejemplo n.º 3
0
void SafeListView::populate(SafeGroup *group, SafeListViewGroup *view)
{
  if(group) {
    DBGOUT("populate");
    SafeGroup::Iterator iter(group);
    while(iter.current()) {
      SafeItem *item = iter.current();
      if(item->rtti() == SafeEntry::RTTI) {
	DBGOUT("Adding item: " << ((SafeEntry *)item)->name());
	if(view == NULL)
	  (void)new SafeListViewEntry(this, (SafeEntry *)item);
	else
	  (void)new SafeListViewEntry(view, (SafeEntry *)item);
      }
      else if(item->rtti() == SafeGroup::RTTI) {
	SafeListViewGroup *g = NULL;
	DBGOUT("Adding group: " << ((SafeGroup *)item)->name());
	if(view == NULL)
	  g = new SafeListViewGroup(this, (SafeGroup *)item);
	else
	  g = new SafeListViewGroup(view, (SafeGroup *)item);
	populate((SafeGroup *)item, g);
      }
      else {
	DBGOUT("Unknown item");
      }
      ++iter;
    }
  }
}