summaryrefslogtreecommitdiff
path: root/core/launcher/launcherview.cpp
Side-by-side diff
Diffstat (limited to 'core/launcher/launcherview.cpp') (more/less context) (show whitespace changes)
-rw-r--r--core/launcher/launcherview.cpp98
1 files changed, 95 insertions, 3 deletions
diff --git a/core/launcher/launcherview.cpp b/core/launcher/launcherview.cpp
index cd9c14b..1317bda 100644
--- a/core/launcher/launcherview.cpp
+++ b/core/launcher/launcherview.cpp
@@ -31,2 +31,4 @@ using namespace Opie::Core;
+#include <qpe/qcopenvelope_qws.h>
+
/* QT */
@@ -81,2 +83,3 @@ public:
void resetIcon();
+ bool isEyeImage()const{return m_EyeImage;}
@@ -86,2 +89,3 @@ public:
void setBusyIndicatorType ( BusyIndicatorType t ) { busyType = t; }
+ void setEyePixmap(const QPixmap&aIcon);
protected:
@@ -90,2 +94,3 @@ protected:
AppLnk* app;
+
private:
@@ -93,2 +98,6 @@ private:
BusyIndicatorType busyType;
+ int psize;
+ QPixmap m_iPixmap;
+ bool m_EyeImage;
+ LauncherThumbReceiver*m_EyeCallback;
};
@@ -379,4 +388,13 @@ LauncherItem::LauncherItem( QIconView *parent, AppLnk *applnk, bool bigIcon )
iteration(0),
- app(applnk) // Takes ownership
+ app(applnk), // Takes ownership
+ psize( (bigIcon ? applnk->bigPixmap().width() :applnk->pixmap().width() ) ),
+ m_iPixmap(),
+ m_EyeImage(false)
{
+ m_EyeCallback = new LauncherThumbReceiver(this);
+ if (applnk->type().lower().startsWith("image/") && applnk->exec().contains("opie-eye",false)) {
+ m_EyeImage = true;
+ m_iPixmap = (bigIcon ? applnk->bigPixmap():applnk->pixmap());
+ m_EyeCallback->requestThumb(applnk->file(),m_iPixmap.width(),m_iPixmap.height());
+ }
}
@@ -389,2 +407,3 @@ LauncherItem::~LauncherItem()
delete app;
+ if (m_EyeCallback) delete m_EyeCallback;
}
@@ -462,3 +481,3 @@ void LauncherItem::animateIcon()
if ( iteration == 0 ) {
- QPixmap src = isBigIcon ? app->bigPixmap() : app->pixmap();
+ QPixmap src = (isEyeImage()?m_iPixmap:(isBigIcon ? app->bigPixmap() : app->pixmap()));
QImage img = src.convertToImage();
@@ -498,3 +517,10 @@ void LauncherItem::resetIcon()
iteration = 0;
- setPixmap( isBigIcon ? app->bigPixmap() : app->pixmap() );
+ setPixmap((isEyeImage()?m_iPixmap:(isBigIcon ? app->bigPixmap() : app->pixmap())));
+}
+
+void LauncherItem::setEyePixmap(const QPixmap&aIcon)
+{
+ if (!isEyeImage()) return;
+ m_iPixmap = aIcon;
+ setPixmap(aIcon);
}
@@ -1061 +1087,67 @@ void LauncherView::flushBgCache()
+/* special image handling - based on opie eye */
+QDataStream &operator>>( QDataStream& s, PixmapInfo& inf ) {
+ s >> inf.file >> inf.pixmap >> inf.width >> inf.height;
+ return s;
+}
+
+QDataStream &operator<<( QDataStream& s, const PixmapInfo& inf) {
+ return s << inf.file << inf.width << inf.height;
+}
+
+LauncherThumbReceiver::LauncherThumbReceiver(LauncherItem*parent)
+ :QObject()
+{
+ m_parent = parent;
+ QCopChannel * chan = new QCopChannel( "QPE/opie-eye",this );
+ connect(chan, SIGNAL(received(const QCString&,const QByteArray&)),
+ this, SLOT(recieve(const QCString&,const QByteArray&)) );
+
+ {
+ QCopEnvelope( "QPE/Application/opie-eye_slave", "refUp()" );
+ }
+ m_waiting = false;
+}
+
+LauncherThumbReceiver::~LauncherThumbReceiver()
+{
+ {
+ QCopEnvelope( "QPE/Application/opie-eye_slave", "refDown()" );
+ }
+}
+
+void LauncherThumbReceiver::recieve( const QCString&str, const QByteArray&at )
+{
+ PixmapInfos pixinfos;
+ QDataStream stream( at, IO_ReadOnly );
+ if (!m_parent || !m_waiting) return;
+ /* we are just interested in thumbmails */
+ if ( str == "pixmapsHandled(PixmapList)" )
+ stream >> pixinfos;
+
+ for ( PixmapInfos::Iterator it = pixinfos.begin(); it != pixinfos.end(); ++it ) {
+ if ((*it).file==m_reqFile) {
+ m_parent->setEyePixmap((*it).pixmap);
+ m_waiting = false;
+ break;
+ }
+ }
+}
+
+void LauncherThumbReceiver::requestThumb(const QString&file,int width,int height)
+{
+ m_reqFile = file;
+ rItem.file = file;
+ rItem.width = width;
+ rItem.height = height;
+ QTimer::singleShot(1, this, SLOT(sendRequest()));
+}
+
+void LauncherThumbReceiver::sendRequest()
+{
+ PixmapInfos m_inThumbNail;
+ m_inThumbNail.append(rItem);
+ QCopEnvelope env("QPE/opie-eye_slave", "pixmapInfos(PixmapInfos)" );
+ env << m_inThumbNail;
+ m_waiting = true;
+}