00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#ifndef __kbookmark_h
00021
#define __kbookmark_h
00022
00023
#include <qstring.h>
00024
#include <qvaluelist.h>
00025
#include <kurl.h>
00026
#include <qdom.h>
00027
00028
class KBookmarkManager;
00029
class KBookmarkGroup;
00030
00031
class KBookmark
00032 {
00033
friend class KBookmarkGroup;
00034
public:
00035 KBookmark( ) {}
00036 KBookmark(
QDomElement elem ) : element(elem) {}
00037
00038
static KBookmark standaloneBookmark(
const QString & text,
const KURL & url,
const QString & icon = QString::null );
00039
00043
bool isGroup() const;
00044
00048
bool isSeparator() const;
00049
00055
bool isNull()
const {
return element.isNull();}
00056
00063
bool hasParent() const;
00064
00070
QString text() const;
00075
QString fullText() const;
00079
KURL url() const;
00084
QString icon() const;
00085
00089
KBookmarkGroup parentGroup() const;
00090
00095
KBookmarkGroup toGroup() const;
00096
00103
QString address() const;
00104
00105
00106
00107
00108
00109
00110
00114
QDomElement internalElement()
const {
return element; }
00115
00121
void updateAccessMetadata();
00122
00123
00124
00128
static QString parentAddress(
const QString & address )
00129 {
return address.left( address.findRev(
'/') ); }
00130
00134
static uint positionInParent(
const QString & address )
00135 {
return address.mid( address.findRev(
'/') + 1 ).toInt(); }
00136
00141
static QString previousAddress(
const QString & address )
00142 {
00143 uint pp = positionInParent(address);
00144
return pp>0 ? parentAddress(address) +
'/' + QString::number(pp-1) :
QString::null;
00145 }
00146
00151
static QString nextAddress(
const QString & address )
00152 {
return parentAddress(address) +
'/' + QString::number(positionInParent(address)+1); }
00153
00154
protected:
00155
QDomElement element;
00156
00157
00158
00159
00160 };
00161
00165 class KBookmarkGroup :
public KBookmark
00166 {
00167
public:
00174
KBookmarkGroup();
00175
00179
KBookmarkGroup(
QDomElement elem );
00180
00185
QString groupAddress()
const;
00186
00190
bool isOpen()
const;
00191
00195 KBookmark
first()
const;
00200 KBookmark
previous(
const KBookmark & current )
const;
00205 KBookmark
next(
const KBookmark & current )
const;
00206
00212
KBookmarkGroup createNewFolder(
KBookmarkManager* mgr,
const QString & text = QString::null,
bool emitSignal =
true );
00216 KBookmark
createNewSeparator();
00223 KBookmark
addBookmark(
KBookmarkManager* mgr,
const QString & text,
const KURL & url,
const QString & icon = QString::null,
bool emitSignal =
true );
00224
00229
bool moveItem(
const KBookmark & item,
const KBookmark & after );
00230
00234
void deleteBookmark( KBookmark bk );
00235
00239
bool isToolbarGroup()
const;
00243
QDomElement findToolbar()
const;
00244
00249
QValueList<KURL> groupUrlList()
const;
00250
00251
protected:
00252
QDomElement nextKnownTag(
QDomElement start,
bool goNext )
const;
00253
00254
private:
00255
mutable QString m_address;
00256
00257
00258
00259
00260 };
00261
00265 class KBookmarkGroupTraverser {
00266
protected:
00267
virtual ~
KBookmarkGroupTraverser() { ; }
00268
void traverse(
const KBookmarkGroup &);
00269
virtual void visit(
const KBookmark &) { ; }
00270
virtual void visitEnter(
const KBookmarkGroup &) { ; }
00271
virtual void visitLeave(
const KBookmarkGroup &) { ; }
00272
private:
00273
class KBookmarkGroupTraverserPrivate *d;
00274 };
00275
00276
#endif