三、設定項類型
在S60平台有十種不同的設定項類型,下面我們來仔細介紹這些類型及它的資源結構。
3.1 Binary Switch
二進制開關是最簡單的設定項類型了,它允許設定成開和關,并且不需要單獨的設定頁,在設定清單中就可以改變。二進制開關設定項類型傳回一個布爾(TBool)型變量在應用程式設定資料中。設定項類中使用的二進制開關類型是CAknBinaryPopupSettingItem。

圖1 二進制開關設定項
下面是一個二進制開關資源定義的例子:
RESOURCE AVKON_SETTING_ITEM_LIST r_setting_list_setting_binary
{
flags= EAknSettingItemNumberedStyle;
title = qtn_exsl_outline07;
initial_number = 1;
items =
{
AVKON_SETTING_ITEM
{
identifier = EAknExSettingBinary;
setting_page_resource = r_binary_setting _page;
associated_resource = r_popup_setting_binary_texts;
name = qtn_exsl_binary_title;
}
};
}
RESOURCE AVKON_POPUP_SETTING_TEXTS r_popup_setting_binary_texts
{
flags = 0;
setting_texts_resource = r_on_off_texts;
popped_up_texts_resource = r_popped_up_on_off_texts;
}
RESOURCE ARRAY r_on_off_texts
{
items =
{
AVKON_ENUMERATED_TEXT { value=1; text = qtn_exsl_texts_on; },
AVKON_ENUMERATED_TEXT { value=0; text = qtn_exsl_texts_off; }
};
}
RESOURCE ARRAY r_popped_up_on_off_texts
{
items =
{
LBUF { txt = qtn_exsl_texts_enabled; },
LBUF { txt = qtn_exsl_texts_disabled; }
};
}
RESOURCE AVKON_SETTING_PAGE r_binary_setting_page
{
number= 0;
label= qtn_exsl_binary_title;
type = EAknCtPopupSettingList;
}
3.2 Text Editor
文本設定項允許使用者輸入設定的值。這些設定值存儲在使用者指定描述符(user-specified descriptor)中。設定項類使用的文本編輯類型是CAknTextSettingItem。
圖2 文本設定項和文本設定頁
下面是文本編輯設定項資源定義的例子:
RESOURCE AVKON_SETTING_ITEM_LIST r_setting_list_setting_text
{
flags= EAknSettingItemNumberedStyle;
title = qtn_exsl_outline01;
initial_number = 1;
items =
{
AVKON_SETTING_ITEM
{
identifier = EAknExSettingText;
setting_page_resource = r_text_setting_page;
name = qtn_exsl_text_title;
}
};
}
RESOURCE AVKON_SETTING_PAGE r_text_setting_page
{
number = TEXT_SETTING_PAGE_NUMBER;
label = qtn_exsl_text_title;
type = EEikCtEdwin;
editor_resource_id = r_settinglist_edwin;
}
RESOURCE EDWIN r_settinglist_edwin
{
width = TEXT_SETTING_PAGE_WIDTH;
lines = TEXT_SETTING_PAGE_LINES;
maxlength = TEXT_SETTING_PAGE_MAXLENGTH20;
}
3.3 Enumerated Text
枚舉文本設定項為使用者提供一個選擇清單。它也允許為設定項再輸入一個文本值,通過選擇彈出菜單的“Other”來完成它。這樣實際上就有了三種不同的枚舉文本視圖:設定清單中包含設定項,設定頁顯示多種選擇,文本編輯器輸入非預定義的文本。這些設定值存儲在設定項構造的描述符中。設定項類使用枚舉文本類型是CAknEnumeratedTextPopupSettingItem。
圖3 枚舉文本設定項和設定頁
圖4 枚舉文本、文本編輯器
下面是枚舉文本設定項的資源定義的例子:
RESOURCE AVKON_SETTING_ITEM_LIST r_setting_list_setting_enumtext
{
flags= EAknSettingItemNumberedStyle;
title = qtn_exsl_outline04;
initial_number = 1;
items =
{
AVKON_SETTING_ITEM
{
identifier = EAknExSettingEnumText;
setting_page_resource = r_enumtext_setting_page;
associated_resource = r_popup_setting_list;
name = qtn_exsl_enumtext_title;
}
};
}
RESOURCE AVKON_SETTING_PAGE r_enumtext_setting_page
{
number= 1;
label= qtn_exsl_enumtext_title;
type = EAknCtPopupSettingList;
editor_resource_id = r_popup_setting_list_new_entry;
}
RESOURCE AVKON_POPUP_SETTING_TEXTS r_popup_setting_list
{
setting_texts_resource = r_settinglist_page_list;
popped_up_texts_resource = r_settinglist_list_item_array;
}
RESOURCE ARRAY r_settinglist_page_list
{
items =
{
AVKON_ENUMERATED_TEXT {value = 0;text = qtn_exsl_item_list0;},
AVKON_ENUMERATED_TEXT {value = 1;text = qtn_exsl_item_list1;},
AVKON_ENUMERATED_TEXT {value = 2;text = qtn_exsl_item_list2;},
. . .
AVKON_ENUMERATED_TEXT {value = 9;text = qtn_exsl_item_list9;}
};
}
RESOURCE ARRAY r_settinglist_list_item_array
{
items =
{
LBUF { txt = qtn_exsl_item_list0; },
LBUF { txt = qtn_exsl_item_list1; },
LBUF { txt = qtn_exsl_item_list2; },
. . .
LBUF { txt = qtn_exsl_item_list9; }
};
}
3.4 Alphanumeric Password Editor
字母數字密碼編輯器
密碼設定項允許保密資料。密碼設定項允許輸入字母或數字(3.5章節是數字密碼編輯器)。設定值存儲在設定項構造的描述符中。設定項類使用密碼類型是
CAknPasswordSettingItem。
圖5 字母密碼設定項和密碼設定頁
下面是字母數字密碼設定項的資源定義的例子:
RESOURCE AVKON_SETTING_ITEM_LIST r_setting_list_setting_pw
{
flags= EAknSettingItemNumberedStyle;
title = qtn_exsl_outline08;
initial_number = 1;
items =
{
AVKON_SETTING_ITEM
{
identifier = EAknExSettingPassAlph;
setting_page_resource = r_alpha_password_setting_page;
name = qtn_exsl_alpha_title;
}
};
}
RESOURCE AVKON_SETTING_PAGE r_alpha_password_setting_page
{
number = ALPHA_PASSWORD_SETTING_PAGE_NUMBER;
label = qtn_exsl_alpha_title;
type = EEikCtSecretEd;
editor_resource_id = r_settinglist_alpha_password;
}
RESOURCE SECRETED r_settinglist_alpha_password
{
num_letters = ALPHA_PASSWORD_LENGTH_OF_STRING;
}
3.5 Numeric Password Editor
密碼設定項允許輸入密碼。密碼設定項可以是字母數字或數字(PIN碼)。設定值存儲在設定項構造的描述符中。設定項類使用的密碼類型是CAknPasswordSettingItem。
圖6 數字密碼設定項和設定頁
下面是數字密碼設定項資源定義的例子:
RESOURCE AVKON_SETTING_ITEM_LIST r_setting_list_setting_pin
{
flags= EAknSettingItemNumberedStyle;
title = qtn_exsl_outline09;
initial_number = 1;
items =
{
AVKON_SETTING_ITEM
{
identifier = EAknExSettingPassNumber;
setting_page_resource =
r_ol09_numeric_password_setting_page;
name = qtn_exsl_numeric_title;
}
};
}
RESOURCE AVKON_SETTING_PAGE r_ol09_numeric_password_setting_page
{
number = NUMERIC_PASSWORD_OL09_SETTING_PAGE_NUMBER;
label = qtn_exsl_numeric_title;
type = EAknCtNumericSecretEditor;
editor_resource_id = r_settinglist_numeric_password;
}
RESOURCE NUMSECRETED r_settinglist_numeric_password
{
num_code_chars = NUMERIC_PASSWORD_LENGTH_OF_STRING;
}
3.6 Slider
滑塊設定項允許使用者指定一個整數值。這個整數值有個最小值和最大值,用滑動塊控件選擇指定的值。滑動塊設定項的值存儲在整型(TInt)變量中。滑動設定項類使用滑動塊類型CAknSliderSettingItem。
圖7 滑動設定項和設定頁
下面是滑動設定項的資源定義的例子:
RESOURCE AVKON_SETTING_ITEM_LIST r_setting_list_setting_slider
{
flags= EAknSettingItemNumberedStyle;
title = qtn_exsl_outline02;
initial_number = 1;
items =
{
AVKON_SETTING_ITEM
{
identifier = EAknExSettingSlider;
setting_page_resource = r_slider_setting_page;
name = qtn_exsl_slider_title;
}
};
}
RESOURCE AVKON_SETTING_PAGE r_slider_setting_page
{
number = SLIDER_SETTING_PAGE_NUMBER;
label = qtn_exsl_slider_title;
type = EAknCtSlider;
editor_resource_id = r_settinglist_slider;
}
RESOURCE SLIDER r_settinglist_slider
{
layout = EAknSettingsItemSliderLayout;
minvalue = SLIDER_SETTING_PAGE_MINVALUE;
maxvalue = SLIDER_SETTING_PAGE_MAXVALUE;
step = SLIDER_SETTING_PAGE_STEP;
valuetype = EAknSliderValuePercentage;
minlabel = qtn_slider_minlabel; maxlabel = qtn_slider_maxlabel;
}
3.7 Volume Control
音量設定項存儲一個整型值變量,類似于滑動設定項。然而,音量控件可供選擇的範圍是1到10,也沒有在設定頁上擺放可以拖動的控件。設定項類使用音量控件類型是CAknVolumeSettingItem。
圖8 音量設定項和設定頁
下面是音量控制設定項的資源定義的例子:
RESOURCE AVKON_SETTING_ITEM_LIST r_setting_list_setting_volume
{
flags= EAknSettingItemNumberedStyle;
title = qtn_exsl_outline03;
initial_number = 1;
items =
{
AVKON_SETTING_ITEM
{
identifier = EAknExSettingVolume;
setting_page_resource = r_volume_setting_page;
name = qtn_exsl_volume_title;
}
};
}
RESOURCE AVKON_SETTING_PAGE r_volume_setting_page
{
number = VOLUME_SETTING_PAGE_NUMBER;
label = qtn_exsl_volume_title;
type = EAknCtVolumeControl;
editor_resource_id = r_settinglist_volume;
}
RESOURCE VOLUME r_settinglist_volume
{
flags = ESettingsVolumeControl;
value = VOLUME_SETTING_PAGE_VALUE;
}
3.8 Time Editor
時間設定項用來設定時間值,與之相關聯設定項的變量類型是TTime。設定項類使用時間和日期的設定項類型是CAknTimeOrDateSettingItem,用第二個構造器的參數指定額外的類型。
圖9 時間設定項和設定頁
下面是時間設定項資源定義的例子:
RESOURCE AVKON_SETTING_ITEM_LIST r_setting_list_setting_time
{
flags= EAknSettingItemNumberedStyle;
title = qtn_exsl_outline06;
initial_number = 1;
items =
{
AVKON_SETTING_ITEM
{
identifier = EAknExSettingTime;
setting_page_resource = r_time_setting_page;
name = qtn_exsl_time_title;
}
};
}
RESOURCE AVKON_SETTING_PAGE r_time_setting_page
{
number = TIME_SETTING_PAGE_NUMBER;
label = qtn_exsl_time_title;
type = EEikCtTimeEditor;
editor_resource_id = r_settinglist_time_editor;
}
RESOURCE TIME_EDITOR r_settinglist_time_editor
{
minTime = TIME
{
second = TIME_EDITOR_MIN_SECOND;
minute = TIME_EDITOR_MIN_MINUTE;
hour = TIME_EDITOR_MIN_HOUR;
};
maxTime = TIME
{
second = TIME_EDITOR_MAX_SECOND;
minute = TIME_EDITOR_MAX_MINUTE;
hour = TIME_EDITOR_MAX_HOUR;
};
}
3.9 Date Editor
日期設定項類似于時間設定項類型,差別在于輸入的是日期值。
圖10 日期設定項和設定頁
下面是日期設定項資源定義的例子:
RESOURCE AVKON_SETTING_ITEM_LIST r_setting_list_setting_date
{
flags= EAknSettingItemNumberedStyle;
title = qtn_exsl_outline05;
initial_number = 1;
items =
{
AVKON_SETTING_ITEM
{
identifier = EAknExSettingDate;
setting_page_resource = r_date_setting_page;
name = qtn_exsl_date_title;
}
};
}
RESOURCE AVKON_SETTING_PAGE r_date_setting_page
{
label= qtn_exsl_date_title;
type = EEikCtDateEditor;
editor_resource_id = r_settinglist_date;
}
RESOURCE DATE_EDITOR r_settinglist_date
{
minDate= DATE {year=1980;};
maxDate= DATE {year=2060;};
flags=0;
}
3.10 IP Address Editor
IP位址設定項類型允許使用者進行IP位址設定,與之對應的設定項變量類型是TInetAddr。設定項類使用的IP位址類型是CAknIpFieldSettingItem。
圖11 IP位址設定項和設定頁
下面是IP位址設定項資源定義的例子:
RESOURCE AVKON_SETTING_ITEM_LIST r_setting_list_setting_ip
{
flags= EAknSettingItemNumberedStyle;
title = qtn_exsl_outline10;
initial_number = 1;
items =
{
AVKON_SETTING_ITEM
{
identifier = EAknExSettingIpAddress;
setting_page_resource = r_ip_address_setting_page;
name = qtn_exsl_ip_editor_title;
}
};
}
RESOURCE AVKON_SETTING_PAGE r_ip_address_setting_page
{
label= qtn_exsl_ip_editor_title;
type = EAknCtIpFieldEditor;
editor_resource_id = r_settinglist_ip_editor;
}
RESOURCE IP_FIELD_EDITOR r_settinglist_ip_editor
{
min_field_values = IP_FIELD
{
first_field = IP_EDITOR_MIN_FIELD_VALUE;
second_field = IP_EDITOR_MIN_FIELD_VALUE;
third_field = IP_EDITOR_MIN_FIELD_VALUE;
fourth_field = IP_EDITOR_MIN_FIELD_VALUE;
};
max_field_values = IP_FIELD
{
first_field = IP_EDITOR_MAX_FIELD_VALUE;
second_field = IP_EDITOR_MAX_FIELD_VALUE;
third_field = IP_EDITOR_MAX_FIELD_VALUE;
fourth_field = IP_EDITOR_MAX_FIELD_VALUE;
};
flags = 0;
}