src/NPRStationListBoxView.cpp
author tahirm@symbian.org
Fri, 24 Jul 2009 08:46:02 +0100
changeset 0 0049171ecffb
permissions -rw-r--r--
initial release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     1
/*
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     2
 ==========================================================================================
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     3
 Name	: NPRStationListBoxView.h
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     4
 Author	: Symsource
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     5
 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     6
 Copyright (c) 2009 Symbian Foundation Ltd
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     7
 This component and the accompanying materials are made available
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     8
 under the terms of the License "Eclipse Public License v1.0"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     9
 which accompanies this distribution, and is available
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    10
 at the URL "http://www.eclipse.org/legal/epl-v10.html".
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    11
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    12
 Initial Contributors:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    13
 - Symsource
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    14
 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    15
 Contributors:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    16
 - Symsource
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    17
 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    18
 Description :  AknView for wrapping the container to show the NPR's station list
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    19
 ==========================================================================================
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    20
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    21
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    22
#include <barsread.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    23
#include <akncontext.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    24
#include <akntitle.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    25
#include <NPR_0xEEB0E481.rsg>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    26
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    27
#include "NPR.hrh"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    28
#include "NPRStationListBoxView.h"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    29
#include "NPRStationListBox.h"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    30
#include "NPRAppUi.h"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    31
#include "NPRAppEngine.h"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    32
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    33
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    34
 * First phase of Symbian two-phase construction. Should not contain any
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    35
 * code that could leave.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    36
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    37
CNPRStationListBoxView::CNPRStationListBoxView()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    38
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    39
	iNPRStationListBox = NULL;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    40
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    41
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    42
/** 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    43
 * The view's destructor removes the container from the control
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    44
 * stack and destroys it.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    45
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    46
CNPRStationListBoxView::~CNPRStationListBoxView()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    47
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    48
	delete iNPRStationListBox;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    49
	iNPRStationListBox = NULL;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    50
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    51
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    52
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    53
 * Symbian two-phase constructor.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    54
 * This creates an instance then calls the second-phase constructor
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    55
 * without leaving the instance on the cleanup stack.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    56
 * @return new instance of CNPRStationListBoxView
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    57
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    58
CNPRStationListBoxView* CNPRStationListBoxView::NewL()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    59
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    60
	CNPRStationListBoxView* self = CNPRStationListBoxView::NewLC();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    61
	CleanupStack::Pop( self );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    62
	return self;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    63
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    64
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    65
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    66
 * Symbian two-phase constructor.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    67
 * This creates an instance, pushes it on the cleanup stack,
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    68
 * then calls the second-phase constructor.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    69
 * @return new instance of CNPRStationListBoxView
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    70
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    71
CNPRStationListBoxView* CNPRStationListBoxView::NewLC()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    72
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    73
	CNPRStationListBoxView* self = new ( ELeave ) CNPRStationListBoxView();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    74
	CleanupStack::PushL( self );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    75
	self->ConstructL();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    76
	return self;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    77
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    78
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    79
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    80
 * Second-phase constructor for view.  
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    81
 * Initialize contents from resource.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    82
 */ 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    83
void CNPRStationListBoxView::ConstructL()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    84
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    85
	BaseConstructL( R_NPRSTATION_LIST_BOX_NPRSTATION_LIST_BOX_VIEW);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    86
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    87
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    88
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    89
 * @return The UID for this view
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    90
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    91
TUid CNPRStationListBoxView::Id() const
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    92
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    93
	return TUid::Uid( ENPRStationListBoxViewId );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    94
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    95
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    96
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    97
 * Handle a command for this view (override)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    98
 * @param aCommand command id to be handled
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    99
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   100
void CNPRStationListBoxView::HandleCommandL( TInt aCommand )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   101
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   102
	TBool commandHandled = EFalse;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   103
	switch(aCommand)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   104
		{// code to dispatch to the AknView's menu and CBA commands is generated here
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   105
		case EListen:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   106
			{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   107
			iNPRStationListBox->Listen();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   108
			commandHandled = ETrue;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   109
			break;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   110
			}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   111
		case EAknSoftkeyBack:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   112
			{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   113
			static_cast<CNPRAppUi*>(CEikonEnv::Static()->EikAppUi())->ActivateLocalViewL(TUid::Uid(ENPRSearchStationListBoxViewId));
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   114
			commandHandled = ETrue;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   115
			break;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   116
			}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   117
		default:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   118
			break;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   119
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   120
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   121
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   122
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   123
 *	Handles user actions during activation of the view, 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   124
 *	such as initializing the content.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   125
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   126
void CNPRStationListBoxView::DoActivateL( 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   127
		const TVwsViewId& /*aPrevViewId*/,
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   128
		TUid /*aCustomMessageId*/,
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   129
		const TDesC8& /*aCustomMessage*/ )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   130
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   131
	SetupStatusPaneL();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   132
	if ( iNPRStationListBox == NULL )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   133
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   134
		iNPRStationListBox = CreateContainerL();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   135
		iNPRStationListBox->SetMopParent( this );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   136
		AppUi()->AddToStackL( *this, iNPRStationListBox );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   137
		} 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   138
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   139
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   140
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   141
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   142
void CNPRStationListBoxView::DoDeactivate()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   143
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   144
	CleanupStatusPane();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   145
	if ( iNPRStationListBox != NULL )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   146
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   147
		AppUi()->RemoveFromViewStack( *this, iNPRStationListBox );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   148
		delete iNPRStationListBox;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   149
		iNPRStationListBox = NULL;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   150
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   151
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   152
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   153
/** 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   154
 * Handle status pane size change for this view (override)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   155
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   156
void CNPRStationListBoxView::HandleStatusPaneSizeChange()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   157
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   158
	CAknView::HandleStatusPaneSizeChange();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   159
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   160
	// this may fail, but we're not able to propagate exceptions here
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   161
	TVwsViewId view;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   162
	AppUi()->GetActiveViewId( view );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   163
	if ( view.iViewUid == Id() )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   164
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   165
		TInt result;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   166
		TRAP( result, SetupStatusPaneL() );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   167
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   168
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   169
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   170
void CNPRStationListBoxView::SetupStatusPaneL()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   171
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   172
	// reset the context pane
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   173
	TUid contextPaneUid = TUid::Uid( EEikStatusPaneUidContext );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   174
	CEikStatusPaneBase::TPaneCapabilities subPaneContext = 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   175
		StatusPane()->PaneCapabilities( contextPaneUid );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   176
	if ( subPaneContext.IsPresent() && subPaneContext.IsAppOwned() )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   177
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   178
		CAknContextPane* context = static_cast< CAknContextPane* > ( 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   179
			StatusPane()->ControlL( contextPaneUid ) );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   180
		context->SetPictureToDefaultL();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   181
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   182
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   183
	// setup the title pane
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   184
	TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   185
	CEikStatusPaneBase::TPaneCapabilities subPaneTitle = 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   186
		StatusPane()->PaneCapabilities( titlePaneUid );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   187
	if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   188
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   189
		CAknTitlePane* title = static_cast< CAknTitlePane* >( 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   190
			StatusPane()->ControlL( titlePaneUid ) );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   191
		TResourceReader reader;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   192
		iEikonEnv->CreateResourceReaderLC( reader, R_NPRSTATION_LIST_BOX_TITLE_RESOURCE);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   193
		title->SetFromResourceL( reader );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   194
		CleanupStack::PopAndDestroy(); // reader internal state
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   195
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   196
				
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   197
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   198
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   199
void CNPRStationListBoxView::CleanupStatusPane()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   200
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   201
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   202
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   203
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   204
 *	Creates the top-level container for the view.  You may modify this method's
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   205
 *	contents and the CNPRStationListBox::NewL() signature as needed to initialize the
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   206
 *	container, but the signature for this method is fixed.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   207
 *	@return new initialized instance of CNPRStationListBox
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   208
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   209
CNPRStationListBox* CNPRStationListBoxView::CreateContainerL()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   210
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   211
	return CNPRStationListBox::NewL( ClientRect(), NULL, this );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   212
	}