| Author |
Message |
diezil
Sony Moderator

Joined: 08 Feb 2008 Posts: 860 Thanks: 167 Thanked 230 Times in 175 Posts
Location: England |
|
Menu Modding |
|
Menu Editing: tpa/preset/system/menu
OK here's a little introduction into Menu Modding, we can change a lot of the phones icons using the menu.ml file (pack Generic menu.ml files attached to this post), to edit the files simply right click and open with notepad
There are a 5 types of menu types but we will just concentrate on the two main menu styles, "DesktopTopMenuGFX2" - This style is the default 3x4 grid menu, "DesktopFullScreen" - This is a full screen menu which also requires you to use a Layout.xml that has the Scroll Bars removed.
(other styles are "DesktopSmall", "DesktopMedium" and "DesktopLarge").
"DesktopTopMenuGFX2" is a 3x4 grid menu that will have two icons per menu item, 1 selected, 1 unselected while "DesktopFullScreen" use 1 full screen image for selected, although the menu.ml file is written in almost the exact same way for both styles with only 1 minor difference, the layout tag.
DesktopTopMenuGFX2
<?xml version="1.0" encoding ="UTF-8" standalone="yes"?>
<ml ver="1.0">
<menu id="Carina_Generic_Id">
<element id="MainMenu">
<menu id="MainMenu" layout="DesktopTopMenuGFX2">>
<accelerator>MapToKeypad</accelerator>
<highlight>4</highlight>
we simply replace the layout tag replacing the "DesktopTopMenuGFX2" with "DesktopFullScreen"
---------------------------------------------------------------------------------
"DesktopFullScreen" menu's use only one full screen icon per menu item.
DesktopFullScreen
<?xml version="1.0" encoding ="UTF-8" standalone="yes"?>
<mml ver="1.0">
<menu id="Carina_Generic_Id">
<element id="MainMenu">
<menu id="MainMenu" layout="DesktopFullScreen">>
<accelerator>MapToKeypad</accelerator>
<highlight>4</highlight>
(NOTE: DesktopFullScreen menu's require you to use a Layout.xml file with the scroll bars removed).
-----------------------------------------------------------------------------------
Elements
Now let’s take a look at the actual menu elements, each menu item is defined as an element with all its information such as icons, text label etc defined between the element tags, we'll be using the Internet Services element as an example, if you have ever worked with xml you should pick this up quite quick
------------------------------------------------------------------------------------
<!-- Desktop Element 2 using DESKTOP_HOOK_2 -->
<element lock="icons" id="InternetServices">
<label type="name" textid="OLP_TITLE_TXT" />
<icon pos="unselected" source="internal">DESKTOP_WAP_ICN</icon>
<icon pos="selected" source="internal">DESKTOP_WAP_SELECTED_ICN</icon>
<link type="internal" />
</element>
------------------------------------------------------------------------------------
OK the above menu element is actually referring to the Internet Services (top row, middle of the main menu), the general principle applies for ALL the elements of the "main menu" and "sub menu" but we'll take a look at the subs also.
I've highlighted the main components you should be looking out for, in green we have the actual menu item <element lock="icons" id="InternetServices"> (HINT: look at the line above <!-- Desktop Element 2 using DESKTOP_HOOK_2 -->, when you see this it means we're at a new "Main Menu" item).....
The two red highlighted text as you can guess states which icon of the Internet Services item we will be changing "selected/unselected", if you look along the line to the highlighted yellow text, this is where the phone will search for the image, "internal" means Main Firmware file which is no good we need to look elsewhere towards the image we want, so change the "internal" so that it says "file" (if you don't edit that then you will get a Configuration Error"....
Now to changing the actual icon, look at the highlighted blue text, that is the name of our icon (which is actually pointing to the image that’s in the main Firmware File, which is no good for us), we need to simply put the name of the new icon there i.e.: icon1_selected.png (you must write the file extension .png), now the phone will look in the "tpa/preset/system/menu" folder for an image by the name of icon1_selected which is in .png format (because its where the menu.ml file is located, but we can tell the phone to look in other places for the images also).
So if we make that section look like this.......
------------------------------------------------------------------------------------
<!-- Desktop Element 2 using DESKTOP_HOOK_2 -->
<element lock="icons" id="InternetServices">
<label type="name" textid="OLP_TITLE_TXT" />
<icon pos="unselected" source="file">Icon1_selected.png</icon>
<icon pos="selected" source="file">Icon1_unselected.png</icon>
<link type="internal" />
</element>>
(NOTE: when making DesktopFullScreen, you should direct both "selected" and "unselected" to the same icon, only one will show, as I said we write them very similar )
<icon pos="unselected" source="file">Icon1_selected.png</icon>
<icon pos="selected" source="file">Icon1_selected.png</icon>
----------------------------------------------------------------------------------------
Now that we have edited the menu item, the phone will now look for an icon called "Icon1_selected.png" for when the cursor is over the "Internet Services" in the Main Menu, and when the cursor is NOT on the Internet services it will display an image called "Icon1_unselected.png" (the phone will search the same folder as the menu.ml file is in.... "tpa/preset/system/menu"
Main Menu headers: (these are the header's for all elements in the "Main Menu" i.e., Phone Book, Media Player, Contacts and so on so you will be able to type into search)
<!-- Desktop Element 1 using DESKTOP_HOOK_1 -->
<!-- Desktop Element 2 using DESKTOP_HOOK_2 -->
<!-- Desktop Element 3 -->
<!-- Desktop Element 4 -->
<!-- Desktop Element 5 -->
<!-- Desktop Element 6 -->
<!-- Desktop Element 7 -->
<!-- Desktop Element 8 -->
<!-- Desktop Element 9 -->
<!-- Desktop Element 10 -->
<!-- Desktop Element 11 -->
<!-- Desktop Element 12 -->
OK that sounds simple until you open your menu.ml file and see how big it is then the confusion starts .....
----------------------------------------------------------------------
Editing Sub Menu Icons:
Now that we know how to change the Main Menu Icons let’s move onto the sub menu's/tab icons:
Entertainment Menu Icons.
Messaging Menu Icons.
Organizer Menu Icons.
Settings Tab Icons.
We'll jump straight to the Entertainment section but this applies for all "Sub Menu Icons and Tab Menu Icons"....
Scroll down the menu.ml file until you reach this section...
---------------------------------------------------------------------------------
<!-- Desktop Element 3 -->
<element lock="icons" id="Entertainment">
<label type="name" textid="MENU_ENTERTAINMENT_TXT" />
<icon pos="unselected" source="internal">DESKTOP_ENTERTAINMENT_ICN</icon>
<icon pos="selected" source="internal">DESKTOP_ENTERTAINMENT_SELECTED_ICN</icon>
<menu id="Menu_Entertainment_Id">
<label type="title" textid="MENU_ENTERTAINMENT_TXT" />
<element id="InfoBrowserDemo">
<label type="name" textid="SEC_DEMO_SK" />
<icon pos="left" source="internal">STOPWATCH_STOPWATCH_MENU_ICN</icon>
<link type="internal" />
</element>
<element id="SimApplicationToolkit">
<label type="name" textid="MENU_SAT_DEFAULT_MAIN_MENU_HEADER_TXT" />
<label type="helptext" textid="MENU_SAT_DEFAULT_MAIN_MENU_HEADER_HLP" />
<icon pos="left" source="internal">MENU_SAT_ICN</icon>
<link type="internal" />
</element>
<element id="FMRadio">
<label type="name" textid="FMR_FM_RADIO_TXT" />
<icon pos="left" source="internal">ENTERTAINMENT_MENU_RADIO_ICN</icon>
<link type="internal" />
</element>
<element id="Games">
<label type="name" textid="DB_GAMES_TXT" />
<icon pos="left" source="internal">ENTERTAINMENT_MENU_GAMES_ICN</icon>
<link type="internal" />
</element>
<element id="MusicRecognition">
<label type="name" textid="MENU_TID_TRACKID_TXT" />
<label type="helptext" textid="TID_START_MUSIC_RECOGNITION_HLP" />
<icon pos="left" source="internal">TID_LIST_ICN</icon>
<link type="internal" />
</element>
<element id="MediaPlayer_Video">
<label type="name" textid="MENU_VIDEO_PLAYER_TXT" />
<icon pos="left" source="internal">ENTERTAINMENT_MENU_VIDEO_PLAYER_ICN</icon>
<link type="internal" />
</element>
<element id="VideoDJ">
<label type="name" textid="MENU_VIDEO_EDITOR_TXT" />
<icon pos="left" source="internal">ENTERTAINMENT_MENU_VIDEOEDITOR_ICN</icon>
<link type="internal" />
</element>
<element id="PictureEditor">
<label type="name" textid="MENU_PICTURE_EDITOR_TXT" />
<icon pos="left" source="internal">ENTERTAINMENT_MENU_PICTUREEDITOR_ICN</icon>
<link type="internal" />
</element>
<element id="MidiComposer">
<label type="name" textid="MENU_SUBPROJECT_MIDI_COMPOSER_TXT" />
<icon pos="left" source="internal">ENTERTAINMENT_MENU_MIDI_COMP_ICN</icon>
<link type="internal" />
</element>
<element id="MenuItem_Bt_HID">
<label type="name" textid="MENU_BT_REMOTE_CONTROL_TXT" />
<label type="helptext" textid="MENU_BT_REMOTE_CONTROL_HLP" />
<icon pos="left" source="internal">MENU_BT_REMOTE_CONTROL_ICN</icon>
<link type="internal" />
</element>
<element id="SoundRecorder">
<label type="name" textid="MENU_VOICE_MEMO_TXT" />
<label type="helptext" textid="MENU_VOICE_MEMO_HLP" />
<icon pos="left" source="internal">ENTERTAINMENT_MENU_SOUNDRECORDER_ICN</icon>
<link type="internal" />
</element>
<element id="DemoMode_Id">
<label type="name" textid="MENU_PROMOTION_VIDEO_TXT" />
<label type="helptext" textid="MENU_PROMOTION_VIDEO_HLP" />
<label type="unavailable" textid="MENU_PROMOTION_VIDEO_NOT_AVAILABLE_TXT" />
<icon pos="left" source="internal">ENTERTAINMENT_MENU_DEMOTOUR_ICN</icon>
<link type="internal" />
</element>
---------------------------------------------------------------------------------------
And that’s what the Entertainment Sub Menu looks like .
Apply the same rules for changing the Sub Menu icons as you did when editing the Main Menu Icons (look at the highlighted colours for hints, as there coloured in the same way )
Should be noted that I've only pasted the relevant sections of the Sub Menu (the top half of it), it is actually double the size but that is the only part of it we need to look at and edit.
You can also rearrange the menu elements to arrange your menu in your own way to suit your personal preference (just copy and paste the WHOLE menu element to where you want it ).
HINT: delete this element "<element id="DemoMode_Id">" to remove the Demo Tour Video link in the Entertainment menu (With some phones, if you delete the video from the videos section of your phone this item will be greyed out and it becomes a cluttered space.... It's always the first menu.ml edit I do lol).
You may notice I've also highlighted a string in orange, with a bit of practice with menu.ml editing you can use this to create your own Sub Menu's.....
----------------------------------------------------------------------------------
Editing Names:
We can also change the name displayed by editing the elements "label type" string to look like this: (just in case you want to change the name of the Media Player to Walkman or whatever you want it to be named
<!-- Desktop Element 6 -->
<element id="MediaPlayer">
<label type="name"><text>Walkman</text></label>
<icon pos="unselected" source="internal">MEDIAPLAYER_DESKTOP_ICN</icon>
<icon pos="selected" source="internal">MEDIAPLAYER_DESKTOP_SELECTED_ICN</icon>
<icon pos="shortcut" source="internal">RN_SHORTCUT_LIST_MEDIAPLAYER_ICN</icon>
<link type="internal"/>
</element>
---------------------------------------------------------------------------
We can also link java applications to menu items or sub menu items
Adding Java elements:
To do this we need to edit the "link" string to look a little like this......
<element id="InternetServices">
<label type="name"><text>Opera Mini</text></label>
<icon pos="selected" source="file">icon2_selected.gif</icon>
<icon pos="unselected" source="file">icon2_selected.gif</icon>
<link type="java" javasuitename="Opera Mini" javasuitevendor="Opera Software ASA" javasuitepoint="Browser"/>
</element>
Take note as these MUST be taken from the application you want to use:
Lets break the link string up into 4 catagaries.
<link type="java"
javasuitename="Opera Mini"
javasuitevendor="Opera Software ASA"
javasuitepoint="Browser"/>
To obtain these little pieces of info we need a "JAD" for our application (you can use Jad Maker to extract the jad file from your jar file, or take a look in one of the "General Usage - jdflasher" threads in the DB2010 or DB2020 section and download EQHalmer ).
once you have your "JAD" file we need to open it up using notepad and we'll have something like this......
------------------------------------------------------------------------
Manifest-Version: 1.0
MIDlet-Name: Opera Mini
MIDlet-1: Opera Mini, /i.png, Browser
MIDlet-Data-Size: 25600
MicroEdition-Configuration: CLDC-1.0
MIDlet-Icon: /i.png
MIDlet-Vendor: Opera Software ASA
MIDlet-Version: 4.0
MicroEdition-Profile: MIDP-2.0
-------------------------------------------------------------------------------
<link type="java": this section tells the phone we will be using Java for the menu item.
javasuitename="Opera Mini": this piece of info is taken from the Midlet Name: string (MUST be the same name as in the jad file)
javasuitevendor="Opera Software ASA" This is taken from the Midlet Vendor: string, (MUST be the same as in the jad file).
javasuitepoint="Browser"/>: This is the first java class file that’s used to boot up the java application, this will ALWAYS be at the end of Midlet-1: string, it might sometimes have a few folder names before it but we don't care about those, even if the start file was com.opera.browser we still only use the browser name in the tag as that is the name of the starting file,
-------------------------------------------------------------------------------
Also ONE bad typo will cause a "Dynamic Menu Error... Please Contact Your Service Provider" so take your time and triple check everything.... if you get the error re’upload the default Menu.ml file to fix it or fix your edited Menu.ml file..... (Can be a long and confusing process, but it does get easier)
This method is also advised by me for people that are using sysgfx patches for the K750/W800/W810 and so on, as it will help A LOT towards the heap memory bugs that can cause so many problems as you can seriously reduce the amount of icons that you need to you use with sysgfx patch.....
You can also create your own sub menu's with a little practice (HINT look at the Entertainment or messaging element's......... you can also use DesktopFullScreen styles as sub menu's with a little practice, but the best way to learn is by digging into the menu.ml files with notepad and experimenting, also some basic xml skills would help but are not really a must ).
GOOD LUCK!!!
------------------------------------------------------------------------------
If you create DesktopFullScreen menu you'll need to edit the Layout.xml file to remove scroll bars or you’ll have one to the right in the main menu, you can do this by opening the layout up with notepad and edit this string like this...... (Use the Find feature of notepad to take you straight to the string).
------------------------------------------------------------------------------
objct name="ListObject"
settings
sett name="TitleMode" value="32767"/
sett name="ScrollBarMode" value="2"/
sett name="YPos" value="32766"/
settings
change the red value to 0 ( 2 --> 0 )
--------------------------------------------------------------------------------
Attached Menu.ml Mega Pack containing default Menu.ml files from the following phones that you can use for creating your own menu, if you do have a mess around and experiment with editing the menu.ml and something goes wrong and you get a dynamic menu error, simply upload the default menu.ml file for your phone and will fix the error and revert it back to Generic state
Menu Files contained in pack:
K-Series: K310/K320/K510/K610/K750/K790/K800/K810
T-Series: T650
W-Series: W200/W300/W550/W600/W610/W660/W710/W800/W850/W880/W900
Z-Series: Z520/Z530/Z550/Z610/Z770
Also attataching PSP Menu as an example of a DesktopFullScreen menu, and Light Trace as an example of a DesktopTopMenuGFX2 menu, both are for the K800 so maybe you could try your hand at editing the menu.ml file if you have another model (only 240x320 screen size phones).
_________________
|
|
| Fri Mar 21, 2008 12:50 pm |
|
|
 |
|
|
 |
Maverick
They call me ADMIN with love!!


Joined: 24 Oct 2006 Posts: 7984 Thanks: 837 Thanked 744 Times in 623 Posts
Location: 0° E, 90° N |
|
|
|

_________________ I hate people using too many abbreviations.
If you do use them, imagine that your name is Alistair Stephen Stanley. Now abbreviate that. Thats you! |
|
| Sat Mar 22, 2008 10:55 pm |
|
 |
eRajesh
Envy my cell!!

Joined: 20 Sep 2007 Posts: 372 Thanks: 9 Thanked 34 Times in 28 Posts
Location: Kolkata |
|
|
|
Awesome work dude!
_________________
 |
|
| Sun Mar 23, 2008 12:54 am |
|
 |
diezil
Sony Moderator

Joined: 08 Feb 2008 Posts: 860 Thanks: 167 Thanked 230 Times in 175 Posts
Location: England |
|
|
|
Do you think its nOObie freindly my fingers were so sore after typing it out, it changed about 30 times with trying put it in the simplest way possible, and still I think alot of people will get confused at first 
_________________
|
|
| Sun Mar 23, 2008 6:36 am |
|
 |
Farrukh_89
like.no.other
Joined: 24 Jun 2007 Posts: 383 Thanks: 70 Thanked 73 Times in 53 Posts
|
|
|
|
it is noob friendly
lets test it shall we
posted the link in db2020 forums lets see if the dude gets it 
_________________
 |
|
| Sun Mar 23, 2008 7:02 pm |
|
 |
devmeena
Super Moderator

Joined: 03 Dec 2006 Posts: 2620 Thanks: 320 Thanked 255 Times in 201 Posts
Location: india |
|
|
|
my god on first view this guide looks like a geeky programmer from google's work
|
|
| Sun Mar 23, 2008 7:20 pm |
|
 |
Maverick
They call me ADMIN with love!!


Joined: 24 Oct 2006 Posts: 7984 Thanks: 837 Thanked 744 Times in 623 Posts
Location: 0° E, 90° N |
|
|
|
It was really useful for me. Am making the menu editing software (just for fun). Was thinking of asking diezil a couple of things i didn't understand in a menu.ml....but this surely clears them up!
_________________ I hate people using too many abbreviations.
If you do use them, imagine that your name is Alistair Stephen Stanley. Now abbreviate that. Thats you! |
|
| Sun Mar 23, 2008 10:00 pm |
|
 |
diezil
Sony Moderator

Joined: 08 Feb 2008 Posts: 860 Thanks: 167 Thanked 230 Times in 175 Posts
Location: England |
|
|
|
Well if there is anything else you need help with in the menu.ml just say the word
I'll probably add to it with how to create extra sub menu's (in detail) but I didn't think that was as important as getting the basics up
@devmeena... hahaha 
_________________
|
|
| Sun Mar 23, 2008 11:23 pm |
|
 |
Maverick
They call me ADMIN with love!!


Joined: 24 Oct 2006 Posts: 7984 Thanks: 837 Thanked 744 Times in 623 Posts
Location: 0° E, 90° N |
|
|
|
Submenus are messing with my head....since I am having to incorporate a ton of things due to them in a loop which would otherwise be very simple!! (actually I am not using any ActiveX to parse the xml, using complete string operations....its fun but a lot tougher too!)
_________________ I hate people using too many abbreviations.
If you do use them, imagine that your name is Alistair Stephen Stanley. Now abbreviate that. Thats you! |
|
| Mon Mar 24, 2008 3:16 am |
|
 |
diezil
Sony Moderator

Joined: 08 Feb 2008 Posts: 860 Thanks: 167 Thanked 230 Times in 175 Posts
Location: England |
|
|
|
 |
 |
Submenus are messing with my head....since I am having to incorporate a ton of things due to them in a loop which would otherwise be very simple!! (actually I am not using any ActiveX to parse the xml, using complete string operations....its fun but a lot tougher too!) |
Maybe this help you a little
MenuEditer 0.0.3 source code (Visual Basic I belive can you tell I don't do C++ lol...).
Also packed the Menu Editor itself in there to
I cannot get to grips with it myself (although I only played around with it for 10 minutes), still prefer to just dive in with good old NotePad lol.
_________________
|
|
| Mon Mar 24, 2008 4:43 am |
|
 |
delta
I shall learn and conquer!

Joined: 21 Sep 2007 Posts: 30 Thanks: 2 Thanked 3 Times in 3 Posts
|
|
|
|
nice tutorial dude...helpful... was a lil confusin at frst...wen i read em again n again it turned out to b simple
|
|
| Mon Apr 14, 2008 9:10 pm |
|
 |
Maverick
They call me ADMIN with love!!


Joined: 24 Oct 2006 Posts: 7984 Thanks: 837 Thanked 744 Times in 623 Posts
Location: 0° E, 90° N |
|
|
|
So when are we getting some new menus from you delta? 
_________________ I hate people using too many abbreviations.
If you do use them, imagine that your name is Alistair Stephen Stanley. Now abbreviate that. Thats you! |
|
| Sat Apr 19, 2008 12:47 am |
|
 |
WizaJ
Carpe Universum

Joined: 19 Mar 2008 Posts: 34 Thanks: 2 Thanked 16 Times in 12 Posts
Location: Sudentor, North Belka |
|
|
|
I'm a complete idiot and it worked for me! 
_________________ /span> |
|
| Fri May 02, 2008 1:34 am |
|
 |
Aravind
See my phone in the next Matrix movie!

Joined: 11 Dec 2006 Posts: 800 Thanks: 69 Thanked 90 Times in 63 Posts
|
|
|
|
Finally understood!! lol!
_________________
 |
|
| Fri Sep 05, 2008 9:39 pm |
|
 |
purplefrozt
I shall learn and conquer!


Joined: 28 Jul 2008 Posts: 12 Thanks: 0 Thanked 0 Times in 0 Posts
|
|
|
|
question to diezil,
i trying to change the tab/simple menu's of the following
Entertainment Menu Icons.
Messaging Menu Icons.
Organizer Menu Icons.
Settings Tab Icons.
to a DesktopTopMenuGFX2/DesktopTopMenuGFX1
it works but and a error is appearing every time i open the menu from standby, its says = dynamicmenuerror. but all the icons and function is working properly. can't seem to get whats the error....
pls help.. thnx 
_________________ "A curve that sets things straight." |
|
| Wed Oct 08, 2008 12:51 am |
|
 |
|
|
|