1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
// Born as kdelibs/kio/kfile/kfilebookmarkhandler.cpp
#include <stdio.h>
#include <stdlib.h>
#include <qtextstream.h>
#include <kbookmarkimporter.h>
#include <kmimetype.h>
#include <kpopupmenu.h>
#include <ksavefile.h>
#include <kstandarddirs.h>
#include "konsole_mnu.h"
#include "konsolebookmarkmenu.h"
#include "konsolebookmarkhandler.h"
KonsoleBookmarkHandler::KonsoleBookmarkHandler( KonsoleMenu *konsole, bool )
: QObject( konsole, "KonsoleBookmarkHandler" ),
KBookmarkOwner(),
m_konsole( konsole ),
m_importStream( 0L )
{
m_menu = new KPopupMenu( konsole, "bookmark menu" );
QString file = locate( "data", "konsole/bookmarks.xml" );
if ( file.isEmpty() )
file = locateLocal( "data", "konsole/bookmarks.xml" );
// import old bookmarks
if ( !KStandardDirs::exists( file ) ) {
QString oldFile = locate( "data", "kfile/bookmarks.html" );
if ( !oldFile.isEmpty() )
importOldBookmarks( oldFile, file );
}
KBookmarkManager *manager = KBookmarkManager::managerForFile( file, false);
manager->setUpdate( true );
manager->setShowNSBookmarks( false );
connect( manager, SIGNAL( changed(const QString &, const QString &) ),
SLOT( slotBookmarksChanged(const QString &, const QString &) ) );
m_bookmarkMenu = new KonsoleBookmarkMenu( manager, this, m_menu,
NULL, false, /*Not toplevel*/
false /*No 'Add Bookmark'*/ );
}
QString KonsoleBookmarkHandler::currentURL() const
{
return m_konsole->baseURL().url();
}
void KonsoleBookmarkHandler::importOldBookmarks( const QString& path,
const QString& destinationPath )
{
KSaveFile file( destinationPath );
if ( file.status() != 0 )
return;
m_importStream = file.textStream();
*m_importStream << "<!DOCTYPE xbel>\n<xbel>\n";
KNSBookmarkImporter importer( path );
connect( &importer,
SIGNAL( newBookmark( const QString&, const QCString&, const QString& )),
SLOT( slotNewBookmark( const QString&, const QCString&, const QString& )));
connect( &importer,
SIGNAL( newFolder( const QString&, bool, const QString& )),
SLOT( slotNewFolder( const QString&, bool, const QString& )));
connect( &importer, SIGNAL( newSeparator() ), SLOT( newSeparator() ));
connect( &importer, SIGNAL( endMenu() ), SLOT( endMenu() ));
importer.parseNSBookmarks( false );
*m_importStream << "</xbel>";
file.close();
m_importStream = 0L;
}
void KonsoleBookmarkHandler::slotNewBookmark( const QString& /*text*/,
const QCString& url,
const QString& additionalInfo )
{
*m_importStream << "<bookmark icon=\"" << KMimeType::iconForURL( KURL( url ) );
*m_importStream << "\" href=\"" << QString::fromUtf8(url) << "\">\n";
*m_importStream << "<title>" << (additionalInfo.isEmpty() ? QString::fromUtf8(url) : additionalInfo) << "</title>\n</bookmark>\n";
}
void KonsoleBookmarkHandler::slotNewFolder( const QString& text, bool /*open*/,
const QString& /*additionalInfo*/ )
{
*m_importStream << "<folder icon=\"bookmark_folder\">\n<title=\"";
*m_importStream << text << "\">\n";
}
void KonsoleBookmarkHandler::slotBookmarksChanged( const QString &,
const QString & )
{
// This is called when someone changes bookmarks in konsole....
m_bookmarkMenu->slotBookmarksChanged("");
}
void KonsoleBookmarkHandler::newSeparator()
{
*m_importStream << "<separator/>\n";
}
void KonsoleBookmarkHandler::endFolder()
{
*m_importStream << "</folder>\n";
}
void KonsoleBookmarkHandler::virtual_hook( int id, void* data )
{ KBookmarkOwner::virtual_hook( id, data ); }
#include "konsolebookmarkhandler.moc"
|