summaryrefslogtreecommitdiff
path: root/library
Unidiff
Diffstat (limited to 'library') (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
@@ -64,12 +64,13 @@
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.
@@ -95,54 +96,54 @@ void MenuButton::init()
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()
@@ -155,29 +156,29 @@ void MenuButton::insertSeparator()
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.
@@ -205,12 +206,48 @@ void MenuButton::setLabel(const QString& label)
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
@@ -28,31 +28,37 @@ class MenuButton : public QPushButton {
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;