Difference between revisions of "Messaging Mods"

From WebOS Internals
Jump to navigation Jump to search
(→‎Character Counter: added image)
(→‎Character Counter: removed source segments and made patch)
Line 110: Line 110:
 
== Procedure ==
 
== Procedure ==
  
''This modification is the same for both files, just inserted on different lines.''<br>
+
Run the following commands:
'''app/controllers/chatview-assistant.js''' Line 157:<br>
 
'''app/controllers/compose-assistant.js''' Line 115:
 
<source lang="JavaScript">
 
},
 
charCounter: {
 
charCountContainer: this.controller.get('charCounterContainer'),
 
charCountElement: this.controller.get('charCounter'),
 
setTextFieldValueFn: this.setTextFieldValue.bind(this)
 
</source>
 
  
 
+
''In this example, I have the patch file located in my home directory under '''patches'''''
'''app/utilities/CharacterCounter.js''' Line 40:
+
<source lang="bash">
<source lang="JavaScript">
+
cd /
var charCounterUI = {
+
sudo patch -p0 --backup-if-mismatch < ~/patches/charcounter.patch
containerElement: null,
 
valueElement: null
 
};
 
 
</source>
 
</source>
  
:Line 188:
+
This is what you should see if it ran properly:
<source lang="JavaScript">
+
<source lang="text">
var setCurrentCharCount = function(newCharCount) {
+
patching file /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js
if(charCounterUI.valueElement) {
+
patching file /usr/palm/applications/com.palm.app.messaging/app/controllers/compose-assistant.js
if (newCharCount > 0)
+
patching file /usr/palm/applications/com.palm.app.messaging/app/utilities/CharacterCounter.js
charCounterUI.valueElement.update(newCharCount);
+
patching file /usr/palm/applications/com.palm.app.messaging/app/views/chatview/chatview-scene.html
else
+
patching file /usr/palm/applications/com.palm.app.messaging/app/views/compose/compose-scene.html
charCounterUI.valueElement.update('');
+
patching file /usr/palm/applications/com.palm.app.messaging/stylesheets/messaging.css
}
 
if(charCounterUI.containerElement) {
 
if (newCharCount == 0) {
 
if (charCounterUI.containerElement.visible())
 
charCounterUI.containerElement.hide();
 
} else {
 
if (!charCounterUI.containerElement.visible())
 
charCounterUI.containerElement.show();
 
}
 
}
 
};
 
 
</source>
 
</source>
  
:Line 286:
+
These modifications will require LunaSysMgr to be restarted. A rescan will not work. After you've run the commands above, run one more command:
<source lang="JavaScript">
+
<source lang="bash">
if(params.charCounter) {
+
pkill LunaSysMgr
charCounterUI.containerElement = params.charCounter.charCountContainer;
 
charCounterUI.valueElement = params.charCounter.charCountElement;
 
if(params.charCounter.setTextFieldValueFn) {
 
setTextFieldValueFn = params.charCounter.setTextFieldValueFn;
 
}
 
}
 
</source>
 
 
 
:Line 331:
 
<source lang="JavaScript">
 
setCurrentCharCount(rawCharacterData.count);
 
 
</source>
 
</source>
  
 +
== charcounter.patch ==
  
''Again, same code for both files, inserted on different lines.''<br>
+
<source lang="diff">
'''app/views/chatview/chatview-scene.html''' Line 25:<br>
+
diff -ur /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js /usr/palm/app-modified/com.palm.app.messaging/app/controllers/chatview-assistant.js
'''app/views/compose/compose-scene.html''' Line 8:
+
--- /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js 2009-07-18 00:22:14.000000000 -0500
<source lang="HTML4Strict">
+
+++ /usr/palm/app-modified/com.palm.app.messaging/app/controllers/chatview-assistant.js 2009-07-23 23:13:19.000000000 -0500
<div id="charCounterContainer">
+
@@ -160,6 +160,11 @@
<div id="charCounter">
+
segmentCountContainer: this.controller.get('segmentCounterContainer'),
</div>
+
segmentCountElement: this.controller.get('segmentCounter'),
</div>
+
setTextFieldValueFn: this.setTextFieldValue.bind(this)
</source>
+
+ },
 
+
+ charCounter: {
 
+
+ charCountContainer: this.controller.get('charCounterContainer'),
'''stylesheets/messaging.css''' Line 839:
+
+ charCountElement: this.controller.get('charCounter'),
<source lang="CSS">
+
+ setTextFieldValueFn: this.setTextFieldValue.bind(this)
#messageContainer #charCounterContainer {
+
}
line-height: 20px;
+
};
display:block;
+
height: 20px;
+
diff -ur /usr/palm/applications/com.palm.app.messaging/app/controllers/compose-assistant.js /usr/palm/app-modified/com.palm.app.messaging/app/controllers/compose-assistant.js
border-width: 0px 10px 0px 9px;
+
--- /usr/palm/applications/com.palm.app.messaging/app/controllers/compose-assistant.js 2009-07-18 00:22:14.000000000 -0500
-webkit-border-image: url(../images/message-segment-badge.png) 0 10 0 9 stretch stretch;
+
+++ /usr/palm/app-modified/com.palm.app.messaging/app/controllers/compose-assistant.js 2009-07-23 23:14:11.000000000 -0500
position: absolute;
+
@@ -140,6 +140,11 @@
z-index: 3;
+
segmentCountContainer: this.controller.get('segmentCounterContainer'),
top: 2px;
+
segmentCountElement: this.controller.get('segmentCounter'),
left: 2px;
+
setTextFieldValueFn: this.setTextFieldValue.bind(this)
}
+
+ },
#messageContainer #charCounterContainer #charCounter {
+
+ charCounter: {
font-size: 12px;
+
+ charCountContainer: this.controller.get('charCounterContainer'),
font-weight: bold;
+
+ charCountElement: this.controller.get('charCounter'),
color: #679BC2;
+
+ setTextFieldValueFn: this.setTextFieldValue.bind(this)
margin: 0px -4px 3px -3px;
+
}
}
+
};
</source>
+
If you don't like the location of the character counter (I have it configured for the top left of the text area), you can modify the '''#messageContainer #charCounterContainer''' section above.
+
diff -ur /usr/palm/applications/com.palm.app.messaging/app/utilities/CharacterCounter.js /usr/palm/app-modified/com.palm.app.messaging/app/utilities/CharacterCounter.js
 
+
--- /usr/palm/applications/com.palm.app.messaging/app/utilities/CharacterCounter.js 2009-07-18 00:22:14.000000000 -0500
 
+
+++ /usr/palm/app-modified/com.palm.app.messaging/app/utilities/CharacterCounter.js 2009-07-23 23:47:32.000000000 -0500
These modifications will require LunaSysMgr to be restarted. A rescan will not work. After you've made the modifications listed above, run the following command:
+
@@ -39,6 +39,10 @@
<source lang="bash">
+
containerElement: null,
pkill LunaSysMgr
+
valueElement: null
 +
};
 +
+ var charCounterUI = {
 +
+ containerElement: null,
 +
+ valueElement: null
 +
+ };
 +
 +
 +
// TODO: eventually we might want to implement some cleverness that counts
 +
@@ -185,6 +189,20 @@
 +
}
 +
};
 +
 +
+ var setCurrentCharCount = function(newCharCount) {
 +
+ if(charCounterUI.valueElement)
 +
+ charCounterUI.valueElement.update(newCharCount);
 +
+ if(charCounterUI.containerElement) {
 +
+ if (newCharCount == 0) {
 +
+ if (charCounterUI.containerElement.visible())
 +
+ charCounterUI.containerElement.hide();
 +
+ } else {
 +
+ if (!charCounterUI.containerElement.visible())
 +
+ charCounterUI.containerElement.show();
 +
+ }
 +
+ }
 +
+ };
 +
+
 +
return {
 +
 +
init: function(controller,platform,textElement,params) {
 +
@@ -265,7 +283,13 @@
 +
setTextFieldValueFn = params.segmentCounter.setTextFieldValueFn;
 +
}
 +
}
 +
-
 +
+ if(params.charCounter) {
 +
+ charCounterUI.containerElement = params.charCounter.charCountContainer;
 +
+ charCounterUI.valueElement = params.charCounter.charCountElement;
 +
+ if(params.charCounter.setTextFieldValueFn) {
 +
+ setTextFieldValueFn = params.charCounter.setTextFieldValueFn;
 +
+ }
 +
+ }
 +
}
 +
},
 +
 +
@@ -304,6 +328,7 @@
 +
var rawCharacterData = getRawCharacterData();
 +
var messageData = parseMessage(rawCharacterData.message,rawCharacterData.count,_maxLength,true);
 +
adjustedCharacterCount = messageData.adjustedCharacterCount;
 +
+ setCurrentCharCount(rawCharacterData.count);
 +
if (_maxLength > 0)
 +
setOverLimit(messageData.isOverLimit);
 +
setCurrentSegmentCount(messageData.segmentCount);
 +
diff -ur /usr/palm/applications/com.palm.app.messaging/app/views/chatview/chatview-scene.html /usr/palm/app-modified/com.palm.app.messaging/app/views/chatview/chatview-scene.html
 +
--- /usr/palm/applications/com.palm.app.messaging/app/views/chatview/chatview-scene.html 2009-07-18 00:22:14.000000000 -0500
 +
+++ /usr/palm/app-modified/com.palm.app.messaging/app/views/chatview/chatview-scene.html 2009-07-23 23:16:55.000000000 -0500
 +
@@ -22,6 +22,10 @@
 +
<div id="messageContainer" class='palm-row'>
 +
<div class="palm-row-wrapper textfield-group focused">
 +
<div class="title">
 +
+ <div id="charCounterContainer">
 +
+ <div id="charCounter">
 +
+ </div>
 +
+ </div>
 +
<div id="attachmentContainer" style="display: none;">
 +
<div id="cancelAttachment">
 +
</div>
 +
diff -ur /usr/palm/applications/com.palm.app.messaging/app/views/compose/compose-scene.html /usr/palm/app-modified/com.palm.app.messaging/app/views/compose/compose-scene.html
 +
--- /usr/palm/applications/com.palm.app.messaging/app/views/compose/compose-scene.html 2009-07-18 00:22:14.000000000 -0500
 +
+++ /usr/palm/app-modified/com.palm.app.messaging/app/views/compose/compose-scene.html 2009-07-23 23:17:14.000000000 -0500
 +
@@ -6,6 +6,10 @@
 +
<div id="messageContainer" class='palm-row'>
 +
<div class="palm-row-wrapper textfield-group focused">
 +
<div class="title">
 +
+ <div id="charCounterContainer">
 +
+ <div id="charCounter">
 +
+ </div>
 +
+ </div>
 +
<div id="attachmentContainer" style="display: none;">
 +
<div id="cancelAttachment">
 +
</div>
 +
diff -ur /usr/palm/applications/com.palm.app.messaging/stylesheets/messaging.css /usr/palm/app-modified/com.palm.app.messaging/stylesheets/messaging.css
 +
--- /usr/palm/applications/com.palm.app.messaging/stylesheets/messaging.css 2009-07-18 00:22:22.000000000 -0500
 +
+++ /usr/palm/app-modified/com.palm.app.messaging/stylesheets/messaging.css 2009-07-23 23:19:25.000000000 -0500
 +
@@ -837,6 +837,23 @@
 +
#messageContainer.palm-row .icon.right {
 +
height: 61px;
 +
}
 +
+#messageContainer #charCounterContainer {
 +
+ line-height: 20px;
 +
+ display:block;
 +
+ height: 20px;
 +
+ border-width: 0px 10px 0px 9px;
 +
+ -webkit-border-image: url(../images/message-segment-badge.png) 0 10 0 9 stretch stretch;
 +
+ position: absolute;
 +
+ z-index: 3;
 +
+ top: 2px;
 +
+ left: 2px;
 +
+}
 +
+#messageContainer #charCounterContainer #charCounter {
 +
+ font-size: 12px;
 +
+ font-weight: bold;
 +
+ color: #679BC2;
 +
+ margin: 0px -4px 3px -3px;
 +
+}
 +
#messageContainer #attachmentContainer {
 +
position: relative;
 +
margin-top:10px;
 
</source>
 
</source>
  

Revision as of 07:18, 24 July 2009

All files are located in /usr/palm/applications/com.palm.app.messaging/

Add Timestamps to All Messages

Introduction

A number of users have requested adding timestamps to each message that arrives on the device. Palm actually goes out of their way to group messages that have arrived during various time intervals, but if you'd prefer to see a timestamp on each message, simply follow the instructions below.

Procedure

  1. Gain root access to your device
  2. Remount the file system as read/write
  3. cd to /usr/palm/applications/com.palm.app.messaging/app/controllers/
  4. Backup chatview-assistant.js (just to be safe)
  5. Open chatview-assistant.js and comment out the following lines:
    • 1169 - line that starts with: if(!ChatFlags.
    • 1177 - line that starts with: if(today-msg.
    • 1179 - first closing bracket on its own line: }
    • 1180 - second closing bracket on its own line: }
  6. Save the file and exit the editor
  7. Remount the file system as read-only
  8. Logout of your root session
  9. Reboot the device

You should now see a full timestamp on all received messages.

Acknowledgements

Thanks to tk102 and scuba_steve on PreCentral for the mod.


New Card For Each Conversation

Introduction

The message app can be a pain when you have multiple conversations going on. You often have to swipe back and then pick someone else. It gets annoying fast. This modification modifies the messaging application so that a new card is created whenever you click into a conversation.

Procedure

Edit /usr/palm/applications/com.palm.app.messaging/app/controllers/listview-assistant.js and replace the launchChatView function with the following function:

launchChatView: function(chatThreadId) {
    //Need to jump to that stage if it exists
    var stageController = Mojo.Controller.appController.getStageController("messaging"+chatThreadId);
        if (stageController) {
            stageController.activate();
            return;
        }

    var params = {name: 'messaging' + chatThreadId,
            lightweight: Mojo.Controller.appInfo.lwStages
    };

    var callback = function(controller) {
        controller.pushScene('chatview',chatThreadId,{
                    focusWindow: true
                });        
    };

    Mojo.Controller.getAppController().createStageWithCallback(params, callback); //doesnt create ifit exists sooo
  },

  clearListBadgeForChatThreadId: function(chatThreadId) {
    var badgeContainers = ["buddyBageContainer","historyBageContainer"];
    var listItem;
    for (var i = 0; i < badgeContainers.length; i++) {
        listItem = this.controller.get(badgeContainers[i] + chatThreadId);
        if (listItem && !listItem.hasClassName('hide-unread-count')) {
            listItem.addClassName('hide-unread-count');
        }
    }    
  },

Now in /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js, comment out lines 246 and 247. This change will ensure that if you use the "back gesture" in a chat, the application doesn't bring you back to the conversation list...or do anything else.

To "comment out" a line, add // at the beginning. Example:

printf("This is code");
//printf("This is commented out");

Concerns

There is some delay in creating the new cards. I'm not sure why though. As stated above, the cards are only opened when you click into the conversation. Responding to a notification will result in the reuse of the buddy list window, and you have disabled the back gesture.

Acknolwedgements

Thanks to mikedg for the mod.

chris_phelps is continuing to work on this modification to get it working more completely. The first step is to clean up the other launchChatNNN functionality in app-assistant.js which accepts Luna System calls from the notification dashboard items which are created when a new message is received on the phone. These code modifications are being tested currently, and will be posted when we figure out how to clear the new message counters in the main listview-assistant.js.


Character Counter

Character Counter

Introduction

One of the features I liked about my old Treo was the character counter built-in to the messaging application. I thought it would be useful on the Pre, so I modified the messaging application to show the current character count. I made this a separate page from the other modifications because it requires many code changes. Maybe the other messaging modifications could be rolled into this page as well.

Procedure

Run the following commands:

In this example, I have the patch file located in my home directory under patches <source lang="bash"> cd / sudo patch -p0 --backup-if-mismatch < ~/patches/charcounter.patch </source>

This is what you should see if it ran properly: <source lang="text"> patching file /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js patching file /usr/palm/applications/com.palm.app.messaging/app/controllers/compose-assistant.js patching file /usr/palm/applications/com.palm.app.messaging/app/utilities/CharacterCounter.js patching file /usr/palm/applications/com.palm.app.messaging/app/views/chatview/chatview-scene.html patching file /usr/palm/applications/com.palm.app.messaging/app/views/compose/compose-scene.html patching file /usr/palm/applications/com.palm.app.messaging/stylesheets/messaging.css </source>

These modifications will require LunaSysMgr to be restarted. A rescan will not work. After you've run the commands above, run one more command: <source lang="bash"> pkill LunaSysMgr </source>

charcounter.patch

<source lang="diff"> diff -ur /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js /usr/palm/app-modified/com.palm.app.messaging/app/controllers/chatview-assistant.js --- /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js 2009-07-18 00:22:14.000000000 -0500 +++ /usr/palm/app-modified/com.palm.app.messaging/app/controllers/chatview-assistant.js 2009-07-23 23:13:19.000000000 -0500 @@ -160,6 +160,11 @@

				segmentCountContainer: this.controller.get('segmentCounterContainer'),
				segmentCountElement: this.controller.get('segmentCounter'),
				setTextFieldValueFn: this.setTextFieldValue.bind(this)

+ }, + charCounter: { + charCountContainer: this.controller.get('charCounterContainer'), + charCountElement: this.controller.get('charCounter'), + setTextFieldValueFn: this.setTextFieldValue.bind(this)

			}
		};

diff -ur /usr/palm/applications/com.palm.app.messaging/app/controllers/compose-assistant.js /usr/palm/app-modified/com.palm.app.messaging/app/controllers/compose-assistant.js --- /usr/palm/applications/com.palm.app.messaging/app/controllers/compose-assistant.js 2009-07-18 00:22:14.000000000 -0500 +++ /usr/palm/app-modified/com.palm.app.messaging/app/controllers/compose-assistant.js 2009-07-23 23:14:11.000000000 -0500 @@ -140,6 +140,11 @@

			segmentCountContainer: this.controller.get('segmentCounterContainer'),
			segmentCountElement: this.controller.get('segmentCounter'),
			setTextFieldValueFn: this.setTextFieldValue.bind(this)

+ }, + charCounter: { + charCountContainer: this.controller.get('charCounterContainer'), + charCountElement: this.controller.get('charCounter'), + setTextFieldValueFn: this.setTextFieldValue.bind(this)

		}
	};

diff -ur /usr/palm/applications/com.palm.app.messaging/app/utilities/CharacterCounter.js /usr/palm/app-modified/com.palm.app.messaging/app/utilities/CharacterCounter.js --- /usr/palm/applications/com.palm.app.messaging/app/utilities/CharacterCounter.js 2009-07-18 00:22:14.000000000 -0500 +++ /usr/palm/app-modified/com.palm.app.messaging/app/utilities/CharacterCounter.js 2009-07-23 23:47:32.000000000 -0500 @@ -39,6 +39,10 @@

				containerElement: null,
				valueElement: null
			};

+ var charCounterUI = { + containerElement: null, + valueElement: null + };


			// TODO: eventually we might want to implement some cleverness that counts

@@ -185,6 +189,20 @@

				}
			};
			

+ var setCurrentCharCount = function(newCharCount) { + if(charCounterUI.valueElement) + charCounterUI.valueElement.update(newCharCount); + if(charCounterUI.containerElement) { + if (newCharCount == 0) { + if (charCounterUI.containerElement.visible()) + charCounterUI.containerElement.hide(); + } else { + if (!charCounterUI.containerElement.visible()) + charCounterUI.containerElement.show(); + } + } + }; +

			return {
				
				init: function(controller,platform,textElement,params) {

@@ -265,7 +283,13 @@

								setTextFieldValueFn = params.segmentCounter.setTextFieldValueFn;
							}						
						}

- + if(params.charCounter) { + charCounterUI.containerElement = params.charCounter.charCountContainer; + charCounterUI.valueElement = params.charCounter.charCountElement; + if(params.charCounter.setTextFieldValueFn) { + setTextFieldValueFn = params.charCounter.setTextFieldValueFn; + } + }

					}					
				},
				

@@ -304,6 +328,7 @@

					var rawCharacterData = getRawCharacterData();
					var messageData = parseMessage(rawCharacterData.message,rawCharacterData.count,_maxLength,true);
					adjustedCharacterCount = messageData.adjustedCharacterCount;

+ setCurrentCharCount(rawCharacterData.count);

					if (_maxLength > 0)
						setOverLimit(messageData.isOverLimit);
					setCurrentSegmentCount(messageData.segmentCount);				

diff -ur /usr/palm/applications/com.palm.app.messaging/app/views/chatview/chatview-scene.html /usr/palm/app-modified/com.palm.app.messaging/app/views/chatview/chatview-scene.html --- /usr/palm/applications/com.palm.app.messaging/app/views/chatview/chatview-scene.html 2009-07-18 00:22:14.000000000 -0500 +++ /usr/palm/app-modified/com.palm.app.messaging/app/views/chatview/chatview-scene.html 2009-07-23 23:16:55.000000000 -0500 @@ -22,6 +22,10 @@

+
+
+
+