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

List:       kde-commits
Subject:    KDE/kdepim/libkdepim
From:       Tobias Koenig <tokoe () kde ! org>
Date:       2010-10-16 8:35:31
Message-ID: 20101016083531.C77C8AC897 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1186396 by tokoe:

Add a dateTime property which uses a dummy date component.

This property is needed to make KTimeEdit work with KConfigDialogManager
because the latter supports only QDateTime. This results in QDateTime objects
with invalid date component written back to the KCoreConfigSkeleton and KConfig
will refuse to write them back to the config file.


 M  +17 -1     ktimeedit.cpp  
 M  +24 -0     ktimeedit.h  


--- trunk/KDE/kdepim/libkdepim/ktimeedit.cpp #1186395:1186396
@@ -136,6 +136,7 @@
   mTime = time.addSecs( mTime.minute() * 60 + mTime.hour() * 3600 );
   updateText();
   emit q->timeChanged( mTime );
+  emit q->dateTimeChanged( QDateTime( QDate( 1752, 1, 1 ), mTime ) );
   emit q->timeEdited( mTime );
 }
 
@@ -161,6 +162,7 @@
   mTime.setHMS( h, m, 0 );
   updateText();
   emit q->timeChanged( mTime );
+  emit q->dateTimeChanged( QDateTime( QDate( 1752, 1, 1 ), mTime ) );
   emit q->timeEdited( mTime );
 }
 
@@ -187,6 +189,7 @@
   mTime = mMinumum.addSecs( index * 15 * 60 );
 
   emit q->timeChanged( mTime );
+  emit q->dateTimeChanged( QDateTime( QDate( 1752, 1, 1 ), mTime ) );
   emit q->timeEdited( mTime );
 }
 
@@ -195,6 +198,7 @@
   if ( q->inputIsValid() ) {
     mTime = q->time();
     emit q->timeChanged( mTime );
+    emit q->dateTimeChanged( QDateTime( QDate( 1752, 1, 1 ), mTime ) );
     emit q->timeEdited( mTime );
   }
 }
@@ -259,6 +263,11 @@
   return result;
 }
 
+QDateTime KTimeEdit::dateTime() const
+{
+  return QDateTime( QDate( 1752, 1, 1 ), time() );
+}
+
 QSizePolicy KTimeEdit::sizePolicy() const
 {
   // Set size policy to Fixed, because edit cannot contain more text than the
@@ -273,10 +282,17 @@
     d->updateText();
   }
 
-  if ( d->mTime.isValid() )
+  if ( d->mTime.isValid() ) {
     emit timeChanged( d->mTime );
+    emit dateTimeChanged( QDateTime( QDate( 1752, 1, 1 ), d->mTime ) );
 }
+}
 
+void KTimeEdit::setDateTime( const QDateTime &newDateTime )
+{
+  setTime( newDateTime.time() );
+}
+
 void KTimeEdit::keyPressEvent( QKeyEvent *event )
 {
   switch ( event->key() ) {
--- trunk/KDE/kdepim/libkdepim/ktimeedit.h #1186395:1186396
@@ -47,6 +47,9 @@
 
   Q_PROPERTY( QTime time READ time WRITE setTime NOTIFY timeChanged USER true )
 
+  // The dateTime property is needed to use KTimeEdit with KConfigDialogManager, \
because supports only QDateTime +  Q_PROPERTY( QDateTime dateTime READ dateTime WRITE \
setDateTime NOTIFY dateTimeChanged ) +
   public:
     /**
      * Creates a new time edit.
@@ -67,6 +70,13 @@
     QTime time() const;
 
     /**
+     * Returns a datetime object with the currently selected time.
+     *
+     * The date part is the dummy value 1752-01-01
+     */
+    QDateTime dateTime() const;
+
+    /**
      * Returns whether the current input is a valid time.
      */
     bool inputIsValid() const;
@@ -123,6 +133,15 @@
     void timeChanged( const QTime &time );
 
     /**
+     * This signal is emitted whenever the time has been changed.
+     * Unlike timeEdited(), this signal is also emitted when the time is changed
+     * programmatically.
+     *
+     * @note The dateTime can be invalid.
+     */
+    void dateTimeChanged( const QDateTime &dateTime );
+
+    /**
      * This signal is emitted whenever the time has been edited by the user.
      * Unlike timeChanged(), this signal is not emitted when the time is changed
      * programmatically.
@@ -137,6 +156,11 @@
      */
     void setTime( const QTime &time );
 
+    /**
+     * Sets the current dateTime.
+     */
+    void setDateTime( const QDateTime &dateTime );
+
   protected:
     virtual void keyPressEvent( QKeyEvent *qke );
 


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

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