summaryrefslogtreecommitdiff
path: root/noncore/graphics/opie-eye
authorzecke <zecke>2004-03-23 00:36:37 (UTC)
committer zecke <zecke>2004-03-23 00:36:37 (UTC)
commitd7581f7cd0ba6adb43ee5c4bdeae696c0a16ae3b (patch) (unidiff)
treec65e9015323fb7fc4fec45038aa0f0a19b43252f /noncore/graphics/opie-eye
parent428b687982966dc2efabaf6dbcc55ad0ea30aa10 (diff)
downloadopie-d7581f7cd0ba6adb43ee5c4bdeae696c0a16ae3b.zip
opie-d7581f7cd0ba6adb43ee5c4bdeae696c0a16ae3b.tar.gz
opie-d7581f7cd0ba6adb43ee5c4bdeae696c0a16ae3b.tar.bz2
Fix communication. It seems like QPixmap and QDataStream
do not mix well if the QPixmap is not valid.. invalidate image requests if we change the dir
Diffstat (limited to 'noncore/graphics/opie-eye') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/iconview.cpp6
-rw-r--r--noncore/graphics/opie-eye/lib/slavemaster.cpp7
-rw-r--r--noncore/graphics/opie-eye/slave/slavereciever.cpp7
3 files changed, 17 insertions, 3 deletions
diff --git a/noncore/graphics/opie-eye/gui/iconview.cpp b/noncore/graphics/opie-eye/gui/iconview.cpp
index 0b80012..38a621e 100644
--- a/noncore/graphics/opie-eye/gui/iconview.cpp
+++ b/noncore/graphics/opie-eye/gui/iconview.cpp
@@ -72,49 +72,49 @@ namespace {
72 currentView()->dirLister()->imageInfo( m_path ); 72 currentView()->dirLister()->imageInfo( m_path );
73 g_stringInf.insert( m_path, const_cast<IconViewItem*>(this)); 73 g_stringInf.insert( m_path, const_cast<IconViewItem*>(this));
74 } 74 }
75 75
76 m_pix = PPixmapCache::self()->cachedImage( m_path, 64, 64 ); 76 m_pix = PPixmapCache::self()->cachedImage( m_path, 64, 64 );
77 if ( !m_pix && !g_stringPix.contains( m_path )) { 77 if ( !m_pix && !g_stringPix.contains( m_path )) {
78 currentView()->dirLister()->thumbNail( m_path, 64, 64 ); 78 currentView()->dirLister()->thumbNail( m_path, 64, 64 );
79 g_stringPix.insert( m_path, const_cast<IconViewItem*>(this)); 79 g_stringPix.insert( m_path, const_cast<IconViewItem*>(this));
80 } 80 }
81 return m_pix ? m_pix : _unkPix; 81 return m_pix ? m_pix : _unkPix;
82 } 82 }
83 } 83 }
84 inline void IconViewItem::setText( const QString& str ) { 84 inline void IconViewItem::setText( const QString& str ) {
85 QString text = QIconViewItem::text()+"\n"+str; 85 QString text = QIconViewItem::text()+"\n"+str;
86 m_noInfo = true; 86 m_noInfo = true;
87 QIconViewItem::setText( text ); 87 QIconViewItem::setText( text );
88 } 88 }
89} 89}
90 90
91 91
92PIconView::PIconView( QWidget* wid, Config* cfg ) 92PIconView::PIconView( QWidget* wid, Config* cfg )
93 : QVBox( wid ), m_cfg( cfg ) 93 : QVBox( wid ), m_cfg( cfg )
94{ 94{
95 { 95 {
96 QCopEnvelope( "QPE/Application/opie-eye_slave", "foo()" ); 96// QCopEnvelope( "QPE/Application/opie-eye_slave", "foo()" );
97 } 97 }
98 m_path = QDir::homeDirPath(); 98 m_path = QDir::homeDirPath();
99 99
100 QHBox *hbox = new QHBox( this ); 100 QHBox *hbox = new QHBox( this );
101 QLabel* lbl = new QLabel( hbox ); 101 QLabel* lbl = new QLabel( hbox );
102 lbl->setText( tr("View as" ) ); 102 lbl->setText( tr("View as" ) );
103 103
104 m_views = new QComboBox( hbox, "View As" ); 104 m_views = new QComboBox( hbox, "View As" );
105 connect( m_views, SIGNAL(activated(int)), 105 connect( m_views, SIGNAL(activated(int)),
106 this, SLOT(slotViewChanged(int)) ); 106 this, SLOT(slotViewChanged(int)) );
107 107
108 m_view= new QIconView( this ); 108 m_view= new QIconView( this );
109 connect(m_view, SIGNAL(clicked(QIconViewItem*) ), 109 connect(m_view, SIGNAL(clicked(QIconViewItem*) ),
110 this, SLOT(slotClicked(QIconViewItem*)) ); 110 this, SLOT(slotClicked(QIconViewItem*)) );
111 111
112 m_view->setArrangement( QIconView::LeftToRight ); 112 m_view->setArrangement( QIconView::LeftToRight );
113 m_view->setItemTextPos( QIconView::Right ); 113 m_view->setItemTextPos( QIconView::Right );
114 114
115 115
116 int dw = QApplication::desktop()->width(); 116 int dw = QApplication::desktop()->width();
117 int viewerWidth = dw-style().scrollBarExtent().width(); 117 int viewerWidth = dw-style().scrollBarExtent().width();
118 m_view->setGridX( viewerWidth-2*m_view->spacing() ); 118 m_view->setGridX( viewerWidth-2*m_view->spacing() );
119 m_view->setGridY( fontMetrics().height()*2+40 ); 119 m_view->setGridY( fontMetrics().height()*2+40 );
120 loadViews(); 120 loadViews();
@@ -125,48 +125,52 @@ PIconView::~PIconView() {
125} 125}
126 126
127void PIconView::slotDirUp() { 127void PIconView::slotDirUp() {
128 QDir dir( m_path ); 128 QDir dir( m_path );
129 dir.cdUp(); 129 dir.cdUp();
130 slotChangeDir( dir.absPath() ); 130 slotChangeDir( dir.absPath() );
131 131
132} 132}
133 133
134void PIconView::slotChangeDir(const QString& path) { 134void PIconView::slotChangeDir(const QString& path) {
135 if ( !currentView() ) 135 if ( !currentView() )
136 return; 136 return;
137 137
138 PDirLister *lister = currentView()->dirLister(); 138 PDirLister *lister = currentView()->dirLister();
139 if (!lister ) 139 if (!lister )
140 return; 140 return;
141 141
142 lister->setStartPath( path ); 142 lister->setStartPath( path );
143 m_path = lister->currentPath(); 143 m_path = lister->currentPath();
144 144
145 m_view->clear(); 145 m_view->clear();
146 addFolders( lister->folders() ); 146 addFolders( lister->folders() );
147 addFiles( lister->files() ); 147 addFiles( lister->files() );
148 148
149 // Also invalidate the cache. We can't cancel the operations anyway
150 g_stringPix.clear();
151 g_stringInf.clear();
152
149 // looks ugly 153 // looks ugly
150 static_cast<QMainWindow*>(parent())->setCaption( QObject::tr("%1 - O View", "Name of the dir").arg( m_path ) ); 154 static_cast<QMainWindow*>(parent())->setCaption( QObject::tr("%1 - O View", "Name of the dir").arg( m_path ) );
151} 155}
152 156
153QString PIconView::currentFileName(bool &isDir)const { 157QString PIconView::currentFileName(bool &isDir)const {
154 isDir = false; 158 isDir = false;
155 QIconViewItem* _it = m_view->currentItem(); 159 QIconViewItem* _it = m_view->currentItem();
156 if ( !_it ) 160 if ( !_it )
157 return QString::null; 161 return QString::null;
158 162
159 IconViewItem* it = static_cast<IconViewItem*>( _it ); 163 IconViewItem* it = static_cast<IconViewItem*>( _it );
160 isDir = it->isDir(); 164 isDir = it->isDir();
161 return it->path(); 165 return it->path();
162} 166}
163 167
164void PIconView::slotTrash() { 168void PIconView::slotTrash() {
165 bool isDir; 169 bool isDir;
166 QString pa = currentFileName( isDir ); 170 QString pa = currentFileName( isDir );
167 if ( isDir && pa.isEmpty() ) 171 if ( isDir && pa.isEmpty() )
168 return; 172 return;
169 173
170 if (!QPEMessageBox::confirmDelete( this, 174 if (!QPEMessageBox::confirmDelete( this,
171 tr("Delete Image" ), 175 tr("Delete Image" ),
172 tr("the Image %1" ).arg(pa))) 176 tr("the Image %1" ).arg(pa)))
diff --git a/noncore/graphics/opie-eye/lib/slavemaster.cpp b/noncore/graphics/opie-eye/lib/slavemaster.cpp
index 18dc883..4e28535 100644
--- a/noncore/graphics/opie-eye/lib/slavemaster.cpp
+++ b/noncore/graphics/opie-eye/lib/slavemaster.cpp
@@ -1,46 +1,51 @@
1#include "slavemaster.h" 1#include "slavemaster.h"
2 2
3#include <qpe/qpeapplication.h> 3#include <qpe/qpeapplication.h>
4#include <qpe/qcopenvelope_qws.h> 4#include <qpe/qcopenvelope_qws.h>
5 5
6#include <qcopchannel_qws.h> 6#include <qcopchannel_qws.h>
7#include <qtimer.h> 7#include <qtimer.h>
8 8
9QDataStream & operator << (QDataStream & str, bool b) 9QDataStream & operator << (QDataStream & str, bool b)
10{ 10{
11 str << Q_INT8(b); 11 str << Q_INT8(b);
12 return str; 12 return str;
13} 13}
14QDataStream & operator >> (QDataStream & str, bool & b) 14QDataStream & operator >> (QDataStream & str, bool & b)
15{ 15{
16 Q_INT8 l; 16 Q_INT8 l;
17 str >> l; 17 str >> l;
18 b = bool(l); 18 b = bool(l);
19 return str; 19 return str;
20} 20}
21
22/*
23 * ! We don't put a Pixmap in!!!!
24 */
21QDataStream &operator<<( QDataStream& s, const PixmapInfo& inf) { 25QDataStream &operator<<( QDataStream& s, const PixmapInfo& inf) {
22 return s << inf.file << inf.pixmap << inf.width << inf.height; 26 qWarning( "Image request is %s %d %d", inf.file.latin1(), inf.width, inf.height );
27 return s << inf.file << inf.width << inf.height;
23} 28}
24QDataStream &operator>>( QDataStream& s, PixmapInfo& inf ) { 29QDataStream &operator>>( QDataStream& s, PixmapInfo& inf ) {
25 s >> inf.file >> inf.pixmap >> inf.width >> inf.height; 30 s >> inf.file >> inf.pixmap >> inf.width >> inf.height;
26 return s; 31 return s;
27} 32}
28QDataStream &operator<<( QDataStream& s, const ImageInfo& i) { 33QDataStream &operator<<( QDataStream& s, const ImageInfo& i) {
29 return s << i.kind << i.file << i.info; 34 return s << i.kind << i.file << i.info;
30} 35}
31QDataStream &operator>>( QDataStream& s, ImageInfo& i ) { 36QDataStream &operator>>( QDataStream& s, ImageInfo& i ) {
32 s >> i.kind >> i.file >> i.info; 37 s >> i.kind >> i.file >> i.info;
33 return s; 38 return s;
34} 39}
35 40
36 41
37 42
38SlaveMaster* SlaveMaster::m_master = 0; 43SlaveMaster* SlaveMaster::m_master = 0;
39 44
40SlaveMaster::SlaveMaster() 45SlaveMaster::SlaveMaster()
41 : m_started( false ) 46 : m_started( false )
42{ 47{
43 QCopChannel *chan= new QCopChannel( "QPE/opie-eye",this ); 48 QCopChannel *chan= new QCopChannel( "QPE/opie-eye",this );
44 connect(chan, SIGNAL(received(const QCString&,const QByteArray&)), 49 connect(chan, SIGNAL(received(const QCString&,const QByteArray&)),
45 this, SLOT(recieve(const QCString&,const QByteArray&)) ); 50 this, SLOT(recieve(const QCString&,const QByteArray&)) );
46} 51}
diff --git a/noncore/graphics/opie-eye/slave/slavereciever.cpp b/noncore/graphics/opie-eye/slave/slavereciever.cpp
index 951f3df..c8e33d4 100644
--- a/noncore/graphics/opie-eye/slave/slavereciever.cpp
+++ b/noncore/graphics/opie-eye/slave/slavereciever.cpp
@@ -10,50 +10,55 @@
10 10
11#include <qtimer.h> 11#include <qtimer.h>
12 12
13static SlaveObjects* _slaveObj = 0; 13static SlaveObjects* _slaveObj = 0;
14 14
15QDataStream & operator << (QDataStream & str, bool b) 15QDataStream & operator << (QDataStream & str, bool b)
16{ 16{
17 str << Q_INT8(b); 17 str << Q_INT8(b);
18 return str; 18 return str;
19} 19}
20 20
21QDataStream & operator >> (QDataStream & str, bool & b) 21QDataStream & operator >> (QDataStream & str, bool & b)
22{ 22{
23 Q_INT8 l; 23 Q_INT8 l;
24 str >> l; 24 str >> l;
25 b = bool(l); 25 b = bool(l);
26 return str; 26 return str;
27} 27}
28 28
29 29
30 30
31QDataStream &operator<<( QDataStream& s, const PixmapInfo& inf) { 31QDataStream &operator<<( QDataStream& s, const PixmapInfo& inf) {
32 return s << inf.file << inf.pixmap << inf.width << inf.height; 32 return s << inf.file << inf.pixmap << inf.width << inf.height;
33} 33}
34
35/*
36 * GUI sends no QPIxmap!!!
37 */
34QDataStream &operator>>( QDataStream& s, PixmapInfo& inf ) { 38QDataStream &operator>>( QDataStream& s, PixmapInfo& inf ) {
35 s >> inf.file >> inf.pixmap >> inf.width >> inf.height; 39 s >> inf.file >> inf.width >> inf.height;
40 qWarning( "Recieved %s %d %d", inf.file.latin1(), inf.width, inf.height );
36 return s; 41 return s;
37} 42}
38QDataStream &operator<<( QDataStream& s, const ImageInfo& i) { 43QDataStream &operator<<( QDataStream& s, const ImageInfo& i) {
39 return s << i.kind << i.file << i.info; 44 return s << i.kind << i.file << i.info;
40} 45}
41QDataStream &operator>>( QDataStream& s, ImageInfo& i ) { 46QDataStream &operator>>( QDataStream& s, ImageInfo& i ) {
42 s >> i.kind >> i.file >> i.info; 47 s >> i.kind >> i.file >> i.info;
43 return s; 48 return s;
44} 49}
45 50
46 51
47 52
48SlaveObjects* slaveObjects() { 53SlaveObjects* slaveObjects() {
49 if ( !_slaveObj ) 54 if ( !_slaveObj )
50 _slaveObj = new SlaveObjects; 55 _slaveObj = new SlaveObjects;
51 return _slaveObj; 56 return _slaveObj;
52} 57}
53 58
54SlaveReciever::SlaveReciever( QObject* par) 59SlaveReciever::SlaveReciever( QObject* par)
55 : QObject( par ) 60 : QObject( par )
56{ 61{
57 m_inf = new QTimer(this); 62 m_inf = new QTimer(this);
58 connect(m_inf,SIGNAL(timeout()), 63 connect(m_inf,SIGNAL(timeout()),
59 this, SLOT(slotImageInfo())); 64 this, SLOT(slotImageInfo()));