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

List:       kde-pim
Subject:    [Kde-pim] [Patch] Let KDateEdit handle invalid Dates
From:       Marco =?iso-8859-1?q?Z=FChlke?= <mzuehlke () myrealbox ! com>
Date:       2002-07-04 22:28:04
[Download RAW message or body]

[I'm not subscribed so please CC me]

Hello,

I recognized that the KDateEdit displays the date of today,
if the birthday is not set.
So I looked at the source and developed the attached patch.

Please comment on it.

Can anyone with an account apply the patch, 
if it is ok ??


Another bugreport about kaddressbook.
In the detailview the details on the right hand site are shown
very small (1 pt Font). 

cu Marco
["kdateedit.patch" (text/plain)]

--- kdepim/libkdepim/kdateedit.h.orig	Thu Jul  4 13:35:21 2002
+++ kdepim/libkdepim/kdateedit.h	Thu Jul  4 16:58:59 2002
@@ -66,6 +66,13 @@
     */
     QDate date() const;
     
+    /** @param handleInvalid If true the date edit accepts invalid dates
+    * and displays them as the empty ("") string. It also returns an invalid date.
+    * If false (default) invalid dates are not accepted and instead the date
+    * of today will be returned.
+    */
+    void setHandleInvalid(bool handleInvalid);
+
     /** Checks for a focus out event. The display of the date is updated
     * to display the proper date when the focus leaves.
     */
@@ -109,6 +116,7 @@
     */
     QMap<QString, int> mKeywordMap;
     bool mTextChanged;
+    bool mHandleInvalid;
     
     QPushButton *mDateButton;
     QLineEdit *mDateEdit;
--- kdepim/libkdepim/kdateedit.cpp.orig	Thu Jul  4 13:35:12 2002
+++ kdepim/libkdepim/kdateedit.cpp	Thu Jul  4 23:59:44 2002
@@ -94,6 +94,7 @@
   }
   
   mTextChanged = false;
+  mHandleInvalid = false;
 }
 
 KDateEdit::~KDateEdit()
@@ -103,19 +104,28 @@
 
 void KDateEdit::setDate(QDate newDate)
 {
-  if (!newDate.isValid())
+  if (!newDate.isValid() && !mHandleInvalid)
     return;
 
+  QString dateString = "";
+  if(newDate.isValid())
+    dateString = KGlobal::locale()->formatDate( newDate, true );
+
   mTextChanged = false;
   
   // We do not want to generate a signal here, since we explicity setting
   // the date
   bool b = mDateEdit->signalsBlocked();
   mDateEdit->blockSignals(true);
-  mDateEdit->setText(KGlobal::locale()->formatDate( newDate, true ));
+  mDateEdit->setText(dateString);
   mDateEdit->blockSignals(b);
 }
 
+void KDateEdit::setHandleInvalid(bool handleInvalid)
+{
+  mHandleInvalid = handleInvalid;
+}
+
 void KDateEdit::setEnabled(bool on)
 {
   mDateEdit->setEnabled(on);
@@ -126,7 +136,7 @@
 {
   QDate date = readDate();
 
-  if (date.isValid()) {
+  if (date.isValid() || mHandleInvalid) {
     return date;
   } else {
     KNotifyClient::beep();
@@ -215,5 +225,11 @@
 
 void KDateEdit::textChanged(const QString &)
 {
+  if(mDateEdit->text().stripWhiteSpace().isEmpty())
+  {
+    QDate date; //invalid date
+    emit(dateChanged(date));
+  }
+  else
   mTextChanged = true;
 }
--- kdepim/kaddressbook/addresseeeditorwidget.cpp.orig	Thu Jul  4 15:57:08 2002
+++ kdepim/kaddressbook/addresseeeditorwidget.cpp	Thu Jul  4 23:31:05 2002
@@ -327,6 +327,7 @@
   label = new QLabel(i18n("Birthday:"), tab2);
   layout->addWidget(label, 4, 3);
   mBirthdayPicker = new KDateEdit(tab2, "mBirthdayPicker");
+  mBirthdayPicker->setHandleInvalid(true);
   connect(mBirthdayPicker, SIGNAL(dateChanged(QDate)),
           SLOT(dateChanged(QDate)));
   layout->addWidget(mBirthdayPicker, 4, 4);
@@ -334,6 +335,7 @@
   label = new QLabel(i18n("Anniversary:"), tab2);
   layout->addWidget(label, 5, 3);
   mAnniversaryPicker = new KDateEdit(tab2, "mAnniversaryPicker");
+  mAnniversaryPicker->setEnabled(false);
   connect(mAnniversaryPicker, SIGNAL(dateChanged(QDate)),
           SLOT(dateChanged(QDate)));
   layout->addWidget(mAnniversaryPicker, 5, 4);

_______________________________________________
kde-pim mailing list
kde-pim@mail.kde.org
http://mail.kde.org/mailman/listinfo/kde-pim
kde-pim home page at http://pim.kde.org/

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

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