summaryrefslogtreecommitdiff
path: root/noncore/graphics/opie-eye/gui/imagescrollview.cpp
Unidiff
Diffstat (limited to 'noncore/graphics/opie-eye/gui/imagescrollview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/imagescrollview.cpp81
1 files changed, 51 insertions, 30 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
@@ -12,7 +12,6 @@ ImageScrollView::ImageScrollView( QWidget* parent, const char* name, WFlags f )
12 rotate_to_fit(true),first_resize_done(false),m_lastName("") 12 rotate_to_fit(true),first_resize_done(false),m_lastName("")
13{ 13{
14 init(); 14 init();
15 qDebug("constructor done");
16} 15}
17 16
18ImageScrollView::ImageScrollView (const QImage&img, QWidget * parent, const char * name, WFlags f,bool always_scale,bool rfit) 17ImageScrollView::ImageScrollView (const QImage&img, QWidget * parent, const char * name, WFlags f,bool always_scale,bool rfit)
@@ -56,6 +55,7 @@ void ImageScrollView::init()
56{ 55{
57 odebug << "init " << oendl; 56 odebug << "init " << oendl;
58 viewport()->setBackgroundColor(white); 57 viewport()->setBackgroundColor(white);
58 setFocusPolicy(QWidget::StrongFocus);
59 if (first_resize_done) { 59 if (first_resize_done) {
60 last_rot = Rotate0; 60 last_rot = Rotate0;
61 generateImage(); 61 generateImage();
@@ -254,6 +254,29 @@ void ImageScrollView::resizeEvent(QResizeEvent * e)
254 first_resize_done = true; 254 first_resize_done = true;
255} 255}
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)
258{ 281{
259 int w = clipw; 282 int w = clipw;
@@ -292,23 +315,38 @@ void ImageScrollView::viewportMouseMoveEvent(QMouseEvent* e)
292 int mx, my; 315 int mx, my;
293 mx = e->x(); 316 mx = e->x();
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;
299 _mouseStartPosY=my; 338 _mouseStartPosY=my;
300} 339}
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}
313 351
314void ImageScrollView::setDestructiveClose() { 352void ImageScrollView::setDestructiveClose() {
@@ -318,20 +356,3 @@ void ImageScrollView::setDestructiveClose() {
318 fl |= WDestructiveClose; 356 fl |= WDestructiveClose;
319 setWFlags( fl ); 357 setWFlags( fl );
320} 358}
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}