[Bug 260267] calendar configuration: a lot of time fields not changable
Tobias Koenig
tokoe at kde.org
Wed Jan 12 09:24:23 GMT 2011
https://bugs.kde.org/show_bug.cgi?id=260267
Tobias Koenig <tokoe at kde.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|REOPENED |RESOLVED
Resolution| |FIXED
--- Comment #5 from Tobias Koenig <tokoe kde org> 2011-01-12 10:23:38 ---
commit f47b350036d750d984b2e7eee290de43502e156d
branch master
Author: Tobias Koenig <tokoe at kde.org>
Date: Wed Jan 12 10:25:27 2011 +0100
Use QML Clock in calendar config dialog
Open the QML Clock like it's done in the 'New Appointment'
dialog when changing a time.
BUG: 260267
diff --git a/mobile/calendar/ConfigDialog.qml
b/mobile/calendar/ConfigDialog.qml
index 99671ac..07ba08e 100644
--- a/mobile/calendar/ConfigDialog.qml
+++ b/mobile/calendar/ConfigDialog.qml
@@ -34,6 +34,30 @@ QML.Rectangle {
configWidget.load();
}
+ QML.Connections {
+ target: configWidget
+ onShowClockWidget: {
+ clockWidget.expand()
+ clockWidget.okEnabled = false
+
+ // set the initial values
+ clockWidget.hours = hour;
+ clockWidget.minutes = minute;
+ }
+ }
+
+ QML.Connections {
+ target: clockWidget
+ onTimeChanged: {
+ configWidget.setNewTime( hour, minute );
+ }
+ }
+
+ KPIM.ClockDialog {
+ id: clockWidget
+ anchors.fill: parent
+ }
+
KPIM.DecoratedFlickable {
id: configWidgetBox
anchors.fill: parent
diff --git a/mobile/calendar/configwidget.cpp
b/mobile/calendar/configwidget.cpp
index aa1a9ea..e117de1 100644
--- a/mobile/calendar/configwidget.cpp
+++ b/mobile/calendar/configwidget.cpp
@@ -32,32 +32,32 @@ using namespace CalendarSupport;
ConfigWidget::ConfigWidget( QWidget *parent )
: QWidget( parent )
{
- Ui_ConfigWidget ui;
- ui.setupUi( this );
-
- ui.kcfg_DayBegins->setProperty( "kcfg_property", QByteArray( "dateTime" ) );
- ui.kcfg_DailyStartingHour->setProperty( "kcfg_property", QByteArray(
"dateTime" ) );
- ui.kcfg_DailyEndingHour->setProperty( "kcfg_property", QByteArray(
"dateTime" ) );
- ui.kcfg_DefaultAppointmentTime->setProperty( "kcfg_property", QByteArray(
"dateTime" ) );
-
- ui.kcfg_AgendaViewColorUsage->addItem( i18n( "Category inside, calendar
outside" ) );
- ui.kcfg_AgendaViewColorUsage->addItem( i18n( "Calendar inside, category
outside" ) );
- ui.kcfg_AgendaViewColorUsage->addItem( i18n( "Only category" ) );
- ui.kcfg_AgendaViewColorUsage->addItem( i18n( "Only calendar" ) );
-
- ui.kcfg_MonthViewColorUsage->addItem( i18n( "Category inside, calendar
outside" ) );
- ui.kcfg_MonthViewColorUsage->addItem( i18n( "Calendar inside, category
outside" ) );
- ui.kcfg_MonthViewColorUsage->addItem( i18n( "Only category" ) );
- ui.kcfg_MonthViewColorUsage->addItem( i18n( "Only calendar" ) );
-
- mHolidayCombo = ui.kcfg_HolidayRegion;
- mWorkDays << ui.workingPeriodMonday;
- mWorkDays << ui.workingPeriodTuesday;
- mWorkDays << ui.workingPeriodWednesday;
- mWorkDays << ui.workingPeriodThursday;
- mWorkDays << ui.workingPeriodFriday;
- mWorkDays << ui.workingPeriodSaturday;
- mWorkDays << ui.workingPeriodSunday;
+ mUi = new Ui_ConfigWidget;
+ mUi->setupUi( this );
+
+ mUi->kcfg_DayBegins->setProperty( "kcfg_property", QByteArray( "dateTime" )
);
+ mUi->kcfg_DailyStartingHour->setProperty( "kcfg_property", QByteArray(
"dateTime" ) );
+ mUi->kcfg_DailyEndingHour->setProperty( "kcfg_property", QByteArray(
"dateTime" ) );
+ mUi->kcfg_DefaultAppointmentTime->setProperty( "kcfg_property", QByteArray(
"dateTime" ) );
+
+ mUi->kcfg_AgendaViewColorUsage->addItem( i18n( "Category inside, calendar
outside" ) );
+ mUi->kcfg_AgendaViewColorUsage->addItem( i18n( "Calendar inside, category
outside" ) );
+ mUi->kcfg_AgendaViewColorUsage->addItem( i18n( "Only category" ) );
+ mUi->kcfg_AgendaViewColorUsage->addItem( i18n( "Only calendar" ) );
+
+ mUi->kcfg_MonthViewColorUsage->addItem( i18n( "Category inside, calendar
outside" ) );
+ mUi->kcfg_MonthViewColorUsage->addItem( i18n( "Calendar inside, category
outside" ) );
+ mUi->kcfg_MonthViewColorUsage->addItem( i18n( "Only category" ) );
+ mUi->kcfg_MonthViewColorUsage->addItem( i18n( "Only calendar" ) );
+
+ mHolidayCombo = mUi->kcfg_HolidayRegion;
+ mWorkDays << mUi->workingPeriodMonday;
+ mWorkDays << mUi->workingPeriodTuesday;
+ mWorkDays << mUi->workingPeriodWednesday;
+ mWorkDays << mUi->workingPeriodThursday;
+ mWorkDays << mUi->workingPeriodFriday;
+ mWorkDays << mUi->workingPeriodSaturday;
+ mWorkDays << mUi->workingPeriodSunday;
mManager = new KConfigDialogManager( this, Settings::self() );
@@ -86,15 +86,30 @@ ConfigWidget::ConfigWidget( QWidget *parent )
mHolidayCombo->addItem( it.key(), it.value() );
}
+ mUi->kcfg_DayBegins->installEventFilter( this );
+ mUi->kcfg_DailyStartingHour->installEventFilter( this );
+ mUi->kcfg_DailyEndingHour->installEventFilter( this );
+ mUi->kcfg_DefaultAppointmentTime->installEventFilter( this );
+
+ connect( this, SIGNAL( dayBeginsFocus( QObject* ) ), SLOT( showClock(
QObject* ) ) );
+ connect( this, SIGNAL( dailyStartingHourFocus( QObject* ) ), SLOT(
showClock( QObject* ) ) );
+ connect( this, SIGNAL( dailyEndingHourFocus( QObject* ) ), SLOT( showClock(
QObject* ) ) );
+ connect( this, SIGNAL( defaultAppointmentTimeFocus( QObject* ) ), SLOT(
showClock( QObject* ) ) );
+
// UI workarounds for Maemo5
#ifdef Q_WS_MAEMO_5
- ui.kcfg_DayBegins->setEditable( false );
- ui.kcfg_DailyStartingHour->setEditable( false );
- ui.kcfg_DailyEndingHour->setEditable( false );
- ui.kcfg_DefaultAppointmentTime->setEditable( false );
+ mUi->kcfg_DayBegins->setEditable( false );
+ mUi->kcfg_DailyStartingHour->setEditable( false );
+ mUi->kcfg_DailyEndingHour->setEditable( false );
+ mUi->kcfg_DefaultAppointmentTime->setEditable( false );
#endif
}
+ConfigWidget::~ConfigWidget()
+{
+ delete mUi;
+}
+
void ConfigWidget::setPreferences( const EventViews::PrefsPtr &preferences )
{
mViewPrefs = preferences;
@@ -218,10 +233,50 @@ void ConfigWidget::saveToExternalSettings()
mViewPrefs->writeConfig();
}
+void ConfigWidget::showClock( QObject *object )
+{
+ setFocus();
+ mFocusedTimeWidget = qobject_cast<KPIM::KTimeEdit*>( object );
+ if ( !mFocusedTimeWidget )
+ return;
+
+ const QTime time = mFocusedTimeWidget->time();
+ emit showClockWidget( time.hour(), time.minute() );
+}
+
+void ConfigWidget::setNewTime( int hour, int minute )
+{
+ if ( mFocusedTimeWidget == 0 )
+ return;
+
+ mFocusedTimeWidget->setTime( QTime( hour, minute ) );
+}
+
+bool ConfigWidget::eventFilter( QObject *object, QEvent *event )
+{
+ if ( event->type() == QEvent::FocusIn ) {
+ if ( object == mUi->kcfg_DayBegins ) {
+ emit dayBeginsFocus( object );
+ } else if ( object == mUi->kcfg_DailyStartingHour ) {
+ emit dailyStartingHourFocus( object );
+ } else if ( object == mUi->kcfg_DailyEndingHour ) {
+ emit dailyEndingHourFocus( object );
+ } else if ( object == mUi->kcfg_DefaultAppointmentTime ) {
+ emit defaultAppointmentTimeFocus( object );
+ }
+
+ return true;
+ } else {
+ // standard event processing
+ return QObject::eventFilter( object, event );
+ }
+}
+
DeclarativeConfigWidget::DeclarativeConfigWidget( QGraphicsItem *parent )
: DeclarativeWidgetBase< ConfigWidget, MainView,
&MainView::setConfigWidget>( parent )
{
- connect( this, SIGNAL(configChanged()), widget(), SIGNAL(configChanged()) );
+ connect( this, SIGNAL( configChanged() ), widget(), SIGNAL( configChanged()
) );
+ connect( widget(), SIGNAL( showClockWidget( int, int ) ), this, SIGNAL(
showClockWidget( int, int ) ) );
}
DeclarativeConfigWidget::~DeclarativeConfigWidget()
@@ -239,4 +294,9 @@ void DeclarativeConfigWidget::save()
emit configChanged();
}
+void DeclarativeConfigWidget::setNewTime( int hour, int minute )
+{
+ widget()->setNewTime( hour, minute );
+}
+
#include "configwidget.moc"
diff --git a/mobile/calendar/configwidget.h b/mobile/calendar/configwidget.h
index 2a7ec1f..ebbd4bc 100644
--- a/mobile/calendar/configwidget.h
+++ b/mobile/calendar/configwidget.h
@@ -32,6 +32,11 @@
class KComboBox;
class KConfigDialogManager;
class QCheckBox;
+class Ui_ConfigWidget;
+
+namespace KPIM {
+class KTimeEdit;
+}
class ConfigWidget : public QWidget
{
@@ -39,6 +44,7 @@ class ConfigWidget : public QWidget
public:
explicit ConfigWidget( QWidget *parent = 0 );
+ ~ConfigWidget();
void setPreferences( const EventViews::PrefsPtr &preferences );
@@ -46,17 +52,33 @@ class ConfigWidget : public QWidget
void load();
void save();
+ void setNewTime( int hour, int minute );
+
Q_SIGNALS:
void configChanged();
+ void showClockWidget( int hour, int minute );
+
+ void dayBeginsFocus( QObject *object );
+ void dailyStartingHourFocus( QObject *object );
+ void dailyEndingHourFocus( QObject *object );
+ void defaultAppointmentTimeFocus( QObject *object );
+
+ protected:
+ bool eventFilter( QObject *object, QEvent *event );
+
+ private Q_SLOTS:
+ void showClock( QObject *object );
private:
void loadFromExternalSettings();
void saveToExternalSettings();
+ Ui_ConfigWidget *mUi;
KConfigDialogManager *mManager;
KComboBox *mHolidayCombo;
QVector<QCheckBox*> mWorkDays;
EventViews::PrefsPtr mViewPrefs;
+ KPIM::KTimeEdit *mFocusedTimeWidget;
};
class DeclarativeConfigWidget :
@@ -76,8 +98,11 @@ public QGraphicsProxyWidget
void load();
void save();
+ void setNewTime( int hour, int minute );
+
Q_SIGNALS:
void configChanged();
+ void showClockWidget( int hour, int minute );
};
#endif
diff --git a/mobile/calendar/mainview.cpp b/mobile/calendar/mainview.cpp
index 43ba8e4..2d86f4a 100644
--- a/mobile/calendar/mainview.cpp
+++ b/mobile/calendar/mainview.cpp
@@ -25,6 +25,7 @@
#include "agendaviewitem.h"
#include "calendaradaptor.h"
#include "calendarinterface.h"
+#include "calendar/clockhelper.h"
#include "calendar/incidenceview.h"
#include "calendar/kcalitembrowseritem.h"
#include "configwidget.h"
@@ -136,6 +137,7 @@ void MainView::doDelayedInit()
qmlRegisterType<EventViews::MonthViewItem>( "org.kde.calendarviews", 4, 5,
"MonthView" );
qmlRegisterType<EventViews::TimelineViewItem>( "org.kde.calendarviews", 4,
5, "TimelineView" );
qmlRegisterType<Qt::QmlDateEdit>( "org.qt", 4, 7, "QmlDateEdit" );
+ qmlRegisterType<ClockHelper>( "ClockHelper", 4, 5, "ClockHelper" );
qmlRegisterUncreatableType<EventsGuiStateManager>( "org.kde.akonadi.events",
4, 5, "EventsGuiStateManager", QLatin1String( "This type is only exported for
its enums" ) );
m_calendar = new CalendarSupport::Calendar( entityTreeModel(), itemModel(),
KSystemTimeZones::local() );
--
Configure bugmail: https://bugs.kde.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the Kdepim-bugs
mailing list