Difference between revisions of "Messaging Mods"

From WebOS Internals
Jump to navigation Jump to search
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
All files are located in '''/usr/palm/applications/com.palm.app.messaging/'''
 
All files are located in '''/usr/palm/applications/com.palm.app.messaging/'''
  
[[Adding Timestamps to All Received Messages]]
+
[[Patch Messaging Adding Timestamps to All Received Messages]]
  
 +
[[Patch Messaging New Cards For Each Conversation]]
  
 +
[[Patch Messaging Character Counter]]
  
[[New Cards For Each Messaging Conversation]]
+
[[Messaging Mod Force Offline Send Without Dialog]]
  
= Character Counter =
+
[[Patch Messaging Forward Messages]]
 
 
[[Image:Messaging_CharacterCounter.jpg|border|right|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 @@
 
<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>
 
 
 
 
 
 
 
Post os1.1 update, you will need to swap in the following for the utilities/CharacterCounter.js section: (mod confirmed working by tcurtin, 7/24/09)
 
 
 
<source lang="diff">
 
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-24 12:20:12.000000000 -0500
 
@@ -39,6 +39,11 @@
 
                                containerElement: null,
 
                                valueElement: null
 
                        };
 
+                      var charCounterUI = {
 
+                              containerElement: null,
 
+                              valueElement: null
 
+                      };
 
+
 
 
 
 
 
                        // TODO: eventually we might want to implement some cleverness that counts
 
@@ -51,6 +56,10 @@
 
                                var message = textAreaElement.value;
 
                                return {count:message.length, message:message};
 
                        };
 
+                      var charCounterUI = {
 
+                              containerElement: null,
 
+                              valueElement: null
 
+                      };
 
 
 
                        var setOverLimit = function(isOver) {
 
                                if (isOver) {
 
@@ -185,6 +194,21 @@
 
                                }
 
                        };
 
 
 
+                      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 +289,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 +334,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);
 
</source>
 
 
 
== Notes ==
 
[[Forward_Messages]] will not work when applying this patch. Please take a look into this. -thatdude
 
 
 
== Acknowledgements ==
 
 
 
* [[User:HattCzech|HattCzech]]
 
 
 
----
 
 
 
= Force Offline Send Without Dialog =
 
 
 
<code><pre>
 
sudo mount -o remount,rw /
 
sudo vi /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js
 
/forceSendIfOffline =
 
</pre></code>
 
 
 
Change the line to true (below) , writequit , remount, reload , enjoy
 
 
 
<code><pre>
 
forceSendIfOffline = true;
 
:wq
 
sudo mount -o remount,ro /
 
sudo stop LunaSysMgr ; sudo start LunaSysMgr
 
</pre></code>
 

Latest revision as of 00:13, 2 August 2009