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

List:       kde-panel-devel
Subject:    Mouse wheel support for activity widget
From:       Simone Gaiarin <simgunz () gmail ! com>
Date:       2011-12-26 20:08:57
Message-ID: CAO-ExucAcB2OTbdW6+_baqDOpzky1_bffHa92uKzHe2OBkOeKA () mail ! gmail ! com
[Download RAW message or body]

Hi all,
I've implemented the functionality for changing the activity rolling
the mouse wheel over the showActivityManager plasmoid.
I've attached a patch to the email. If it is good enough, it can be
merged upstream.
Bye

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

diff -cr showActivityManager/showActivityManager.cpp showActivityManager-new/showActivityManager.cpp
*** showActivityManager/showActivityManager.cpp	2011-12-21 01:40:37.000000000 +0100
--- showActivityManager-new/showActivityManager.cpp	2011-12-26 20:12:04.222375295 +0100
***************
*** 20,25 ****
--- 20,26 ----
  #include "showActivityManager.h"
  
  #include <QGraphicsLinearLayout>
+ #include <QGraphicsSceneWheelEvent>
  #include <QDBusConnection>
  #include <QDBusMessage>
  
***************
*** 70,75 ****
--- 71,115 ----
      QDBusConnection::sessionBus().call(message, QDBus::NoBlock);
  }
  
+ void ShowActivityManager::wheelEvent(QGraphicsSceneWheelEvent *e)
+ {
+     QDBusMessage message;
+     QDBusMessage reply;
+     message = QDBusMessage::createMethodCall("org.kde.kactivitymanagerd",
+                                                           "/ActivityManager",
+                                                           QString(),
+                                                           "ListActivities");    
+     reply = QDBusConnection::sessionBus().call(message);
+     QStringList activities = reply.arguments()[0].toStringList();
+     
+     message = QDBusMessage::createMethodCall("org.kde.kactivitymanagerd",
+                                                           "/ActivityManager",
+                                                           QString(),
+                                                           "CurrentActivity");    
+     reply = QDBusConnection::sessionBus().call(message);
+     QString currentActivity = reply.arguments()[0].toString();
+     
+     int currentIndex = activities.indexOf(currentActivity);
+     int nextIndex;
+     if(e->delta() < 0) 
+         nextIndex = (currentIndex + 1) % activities.size();
+     else
+         if(currentIndex - 1 < 0)
+             nextIndex = activities.size() - 1;
+         else
+             nextIndex = currentIndex - 1;
+ 
+     QString nextActivity = activities[nextIndex];    
+     message = QDBusMessage::createMethodCall("org.kde.kactivitymanagerd",
+                                                           "/ActivityManager",
+                                                           QString(),
+                                                           "SetCurrentActivity");
+     QList<QVariant> args;
+     args.append(nextActivity);
+     message.setArguments(args);
+     QDBusConnection::sessionBus().call(message);
+ }
+ 
  K_EXPORT_PLASMA_APPLET(showactivitymanager, ShowActivityManager)
  
  #include "showActivityManager.moc"
diff -cr showActivityManager/showActivityManager.h showActivityManager-new/showActivityManager.h
*** showActivityManager/showActivityManager.h	2011-12-21 01:40:37.000000000 +0100
--- showActivityManager-new/showActivityManager.h	2011-12-26 19:32:42.628502480 +0100
***************
*** 36,45 ****
  
  public Q_SLOTS:
      void configChanged();
! 
  protected Q_SLOTS:
      void showManager();
! 
  private:
      Plasma::IconWidget *m_icon;
  };
--- 36,46 ----
  
  public Q_SLOTS:
      void configChanged();
!     
  protected Q_SLOTS:
      void showManager();
!     virtual void wheelEvent(QGraphicsSceneWheelEvent *event);
!     
  private:
      Plasma::IconWidget *m_icon;
  };


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


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

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