--- a/calendarui/views/src/calenmonthview.cpp Tue Aug 31 15:13:43 2010 +0300
+++ b/calendarui/views/src/calenmonthview.cpp Wed Sep 01 12:32:31 2010 +0100
@@ -1,1795 +1,615 @@
/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: For Month view of calendar application.
*
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description: CalenMonthView implementation.
- *
- */
+*/
+
-//system includes
-#include <QtGui>
-#include <xqsettingsmanager.h>
-#include <xqsettingskey.h>
-#include <hbapplication.h>
-#include <hbmainwindow.h>
-#include <hbmenu.h>
-#include <hbaction.h>
-#include <hbview.h>
-#include <hblabel.h>
-#include <hbframeitem.h>
-#include <hbcolorscheme.h>
-#include <hbtheme.h>
-#include <agendautil.h>
-#include <agendaentry.h>
-#include <hbapplication.h> // hbapplication
-#include <hbactivitymanager.h> //Activity Manager
+#include <aknnavide.h>
+#include <bldvariant.hrh> // For FeatureIds (lint warns without)
+#include <eikmenup.h>
+#include <eikspane.h> //CEikStatusPane
+#include <StringLoader.h>
+#include <aknappui.h>
+#include <featmgr.h>
+#include <calinstance.h>
+#include <calinstanceview.h>
+#include <calcommon.h>
+#include <caliterator.h>
+#include <Calendar.rsg>
+#include <calencommonui.rsg>
+#include <calencommands.hrh> // Calendar commands
+#include <calencontext.h>
+#include <CalenStatusPaneUtils.h>
+#include <calenservices.h>
+#include <caleninstanceid.h>
+#include <calenviewutils.h>
+#include <calcalendarinfo.h>
-//user includes
+#include "calendarui_debug.h"
#include "calenmonthview.h"
-#include "calenservices.h"
-#include "calennativeview.h"
-#include "calenview.h"
-#include "calenmonthdata.h"
-#include "calencontext.h"
-#include "calenagendautils.h"
+#include "calenmonthcontainer.h"
+#include <CalenInterimUtils2.h>
+#include "calentitlepane.h"
+#include "calensend.h"
+#include "ToDo.hrh"
+#include "calendar.hrh"
#include "CalenUid.h"
-#include "hb_calencommands.hrh"
-#include "calendateutils.h"
-#include "calenmonthgrid.h"
-#include "calenpreviewpane.h"
-#include "calendocloader.h"
-#include "calenthicklinesdrawer.h"
-#include "calencommon.h"
-#include "calendarprivatecrkeys.h"
-#include "calenpluginlabel.h"
-#include "calenconstants.h"
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "calenmonthviewTraces.h"
-#endif
-// CONSTANTS
-#define WEEKNUMWIDTH 6.41604 // in units, need to update this value if it
- // is changed in the docml
-/*!
- \class CalenMonthView
-
- Class implementing calendar month view
- */
+// ================= MEMBER FUNCTIONS =========================================
-/*!
- Default constructor.
- */
-CalenMonthView::CalenMonthView(MCalenServices &services) :
- CalenNativeView(services), mAgendaUtil(services.agendaInterface()),
- mGoToTodayAction(0),
- mPrevRegionalInfo(0),
- mCurrRegionalInfo(0),
- mNextRegionalInfo(0),
- mIsAboutToQuitEventConnected(false)
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_CALENMONTHVIEW_ENTRY );
-
- mIsWeekNumbersShown = 0;
- mOrientation = mServices.MainWindow().orientation();
- // Read the date from the context
- mDate = mServices.Context().focusDateAndTime();
- mCurrentDay = mDate;
+// ----------------------------------------------------------------------------
+// CCalenMonthView::NewLC
+// First stage construction
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+EXPORT_C CCalenMonthView* CCalenMonthView::NewL( MCalenServices& aServices )
+ {
+ TRACE_ENTRY_POINT;
- // Create the settings manager instance and settings key for week number
- mSettingsManager = new XQSettingsManager(this);
- mWeekNumberCenrepKey
- = new XQSettingsKey(XQSettingsKey::TargetCentralRepository,
- KCRUidCalendar, KCalendarShowWeekNum);
+ CCalenMonthView* self = new( ELeave ) CCalenMonthView( aServices );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+
+ TRACE_EXIT_POINT;
+ return self;
+ }
- mLocale = HbExtendedLocale::system();
- mFirstWeekLabel = NULL;
- mIsPrevPaneGesture = false;
- // Get the week day and preview heading color from the theme
- mWeekDaysColor = HbColorScheme::color("qtc_cal_week_day");
-
- mPreviewHeadingColor = HbColorScheme::color("qtc_cal_day_preview_heading");
-
- connect(HbTheme::instance(), SIGNAL(changed()),
- this, SLOT(handleThemeChange()));
-
- OstTraceFunctionExit0( CALENMONTHVIEW_CALENMONTHVIEW_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::~CCalenMonthView
+// Destructor
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+CCalenMonthView::~CCalenMonthView()
+ {
+ TRACE_ENTRY_POINT;
+ TRACE_EXIT_POINT;
+ }
-/*!
- Destructor.
- */
-CalenMonthView::~CalenMonthView()
-{
- OstTraceFunctionEntry0( DUP1_CALENMONTHVIEW_CALENMONTHVIEW_ENTRY );
-
- OstTraceFunctionExit0( DUP1_CALENMONTHVIEW_CALENMONTHVIEW_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::CCalenMonthView
+// C++ default constructor can NOT contain any code, that might leave.
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+CCalenMonthView::CCalenMonthView( MCalenServices& aServices )
+ : CCalenNativeView( aServices ),
+ iPopulationStep( ENothingDone )
+ {
+ TRACE_ENTRY_POINT;
+ TRACE_EXIT_POINT;
+ }
-/*!
- Called by the CalenViewManager after loading the view from the docml.
- The initializaion/setup of the view is done here.
- */
-void CalenMonthView::setupView(CalenDocLoader *docLoader)
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_SETUPVIEW_ENTRY );
-
- mDocLoader = docLoader;
- mTitleLabel
- = qobject_cast<HbLabel *> (
- mDocLoader->findWidget(CALEN_MONTH_TITLE));
- // Set the title text color
- QColor monthTitleColor = HbColorScheme::color("qtc_cal_monthgrid_title");
- if (mTitleLabel && monthTitleColor.isValid()) {
- mTitleLabel->setTextColor(monthTitleColor);
- }
-
- mDayNameWidget
- = qobject_cast<CalenThickLinesDrawer *> (
- mDocLoader->findWidget(
- CALEN_DAYNAMES_WIDGET));
+// ----------------------------------------------------------------------------
+// CCalenMonthView::ConstructL
+// Symbian OS constructor can leave.
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::ConstructL()
+ {
+ TRACE_ENTRY_POINT;
+
+ CommonConstructL( R_CALEN_MONTHVIEW_INFO );
+ //iLocalisedViewName = StringLoader::LoadL( R_CALEN_VIEW_MONTH, iCoeEnv );
+
+ TRACE_EXIT_POINT;
+ }
- // Get all the seven day labels
- mFirstDayLabel
- = qobject_cast<HbLabel *> (
- mDocLoader->findWidget(CALEN_MONTVIEW_FIRST_DAY_LABEL));
- mSecondDayLabel
- = qobject_cast<HbLabel *> (
- mDocLoader->findWidget(CALEN_MONTVIEW_SECOND_DAY_LABEL));
- mThirdDayLabel
- = qobject_cast<HbLabel *> (
- mDocLoader->findWidget(CALEN_MONTVIEW_THIRD_DAY_LABEL));
- mFourthDayLabel
- = qobject_cast<HbLabel *> (
- mDocLoader->findWidget(CALEN_MONTVIEW_FOURTH_DAY_LABEL));
- mFifthDayLabel
- = qobject_cast<HbLabel *> (
- mDocLoader->findWidget(CALEN_MONTVIEW_FIFTH_DAY_LABEL));
- mSixthDayLabel
- = qobject_cast<HbLabel *> (
- mDocLoader->findWidget(CALEN_MONTVIEW_SIXTH_DAY_LABEL));
- mSeventhDayLabel
- = qobject_cast<HbLabel *> (
- mDocLoader->findWidget(CALEN_MONTVIEW_SEVENTH_DAY_LABEL));
-
- // Get the weeknumber widget
- mWeekNumberWidget
- = qobject_cast<CalenThickLinesDrawer *> (
- mDocLoader->findWidget(CALEN_WEEKNUMBERS_WIDGET));
- // Disable the item so that line seperator doesnt gets drawn by default
- mWeekNumberWidget->setEnabled(false);
+// ----------------------------------------------------------------------------
+// CCalenMonthView::SetStatusPaneFromActiveContextL
+// Set active date to Status pane
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::SetStatusPaneFromActiveContextL()
+ {
+ TRACE_ENTRY_POINT;
+
+ // title pane
+ TBuf<KMaxMonthName> title;
+ TTime activeDay = CCalenContainer::DateFromContextL( iServices.Context() );
+ TDateTime activeDayTime = activeDay.DateTime();
+ iSPUtils->MonthNameByActiveTime( title, activeDay );
+ iSPUtils->UnderLineTitleText( EFalse );
+ iSPUtils->SetTitleTextL( title );
+
+
+ // navi pane
+ CAknNavigationDecorator* naviLabel = iSPUtils->ShowNaviPaneL( activeDay );
+ ShowValidScrollButtons( *naviLabel,
+ activeDay - TTimeIntervalMonths(1),
+ activeDay + TTimeIntervalMonths(1) );
- // Get the month grid
- mMonthGrid
- = qobject_cast<CalenMonthGrid *> (
- mDocLoader->findWidget(CALEN_MONTHGRID));
- mCurrPaneParent = qobject_cast<HbWidget *> (
- mDocLoader->findWidget(CALEN_CURRPREVIEWPARENT));
- // Get current day preview pane widget
- mCurrPreviewPane
- = static_cast<CalenPreviewPane *> (
- docLoader->findWidget(CALEN_CURRPREVIEWPANE));
- //mCurrPreviewPane->setParent(mCurrPaneParent);
- mCurrPaneParent->setFlag(QGraphicsItem::ItemClipsChildrenToShape, true);
- HbLabel* currPaneNoEntriesLabel = static_cast<HbLabel *> (
- docLoader->findWidget(CALEN_NOENTRIES_LABEL_CURR));
- mCurrPreviewPane->setView(this);
- mCurrPreviewPane->setNoEntriesLabel(currPaneNoEntriesLabel);
-
- connect(
- HbTheme::instance(), SIGNAL(changed()),
- mCurrPreviewPane, SLOT(handleThemeChange()));
-
- mCurrPaneLayoutWidget = qobject_cast<HbWidget*>(docLoader->findWidget(CALEN_CURRPANELAYOUT));
- mCurrPaneLayout = static_cast<QGraphicsLinearLayout*>(mCurrPaneLayoutWidget->layout());
-
- mPrevPaneParent = qobject_cast<HbWidget *> (
- mDocLoader->findWidget(CALEN_PREVPREVIEWPARENT));
- // Get previous day preview pane widget
- mPrevPreviewPane
- = static_cast<CalenPreviewPane *> (
- docLoader->findWidget(CALEN_PREVPREVIEWPANE));
- //mPrevPreviewPane->setParent(mPrevPaneParent);
- mPrevPaneParent->setFlag(QGraphicsItem::ItemClipsChildrenToShape, true);
- HbLabel* prevPaneNoEntriesLabel = static_cast<HbLabel *> (
- docLoader->findWidget(CALEN_NOENTRIES_LABEL_PREV));
- mPrevPreviewPane->setView(this);
- mPrevPreviewPane->setNoEntriesLabel(prevPaneNoEntriesLabel);
- connect(
- HbTheme::instance(), SIGNAL(changed()),
- mPrevPreviewPane, SLOT(handleThemeChange()));
- mPrevPaneParent->setVisible(false);
-
- mPrevPaneLayoutWidget = qobject_cast<HbWidget*>(docLoader->findWidget(CALEN_PREVPANELAYOUT));
- mPrevPaneLayout = static_cast<QGraphicsLinearLayout*>(mPrevPaneLayoutWidget->layout());
- mNextPaneParent = qobject_cast<HbWidget *> (
- mDocLoader->findWidget(CALEN_NEXTPREVIEWPARENT));
- // Get next day preview pane widget
- mNextPreviewPane
- = static_cast<CalenPreviewPane *> (
- docLoader->findWidget(CALEN_NEXTPREVIEWPANE));
- //mNextPreviewPane->setParent(mNextPaneParent);
- mNextPaneParent->setFlag(QGraphicsItem::ItemClipsChildrenToShape, true);
- HbLabel* nextPaneNoEntriesLabel = static_cast<HbLabel *> (
- docLoader->findWidget(CALEN_NOENTRIES_LABEL_NEXT));
- mNextPreviewPane->setView(this);
- mNextPreviewPane->setNoEntriesLabel(nextPaneNoEntriesLabel);
- connect(
- HbTheme::instance(), SIGNAL(changed()),
- mNextPreviewPane, SLOT(handleThemeChange()));
+ iSPUtils->RefreshStatusPane();
+ TRACE_EXIT_POINT;
+ }
+
+// ----------------------------------------------------------------------------
+// CCalenMonthView::DoActivateImplL
+// CCalenNativeView::DoActivateL() calls DoActivateImplL()
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::DoActivateImplL( const TVwsViewId& /*aPrevViewId*/,
+ TUid /*aCustomMessageId*/,
+ const TDesC8& /*aCustomMessage*/ )
+ {
+ TRACE_ENTRY_POINT;
+
+ static_cast<CCalenMonthContainer*>(iContainer)->InitDataForMonthL();
- mNextPaneParent->setVisible(false);
- mNextPaneLayoutWidget = qobject_cast<HbWidget*>(docLoader->findWidget(CALEN_NEXTPANELAYOUT));
- mNextPaneLayout = static_cast<QGraphicsLinearLayout*>(mNextPaneLayoutWidget->layout());
-
- mMonthGridPlusWeekNumWidget
- = qobject_cast<HbWidget *> (
- mDocLoader->findWidget(CALEN_MONTHGRID_WEEKNUMBERS_WIDGET));
+ TRACE_EXIT_POINT;
+ }
+
+// ----------------------------------------------------------------------------
+// CCalenMonthView::DoDeactivateImpl
+// CCalenNativeView::DoDeactivateL() calls DoDeactivateImplL()
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::DoDeactivateImpl()
+ {
+ TRACE_ENTRY_POINT;
- mMonthGrid->setView(this);
+ if (!iAvkonAppUi->IsDisplayingMenuOrDialog())
+ {
+ iSPUtils->HideNaviPane();
+ //iNaviContainer->Pop(iNaviLabel);
+ //delete iNaviLabel;
+ //iNaviLabel = NULL;
+ }
+
+ TRACE_EXIT_POINT;
+ }
-
-
- mIsFirstTimeLoad = true;
- // get a pointner to activity manager
- HbActivityManager* activityManager = qobject_cast<HbApplication*>(qApp)->activityManager();
+// ----------------------------------------------------------------------------
+// CCalenMonthView::CreateContainerImplL
+// making CCalendarContainer. In this class, it is CCalenMonthContainer.
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+CCalenContainer* CCalenMonthView::CreateContainerImplL()
+ {
+ TRACE_ENTRY_POINT;
+
+ TRACE_EXIT_POINT;
+ return new( ELeave )CCalenMonthContainer( this, iDate, iServices );
+ }
- // clean up any previous versions of this activity, if any, i.e. activityName, from the activity manager.
- // Ignore return value, first boot would always return False. bool declared
- // only for debugging purpose.
- bool ok = activityManager->removeActivity(activityName);
-
- OstTraceFunctionExit0( CALENMONTHVIEW_SETUPVIEW_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::OnLocaleChangedL
+// Locale or Today was changed when this function is called.
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::OnLocaleChangedL(TInt aReason)
+ {
+ TRACE_ENTRY_POINT;
-/*!
- Constructs the remaining part of the month view that was kept as
- part if lazy loading
- */
-void CalenMonthView::doLazyLoading()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_DOLAZYLOADING_ENTRY );
- // Add background items to all the widgets
- addBackgroundFrame();
-
- // Construct and add the previous month and next month items to the view
- mMonthGrid->updateMonthGridWithInActiveMonths(mMonthDataArray);
-
- // Check if regional information needs to be shown
- // and add it or remove it
- showHideRegionalInformation();
+ if (iContainer)
+ {
+ if (iContainer->IsVisible())
+ {
+ if (aReason & EChangesLocale)
+ {
+ if (IsContainerFocused())
+ {
+ SetStatusPaneFromActiveContextL();
+ }
+ else
+ {
+ iLocChangeReason = aReason;
+ }
+ }
+ if ((aReason & EChangesSystemTime ) || (aReason & EChangesMidnightCrossover ))
+ {
+ static_cast<CCalenMonthContainer*>(iContainer)->ChangesMidnightCrossover();
+ }
+ }
+ else
+ { // Not visible
+ iLocChangeReason = aReason;
+ }
+ }
+
+ TRACE_EXIT_POINT;
+ }
+
+// ----------------------------------------------------------------------------
+// CCalenMonthView::RedrawStatusPaneL
+// Redraw status pane when Form is closed
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::RedrawStatusPaneL()
+ {
+ TRACE_ENTRY_POINT;
+
+ SetStatusPaneFromActiveContextL();
+
+ static_cast<CCalenMonthContainer*>(
+ iContainer)->ChangesMidnightCrossover();
- // Connect to the menu actions
- HbAction
- *newEventAction =
- qobject_cast<HbAction *> (
- mDocLoader->findObject(CALEN_MONTVIEW_MENU_NEWEVENT));
-
- connect(newEventAction, SIGNAL(triggered()), this, SLOT(createEditor()));
-
- mGoToTodayAction =
- qobject_cast<HbAction *> (
- mDocLoader->findObject(CALEN_MONTVIEW_MENU_GOTOTODAY));
- connect(mGoToTodayAction, SIGNAL(triggered()), this, SLOT(goToToday()));
+ static_cast<CCalenMonthContainer*>(
+ iContainer)->RedrawPreviewPane();
- HbAction
- *goToDateAction =
- qobject_cast<HbAction *> (
- mDocLoader->findObject(CALEN_MONTVIEW_MENU_GOTODATE));
-
- connect(goToDateAction, SIGNAL(triggered()), this, SLOT(goToDate()));
+ TRACE_EXIT_POINT;
+ }
- // TODO: Need to move this to docml
- // Set the title to the submenu
- mDeleteSubMenu =
- qobject_cast<HbMenu *> (
- mDocLoader->findObject(CALEN_MONTVIEW_DELETE_SUBMENU));
- mDeleteSubMenu->setTitle(hbTrId("txt_calendar_opt_delete_entries"));
-
- HbAction
- *beforeDateAction =
- qobject_cast<HbAction *> (
- mDocLoader->findObject(CALEN_MONTVIEW_MENU_BEFOREDATE));
-
- connect(beforeDateAction, SIGNAL(triggered()), this,
- SLOT(deleteBeforeDate()));
+// ----------------------------------------------------------------------------
+// CCalenMonthView::DynInitMenuPaneL
+// Changes MenuPane dynamically
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::DynInitMenuPaneL(TInt aResourceId,
+ CEikMenuPane* aMenuPane)
+ {
+ TRACE_ENTRY_POINT;
- HbAction
- *allEntriesAction =
- qobject_cast<HbAction *> (
- mDocLoader->findObject(CALEN_MONTVIEW_MENU_ALLENTRIES));
-
- connect(allEntriesAction, SIGNAL(triggered()), this,
- SLOT(deleteAllEntries()));
-
- HbAction
- *settingsAction =
- qobject_cast<HbAction *> (
- mDocLoader->findObject(CALEN_MONTVIEW_MENU_SETTINGS));
-
- connect(settingsAction, SIGNAL(triggered()), this,
- SLOT(launchSettingsView()));
+ TBool isEntry = EFalse;
+ static_cast<CCalenMonthContainer*>(iContainer)->HidePopup();
- // Connect to the signal of change orientation.
- connect(&(mServices.MainWindow()),
- SIGNAL(orientationChanged(Qt::Orientation)), this,
- SLOT(changeOrientation(Qt::Orientation)));
-
- // Connect to the signal when options menu is shown
- // This is required to add/remove dynamically some options
- connect(menu(), SIGNAL(aboutToShow ()), this,
- SLOT(addRemoveActionsInMenu()));
- //add "show lunar data" action item ,if regional plugin is present
- //regional plugin will add the option itself and handles it accordingly
- //use this api after adding all action item to the menu
- //so that plugin add the "Show lunar data" item as a second last option
- // in all views
- mServices.OfferMenu(menu());
-
- OstTraceFunctionExit0( CALENMONTHVIEW_DOLAZYLOADING_EXIT );
-}
+ CCalenNativeView::DynInitMenuPaneL(aResourceId, aMenuPane);
+ switch (aResourceId)
+ {
+ case R_CALENDAR_MONTH_MENUPANE:
+ {
-/*!
- Adds the week numbers to the weeknumber widget
- */
-void CalenMonthView::addWeekNumbers()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_ADDWEEKNUMBERS_ENTRY );
-
- if (!mFirstWeekLabel) {
- // Get all the six week labels
- mFirstWeekLabel
- = qobject_cast<HbLabel *> (
- mDocLoader->findWidget(CALEN_MONTVIEW_FIRST_WEEK_LABEL));
- mSecondWeekLabel
- = qobject_cast<HbLabel *> (
- mDocLoader->findWidget(CALEN_MONTVIEW_SECOND_WEEK_LABEL));
- mThirdWeekLabel
- = qobject_cast<HbLabel *> (
- mDocLoader->findWidget(CALEN_MONTVIEW_THIRD_WEEK_LABEL));
- mFourthWeekLabel
- = qobject_cast<HbLabel *> (
- mDocLoader->findWidget(CALEN_MONTVIEW_FOURTH_WEEK_LABEL));
- mFifthWeekLabel
- = qobject_cast<HbLabel *> (
- mDocLoader->findWidget(CALEN_MONTVIEW_FIFTH_WEEK_LABEL));
- mSixthWeekLabel
- = qobject_cast<HbLabel *> (
- mDocLoader->findWidget(CALEN_MONTVIEW_SIXTH_WEEK_LABEL));
- }
-
- // Set the text colors well before instead of setting it again and again
- mFirstWeekLabel->setTextColor(mWeekDaysColor);
- mSecondWeekLabel->setTextColor(mWeekDaysColor);
- mThirdWeekLabel->setTextColor(mWeekDaysColor);
- mFourthWeekLabel->setTextColor(mWeekDaysColor);
- mFifthWeekLabel->setTextColor(mWeekDaysColor);
- mSixthWeekLabel->setTextColor(mWeekDaysColor);
-
- // Calculate the week numbers and set them to the week labels
- updateWeekNumGridModel();
-
- // Get the day names layout
- QGraphicsLinearLayout *dayNamesLayout =
- static_cast<QGraphicsLinearLayout *> (mDayNameWidget->layout());
-
- if (KCalenDaysInWeek == dayNamesLayout->count()) {
- // Add one empty label in the day name grid
- HbLabel *label = new HbLabel(mDayNameWidget);
+#ifdef RD_CALEN_EXTERNAL_CAL
+ TBool isit=ExtCalendarAvailableL();
+ if (!isit)
+ {
+ ReleaseServiceHandler();
+ TInt dummy;
+ if (aMenuPane->MenuItemExists(ECalenExtAiwCommandId,dummy))
+ {
+ aMenuPane->DeleteMenuItem(ECalenExtAiwCommandId);
+ }
+ }
+#endif //RD_CALEN_EXTERNAL_CAL
- // Set the attributes same as that of other day names to make it
- // look similar to the day names
- label->setPlainText("");
- label->setFont(mFirstDayLabel->font());
- label->setFontSpec(mFirstDayLabel->fontSpec());
- label->setAlignment(mFirstDayLabel->alignment());
- label->setElideMode(mFirstDayLabel->elideMode());
- label->setZValue(mFirstDayLabel->zValue());
- // Set the proper width to this empty label so that
- // day names are dislayed against the correct columns
- HbDeviceProfile deviceProf;
- qreal unitValue = deviceProf.unitValue();
- qreal widthInPixels = WEEKNUMWIDTH * unitValue;
- label->setPreferredWidth(widthInPixels);
- label->setMinimumWidth(widthInPixels);
- label->setMaximumWidth(widthInPixels);
- label->setContentsMargins(0,0,0,0);
-
- // Add this label into layout
- dayNamesLayout->insertItem(0, label);
- dayNamesLayout->invalidate();
- dayNamesLayout->activate();
- }
-
- // Now insert the weekNumber Grid
- QGraphicsLinearLayout *layout = static_cast<QGraphicsLinearLayout *>
- (mMonthGridPlusWeekNumWidget->layout());
-
- if (1 == layout->count()) {
- layout->insertItem(0, mWeekNumberWidget);
- // Enable the item so that line seperator gets drawn
- mWeekNumberWidget->setEnabled(true);
- layout->invalidate();
- layout->activate();
- }
-
- OstTraceFunctionExit0( CALENMONTHVIEW_ADDWEEKNUMBERS_EXIT );
-}
-
-/*!
- Removes the week numbers from the view
- */
-void CalenMonthView::removeWeekNumbers()
+ if ( ! FeatureManager::FeatureSupported(KFeatureIdHelp) )
+ {
+ aMenuPane->DeleteMenuItem(EAknCmdHelp);
+ }
+
+ RPointerArray<CCalCalendarInfo> calendarInfoList;
+ iServices.GetAllCalendarInfoL(calendarInfoList);
+ CleanupClosePushL(calendarInfoList);
+
+ for(TInt index=0 ; index < calendarInfoList.Count();index++ )
+ {
+ if(calendarInfoList[index]->Enabled() )
+ {
+ CCalIter* iterator = CCalIter::NewL(
+ iServices.SessionL(calendarInfoList[index]->FileNameL()) );
+ CleanupStack::PushL( iterator );
+ if( iterator->FirstL() != KNullDesC8() )
+ {
+ isEntry = ETrue;
+ }
+ CleanupStack::PopAndDestroy( iterator );
+ }
+
+ }
+ CleanupStack::PopAndDestroy(&calendarInfoList);
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_REMOVEWEEKNUMBERS_ENTRY );
-
- // Remove the week number grid if setting is off
- QGraphicsLinearLayout *layout = static_cast<QGraphicsLinearLayout *>
- (mMonthGridPlusWeekNumWidget->layout());
- if (2 == layout->count()) {
- layout->removeItem(mWeekNumberWidget);
-
- // Disable the item as we are removing it from the layout
- mWeekNumberWidget->setEnabled(false);
- layout->invalidate();
- layout->activate();
-
- // Clear the week labels
- mFirstWeekLabel->clear();
- mSecondWeekLabel->clear();
- mThirdWeekLabel->clear();
- mFourthWeekLabel->clear();
- mFifthWeekLabel->clear();
- mSixthWeekLabel->clear();
+ if( !isEntry )
+ {
+ aMenuPane->DeleteMenuItem( ECalenDeleteAllEntries );
+ }
+ if( !iServices.InterimUtilsL().MRViewersEnabledL( ETrue ) )
+ {
+ aMenuPane->DeleteMenuItem( ECalenNewMeetingRequest );
+ }
+ // Offer the menu pane to the services for customisation by the
+ // the view manager/plugins
+ iServices.OfferMenuPaneL( aResourceId, aMenuPane );
+ }
+ break;
- // Get the day names layout
- QGraphicsLinearLayout *dayNamesLayout =
- static_cast<QGraphicsLinearLayout *> (mDayNameWidget->layout());
- if (dayNamesLayout->count() == KCalenDaysInWeek + 1) {
- // Remove the empty item in the day name grid
- QGraphicsLayoutItem *item = dayNamesLayout->itemAt(0);
- dayNamesLayout->removeAt(0);
- delete item;
- dayNamesLayout->invalidate();
- dayNamesLayout->activate();
- }
- }
-
- OstTraceFunctionExit0( CALENMONTHVIEW_REMOVEWEEKNUMBERS_EXIT );
-}
+ default:
+ break;
+ }
-/*!
- Sets the background frame for the month view
- */
-void CalenMonthView::addBackgroundFrame()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_ADDBACKGROUNDFRAME_ENTRY );
-
- // Set the background items for all the widgets
- HbFrameItem* frame = NULL;
- HbFrameDrawer *drawer = NULL;
- HbWidget* monthViewExceptPreviewPane = qobject_cast<HbWidget *> (
- mDocLoader->findWidget(CALEN_MONTHVIEW_EXCEPT_PANE));
- if (monthViewExceptPreviewPane) {
- drawer = new HbFrameDrawer("qtg_fr_cal_monthgrid_bg", HbFrameDrawer::NinePieces);
- // The grid background
- frame = new HbFrameItem(drawer, this);
- monthViewExceptPreviewPane->setBackgroundItem(frame->graphicsItem(), -2);
+ TRACE_EXIT_POINT;
}
- if (mTitleLabel) {
- // The month title
- drawer = new HbFrameDrawer("qtg_fr_cal_monthgrid_title_bg", HbFrameDrawer::ThreePiecesHorizontal);
- if (drawer)
- frame = new HbFrameItem(drawer, this);
- if(frame)
- mTitleLabel->setBackgroundItem(frame->graphicsItem(), -2);
- }
-
- // Set the frame to the preview pane
- drawer = new HbFrameDrawer("qtg_fr_cal_preview_bg", HbFrameDrawer::NinePieces);
- if (drawer)
- frame = new HbFrameItem(drawer, this);
- if(frame)
- mPrevPaneLayoutWidget->setBackgroundItem(frame->graphicsItem(), -5);
-
- // Set the frame to the preview pane
- drawer = new HbFrameDrawer("qtg_fr_cal_preview_bg", HbFrameDrawer::NinePieces);
- if(drawer)
- frame = new HbFrameItem(drawer, this);
- if(frame)
- mCurrPaneLayoutWidget->setBackgroundItem(frame->graphicsItem(), -5);
-
- // Set the frame to the preview pane
- drawer = new HbFrameDrawer("qtg_fr_cal_preview_bg", HbFrameDrawer::NinePieces);
- if(drawer)
- frame = new HbFrameItem(drawer, this);
- if(frame)
- mNextPaneLayoutWidget->setBackgroundItem(frame->graphicsItem(), -5);
-
- OstTraceFunctionExit0( CALENMONTHVIEW_ADDBACKGROUNDFRAME_EXIT );
-}
-
-void CalenMonthView::showHideRegionalInformation()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_SHOWHIDEREGIONALINFORMATION_ENTRY );
-
- if (pluginEnabled()) {
- XQSettingsKey regionalInfo(XQSettingsKey::TargetCentralRepository,
- KCRUidCalendar, KCalendarShowRegionalInfo);
-
- int showRegionalInfo =
- mSettingsManager->readItemValue(regionalInfo).toUInt();
- if (showRegionalInfo) {
-
- // Add the regional information to the preview panes
- if (!mPrevRegionalInfo) {
- mPrevRegionalInfo = qobject_cast<CalenPluginLabel *>
- (mDocLoader->findWidget(CALEN_PREVREGIONALINFO));
- mPrevRegionalInfo->show();
- mPrevPaneLayout->insertItem(0, mPrevRegionalInfo);
-
- HbFrameItem *frameCurr = new HbFrameItem(this);
- frameCurr->frameDrawer().setFrameType(
- HbFrameDrawer::ThreePiecesHorizontal);
- frameCurr->frameDrawer().setFrameGraphicsName(
- "qtg_fr_cal_preview_title_bg");
- mPrevRegionalInfo->setBackgroundItem(
- frameCurr->graphicsItem(), -2);
- }
- if (!mCurrRegionalInfo) {
- mCurrRegionalInfo = qobject_cast<CalenPluginLabel *>
- (mDocLoader->findWidget(CALEN_CURRREGIONALINFO));
- mCurrRegionalInfo->show();
- mCurrPaneLayout->insertItem(0, mCurrRegionalInfo);
-
- HbFrameItem *frameCurr = new HbFrameItem(this);
- frameCurr->frameDrawer().setFrameType(
- HbFrameDrawer::ThreePiecesHorizontal);
- frameCurr->frameDrawer().setFrameGraphicsName(
- "qtg_fr_cal_preview_title_bg");
- mCurrRegionalInfo->setBackgroundItem(
- frameCurr->graphicsItem(), -2);
- }
- if (!mNextRegionalInfo) {
- mNextRegionalInfo = qobject_cast<CalenPluginLabel *>
- (mDocLoader->findWidget(CALEN_NEXTREGIONALINFO));
- mNextRegionalInfo->show();
- mNextPaneLayout->insertItem(0, mNextRegionalInfo);
-
- HbFrameItem *frameCurr = new HbFrameItem(this);
- frameCurr->frameDrawer().setFrameType(
- HbFrameDrawer::ThreePiecesHorizontal);
- frameCurr->frameDrawer().setFrameGraphicsName(
- "qtg_fr_cal_preview_title_bg");
- mNextRegionalInfo->setBackgroundItem(
- frameCurr->graphicsItem(), -2);
- }
- QString *pluginString = pluginText();
- mPrevRegionalInfo->setPlainText(*pluginString);
- mPrevRegionalInfo->setTextColor(mPreviewHeadingColor);
- mCurrRegionalInfo->setPlainText(*pluginString);
- mCurrRegionalInfo->setTextColor(mPreviewHeadingColor);
- mNextRegionalInfo->setPlainText(*pluginString);
- mNextRegionalInfo->setTextColor(mPreviewHeadingColor);
- } else {
- if (mPrevRegionalInfo) {
- mPrevPaneLayout->removeItem(mPrevRegionalInfo);
- mPrevRegionalInfo->hide();
- mPrevRegionalInfo = NULL;
- }
- if (mCurrRegionalInfo) {
- mCurrPaneLayout->removeItem(mCurrRegionalInfo);
- mCurrRegionalInfo->hide();
- mCurrRegionalInfo = NULL;
- }
- if (mNextRegionalInfo) {
- mNextPaneLayout->removeItem(mNextRegionalInfo);
- mNextRegionalInfo->hide();
- mNextRegionalInfo = NULL;
- }
- }
- }
-
- OstTraceFunctionExit0( CALENMONTHVIEW_SHOWHIDEREGIONALINFORMATION_EXIT );
-}
-
-/*!
- Handles the context changed notification
- */
-void CalenMonthView::onContextChanged()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_ONCONTEXTCHANGED_ENTRY );
- //Update plugin label after setting context
- if (mCurrRegionalInfo && mPrevRegionalInfo && mNextPaneLayout
- && pluginEnabled()) {
- QString *pluginString = pluginText();
- mPrevRegionalInfo->setPlainText(*pluginString);
- mCurrRegionalInfo->setPlainText(*pluginString);
- mNextRegionalInfo->setPlainText(*pluginString);
- }
- OstTraceFunctionExit0( CALENMONTHVIEW_ONCONTEXTCHANGED_EXIT );
-}
-
-/*!
- Calculates the week numbers and sets them to the week labels
- */
-void CalenMonthView::updateWeekNumGridModel()
-
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_UPDATEWEEKNUMGRIDMODEL_ENTRY );
-
- // Get the visible date
- QDateTime firstVisibleDate = mFirstDayOfGrid.addDays(KCalenDaysInWeek
- * mNumOfRowsInPrevMonth);
- // Go to the last day so that we get the proper week number for the first
- // week of January
- mWeekNumbers.clear();
- // get the proper week numbers
- for (int i = 0; i < KNumOfVisibleRows; i++) {
- // Get the week number
- QDateTime day = firstVisibleDate.addDays((KCalenDaysInWeek * i));
- long weekNumber(day.date().weekNumber());
- mWeekNumbers.append(weekNumber);
- }
-
- // Update the week labels text
- QString text = QString::number(mWeekNumbers.at(0));
- mFirstWeekLabel->setPlainText(text);
- text = QString::number(mWeekNumbers.at(1));
- mSecondWeekLabel->setPlainText(text);
- text = QString::number(mWeekNumbers.at(2));
- mThirdWeekLabel->setPlainText(text);
- text = QString::number(mWeekNumbers.at(3));
- mFourthWeekLabel->setPlainText(text);
- text = QString::number(mWeekNumbers.at(4));
- mFifthWeekLabel->setPlainText(text);
- text = QString::number(mWeekNumbers.at(5));
- mSixthWeekLabel->setPlainText(text);
-
- OstTraceFunctionExit0( CALENMONTHVIEW_UPDATEWEEKNUMGRIDMODEL_EXIT );
-}
-/*!
- Populates the month view with today as focussed item
- */
-void CalenMonthView::goToToday()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_GOTOTODAY_ENTRY );
-
- QDateTime today = CalenDateUtils::today();
- // Set the context and repopulate the view
- MCalenContext &context = mServices.Context();
- context.setFocusDateAndTime(today);
-
- // First check if we are not alread
- // showing today's month view
- if (mDate == today) {
- OstTraceFunctionExit0( CALENMONTHVIEW_GOTOTODAY_EXIT );
- return;
- } else if (mActiveMonth.date().year() == today.date().year() &&
- mActiveMonth.date().month() == today.date().month()) {
- mDate = today;
- // User is in current month only, so just set the focus to current
- // date grid item and refresh the preview pane
- int currIndex = mFirstDayOfGrid.daysTo(today);
- setCurrGridIndex(currIndex);
- // Populate the preview panes
- populatePreviewPane(mDate);
- } else {
- refreshViewOnGoToDate();
- }
-
- OstTraceFunctionExit0( DUP1_CALENMONTHVIEW_GOTOTODAY_EXIT );
-}
-
-/*
- Slot to handle adding / removing actions frm the menu when menu is about to
- shown to the user
- */
-void CalenMonthView::addRemoveActionsInMenu()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_ADDREMOVEACTIONSINMENU_ENTRY );
- HbAction* menuAction = mDeleteSubMenu->menuAction();
- if (menuAction) {
- if (!mEntriesInDataBase && mAgendaUtil->areNoEntriesInCalendar()) {
- // hide the delete entries option
- menuAction->setVisible(false);
- } else {
- mEntriesInDataBase = true;
- // Show the option to delete
- menuAction->setVisible(true);
- }
- }
-
- // Check if we are population for current day, if yes then disable the
- // gototoday action
- if ((CalenDateUtils::today().date() == mDate.date()) && mGoToTodayAction) {
- mGoToTodayAction->setVisible(false);
- } else if (mGoToTodayAction){
- mGoToTodayAction->setVisible(true);
- }
- OstTraceFunctionExit0( CALENMONTHVIEW_ADDREMOVEACTIONSINMENU_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CMonthCalenView::HandleCommandL
+// Command handling for month view.
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::HandleCommandL(TInt aCommand)
+ {
+ TRACE_ENTRY_POINT;
-/*!
- Populates the view
- */
-void CalenMonthView::doPopulation()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_DOPOPULATION_ENTRY );
-
- // Get the layout and add the preview pane layout.
- QGraphicsLinearLayout* viewLayout = static_cast<QGraphicsLinearLayout *>
- (widget()->layout());
- if (viewLayout->count() == 1) {
- // Count is 1 implies view has only month grid.
- // Add the preview pane at corresponding position.
- viewLayout->addItem(mCurrPaneParent);
- }
-
- // prepare for the population like reading the date frm the context
- // calculating the start of the grid etc.,
- prepareForPopulation();
-
- // Populate the view and preview panes only if we are not opening the calendar
- if (!mIsFirstTimeLoad) {
- // fetch list of required calendar instances
- populateWithInstanceView();
- // Populate the preview panes
- populatePreviewPane(mDate);
- }
-
-
- //update the day label
- //if changes in locale setting
- updateDayLabel();
-
- // Create the grid items with proper dates
- createGrid();
-
+ switch (aCommand)
+ {
+ // if MSK Open was selected then switch into Day view.
+ case EAknSoftkeyOpen:
+ CCalenNativeView::HandleCommandL( ECalenForwardsToDayView );
+ break;
+ // otherwise let CCalenNativeView handle the command.
+ default:
+ CCalenNativeView::HandleCommandL(aCommand);
+ break;
+ }
- // Complete the population
- completePopulation();
+ TRACE_EXIT_POINT;
+ }
- //set Currect Activity to month view
- mActivityId = ECalenMonthView;
-
- // connect to receive a call back on Month View exit. Call back would result in saveActivity
- // to be called in Native View.
- if (!mIsAboutToQuitEventConnected) // check if not already connected
- {
- connect(qobject_cast<HbApplication*>(qApp), SIGNAL(aboutToQuit()), this, SLOT(saveActivity()));
- mIsAboutToQuitEventConnected = true;
- }
-
-
- // Population is complete, inform it
- populationComplete();
-
- // Handle regional data here if we are not populating the month view for
- // the first time
- if (!mIsFirstTimeLoad) {
- showHideRegionalInformation();
- }
- // Reset the first time load flag
- mIsFirstTimeLoad = false;
-
- OstTraceFunctionExit0( CALENMONTHVIEW_DOPOPULATION_EXIT );
-}
-
-/*!
- Reads the date from the context and calculates the grid item dates
- */
-void CalenMonthView::prepareForPopulation()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_PREPAREFORPOPULATION_ENTRY );
-
- setActiveDay(dateFromContext(mServices.Context()));
- setDate();
- updateMonthDataArrayWithActiveDates();
-
- OstTraceFunctionExit0( CALENMONTHVIEW_PREPAREFORPOPULATION_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::Id
+// From CAknView
+// Return the UID of the month view
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+TUid CCalenMonthView::Id() const
+ {
+ TRACE_ENTRY_POINT;
-/*!
- Slot to handle gotodate action
- */
-void CalenMonthView::refreshViewOnGoToDate()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_REFRESHVIEWONGOTODATE_ENTRY );
-
- prepareForPopulation();
- setDateToLabel();
- // fetch list of required calendar instances
- populateWithInstanceView();
-
- populatePreviewPane(mDate);
-
- mMonthGrid->updateMonthGridModel(mMonthDataArray, mIndexToBeScrolled,
- mIsFirstTimeLoad);
- // Update the week Numbers model
- if (mIsWeekNumbersShown) {
- updateWeekNumGridModel();
- }
-
- OstTraceFunctionExit0( CALENMONTHVIEW_REFRESHVIEWONGOTODATE_EXIT );
-}
-
-/*!
- Reads the date from the context and stores into mDate
- */
-QDateTime CalenMonthView::dateFromContext(const MCalenContext &context)
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_DATEFROMCONTEXT_ENTRY );
- QDateTime ret;
- if (AgendaEntry::TypeTodo == context.instanceId().mType) {
- QDateTime today = CalenDateUtils::today();
- if (context.focusDateAndTime() < today) {
- ret = today;
- } else {
- ret = context.focusDateAndTime();
- }
- } else {
- ret = context.focusDateAndTime();
- }
- OstTraceFunctionExit0( CALENMONTHVIEW_DATEFROMCONTEXT_EXIT );
- return ret;
-}
+ TRACE_EXIT_POINT;
+ return KUidCalenMonthView;
+ }
-/*!
- Calculates the necesary parameters of the month view w.r.t mDate
- */
-void CalenMonthView::setActiveDay(QDateTime day)
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_SETACTIVEDAY_ENTRY );
-
- mDate = day;
-
- mActiveMonth = mDate;
- // Get the first day of the previous month
- QDateTime prevMonthDate = mDate.addMonths(-1);
- int prevMonth = prevMonthDate.date().month();
-
- // Get the first day of the month
- QDate date = prevMonthDate.date();
- date.setDate(date.year(), date.month(), 1);
- QDateTime firstDayOfPrevMonth(date, day.time());
-
- int offset(firstDayOfPrevMonth.date().dayOfWeek() - (mLocale.startOfWeek()
- + 1));
- if (offset < 0) {
- offset += KCalenDaysInWeek;
- }
-
- // Substract the offset days
- mFirstDayOfGrid = firstDayOfPrevMonth.addDays(-offset);
-
- // Calculate the number of weeks in the previous month that will be hidden
- mNumOfRowsInPrevMonth = offset + prevMonthDate.date().daysInMonth();
- mNumOfRowsInPrevMonth = (mNumOfRowsInPrevMonth / KCalenDaysInWeek);
-
- // Index to be scrolled is the last day of the visible grid item
- mIndexToBeScrolled = ((mNumOfRowsInPrevMonth + KNumOfVisibleRows)
- * KCalenDaysInWeek) - 1;
-
- // Now add the future month days to the count. While doing that, we need to
- // calcualte the count till the end of the week in which the month ends
- QDateTime futureMonthDate = mDate.addMonths(1);
- // Get the first day of the future month
- date = futureMonthDate.date();
- date.setDate(date.year(), date.month(), 1);
- QDateTime firstDayOfFutMonth(date, day.time());
- offset = firstDayOfFutMonth.date().dayOfWeek() - (mLocale.startOfWeek() + 1);
- if (offset < 0) {
- offset += KCalenDaysInWeek;
- }
- // Substract the firstDayNoInWeek days
- QDateTime dateTime = firstDayOfFutMonth.addDays(-offset);
+// ----------------------------------------------------------------------------
+// CCalenMonthView::ClearViewSpecificDataL
+// Clears any cached data for the specific view, e.g. currently
+// highlighted row, column, etc.
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::ClearViewSpecificDataL()
+ {
+ TRACE_ENTRY_POINT;
- // Need to add 42 days for dateTime so that it fits into the visible grid
- mLastDayOfGrid = dateTime.addDays(KNumOfVisibleRows * KCalenDaysInWeek - 1);
-
- // calculate the total numbers of dates that needs to be populated from
- // previous month to future month
- mTotalNumOfGridItems = mFirstDayOfGrid.daysTo(mLastDayOfGrid) + 1;
-
- // Calculate the last visible day
- int index = (mNumOfRowsInPrevMonth + KNumOfVisibleRows) * KCalenDaysInWeek;
- QDateTime lastVisibleDate = mFirstDayOfGrid.addDays(index - 1);
- QDateTime dateTimeToCalc = mLastDayOfGrid;
- mNumOfRowsInFutureMonth = 0;
- while (dateTimeToCalc > lastVisibleDate) {
- mNumOfRowsInFutureMonth++;
- dateTimeToCalc = dateTimeToCalc.addDays(-KCalenDaysInWeek);
- }
-
- OstTraceFunctionExit0( CALENMONTHVIEW_SETACTIVEDAY_EXIT );
-}
+ iDate = Time::NullTTime();
-/*!
- Calculates the dates that needs to be set to mMonthDataArray
- */
-void CalenMonthView::setDate()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_SETDATE_ENTRY );
-
- mMonthDataArray.clear();
- // Calculate the actual number of dates to be populated from previous month
- // to future month
- for (int i(0); i < mTotalNumOfGridItems; ++i) {
- QDateTime currentDay = CalenDateUtils::futureOf(mFirstDayOfGrid, i);
- CalenMonthData element(currentDay);
- mMonthDataArray.append(element);
- }
-
- OstTraceFunctionExit0( CALENMONTHVIEW_SETDATE_EXIT );
-}
-
-/*!
- Returns the currDay(Today)
- */
-QDateTime CalenMonthView::getCurrentDay()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_GETCURRENTDAY_ENTRY );
-
- OstTraceFunctionExit0( CALENMONTHVIEW_GETCURRENTDAY_EXIT );
- return mCurrentDay;
-}
+ TRACE_EXIT_POINT;
+ }
-/*!
- Returns the active day(currently focussed day)
- */
-QDateTime CalenMonthView::getActiveDay()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_GETACTIVEDAY_ENTRY );
-
- OstTraceFunctionExit0( CALENMONTHVIEW_GETACTIVEDAY_EXIT );
- return mDate;
-}
-
-/*!
- Returns the array of CalenMonthData items
- */
-QList<CalenMonthData>& CalenMonthView::monthDataList()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_MONTHDATALIST_ENTRY );
-
- OstTraceFunctionExit0( CALENMONTHVIEW_MONTHDATALIST_EXIT );
- return mMonthDataArray;
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::IsViewSpecificDataNullL
+// From CCalenNativeView
+// Returns ETrue if the view specific data is null, EFalse otherwise.
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+TBool CCalenMonthView::IsViewSpecificDataNullL()
+ {
+ TRACE_ENTRY_POINT;
+ TRACE_EXIT_POINT;
+ return ( iDate == Time::NullTTime() );
+ }
-/*!
- Creates the grid and adds the week numbers depending on the week number setting
- */
-void CalenMonthView::createGrid()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_CREATEGRID_ENTRY );
- // Update the month grid
- mMonthGrid->updateMonthGridModel(mMonthDataArray, mIndexToBeScrolled,
- mIsFirstTimeLoad);
- // Get start of week from the locale.
- HbExtendedLocale locale = HbExtendedLocale::system();
- int startOfWeek = locale.startOfWeek();
- if(startOfWeek != HbExtendedLocale::Monday)
- {
- //if the start of week is other than Monday, don't show the week number
- mIsWeekNumbersShown = 0;
- }
- else
- {
- // Read the week number setting from cenrep
- QVariant value = mSettingsManager->readItemValue(*mWeekNumberCenrepKey);
- mIsWeekNumbersShown = value.toUInt();
- }
- if (mIsWeekNumbersShown) {
- // Add week numbers to week grid
- addWeekNumbers();
- } else {
- // remove the weeknumbergrid from the layout
- removeWeekNumbers();
- }
- OstTraceFunctionExit0( CALENMONTHVIEW_CREATEGRID_EXIT );
-}
-
-/*!
- Called when down gesture is performed
- Caluclates the necessary dates for the new previous month
- */
-void CalenMonthView::updateModelWithPrevMonth()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_UPDATEMODELWITHPREVMONTH_ENTRY );
-
- // Get the new previous month
- QDateTime prevMonthDateTime = mActiveMonth.addMonths(-1);
- QDateTime dateTime = mFirstDayOfGrid;
- if (prevMonthDateTime.date().month() == mFirstDayOfGrid.date().month()) {
- // Month starts right on Monday(Start of the week),
- //hence go back to previous month
- dateTime = mFirstDayOfGrid.addMonths(-1);
- }
-
- int prevMonth = dateTime.date().month();
- QDateTime prevFirstDayOfGrid = mFirstDayOfGrid;
- for (int i = 0; i < KNumOfVisibleRows; i++) {
- mFirstDayOfGrid = mFirstDayOfGrid.addDays(-KCalenDaysInWeek);
- if (mFirstDayOfGrid.date().month() == prevMonth) {
- continue;
- } else {
- // Entered to another month, stop here
- break;
- }
- }
- // Readjust the mFirstDayOfGrid
- if (mFirstDayOfGrid.addDays(KCalenDaysInWeek - 1).date().month()
- != prevMonth) {
- mFirstDayOfGrid = mFirstDayOfGrid.addDays(KCalenDaysInWeek);
- }
-
- // Calculate the new days to be added
- int countToBeAdded = mFirstDayOfGrid.daysTo(prevFirstDayOfGrid);
-
- // Remove the bottom month entries in mMonthDataArray
- int countToBeDeleted = mNumOfRowsInFutureMonth * KCalenDaysInWeek;
- int count = mMonthDataArray.count() - 1;
- for (int i = 0; i < countToBeDeleted; i++) {
- mMonthDataArray.removeAt(count--);
- }
-
- // Update the total number of grid items as we will be removing the month
- // at the below
- mTotalNumOfGridItems -= countToBeDeleted;
+// ----------------------------------------------------------------------------
+// CCalenMonthView::ActiveStepL
+// From CCalenView
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+CCalenView::TNextPopulationStep CCalenMonthView::ActiveStepL()
+ {
+ TRACE_ENTRY_POINT;
- // Prepend countToBeAdded new items to mMonthDataArray
- for (int i = 0; i < countToBeAdded; i++) {
- QDateTime currentDay = mFirstDayOfGrid.addDays(i);
- CalenMonthData element(currentDay);
- mMonthDataArray.insert(i, element);
- }
- mTotalNumOfGridItems += countToBeAdded;
-
- // Update the mMonthDataArray with instances if any
- populatePrevMonth();
-
- // Update the necessary globals
- mActiveMonth = mActiveMonth.addMonths(-1);
- mNumOfRowsInPrevMonth = (countToBeAdded / KCalenDaysInWeek);
- mLastDayOfGrid = mFirstDayOfGrid.addDays(mTotalNumOfGridItems - 1);
- // Calculate the last visible day
- int index = (mNumOfRowsInPrevMonth + KNumOfVisibleRows) * KCalenDaysInWeek;
- QDateTime lastVisibleDate = mFirstDayOfGrid.addDays(index - 1);
- QDateTime date = mLastDayOfGrid;
- mNumOfRowsInFutureMonth = 0;
- while (date > lastVisibleDate) {
- mNumOfRowsInFutureMonth++;
- date = date.addDays(-KCalenDaysInWeek);
- }
- // Update the week Numbers model
- if (mIsWeekNumbersShown) {
- updateWeekNumGridModel();
- }
-
- OstTraceFunctionExit0( CALENMONTHVIEW_UPDATEMODELWITHPREVMONTH_EXIT );
-}
-/*!
- Called when up gesture is performed
- */
-void CalenMonthView::updateModelWithFutureMonth()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_UPDATEMODELWITHFUTUREMONTH_ENTRY );
-
- // Get the new future month
- QDateTime previousLastDayOfGrid = mLastDayOfGrid;
- QDateTime futureMonthDateTime = mActiveMonth.addMonths(2);
- QDate date = futureMonthDateTime.date();
- date.setDate(date.year(), date.month(), 1);
- // Get the first day of the future month
- QDateTime firstDayOfFutMonth(date, futureMonthDateTime.time());
-
- int offset = firstDayOfFutMonth.date().dayOfWeek() - (mLocale.startOfWeek()
- + 1);
- if (offset < 0) {
- offset += KCalenDaysInWeek;
- }
- // Substract the firstDayNoInWeek days
- QDateTime dateTime = firstDayOfFutMonth.addDays(-offset);
- // Need to add 42 days for dateTime
- mLastDayOfGrid = dateTime.addDays(KNumOfVisibleRows * KCalenDaysInWeek - 1);
-
- // Remove the first mNumOfRowsInPrevMonth rows in mMonthDataArray
- int countToBeDeleted = mNumOfRowsInPrevMonth * KCalenDaysInWeek;
- for (int i = 0; i < countToBeDeleted; i++) {
- mMonthDataArray.removeAt(0);
- }
-
- // Update the total number of grid items as we will be removing the month
- // at the top
- mTotalNumOfGridItems -= countToBeDeleted;
-
- // Calcualate the num fo days to be added
- int countToBeAdded = previousLastDayOfGrid.daysTo(mLastDayOfGrid);
- // Append countToBeAdded new items to mMonthDataArray
- for (int i = 1; i <= countToBeAdded; i++) {
- QDateTime currentDay = previousLastDayOfGrid.addDays(i);
- CalenMonthData element(currentDay);
- mMonthDataArray.append(element);
- }
-
-
-
- // Update the necessary globals
- mTotalNumOfGridItems += countToBeAdded;
- mActiveMonth = mActiveMonth.addMonths(1);
- mNumOfRowsInFutureMonth = (countToBeAdded / KCalenDaysInWeek);
- mFirstDayOfGrid = mLastDayOfGrid.addDays(-(mTotalNumOfGridItems - 1));
- // Calculate the first visible date
- int index = mTotalNumOfGridItems - ((mNumOfRowsInFutureMonth
- + KNumOfVisibleRows) * KCalenDaysInWeek);
- QDateTime firstVisibleDate = mFirstDayOfGrid.addDays(index - 1);
- QDateTime dateTimeToCalc = mFirstDayOfGrid;
- mNumOfRowsInPrevMonth = 0;
- while (dateTimeToCalc < firstVisibleDate) {
- mNumOfRowsInPrevMonth++;
- dateTimeToCalc = dateTimeToCalc.addDays(KCalenDaysInWeek);
- }
-
- // Update the week Numbers model
- if (mIsWeekNumbersShown) {
- updateWeekNumGridModel();
- }
-
- // Update the mMonthDataArray with instances if any
- populateNextMonth();
-
- OstTraceFunctionExit0( CALENMONTHVIEW_UPDATEMODELWITHFUTUREMONTH_EXIT );
-}
-
-/*!
- Returns the numner of rows in previous month
- */
-int CalenMonthView::rowsInPrevMonth()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_ROWSINPREVMONTH_ENTRY );
-
- OstTraceFunctionExit0( CALENMONTHVIEW_ROWSINPREVMONTH_EXIT );
- return mNumOfRowsInPrevMonth;
-}
-
-/*!
- Returns the number of rows in future month
- */
-int CalenMonthView::rowsInFutMonth()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_ROWSINFUTMONTH_ENTRY );
-
- OstTraceFunctionExit0( CALENMONTHVIEW_ROWSINFUTMONTH_EXIT );
- return mNumOfRowsInFutureMonth;
-}
-
-/*!
- Returns current Grid index
- */
-int CalenMonthView::getCurrGridIndex()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_GETCURRGRIDINDEX_ENTRY );
-
- OstTraceFunctionExit0( CALENMONTHVIEW_GETCURRGRIDINDEX_EXIT );
- return mMonthGrid->getCurrentIndex();
-}
-
-/*!
- Set the currend Index of the Grid
- */
-void CalenMonthView::setCurrGridIndex(int index)
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_SETCURRGRIDINDEX_ENTRY );
- mIsPrevPaneGesture = true;
- mMonthGrid->setCurrentIdex(index);
- OstTraceFunctionExit0( CALENMONTHVIEW_SETCURRGRIDINDEX_EXIT );
-}
-
-/*!
- Sets the active flag to the required dates in the array
- */
-void CalenMonthView::updateMonthDataArrayWithActiveDates()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_UPDATEMONTHDATAARRAYWITHACTIVEDATES_ENTRY );
-
- int activeMonth = mActiveMonth.date().month();
- int monthDataCount = mMonthDataArray.count();
- for (int i = 0; i < monthDataCount; i++) {
- if (mMonthDataArray[i].Day().date().month() == activeMonth) {
- // Set the active flag
- mMonthDataArray[i].setActive(true);
- } else {
- // Disable the active flag
- mMonthDataArray[i].setActive(false);
- }
- }
-
- OstTraceFunctionExit0( CALENMONTHVIEW_UPDATEMONTHDATAARRAYWITHACTIVEDATES_EXIT );
-}
+ CCalenMonthContainer* cnt = static_cast<CCalenMonthContainer*>( iContainer );
+ if(!cnt)
+ {
+ TRACE_EXIT_POINT;
+ iPopulationStep = EPopulationDone;
+ return CCalenView::EDone;
+ }
+
+ switch( iPopulationStep )
+ {
+ case ENothingDone:
+ {
+ cnt->PrepareForPopulationL();
+ iPopulationStep = ERequestedInstanceView;
+
+ CCalenView::TNextPopulationStep nextStep = CCalenView::EDone;
+
+ // Get the active collection ids.
+ RArray<TInt> colIdArray;
+ CCalenNativeView::GetActiveCollectionidsL( iServices, colIdArray );
+
+ if(colIdArray.Count() > 0)
+ {
+ if( !iServices.InstanceViewL(colIdArray) )
+ {
+ TRACE_EXIT_POINT;
+ nextStep = CCalenView::EWaitForInstanceView;
+ }
+ else
+ {
+ TRACE_EXIT_POINT;
+ nextStep = CCalenView::EKeepGoing;
+ }
+ }
+ else
+ {
+ if( !iServices.InstanceViewL() )
+ {
+ TRACE_EXIT_POINT;
+ nextStep = CCalenView::EWaitForInstanceView;
+ }
+ else
+ {
+ TRACE_EXIT_POINT;
+ nextStep = CCalenView::EKeepGoing;
+ }
+ }
+ colIdArray.Reset();
+ return nextStep;
+ }
+
+ case ERequestedInstanceView:
+ {
+ cnt->PopulateWithInstanceViewL();
+ iPopulationStep = ESetIndicatorNext;
+ TRACE_EXIT_POINT;
+ return CCalenView::EKeepGoing;
+ }
+ case ESetIndicatorNext:
+ {
+ cnt->SetIndicatorL();
+ iPopulationStep = ESetFocusNext;
+ TRACE_EXIT_POINT;
+ return CCalenView::EKeepGoing;
+ }
+ case ESetFocusNext:
+ {
+ cnt->SetFocusL();
+ iPopulationStep = EPopulationDone;
+ TRACE_EXIT_POINT;
+ return CCalenView::EKeepGoing;
+ }
+ case EPopulationDone: /* fall through... */
+ default:
+ {
+ cnt->CompletePopulationL();
-/*!
- Fetches the calenda entries for a given range
- */
-void CalenMonthView::getInstanceList(QList<QDate> &list,
- QDateTime rangeStart, QDateTime rangeEnd)
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_GETINSTANCELIST_ENTRY );
-
- AgendaUtil::FilterFlags filter =
- AgendaUtil::FilterFlags(AgendaUtil::IncludeAnniversaries
- | AgendaUtil::IncludeAppointments
- | AgendaUtil::IncludeEvents
- | AgendaUtil::IncludeReminders
- | AgendaUtil::IncludeIncompletedTodos);
- mAgendaUtil->markDatesWithEvents(rangeStart, rangeEnd, filter, list);
-
- OstTraceFunctionExit0( CALENMONTHVIEW_GETINSTANCELIST_EXIT );
-}
-
-/*!
- Parses the fetched entries and sets hasEvent attribute for necessary days
- */
-void CalenMonthView::populateWithInstanceView()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_POPULATEWITHINSTANCEVIEW_ENTRY );
-
- const QDateTime today(CalenDateUtils::today());
- const QDateTime gridStart(CalenDateUtils::beginningOfDay(mFirstDayOfGrid));
-
- // grid index for "today"
- const int todayIndex(gridStart.daysTo(today));
-
- QDateTime gridEnd(mLastDayOfGrid.date(), QTime(23, 59, 59, 0));
-
- // Get the list of dates which have events
- QList<QDate> datesWithEvents;
- getInstanceList(datesWithEvents,gridStart,gridEnd);
-
- // Parse thru the list of dates and set the required flags
- int datesEventsCount = datesWithEvents.count();
- for(int i(0); i < datesEventsCount; i++) {
- int offset = mFirstDayOfGrid.date().daysTo(datesWithEvents.at(i));
- mMonthDataArray[offset].SetHasEvents(true);
- }
- datesWithEvents.clear();
-
- if (datesEventsCount) {
- mEntriesInDataBase = true;
- }
-
- OstTraceFunctionExit0( CALENMONTHVIEW_POPULATEWITHINSTANCEVIEW_EXIT );
-}
-
-/*!
- Parses the fetched entries for previous month and
- sets hasEvent attribute for necessary days
- */
-void CalenMonthView::populatePrevMonth()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_POPULATEPREVMONTH_ENTRY );
-
- const QDateTime gridStart(CalenDateUtils::beginningOfDay(mFirstDayOfGrid));
- const QDateTime today(CalenDateUtils::today());
-
- const int todayIndex(gridStart.daysTo(today)); // grid index for "today"
- QDateTime end = gridStart.addDays(mNumOfRowsInPrevMonth * KCalenDaysInWeek);
- QDateTime gridEnd(end.date(), QTime(23, 59, 59, 0));
-
-
- // Get the list of dates which have events
- QList<QDate> datesWithEvents;
- getInstanceList(datesWithEvents,gridStart,gridEnd);
-
- // Parse thru the list of dates and set the required flags
- int datesEventsCount = datesWithEvents.count();
- for(int i(0); i < datesEventsCount; i++) {
- int offset = mFirstDayOfGrid.date().daysTo(datesWithEvents.at(i));
- mMonthDataArray[offset].SetHasEvents(true);
- }
- datesWithEvents.clear();
-
- if (datesEventsCount) {
- mEntriesInDataBase = true;
+ TRACE_EXIT_POINT;
+ return CCalenView::EDone;
+ }
+ }
}
-
- OstTraceFunctionExit0( CALENMONTHVIEW_POPULATEPREVMONTH_EXIT );
-}
-/*!
- Parses the fetched entries for future month and
- sets hasEvent attribute for necessary days
- */
-void CalenMonthView::populateNextMonth()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_POPULATENEXTMONTH_ENTRY );
- QList<AgendaEntry> list;
- int actualIndex = mNumOfRowsInFutureMonth * KCalenDaysInWeek;
- const QDateTime gridStart(mLastDayOfGrid.addDays(-actualIndex));
- actualIndex = mMonthDataArray.count() - actualIndex -1;
-
- const QDateTime today(CalenDateUtils::today());
- const int todayIndex(gridStart.daysTo(today)); // grid index for "today"
- QDateTime gridEnd(mLastDayOfGrid.date(), QTime(23, 59, 59, 0));
-
- // Get the list of dates which have events
- QList<QDate> datesWithEvents;
- getInstanceList(datesWithEvents,gridStart,gridEnd);
-
- // Parse thru the list of dates and set the required flags
- int datesEventsCount = datesWithEvents.count();
- for(int i(0); i < datesEventsCount; i++) {
- int offset = mFirstDayOfGrid.date().daysTo(datesWithEvents.at(i));
- mMonthDataArray[offset].SetHasEvents(true);
- }
- datesWithEvents.clear();
-
- if (datesEventsCount) {
- mEntriesInDataBase = true;
- }
- OstTraceFunctionExit0( CALENMONTHVIEW_POPULATENEXTMONTH_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::CancelPopulation
+// From CCalenView
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::CancelPopulation()
+ {
+ TRACE_ENTRY_POINT;
-/*!
- Function that gets called when instacne view is created, so that it can
- query agenda server for any entries
- */
-void CalenMonthView::fetchEntriesAndUpdateModel()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_FETCHENTRIESANDUPDATEMODEL_ENTRY );
-
- // Get to know if entries are there from the agenda server
- populateWithInstanceView();
- // Update the month grid model
- mMonthGrid->updateMonthGridWithEventIndicators(mMonthDataArray);
- // Populate the preview panes
- populatePreviewPane(mDate);
-
- OstTraceFunctionExit0( CALENMONTHVIEW_FETCHENTRIESANDUPDATEMODEL_EXIT );
-}
+ iPopulationStep = ENothingDone;
-/*!
- Populates the preview pane
- */
-void CalenMonthView::populatePreviewPane(QDateTime &dateTime)
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_POPULATEPREVIEWPANE_ENTRY );
-
- mPrevPreviewPane->populateLabel(dateTime.addDays(-1));
- mCurrPreviewPane->populateLabel(dateTime);
- mNextPreviewPane->populateLabel(dateTime.addDays(1));
-
- // Start the auto scroll on current preview pane
- mCurrPreviewPane->startAutoScroll();
-
- OstTraceFunctionExit0( CALENMONTHVIEW_POPULATEPREVIEWPANE_EXIT );
-}
-
-/*!
- Completes the population after setting the view as
- current view to the main window
- */
-void CalenMonthView::completePopulation()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_COMPLETEPOPULATION_ENTRY );
-
- setDateToLabel();
-
- OstTraceFunctionExit0( CALENMONTHVIEW_COMPLETEPOPULATION_EXIT );
-}
-
-/*!
- Launches the day view on tapping of the grid item
- */
-void CalenMonthView::handleGridItemActivated()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_HANDLEGRIDITEMACTIVATED_ENTRY );
-
- mServices.IssueCommandL(ECalenDayView);
-
- OstTraceFunctionExit0( CALENMONTHVIEW_HANDLEGRIDITEMACTIVATED_EXIT );
-}
+ TRACE_EXIT_POINT;
+ }
-/*!
- Sets the context w.r.t to the active day
- */
-void CalenMonthView::setContextForActiveDay(int index)
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_SETCONTEXTFORACTIVEDAY_ENTRY );
- QDateTime newActiveDay = mFirstDayOfGrid.addDays(index);
- // Set the context
- mServices.Context().setFocusDate(newActiveDay);
- mDate = newActiveDay;
- setDateToLabel();
-
- if(!mIsPrevPaneGesture) {
- populatePreviewPane(mDate);
- } else {
- // reset flag
- mIsPrevPaneGesture = false;
- }
-
- OstTraceFunctionExit0( CALENMONTHVIEW_SETCONTEXTFORACTIVEDAY_EXIT );
-}
-
-/*!
- Slot to launch the event editor
- */
-void CalenMonthView::createEditor()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_CREATEEDITOR_ENTRY );
-
- captureScreenshot(true);
- mServices.IssueCommandL(ECalenNewMeeting);
-
- OstTraceFunctionExit0( CALENMONTHVIEW_CREATEEDITOR_EXIT );
-}
-
-/*!
- Slot to launch the Day view
- */
-void CalenMonthView::launchDayView()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_LAUNCHDAYVIEW_ENTRY );
-
- mServices.IssueCommandL(ECalenDayView);
- // day view launched now, disconnect to get the call backs for saveActivity
- // on aboutToQuit signal
- disconnectAboutToQuitEvent();
-
- OstTraceFunctionExit0( CALENMONTHVIEW_LAUNCHDAYVIEW_EXIT );
-}
-
-/*!
-disconnects for the aboutToQuit events
- */
-void CalenMonthView::disconnectAboutToQuitEvent()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_DISCONNECTABOUTTOQUITEVENT_ENTRY );
-
- if (mIsAboutToQuitEventConnected) {
- disconnect(qobject_cast<HbApplication*>(qApp), SIGNAL(aboutToQuit()), this, SLOT(saveActivity()));
- mIsAboutToQuitEventConnected = false;
- }
-
- OstTraceFunctionExit0( CALENMONTHVIEW_DISCONNECTABOUTTOQUITEVENT_EXIT );
-}
-
-/*!
- Slot to handle the change in orientation
- */
-void CalenMonthView::changeOrientation(Qt::Orientation orientation)
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_CHANGEORIENTATION_ENTRY );
-
- if (mOrientation != orientation) {
- // change the orientation here
- mOrientation = orientation;
- handleChangeOrientation();
- }
-
- OstTraceFunctionExit0( CALENMONTHVIEW_CHANGEORIENTATION_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::CyclePosition
+// From CCalenView
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+CCalenView::TCyclePosition CCalenMonthView::CyclePosition() const
+ {
+ TRACE_ENTRY_POINT;
+ TRACE_EXIT_POINT;
+ return CCalenView::EReplaceMonthView;
+ }
-/*!
- Slot to handle the change in theme
- */
-void CalenMonthView::handleThemeChange()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_HANDLETHEMECHANGE_ENTRY );
-
- // Refresh the month view when the theme change happens
- mWeekDaysColor = HbColorScheme::color("qtc_cal_week_day");
- QColor monthTitleColor = HbColorScheme::color("qtc_cal_monthgrid_title");
-
- if (mTitleLabel && monthTitleColor.isValid()) {
- mTitleLabel->setTextColor(monthTitleColor);
- }
-
- mPreviewHeadingColor = HbColorScheme::color("qtc_cal_day_preview_heading");
-
- mServices.IssueCommandL(ECalenStartActiveStep);
-
- OstTraceFunctionExit0( CALENMONTHVIEW_HANDLETHEMECHANGE_EXIT );
-}
-
-/*!
- Loads appropriate section from the docml dsepending on the current orientation
- of the device
- */
-void CalenMonthView::handleChangeOrientation()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_HANDLECHANGEORIENTATION_ENTRY );
-
- bool loadSuccess = false;
- if (mOrientation == Qt::Horizontal) {
- mDocLoader->load(CALEN_MONTHVIEW_XML_FILE, CALEN_LANDSCAPE,
- &loadSuccess);
-
- } else if (mOrientation == Qt::Vertical) {
- mDocLoader->load(CALEN_MONTHVIEW_XML_FILE, CALEN_PORTRAIT,
- &loadSuccess);
- }
-
- Q_ASSERT_X(loadSuccess, "calenmonthview.cpp", "Unable to load XML");
-
- // Remove the current pane read from the docml from the layout
- // and add actual current pane to the layout
- QGraphicsLinearLayout* viewLayout = static_cast<QGraphicsLinearLayout *>
- (widget()->layout());
- viewLayout->removeAt(1);
- // Add this item only when orientaion is changed on month view
- // if it is changed in other views, adding the preview pane here was
- // overlapping with the month grid, hence, its been added in dopopulation()
- if (this == mServices.MainWindow().currentView()) {
- viewLayout->addItem(mCurrPaneParent);
- }
-
- OstTraceFunctionExit0( CALENMONTHVIEW_HANDLECHANGEORIENTATION_EXIT );
-}
-
-/*!
- Sets the appropriate date to the month title
- */
-void CalenMonthView::setDateToLabel()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_SETDATETOLABEL_ENTRY );
-
- // Get the localised string for month name from system locale
- QString dateString = mLocale.monthName(mDate.date().month(), HbExtendedLocale::LongFormat);
- // Append a single space
- dateString.append(" ");
- mLocale.setNumberOptions(QLocale::OmitGroupSeparator);
- // Append the year string also
- dateString.append(mLocale.toString(mDate.date().year()));
- mTitleLabel->setPlainText(dateString);
-
- OstTraceFunctionExit0( CALENMONTHVIEW_SETDATETOLABEL_EXIT );
-}
-
-/*!
- To handle previewpane swipe
- */
-void CalenMonthView::handlePreviewPaneGesture(bool rightGesture)
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_HANDLEPREVIEWPANEGESTURE_ENTRY );
+// ----------------------------------------------------------------------------
+// CCalenMonthView::LocalisedViewNameL
+// From CCalenView
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+const TDesC& CCalenMonthView::LocalisedViewNameL( CCalenView::TViewName aViewName )
+ {
+ TRACE_ENTRY_POINT;
- QGraphicsLinearLayout* viewLayout = static_cast<QGraphicsLinearLayout *>
- (widget()->layout());
-
- // Set the effect in progress flags for next and previous panes
- // For current pane, we would have set it in gestureEvent() function
- mPrevPreviewPane->effectStarted();
- mNextPreviewPane->effectStarted();
-
- if(rightGesture) {
- // Need to bring up the previous day preview pane
- // Create the effect on mCurrPreviewPane to slide to right side
- mPrevPaneParent->setVisible(true);
- if (mOrientation == Qt::Vertical) {
- HbEffect::add(mCurrPaneLayoutWidget,
- ":/fxml/portrait_preview_pane_hide_on_right_gesture",
- "hide");
- HbEffect::add(mPrevPaneLayoutWidget,
- ":/fxml/portrait_preview_pane_show_on_right_gesture",
- "show");
- } else {
- HbEffect::add(mCurrPaneLayoutWidget,
- ":/fxml/landscape_preview_pane_hide_on_right_gesture",
- "hide");
- HbEffect::add(mPrevPaneLayoutWidget,
- ":/fxml/landscape_preview_pane_show_on_right_gesture",
- "show");
- }
- // Start the effects
- HbEffect::start(mCurrPaneLayoutWidget, "hide");
- HbEffect::start(mPrevPaneLayoutWidget, "show",
- this, "handleRightEffectCompleted");
-
- //Remove the mCurrPreviewPane from the layout and add mPrevPreviewPane
- // to the layout
- viewLayout->removeAt(1);
- viewLayout->addItem(mPrevPaneParent);
- } else {
- // Need to bring up the previous day preview pane
- // Create the effect on mCurrPreviewPane to slide to left side
- mNextPaneParent->setVisible(true);
- if (mOrientation == Qt::Vertical) {
- HbEffect::add(mCurrPaneLayoutWidget,
- ":/fxml/portrait_preview_pane_hide_on_left_gesture",
- "hide");
- HbEffect::add(mNextPaneLayoutWidget,
- ":/fxml/portrait_preview_pane_show_on_left_gesture",
- "show");
- } else {
- HbEffect::add(mCurrPaneLayoutWidget,
- ":/fxml/landscape_preview_pane_hide_on_left_gesture",
- "hide");
- HbEffect::add(mNextPaneLayoutWidget,
- ":/fxml/landscape_preview_pane_show_on_left_gesture",
- "show");
- }
-
- // Start the effects
- HbEffect::start(mCurrPaneLayoutWidget, "hide");
- HbEffect::start(mNextPaneLayoutWidget, "show",
- this, "handleLeftEffectCompleted");
-
- //Remove the mCurrPreviewPane from the layout and add mNextPreviewPane
- // to the layout
- viewLayout->removeAt(1);
- viewLayout->addItem(mNextPaneParent);
- }
-
- OstTraceFunctionExit0( CALENMONTHVIEW_HANDLEPREVIEWPANEGESTURE_EXIT );
-}
+ HBufC* ret = NULL;
-/*!
- Returns the first date in the month grid
- */
-QDateTime CalenMonthView::firstDayOfGrid()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_FIRSTDAYOFGRID_ENTRY );
-
- OstTraceFunctionExit0( CALENMONTHVIEW_FIRSTDAYOFGRID_EXIT );
- return mFirstDayOfGrid;
-}
+ switch ( aViewName )
+ {
+ case CCalenView::EMenuName:
+ if ( !iMenuName )
+ {
+ iMenuName = StringLoader::LoadL( R_CALEN_VIEW_MONTH, iCoeEnv );
+ }
+ ret = iMenuName;
+ break;
+ case CCalenView::ESettingsName:
+ if ( !iSettingsName )
+ {
+ iSettingsName = StringLoader::LoadL( R_CALEN_QTN_DEFAULT_MONTH_VIEW,
+ iCoeEnv );
+ }
+ ret = iSettingsName;
+ break;
+ default:
+ ASSERT( EFalse );
+ break;
+ }
-/*!
- Function to handle any locale related changes
- */
-void CalenMonthView::onLocaleChanged(int reason)
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_ONLOCALECHANGED_ENTRY );
-
- if ((reason & EChangesSystemTime)
- || (reason & EChangesMidnightCrossover)) {
- mCurrentDay = CalenDateUtils::today();
- }
- OstTraceFunctionExit0( CALENMONTHVIEW_ONLOCALECHANGED_EXIT );
-}
+ TRACE_EXIT_POINT;
+ return *ret;
+ }
-/*!
- Slot to handle left gesture effects completion
- */
-void CalenMonthView::handleLeftEffectCompleted(
- const HbEffect::EffectStatus &status)
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_HANDLELEFTEFFECTCOMPLETED_ENTRY );
- Q_UNUSED(status);
-
- int index = getCurrGridIndex();
- index++;
-
- // Stop the scrolling on current preview pane
- mCurrPreviewPane->stopScrolling();
-
- // Swap the preview panes properly
- CalenPreviewPane* pane = mCurrPreviewPane;
- HbWidget* paneParent = mCurrPaneParent;
- HbWidget* paneLayoutWidget = mCurrPaneLayoutWidget;
- mCurrPreviewPane = mNextPreviewPane;
- mCurrPaneParent = mNextPaneParent;
- mCurrPaneLayoutWidget = mNextPaneLayoutWidget;
- mNextPreviewPane = mPrevPreviewPane;
- mNextPaneParent = mPrevPaneParent;
- mNextPaneLayoutWidget = mPrevPaneLayoutWidget;
- mPrevPreviewPane = pane;
- mPrevPaneParent = paneParent;
- mPrevPaneLayoutWidget = paneLayoutWidget;
-
- // Reset the effect in progress flag
- mCurrPreviewPane->effectFinished();
- mPrevPreviewPane->effectFinished();
- mNextPreviewPane->effectFinished();
-
- // Set the focus to proper date
- setCurrGridIndex(index);
- // Start the auto scroll on current preview pane
- mCurrPreviewPane->startAutoScroll();
- mNextPreviewPane->populateLabel(mDate.addDays(1));
- OstTraceFunctionExit0( CALENMONTHVIEW_HANDLELEFTEFFECTCOMPLETED_EXIT );
-}
+// ----------------------------------------------------------------------------
+// CCalenMonthView::ViewIconL
+// From CCalenView
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+CGulIcon* CCalenMonthView::ViewIconL() const
+ {
+ TRACE_ENTRY_POINT;
+ TRACE_EXIT_POINT;
+ return iServices.GetIconL( MCalenServices::ECalenMonthViewIcon );
+ }
-/*!
- Slot to handle right gesture effects completion
- */
-void CalenMonthView::handleRightEffectCompleted(
- const HbEffect::EffectStatus &status)
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_HANDLERIGHTEFFECTCOMPLETED_ENTRY );
+// ----------------------------------------------------------------------------
+// CCalenMonthView::UpdatePreviewPaneL
+// Updates preview pane/preview popup
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::UpdatePreviewPaneL()
+ {
+ TRACE_ENTRY_POINT;
- Q_UNUSED(status);
-
- int index = getCurrGridIndex();
- index--;
-
- // Stop the scrolling on current preview pane
- mCurrPreviewPane->stopScrolling();
-
- // Swap the preview panes properly
- CalenPreviewPane* pane = mCurrPreviewPane;
- HbWidget* paneParent = mCurrPaneParent;
- HbWidget* paneLayoutWidget = mCurrPaneLayoutWidget;
- mCurrPreviewPane = mPrevPreviewPane;
- mCurrPaneParent = mPrevPaneParent;
- mCurrPaneLayoutWidget = mPrevPaneLayoutWidget;
- mPrevPreviewPane = mNextPreviewPane;
- mPrevPaneParent = mNextPaneParent;
- mPrevPaneLayoutWidget = mNextPaneLayoutWidget;
- mNextPreviewPane = pane;
- mNextPaneParent = paneParent;
- mNextPaneLayoutWidget = paneLayoutWidget;
-
- // Reset the effect in progress flag
- mCurrPreviewPane->effectFinished();
- mNextPreviewPane->effectFinished();
- mPrevPreviewPane->effectFinished();
+ CCalenMonthContainer* cnt = static_cast<CCalenMonthContainer*>( iContainer );
+ if(cnt)
+ {
+ cnt->RedrawPreviewPane();
+ }
+
+ TRACE_EXIT_POINT;
+ }
+
+// ----------------------------------------------------------------------------
+// CCalenMonthView::HidePreviewPane
+// Hides preview pane/preview popup
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+void CCalenMonthView::HidePreviewPane()
+ {
+ TRACE_ENTRY_POINT;
- // Set the focus to proper date
- setCurrGridIndex(index);
- // Start the auto scroll on current preview pane
- mCurrPreviewPane->startAutoScroll();
- mPrevPreviewPane->populateLabel(mDate.addDays(-1));
-
- OstTraceFunctionExit0( CALENMONTHVIEW_HANDLERIGHTEFFECTCOMPLETED_EXIT );
-}
-/*!
- update the Day labels
- */
-void CalenMonthView::updateDayLabel()
-{
- OstTraceFunctionEntry0( CALENMONTHVIEW_UPDATEDAYLABEL_ENTRY );
+ CCalenMonthContainer* cnt = static_cast<CCalenMonthContainer*>( iContainer );
+ if(cnt)
+ {
+ cnt->HidePopup();
+ }
- // Set the short day names to these labels
- int startOfWeek = mLocale.startOfWeek();
- int weekDayIndex = startOfWeek;
- QStringList weekDayArray ;
- weekDayArray <<hbTrId("txt_calendar_grid_day_mo")
- <<hbTrId("txt_calendar_grid_day_tu")
- <<hbTrId("txt_calendar_grid_day_we")
- <<hbTrId("txt_calendar_grid_day_th")
- <<hbTrId("txt_calendar_grid_day_fr")
- <<hbTrId("txt_calendar_grid_day_sa")
- <<hbTrId("txt_calendar_grid_day_su");
-
- QList<HbLabel*> labels;
- // append seven day labels
- labels.append(mFirstDayLabel);
- labels.append(mSecondDayLabel);
- labels.append(mThirdDayLabel);
- labels.append(mFourthDayLabel);
- labels.append(mFifthDayLabel);
- labels.append(mSixthDayLabel);
- labels.append(mSeventhDayLabel);
- QGraphicsLinearLayout* layout = static_cast<QGraphicsLinearLayout*> (mDayNameWidget->layout());
- for(int i=0;i < KCalenDaysInWeek; i++ )
- {
- labels.at(i)->setPlainText(weekDayArray[weekDayIndex]);
- // Set the stretch factor as 1 so that each label occupies equal space
- layout->setStretchFactor(labels.at(i), 1);
- if(weekDayIndex == KCalenDaysInWeek - 1 )//Sunday
- {
- weekDayIndex = 0;//reset to monday
- continue;
- }
- weekDayIndex++;//increase the index for next value
- }
- labels.clear();
- weekDayArray.clear();
-
- OstTraceFunctionExit0( CALENMONTHVIEW_UPDATEDAYLABEL_EXIT );
-}
-// End of file --Don't remove this.
+ TRACE_EXIT_POINT;
+ }
+
+// End of File