author | zecke <zecke> | 2002-04-15 22:40:49 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-04-15 22:40:49 (UTC) |
commit | 38052b763f7d248023024487a7e645b46637c76b (patch) (side-by-side diff) | |
tree | dc6131bc2f56ea2aaab7c75364a979d117a52915 | |
parent | a91544d04ed391bbdc0c6f95ff8a80d35190788c (diff) | |
download | opie-38052b763f7d248023024487a7e645b46637c76b.zip opie-38052b763f7d248023024487a7e645b46637c76b.tar.gz opie-38052b763f7d248023024487a7e645b46637c76b.tar.bz2 |
-fix handling of the kewl timepicker
click in a lineedit and the focus will change
ARDO FEEL FREE TO REVERT IT WANTED TO GET THIS INTO THE FEED
-rw-r--r-- | core/pim/datebook/dateentryimpl.cpp | 24 | ||||
-rw-r--r-- | core/pim/datebook/dateentryimpl.h | 7 |
2 files changed, 28 insertions, 3 deletions
diff --git a/core/pim/datebook/dateentryimpl.cpp b/core/pim/datebook/dateentryimpl.cpp index 403378e..f2f17c6 100644 --- a/core/pim/datebook/dateentryimpl.cpp +++ b/core/pim/datebook/dateentryimpl.cpp @@ -8,82 +8,97 @@ ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "dateentryimpl.h" #include "repeatentry.h" #include <qpe/qpeapplication.h> #include <qpe/categoryselect.h> #include <qpe/datebookmonth.h> #include <qpe/global.h> #include <qpe/timeconversion.h> #include <qpe/timestring.h> #include <qpe/tzselect.h> +#include <qevent.h> #include <qcheckbox.h> #include <qcombobox.h> #include <qlayout.h> #include <qlineedit.h> #include <qmultilineedit.h> #include <qpopupmenu.h> #include <qscrollview.h> #include <qspinbox.h> #include <qtoolbutton.h> #include "timepicker.h" #include <stdlib.h> /* * Constructs a DateEntry which is a child of 'parent', with the * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * TRUE to construct a modal dialog. */ DateEntry::DateEntry( bool startOnMonday, const QDateTime &start, const QDateTime &end, bool whichClock, QWidget* parent, const char* name ) : DateEntryBase( parent, name ), ampm( whichClock ), startWeekOnMonday( startOnMonday ) { init(); setDates(start,end); setFocusProxy(comboDescription); } +bool DateEntry::eventFilter(QObject *obj, QEvent *ev ) +{ + if( ev->type() == QEvent::FocusIn ){ + if( obj == comboStart ){ + TextLabel3_2->setText( tr("Start Time" ) ); + m_showStart= true; + }else if( obj == comboEnd ){ + TextLabel3_2->setText( tr("End Time") ); + m_showStart = false; + } + } + return false; +} + static void addOrPick( QComboBox* combo, const QString& t ) { // Pick an item if one excists for (int i=0; i<combo->count(); i++) { if ( combo->text(i) == t ) { combo->setCurrentItem(i); return; } } // Else add one combo->insertItem(t); combo->setCurrentItem(combo->count()-1); } DateEntry::DateEntry( bool startOnMonday, const Event &event, bool whichClock, QWidget* parent, const char* name ) : DateEntryBase( parent, name ), ampm( whichClock ), startWeekOnMonday( startOnMonday ) { init(); setDates(event.start(),event.end()); comboCategory->setCategories( event.categories(), "Calendar", tr("Calendar") ); @@ -165,48 +180,51 @@ void DateEntry::init() startPicker = new DateBookMonth( m1, 0, TRUE ); m1->insertItem( startPicker ); buttonStart->setPopup( m1 ); connect( startPicker, SIGNAL( dateClicked( int, int, int ) ), this, SLOT( startDateChanged( int, int, int ) ) ); //Let start button change both start and end dates connect( startPicker, SIGNAL( dateClicked( int, int, int ) ), this, SLOT( endDateChanged( int, int, int ) ) ); connect( qApp, SIGNAL( clockChanged( bool ) ), this, SLOT( slotChangeClock( bool ) ) ); connect( qApp, SIGNAL(weekChanged(bool)), this, SLOT(slotChangeStartOfWeek(bool)) ); QPopupMenu *m2 = new QPopupMenu( this ); endPicker = new DateBookMonth( m2, 0, TRUE ); m2->insertItem( endPicker ); buttonEnd->setPopup( m2 ); connect( endPicker, SIGNAL( dateClicked( int, int, int ) ), this, SLOT( endDateChanged( int, int, int ) ) ); connect(timePickerStart, SIGNAL( timeChanged(const QTime &) ), this, SLOT( startTimePicked(const QTime &) )); editNote->setFixedVisibleLines(3); + // install eventFilters + comboEnd->installEventFilter( this ); + comboStart->installEventFilter( this ); } /* * Destroys the object and frees any allocated resources */ DateEntry::~DateEntry() { // no need to delete child widgets, Qt does it all for us //cout << "Del: " << comboStart->currentText() << endl; } /* * public slot */ void DateEntry::endDateChanged( int y, int m, int d ) { endDate.setYMD( y, m, d ); if ( endDate < startDate ) { endDate = startDate; } buttonEnd->setText( TimeString::shortDate( endDate ) ); endPicker->setDate( endDate.year(), endDate.month(), endDate.day() ); @@ -283,50 +301,56 @@ void DateEntry::startDateChanged( int y, int m, int d ) // our pickers must be reset... startPicker->setDate( y, m, d ); endPicker->setDate( y, m, d ); } /* * public slot */ void DateEntry::startTimeEdited( const QString &s ) { startTimeChanged(parseTime(s,ampm)); updateTimeEdit(false,true); timePickerStart->setHour(startTime.hour()); timePickerStart->setMinute(startTime.minute()); } void DateEntry::startTimeChanged( const QTime &t ) { int duration=startTime.secsTo(endTime); startTime = t; endTime=t.addSecs(duration); } void DateEntry::startTimePicked( const QTime &t ) { + if(m_showStart ){ startTimeChanged(t); updateTimeEdit(true,true); + }else{ + endTime = t; + updateTimeEdit(false, true ); + + } } /* * public slot */ void DateEntry::typeChanged( const QString &s ) { bool b = s != "All Day"; buttonStart->setEnabled( b ); comboStart->setEnabled( b ); comboEnd->setEnabled( b ); } void DateEntry::slotRepeat() { // Work around for compiler Bug.. RepeatEntry *e; // it is better in my opinion to just grab this from the mother, // since, this dialog doesn't need to keep track of it... if ( rp.type != Event::NoRepeat ) e = new RepeatEntry( startWeekOnMonday, rp, startDate, this); else e = new RepeatEntry( startWeekOnMonday, startDate, this ); diff --git a/core/pim/datebook/dateentryimpl.h b/core/pim/datebook/dateentryimpl.h index bde3119..4eb24b4 100644 --- a/core/pim/datebook/dateentryimpl.h +++ b/core/pim/datebook/dateentryimpl.h @@ -21,54 +21,55 @@ #define DATEENTRY_H #include "dateentry.h" #include <qpe/event.h> #include <qdatetime.h> class DateBookMonth; class DateEntry : public DateEntryBase { Q_OBJECT public: DateEntry( bool startOnMonday, const QDateTime &start, const QDateTime &end, bool whichClock = FALSE, QWidget* parent = 0, const char* name = 0 ); DateEntry( bool startOnMonday, const Event &event, bool whichCLock = FALSE, QWidget* parent = 0, const char* name = 0 ); ~DateEntry(); Event event(); void setAlarmEnabled( bool alarmPreset, int presetTime, Event::SoundTypeChoice ); - + virtual bool eventFilter( QObject *, QEvent * ); public slots: void endDateChanged( int, int, int ); void endTimeChanged( const QString & ); void endTimeChanged( const QTime & ); void startDateChanged(int, int, int); void startTimeEdited( const QString & ); void startTimeChanged( const QTime & ); void startTimePicked( const QTime & ); void typeChanged( const QString & ); void slotRepeat(); void slotChangeClock( bool ); void slotChangeStartOfWeek( bool ); private: void init(); void initCombos(); void setDates( const QDateTime& s, const QDateTime& e ); void setRepeatLabel(); void updateTimeEdit(bool,bool); DateBookMonth *startPicker, *endPicker; QDate startDate, endDate; QTime startTime, endTime; Event::RepeatPattern rp; - bool ampm; - bool startWeekOnMonday; + bool ampm:1; + bool startWeekOnMonday:1; + bool m_showStart:1; }; #endif // DATEENTRY_H |