void KonqSidebarBookmarkModule::slotProperties(KonqSidebarBookmarkItem *bi) { if (!bi) { bi = dynamic_cast<KonqSidebarBookmarkItem*>( tree()->selectedItem() ); if (!bi) return; } KBookmark bookmark = bi->bookmark(); QString folder = bookmark.isGroup() ? QString::null : bookmark.url().pathOrURL(); BookmarkEditDialog dlg( bookmark.fullText(), folder, 0, 0, i18n("Bookmark Properties") ); if ( dlg.exec() != KDialogBase::Accepted ) return; makeTextNodeMod(bookmark, "title", dlg.finalTitle()); if ( !dlg.finalUrl().isNull() ) { KURL u = KURL::fromPathOrURL(dlg.finalUrl()); bookmark.internalElement().setAttribute("href", u.url(0, 106)); } KBookmarkGroup parentBookmark = bookmark.parentGroup(); KonqBookmarkManager::self()->emitChanged( parentBookmark ); }
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 makeTextNodeMod(KBookmark bk, const QString &m_nodename, const QString &m_newText) { QDomNode subnode = bk.internalElement().namedItem(m_nodename); if (subnode.isNull()) { subnode = bk.internalElement().ownerDocument().createElement(m_nodename); bk.internalElement().appendChild(subnode); } if (subnode.firstChild().isNull()) { QDomText domtext = subnode.ownerDocument().createTextNode(""); subnode.appendChild(domtext); } QDomText domtext = subnode.firstChild().toText(); QString m_oldText = domtext.data(); domtext.setData(m_newText); }
void DeleteCommand::redo() { KBookmark bk = m_model->bookmarkManager()->findByAddress(m_from); Q_ASSERT(!bk.isNull()); if (m_contentOnly) { QDomElement groupRoot = bk.internalElement(); QDomNode n = groupRoot.firstChild(); while (!n.isNull()) { QDomElement e = n.toElement(); if (!e.isNull()) { // kDebug() << e.tagName(); } QDomNode next = n.nextSibling(); groupRoot.removeChild(n); n = next; } return; } // TODO - bug - unparsed xml is lost after undo, // we must store it all therefore //FIXME this removes the comments, that's bad! if (!m_cmd) { if (bk.isGroup()) { m_cmd = new CreateCommand(m_model, m_from, bk.fullText(), bk.icon(), bk.internalElement().attribute("folded") == "no"); m_subCmd = deleteAll(m_model, bk.toGroup()); m_subCmd->redo(); } else { m_cmd = (bk.isSeparator()) ? new CreateCommand(m_model, m_from) : new CreateCommand(m_model, m_from, bk.fullText(), bk.icon(), bk.url()); } } m_cmd->undo(); }
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); }
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(); }