Patch Phone Show Call Duration in the Call Log

From WebOS Internals
Revision as of 16:37, 21 July 2009 by Noir (talk | contribs)
Jump to navigation Jump to search

This page details ways to enable hidden functionality in on the palm pre. You will need root shell access to perform these changes. Follow these instructions at your own risk, if you make an error (or perhaps even if you do it correctly) you risk bricking your phone, voiding your warranty, etc. These instructions assume a working knowledge of unix. Also, note that these changes require rebooting the phone to take effect.

Show call duration in the call log

Sprint always customizes their phones to conceal call duration information. This avoids angry phone calls from confused customers who are surprised when their 1:01 phone call results in 2:00 minutes charged to their account. I can sympathize. However, I won't call complain, and I occasionally want to know how long a call was after the fact.

There is now a shell script for executing the commands below if you do not feel comfortable doing the steps below manually. See http:gitorious.org/webos-internals/modifications/commit/3b2e55a22e64b5302b5d45521ccf94fe28db3595

There is a system preference phoneAppHideCallDuration which appears to control this, but it merely provides a default value. The phone app caches the value and saves it as a cookie. As an exercise, I'll show you how to set the preference as well.

To set the phoneAppHideCallDuration preference:

<source lang="text"> [user@linuxhost]$ ssh -p 222 palm-pre user@castle:~$ su root@castle:/home/user# luna-send -n 1 palm:com.palm.systemservice/setPreferences '{"phoneAppHideCallDuration": false}'

    • Message: serviceResponse Handling: 2, { "returnValue": true }

</source>

Here we've used luna-send to broadcast a message requesting the systemservice to set a preference (I believe you can actually specify multiple preferences at once, the payload format is a json hashtable). Unfortunately, that only sets the default, so to actually see the change we need to update a cookie stored in the phone app. We'll do that now:

<source lang="text"> root@castle:/home/user# cd /var/palm/data/ root@castle:/var/palm/data# sqlite3 cookies.db SQLite version 3.6.1 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> update Cookies set value = "%220%22" where domain_head = ".usr.palm.applications.com.palm." and domain_tail = "app.phone" and path = "/usr/palm/applications/com.palm.app.phone" and "name" = "mojo_cookie_hidecalllogduration"; sqlite> .exit root@castle:/var/palm/data# exit user@castle:~$ exit Connection to palm-pre closed. </source>

This time we've used sqlite3 to update the cookies database directly. The primary key of the Cookies table (in the cookies database) is (domain_head, domain_tail, path, name), we specify the full key, and update the value. Note the value field is always percent-encoded and in this case represents the string Template:"0" (including the quotes). To see your changes, reboot your phone. I've been doing this by holding the power key and turning it off, though presumably a Template:Shutdown -r would work as well (I have not tried it though).

Note: if you are typing in the sql by hand, take care you get it correct. If you make a typo and the where portion does not match any records you will not get any feedback. To verify that your update was successful run the following SQL after your issue the update: select * from Cookies where domain_tail = "app.phone"


Enable adding / removing pages in the Launcher app

Please see this page for a tutorial: Add / Delete Pages in the Launcher


I'm guessing this was disabled due to usability concerns. Especially with the limited number of apps available right now, there's not a huge need for multiple screens, and deleting a page would result in shifting around icons, which can be a frustrating experience. I'm guessing this will be enabled in the future (perhaps on an "advanced mode" switch, or through a different UI). This time the disabling is directly in the code, there are two bits of commented-out code which we simply need to uncomment. I have intentionally not included the file here out of respect for palm's intellectual property.

<source lang="text"> [user@linuxhost]$ ssh -p 222 palm-pre user@castle:~$ su root@castle:/home/user# vi /usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js </source>

Once you have that file open, uncomment the two items in the Template:Items array defined on line 30. Then scroll down to line 125 in the handleCommand function and uncomment the two commented out cases in the switch statement. Save the file, and reboot. You should have two new menu options, "New Page" and "Delete Page". It looks like the code will not let you delete your last page, but I wouldn't try it.

Verified to run as written by optik678.