calendarui/views/dayview/src/calendayitemview.cpp
author hgs
Mon, 26 Jul 2010 13:54:38 +0530
changeset 55 2c54b51f39c4
parent 45 b6db4fd4947b
child 57 bb2d3e476f29
permissions -rw-r--r--
201029
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:  Day view control of calendar
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 <QGesture>
hgs
parents:
diff changeset
    20
#include <QGraphicsLinearLayout>
hgs
parents:
diff changeset
    21
#include <hbabstractviewitem.h>
hgs
parents:
diff changeset
    22
#include <hbinstance.h>
hgs
parents:
diff changeset
    23
#include <hbaction.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
//User includes
hgs
parents:
diff changeset
    26
#include "calendayitemview.h"
hgs
parents:
diff changeset
    27
#include "calendayutils.h"
hgs
parents:
diff changeset
    28
#include "calendaycontainer.h"
hgs
parents:
diff changeset
    29
#include "calendayinfo.h"
hgs
parents:
diff changeset
    30
#include "calendaymodel.h"
hgs
parents:
diff changeset
    31
#include "calenservices.h"
hgs
parents:
diff changeset
    32
#include "calencontext.h"
hgs
parents:
diff changeset
    33
#include "CalenUid.h"
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    37
// CalenDayItemView()
hgs
parents:
diff changeset
    38
// Constructor
hgs
parents:
diff changeset
    39
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    40
//
hgs
parents:
diff changeset
    41
CalenDayItemView::CalenDayItemView( MCalenServices &services, HbModelIterator *iterator, QGraphicsItem *parent ) 
hgs
parents:
diff changeset
    42
: HbAbstractItemView(mContainer = new CalenDayContainer(), iterator, parent),
hgs
parents:
diff changeset
    43
  mServices( services )
hgs
parents:
diff changeset
    44
{
hgs
parents:
diff changeset
    45
    mInfo = new CalenDayInfo( CalenDayInfo::ETwo );
hgs
parents:
diff changeset
    46
    mContainer->setDayInfo( mInfo );
hgs
parents:
diff changeset
    47
	
hgs
parents:
diff changeset
    48
    //setup Selection Model
hgs
parents:
diff changeset
    49
    QItemSelectionModel* selModel = new QItemSelectionModel(this->model());
hgs
parents:
diff changeset
    50
    if ( selModel ) {
hgs
parents:
diff changeset
    51
        setSelectionMode( HbAbstractItemView::SingleSelection );
hgs
parents:
diff changeset
    52
        setSelectionModel( selModel );
hgs
parents:
diff changeset
    53
    }
hgs
parents:
diff changeset
    54
    
hgs
parents:
diff changeset
    55
    setScrollDirections(Qt::Vertical);
hgs
parents:
diff changeset
    56
    setScrollingStyle(HbScrollArea::PanWithFollowOn);
hgs
parents:
diff changeset
    57
    setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOff);
hgs
parents:
diff changeset
    58
    
hgs
parents:
diff changeset
    59
    grabGesture(Qt::PanGesture);
hgs
parents:
diff changeset
    60
    ungrabGesture(Qt::SwipeGesture);
hgs
parents:
diff changeset
    61
    
hgs
parents:
diff changeset
    62
    //TODO: KG: Animate item pressed?! HbAbstractItemView::TouchDown
hgs
parents:
diff changeset
    63
    setEnabledAnimations( HbAbstractItemView::None );
hgs
parents:
diff changeset
    64
    
hgs
parents:
diff changeset
    65
    // Get the width of content and fix its size
hgs
parents:
diff changeset
    66
    qreal contentWidth = CalenDayUtils::instance()->contentWidth();
hgs
parents:
diff changeset
    67
    setMinimumWidth(contentWidth);
hgs
parents:
diff changeset
    68
    setMaximumWidth(contentWidth);
hgs
parents:
diff changeset
    69
      
hgs
parents:
diff changeset
    70
    setupSlots();
hgs
parents:
diff changeset
    71
    setupContextMenu();
hgs
parents:
diff changeset
    72
}
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    75
// ~CalenDayItemView()
hgs
parents:
diff changeset
    76
// Destructor
hgs
parents:
diff changeset
    77
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    78
//
hgs
parents:
diff changeset
    79
CalenDayItemView::~CalenDayItemView()
hgs
parents:
diff changeset
    80
{
hgs
parents:
diff changeset
    81
    delete mInfo;
hgs
parents:
diff changeset
    82
}
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    85
// scrollTo()
hgs
parents:
diff changeset
    86
// 
hgs
parents:
diff changeset
    87
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    88
//
hgs
parents:
diff changeset
    89
void CalenDayItemView::scrollTo(const QModelIndex &index, HbAbstractItemView::ScrollHint hint)
hgs
parents:
diff changeset
    90
{
hgs
parents:
diff changeset
    91
    HbAbstractItemView::scrollTo(index, hint);
hgs
parents:
diff changeset
    92
}
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    95
// reset()
hgs
parents:
diff changeset
    96
// 
hgs
parents:
diff changeset
    97
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    98
//
hgs
parents:
diff changeset
    99
void CalenDayItemView::reset()
hgs
parents:
diff changeset
   100
{
hgs
parents:
diff changeset
   101
//    CalenDayItemView::reset();
hgs
parents:
diff changeset
   102
}
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   105
// modelAboutToBeReset()
hgs
parents:
diff changeset
   106
// Handles signal that is emitted when reset() is called, before the model's
hgs
parents:
diff changeset
   107
// internal state (e.g. persistent model indexes) has been invalidated.
hgs
parents:
diff changeset
   108
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   109
//
hgs
parents:
diff changeset
   110
void CalenDayItemView::modelAboutToBeReset()
hgs
parents:
diff changeset
   111
{
hgs
parents:
diff changeset
   112
    
hgs
parents:
diff changeset
   113
}
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   116
// modelReset()
hgs
parents:
diff changeset
   117
// Handles signal that is emitted when reset() is called, after the model's
hgs
parents:
diff changeset
   118
// internal state (e.g. persistent model indexes) has been invalidated.
hgs
parents:
diff changeset
   119
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   120
//
hgs
parents:
diff changeset
   121
void CalenDayItemView::modelReset()
hgs
parents:
diff changeset
   122
{
hgs
parents:
diff changeset
   123
    if ( !mInfo ) {
hgs
parents:
diff changeset
   124
        return;
hgs
parents:
diff changeset
   125
    }
hgs
parents:
diff changeset
   126
    //reset day info
hgs
parents:
diff changeset
   127
    mInfo->Reset();
55
hgs
parents: 45
diff changeset
   128
45
hgs
parents:
diff changeset
   129
    CalenDayModel* model(0);
hgs
parents:
diff changeset
   130
    model = static_cast<CalenDayModel*>(this->model());
hgs
parents:
diff changeset
   131
    if ( !model ) {
hgs
parents:
diff changeset
   132
        return;
hgs
parents:
diff changeset
   133
    }
55
hgs
parents: 45
diff changeset
   134
    
hgs
parents: 45
diff changeset
   135
    mContainer->setDate(model->modelDate().date());
45
hgs
parents:
diff changeset
   136
    int rowCount = model->rowCount( );
hgs
parents:
diff changeset
   137
    SCalenApptInfo apptInfo; 
hgs
parents:
diff changeset
   138
    for( int row = 0; row < rowCount; row++ ) {
hgs
parents:
diff changeset
   139
        QModelIndex idx = model->index( row, 0 );
hgs
parents:
diff changeset
   140
        QVariant variant = idx.data( CalenDayEntry );
hgs
parents:
diff changeset
   141
        AgendaEntry entry = variant.value<AgendaEntry>();
hgs
parents:
diff changeset
   142
        apptInfo.iIndex = idx;
hgs
parents:
diff changeset
   143
        
hgs
parents:
diff changeset
   144
        QDateTime start;
hgs
parents:
diff changeset
   145
        QDateTime end;
hgs
parents:
diff changeset
   146
        QDateTime currDate( model->modelDate() );
hgs
parents:
diff changeset
   147
        CalenDayUtils::instance()->getEventValidStartEndTime( start, end, 
hgs
parents:
diff changeset
   148
                                                              entry, currDate );
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
        apptInfo.iStartTime = start;
hgs
parents:
diff changeset
   151
        apptInfo.iEndTime = end;
hgs
parents:
diff changeset
   152
        
hgs
parents:
diff changeset
   153
        TCalenInstanceId id = TCalenInstanceId::nullInstanceId();//index.row() - temporary ID
hgs
parents:
diff changeset
   154
        id.mEntryLocalUid = row;
hgs
parents:
diff changeset
   155
        id.mInstanceTime = apptInfo.iStartTime; 
hgs
parents:
diff changeset
   156
        apptInfo.iId = id;
hgs
parents:
diff changeset
   157
        apptInfo.iColor = 0xffff;
hgs
parents:
diff changeset
   158
        
hgs
parents:
diff changeset
   159
        if ( entry.isTimedEntry() )
hgs
parents:
diff changeset
   160
        	{
hgs
parents:
diff changeset
   161
            apptInfo.iAllDay = false;
hgs
parents:
diff changeset
   162
            mInfo->InsertTimedEvent( apptInfo );
hgs
parents:
diff changeset
   163
        	}
hgs
parents:
diff changeset
   164
        else if( entry.type() == AgendaEntry::TypeEvent) //all-day event
hgs
parents:
diff changeset
   165
        	{
hgs
parents:
diff changeset
   166
        	apptInfo.iAllDay = true;
hgs
parents:
diff changeset
   167
        	mInfo->InsertAlldayEvent( apptInfo );
hgs
parents:
diff changeset
   168
        	}
hgs
parents:
diff changeset
   169
    }
hgs
parents:
diff changeset
   170
    
hgs
parents:
diff changeset
   171
    HbAbstractItemView::reset();
hgs
parents:
diff changeset
   172
}
hgs
parents:
diff changeset
   173
hgs
parents:
diff changeset
   174
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   175
// scrollVertically()
hgs
parents:
diff changeset
   176
//  
hgs
parents:
diff changeset
   177
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   178
//
hgs
parents:
diff changeset
   179
void CalenDayItemView::scrollVertically( const QPointF &newPosition )
hgs
parents:
diff changeset
   180
{
hgs
parents:
diff changeset
   181
    QPointF currentPos = contentWidget()->pos();
hgs
parents:
diff changeset
   182
    if (abs(newPosition.y()) != abs(currentPos.y())) {
hgs
parents:
diff changeset
   183
        currentPos.setY(newPosition.y());
hgs
parents:
diff changeset
   184
        scrollContentsTo(currentPos, 0);
hgs
parents:
diff changeset
   185
    }
hgs
parents:
diff changeset
   186
}
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   189
// itemPressed()
hgs
parents:
diff changeset
   190
// This function is called when a touch down event is received within Abstract view item that is representing index. 
hgs
parents:
diff changeset
   191
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   192
//
hgs
parents:
diff changeset
   193
void CalenDayItemView::itemPressed( const QPointF &position )
hgs
parents:
diff changeset
   194
{
hgs
parents:
diff changeset
   195
    Q_UNUSED( position )
hgs
parents:
diff changeset
   196
}
hgs
parents:
diff changeset
   197
hgs
parents:
diff changeset
   198
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   199
// itemReleased()
hgs
parents:
diff changeset
   200
// This function is called when a touch release event is received within Abstract view item that is representing index.
hgs
parents:
diff changeset
   201
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   202
//
hgs
parents:
diff changeset
   203
void CalenDayItemView::itemReleased( const QPointF &position )
hgs
parents:
diff changeset
   204
{
hgs
parents:
diff changeset
   205
    Q_UNUSED( position )
hgs
parents:
diff changeset
   206
}
hgs
parents:
diff changeset
   207
hgs
parents:
diff changeset
   208
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   209
// itemActivated()
hgs
parents:
diff changeset
   210
// This function is called when the item specified by index is activated by the user.
hgs
parents:
diff changeset
   211
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   212
//
hgs
parents:
diff changeset
   213
void CalenDayItemView::itemActivated( const QPointF &position )
hgs
parents:
diff changeset
   214
{
hgs
parents:
diff changeset
   215
    Q_UNUSED( position )
hgs
parents:
diff changeset
   216
    HbAbstractViewItem *item = qobject_cast<HbAbstractViewItem *>(sender());
hgs
parents:
diff changeset
   217
    QModelIndex index = item->modelIndex();
hgs
parents:
diff changeset
   218
    QItemSelectionModel* selModel( selectionModel() );
hgs
parents:
diff changeset
   219
    if ( index.isValid() && selModel) {
hgs
parents:
diff changeset
   220
        selModel->select( index, QItemSelectionModel::Current | QItemSelectionModel::Select );
hgs
parents:
diff changeset
   221
        openSelectedItem();
hgs
parents:
diff changeset
   222
    }
hgs
parents:
diff changeset
   223
}
hgs
parents:
diff changeset
   224
hgs
parents:
diff changeset
   225
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   226
// itemLongPressed()
hgs
parents:
diff changeset
   227
// This function is called when long press event is received within Abstract view item viewItem.
hgs
parents:
diff changeset
   228
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   229
//
hgs
parents:
diff changeset
   230
void CalenDayItemView::itemLongPressed(HbAbstractViewItem* item, QPointF coords)
hgs
parents:
diff changeset
   231
{
hgs
parents:
diff changeset
   232
    QModelIndex index = item->modelIndex();
hgs
parents:
diff changeset
   233
    QItemSelectionModel* selModel( selectionModel() );
hgs
parents:
diff changeset
   234
    if ( index.isValid() && selModel && mContextMenu) {
hgs
parents:
diff changeset
   235
        selModel->select( index, QItemSelectionModel::Current | QItemSelectionModel::Select );
hgs
parents:
diff changeset
   236
        mContextMenu->setPreferredPos( coords, HbPopup::BottomRightCorner );
hgs
parents:
diff changeset
   237
        mContextMenu->open();
hgs
parents:
diff changeset
   238
    }
hgs
parents:
diff changeset
   239
}
hgs
parents:
diff changeset
   240
hgs
parents:
diff changeset
   241
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   242
// orientationChanged()
hgs
parents:
diff changeset
   243
// Slot which is called whenever the orientation of the device changes.
hgs
parents:
diff changeset
   244
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   245
//
hgs
parents:
diff changeset
   246
void CalenDayItemView::orientationChanged( Qt::Orientation orientation )
hgs
parents:
diff changeset
   247
{
hgs
parents:
diff changeset
   248
    // Update the width of screen
hgs
parents:
diff changeset
   249
    qreal contentWidth = CalenDayUtils::instance()->contentWidth();
hgs
parents:
diff changeset
   250
    setMinimumWidth(contentWidth);
hgs
parents:
diff changeset
   251
    setMaximumWidth(contentWidth);
hgs
parents:
diff changeset
   252
    if( mContainer ) {
hgs
parents:
diff changeset
   253
        mContainer->orientationChanged( orientation );
hgs
parents:
diff changeset
   254
    }
hgs
parents:
diff changeset
   255
}
hgs
parents:
diff changeset
   256
hgs
parents:
diff changeset
   257
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   258
// openSelectedItem()
hgs
parents:
diff changeset
   259
// Opens currently selected model item.
hgs
parents:
diff changeset
   260
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   261
//
hgs
parents:
diff changeset
   262
void CalenDayItemView::openSelectedItem()
hgs
parents:
diff changeset
   263
{
hgs
parents:
diff changeset
   264
    issueCommandOnSelectedItem( ECalenEventView );
hgs
parents:
diff changeset
   265
}
hgs
parents:
diff changeset
   266
hgs
parents:
diff changeset
   267
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   268
// editSelectedItem()
hgs
parents:
diff changeset
   269
// Edits currently selected model item.
hgs
parents:
diff changeset
   270
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   271
//
hgs
parents:
diff changeset
   272
void CalenDayItemView::editSelectedItem()
hgs
parents:
diff changeset
   273
{
hgs
parents:
diff changeset
   274
    issueCommandOnSelectedItem( ECalenEditCurrentEntry );
hgs
parents:
diff changeset
   275
}
hgs
parents:
diff changeset
   276
hgs
parents:
diff changeset
   277
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   278
// deleteSelectedIten()
hgs
parents:
diff changeset
   279
// Deletes currently selected model item.
hgs
parents:
diff changeset
   280
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   281
//
hgs
parents:
diff changeset
   282
void CalenDayItemView::deleteSelectedItem()
hgs
parents:
diff changeset
   283
{
hgs
parents:
diff changeset
   284
    issueCommandOnSelectedItem( ECalenDeleteCurrentEntry );
hgs
parents:
diff changeset
   285
}
hgs
parents:
diff changeset
   286
hgs
parents:
diff changeset
   287
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   288
// setupSlots()
hgs
parents:
diff changeset
   289
// Connects item view's slots.
hgs
parents:
diff changeset
   290
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   291
//
hgs
parents:
diff changeset
   292
void CalenDayItemView::setupSlots()
hgs
parents:
diff changeset
   293
{
hgs
parents:
diff changeset
   294
    // Connect to main window's orientationChanged signal to handle orientation
hgs
parents:
diff changeset
   295
    // switching
hgs
parents:
diff changeset
   296
    QObject::connect(CalenDayUtils::instance()->mainWindow(), 
hgs
parents:
diff changeset
   297
        SIGNAL(orientationChanged(Qt::Orientation)), this,
hgs
parents:
diff changeset
   298
        SLOT(orientationChanged(Qt::Orientation)));
hgs
parents:
diff changeset
   299
hgs
parents:
diff changeset
   300
    // Connect with model signals
hgs
parents:
diff changeset
   301
    if (this->model()) {
hgs
parents:
diff changeset
   302
        QObject::connect(this->model(), SIGNAL(modelAboutToBeReset()), this,
hgs
parents:
diff changeset
   303
            SLOT(modelAboutToBeReset()));
hgs
parents:
diff changeset
   304
        QObject::connect(this->model(), SIGNAL(modelReset()), this,
hgs
parents:
diff changeset
   305
            SLOT(modelReset()));
hgs
parents:
diff changeset
   306
    }
hgs
parents:
diff changeset
   307
    if (mContainer) {
hgs
parents:
diff changeset
   308
        // Connect with base class to enable handling item press by model index
hgs
parents:
diff changeset
   309
        QObject::connect(mContainer, SIGNAL(itemCreated(HbAbstractViewItem *)),
hgs
parents:
diff changeset
   310
            this, SLOT(itemCreated(HbAbstractViewItem*)));
hgs
parents:
diff changeset
   311
    }
hgs
parents:
diff changeset
   312
    QObject::connect(this, SIGNAL(pressed(const QPointF&)), this,
hgs
parents:
diff changeset
   313
        SLOT(itemPressed(const QPointF&)));
hgs
parents:
diff changeset
   314
    QObject::connect(this, SIGNAL(released(const QPointF&)), this,
hgs
parents:
diff changeset
   315
        SLOT(itemReleased(const QPointF&)));
hgs
parents:
diff changeset
   316
    QObject::connect(this, SIGNAL(activated(const QPointF&)), this,
hgs
parents:
diff changeset
   317
        SLOT(const QPointF&));
hgs
parents:
diff changeset
   318
    QObject::connect(this, SIGNAL(longPressed(HbAbstractViewItem*, QPointF)),
hgs
parents:
diff changeset
   319
        this, SLOT(itemLongPressed(HbAbstractViewItem*, QPointF)));
hgs
parents:
diff changeset
   320
}
hgs
parents:
diff changeset
   321
hgs
parents:
diff changeset
   322
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   323
// setupSlots()
hgs
parents:
diff changeset
   324
// Creates Context menu.
hgs
parents:
diff changeset
   325
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   326
//
hgs
parents:
diff changeset
   327
void CalenDayItemView::setupContextMenu()
hgs
parents:
diff changeset
   328
{
hgs
parents:
diff changeset
   329
    mContextMenu = new HbMenu();
hgs
parents:
diff changeset
   330
    HbAction *openAction = mContextMenu->addAction(hbTrId("txt_common_menu_open"));
hgs
parents:
diff changeset
   331
    if (openAction) {
hgs
parents:
diff changeset
   332
        connect(openAction, SIGNAL(triggered()), this, SLOT(openSelectedItem()));
hgs
parents:
diff changeset
   333
    }
hgs
parents:
diff changeset
   334
    HbAction *editAction = mContextMenu->addAction(hbTrId("txt_common_menu_edit"));
hgs
parents:
diff changeset
   335
    if (editAction) {
hgs
parents:
diff changeset
   336
        connect(editAction, SIGNAL(triggered()), this, SLOT(editSelectedItem()));
hgs
parents:
diff changeset
   337
    }
hgs
parents:
diff changeset
   338
    HbAction *deleteAction = mContextMenu->addAction(hbTrId("txt_common_menu_delete"));
hgs
parents:
diff changeset
   339
    if (deleteAction) {
hgs
parents:
diff changeset
   340
        connect(deleteAction, SIGNAL(triggered()), this,
hgs
parents:
diff changeset
   341
            SLOT(deleteSelectedItem()));
hgs
parents:
diff changeset
   342
    }
hgs
parents:
diff changeset
   343
}
hgs
parents:
diff changeset
   344
hgs
parents:
diff changeset
   345
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   346
// issueCommandOnSelectedItem()
hgs
parents:
diff changeset
   347
// Sets context to currently selected model item and issues calendar command.
hgs
parents:
diff changeset
   348
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   349
//
hgs
parents:
diff changeset
   350
bool CalenDayItemView::issueCommandOnSelectedItem( int command )
hgs
parents:
diff changeset
   351
{
hgs
parents:
diff changeset
   352
    bool retVal(false);
hgs
parents:
diff changeset
   353
    QItemSelectionModel* selModel(selectionModel());
hgs
parents:
diff changeset
   354
    if (!selModel){
hgs
parents:
diff changeset
   355
        return retVal;
hgs
parents:
diff changeset
   356
    }
hgs
parents:
diff changeset
   357
    QModelIndex index( selModel->currentIndex() );
hgs
parents:
diff changeset
   358
    if( index.isValid() ) {
hgs
parents:
diff changeset
   359
        retVal = true;
hgs
parents:
diff changeset
   360
        QVariant variant = index.data( CalenDayEntry );
hgs
parents:
diff changeset
   361
        AgendaEntry entry = variant.value<AgendaEntry>();
hgs
parents:
diff changeset
   362
        QDateTime start;
hgs
parents:
diff changeset
   363
        QDateTime end;
hgs
parents:
diff changeset
   364
        CalenDayModel* model(0);
hgs
parents:
diff changeset
   365
        model = static_cast<CalenDayModel*>(this->model());
hgs
parents:
diff changeset
   366
        QDateTime currDate( model->modelDate() );
hgs
parents:
diff changeset
   367
        CalenDayUtils::instance()->getEventValidStartEndTime( start, end, 
hgs
parents:
diff changeset
   368
                                                              entry, currDate );
hgs
parents:
diff changeset
   369
        TRAPD(error,
hgs
parents:
diff changeset
   370
                mServices.Context().setFocusDateAndTimeAndInstance(start,
hgs
parents:
diff changeset
   371
                         TCalenInstanceId::create(entry));
hgs
parents:
diff changeset
   372
                mServices.IssueCommandL( command );
hgs
parents:
diff changeset
   373
              );
hgs
parents:
diff changeset
   374
        if( error ) {
hgs
parents:
diff changeset
   375
            retVal = false;
hgs
parents:
diff changeset
   376
        }
hgs
parents:
diff changeset
   377
        clearSelectionInModel();
hgs
parents:
diff changeset
   378
    }
hgs
parents:
diff changeset
   379
    return retVal;
hgs
parents:
diff changeset
   380
}
hgs
parents:
diff changeset
   381
hgs
parents:
diff changeset
   382
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   383
// clearSelectionInModel()
hgs
parents:
diff changeset
   384
// Clears current selection in Selection Model.
hgs
parents:
diff changeset
   385
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   386
//
hgs
parents:
diff changeset
   387
void CalenDayItemView::clearSelectionInModel()
hgs
parents:
diff changeset
   388
{
hgs
parents:
diff changeset
   389
    QItemSelectionModel* selModel(selectionModel());
hgs
parents:
diff changeset
   390
    if (selModel) {
hgs
parents:
diff changeset
   391
        selModel->clear();
hgs
parents:
diff changeset
   392
    }
hgs
parents:
diff changeset
   393
}
hgs
parents:
diff changeset
   394
hgs
parents:
diff changeset
   395
// End of File