void EditCommand::undo() { kDebug() << "Setting old value" << mOldValue << "in bk" << mAddress << "col" << mCol; KBookmark bk = m_model->bookmarkManager()->findByAddress(mAddress); if(mCol==-2) { bk.internalElement().setAttribute("toolbar", mOldValue); } else if(mCol==-1) { bk.setIcon(mOldValue); } else if(mCol==0) { bk.setFullText(mOldValue); } else if(mCol==1) { bk.setUrl(KUrl(mOldValue)); } else if(mCol==2) { bk.setDescription(mOldValue); } m_model->emitDataChanged(bk); }
void CreateCommand::redo() { QString parentAddress = KBookmark::parentAddress(m_to); KBookmarkGroup parentGroup = m_model->bookmarkManager()->findByAddress(parentAddress).toGroup(); QString previousSibling = KBookmark::previousAddress(m_to); // kDebug() << "previousSibling=" << previousSibling; KBookmark prev = (previousSibling.isEmpty()) ? KBookmark(QDomElement()) : m_model->bookmarkManager()->findByAddress(previousSibling); KBookmark bk = KBookmark(QDomElement()); const int pos = KBookmark::positionInParent(m_to); m_model->beginInsert(parentGroup, pos, pos); if (m_separator) { bk = parentGroup.createNewSeparator(); } else if (m_group) { Q_ASSERT(!m_text.isEmpty()); bk = parentGroup.createNewFolder(m_text); bk.internalElement().setAttribute("folded", (m_open ? "no" : "yes")); if (!m_iconPath.isEmpty()) { bk.setIcon(m_iconPath); } } else if(!m_originalBookmark.isNull()) { QDomElement element = m_originalBookmark.internalElement().cloneNode().toElement(); bk = KBookmark(element); parentGroup.addBookmark(bk); } else { bk = parentGroup.addBookmark(m_text, m_url, m_iconPath); } // move to right position parentGroup.moveBookmark(bk, prev); if (!(text().isEmpty()) && !parentAddress.isEmpty() ) { // open the parent (useful if it was empty) - only for manual commands Q_ASSERT( parentGroup.internalElement().tagName() != "xbel" ); parentGroup.internalElement().setAttribute("folded", "no"); } Q_ASSERT(bk.address() == m_to); m_model->endInsert(); }
void EditCommand::redo() { KBookmark bk = m_model->bookmarkManager()->findByAddress(mAddress); if(mCol==-2) { if (mOldValue.isEmpty()) mOldValue = bk.internalElement().attribute("toolbar"); bk.internalElement().setAttribute("toolbar", mNewValue); } else if(mCol==-1) { if (mOldValue.isEmpty()) mOldValue = bk.icon(); bk.setIcon(mNewValue); } else if(mCol==0) { if (mOldValue.isEmpty()) // only the first time, not when compressing changes in modify() mOldValue = bk.fullText(); kDebug() << "mOldValue=" << mOldValue; bk.setFullText(mNewValue); } else if(mCol==1) { if (mOldValue.isEmpty()) mOldValue = bk.url().prettyUrl(); const KUrl newUrl(mNewValue); if (!(newUrl.isEmpty() && !mNewValue.isEmpty())) // prevent emptied line if the currently entered url is invalid bk.setUrl(newUrl); } else if(mCol==2) { if (mOldValue.isEmpty()) mOldValue = bk.description(); bk.setDescription(mNewValue); } m_model->emitDataChanged(bk); }