-rw-r--r-- | libopie2/examples/opieui/olistviewdemo/olistviewdemo.cpp | 26 | ||||
-rw-r--r-- | libopie2/opienet/onetwork.h | 5 | ||||
-rw-r--r-- | libopie2/opieui/olistview.cpp | 93 | ||||
-rw-r--r-- | libopie2/opieui/olistview.h | 35 |
4 files changed, 148 insertions, 11 deletions
diff --git a/libopie2/examples/opieui/olistviewdemo/olistviewdemo.cpp b/libopie2/examples/opieui/olistviewdemo/olistviewdemo.cpp index 31bda9d..5ba7b69 100644 --- a/libopie2/examples/opieui/olistviewdemo/olistviewdemo.cpp +++ b/libopie2/examples/opieui/olistviewdemo/olistviewdemo.cpp | |||
@@ -28,27 +28,53 @@ | |||
28 | Inc., 59 Temple Place - Suite 330, | 28 | Inc., 59 Temple Place - Suite 330, |
29 | Boston, MA 02111-1307, USA. | 29 | Boston, MA 02111-1307, USA. |
30 | 30 | ||
31 | */ | 31 | */ |
32 | 32 | ||
33 | #include "olistviewdemo.h" | 33 | #include "olistviewdemo.h" |
34 | #include <opie2/olistview.h> | 34 | #include <opie2/olistview.h> |
35 | 35 | ||
36 | #include <qstring.h> | 36 | #include <qstring.h> |
37 | #include <qpixmap.h> | 37 | #include <qpixmap.h> |
38 | #include <qlistview.h> | 38 | #include <qlistview.h> |
39 | 39 | ||
40 | OListViewDemo::OListViewDemo( QWidget* parent, const char* name, WFlags f ) | 40 | OListViewDemo::OListViewDemo( QWidget* parent, const char* name, WFlags f ) |
41 | :QVBox( parent, name, f ) | 41 | :QVBox( parent, name, f ) |
42 | { | 42 | { |
43 | lv = new ONamedListView( this ); | 43 | lv = new ONamedListView( this ); |
44 | lv->setRootIsDecorated( true ); | ||
44 | lv->addColumns( QStringList::split( ' ', "Column1 Column2 Column3 Column4" ) ); | 45 | lv->addColumns( QStringList::split( ' ', "Column1 Column2 Column3 Column4" ) ); |
45 | 46 | ||
46 | ONamedListViewItem* item = new ONamedListViewItem( lv, QStringList::split( ' ', "Text1 Text2 Text3 Text4" ) ); | 47 | ONamedListViewItem* item = new ONamedListViewItem( lv, QStringList::split( ' ', "Text1 Text2 Text3 Text4" ) ); |
47 | item->setText( "Column2", "ModifiedText" ); | 48 | item->setText( "Column2", "ModifiedText" ); |
48 | item->setText( "Column5", "ThisColumnDoesNotExits" ); | 49 | item->setText( "Column5", "ThisColumnDoesNotExits" ); |
50 | |||
51 | new ONamedListViewItem( lv, QStringList::split( ' ', "Text1 Text2 Text3 Text4" ) ); | ||
52 | new ONamedListViewItem( lv, QStringList::split( ' ', "Text1 Text2 Text3 Text4" ) ); | ||
53 | new ONamedListViewItem( lv, QStringList::split( ' ', "Text1 Text2 Text3 Minni" ) ); | ||
54 | item = new ONamedListViewItem( lv, QStringList::split( ' ', "XXX YYY ZZZ ***" ) ); | ||
55 | new ONamedListViewItem( lv, QStringList::split( ' ', "Text1 Text2 Text3 Text4" ) ); | ||
56 | new ONamedListViewItem( lv, QStringList::split( ' ', "Text1 Text2 Text3 Text4" ) ); | ||
57 | |||
58 | new ONamedListViewItem( item, QStringList::split( ' ', "SubText1 Text2 Text3 Text4" ) ); | ||
59 | new ONamedListViewItem( item, QStringList::split( ' ', "SubText1 Text2 Text3 Text4" ) ); | ||
60 | new ONamedListViewItem( item, QStringList::split( ' ', "SubText1 Text2 Text3 Text4" ) ); | ||
61 | item = new ONamedListViewItem( item, QStringList::split( ' ', "Text1 Text2 Text3 HereItComes" ) ); | ||
62 | item = new ONamedListViewItem( item, QStringList::split( ' ', "Text1 Text2 Text3 HereItComesSoon" ) ); | ||
63 | item = new ONamedListViewItem( item, QStringList::split( ' ', "Text1 Text2 Text3 Mickey" ) ); | ||
64 | |||
65 | if ( lv->find( 3, "Mickey", 3 ) ) | ||
66 | qDebug( "found Mickey :-)" ); | ||
67 | else | ||
68 | qDebug( "did not found Mickey :-(" ); | ||
69 | |||
70 | if ( lv->find( 3, "Minni", 0 ) ) | ||
71 | qDebug( "found Minni :-)" ); | ||
72 | else | ||
73 | qDebug( "did not found Minni :-(" ); | ||
74 | |||
49 | } | 75 | } |
50 | 76 | ||
51 | OListViewDemo::~OListViewDemo() | 77 | OListViewDemo::~OListViewDemo() |
52 | { | 78 | { |
53 | } | 79 | } |
54 | 80 | ||
diff --git a/libopie2/opienet/onetwork.h b/libopie2/opienet/onetwork.h index a29b29d..1b38d02 100644 --- a/libopie2/opienet/onetwork.h +++ b/libopie2/opienet/onetwork.h | |||
@@ -63,32 +63,33 @@ | |||
63 | #define _LINUX_IF_H | 63 | #define _LINUX_IF_H |
64 | #include <linux/wireless.h> | 64 | #include <linux/wireless.h> |
65 | 65 | ||
66 | class ONetworkInterface; | 66 | class ONetworkInterface; |
67 | class OWirelessNetworkInterface; | 67 | class OWirelessNetworkInterface; |
68 | class OChannelHopper; | 68 | class OChannelHopper; |
69 | class OMonitoringInterface; | 69 | class OMonitoringInterface; |
70 | 70 | ||
71 | /*====================================================================================== | 71 | /*====================================================================================== |
72 | * ONetwork | 72 | * ONetwork |
73 | *======================================================================================*/ | 73 | *======================================================================================*/ |
74 | 74 | ||
75 | /** | 75 | /** |
76 | * @brief A container class for all network interfaces | 76 | * @brief A container class for all network interfaces |
77 | * | 77 | * |
78 | * This class provides access to all available network interfaces of your computer. | 78 | * This class provides access to all available network interfaces of your computer. |
79 | * | ||
79 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 80 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
80 | */ | 81 | */ |
81 | class ONetwork : public QObject | 82 | class ONetwork : public QObject |
82 | { | 83 | { |
83 | Q_OBJECT | 84 | Q_OBJECT |
84 | 85 | ||
85 | public: | 86 | public: |
86 | typedef QDict<ONetworkInterface> InterfaceMap; | 87 | typedef QDict<ONetworkInterface> InterfaceMap; |
87 | typedef QDictIterator<ONetworkInterface> InterfaceIterator; | 88 | typedef QDictIterator<ONetworkInterface> InterfaceIterator; |
88 | 89 | ||
89 | public: | 90 | public: |
90 | /** | 91 | /** |
91 | * @returns the number of available interfaces | 92 | * @returns the number of available interfaces |
92 | */ | 93 | */ |
93 | int count() const; | 94 | int count() const; |
94 | /** | 95 | /** |
@@ -124,32 +125,33 @@ class ONetwork : public QObject | |||
124 | static ONetwork* _instance; | 125 | static ONetwork* _instance; |
125 | InterfaceMap _interfaces; | 126 | InterfaceMap _interfaces; |
126 | }; | 127 | }; |
127 | 128 | ||
128 | 129 | ||
129 | /*====================================================================================== | 130 | /*====================================================================================== |
130 | * ONetworkInterface | 131 | * ONetworkInterface |
131 | *======================================================================================*/ | 132 | *======================================================================================*/ |
132 | 133 | ||
133 | /** | 134 | /** |
134 | * @brief A network interface wrapper. | 135 | * @brief A network interface wrapper. |
135 | * | 136 | * |
136 | * This class provides a wrapper for a network interface. All the cumbersume details of | 137 | * This class provides a wrapper for a network interface. All the cumbersume details of |
137 | * Linux ioctls are hidden under a convenient high-level interface. | 138 | * Linux ioctls are hidden under a convenient high-level interface. |
138 | * @warning Most of the setting methods contained in this class require the appropriate | 139 | * @warning Most of the setting methods contained in this class require the appropriate |
139 | * process permissions to work. | 140 | * process permissions to work. |
141 | * | ||
140 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 142 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
141 | */ | 143 | */ |
142 | class ONetworkInterface : public QObject | 144 | class ONetworkInterface : public QObject |
143 | { | 145 | { |
144 | friend class OMonitoringInterface; | 146 | friend class OMonitoringInterface; |
145 | friend class OCiscoMonitoringInterface; | 147 | friend class OCiscoMonitoringInterface; |
146 | friend class OWlanNGMonitoringInterface; | 148 | friend class OWlanNGMonitoringInterface; |
147 | friend class OHostAPMonitoringInterface; | 149 | friend class OHostAPMonitoringInterface; |
148 | friend class OOrinocoMonitoringInterface; | 150 | friend class OOrinocoMonitoringInterface; |
149 | 151 | ||
150 | public: | 152 | public: |
151 | /** | 153 | /** |
152 | * Constructor. Normally you don't create @ref ONetworkInterface objects yourself, | 154 | * Constructor. Normally you don't create @ref ONetworkInterface objects yourself, |
153 | * but access them via @ref ONetwork::interface(). | 155 | * but access them via @ref ONetwork::interface(). |
154 | */ | 156 | */ |
155 | ONetworkInterface( QObject* parent, const char* name ); | 157 | ONetworkInterface( QObject* parent, const char* name ); |
@@ -233,32 +235,33 @@ class ONetworkInterface : public QObject | |||
233 | virtual void init(); | 235 | virtual void init(); |
234 | bool ioctl( int call ) const; | 236 | bool ioctl( int call ) const; |
235 | bool ioctl( int call, struct ifreq& ) const; | 237 | bool ioctl( int call, struct ifreq& ) const; |
236 | }; | 238 | }; |
237 | 239 | ||
238 | /*====================================================================================== | 240 | /*====================================================================================== |
239 | * OChannelHopper | 241 | * OChannelHopper |
240 | *======================================================================================*/ | 242 | *======================================================================================*/ |
241 | 243 | ||
242 | /** | 244 | /** |
243 | * @brief A radio frequency channel hopper. | 245 | * @brief A radio frequency channel hopper. |
244 | * | 246 | * |
245 | * This class provides a channel hopper for radio frequencies. A channel hopper frequently | 247 | * This class provides a channel hopper for radio frequencies. A channel hopper frequently |
246 | * changes the radio frequency channel of its associated @ref OWirelessNetworkInterface. | 248 | * changes the radio frequency channel of its associated @ref OWirelessNetworkInterface. |
247 | * This is necessary when in monitoring mode and scanning for other devices, because | 249 | * This is necessary when in monitoring mode and scanning for other devices, because |
248 | * the radio frequency hardware can only detect packets sent on the same frequency. | 250 | * the radio frequency hardware can only detect packets sent on the same frequency. |
251 | * | ||
249 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 252 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
250 | */ | 253 | */ |
251 | class OChannelHopper : public QObject | 254 | class OChannelHopper : public QObject |
252 | { | 255 | { |
253 | Q_OBJECT | 256 | Q_OBJECT |
254 | 257 | ||
255 | public: | 258 | public: |
256 | /** | 259 | /** |
257 | * Constructor. | 260 | * Constructor. |
258 | */ | 261 | */ |
259 | OChannelHopper( OWirelessNetworkInterface* ); | 262 | OChannelHopper( OWirelessNetworkInterface* ); |
260 | /** | 263 | /** |
261 | * Destructor. | 264 | * Destructor. |
262 | */ | 265 | */ |
263 | virtual ~OChannelHopper(); | 266 | virtual ~OChannelHopper(); |
264 | /** | 267 | /** |
@@ -292,32 +295,34 @@ class OChannelHopper : public QObject | |||
292 | OWirelessNetworkInterface* _iface; | 295 | OWirelessNetworkInterface* _iface; |
293 | int _interval; | 296 | int _interval; |
294 | int _tid; | 297 | int _tid; |
295 | QValueList<int> _channels; | 298 | QValueList<int> _channels; |
296 | QValueList<int>::Iterator _channel; | 299 | QValueList<int>::Iterator _channel; |
297 | }; | 300 | }; |
298 | 301 | ||
299 | 302 | ||
300 | /*====================================================================================== | 303 | /*====================================================================================== |
301 | * OWirelessNetworkInterface | 304 | * OWirelessNetworkInterface |
302 | *======================================================================================*/ | 305 | *======================================================================================*/ |
303 | 306 | ||
304 | /** | 307 | /** |
305 | * @brief A network interface wrapper for interfaces supporting the wireless extensions protocol. | 308 | * @brief A network interface wrapper for interfaces supporting the wireless extensions protocol. |
306 | * | 309 | * |
307 | * This class provides a high-level encapsulation of the Linux wireless extension API. | 310 | * This class provides a high-level encapsulation of the Linux wireless extension API. |
311 | * | ||
312 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | ||
308 | */ | 313 | */ |
309 | class OWirelessNetworkInterface : public ONetworkInterface | 314 | class OWirelessNetworkInterface : public ONetworkInterface |
310 | { | 315 | { |
311 | friend class OMonitoringInterface; | 316 | friend class OMonitoringInterface; |
312 | friend class OCiscoMonitoringInterface; | 317 | friend class OCiscoMonitoringInterface; |
313 | friend class OWlanNGMonitoringInterface; | 318 | friend class OWlanNGMonitoringInterface; |
314 | friend class OHostAPMonitoringInterface; | 319 | friend class OHostAPMonitoringInterface; |
315 | friend class OOrinocoMonitoringInterface; | 320 | friend class OOrinocoMonitoringInterface; |
316 | 321 | ||
317 | friend class OPrivateIOCTL; | 322 | friend class OPrivateIOCTL; |
318 | 323 | ||
319 | public: | 324 | public: |
320 | /** | 325 | /** |
321 | * Constructor. | 326 | * Constructor. |
322 | */ | 327 | */ |
323 | OWirelessNetworkInterface( QObject* parent, const char* name ); | 328 | OWirelessNetworkInterface( QObject* parent, const char* name ); |
diff --git a/libopie2/opieui/olistview.cpp b/libopie2/opieui/olistview.cpp index 8f97cc6..8f290d3 100644 --- a/libopie2/opieui/olistview.cpp +++ b/libopie2/opieui/olistview.cpp | |||
@@ -453,32 +453,94 @@ ONamedListView::ONamedListView( QWidget *parent, const char *name ) | |||
453 | 453 | ||
454 | ONamedListView::~ONamedListView() | 454 | ONamedListView::~ONamedListView() |
455 | { | 455 | { |
456 | } | 456 | } |
457 | 457 | ||
458 | 458 | ||
459 | void ONamedListView::addColumns( const QStringList& columns ) | 459 | void ONamedListView::addColumns( const QStringList& columns ) |
460 | { | 460 | { |
461 | for ( QStringList::ConstIterator it = columns.begin(); it != columns.end(); ++it ) | 461 | for ( QStringList::ConstIterator it = columns.begin(); it != columns.end(); ++it ) |
462 | { | 462 | { |
463 | qDebug( "adding column %s", (const char*) *it ); | 463 | qDebug( "adding column %s", (const char*) *it ); |
464 | addColumn( *it ); | 464 | addColumn( *it ); |
465 | } | 465 | } |
466 | } | 466 | } |
467 | 467 | ||
468 | 468 | ||
469 | int ONamedListView::findColumn( const QString& text ) const | ||
470 | { | ||
471 | //FIXME: If used excessively, this will slow down performance of updates | ||
472 | //FIXME: because of the linear search over all column texts. | ||
473 | //FIXME: I will optimize later by using a hash map. | ||
474 | for ( int i = 0; i < columns(); ++i ) | ||
475 | if ( columnText( i ) == text ) | ||
476 | return i; | ||
477 | return -1; | ||
478 | } | ||
479 | |||
480 | |||
481 | ONamedListViewItem* ONamedListView::find( int column, const QString& text, int recurse ) const | ||
482 | { | ||
483 | return find( (ONamedListViewItem*) firstChild(), column, text, recurse ); | ||
484 | } | ||
485 | |||
486 | |||
487 | ONamedListViewItem* ONamedListView::find( ONamedListViewItem* item, int column, const QString& text, int recurse ) const | ||
488 | { | ||
489 | ONamedListViewItem* result; | ||
490 | while ( item && item->text( column ) != text ) | ||
491 | { | ||
492 | qDebug( "checked %s", (const char*) item->text( column ) ); | ||
493 | |||
494 | if ( recurse < 0 || recurse > 0 ) | ||
495 | { | ||
496 | qDebug( "recursion is %d - recursing into...", recurse ); | ||
497 | result = find( (ONamedListViewItem*) item->firstChild(), column, text, recurse-1 ); | ||
498 | if ( result ) return result; | ||
499 | } | ||
500 | |||
501 | |||
502 | item = (ONamedListViewItem*) item->itemBelow(); | ||
503 | } | ||
504 | if ( item && item->text( column ) == text ) | ||
505 | return item; | ||
506 | else | ||
507 | return 0; | ||
508 | } | ||
509 | |||
510 | |||
511 | ONamedListViewItem* ONamedListView::find( const QString& column, const QString& text, int recurse ) const | ||
512 | { | ||
513 | int col = findColumn( column ); | ||
514 | if ( col != -1 ) | ||
515 | return find( (ONamedListViewItem*) firstChild(), col, text, recurse ); | ||
516 | else | ||
517 | return 0; | ||
518 | } | ||
519 | |||
520 | |||
521 | ONamedListViewItem* ONamedListView::find( ONamedListViewItem* item, const QString& column, const QString& text, int recurse ) const | ||
522 | { | ||
523 | int col = findColumn( column ); | ||
524 | if ( col != -1 ) | ||
525 | return find( item, col, text, recurse ); | ||
526 | else | ||
527 | return 0; | ||
528 | } | ||
529 | |||
530 | |||
469 | /*====================================================================================== | 531 | /*====================================================================================== |
470 | * ONamedListViewItem | 532 | * ONamedListViewItem |
471 | *======================================================================================*/ | 533 | *======================================================================================*/ |
472 | 534 | ||
473 | ONamedListViewItem::ONamedListViewItem( QListView* parent, const QStringList& texts ) | 535 | ONamedListViewItem::ONamedListViewItem( QListView* parent, const QStringList& texts ) |
474 | :OListViewItem( parent ) | 536 | :OListViewItem( parent ) |
475 | { | 537 | { |
476 | setText( texts ); | 538 | setText( texts ); |
477 | } | 539 | } |
478 | 540 | ||
479 | 541 | ||
480 | ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, const QStringList& texts ) | 542 | ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, const QStringList& texts ) |
481 | :OListViewItem( parent ) | 543 | :OListViewItem( parent ) |
482 | { | 544 | { |
483 | setText( texts ); | 545 | setText( texts ); |
484 | } | 546 | } |
@@ -507,26 +569,39 @@ void ONamedListViewItem::setText( const QStringList& texts ) | |||
507 | { | 569 | { |
508 | int col = 0; | 570 | int col = 0; |
509 | for ( QStringList::ConstIterator it = texts.begin(); it != texts.end(); ++it ) | 571 | for ( QStringList::ConstIterator it = texts.begin(); it != texts.end(); ++it ) |
510 | { | 572 | { |
511 | qDebug( "setting column %d = text %s", col, (const char*) *it ); | 573 | qDebug( "setting column %d = text %s", col, (const char*) *it ); |
512 | OListViewItem::setText( col++, *it ); | 574 | OListViewItem::setText( col++, *it ); |
513 | } | 575 | } |
514 | 576 | ||
515 | } | 577 | } |
516 | 578 | ||
517 | 579 | ||
518 | void ONamedListViewItem::setText( const QString& column, const QString& text ) | 580 | void ONamedListViewItem::setText( const QString& column, const QString& text ) |
519 | { | 581 | { |
520 | //FIXME: If used excessively, this will slow down performance of updates | 582 | //FIXME: If used excessively, this will slow down performance of updates |
521 | //FIXME: because of the linear search over all column texts. | 583 | //FIXME: because of the linear search over all column texts. |
522 | //FIXME: I will optimize later by using a hash map. | 584 | //FIXME: I will optimize later by using a hash map. |
523 | for ( int i = 0; i < listView()->columns(); ++i ) | 585 | int col = ( (ONamedListView*) listView() )->findColumn( column ); |
524 | { | 586 | if ( col != -1 ) |
525 | if ( listView()->columnText( i ) == column ) | 587 | OListViewItem::setText( col, text ); |
526 | { | 588 | else |
527 | OListViewItem::setText( i, text ); | 589 | qWarning( "ONamedListViewItem::setText(): Warning! Columntext '%s' not found.", (const char*) column ); |
528 | return; | 590 | } |
529 | } | 591 | |
530 | } | 592 | |
531 | qWarning( "ONamedListViewItem::setText(): Warning! Columntext '%s' not found.", (const char*) column ); | 593 | ONamedListViewItem* ONamedListViewItem::find( int column, const QString& text, int recurse ) const |
594 | { | ||
595 | return ( (ONamedListView*) listView() )->find( (ONamedListViewItem*) firstChild(), column, text, recurse ); | ||
532 | } | 596 | } |
597 | |||
598 | |||
599 | ONamedListViewItem* ONamedListViewItem::find( const QString& column, const QString& text, int recurse ) const | ||
600 | { | ||
601 | int col = ( (ONamedListView*) listView() )->findColumn( column ); | ||
602 | if ( col != -1 ) | ||
603 | return ( (ONamedListView*) listView() )->find( (ONamedListViewItem*) firstChild(), col, text, recurse ); | ||
604 | else | ||
605 | return 0; | ||
606 | } | ||
607 | |||
diff --git a/libopie2/opieui/olistview.h b/libopie2/opieui/olistview.h index 99770bf..1bbdd5b 100644 --- a/libopie2/opieui/olistview.h +++ b/libopie2/opieui/olistview.h | |||
@@ -228,83 +228,114 @@ class OListViewItem: public QListViewItem | |||
228 | * @relates QListViewItem | 228 | * @relates QListViewItem |
229 | * Writes listview @a item and all subitems recursively to @a stream | 229 | * Writes listview @a item and all subitems recursively to @a stream |
230 | * and returns a reference to the stream. | 230 | * and returns a reference to the stream. |
231 | */ | 231 | */ |
232 | QDataStream& operator<<( QDataStream& stream, const OListViewItem& item ); | 232 | QDataStream& operator<<( QDataStream& stream, const OListViewItem& item ); |
233 | /** | 233 | /** |
234 | * @relates QListViewItem | 234 | * @relates QListViewItem |
235 | * Reads listview @a item from @a stream and returns a reference to the stream. | 235 | * Reads listview @a item from @a stream and returns a reference to the stream. |
236 | */ | 236 | */ |
237 | QDataStream& operator>>( QDataStream& stream, OListViewItem& item ); | 237 | QDataStream& operator>>( QDataStream& stream, OListViewItem& item ); |
238 | #endif // QT_NO_DATASTREAM | 238 | #endif // QT_NO_DATASTREAM |
239 | 239 | ||
240 | /*====================================================================================== | 240 | /*====================================================================================== |
241 | * ONamedListView | 241 | * ONamedListView |
242 | *======================================================================================*/ | 242 | *======================================================================================*/ |
243 | 243 | ||
244 | class ONamedListViewItem; | ||
245 | |||
244 | /** | 246 | /** |
245 | * @brief An OListView variant with named columns. | 247 | * @brief An OListView variant with named columns. |
246 | * | 248 | * |
247 | * This class provides a higher-level interface to the columns in an OListView. | 249 | * This class provides a higher-level interface to an OListView. |
248 | * | 250 | * |
249 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 251 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
250 | */ | 252 | */ |
251 | class ONamedListView: public OListView | 253 | class ONamedListView: public OListView |
252 | { | 254 | { |
253 | public: | 255 | public: |
254 | /** | 256 | /** |
255 | * Constructor. | 257 | * Constructor. |
256 | * | 258 | * |
257 | * The parameters @a parent and @a name are handled by | 259 | * The parameters @a parent and @a name are handled by |
258 | * @ref OListView, as usual. | 260 | * @ref OListView, as usual. |
259 | */ | 261 | */ |
260 | ONamedListView( QWidget* parent = 0, const char* name = 0 ); | 262 | ONamedListView( QWidget* parent = 0, const char* name = 0 ); |
261 | /** | 263 | /** |
262 | * Destructor. | 264 | * Destructor. |
263 | */ | 265 | */ |
264 | virtual ~ONamedListView(); | 266 | virtual ~ONamedListView(); |
265 | /** | 267 | /** |
266 | * Add a number of @a columns to the listview. | 268 | * Add a number of @a columns to the listview. |
267 | */ | 269 | */ |
268 | virtual void addColumns( const QStringList& columns ); | 270 | virtual void addColumns( const QStringList& columns ); |
271 | /** | ||
272 | * @returns the column index matching to @a text or -1 if not found. | ||
273 | */ | ||
274 | virtual int findColumn( const QString& text ) const; | ||
275 | /** | ||
276 | * @returns the first item which has a @a text in column @a column. | ||
277 | * Set @a recurse to indicate how much subchild levels to search, e.g.<ul> | ||
278 | * <li>set it to 0 to search only among direct childs, | ||
279 | * <li>set it to 1 to search direct childs and all 1st order subchilds | ||
280 | * <li>set it to -1 for maximum recursion. | ||
281 | * </ul> | ||
282 | * @sa ONamedListViewItem::find() | ||
283 | */ | ||
284 | virtual ONamedListViewItem* find( ONamedListViewItem* start, int column, const QString& text, int recurse = -1 ) const; | ||
285 | virtual ONamedListViewItem* find( int column, const QString& text, int recurse = -1 ) const; | ||
286 | |||
287 | virtual ONamedListViewItem* find( ONamedListViewItem* start, const QString& column, const QString& text, int recurse = -1 ) const; | ||
288 | virtual ONamedListViewItem* find( const QString& column, const QString& text, int recurse = -1 ) const; | ||
269 | }; | 289 | }; |
270 | 290 | ||
271 | /*====================================================================================== | 291 | /*====================================================================================== |
272 | * ONamedListViewItem | 292 | * ONamedListViewItem |
273 | *======================================================================================*/ | 293 | *======================================================================================*/ |
274 | 294 | ||
275 | /** | 295 | /** |
276 | * @brief An OListView variant with named columns. | 296 | * @brief An OListView variant with named columns. |
277 | * | 297 | * |
278 | * This class provides a higher-level interface to the columns in an OListViewItem. | 298 | * This class provides a higher-level interface to an OListViewItem. |
279 | * | 299 | * |
280 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 300 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
281 | */ | 301 | */ |
282 | class ONamedListViewItem: public OListViewItem | 302 | class ONamedListViewItem: public OListViewItem |
283 | { | 303 | { |
284 | public: | 304 | public: |
285 | /** | 305 | /** |
286 | * Constructor. Accepts the same parameters as a @ref OListViewItem, | 306 | * Constructor. Accepts the same parameters as a @ref OListViewItem, |
287 | * plus a @ref QStringList which holds an arbitrary number of @a texts. | 307 | * plus a @ref QStringList which holds an arbitrary number of @a texts. |
288 | */ | 308 | */ |
289 | ONamedListViewItem( QListView* parent, const QStringList& texts ); | 309 | ONamedListViewItem( QListView* parent, const QStringList& texts ); |
290 | ONamedListViewItem( QListViewItem* parent, const QStringList& texts ); | 310 | ONamedListViewItem( QListViewItem* parent, const QStringList& texts ); |
291 | ONamedListViewItem( QListView* parent, QListViewItem* after, const QStringList& texts ); | 311 | ONamedListViewItem( QListView* parent, QListViewItem* after, const QStringList& texts ); |
292 | ONamedListViewItem( QListViewItem* parent, QListViewItem* after, const QStringList& texts ); | 312 | ONamedListViewItem( QListViewItem* parent, QListViewItem* after, const QStringList& texts ); |
293 | /** | 313 | /** |
294 | * Destructor. | 314 | * Destructor. |
295 | */ | 315 | */ |
296 | virtual ~ONamedListViewItem(); | 316 | virtual ~ONamedListViewItem(); |
297 | /** | 317 | /** |
298 | * Sets the text in column @a column to @a text. | 318 | * Sets the text in column @a column to @a text. |
299 | * This method differs from @ref QListViewItem::setText() in that it | 319 | * This method differs from @ref QListViewItem::setText() in that it |
300 | * accepts a string as column indicator instead of an int. | 320 | * accepts a string as column indicator instead of an int. |
301 | */ | 321 | */ |
302 | virtual void setText( const QString& column, const QString& text ); | 322 | virtual void setText( const QString& column, const QString& text ); |
303 | /** | 323 | /** |
304 | * Sets a number of @a texts for this item. | 324 | * Sets a number of @a texts for this item. |
305 | */ | 325 | */ |
306 | virtual void setText( const QStringList& texts ); | 326 | virtual void setText( const QStringList& texts ); |
327 | /** | ||
328 | * @returns the first child which has a @a text in column @a column. | ||
329 | * Set @a recurse to indicate how much subchild levels to search, e.g.<ul> | ||
330 | * <li>set it to 0 to search only among direct childs, | ||
331 | * <li>set it to 1 to search direct childs and all 1st order subchilds | ||
332 | * <li>set it to -1 for maximum recursion. | ||
333 | * </ul> | ||
334 | * @sa ONamedListView::find() | ||
335 | */ | ||
336 | virtual ONamedListViewItem* find( int column, const QString& text, int recurse = -1 ) const; | ||
337 | virtual ONamedListViewItem* find( const QString& column, const QString& text, int recurse = -1 ) const; | ||
307 | }; | 338 | }; |
308 | 339 | ||
309 | 340 | ||
310 | #endif // OLISTVIEW_H | 341 | #endif // OLISTVIEW_H |