https://bugs.kde.org/show_bug.cgi?id=260267
Tobias Koenig <[email protected]> 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 <[email protected]> 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. _______________________________________________ Kdepim-bugs mailing list [email protected] https://mail.kde.org/mailman/listinfo/kdepim-bugs
