summaryrefslogtreecommitdiffabout
path: root/libkdepim
authorzautrix <zautrix>2005-02-21 12:28:31 (UTC)
committer zautrix <zautrix>2005-02-21 12:28:31 (UTC)
commitb4ebc9c227f986369fe9b0193158f3893a29df08 (patch) (unidiff)
tree6f117a4927fae9142b036751509925b3641b9c3f /libkdepim
parentbb74ffa01010ca364e101e05a6b3e090ae363a0e (diff)
downloadkdepimpi-b4ebc9c227f986369fe9b0193158f3893a29df08.zip
kdepimpi-b4ebc9c227f986369fe9b0193158f3893a29df08.tar.gz
kdepimpi-b4ebc9c227f986369fe9b0193158f3893a29df08.tar.bz2
search fixes
Diffstat (limited to 'libkdepim') (more/less context) (ignore whitespace changes)
-rw-r--r--libkdepim/kdateedit.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/libkdepim/kdateedit.cpp b/libkdepim/kdateedit.cpp
index 2c78ea3..946fc0d 100644
--- a/libkdepim/kdateedit.cpp
+++ b/libkdepim/kdateedit.cpp
@@ -21,164 +21,164 @@
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24 24
25#include <qapplication.h> 25#include <qapplication.h>
26#include <qevent.h> 26#include <qevent.h>
27#include <qlineedit.h> 27#include <qlineedit.h>
28#include <qpixmap.h> 28#include <qpixmap.h>
29#include <qpushbutton.h> 29#include <qpushbutton.h>
30 30
31#include <kdatepicker.h> 31#include <kdatepicker.h>
32#include <kdebug.h> 32#include <kdebug.h>
33#include <kglobal.h> 33#include <kglobal.h>
34#include <kiconloader.h> 34#include <kiconloader.h>
35#include <klocale.h> 35#include <klocale.h>
36#include <kmessagebox.h> 36#include <kmessagebox.h>
37#include <knotifyclient.h> 37#include <knotifyclient.h>
38#include <qpalette.h> 38#include <qpalette.h>
39 39
40#include "kdateedit.h" 40#include "kdateedit.h"
41//#include "kdateedit.moc" 41//#include "kdateedit.moc"
42 42
43KDateEdit::KDateEdit(QWidget *parent, const char *name, bool withoutDP ) 43KDateEdit::KDateEdit(QWidget *parent, const char *name, bool withoutDP )
44 : QHBox(parent, name) 44 : QHBox(parent, name)
45{ 45{
46 dateFormShort = true; 46 dateFormShort = true;
47 withoutDp = withoutDP; 47 withoutDp = withoutDP;
48 mDateEdit = new QLineEdit(this); 48 mDateEdit = new QLineEdit(this);
49 mDateEdit->setText(KGlobal::locale()->formatDate(QDate::currentDate(),dateFormShort)); 49 mDateEdit->setText(KGlobal::locale()->formatDate(QDate::currentDate(),dateFormShort));
50 setFocusProxy(mDateEdit); 50 setFocusProxy(mDateEdit);
51 mDateEdit->installEventFilter(this); 51 mDateEdit->installEventFilter(this);
52 52
53 // Highlight Background and Textcolor 53 // Highlight Background and Textcolor
54 QPalette palette = QWidget::palette(); 54 QPalette palette = QWidget::palette();
55 unsigned char red, green, blue; 55 unsigned char red, green, blue;
56 red = palette.color( QPalette::Normal , QColorGroup::Background ).red() - 10; 56 red = palette.color( QPalette::Normal , QColorGroup::Background ).red() - 10;
57 green = palette.color( QPalette::Normal , QColorGroup::Background ).green() - 10; 57 green = palette.color( QPalette::Normal , QColorGroup::Background ).green() - 10;
58 blue = palette.color( QPalette::Normal , QColorGroup::Background ).blue() - 10; 58 blue = palette.color( QPalette::Normal , QColorGroup::Background ).blue() - 10;
59 palette.setColor( QColorGroup::Highlight, QColor(red,green,blue) ); 59 palette.setColor( QColorGroup::Highlight, QColor(red,green,blue) );
60 palette.setColor( QColorGroup::HighlightedText, palette.color( QPalette::Normal , QColorGroup::Foreground ) ); 60 palette.setColor( QColorGroup::HighlightedText, palette.color( QPalette::Normal , QColorGroup::Foreground ) );
61 mDateEdit->setPalette( palette ); 61 mDateEdit->setPalette( palette );
62 62
63 if ( withoutDP ) { 63 if ( withoutDP ) {
64 mDateFrame = 0; 64 mDateFrame = 0;
65 mDateButton = 0; 65 mDateButton = 0;
66 mDatePicker = 0; 66 mDatePicker = 0;
67 } else { 67 } else {
68 QPixmap pixmap = SmallIcon("smallcal"); 68 QPixmap pixmap = SmallIcon("smallcal");
69 mDateButton = new QPushButton(this); 69 mDateButton = new QPushButton(this);
70 mDateButton->setPixmap(pixmap); 70 mDateButton->setPixmap(pixmap);
71 71
72 mDateFrame = new QVBox(0,0,WType_Popup); 72 mDateFrame = new QVBox(0,0,WType_Popup);
73 // mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 73 // mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
74 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 74 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
75 mDateFrame->setLineWidth(3); 75 mDateFrame->setLineWidth(3);
76 mDateFrame->hide(); 76 mDateFrame->hide();
77 77
78 mDatePicker = new KDatePicker(mDateFrame,QDate::currentDate()); 78 mDatePicker = new KDatePicker(mDateFrame,QDate::currentDate());
79 connect(mDatePicker,SIGNAL(dateEntered(QDate)),SLOT(setDate(QDate))); 79 connect(mDatePicker,SIGNAL(dateEntered(QDate)),SLOT(setDate(QDate)));
80 connect(mDatePicker,SIGNAL(dateEntered(QDate)),SIGNAL(dateChanged(QDate))); 80 connect(mDatePicker,SIGNAL(dateEntered(QDate)),SIGNAL(dateChanged(QDate)));
81 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(setDate(QDate))); 81 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(setDate(QDate)));
82 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SIGNAL(dateChanged(QDate))); 82 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SIGNAL(dateChanged(QDate)));
83 connect(mDatePicker,SIGNAL(dateSelected(QDate)),mDateFrame,SLOT(hide())); 83 connect(mDatePicker,SIGNAL(dateSelected(QDate)),mDateFrame,SLOT(hide()));
84 connect(mDateButton,SIGNAL(clicked()),SLOT(toggleDatePicker())); 84 connect(mDateButton,SIGNAL(clicked()),SLOT(toggleDatePicker()));
85 85 mDateButton->setFocusPolicy( QWidget::NoFocus );
86 //mDateFrame->resize( 400, 300 ); 86 //mDateFrame->resize( 400, 300 );
87 87
88 } 88 }
89 connect(mDateEdit,SIGNAL(returnPressed()),SLOT(lineEnterPressed())); 89 connect(mDateEdit,SIGNAL(returnPressed()),SLOT(lineEnterPressed()));
90 connect(mDateEdit,SIGNAL(textChanged(const QString &)), 90 connect(mDateEdit,SIGNAL(textChanged(const QString &)),
91 SLOT(textChanged(const QString &))); 91 SLOT(textChanged(const QString &)));
92 92
93 // Create the keyword list. This will be used to match against when the user 93 // Create the keyword list. This will be used to match against when the user
94 // enters information. 94 // enters information.
95 mKeywordMap[i18n("tomorrow")] = 1; 95 mKeywordMap[i18n("tomorrow")] = 1;
96 mKeywordMap[i18n("today")] = 0; 96 mKeywordMap[i18n("today")] = 0;
97 mKeywordMap[i18n("yesterday")] = -1; 97 mKeywordMap[i18n("yesterday")] = -1;
98 98
99 /* 99 /*
100 * This loop uses some math tricks to figure out the offset in days 100 * This loop uses some math tricks to figure out the offset in days
101 * to the next date the given day of the week occurs. There 101 * to the next date the given day of the week occurs. There
102 * are two cases, that the new day is >= the current day, which means 102 * are two cases, that the new day is >= the current day, which means
103 * the new day has not occured yet or that the new day < the current day, 103 * the new day has not occured yet or that the new day < the current day,
104 * which means the new day is already passed (so we need to find the 104 * which means the new day is already passed (so we need to find the
105 * day in the next week). 105 * day in the next week).
106 */ 106 */
107 QString dayName; 107 QString dayName;
108 int currentDay = QDate::currentDate().dayOfWeek(); 108 int currentDay = QDate::currentDate().dayOfWeek();
109 for (int i = 1; i <= 7; ++i) 109 for (int i = 1; i <= 7; ++i)
110 { 110 {
111 dayName = KGlobal::locale()->weekDayName(i).lower(); 111 dayName = KGlobal::locale()->weekDayName(i).lower();
112 if (i >= currentDay) 112 if (i >= currentDay)
113 mKeywordMap[dayName] = i - currentDay; 113 mKeywordMap[dayName] = i - currentDay;
114 else 114 else
115 mKeywordMap[dayName] = 7 - currentDay + i; 115 mKeywordMap[dayName] = 7 - currentDay + i;
116 } 116 }
117 117
118 mTextChanged = false; 118 mTextChanged = false;
119 mHandleInvalid = false; 119 mHandleInvalid = false;
120 QWidget::setTabOrder( mDateEdit, mDateButton ); 120 // QWidget::setTabOrder( mDateEdit, mDateButton );
121} 121}
122 122
123KDateEdit::~KDateEdit() 123KDateEdit::~KDateEdit()
124{ 124{
125 delete mDateFrame; 125 delete mDateFrame;
126} 126}
127void KDateEdit::clear() 127void KDateEdit::clear()
128{ 128{
129 bool b = mDateEdit->signalsBlocked(); 129 bool b = mDateEdit->signalsBlocked();
130 mDateEdit->blockSignals(true); 130 mDateEdit->blockSignals(true);
131 mDateEdit->setText(""); 131 mDateEdit->setText("");
132 mDateEdit->blockSignals(b); 132 mDateEdit->blockSignals(b);
133} 133}
134void KDateEdit::setDate(QDate newDate) 134void KDateEdit::setDate(QDate newDate)
135{ 135{
136 if (!newDate.isValid() && !mHandleInvalid) 136 if (!newDate.isValid() && !mHandleInvalid)
137 return; 137 return;
138 if ( readDate() == newDate ) 138 if ( readDate() == newDate )
139 return; 139 return;
140 QString dateString = ""; 140 QString dateString = "";
141 if(newDate.isValid()) 141 if(newDate.isValid())
142 dateString = KGlobal::locale()->formatDate( newDate, dateFormShort ); 142 dateString = KGlobal::locale()->formatDate( newDate, dateFormShort );
143 143
144 mTextChanged = false; 144 mTextChanged = false;
145 145
146 // We do not want to generate a signal here, since we explicity setting 146 // We do not want to generate a signal here, since we explicity setting
147 // the date 147 // the date
148 bool b = mDateEdit->signalsBlocked(); 148 bool b = mDateEdit->signalsBlocked();
149 mDateEdit->blockSignals(true); 149 mDateEdit->blockSignals(true);
150 mDateEdit->setText(dateString); 150 mDateEdit->setText(dateString);
151 mDateEdit->blockSignals(b); 151 mDateEdit->blockSignals(b);
152} 152}
153 153
154void KDateEdit::setDate( QDate date,int *cpos,const int key ,const bool dateFormShort) 154void KDateEdit::setDate( QDate date,int *cpos,const int key ,const bool dateFormShort)
155{ 155{
156 QString dateForm = dateFormShort ? 156 QString dateForm = dateFormShort ?
157 KGlobal::locale()->dateFormatShort() : 157 KGlobal::locale()->dateFormatShort() :
158 KGlobal::locale()->dateFormat(); 158 KGlobal::locale()->dateFormat();
159 159
160 int begin = dateForm.find("%"); 160 int begin = dateForm.find("%");
161 int space = 0; 161 int space = 0;
162 int allStrLength = 0; 162 int allStrLength = 0;
163 int strLength = 0; 163 int strLength = 0;
164 int repeat = 0; 164 int repeat = 0;
165 165
166 // witch? Day, Month or Year switch? 166 // witch? Day, Month or Year switch?
167 while(1){ 167 while(1){
168 switch ( dateForm.at(begin + 1).latin1() ) 168 switch ( dateForm.at(begin + 1).latin1() )
169 { 169 {
170 case 'd':// 16 (month day) 170 case 'd':// 16 (month day)
171 strLength = 2; //Ok 171 strLength = 2; //Ok
172 break; 172 break;
173 case 'm':// 01 (month) 173 case 'm':// 01 (month)
174 strLength = 2; //Ok 174 strLength = 2; //Ok
175 break; 175 break;
176 case 'a':// Mon (Weekday) 176 case 'a':// Mon (Weekday)
177 strLength = KGlobal::locale()->weekDayName(date.dayOfWeek(), true).length(); 177 strLength = KGlobal::locale()->weekDayName(date.dayOfWeek(), true).length();
178 break; 178 break;
179 case 'A':// Monday (Weekday) 179 case 'A':// Monday (Weekday)
180 strLength = KGlobal::locale()->weekDayName(date.dayOfWeek(), false).length(); 180 strLength = KGlobal::locale()->weekDayName(date.dayOfWeek(), false).length();
181 break; 181 break;
182 case 'b':// Jan (monthName) 182 case 'b':// Jan (monthName)
183 strLength = KGlobal::locale()->monthName(date.month(), true).length(); 183 strLength = KGlobal::locale()->monthName(date.month(), true).length();
184 break; 184 break;
@@ -401,98 +401,100 @@ void KDateEdit::toggleDatePicker()
401 } else { 401 } else {
402 mDatePicker->setDate(QDate::currentDate()); 402 mDatePicker->setDate(QDate::currentDate());
403 } 403 }
404 mDateFrame->show(); 404 mDateFrame->show();
405 } 405 }
406} 406}
407 407
408 408
409void KDateEdit::lineEnterPressed() 409void KDateEdit::lineEnterPressed()
410{ 410{
411 QDate date = readDate(); 411 QDate date = readDate();
412 412
413 if(date.isValid()) 413 if(date.isValid())
414 { 414 {
415 // Update the edit. This is needed if the user has entered a 415 // Update the edit. This is needed if the user has entered a
416 // word rather than the actual date. 416 // word rather than the actual date.
417 setDate(date); 417 setDate(date);
418 emit(dateChanged(date)); 418 emit(dateChanged(date));
419 emit returnPressed(); 419 emit returnPressed();
420 } 420 }
421 else 421 else
422 { 422 {
423 if ( withoutDp ) { 423 if ( withoutDp ) {
424 KNotifyClient::beep(); 424 KNotifyClient::beep();
425 } else { 425 } else {
426 if ( !mDateEdit->text().isEmpty() ) { 426 if ( !mDateEdit->text().isEmpty() ) {
427 mTextChanged = false; 427 mTextChanged = false;
428 QString text = i18n( "You entered an invalid date!\n Will use current date instead." ); 428 QString text = i18n( "You entered an invalid date!\n Will use current date instead." );
429 if ( isVisible() ) 429 if ( isVisible() )
430 if ( KMessageBox::warningContinueCancel( 0, text ) == KMessageBox::Continue ) { 430 if ( KMessageBox::warningContinueCancel( 0, text ) == KMessageBox::Continue ) {
431 setDate( QDate::currentDate() ); 431 setDate( QDate::currentDate() );
432 emit dateChanged( QDate::currentDate() ); 432 emit dateChanged( QDate::currentDate() );
433 } 433 }
434 } 434 }
435 } 435 }
436 } 436 }
437} 437}
438 438
439bool KDateEdit::inputIsValid() 439bool KDateEdit::inputIsValid()
440{ 440{
441 return readDate().isValid(); 441 return readDate().isValid();
442} 442}
443 443
444QDate KDateEdit::readDate() const 444QDate KDateEdit::readDate() const
445{ 445{
446 QString text = mDateEdit->text(); 446 QString text = mDateEdit->text();
447 QDate date; 447 QDate date;
448 448
449 if (mKeywordMap.contains(text.lower())) 449 if (mKeywordMap.contains(text.lower()))
450 { 450 {
451 date = QDate::currentDate().addDays(mKeywordMap[text.lower()]); 451 date = QDate::currentDate().addDays(mKeywordMap[text.lower()]);
452 } 452 }
453 else 453 else
454 { 454 {
455 date = KGlobal::locale()->readDate(text); 455 date = KGlobal::locale()->readDate(text);
456 } 456 }
457 457
458 return date; 458 return date;
459} 459}
460 460
461bool KDateEdit::eventFilter(QObject *, QEvent *e) 461bool KDateEdit::eventFilter(QObject *, QEvent *e)
462{ 462{
463 // We only process the focus out event if the text has changed 463 // We only process the focus out event if the text has changed
464 // since we got focus 464 // since we got focus
465 if ((e->type() == QEvent::FocusOut) && mTextChanged) 465 if ((e->type() == QEvent::FocusOut) )
466 { 466 {
467 lineEnterPressed(); 467 if ( mTextChanged ) {
468 mTextChanged = false; 468 lineEnterPressed();
469 mTextChanged = false;
470 }
469 } 471 }
470 // switch dateFormShort by double klick with mouse 472 // switch dateFormShort by double klick with mouse
471 else if (e->type() == QEvent::MouseButtonDblClick) 473 else if (e->type() == QEvent::MouseButtonDblClick)
472 { 474 {
473 toggleDateFormat(); 475 toggleDateFormat();
474 } 476 }
475 else if (e->type() == QEvent::FocusIn) 477 else if (e->type() == QEvent::FocusIn)
476 { 478 {
477 maxDay = readDate().day(); 479 maxDay = readDate().day();
478 } 480 }
479 481
480 return false; 482 return false;
481} 483}
482void KDateEdit::toggleDateFormat() 484void KDateEdit::toggleDateFormat()
483{ 485{
484 dateFormShort = ! dateFormShort; 486 dateFormShort = ! dateFormShort;
485 mDateEdit->setText(KGlobal::locale()->formatDate(readDate(),dateFormShort)); 487 mDateEdit->setText(KGlobal::locale()->formatDate(readDate(),dateFormShort));
486 488
487} 489}
488 490
489void KDateEdit::textChanged(const QString &) 491void KDateEdit::textChanged(const QString &)
490{ 492{
491 if(mHandleInvalid && mDateEdit->text().stripWhiteSpace().isEmpty()) { 493 if(mHandleInvalid && mDateEdit->text().stripWhiteSpace().isEmpty()) {
492 QDate date; //invalid date 494 QDate date; //invalid date
493 emit(dateChanged(date)); 495 emit(dateChanged(date));
494 } else { 496 } else {
495 mTextChanged = true; 497 mTextChanged = true;
496 } 498 }
497 maxDay = readDate().day(); 499 maxDay = readDate().day();
498} 500}