summaryrefslogtreecommitdiff
path: root/noncore
authoralwin <alwin>2004-04-06 23:54:50 (UTC)
committer alwin <alwin>2004-04-06 23:54:50 (UTC)
commit1b7aaf904fa70c16eee03155bd826e921798cc22 (patch) (unidiff)
treeda95ac3da9717101bfdc685e59a12a1e331f9ec0 /noncore
parent5cab9e2717383faaebb44cbb57df5badc3056206 (diff)
downloadopie-1b7aaf904fa70c16eee03155bd826e921798cc22.zip
opie-1b7aaf904fa70c16eee03155bd826e921798cc22.tar.gz
opie-1b7aaf904fa70c16eee03155bd826e921798cc22.tar.bz2
fixed mousescroll handling so users kann move image with mouse/pen
implement key handler for arrow keys
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/imagescrollview.cpp81
-rw-r--r--noncore/graphics/opie-eye/gui/imagescrollview.h28
2 files changed, 60 insertions, 49 deletions
diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.cpp b/noncore/graphics/opie-eye/gui/imagescrollview.cpp
index 99fdc51..98054ff 100644
--- a/noncore/graphics/opie-eye/gui/imagescrollview.cpp
+++ b/noncore/graphics/opie-eye/gui/imagescrollview.cpp
@@ -14,3 +14,2 @@ ImageScrollView::ImageScrollView( QWidget* parent, const char* name, WFlags f )
14 init(); 14 init();
15 qDebug("constructor done");
16} 15}
@@ -58,2 +57,3 @@ void ImageScrollView::init()
58 viewport()->setBackgroundColor(white); 57 viewport()->setBackgroundColor(white);
58 setFocusPolicy(QWidget::StrongFocus);
59 if (first_resize_done) { 59 if (first_resize_done) {
@@ -256,2 +256,25 @@ void ImageScrollView::resizeEvent(QResizeEvent * e)
256 256
257void ImageScrollView::keyPressEvent(QKeyEvent * e)
258{
259 if (!e) return;
260 int dx = horizontalScrollBar()->lineStep();
261 int dy = verticalScrollBar()->lineStep();
262 if (e->key()==Qt::Key_Right) {
263 scrollBy(dx,0);
264 e->accept();
265 } else if (e->key()==Qt::Key_Left) {
266 scrollBy(0-dx,0);
267 e->accept();
268 } else if (e->key()==Qt::Key_Up) {
269 scrollBy(0,0-dy);
270 e->accept();
271 } else if (e->key()==Qt::Key_Down) {
272 scrollBy(0,dy);
273 e->accept();
274 } else {
275 e->ignore();
276 }
277 QScrollView::keyPressEvent(e);
278}
279
257void ImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph) 280void ImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph)
@@ -294,5 +317,21 @@ void ImageScrollView::viewportMouseMoveEvent(QMouseEvent* e)
294 my = e->y(); 317 my = e->y();
295 int diffx = _mouseStartPosX-mx; 318 if (_mouseStartPosX!=-1 && _mouseStartPosY!=-1) {
296 int diffy = _mouseStartPosY-my; 319 int diffx = _mouseStartPosX-mx;
297 scrollBy(diffx,diffy); 320 int diffy = _mouseStartPosY-my;
321#if 0
322 QScrollBar*xbar = horizontalScrollBar();
323 QScrollBar*ybar = verticalScrollBar();
324 if (xbar->value()+diffx>xbar->maxValue()) {
325 diffx = xbar->maxValue()-xbar->value();
326 } else if (xbar->value()+diffx<0) {
327 diffx=0-xbar->value();
328 }
329 if (ybar->value()+diffy>ybar->maxValue()) {
330 diffy = ybar->maxValue()-ybar->value();
331 } else if (ybar->value()+diffy<0) {
332 diffy=0-ybar->value();
333 }
334#endif
335 scrollBy(diffx,diffy);
336 }
298 _mouseStartPosX=mx; 337 _mouseStartPosX=mx;
@@ -301,12 +340,11 @@ void ImageScrollView::viewportMouseMoveEvent(QMouseEvent* e)
301 340
302void ImageScrollView::contentsMouseReleaseEvent ( QMouseEvent * e) 341void ImageScrollView::contentsMousePressEvent ( QMouseEvent * )
303{ 342{
304 _mouseStartPosX = e->x(); 343 /* this marks the beginning of a possible mouse move. Due internal reasons of QT
305 _mouseStartPosY = e->y(); 344 the geometry values here may real differ from that set in MoveEvent (I don't know
306} 345 why). For getting them in real context, we use the first move-event to set the start
307 346 position ;)
308void ImageScrollView::contentsMousePressEvent ( QMouseEvent * e) 347 */
309{ 348 _mouseStartPosX = -1;
310 _mouseStartPosX = e->x(); 349 _mouseStartPosY = -1;
311 _mouseStartPosY = e->y();
312} 350}
@@ -320,18 +358 @@ void ImageScrollView::setDestructiveClose() {
320} }
321
322
323/* for testing */
324ImageDlg::ImageDlg(const QString&fname,QWidget * parent, const char * name)
325 :QDialog(parent,name,true,WStyle_ContextHelp)
326{
327 QVBoxLayout*dlglayout = new QVBoxLayout(this);
328 dlglayout->setSpacing(2);
329 dlglayout->setMargin(1);
330 ImageScrollView*inf = new ImageScrollView(fname,this);
331 dlglayout->addWidget(inf);
332 odebug << "Imagedlg constructor end" << oendl;
333}
334
335ImageDlg::~ImageDlg()
336{
337}
diff --git a/noncore/graphics/opie-eye/gui/imagescrollview.h b/noncore/graphics/opie-eye/gui/imagescrollview.h
index 44f2a64..17e2f5f 100644
--- a/noncore/graphics/opie-eye/gui/imagescrollview.h
+++ b/noncore/graphics/opie-eye/gui/imagescrollview.h
@@ -19,8 +19,8 @@ public:
19 19
20 void setImage(const QImage&); 20 virtual void setImage(const QImage&);
21 void setImage( const QString& path ); 21 virtual void setImage( const QString& path );
22 void setDestructiveClose(); 22 virtual void setDestructiveClose();
23 23
24 void setAutoRotate(bool); 24 virtual void setAutoRotate(bool);
25 void setAutoScale(bool); 25 virtual void setAutoScale(bool);
26 26
@@ -50,6 +50,6 @@ protected:
50 QString m_lastName; 50 QString m_lastName;
51 void rescaleImage(int w, int h); 51 virtual void rescaleImage(int w, int h);
52 52
53 void rotate_into_data(Rotation r); 53 virtual void rotate_into_data(Rotation r);
54 void generateImage(); 54 virtual void generateImage();
55 55
@@ -58,15 +58,5 @@ protected slots:
58 virtual void contentsMousePressEvent ( QMouseEvent * e); 58 virtual void contentsMousePressEvent ( QMouseEvent * e);
59 virtual void contentsMouseReleaseEvent ( QMouseEvent * e);
60 virtual void resizeEvent(QResizeEvent * e); 59 virtual void resizeEvent(QResizeEvent * e);
60 virtual void keyPressEvent(QKeyEvent * e);
61}; 61};
62
63/* for testing */
64class ImageDlg:public QDialog
65{
66 Q_OBJECT
67public:
68 ImageDlg(const QString&,QWidget * parent=0, const char * name=0);
69 virtual ~ImageDlg();
70};
71
72#endif 62#endif