kbookmarkmanager.h
00001 // -*- c-basic-offset:4; indent-tabs-mode:nil -*- 00002 // vim: set ts=4 sts=4 sw=4 et: 00003 /* This file is part of the KDE libraries 00004 Copyright (C) 2000 David Faure <faure@kde.org> 00005 00006 This library is free software; you can redistribute it and/or 00007 modify it under the terms of the GNU Library General Public 00008 License version 2 as published by the Free Software Foundation. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public License 00016 along with this library; see the file COPYING.LIB. If not, write to 00017 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00018 Boston, MA 02110-1301, USA. 00019 */ 00020 #ifndef __kbookmarkmanager_h 00021 #define __kbookmarkmanager_h 00022 00023 #include <qstring.h> 00024 #include <qstringlist.h> 00025 #include <qobject.h> 00026 #include <qdom.h> 00027 #include <dcopobject.h> 00028 #include "kbookmark.h" 00029 #include "kbookmarknotifier.h" 00030 00053 class KIO_EXPORT KBookmarkManager : public QObject, public DCOPObject 00054 { 00055 Q_OBJECT 00056 K_DCOP 00057 protected: 00072 KBookmarkManager( const QString & bookmarksFile, bool bImportDesktopFiles = true ); 00073 00077 KBookmarkManager(); 00078 00079 public: 00083 ~KBookmarkManager(); 00084 00089 void setUpdate( bool update ); 00090 00098 bool save( bool toolbarCache = true ) const; 00099 00106 bool saveAs( const QString & filename, bool toolbarCache = true ) const; 00107 00115 bool updateAccessMetadata( const QString &url, bool emitSignal = true ); 00116 00117 /* 00118 * NB. currently *unimplemented* 00119 * 00120 * Update favicon url for a given url. 00121 * @param url the viewed url 00122 * @param faviconurl the favicion url 00123 * @emitSignal iff true emit KBookmarkNotifier signal 00124 * @since 3.3 00125 */ 00126 void updateFavicon( const QString &url, const QString &faviconurl, bool emitSignal = true ); 00127 00134 QString path() { return m_bookmarksFile; } 00135 00142 KBookmarkGroup root() const; 00143 00150 KBookmarkGroup toolbar(); 00151 00158 KBookmark findByAddress( const QString & address, bool tolerate = false ); 00159 00164 void emitChanged( KBookmarkGroup & group ); 00165 00166 void emitConfigChanged(); 00167 00173 bool showNSBookmarks() const; 00174 00179 void setShowNSBookmarks( bool show ); 00180 00191 void setEditorOptions( const QString& caption, bool browser ); 00192 00209 static KBookmarkManager* managerForFile( const QString& bookmarksFile, 00210 bool bImportDesktopFiles = true ); 00211 00212 00213 static KBookmarkManager* createTempManager(); 00214 00219 static KBookmarkManager* userBookmarksManager(); 00220 00225 static QString userBookmarksFile(); 00226 00230 const QDomDocument & internalDocument() const; 00231 00237 KBookmarkNotifier& notifier() { return m_notifier; } 00238 00242 KBookmarkGroup addBookmarkDialog( const QString & _url, const QString & _title, 00243 const QString & _parentBookmarkAddress = QString::null ); 00244 00245 public slots: 00246 void slotEditBookmarks(); 00247 void slotEditBookmarksAtAddress( const QString& address ); 00248 00249 public: 00250 k_dcop: 00255 ASYNC notifyCompleteChange( QString caller ); 00256 00263 ASYNC notifyChanged( QString groupAddress ); 00264 00265 ASYNC notifyConfigChanged(); 00266 00267 signals: 00273 void changed( const QString & groupAddress, const QString & caller ); 00274 00275 protected: 00276 // consts added to avoid a copy-and-paste of internalDocument 00277 void parse() const; 00278 void importDesktopFiles(); 00279 static void convertToXBEL( QDomElement & group ); 00280 static void convertAttribute( QDomElement elem, const QString & oldName, const QString & newName ); 00281 00282 private: 00283 KBookmarkNotifier m_notifier; 00284 QString m_bookmarksFile; 00285 mutable QDomDocument m_doc; 00286 mutable QDomDocument m_toolbarDoc; 00287 mutable bool m_docIsLoaded; 00288 bool m_update; 00289 static QPtrList<KBookmarkManager>* s_pSelf; 00290 bool m_showNSBookmarks; 00291 00292 private: 00293 class KBookmarkManagerPrivate* dptr() const; 00294 }; 00295 00317 class KIO_EXPORT KBookmarkOwner 00318 { 00319 public: 00324 virtual void openBookmarkURL(const QString& _url); 00325 00334 virtual QString currentTitle() const { return QString::null; } 00335 00344 virtual QString currentURL() const { return QString::null; } 00345 00346 protected: 00347 virtual void virtual_hook( int id, void* data ); 00348 }; 00349 00353 class KIO_EXPORT KExtendedBookmarkOwner : public QObject, virtual public KBookmarkOwner 00354 { 00355 Q_OBJECT 00356 public: 00357 typedef QValueList<QPair<QString,QString> > QStringPairList; 00358 public slots: 00359 void fillBookmarksList( KExtendedBookmarkOwner::QStringPairList & list ) { emit signalFillBookmarksList( list ); }; 00360 signals: 00361 void signalFillBookmarksList( KExtendedBookmarkOwner::QStringPairList & list ); 00362 private: 00363 class KExtendedBookmarkOwnerPrivate; 00364 KExtendedBookmarkOwnerPrivate *d; 00365 }; 00366 00367 #endif