summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/slave/slavereciever.cpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/noncore/graphics/opie-eye/slave/slavereciever.cpp b/noncore/graphics/opie-eye/slave/slavereciever.cpp
index fb88873..941a5df 100644
--- a/noncore/graphics/opie-eye/slave/slavereciever.cpp
+++ b/noncore/graphics/opie-eye/slave/slavereciever.cpp
@@ -1,236 +1,238 @@
1/* 1/*
2 * GPLv2 zecke@handhelds.org 2 * GPLv2 zecke@handhelds.org
3 */ 3 */
4 4
5#include "slavereciever.h" 5#include "slavereciever.h"
6#include "slaveiface.h" 6#include "slaveiface.h"
7 7
8/* OPIE */ 8/* OPIE */
9#include <opie2/odebug.h> 9#include <opie2/odebug.h>
10#include <qpe/qcopenvelope_qws.h> 10#include <qpe/qcopenvelope_qws.h>
11#include <qpe/qpeapplication.h> 11#include <qpe/qpeapplication.h>
12using namespace Opie::Core; 12using namespace Opie::Core;
13 13
14/* QT */ 14/* QT */
15#include <qtimer.h> 15#include <qtimer.h>
16 16
17static SlaveObjects* _slaveObj = 0; 17static SlaveObjects* _slaveObj = 0;
18 18
19QDataStream & operator << (QDataStream & str, bool b) 19QDataStream & operator << (QDataStream & str, bool b)
20{ 20{
21 str << Q_INT8(b); 21 str << Q_INT8(b);
22 return str; 22 return str;
23} 23}
24 24
25QDataStream & operator >> (QDataStream & str, bool & b) 25QDataStream & operator >> (QDataStream & str, bool & b)
26{ 26{
27 Q_INT8 l; 27 Q_INT8 l;
28 str >> l; 28 str >> l;
29 b = bool(l); 29 b = bool(l);
30 return str; 30 return str;
31} 31}
32 32
33 33
34 34
35QDataStream &operator<<( QDataStream& s, const PixmapInfo& inf) { 35QDataStream &operator<<( QDataStream& s, const PixmapInfo& inf) {
36 return s << inf.file << inf.pixmap << inf.width << inf.height; 36 return s << inf.file << inf.pixmap << inf.width << inf.height;
37} 37}
38 38
39/* 39/*
40 * GUI sends no QPIxmap!!! 40 * GUI sends no QPIxmap!!!
41 */ 41 */
42QDataStream &operator>>( QDataStream& s, PixmapInfo& inf ) { 42QDataStream &operator>>( QDataStream& s, PixmapInfo& inf ) {
43 s >> inf.file >> inf.width >> inf.height; 43 s >> inf.file >> inf.width >> inf.height;
44 owarn << "Recieved " << inf.file.latin1() << " " << inf.width << " " << inf.height << "" << oendl; 44 owarn << "Recieved " << inf.file.latin1() << " " << inf.width << " " << inf.height << "" << oendl;
45 return s; 45 return s;
46} 46}
47QDataStream &operator<<( QDataStream& s, const ImageInfo& i) { 47QDataStream &operator<<( QDataStream& s, const ImageInfo& i) {
48 return s << i.kind << i.file << i.info; 48 return s << i.kind << i.file << i.info;
49} 49}
50QDataStream &operator>>( QDataStream& s, ImageInfo& i ) { 50QDataStream &operator>>( QDataStream& s, ImageInfo& i ) {
51 s >> i.kind >> i.file >> i.info; 51 s >> i.kind >> i.file >> i.info;
52 return s; 52 return s;
53} 53}
54 54
55 55
56 56
57SlaveObjects* slaveObjects() { 57SlaveObjects* slaveObjects() {
58 if ( !_slaveObj ) 58 if ( !_slaveObj )
59 _slaveObj = new SlaveObjects; 59 _slaveObj = new SlaveObjects;
60 return _slaveObj; 60 return _slaveObj;
61} 61}
62 62
63SlaveReciever::SlaveReciever( QObject* par) 63SlaveReciever::SlaveReciever( QObject* par)
64 : QObject( par ), m_refs( 0 ) 64 : QObject( par ), m_refs( 0 )
65{ 65{
66 m_inf = new QTimer(this); 66 m_inf = new QTimer(this);
67 connect(m_inf,SIGNAL(timeout()), 67 connect(m_inf,SIGNAL(timeout()),
68 this, SLOT(slotImageInfo())); 68 this, SLOT(slotImageInfo()));
69 m_pix = new QTimer(this); 69 m_pix = new QTimer(this);
70 connect(m_pix,SIGNAL(timeout()), 70 connect(m_pix,SIGNAL(timeout()),
71 this, SLOT(slotThumbNail())); 71 this, SLOT(slotThumbNail()));
72 72
73 m_out = new QTimer(this); 73 m_out = new QTimer(this);
74 connect(m_out,SIGNAL(timeout()), 74 connect(m_out,SIGNAL(timeout()),
75 this, SLOT(slotSend())); 75 this, SLOT(slotSend()));
76 76
77 SlaveObjects *obj = slaveObjects(); // won't be changed 77 SlaveObjects *obj = slaveObjects(); // won't be changed
78 SlaveMap::Iterator it; 78 SlaveMap::Iterator it;
79 SlaveMap* map = slaveMap(); // SlaveMap won't be changed during execution!!! 79 SlaveMap* map = slaveMap(); // SlaveMap won't be changed during execution!!!
80 for(it = map->begin(); it != map->end(); ++it ) { 80 for(it = map->begin(); it != map->end(); ++it ) {
81 obj->insert( it.key(), (*it.data())() ); 81 obj->insert( it.key(), (*it.data())() );
82 } 82 }
83} 83}
84 84
85SlaveReciever::~SlaveReciever() { 85SlaveReciever::~SlaveReciever() {
86} 86}
87 87
88void SlaveReciever::recieveAnswer( const QCString& string, const QByteArray& ar) { 88void SlaveReciever::recieveAnswer( const QCString& string, const QByteArray& ar) {
89 owarn << "String is " << string.data() << "" << oendl; 89 owarn << "String is " << string.data() << "" << oendl;
90 QDataStream stream(ar, IO_ReadOnly ); 90 QDataStream stream(ar, IO_ReadOnly );
91 QStringList lst; 91 QStringList lst;
92 static ImageInfo inf; 92 static ImageInfo inf;
93 static PixmapInfo pix; 93 static PixmapInfo pix;
94 94
95 if ( string == "thumbInfo(QString)" ) { 95 if ( string == "thumbInfo(QString)" ) {
96 stream >> inf.file; 96 stream >> inf.file;
97 inf.kind = false;
97 m_inList.append(inf); 98 m_inList.append(inf);
98 }else if ( string == "thumbInfos(QStringList)" ) { 99 }else if ( string == "thumbInfos(QStringList)" ) {
99 stream >> lst; 100 stream >> lst;
100 for(QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) { 101 for(QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) {
101 owarn << "Adding thumbinfo for file "+ *it << oendl; 102 owarn << "Adding thumbinfo for file "+ *it << oendl;
102 inf.file = (*it); 103 inf.file = (*it);
104 inf.kind = false;
103 m_inList.append(inf); 105 m_inList.append(inf);
104 } 106 }
105 }else if ( string == "fullInfo(QString)" ) { 107 }else if ( string == "fullInfo(QString)" ) {
106 inf.kind = true; 108 inf.kind = true;
107 stream >> inf.file; 109 stream >> inf.file;
108 m_inList.append(inf); 110 m_inList.append(inf);
109 }else if ( string == "fullInfos(QStringList)" ) { 111 }else if ( string == "fullInfos(QStringList)" ) {
110 stream >> lst; 112 stream >> lst;
111 for(QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) { 113 for(QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) {
112 owarn << "Adding fullInfo for"+ *it << oendl; 114 owarn << "Adding fullInfo for"+ *it << oendl;
113 inf.file = (*it); 115 inf.file = (*it);
114 inf.kind = true; 116 inf.kind = true;
115 m_inList.append(inf); 117 m_inList.append(inf);
116 } 118 }
117 }else if ( string == "pixmapInfo(QString,int,int)" ) { 119 }else if ( string == "pixmapInfo(QString,int,int)" ) {
118 stream >> pix.file >> pix.width >> pix.height; 120 stream >> pix.file >> pix.width >> pix.height;
119 m_inPix.append(pix); 121 m_inPix.append(pix);
120 }else if ( string == "pixmapInfos(PixmapInfos)" ) { 122 }else if ( string == "pixmapInfos(PixmapInfos)" ) {
121 PixmapList list; 123 PixmapList list;
122 stream >> list; 124 stream >> list;
123 for(PixmapList::Iterator it = list.begin(); it != list.end(); ++it ) { 125 for(PixmapList::Iterator it = list.begin(); it != list.end(); ++it ) {
124 owarn << "Got " << (*it).width << " " << (*it).height << " " + (*it).file << oendl; 126 owarn << "Got " << (*it).width << " " << (*it).height << " " + (*it).file << oendl;
125 m_inPix.append(*it); 127 m_inPix.append(*it);
126 } 128 }
127 }else if ( string == "refUp()" ) { 129 }else if ( string == "refUp()" ) {
128 m_refs++; 130 m_refs++;
129 }else if ( string == "refDown()" ) { 131 }else if ( string == "refDown()" ) {
130 m_refs--; 132 m_refs--;
131 } 133 }
132 134
133 if (!m_inf->isActive() && !m_inList.isEmpty() ) 135 if (!m_inf->isActive() && !m_inList.isEmpty() )
134 m_inf->start(5); 136 m_inf->start(5);
135 137
136 if (!m_pix->isActive() && !m_inPix.isEmpty() ) 138 if (!m_pix->isActive() && !m_inPix.isEmpty() )
137 m_pix->start(5); 139 m_pix->start(5);
138 140
139 if ( m_refs ) 141 if ( m_refs )
140 QPEApplication::setKeepRunning(); 142 QPEApplication::setKeepRunning();
141 else 143 else
142 qApp->quit(); 144 qApp->quit();
143 145
144} 146}
145 147
146PixmapList SlaveReciever::outPix()const { 148PixmapList SlaveReciever::outPix()const {
147 return m_outPix; 149 return m_outPix;
148} 150}
149 151
150StringList SlaveReciever::outInf()const{ 152StringList SlaveReciever::outInf()const{
151 return m_outList; 153 return m_outList;
152} 154}
153 155
154void SlaveReciever::slotImageInfo() { 156void SlaveReciever::slotImageInfo() {
155 ImageInfo inf = m_inList.first(); 157 ImageInfo inf = m_inList.first();
156 m_inList.remove( inf ); 158 m_inList.remove( inf );
157 159
158 static SlaveObjects::Iterator it; 160 static SlaveObjects::Iterator it;
159 static SlaveObjects* map = slaveObjects(); // SlaveMap won't be changed during execution!!! 161 static SlaveObjects* map = slaveObjects(); // SlaveMap won't be changed during execution!!!
160 for(it = map->begin(); it != map->end(); ++it ) { 162 for(it = map->begin(); it != map->end(); ++it ) {
161 if( (*it)->supports(inf.file ) ) { 163 if( (*it)->supports(inf.file ) ) {
162 /* full image info */ 164 /* full image info */
163 if (inf.kind ) 165 if (inf.kind )
164 inf.info = (*it)->fullImageInfo( inf.file ); 166 inf.info = (*it)->fullImageInfo( inf.file );
165 else 167 else
166 inf.info = (*it)->iconViewName( inf.file ); 168 inf.info = (*it)->iconViewName( inf.file );
167 m_outList.append( inf ); 169 m_outList.append( inf );
168 break; 170 break;
169 } 171 }
170 } 172 }
171 173
172 if (m_inList.isEmpty() ) 174 if (m_inList.isEmpty() )
173 m_inf->stop(); 175 m_inf->stop();
174 if (!m_out->isActive() && !m_outList.isEmpty() ) 176 if (!m_out->isActive() && !m_outList.isEmpty() )
175 m_out->start( 100 ); 177 m_out->start( 100 );
176} 178}
177 179
178void SlaveReciever::slotThumbNail() { 180void SlaveReciever::slotThumbNail() {
179 PixmapInfo inf = m_inPix.first(); 181 PixmapInfo inf = m_inPix.first();
180 m_inPix.remove( inf ); 182 m_inPix.remove( inf );
181 183
182 static SlaveObjects::Iterator it; 184 static SlaveObjects::Iterator it;
183 static SlaveObjects* map = slaveObjects(); // SlaveMap won't be changed during execution!!! 185 static SlaveObjects* map = slaveObjects(); // SlaveMap won't be changed during execution!!!
184 for(it = map->begin(); it != map->end(); ++it ) { 186 for(it = map->begin(); it != map->end(); ++it ) {
185 SlaveInterface* iface = it.data(); 187 SlaveInterface* iface = it.data();
186 if( iface->supports(inf.file ) ) { 188 if( iface->supports(inf.file ) ) {
187 /* pixmap */ 189 /* pixmap */
188 owarn << "Asking for thumbNail in size " << inf.width << " " << inf.height << " for "+inf.file << oendl; 190 owarn << "Asking for thumbNail in size " << inf.width << " " << inf.height << " for "+inf.file << oendl;
189 if (inf.width>256||inf.height>256) { 191 if (inf.width>256||inf.height>256) {
190 owarn << "Scaling thumbnail to 64x64 'cause " << inf.width<<"x"<<inf.height<< 192 owarn << "Scaling thumbnail to 64x64 'cause " << inf.width<<"x"<<inf.height<<
191 " may be nonsense"; 193 " may be nonsense";
192 inf.pixmap = iface->pixmap(inf.file, 64, 64); 194 inf.pixmap = iface->pixmap(inf.file, 64, 64);
193 }else { 195 }else {
194 inf.pixmap = iface->pixmap(inf.file, inf.width, inf.height); 196 inf.pixmap = iface->pixmap(inf.file, inf.width, inf.height);
195 } 197 }
196 m_outPix.append( inf ); 198 m_outPix.append( inf );
197 break; 199 break;
198 } 200 }
199 } 201 }
200 202
201 203
202 204
203 if(m_inPix.isEmpty() ) 205 if(m_inPix.isEmpty() )
204 m_pix->stop(); 206 m_pix->stop();
205 if(!m_out->isActive() && !m_outPix.isEmpty() ) 207 if(!m_out->isActive() && !m_outPix.isEmpty() )
206 m_out->start(100); 208 m_out->start(100);
207} 209}
208 210
209void SlaveReciever::slotSend() { 211void SlaveReciever::slotSend() {
210 212
211 m_out->stop(); 213 m_out->stop();
212 214
213 owarn << "Sending " << outPix().count() << " " << outInf().count() << "" << oendl; 215 owarn << "Sending " << outPix().count() << " " << outInf().count() << "" << oendl;
214 /* queue it and send */ 216 /* queue it and send */
215 /* if this ever gets a service introduce request queues 217 /* if this ever gets a service introduce request queues
216 * so we can differinatate between different clients 218 * so we can differinatate between different clients
217 */ 219 */
218 if (! m_outPix.isEmpty() ) { 220 if (! m_outPix.isEmpty() ) {
219 QCopEnvelope answer("QPE/opie-eye", "pixmapsHandled(PixmapList)" ); 221 QCopEnvelope answer("QPE/opie-eye", "pixmapsHandled(PixmapList)" );
220 answer << outPix(); 222 answer << outPix();
221 for ( PixmapList::Iterator it = m_outPix.begin();it!=m_outPix.end();++it ) { 223 for ( PixmapList::Iterator it = m_outPix.begin();it!=m_outPix.end();++it ) {
222 owarn << "Sending out " << (*it).file.latin1() << " " << (*it).width << " " << (*it).height << "" << oendl; 224 owarn << "Sending out " << (*it).file.latin1() << " " << (*it).width << " " << (*it).height << "" << oendl;
223 } 225 }
224 } 226 }
225 if ( !m_outList.isEmpty() ) { 227 if ( !m_outList.isEmpty() ) {
226 QCopEnvelope answer("QPE/opie-eye", "pixmapsHandled(StringList)" ); 228 QCopEnvelope answer("QPE/opie-eye", "pixmapsHandled(StringList)" );
227 answer << outInf(); 229 answer << outInf();
228 for ( StringList::Iterator it = m_outList.begin();it!=m_outList.end();++it ) { 230 for ( StringList::Iterator it = m_outList.begin();it!=m_outList.end();++it ) {
229 owarn << "Sending out2 " + (*it).file << oendl; 231 owarn << "Sending out2 " + (*it).file << oendl;
230 } 232 }
231 } 233 }
232 234
233 m_outList.clear(); 235 m_outList.clear();
234 m_outPix.clear(); 236 m_outPix.clear();
235} 237}
236 238