<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.webos-internals.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DSouljah</id>
	<title>WebOS Internals - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.webos-internals.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DSouljah"/>
	<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/wiki/Special:Contributions/DSouljah"/>
	<updated>2026-04-20T11:56:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Portal:Patches_to_webOS&amp;diff=3267</id>
		<title>Portal:Patches to webOS</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Portal:Patches_to_webOS&amp;diff=3267"/>
		<updated>2009-07-31T14:59:07Z</updated>

		<summary type="html">&lt;p&gt;DSouljah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__notoc__&lt;br /&gt;
{{portal-header&lt;br /&gt;
|This page lists patches to webOS existing apps which modify the behavior as shipped.  '''Note''' that these patches may be version specific and may be broken by future webOS updates.  Proceed with caution. If you get one that works please move it under the correct column and section.&lt;br /&gt;
}}&lt;br /&gt;
This page is undergoing structuring please contribute moving or adding new entries under the appropriate headings. For now put pages in alphabetical order. Each page should contain at least the basic headings&lt;br /&gt;
*1. '''Introduction''': A brief description to introduce people to the patch.&lt;br /&gt;
**1.1 '''Usage''':An explanation if it is needed on how to use the modification see Add/Delete Pages in the Launcher as an example.&lt;br /&gt;
*2. '''Editing Process''': Step by step instructions to manually edit. &lt;br /&gt;
*3. '''Patching Process''': Details for making the edits with a patch file and pointing people to the [[Applying Patches]] page if the patch is also provided in the webos-internals gitorious repository.&lt;br /&gt;
&lt;br /&gt;
{{portal-three-columns&lt;br /&gt;
|column1= &lt;br /&gt;
===webOS Update Information===&lt;br /&gt;
* [[Update 1.1.0|Update 1.1]]&lt;br /&gt;
* [[Update 1.0.4|Update 1.0.4]] &lt;br /&gt;
* [[Update 1.0.3|Update 1.0.3]]&lt;br /&gt;
&lt;br /&gt;
===Patches that Need Work===&lt;br /&gt;
* [[Bugs]]&lt;br /&gt;
&lt;br /&gt;
|column2=&lt;br /&gt;
===Patch Ideas to be Created or in Progress===&lt;br /&gt;
&lt;br /&gt;
* [[Add_Ability_To_Choose_Snooze_Length|Add Ability to Choose Snooze Length]]&lt;br /&gt;
* [[Changing_clipboard_data_from_the_shell|Changing Clipboard Data from the Shell]]&lt;br /&gt;
* [[Development_%26_Tweak_Ideas | Development &amp;amp; Tweaking Ideas]]&lt;br /&gt;
* [[Longer Vibrate|Longer Vibrate]]&lt;br /&gt;
&lt;br /&gt;
|column3=&lt;br /&gt;
===Notes===&lt;br /&gt;
These modifications lack a patch process, please add one to the details to the page and have it added to the webOS-internals gitorious repository. Info for the repository is on [[Applying Patches]].&lt;br /&gt;
&lt;br /&gt;
*Empty&lt;br /&gt;
}}&lt;br /&gt;
{{portal-three-columns&lt;br /&gt;
|column1= &lt;br /&gt;
==Patches to webOS apps==&lt;br /&gt;
===webOS 1.1 OK===&lt;br /&gt;
&lt;br /&gt;
* [[Always_Show_Details_of_New_Tasks|Always Show Details of New Tasks]]&lt;br /&gt;
* [[Patch Browser Global Search Addons|Browser: Global Search Addons]]&lt;br /&gt;
* [[Bookmarking_MediaPlayer|Bookmarking MediaPlayer]]&lt;br /&gt;
* [[Boot_Themes|Boot Themes]]&lt;br /&gt;
* [[Camera Mod Shutter Sound On-Off Button]]&lt;br /&gt;
* [[Camera Mod 10 Second Countdown Timer]]&lt;br /&gt;
* [[Confirm Deletion on Email|Confirm Deletion on Email]]&lt;br /&gt;
* [[Patch Email Change Default Font for Replies-Forwards from Navy to Black|Email: Change Default Font for Replies/Forwards from Navy to Black]]&lt;br /&gt;
* [[GPS Tracking|GPS Tracking]]&lt;br /&gt;
* [[Patch Launcher Add or Delete Pages|Launcher: Add/Delete Pages]]&lt;br /&gt;
* [[Patch Launcher Hide-Delete The NASCAR App|Launcher: Hide/Delete The NASCAR App]]&lt;br /&gt;
* [[Patch Launcher Unhide the DeveloperMode App|Launcher: Unhide the DeveloperMode App]]&lt;br /&gt;
* [[Patch Messaging Character Counter|Messaging: Character Counter]]&lt;br /&gt;
* [[Patch Messaging Forward Messages|Messaging: Forward Messages]]&lt;br /&gt;
* [[Patch Messaging New Cards For Each Conversation|Messaging: New Cards For Each Conversation]]&lt;br /&gt;
* [[Patch Phone Edit Dialer Theme|Phone: Edit Dialer Theme]]&lt;br /&gt;
* [[Using Volume Buttons to Take a Picture|Using Volume Buttons to Take a Picture]]&lt;br /&gt;
* [[Turn Off Missed Call Sound|Turn Off Missed Call Sound]] '''Who verified this because didn't work for me on 1.1'''&lt;br /&gt;
* [[Disable_dropped_call_sound|Disable Dropped Call Sound]]&lt;br /&gt;
* [[Changing the Dialer Background Image|Changing the Dialer Background Image]]&lt;br /&gt;
* [[Changing Alarm Clock Button Order and Snooze Duration]]&lt;br /&gt;
* [[Download Amazon Music over EVDO]]&lt;br /&gt;
* [[Change_Running_Late_Email|Change &amp;quot;Running Late&amp;quot; Email]]&lt;br /&gt;
&lt;br /&gt;
===Fixed in 1.1 - No longer needed===&lt;br /&gt;
* [[Patch Email Fix Broken Formatting|Email: Fix Broken Formatting for E-mails]]&lt;br /&gt;
&lt;br /&gt;
===Not 1.1 compatible===&lt;br /&gt;
* [[Camera_Remote_View|Camera Remote View]]&lt;br /&gt;
* [[Downloading From The Browser|Downloading From The Browser]] &lt;br /&gt;
* [[Enable Landscape Viewing in Email|Enable Landscape Viewing in Email]] &lt;br /&gt;
* [[Fix Email Attachments|Fix Email Attachments]] &lt;br /&gt;
&lt;br /&gt;
|column2=&lt;br /&gt;
==Patches not part of a specific app==&lt;br /&gt;
===webOS 1.1 OK===&lt;br /&gt;
* [[Brightness]]&lt;br /&gt;
* [[Bypassing_Activation|Bypassing Activation]]&lt;br /&gt;
* [[Change_Carrier_String|Change Carrier String]]&lt;br /&gt;
* [[Changing_the_%22Turn_off_after_X%22_time|Changing the &amp;quot;Turn off after X&amp;quot; Time]]&lt;br /&gt;
* [[CPU Frequency or Voltage Scaling|CPU Frequency or Voltage Scaling]]&lt;br /&gt;
* [[Disable Charging Event Alerts Sounds|Disable Charging Event Alerts Sounds]]&lt;br /&gt;
* [[Graphics]]&lt;br /&gt;
* [[Logging information from within scripts|Logging information from within scripts]]&lt;br /&gt;
* [[Message Sound|Message Sound]]&lt;br /&gt;
* [[Modifying a Stock App While Keeping the Original|Modifying a Stock App While Keeping the Original]] &lt;br /&gt;
* [[Add_Words_to_AutoCorrect_Dictionary|Modify AutoCorrect Dictionary]]&lt;br /&gt;
* [[Radio_Power_Switch|Phone On/Off Switch]]&lt;br /&gt;
* [[Random Wallpaper Switching|Random Wallpaper Switching]]&lt;br /&gt;
* [[Reverse Tunnel|Reverse Tunnel]] &lt;br /&gt;
* [[Roam Control|Roam Control]]&lt;br /&gt;
* [[Show_Actual_Battery_Percent | Show Actual Battery Percentage]]&lt;br /&gt;
&lt;br /&gt;
===Fixed in 1.1 - No longer needed===&lt;br /&gt;
* Empty&lt;br /&gt;
&lt;br /&gt;
===Not 1.1 compatible===&lt;br /&gt;
* [[Email App Patch to Prompt for IPK Installation|Email App Patch to Prompt for IPK Installation]] &lt;br /&gt;
&lt;br /&gt;
|column3=&lt;br /&gt;
==== The following have not been checked for compatibility with webOS 1.1. ====&lt;br /&gt;
&lt;br /&gt;
* [[Adding Timestamps to All Received Messages]]&lt;br /&gt;
* [[Browser_Plugins|Browser Plugins]]&lt;br /&gt;
* [[Camera Mod Alternate Sound Disable]]&lt;br /&gt;
* [[Change_Enter_To_Create_Newline_Instead_of_Send_Message|Change Enter to Create Newline Instead of Send Message]]&lt;br /&gt;
* [[Change_the_default_notification.wav_Sound|Change the Default notification.wav Sound]]&lt;br /&gt;
* [[Changes_Alert/Notification_Sounds|Changes Alert/Notification Sounds]]&lt;br /&gt;
* [[Patch Clock Enabling the Hidden Theme|Clock: Enabling the Hidden Theme]]&lt;br /&gt;
* [[Display_Full_Status_Messages(Messenger)|Display Full Status Messages(Messenger)]] &lt;br /&gt;
* [[Hourly Chime|Hourly Chime]] &lt;br /&gt;
* [[Ignore 'A', 'An', and 'The' In Artist and Album names|Ignore 'A', 'An', and 'The' In Artist and Album names]] &lt;br /&gt;
* [[Installing Homebrew Apps With A Rooted Pre|Installing Homebrew Apps With A Linux Accessed Pre]]  &lt;br /&gt;
* [[Keep Phone From Entering Standby While in Remote Session]]&lt;br /&gt;
* [[Patch MCraig Enabling Personals Category|mCraig: Enabling Personals Category]]&lt;br /&gt;
* [[Messaging Mod Force Offline Send Without Dialog]]&lt;br /&gt;
* [[Modifying Stock Applications|Modifying Stock Applications]] &lt;br /&gt;
* [[My notification|My notification]] &lt;br /&gt;
* [[Packaging Homebrew Apps for Stock Pre without Rooting|Packaging Homebrew Apps for Stock Pre without Accessing Linux]] &lt;br /&gt;
* [[Myavatar In Messaging App|Myavatar In Messaging App]] &lt;br /&gt;
* [[Patch PDF Viewer|PDF Viewer]]&lt;br /&gt;
* [[Photos Slideshow|Photos Slideshow]] &lt;br /&gt;
* [[Screenlock On When Connected|Stay On While Connected]]&lt;br /&gt;
* [[Show allday events in calendar month view]] &lt;br /&gt;
* [[Show Call Duration in the Call Log]] &lt;br /&gt;
* [[Patch Sudoku Disable Zooming|Sudoku: Disable Zooming]]&lt;br /&gt;
* [[Turning Off Dialpad Noise]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>DSouljah</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Messaging_Sounds&amp;diff=2670</id>
		<title>Patch Messaging Sounds</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Messaging_Sounds&amp;diff=2670"/>
		<updated>2009-07-27T14:50:33Z</updated>

		<summary type="html">&lt;p&gt;DSouljah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Description:''' This mod will allow you to specify the sound played on an incoming message, distinct from the alert and notification sounds.&lt;br /&gt;
&lt;br /&gt;
'''History:''' This is based //heavily// on the '''[[alerts-from-usb |Sounds and Alerts Program Modification]]''' by Kaerey.  The three steps of this mod are replics of the three steps in that mod, adding &amp;quot;messages&amp;quot; to &amp;quot;alerts&amp;quot; and &amp;quot;notifications&amp;quot;.  It is recommended, though not necessary, that you do that mod first.  Throughout these instructions, I will refer to that mod as the &amp;quot;Sounds and Alerts Mod&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Disclaimer:''' This is very involved.  I //highly// recommend that you back up every file before you change it.&lt;br /&gt;
&lt;br /&gt;
'''Short Cut:''' If you are using [http://forums.precentral.net/homebrew-apps/188729-my-notification-no-rooting-needed.html My Notification] then you can skip to step 4. The function under the Advanced Options of the app can be used to select your message sound. And you do not need to edit the Sounds and Alerts Program&lt;br /&gt;
&lt;br /&gt;
= Step One: Modify the Sounds and Alerts Program to add the new fields=&lt;br /&gt;
&lt;br /&gt;
Back up and modify /usr/palm/applications/com.palm.app.soundsandalerts/app/views/soundsalertsconfig/soundsalertsconfig-scene.html&lt;br /&gt;
&lt;br /&gt;
Between lines 50 and 51 (or immediately after the changes made in Step 1 of the Sounds and Alerts Mod)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;div id='currentmessagerow' class=&amp;quot;palm-row&amp;quot; x-mojo-tap-highlight=&amp;quot;momentary&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;palm-row-wrapper&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;label&amp;quot; x-mojo-loc=''&amp;gt;Message&amp;lt;/div&amp;gt;&lt;br /&gt;
                    &amp;lt;div id='currentmessage' class=&amp;quot;title&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;                    &lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
             &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Step Two: Create the database calls=&lt;br /&gt;
&lt;br /&gt;
Back up and modify /usr/palm/applications/com.palm.app.soundsandalerts/app/models/SystemService.js&lt;br /&gt;
&lt;br /&gt;
Find the Section of Code that deals with getRingtone and setRingtone starting on line 9:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
SystemService.setRingtone = function(value,callback) {&lt;br /&gt;
&lt;br /&gt;
    var request = new Mojo.Service.Request(SystemService.identifier, {&lt;br /&gt;
            method: 'setPreferences',&lt;br /&gt;
            parameters: {&amp;quot;ringtone&amp;quot;:value},             &lt;br /&gt;
        });&lt;br /&gt;
    return request;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SystemService.getRingtone = function(callback) {&lt;br /&gt;
&lt;br /&gt;
    var request = new Mojo.Service.Request(SystemService.identifier, {&lt;br /&gt;
            method: 'getPreferences',&lt;br /&gt;
            parameters: {&amp;quot;keys&amp;quot;:[&amp;quot;ringtone&amp;quot;],&amp;quot;subscribe&amp;quot;:true}, &lt;br /&gt;
            onSuccess: callback,&lt;br /&gt;
            onFailure: callback&lt;br /&gt;
        });&lt;br /&gt;
    return request;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
We are going to create a like section for Messages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
SystemService.getMessages = function(callback) {&lt;br /&gt;
    var request = new Mojo.Service.Request(SystemService.identifier, {&lt;br /&gt;
            method: 'getPreferences',&lt;br /&gt;
            parameters: {&amp;quot;keys&amp;quot;:[&amp;quot;messagetone&amp;quot;]},&lt;br /&gt;
            onSuccess: callback,&lt;br /&gt;
            onFailure: callback&lt;br /&gt;
        });&lt;br /&gt;
    return request;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SystemService.setMessages = function(value){&lt;br /&gt;
    var request = new Mojo.Service.Request(SystemService.identifier, {&lt;br /&gt;
            method: 'setPreferences',&lt;br /&gt;
            parameters: {&amp;quot;messagetone&amp;quot;:value},&lt;br /&gt;
        });&lt;br /&gt;
    return request;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Step Three: Create the handlers for the new components=&lt;br /&gt;
&lt;br /&gt;
Back up and modify /usr/palm/applications/com.palm.app.soundsandalerts/app/controllers/soundsalertsconfig-assistant.js&lt;br /&gt;
&lt;br /&gt;
At line 81, you will see:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$('currentringtonerow').observe(Mojo.Event.tap, this.showAudioFilePicker.bindAsEventListener(this));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create an entry for Messages, either after the line above, or after the additions to this section made in Step 3 of the Sounds and Alerts Mod:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$('currentmessagerow').observe(Mojo.Event.tap, this.showMessageFilePicker.bindAsEventListener(this));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below that section you will see:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
this.getCurrentVolumes();&lt;br /&gt;
this.getCurrentRingtone();&lt;br /&gt;
this.getVibrateSettings();    &lt;br /&gt;
this.getOtherSettings();&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a line for Messages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
this.getCurrentMessage();&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Find the Code near line 215:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
getCurrentRingtone: function() {&lt;br /&gt;
        this.getCurrentRingtoneReq = SystemService.getRingtone(this.getCurrentRingtoneQuery.bind(this));&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    getCurrentRingtoneQuery: function(payload) {        &lt;br /&gt;
        if (payload.ringtone) {&lt;br /&gt;
            $('currentringtone').innerHTML = payload.ringtone.name;&lt;br /&gt;
            this.currRingtonePath = payload.ringtone.fullPath;    &lt;br /&gt;
        }&lt;br /&gt;
        else &lt;br /&gt;
            $('currentringtone').innerHTML = $L(&amp;quot;Pick a ringtone&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    showAudioFilePicker: function(event) {&lt;br /&gt;
        var params = {&amp;quot;kinds&amp;quot;: [&amp;quot;ringtone&amp;quot;],&amp;quot;filePath&amp;quot;:this.currRingtonePath,&amp;quot;onSelect&amp;quot;:this.selectedAudioFile.bind(this),actionType:&amp;quot;attach&amp;quot;,actionName: $L(&amp;quot;Done&amp;quot;)};&lt;br /&gt;
        Mojo.FilePicker.pickFile(params,Mojo.Controller.stageController);&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    selectedAudioFile: function(file) {        &lt;br /&gt;
        //var params = {&amp;quot;fullPath&amp;quot;: encodeURIComponent(file.fullPath), &amp;quot;name&amp;quot;:file.name};&lt;br /&gt;
        this.setRingtoneReq = SystemService.setRingtone(file);&lt;br /&gt;
        $('currentringtone').innerHTML = file.name;&lt;br /&gt;
    },&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add this code for Messages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
// Message Picking&lt;br /&gt;
    getCurrentMessage: function() {&lt;br /&gt;
        this.getCurrentMessageReq = SystemService.getMessages(this.getCurrentMessageQuery.bind(this));&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    getCurrentMessageQuery: function(payload) {        &lt;br /&gt;
        if (payload.messagetone) {&lt;br /&gt;
            $('currentmessage').innerHTML = payload.messagetone.name;&lt;br /&gt;
            this.currMessagePath = payload.messagetone.fullPath;    &lt;br /&gt;
        }&lt;br /&gt;
        else &lt;br /&gt;
            $('currentmessage').innerHTML = $L(&amp;quot;Pick a message sound&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    showMessageFilePicker: function(event) {&lt;br /&gt;
        var params = {&amp;quot;kinds&amp;quot;: [&amp;quot;ringtone&amp;quot;],&amp;quot;filePath&amp;quot;:this.currMessagePath,&amp;quot;onSelect&amp;quot;:this.selectedMessageFile.bind(this),actionType:&amp;quot;attach&amp;quot;,actionName: $L(&amp;quot;Done&amp;quot;)};&lt;br /&gt;
        Mojo.FilePicker.pickFile(params,Mojo.Controller.stageController);&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    selectedMessageFile: function(file) {        &lt;br /&gt;
        //var params = {&amp;quot;fullPath&amp;quot;: encodeURIComponent(file.fullPath), &amp;quot;name&amp;quot;:file.name};&lt;br /&gt;
        this.setMessageReq = SystemService.setMessages(file);&lt;br /&gt;
        $('currentmessage').innerHTML = file.name;&lt;br /&gt;
    },&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Step Four: Add the database call to the Messages Application=&lt;br /&gt;
&lt;br /&gt;
Back up and modify /usr/palm/applications/com.palm.app.messaging/app/models/messaging-luna-service.js&lt;br /&gt;
&lt;br /&gt;
After line 7, add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
  getMessagetone:  function(callback) {&lt;br /&gt;
        var request = new Mojo.Service.Request('palm://com.palm.systemservice', {&lt;br /&gt;
                method: 'getPreferences',&lt;br /&gt;
                parameters: {&amp;quot;keys&amp;quot;:[&amp;quot;messagetone&amp;quot;]},&lt;br /&gt;
                onSuccess: callback,&lt;br /&gt;
                onFailure: callback&lt;br /&gt;
         });&lt;br /&gt;
        return request;&lt;br /&gt;
  },&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Step Five: Have the Message Application play the sound from the database=&lt;br /&gt;
&lt;br /&gt;
Back up and modify /usr/palm/applications/com.palm.app.messaging/app/controllers/notification-assistant.js&lt;br /&gt;
&lt;br /&gt;
Below line 44 (just above the &amp;lt;ReminderCode&amp;gt; comment block), add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
NotificationAssistant.prototype.getandPlayMessagetone = function(bannerParams,bannerLaunchParams,bannerType){&lt;br /&gt;
	MessagingMojoService.getMessagetone(this.doBanner.bind(this,bannerParams,bannerLaunchParams,bannerType));&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
NotificationAssistant.prototype.doBanner = function(bannerParams,bannerLaunchParams,bannerType,payload) {&lt;br /&gt;
        if (payload.messagetone)&lt;br /&gt;
                bannerParams.soundFile = payload.messagetone.fullPath;&lt;br /&gt;
        this.controller.showBanner(bannerParams,bannerLaunchParams,bannerType);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
NotificationAssistant.prototype.playMessagetone = function(payload){&lt;br /&gt;
        if (payload.messagetone)&lt;br /&gt;
                this.controller.playSoundNotification('alerts',payload.messagetone.fullPath);&lt;br /&gt;
        else&lt;br /&gt;
		this.controller.playSoundNotification('alerts','');&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the next function, '''NotificationAssistant.prototype.sendReminderNotification''', find the block of code: &lt;br /&gt;
&lt;br /&gt;
WARNING: this code doesn't reflect webOS 1.1 - The section of code &amp;quot;this.controller.showBanner(bannerParams,bannerLaunchParams,'reminder'&amp;quot; is now in a if statement checking of the display is on!  &lt;br /&gt;
&lt;br /&gt;
Work around is to change that same code in the if statement to &amp;quot;this.getandPlayMessagetone(bannerParams,bannerLaunchParams,'reminder');&amp;quot; and the else statement call &amp;quot;MessagingMojoService.getMessagetone(this.playMessagetone.bind(this));&amp;quot; which worked for me.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
        var bannerLaunchParams =  {&lt;br /&gt;
                reminderPersonId: resp.personId,&lt;br /&gt;
                clearBanner: true&lt;br /&gt;
        };&lt;br /&gt;
        this.controller.showBanner(bannerParams,bannerLaunchParams,'reminder');&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Change that to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
	var bannerLaunchParams =  {&lt;br /&gt;
                reminderPersonId: resp.personId,&lt;br /&gt;
                clearBanner: true&lt;br /&gt;
        };&lt;br /&gt;
        this.getandPlayMessagetone(bannerParams,bannerLaunchParams,'reminder');&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the function '''NotificationAssistant.prototype.considerForNotification''', find the block of code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
        // check if we should only play a sound (when you are already in a chat &amp;amp; a new message comes in)&lt;br /&gt;
        if(notificationData.get('playSoundOnly') &amp;amp;&amp;amp; this.Messaging.messagingPrefs.enableNotificationSound) {&lt;br /&gt;
                this.controller.playSoundNotification('alerts','');&lt;br /&gt;
                return; // don't display any visual notification&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Change that to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
        // check if we should only play a sound (when you are already in a chat &amp;amp; a new message comes in)&lt;br /&gt;
        if(notificationData.get('playSoundOnly') &amp;amp;&amp;amp; this.Messaging.messagingPrefs.enableNotificationSound) {&lt;br /&gt;
                MessagingMojoService.getMessagetone(this.playMessagetone.bind(this));&lt;br /&gt;
                return; // don't display any visual notification&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the function '''NotificationAssistant.prototype.sendNewMessageNotificationAndUpdateDashboard''', find the block of code:&lt;br /&gt;
&lt;br /&gt;
WARNING: Also the same deal as above for 'sendReminderNotification'. A check is there to see if the display is currently on.  Mod the code accordingly to the code in the if/else statement like above!!  I'm sure there is a better way but this is how I was able to make it message sound work while the display is off.  Better explanation to come if someone hasn't already fixed this, didn't have any of the source code at hand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
        var bannerParams = {&lt;br /&gt;
                messageText: notificationText&lt;br /&gt;
        };&lt;br /&gt;
        if (this.Messaging.messagingPrefs.enableNotificationSound)&lt;br /&gt;
                bannerParams.soundClass = &amp;quot;alerts&amp;quot;;&lt;br /&gt;
        var bannerLaunchParams =  {&lt;br /&gt;
                chatThreadId: notificationData.get('chatThreadId'),&lt;br /&gt;
                clearBanner: true&lt;br /&gt;
        };&lt;br /&gt;
        this.controller.showBanner(bannerParams,bannerLaunchParams,'chat');&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Change that to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
        var bannerParams = {&lt;br /&gt;
                messageText: notificationText&lt;br /&gt;
        };&lt;br /&gt;
        var bannerLaunchParams =  {&lt;br /&gt;
                chatThreadId: notificationData.get('chatThreadId'),&lt;br /&gt;
                clearBanner: true&lt;br /&gt;
        };&lt;br /&gt;
        if (this.Messaging.messagingPrefs.enableNotificationSound) {&lt;br /&gt;
                bannerParams.soundClass = &amp;quot;alerts&amp;quot;;&lt;br /&gt;
		this.getandPlayMessagetone(bannerParams,bannerLaunchParams,'chat');&lt;br /&gt;
	} else&lt;br /&gt;
		this.controller.showBanner(bannerParams,bannerLaunchParams,'chat');&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, as it looks like the immediate dashboard creation when the screen is off is causing the sound not to be played, in the same function, find this block of code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
		// delay creating the dashboard window for the case where the banner is clicked on&lt;br /&gt;
                // to take you to the chat view.  This will likely result in the dashboard data&lt;br /&gt;
                // being cleared.  If the dashboard data is empty, we do not need to create the dashboard.              &lt;br /&gt;
                if (this.Messaging.DisplayState.isDisplayOn()) {&lt;br /&gt;
                        if (!this.isNewMessageDashboardPending) {&lt;br /&gt;
                                this.isNewMessageDashboardPending = true;&lt;br /&gt;
                                createDashboard.delay(5);&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                } else {&lt;br /&gt;
                        createDashboard(); // if the screen is off, create the dashboard right away&lt;br /&gt;
                }&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Change that to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
		// delay creating the dashboard window for the case where the banner is clicked on&lt;br /&gt;
                // to take you to the chat view.  This will likely result in the dashboard data&lt;br /&gt;
                // being cleared.  If the dashboard data is empty, we do not need to create the dashboard.&lt;br /&gt;
                // if (this.Messaging.DisplayState.isDisplayOn()) {&lt;br /&gt;
                        if (!this.isNewMessageDashboardPending) {&lt;br /&gt;
                                this.isNewMessageDashboardPending = true;&lt;br /&gt;
                                createDashboard.delay(5);&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                // } else {&lt;br /&gt;
                        // createDashboard(); // if the screen is off, create the dashboard right away&lt;br /&gt;
                // }&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy your desired message sound to the &amp;quot;ringtones&amp;quot; directory in /media/internal/ringtones and it will be visible in the FilePicker.&lt;br /&gt;
&lt;br /&gt;
Reboot the phone for changes to take effect.&lt;br /&gt;
&lt;br /&gt;
= Credits=&lt;br /&gt;
The changes to the Sounds and Alerts app are slight modifications to the submissions of Kaerey.  The rest is submitted by JackieRipper.&lt;/div&gt;</summary>
		<author><name>DSouljah</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Portal:Patches_to_webOS&amp;diff=2669</id>
		<title>Portal:Patches to webOS</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Portal:Patches_to_webOS&amp;diff=2669"/>
		<updated>2009-07-27T14:37:23Z</updated>

		<summary type="html">&lt;p&gt;DSouljah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__notoc__&lt;br /&gt;
{{portal-header&lt;br /&gt;
|This page lists patches to webOS existing apps which modify the behavior as shipped.  '''Note''' that these patches may be version specific and may be broken by future webOS updates.  Proceed with caution. If you get one that works please put &amp;quot; - Works with &amp;quot; + version (for instance 1.0.4)&lt;br /&gt;
}}&lt;br /&gt;
This page is undergoing structuring please contribute moving or adding new entries under the appropriate headings. For now put pages in alphabetical order. Each page should contain at least the basic headings&lt;br /&gt;
*1. '''Introduction''': A brief description to introduce people to the patch.&lt;br /&gt;
**1.1 '''Usage''':An explanation if it is needed on how to use the modification see Add/Delete Pages in the Launcher as an example.&lt;br /&gt;
*2. '''Editing Process''': Step by step instructions to manually edit. &lt;br /&gt;
*3. '''Patching Process''': Details for making the edits with a patch file and pointing people to the [[Applying Patches]] page if the patch is also provided in the webos-internals gitorious repository.&lt;br /&gt;
&lt;br /&gt;
{{portal-two-columns&lt;br /&gt;
|column1= &lt;br /&gt;
==Completed Patches==&lt;br /&gt;
&lt;br /&gt;
* [[Tutorials webOS Add Or Delete Pages In The Launcher|Add/Delete Launcher Pages]] - '''Works with 1.1'''&lt;br /&gt;
* [[Always_Show_Details_of_New_Tasks|Always Show Details of New Tasks]] - '''Works with 1.1'''&lt;br /&gt;
** If there is a patch process for this, please add the details to the page and have it added to the webos-internals gitorious repository. Info for the repository is on [[Applying Patches]].&lt;br /&gt;
* [[Boot_Themes|Boot Themes]] - '''Works with 1.1'''&lt;br /&gt;
* [[Forward Messages|Forward Messages]]  - '''Works with 1.1'''&lt;br /&gt;
* [[Add_Words_to_AutoCorrect_Dictionary|Modify AutoCorrect Dictionary]]&lt;br /&gt;
* [[Roam Control|Roam Control]]  - '''Works with 1.1'''&lt;br /&gt;
* [[Show_Actual_Battery_Percent | Show Actual Battery Percentage]] - '''Works with 1.1'''&lt;br /&gt;
* [[Unhide the DeveloperMode App|Unhide the DeveloperMode App]] - '''Works with 1.1'''&lt;br /&gt;
&lt;br /&gt;
'''The following have not been checked for which the appropriate heading to be under.'''&lt;br /&gt;
&lt;br /&gt;
* [[Application_Framework|Application Framework]]&lt;br /&gt;
* [[Application_Mods:_PDF_Viewer|Application Mods: PDF Viewer]]&lt;br /&gt;
* [[Background_Editing|Background Editing]]&lt;br /&gt;
* [[Bookmarking_MediaPlayer|Bookmarking MediaPlayer]]&lt;br /&gt;
* [[Brightness]]&lt;br /&gt;
* [[Browser_Plugins|Browser Plugins]]&lt;br /&gt;
* [[Bypassing_Activation|Bypassing Activation]]&lt;br /&gt;
* [[Camera_Modifications_%26_Additions|Camera Modifications &amp;amp; Additions]]&lt;br /&gt;
* [[Camera_Remote_View|Camera Remote View]]&lt;br /&gt;
* [[Change_Enter_To_Create_Newline_Instead_of_Send_Message|Change Enter to Create Newline Instead of Send Message]]&lt;br /&gt;
* [[Change_the_default_notification.wav_Sound|Change the Default notification.wav Sound]]&lt;br /&gt;
* [[Changes_Alert/Notification_Sounds|Changes Alert/Notification Sounds]]&lt;br /&gt;
* [[Changing_clipboard_data_from_the_shell|Changing Clipboard Data from the Shell]]&lt;br /&gt;
* [[Changing_the_%22Turn_off_after_X%22_time|Changing the &amp;quot;Turn off after X&amp;quot; Time]]&lt;br /&gt;
* [[Change_Carrier_String|Change Carrier String]]&lt;br /&gt;
* [[Change_default_font_for_replies/forwards_from_navy_to_black|Change Default Font for Replies/Forwards from Navy to Black]]&lt;br /&gt;
* [[Confirm Deletion on Email|Confirm Deletion on Email]] &lt;br /&gt;
* [[CPU Frequency or Voltage Scaling|CPU Frequency or Voltage Scaling]] &lt;br /&gt;
* [[Disable Charging Event Alerts Sounds|Disable Charging Event Alerts Sounds]] &lt;br /&gt;
* [[Display_Full_Status_Messages(Messenger)|Display Full Status Messages(Messenger)]] &lt;br /&gt;
* [[Downloading From The Browser|Downloading From The Browser]] &lt;br /&gt;
* [[Edit Dialer Theme|Edit Dialer Theme]] &lt;br /&gt;
* [[Email App Patch to Prompt for IPK Installation|Email App Patch to Prompt for IPK Installation]] &lt;br /&gt;
* [[Enable Landscape Viewing in Email|Enable Landscape Viewing in Email]] &lt;br /&gt;
* [[Fix Broken Formatting for Reply/Forward E-mails|Fix Broken Formatting for Reply/Forward E-mails]] &lt;br /&gt;
* [[Fix Email Attachments|Fix Email Attachments]] &lt;br /&gt;
* [[Global Search Addons Collection]]&lt;br /&gt;
* [[GPS Tracking|GPS Tracking]] &lt;br /&gt;
* [[Graphics]]&lt;br /&gt;
* [[Hide/Delete_The_NASCAR_App|Hide/Delete The NASCAR App]]&lt;br /&gt;
* [[Hidden Features|Hidden Features]] &lt;br /&gt;
* [[Hourly Chime|Hourly Chime]] &lt;br /&gt;
* [[Ignore 'A', 'An', and 'The' In Artist and Album names|Ignore 'A', 'An', and 'The' In Artist and Album names]] &lt;br /&gt;
* [[Installing Homebrew Apps With A Rooted Pre|Installing Homebrew Apps With A Rooted Pre]]  &lt;br /&gt;
* [[Messaging_Mods|Messaging Modifications]]&lt;br /&gt;
* [[Message Sound|Message Sound]]&lt;br /&gt;
* [[Modifying Stock Applications|Modifying Stock Applications]] &lt;br /&gt;
* [[Modifying a Stock App While Keeping the Original|Modifying a Stock App While Keeping the Original]] &lt;br /&gt;
* [[Logging information from within scripts|Logging information from within scripts]]&lt;br /&gt;
* [[Packaging Homebrew Apps for Stock Pre without Rooting|Packaging Homebrew Apps for Stock Pre without Rooting]] &lt;br /&gt;
* [[My notification|My notification]] &lt;br /&gt;
* [[Myavatar In Messaging App|Myavatar In Messaging App]] &lt;br /&gt;
* [[New Cards For Each Messaging Conversation|New Cards For Each Messaging Conversation]] &lt;br /&gt;
* [[Photos Slideshow|Photos Slideshow]] &lt;br /&gt;
* [[Pictures from Self-Test|Pictures from Self-Test]] &lt;br /&gt;
* [[Radio_Power_Switch|Phone On/Off Switch]]&lt;br /&gt;
* [[Random Wallpaper Switching|Random Wallpaper Switching]] &lt;br /&gt;
* [[Reverse Tunnel|Reverse Tunnel]] &lt;br /&gt;
* [[Screenlock On When Connected|Stay On While Connected]]&lt;br /&gt;
* [[Show allday events in calendar month view|Show allday events in calendar month view]] &lt;br /&gt;
* [[Splash Application|Splash Application]] &lt;br /&gt;
* [[Symlink Applications|Symlink Applications]] &lt;br /&gt;
* [[System Sounds|System Sounds]] &lt;br /&gt;
* [[Turn Off Missed Call Sound|Turn Off Missed Call Sound]] &lt;br /&gt;
* [[Using Volume Buttons to Take a Picture|Using Volume Buttons to Take a Picture]]&lt;br /&gt;
&lt;br /&gt;
|column2=&lt;br /&gt;
==webOS Update Information==&lt;br /&gt;
* [[Update 1.1.0|Update 1.1]]&lt;br /&gt;
* [[Update 1.0.4|Update 1.0.4]] &lt;br /&gt;
* [[Update 1.0.3|Update 1.0.3]]&lt;br /&gt;
&lt;br /&gt;
==Patches that Need Work==&lt;br /&gt;
* Add packages here.&lt;br /&gt;
&lt;br /&gt;
==Patch Ideas to be Created or in Progress==&lt;br /&gt;
&lt;br /&gt;
* [[Add_Ability_To_Choose_Snooze_Length|Add Ability to Choose Snooze Length]]&lt;br /&gt;
* [[Bugs]]&lt;br /&gt;
* [[Development_%26_Tweak_Ideas | Development &amp;amp; Tweaking Ideas]]&lt;br /&gt;
* [[Longer Vibrate|Longer Vibrate]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>DSouljah</name></author>
	</entry>
</feed>