00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 #ifndef KURLBAR_H
00020 #define KURLBAR_H
00021 
00022 #include <qevent.h>
00023 #include <qframe.h>
00024 #include <qtooltip.h>
00025 
00026 #include <kdialogbase.h>
00027 #include <kicontheme.h>
00028 #include <klistbox.h>
00029 #include <kurl.h>
00030 
00031 class KConfig;
00032 class KURLBar;
00033 
00042 class KURLBarItem : public QListBoxPixmap
00043 {
00044 public:
00058     KURLBarItem( KURLBar *parent, const KURL& url, bool persistent,
00059                  const QString& description = QString::null,
00060                  const QString& icon = QString::null,
00061                  KIcon::Group group = KIcon::Panel );
00062 
00075     KURLBarItem( KURLBar *parent, const KURL& url,
00076                  const QString& description = QString::null,
00077                  const QString& icon = QString::null,
00078                  KIcon::Group group = KIcon::Panel );
00079 
00083     ~KURLBarItem();
00084 
00090     void setURL( const KURL& url );
00096     void setIcon( const QString& icon, KIcon::Group group = KIcon::Panel );
00101     void setDescription( const QString& desc );
00106     void setToolTip( const QString& tip );
00107 
00112     QSize sizeHint() const;
00113 
00117     virtual int width( const QListBox * ) const;
00121     virtual int height( const QListBox * ) const;
00122 
00127     const KURL& url() const                     { return m_url; }
00132     const QString& description() const          { return m_description; }
00137     const QString& icon() const                 { return m_icon; }
00142     QString toolTip() const;
00147     KIcon::Group iconGroup() const              { return m_group; }
00151     virtual const QPixmap * pixmap() const      { return &m_pixmap; }
00152 
00159     void setApplicationLocal( bool local );
00160 
00167     bool applicationLocal() const               { return m_appLocal; }
00168 
00174     bool isPersistent() const;
00175 
00176 protected:
00177     virtual void paint( QPainter *p );
00178 
00179 private:
00180     int iconSize() const;
00181     void init( const QString& icon, KIcon::Group group,
00182                const QString& description, bool persistent );
00183 
00184     KURL m_url;
00185     QString m_description;
00186     QString m_icon;
00187     QString m_toolTip;
00188     QPixmap m_pixmap;
00189     KIcon::Group m_group;
00190     KURLBar *m_parent;
00191     bool m_appLocal :1;
00192 
00193 protected:
00194     virtual void virtual_hook( int id, void* data );
00195 private:
00196     class KURLBarItemPrivate;
00197     KURLBarItemPrivate *d;
00198 };
00199 
00200 
00203 
00204 
00205 class KURLBarListBox;
00206 
00230 class KURLBar : public QFrame
00231 {
00232     Q_OBJECT
00233 
00234 public:
00239     KURLBar( bool useGlobalItems,
00240              QWidget *parent = 0, const char *name = 0, WFlags f = 0 );
00244     ~KURLBar();
00245 
00256     virtual KURLBarItem * insertItem( const KURL& url,
00257                                       const QString& description,
00258                                       bool applicationLocal = true,
00259                                       const QString& icon = QString::null,
00260                                       KIcon::Group group = KIcon::Panel );
00271     virtual KURLBarItem * insertDynamicItem( const KURL& url,
00272                                              const QString& description,
00273                                              const QString& icon = QString::null,
00274                                              KIcon::Group group = KIcon::Panel );
00280     virtual void setOrientation( Qt::Orientation orient );
00285     Orientation orientation() const;
00286 
00293     virtual void setListBox( KURLBarListBox * );
00298     KURLBarListBox *listBox() const { return m_listBox; }
00299 
00305     virtual void setIconSize( int size );
00311     int iconSize() const { return m_iconSize; }
00312 
00316     virtual void clear();
00317 
00322     virtual QSize sizeHint() const;
00323 
00327     virtual QSize minimumSizeHint() const;
00328 
00334     virtual void readConfig(  KConfig *config, const QString& itemGroup );
00340     virtual void writeConfig( KConfig *config, const QString& itemGroup );
00341 
00347     virtual void readItem( int i, KConfig *config, bool applicationLocal );
00354     virtual void writeItem( KURLBarItem *item, int i, KConfig *, bool global );
00355 
00361     KURLBarItem * currentItem() const;
00368     KURL currentURL() const;
00369 
00375     bool isModified() const             { return m_isModified; }
00376 
00380     bool isImmutable() const             { return m_isImmutable; }
00381 
00385     bool isVertical() const { return orientation() == Vertical; }
00386 
00387 public slots:
00394     virtual void setCurrentItem( const KURL& url );
00395 
00396 signals:
00401     void activated( const KURL& url );
00402 
00403 protected:
00409     virtual bool addNewItem();
00417     virtual bool editItem( KURLBarItem *item );
00418 
00419     virtual void resizeEvent( QResizeEvent * );
00420 
00424     KURLBarItem * m_activeItem;
00428     bool m_useGlobal  :1;
00429 
00434     bool m_isModified :1;
00435 
00440     bool m_isImmutable :1;
00441 
00442 protected slots:
00447     virtual void slotContextMenuRequested( QListBoxItem *, const QPoint& pos );
00452     virtual void slotSelected( QListBoxItem * );
00453 
00458     virtual void slotDropped( QDropEvent * );
00459 
00460 private slots:
00461     void slotSelected( int button, QListBoxItem * );
00462 
00463 private:
00464     KURLBarListBox *m_listBox;
00465     int m_iconSize;
00466 
00467 
00468 protected:
00469     virtual void virtual_hook( int id, void* data );
00470 private:
00471     class KURLBarPrivate;
00472     KURLBarPrivate *d;
00473 };
00474 
00475 
00478 
00479 
00480 class QDragObject;
00481 class KURLBarToolTip;
00482 
00491 class KURLBarListBox : public KListBox
00492 {
00493     Q_OBJECT
00494 
00495 public:
00499     KURLBarListBox( QWidget *parent = 0, const char *name = 0 );
00503     ~KURLBarListBox();
00504 
00511     virtual void setOrientation( Qt::Orientation orient );
00516     Qt::Orientation orientation() const { return m_orientation; }
00517 
00518     bool isVertical() const { return m_orientation == Qt::Vertical; }
00519 
00520 signals:
00524     void dropped( QDropEvent *e );
00525 
00526 protected:
00530     virtual QDragObject * dragObject();
00531 
00532     virtual void contentsDragEnterEvent( QDragEnterEvent * );
00533     virtual void contentsDropEvent( QDropEvent * );
00534     virtual void contextMenuEvent( QContextMenuEvent * );
00535 
00536 private:
00537     Qt::Orientation m_orientation;
00538     KURLBarToolTip *m_toolTip;
00539 
00540 protected:
00541     virtual void virtual_hook( int id, void* data );
00542 private:
00543     class KURLBarListBoxPrivate;
00544     KURLBarListBoxPrivate *d;
00545 };
00546 
00547 
00550 
00551 
00552 class QCheckBox;
00553 class KIconButton;
00554 class KLineEdit;
00555 class KURLRequester;
00556 
00564 class KURLBarItemDialog : public KDialogBase
00565 {
00566     Q_OBJECT
00567 
00568 public:
00576     static bool getInformation( bool allowGlobal, KURL& url,
00577                                 QString& description, QString& icon,
00578                                 bool& appLocal, int iconSize,
00579                                 QWidget *parent = 0 );
00580 
00598     KURLBarItemDialog( bool allowGlobal, const KURL& url,
00599                        const QString& description, QString icon,
00600                        bool appLocal = true,
00601                        int iconSize = KIcon::SizeMedium,
00602                        QWidget *parent = 0, const char *name = 0 );
00606     ~KURLBarItemDialog();
00607 
00611     KURL url() const;
00612 
00616     QString description() const;
00617 
00621     QString icon() const;
00622 
00628     bool applicationLocal() const;
00629 
00630 protected:
00634     KURLRequester * m_urlEdit;
00638     KLineEdit     * m_edit;
00642     KIconButton   * m_iconButton;
00646     QCheckBox     * m_appLocal;
00647 
00648 public slots:
00649     void urlChanged(const QString & );
00650 
00651 private:
00652     class KURLBarItemDialogPrivate;
00653     KURLBarItemDialogPrivate *d;
00654 };
00655 
00656 
00657 #endif // KURLBAR_H