calendarui/views/dayview/src/calendaymodelmanager.cpp
author hgs
Mon, 09 Aug 2010 18:30:52 +0530
changeset 57 bb2d3e476f29
parent 45 b6db4fd4947b
child 63 a3cb48f6c889
permissions -rw-r--r--
201031
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: Model manager holds models for three day views
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include <calenservices.h>
hgs
parents:
diff changeset
    19
#include <calencontext.h>
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include "calendaymodelmanager.h"
hgs
parents:
diff changeset
    22
#include "calendaymodel.h"
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
/*!
57
hgs
parents: 45
diff changeset
    25
 BC Model Manager constructor. Model manager use calendar context to
hgs
parents: 45
diff changeset
    26
 populate models with proper events.
hgs
parents: 45
diff changeset
    27
 \a services is handle to organizer services \a emptyModels if true created models
hgs
parents: 45
diff changeset
    28
 are not populated with events \a parent
45
hgs
parents:
diff changeset
    29
 */
57
hgs
parents: 45
diff changeset
    30
CalenDayModelManager::CalenDayModelManager(
hgs
parents: 45
diff changeset
    31
    MCalenServices &services,
hgs
parents: 45
diff changeset
    32
    bool emptyModels,
hgs
parents: 45
diff changeset
    33
    QObject *parent) :
hgs
parents: 45
diff changeset
    34
    QObject(parent), mServices(services)
45
hgs
parents:
diff changeset
    35
{
57
hgs
parents: 45
diff changeset
    36
    if (emptyModels) {
hgs
parents: 45
diff changeset
    37
        mCurrentDayTime = QDateTime();
hgs
parents: 45
diff changeset
    38
    }
hgs
parents: 45
diff changeset
    39
    else {
hgs
parents: 45
diff changeset
    40
        mCurrentDayTime = mServices.Context().focusDateAndTime();
hgs
parents: 45
diff changeset
    41
    }
hgs
parents: 45
diff changeset
    42
    createAllModels();
45
hgs
parents:
diff changeset
    43
}
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
CalenDayModelManager::~CalenDayModelManager()
hgs
parents:
diff changeset
    46
{
57
hgs
parents: 45
diff changeset
    47
    // not needed now
45
hgs
parents:
diff changeset
    48
}
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
void CalenDayModelManager::viewsScrollingFinished(CalenScrollDirection scrollTo)
57
hgs
parents: 45
diff changeset
    51
{
hgs
parents: 45
diff changeset
    52
    if (scrollTo == ECalenScrollToNext) {
hgs
parents: 45
diff changeset
    53
        moveForward();
hgs
parents: 45
diff changeset
    54
    }
hgs
parents: 45
diff changeset
    55
    else {
hgs
parents: 45
diff changeset
    56
        moveBackward();
hgs
parents: 45
diff changeset
    57
    }
hgs
parents: 45
diff changeset
    58
}
45
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
/*!
57
hgs
parents: 45
diff changeset
    61
 Reorganize models after move to previous day.  
45
hgs
parents:
diff changeset
    62
 */
hgs
parents:
diff changeset
    63
void CalenDayModelManager::moveBackward()
hgs
parents:
diff changeset
    64
{
57
hgs
parents: 45
diff changeset
    65
    mCurrentDayTime = mServices.Context().focusDateAndTime();
45
hgs
parents:
diff changeset
    66
57
hgs
parents: 45
diff changeset
    67
    CalenDayModel* tmp = mModels[NextDay];
hgs
parents: 45
diff changeset
    68
    tmp->refreshModel(mCurrentDayTime.addDays(-1));
hgs
parents: 45
diff changeset
    69
hgs
parents: 45
diff changeset
    70
    mModels[NextDay] = mModels[CurrentDay];
hgs
parents: 45
diff changeset
    71
    mModels[CurrentDay] = mModels[PreviousDay];
hgs
parents: 45
diff changeset
    72
    mModels[PreviousDay] = tmp;
45
hgs
parents:
diff changeset
    73
}
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
/*!
57
hgs
parents: 45
diff changeset
    76
 Reorganize models after move to next day. 
45
hgs
parents:
diff changeset
    77
 */
57
hgs
parents: 45
diff changeset
    78
void CalenDayModelManager::moveForward()
45
hgs
parents:
diff changeset
    79
{
57
hgs
parents: 45
diff changeset
    80
    mCurrentDayTime = mServices.Context().focusDateAndTime();
hgs
parents: 45
diff changeset
    81
hgs
parents: 45
diff changeset
    82
    CalenDayModel* tmp = mModels[PreviousDay];
hgs
parents: 45
diff changeset
    83
    tmp->refreshModel(mCurrentDayTime.addDays(1));
hgs
parents: 45
diff changeset
    84
hgs
parents: 45
diff changeset
    85
    mModels[PreviousDay] = mModels[CurrentDay];
hgs
parents: 45
diff changeset
    86
    mModels[CurrentDay] = mModels[NextDay];
hgs
parents: 45
diff changeset
    87
    mModels[NextDay] = tmp;
45
hgs
parents:
diff changeset
    88
}
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
/*!
57
hgs
parents: 45
diff changeset
    91
 Returns given model
hgs
parents: 45
diff changeset
    92
 /a day defines model, can be (PreviousDay, CurrentDay, NextDay) only.  
45
hgs
parents:
diff changeset
    93
 */
hgs
parents:
diff changeset
    94
QAbstractItemModel &CalenDayModelManager::getModel(ModelDay day)
hgs
parents:
diff changeset
    95
{
57
hgs
parents: 45
diff changeset
    96
    return *(mModels[day]);
45
hgs
parents:
diff changeset
    97
}
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
/*!
57
hgs
parents: 45
diff changeset
   100
 Creates all models objects durring construction.  
45
hgs
parents:
diff changeset
   101
 */
hgs
parents:
diff changeset
   102
void CalenDayModelManager::createAllModels()
hgs
parents:
diff changeset
   103
{
57
hgs
parents: 45
diff changeset
   104
hgs
parents: 45
diff changeset
   105
    mModels[CurrentDay] = new CalenDayModel(mCurrentDayTime, mServices, this);
hgs
parents: 45
diff changeset
   106
hgs
parents: 45
diff changeset
   107
    QDateTime previousDayTime;
hgs
parents: 45
diff changeset
   108
    QDateTime nextDayTime;
hgs
parents: 45
diff changeset
   109
hgs
parents: 45
diff changeset
   110
    if (mCurrentDayTime.isValid()) {
hgs
parents: 45
diff changeset
   111
        previousDayTime = mCurrentDayTime.addDays(-1);
hgs
parents: 45
diff changeset
   112
        nextDayTime = mCurrentDayTime.addDays(1);
hgs
parents: 45
diff changeset
   113
    }
hgs
parents: 45
diff changeset
   114
hgs
parents: 45
diff changeset
   115
    mModels[PreviousDay] = new CalenDayModel(previousDayTime, mServices, this);
hgs
parents: 45
diff changeset
   116
    mModels[NextDay] = new CalenDayModel(nextDayTime, mServices, this);
45
hgs
parents:
diff changeset
   117
}
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
/*!
57
hgs
parents: 45
diff changeset
   120
 Refetch data for all models. Context calendar is used to fill models
hgs
parents: 45
diff changeset
   121
 with correct events. Should be used for full (three days) repopulation.
45
hgs
parents:
diff changeset
   122
 */
hgs
parents:
diff changeset
   123
void CalenDayModelManager::refreshAllModels()
57
hgs
parents: 45
diff changeset
   124
{
hgs
parents: 45
diff changeset
   125
    mCurrentDayTime = mServices.Context().focusDateAndTime();
45
hgs
parents:
diff changeset
   126
57
hgs
parents: 45
diff changeset
   127
    mModels[PreviousDay]->refreshModel(mCurrentDayTime.addDays(-1));
hgs
parents: 45
diff changeset
   128
    mModels[CurrentDay]->refreshModel(mCurrentDayTime);
hgs
parents: 45
diff changeset
   129
    mModels[NextDay]->refreshModel(mCurrentDayTime.addDays(1));
hgs
parents: 45
diff changeset
   130
}
45
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
/*!
57
hgs
parents: 45
diff changeset
   133
 Refetch data given day model. Context calendar is used to fill model
hgs
parents: 45
diff changeset
   134
 with correct events.
hgs
parents: 45
diff changeset
   135
 /a day defines model, can be (PreviousDay, CurrentDay, NextDay) only.  
45
hgs
parents:
diff changeset
   136
 */
hgs
parents:
diff changeset
   137
void CalenDayModelManager::refreshSingleModel(CalenDayModelManager::ModelDay day)
57
hgs
parents: 45
diff changeset
   138
{
hgs
parents: 45
diff changeset
   139
    switch (day) {
hgs
parents: 45
diff changeset
   140
        case PreviousDay: {
hgs
parents: 45
diff changeset
   141
            mModels[PreviousDay]->refreshModel(mCurrentDayTime.addDays(-1));
hgs
parents: 45
diff changeset
   142
        }
hgs
parents: 45
diff changeset
   143
            break;
hgs
parents: 45
diff changeset
   144
        case CurrentDay: {
hgs
parents: 45
diff changeset
   145
            mModels[CurrentDay]->refreshModel(mCurrentDayTime);
hgs
parents: 45
diff changeset
   146
        }
hgs
parents: 45
diff changeset
   147
            break;
hgs
parents: 45
diff changeset
   148
        case NextDay: {
hgs
parents: 45
diff changeset
   149
            mModels[PreviousDay]->refreshModel(mCurrentDayTime.addDays(1));
hgs
parents: 45
diff changeset
   150
        }
hgs
parents: 45
diff changeset
   151
            break;
hgs
parents: 45
diff changeset
   152
        default:
hgs
parents: 45
diff changeset
   153
            break;
hgs
parents: 45
diff changeset
   154
    }
hgs
parents: 45
diff changeset
   155
}
45
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
// End of File