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();
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 );
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) );
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();
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()
141 KIEBookmarkImporter importer(m_fileName);
142 setupSignalForwards(&importer,
this);
143 importer.parseIEBookmarks();
161 IEExporter(
const QString & );
173 s.replace(QRegExp(
"[/\\:*?\"<>|]"),
"_");
177 IEExporter::IEExporter(
const QString & dname ) {
178 m_currentDir.setPath( dname );
181 void 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 );
205 IEExporter exporter( m_fileName );
206 exporter.write( parent );
209 #include "kbookmarkimporter_ie.moc"
static quint32 f(DES_KEY *key, quint32 r, char *subkey)
static QString ieStyleQuote(const QString &str)
A class for importing IE bookmarks.
KUrl url() const
URL contained by the bookmark.
FileJob * open(const KUrl &url, QIODevice::OpenMode mode)
Open ( random access I/O )
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...
QString dir(const QString &fileClass)
Returns the most recently used directory accociated with this file-class.
static QDebug kWarning(bool cond, int area=KDE_DEFAULT_DEBUG_AREA)
QString url(AdjustPathOption trailing=LeaveTrailingSlash) const
QString fullText() const
Text shown for the bookmark, not truncated.
virtual void write(const KBookmarkGroup &)
virtual QString findDefaultLocation(bool forSaving=false) const
QStringList list(const QString &fileClass)
Returns a list of directories associated with this file-class.