diff options
Diffstat (limited to 'kio/bookmarks/kbookmarkimporter_ns.cc')
-rw-r--r-- | kio/bookmarks/kbookmarkimporter_ns.cc | 243 |
1 files changed, 0 insertions, 243 deletions
diff --git a/kio/bookmarks/kbookmarkimporter_ns.cc b/kio/bookmarks/kbookmarkimporter_ns.cc deleted file mode 100644 index 5521bee7e..000000000 --- a/kio/bookmarks/kbookmarkimporter_ns.cc +++ /dev/null @@ -1,243 +0,0 @@ -// -*- c-basic-offset:4; indent-tabs-mode:nil -*- -// vim: set ts=4 sts=4 sw=4 et: -/* This file is part of the KDE libraries - Copyright (C) 1996-1998 Martin R. Jones <[email protected]> - Copyright (C) 2000 David Faure <[email protected]> - Copyright (C) 2003 Alexander Kellett <[email protected]> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License version 2 as published by the Free Software Foundation. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include "kbookmarkimporter.h" -#include "kbookmarkexporter.h" -#include "kbookmarkmanager.h" -#include <kfiledialog.h> -#include <kstringhandler.h> -#include <klocale.h> -#include <kdebug.h> -#include <kcharsets.h> -#include <tqtextcodec.h> -#include <tqstylesheet.h> - -#include <sys/types.h> -#include <stddef.h> -#include <dirent.h> -#include <sys/stat.h> -#include <assert.h> - -void KNSBookmarkImporterImpl::parse() -{ - TQFile f(m_fileName); - TQTextCodec * codec = m_utf8 ? TQTextCodec::codecForName("UTF-8") : TQTextCodec::codecForLocale(); - Q_ASSERT(codec); - if (!codec) - return; - - if(f.open(IO_ReadOnly)) { - - static const int g_lineLimit = 16*1024; - TQCString s(g_lineLimit); - // skip header - while(f.readLine(s.data(), g_lineLimit) >= 0 && !s.contains("<DL>")); - - while(f.readLine(s.data(), g_lineLimit)>=0) { - if ( s[s.length()-1] != '\n' ) // Gosh, this line is longer than g_lineLimit. Skipping. - { - kdWarning() << "Netscape bookmarks contain a line longer than " << g_lineLimit << ". Skipping." << endl; - continue; - } - TQCString t = s.stripWhiteSpace(); - if(t.left(12).upper() == "<DT><A HREF=" || - t.left(16).upper() == "<DT><H3><A HREF=") { - int firstQuotes = t.find('"')+1; - int secondQuotes = t.find('"', firstQuotes); - if (firstQuotes != -1 && secondQuotes != -1) - { - TQCString link = t.mid(firstQuotes, secondQuotes-firstQuotes); - int endTag = t.find('>', secondQuotes+1); - TQCString name = t.mid(endTag+1); - name = name.left(name.findRev('<')); - if ( name.right(4) == "</A>" ) - name = name.left( name.length() - 4 ); - TQString qname = KCharsets::resolveEntities( codec->toUnicode( name ) ); - TQCString additionalInfo = t.mid( secondQuotes+1, endTag-secondQuotes-1 ); - - emit newBookmark( qname, - link, codec->toUnicode(additionalInfo) ); - } - } - else if(t.left(7).upper() == "<DT><H3") { - int endTag = t.find('>', 7); - TQCString name = t.mid(endTag+1); - name = name.left(name.findRev('<')); - TQString qname = KCharsets::resolveEntities( codec->toUnicode( name ) ); - TQCString additionalInfo = t.mid( 8, endTag-8 ); - bool folded = (additionalInfo.left(6) == "FOLDED"); - if (folded) additionalInfo.remove(0,7); - - emit newFolder( qname, - !folded, - codec->toUnicode(additionalInfo) ); - } - else if(t.left(4).upper() == "<HR>") - emit newSeparator(); - else if(t.left(8).upper() == "</DL><P>") - emit endFolder(); - } - - f.close(); - } -} - -TQString KNSBookmarkImporterImpl::findDefaultLocation(bool forSaving) const -{ - if (m_utf8) - { - if ( forSaving ) - return KFileDialog::getSaveFileName( TQDir::homeDirPath() + "/.mozilla", - i18n("*.html|HTML Files (*.html)") ); - else - return KFileDialog::getOpenFileName( TQDir::homeDirPath() + "/.mozilla", - i18n("*.html|HTML Files (*.html)") ); - } - else - { - return TQDir::homeDirPath() + "/.netscape/bookmarks.html"; - } -} - -//////////////////////////////////////////////////////////////// - - -void KNSBookmarkImporter::parseNSBookmarks( bool utf8 ) -{ - KNSBookmarkImporterImpl importer; - importer.setFilename(m_fileName); - importer.setUtf8(utf8); - importer.setupSignalForwards(&importer, this); - importer.parse(); -} - -TQString KNSBookmarkImporter::netscapeBookmarksFile( bool forSaving ) -{ - static KNSBookmarkImporterImpl *p = 0; - if (!p) - { - p = new KNSBookmarkImporterImpl; - p->setUtf8(false); - } - return p->findDefaultLocation(forSaving); -} - -TQString KNSBookmarkImporter::mozillaBookmarksFile( bool forSaving ) -{ - static KNSBookmarkImporterImpl *p = 0; - if (!p) - { - p = new KNSBookmarkImporterImpl; - p->setUtf8(true); - } - return p->findDefaultLocation(forSaving); -} - - -//////////////////////////////////////////////////////////////// -// compat only -//////////////////////////////////////////////////////////////// - -void KNSBookmarkExporter::write(bool utf8) { - KNSBookmarkExporterImpl exporter(m_pManager, m_fileName); - exporter.setUtf8(utf8); - exporter.write(m_pManager->root()); -} - -void KNSBookmarkExporter::writeFolder(TQTextStream &/*stream*/, KBookmarkGroup /*gp*/) { - // TODO - requires a d pointer workaround hack? -} - -//////////////////////////////////////////////////////////////// - -void KNSBookmarkExporterImpl::setUtf8(bool utf8) { - m_utf8 = utf8; -} - -void KNSBookmarkExporterImpl::write(KBookmarkGroup parent) { - if (TQFile::exists(m_fileName)) { - ::rename( - TQFile::encodeName(m_fileName), - TQFile::encodeName(m_fileName + ".beforekde")); - } - - TQFile file(m_fileName); - - if (!file.open(IO_WriteOnly)) { - kdError(7043) << "Can't write to file " << m_fileName << endl; - return; - } - - TQTextStream fstream(&file); - fstream.setEncoding(m_utf8 ? TQTextStream::UnicodeUTF8 : TQTextStream::Locale); - - TQString charset - = m_utf8 ? "UTF-8" : TQString::fromLatin1(TQTextCodec::codecForLocale()->name()).upper(); - - fstream << "<!DOCTYPE NETSCAPE-Bookmark-file-1>" << endl - << i18n("<!-- This file was generated by Konqueror -->") << endl - << "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=" - << charset << "\">" << endl - << "<TITLE>" << i18n("Bookmarks") << "</TITLE>" << endl - << "<H1>" << i18n("Bookmarks") << "</H1>" << endl - << "<DL><p>" << endl - << folderAsString(parent) - << "</DL><P>" << endl; -} - -TQString KNSBookmarkExporterImpl::folderAsString(KBookmarkGroup parent) const { - TQString str; - TQTextStream fstream(&str, IO_WriteOnly); - - for (KBookmark bk = parent.first(); !bk.isNull(); bk = parent.next(bk)) { - if (bk.isSeparator()) { - fstream << "<HR>" << endl; - continue; - } - - TQString text = TQStyleSheet::escape(bk.fullText()); - - if (bk.isGroup() ) { - fstream << "<DT><H3 " - << (!bk.toGroup().isOpen() ? "FOLDED " : "") - << bk.internalElement().attribute("netscapeinfo") << ">" - << text << "</H3>" << endl - << "<DL><P>" << endl - << folderAsString(bk.toGroup()) - << "</DL><P>" << endl; - continue; - - } else { - // note - netscape seems to use local8bit for url... - fstream << "<DT><A HREF=\"" << bk.url().url() << "\"" - << bk.internalElement().attribute("netscapeinfo") << ">" - << text << "</A>" << endl; - continue; - } - } - - return str; -} - -//// - -#include "kbookmarkimporter_ns.moc" |