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