<< Пред.           стр. 13 (из 32)           След. >>

Список литературы по разделу

 Рис. 8.10. Список Setting
 панель для элемента списка и вложенное окно, на которое попадает пользователь при выборе этого элемента списка. Для двух подэкранных клавиш назначаются команды ОК и Отмена. В настройках точки доступа в Интернет использовался один из видов списка Setting, а всего существуют десять типов списка для всевозможных настроек. Это тип Volume control, Slider control, Enumerated text, Text editor, Time editor, Date edition, IP editor, Binary switch, Password numeric editor и Password alphabetic editor. Уделим внимание каждому типу списка Setting, тем более, что это один из сложных элементов пользовательского интерфейса. Сначала познакомимся со всеми типами списка Setting, на примере демонстрационной программы Setting List. Эта программа поставляется с SDK серии 60 версии 2.1 и находится в каталоге SDK в папке Series60Ex. И в конце главы на основе этой же программы научимся создавать список Setting.
 Список Volume control
  Этот тип списка Setting чаще всего используется для установки громкости звука. Посмотрите на рис. 8.11, где изображен список Volume control.
  Вы видете два экрана. Первый - это титульная панель, в этом элементе списка отображается текущая опция, установленная на данный момент. Список Volume control в качестве графических элементов использует небольшие по разме-
 
 
 
 
 
 
 Рис. 8.11. Volume control
 
 рам прямоугольники, показывающие, например, уровень установленной громкости звука. При выборе титульного элемента списка пользователь попадает на вторичный экран, где уже непосредственно и происходит настройка свойств.
  В списке Volume control увеличение или уменьшение индикатора уровня производится с помощью джойстика или клавиш Right или Left. После того, как уровень задан, нажимается клавиша ОК. Заданный уровень индикатора теперь отображается и на титульной панели элемента списка.
  Значения для Volume control могут задаваться только в диапазоне от 0 до 10, а любое большее значение будет сброшено к нулю.
 Список Slider control
  Этот тип списка служит для увеличения или уменьшения какого-либо параметра с помощью бегунка. Посмотрите на рис. 8.12, где изображен список Slider control.
 
 
 
 
 
 
 Рис. 8.12. Slider control
  Пользователь перемещает бегунок между минимальным и максимальным значением, устанавливая подходящее ему значение. Минимальное и максимальное значения устанавливаются программистом на этапе создания приложения и не имеют определенных ограничений. Перемещение бегунка происходит с помощью джойстика или клавиш телефона Right и Left.
 Список Enumerated text
  Список Enumerated text содержит перечисления, одно из которых можно выбрать. Принцип работы основан на использовании переключателей как в Windows. На рис. 8.13 изображен Enumerated text.
  Количество текстовых перечислений не ограничено и определяется программистом. Перемещаться по перечислениям можно джойстиком или клавишами Up и Down. При выборе перечисления, курсор помещается на необходимый текст, нажимается клавиша ОК и происходит установка заданного параметра. Титульный лист типа Enumerated text показывает установленное на данный момент значение, что закономерно для всех типов списка Setting.
 
 
 
 
 
 
 Рис. 8.13. Enumerated text
 Список Text editor
  Этот тип списка представляет обыкновенный текстовый редактор, но со значительными ограничениями длины текста. Список Text editor обычно используется для создания коротких названий, которые даются каким-то опциям в программе. На рис. 8.14 показан Text editor. Для набора символов в текстовом редакторе задей-ствуются все клавиши телефона и доступны любые операции по редактированию текста. В том случае, если в Text editor не содержится ни одного символа, на титульной панели будет фигурировать слово None.
 
 
 
 
 
 
 Рис. 8.14. Text editor
 Список Time editor
  Как видно из названия этого типа списка, он используется для редакци и времени в программе. На рис. 8.15 показан Time editor. В области редакции Time editor располагаются десятичные цифры, разделенные между собой на блоки для часов, минут, секунд и РМ или AM. Для редакции используются все клавиши, переход по значениям осуществляется джойстиком или клавишами Right или Left.
 
 
 
 
 
 
 Рис. 8.15. Time editor
 Список Date editor
  Абсолютно идентичен списку Time editor, с той лишь разницей, что установка значений происходит для числа, месяца и года. Область редакции разделена на три независимых блока, перемещение по которым и редактирование происходит с помощью клавиш телефона. Титульная панель списка Date editor показывает установленную пользователем дату. На рис. 8.16 показан список Date editor.
 
 
 
 
 
 
 Рис. 8.16. Date editor
 Список IP editor
 Область редакции этого типа списка основана на двух предыдущих типах
 списков. Но вместо двухзначных значений используются трехзначные числа. Блок чисел разделен точкой и всего имеются четыре таких блока. С помощью списка IP editor, задается IP-адрес. Редакция и перемещение в IP editor производится всеми клавишами телефона. На рис. 8.17 показан список IP editor.
 Список Binary switch
  Список Binary switch применяется для определения логических значений по принципу Да-Нет, Включить-Выключить или Верно-Не верно и так далее. Посмотрите на рис. 8.18, где показан список Binary switch. Этот тип списка не имеет
 
 
 
 
 
 Рис. 8.17. IP editor
 дополнительно вложенного экрана редакции. Всего могут быть только два значения в списке Binary switch, поэтому одно из них задано по умолчанию. Для изменения значения в списке Binary switch курсором выделют необходимый элемент списка и нажимают клавишу ОК или Выбор, после чего значение изменяется на противоположное.
 
 
 
 
 
 
 Рис. 8.18. Binary switch
 Список Password editor
  Этот тип списка используется для задания пароля. Список Password editor может быть двух разновидностей: numeric и alphabetic. Это два идентичных редактора, но при использовании alphabetic, вводя пароль, вы можете на несколько секунд увидеть набираемую на клавиатуре букву или цифру. Затем она камуфлируется звездочкой. В случае с numeric такой возможности нет, и при наборе пользователь не видит введенных символов. Все цифры или буквы изначально камуфлируются звездочками. На титульной панели списка Password editor показаны звездочки, скрывающие набранный пароль. На рис. 8.19 изображен Password editor.
 
 
 
 
 
 
 
 
 
 
 
 
 
 Рис. 8.19. Password editor
 8.7.4. Демонстрационный пример Setting List
  Пример Setting List, находящийся в каталоге SDK серии 60 в папке \Example, как нельзя лучше демонстрирует все возможности списка Setting. В этом примере рассматривается работа со всеми типами списка Setting, показывается обработка событий, полученных от пользователя с клавиш телефона и представлен общий механизм смены экранов или перехода в приложении. В папке \Series60Ex директории SDK находится папка settinglist, рассмотрим структуру папок и кодов примера Setting List:
 ? \aif - папка с AIF ресурсами;
 ? aknexsettinglistaif.rss - информационный файл AIF;
 ? две иконки и две маски для рабочего стола телефона и для панели
 Status pane;
 ? \group - папка с проектными файлами;
 ? aknexsettinglist.mmp - файл ММР;
 ? aknexsettinglist.pkg - файл PKG;
 ? aknexsettinglist.rss - файл ресурса;
 ? aknexsettinglistcaption.rss - файл ресурса для заголовков программы;
 ? bld.ini - файл для сборки и компиляции проекта;
 ? \inc - папка с заголовочными файлами проекта;
 ? aknexsettinglist.hrh - заголовочный файл ресурсов программы;
 
 ? aknexsettinglist.loc - файл локализации;
 ? aknexsettinglistapp.h - заголовочный файл приложения;
 ? aknexsettinglistappui.h - заголовочный файл для AppUi;
 ? aknexsettinglistdocument.h - бланк документа;
 ? aknexsettinglistview.h - заголовочный файл представления вида;
 G aknexsettinglistcontainer.h - заголовочный файл класса AknExSet-tingListContainer;
 ? aknexsettinglistbox.h - заголовочный файл класса AknExSetting-
 ListBox;
 ? aknexsettinglistitemdatah - заголовочный файл класса AknExSet-
 tingListltemData;
 ? \src - папка с исходными кодами проекта;
 ? aknexsettinglistapp.cpp - файл реализации класса приложения;
 ? aknexsettinglistappui.cpp - файл реализации AppUi;
 ? aknexsettinglistdocument.cpp - файл реализации класса Document;
 ? aknexsettinglistview.cpp - представление вида;
 ? aknexsettinglistcontainer.cpp - реализация класса контейнера;
 ? aknexsettinglistbox.cpp - файл реализации класса AknExSetting-
 ListBox;
 ? aknexsettinglistitemdataxpp - файл реализации класса AknExSet-
 tingListltemData.
 ФайлА/F
  Информационный файл AIF-pecypca содержит стандартное определение для заголовка программы на английском языке. В программе используется свой уникальный идентификатор приложения UID3.
 /*
 * AknExSettingListaif.rss
 * AknExSettingList
 * Copyright (с) 2003 Nokia. All rights reserved.
 -fc
 */¦
 finclude  RESOURCE AIF_DATA {
 app_uid = 0xl0005C2 9;
 caption_list =
 { CAPTION
 {
 code = ELangEnglish;
 
 caption = "AKNEXSETTINGLIST";
 num_icons = 2;
 embeddability=KAppNotEmbeddable; newfile=KAppDoesNotSupportNewFile; }
 Файл ресурса для заголовка программы
  Файл AknExSettingList_caption.rss содержит объявления для названий программы на рабочий стол телефона и панель Status pane. В качестве названий используются макросы, расшифровка которых указана в файле локализации приложения.
 /*
 * AknExSettingList_captions.rss
 * AknExSettingList
 * Copyright (с) 2003 Nokia. All rights reserved.
 */
 ¦include "AknExSettingList.loc" #include
 RESOURCE CAPTION_DATA {
 caption = qtn_apps_tasp_list;
  shortcaption = qtn_apps_tasp_grid; }
 Заголовочный файл ресурсов HRH
  В файле AknExSettingList.hrh создаются три перечисляемых типа: TAknEx-SettingListMenuCommands - для команд меню программы, TAknExSet-tingltems - для идентификации каждого типа списка Setting и TAknExSet-
 tingListCba - для команды Next, назначенной правой подэкранной клавише
 телефона.
 /*
 * AknExSettingList.hrh
 * AknExSettingList
 * Copyright (с) 2003 Nokia. All rights reserved.
 */
 
 #ifndef AKNEXSETTINGLIST_HRH #define AKNEXSETTINGLIST_HRH
 enum TAknExSettingListMenuCommands {
 EAknExSettingListCmdEmptyOutline = 0x6000,
 EAknExSettingListCmdSettingList, EAknExSettingListCmdOutlineOl, EAknExSettingListCmdOutline02, EAknExSettingListCmdOutline03, EAknExSettingListCmdOutline04, EAknExSettingListCmdOutline05, EAknExSettingListCmdOutline0 6, EAknExSettingListCmdOutline07, EAknExSettingListCmdOutline08, EAknExSettingListCmdOutline09, EAknExSettingListCmdOutlinelO };
 enum TAknExSettingltems
 {
 EAknExSettingText,
 EAknExSettingVolume,
 EAknExSettingEnumText,
 EAknExSettingSlider,
 EAknExSettingDate,
 EAknExSettingTime,
 EAknExSettingBinary,
 EAknExSettingPassAlph,
 EAknExSettingPassNumber,
  EAknExSettinglpAddress };
 enum TAknExSetListCba {
  EAknExSetListCbaCmdNext = 0x6300 };
 #endif // AKNEXSETTINGLIST_HRH
  В перечисляемом типе TAknExSettingListMenuComraands происходит объявление набора целочисленных констант или списка перечислений для команд меню приложения. При запуске программы Setting List пользователь попа-
 
 дает на титульную станицу программы. Для того чтобы перейти или открыть экран с необходимым типом списка Setting, а это может быть любой из десяти доступных списков, нужно выбрать одноименную команду меню, как показано на рис. 8.20. После этого пользователь попадает на экран с одним из типов списка Setting.
 
 
 
 
 
 
 Рис. 8.20. Работа программы Setting List
  Тип TAknExSettingltems содержит перечисления для идентификации всех десяти видов списка Setting. Об этом легко догадаться по названиям констант, чего не скажешь о придуманных названиях командам меню. Идентификаторы необходимы для создания списков в файле ресурса приложения и при рассмотрении файла AknExSettingList.hrh вы в этом убедитесь.
  При попадании на титульный экран одного из типов списка, например, Password editor (рис. 8.19), правой подэкранной клавише назначается команда Next. В перечисляемом типе TAknExSettingListCba происходит объявление команды Next. Присвоенное значение 0x6300 этой команде - это стандартное системное значение для команд типа Next, Back.
 Ресурсы программы Setting List
  В Symbian OS традиционно файлы ресурсов находятся в папке \group и имеют расширение *.rss. Файл AknExSettingList.rss содержит объявления ресурсов для приложения Setting List. Этот файл очень большой по размеру, поэтому в книге приводятся по частям только его важные моменты. Для изучения полной спецификации файла AknExSettingList.rss откройте каталог SDK и перейдите в папку \Series60Ex\settinglist\group.
  В начале исходного кода происходит подключение системных файлов, зада-СТСЛ ПДСНТИфИКаТ°р ресурса и декларируется большой набор констант.
 /*
 * AknExSettingList.rss
 * AknExSettingList
 *
 * Copyright (с) 2003 Nokia. All rights reserved.
 */
 // идентификатор ресурса
 NAME EXPG
 // подключаем системные библиотеки
 ¦include
 ¦include
 ¦include
 ¦include
 ¦include
 ¦include
 ¦include
 ¦include "aknexsettinglist.hrh"
 ¦include "aknexsettinglist.loc"
 // Text Setting
 ¦define TEXT_SETTING_PAGE_NUMBER 1 ¦define TEXT_SETTING_PAGE_WIDTH 9 ¦define TEXT_SETTING_PAGE_LINES 5 ¦define TEXT_SETTING_PAGE_MAXLENGTH10 10 ¦define TEXT_SETTING_PAGE_MAXLENGTH20 20 ¦define TEXT_SETTING_PAGE_MAXLENGTH30 30
 // Slider Setting
 ¦define SLIDER_SETTING_PAGE_NUMBER 1 ¦define SLIDER_SETTING_PAGE_MINVALUE 0 ¦define SLIDER_SETTING_PAGE_MAXVALUE 100 ¦define SLIDER_SETTING_PAGE_STEP 1
 // Volume Setting
 ¦define VOLUME_SETTING_PAGE_NUMBER 1
 ¦define VOLUME_SETTING_PAGE_VALUE 8
 // for Time Setting Page ¦define TIME_SETTING_PAGE_NUMBER 1 ¦define TIME_EDITOR_MIN_SECOND 0 ¦define TIME_EDITOR_MIN_MINUTE 0 ¦define TIME_EDITOR_MIN_nOUR 0 ¦define TIME_EDITOR_MAX_SECOND 59 ¦define TIME_EDITOR_MAX_MINUTE 59 ¦define TIME EDITOR MAX HOUR 23
 
 // Duration Setting
 #define DURATION_SETTING_PAGE_NUMBER 1 #define DURATION_EDITOR_MIN_SECOND 0 #deЈine DURATION_EDITOR_MAX_SECOND 3000
 // Alpha Password Setting
 #define ALPHA_PASSWORD_SETTING_PAGE_NUMBER 1
 #define ALPHA_PASSWORD_LENGTH_OF_STRING 8
 // Numeric Password Setting
 #define NUMERIC_PASSWORD_SETTING_PAGE_NUMBER 2 #define NUMERIC_PASSWORD_OL09_SETTING_PAGE_NUMBER 1 #define NUMERIC_PASSWORD_LENGTH_OF_STRING 8
 // IP Editor Setting
 #define IP_EDITOR_MIN_FIELD_VALUE 20
 #define IP_EDITOR_MAX_FIELD_VALUE 200
  Все объявленные константы подключаются в программу с помощью директивы #def ine.
  При создании типов списка Setting задействуются различные целочисленные значения, например, для типа Volume необходимо определить минимальное и максимальное значение звука. Это можно сделать непосредственно в месте создания и описания свойств Volume control с помощью цифр, но значительно удобнее создать константу с заданным значением и использовать ее по всему исходному коду. Из созданных констант видно, что предусмотрен широкий спектр всевозможных значений. При создании конкретных типов списка Setting мы обязательно вспомним обо всех константах, а сейчас нет смысла обсуждать каждую, потому что не известна пока их область применения.
  Макрос ресурса EIK_APP_INFO создает в программе на левой подэкранной клавише Options меню. Одна из команд меню содержит вторичное меню (см. рис. 8.20).
 // EIK_APP_INFO
 / /
 RESOURCE EIK_APP_INFO {
 menubar = r_aknexsettinglist_menubar;
 //cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;
 cba = r_aknexsettinglist_cba_options_next;
 }
 / /
 // r_aknexsettinglist_menubar
 
 // ресурс Menu Bar
 //
 RESOURCE MENU_BAR r_aknexsettinglist_menubar {
 titles = {
 MENUJTITLE {
 menu_pane = r_aknexsettinglist_menu; txt = qtn_aknexsettinglist_menubar;
 / /
 // r_aknexsettinglist_menu
 // меню Menu pane
 //
 RESOURCE MENU_PANE r_aknexsettinglist_menu {
 items = {
 MENU_ITEM {
 command = EAknExSettingListCmdSettingList; cascade =
  r_aknexsettinglist_settinglist_cascade; flags = EEikMenuItemSeparatorAfter; txt = qtn_aknexsettinglist_menu_setlist; }, MENU_ITEM // Menu "Exit"
 {
 command = EAknCmdExit;
 txt = qtn_aknexsettinglist_menu_exit;
 / /
 // r_aknexsettinglist_settinglist_cascade // вторичное меню
 RESOURCE MENU_PANE r_aknexsettinglist_settinglist_cascade {
 items =
 
 MENUITEM
 command = EAknExSettingListCmdOutlineOl;
  txt = qtn_aknexsettinglist_outline01; },
 MENU_ITEM {
 command = EAknExSettingListCmdOutline02;
 txt = qtn_aknexsettinglist_outline02;
 Ь
 MENU_ITEM {
 command = EAknExSettingListCmdOutline03;
 txt = qtn_aknexsettinglist_outline03;
 MENUITEM
 command = EAknExSettingListCmdOutline04; txt = qtn_aknexsettinglist_outline04;
 MENUITEM
 command = EAknExSettingListCmdOutline05; txt = qtn_aknexsettinglist_outline05;
 MENUITEM
 command = EAknExSettingListCmdOutlineO6; txt = qtn_aknexsettinglist_outline06;
 MENUITEM
 command "¦ EAknExSettingListCmdOutlineO?; txt = qtn_aknexsettinglist_outline07;
 MENUITEM
 command = EAknExSettingListCmdOutline08; txt = qtn_aknexsettinglist outline08;

<< Пред.           стр. 13 (из 32)           След. >>

Список литературы по разделу