~ubuntu-branches/ubuntu/oneiric/kdeplasma-addons/oneiric

« back to all changes in this revision

Viewing changes to libs/lancelot/widgets/TabBar.h

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Thomas
  • Date: 2010-05-25 09:50:14 UTC
  • mto: (0.4.3 experimental)
  • mto: This revision was merged to the branch mainline in revision 68.
  • Revision ID: james.westby@ubuntu.com-20100525095014-e3cebfkdenjrx3xg
Tags: upstream-4.4.80
ImportĀ upstreamĀ versionĀ 4.4.80

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *   Copyright (C) 2010 Ivan Cukic <ivan.cukic(at)kde.org>
 
3
 *
 
4
 *   This program is free software; you can redistribute it and/or modify
 
5
 *   it under the terms of the GNU Lesser/Library General Public License version 2,
 
6
 *   or (at your option) any later version, as published by the Free
 
7
 *   Software Foundation
 
8
 *
 
9
 *   This program is distributed in the hope that it will be useful,
 
10
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
12
 *   GNU Lesser/Library General Public License for more details
 
13
 *
 
14
 *   You should have received a copy of the GNU Lesser/Library General Public
 
15
 *   License along with this program; if not, write to the
 
16
 *   Free Software Foundation, Inc.,
 
17
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
18
 */
 
19
 
 
20
#ifndef LANCELOT_TAB_BAR_H
 
21
#define LANCELOT_TAB_BAR_H
 
22
 
 
23
#include <QtGui/QIcon>
 
24
 
 
25
#include <Plasma/Plasma>
 
26
#include <Plasma/ItemBackground>
 
27
#include <Plasma/FrameSvg>
 
28
 
 
29
#include <lancelot/lancelot_export.h>
 
30
 
 
31
namespace Lancelot
 
32
{
 
33
 
 
34
/**
 
35
 * Provides a group of buttons representing tabs. Can
 
36
 * be used for controlling the CardLayout
 
37
 *
 
38
 * @author Ivan Cukic
 
39
 */
 
40
class LANCELOT_EXPORT TabBar: public QGraphicsWidget {
 
41
    Q_OBJECT
 
42
 
 
43
    Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation)
 
44
    Q_PROPERTY(Qt::Orientation textDirection READ textDirection WRITE setTextDirection)
 
45
    Q_PROPERTY(QString currentTab READ currentTab WRITE setCurrentTab)
 
46
    Q_PROPERTY(QSize tabIconSize READ tabIconSize WRITE setTabIconSize)
 
47
 
 
48
    // @puck L_WIDGET
 
49
    // @puck L_INCLUDE(lancelot/widgets/TabBar.h QIcon QSize QString)
 
50
 
 
51
public:
 
52
    /**
 
53
     * Creates a new Lancelot::TabBar
 
54
     * @param parent parent item
 
55
     */
 
56
    TabBar(QGraphicsWidget * parent = 0);
 
57
 
 
58
    /**
 
59
     * Destroys this Lancelot::TabBar
 
60
     */
 
61
    ~TabBar();
 
62
 
 
63
    /**
 
64
     * @returns the tab bar orientation
 
65
     */
 
66
    Qt::Orientation orientation() const;
 
67
 
 
68
    /**
 
69
     * Sets the tab bar orientation
 
70
     * @param value new orientation
 
71
     */
 
72
    void setOrientation(Qt::Orientation value);
 
73
 
 
74
    /**
 
75
     * @returns the inner layout of buttons
 
76
     * @see setTextDirection
 
77
     */
 
78
    Qt::Orientation textDirection() const;
 
79
 
 
80
    /**
 
81
     * Sets the inner layout of tab buttons - that is
 
82
     * whether the icon is above or beside the text
 
83
     */
 
84
    void setTextDirection(Qt::Orientation value);
 
85
 
 
86
    /**
 
87
     * @returns the active tab
 
88
     */
 
89
    QString currentTab() const;
 
90
 
 
91
    /**
 
92
     * Adds a new tab
 
93
     * @param id id of the tab
 
94
     * @param icon icon for the tab
 
95
     * @param title tab title
 
96
     */
 
97
    void addTab(const QString & id, const QIcon & icon, const QString & title,
 
98
            const QString & mimeType = QString::null, const QString & mimeData = QString::null);
 
99
 
 
100
    /**
 
101
     * Removes the specified tab
 
102
     * @param id id of the tab to remove
 
103
     */
 
104
    void removeTab(const QString & id);
 
105
 
 
106
    /**
 
107
     * Sets the Lancelot::Group for the tab buttons
 
108
     * @param groupName name of the specific Lancelot::Group
 
109
     */
 
110
    void setTabsGroupName(const QString & groupName);
 
111
 
 
112
    /**
 
113
     * Sets the layout flip
 
114
     * @param flip new value
 
115
     */
 
116
    void setFlip(Plasma::Flip flip);
 
117
 
 
118
    /**
 
119
     * @returns the current layout flip
 
120
     */
 
121
    Plasma::Flip flip() const;
 
122
 
 
123
    /**
 
124
     * Sets the icon size for tab buttons
 
125
     * @param size new size
 
126
     */
 
127
    void setTabIconSize(const QSize & size);
 
128
 
 
129
    /**
 
130
     * @returns the current icon size of tab buttons
 
131
     */
 
132
    QSize tabIconSize() const;
 
133
 
 
134
protected:
 
135
    L_Override void resizeEvent(QGraphicsSceneResizeEvent * event);
 
136
    L_Override bool sceneEventFilter(QGraphicsItem * watched, QEvent * event);
 
137
 
 
138
 
 
139
Q_SIGNALS:
 
140
    /**
 
141
     * This signal is emitted when the currently selected
 
142
     * tab is changed
 
143
     */
 
144
    void currentTabChanged(const QString & current);
 
145
 
 
146
public Q_SLOTS:
 
147
    /**
 
148
     * Sets the current tab
 
149
     */
 
150
    void setCurrentTab(const QString & current);
 
151
 
 
152
private:
 
153
    class Private;
 
154
    Private * const d;
 
155
 
 
156
};
 
157
 
 
158
} // namespace Lancelot
 
159
 
 
160
#endif /* LANCELOT_TAB_BAR_H */
 
161