void SafeListView::startDrag() { DBGOUT("Drag started (is targe child: " << m_target_is_child << ")"); SafeDragObject *d = new SafeDragObject(viewport()); Q3ListViewItemIterator it(this, Q3ListViewItemIterator::Selected | Q3ListViewItemIterator::DragEnabled); for(; it.current(); ++it) { SafeListViewItem *item = (SafeListViewItem *)it.current(); d->addItem(item->item()); // copy the user name to the clipboard if(item->rtti() == SafeListViewEntry::RTTI) { SafeEntry *ent = ((SafeListViewEntry *)item)->entry(); copyToClipboard(ent->user()); } } m_drop_target = NULL; m_target_is_child = false; bool drag_ret = d->drag(); DBGOUT("\tdrag() returned " << drag_ret); DBGOUT("\tsrc: " << d->source() << "\ttarget: " << d->target()); // drag was a move if(drag_ret) { DBGOUT("\tMove"); // prevent drops from doing anything when they occur on a child // of the dragged object if(m_target_is_child) { QMessageBox::information(this, "Sorry", "Sorry, but items can't be dragged into their children"); } // delete the item if it's dropped onto this else if(d->source() == d->target()) { // remove the item from the list SafeListViewItem *item = (SafeListViewItem *)selectedItem(); emit deleteItem(item->item()); } } // drag was a copy onto a child else { DBGOUT("\tCopy"); if(m_target_is_child) emit dragObjectDropped(d, m_drop_target); } DBGOUT("\t" << name() << ": Drag ended"); }
void SafeEntry::copy(const SafeEntry &item) { setName(item.name()); setUser(item.user()); setPassword(item.password()); setNotes(item.notes()); setUUID(item.uuid()); setCreationTime(item.creationTime()); setModifiedTime(item.modifiedTime()); setAccessTime(item.accessTime()); setLifetime(item.lifetime()); for(int i = 0; i < 4; i++) { m_policy[i] = item.m_policy[i]; } }