summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt5
-rw-r--r--korganizer/koeditorgeneralevent.cpp17
-rw-r--r--korganizer/koeditorgeneraltodo.cpp12
-rw-r--r--korganizer/ktimeedit.cpp82
-rw-r--r--korganizer/ktimeedit.h3
-rw-r--r--microkde/kdecore/klocale.cpp4
6 files changed, 21 insertions, 102 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index c8293b2..5d8ef41 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -12,16 +12,21 @@ Added sync config options for filters on outgoing data.
Please read the updated SyncHowTo about the new filter settings.
These filter settings make it now possible to sync with shared
calendars without writing back private or confidential data
(via the outgoing filters).
To sync only with particular parts of a shared calendar,
the incoming filter settings can be used.
An example can be found in the SyncHowTo.
+KO/Pi:
+The timeedit input has a pulldown list for times.
+If opened, this pulldown list should now has the right time highlighted.
+
+
********** VERSION 1.9.17 ************
KO/Pi:
Fixed that tooltips were not updated after moving an item in agenda view.
Fixed a bug in sorting start date for recurring events in list view.
Changed the left button in todo viewer from "Agenda" to "Set completed".
This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View.
diff --git a/korganizer/koeditorgeneralevent.cpp b/korganizer/koeditorgeneralevent.cpp
index fc5be71..30b792b 100644
--- a/korganizer/koeditorgeneralevent.cpp
+++ b/korganizer/koeditorgeneralevent.cpp
@@ -389,33 +389,16 @@ void KOEditorGeneralEvent::emitDateTimeStr()
QString str = i18n("From: %1 To: %2 %3").arg(from).arg(to)
.arg(mDurationLabel->text());
emit dateTimeStrChanged(str);
}
bool KOEditorGeneralEvent::validateInput()
{
-// kdDebug() << "KOEditorGeneralEvent::validateInput()" << endl;
-
- if (!mNoTimeButton->isChecked()) {
- if (!mStartTimeEdit->inputIsValid()) {
- KMessageBox::sorry( 0,
- i18n("Please specify a valid start time, for example '%1'.")
- .arg( KGlobal::locale()->formatTime( QTime::currentTime() ) ) );
- return false;
- }
-
- if (!mEndTimeEdit->inputIsValid()) {
- KMessageBox::sorry( 0,
- i18n("Please specify a valid end time, for example '%1'.")
- .arg( KGlobal::locale()->formatTime( QTime::currentTime() ) ) );
- return false;
- }
- }
if (!mStartDateEdit->inputIsValid()) {
KMessageBox::sorry( 0,
i18n("Please specify a valid start date, for example '%1'.")
.arg( KGlobal::locale()->formatDate( QDate::currentDate() ) ) );
return false;
}
diff --git a/korganizer/koeditorgeneraltodo.cpp b/korganizer/koeditorgeneraltodo.cpp
index 7db7da0..158a7d3 100644
--- a/korganizer/koeditorgeneraltodo.cpp
+++ b/korganizer/koeditorgeneraltodo.cpp
@@ -379,35 +379,23 @@ void KOEditorGeneralTodo::showAlarm()
bool KOEditorGeneralTodo::validateInput()
{
if (mDueCheck->isChecked()) {
if (!mDueDateEdit->inputIsValid()) {
KMessageBox::sorry(0,i18n("Please specify a valid due date."));
return false;
}
- if (mTimeButton->isChecked()) {
- if (!mDueTimeEdit->inputIsValid()) {
- KMessageBox::sorry(0,i18n("Please specify a valid due time."));
- return false;
- }
- }
}
if (mStartCheck->isChecked()) {
if (!mStartDateEdit->inputIsValid()) {
KMessageBox::sorry(0,i18n("Please specify a valid start date."));
return false;
}
- if (mTimeButton->isChecked()) {
- if (!mStartTimeEdit->inputIsValid()) {
- KMessageBox::sorry(0,i18n("Please specify a valid start time."));
- return false;
- }
- }
}
if (mStartCheck->isChecked() && mDueCheck->isChecked()) {
QDateTime startDate;
QDateTime dueDate;
startDate.setDate(mStartDateEdit->date());
dueDate.setDate(mDueDateEdit->date());
if (mTimeButton->isChecked()) {
diff --git a/korganizer/ktimeedit.cpp b/korganizer/ktimeedit.cpp
index f5a1c50..5222ac9 100644
--- a/korganizer/ktimeedit.cpp
+++ b/korganizer/ktimeedit.cpp
@@ -20,77 +20,39 @@
with any edition of Qt, and distribute the resulting executable,
without including the source code for Qt in the source distribution.
*/
#include <qkeycode.h>
#include <qcombobox.h>
#include <qdatetime.h>
#include <qlineedit.h>
+#include <qlistbox.h>
#include <qapplication.h>
#include <kmessagebox.h>
#include <kglobal.h>
#include <kdebug.h>
#include <klocale.h>
#include <kpimglobalprefs.h>
#include "ktimeedit.h"
#include "koprefs.h"
#include <qvalidator.h>
// Validator for a time value with only hours and minutes (no seconds)
// Mostly locale aware. Author: David Faure <faure@kde.org>
-class KOTimeValidator : public QValidator
-{
-public:
- KOTimeValidator(QWidget* parent, const char* name=0) : QValidator(parent, name) {}
-
- virtual State validate(QString& str, int& /*cursorPos*/) const
- {
- return Acceptable;
- bool ok = false;
- // TODO use KLocale::WithoutSeconds in HEAD
- /*QTime time =*/ KGlobal::locale()->readTime(str, &ok);
- if ( ok )
- return Acceptable;
- // readTime doesn't help knowing when the string is "Intermediate".
- int length = str.length();
- if ( !str ) // empty string?
- return Invalid; // there should always be a ':' in it, right?
- // HACK. Not fully locale aware etc. (esp. the separator is '.' in sv_SE...)
- QChar sep = ':';
- // I want to allow "HH:", ":MM" and ":" to make editing easier
- if ( str[0] == sep )
- {
- if ( length == 1 ) // just ":"
- return Intermediate;
- QString minutes = str.mid(1);
- int m = minutes.toInt(&ok);
- if ( ok && m >= 0 && m < 60 )
- return Intermediate;
- } else if ( str.at(str.length()-1) == sep )
- {
- QString hours = str.left(length-1);
- int h = hours.toInt(&ok);
- if ( ok && h >= 0 && h < 24 )
- return Intermediate;
- }
- return Invalid;
- }
-};
// KTimeWidget/QTimeEdit provide nicer editing, but don't provide a combobox.
// Difficult to get all in one...
// But Qt-3.2 will offer QLineEdit::setMask, so a "99:99" mask would help.
KOTimeEdit::KOTimeEdit(QWidget *parent, QTime qt, const char *name)
: QComboBox(TRUE, parent, name)
{
setInsertionPolicy(NoInsertion);
- setValidator( new KOTimeValidator( this ) );
mFlagKeyPressed = false;
if ( QApplication::desktop()->width() < 650 )
setSizeLimit ( 6 );
mTime = qt;
// mNoTimeString = i18n("No Time");
// insertItem( mNoTimeString );
@@ -140,38 +102,32 @@ bool KOTimeEdit::hasTime() const
if ( currentText().isEmpty() ) return false;
//if ( currentText() == mNoTimeString ) return false;
return true; // always
}
QTime KOTimeEdit::getTime() const
{
- //kdDebug(5850) << "KOTimeEdit::getTime(), currentText() = " << currentText() << endl;
- // TODO use KLocale::WithoutSeconds in HEAD
- QTime time = KGlobal::locale()->readTime(currentText());
- // kdDebug(5850) << "KOTimeEdit::getTime(): " << time.toString() << endl;
- return time;
+ return KGlobal::locale()->readTime(currentText());
}
/*
QSizePolicy KOTimeEdit::sizePolicy() const
{
// Set size policy to Fixed, because edit cannot contain more text than the
// string representing the time. It doesn't make sense to provide more space.
QSizePolicy sizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
return sizePolicy;
}
*/
void KOTimeEdit::setTime(QTime newTime)
{
if ( mTime != newTime )
{
- kdDebug(5850) << "KOTimeEdit::setTime(): " << newTime.toString() << endl;
-
mTime = newTime;
updateText();
}
}
void KOTimeEdit::activ(int i)
{
@@ -374,26 +330,28 @@ void KOTimeEdit::keyPressEvent(QKeyEvent *e)
// rest
case Key_Prior:
subTime(QTime(1,0,0));
break;
case Key_Next:
addTime(QTime(1,0,0));
break;
case Key_Backspace:
+ qDebug("+++++++++++back ");
if ( cpos > 0) {
if ( cpos == 3 )
--cpos;
if ( cpos > 5)
cpos = 5;
text.at( cpos-1 ) = '0';
lineEdit()->setText( text );
lineEdit()->setCursorPosition(--cpos);
setSelect ( cpos , 1 );
changedText();
+ qDebug("---------back ");
}
break;
} // switch arrows
// if cursor at string end, alltext market and keyEvent don't ArrowLeft -> deselect and cpos
if( cpos > 4 && lineEdit()->markedText().length() == 5 && e->key() != Key_Left ) {
lineEdit()->deselect();
cpos = 0;
@@ -481,48 +439,36 @@ void KOTimeEdit::keyPressEvent(QKeyEvent *e)
}
}
}
void KOTimeEdit::updateText()
{
-// kdDebug(5850) << "KOTimeEdit::updateText() " << endl
+ listBox()->blockSignals( true );
+ blockSignals( true );
QString s = KGlobal::locale()->formatTime(mTime);
// Set the text but without emitting signals, nor losing the cursor position
QLineEdit *line = lineEdit();
line->blockSignals(true);
int pos = line->cursorPosition();
- // qDebug(" settext *%s* ", s.latin1());
- line->setText(s);
- // line->setCursorPosition(pos);
-// line->blockSignals(false);
-
-// kdDebug(5850) << "KOTimeEdit::updateText(): " << s << endl;
-
- if (!mTime.minute() % 15) {
setCurrentItem((mTime.hour()*4)+(mTime.minute()/15));
- }
+ line->setText(s);
line->setCursorPosition(pos);
line->blockSignals(false);
+ blockSignals( false );
+ listBox()->blockSignals( false );
}
-bool KOTimeEdit::inputIsValid() const
-{
- int cursorPos = lineEdit()->cursorPosition();
- QString str = currentText();
- return validator()->validate( str, cursorPos ) == QValidator::Acceptable;
-}
-
void KOTimeEdit::changedText()
{
- //kdDebug(5850) << "KOTimeEdit::changedText()" << endl;
- if ( inputIsValid() )
- {
int pos = lineEdit()->cursorPosition();
mTime = getTime();
- // updateText();
+ blockSignals( true );
+ QString text = lineEdit()->text();
+ setCurrentItem((mTime.hour()*4)+(mTime.minute()/15));
+ lineEdit()->setText(text);
+ blockSignals( false );
emit timeChanged(mTime);
lineEdit()->setCursorPosition(pos);
}
-}
diff --git a/korganizer/ktimeedit.h b/korganizer/ktimeedit.h
index 7923070..b3d842d 100644
--- a/korganizer/ktimeedit.h
+++ b/korganizer/ktimeedit.h
@@ -53,19 +53,16 @@ class KOTimeEdit : public QComboBox
bool hasTime() const;
/** returns the time that is currently set in the timeLineEdit. */
QTime getTime() const;
/** returns the prefered size policy of the KOTimeEdit */
//QSizePolicy sizePolicy() const;
- /** return true if input is a valid time and false if not */
- bool inputIsValid() const;
-
signals:
/**
Emitted every time the time displayed changes. "newt" is the new
time.
*/
void timeChanged(QTime newt);
public slots:
diff --git a/microkde/kdecore/klocale.cpp b/microkde/kdecore/klocale.cpp
index d7e384c..7f31ab1 100644
--- a/microkde/kdecore/klocale.cpp
+++ b/microkde/kdecore/klocale.cpp
@@ -557,19 +557,19 @@ QDate KLocale::readDate(const QString &intstr, const QString &fmt, bool* ok) con
error:
if (ok) *ok = false;
return QDate(); // invalid date
}
QTime KLocale::readTime(const QString &intstr, bool *ok) const
{
QTime _time;
- _time = readTime(intstr, true, ok);
+ _time = readTime(intstr, false, ok);
if (_time.isValid()) return _time;
- return readTime(intstr, false, ok);
+ return readTime(intstr, true, ok);
}
QTime KLocale::readTime(const QString &intstr, bool seconds, bool *ok) const
{
QString str = intstr.simplifyWhiteSpace().lower();
QString Format = timeFormat().simplifyWhiteSpace();
if (!seconds)
Format.replace(QRegExp(QString::fromLatin1(".%S")), QString::null);