calendarui/views/dayview/src/calendayview.cpp
author hgs
Mon, 28 Jun 2010 15:22:02 +0530
changeset 45 b6db4fd4947b
child 55 2c54b51f39c4
child 58 ef813d54df51
permissions -rw-r--r--
201025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
 * All rights reserved.
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
 *
hgs
parents:
diff changeset
     9
 * Initial Contributors:
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
 *
hgs
parents:
diff changeset
    12
 * Contributors:
hgs
parents:
diff changeset
    13
 *
hgs
parents:
diff changeset
    14
 * Description: CalenDayView class definition.
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
 */
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
//system includes
hgs
parents:
diff changeset
    19
#include <QDateTime>
hgs
parents:
diff changeset
    20
#include <QGraphicsLinearLayout>
hgs
parents:
diff changeset
    21
#include <xqsettingsmanager.h>
hgs
parents:
diff changeset
    22
#include <hbaction.h>
hgs
parents:
diff changeset
    23
#include <hbmenu.h>
hgs
parents:
diff changeset
    24
#include <hbmainwindow.h>
hgs
parents:
diff changeset
    25
#include <hbmodeliterator.h>
hgs
parents:
diff changeset
    26
#include <hbstyleloader.h>
hgs
parents:
diff changeset
    27
#include <hbgroupbox.h>
hgs
parents:
diff changeset
    28
#include <hbextendedlocale.h>
hgs
parents:
diff changeset
    29
#include <agendautil.h>
hgs
parents:
diff changeset
    30
//user includes
hgs
parents:
diff changeset
    31
#include "calendayview.h"
hgs
parents:
diff changeset
    32
#include "calencontext.h"
hgs
parents:
diff changeset
    33
#include "calenservices.h"
hgs
parents:
diff changeset
    34
#include "calendocloader.h"
hgs
parents:
diff changeset
    35
#include "calendateutils.h" //useful date/time utils
hgs
parents:
diff changeset
    36
#include "calendaycontentscrollarea.h"
hgs
parents:
diff changeset
    37
#include "calendaycontentwidget.h"
hgs
parents:
diff changeset
    38
#include "calendayhourscrollarea.h"
hgs
parents:
diff changeset
    39
#include "calendaymodelmanager.h"
hgs
parents:
diff changeset
    40
#include "CalenUid.h"
hgs
parents:
diff changeset
    41
#include "CalendarPrivateCRKeys.h"
hgs
parents:
diff changeset
    42
#include "calenpluginlabel.h"
hgs
parents:
diff changeset
    43
#include "calendaymodel.h"
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
//constants
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    48
// CalenDayView()
hgs
parents:
diff changeset
    49
// Constructor.
hgs
parents:
diff changeset
    50
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    51
//
hgs
parents:
diff changeset
    52
CalenDayView::CalenDayView(MCalenServices &services) :
hgs
parents:
diff changeset
    53
    CalenNativeView(services), mContentScrollArea(NULL), mContentWidget(NULL),
hgs
parents:
diff changeset
    54
    mHourScrollArea(NULL), mSettingsManager(NULL),
hgs
parents:
diff changeset
    55
    mRegionalInfo(XQSettingsKey::TargetCentralRepository, KCRUidCalendar, 
hgs
parents:
diff changeset
    56
            KCalendarShowRegionalInfo), 
hgs
parents:
diff changeset
    57
    mServices(services), mRegionalInfoGroupBox(NULL), mGoToTodayMenuAction(NULL)
hgs
parents:
diff changeset
    58
{
hgs
parents:
diff changeset
    59
    setupMenu();
hgs
parents:
diff changeset
    60
    
hgs
parents:
diff changeset
    61
    // Create model manager
hgs
parents:
diff changeset
    62
    mModelManager = new CalenDayModelManager(mServices, true, this);   
hgs
parents:
diff changeset
    63
    
hgs
parents:
diff changeset
    64
    mVLayout = new QGraphicsLinearLayout(Qt::Vertical, NULL);
hgs
parents:
diff changeset
    65
    mVLayout->setContentsMargins(0.0, 0.0, 0.0, 0.0);
hgs
parents:
diff changeset
    66
    mVLayout->setSpacing(0.0);    
hgs
parents:
diff changeset
    67
      
hgs
parents:
diff changeset
    68
    // Create heading label and insert into layout
hgs
parents:
diff changeset
    69
    mHeadingLabel = new HbGroupBox();
hgs
parents:
diff changeset
    70
    HbEffect::add(mHeadingLabel, ":/fade_out.fxml", "fadeOut");
hgs
parents:
diff changeset
    71
    HbEffect::add(mHeadingLabel, ":/fade_in.fxml", "fadeIn");
hgs
parents:
diff changeset
    72
    
hgs
parents:
diff changeset
    73
    mSettingsManager = new XQSettingsManager(this);
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
    // Add day info
hgs
parents:
diff changeset
    76
    mVLayout->addItem(mHeadingLabel);
hgs
parents:
diff changeset
    77
    
hgs
parents:
diff changeset
    78
    //show regional info if set so
hgs
parents:
diff changeset
    79
    showRegionalInformationFadeIn();
hgs
parents:
diff changeset
    80
    mSettingsManager->startMonitoring(mRegionalInfo);
hgs
parents:
diff changeset
    81
    
hgs
parents:
diff changeset
    82
    // Put hour scroll area and content scroll area into horizontal layout
hgs
parents:
diff changeset
    83
    QGraphicsLinearLayout *hLayout = new QGraphicsLinearLayout(Qt::Horizontal, NULL);
hgs
parents:
diff changeset
    84
    hLayout->setContentsMargins(0.0, 0.0, 0.0, 0.0);
hgs
parents:
diff changeset
    85
    hLayout->setSpacing(0.0);
hgs
parents:
diff changeset
    86
    
hgs
parents:
diff changeset
    87
    // Create scroll area for content (events)
hgs
parents:
diff changeset
    88
    mContentScrollArea = new CalenDayContentScrollArea(this);
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
    // Create and apply central widget for scroll area
hgs
parents:
diff changeset
    91
    mContentWidget = new CalenDayContentWidget(*mModelManager, mContentScrollArea);
hgs
parents:
diff changeset
    92
    mContentScrollArea->setContentWidget(mContentWidget);
hgs
parents:
diff changeset
    93
    
hgs
parents:
diff changeset
    94
    // Create scroll area for hour elements
hgs
parents:
diff changeset
    95
    mHourScrollArea = new CalenDayHourScrollArea(this);
hgs
parents:
diff changeset
    96
        
hgs
parents:
diff changeset
    97
    hLayout->addItem(mHourScrollArea);
hgs
parents:
diff changeset
    98
    hLayout->addItem(mContentScrollArea);
hgs
parents:
diff changeset
    99
    
hgs
parents:
diff changeset
   100
    mVLayout->addItem(hLayout);
hgs
parents:
diff changeset
   101
    setLayout(mVLayout);
hgs
parents:
diff changeset
   102
    
hgs
parents:
diff changeset
   103
    setupSlots();
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
    //setup Back functionality
hgs
parents:
diff changeset
   106
    if (ECalenDayView != mServices.getFirstView()) {
hgs
parents:
diff changeset
   107
        HbAction* action = new HbAction(Hb::BackNaviAction, this);
hgs
parents:
diff changeset
   108
        setNavigationAction(action);
hgs
parents:
diff changeset
   109
        // Connect to the signal triggered by clicking on back button.
hgs
parents:
diff changeset
   110
        connect(action, SIGNAL(triggered()), this, SLOT(onBack()));
hgs
parents:
diff changeset
   111
    }
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
    HbStyleLoader::registerFilePath(":/calendayhourelement.css");
hgs
parents:
diff changeset
   114
    HbStyleLoader::registerFilePath(":/calendayhourelement.widgetml");
hgs
parents:
diff changeset
   115
    HbStyleLoader::registerFilePath(":/calendayitem.css");
hgs
parents:
diff changeset
   116
    HbStyleLoader::registerFilePath(":/calendayitem.widgetml");
hgs
parents:
diff changeset
   117
}
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   120
// ~CalenDayView()
hgs
parents:
diff changeset
   121
// Destructor.
hgs
parents:
diff changeset
   122
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   123
//
hgs
parents:
diff changeset
   124
CalenDayView::~CalenDayView()
hgs
parents:
diff changeset
   125
{
hgs
parents:
diff changeset
   126
	mSettingsManager->stopMonitoring(mRegionalInfo);
hgs
parents:
diff changeset
   127
}
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   130
// onLocaleChanged()
hgs
parents:
diff changeset
   131
// Handles locale change.
hgs
parents:
diff changeset
   132
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   133
//
hgs
parents:
diff changeset
   134
void CalenDayView::onLocaleChanged(int reason)
hgs
parents:
diff changeset
   135
{
hgs
parents:
diff changeset
   136
    Q_UNUSED( reason )
hgs
parents:
diff changeset
   137
}
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   140
// From CalenView
hgs
parents:
diff changeset
   141
// doPopulation()
hgs
parents:
diff changeset
   142
// Handles view (re)population.
hgs
parents:
diff changeset
   143
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   144
//
hgs
parents:
diff changeset
   145
void CalenDayView::doPopulation()
hgs
parents:
diff changeset
   146
{
hgs
parents:
diff changeset
   147
    // Triggers fading effect for heading label
hgs
parents:
diff changeset
   148
    getCurrentDate();
hgs
parents:
diff changeset
   149
    HbEffect::start(mHeadingLabel, "fadeOut", this, "setHeadingText");
hgs
parents:
diff changeset
   150
    
hgs
parents:
diff changeset
   151
    mModelManager->refreshAllModels();
hgs
parents:
diff changeset
   152
    //Set date and time for hour scroll area. 
hgs
parents:
diff changeset
   153
    //It's later used by hour element to display timeline
hgs
parents:
diff changeset
   154
    mHourScrollArea->setDateTime(mDate);
hgs
parents:
diff changeset
   155
    
hgs
parents:
diff changeset
   156
    //set in menu go to today visible
hgs
parents:
diff changeset
   157
    QDateTime currentDateTime = QDateTime::currentDateTime();
hgs
parents:
diff changeset
   158
    if (mGoToTodayMenuAction and currentDateTime.date() == mDate.date()) {
hgs
parents:
diff changeset
   159
        mGoToTodayMenuAction->setVisible(false);
hgs
parents:
diff changeset
   160
    }
hgs
parents:
diff changeset
   161
    else if(mGoToTodayMenuAction) {
hgs
parents:
diff changeset
   162
        mGoToTodayMenuAction->setVisible(true);
hgs
parents:
diff changeset
   163
    }
hgs
parents:
diff changeset
   164
    
hgs
parents:
diff changeset
   165
	setupViewport();
hgs
parents:
diff changeset
   166
	
hgs
parents:
diff changeset
   167
    populationComplete();
hgs
parents:
diff changeset
   168
}
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   171
// From CalenView
hgs
parents:
diff changeset
   172
// populationComplete()
hgs
parents:
diff changeset
   173
// Informs the organizer that the view's population is complete.
hgs
parents:
diff changeset
   174
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   175
//
hgs
parents:
diff changeset
   176
void CalenDayView::populationComplete()
hgs
parents:
diff changeset
   177
{
hgs
parents:
diff changeset
   178
    CalenNativeView::populationComplete();
hgs
parents:
diff changeset
   179
}
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   182
// From MCalenNotificationHandler
hgs
parents:
diff changeset
   183
// HandleNotification()
hgs
parents:
diff changeset
   184
// The function handles calendar notifications.
hgs
parents:
diff changeset
   185
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   186
//
hgs
parents:
diff changeset
   187
void CalenDayView::HandleNotification(const TCalenNotification notification)
hgs
parents:
diff changeset
   188
{
hgs
parents:
diff changeset
   189
    Q_UNUSED( notification )
hgs
parents:
diff changeset
   190
}
hgs
parents:
diff changeset
   191
hgs
parents:
diff changeset
   192
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   193
// setupView()
hgs
parents:
diff changeset
   194
// Sets up the view accroding to the 'xml'
hgs
parents:
diff changeset
   195
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   196
//
hgs
parents:
diff changeset
   197
void CalenDayView::setupView(CalenDocLoader* docLoader)
hgs
parents:
diff changeset
   198
{
hgs
parents:
diff changeset
   199
    Q_UNUSED( docLoader )
hgs
parents:
diff changeset
   200
}
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
//private slots
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   205
// onBack()
hgs
parents:
diff changeset
   206
// Handles 'back' functionality;
hgs
parents:
diff changeset
   207
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   208
//
hgs
parents:
diff changeset
   209
void CalenDayView::onBack()
hgs
parents:
diff changeset
   210
{
hgs
parents:
diff changeset
   211
    TRAP_IGNORE(mServices.IssueCommandL(ECalenMonthView));
hgs
parents:
diff changeset
   212
}
hgs
parents:
diff changeset
   213
hgs
parents:
diff changeset
   214
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   215
// dayChange()
hgs
parents:
diff changeset
   216
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   217
//
hgs
parents:
diff changeset
   218
void CalenDayView::dayChangeStarted(CalenScrollDirection direction)
hgs
parents:
diff changeset
   219
{
hgs
parents:
diff changeset
   220
    if (direction == ECalenScrollToNext) {
hgs
parents:
diff changeset
   221
        mDate = mDate.addDays(1);	
hgs
parents:
diff changeset
   222
    }
hgs
parents:
diff changeset
   223
    else {
hgs
parents:
diff changeset
   224
        mDate = mDate.addDays(-1);
hgs
parents:
diff changeset
   225
    }
hgs
parents:
diff changeset
   226
    
hgs
parents:
diff changeset
   227
    //set in menu go to today visible
hgs
parents:
diff changeset
   228
    QDateTime currentDateTime = QDateTime::currentDateTime();
hgs
parents:
diff changeset
   229
    if (mGoToTodayMenuAction and currentDateTime.date() == mDate.date()) {
hgs
parents:
diff changeset
   230
        mGoToTodayMenuAction->setVisible(false);
hgs
parents:
diff changeset
   231
    }
hgs
parents:
diff changeset
   232
    else if(mGoToTodayMenuAction) {
hgs
parents:
diff changeset
   233
        mGoToTodayMenuAction->setVisible(true);
hgs
parents:
diff changeset
   234
    }
hgs
parents:
diff changeset
   235
    
hgs
parents:
diff changeset
   236
    // Triggers fading effect for heading label.
hgs
parents:
diff changeset
   237
    HbEffect::start(mHeadingLabel, "fadeOut", this, "setHeadingText");
hgs
parents:
diff changeset
   238
    HbEffect::start(mRegionalInfoGroupBox, "fadeOut", this, "showRegionalInformation");
hgs
parents:
diff changeset
   239
    
hgs
parents:
diff changeset
   240
    mServices.Context().setFocusDate(mDate);
hgs
parents:
diff changeset
   241
}
hgs
parents:
diff changeset
   242
hgs
parents:
diff changeset
   243
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   244
// dayChanged()
hgs
parents:
diff changeset
   245
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   246
//
hgs
parents:
diff changeset
   247
void CalenDayView::dayChanged(CalenScrollDirection direction)
hgs
parents:
diff changeset
   248
{
hgs
parents:
diff changeset
   249
    mModelManager->viewsScrollingFinished(direction);
hgs
parents:
diff changeset
   250
	mHourScrollArea->setDateTime(mDate);
hgs
parents:
diff changeset
   251
}
hgs
parents:
diff changeset
   252
hgs
parents:
diff changeset
   253
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   254
// getCurrentDate()
hgs
parents:
diff changeset
   255
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   256
//
hgs
parents:
diff changeset
   257
void CalenDayView::getCurrentDate()
hgs
parents:
diff changeset
   258
{
hgs
parents:
diff changeset
   259
    mDate = CalenNativeView::mServices.Context().focusDateAndTime();
hgs
parents:
diff changeset
   260
}
hgs
parents:
diff changeset
   261
hgs
parents:
diff changeset
   262
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   263
// setupMenu()
hgs
parents:
diff changeset
   264
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   265
//
hgs
parents:
diff changeset
   266
void CalenDayView::setupMenu()
hgs
parents:
diff changeset
   267
{
hgs
parents:
diff changeset
   268
    menu()->addAction(hbTrId("txt_calendar_opt_new_event"), this, SLOT(runNewMeeting()));
hgs
parents:
diff changeset
   269
    //get pointer to this position, because need to change visibility
hgs
parents:
diff changeset
   270
    mGoToTodayMenuAction = menu()->addAction(hbTrId("txt_calendar_opt_go_to_today"), this, SLOT(runGoToToday()));
hgs
parents:
diff changeset
   271
    menu()->addAction(hbTrId("txt_calendar_opt_go_to_date"), this, SLOT(goToDate()));
hgs
parents:
diff changeset
   272
    //TODO: Add id for this text
hgs
parents:
diff changeset
   273
    //"Switch to Agenda view"
hgs
parents:
diff changeset
   274
    menu()->addAction(hbTrId("txt_calendar_opt_switch_to_agenda_view"), this, SLOT(runChangeToAgendaView()));
hgs
parents:
diff changeset
   275
    //TODO: Add id for this text (lunar data)
hgs
parents:
diff changeset
   276
    //"Show lunar data"
hgs
parents:
diff changeset
   277
    if (pluginEnabled())
hgs
parents:
diff changeset
   278
    	{
hgs
parents:
diff changeset
   279
		menu()->addAction(hbTrId("txt_calendar_opt_show_lunar_data"), this, SLOT(runLunarData()));
hgs
parents:
diff changeset
   280
    	}
hgs
parents:
diff changeset
   281
    menu()->addAction(hbTrId("txt_calendar_opt_settings"), this, SLOT(launchSettingsView()));
hgs
parents:
diff changeset
   282
}
hgs
parents:
diff changeset
   283
hgs
parents:
diff changeset
   284
/*!
hgs
parents:
diff changeset
   285
   \brief Ot change Day view to Agenda View
hgs
parents:
diff changeset
   286
 */
hgs
parents:
diff changeset
   287
void CalenDayView::runChangeToAgendaView()
hgs
parents:
diff changeset
   288
{
hgs
parents:
diff changeset
   289
    changeView(ECalenAgendaView);
hgs
parents:
diff changeset
   290
}
hgs
parents:
diff changeset
   291
hgs
parents:
diff changeset
   292
/*!
hgs
parents:
diff changeset
   293
   \brief Shows lunar data in popup box
hgs
parents:
diff changeset
   294
 */
hgs
parents:
diff changeset
   295
void CalenDayView::runLunarData()
hgs
parents:
diff changeset
   296
{
hgs
parents:
diff changeset
   297
	TRAP_IGNORE(mServices.IssueCommandL(ECalenRegionalPluginTapEvent));
hgs
parents:
diff changeset
   298
}
hgs
parents:
diff changeset
   299
hgs
parents:
diff changeset
   300
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   301
// setupSlots()
hgs
parents:
diff changeset
   302
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   303
//
hgs
parents:
diff changeset
   304
void CalenDayView::setupSlots()
hgs
parents:
diff changeset
   305
{
hgs
parents:
diff changeset
   306
    // Connecting other view-related signals/slots
hgs
parents:
diff changeset
   307
    connect(mContentScrollArea,
hgs
parents:
diff changeset
   308
        SIGNAL(scrollAreaMoveStarted(CalenScrollDirection)), this,
hgs
parents:
diff changeset
   309
        SLOT(dayChangeStarted(CalenScrollDirection)));
hgs
parents:
diff changeset
   310
hgs
parents:
diff changeset
   311
    connect(mContentScrollArea,
hgs
parents:
diff changeset
   312
        SIGNAL(scrollAreaMoveFinished(CalenScrollDirection)), mContentWidget,
hgs
parents:
diff changeset
   313
        SLOT(relayoutWidgets(CalenScrollDirection)));
hgs
parents:
diff changeset
   314
hgs
parents:
diff changeset
   315
    connect(mContentWidget, SIGNAL(
hgs
parents:
diff changeset
   316
        widgetsRelayoutFinished(CalenScrollDirection)), mContentScrollArea,
hgs
parents:
diff changeset
   317
        SLOT(scrollToMiddleWidget()));
hgs
parents:
diff changeset
   318
hgs
parents:
diff changeset
   319
    connect(mContentWidget,
hgs
parents:
diff changeset
   320
        SIGNAL(widgetsRelayoutFinished(CalenScrollDirection)), this,
hgs
parents:
diff changeset
   321
        SLOT(dayChanged(CalenScrollDirection)));
hgs
parents:
diff changeset
   322
hgs
parents:
diff changeset
   323
    connect(mContentWidget, SIGNAL(scrollPositionChanged(const QPointF &)),
hgs
parents:
diff changeset
   324
        mHourScrollArea, SLOT(scrollVertically(const QPointF &)));
hgs
parents:
diff changeset
   325
    
hgs
parents:
diff changeset
   326
    connect(mHourScrollArea, SIGNAL(scrollPositionChanged(const QPointF &)),
hgs
parents:
diff changeset
   327
        mContentWidget, SLOT(widgetScrolled(const QPointF &)));
hgs
parents:
diff changeset
   328
    
hgs
parents:
diff changeset
   329
    connect(mSettingsManager, SIGNAL(valueChanged(XQSettingsKey, QVariant)),
hgs
parents:
diff changeset
   330
        this, SLOT(showHideRegionalInformationChanged(XQSettingsKey, QVariant)));
hgs
parents:
diff changeset
   331
}
hgs
parents:
diff changeset
   332
hgs
parents:
diff changeset
   333
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   334
// runNewMeeting()
hgs
parents:
diff changeset
   335
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   336
//
hgs
parents:
diff changeset
   337
void CalenDayView::runNewMeeting()
hgs
parents:
diff changeset
   338
{
hgs
parents:
diff changeset
   339
    QDateTime dateTime(mDate);
hgs
parents:
diff changeset
   340
    TRAP_IGNORE(
hgs
parents:
diff changeset
   341
        dateTime.setTime(mServices.Context().defaultCalTimeForViewsL().time());
hgs
parents:
diff changeset
   342
        mServices.Context().setFocusDateAndTime(dateTime);
hgs
parents:
diff changeset
   343
        mServices.IssueCommandL(ECalenNewMeeting)
hgs
parents:
diff changeset
   344
            );
hgs
parents:
diff changeset
   345
}
hgs
parents:
diff changeset
   346
hgs
parents:
diff changeset
   347
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   348
// runGoToToday()
hgs
parents:
diff changeset
   349
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   350
//
hgs
parents:
diff changeset
   351
void CalenDayView::runGoToToday()
hgs
parents:
diff changeset
   352
{
hgs
parents:
diff changeset
   353
    mServices.Context().setFocusDateAndTime(CalenDateUtils::today());
hgs
parents:
diff changeset
   354
    TRAP_IGNORE(mServices.IssueCommandL(ECalenGotoToday));
hgs
parents:
diff changeset
   355
    refreshViewOnGoToDate();
hgs
parents:
diff changeset
   356
}
hgs
parents:
diff changeset
   357
hgs
parents:
diff changeset
   358
hgs
parents:
diff changeset
   359
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   360
// changeView()
hgs
parents:
diff changeset
   361
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   362
//
hgs
parents:
diff changeset
   363
void CalenDayView::changeView(TCalenCommandId viewId)
hgs
parents:
diff changeset
   364
{
hgs
parents:
diff changeset
   365
    TRAP_IGNORE(mServices.IssueCommandL(viewId));
hgs
parents:
diff changeset
   366
}
hgs
parents:
diff changeset
   367
hgs
parents:
diff changeset
   368
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   369
// CalenDayView::setHeadingText
hgs
parents:
diff changeset
   370
// Sets heading text according to date from model and locale.
hgs
parents:
diff changeset
   371
// It's connected to modelReset signal
hgs
parents:
diff changeset
   372
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   373
//
hgs
parents:
diff changeset
   374
void CalenDayView::setHeadingText(const HbEffect::EffectStatus &status)
hgs
parents:
diff changeset
   375
{   
hgs
parents:
diff changeset
   376
    Q_UNUSED(status)
hgs
parents:
diff changeset
   377
hgs
parents:
diff changeset
   378
    // Format the date as per the device locale settings
hgs
parents:
diff changeset
   379
    HbExtendedLocale systemLocale = HbExtendedLocale::system();
hgs
parents:
diff changeset
   380
hgs
parents:
diff changeset
   381
    // Get localised name of the day from locale
hgs
parents:
diff changeset
   382
    QString dayString = systemLocale.dayName(mDate.date().dayOfWeek());
hgs
parents:
diff changeset
   383
    // Append a single space
hgs
parents:
diff changeset
   384
    dayString.append(" ");
hgs
parents:
diff changeset
   385
    // Set the heading
hgs
parents:
diff changeset
   386
hgs
parents:
diff changeset
   387
    // Append the date which is formatted as per the locale   
hgs
parents:
diff changeset
   388
    mHeadingLabel->setHeading(hbTrId("txt_calendar_subhead_1_2").arg(dayString).arg(
hgs
parents:
diff changeset
   389
        systemLocale.format(mDate.date(), r_qtn_date_usual_with_zero)));
hgs
parents:
diff changeset
   390
hgs
parents:
diff changeset
   391
    HbEffect::start(mHeadingLabel, "fadeIn");
hgs
parents:
diff changeset
   392
}
hgs
parents:
diff changeset
   393
hgs
parents:
diff changeset
   394
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   395
// CalenDayView::showHideRegionalInformation
hgs
parents:
diff changeset
   396
// To run effect on lunar data label
hgs
parents:
diff changeset
   397
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   398
//
hgs
parents:
diff changeset
   399
void CalenDayView::showRegionalInformation(const HbEffect::EffectStatus &status)
hgs
parents:
diff changeset
   400
{
hgs
parents:
diff changeset
   401
	Q_UNUSED(status);
hgs
parents:
diff changeset
   402
	showRegionalInformationFadeIn();
hgs
parents:
diff changeset
   403
}
hgs
parents:
diff changeset
   404
hgs
parents:
diff changeset
   405
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   406
// CalenDayView::showRegionalInformationFadeIn
hgs
parents:
diff changeset
   407
// To run effect on lunar data label and change text according to date change
hgs
parents:
diff changeset
   408
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   409
//
hgs
parents:
diff changeset
   410
void CalenDayView::showRegionalInformationFadeIn()
hgs
parents:
diff changeset
   411
	{
hgs
parents:
diff changeset
   412
	showHideRegionalInformationChanged(mRegionalInfo, 3);
hgs
parents:
diff changeset
   413
	HbEffect::start(mRegionalInfoGroupBox, "fadeIn");
hgs
parents:
diff changeset
   414
	}
hgs
parents:
diff changeset
   415
hgs
parents:
diff changeset
   416
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   417
// CalenDayView::showHideRegionalInformationChanged
hgs
parents:
diff changeset
   418
// To Show and hide regional plugin label depends upon settings
hgs
parents:
diff changeset
   419
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   420
//
hgs
parents:
diff changeset
   421
void CalenDayView::showHideRegionalInformationChanged(const XQSettingsKey& key, const QVariant&)
hgs
parents:
diff changeset
   422
	{
hgs
parents:
diff changeset
   423
	if (key.key() == mRegionalInfo.key())
hgs
parents:
diff changeset
   424
		{
hgs
parents:
diff changeset
   425
		int showRegionalInfo =
hgs
parents:
diff changeset
   426
				mSettingsManager->readItemValue(mRegionalInfo).toUInt();
hgs
parents:
diff changeset
   427
hgs
parents:
diff changeset
   428
		if (showRegionalInfo)
hgs
parents:
diff changeset
   429
			{
hgs
parents:
diff changeset
   430
			QString *pluginString = pluginText();
hgs
parents:
diff changeset
   431
			if (pluginString)
hgs
parents:
diff changeset
   432
				{
hgs
parents:
diff changeset
   433
				if (!mRegionalInfoGroupBox)
hgs
parents:
diff changeset
   434
					{
hgs
parents:
diff changeset
   435
					mRegionalInfoGroupBox = new HbGroupBox();
hgs
parents:
diff changeset
   436
					CalenPluginLabel *regionalInfo = new CalenPluginLabel(
hgs
parents:
diff changeset
   437
							mServices, this);
hgs
parents:
diff changeset
   438
					HbEffect::add(mRegionalInfoGroupBox, ":/fade_out.fxml",
hgs
parents:
diff changeset
   439
							"fadeOut");
hgs
parents:
diff changeset
   440
					HbEffect::add(mRegionalInfoGroupBox, ":/fade_in.fxml", "fadeIn");
hgs
parents:
diff changeset
   441
hgs
parents:
diff changeset
   442
					// add margins to calenpluginlabel
hgs
parents:
diff changeset
   443
hgs
parents:
diff changeset
   444
					HbStyle style;
hgs
parents:
diff changeset
   445
					HbDeviceProfile deviceProfile;
hgs
parents:
diff changeset
   446
					qreal marginLeft = 0.0;
hgs
parents:
diff changeset
   447
					qreal marginRight = 0.0;
hgs
parents:
diff changeset
   448
					qreal marginTop = 0.0;
hgs
parents:
diff changeset
   449
					qreal marginBottom = 0.0;
hgs
parents:
diff changeset
   450
					style.parameter(QString("hb-param-margin-gene-left"), marginLeft, deviceProfile);
hgs
parents:
diff changeset
   451
					style.parameter(QString("hb-param-margin-gene-right"), marginRight, deviceProfile);
hgs
parents:
diff changeset
   452
					style.parameter(QString("hb-param-margin-gene-top"), marginTop, deviceProfile);
hgs
parents:
diff changeset
   453
					style.parameter(QString("hb-param-margin-gene-bottom"), marginBottom, deviceProfile);
hgs
parents:
diff changeset
   454
hgs
parents:
diff changeset
   455
					regionalInfo->setContentsMargins(1, 1, 1, 1);
hgs
parents:
diff changeset
   456
hgs
parents:
diff changeset
   457
					//	qreal width = mRegionalInfoGroupBox->size().width();
hgs
parents:
diff changeset
   458
					//	qreal height = mRegionalInfoGroupBox->size().height() + marginTop + marginBottom;
hgs
parents:
diff changeset
   459
hgs
parents:
diff changeset
   460
					//	mRegionalInfoGroupBox->resize(width, height);
hgs
parents:
diff changeset
   461
hgs
parents:
diff changeset
   462
					mRegionalInfoGroupBox->setContentWidget(regionalInfo);
hgs
parents:
diff changeset
   463
					}
hgs
parents:
diff changeset
   464
hgs
parents:
diff changeset
   465
				if (pluginEnabled())
hgs
parents:
diff changeset
   466
					{
hgs
parents:
diff changeset
   467
					HbLabel *pluginInfoLabel = qobject_cast<HbLabel *> (
hgs
parents:
diff changeset
   468
							mRegionalInfoGroupBox->contentWidget());
hgs
parents:
diff changeset
   469
hgs
parents:
diff changeset
   470
					pluginInfoLabel->setPlainText(*pluginString);
hgs
parents:
diff changeset
   471
hgs
parents:
diff changeset
   472
					mVLayout->insertItem(1, mRegionalInfoGroupBox);
hgs
parents:
diff changeset
   473
					}
hgs
parents:
diff changeset
   474
				}
hgs
parents:
diff changeset
   475
			}
hgs
parents:
diff changeset
   476
		else
hgs
parents:
diff changeset
   477
			{
hgs
parents:
diff changeset
   478
hgs
parents:
diff changeset
   479
			if (mRegionalInfoGroupBox)
hgs
parents:
diff changeset
   480
				{
hgs
parents:
diff changeset
   481
				mVLayout->removeItem(mRegionalInfoGroupBox);
hgs
parents:
diff changeset
   482
				delete mRegionalInfoGroupBox;
hgs
parents:
diff changeset
   483
				mRegionalInfoGroupBox = NULL;
hgs
parents:
diff changeset
   484
				}
hgs
parents:
diff changeset
   485
			}
hgs
parents:
diff changeset
   486
		}
hgs
parents:
diff changeset
   487
	}
hgs
parents:
diff changeset
   488
hgs
parents:
diff changeset
   489
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   490
// CalenDayView::setupViewport
hgs
parents:
diff changeset
   491
// Scrolls view according to current day and events
hgs
parents:
diff changeset
   492
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   493
//
hgs
parents:
diff changeset
   494
void CalenDayView::setupViewport()
hgs
parents:
diff changeset
   495
{
hgs
parents:
diff changeset
   496
    QDateTime currentTime = QDateTime::currentDateTime();
hgs
parents:
diff changeset
   497
    
hgs
parents:
diff changeset
   498
    //Filter flags (only timed events)
hgs
parents:
diff changeset
   499
	AgendaUtil::FilterFlags filter = AgendaUtil::FilterFlags(
hgs
parents:
diff changeset
   500
			AgendaUtil::IncludeAppointments );
hgs
parents:
diff changeset
   501
	QList<AgendaEntry> list;
hgs
parents:
diff changeset
   502
	// Fetch the instance list from the agenda interface
hgs
parents:
diff changeset
   503
	list = mServices.agendaInterface()->fetchEntriesInRange(currentTime, currentTime, filter);
hgs
parents:
diff changeset
   504
    
hgs
parents:
diff changeset
   505
    // If we have event in current day and hour, scroll to this event
hgs
parents:
diff changeset
   506
    if(mDate.date() == currentTime.date() && !list.isEmpty()){
hgs
parents:
diff changeset
   507
    	int hourToScrollTo(list.first().startTime().time().hour());
hgs
parents:
diff changeset
   508
        mHourScrollArea->scrollToHour(hourToScrollTo);
hgs
parents:
diff changeset
   509
    }
hgs
parents:
diff changeset
   510
    else{
hgs
parents:
diff changeset
   511
        //Scroll view to 7am
hgs
parents:
diff changeset
   512
        mHourScrollArea->scrollToHour(7);
hgs
parents:
diff changeset
   513
    }
hgs
parents:
diff changeset
   514
}
hgs
parents:
diff changeset
   515
hgs
parents:
diff changeset
   516
//End of File