src/NPRSearchStationListBox.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	: NPRSearchStationListBox.cpp
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 : Container for Series60 single style list box to show the NPR's station search options
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 <aknlists.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    24
#include <eikclbd.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    25
#include <aknviewappui.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    26
#include <AknQueryDialog.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    27
#include <NPR_0xEEB0E481.rsg>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    28
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    29
#include "NPRSearchStationListBox.h"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    30
#include "NPRSearchStationListBoxView.h"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    31
#include "NPR.hrh"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    32
#include "NPRAppUi.h"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    33
#include "NPRAppEngine.h"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    34
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    35
TInt ShowQueryDialogL(const TDesC& aTitle, TDes& aBuffer)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    36
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    37
	CAknTextQueryDialog* Dialog = CAknTextQueryDialog::NewL(aBuffer,CAknQueryDialog::ENoTone);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    38
	Dialog->PrepareLC(R_ASK_NAME_DIALOG);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    39
	Dialog->SetPromptL(aTitle);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    40
	return Dialog->RunLD();
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
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    44
 * First phase of Symbian two-phase construction. Should not 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    45
 * contain any code that could leave.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    46
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    47
CNPRSearchStationListBox::CNPRSearchStationListBox()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    48
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    49
	iListBox = 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
 * Destroy child controls.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    54
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    55
CNPRSearchStationListBox::~CNPRSearchStationListBox()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    56
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    57
	delete iListBox;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    58
	iListBox = NULL;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    59
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    60
				
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    61
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    62
 * Construct the control (first phase).
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    63
 *  Creates an instance and initializes it.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    64
 *  Instance is not left on cleanup stack.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    65
 * @param aRect bounding rectangle
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    66
 * @param aParent owning parent, or NULL
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    67
 * @param aCommandObserver command observer
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    68
 * @return initialized instance of CNPRSearchStationListBox
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    69
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    70
CNPRSearchStationListBox* CNPRSearchStationListBox::NewL( 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    71
		const TRect& aRect, 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    72
		const CCoeControl* aParent, 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    73
		MEikCommandObserver* aCommandObserver )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    74
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    75
	CNPRSearchStationListBox* self = CNPRSearchStationListBox::NewLC( 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    76
			aRect, 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    77
			aParent, 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    78
			aCommandObserver );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    79
	CleanupStack::Pop( self );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    80
	return self;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    81
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    82
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    83
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    84
 * Construct the control (first phase).
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    85
 *  Creates an instance and initializes it.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    86
 *  Instance is left on cleanup stack.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    87
 * @param aRect The rectangle for this window
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    88
 * @param aParent owning parent, or NULL
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    89
 * @param aCommandObserver command observer
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    90
 * @return new instance of CNPRSearchStationListBox
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    91
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    92
CNPRSearchStationListBox* CNPRSearchStationListBox::NewLC( 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    93
		const TRect& aRect, 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    94
		const CCoeControl* aParent, 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    95
		MEikCommandObserver* aCommandObserver )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    96
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    97
	CNPRSearchStationListBox* self = new ( ELeave ) CNPRSearchStationListBox();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    98
	CleanupStack::PushL( self );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    99
	self->ConstructL( aRect, aParent, aCommandObserver );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   100
	return self;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   101
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   102
			
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   103
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   104
 * Construct the control (second phase).
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   105
 *  Creates a window to contain the controls and activates it.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   106
 * @param aRect bounding rectangle
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   107
 * @param aCommandObserver command observer
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   108
 * @param aParent owning parent, or NULL
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   109
 */ 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   110
void CNPRSearchStationListBox::ConstructL( 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   111
		const TRect& aRect, 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   112
		const CCoeControl* aParent, 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   113
		MEikCommandObserver* aCommandObserver )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   114
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   115
	if ( aParent == NULL )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   116
	    {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   117
		CreateWindowL();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   118
	    }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   119
	else
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   120
	    {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   121
	    SetContainerWindowL( *aParent );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   122
	    }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   123
	iFocusControl = NULL;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   124
	iCommandObserver = aCommandObserver;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   125
	InitializeControlsL();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   126
	SetRect( aRect );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   127
	ActivateL();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   128
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   129
			
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   130
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   131
* Return the number of controls in the container (override)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   132
* @return count
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   133
*/
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   134
TInt CNPRSearchStationListBox::CountComponentControls() const
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   135
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   136
	return ( int ) ELastControl;
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
* Get the control with the given index (override)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   141
* @param aIndex Control index [0...n) (limited by #CountComponentControls)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   142
* @return Pointer to control
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   143
*/
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   144
CCoeControl* CNPRSearchStationListBox::ComponentControl( TInt aIndex ) const
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   145
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   146
	switch ( aIndex )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   147
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   148
	case EListBox:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   149
		return iListBox;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   150
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   151
	return NULL;
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
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   155
 *	Handle resizing of the container. This implementation will lay out
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   156
 *  full-sized controls like list boxes for any screen size, and will layout
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   157
 *  labels, editors, etc. to the size they were given in the UI designer.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   158
 *  This code will need to be modified to adjust arbitrary controls to
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   159
 *  any screen size.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   160
 */				
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   161
void CNPRSearchStationListBox::SizeChanged()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   162
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   163
	CCoeControl::SizeChanged();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   164
	LayoutControls();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   165
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   166
				
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   167
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   168
 * Layout components as specified in the UI Designer
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   169
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   170
void CNPRSearchStationListBox::LayoutControls()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   171
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   172
	iListBox->SetExtent( TPoint( 0, 0 ), iListBox->MinimumSize() );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   173
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   174
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   175
void CNPRSearchStationListBox::SendStationQueryL()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   176
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   177
	TInt index = CurrentItemIndex();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   178
	switch(index)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   179
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   180
		case EZipCode:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   181
			{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   182
			TBuf<16> zipCode;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   183
			ShowQueryDialogL(_L("ZIP Code"),zipCode);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   184
			if(zipCode.Length() != 0)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   185
				{				
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   186
				TBuf<32> zipCodeFormat;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   187
				zipCodeFormat.Format(KNPRZipQuery,&zipCode);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   188
				static_cast<CNPRAppUi*>(CEikonEnv::Static()->EikAppUi())->Engine().SendNPRCommandL(EStationsCmd, zipCodeFormat);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   189
				}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   190
			break;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   191
			}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   192
		case ECurrentLocation:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   193
			{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   194
			TBuf<32> zipCodeFormat;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   195
			zipCodeFormat.Format(KNPRZipQuery,&KNPRCurrentLocationZip());
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   196
			static_cast<CNPRAppUi*>(CEikonEnv::Static()->EikAppUi())->Engine().SendNPRCommandL(EStationsCmd, zipCodeFormat);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   197
			break;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   198
			}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   199
		case ECityName:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   200
			{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   201
			break;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   202
			}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   203
		case EShowAll:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   204
			{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   205
			break;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   206
			}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   207
		default:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   208
			break;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   209
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   210
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   211
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   212
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   213
 *	Handle key events.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   214
 */				
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   215
TKeyResponse CNPRSearchStationListBox::OfferKeyEventL( 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   216
		const TKeyEvent& aKeyEvent, 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   217
		TEventCode aType )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   218
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   219
	if ( aKeyEvent.iCode == EKeyLeftArrow 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   220
		|| aKeyEvent.iCode == EKeyRightArrow )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   221
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   222
		// Listbox takes all events even if it doesn't use them
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   223
		return EKeyWasNotConsumed;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   224
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   225
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   226
	if ( aKeyEvent.iCode == EKeyDevice3)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   227
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   228
		SendStationQueryL();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   229
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   230
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   231
	if ( iFocusControl != NULL
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   232
		&& iFocusControl->OfferKeyEventL( aKeyEvent, aType ) == EKeyWasConsumed )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   233
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   234
		return EKeyWasConsumed;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   235
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   236
	return CCoeControl::OfferKeyEventL( aKeyEvent, aType );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   237
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   238
				
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   239
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   240
 *	Initialize each control upon creation.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   241
 */				
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   242
void CNPRSearchStationListBox::InitializeControlsL()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   243
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   244
	iListBox = new ( ELeave ) CAknSingleStyleListBox;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   245
	iListBox->SetContainerWindowL( *this );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   246
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   247
		TResourceReader reader;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   248
		iEikonEnv->CreateResourceReaderLC( reader, R_NPRSEARCH_STATION_LIST_BOX_LIST_BOX );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   249
		iListBox->ConstructFromResourceL( reader );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   250
		CleanupStack::PopAndDestroy(); // reader internal state
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   251
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   252
	// the listbox owns the items in the list and will free them
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   253
	iListBox->Model()->SetOwnershipType( ELbmOwnsItemArray );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   254
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   255
	// setup the icon array so graphics-style boxes work
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   256
	SetupListBoxIconsL();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   257
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   258
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   259
	// add list items
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   260
	// add list items
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   261
	AddListBoxResourceArrayItemL(R_NPRSEARCH_STATION_LIST_BOX_ITEM1, EListBoxFirstUserImageIndex );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   262
	AddListBoxResourceArrayItemL(R_NPRSEARCH_STATION_LIST_BOX_ITEM2, EListBoxFirstUserImageIndex );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   263
	AddListBoxResourceArrayItemL(R_NPRSEARCH_STATION_LIST_BOX_ITEM3, EListBoxFirstUserImageIndex );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   264
	AddListBoxResourceArrayItemL(R_NPRSEARCH_STATION_LIST_BOX_ITEM4, EListBoxFirstUserImageIndex );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   265
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   266
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   267
	iListBox->SetFocus( ETrue );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   268
	iFocusControl = iListBox;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   269
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   270
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   271
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   272
/** 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   273
 * Handle global resource changes, such as scalable UI or skin events (override)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   274
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   275
void CNPRSearchStationListBox::HandleResourceChange( TInt aType )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   276
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   277
	CCoeControl::HandleResourceChange( aType );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   278
	SetRect( iAvkonViewAppUi->View( TUid::Uid( ENPRSearchStationListBoxViewId ) )->ClientRect() );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   279
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   280
				
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   281
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   282
 *	Draw container contents.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   283
 */				
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   284
void CNPRSearchStationListBox::Draw( const TRect& aRect ) const
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   285
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   286
	CWindowGc& gc = SystemGc();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   287
	gc.Clear( aRect );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   288
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   289
				
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   290
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   291
 *	Add a list box item to a list.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   292
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   293
void CNPRSearchStationListBox::AddListBoxItemL( 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   294
		CEikTextListBox* aListBox,
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   295
		const TDesC& aString )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   296
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   297
	CTextListBoxModel* model = aListBox->Model();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   298
	CDesCArray* itemArray = static_cast< CDesCArray* > ( model->ItemTextArray() );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   299
	itemArray->AppendL( aString );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   300
	aListBox->HandleItemAdditionL();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   301
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   302
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   303
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   304
 * Get the array of selected item indices, with respect to the list model.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   305
 * The array is sorted in ascending order.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   306
 * The array should be destroyed with two calls to CleanupStack::PopAndDestroy(),
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   307
 * the first with no argument (referring to the internal resource) and the
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   308
 * second with the array pointer.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   309
 * @return newly allocated array, which is left on the cleanup stack;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   310
 *	or NULL for empty list. 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   311
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   312
RArray< TInt >* CNPRSearchStationListBox::GetSelectedListBoxItemsLC( CEikTextListBox* aListBox )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   313
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   314
	CAknFilteredTextListBoxModel* model = 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   315
		static_cast< CAknFilteredTextListBoxModel *> ( aListBox->Model() );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   316
	if ( model->NumberOfItems() == 0 )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   317
		return NULL;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   318
		
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   319
	// get currently selected indices
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   320
	const CListBoxView::CSelectionIndexArray* selectionIndexes =
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   321
		aListBox->SelectionIndexes();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   322
	TInt selectedIndexesCount = selectionIndexes->Count();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   323
	if ( selectedIndexesCount == 0 )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   324
		return NULL;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   325
		
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   326
	// copy the indices and sort numerically
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   327
	RArray<TInt>* orderedSelectedIndices = 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   328
		new (ELeave) RArray< TInt >( selectedIndexesCount );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   329
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   330
	// push the allocated array
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   331
	CleanupStack::PushL( orderedSelectedIndices );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   332
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   333
	// dispose the array resource
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   334
	CleanupClosePushL( *orderedSelectedIndices );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   335
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   336
	// see if the search field is enabled
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   337
	CAknListBoxFilterItems* filter = model->Filter();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   338
	if ( filter != NULL )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   339
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   340
		// when filtering enabled, translate indices back to underlying model
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   341
		for ( TInt idx = 0; idx < selectedIndexesCount; idx++ )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   342
			{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   343
			TInt filteredItem = ( *selectionIndexes ) [ idx ];
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   344
			TInt actualItem = filter->FilteredItemIndex ( filteredItem );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   345
			orderedSelectedIndices->InsertInOrder( actualItem );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   346
			}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   347
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   348
	else
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   349
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   350
		// the selection indices refer directly to the model
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   351
		for ( TInt idx = 0; idx < selectedIndexesCount; idx++ )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   352
			orderedSelectedIndices->InsertInOrder( ( *selectionIndexes ) [ idx ] );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   353
		}	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   354
		
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   355
	return orderedSelectedIndices;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   356
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   357
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   358
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   359
 * Delete the selected item or items from the list box.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   360
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   361
void CNPRSearchStationListBox::DeleteSelectedListBoxItemsL( CEikTextListBox* aListBox )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   362
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   363
	CAknFilteredTextListBoxModel* model = 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   364
		static_cast< CAknFilteredTextListBoxModel *> ( aListBox->Model() );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   365
	if ( model->NumberOfItems() == 0 )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   366
		return;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   367
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   368
	RArray< TInt >* orderedSelectedIndices = GetSelectedListBoxItemsLC( aListBox );		
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   369
	if ( !orderedSelectedIndices )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   370
		return;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   371
		
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   372
	// Delete selected items from bottom up so indices don't change on us
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   373
	CDesCArray* itemArray = static_cast< CDesCArray* > ( model->ItemTextArray() );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   374
	TInt currentItem = 0;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   375
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   376
	for ( TInt idx = orderedSelectedIndices->Count(); idx-- > 0; ) 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   377
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   378
		currentItem = ( *orderedSelectedIndices )[ idx ];
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   379
		itemArray->Delete ( currentItem );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   380
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   381
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   382
	// dispose the array resources
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   383
	CleanupStack::PopAndDestroy();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   384
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   385
	// dispose the array pointer
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   386
	CleanupStack::PopAndDestroy( orderedSelectedIndices );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   387
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   388
	// refresh listbox's cursor now that items are deleted
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   389
	AknListBoxUtils::HandleItemRemovalAndPositionHighlightL(
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   390
		aListBox, currentItem, ETrue );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   391
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   392
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   393
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   394
 *	Get the listbox.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   395
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   396
CAknSingleStyleListBox* CNPRSearchStationListBox::ListBox()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   397
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   398
	return iListBox;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   399
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   400
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   401
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   402
 *	Create a list box item with the given column values.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   403
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   404
void CNPRSearchStationListBox::CreateListBoxItemL( TDes& aBuffer, 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   405
		TInt aIconIndex,
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   406
		const TDesC& aMainText )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   407
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   408
	_LIT ( KStringHeader, "%d\t%S" );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   409
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   410
	aBuffer.Format( KStringHeader(), aIconIndex, &aMainText );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   411
	} 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   412
				
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   413
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   414
 *	Add an item to the list by reading the text items from the array resource
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   415
 *	and setting a single image property (if available) from an index
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   416
 *	in the list box's icon array.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   417
 *	@param aResourceId id of an ARRAY resource containing the textual
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   418
 *	items in the columns
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   419
 *	@param aIconIndex the index in the icon array, or -1
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   420
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   421
void CNPRSearchStationListBox::AddListBoxResourceArrayItemL( TInt aResourceId, TInt aIconIndex )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   422
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   423
	CDesCArray* array = iCoeEnv->ReadDesCArrayResourceL( aResourceId );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   424
	CleanupStack::PushL( array );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   425
	// This is intended to be large enough, but if you get 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   426
	// a USER 11 panic, consider reducing string sizes.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   427
	TBuf<512> listString; 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   428
	CreateListBoxItemL( listString, aIconIndex, ( *array ) [ 0 ] );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   429
	AddListBoxItemL( iListBox, listString );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   430
	CleanupStack::PopAndDestroy( array );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   431
	} 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   432
				
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   433
/**
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   434
 *	Set up the list's icon array.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   435
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   436
void CNPRSearchStationListBox::SetupListBoxIconsL()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   437
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   438
	CArrayPtr< CGulIcon >* icons = NULL;		
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   439
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   440
	if ( icons != NULL )
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   441
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   442
		iListBox->ItemDrawer()->ColumnData()->SetIconArray( icons );
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   443
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   444
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   445
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   446
/** 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   447
 *	Handle commands relating to markable lists.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   448
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   449
TBool CNPRSearchStationListBox::HandleMarkableListCommandL( TInt /*aCommand*/)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   450
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   451
	TBool result = EFalse;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   452
	return result;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   453
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   454
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   455
TInt CNPRSearchStationListBox::CurrentItemIndex()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   456
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   457
	return iListBox->CurrentItemIndex();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   458
	}