void SnapshotActionDialog::setDomainSnapshots() { if ( nullptr==ptr_ConnPtr || nullptr==*ptr_ConnPtr ) { emit ptrIsNull(); return; }; domain = virDomainLookupByName( *ptr_ConnPtr, domName.toUtf8().data()); int namesLen = virDomainSnapshotNum( domain, VIR_DOMAIN_SNAPSHOT_LIST_ROOTS); if ( namesLen>0 ) { char *names; int ret = virDomainSnapshotListNames( domain, &names, namesLen, VIR_DOMAIN_SNAPSHOT_LIST_ROOTS); if ( ret>0 ) { for (int i = 0; i<ret; i++) { addSnapshotChild( i, snapshotTree->rootIndex(), (&names)[i]); }; }; }; }
void SnapshotActionDialog::addSnapshotChild(int row, const QModelIndex &parent, char *name) { // flags: extra flags; not used yet, so callers should always pass 0 virDomainSnapshotPtr snapShot = virDomainSnapshotLookupByName(domain, name, 0); char *xmlDesc = virDomainSnapshotGetXMLDesc(snapShot, 0); QString _desc; QString _data(" -- "); if ( NULL!=xmlDesc ) { QDomDocument doc; doc.setContent(QString(xmlDesc)); free(xmlDesc); QDomElement _el = doc .firstChildElement("domainsnapshot") .firstChildElement("creationTime"); if ( !_el.isNull() ) { _data.clear(); _data.append( QDateTime::fromMSecsSinceEpoch( _el.text().toULongLong()*1000) .toString("yyyy-MM-dd_HH:mm:ss")); }; _el = doc .firstChildElement("domainsnapshot") .firstChildElement("description"); if ( !_el.isNull() ) { _desc.clear(); _desc.append(_el.text()); }; }; // flags: extra flags; not used yet, so callers should always pass 0 int current = virDomainSnapshotIsCurrent(snapShot, 0); if ( NULL!=snapShot ) { model->insertRow(row, parent); model->setData(model->index(row, 0, parent), name, Qt::DisplayRole); model->setData(model->index(row, 0, parent), (current>0), Qt::DecorationRole); model->setData(model->index(row, 0, parent), _desc, Qt::ToolTipRole); model->setData(model->index(row, 1, parent), _data, Qt::DisplayRole); // By default, this command covers only direct children; use flag=0 int namesLen = virDomainSnapshotNumChildren(snapShot, 0); if ( namesLen>0 ) { char *names; int ret = virDomainSnapshotListChildrenNames( snapShot, &names, namesLen, 0); if ( ret>0 ) { for (int i = 0; i<ret; i++) { addSnapshotChild(i, model->index(row, 0, parent), (&names)[i]); }; }; }; virDomainSnapshotFree(snapShot); }; }