summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/menubutton.cpp71
-rw-r--r--library/menubutton.h6
2 files changed, 60 insertions, 17 deletions
diff --git a/library/menubutton.cpp b/library/menubutton.cpp
index 007761f..4357460 100644
--- a/library/menubutton.cpp
+++ b/library/menubutton.cpp
@@ -58,24 +58,25 @@
58*/ 58*/
59 59
60 60
61/*! 61/*!
62 Constructs a MenuButton. A menu item is created (see insertItem() 62 Constructs a MenuButton. A menu item is created (see insertItem()
63 and insertItems()) for each string in the \a items string list. The 63 and insertItems()) for each string in the \a items string list. The
64 standard \a parent an \a name arguments are passed to the base 64 standard \a parent an \a name arguments are passed to the base
65 class. 65 class.
66*/ 66*/
67MenuButton::MenuButton( const QStringList& items, QWidget* parent, const char* name) : 67MenuButton::MenuButton( const QStringList& items, QWidget* parent, const char* name) :
68 QPushButton(parent,name) 68 QPushButton(parent,name)
69{ 69{
70 useLabel = true;
70 init(); 71 init();
71 insertItems(items); 72 insertItems(items);
72} 73}
73 74
74/*! 75/*!
75 Constructs an empty MenuButton. 76 Constructs an empty MenuButton.
76 The standard \a parent an \a name arguments are passed to the base class. 77 The standard \a parent an \a name arguments are passed to the base class.
77 78
78 \sa insertItem() insertItems() 79 \sa insertItem() insertItems()
79*/ 80*/
80MenuButton::MenuButton( QWidget* parent, const char* name) : 81MenuButton::MenuButton( QWidget* parent, const char* name) :
81 QPushButton(parent,name) 82 QPushButton(parent,name)
@@ -89,101 +90,101 @@ void MenuButton::init()
89 pop = new QPopupMenu(this); 90 pop = new QPopupMenu(this);
90 nitems=0; 91 nitems=0;
91 connect(pop, SIGNAL(activated(int)), this, SLOT(select(int))); 92 connect(pop, SIGNAL(activated(int)), this, SLOT(select(int)));
92 setPopup(pop); 93 setPopup(pop);
93 //setPopupDelay(0); 94 //setPopupDelay(0);
94} 95}
95 96
96/*! 97/*!
97 Removes all the menu items from the button and menu. 98 Removes all the menu items from the button and menu.
98*/ 99*/
99void MenuButton::clear() 100void MenuButton::clear()
100{ 101{
101 delete pop; 102 delete pop;
102 init(); 103 init();
103} 104}
104 105
105/*! 106/*!
106 A menu item is created (see insertItem()) for each string in the \a 107 A menu item is created (see insertItem()) for each string in the \a
107 items string list. If any string is "--" a separator (see 108 items string list. If any string is "--" a separator (see
108 insertSeparator()) is inserted in its place. 109 insertSeparator()) is inserted in its place.
109*/ 110*/
110void MenuButton::insertItems( const QStringList& items ) 111void MenuButton::insertItems( const QStringList& items )
111{ 112{
112 QStringList::ConstIterator it=items.begin(); 113 QStringList::ConstIterator it=items.begin();
113 for (; it!=items.end(); ++it) { 114 for (; it!=items.end(); ++it) {
114 if ( (*it) == "--" ) 115 if ( (*it) == "--" )
115 insertSeparator(); 116 insertSeparator();
116 else 117 else
117 insertItem(*it); 118 insertItem(*it);
118 } 119 }
119} 120}
120 121
121/*! 122/*!
122 Inserts a menu item with the icon \a icon and label \a text into 123 Inserts a menu item with the icon \a icon and label \a text into
123 the menu. 124 the menu.
124 125
125 \sa insertItems() 126 \sa insertItems()
126*/ 127*/
127void MenuButton::insertItem( const QIconSet& icon, const QString& text ) 128void MenuButton::insertItem( const QIconSet& icon, const QString& text )
128{ 129{
129 pop->insertItem(icon, text, nitems++); 130 pop->insertItem(icon, text, nitems++);
130 if ( nitems==1 ) select(0); 131// if ( nitems==1 ) select(0);
131} 132}
132 133
133/*! 134/*!
134 \overload 135 \overload
135 Inserts a menu item with the label \a text into the menu. 136 Inserts a menu item with the label \a text into the menu.
136 137
137 \sa insertItems() 138 \sa insertItems()
138*/ 139*/
139void MenuButton::insertItem( const QString& text ) 140void MenuButton::insertItem( const QString& text )
140{ 141{
141 pop->insertItem(text, nitems++); 142 pop->insertItem(text, nitems++);
142 if ( nitems==1 ) select(0); 143// if ( nitems==1 ) select(0);
143} 144}
144 145
145/*! 146/*!
146 Inserts a separator into the menu. 147 Inserts a separator into the menu.
147 148
148 \sa insertItems() 149 \sa insertItems()
149*/ 150*/
150void MenuButton::insertSeparator() 151void MenuButton::insertSeparator()
151{ 152{
152 pop->insertSeparator(); 153 pop->insertSeparator();
153} 154}
154 155
155/*! 156/*!
156 Selects the items with label text \a s. 157 Selects the items with label text \a s.
157*/ 158*/
158void MenuButton::select(const QString& s) 159void MenuButton::select(const QString& s)
159{ 160{
160 for (int i=0; i<nitems; i++) { 161 for (int i=0; i<nitems; i++) {
161 if ( pop->text(i) == s ) { 162 if ( pop->text(i) == s ) {
162 select(i); 163 select(i);
163 break; 164 break;
164 } 165 }
165 } 166 }
166} 167}
167 168
168/*! 169/*!
169 \overload 170 \overload
170 Selects the item at index position \a s. 171 Selects the item at index position \a s.
171*/ 172*/
172void MenuButton::select(int s) 173void MenuButton::select(int s)
173{ 174{
174 cur = s; 175 cur = s;
175 updateLabel(); 176 updateLabel();
176 if ( pop->iconSet(cur) ) 177 if ( pop->iconSet(cur) )
177 setIconSet(*pop->iconSet(cur)); 178 setIconSet(*pop->iconSet(cur));
178 emit selected(cur); 179 emit selected(cur);
179 emit selected(currentText()); 180 emit selected(currentText());
180} 181}
181 182
182/*! 183/*!
183 Returns the index position of the current item. 184 Returns the index position of the current item.
184*/ 185*/
185int MenuButton::currentItem() const 186int MenuButton::currentItem() const
186{ 187{
187 return cur; 188 return cur;
188} 189}
189 190
@@ -199,18 +200,54 @@ QString MenuButton::currentText() const
199 Sets the menubutton's label. If \a label is empty, the 200 Sets the menubutton's label. If \a label is empty, the
200 current item text is displayed, otherwise \a label should contain 201 current item text is displayed, otherwise \a label should contain
201 "%1", which will be replaced by the current item text. 202 "%1", which will be replaced by the current item text.
202*/ 203*/
203void MenuButton::setLabel(const QString& label) 204void MenuButton::setLabel(const QString& label)
204{ 205{
205 lab = label; 206 lab = label;
206 updateLabel(); 207 updateLabel();
207} 208}
208 209
209void MenuButton::updateLabel() 210void MenuButton::updateLabel()
210{ 211{
211 QString t = pop->text(cur); 212 if(useLabel)
212 if ( !lab.isEmpty() ) 213 {
213 t = lab.arg(t); 214 QString t = pop->text(cur);
214 setText(t); 215 if ( !lab.isEmpty() )
216 t = lab.arg(t);
217 setText(t);
218 }
215} 219}
216 220
221
222/*!
223 remove item at id
224 */
225void MenuButton::remove(int id)
226{
227 pop->removeItem(id);
228 nitems--;
229}
230
231/*!
232 return count of items in menu
233 */
234int MenuButton::count()
235{
236 return nitems;
237}
238
239/*!
240 returns text of item id
241 */
242QString MenuButton::text(int id)
243{
244 return pop->text(id);
245}
246
247/*!
248 sets true or false the use of label
249 */
250void MenuButton::setUseLabel(bool b)
251{
252 useLabel = b;
253}
diff --git a/library/menubutton.h b/library/menubutton.h
index 6582b1e..ee5dcf1 100644
--- a/library/menubutton.h
+++ b/library/menubutton.h
@@ -22,42 +22,48 @@
22 22
23#include <qpushbutton.h> 23#include <qpushbutton.h>
24#include <qstringlist.h> 24#include <qstringlist.h>
25 25
26class MenuButton : public QPushButton { 26class MenuButton : public QPushButton {
27 Q_OBJECT 27 Q_OBJECT
28public: 28public:
29 MenuButton( QWidget* parent, const char* name=0); 29 MenuButton( QWidget* parent, const char* name=0);
30 MenuButton( const QStringList& items, QWidget* parent, const char* name=0); 30 MenuButton( const QStringList& items, QWidget* parent, const char* name=0);
31 31
32 void clear(); 32 void clear();
33 33
34
34 int currentItem() const; 35 int currentItem() const;
35 QString currentText() const; 36 QString currentText() const;
36 37
37 void insertItems( const QStringList& items ); 38 void insertItems( const QStringList& items );
38 void insertItem( const QIconSet& icon, const QString& text=QString::null ); 39 void insertItem( const QIconSet& icon, const QString& text=QString::null );
39 void insertItem( const QString& text ); 40 void insertItem( const QString& text );
40 void insertSeparator(); 41 void insertSeparator();
41 42
42 void setLabel(const QString& label); 43 void setLabel(const QString& label);
44 int count();
45 void remove(int id);
46 QString text(int id);
47 void setUseLabel(bool b);
43 48
44signals: 49signals:
45 void selected(int); 50 void selected(int);
46 void selected(const QString&); 51 void selected(const QString&);
47 52
48public slots: 53public slots:
49 void select(int); 54 void select(int);
50 void select(const QString&); 55 void select(const QString&);
51 56
52private: 57private:
58 bool useLabel;
53 void init(); 59 void init();
54 QStringList txts; 60 QStringList txts;
55 QPopupMenu* pop; 61 QPopupMenu* pop;
56 int nitems; 62 int nitems;
57 int cur; 63 int cur;
58 QString lab; 64 QString lab;
59 void updateLabel(); 65 void updateLabel();
60}; 66};
61 67
62#endif 68#endif
63 69