summaryrefslogtreecommitdiff
authoralwin <alwin>2004-04-04 23:02:29 (UTC)
committer alwin <alwin>2004-04-04 23:02:29 (UTC)
commit318c10ce368a6bf99f3412a2ff1ef0a9177c965a (patch) (unidiff)
treea38485b18eb9a2cd4a8bb5bccde0f91df3c0521e
parent9242abc186f0acc3df7020aaa219c435c2e00672 (diff)
downloadopie-318c10ce368a6bf99f3412a2ff1ef0a9177c965a.zip
opie-318c10ce368a6bf99f3412a2ff1ef0a9177c965a.tar.gz
opie-318c10ce368a6bf99f3412a2ff1ef0a9177c965a.tar.bz2
ok, the first - realy first - working shot of a special
ImageScrollView. But the most important things are working now and can be used. Todo: - check on a pda(!) doublebuffering (bitBlt) - may be it will paint faster - implemented mouseEvents seems not working good, its just a first try.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/iconview.cpp8
-rw-r--r--noncore/graphics/opie-eye/gui/imagescrollview.cpp97
-rw-r--r--noncore/graphics/opie-eye/gui/imagescrollview.h43
3 files changed, 147 insertions, 1 deletions
diff --git a/noncore/graphics/opie-eye/gui/iconview.cpp b/noncore/graphics/opie-eye/gui/iconview.cpp
index ac4b899..de2cdf0 100644
--- a/noncore/graphics/opie-eye/gui/iconview.cpp
+++ b/noncore/graphics/opie-eye/gui/iconview.cpp
@@ -6,8 +6,9 @@
6#include "iconview.h" 6#include "iconview.h"
7 7
8#include <lib/imagecache.h> 8#include <lib/imagecache.h>
9#include <gui/imageinfoui.h> 9#include <gui/imageinfoui.h>
10#include <gui/imagescrollview.h>
10 11
11#include <iface/dirview.h> 12#include <iface/dirview.h>
12#include <iface/dirlister.h> 13#include <iface/dirlister.h>
13 14
@@ -370,9 +371,14 @@ void PIconView::slotEnd() {
370 m_updatet = false; 371 m_updatet = false;
371} 372}
372 373
373void PIconView::slotShowImage() { 374void PIconView::slotShowImage() {
374 375 qDebug("image show");
376 bool isDir = false;
377 QString name = currentFileName(isDir);
378 if (isDir) return;
379 ImageDlg dlg(name);
380 QPEApplication::execDialog(&dlg);
375} 381}
376void PIconView::slotShowImage( const QString& ) { 382void PIconView::slotShowImage( const QString& ) {
377 383
378} 384}
diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.cpp b/noncore/graphics/opie-eye/gui/imagescrollview.cpp
new file mode 100644
index 0000000..f36b717
--- a/dev/null
+++ b/noncore/graphics/opie-eye/gui/imagescrollview.cpp
@@ -0,0 +1,97 @@
1#include "imagescrollview.h"
2
3#include <qimage.h>
4#include <qlayout.h>
5
6ImageScrollView::ImageScrollView (const QImage&img, QWidget * parent, const char * name, WFlags f)
7 :QScrollView(parent,name,f|Qt::WRepaintNoErase),_image_data(img)
8{
9 init();
10}
11
12ImageScrollView::ImageScrollView (const QString&img, QWidget * parent, const char * name, WFlags f)
13 :QScrollView(parent,name,f/*|Qt::WRepaintNoErase*/),_image_data(img)
14{
15 init();
16}
17
18void ImageScrollView::setImage(const QImage&img)
19{
20 _image_data = img;
21 init();
22}
23
24/* should be called every time the QImage changed it content */
25void ImageScrollView::init()
26{
27 viewport()->setBackgroundColor(white);
28 resizeContents(_image_data.width(),_image_data.height());
29}
30
31ImageScrollView::~ImageScrollView()
32{
33}
34
35void ImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph)
36{
37 int w = clipw;
38 int h = cliph;
39 int x = clipx;
40 int y = clipy;
41 bool erase = false;
42
43 if (w>_image_data.width()) {
44 w=_image_data.width();
45 x = 0;
46 erase = true;
47 } else if (x+w>_image_data.width()){
48 x = _image_data.width()-w;
49 }
50 if (h>_image_data.height()) {
51 h=_image_data.height();
52 y = 0;
53 erase = true;
54 } else if (y+h>_image_data.height()){
55 y = _image_data.height()-h;
56 }
57 if (erase) {
58 p->fillRect(clipx,clipy,clipw,cliph,white);
59 }
60 p->drawImage(clipx,clipy,_image_data,x,y,w,h);
61}
62
63void ImageScrollView::viewportMouseMoveEvent(QMouseEvent* e)
64{
65 int mx, my;
66 viewportToContents( e->x(), e->y(), mx, my );
67
68 scrollBy(_mouseStartPosX-mx,my-_mouseStartPosY);
69
70 _mouseStartPosX=mx;
71 _mouseStartPosY=my;
72}
73
74void ImageScrollView::contentsMouseReleaseEvent ( QMouseEvent * e)
75{
76 viewportToContents( e->x(), e->y(), _mouseStartPosX,_mouseStartPosY );
77}
78
79void ImageScrollView::contentsMousePressEvent ( QMouseEvent * e)
80{
81 viewportToContents( e->x(), e->y(), _mouseStartPosX,_mouseStartPosY );
82}
83
84/* for testing */
85ImageDlg::ImageDlg(const QString&fname,QWidget * parent, const char * name)
86 :QDialog(parent,name,true,WStyle_ContextHelp)
87{
88 QVBoxLayout*dlglayout = new QVBoxLayout(this);
89 dlglayout->setSpacing(2);
90 dlglayout->setMargin(1);
91 ImageScrollView*inf = new ImageScrollView(fname,this);
92 dlglayout->addWidget(inf);
93}
94
95ImageDlg::~ImageDlg()
96{
97}
diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.h b/noncore/graphics/opie-eye/gui/imagescrollview.h
new file mode 100644
index 0000000..5836c8d
--- a/dev/null
+++ b/noncore/graphics/opie-eye/gui/imagescrollview.h
@@ -0,0 +1,43 @@
1#ifndef __IMAGE_SCROLL_VIEW_H
2#define __IMAGE_SCROLL_VIEW_H
3
4#include <qscrollview.h>
5#include <qimage.h>
6#include <qstring.h>
7#include <qdialog.h>
8
9class QPainter;
10
11class ImageScrollView:public QScrollView
12{
13 Q_OBJECT
14public:
15 ImageScrollView (const QImage&, QWidget * parent=0, const char * name=0, WFlags f=0 );
16 ImageScrollView (const QString&, QWidget * parent=0, const char * name=0, WFlags f=0 );
17 virtual ~ImageScrollView();
18
19 void setImage(const QImage&);
20protected:
21 virtual void drawContents ( QPainter * p, int clipx, int clipy, int clipw, int cliph );
22 void init();
23
24 QImage _image_data;
25
26 int _mouseStartPosX,_mouseStartPosY;
27
28protected slots:
29 virtual void viewportMouseMoveEvent(QMouseEvent* e);
30 virtual void contentsMousePressEvent ( QMouseEvent * e);
31 virtual void contentsMouseReleaseEvent ( QMouseEvent * e);
32};
33
34/* for testing */
35class ImageDlg:public QDialog
36{
37 Q_OBJECT
38public:
39 ImageDlg(const QString&,QWidget * parent=0, const char * name=0);
40 virtual ~ImageDlg();
41};
42
43#endif