Commit 083dbfb41e5dfaa69911e0921027cacaaab5360d

  • avatar
  • dBsooner's Stuff <dbsooner @del…ge.vision5.com>
  • Sun Jan 17 00:40:18 CET 2010
10 New, 4 Modified patches for 1.3.5
  
1Name: Advanced Options in Launcher
2Version: 1.3.5.1-1
3Author: Jason Robitaille
4Description: Adds additional options to the launcher's menu: turn on/off DevMode, rescan fileindexer, and rescan applications (MIT license)
5
6--- .orig/usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js
7+++ /usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js
8@@ -28,6 +28,7 @@
9 Mojo.Menu.editItem,
10 { label: $L('List Apps...'), command: 'listapps' },
11 { label: $L('Default Applications'), command: 'defaultapps'},
12+ { label: $L('Advanced Options'), command: 'advanced'},
13 Mojo.Menu.helpItem
14 ]
15 },
16@@ -115,6 +116,77 @@
17 handleCommand: function(event) {
18 if (event.type == Mojo.Event.command) {
19 switch (event.command) {
20+ case 'advanced':
21+ SystemManagerService.showQuickLaunch(false);
22+ this.controller.serviceRequest('palm://com.palm.connectionmanager', {
23+ method: 'getnovacommode',
24+ parameters: {},
25+ onSuccess: function(response){
26+ var choices = [
27+ {label:"Toggle DevMode", value:'devmode'},
28+ {label:"Rescan Fileindexer", value:'fileindexer'},
29+ {label:"Rescan Applications", value:'rescanapps'},
30+ {label:"Cancel", value:'cancel', type:'secondary'}
31+ ];
32+ this.inDevMode = response.isEnabled;
33+ if(this.inDevMode) {
34+ choices[0].label = "Turn off DevMode";
35+ } else {
36+ choices[0].label = "Turn on DevMode";
37+ }
38+ this.controller.showAlertDialog({
39+ onChoose: function(value) {
40+ if(value=='devmode') {
41+ this.controller.showAlertDialog({
42+ onChoose: function(value){
43+ if(value=='reset') {
44+ this.controller.serviceRequest('palm://com.palm.connectionmanager', {
45+ method: 'setnovacommode',
46+ parameters: {
47+ isEnabled:!this.inDevMode
48+ },
49+ onSuccess: function() {
50+ this.controller.serviceRequest('palm://com.palm.power/shutdown', {
51+ method: 'machineReboot',
52+ parameters: {
53+ reason:"User initiated/DevMode status change"
54+ }
55+ });
56+ }.bind(this)
57+ });
58+ }
59+ SystemManagerService.showQuickLaunch(true);
60+ }.bind(this),
61+ title: "Restart Device?",
62+ message: "Your device needs to restart for this action to happen.",
63+ choices: [
64+ {label:"Continue and reset", value:'reset', type:'negative'},
65+ {label:"Cancel", value:'cancel'}
66+ ]
67+ });
68+ } else if(value=='fileindexer') {
69+ this.controller.serviceRequest('palm://ca.canucksoftware.filemgr', {
70+ method: 'rescanFileindexer',
71+ parameters: {}
72+ });
73+ SystemManagerService.showQuickLaunch(true);
74+ } else if(value=='rescanapps') {
75+ this.controller.serviceRequest('com.palm.applicationManager', {
76+ method: 'rescan',
77+ parameters: {}
78+ });
79+ SystemManagerService.showQuickLaunch(true);
80+ } else {
81+ SystemManagerService.showQuickLaunch(true);
82+ }
83+ }.bind(this),
84+ title: "Advanced Options",
85+ message: "",
86+ choices: choices
87+ });
88+ }.bind(this)
89+ });
90+ break;
91 case Mojo.Menu.helpCmd:
92 ApplicationService.launch(this.helpInfo.id, this.helpInfo.params);
93 break;
  
1Name: Named Pages in App Launcher
2Version: 1.3.5-2
3Author: l.m.orchard@pobox.com
4Description: This patch adds a name to each page in the launcher. Hold the Orange key or gesture area and tap the header to rename a page. Tapping on the name header brings up a submenu for navigating directly to any named page. You can also move an app to another page by using a selector in the app's info dialog, summoned via Orange-tap on an app in the launcher. This patch works better with the "app-launcher-enable-add-delete-pages" and "app-launcher-gesture-tap-for-info-and-delete" patches, and may conflict with the "app-launcher-wrap-pages" patch.
5
6Index: /usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js
7===================================================================
8--- .orig/usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js
9+++ /usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js
10@@ -62,6 +62,9 @@ var LauncherAssistant = Class.create({
11
12 this.dragStartHandler = this.onDragStart.bindAsEventListener(this);
13 this.launchApp = this.launchApp.bind(this);
14+
15+ this.page_names_cookie = new Mojo.Model.Cookie('page_names');
16+ this.page_names = this.page_names_cookie.get() || [];
17 },
18
19 setup: function() {
20@@ -77,6 +80,9 @@ var LauncherAssistant = Class.create({
21 }
22 );
23
24+ Mojo.listen($('page-category'), Mojo.Event.tap,
25+ this.handlePageNameTap.bindAsEventListener(this));
26+
27 this.globalSearchAssistant = new GlobalSearchAssistant(this.controller, this);
28
29 // HACK: The launcher starts out launched and deactive.
30@@ -241,6 +247,12 @@ var LauncherAssistant = Class.create({
31 }
32
33 this.pageDivs = $$('.launcher_page');
34+
35+ if (createPage) {
36+ this.page_names.splice(newPageIndex, 0, []);
37+ this.updatePageHeader();
38+ this.savePageNames();
39+ }
40
41 // extend the horizontal scrollers internal width
42 pagesContainer.style.width = (this.pageDivs.length*this.kPageWidth)+'px';
43@@ -302,6 +314,11 @@ var LauncherAssistant = Class.create({
44
45 // remove the pages indicator
46 this.deletePageIndicator();
47+
48+ // Splice out the name for this page.
49+ this.page_names.splice(pageIndex, 1);
50+ this.updatePageHeader();
51+ this.savePageNames();
52
53 // snap to a valid location
54 if (pageIndex >= this.pageDivs.length) {
55@@ -587,6 +604,7 @@ var LauncherAssistant = Class.create({
56 this.globalSearchAssistant.enable(false);
57
58 var appInfoAssistant = new AppInfoAssistant(appInfo,
59+ this,
60 this.controller,
61 function() {
62 delete this.appDialog;
63@@ -658,6 +676,9 @@ var LauncherAssistant = Class.create({
64
65 /* Updates the positions of all page indicators. */
66 updatePageIndicators: function() {
67+
68+ // Ensure that the view menu tabs reflect the active page. (LMO)
69+ this.updatePageHeader();
70
71 if (this.indicators.length <= 0) {
72 return;
73@@ -778,6 +799,134 @@ var LauncherAssistant = Class.create({
74 onLaunchCompleted: function(response) {
75
76 delete this.launchRequest;
77- }
78+ },
79+
80+ /**
81+ * Handle tap and meta-tap on the launcher page name header.
82+ */
83+ handlePageNameTap: function (event) {
84+ if (event.up && event.up.altKey || event.up && event.up.metaKey) {
85+ // Handle alt-tap or meta-tap on page header to rename page.
86+
87+ // Hide the quick launch panel and disable the global search so
88+ // that the dialog is fully visible and usable.
89+ SystemManagerService.showQuickLaunch(false);
90+ this.globalSearchAssistant.enable(false);
91+
92+ // Invoke the page rename dialog.
93+ this.renamePageDialog = this.controller.showDialog({
94+ template: 'launcher/dialogs/rename-page',
95+ assistant: new RenamePageAssistant(
96+ this, function () {
97+ delete this.renamePageDialog;
98+ SystemManagerService.showQuickLaunch(true);
99+ this.globalSearchAssistant.enable(true);
100+ }.bind(this)
101+ )
102+ });
103+
104+ } else {
105+ // Handle tap on page header to invoke page menu.
106+
107+ // Hide the quick launch panel so there's room for the full menu.
108+ SystemManagerService.showQuickLaunch(false);
109+
110+ // Invoke the page menu.
111+ this.controller.popupSubmenu({
112+ placeNear: event.target,
113+ // Construct the menu based on the names for each page, placing
114+ // the checkmark appropriately.
115+ items: this.pageDivs.map(function (alias, idx) {
116+ return {
117+ command: idx,
118+ label: this.getPageName(idx),
119+ chosen: (idx == this.activePageIndex)
120+ };
121+ }, this),
122+ onChoose: function (command) {
123+ // Reveal the quick launch bar and jump to the chosen page.
124+ SystemManagerService.showQuickLaunch(true);
125+ this.gotoPage(command);
126+ }.bind(this)
127+ });
128+
129+ }
130+ },
131+
132+ /**
133+ * Get the name for a numbered page.
134+ *
135+ * @param {integer} idx Page number
136+ */
137+ getPageName: function (idx) {
138+ if (Object.isUndefined(idx)) { idx = this.activePageIndex; }
139+ return this.page_names[idx] || ('#'+(idx+1));
140+ },
141+
142+ /**
143+ * Set the name for a numbered page.
144+ *
145+ * @param {integer} idx Page number
146+ * @param {string} name Page name
147+ */
148+ setPageName: function (idx, name) {
149+ this.page_names[idx] = name;
150+ this.savePageNames();
151+ },
152+
153+ /**
154+ * Save the current state of page names
155+ */
156+ savePageNames: function () {
157+ this.page_names_cookie.put(this.page_names);
158+ },
159+
160+ /**
161+ * Update the view menu tabs to reflect a given page index. (LMO)
162+ *
163+ * @param {int} idx Page index.
164+ */
165+ updatePageHeader: function (idx) {
166+ if (Object.isUndefined(idx)) { idx = this.activePageIndex; }
167+ this.controller.get('page-category').update(this.getPageName(idx));
168+ },
169+
170+ /**
171+ * Switch directly to a page. (LMO)
172+ *
173+ * @param {int} idx Page index.
174+ */
175+ gotoPage: function (idx) {
176+ var idx = parseInt(idx);
177+ if (Object.isUndefined(this.pageDivs[idx])) {
178+ // Bail if attempting to move to a nonexistent page.
179+ return false;
180+ }
181+ // Move to the page, update the on-scene indicators.
182+ $('launcher_root').mojo.setSnapIndex(idx, true);
183+ this.activePageIndex = idx;
184+ this.updatePageIndicators();
185+ return true;
186+ },
187+
188+ /**
189+ * Move an app from its existing page to the first position of a new page.
190+ * Launcher is also switched to that destination page to show the move.
191+ *
192+ * @param {string} launchPointId Launch point ID in the apps list
193+ * @param {integer} page_idx Destination page number
194+ */
195+ moveAppToPage: function (launchPointId, page_idx) {
196+ var from = this.pagesModel.findApplication(launchPointId),
197+ to = { page: parseInt(page_idx), position: 0 };
198+ // Move the page in the launcher layout
199+ this.moveApp(launchPointId, to);
200+ // Move the page in the page model
201+ this.pagesModel.moveApplication(from, to);
202+ // Save the page model changes
203+ this.pagesModel.save();
204+ // Switch to the page to show the change
205+ this.gotoPage(page_idx);
206+ }
207
208 });
209Index: /usr/lib/luna/system/luna-applauncher/stylesheets/launcher.css
210===================================================================
211--- .orig/usr/lib/luna/system/luna-applauncher/stylesheets/launcher.css
212+++ /usr/lib/luna/system/luna-applauncher/stylesheets/launcher.css
213@@ -59,7 +59,7 @@ body.palm-default
214 width: 100%;
215 z-index: 29;
216 height: 24px;
217- top: 1px;
218+ top: 45px; /* Insert some space for the page selector (LMO) */
219 background: url(../images/fade-arrow-up.png) center center no-repeat;
220 -webkit-palm-mouse-target: ignore;
221 }
222@@ -106,7 +106,7 @@ body.palm-default
223 }
224
225 .page_scroller_container {
226- margin-top: 10px;
227+ margin-top: 55px; /* Insert some space for the page selector (LMO) */
228 margin-bottom: -20px;
229 }
230
231Index: /usr/lib/luna/system/luna-applauncher/app/controllers/global-search-assistant.js
232===================================================================
233--- .orig/usr/lib/luna/system/luna-applauncher/app/controllers/global-search-assistant.js
234+++ /usr/lib/luna/system/luna-applauncher/app/controllers/global-search-assistant.js
235@@ -246,6 +246,10 @@ GlobalSearchAssistant = Class.create({
236 },
237
238 onKeyDown: function(event) {
239+ if (!this.searchEnabled) {
240+ // HACK: The event.stop() below disables text entry in dialogs
241+ return;
242+ }
243
244 this.searchField.mojo.focus();
245
246@@ -262,6 +266,10 @@ GlobalSearchAssistant = Class.create({
247 },
248
249 onKeyUp: function(event) {
250+ if (!this.searchEnabled) {
251+ // HACK: The event.stop() below disables text entry in dialogs
252+ return;
253+ }
254
255 // block key events from global search
256 if (!this.searchEnabled) {
257@@ -279,6 +287,10 @@ GlobalSearchAssistant = Class.create({
258 },
259
260 onKeyPress: function(event) {
261+ if (!this.searchEnabled) {
262+ // HACK: The event.stop() below disables text entry in dialogs
263+ return;
264+ }
265
266 // block key events from global search and from repeating until the first key has been processed
267 if (!this.searchEnabled ||
268Index: /usr/lib/luna/system/luna-applauncher/app/views/launcher/launcher-scene.html
269===================================================================
270--- .orig/usr/lib/luna/system/luna-applauncher/app/views/launcher/launcher-scene.html
271+++ /usr/lib/luna/system/luna-applauncher/app/views/launcher/launcher-scene.html
272@@ -18,6 +18,7 @@
273 </div>
274
275 <div id="launcher-main">
276+ <div id="page-category" class="palm-header center" x-mojo-touch-feedback="immediate">...</div>
277 <div id="launcher_root" x-mojo-element="Scroller">
278 <div id="pages_container"></div>
279 </div>
280Index: /usr/lib/luna/system/luna-applauncher/sources.json
281===================================================================
282--- .orig/usr/lib/luna/system/luna-applauncher/sources.json
283+++ /usr/lib/luna/system/luna-applauncher/sources.json
284@@ -27,6 +27,10 @@
285 {
286 "source": "app\/models\/launcher-pages.js"
287 },
288+
289+ {
290+ "source": "app\/controllers\/rename-page-assistant.js"
291+ },
292
293 {
294 "source": "app\/models\/ApplicationService.js"
295Index: /usr/lib/luna/system/luna-applauncher/app/controllers/app-info-assistant.js
296===================================================================
297--- .orig/usr/lib/luna/system/luna-applauncher/app/controllers/app-info-assistant.js
298+++ /usr/lib/luna/system/luna-applauncher/app/controllers/app-info-assistant.js
299@@ -1,8 +1,9 @@
300 /* Copyright 2009 Palm, Inc. All rights reserved. */
301
302 var AppInfoAssistant = Class.create({
303- initialize: function(appInfo, sceneController, closeCallback) {
304+ initialize: function(appInfo, parent, sceneController, closeCallback) {
305 this.sceneController = sceneController;
306+ this.parent = parent;
307 this.appInfo = appInfo;
308 this.isDynamic = this.isDynamicLaunchPoint(this.appInfo);
309 this.closeCallback = closeCallback;
310@@ -43,6 +44,29 @@ var AppInfoAssistant = Class.create({
311 if (!this.isDynamic) {
312 this.appSizeRequest = ApplicationService.getAppSize(this.appInfo.id, this.onGetAppSize.bind(this));
313 }
314+
315+ // Find the page for the app being inspected.
316+ var app_page = this.parent.pagesModel
317+ .findApplication(this.appInfo.launchPointId);
318+
319+ // Build the list selector for switching pages.
320+ this.sceneController.setupWidget(
321+ 'page_name',
322+ {
323+ label: $L('Page'),
324+ choices: this.parent.pageDivs.map(function (alias, idx) {
325+ return {
326+ value: idx,
327+ label: this.parent.getPageName(idx)
328+ };
329+ }, this)
330+ },
331+ this.page_name_model = {
332+ value: app_page.page, disabled: false
333+ }
334+ );
335+ this.sceneController.listen('page_name', Mojo.Event.propertyChange,
336+ this.onPageNameChanged.bindAsEventListener(this));
337 },
338
339 insertVersion: function() {
340@@ -148,6 +172,10 @@ var AppInfoAssistant = Class.create({
341 this.sceneController.get('app-size').update(sizeInKBytes + $L('K'));
342 }
343 },
344+
345+ onPageNameChanged: function (event) {
346+ this.parent.moveAppToPage(this.appInfo.launchPointId, event.value);
347+ },
348
349 cleanup: function() {
350 if (this.appSizeRequest) {
351Index: /usr/lib/luna/system/luna-applauncher/app/views/launcher/dialogs/app-info.html
352===================================================================
353--- .orig/usr/lib/luna/system/luna-applauncher/app/views/launcher/dialogs/app-info.html
354+++ /usr/lib/luna/system/luna-applauncher/app/views/launcher/dialogs/app-info.html
355@@ -8,6 +8,16 @@
356 </div>
357 <div class="palm-dialog-separator"></div>
358 <div class="palm-dialog-buttons">
359+ <div class="palm-group unlabeled">
360+ <div class="palm-list">
361+ <div class="palm-row single">
362+ <div class="palm-row-wrapper">
363+ <div x-mojo-element="ListSelector"
364+ id="page_name" name="page_name"></div>
365+ </div>
366+ </div>
367+ </div>
368+ </div>
369 <div id='delete-btn' x-mojo-element="Button"></div>
370 <div id='done-btn' x-mojo-element="Button"></div>
371 </div>
372Index: /usr/lib/luna/system/luna-applauncher/app/controllers/rename-page-assistant.js
373===================================================================
374--- /dev/null
375+++ /usr/lib/luna/system/luna-applauncher/app/controllers/rename-page-assistant.js
376@@ -0,0 +1,76 @@
377+/**
378+ * Assistant managing the page rename dialog.
379+ */
380+RenamePageAssistant = Class.create({
381+
382+ initialize: function (parent, closeCallback) {
383+ this.parent = parent;
384+ this.closeCallback = closeCallback;
385+ },
386+
387+ setup: function (widget) {
388+ this.widget = widget;
389+
390+ var idx = this.parent.activePageIndex,
391+ page_name = this.parent.getPageName(idx);
392+
393+ this.parent.controller.setupWidget(
394+ 'page_rename_field',
395+ {
396+ textReplacement: false,
397+ focus: true,
398+ hintText: 'enter page name...',
399+ changeOnKeyPress: true
400+ },
401+ this.page_name_model = {
402+ value: page_name,
403+ disabled: false
404+ }
405+ );
406+ this.parent.controller.listen(
407+ 'page_rename_field',
408+ Mojo.Event.propertyChange,
409+ this.handleChange.bindAsEventListener(this)
410+ );
411+
412+ setTimeout(function () {
413+ // HACK: Auto-focus the rename field after setup is done.
414+ this.parent.controller.get('page_rename_field').mojo.focus();
415+ }.bind(this), 1);
416+
417+ this.parent.controller.setupWidget('rename_button', {},
418+ { buttonLabel: $L('Rename') });
419+ this.parent.controller.listen('rename_button', Mojo.Event.tap,
420+ this.handleRename.bindAsEventListener(this));
421+
422+ this.parent.controller.setupWidget('cancel_button', {},
423+ { buttonLabel: $L('Cancel') });
424+ this.parent.controller.listen('cancel_button', Mojo.Event.tap,
425+ this.handleCancel.bindAsEventListener(this));
426+ },
427+
428+ handleChange: function (event) {
429+ if (event && Mojo.Char.isEnterKey(event.originalEvent.keyCode)) {
430+ this.handleRename(event);
431+ }
432+ },
433+
434+ handleRename: function (event) {
435+ this.parent.setPageName(
436+ this.parent.activePageIndex,
437+ this.parent.controller.get('page_rename_field').mojo.getValue()
438+ );
439+ this.parent.updatePageHeader();
440+ this.widget.mojo.close();
441+ },
442+
443+ handleCancel: function (event) {
444+ this.widget.mojo.close();
445+ },
446+
447+ cleanup: function() {
448+ this.closeCallback();
449+ },
450+
451+ EOF:null
452+});
453Index: /usr/lib/luna/system/luna-applauncher/app/views/launcher/dialogs/rename-page.html
454===================================================================
455--- /dev/null
456+++ /usr/lib/luna/system/luna-applauncher/app/views/launcher/dialogs/rename-page.html
457@@ -0,0 +1,24 @@
458+<div id="palm-dialog-content" class="palm-dialog-content">
459+ <div class="palm-dialog-title">
460+ Rename Page
461+ </div>
462+ <div class="palm-dialog-separator"></div>
463+ <div class="textfield-group" x-mojo-focus-highlight="true">
464+ <div class="title">
465+ <div class="label">Name</div>
466+ <div id="page_rename_field" name="page_rename_field"
467+ x-mojo-element="TextField"></div>
468+ </div>
469+ </div>
470+</div>
471+
472+<div class="palm-dialog-buttons">
473+ <div id="rename_button" class="palm-button affirmative"
474+ x-mojo-touch-feedback="immediatePersistent">
475+ <div class="palm-button-wrapper" x-mojo-loc="">Rename</div>
476+ </div>
477+ <div id="cancel_button" class="palm-button dismiss"
478+ x-mojo-touch-feedback="immediatePersistent">
479+ <div class="palm-button-wrapper" x-mojo-loc="">Cancel</div>
480+ </div>
481+</div>
  
1--- /usr/palm/applications/com.palm.app.contacts/app/controllers/list-assistant.js.orig 2009-08-19 19:19:40.000000000 -0400
2+++ /usr/palm/applications/com.palm.app.contacts/app/controllers/list-assistant.js 2010-01-08 01:11:12.380734400 -0500
1--- /usr/palm/applications/com.palm.app.contacts/app/controllers/list-assistant.js.orig Thu Jan 14 13:02:13 2010
2+++ /usr/palm/applications/com.palm.app.contacts/app/controllers/list-assistant.js Thu Jan 14 13:22:18 2010
33@@ -284,6 +284,9 @@
44 items: [Mojo.Menu.editItem,{
55 label:$L("Send All to Car Kit"),
1010 }, prefsItem, {
1111 label: $LL('Help'),
1212 command: Mojo.Menu.helpCmd
13@@ -463,12 +466,31 @@
13@@ -461,6 +464,8 @@
14 });
15 }else if (event.type == Mojo.Event.command && event.command === Mojo.Menu.prefsCmd) {
1416 this.controller.stageController.pushScene('prefs');
15 }else if (event.type == Mojo.Event.command && event.command == "sendcontacts") {
16 this.sendContacts();
1717+ }else if (event.type == Mojo.Event.command && event.command == "emailcontacts") {
1818+ this.emailContacts();
19 }else if (event.type == Mojo.Event.command && event.command == "sendcontacts") {
20 this.sendContacts();
1921 }
20 if (event.type == Mojo.Event.commandEnable && event.command == Mojo.Menu.prefsCmd) {
21 // funkay! this is apparently how you declare you want to activate the prefs menu item
22 event.stopPropagation();
22@@ -470,6 +475,23 @@
2323 }
2424 },
25+
26+ emailContacts:function(){
27+ this.vcardRequest = AppAssistant.contactsService.makeVCardList(this.controller, {
28+ stripPhoneNumbers:false
29+ }, this.gotVCard.bind(this, "email"));
30+ var cancelFn = function(){
31+ this.vcardRequest.cancel();
32+ this.vcardRequest = null;
33+ }.bind(this)
34+ console.log("Setting up a dialog");
35+ this.sendContactsPopupAssistant = new SendContactsPopupAssistant(this.controller, cancelFn);
36+ this.controller.showDialog({
37+ template: 'list/send-contact-popup',
38+ assistant: this.sendContactsPopupAssistant,
39+ preventCancel:true
40+ });
25
26+ emailContacts:function(){
27+ this.vcardRequest = AppAssistant.contactsService.makeVCardList(this.controller, {
28+ stripPhoneNumbers:false
29+ }, this.gotVCard.bind(this, "email"));
30+ var cancelFn = function(){
31+ this.vcardRequest.cancel();
32+ this.vcardRequest = null;
33+ }.bind(this)
34+ console.log("Setting up a dialog");
35+ this.sendContactsPopupAssistant = new SendContactsPopupAssistant(this.controller, cancelFn);
36+ this.controller.showDialog({
37+ template: 'list/send-contact-popup',
38+ assistant: this.sendContactsPopupAssistant,
39+ preventCancel:true
40+ });
4141+ },
42
42+
4343 sendContacts:function(){
44
44
45 var params = {"type":"bluetooth", "onSuccess":this.bluetoothResponse.bind(this)};
4546@@ -479,7 +501,7 @@
46
47
4748 bluetoothResponse:function(response){
4849 if (response == "BT-On" || response == "BT-StartingUp") {
4950- this.vcardRequest = AppAssistant.contactsService.makeVCardList(this.controller, {stripPhoneNumbers:true}, this.gotVCard.bind(this));
5555@@ -494,18 +516,39 @@
5656 }
5757 },
58
58
5959- gotVCard:function(resp){
6060- var appArgs = {
6161- appId:"com.palm.app.bluetooth",
6262- name:"btopp"
63- }
63+ gotVCard:function(type,resp){
64+ if (type == "bluetooth") {
65+ var appArgs = {
66+ appId:"com.palm.app.bluetooth",
67+ name:"btopp"
68+ }
69+ var sceneArgs = {
70+ file:resp.file
71+ }
72+
73+ this.sendContactsPopupAssistant.widget.mojo.close();
74+
75+ this.controller.stageController.pushScene(appArgs, sceneArgs)
76 }
6477- var sceneArgs = {
6578- file:resp.file
66- }
79+ else if (type == "email") {
80+ var vcfPath = resp.file;
81+
82+ this.sendContactsPopupAssistant.widget.mojo.close();
83+
84+ this.controller.serviceRequest('palm://com.palm.applicationManager', {
85+ method: 'open',
86+ parameters: {
87+ id: 'com.palm.app.email',
88+ params: {
89+ summary: 'Palm Contacts',
90+ attachments: [{
91+ fullPath:vcfPath,
92+ mimeType:'text/x-vcard'
93+ }]
94+ }
95+ }
96+ });
97 }
6798-
6899- this.sendContactsPopupAssistant.widget.mojo.close();
69100-
70101- this.controller.stageController.pushScene(appArgs, sceneArgs)
71+ gotVCard:function(type, resp){
72+ if (type == "bluetooth") {
73+ var appArgs = {
74+ appId:"com.palm.app.bluetooth",
75+ name:"btopp"
76+ }
77+ var sceneArgs = {
78+ file:resp.file
79+ }
80+
81+ this.sendContactsPopupAssistant.widget.mojo.close();
82+
83+ this.controller.stageController.pushScene(appArgs, sceneArgs)
84+ }
85+ else if (type == "email") {
86+ var vcfPath = resp.file;
87+
88+ this.sendContactsPopupAssistant.widget.mojo.close();
89+
90+ this.controller.serviceRequest('palm://com.palm.applicationManager', {
91+ method: 'open',
92+ parameters: {
93+ id: 'com.palm.app.email',
94+ params: {
95+ summary: 'Palm Contacts',
96+ attachments: [{
97+ fullPath:vcfPath,
98+ mimeType:'text/x-vcard'
99+ }]
100+ }
101+ }
102+ });
103+ }
104102 },
105
103
106104 handleListTap: function(event){
  
1--- .orig/usr/palm/applications/com.palm.app.messaging/stylesheets/messaging.css
2+++ /usr/palm/applications/com.palm.app.messaging/stylesheets/messaging.css
3@@ -532,7 +532,7 @@
4 .chat-entry.their-chat .chat-balloon {
5 border-width: 10px;
6 -webkit-border-image: url(../images/chatview/chat-balloon-left-selected.png) 10 10 10 10 stretch stretch;
7- -webkit-border-image: url(../images/chatview/chat-balloon-left.png) 10 10 10 10 stretch stretch;
8+ -webkit-border-image: url(/media/internal/scrims/chat-balloon-left.png) 10 10 10 10 stretch stretch;
9 }
10 .chat-entry.selected .chat-balloon {
11 -webkit-border-image: url(../images/chatview/empty.png) 10 10 10 10 stretch stretch;
12@@ -541,7 +541,7 @@
13 -webkit-border-image: url(../images/chatview/chat-balloon-left-error.png) 10 10 10 10 stretch stretch;
14 }
15 .chat-entry.my-chat .chat-balloon {
16- -webkit-border-image: url(../images/chatview/chat-balloon-right.png) 10 10 10 10 stretch stretch;
17+ -webkit-border-image: url(/media/internal/scrims/chat-balloon-right.png) 10 10 10 10 stretch stretch;
18 }
19 .chat-entry.my-chat.error .chat-balloon {
20 -webkit-border-image: url(../images/chatview/chat-balloon-right-error.png) 10 10 10 10 stretch stretch;
21\ No newline at end of file
  
1 --- .orig/usr/palm/applications/com.palm.app.browser/stylesheets/browser.css
2+++ /usr/palm/applications/com.palm.app.browser/stylesheets/browser.css
3@@ -1,6 +1,7 @@
4 /*
5 * Copyright 2008-2009 Palm, Inc. All rights reserved.
6 */
7+
8 body {
9 margin: 0px;
10 padding: 0px;
11@@ -279,7 +280,7 @@
12 }
13
14 #start-page-background {
15- background: url(../images/background-bookmarks-grid.png) center center no-repeat;
16+ background: #000 url(/media/internal/scrims/browser-scrim.png) center center no-repeat;
17 position: fixed;
18 top: 0px;
19 left: 0px;
20
21
22--- .orig/usr/palm/applications/com.palm.app.contacts/stylesheets/list.css
23+++ /usr/palm/applications/com.palm.app.contacts/stylesheets/list.css
24@@ -4,6 +4,11 @@
25 */
26
27 /* List Common */
28+body.wallpaper,
29+ body.palm-default {
30+ background: #000 url(/media/internal/scrims/contacts-scrim.png);
31+ color:#fff;
32+}
33
34 div.hidden {
35 display: none;
36\ No newline at end of file
37
38--- .orig/usr/palm/applications/com.palm.app.email/stylesheets/email.css
39+++ /usr/palm/applications/com.palm.app.email/stylesheets/email.css
40@@ -21,6 +21,11 @@
41 * email folder-list specifics
42 *
43 **************************************************************************************************/
44+body.wallpaper,
45+ body.palm-default {
46+ background: #000 url(/media/internal/scrims/email-scrim.png);
47+ color:#fff;
48+}
49
50 .email-folder-list .palm-row-wrapper {
51 min-height: 50px;
52\ No newline at end of file
53
54--- .orig/usr/palm/applications/com.palm.app.messaging/stylesheets/messaging.css
55+++ /usr/palm/applications/com.palm.app.messaging/stylesheets/messaging.css
56@@ -6,7 +6,11 @@
57 /**************************************************************************************************
58 * First Launch
59 **************************************************************************************************/
60-
61+body.wallpaper,
62+ body.palm-default {
63+ background: url(/media/internal/scrims/messaging-scrim.png) 0 0 fixed no-repeat;
64+ color:#fff;
65+}
66 .palm-button.accountType {
67 text-align: left;
68 }
69@@ -615,6 +619,7 @@
70 padding: 1px 0;
71 font-size: 18px;
72 word-wrap: break-word !important;
73+color: #fff;
74 }
75 .their-chat .chat-balloon-wrapper {
76 padding-right: 8px;
77\ No newline at end of file
78--- .orig/usr/palm/applications/com.palm.app.musicplayer/stylesheets/music-player.css
79+++ /usr/palm/applications/com.palm.app.musicplayer/stylesheets/music-player.css
80@@ -9,7 +9,7 @@
81
82 body.wallpaper,
83 body.palm-default {
84- background: url(../images/background.png) 0 0 fixed;
85+ background:#000 url(/media/internal/scrims/music-player-scrim.png) 0 0 fixed;
86 color: white;
87 }
88
89
90--- .orig/usr/palm/applications/com.palm.app.notes/stylesheets/notes-app.css
91+++ /usr/palm/applications/com.palm.app.notes/stylesheets/notes-app.css
92@@ -6,7 +6,7 @@
93 */
94
95 .notes-background {
96- background: url(../images/notes-background.png) top left no-repeat !important;
97+ background:#000 url(/media/internal/scrims/notes-scrim.png) top left no-repeat !important;
98 position: fixed;
99 width: 100%;
100 height: 100%;
101
102--- .orig/usr/palm/applications/com.palm.app.phone/stylesheets/phone.css
103+++ /usr/palm/applications/com.palm.app.phone/stylesheets/phone.css
104@@ -31,7 +31,7 @@
105 }
106
107 body.palm-default {
108- background: #000 url(../images/backdrop-phone.png) 0 0 fixed no-repeat;
109+ background: #000 url(/media/internal/scrims/phone-scrim.png) 0 0 fixed no-repeat;
110 }
111
112 body.no-wallpaper {
113\ No newline at end of file
114--- .orig/usr/palm/applications/com.palm.app.photos/stylesheets/photos.css
115+++ /usr/palm/applications/com.palm.app.photos/stylesheets/photos.css
116@@ -297,7 +297,7 @@
117 top: 0;
118 left: 0;
119 z-index: -100;
120- background: #000 url(../images/background.png) no-repeat;
121+ background: #000 url(/media/internal/scrims/photos-scrim.png) no-repeat;
122 }
123
124 /*Album List View Specific Styles*/
125
126
127--- .orig/usr/palm/applications/com.telenav.app.sprintnavigation/stylesheets/telenav.css
128+++ /usr/palm/applications/com.telenav.app.sprintnavigation/stylesheets/telenav.css
129@@ -3,6 +3,11 @@
130 color: #FEE100; /*From sprint UI guidelines */
131 text-align: center;
132 }
133+body.wallpaper,
134+ body.palm-default {
135+ background:#000 url(/media/internal/scrims/sprintnav-scrim.png) 0 0 fixed no-repeat;
136+ color:#fff;
137+}
138
139 .palm-button.spinner {
140 float: right;
141
142---.orig/usr/palm/applications/com.palm.app.videoplayer.launcher/stylesheets/media-video.css
143+++ /usr/palm/applications/com.palm.app.videoplayer.launcher/stylesheets/media-video.css
144@@ -4,7 +4,7 @@
145 */
146
147 body.palm-default {
148- background: url(../images/background.png) 0 0 fixed no-repeat;
149+ background: #000 url(/media/internal/scrims/video-player-scrim.png) 0 0 fixed no-repeat;
150 color: white;
151 }
152
153
  
1Name: Emoticons using sym+k & sym+z (keys reversed)
2Version: 1.3.5-1
3Author: xanthinealkaloid
4Description: Use the sym key and letter K (words) or Z (symbols) to bring up the built-in emoticons list.
5Description: Index: /usr/palm/frameworks/mojo/submissions/200.72/resources/en_us/alternatechars_table.json
6===================================================================
7--- /usr/palm/frameworks/mojo/submissions/200.72/resources/en_us/alternatechars_table.json
8+++ /usr/palm/frameworks/mojo/submissions/200.72/resources/en_us/alternatechars_table.json
9@@ -10,1 +10,1 @@
10- {"keyCode": 75, "letter":"k", "list": [":-)",":-(",";-)"]},
11+ {"keyCode": 75, "letter":"k", "list": [":doh",":mad",":wtf",":cool",":cry",":eek",":sad",":omg",":grin",":kiss",":lol",":evil",":meh",":sick",":smile",":wink",":yuck",":eww",":heart",":angel",":redface"]},
12@@ -25,1 +25,1 @@
13- {"keyCode": 90, "letter":"z", "list": ["ž","Ž","•"]},
14+ {"keyCode": 90, "letter":"z", "list": [":-)",":-(",";-)","o_O","8)",":'(",":[",":S",":!",":O","^_^","O:-)",":-*",":-D","=-@",":/",":P",":|",">:-)",">:-(","<3","ž","Ž","•"]},
  
1Name: Emoticons using sym+k & sym+z
2Version: 1.3.5-1
3Author: xanthinealkaloid
4Description: Use the sym key and letter K (symbols) or Z (words) to bring up the built-in emoticons list.
5Index: /usr/palm/frameworks/mojo/submissions/200.72/resources/en_us/alternatechars_table.json
6===================================================================
7--- /usr/palm/frameworks/mojo/submissions/200.72/resources/en_us/alternatechars_table.json
8+++ /usr/palm/frameworks/mojo/submissions/200.72/resources/en_us/alternatechars_table.json
9@@ -10,1 +10,1 @@
10- {"keyCode": 75, "letter":"k", "list": [":-)",":-(",";-)"]},
11+ {"keyCode": 75, "letter":"k", "list": [":-)",":-(",";-)","o_O","8)",":'(",":[",":S",":!",":O","^_^","O:-)",":-*",":-D","=-@",":/",":P",":|",">:-)",">:-(","<3"]},
12@@ -25,1 +25,1 @@
13- {"keyCode": 90, "letter":"z", "list": ["ž","Ž","•"]},
14+ {"keyCode": 90, "letter":"z", "list": ["ž","Ž","•",":doh",":mad",":wtf",":cool",":cry",":eek",":sad",":omg",":grin",":kiss",":lol",":evil",":meh",":sick",":smile",":wink",":yuck",":eww",":heart",":angel",":redface"]},
  
1Name: Advanced Reset Options
2Version: 1.3.5.1-1
3Author: Jason Robitaille
4Description: On power button hold, it goes straight to the reset options, with airplaine mode, java restart, and luna restart added, and skips the swap-battery/shutdown prompt. (MIT license)
5
6--- .orig/usr/lib/luna/system/luna-systemui/app/controllers/bar-assistant.js
7+++ /usr/lib/luna/system/luna-systemui/app/controllers/bar-assistant.js
8@@ -2426,7 +2426,7 @@
9 var f = function(stageController){
10 stageController.pushScene('poweroffalert',this);
11 }.bind(this);
12- var params = {name: 'PowerOffAlert', height: 175,lightweight:true};
13+ var params = {name: 'PowerOffAlert', height: 345,lightweight:true};
14 appController.createStageWithCallback(params,f,'popupalert');
15 }
16 //Close the Storage Alert and create a USB dashboard.
17--- .orig/usr/lib/luna/system/luna-systemui/app/views/poweroffalert/poweroffalert-scene.html
18+++ /usr/lib/luna/system/luna-systemui/app/views/poweroffalert/poweroffalert-scene.html
19@@ -1,5 +1,8 @@
20 <div class="system-notification power-off">
21 <div class="palm-notification-button affirmative" x-mojo-tap-highlight="immediate" id='flightmode' x-mojo-loc=''></div>
22- <div class="palm-notification-button negative" x-mojo-tap-highlight="immediate" id='poweroff' x-mojo-loc=''>Power</div>
23+ <div class="palm-notification-button alternate" x-mojo-tap-highlight="immediate" id='java' x-mojo-loc=''>Java-Services Restart</div>
24+ <div class="palm-notification-button alternate" x-mojo-tap-highlight="immediate" id='luna' x-mojo-loc=''>Luna Restart</div>
25+ <div class="palm-notification-button alternate" x-mojo-tap-highlight="immediate" id='restart' x-mojo-loc=''>Device Restart</div>
26+ <div class="palm-notification-button negative" x-mojo-tap-highlight="immediate" id='shutdown' x-mojo-loc=''>Shut Down</div>
27 <div class="palm-notification-button" x-mojo-tap-highlight="immediate" id='cancel' x-mojo-loc=''>Cancel</div>
28 </div>
29\ No newline at end of file
30--- .orig/usr/lib/luna/system/luna-systemui/app/controllers/poweroffalert-assistant.js
31+++ /usr/lib/luna/system/luna-systemui/app/controllers/poweroffalert-assistant.js
32@@ -7,7 +7,10 @@
33
34 setup: function() {
35 var flightMode = this.flightMode.bindAsEventListener(this);
36- var powerOff = this.powerOff.bindAsEventListener(this);
37+ var java = this.java.bindAsEventListener(this);
38+ var luna = this.luna.bindAsEventListener(this);
39+ var restart = this.restart.bindAsEventListener(this);
40+ var shutdown = this.shutdown.bindAsEventListener(this);
41 var cancel = this.cancel.bindAsEventListener(this);
42 var launchAirplaneModeHelp = this.launchAirplaneModeHelp.bindAsEventListener(this);
43 this.flightMode = this.barAssistant.getAirplaneMode();
44@@ -16,7 +19,10 @@
45 else
46 this.controller.get('flightmode').innerHTML = "<div class='info-icon' id='airplaneInfo' x-mojo-touch-feedback='immediate'></div>" + $L('Airplane Mode');
47
48- this.controller.get('poweroff').addEventListener(Mojo.Event.tap, powerOff);
49 this.controller.get('flightmode').addEventListener(Mojo.Event.tap, flightMode);
50+ this.controller.get('java').addEventListener(Mojo.Event.tap, java);
51+ this.controller.get('luna').addEventListener(Mojo.Event.tap, luna);
52+ this.controller.get('restart').addEventListener(Mojo.Event.tap, restart);
53+ this.controller.get('shutdown').addEventListener(Mojo.Event.tap, shutdown);
54 this.controller.get('cancel').addEventListener(Mojo.Event.tap, cancel);
55 this.controller.get('airplaneInfo').addEventListener(Mojo.Event.tap, launchAirplaneModeHelp);
56@@ -46,6 +52,32 @@
57 this.controller.window.close();
58 },
59
60+ java: function() {
61+ this.controller.serviceRequest('palm://ca.canucksoftware.systoolsmgr', {
62+ method: "javaRestart",
63+ parameters: {}
64+ });
65+ this.controller.window.close();
66+ },
67+
68+ luna: function() {
69+ this.controller.serviceRequest('palm://ca.canucksoftware.systoolsmgr', {
70+ method: "lunaRestart",
71+ parameters: {}
72+ });
73+ this.controller.window.close();
74+ },
75+
76+ restart: function() {
77+ this.barAssistant.machineReboot("Restart selected by User in PowerOff Dialog");
78+ this.controller.window.close();
79+ },
80+
81+ shutdown:function() {
82+ this.barAssistant.machineOffNow("Shutdown request by User");
83+ this.controller.window.close();
84+ },
85+
86 flightMode:function(event) {
87
88 var targetId = event.target.id;
  
11Name: Reset Options On Power Button Hold
2Version: 1.3.5-1
2Version: 1.3.5-3
33Author: Jason Robitaille
4Description: Goes straight to the reset options, skipping the airplaine mode part, on power button hold (MIT license)
4Description: On power button hold, it goes straight to the reset options, with airplaine mode added, and skips the swap-battery/shutdown prompt, (MIT license)
55
66--- .orig/usr/lib/luna/system/luna-systemui/app/controllers/bar-assistant.js
77+++ /usr/lib/luna/system/luna-systemui/app/controllers/bar-assistant.js
8@@ -308,7 +308,7 @@
9
10 if(!this.deviceLocked) {
11 var appController = Mojo.Controller.getAppController();
12- var stageController = appController.getStageProxy("PowerOffAlert");
13+ var stageController = appController.getStageProxy("ResetOptionAlert");
14 if(stageController)
15 stageController.delegateToSceneAssistant("cancelTimer");
16 }
17@@ -2346,7 +2346,7 @@
18 showPowerOffAlert: function() {
19
20 var appController = Mojo.Controller.getAppController();
21- var stageController = appController.getStageProxy("PowerOffAlert");
22+ var stageController = appController.getStageProxy("ResetOptionAlert");
23 // if the window already exists, don't do anything
24 if (!stageController) {
25 // Create a popuo alert
26@@ -2351,7 +2351,7 @@
27 if (!stageController) {
28 // Create a popuo alert
8@@ -2426,7 +2426,7 @@
299 var f = function(stageController){
30- stageController.pushScene('poweroffalert',this);
31+ stageController.pushScene('resetalert',this);
32 }.bind(this);
33 var params = {name: 'PowerOffAlert', height: 175,lightweight:true};
34 appController.createStageWithCallback(params,f,'popupalert');
35@@ -2353,7 +2353,7 @@
36 var f = function(stageController){
3710 stageController.pushScene('poweroffalert',this);
3811 }.bind(this);
3912- var params = {name: 'PowerOffAlert', height: 175,lightweight:true};
40+ var params = {name: 'ResetOptionAlert', height: 175,lightweight:true};
13+ var params = {name: 'PowerOffAlert', height: 230,lightweight:true};
4114 appController.createStageWithCallback(params,f,'popupalert');
4215 }
4316 //Close the Storage Alert and create a USB dashboard.
17--- .orig/usr/lib/luna/system/luna-systemui/app/views/poweroffalert/poweroffalert-scene.html
18+++ /usr/lib/luna/system/luna-systemui/app/views/poweroffalert/poweroffalert-scene.html
19@@ -1,5 +1,6 @@
20 <div class="system-notification power-off">
21 <div class="palm-notification-button affirmative" x-mojo-tap-highlight="immediate" id='flightmode' x-mojo-loc=''></div>
22- <div class="palm-notification-button negative" x-mojo-tap-highlight="immediate" id='poweroff' x-mojo-loc=''>Power</div>
23+ <div class="palm-notification-button alternate" x-mojo-tap-highlight="immediate" id='restart' x-mojo-loc=''>Restart</div>
24+ <div class="palm-notification-button negative" x-mojo-tap-highlight="immediate" id='shutdown' x-mojo-loc=''>Shut Down</div>
25 <div class="palm-notification-button" x-mojo-tap-highlight="immediate" id='cancel' x-mojo-loc=''>Cancel</div>
26 </div>
27\ No newline at end of file
28--- .orig/usr/lib/luna/system/luna-systemui/app/controllers/poweroffalert-assistant.js
29+++ /usr/lib/luna/system/luna-systemui/app/controllers/poweroffalert-assistant.js
30@@ -7,7 +7,8 @@
31
32 setup: function() {
33 var flightMode = this.flightMode.bindAsEventListener(this);
34- var powerOff = this.powerOff.bindAsEventListener(this);
35+ var restart = this.restart.bindAsEventListener(this);
36+ var shutdown = this.shutdown.bindAsEventListener(this);
37 var cancel = this.cancel.bindAsEventListener(this);
38 var launchAirplaneModeHelp = this.launchAirplaneModeHelp.bindAsEventListener(this);
39 this.flightMode = this.barAssistant.getAirplaneMode();
40@@ -16,7 +17,8 @@
41 else
42 this.controller.get('flightmode').innerHTML = "<div class='info-icon' id='airplaneInfo' x-mojo-touch-feedback='immediate'></div>" + $L('Airplane Mode');
43
44- this.controller.get('poweroff').addEventListener(Mojo.Event.tap, powerOff);
45 this.controller.get('flightmode').addEventListener(Mojo.Event.tap, flightMode);
46+ this.controller.get('restart').addEventListener(Mojo.Event.tap, restart);
47+ this.controller.get('shutdown').addEventListener(Mojo.Event.tap, shutdown);
48 this.controller.get('cancel').addEventListener(Mojo.Event.tap, cancel);
49 this.controller.get('airplaneInfo').addEventListener(Mojo.Event.tap, launchAirplaneModeHelp);
50@@ -46,6 +48,16 @@
51 this.controller.window.close();
52 },
53
54+ restart: function() {
55+ this.barAssistant.machineReboot("Restart selected by User in PowerOff Dialog");
56+ this.controller.window.close();
57+ },
58+
59+ shutdown:function() {
60+ this.barAssistant.machineOffNow("Shutdown request by User");
61+ this.controller.window.close();
62+ },
63+
64 flightMode:function(event) {
65
66 var targetId = event.target.id;
  
1diff --git a/usr/palm/applications/com.palm.app.phoneprefs/app/controllers/preflist-assistant.js b/usr/palm/applications/com.palm.app.phoneprefs/app/controllers/preflist-assistant.js
2index 4c1b0e2..97610bf 100644
3--- a/usr/palm/applications/com.palm.app.phoneprefs/app/controllers/preflist-assistant.js
4+++ b/usr/palm/applications/com.palm.app.phoneprefs/app/controllers/preflist-assistant.js
5@@ -224,7 +224,8 @@ var PreflistAssistant = Class.create({
1Name: Roam only
2Version: 1.3.5 -1
3Author: mamouton orginally created by wmv5
4Description: Enable roam only in phone preference screen
5
6--- .orig/usr/palm/applications/com.palm.app.phoneprefs/app/controllers/preflist-assistant.js
7+++ /usr/palm/applications/com.palm.app.phoneprefs/app/controllers/preflist-assistant.js
8@@ -233,7 +233,8 @@
69
710 this.voiceRoamingChoices = [
811 {label: this.carrierOnlyLabel,value: "homeonly"},
912- {label : $L("Automatic"),value: "any"}
1013+ {label : $L("Automatic"),value: "any"},
11+ {label : "Roam Only",value: "roamonly"}
14+ {label : $L("Roam Only"),value: "roamonly"}
1215 ],
1316
1417 this.voiceRoamingModel = {
15@@ -1230,6 +1231,11 @@ voiceNumberSetDone: function(payload){
16 $('dataroamingrow').show();
17 $('voiceRoamingRow').removeClassName('last');
18 }
19+ else if(payload.extended.mode == 'roamonly') {
20+ this.voiceRoamingModel.currentVoiceRoaming = "roamonly";
21+ $('dataroamingrow').show();
22+ $('voiceRoamingRow').removeClassName('last');
23+ }
24 else {
25 this.voiceRoamingModel.currentVoiceRoaming = "homeonly";
26 $('dataroamingrow').hide();
18@@ -1465,13 +1466,13 @@
19 // if update happens while we are open and band selection
20 // was previously allowed (assuming based on choices == 3)
21 // put things back
22- if (this.voiceRoamingChoices.length == 3) {
23- this.voiceRoamingChoices[1] = {
24- label: $L("Automatic"),
25- value: "any"
26- };
27- this.voiceRoamingChoices.pop();
28- }
29+ //if (this.voiceRoamingChoices.length == 3) {
30+ //this.voiceRoamingChoices[1] = {
31+ //label: $L("Automatic"),
32+ //value: "any"
33+ //};
34+ //this.voiceRoamingChoices.pop();
35+ //}
36
37 if (payload.extended.mode == 'any') {
38 this.voiceRoamingModel.currentVoiceRoaming = "any";
39@@ -1477,8 +1478,8 @@
40 this.voiceRoamingModel.currentVoiceRoaming = "any";
41 $('dataroamingrow').show();
42 } else {
43- this.voiceRoamingModel.currentVoiceRoaming = "homeonly";
44- $('dataroamingrow').hide();
45+ this.voiceRoamingModel.currentVoiceRoaming = "roamonly";
46+ $('dataroamingrow').show();
47 }
48 }
49 this.controller.modelChanged(this.voiceRoamingModel);
  
1Name: Enable USB Passthrough
2Version: 1.3.5-1
3Author: Ebag333
4Description: Removes the required code for USB Passthrough and adds the icon to the launcher.
5
6--- .orig/usr/palm/applications/com.palm.app.usbpassthrough/app/controllers/usbpassthrough-assistant.js
7+++ /usr/palm/applications/com.palm.app.usbpassthrough/app/controllers/usbpassthrough-assistant.js
8@@ -176,8 +176,8 @@
9
10 if (this.isActivationFile != true) {
11 $('masterGroup').style.display = 'none';
12- $('menuGroup').style.display = 'none'; // show menu
13- $('entryGroup').style.display = 'block';
14+ $('menuGroup').style.display = 'block'; // show menu
15+ $('entryGroup').style.display = 'none';
16 }
17 } catch (e) {
18 Mojo.Log.error ("main.activate(): exception: " + e)
19--- .orig/usr/palm/applications/com.palm.app.usbpassthrough/appinfo.json
20+++ /usr/palm/applications/com.palm.app.usbpassthrough/appinfo.json
21@@ -6,7 +6,7 @@
22 "icon": "icon.png",
23 "version": "1.0.27",
24 "noWindow": false,
25- "visible": false,
26+ "visible": true,
27 "vendor": "Palm, Inc."
28 }
29
  
11Name: Really Silent Ringer Switch Mute
22Version: 1.3.5.1-1
33Author: Jason Robitaille
4Description: Flicking the ringer switch to off will mute every aspect of the webOS, music and games included. (MIT license)
4Description: Flicking the ringer switch to off will mute every aspect of the webOS, music and games included. Will not mute alarms nor the phone speaker (though will mute ringtone). If a wired or wireless headset/headphones are connected, mute will be cancelled. (MIT license)
55
66--- .orig/usr/lib/luna/system/luna-systemui/app/controllers/bar-assistant.js
77+++ /usr/lib/luna/system/luna-systemui/app/controllers/bar-assistant.js
8@@ -2891,6 +2891,71 @@
8@@ -2891,6 +2891,41 @@
99 method: 'status',
1010 parameters: {"subscribe":true},
1111 onSuccess: this.handleVoiceDialingAudioNotifications.bind(this)});
1212+
1313+ this.controller.serviceRequest('palm://com.palm.audio/media', {
1414+ method:'status',
15+ parameters: {},
15+ parameters: {subscribe:true},
1616+ onSuccess: function(response) {
1717+ this.setMutedSystem(!response['ringer switch']);
1818+ this.setMutedRingtone(!response['ringer switch']);
19+ this.setMutedMedia(!response['ringer switch']);
20+ this.setMutedPhone(!response['ringer switch']);
19+ this.setMutedMedia(!response['ringer switch'] && (response.scenario=="media_back_speaker"));
2120+ }.bind(this)
22+ });
23+
24+ this.controller.serviceRequest('palm://com.palm.keys/switches', {
25+ method:'status',
26+ parameters: {subscribe:true},
27+ onSuccess: this.handleRingerNotifications.bind(this)
28+ });
29+},
30+
31+handleRingerNotifications: function(payload) {
32+ if(payload.key=="ringer") {
33+ if(payload.state=="up") { //unmute
34+ this.setMutedSystem(false);
35+ this.setMutedRingtone(false);
36+ this.setMutedMedia(false);
37+ this.setMutedPhone(false);
38+ } else if(payload.state=="down") { //mute
39+ this.setMutedSystem(true);
40+ this.setMutedRingtone(true);
41+ this.setMutedMedia(true);
42+ this.setMutedPhone(true);
43+ }
44+ }
45+},
46+
47+setMutedPhone: function(mute) {
48+ this.controller.serviceRequest('palm://com.palm.audio/phone', {
49+ method:'setMuted',
50+ parameters:{muted:mute}
5121+ });
5222+},
5323+
  
1Name: Add Date dd-MMM-yy
2Version: 1.3.5.2-1
3Author: AnthonyK
4Description: Adds date to the top bar next to the time in format dd-MMM-yy. (e.g 13-Jan-10)
5
6--- .orig/usr/lib/luna/system/luna-systemui/app/controllers/bar-assistant.js
7+++ /usr/lib/luna/system/luna-systemui/app/controllers/bar-assistant.js
8@@ -2552,7 +2552,8 @@
9 }
10 }
11 format = format.replace(/\s?a\s?/,"");
12- $('clock').innerHTML = Mojo.Format.formatDate(date, {time: format});
13+ var formatDate = Mojo.Format.formatDate(date, 'dd-MMM-yy');
14+ $('clock').innerHTML = formatDate+'&nbsp;&nbsp;&nbsp;&nbsp;'+Mojo.Format.formatDate(date, {time:format});
15 $('today').innerHTML = Mojo.Format.formatDate(date,{date:'short'});
16 },
17
  
1Name: YouTube Video Downloads
2Version: 1.3.5-2
3Author: Jason Robitaille
4Description: Adds a download option for videos in the YouTube app (MIT license)
5
6--- .orig/usr/palm/applications/com.palm.app.youtube/app/controllers/video-assistant.js
7+++ /usr/palm/applications/com.palm.app.youtube/app/controllers/video-assistant.js
8@@ -16,6 +16,8 @@
9 this.cmdMenuModel = {items: [{label: $L('More'), submenu:'more-menu'},
10 {label: $L('Share'), submenu:'share-menu'}]};
11
12+ this.moreMenuModel.items[2] = {label: $L('Download'), command:'download', disabled:false};
13+ this.currProgress = -1;
14 this.controller.setupWidget('more-menu', undefined, this.moreMenuModel);
15 this.controller.setupWidget('share-menu', undefined, this.shareMenuModel);
16 this.controller.setupWidget(Mojo.Menu.commandMenu, {menuClass: "no-fade"}, this.cmdMenuModel);
17@@ -53,6 +55,53 @@
18 }
19 event.stop(event);
20 }
21+ else if (event.command == 'download') {
22+ this.moreMenuModel.items[2] = {label: $L('-Downloading-'), command:'download', disabled:true};
23+ this.controller.modelChanged(this.moreMenuModel);
24+ var filename = this.video.title;
25+ filename = filename.replace(/\s/ig, " ");
26+ filename = filename.replace(/[^a-z0-9_-]/ig, "");
27+ //if(filename.length>30) {
28+ // filename = filename.substring(0, 29) + "...";
29+ //}
30+ this.dlRequest = this.controller.serviceRequest('palm://com.palm.downloadmanager/', {
31+ method: 'download',
32+ parameters: {
33+ target: this.video.link,
34+ mime: "video/mp4",
35+ targetFilename: filename + ".mp4",
36+ subscribe: true
37+ },
38+ onSuccess: function(response) {
39+ if(response.completed) {
40+ this.dlRequest.cancel();
41+ this.moreMenuModel.items[2] = {label: $L('Download'), command:'download', disabled:false};
42+ this.controller.modelChanged(this.moreMenuModel);
43+ this.controller.showBanner("Download finished!", "");
44+
45+ } else {
46+ if(response.amountReceived && response.amountTotal) {
47+ var percent = (response.amountReceived / response.amountTotal)*100;
48+ percent = Math.round(percent);
49+ if(percent!=NaN) {
50+ if(this.currProgress != percent) {
51+ this.currProgress = percent;
52+ this.controller.showBanner("Downloading: " + percent + "%", "");
53+ }
54+ }
55+ }
56+ }
57+ }.bind(this),
58+ onFailure: function(fail) {
59+ this.dlRequest.cancel();
60+ Mojo.Controller.errorDialog(fail.errorText);
61+ this.moreMenuModel.items[2] = {label: $L('Download'), command:'download', disabled:false};
62+ this.controller.modelChanged(this.moreMenuModel);
63+ this.currProgress = -1;
64+ }.bind(this)
65+ });
66+ event.stop(event);
67+ }
68 else if (event.command == 'related') {
69 if (this.video.related_url && this.video.related_url != "") {
70 Mojo.Controller.stageController.pushScene("search", this.video.related_url, "related");
71@@ -86,7 +135,8 @@
72 moreMenuModel: {label: $L('More'),
73 items: [
74 {label: $L('More from This Author'), command:'more'},
75- {label: $L('Related Videos'), command:'related' }
76+ {label: $L('Related Videos'), command:'related' },
77+ {label: $L('Download'), command:'download' }
78 ]},
79
80 shareMenuModel: {label: $L('Share'),