demos\outlook\email\email.js
  1 var message_viewer;
  2 /**
  3  * Auto change handler for mail folders
  4  * Creates a viewer using the data linked with the node
  5  */
  6 function emailFolders_onChange() {
  7   var item=widget.getSelection();
  8   var file=item.getLinkedData();
  9   if(file!=null) {
 10     var titlewidget=window.getViewer("content_title").getWidget();
 11     var s=item.getValue().split("\\(");
 12     titlewidget.setValue(s[0]);
 13     titlewidget.setIcon(item.getIcon());
 14         
 15     var viewer=widget.getData(file);
 16     if(viewer==null) {
 17       viewer=window.createViewer(widget,file);
 18       widget.putData(file,viewer);
 19     }
 20     window.activateViewer(widget,viewer,"email.content.target");
 21   }
 22 }
 23 
 24 /**
 25  * Show a mail message and updates unread counts
 26  *
 27  * @param fcol  the from column position
 28  * @param scol  the subject column position
 29  */
 30 function showMailMessage(fcol,scol) {
 31   if(message_viewer==null) {
 32     message_viewer=window.createViewer(widget,'email_reader.sdf');
 33   }
 34   var sel=widget.selection;
 35   if(sel.length!=1) return;
 36   sel=sel[0];
 37   var from=sel.getItem(fcol).getValue();
 38   var to=sel.getItem(fcol).getLinkedData();
 39   var subject=sel.getItem(scol).getValue();
 40   var msgurl=sel.getItem(scol).getLinkedData();
 41   var form=window.getViewer("email_reader_form");
 42   form.setItemValue("subject_field",subject);
 43   form.setItemValue("to_field",to);
 44   form.setItemValue("from_field",from);
 45   var root=widget.getRootItem(); //the root items value holds some options about the specific table
 46   var map=root.getLinkedData();
 47   if(map==null) {
 48     map=widget.createOptionMap(root.getValue(),',');  //create the option map for the root's value
 49     root.setLinkedData(map);
 50   }
 51   form.getWidget("message_field").setDataURL(msgurl);
 52   window.activateViewer(widget,message_viewer,map.get("target"));
 53   var unread=map.get("unread");
 54   if(unread>0) {
 55     var row=widget.getSelectedItem();
 56     var isunread=row.getLinkedData();
 57     if(isunread==1) {
 58       unread--;
 59       map.put("unread",unread);
 60       row.setLinkedData(null); //remove unread flag
 61       row.setFont(null); //reset the font to the default
 62       row.getItem(1).setIcon(widget.getIcon("resource:pim.icon.read"));
 63       widget.update(); //make the table layout and repaint
 64     }
 65     var name=map.get("node_name");
 66     window.setStatus(name);
 67     var mail_folders=window.getViewer("mailFolderSelection").getWidget("emailFolders");
 68     row=mail_folders.getItem(map.get("node_index"));
 69     if(unread>0) {
 70       unread=unread
 71       name=name+" ("+parseInt(unread)+")";
 72       row.setValue(name);
 73     }
 74     else {
 75       row.setValue(name);
 76       row.setFont(null); //reset the font to the default      
 77     }
 78     mail_folders.rowChanged(row); //make the table read the value and repaint
 79   }
 80 }
 81 
 82 /**
 83  * Called by the onDrop event to show what was dropped
 84  */
 85 function showDropMessage() {
 86   var i,sel,len
 87   var drop=window.nativeEvent.data;
 88   if(drop!=null) {
 89     var index=drop.getDropIndex();
 90     if(index>-1 ) {
 91       sel=drop.getData("email");
 92       len=sel.length;
 93       var titles="";
 94       for(i=0;i<len;i++) {
 95         titles+=sel[i].getItem(4).toString()+"\r\n"
 96       }
 97       window.alert("Message(s):\r\n "+titles+"\r\nwas dropped on '"+widget.get(index).toString()+"'");
 98     }
 99     window.nativeEvent.reject() //reject the drop so that the data is not deleted
100   }
101 }
102 
103 /**
104  * Handles events for the hyper-links in the e-mail message
105  */
106 function handleHyperlink() {
107   var e=window.nativeEvent;
108   if(e.isHyperlinkEvent()) {
109     switch(String(e.eventName)) {
110       case 'LINK_ENTERED':
111         window.status=e.linkHref
112         widget.dataComponent.cursor=window.getCursor("hand")
113         break;
114       case 'LINK_EXITED':
115         window.status=null
116         widget.dataComponent.cursor=null
117         break;
118       case 'LINK_CLICKED':
119         window.browse(e.linkHref);
120         break;
121     }
122   }
123 }
124 
125