27#include <qtextcodec.h>
28#include <QtGui/QApplication>
41class KIEBookmarkImporter :
public QObject
45 KIEBookmarkImporter(
const QString & fileName ) : m_fileName(fileName) {}
46 ~KIEBookmarkImporter() {}
48 void parseIEBookmarks();
51 static QString IEBookmarksDir();
54 void newBookmark(
const QString & text,
const QString & url,
const QString & additionalInfo );
55 void newFolder(
const QString & text,
bool open,
const QString & additionalInfo );
60 void parseIEBookmarks_dir(
const QString &dirname,
const QString &name = QString() );
61 void parseIEBookmarks_url_file(
const QString &filename,
const QString &name );
66void KIEBookmarkImporter::parseIEBookmarks_url_file(
const QString &filename,
const QString &name ) {
67 static const int g_lineLimit = 16*1024;
71 if(
f.open(QIODevice::ReadOnly)) {
73 QByteArray s(g_lineLimit,0);
75 while(
f.readLine(s.data(), g_lineLimit)>=0) {
76 if ( s[s.length()-1] !=
'\n' )
78 kWarning() <<
"IE bookmarks contain a line longer than " << g_lineLimit <<
". Skipping.";
81 QByteArray t = s.trimmed();
82 QRegExp rx(
"URL=(.*)" );
83 if (rx.exactMatch(t)) {
84 emit newBookmark( name, rx.cap(1), QString(
"") );
92void KIEBookmarkImporter::parseIEBookmarks_dir(
const QString &dirname,
const QString &foldername )
96 dir.setFilter( QDir::Files | QDir::Dirs | QDir::AllDirs );
97 dir.setSorting( QFlags<QDir::SortFlag>(QDir::Name | QDir::DirsFirst) );
98 dir.setNameFilters(QStringList(
"*.url"));
100 const QFileInfoList
list =
dir.entryInfoList();
101 if (
list.isEmpty())
return;
103 if (dirname != m_fileName)
104 emit newFolder( foldername,
false,
"" );
106 foreach (
const QFileInfo &fi, list) {
107 if (fi.fileName() ==
"." || fi.fileName() ==
"..")
continue;
110 parseIEBookmarks_dir(fi.absoluteFilePath(), fi.fileName());
112 }
else if (fi.isFile()) {
113 if (fi.fileName().endsWith(QLatin1String(
".url"))) {
114 QString
name = fi.fileName();
116 parseIEBookmarks_url_file(fi.absoluteFilePath(), name);
122 if (dirname != m_fileName)
127void KIEBookmarkImporter::parseIEBookmarks( )
129 parseIEBookmarks_dir( m_fileName );
132QString KIEBookmarkImporter::IEBookmarksDir()
134 static KIEBookmarkImporterImpl* p = 0;
136 p =
new KIEBookmarkImporterImpl;
143 importer.parseIEBookmarks();
161 IEExporter(
const QString & );
164 virtual void visit(
const KBookmark & );
165 virtual void visitEnter(
const KBookmarkGroup & );
166 virtual void visitLeave(
const KBookmarkGroup & );
173 s.replace(QRegExp(
"[/\\:*?\"<>|]"),
"_");
177IEExporter::IEExporter(
const QString & dname ) {
178 m_currentDir.setPath( dname );
181void IEExporter::visit(
const KBookmark &bk ) {
185 if (file.open(QIODevice::WriteOnly)) {
186 QTextStream ts( &file );
187 ts <<
"[InternetShortcut]\r\n";
188 ts <<
"URL=" << bk.
url().
url().toUtf8() <<
"\r\n";
195 m_currentDir.mkdir( dname );
196 m_currentDir.cd( dname );
206 exporter.write( parent );
209#include "kbookmarkimporter_ie.moc"
void traverse(const KBookmarkGroup &)
void setupSignalForwards(QObject *src, QObject *dst)
QString fullText() const
Text shown for the bookmark, not truncated.
KUrl url() const
URL contained by the bookmark.
static QString getExistingDirectory(const KUrl &startDir=KUrl(), QWidget *parent=0, const QString &caption=QString())
Creates a modal directory-selection dialog and returns the selected directory (local only) or an empt...
virtual void write(const KBookmarkGroup &)
virtual QString findDefaultLocation(bool forSaving=false) const
QString url(AdjustPathOption trailing=LeaveTrailingSlash) const
static quint32 f(DES_KEY *key, quint32 r, char *subkey)
static QString ieStyleQuote(const QString &str)
QString dir(const QString &fileClass)
Returns the most recently used directory accociated with this file-class.
QStringList list(const QString &fileClass)
Returns a list of directories associated with this file-class.
const char * name(StandardAction id)