00001 #include <qobject.h>
00002 #include <qlistview.h>
00003 #include <qpushbutton.h>
00004 #include <qtoolbutton.h>
00005 #include <qlineedit.h>
00006
00007 #include "odinqt.h"
00008
00009 #if QT_VERSION > 0x03FFFF
00010 #define QT_VERSION_4
00011 #else
00012 #if QT_VERSION > 299
00013 #define QT_VERSION_3
00014 #else
00015 #define QT_VERSION_PRE3
00016 #endif
00017 #endif
00018
00019
00020
00024 class SlotDispatcher : public QObject {
00025 Q_OBJECT
00026
00027 public:
00028
00029 SlotDispatcher(GuiListView* glv, GuiListViewCallback* glv_cb) {
00030 glv_cache=glv;
00031 glv_cb_cache=glv_cb;
00032 #ifdef QT_VERSION_4
00033 connect(glv->get_widget(), SIGNAL(itemClicked(QTableWidgetItem*)), this, SLOT(qtwi_clicked(QTableWidgetItem*)) );
00034 #else
00035 connect(glv->get_widget(), SIGNAL(clicked(QListViewItem*)), this, SLOT(qlvi_clicked(QListViewItem*)) );
00036 #endif
00037 }
00038
00039
00040 SlotDispatcher(GuiToolButton* gtb, QObject* receiver, const char* member) {
00041 if(receiver) connect(gtb->qtb, SIGNAL(clicked()), receiver, member );
00042 }
00043
00044 SlotDispatcher(GuiButton* gb, QObject* receiver, const char* member) {
00045 if(receiver) connect(gb->qpb, SIGNAL(clicked()), receiver, member );
00046 }
00047
00048 SlotDispatcher(GuiLineEdit* gle, QObject* receiver, const char* member) {
00049 if(receiver) {
00050 #ifdef QT_VERSION_4
00051 connect(gle->qle, SIGNAL(editingFinished()), receiver, member );
00052 #else
00053 #ifdef QT_VERSION_3
00054 connect(gle->qle, SIGNAL(lostFocus()), receiver, member );
00055 #endif
00056 connect(gle->qle, SIGNAL(returnPressed()), receiver, member );
00057 #endif
00058 }
00059 }
00060
00061
00062 public slots:
00063
00064 void qlvi_clicked(QListViewItem* item) {
00065 #ifndef QT_VERSION_4
00066 Log<OdinQt> odinlog("SlotDispatcher","qlvi_clicked");
00067 ODINLOG(odinlog,normalDebug) << "item=" << item << STD_endl;
00068 if(!glv_cb_cache) return;
00069 GuiListItem* itemptr=0;
00070 GuiListItem();
00071 ODINLOG(odinlog,normalDebug) << "GuiListItem(); done" << STD_endl;
00072 STD_map<QListViewItem*,GuiListItem*>::iterator it=GuiListItem::listmap->find(item);
00073 if(it!=GuiListItem::listmap->end()) itemptr=it->second;
00074 ODINLOG(odinlog,normalDebug) << "itemptr=" << itemptr << STD_endl;
00075 glv_cb_cache->clicked(itemptr);
00076 #endif
00077 }
00078
00079 void qtwi_clicked(QTableWidgetItem* item) {
00080 #ifdef QT_VERSION_4
00081 Log<OdinQt> odinlog("SlotDispatcher","qtwi_clicked");
00082 ODINLOG(odinlog,normalDebug) << "item=" << item << STD_endl;
00083 if(!glv_cb_cache) return;
00084 GuiListItem* itemptr=0;
00085 GuiListItem();
00086 ODINLOG(odinlog,normalDebug) << "GuiListItem(); done" << STD_endl;
00087 STD_map<QTableWidgetItem*,GuiListItem*>::iterator it=GuiListItem::tablemap->find(item);
00088 if(it!=GuiListItem::tablemap->end()) itemptr=it->second;
00089 ODINLOG(odinlog,normalDebug) << "itemptr=" << itemptr << STD_endl;
00090 glv_cb_cache->clicked(itemptr);
00091 #endif
00092 }
00093
00094
00095 private:
00096 void common_int() {
00097 glv_cache=0;
00098 glv_cb_cache=0;
00099 }
00100
00101 GuiListView* glv_cache;
00102 GuiListViewCallback* glv_cb_cache;
00103
00104 };