//Item is member of group bool AbstractGroupableItem::isGroupMember(const GroupPtr group) const { //kDebug(); if (!group) { //kDebug() << "Null Group Pointer"; return false; } if (!parentGroup()) { return false; } return group->members().contains(const_cast<AbstractGroupableItem*>(this)); }
SafeListViewGroup *SafeListView::addGroup(const QString &group_name) { // if the group's name is empty, if(group_name.isEmpty()) return NULL; // if name has zero seperators or else { QString group_path(group_name); if(group_path.at(0) == '/') { for(int i = 0; i < group_path.length(); i++) { if(group_path.at(i) != '/') { group_path.remove(0, i); break; } } DBGOUT("Group path: " << group_path); } SafeListViewGroup *group = findGroup(group_path); if(group != NULL) { DBGOUT("Found group " << group_path); return group; } DBGOUT("adding group: " << group_path); // FIXME: doesn't divide the group's name right if GroupSeperator // is escaped QString this_group = thisGroup(group_path); QString parent_group = parentGroup(group_path); DBGOUT("this_group = " << this_group); if(parent_group.isEmpty()) { return new SafeListViewGroup(this, this_group); } else { DBGOUT("parent = " << parent_group); // search for the parent // if it doesn't exist add it SafeListViewGroup *parent = addGroup(parent_group); parent->setOpen(true); return new SafeListViewGroup(parent, this_group); } } return NULL; }
void Group::setParent(Group* parent, int index) { Q_ASSERT(parent); Q_ASSERT(index >= -1 && index <= parent->children().size()); // setting a new parent for root groups is not allowed Q_ASSERT(!m_db || (m_db->rootGroup() != this)); bool moveWithinDatabase = (m_db && m_db == parent->m_db); if (index == -1) { index = parent->children().size(); if (parentGroup() == parent) { index--; } } if (m_parent == parent && parent->children().indexOf(this) == index) { return; } if (!moveWithinDatabase) { cleanupParent(); m_parent = parent; if (m_db) { recCreateDelObjects(); // copy custom icon to the new database if (!iconUuid().isNull() && parent->m_db && m_db->metadata()->containsCustomIcon(iconUuid()) && !parent->m_db->metadata()->containsCustomIcon(iconUuid())) { parent->m_db->metadata()->addCustomIcon(iconUuid(), icon()); } } if (m_db != parent->m_db) { recSetDatabase(parent->m_db); } QObject::setParent(parent); Q_EMIT aboutToAdd(this, index); Q_ASSERT(index <= parent->m_children.size()); parent->m_children.insert(index, this); } else { Q_EMIT aboutToMove(this, parent, index); m_parent->m_children.removeAll(this); m_parent = parent; QObject::setParent(parent); Q_ASSERT(index <= parent->m_children.size()); parent->m_children.insert(index, this); } if (m_updateTimeinfo) { m_data.timeInfo.setLocationChanged(Tools::currentDateTimeUtc()); } Q_EMIT modified(); if (!moveWithinDatabase) { Q_EMIT added(); } else { Q_EMIT moved(); } }