27 #include <qtextcodec.h>
28 #include <QtGui/QApplication>
30 #include <sys/types.h>
41 class KIEBookmarkImporter :
public QObject
45 KIEBookmarkImporter(
const QString & fileName ) : m_fileName(fileName) {}
46 ~KIEBookmarkImporter() {}
48 void parseIEBookmarks();
51 static QString IEBookmarksDir();
61 void parseIEBookmarks_url_file(
const QString &filename,
const QString &name );
66 void 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(
"") );
92 void 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) );
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"))) {
115 name.truncate(name.length() - 4);
116 parseIEBookmarks_url_file(fi.absoluteFilePath(), name);
122 if (dirname != m_fileName)
127 void KIEBookmarkImporter::parseIEBookmarks( )
129 parseIEBookmarks_dir( m_fileName );
132 QString KIEBookmarkImporter::IEBookmarksDir()
143 importer.parseIEBookmarks();
173 s.replace(QRegExp(
"[/\\:*?\"<>|]"),
"_");
177 IEExporter::IEExporter(
const QString & dname ) {
178 m_currentDir.setPath( dname );
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"