From e995ae30f446c85737a8c746058f50b2e6745f2d Mon Sep 17 00:00:00 2001 From: Andrew Van Tassel Date: Wed, 3 Apr 2019 15:19:25 -0600 Subject: [PATCH] Added country column in message list --- CHANGELOG.md | 5 +++ chrome.manifest | 3 +- chrome/content/mailhops.js | 26 ++++++++---- chrome/content/msgListColumn.js | 70 ++++++++++++++++++++++++++++++++ chrome/content/msgListColumn.xul | 16 ++++++++ chrome/content/preferences.js | 20 +++++---- chrome/content/preferences.xul | 2 +- install.rdf | 2 +- 8 files changed, 124 insertions(+), 20 deletions(-) create mode 100644 chrome/content/msgListColumn.js create mode 100644 chrome/content/msgListColumn.xul diff --git a/CHANGELOG.md b/CHANGELOG.md index 1982f7f..783e45b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Change Log +## 3.2 - 2019-04-03 + +### Added +- Country column to message list + ## 3.1.4 - 2017-07-24 ### Fixed diff --git a/chrome.manifest b/chrome.manifest index ec2f06d..285394a 100644 --- a/chrome.manifest +++ b/chrome.manifest @@ -10,8 +10,9 @@ locale mailhops pt-BR jar:chrome/mailhops.jar!/locale/pt-BR/ locale mailhops ru jar:chrome/mailhops.jar!/locale/ru/ locale mailhops zh-CN jar:chrome/mailhops.jar!/locale/zh-CN/ -# Postbox +# Postbox 5 overlay chrome://messenger/content/mailWindowOverlay.xul chrome://mailhops/content/msgNotificationBar.xul application=postbox@postbox-inc.com # Thunberbird overlay chrome://messenger/content/mailWindowOverlay.xul chrome://mailhops/content/msgNotificationBar.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6} +overlay chrome://messenger/content/messenger.xul chrome://mailhops/content/msgListColumn.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6} \ No newline at end of file diff --git a/chrome/content/mailhops.js b/chrome/content/mailhops.js index 05bdb98..de4dc08 100644 --- a/chrome/content/mailhops.js +++ b/chrome/content/mailhops.js @@ -405,7 +405,7 @@ mailHops.LOG(lookupURL); var d = new Date(); data.meta.cached = d.toISOString(); //save the result - mailHops.saveResults(JSON.stringify(data),data.response.route); + mailHops.saveResults(data, data.response.route); //display the result mailHopsDisplay.route(header_route, mailHops.message, data.response, data.meta, lookupURL); } else if(data.error){ @@ -422,7 +422,7 @@ mailHops.LOG(lookupURL); xmlhttp.send(null); }; -mailHops.saveResults = function(results,route){ +mailHops.saveResults = function(results, route){ if(!mailHops.msgURI) return false; @@ -432,13 +432,23 @@ mailHops.saveResults = function(results,route){ if(!msgHdr) return false; + + if(!results){ + msgHdr.setStringProperty( "MH-Route", '' ); + return false; + } - msgHdr.setStringProperty( "MH-Route", results ); + var countryCode = mailHopsUtils.getOriginatingCountryCode(route); + + if(!!countryCode){ + results.sender = { countryCode: countryCode }; + } + + msgHdr.setStringProperty( "MH-Route", JSON.stringify(results) ); //Add tag - if(!!route && !!mailHops.options.api_key){ - try { - var countryCode = mailHopsUtils.getOriginatingCountryCode(route); + if(!!countryCode && !!mailHops.options.api_key){ + try { var msg = Components.classes["@mozilla.org/array;1"].createInstance(Components.interfaces.nsIMutableArray); msg.clear(); msg.appendElement(msgHdr, false); @@ -488,8 +498,8 @@ mailHops.getResults = function(){ }; mailHops.refreshCache = function(){ - mailHops.saveResults(''); + mailHops.saveResults(); mailHops.getRoute(); }; -addEventListener ( "messagepane-loaded" , mailHops.setupEventListener , true ) ; +addEventListener( "messagepane-loaded" , mailHops.setupEventListener , true ); \ No newline at end of file diff --git a/chrome/content/msgListColumn.js b/chrome/content/msgListColumn.js new file mode 100644 index 0000000..443773d --- /dev/null +++ b/chrome/content/msgListColumn.js @@ -0,0 +1,70 @@ +var columnHandler = { + getCellText: function(row, col) {return null;}, + getSortStringForRow: function(msgHdr) { + msgHdr.getStringProperty( "MH-Route" ); + var countryCode = null; + var cached_results = msgHdr.getStringProperty( "MH-Route" ); + if(cached_results){ + try { + cached_results = JSON.parse(cached_results); + if(cached_results.sender && cached_results.sender.countryCode){ + countryCode = cached_results.sender.countryCode; + } else { + countryCode = mailHopsUtils.getOriginatingCountryCode(cached_results.response.route); + } + if(countryCode){ + return 'chrome://mailhops/content/images/flags/'+countryCode.toLowerCase()+'.png'; + } + } catch(e) { + return countryCode; + } + } + return countryCode; + }, + isString: function() {return true;}, + + getCellProperties: function(row, col, props){}, + getRowProperties: function(row, props){}, + getImageSrc: function(row, col) { + var msgKey = gDBView.getKeyAt(row); + var msgHdr = gDBView.db.GetMsgHdrForKey(msgKey); + var countryCode = null; + var cached_results = msgHdr.getStringProperty( "MH-Route" ); + if(cached_results){ + try { + cached_results = JSON.parse(cached_results); + if(cached_results.sender && cached_results.sender.countryCode){ + countryCode = cached_results.sender.countryCode; + } else { + countryCode = mailHopsUtils.getOriginatingCountryCode(cached_results.response.route); + } + if(countryCode){ + return 'chrome://mailhops/content/images/flags/'+countryCode.toLowerCase()+'.png'; + } + } catch(e) { + return null; + } + } + return null; + }, + getSortLongForRow: function(hdr) {return 0;} + }; + +var CreateDbObserver = { + // Components.interfaces.nsIObserver + observe: function(aMsgFolder, aTopic, aData) + { + addCustomColumnHandler(); + } +}; + +function doOnceLoaded() { + var ObserverService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); + ObserverService.addObserver(CreateDbObserver, "MsgCreateDBView", false); +} + +function addCustomColumnHandler() { + gDBView.addColumnHandler("colMailHops", columnHandler); +} + +addEventListener( "load", doOnceLoaded, false ); \ No newline at end of file diff --git a/chrome/content/msgListColumn.xul b/chrome/content/msgListColumn.xul new file mode 100644 index 0000000..705e0ed --- /dev/null +++ b/chrome/content/msgListColumn.xul @@ -0,0 +1,16 @@ + + + + + + + + + + +