Version: (using KDE KDE 3.5.1) Installed from: SuSE RPMs ...when starting Krdc. [# ignore ignore ignore ignore ignore ignore this line #]
Standard disclaimer: KRDC has been unmaintained for a VERY long time now, so the future of the program is very much uncertain.
Pity, it is very useful. Hmm, looks like "do it yourself" situation :-)))
*** Bug 125872 has been marked as a duplicate of this bug. ***
Created attachment 15786 [details] krdc.diff.gz This patch _should_ /it is my first patch ;-)/ fix the reported problem + minor one with remembering entered address on close.
SVN commit 697448 by uwolfer: Add history folder in bookmarks. All host you have successfully connected to will be added there. This way it's easier to find an already used host. Thanks Daniel for your inputs! CCMAIL: Daniel Teske <teske@squorn.de> BUG: 124082 M +41 -3 bookmarkmanager.cpp M +3 -0 bookmarkmanager.h M +2 -0 mainwindow.cpp --- trunk/KDE/kdenetwork/krdc/bookmarkmanager.cpp #697447:697448 @@ -37,17 +37,55 @@ QString file = KStandardDirs::locateLocal("data", "krdc/bookmarks.xml"); - KBookmarkManager *manager = KBookmarkManager::managerForFile(file, "krdc"); + m_manager = KBookmarkManager::managerForFile(file, "krdc"); - manager->setUpdate(true); + m_manager->setUpdate(true); - m_bookmarkMenu = new KBookmarkMenu(manager, this, m_menu, collection ); + m_bookmarkMenu = new KBookmarkMenu(m_manager, this, m_menu, collection ); + + KBookmarkGroup root = m_manager->root(); + KBookmark bm = root.first(); + while (!bm.isNull()) { + if (bm.metaDataItem("krdc-history") == "historyfolder") // get it also when user renamed it + break; + bm = root.next(bm); + } + + if(bm.isNull()) { + kDebug(5010) << "History folder not found. Create it."; + bm = m_manager->root().createNewFolder(m_manager, i18n("History")); + bm.setMetaDataItem("krdc-history", "historyfolder"); + } + + m_historyGroup = bm.toGroup(); } BookmarkManager::~BookmarkManager() { } +void BookmarkManager::addHistoryBookmark() +{ + kDebug(5010) << "addHistoryBookmark"; + + KBookmark bm = m_historyGroup.first(); + while (!bm.isNull()) { + if (bm.url() == KUrl(currentUrl())) { + kDebug(5010) << "Found URL. Move it at the history start."; + m_historyGroup.moveItem(bm, KBookmark()); + m_manager->emitChanged(); + return; + } + bm = m_historyGroup.next(bm); + } + + if(bm.isNull()) { + kDebug(5010) << "Add new history bookmark."; + m_historyGroup.moveItem(m_historyGroup.addBookmark(m_manager, currentTitle(), currentUrl()), KBookmark()); + m_manager->emitChanged(); + } +} + void BookmarkManager::openBookmark(const KBookmark &bm, Qt::MouseButtons, Qt::KeyboardModifiers) { emit openUrl(bm.url()); --- trunk/KDE/kdenetwork/krdc/bookmarkmanager.h #697447:697448 @@ -47,6 +47,7 @@ virtual bool editBookmarkEntry() const; virtual bool supportsTabs() const; virtual QList<QPair<QString, QString> > currentBookmarkList() const; + void addHistoryBookmark(); signals: void openUrl(const KUrl &url); @@ -57,6 +58,8 @@ private: KMenu *m_menu; KBookmarkMenu *m_bookmarkMenu; + KBookmarkManager *m_manager; + KBookmarkGroup m_historyGroup; MainWindow *m_mainWindow; }; --- trunk/KDE/kdenetwork/krdc/mainwindow.cpp #697447:697448 @@ -314,6 +314,8 @@ slotSwitchFullscreen(); } + m_bookmarkManager->addHistoryBookmark(); + break; default: iconName = "krdc";