×
Namespaces

Variants
Actions

Пример работы с ChoiceList API - S60 Touch UI

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Пример кода
Исходный файл: Media:ChoiceList.zip

Совместимость
Платформа(ы):
S60 5th Edition

Статья
Автор: A.A.M. (28 Jan 2009)
Последнее редактирование: hamishwillee (23 Nov 2011)


Статья базируется на материалах англоязычной части Wiki, все они перечислены в разделе ссылки.

Contents

Обзор

ChoiceList API - это новый UI компонент для выбора элементов из вертикального списка. В данной статье мы рассмотрим пример работы с этим API.

ChoiceList API

  • ChoiceList API это новый компонен пользовательского интерфейса, доступен начиная с S60 5-го издания
  • При создании ChoiceList'a можно указать его тип: "с выделенным по-умолчанию значением" или "без возможности выделения"
  • В качестве элементов ChoiceList'a могут использоваться кнопки
  • Присутствует возможность заполнения ChoiceList'a элементами массива
  • ChoiceList API предоставляет различные функции для манипулирования элементами, расположенными в ChoiceList'е

ChoiceList.png

Реализация компонента ChoiceList

ChoiceListAppView.h

  • Унаследуем класс от MCoeControlObserver и реализуем его виртуальную функцию HandleControlEventL() для получения и обработки событий от ChoiceList'a.
  • Объявляем объект CAknChoiceList членом класса и используем его для того, чтобы назначить наблюдателя (observer), который будет обрабатывать события от ChoiceList'a.
...
...
#include <aknchoicelist.h>
 
// CLASS DECLARATION
class CChoiceListAppView : public CCoeControl, public MCoeControlObserver
{
.....
.....
//From MCoeControlObserver
void HandleControlEventL(CCoeControl *aControl,TCoeEvent aEventType);
 
//Вспомогательные функции приложения
void CreateChoiceListL();
 
//From CCoeControl
TInt CountComponentControls() const;
CCoeControl* ComponentControl(TInt aIndex) const;
.....
private:
CAknChoiceList* iChoiceList;
....
};

ChoiceListAppView.cpp

  • Вызываем функцию создания ChoiceList'a в ConstructL()
// -----------------------------------------------------------------------------
// CChoiceListAppView::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CChoiceListAppView::ConstructL(const TRect& aRect)
{
// Создаем окно
CreateWindowL();
 
CreateChoiceListL();
....
....
 
// Устанавливаем размеры окна
SetRect(aRect);
 
// Активизируем окно
ActivateL();
}


  • Заполняем список элементами массива
  • Устанавливаем класс CChoiceListAppView в качестве наблюдателя и обработчика событий от ChoiceList'a , реализуем функцию HandleControlEventL()
void CChoiceListAppView::CreateChoiceListL()
{
CDesCArray* itemArray = new (ELeave) CDesCArrayFlat(5);
CleanupStack::PushL(itemArray);
itemArray->AppendL(_L("First"));
itemArray->AppendL(_L("Second"));
itemArray->AppendL(_L("Third"));
 
iChoiceList = CAknChoiceList::NewL(this, itemArray);
CleanupStack::Pop(itemArray);
iChoiceList->SetContainerWindowL(*this);
iChoiceList->SetObserver(this);
iChoiceList->SetRect(TRect ( TPoint(100,200), TSize(120,10) ) );
}
  • Реализуем функцию HandleControlEventL для обработки событий от ChoiceList'a
void CChoiceListAppView::HandleControlEventL(CCoeControl *aControl,TCoeEvent aEventType)
{
if(iChoiceList == aControl)
{
switch(aEventType)
{
case EEventStateChanged:
{
TInt index = iChoiceList->SelectedIndex();
_LIT(KMenuItem,"%d is selected");
TBuf<20> buf;
buf.Format(KMenuItem(), index+1);
CAknInformationNote* info = new (ELeave) CAknInformationNote;
info->ExecuteLD(buf);
}
break;
}
}
}
  • Возвращаем число компонентов, содержащихся в контейнере, у нас он один - iChoiceList
TInt CChoiceListAppView::CountComponentControls() const
{
return 1; // возвращаем число компонентов в контейнере
}
 
CCoeControl* CChoiceListAppView::ComponentControl(TInt aIndex) const
{
switch ( aIndex )
{
case 0:
return iChoiceList;
default:
return NULL;
}
}


  • Не забудьте удалить iChoiceList в деструкторе класса.
 
// -----------------------------------------------------------------------------
// CChoiceListAppView::~CChoiceListAppView()
// Destructor.
// -----------------------------------------------------------------------------
//
CChoiceListAppView::~CChoiceListAppView()
{
....
....
if(iChoiceList)
{
delete iChoiceList;
iChoiceList = NULL;
}
}

Полезные функции

CAknChoiceList

  • SelectedIndex()
  • AddItemL()
  • RemoveItem()
  • HideChoiceList()
  • InsertItemL()

MCoeControlObserver

  • HandleControlEventL()

Ключевые моменты

Заголовочные файлы

  • #include <aknchoicelist.h>

Классы

  • CAknChoiceList
  • MCoeControlObserver

Libraries

  • eikcoctl.lib

Демонстрационное приложение

Связанные ссылки



При подготовке статьи использованы следующие материалы:

Источники дополнительной информации

This page was last modified on 23 November 2011, at 07:18.
39 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×