[prev in list] [next in list] [prev in thread] [next in thread] 

List:       koffice-devel
Subject:    Junior job - zooming tool doesn't zoom out
From:       Hans Bakker <hansmbakker () gmail ! com>
Date:       2009-09-05 10:04:42
Message-ID: 761dc76c0909050304g2c3e43fagc5ed2c633407674c () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hi all,
I made a beginning of the closing of bug 171976 <http://bugs.kde.org/171976>.
The patch is attached, but there are still some things left to do that I'd
like some help with:

   - when pressing Ctrl, sometimes the cursor is only updated when moving
   the mouse. Right now at the key*Event methods, event->ignore(); is called.
   - the birdEyeLabel is not used / updated yet.

Kind regards,

Hans Bakker

[Attachment #5 (text/html)]

Hi all,<div><br></div><div>I made a beginning of the closing of <a \
href="http://bugs.kde.org/171976" target="_blank">bug 171976</a>. The patch is \
attached, but there are still some things left to do that I&#39;d like some help \
with:</div>


<div><ul><li>when pressing Ctrl, sometimes the cursor is only updated when moving the \
mouse. Right now at the key*Event methods, event-&gt;ignore(); is called.</li><li>the \
birdEyeLabel is not used / updated yet.</li></ul>

<div>Kind regards,</div><div><br></div><div>Hans Bakker</div></div>

--0015175885840a03070472d1c0e0--


["bug171976_juniorjob.patch" (application/octet-stream)]

Index: libs/flake/tools/KoZoomStrategy.h
===================================================================
--- libs/flake/tools/KoZoomStrategy.h	(revision 1019773)
+++ libs/flake/tools/KoZoomStrategy.h	(working copy)
@@ -41,6 +41,7 @@
     KoZoomStrategy(KoZoomTool *tool, KoCanvasController *controller, const QPointF &clicked);
 
     void forceZoomOut();
+    void forceZoomIn();
 
     /// Execute the zoom
     virtual void finishInteraction(Qt::KeyboardModifiers modifiers);
Index: libs/flake/tools/KoZoomTool.cpp
===================================================================
--- libs/flake/tools/KoZoomTool.cpp	(revision 1019773)
+++ libs/flake/tools/KoZoomTool.cpp	(working copy)
@@ -31,7 +31,7 @@
 
 KoZoomTool::KoZoomTool(KoCanvasBase *canvas)
         : KoInteractionTool(canvas),
-        m_temporary(false)
+        m_temporary(false), m_zoomInMode(true)
 {
     QPixmap inPixmap, outPixmap;
     inPixmap.load(KStandardDirs::locate("data", "koffice/icons/zoom_in_cursor.png"));
@@ -56,9 +56,19 @@
 void KoZoomTool::mouseMoveEvent(KoPointerEvent *event)
 {
     if (event->modifiers() & Qt::ControlModifier)
-        useCursor(m_outCursor);
+    {
+        if(m_zoomInMode)
+            useCursor(m_outCursor);
+        else
+            useCursor(m_inCursor);
+    }
     else
-        useCursor(m_inCursor);
+    {
+        if(m_zoomInMode)
+            useCursor(m_inCursor);
+        else
+            useCursor(m_outCursor);
+    }
 
     if (m_currentStrategy)
         m_currentStrategy->handleMouseMove(event->point, event->modifiers());
@@ -69,9 +79,19 @@
     event->ignore();
 
     if (event->modifiers() & Qt::ControlModifier)
-        useCursor(m_outCursor);
+    {
+        if(m_zoomInMode)
+            useCursor(m_outCursor);
+        else
+            useCursor(m_inCursor);
+    }
     else
-        useCursor(m_inCursor);
+    {
+        if(m_zoomInMode)
+            useCursor(m_inCursor);
+        else
+            useCursor(m_outCursor);
+    }
 }
 
 void KoZoomTool::keyReleaseEvent(QKeyEvent *event)
@@ -79,16 +99,29 @@
     event->ignore();
 
     if (event->modifiers() & Qt::ControlModifier)
-        useCursor(m_outCursor);
+    {
+        if(m_zoomInMode)
+            useCursor(m_outCursor);
+        else
+            useCursor(m_inCursor);
+    }
     else
-        useCursor(m_inCursor);
+    {
+        if(m_zoomInMode)
+            useCursor(m_inCursor);
+        else
+            useCursor(m_outCursor);
+    }
     KoInteractionTool::keyReleaseEvent(event);
 }
 
 void KoZoomTool::activate(bool temporary)
 {
     m_temporary = temporary;
-    useCursor(m_inCursor, true);
+    if(m_zoomInMode)
+        useCursor(m_inCursor, true);
+    else
+        useCursor(m_outCursor, true);
 }
 
 void KoZoomTool::mouseDoubleClickEvent(KoPointerEvent *event)
@@ -100,13 +133,33 @@
 {
     KoZoomStrategy *zs = new KoZoomStrategy(this, m_controller, event->point);
     if (event->button() == Qt::RightButton)
-        zs->forceZoomOut();
+    {
+        if(m_zoomInMode)
+            zs->forceZoomOut();
+        else
+            zs->forceZoomIn();
+    }
+    else
+    {
+        if(m_zoomInMode)
+            zs->forceZoomIn();
+        else
+            zs->forceZoomOut();
+    }
     return zs;
 }
 
 QWidget* KoZoomTool::createOptionWidget()
 {
-    //return new KoZoomToolWidget(this);
-    return 0;
+    return new KoZoomToolWidget(this);
+    //return 0;
 }
 
+void KoZoomTool::setZoomInMode(bool zoomIn)
+{
+    m_zoomInMode = zoomIn;
+    if(m_zoomInMode)
+        useCursor(m_inCursor);
+    else
+        useCursor(m_outCursor);
+}
Index: libs/flake/tools/KoZoomStrategy.cpp
===================================================================
--- libs/flake/tools/KoZoomStrategy.cpp	(revision 1019773)
+++ libs/flake/tools/KoZoomStrategy.cpp	(working copy)
@@ -36,12 +36,39 @@
 {
     QRect pixelRect = m_controller->canvas()->viewConverter()->documentToView(selectRect()).toRect();
     pixelRect.translate(m_controller->canvas()->documentOrigin());
+    /*
     if (m_forceZoomOut || modifiers & Qt::ControlModifier)
         m_controller->zoomOut(pixelRect.center());
     else if (pixelRect.width() > 5 && pixelRect.height() > 5)
         m_controller->zoomTo(pixelRect);
     else
         m_controller->zoomIn(pixelRect.center());
+    */
+
+    if (modifiers & Qt::ControlModifier)
+    {
+        if(m_forceZoomOut)
+        {
+            if (pixelRect.width() > 5 && pixelRect.height() > 5)
+                m_controller->zoomTo(pixelRect);
+            else
+                m_controller->zoomIn(pixelRect.center());
+        }
+        else
+            m_controller->zoomOut(pixelRect.center());
+    }
+    else
+    {
+        if(m_forceZoomOut)
+            m_controller->zoomOut(pixelRect.center());
+        else
+        {
+            if (pixelRect.width() > 5 && pixelRect.height() > 5)
+                m_controller->zoomTo(pixelRect);
+            else
+                m_controller->zoomIn(pixelRect.center());
+        }
+    }
 }
 
 void KoZoomStrategy::cancelInteraction()
@@ -54,3 +81,8 @@
 {
     m_forceZoomOut = true;
 }
+
+void KoZoomStrategy::forceZoomIn()
+{
+    m_forceZoomOut = false;
+}
Index: libs/flake/tools/KoZoomToolWidget.cpp
===================================================================
--- libs/flake/tools/KoZoomToolWidget.cpp	(revision 1019773)
+++ libs/flake/tools/KoZoomToolWidget.cpp	(working copy)
@@ -21,6 +21,7 @@
 #include <QPainter>
 #include <QMouseEvent>
 #include <kicon.h>
+#include "KoZoomTool.h"
 
 KoZoomToolWidget::KoZoomToolWidget(KoZoomTool* tool, QWidget* parent)
         : QWidget(parent), m_tool(tool)
@@ -31,6 +32,9 @@
 
     zoomInButton->setIcon(KIcon("zoom-in"));
     zoomOutButton->setIcon(KIcon("zoom-out"));
+
+    connect(zoomInButton, SIGNAL(toggled(bool)), this, SLOT(changeZoomMode()));
+    connect(zoomOutButton, SIGNAL(toggled(bool)), this, SLOT(changeZoomMode()));
 }
 
 KoZoomToolWidget::~KoZoomToolWidget()
@@ -78,6 +82,7 @@
 
 void KoZoomToolWidget::changeZoomMode()
 {
+    m_tool->setZoomInMode(zoomInButton->isChecked());
 }
 
 #include <KoZoomToolWidget.moc>
Index: libs/flake/tools/KoZoomTool.h
===================================================================
--- libs/flake/tools/KoZoomTool.h	(revision 1019773)
+++ libs/flake/tools/KoZoomTool.h	(working copy)
@@ -57,6 +57,8 @@
         m_controller = controller;
     }
 
+    void setZoomInMode(bool zoomIn);
+
 protected:
     QWidget* createOptionWidget();
 
@@ -67,6 +69,7 @@
     QCursor m_inCursor;
     QCursor m_outCursor;
     bool m_temporary;
+    bool m_zoomInMode;
 };
 
 #endif


_______________________________________________
koffice-devel mailing list
koffice-devel@kde.org
https://mail.kde.org/mailman/listinfo/koffice-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic