Файл menu.ml, содержит структуру меню в телефоне, а так же отвечает за всю его навигацию.
Находится в FS по адресу tpa/preset/system/menu. Редактировать файл можно блокнотом, либо программой Menu Edit
Описание структуры menu.ml
1. Открываем файл menu.ml и находим строчки:
<!-- Desktop Element 1 using DESKTOP_HOOK_1 -->
<element id="PlayNow" replace="next">
<label type="name" textid="DIL_PRE_PLAY_LINK_TXT"/>
<icon pos="unselected" source="internal">PREPLAY_DESKTOP_ICN</icon>
<icon pos="selected" source="internal">PREPLAY_DESKTOP_SELECTED_ICN</icon>
<link type="internal"/>
</element>
Строка <icon pos="unselected" source="internal">PREPLAY_DESKTOP_ICN</icon> - отвечает за невыделенный пункт меню.
Меняем её, на <icon pos="unselected" source="file">1_s.png</icon>, где 1_s.png - название файла для иконки
<icon pos="selected" source="internal">DESKTOP_OPERATOR_SELECTED_ICN</icon> - отвечает за выделенные элементы меню
Меняем её, на <icon pos="unselected" source="file">1_b.png</icon>, где 1_b.png - название файла для иконки
Проделывать эти операции нужно со всеми элементами, то есть
На новых телефонах (начиная с 4-ого поколения) есть строка <icon pos="shortcut" source="internal">PREPLAY_DESKTOP_ICN</icon> - она отвечает за иконку в активити меню.
Меняем её, на <icon pos="shortcut" source="file">1_g.png</icon>, где 1_g.png - название файла для иконки. (Учтите эту строчку!!! Если вы забудете ее написать, то иконок ссылок в активити меню будут похожи на стрелки)
<!-- Desktop Element 1 using DESKTOP_HOOK_1 -->, потом
<!-- Desktop Element 2 using DESKTOP_HOOK_2 --> и так далее.
Теперь необходимо найти файлы иконок. Нам необходимо 12 x 2 = 24 иконки. Из них двенадцать маленьких (эти иконки будут отображаться в фоновом режиме) и 12 больших (они будут появляться когда мы будем выделять пункт меню). Даем им те названия, которые прописали в файле menu.ml (каждому свое). Поддерживаются иконки *.gif, *.jpg или *.png. После, копируем все эти файлы в папку FS/tpa/preset/system/menu/ на телефоне. Всего, должно быть 25 файлов (24 иконки + menu.ml)
2. Описание остальных возможных вариантов по замене структуры меню.
Java программа из меню, пример на браузере Опера.
Открываем *.jad файл Оперы, видим примерно такое:
Код:
MIDlet-1: Opera Mini, /icon1616.png, com.opera.browser.Browser
MIDlet-Name: Opera Mini
MicroEdition-Configuration: CLDC-1.0
MIDlet-Vendor: Opera Software ASA
MicroEdition-Profile: MIDP-2.0
MIDlet-Jar-URL: opera-mini-1.2.2960-advanced-ru.jar
MIDlet-Version: 1.2
MIDlet-Jar-Size: 102286
MIDlet-Info-URL: http://mini.opera.com/
MIDlet-Install-Notify: http://mini.opera.com/notify/1.2.296...norrisbrage_ru
MIDlet-Description: Opera Mini
MIDlet-Permissions: javax.microedition.io.Connector.http
MIDlet-Permissions-Opt: javax.microedition.io.Connector.sms, javax.wireless.messaging.sms.send, javax.microedition.io.Connector.socket
Content-Folder: Applications
Opera-Anr: -
Ссылка для запуска будет такой:
<link type="java" javasuitename="Opera Mini" javasuitevendor="Opera Software ASA" javasuitepoint="com.opera.browser.Browser"/>
Пример как переделать меню номер два (Интернет услуги), чтобы запускалась Опера:
<!-- Desktop Element 2 using DESKTOP_HOOK_2 -->
<element id="InternetServices">
<label type="name" textid="OLP_TITLE_TXT"/>
<icon pos="unselected" source="file">icon2_unselected.png</icon>
<icon pos="selected" source="file">icon2_selected.png</icon>
<link type="java" javasuitename="Opera Mini" javasuitevendor="Opera Software ASA" javasuitepoint="com.opera.browser.Browser"/>
</element>
Поменяем название меню на свое:
<!-- Desktop Element 1 using DESKTOP_HOOK_1 -->
<element id="PlayNow" replace="next">
<label type="name"><text>Opera</text></label> - замена ведется в этой строчке. Вместо Opera можно вписать всё, что угодно.
<icon pos="unselected" source="file">icon1_unselected.png</icon>
<icon pos="selected" source="file">icon1_selected.png</icon>
<link type="java" javasuitename="Jimm" javasuitevendor="Jimm Project" javasuitepoint="jimm.Jimm"/>
</element>
Имена можно задавать и русскими символами. Для этого сохраните файл в кодировке UTF-8 (можно даже блокнотом).
Как сделать TabMenu (меню вкладками, как меню Настройки)
Структура TabMenu такова:
<menu id="SettingsTabMenuId" layout="TabMenu">
<element id="SettingsTabMenuId">
<label type="name" textid="..."/>
<icon pos="selected" source="internal">...</icon>
<icon pos="unselected" source="internal">...</icon>
<menu id="...">
<element id="...">
<label type="name" textid="..."/>
<icon pos="left" source="internal">...</icon>
<link type="internal"/>
</element>
................
</menu>
</element>
.................
</menu>
1. Вписываем эту структуру, вместо:
<link type="internal"/>
2. Чтобы добавить новую вкладку, добавляем струтуру:
<element id="SettingsTabMenuId">
<label type="name" textid="..."/>
<icon pos="selected" source="internal">...</icon>
<icon pos="unselected" source="internal">...</icon>
<menu id="...">
<element id="...">
<label type="name" textid="..."/>
<icon pos="left" source="internal">...</icon>
<link type="internal"/>
</element>
................
</menu>
</element>
3. Чтобы добавить новый элемент на вкладку, добавляем следующую структуру:
<element id="...">
<label type="name" textid="..."/>
<icon pos="left" source="internal">...</icon>
<link type="internal"/>
</element>
Учтите, что иконки тут меньше по размеру.
Как сделать еще одно меню 3х4 (как главное меню):
Структура меню с layout="DesktopTopMenuGFX2", то есть 3х4 такова:
<element id="...">
<label type="name" textid="..."/>
<icon pos="unselected" source="file">...</icon>
<icon pos="selected" source="file">...</icon>
<menu id="MainMenu" layout="DesktopTopMenuGFX2">
<accelerator>MapToKeypad</accelerator>
<highlight>4</highlight>
<!-- Java Element 1 -->
<element id="...">
<label type="name"><text>...</text></label>
<icon pos="unselected" source="file">...</icon>
<icon pos="selected" source="file">...</icon>
<link type="internal"/>
</element>
...................
</menu>
</element>
1. Вставляем эту структуру вместо одного из элементов главного меню, или куда вам придумается.
2. Чтобы добавить элемент, вставляем эту структуру:
<element id="...">
<label type="name"><text>...</text></label>
<icon pos="unselected" source="file">...</icon>
<icon pos="selected" source="file">...</icon>
<link type="internal"/>
</element>
Спасибо MAxYoung & cuke