Difference between revisions of "Patch Messaging Forward Messages"
Hopspitfire (talk | contribs) |
JackieRipper (talk | contribs) |
||
Line 1: | Line 1: | ||
− | '''Description:''' This mod will allow you to forward a message by simply tapping on the text of a message in the chat view. It does not interfere with the current attachment-tapping behavior. Tapping an attached image will still prompt for a save, etc. | + | '''Description:''' This mod will allow you to forward a message by simply tapping on the text of a message in the chat view. It does not interfere with the current attachment-tapping behavior. Tapping an attached image ask if you want to forward. Selecting "No" will still prompt for a save, etc., while selecting "Yes" will open a the compose dialog, with the message and attachments pre-populated. |
− | ''' | + | '''Note:''' There is a patch available for the mod. Please see [[Applying Patches]] for instructions. |
==Step One: Create the model== | ==Step One: Create the model== | ||
Line 7: | Line 7: | ||
Back up and modify /usr/palm/applications/com.palm.app.messaging/app/models/messaging-luna-service.js. | Back up and modify /usr/palm/applications/com.palm.app.messaging/app/models/messaging-luna-service.js. | ||
− | After line | + | After line 10, add the following: |
<pre><nowiki> | <pre><nowiki> | ||
forwardIdentifier: 'palm://com.palm.applicationManager', | forwardIdentifier: 'palm://com.palm.applicationManager', | ||
− | forwardMessage: function(sceneController,messageText) { | + | forwardMessage: function(sceneController,messageText,attachment) { |
− | + | var opts = { | |
− | + | method: 'launch', | |
− | + | parameters: { | |
− | + | id: 'com.palm.app.messaging', | |
− | + | params: { | |
− | + | } | |
− | + | } | |
− | + | }; | |
− | + | if (messageText) | |
+ | opts.parameters.params.messageText = 'FWD: '+messageText; | ||
+ | if (attachment) | ||
+ | opts.parameters.params.attachment = attachment; | ||
+ | return sceneController.serviceRequest(MessagingMojoService.forwardIdentifier,opts); | ||
}, | }, | ||
Line 29: | Line 33: | ||
Back up and modify /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js | Back up and modify /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js | ||
− | Find | + | Find the function '''handleMessageTap''', starting on line 1480: |
+ | |||
+ | The first few lines: | ||
+ | <pre><nowiki> | ||
+ | handleMessageTap: function(event){ | ||
+ | var eventTarget = this.controller.get(event.originalEvent.target); | ||
+ | |||
+ | var mmsImageTarget = MessagingUtils.getClassUpChain(eventTarget,'MMSImageObject'); | ||
+ | if(mmsImageTarget) { | ||
+ | </nowiki></pre> | ||
+ | |||
+ | And the last few lines: | ||
+ | <pre><nowiki> | ||
+ | |||
+ | MessagingMojoService.getMessageErrorInfo(this.controller, messageData.messageId, messageData.flags, this.handleMessageErrorPopup.bind(this,messageData)); | ||
+ | |||
+ | }.bind(this), false); | ||
+ | }, | ||
+ | </nowiki></pre> | ||
+ | |||
+ | |||
+ | Replace the entire function with the following: | ||
<pre><nowiki> | <pre><nowiki> | ||
+ | handleMessageTap: function(event){ | ||
+ | var eventTarget = this.controller.get(event.originalEvent.target); | ||
+ | |||
+ | var mmsImageTarget = MessagingUtils.getClassUpChain(eventTarget,'MMSImageObject'); | ||
+ | if(mmsImageTarget) { | ||
+ | var imagePath = mmsImageTarget.getAttribute('originalSrc'); | ||
+ | this.controller.showAlertDialog({ | ||
+ | onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, imagePath);} else {this.controller.stageController.pushScene('imageview', imagePath);}}, | ||
+ | title: $L("Forward Message"), | ||
+ | message: $L("Do you want to forward this message?"), | ||
+ | choices:[ | ||
+ | {label:$L("Yes"), value:"forward", type:"affirmative"}, | ||
+ | {label:$L("No"), value:"", type:"negative"} | ||
+ | ] | ||
+ | }); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | var mmsVideoTarget = MessagingUtils.getClassUpChain(eventTarget,'mms-video'); | ||
+ | if(mmsVideoTarget) { | ||
+ | var videoPath = mmsVideoTarget.getAttribute('filePath'); | ||
+ | var videoName = mmsVideoTarget.getAttribute('fileInfo'); | ||
+ | |||
+ | var args = { | ||
+ | appId: "com.palm.app.videoplayer", | ||
+ | name: "nowplaying" | ||
+ | }; | ||
+ | var params = { | ||
+ | target: videoPath, | ||
+ | title: videoName | ||
+ | }; | ||
+ | this.controller.showAlertDialog({ | ||
+ | onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, videoPath);} else {this.controller.stageController.pushScene(args, params);}}, | ||
+ | title: $L("Forward Message"), | ||
+ | message: $L("Do you want to forward this message?"), | ||
+ | choices:[ | ||
+ | {label:$L("Yes"), value:"forward", type:"affirmative"}, | ||
+ | {label:$L("No"), value:"", type:"negative"} | ||
+ | ] | ||
+ | }); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | var mmsVcardTarget = MessagingUtils.getClassUpChain(eventTarget,'mms-vcard'); | ||
+ | if(mmsVcardTarget) { | ||
+ | var filePath = mmsVcardTarget.getAttribute('filePath'); | ||
+ | this.controller.showAlertDialog({ | ||
+ | onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, filePath);} else {this.controller.stageController.pushScene('mmsTextAttachment', filePath);}}, | ||
+ | title: $L("Forward Message"), | ||
+ | message: $L("Do you want to forward this message?"), | ||
+ | choices:[ | ||
+ | {label:$L("Yes"), value:"forward", type:"affirmative"}, | ||
+ | {label:$L("No"), value:"", type:"negative"} | ||
+ | ] | ||
+ | }); | ||
+ | return; | ||
+ | } | ||
+ | |||
var mmsVcalTarget = MessagingUtils.getClassUpChain(eventTarget,'mms-vcal'); | var mmsVcalTarget = MessagingUtils.getClassUpChain(eventTarget,'mms-vcal'); | ||
if(mmsVcalTarget) { | if(mmsVcalTarget) { | ||
var filePath = mmsVcalTarget.getAttribute('filePath'); | var filePath = mmsVcalTarget.getAttribute('filePath'); | ||
− | this.controller.stageController.pushScene('mmsTextAttachment', filePath); | + | this.controller.showAlertDialog({ |
+ | onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, filePath);} else {this.controller.stageController.pushScene('mmsTextAttachment', filePath);}}, | ||
+ | title: $L("Forward Message"), | ||
+ | message: $L("Do you want to forward this message?"), | ||
+ | choices:[ | ||
+ | {label:$L("Yes"), value:"forward", type:"affirmative"}, | ||
+ | {label:$L("No"), value:"", type:"negative"} | ||
+ | ] | ||
+ | }); | ||
return; | return; | ||
} | } | ||
+ | |||
+ | if (!mmsImageTarget && !mmsVideoTarget && !mmsVcardTarget && !mmsVcalTarget) { | ||
+ | this.controller.showAlertDialog({ | ||
+ | onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, '');}}, | ||
+ | title: $L("Forward Message"), | ||
+ | message: $L("Do you want to forward this message?"), | ||
+ | choices:[ | ||
+ | {label:$L("Yes"), value:"forward", type:"affirmative"}, | ||
+ | {label:$L("No"), value:"", type:"negative"} | ||
+ | ] | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | MessagingUtils.simpleListClick(this.controller.get(event.originalEvent.target), "chatRow", function(targetRow){ | ||
+ | var messageData = { | ||
+ | errorCode: targetRow.getAttribute("errorCode"), | ||
+ | status: targetRow.getAttribute("status"), | ||
+ | messageId: targetRow.getAttribute("messageId"), | ||
+ | flags: targetRow.getAttribute("flags"), | ||
+ | messageType: targetRow.getAttribute("messageType") | ||
+ | }; | ||
+ | |||
+ | MessagingMojoService.getMessageErrorInfo(this.controller, messageData.messageId, messageData.flags, this.handleMessageErrorPopup.bind(this,messageData)); | ||
+ | |||
+ | }.bind(this), false); | ||
+ | }, | ||
</nowiki></pre> | </nowiki></pre> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | Reboot for | + | Reboot for changes to take effect. |
== Usage== | == Usage== | ||
− | To forward a message, open the Messaging application, tap a chat thread, then tap an individual message. If the message has an attachment, | + | To forward a message, open the Messaging application, tap a chat thread, then tap an individual message. A dialog will pop up asking if you would like to forward. If the message has an attachment, it will be forwarded, as well. A new compose card will open with the message text pre-populated. Simply choose the recipient(s). |
= Credits= | = Credits= | ||
− | Submitted by JackieRipper | + | Submitted by JackieRipper and Atlanta |
Revision as of 07:43, 26 July 2009
Description: This mod will allow you to forward a message by simply tapping on the text of a message in the chat view. It does not interfere with the current attachment-tapping behavior. Tapping an attached image ask if you want to forward. Selecting "No" will still prompt for a save, etc., while selecting "Yes" will open a the compose dialog, with the message and attachments pre-populated.
Note: There is a patch available for the mod. Please see Applying Patches for instructions.
Step One: Create the model
Back up and modify /usr/palm/applications/com.palm.app.messaging/app/models/messaging-luna-service.js.
After line 10, add the following:
forwardIdentifier: 'palm://com.palm.applicationManager', forwardMessage: function(sceneController,messageText,attachment) { var opts = { method: 'launch', parameters: { id: 'com.palm.app.messaging', params: { } } }; if (messageText) opts.parameters.params.messageText = 'FWD: '+messageText; if (attachment) opts.parameters.params.attachment = attachment; return sceneController.serviceRequest(MessagingMojoService.forwardIdentifier,opts); },
Step Two: Make it respond to a tap on the text
Back up and modify /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js
Find the function handleMessageTap, starting on line 1480:
The first few lines:
handleMessageTap: function(event){ var eventTarget = this.controller.get(event.originalEvent.target); var mmsImageTarget = MessagingUtils.getClassUpChain(eventTarget,'MMSImageObject'); if(mmsImageTarget) {
And the last few lines:
MessagingMojoService.getMessageErrorInfo(this.controller, messageData.messageId, messageData.flags, this.handleMessageErrorPopup.bind(this,messageData)); }.bind(this), false); },
Replace the entire function with the following:
handleMessageTap: function(event){ var eventTarget = this.controller.get(event.originalEvent.target); var mmsImageTarget = MessagingUtils.getClassUpChain(eventTarget,'MMSImageObject'); if(mmsImageTarget) { var imagePath = mmsImageTarget.getAttribute('originalSrc'); this.controller.showAlertDialog({ onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, imagePath);} else {this.controller.stageController.pushScene('imageview', imagePath);}}, title: $L("Forward Message"), message: $L("Do you want to forward this message?"), choices:[ {label:$L("Yes"), value:"forward", type:"affirmative"}, {label:$L("No"), value:"", type:"negative"} ] }); return; } var mmsVideoTarget = MessagingUtils.getClassUpChain(eventTarget,'mms-video'); if(mmsVideoTarget) { var videoPath = mmsVideoTarget.getAttribute('filePath'); var videoName = mmsVideoTarget.getAttribute('fileInfo'); var args = { appId: "com.palm.app.videoplayer", name: "nowplaying" }; var params = { target: videoPath, title: videoName }; this.controller.showAlertDialog({ onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, videoPath);} else {this.controller.stageController.pushScene(args, params);}}, title: $L("Forward Message"), message: $L("Do you want to forward this message?"), choices:[ {label:$L("Yes"), value:"forward", type:"affirmative"}, {label:$L("No"), value:"", type:"negative"} ] }); return; } var mmsVcardTarget = MessagingUtils.getClassUpChain(eventTarget,'mms-vcard'); if(mmsVcardTarget) { var filePath = mmsVcardTarget.getAttribute('filePath'); this.controller.showAlertDialog({ onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, filePath);} else {this.controller.stageController.pushScene('mmsTextAttachment', filePath);}}, title: $L("Forward Message"), message: $L("Do you want to forward this message?"), choices:[ {label:$L("Yes"), value:"forward", type:"affirmative"}, {label:$L("No"), value:"", type:"negative"} ] }); return; } var mmsVcalTarget = MessagingUtils.getClassUpChain(eventTarget,'mms-vcal'); if(mmsVcalTarget) { var filePath = mmsVcalTarget.getAttribute('filePath'); this.controller.showAlertDialog({ onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, filePath);} else {this.controller.stageController.pushScene('mmsTextAttachment', filePath);}}, title: $L("Forward Message"), message: $L("Do you want to forward this message?"), choices:[ {label:$L("Yes"), value:"forward", type:"affirmative"}, {label:$L("No"), value:"", type:"negative"} ] }); return; } if (!mmsImageTarget && !mmsVideoTarget && !mmsVcardTarget && !mmsVcalTarget) { this.controller.showAlertDialog({ onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, '');}}, title: $L("Forward Message"), message: $L("Do you want to forward this message?"), choices:[ {label:$L("Yes"), value:"forward", type:"affirmative"}, {label:$L("No"), value:"", type:"negative"} ] }); } MessagingUtils.simpleListClick(this.controller.get(event.originalEvent.target), "chatRow", function(targetRow){ var messageData = { errorCode: targetRow.getAttribute("errorCode"), status: targetRow.getAttribute("status"), messageId: targetRow.getAttribute("messageId"), flags: targetRow.getAttribute("flags"), messageType: targetRow.getAttribute("messageType") }; MessagingMojoService.getMessageErrorInfo(this.controller, messageData.messageId, messageData.flags, this.handleMessageErrorPopup.bind(this,messageData)); }.bind(this), false); },
Reboot for changes to take effect.
Usage
To forward a message, open the Messaging application, tap a chat thread, then tap an individual message. A dialog will pop up asking if you would like to forward. If the message has an attachment, it will be forwarded, as well. A new compose card will open with the message text pre-populated. Simply choose the recipient(s).
Credits
Submitted by JackieRipper and Atlanta