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

List:       kde-commits
Subject:    KDE/kdepim/kontact/plugins/summary
From:       Allen Winter <winter () kde ! org>
Date:       2008-07-07 19:08:32
Message-ID: 1215457712.980563.14663.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 829175 by winterz:

Fix LtoR vs. RtoL drag'n drop in summary view
BUGS: 161426


 M  +71 -4     summaryview_part.cpp  
 M  +2 -0      summaryview_part.h  


--- trunk/KDE/kdepim/kontact/plugins/summary/summaryview_part.cpp #829174:829175
@@ -4,6 +4,7 @@
   Copyright (C) 2003 Sven Lüppken <sven@kde.org>
   Copyright (C) 2003 Tobias König <tokoe@kde.org>
   Copyright (C) 2003 Daniel Molkentin <molkentin@kde.org>
+  Copyright (C) 2008 Allen Winter <winter@kde.org>
 
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
@@ -35,7 +36,6 @@
 #include <kactioncollection.h>
 #include <kconfig.h>
 #include <kdbusservicestarter.h>
-#include <kdebug.h>
 #include <kdialog.h>
 #include <kcomponentdata.h>
 #include <kglobal.h>
@@ -49,6 +49,7 @@
 #include <kparts/componentfactory.h>
 #include <kparts/event.h>
 
+#include <QApplication>
 #include <QLabel>
 #include <QLayout>
 #include <QTimer>
@@ -94,7 +95,6 @@
 
 bool SummaryViewPart::openFile()
 {
-  kDebug();
   return true;
 }
 
@@ -253,12 +253,21 @@
       return;
     }
   } else {
-    if ( mLeftColumn->indexOf( target ) == -1 && mRightColumn->indexOf( target ) == -1 ||
-         mLeftColumn->indexOf( widget ) == -1 && mRightColumn->indexOf( widget ) == -1 ) {
+    if ( ( mLeftColumn->indexOf( target ) == -1 && mRightColumn->indexOf( target ) == -1 ) ||
+         ( mLeftColumn->indexOf( widget ) == -1 && mRightColumn->indexOf( widget ) == -1 ) ) {
       return;
     }
   }
 
+  if ( !QApplication::isRightToLeft() ) {
+    drawLtoR( target, widget, alignment );
+  } else {
+    drawRtoL( target, widget, alignment );
+  }
+}
+
+void SummaryViewPart::drawLtoR( QWidget *target, QWidget *widget, int alignment )
+{
   if ( mLeftColumn->indexOf( widget ) != -1 ) {
     mLeftColumn->removeWidget( widget );
     mLeftColumnSummaries.removeAll( widgetName( widget ) );
@@ -315,6 +324,64 @@
   mFrame->updateGeometry();
 }
 
+void SummaryViewPart::drawRtoL( QWidget *target, QWidget *widget, int alignment )
+{
+  if ( mRightColumn->indexOf( widget ) != -1 ) {
+    mRightColumn->removeWidget( widget );
+    mRightColumnSummaries.removeAll( widgetName( widget ) );
+  } else if ( mLeftColumn->indexOf( widget ) != -1 ) {
+    mLeftColumn->removeWidget( widget );
+    mLeftColumnSummaries.removeAll( widgetName( widget ) );
+  }
+
+  if ( target == mFrame ) {
+    int pos = 0;
+
+    if ( alignment & Qt::AlignTop ) {
+      pos = 0;
+    }
+
+    if ( alignment & Qt::AlignLeft ) {
+      if ( alignment & Qt::AlignBottom ) {
+        pos = mRightColumnSummaries.count();
+      }
+
+      mRightColumn->insertWidget( pos, widget );
+      mRightColumnSummaries.insert( pos, widgetName( widget ) );
+    } else {
+      if ( alignment & Qt::AlignBottom ) {
+        pos = mLeftColumnSummaries.count();
+      }
+
+      mLeftColumn->insertWidget( pos, widget );
+      mLeftColumnSummaries.insert( pos, widgetName( widget ) );
+    }
+
+    mFrame->updateGeometry();
+    return;
+  }
+
+  int targetPos = mRightColumn->indexOf( target );
+  if ( targetPos != -1 ) {
+    if ( alignment == Qt::AlignBottom ) {
+      targetPos++;
+    }
+
+    mRightColumn->insertWidget( targetPos, widget );
+    mRightColumnSummaries.insert( targetPos, widgetName( widget ) );
+  } else {
+    targetPos = mLeftColumn->indexOf( target );
+
+    if ( alignment == Qt::AlignBottom ) {
+      targetPos++;
+    }
+
+    mLeftColumn->insertWidget( targetPos, widget );
+    mLeftColumnSummaries.insert( targetPos, widgetName( widget ) );
+  }
+  mFrame->updateGeometry();
+}
+
 void SummaryViewPart::slotTextChanged()
 {
   emit textChanged( i18n( "What's next?" ) );
--- trunk/KDE/kdepim/kontact/plugins/summary/summaryview_part.h #829174:829175
@@ -80,6 +80,8 @@
     QString widgetName( QWidget * ) const;
 
     QStringList configModules() const;
+    void drawLtoR( QWidget *target, QWidget *widget, int alignment );
+    void drawRtoL( QWidget *target, QWidget *widget, int alignment );
 
     QMap<QString, Kontact::Summary*> mSummaries;
     Kontact::Core *mCore;
[prev in list] [next in list] [prev in thread] [next in thread] 

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