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

List:       kde-commits
Subject:    extragear/graphics/digikam/libs/thumbbar
From:       Gilles Caulier <caulier.gilles () gmail ! com>
Date:       2007-05-07 11:58:05
Message-ID: 1178539085.091371.31306.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 662058 by cgilles:

digikam from trunk: prepare to support drag & drop with Light Table


 M  +35 -3     thumbbar.cpp  
 M  +6 -3      thumbbar.h  


--- trunk/extragear/graphics/digikam/libs/thumbbar/thumbbar.cpp #662057:662058
@@ -80,6 +80,7 @@
     ThumbBarViewPriv() :
         margin(5)
     {
+        dragging   = false;
         exifRotate = false;
         toolTip    = 0;
         firstItem  = 0;
@@ -94,6 +95,7 @@
     
     bool                       clearing;
     bool                       exifRotate;
+    bool                       dragging;
 
     const int                  margin;
     int                        count;
@@ -102,6 +104,8 @@
     
     QTimer                    *timer;
 
+    QPoint                     dragStartPos;
+
     ThumbBarItem              *firstItem;
     ThumbBarItem              *lastItem;
     ThumbBarItem              *currItem;
@@ -160,7 +164,9 @@
     viewport()->setBackgroundMode(Qt::NoBackground);
     viewport()->setMouseTracking(true);
     setFrameStyle(QFrame::NoFrame);
-    
+    setAcceptDrops(true); 
+    viewport()->setAcceptDrops(true);
+
     if (d->orientation == Vertical)
     {
         setHScrollBarMode(QScrollView::AlwaysOff);
@@ -560,13 +566,39 @@
         item->repaint();
     }
 
-    d->currItem = barItem;
+    d->dragging     = true;
+    d->dragStartPos = e->pos();
+    d->currItem     = barItem;
     barItem->repaint();
-    
+
     emit signalURLSelected(barItem->url());
     emit signalItemSelected(barItem);
 }
 
+void ThumbBarView::contentsMouseMoveEvent(QMouseEvent *e)
+{
+    if (!e) return;
+
+    if (d->dragging && (e->state() & Qt::LeftButton))
+    {
+        if ( (d->dragStartPos - e->pos()).manhattanLength()
+             > QApplication::startDragDistance() )
+        {
+            startDrag();
+        }
+        return;
+    }
+}
+
+void ThumbBarView::contentsMouseReleaseEvent(QMouseEvent*)
+{
+    d->dragging = false;
+}
+
+void ThumbBarView::startDrag()
+{
+}
+
 void ThumbBarView::insertItem(ThumbBarItem* item)
 {
     if (!item) return;
--- trunk/extragear/graphics/digikam/libs/thumbbar/thumbbar.h #662057:662058
@@ -136,10 +136,13 @@
     int  getTileSize();
     int  getMargin();
 
-    void resizeEvent(QResizeEvent* e);
-    void contentsMousePressEvent(QMouseEvent* e);
+    void resizeEvent(QResizeEvent*);
+    void contentsMousePressEvent(QMouseEvent*);
+    void contentsMouseMoveEvent(QMouseEvent*);
+    void contentsMouseReleaseEvent(QMouseEvent*);
 
-    virtual void viewportPaintEvent(QPaintEvent* e);
+    virtual void viewportPaintEvent(QPaintEvent*);
+    virtual void startDrag();
 
 private:
 
[prev in list] [next in list] [prev in thread] [next in thread] 

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