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

List:       kde-commits
Subject:    KDE/kdenetwork/knewsticker
From:       Frerich Raabe <raabe () kde ! org>
Date:       2007-11-01 0:33:49
Message-ID: 1193877229.811888.17532.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 731563 by raabe:

- Configurable scrolling speed; restrict the repainting interval to 25ms. If we
  want a higher speed, the stepping width is increased ( so that e.g. it scrolls
  two pixels per update instead of one).


 M  +17 -3     knewsticker.cpp  
 M  +2 -0      knewsticker.h  
 M  +4 -0      settings.kcfg  
 M  +50 -3     visualsettings.ui  


--- trunk/KDE/kdenetwork/knewsticker/knewsticker.cpp #731562:731563
@@ -124,7 +124,8 @@
 
 KNewsTicker::KNewsTicker( QObject *parent, const QVariantList &args )
     : Plasma::Applet( parent, args ),
-    m_signalMapper( 0 )
+    m_signalMapper( 0 ),
+    m_steppingWidth( 1.0 )
 {
     setDrawStandardBackground( true );
 
@@ -140,7 +141,8 @@
     m_scrollTimer = new QTimer( this );
     connect( m_scrollTimer, SIGNAL( timeout() ),
              this, SLOT( advance() ) );
-    m_scrollTimer->start( 1000 / 25 );
+    configureScrollTimer();
+    m_scrollTimer->start();
 
     m_updateTimer = new QTimer( this );
     connect( m_updateTimer, SIGNAL( timeout() ),
@@ -327,7 +329,7 @@
     }
 
     foreach ( NewsTickerItem *item, m_graphicsItems ) {
-        item->moveBy( -1, 0 );
+        item->moveBy( m_steppingWidth * -1, 0 );
     }
 }
 
@@ -388,6 +390,18 @@
     }
     m_scrollerItem->setRect( 0, 0, 512, QFontMetrics( Settings::font() ).height() * 2 );
     m_updateTimer->setInterval( Settings::updateInterval() * 60 * 1000 );
+    configureScrollTimer();
 }
 
+void KNewsTicker::configureScrollTimer()
+{
+    if ( Settings::scrollingSpeed() < 25 ) {
+        m_scrollTimer->setInterval( 25 );
+        m_steppingWidth = 25.0 / Settings::scrollingSpeed();
+    } else {
+        m_scrollTimer->setInterval( Settings::scrollingSpeed() );
+        m_steppingWidth = 1.0;
+    }
+}
+
 #include "knewsticker.moc"
--- trunk/KDE/kdenetwork/knewsticker/knewsticker.h #731562:731563
@@ -108,6 +108,7 @@
     void relayoutItems();
     void addItemToLayout( const Item &item, qreal *xpos, qreal *ypos );
     void reloadSettings();
+    void configureScrollTimer();
 
     QTimer *m_scrollTimer;
     QList<Item> m_items;
@@ -116,6 +117,7 @@
     QSignalMapper *m_signalMapper;
     QGraphicsRectItem *m_scrollerItem;
     QSet<QUrl> m_readArticles;
+    qreal m_steppingWidth;
 };
 
 K_EXPORT_PLASMA_APPLET(knewsticker, KNewsTicker)
--- trunk/KDE/kdenetwork/knewsticker/settings.kcfg #731562:731563
@@ -16,6 +16,10 @@
             <label>Whether news which have been read should be shown in the scroller again</label>
             <default>true</default>
         </entry>
+        <entry name="ScrollingSpeed" type="UInt" min="1" max="100">
+            <label>How fast the scrolling should be.</label>
+            <default>25</default>
+        </entry>
     </group>
     <group name="FeedLoading">
         <entry name="FeedUrls" type="StringList">
--- trunk/KDE/kdenetwork/knewsticker/visualsettings.ui #731562:731563
@@ -17,7 +17,7 @@
      </property>
     </widget>
    </item>
-   <item row="0" column="1" >
+   <item row="0" column="1">
     <widget class="KColorCombo" name="kcfg_Color" >
      <item>
       <property name="text" >
@@ -33,10 +33,57 @@
      </property>
     </widget>
    </item>
-   <item row="1" column="1" >
+   <item row="1" column="1">
     <widget class="KFontRequester" name="kcfg_Font" />
    </item>
-   <item row="2" column="1" >
+   <item row="2" column="0" >
+    <widget class="QLabel" name="label_5" >
+     <property name="text" >
+      <string>Scrolling speed:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1">
+    <layout class="QHBoxLayout" >
+     <item>
+      <widget class="QLabel" name="label_4" >
+       <property name="text" >
+        <string>Slow</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QSlider" name="kcfg_ScrollingSpeed" >
+       <property name="minimum" >
+        <number>1</number>
+       </property>
+       <property name="maximum" >
+        <number>100</number>
+       </property>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="invertedAppearance" >
+        <bool>true</bool>
+       </property>
+       <property name="tickPosition" >
+        <enum>QSlider::TicksBelow</enum>
+       </property>
+       <property name="tickInterval" >
+        <number>25</number>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLabel" name="label_3" >
+       <property name="text" >
+        <string>Fast</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="3" column="1" >
     <spacer>
      <property name="orientation" >
       <enum>Qt::Vertical</enum>
[prev in list] [next in list] [prev in thread] [next in thread] 

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