summaryrefslogtreecommitdiff
authoralwin <alwin>2004-11-08 15:22:07 (UTC)
committer alwin <alwin>2004-11-08 15:22:07 (UTC)
commitcce0a7a0d315993645870e88591b4afd647480a7 (patch) (unidiff)
treebeb8886020fe12a0f77bbb22bf0da76d4a73a3d5
parent40bbaace5492ce6420a2d4a353b24df64c142287 (diff)
downloadopie-cce0a7a0d315993645870e88591b4afd647480a7.zip
opie-cce0a7a0d315993645870e88591b4afd647480a7.tar.gz
opie-cce0a7a0d315993645870e88591b4afd647480a7.tar.bz2
image preview for documenttab again, I think, for first shot it is
working fine now.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/launcherview.cpp91
-rw-r--r--core/launcher/launcherview.h5
2 files changed, 64 insertions, 32 deletions
diff --git a/core/launcher/launcherview.cpp b/core/launcher/launcherview.cpp
index 673e53c..506c11e 100644
--- a/core/launcher/launcherview.cpp
+++ b/core/launcher/launcherview.cpp
@@ -68,111 +68,113 @@ static void cleanup_cache()
68 delete bgCache; 68 delete bgCache;
69 bgCache = 0; 69 bgCache = 0;
70} 70}
71 71
72 72
73class LauncherItem : public QIconViewItem 73class LauncherItem : public QIconViewItem
74{ 74{
75public: 75public:
76 enum iconstate_t {
77 BASE_ICON,
78 WAITING_ICON,
79 EYE_ICON
80 };
81
76 LauncherItem( QIconView *parent, AppLnk* applnk, bool bigIcon=TRUE ); 82 LauncherItem( QIconView *parent, AppLnk* applnk, bool bigIcon=TRUE );
77 ~LauncherItem(); 83 ~LauncherItem();
78 84
79 AppLnk *appLnk() const { return app; } 85 AppLnk *appLnk() const { return app; }
80 AppLnk *takeAppLnk() { AppLnk* r=app; app=0; return r; } 86 AppLnk *takeAppLnk() { AppLnk* r=app; app=0; return r; }
81 87
82 void animateIcon(); 88 void animateIcon();
83 void resetIcon(); 89 void resetIcon();
84 bool isEyeImage()const{return m_EyeImage;} 90 bool isEyeImage()const{return m_EyeImage;}
85 91
86 virtual int compare ( QIconViewItem * i ) const; 92 virtual int compare ( QIconViewItem * i ) const;
87 void paintItem( QPainter *p, const QColorGroup &cg ); 93 void paintItem( QPainter *p, const QColorGroup &cg );
88 94
89 void setBusyIndicatorType ( BusyIndicatorType t ) { busyType = t; } 95 void setBusyIndicatorType ( BusyIndicatorType t ) { busyType = t; }
90 void setEyePixmap(const QPixmap&aIcon); 96 void setEyePixmap(const QPixmap&aIcon);
97 virtual QPixmap*pixmap()const;
98
91protected: 99protected:
92 bool isBigIcon; 100 bool isBigIcon;
93 int iteration; 101 int iteration;
94 AppLnk* app; 102 AppLnk* app;
95 103
96private: 104private:
97 void paintAnimatedIcon( QPainter *p ); 105 void paintAnimatedIcon( QPainter *p );
98 BusyIndicatorType busyType; 106 BusyIndicatorType busyType;
99 int psize; 107 int psize;
100 QPixmap m_iPixmap; 108 QPixmap m_iPixmap;
101 bool m_EyeImage; 109 bool m_EyeImage;
110 iconstate_t m_EyeImageSet;
102}; 111};
103 112
104
105bool LauncherView::bsy=FALSE;
106
107void LauncherView::setBusy(bool on)
108{
109 icons->setBusy(on);
110}
111
112void LauncherView::setBusyIndicatorType( const QString& type ) {
113 if ( type. lower ( ) == "animated" )
114 icons->setBusyIndicatorType( BIT_Animated ) ;
115 else
116 icons->setBusyIndicatorType( BIT_Normal ) ;
117}
118
119LauncherItem::LauncherItem( QIconView *parent, AppLnk *applnk, bool bigIcon ) 113LauncherItem::LauncherItem( QIconView *parent, AppLnk *applnk, bool bigIcon )
120 : QIconViewItem( parent, applnk->name(), 114 : QIconViewItem( parent, applnk->name(),
121 bigIcon ? applnk->bigPixmap() :applnk->pixmap() ), 115 bigIcon ? applnk->bigPixmap() :applnk->pixmap() ),
122 isBigIcon( bigIcon ), 116 isBigIcon( bigIcon ),
123 iteration(0), 117 iteration(0),
124 app(applnk), // Takes ownership 118 app(applnk), // Takes ownership
125 psize( (bigIcon ? applnk->bigPixmap().width() :applnk->pixmap().width() ) ), 119 psize( (bigIcon ? applnk->bigPixmap().width() :applnk->pixmap().width() ) ),
126 m_iPixmap(), 120 m_iPixmap(),
127 m_EyeImage(false) 121 m_EyeImage(false),
122 m_EyeImageSet(BASE_ICON)
128{ 123{
129 if (applnk->type().lower().startsWith("image/") && applnk->exec().contains("opie-eye",false)) { 124 if (applnk->type().lower().startsWith("image/") && applnk->exec().contains("opie-eye",false)) {
130 m_EyeImage = true; 125 m_EyeImage = true;
131 m_iPixmap = (bigIcon ? applnk->bigPixmap():applnk->pixmap()); 126 m_iPixmap = (bigIcon ? applnk->bigPixmap():applnk->pixmap());
132 } 127 }
133} 128}
134 129
135LauncherItem::~LauncherItem() 130LauncherItem::~LauncherItem()
136{ 131{
137 LauncherIconView* liv = (LauncherIconView*)iconView(); 132 LauncherIconView* liv = (LauncherIconView*)iconView();
138 if ( liv->busyItem() == this ) 133 if ( liv->busyItem() == this )
139 liv->setBusy(FALSE); 134 liv->setBusy(FALSE);
140 delete app; 135 delete app;
141} 136}
142 137
138QPixmap*LauncherItem::pixmap()const
139{
140 if (m_EyeImage && m_EyeImageSet == BASE_ICON) {
141 LauncherIconView* liv = (LauncherIconView*)iconView();
142 liv->requestEyePix(this);
143 }
144 return QIconViewItem::pixmap();
145}
146
143int LauncherItem::compare ( QIconViewItem * i ) const 147int LauncherItem::compare ( QIconViewItem * i ) const
144{ 148{
145 LauncherIconView* view = (LauncherIconView*)iconView(); 149 LauncherIconView* view = (LauncherIconView*)iconView();
146 return view->compare(app,((LauncherItem *)i)->appLnk()); 150 return view->compare(app,((LauncherItem *)i)->appLnk());
147} 151}
148 152
149void LauncherItem::paintItem( QPainter *p, const QColorGroup &cg ) 153void LauncherItem::paintItem( QPainter *p, const QColorGroup &cg )
150{ 154{
151 LauncherIconView* liv = (LauncherIconView*)iconView(); 155 LauncherIconView* liv = (LauncherIconView*)iconView();
152 QBrush oldBrush( liv->itemTextBackground() ); 156 QBrush oldBrush( liv->itemTextBackground() );
153 QColorGroup mycg( cg ); 157 QColorGroup mycg( cg );
154 if ( liv->currentItem() == this ) { 158 if ( liv->currentItem() == this ) {
155 liv->setItemTextBackground( cg.brush( QColorGroup::Highlight ) ); 159 liv->setItemTextBackground( cg.brush( QColorGroup::Highlight ) );
156 mycg.setColor( QColorGroup::Text, cg.color( QColorGroup::HighlightedText ) ); 160 mycg.setColor( QColorGroup::Text, cg.color( QColorGroup::HighlightedText ) );
157 } 161 }
158 162
159 QIconViewItem::paintItem(p,mycg); 163 QIconViewItem::paintItem(p,mycg);
160 164
161 // Paint animation overlay 165 // Paint animation overlay
162 if ( liv->busyItem() == this ) 166 if ( liv->busyItem() == this )
163 paintAnimatedIcon(p); 167 paintAnimatedIcon(p);
164 168
165 if ( liv->currentItem() == this ) 169 if ( liv->currentItem() == this )
166 liv->setItemTextBackground( oldBrush ); 170 liv->setItemTextBackground( oldBrush );
167} 171}
168 172
169
170
171void LauncherItem::paintAnimatedIcon( QPainter *p ) 173void LauncherItem::paintAnimatedIcon( QPainter *p )
172{ 174{
173 LauncherIconView* liv = (LauncherIconView*)iconView(); 175 LauncherIconView* liv = (LauncherIconView*)iconView();
174 int pic = iteration % 16; 176 int pic = iteration % 16;
175 int w = pixmap()->width(), h = pixmap()->height(); 177 int w = pixmap()->width(), h = pixmap()->height();
176 QPixmap dblBuf( w, h + 4 ); 178 QPixmap dblBuf( w, h + 4 );
177 QPainter p2( &dblBuf ); 179 QPainter p2( &dblBuf );
178 int x1, y1; 180 int x1, y1;
@@ -250,16 +252,17 @@ void LauncherItem::resetIcon()
250 setPixmap((isEyeImage()?m_iPixmap:(isBigIcon ? app->bigPixmap() : app->pixmap()))); 252 setPixmap((isEyeImage()?m_iPixmap:(isBigIcon ? app->bigPixmap() : app->pixmap())));
251} 253}
252 254
253void LauncherItem::setEyePixmap(const QPixmap&aIcon) 255void LauncherItem::setEyePixmap(const QPixmap&aIcon)
254{ 256{
255 if (!isEyeImage()) return; 257 if (!isEyeImage()) return;
256 m_iPixmap = aIcon; 258 m_iPixmap = aIcon;
257 setPixmap(aIcon); 259 setPixmap(aIcon);
260 m_EyeImageSet = EYE_ICON;
258} 261}
259 262
260//=========================================================================== 263//===========================================================================
261// Implemantation of LauncherIconview start 264// Implemantation of LauncherIconview start
262//=========================================================================== 265//===========================================================================
263LauncherIconView::LauncherIconView( QWidget* parent, const char* name ) 266LauncherIconView::LauncherIconView( QWidget* parent, const char* name )
264 : QIconView(parent,name),tf(""),cf(0),bsy(0),busyTimer(0),bigIcns(TRUE),bgColor(white) 267 : QIconView(parent,name),tf(""),cf(0),bsy(0),busyTimer(0),bigIcns(TRUE),bgColor(white)
265{ 268{
@@ -416,41 +419,50 @@ LauncherItem*LauncherIconView::findDocItem(const QString&fname)
416 if (item->appLnk()->file()==fname) { 419 if (item->appLnk()->file()==fname) {
417 break; 420 break;
418 } 421 }
419 item = (LauncherItem*)item->nextItem(); 422 item = (LauncherItem*)item->nextItem();
420 } 423 }
421 return item; 424 return item;
422} 425}
423 426
424void LauncherIconView::setEyePixmap(const QPixmap&aPixmap,const QString&aFile) 427void LauncherIconView::setEyePixmap(const QPixmap&aPixmap,const QString&aFile,int width)
425{ 428{
429 int s = ( bigIcns ) ? AppLnk::bigIconSize() : AppLnk::smallIconSize();
430 if (s!=width) return;
426 LauncherItem*item = findDocItem(aFile); 431 LauncherItem*item = findDocItem(aFile);
427 if (!item||!item->isEyeImage()) return; 432 if (!item||!item->isEyeImage()) return;
428
429 item->setEyePixmap(aPixmap); 433 item->setEyePixmap(aPixmap);
430} 434}
431 435
432void LauncherIconView::checkCallback() 436void LauncherIconView::checkCallback()
433{ 437{
434 if (m_EyeCallBack) { 438 if (m_EyeCallBack) {
435 return; 439 return;
436 } 440 }
437 m_EyeCallBack = new LauncherThumbReceiver(); 441 m_EyeCallBack = new LauncherThumbReceiver();
438 connect(m_EyeCallBack,SIGNAL(sig_Thumbnail(const QPixmap&,const QString&)), 442 connect(m_EyeCallBack,SIGNAL(sig_Thumbnail(const QPixmap&,const QString&,int)),
439 this,SLOT(setEyePixmap(const QPixmap&,const QString&))); 443 this,SLOT(setEyePixmap(const QPixmap&,const QString&,int)));
440} 444}
441 445
442void LauncherIconView::addCheckItem(AppLnk* app) 446void LauncherIconView::addCheckItem(AppLnk* app)
443{ 447{
444 LauncherItem*item = new LauncherItem( this, app, bigIcns ); 448 LauncherItem*item = new LauncherItem( this, app, bigIcns );
445 if (item->isEyeImage()) { 449 if (item->isEyeImage()) {
446 checkCallback(); 450 checkCallback();
451 }
452}
453
454void LauncherIconView::requestEyePix(const LauncherItem*item)
455{
456 if (!item) return;
457 if (item->isEyeImage()) {
458 checkCallback();
447 int s = ( bigIcns ) ? AppLnk::bigIconSize() : AppLnk::smallIconSize(); 459 int s = ( bigIcns ) ? AppLnk::bigIconSize() : AppLnk::smallIconSize();
448 m_EyeCallBack->requestThumb(app->file(),s,s); 460 m_EyeCallBack->requestThumb(item->appLnk()->file(),s,s);
449 } 461 }
450} 462}
451 463
452void LauncherIconView::addItem(AppLnk* app, bool resort) 464void LauncherIconView::addItem(AppLnk* app, bool resort)
453{ 465{
454 addCatsAndMimes(app); 466 addCatsAndMimes(app);
455 if ( (tf.isEmpty() || tf.match(app->type()) >= 0) 467 if ( (tf.isEmpty() || tf.match(app->type()) >= 0)
456 && (cf == 0 || app->categories().contains(cf) 468 && (cf == 0 || app->categories().contains(cf)
@@ -628,16 +640,31 @@ LauncherView::LauncherView( QWidget* parent, const char* name, WFlags fl )
628} 640}
629 641
630LauncherView::~LauncherView() 642LauncherView::~LauncherView()
631{ 643{
632 if ( bgCache && bgCache->contains( bgName ) ) 644 if ( bgCache && bgCache->contains( bgName ) )
633 (*bgCache)[bgName]->ref--; 645 (*bgCache)[bgName]->ref--;
634} 646}
635 647
648
649bool LauncherView::bsy=FALSE;
650
651void LauncherView::setBusy(bool on)
652{
653 icons->setBusy(on);
654}
655
656void LauncherView::setBusyIndicatorType( const QString& type ) {
657 if ( type. lower ( ) == "animated" )
658 icons->setBusyIndicatorType( BIT_Animated ) ;
659 else
660 icons->setBusyIndicatorType( BIT_Normal ) ;
661}
662
636void LauncherView::hideIcons() 663void LauncherView::hideIcons()
637{ 664{
638 icons->hide(); 665 icons->hide();
639} 666}
640 667
641void LauncherView::setToolsEnabled(bool y) 668void LauncherView::setToolsEnabled(bool y)
642{ 669{
643 if ( !y != !tools ) { 670 if ( !y != !tools ) {
@@ -1048,16 +1075,20 @@ void LauncherView::flushBgCache()
1048 ++it; 1075 ++it;
1049 if ( (*curr)->ref == 0 ) { 1076 if ( (*curr)->ref == 0 ) {
1050 delete (*curr); 1077 delete (*curr);
1051 bgCache->remove( curr ); 1078 bgCache->remove( curr );
1052 } 1079 }
1053 } 1080 }
1054} 1081}
1055 1082
1083/*
1084 * Launcherthumbnail handling for image files
1085 */
1086
1056/* special image handling - based on opie eye */ 1087/* special image handling - based on opie eye */
1057QDataStream &operator>>( QDataStream& s, PixmapInfo& inf ) { 1088QDataStream &operator>>( QDataStream& s, PixmapInfo& inf ) {
1058 s >> inf.file >> inf.pixmap >> inf.width >> inf.height; 1089 s >> inf.file >> inf.pixmap >> inf.width >> inf.height;
1059 return s; 1090 return s;
1060} 1091}
1061 1092
1062QDataStream &operator<<( QDataStream& s, const PixmapInfo& inf) { 1093QDataStream &operator<<( QDataStream& s, const PixmapInfo& inf) {
1063 return s << inf.file << inf.width << inf.height; 1094 return s << inf.file << inf.width << inf.height;
@@ -1088,30 +1119,30 @@ void LauncherThumbReceiver::recieve( const QCString&str, const QByteArray&at )
1088 QDataStream stream( at, IO_ReadOnly ); 1119 QDataStream stream( at, IO_ReadOnly );
1089 1120
1090 /* we are just interested in thumbmails */ 1121 /* we are just interested in thumbmails */
1091 if ( str == "pixmapsHandled(PixmapList)" ) 1122 if ( str == "pixmapsHandled(PixmapList)" )
1092 stream >> pixinfos; 1123 stream >> pixinfos;
1093 1124
1094 for ( PixmapInfos::Iterator it = pixinfos.begin(); it != pixinfos.end(); ++it ) { 1125 for ( PixmapInfos::Iterator it = pixinfos.begin(); it != pixinfos.end(); ++it ) {
1095 odebug << "Pixinfos: " << (*it).file << " - " << (*it).width << oendl; 1126 odebug << "Pixinfos: " << (*it).file << " - " << (*it).width << oendl;
1096 emit sig_Thumbnail((*it).pixmap,(*it).file); 1127 emit sig_Thumbnail((*it).pixmap,(*it).file,(*it).width);
1097 } 1128 }
1098} 1129}
1099 1130
1100void LauncherThumbReceiver::requestThumb(const QString&file,int width,int height) 1131void LauncherThumbReceiver::requestThumb(const QString&file,int width,int height)
1101{ 1132{
1102 PixmapInfo rItem; 1133 PixmapInfo rItem;
1103 rItem.file = file; 1134 rItem.file = file;
1104 rItem.width = width; 1135 rItem.width = width;
1105 rItem.height = height; 1136 rItem.height = height;
1106 m_inThumbNail.append(rItem); 1137 m_inThumbNail.append(rItem);
1107 QTimer::singleShot(2, this, SLOT(sendRequest())); 1138 QTimer::singleShot(0, this, SLOT(sendRequest()));
1108} 1139}
1109 1140
1110void LauncherThumbReceiver::sendRequest() 1141void LauncherThumbReceiver::sendRequest()
1111{ 1142{
1112 if (m_inThumbNail.count()>0) { 1143 if (m_inThumbNail.count()>0) {
1113 QCopEnvelope env("QPE/opie-eye_slave", "pixmapInfos(PixmapInfos)" ); 1144 QCopEnvelope env("QPE/opie-eye_slave", "pixmapInfos(PixmapInfos)" );
1114 env << m_inThumbNail; 1145 env << m_inThumbNail;
1146 m_inThumbNail.clear();
1115 } 1147 }
1116 m_inThumbNail.clear();
1117} 1148}
diff --git a/core/launcher/launcherview.h b/core/launcher/launcherview.h
index 3cca7f7..0be9a1f 100644
--- a/core/launcher/launcherview.h
+++ b/core/launcher/launcherview.h
@@ -141,17 +141,17 @@ public:
141 void requestThumb(const QString&file,int width,int height); 141 void requestThumb(const QString&file,int width,int height);
142 142
143public slots: 143public slots:
144 void recieve( const QCString&, const QByteArray& ); 144 void recieve( const QCString&, const QByteArray& );
145protected slots: 145protected slots:
146 virtual void sendRequest(); 146 virtual void sendRequest();
147 147
148signals: 148signals:
149 void sig_Thumbnail(const QPixmap&,const QString&); 149 void sig_Thumbnail(const QPixmap&,const QString&,int);
150 150
151protected: 151protected:
152 PixmapInfos m_inThumbNail; 152 PixmapInfos m_inThumbNail;
153}; 153};
154 154
155class LauncherIconView : public QIconView { 155class LauncherIconView : public QIconView {
156 Q_OBJECT 156 Q_OBJECT
157public: 157public:
@@ -211,29 +211,30 @@ public:
211 211
212 void setTypeFilter(const QString& typefilter, bool resort); 212 void setTypeFilter(const QString& typefilter, bool resort);
213 void setCategoryFilter( int catfilter, bool resort ); 213 void setCategoryFilter( int catfilter, bool resort );
214 214
215 enum SortMethod { Name, Date, Type }; 215 enum SortMethod { Name, Date, Type };
216 216
217 void setSortMethod( SortMethod m ); 217 void setSortMethod( SortMethod m );
218 int compare(const AppLnk* a, const AppLnk* b); 218 int compare(const AppLnk* a, const AppLnk* b);
219 void requestEyePix(const LauncherItem*which);
219 220
220protected: 221protected:
221 void timerEvent( QTimerEvent *te ); 222 void timerEvent( QTimerEvent *te );
222 void styleChange( QStyle &old ); 223 void styleChange( QStyle &old );
223 void calculateGrid( ItemTextPos pos ); 224 void calculateGrid( ItemTextPos pos );
224 void focusInEvent( QFocusEvent * ) {} 225 void focusInEvent( QFocusEvent * ) {}
225 void focusOutEvent( QFocusEvent * ) {} 226 void focusOutEvent( QFocusEvent * ) {}
226 LauncherItem*findDocItem(const QString&); 227 LauncherItem*findDocItem(const QString&);
227 void addCheckItem(AppLnk* app); 228 void addCheckItem(AppLnk* app);
228 void checkCallback(); 229 void checkCallback();
229 230
230protected slots: 231protected slots:
231 void setEyePixmap(const QPixmap&,const QString&); 232 void setEyePixmap(const QPixmap&,const QString&,int width);
232 233
233private: 234private:
234 QList<AppLnk> hidden; 235 QList<AppLnk> hidden;
235 QDict<void> mimes; 236 QDict<void> mimes;
236 QDict<void> cats; 237 QDict<void> cats;
237 SortMethod sortmeth; 238 SortMethod sortmeth;
238 QRegExp tf; 239 QRegExp tf;
239 int cf; 240 int cf;