RCS file: /cvsroot/licq/qt-gui/src/ewidgets.cpp,v
retrieving revision 1.76
diff -u -d -p -r1.76 ewidgets.cpp
|
|
|
|
| 29 | 29 | |
| 30 | 30 | using namespace std; |
| 31 | 31 | |
| | 32 | #define QT_THREAD_SUPPORT |
| | 33 | #include <qthread.h> |
| | 34 | |
| 32 | 35 | bool QueryUser(QWidget *q, QString szQuery, QString szBtn1, QString szBtn2) |
| 33 | 36 | { |
| 34 | 37 | #ifdef USE_KDE |
| … |
… |
|
| 49 | 52 | } |
| 50 | 53 | |
| 51 | 54 | |
| 52 | | void InformUser(QWidget *q, QString sz) |
| | 55 | static void informUser(QWidget *q, QString &sz) |
| 53 | 56 | { |
| 54 | | //(void) new CLicqMessageBox(szInfo, QMessageBox::Information, q); |
| 55 | 57 | #ifdef USE_KDE |
| 56 | 58 | KMessageBox::information(q, sz, QMessageBox::tr("Licq Information"), QString::null, false); |
| 57 | 59 | #else |
| 58 | | QMessageBox::information(q, QMessageBox::tr("Licq Information"), sz, QMessageBox::Ok | QMessageBox::Default); |
| | 60 | QMessageBox::information(q, QMessageBox::tr("Licq Information"), sz, QMessageBox::Ok | QMessageBox::Default); |
| 59 | 61 | #endif |
| | 62 | |
| 60 | 63 | } |
| 61 | 64 | |
| 62 | | void WarnUser(QWidget *q, QString sz) |
| | 65 | static void warnUser(QWidget *q, QString &sz) |
| 63 | 66 | { |
| 64 | | //(void) new CLicqMessageBox(szInfo, QMessageBox::Warning, q); |
| | 67 | |
| 65 | 68 | #ifdef USE_KDE |
| 66 | 69 | KMessageBox::sorry(q, sz, QMessageBox::tr("Licq Warning"), false); |
| 67 | 70 | #else |
| … |
… |
|
| 69 | 72 | #endif |
| 70 | 73 | } |
| 71 | 74 | |
| 72 | | void CriticalUser(QWidget *q, QString sz) |
| | 75 | static void criticalUser(QWidget *q, QString &sz) |
| 73 | 76 | { |
| 74 | | //(void) new CLicqMessageBox(szInfo, QMessageBox::Critical, q); |
| | 77 | |
| 75 | 78 | #ifdef USE_KDE |
| 76 | | KMessageBox::error(q, sz, QMessageBox::tr("Licq Error"), false); |
| | 79 | KMessageBox::error(q, sz, QMessageBox::tr("Licq Error"), false); |
| 77 | 80 | #else |
| 78 | 81 | QMessageBox::warning(q, QMessageBox::tr("Licq Error"), sz, QMessageBox::Ok | QMessageBox::Default, 0); |
| 79 | 82 | #endif |
| | 83 | } |
| | 84 | |
| | 85 | class OrphanMsgManager |
| | 86 | { |
| | 87 | public: |
| | 88 | enum type |
| | 89 | { OM_INFORM, |
| | 90 | OM_WARN, |
| | 91 | OM_CRITICAL |
| | 92 | }; |
| | 93 | OrphanMsgManager( void ) |
| | 94 | { |
| | 95 | bUsed = false; |
| | 96 | } |
| | 97 | void AddMessage( enum type t, QString &sz ) |
| | 98 | { |
| | 99 | struct msg m; |
| | 100 | |
| | 101 | m.sz = sz; |
| | 102 | m.nType = t; |
| | 103 | |
| | 104 | mutex.lock(); |
| | 105 | OrphanMsgList.push_back( m ); |
| | 106 | mutex.unlock(); |
| | 107 | } |
| | 108 | void ShowNext( void ) |
| | 109 | { |
| | 110 | struct msg m; |
| | 111 | |
| | 112 | mutexShow.lock(); |
| | 113 | if( bUsed ) |
| | 114 | { mutexShow.unlock(); |
| | 115 | return; |
| | 116 | } |
| | 117 | else |
| | 118 | bUsed = true; |
| | 119 | mutexShow.unlock(); |
| | 120 | |
| | 121 | |
| | 122 | mutex.lock(); |
| | 123 | while( !OrphanMsgList.empty() ) |
| | 124 | { |
| | 125 | m = OrphanMsgList.front(); |
| | 126 | OrphanMsgList.pop_front(); |
| | 127 | mutex.unlock(); |
| | 128 | |
| | 129 | switch( m.nType ) |
| | 130 | { |
| | 131 | case OM_INFORM: |
| | 132 | informUser(0,m.sz); |
| | 133 | break; |
| | 134 | case OM_WARN: |
| | 135 | warnUser(0,m.sz); |
| | 136 | break; |
| | 137 | case OM_CRITICAL: |
| | 138 | criticalUser(0,m.sz); |
| | 139 | break; |
| | 140 | default: |
| | 141 | assert(0); |
| | 142 | } |
| | 143 | mutex.lock(); |
| | 144 | } |
| | 145 | mutex.unlock(); |
| | 146 | bUsed = false; |
| | 147 | } |
| | 148 | private: |
| | 149 | struct msg |
| | 150 | { QString sz; |
| | 151 | enum type nType; |
| | 152 | }; |
| | 153 | std::list<struct msg> OrphanMsgList; |
| | 154 | QMutex mutex; |
| | 155 | QMutex mutexShow; |
| | 156 | bool bUsed; |
| | 157 | }; |
| | 158 | |
| | 159 | static class OrphanMsgManager OrphanMsgMng; |
| | 160 | |
| | 161 | void InformUser(QWidget *q, QString sz) |
| | 162 | { |
| | 163 | if( q == 0 ) |
| | 164 | { OrphanMsgMng.AddMessage(OrphanMsgManager::OM_INFORM,sz); |
| | 165 | OrphanMsgMng.ShowNext(); |
| | 166 | } |
| | 167 | else |
| | 168 | informUser(q,sz); |
| | 169 | } |
| | 170 | |
| | 171 | void WarnUser(QWidget *q, QString sz) |
| | 172 | { |
| | 173 | if( q == 0 ) |
| | 174 | { |
| | 175 | OrphanMsgMng.AddMessage(OrphanMsgManager::OM_WARN,sz); |
| | 176 | OrphanMsgMng.ShowNext(); |
| | 177 | } |
| | 178 | else |
| | 179 | warnUser(q,sz); |
| | 180 | } |
| | 181 | |
| | 182 | void CriticalUser(QWidget *q, QString sz) |
| | 183 | { |
| | 184 | if( q == 0 ) |
| | 185 | { OrphanMsgMng.AddMessage(OrphanMsgManager::OM_CRITICAL,sz); |
| | 186 | OrphanMsgMng.ShowNext(); |
| | 187 | } |
| | 188 | else |
| | 189 | warnUser(q,sz); |
| 80 | 190 | } |
| 81 | 191 | |
| 82 | 192 | //-----CELabel------------------------------------------------------------------ |