1
// Born as kdelibs/kio/kfile/kfilebookmarkhandler.cpp
6
#include <qtextstream.h>
8
#include <kbookmarkimporter.h>
10
#include <kpopupmenu.h>
11
#include <ksavefile.h>
12
#include <kstandarddirs.h>
14
#include "konsole_mnu.h"
15
#include "konsolebookmarkmenu.h"
16
#include "konsolebookmarkhandler.h"
18
KonsoleBookmarkHandler::KonsoleBookmarkHandler( KonsoleMenu *konsole, bool )
19
: QObject( konsole, "KonsoleBookmarkHandler" ),
24
m_menu = new KPopupMenu( konsole, "bookmark menu" );
26
QString file = locate( "data", "konsole/bookmarks.xml" );
28
file = locateLocal( "data", "konsole/bookmarks.xml" );
30
// import old bookmarks
31
if ( !KStandardDirs::exists( file ) ) {
32
QString oldFile = locate( "data", "kfile/bookmarks.html" );
33
if ( !oldFile.isEmpty() )
34
importOldBookmarks( oldFile, file );
37
KBookmarkManager *manager = KBookmarkManager::managerForFile( file, false);
38
manager->setUpdate( true );
39
manager->setShowNSBookmarks( false );
41
connect( manager, SIGNAL( changed(const QString &, const QString &) ),
42
SLOT( slotBookmarksChanged(const QString &, const QString &) ) );
43
m_bookmarkMenu = new KonsoleBookmarkMenu( manager, this, m_menu,
44
NULL, false, /*Not toplevel*/
45
false /*No 'Add Bookmark'*/ );
48
QString KonsoleBookmarkHandler::currentURL() const
50
return m_konsole->baseURL().url();
53
void KonsoleBookmarkHandler::importOldBookmarks( const QString& path,
54
const QString& destinationPath )
56
KSaveFile file( destinationPath );
57
if ( file.status() != 0 )
60
m_importStream = file.textStream();
61
*m_importStream << "<!DOCTYPE xbel>\n<xbel>\n";
63
KNSBookmarkImporter importer( path );
65
SIGNAL( newBookmark( const QString&, const QCString&, const QString& )),
66
SLOT( slotNewBookmark( const QString&, const QCString&, const QString& )));
68
SIGNAL( newFolder( const QString&, bool, const QString& )),
69
SLOT( slotNewFolder( const QString&, bool, const QString& )));
70
connect( &importer, SIGNAL( newSeparator() ), SLOT( newSeparator() ));
71
connect( &importer, SIGNAL( endMenu() ), SLOT( endMenu() ));
73
importer.parseNSBookmarks( false );
75
*m_importStream << "</xbel>";
81
void KonsoleBookmarkHandler::slotNewBookmark( const QString& /*text*/,
83
const QString& additionalInfo )
85
*m_importStream << "<bookmark icon=\"" << KMimeType::iconForURL( KURL( url ) );
86
*m_importStream << "\" href=\"" << QString::fromUtf8(url) << "\">\n";
87
*m_importStream << "<title>" << (additionalInfo.isEmpty() ? QString::fromUtf8(url) : additionalInfo) << "</title>\n</bookmark>\n";
90
void KonsoleBookmarkHandler::slotNewFolder( const QString& text, bool /*open*/,
91
const QString& /*additionalInfo*/ )
93
*m_importStream << "<folder icon=\"bookmark_folder\">\n<title=\"";
94
*m_importStream << text << "\">\n";
97
void KonsoleBookmarkHandler::slotBookmarksChanged( const QString &,
100
// This is called when someone changes bookmarks in konsole....
101
m_bookmarkMenu->slotBookmarksChanged("");
104
void KonsoleBookmarkHandler::newSeparator()
106
*m_importStream << "<separator/>\n";
109
void KonsoleBookmarkHandler::endFolder()
111
*m_importStream << "</folder>\n";
114
void KonsoleBookmarkHandler::virtual_hook( int id, void* data )
115
{ KBookmarkOwner::virtual_hook( id, data ); }
117
#include "konsolebookmarkhandler.moc"