diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2025-08-28 22:44:34 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2025-08-31 23:25:26 +0900 |
commit | 086012dcad8a976a0dabbb7cbc20c9cb612cdfa9 (patch) | |
tree | 56c9bfcfd7cd13b17707dc8862f26932e9814973 /krusader/BookMan | |
parent | 409e7f624d202c7f96b4d0ab2da1834135169f8b (diff) | |
download | krusader-master.tar.gz krusader-master.zip |
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'krusader/BookMan')
-rw-r--r-- | krusader/BookMan/Makefile.am | 11 | ||||
-rw-r--r-- | krusader/BookMan/kraddbookmarkdlg.cpp | 117 | ||||
-rw-r--r-- | krusader/BookMan/kraddbookmarkdlg.h | 40 | ||||
-rw-r--r-- | krusader/BookMan/krbookmark.cpp | 92 | ||||
-rw-r--r-- | krusader/BookMan/krbookmark.h | 46 | ||||
-rw-r--r-- | krusader/BookMan/krbookmarkbutton.cpp | 38 | ||||
-rw-r--r-- | krusader/BookMan/krbookmarkbutton.h | 24 | ||||
-rw-r--r-- | krusader/BookMan/krbookmarkhandler.cpp | 576 | ||||
-rw-r--r-- | krusader/BookMan/krbookmarkhandler.h | 64 |
9 files changed, 0 insertions, 1008 deletions
diff --git a/krusader/BookMan/Makefile.am b/krusader/BookMan/Makefile.am deleted file mode 100644 index 3f602d3..0000000 --- a/krusader/BookMan/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -noinst_LIBRARIES = libBookMan.a - -INCLUDES = $(all_includes) - -libBookMan_a_METASOURCES = AUTO - -libBookMan_a_SOURCES = \ - krbookmark.cpp \ - krbookmarkbutton.cpp \ - krbookmarkhandler.cpp \ - kraddbookmarkdlg.cpp diff --git a/krusader/BookMan/kraddbookmarkdlg.cpp b/krusader/BookMan/kraddbookmarkdlg.cpp deleted file mode 100644 index 1af3736..0000000 --- a/krusader/BookMan/kraddbookmarkdlg.cpp +++ /dev/null @@ -1,117 +0,0 @@ -#include "kraddbookmarkdlg.h" -#include "../krusader.h" -#include "krbookmarkhandler.h" -#include <tdelocale.h> -#include <tqheader.h> -#include <tqlayout.h> -#include <tqlabel.h> -#include <kinputdialog.h> -#include <kiconloader.h> -#include <kdebug.h> - -KrAddBookmarkDlg::KrAddBookmarkDlg(TQWidget *parent, KURL url): - KDialogBase(KDialogBase::Swallow, i18n("Add Bookmark"), - KDialogBase::User1 | KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, parent) { - // create the 'new folder' button - setButtonText(KDialogBase::User1, i18n("New Folder")); - showButton(KDialogBase::User1, false); // hide it until _createIn is shown - connect(this, TQ_SIGNAL(user1Clicked()), this, TQ_SLOT(newFolder())); - - // create the main widget - TQWidget *page = new TQWidget(this); - setMainWidget(page); - - TQGridLayout *layout = new TQGridLayout(page, 1, 1, 0, spacingHint()); // expanding - // name and url - TQLabel *lb1 = new TQLabel(i18n("Name:"), page); - _name = new KLineEdit(page); - _name->setText(url.prettyURL()); // default name is the url - _name->selectAll(); // make the text selected - layout->addWidget(lb1, 0, 0); - layout->addWidget(_name, 0, 1); - - TQLabel *lb2 = new TQLabel(i18n("URL:"), page); - _url = new KLineEdit(page); - layout->addWidget(lb2, 1, 0); - layout->addWidget(_url, 1, 1); - _url->setText(url.prettyURL()); // set the url in the field - - // create in linedit and button - TQLabel *lb3 = new TQLabel(i18n("Create in:"), page); - _folder = new KLineEdit(page); - layout->addWidget(lb3, 2, 0); - layout->addWidget(_folder, 2, 1); - _folder->setReadOnly(true); - - _createInBtn = new TQToolButton(page); - _createInBtn->setPixmap(krLoader->loadIcon("go-down", TDEIcon::Small)); - _createInBtn->setToggleButton(true); - connect(_createInBtn, TQ_SIGNAL(toggled(bool)), this, TQ_SLOT(toggleCreateIn(bool ))); - layout->addWidget(_createInBtn, 2, 2); - - setDetailsWidget(createInWidget()); - - _name->setFocus(); -} - -void KrAddBookmarkDlg::toggleCreateIn(bool show) { - _createInBtn->setPixmap(krLoader->loadIcon(show ? "go-up" :"go-down", TDEIcon::Small)); - showButton(KDialogBase::User1, show); - setDetails(show); -} - -// creates the widget that lets you decide where to put the new bookmark -TQWidget *KrAddBookmarkDlg::createInWidget() { - _createIn = new TDEListView(this); - _createIn->addColumn("Folders"); - _createIn->header()->hide(); - _createIn->setRootIsDecorated(true); - _createIn->setAlternateBackground(TQColor()); // disable alternate coloring - - TDEListViewItem *item = new TDEListViewItem(_createIn, i18n("Bookmarks")); - item->setOpen(true); - item->setSelected(true); - _xr[item] = krBookMan->_root; - - populateCreateInWidget(krBookMan->_root, item); - _createIn->setCurrentItem(item); - createInSelection(item); - connect(_createIn, TQ_SIGNAL(selectionChanged(TQListViewItem*)), this, TQ_SLOT(createInSelection(TQListViewItem*))); - - return _createIn; -} - -void KrAddBookmarkDlg::createInSelection(TQListViewItem *item) { - if (item) { - _folder->setText(_xr[static_cast<TDEListViewItem*>(item)]->text()); - } -} - -void KrAddBookmarkDlg::populateCreateInWidget(KrBookmark *root, TDEListViewItem *parent) { - for (KrBookmark *bm = root->children().first(); bm; bm = root->children().next()) { - if (bm->isFolder()) { - TDEListViewItem *item = new TDEListViewItem(parent, bm->text()); - item->setOpen(true); - _xr[item] = bm; - populateCreateInWidget(bm, item); - } - } -} - -void KrAddBookmarkDlg::newFolder() { - // get the name - TQString newFolder = KInputDialog::getText(i18n("New Folder"), i18n("Folder name:"), TQString(), 0, this); - if (newFolder == TQString()) - return; - // add to the list in bookman - KrBookmark *bm = new KrBookmark(newFolder); - krBookMan->addBookmark(bm, _xr[static_cast<TDEListViewItem*>(_createIn->selectedItem())]); - // fix the gui - TDEListViewItem *item = new TDEListViewItem(_createIn->selectedItem(), bm->text()); - _xr[item] = bm; - - _createIn->setCurrentItem(item); - item->setSelected(true); -} - -#include "kraddbookmarkdlg.moc" diff --git a/krusader/BookMan/kraddbookmarkdlg.h b/krusader/BookMan/kraddbookmarkdlg.h deleted file mode 100644 index b270781..0000000 --- a/krusader/BookMan/kraddbookmarkdlg.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef KRADDBOOKMARKDLG_H -#define KRADDBOOKMARKDLG_H - -#include "krbookmark.h" -#include "../VFS/vfs.h" -#include <kdialogbase.h> -#include <kurl.h> -#include <klineedit.h> -#include <tqmap.h> -#include <tdelistview.h> -#include <tqtoolbutton.h> - -class KrAddBookmarkDlg: public KDialogBase { - TQ_OBJECT - -public: - KrAddBookmarkDlg(TQWidget *parent, KURL url = 0); - KURL url() const { return vfs::fromPathOrURL(_url->text()); } - TQString name() const { return _name->text(); } - KrBookmark *folder() const { return _xr[static_cast<TDEListViewItem*>(_createIn->selectedItem())]; } - -protected: - TQWidget *createInWidget(); - void populateCreateInWidget(KrBookmark *root, TDEListViewItem *parent); - -protected slots: - void toggleCreateIn(bool show); - void createInSelection(TQListViewItem *item); - void newFolder(); - -private: - KLineEdit *_name; - KLineEdit *_url; - KLineEdit *_folder; - TDEListView *_createIn; - TQMap<TDEListViewItem*, KrBookmark*> _xr; - TQToolButton *_createInBtn; -}; - -#endif // KRADDBOOKMARKDLG_H diff --git a/krusader/BookMan/krbookmark.cpp b/krusader/BookMan/krbookmark.cpp deleted file mode 100644 index cc67228..0000000 --- a/krusader/BookMan/krbookmark.cpp +++ /dev/null @@ -1,92 +0,0 @@ -#include "krbookmark.h" -#include "../krusader.h" -#include "../VFS/krarchandler.h" -#include <tdeactioncollection.h> -#include <kiconloader.h> -#include <tdelocale.h> -#include <kdebug.h> - -#define BM_NAME(X) (TQString("Bookmark:")+X) - -#if KDE_IS_VERSION(3,4,0) -static const char* NAME_DEVICES = I18N_NOOP("Media"); -#else -static const char* NAME_DEVICES = I18N_NOOP("Devices"); -#endif -static const char* NAME_VIRTUAL = I18N_NOOP("Virtual Filesystem"); -static const char* NAME_LAN = I18N_NOOP("Local Network"); - -KrBookmark::KrBookmark(TQString name, KURL url, TDEActionCollection *parent, TQString icon, TQString actionName ): - TDEAction(name, 0, 0, 0, parent, actionName.isNull() ? BM_NAME(name).latin1() : BM_NAME(actionName).latin1()), - _url(url), _folder(false), _separator(false) { - connect(this, TQ_SIGNAL(activated()), this, TQ_SLOT(activatedProxy())); - // do we have an icon? - if (!icon.isEmpty()) - setIcon(icon); - else { - // what kind of a url is it? - if (_url.isLocalFile()) { - setIcon("folder"); - } else { // is it an archive? - if (KRarcHandler::isArchive(_url)) - setIcon("application-x-tar"); - else setIcon("folder_html"); - } - } - - _children.setAutoDelete(true); -} - -KrBookmark::KrBookmark(TQString name, TQString icon): - TDEAction(name, 0, 0, 0, 0), _folder(true), _separator(false) { - setIcon(icon=="" ? "folder" : icon); -} - -KrBookmark* KrBookmark::getExistingBookmark(TQString actionName, TDEActionCollection *collection) { - return static_cast<KrBookmark*>(collection->action(BM_NAME(actionName).latin1())); -} - -KrBookmark* KrBookmark::devices(TDEActionCollection *collection) { - KrBookmark *bm = getExistingBookmark(i18n(NAME_DEVICES), collection); - if (!bm) { -#if KDE_IS_VERSION(3,4,0) - bm = new KrBookmark(i18n(NAME_DEVICES), "media:/", collection); -#else - bm = new KrBookmark(i18n(NAME_DEVICES), "devices:/", collection); -#endif - bm->setIconSet(krLoader->loadIcon("blockdevice", TDEIcon::Small)); - } - return bm; -} - -KrBookmark* KrBookmark::virt(TDEActionCollection *collection) { - KrBookmark *bm = getExistingBookmark(i18n(NAME_VIRTUAL), collection); - if (!bm) { - bm = new KrBookmark(i18n(NAME_VIRTUAL), "virt:/", collection); - bm->setIconSet(krLoader->loadIcon("pipe", TDEIcon::Small)); - } - return bm; -} - -KrBookmark* KrBookmark::lan(TDEActionCollection *collection) { - KrBookmark *bm = getExistingBookmark(i18n(NAME_LAN), collection); - if (!bm) { - bm = new KrBookmark(i18n(NAME_LAN), "lan:/", collection); - bm->setIconSet(krLoader->loadIcon("network", TDEIcon::Small)); - } - return bm; -} - -KrBookmark* KrBookmark::separator() { - KrBookmark *bm = new KrBookmark(""); - bm->_separator = true; - bm->_folder = false; - return bm; -} - - -void KrBookmark::activatedProxy() { - emit activated(url()); -} - -#include "krbookmark.moc" diff --git a/krusader/BookMan/krbookmark.h b/krusader/BookMan/krbookmark.h deleted file mode 100644 index 567b3c8..0000000 --- a/krusader/BookMan/krbookmark.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef KRBOOKMARK_H -#define KRBOOKMARK_H - -#include <tdeaction.h> -#include <tqptrlist.h> -#include <kurl.h> - -class TDEActionCollection; - -class KrBookmark: public TDEAction { - TQ_OBJECT - -public: - KrBookmark(TQString name, KURL url, TDEActionCollection *parent, TQString icon = "", TQString actionName = TQString() ); - KrBookmark(TQString name, TQString icon = ""); // creates a folder - // text() and setText() to change the name of the bookmark - // icon() and setIcon() to change icons (by name) - inline const KURL& url() const { return _url; } - inline void setURL(const KURL& url) { _url = url; } - inline bool isFolder() const { return _folder; } - inline bool isSeparator() const { return _separator; } - TQPtrList<KrBookmark>& children() { return _children; } - - static KrBookmark* getExistingBookmark(TQString actionName, TDEActionCollection *collection); - // ----- special bookmarks - static KrBookmark* devices(TDEActionCollection *collection); - static KrBookmark* virt(TDEActionCollection *collection); - static KrBookmark* lan(TDEActionCollection *collection); - static KrBookmark* separator(); - -signals: - void activated(const KURL& url); - -protected slots: - void activatedProxy(); - - -private: - KURL _url; - TQString _icon; - bool _folder; - bool _separator; - TQPtrList<KrBookmark> _children; -}; - -#endif // KRBOOKMARK_H diff --git a/krusader/BookMan/krbookmarkbutton.cpp b/krusader/BookMan/krbookmarkbutton.cpp deleted file mode 100644 index b7ac61c..0000000 --- a/krusader/BookMan/krbookmarkbutton.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include "krbookmarkbutton.h" -#include "krbookmarkhandler.h" -#include "../krusader.h" -#include <tqpixmap.h> -#include <kiconloader.h> -#include <tdeaction.h> -#include <tdelocale.h> -#include <tdepopupmenu.h> -#include <kdebug.h> - -KrBookmarkButton::KrBookmarkButton(TQWidget *parent): TQToolButton(parent) { - TQPixmap icon = krLoader->loadIcon("bookmark", TDEIcon::Toolbar, 16); - setFixedSize(icon.width() + 4, icon.height() + 4); - setPixmap(icon); - setTextLabel(i18n("BookMan II"), true); - setPopupDelay(10); // 0.01 seconds press - setAcceptDrops(false); - - acmBookmarks = new TDEActionMenu(i18n("Bookmarks"), "bookmark", 0, 0); - acmBookmarks->setDelayed(false); - acmBookmarks->popupMenu()->setKeyboardShortcutsEnabled(true); - acmBookmarks->popupMenu()->setKeyboardShortcutsExecute(true); - - setPopup(acmBookmarks->popupMenu()); - connect(this, TQ_SIGNAL(pressed()), this, TQ_SLOT(populate())); - populate(); -} - -void KrBookmarkButton::populate() { - krBookMan->populate(static_cast<TDEPopupMenu*>(popup())); -} - -void KrBookmarkButton::openPopup() { - populate(); - popup()->exec(mapToGlobal(TQPoint(0, height()))); -} - -#include "krbookmarkbutton.moc" diff --git a/krusader/BookMan/krbookmarkbutton.h b/krusader/BookMan/krbookmarkbutton.h deleted file mode 100644 index 54136f2..0000000 --- a/krusader/BookMan/krbookmarkbutton.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef KRBOOKMARK_BUTTON_H -#define KRBOOKMARK_BUTTON_H - -#include <tqtoolbutton.h> -#include "krbookmarkhandler.h" - -class KrBookmarkButton: public TQToolButton { - TQ_OBJECT - -public: - KrBookmarkButton(TQWidget *parent); - void openPopup(); - -signals: - void openUrl(const KURL &url); - -protected slots: - void populate(); - -private: - TDEActionMenu *acmBookmarks; -}; - -#endif // KRBOOKMARK_BUTTON_H diff --git a/krusader/BookMan/krbookmarkhandler.cpp b/krusader/BookMan/krbookmarkhandler.cpp deleted file mode 100644 index 183122f..0000000 --- a/krusader/BookMan/krbookmarkhandler.cpp +++ /dev/null @@ -1,576 +0,0 @@ -#include "krbookmarkhandler.h" -#include "kraddbookmarkdlg.h" -#include "../krusader.h" -#include "../krslots.h" -#include "../Dialogs/popularurls.h" -#include "../VFS/vfs.h" -#include <kiconloader.h> -#include <tdemessagebox.h> -#include <tqptrlist.h> -#include <tdeactioncollection.h> -#include <tdelocale.h> -#include <kdebug.h> -#include <kbookmarkmanager.h> -#include <tdestandarddirs.h> -#include <tqfile.h> -#include <tqcursor.h> - -#define SPECIAL_BOOKMARKS true - -// ------------------------ for internal use -#define BOOKMARKS_FILE "krusader/krbookmarks.xml" -#define CONNECT_BM(X) { disconnect(X, TQ_SIGNAL(activated(const KURL&)), 0, 0); connect(X, TQ_SIGNAL(activated(const KURL&)), this, TQ_SLOT(slotActivated(const KURL&))); } - -KrBookmarkHandler::KrBookmarkHandler(): TQObject(0), _middleClick(false), _mainBookmarkPopup( 0 ), _specialBookmarkIDs(), _bookmarkIDTable() { - // create our own action collection and make the shortcuts apply only to parent - _privateCollection = new TDEActionCollection(krApp, "private collection"); - _collection = krApp->actionCollection(); - - // create _root: father of all bookmarks. it is a dummy bookmark and never shown - _root = new KrBookmark(i18n("Bookmarks")); - - _bookmarkIDTable.setAutoDelete( true ); - - // load bookmarks - importFromFile(); - - // hack - manager = KBookmarkManager::managerForFile(locateLocal( "data", BOOKMARKS_FILE ), false); - connect(manager, TQ_SIGNAL(changed(const TQString&, const TQString& )), this, TQ_SLOT(bookmarksChanged(const TQString&, const TQString& ))); -} - -KrBookmarkHandler::~KrBookmarkHandler() { - delete manager; - delete _privateCollection; -} - -void KrBookmarkHandler::menuOperation(int id) { - switch (id) { - case BookmarkCurrent: - bookmarkCurrent(ACTIVE_PANEL->virtualPath()); - break; - case ManageBookmarks: - manager->slotEditBookmarks(); - break; - } -} - -void KrBookmarkHandler::bookmarkCurrent(KURL url) { - KrAddBookmarkDlg dlg(krApp, url); - if (dlg.exec() == KDialog::Accepted) { - KrBookmark *bm = new KrBookmark(dlg.name(), dlg.url(), _collection); - addBookmark(bm, dlg.folder()); - } -} - -void KrBookmarkHandler::addBookmark(KrBookmark *bm, KrBookmark *folder) { - if (folder == 0) - folder = _root; - - // add to the list (bottom) - folder->children().append(bm); - - exportToFile(); -} - -void KrBookmarkHandler::deleteBookmark(KrBookmark *bm) { - if( bm->isFolder() ) - clearBookmarks( bm ); // remove the child bookmarks - removeReferences( _root, bm ); - bm->unplugAll(); - delete bm; - - exportToFile(); -} - -void KrBookmarkHandler::removeReferences( KrBookmark *root, KrBookmark *bmToRemove ) { - int index = root->children().find( bmToRemove ); - if( index >= 0 ) - root->children().take( index ); - - KrBookmark *bm = root->children().first(); - while (bm) { - if (bm->isFolder()) - removeReferences(bm, bmToRemove); - bm = root->children().next(); - } -} - -void KrBookmarkHandler::exportToFileBookmark(TQDomDocument &doc, TQDomElement &where, KrBookmark *bm) { - if( bm->isSeparator() ) { - TQDomElement bookmark = doc.createElement("separator"); - where.appendChild(bookmark); - } - else { - TQDomElement bookmark = doc.createElement("bookmark"); - // url - bookmark.setAttribute("href", bm->url().prettyURL()); - // icon - bookmark.setAttribute("icon", bm->icon()); - // title - TQDomElement title = doc.createElement("title"); - title.appendChild(doc.createTextNode(bm->text())); - bookmark.appendChild(title); - - where.appendChild(bookmark); - } -} - -void KrBookmarkHandler::exportToFileFolder(TQDomDocument &doc, TQDomElement &parent, KrBookmark *folder) { - for (KrBookmark *bm = folder->children().first(); bm; bm = folder->children().next()) { - if (bm->isFolder()) { - TQDomElement newFolder = doc.createElement("folder"); - newFolder.setAttribute("icon", bm->icon()); - parent.appendChild(newFolder); - TQDomElement title = doc.createElement("title"); - title.appendChild(doc.createTextNode(bm->text())); - newFolder.appendChild(title); - exportToFileFolder(doc, newFolder, bm); - } else { - exportToFileBookmark(doc, parent, bm); - } - } -} - -// export to file using the xbel standard -// -// <xbel> -// <bookmark href="http://developer.kde.org"><title>Developer Web Site</title></bookmark> -// <folder folded="no"> -// <title>Title of this folder</title> -// <bookmark icon="kde" href="http://www.kde.org"><title>KDE Web Site</title></bookmark> -// <folder toolbar="yes"> -// <title>My own bookmarks</title> -// <bookmark href="http://www.koffice.org"><title>KOffice Web Site</title></bookmark> -// <separator/> -// <bookmark href="http://www.kdevelop.org"><title>KDevelop Web Site</title></bookmark> -// </folder> -// </folder> -// </xbel> -void KrBookmarkHandler::exportToFile() { - TQDomDocument doc( "xbel" ); - TQDomElement root = doc.createElement( "xbel" ); - doc.appendChild( root ); - - exportToFileFolder(doc, root, _root); - if (!doc.firstChild().isProcessingInstruction()) { - // adding: <?xml version="1.0" encoding="UTF-8" ?> if not already present - TQDomProcessingInstruction instr = doc.createProcessingInstruction( "xml", - "version=\"1.0\" encoding=\"UTF-8\" "); - doc.insertBefore( instr, doc.firstChild() ); - } - - - TQString filename = locateLocal( "data", BOOKMARKS_FILE ); - TQFile file(filename); - if ( file.open( IO_WriteOnly ) ) { - TQTextStream stream( &file ); - stream.setEncoding(stream.UnicodeUTF8); - stream << doc.toString(); - file.close(); - } else { - KMessageBox::error(krApp, i18n("Unable to write to %1").arg(filename), i18n("Error")); - } -} - -bool KrBookmarkHandler::importFromFileBookmark(TQDomElement &e, KrBookmark *parent, TQString path, TQString *errorMsg) { - TQString url, name, icon; - // verify tag - if (e.tagName() != "bookmark") { - *errorMsg = e.tagName() + i18n(" instead of ")+"bookmark"; - return false; - } - // verify href - if (!e.hasAttribute("href")) { - *errorMsg = i18n("missing tag ")+ "href"; - return false; - } else url = e.attribute("href"); - // verify title - TQDomElement te = e.firstChild().toElement(); - if (te.tagName() != "title") { - *errorMsg = i18n("missing tag ")+"title"; - return false; - } else name = te.text(); - // do we have an icon? - if (e.hasAttribute("icon")) { - icon=e.attribute("icon"); - } - // ok: got name and url, let's add a bookmark - KrBookmark *bm = KrBookmark::getExistingBookmark(path+name, _collection); - if (!bm) { - bm = new KrBookmark(name, vfs::fromPathOrURL( url ), _collection, icon, path+name); - parent->children().append(bm); - } - - return true; -} - -bool KrBookmarkHandler::importFromFileFolder(TQDomNode &first, KrBookmark *parent, TQString path, TQString *errorMsg) { - TQString name; - TQDomNode n = first; - while (!n.isNull()) { - TQDomElement e = n.toElement(); - if (e.tagName() == "bookmark") { - if (!importFromFileBookmark(e, parent, path, errorMsg)) - return false; - } else if (e.tagName() == "folder") { - TQString iconName = ""; - if (e.hasAttribute("icon")) iconName=e.attribute("icon"); - // the title is the first child of the folder - TQDomElement tmp = e.firstChild().toElement(); - if (tmp.tagName() != "title") { - *errorMsg = i18n("missing tag ")+"title"; - return false; - } else name = tmp.text(); - KrBookmark *folder = new KrBookmark(name, iconName); - parent->children().append(folder); - - TQDomNode nextOne = tmp.nextSibling(); - if (!importFromFileFolder(nextOne, folder, path + name + "/", errorMsg)) - return false; - } else if (e.tagName() == "separator") { - parent->children().append(KrBookmark::separator()); - } - n = n.nextSibling(); - } - return true; -} - - -void KrBookmarkHandler::importFromFile() { - clearBookmarks(_root); - - TQString filename = locateLocal( "data", BOOKMARKS_FILE ); - TQFile file( filename ); - if ( !file.open(IO_ReadOnly)) - return; // no bookmarks file - - TQString errorMsg; - TQDomNode n; - TQDomElement e; - TQDomDocument doc( "xbel" ); - if ( !doc.setContent( &file, &errorMsg ) ) { - goto ERROR; - } - // iterate through the document: first child should be "xbel" (skip all until we find it) - n = doc.firstChild(); - while (!n.isNull() && n.toElement().tagName()!="xbel") - n = n.nextSibling(); - - if (n.isNull() || n.toElement().tagName()!="xbel") { - errorMsg = i18n("%1 doesn't seem to be a valid Bookmarks file").arg(filename); - goto ERROR; - } else n = n.firstChild(); // skip the xbel part - importFromFileFolder(n, _root, "", &errorMsg); - goto SUCCESS; - -ERROR: - KMessageBox::error(krApp, i18n("Error reading bookmarks file: %1").arg(errorMsg), i18n( "Error" )); - -SUCCESS: - file.close(); -} - -void KrBookmarkHandler::populate(TDEPopupMenu *menu) { - _mainBookmarkPopup = menu; - menu->clear(); - _bookmarkIDTable.clear(); - _specialBookmarkIDs.clear(); - buildMenu(_root, menu); -} - -void KrBookmarkHandler::buildMenu(KrBookmark *parent, TDEPopupMenu *menu) { - static int inSecondaryMenu = 0; // used to know if we're on the top menu - - // run the loop twice, in order to put the folders on top. stupid but easy :-) - // note: this code drops the separators put there by the user - for (KrBookmark *bm = parent->children().first(); bm; bm = parent->children().next()) { - if (!bm->isFolder()) continue; - TDEPopupMenu *newMenu = new TDEPopupMenu(menu); - int id = menu->insertItem(TQIconSet(krLoader->loadIcon(bm->icon(), TDEIcon::Small)), - bm->text(), newMenu, -1 /* dummy id */, -1 /* end of list */); - - if( !_bookmarkIDTable.find( menu ) ) - _bookmarkIDTable.insert( menu, new TQMap<int, KrBookmark *> ); - (*_bookmarkIDTable[ menu ])[ id ] = bm; - - ++inSecondaryMenu; - buildMenu(bm, newMenu); - --inSecondaryMenu; - } - for (KrBookmark *bm = parent->children().first(); bm; bm = parent->children().next()) { - if (bm->isFolder()) continue; - if (bm->isSeparator() ) { - menu->insertSeparator(); - continue; - } - int itemIndex = bm->plug(menu, -1 /* end of list */); - CONNECT_BM(bm); - - int id = bm->itemId( itemIndex ); - if( !_bookmarkIDTable.find( menu ) ) - _bookmarkIDTable.insert( menu, new TQMap<int, KrBookmark *> ); - (*_bookmarkIDTable[ menu ])[ id ] = bm; - } - - if (!inSecondaryMenu) { - krConfig->setGroup( "Private" ); - bool hasPopularURLs = krConfig->readBoolEntry( "BM Popular URLs", true ); - bool hasDevices = krConfig->readBoolEntry( "BM Devices", true ); - bool hasLan = krConfig->readBoolEntry( "BM Lan", true ); - bool hasVirtualFS = krConfig->readBoolEntry( "BM Virtual FS", true ); - bool hasJumpback = krConfig->readBoolEntry( "BM Jumpback", true ); - - int itemIndex; - - if( hasPopularURLs ) { - menu->insertSeparator(); - - // add the popular links submenu - TDEPopupMenu *newMenu = new TDEPopupMenu(menu); - itemIndex = menu->insertItem(TQIconSet(krLoader->loadIcon("bookmark_folder", TDEIcon::Small)), - i18n("Popular URLs"), newMenu, -1 /* dummy id */, -1 /* end of list */); - _specialBookmarkIDs.append( itemIndex ); - // add the top 15 urls - #define MAX 15 - KURL::List list = krApp->popularUrls->getMostPopularUrls(MAX); - KURL::List::Iterator it; - for (it = list.begin(); it != list.end(); ++it) { - TQString name; - if ((*it).isLocalFile()) name = (*it).path(); - else name = (*it).prettyURL(); - // note: these bookmark are put into the private collection - // as to not spam the general collection - KrBookmark *bm = KrBookmark::getExistingBookmark(name, _privateCollection); - if (!bm) - bm = new KrBookmark(name, *it, _privateCollection); - bm->plug(newMenu); - CONNECT_BM(bm); - } - - newMenu->insertSeparator(); - krPopularUrls->plug(newMenu); - newMenu->installEventFilter(this); - } - - // do we need to add special bookmarks? - if (SPECIAL_BOOKMARKS) { - if( hasDevices || hasLan || hasVirtualFS || hasJumpback ) - menu->insertSeparator(); - - KrBookmark *bm; - - // note: special bookmarks are not kept inside the _bookmarks list and added ad-hoc - if( hasDevices ) { - bm = KrBookmark::devices(_collection); - itemIndex = bm->plug(menu); - _specialBookmarkIDs.append( bm->itemId( itemIndex ) ); - CONNECT_BM(bm); - } - - if( hasLan ) { - bm = KrBookmark::lan(_collection); - itemIndex = bm->plug(menu); - _specialBookmarkIDs.append( bm->itemId( itemIndex ) ); - CONNECT_BM(bm); - } - - if( hasVirtualFS ) { - bm = KrBookmark::virt(_collection); - itemIndex = bm->plug(menu); - _specialBookmarkIDs.append( bm->itemId( itemIndex ) ); - CONNECT_BM(bm); - } - - if( hasJumpback ) { - // add the jump-back button - itemIndex = krJumpBack->plug(menu); - _specialBookmarkIDs.append( krJumpBack->itemId( itemIndex ) ); - menu->insertSeparator(); - itemIndex = krSetJumpBack->plug(menu); - _specialBookmarkIDs.append( krSetJumpBack->itemId( itemIndex ) ); - } - } - - if( !hasJumpback ) - menu->insertSeparator(); - - itemIndex = menu->insertItem(krLoader->loadIcon("bookmark_add", TDEIcon::Small), - i18n("Bookmark Current"), BookmarkCurrent); - _specialBookmarkIDs.append( itemIndex ); - itemIndex = menu->insertItem(krLoader->loadIcon("bookmark", TDEIcon::Small), - i18n("Manage Bookmarks"), ManageBookmarks); - _specialBookmarkIDs.append( itemIndex ); - - // make sure the menu is connected to us - disconnect(menu, TQ_SIGNAL(activated(int)), 0, 0); - connect(menu, TQ_SIGNAL(activated(int)), this, TQ_SLOT(menuOperation(int))); - } - - menu->installEventFilter(this); -} - -void KrBookmarkHandler::clearBookmarks(KrBookmark *root) { - KrBookmark *bm = root->children().first(); - while (bm) { - if (bm->isFolder()) - clearBookmarks(bm); - else { - bm->unplugAll(); - delete bm; - } - - bm = root->children().next(); - } - root->children().clear(); -} - -void KrBookmarkHandler::bookmarksChanged(const TQString&, const TQString&) { - importFromFile(); -} - -bool KrBookmarkHandler::eventFilter( TQObject *obj, TQEvent *ev ) { - if (ev->type() == TQEvent::MouseButtonRelease) { - switch (static_cast<TQMouseEvent*>(ev)->button()) { - case TQt::RightButton: - _middleClick = false; - if( obj->inherits( "TQPopupMenu" ) ) { - int id = static_cast<TQPopupMenu*>(obj)->idAt( static_cast<TQMouseEvent*>(ev)->pos() ); - - if( obj == _mainBookmarkPopup && _specialBookmarkIDs.contains( id ) ) { - rightClickOnSpecialBookmark(); - return true; - } - - if( _bookmarkIDTable.find( obj ) ) { - TQMap<int, KrBookmark*> * table = _bookmarkIDTable[ obj ]; - if( table && table->count( id ) ) { - KrBookmark *bm = (*table)[ id ]; - rightClicked( static_cast<TQPopupMenu*>(obj), id, bm ); - return true; - } - } - } - case TQt::LeftButton: - _middleClick = false; - break; - case TQt::MidButton: - _middleClick = true; - break; - default: - break; - } - } - return TQObject::eventFilter(obj, ev); -} - -#define POPULAR_URLS_ID 100100 -#define DEVICES_ID 100101 -#define LAN_ID 100103 -#define VIRTUAL_FS_ID 100102 -#define JUMP_BACK_ID 100104 - -void KrBookmarkHandler::rightClickOnSpecialBookmark() { - krConfig->setGroup( "Private" ); - bool hasPopularURLs = krConfig->readBoolEntry( "BM Popular URLs", true ); - bool hasDevices = krConfig->readBoolEntry( "BM Devices", true ); - bool hasLan = krConfig->readBoolEntry( "BM Lan", true ); - bool hasVirtualFS = krConfig->readBoolEntry( "BM Virtual FS", true ); - bool hasJumpback = krConfig->readBoolEntry( "BM Jumpback", true ); - - TQPopupMenu menu( _mainBookmarkPopup ); - menu.setCaption( i18n( "Enable special bookmarks" ) ); - menu.setCheckable( true ); - - menu.insertItem( i18n( "Popular URLs" ), POPULAR_URLS_ID ); - menu.setItemChecked( POPULAR_URLS_ID, hasPopularURLs ); - menu.insertItem( i18n( "Devices" ), DEVICES_ID ); - menu.setItemChecked( DEVICES_ID, hasDevices ); - menu.insertItem( i18n( "Local Network" ), LAN_ID ); - menu.setItemChecked( LAN_ID, hasLan ); - menu.insertItem( i18n( "Virtual Filesystem" ), VIRTUAL_FS_ID ); - menu.setItemChecked( VIRTUAL_FS_ID, hasVirtualFS ); - menu.insertItem( i18n( "Jump back" ), JUMP_BACK_ID ); - menu.setItemChecked( JUMP_BACK_ID, hasJumpback ); - - connect( _mainBookmarkPopup, TQ_SIGNAL( highlighted( int ) ), &menu, TQ_SLOT( close() ) ); - connect( _mainBookmarkPopup, TQ_SIGNAL( activated( int ) ), &menu, TQ_SLOT( close() ) ); - - int result = menu.exec( TQCursor::pos() ); - bool doCloseMain = true; - - krConfig->setGroup( "Private" ); - - switch( result ) { - case POPULAR_URLS_ID: - krConfig->writeEntry( "BM Popular URLs", !hasPopularURLs ); - break; - case DEVICES_ID: - krConfig->writeEntry( "BM Devices", !hasDevices ); - break; - case LAN_ID: - krConfig->writeEntry( "BM Lan", !hasLan ); - break; - case VIRTUAL_FS_ID: - krConfig->writeEntry( "BM Virtual FS", !hasVirtualFS ); - break; - case JUMP_BACK_ID: - krConfig->writeEntry( "BM Jumpback", !hasJumpback ); - break; - default: - doCloseMain = false; - break; - } - - menu.close(); - - if( doCloseMain && _mainBookmarkPopup ) - _mainBookmarkPopup->close(); -} - -#define OPEN_ID 100200 -#define OPEN_NEW_TAB_ID 100201 -#define DELETE_ID 100202 - -void KrBookmarkHandler::rightClicked( TQPopupMenu *menu, int /*id*/, KrBookmark * bm ) { - TQPopupMenu popup( _mainBookmarkPopup ); - - popup.insertItem( krLoader->loadIcon( "document-open", TDEIcon::Panel ), i18n( "Open" ), OPEN_ID ); - popup.insertItem( krLoader->loadIcon( "tab_new", TDEIcon::Panel ), i18n( "Open in a new tab" ), OPEN_NEW_TAB_ID ); - popup.insertSeparator(); - popup.insertItem( krLoader->loadIcon( "edit-delete", TDEIcon::Panel ), i18n( "Delete" ), DELETE_ID ); - - connect( menu, TQ_SIGNAL( highlighted( int ) ), &popup, TQ_SLOT( close() ) ); - connect( menu, TQ_SIGNAL( activated( int ) ), &popup, TQ_SLOT( close() ) ); - - int result = popup.exec( TQCursor::pos() ); - - popup.close(); - if( _mainBookmarkPopup && result >= OPEN_ID && result <= DELETE_ID ) { - _mainBookmarkPopup->close(); - } - - switch( result ) { - case OPEN_ID: - SLOTS->refresh( bm->url() ); - break; - case OPEN_NEW_TAB_ID: - SLOTS->newTab( bm->url() ); - break; - case DELETE_ID: - deleteBookmark( bm ); - break; - } -} - -// used to monitor middle clicks. if mid is found, then the -// bookmark is opened in a new tab. ugly, but easier than overloading -// TDEAction and TDEActionCollection. -void KrBookmarkHandler::slotActivated(const KURL& url) { - if (_middleClick) - SLOTS->newTab(url); - else SLOTS->refresh(url); -} - - -#include "krbookmarkhandler.moc" diff --git a/krusader/BookMan/krbookmarkhandler.h b/krusader/BookMan/krbookmarkhandler.h deleted file mode 100644 index 818c3c9..0000000 --- a/krusader/BookMan/krbookmarkhandler.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef KRBOOKMARK_HANDLER_H -#define KRBOOKMARK_HANDLER_H - -#include "krbookmark.h" -#include <tqobject.h> -#include <tqguardedptr.h> -#include <tdepopupmenu.h> -#include <kurl.h> -#include <tqptrdict.h> -#include <tqvaluelist.h> -#include <tqdom.h> -#include <tqmap.h> - -class TDEActionCollection; -class KBookmarkManager; - -class KrBookmarkHandler: public TQObject { - TQ_OBJECT - - friend class KrAddBookmarkDlg; - enum Actions { BookmarkCurrent=0, ManageBookmarks }; -public: - KrBookmarkHandler(); - ~KrBookmarkHandler(); - void populate(TDEPopupMenu *menu); - void addBookmark(KrBookmark *bm, KrBookmark *parent = 0); - void bookmarkCurrent(KURL url); - -protected: - void deleteBookmark(KrBookmark *bm); - void importFromFile(); - bool importFromFileBookmark(TQDomElement &e, KrBookmark *parent, TQString path, TQString *errorMsg); - bool importFromFileFolder(TQDomNode &first, KrBookmark *parent, TQString path, TQString *errorMsg); - void exportToFile(); - void exportToFileFolder(TQDomDocument &doc, TQDomElement &parent, KrBookmark *folder); - void exportToFileBookmark(TQDomDocument &doc, TQDomElement &where, KrBookmark *bm); - void clearBookmarks(KrBookmark *root); - void buildMenu(KrBookmark *parent, TDEPopupMenu *menu); - - bool eventFilter( TQObject *obj, TQEvent *ev ); - - void rightClicked( TQPopupMenu *menu, int id, KrBookmark *bm ); - void rightClickOnSpecialBookmark(); - - void removeReferences( KrBookmark *root, KrBookmark *bmToRemove ); - -protected slots: - void menuOperation(int id); - void bookmarksChanged(const TQString&, const TQString&); - void slotActivated(const KURL& url); - -private: - TDEActionCollection *_collection, *_privateCollection; - KrBookmark *_root; - // the whole KBookmarkManager is an ugly hack. use it until we have our own - KBookmarkManager *manager; - bool _middleClick; // if true, the user clicked the middle button to open the bookmark - - TQGuardedPtr<TDEPopupMenu> _mainBookmarkPopup; // main bookmark popup menu - TQValueList<int> _specialBookmarkIDs; // the ID list of the special bookmarks - TQPtrDict<TQMap<int,KrBookmark*> > _bookmarkIDTable; // the IDs of the bookmarks -}; - -#endif // KRBOOKMARK_HANDLER_H |