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

List:       kde-commits
Subject:    KDE/kdebase/workspace/plasma/applets
From:       Teemu Rytilahti <tpr () d5k ! net>
Date:       2008-08-07 16:49:05
Message-ID: 1218127745.000210.10086.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 843702 by rytilahti:

Add support to digital-clock for changing the timezone by using a mouse wheel.


 M  +3 -5      digital-clock/clock.cpp  
 M  +0 -1      digital-clock/clock.h  
 M  +47 -5     libplasmaclock/clockapplet.cpp  
 M  +1 -0      libplasmaclock/clockapplet.h  
 M  +3 -0      libplasmaclock/timezonesConfig.ui  


--- trunk/KDE/kdebase/workspace/plasma/applets/digital-clock/clock.cpp #843701:843702
@@ -56,7 +56,6 @@
       m_showDay(false),
       m_showSeconds(false),
       m_showTimezone(false),
-      m_timeZones(),
       m_layout(0)
 {
     KGlobal::locale()->insertCatalog("libplasmaclock");
@@ -75,7 +74,6 @@
 
     KConfigGroup cg = config();
     setCurrentTimezone(cg.readEntry("currentTimezone", localTimezone()));
-    m_timeZones = cg.readEntry("timeZones", QStringList());
 
     m_showTimezone = cg.readEntry("showTimezone", !isLocalTimezone());
 
@@ -179,7 +177,7 @@
 }
 
 void Clock::clockConfigAccepted()
-{
+{  
     KConfigGroup cg = config();
 
     m_showTimezone = ui.showTimezone->isChecked();
@@ -218,7 +216,7 @@
     cg.writeEntry("plainClockFont", m_plainClockFont);
     cg.writeEntry("useCustomColor", m_useCustomColor);
     cg.writeEntry("plainClockColor", m_plainClockColor);
-
+    
     constraintsEvent(Plasma::SizeConstraint);
     update();
     emit sizeHintChanged(Qt::PreferredSize);
@@ -285,7 +283,7 @@
                                        "%1 day of the week with date, %2 currentTimezone",
                                        "%1 %2", dateString, currentTimezone);
                 }
-            } else if (m_showTimezone) {
+            } else if (m_showTimezone && !isLocalTimezone()) {
                 dateString = m_prettyTimezone;
             }
 
--- trunk/KDE/kdebase/workspace/plasma/applets/digital-clock/clock.h #843701:843702
@@ -73,7 +73,6 @@
         int updateInterval() const;
         Plasma::IntervalAlignment intervalAlignment() const;
 
-        QStringList m_timeZones;
         QString m_prettyTimezone;
         QTime m_time;
         QDate m_date;
--- trunk/KDE/kdebase/workspace/plasma/applets/libplasmaclock/clockapplet.cpp #843701:843702
@@ -102,7 +102,9 @@
     parent->addPage(widget, i18n("Time Zones"), icon());
 
     d->ui.localTimeZone->setChecked(isLocalTimezone());
-    d->ui.timeZones->setSelected(currentTimezone(), true);
+    foreach(QString tz, d->m_timeZones) {
+        d->ui.timeZones->setSelected(tz, true);
+    }
     d->ui.timeZones->setEnabled(!isLocalTimezone());
 
     parent->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Apply );
@@ -137,11 +139,14 @@
     d->m_timeZones = d->ui.timeZones->selection();
     cg.writeEntry("timeZones", d->m_timeZones);
 
-    QString newTimezone = localTimezone();
-
-    if (!d->ui.localTimeZone->isChecked() && !d->m_timeZones.isEmpty()) {
+    QString newTimezone;
+    
+    if(d->ui.localTimeZone->isChecked())
+        newTimezone = localTimezone();
+    else if(d->m_timeZones.contains(currentTimezone()))
+        newTimezone = currentTimezone();
+    else
         newTimezone = d->m_timeZones.at(0);
-    }
 
     changeEngineTimezone(currentTimezone(), newTimezone);
 
@@ -187,6 +192,40 @@
     }
 }
 
+void ClockApplet::wheelEvent(QGraphicsSceneWheelEvent *event)
+{
+    if(d->m_timeZones.count() <= 1 || isLocalTimezone())
+        return;
+    
+    QString newTimezone;
+    int current = d->m_timeZones.indexOf(currentTimezone());
+    
+    if(event->delta() > 0) {
+        int previous = current - 1;
+        if(previous < 0)
+            newTimezone = d->m_timeZones.last();
+        else
+            newTimezone = d->m_timeZones.at(previous);
+    }
+    else {
+        int next = current + 1;
+        if(next > d->m_timeZones.count() - 1)
+            newTimezone = d->m_timeZones.first();
+        else
+            newTimezone = d->m_timeZones.at(next);
+    }
+    
+    changeEngineTimezone(currentTimezone(), newTimezone);
+    setCurrentTimezone(newTimezone);
+    
+    // let's save our current timezone to be used per default
+    KConfigGroup cg = config();
+    cg.writeEntry("currentTimezone", newTimezone);
+    emit configNeedsSaving();
+    
+    update();
+}
+
 void ClockApplet::initExtenderItem(Plasma::ExtenderItem *item)
 {
     d->calendar = new KDatePicker;
@@ -199,6 +238,9 @@
 
 void ClockApplet::init()
 {
+    KConfigGroup cg = config();
+    d->m_timeZones = cg.readEntry("timeZones", QStringList());
+    
     Plasma::Extender *extender = new Plasma::Extender(this);
     containment()->corona()->addOffscreenWidget(extender);
 }
--- trunk/KDE/kdebase/workspace/plasma/applets/libplasmaclock/clockapplet.h #843701:843702
@@ -56,6 +56,7 @@
     protected:
         void mousePressEvent(QGraphicsSceneMouseEvent *event);
         void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+        void wheelEvent(QGraphicsSceneWheelEvent *event);
         void createConfigurationInterface(KConfigDialog *parent);
         virtual void createClockConfigurationInterface(KConfigDialog *parent);
         virtual void clockConfigAccepted();
--- trunk/KDE/kdebase/workspace/plasma/applets/libplasmaclock/timezonesConfig.ui #843701:843702
@@ -25,6 +25,9 @@
        <height>150</height>
       </size>
      </property>
+     <property name="selectionMode" >
+      <enum>QAbstractItemView::MultiSelection</enum>
+     </property>
      <column>
       <property name="text" >
        <string>Area</string>
[prev in list] [next in list] [prev in thread] [next in thread] 

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