21 #include <kfiledialog.h>
22 #include <kstringhandler.h>
25 #include <tqtextcodec.h>
27 #include <sys/types.h>
32 #include "kbookmarkimporter.h"
33 #include "kbookmarkimporter_ie.h"
36 void KIEBookmarkImporter::parseIEBookmarks_url_file( TQString filename, TQString name ) {
37 static const int g_lineLimit = 16*1024;
41 if(f.open(IO_ReadOnly)) {
43 TQCString s(g_lineLimit);
45 while(f.readLine(s.data(), g_lineLimit)>=0) {
46 if ( s[s.length()-1] !=
'\n' )
48 kdWarning() <<
"IE bookmarks contain a line longer than " << g_lineLimit <<
". Skipping." << endl;
51 TQCString t = s.stripWhiteSpace();
52 TQRegExp rx(
"URL=(.*)" );
53 if (rx.exactMatch(t)) {
54 emit newBookmark( name, TQString(rx.cap(1)).latin1(), TQString(
"") );
63 void KIEBookmarkImporter::parseIEBookmarks_dir( TQString dirname, TQString foldername )
67 dir.setFilter( TQDir::Files | TQDir::Dirs );
68 dir.setSorting( TQDir::Name | TQDir::DirsFirst );
69 dir.setNameFilter(
"*.url");
70 dir.setMatchAllDirs(
true);
72 const TQFileInfoList *list = dir.entryInfoList();
75 if (dirname != m_fileName)
76 emit newFolder( foldername,
false,
"" );
78 TQFileInfoListIterator it( *list );
81 while ( (fi = it.current()) != 0 ) {
84 if (fi->fileName() ==
"." || fi->fileName() ==
"..")
continue;
87 parseIEBookmarks_dir(fi->absFilePath(), fi->fileName());
89 }
else if (fi->isFile()) {
90 if (fi->fileName().endsWith(
".url")) {
91 TQString name = fi->fileName();
92 name.truncate(name.length() - 4);
93 parseIEBookmarks_url_file(fi->absFilePath(), name);
99 if (dirname != m_fileName)
104 void KIEBookmarkImporter::parseIEBookmarks( )
106 parseIEBookmarks_dir( m_fileName );
109 TQString KIEBookmarkImporter::IEBookmarksDir()
114 return p->findDefaultLocation();
117 void KIEBookmarkImporterImpl::parse() {
119 setupSignalForwards(&importer,
this);
120 importer.parseIEBookmarks();
123 TQString KIEBookmarkImporterImpl::findDefaultLocation(
bool)
const
131 return KFileDialog::getExistingDirectory();
138 IEExporter(
const TQString & );
141 virtual void visit(
const KBookmark & );
148 static TQString ieStyleQuote(
const TQString &str ) {
150 s.replace(TQRegExp(
"[/\\:*?\"<>|]"),
"_");
154 IEExporter::IEExporter(
const TQString & dname ) {
155 m_currentDir.setPath( dname );
158 void IEExporter::visit(
const KBookmark &bk ) {
159 TQString fname = m_currentDir.path() +
"/" + ieStyleQuote( bk.fullText() ) +
".url";
161 TQFile file( fname );
162 file.open( IO_WriteOnly );
163 TQTextStream ts( &file );
164 ts <<
"[InternetShortcut]\r\n";
165 ts <<
"URL=" << bk.url().url().utf8() <<
"\r\n";
169 TQString dname = m_currentDir.path() +
"/" + ieStyleQuote( grp.fullText() );
171 m_currentDir.mkdir( dname );
172 m_currentDir.cd( dname );
181 IEExporter exporter( m_fileName );
182 exporter.write( parent );
185 #include "kbookmarkimporter_ie.moc"
A class for importing IE bookmarks.
A class for importing IE bookmarks.