You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/lib/kofficeui/KoKoolBar.h

167 lines
4.5 KiB

/*
This file is part of the KDE project
Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
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.
*/
#ifndef __ko_koolbar_h__
#define __ko_koolbar_h__
#include <qframe.h>
#include <qpixmap.h>
#include <qintdict.h>
#include <koffice_export.h>
class QPushButton;
class QPixmap;
class KoKoolBar;
class KoKoolBarGroup;
class KoKoolBarItem : public QObject
{
private:
Q_OBJECT
public:
KoKoolBarItem( KoKoolBarGroup *_grp, const QPixmap& _pix, const QString& _text = QString::null );
int id() const { return m_id; }
void press();
bool isEnabled() const { return m_bEnabled; }
void setEnabled( bool _e ) { m_bEnabled = _e; }
int height() const { return m_iHeight; }
QPixmap pixmap() const { return m_pixmap; }
void setText( const QString & text ) { m_strText = text; }
QString text() const { return m_strText; }
signals:
void pressed( int _group, int _id );
void pressed();
protected:
void calc( QWidget* );
int m_iHeight;
KoKoolBarGroup* m_pGroup;
QString m_strText;
QPixmap m_pixmap;
int m_id;
bool m_bEnabled;
class KoKoolBarItemPrivate;
KoKoolBarItemPrivate *d;
};
class KoKoolBarGroup : public QObject
{
Q_OBJECT
public:
KoKoolBarGroup( KoKoolBar *_bar, const QString& _text );
~KoKoolBarGroup();
void append( KoKoolBarItem *_i ) { m_mapItems.insert( _i->id(), _i ); }
void remove( int _id );
KoKoolBar* bar() const { return m_pBar; }
QPushButton* button() const { return m_pButton; }
int id() const { return m_id; }
bool isEnabled() const { return m_bEnabled; }
void setEnabled( bool _e ) { m_bEnabled = _e; }
KoKoolBarItem* item( int _id ) const { return m_mapItems[ _id ]; }
int items() const { return m_mapItems.size(); }
QIntDictIterator<KoKoolBarItem> iterator() const { return QIntDictIterator<KoKoolBarItem>( m_mapItems ); }
public slots:
void pressed();
protected:
QIntDict<KoKoolBarItem> m_mapItems;
KoKoolBar* m_pBar;
QString m_strText;
int m_id;
QPushButton* m_pButton;
bool m_bEnabled;
class KoKoolBarGroupPrivate;
KoKoolBarGroupPrivate *d;
};
class KoKoolBarBox : public QFrame
{
Q_OBJECT
public:
KoKoolBarBox( KoKoolBar *_bar );
void setActiveGroup( KoKoolBarGroup *_grp );
int maxHeight() const;
void sizeChanged() { resizeEvent(0L); }
protected slots:
void scrollUp();
void scrollDown();
protected:
virtual void resizeEvent( QResizeEvent *_ev );
virtual void drawContents( QPainter * );
virtual void mousePressEvent( QMouseEvent *_ev )
{ KoKoolBarItem *item = findByPos( _ev->pos().y() + m_iYOffset ); if ( !item ) return; item->press(); }
KoKoolBarItem* findByPos( int _abs_y ) const;
bool needsScrolling() const;
bool isAtBottom() const;
bool isAtTop() const;
void updateScrollButtons();
KoKoolBar *m_pBar;
int m_iYOffset;
int m_iYIcon;
KoKoolBarGroup *m_pGroup;
QPushButton* m_pButtonUp;
QPushButton* m_pButtonDown;
class KoKoolBarBoxPrivate;
KoKoolBarBoxPrivate *d;
};
class KOFFICEUI_EXPORT KoKoolBar : public QWidget
{
Q_OBJECT
public:
KoKoolBar( QWidget *_parent = 0L, const char *_name = 0L );
virtual ~KoKoolBar() { };
virtual int insertGroup( const QString& _text );
virtual int insertItem( int _grp, const QPixmap& _pix, const QString& _text = QString::null,
QObject *_obj = 0L, const char *_slot = 0L );
virtual void removeGroup( int _grp );
virtual void removeItem( int _grp, int _id );
virtual void renameItem( int _grp, int _id, const QString & _text );
virtual void setActiveGroup( int _grp );
virtual int activeGroup() const { return m_iActiveGroup; }
virtual void enableItem( int _grp, int _id, bool _enable );
virtual void enableGroup( int _grp, bool _enable );
protected:
virtual void resizeEvent( QResizeEvent *_ev );
QIntDict<KoKoolBarGroup> m_mapGroups;
int m_iActiveGroup;
KoKoolBarBox* m_pBox;
class KoKoolBarPrivate;
KoKoolBarPrivate *d;
};
#endif