| 6 | | var ios=Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); |
| 7 | | var resProt=ios.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler); |
| 8 | | var modulesDir=__LOCATION__.parent.parent; |
| 9 | | modulesDir.append("modules"); |
| 10 | | resProt.setSubstitution("p4v-jsm",ios.newFileURI(modulesDir)); |
| 11 | | |
| 12 | | Cu.import("resource://p4v-jsm/common.js"); |
| 13 | | var obsSvc = new xpc.obsSvc; |
| 14 | | var prefSvc = new xpc.prefSvc; |
| 15 | | var prefBrc2 = new xpc.prefBrc2; |
| 16 | | var extMgr = new xpc.extMgr; |
| 17 | | var strbndSvc = new xpc.strbndSvc; |
| 18 | | |
| 21 | | classID: Components.ID("{C5752C51-3062-42db-A5F8-8CF9920B4757}"), |
| 22 | | classDescription: "VocaloFx Startup", |
| 23 | | contractID: "@rayflood.org/vocalofx-startup;1", |
| 24 | | _xpcom_categories: [{category: "app-startup", service: true}], |
| 25 | | QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]), |
| 26 | | helpInfo: this.classDescription, |
| 27 | | |
| 28 | | APP_STARTUP: "app-startup", |
| 29 | | FINAL_UI_STARTUP: "final-ui-startup", |
| 30 | | QUIT_APPLICATION: "quit-application", |
| 31 | | observe: function(aSubject, aTopic, aData){ |
| | 8 | classID : Components.ID("{C5752C51-3062-42db-A5F8-8CF9920B4757}"), |
| | 9 | classDescription : "VocaloFx Startup", |
| | 10 | contractID : "@rayflood.org/vocalofx-startup;1", |
| | 11 | _xpcom_categories : [{category: "app-startup", service: true}], |
| | 12 | QueryInterface : XPCOMUtils.generateQI([Ci.nsIObserver]), |
| | 13 | helpInfo : this.classDescription, |
| | 14 | |
| | 15 | APP_STARTUP : "app-startup", |
| | 16 | FINAL_UI_STARTUP : "final-ui-startup", |
| | 17 | QUIT_APPLICATION : "quit-application", |
| | 18 | |
| | 19 | ENABLED_ITEMS : "extensions.enabledItems", |
| | 20 | DEFAULT_THEME : "{972ce4c6-7e08-4474-a285-3208198ce6fd}", |
| | 21 | MOZ_LWTHEME_USED : "lightweightThemes.isThemeSelected", |
| | 22 | GREASEMONKEY_ID : "{e4a8a97b-f2ed-450b-b12d-ee082ba24781}", |
| | 23 | |
| | 24 | VOCALOFX_PROPERTY_VERSION : "extensions.vocalofx.version", |
| | 25 | SKIN_PROPERTY_IMAGE : "extensions.vocalofx.skin_image", |
| | 26 | SKIN_PROPERTY_PALLET : "extensions.vocalofx.skin_pallet", |
| | 27 | SKIN_PROPERTY_POSITION : "extensions.vocalofx.skin_position", |
| | 28 | SKIN_PROPERTY_CATEGORY : "extensions.vocalofx.skin_category", |
| | 29 | SKIN_PROPERTY_USE_ALLPARET : "extensions.vocalofx.skin_use_allparet", |
| | 30 | SKIN_SELECT_RANDOM : "extensions.vocalofx.skin_select_random", |
| | 31 | ALERT_ADDON : "extensions.vocalofx.alert_addon.", |
| | 32 | ALERT_THEME : "extensions.vocalofx.skin_theme_alert", |
| | 33 | ALERT_PIAPROGM : "extensions.vocalofx.tool_piaprogm_alert", |
| | 34 | |
| | 35 | observe : function(aSubject, aTopic, aData){ |
| 49 | | init: function(){ |
| 50 | | const ENABLED_ITEMS = "extensions.enabledItems"; |
| | 55 | constructor : function(){ |
| | 56 | var ios=Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); |
| | 57 | var resProt=ios.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler); |
| | 58 | var modulesDir=__LOCATION__.parent.parent; |
| | 59 | modulesDir.append("modules"); |
| | 60 | resProt.setSubstitution("p4v-jsm",ios.newFileURI(modulesDir)); |
| | 61 | Cu.import("resource://p4v-jsm/common.js"); |
| | 62 | |
| | 63 | this.obsSvc = new xpc.obsSvc; |
| | 64 | this.prefSvc = new xpc.prefSvc; |
| | 65 | this.prefBrc2 = new xpc.prefBrc2; |
| | 66 | this.extMgr = new xpc.extMgr; |
| | 67 | this.strbndSvc = new xpc.strbndSvc; |
| | 68 | this.verComp = new xpc.verComp; |
| | 69 | this.ww = new xpc.ww; |
| | 70 | this.skin_properties = this.strbndSvc.createBundle("chrome://vocalofx/content/skin/skin.properties"); |
| | 71 | } |
| | 72 | , |
| | 73 | init : function(){ |
| 82 | | else if(version == "0.1pre"){ |
| 83 | | this.update_0_1pre(); |
| 84 | | } |
| 85 | | var verComp = new xpc.verComp; |
| 86 | | if(verComp.compare("1.0", version) > 0){ |
| 87 | | var ww = new xpc.ww; |
| 88 | | ww.openWindow(null, "chrome://vocalofx/content/splash/splash_alert.xul", "vocalofx-splash-alert", "chrome,centerscreen,alwaysRaised=yes,modal=yes", null); |
| | 103 | else{ |
| | 104 | this.resetVocalofxSkin(); |
| | 105 | } |
| | 106 | if(this.verComp.compare("1.0", version) > 0){ |
| | 107 | this.ww.openWindow(null, "chrome://vocalofx/content/splash/splash_alert.xul", "vocalofx-splash-alert", "chrome,centerscreen,alwaysRaised=yes,modal=yes", null); |
| 142 | | update_0_1pre: function(){ |
| 143 | | const SKIN_PROPERTY_IMAGE = "extensions.vocalofx.skin_image"; |
| 144 | | const SKIN_PROPERTY_PALLET = "extensions.vocalofx.skin_pallet"; |
| 145 | | const SKIN_PROPERTY_POSITION = "extensions.vocalofx.skin_position"; |
| 146 | | const SKIN_PROPERTY_CATEGORY = "extensions.vocalofx.skin_category"; |
| 147 | | try{ |
| 148 | | var skin_properties = strbndSvc.createBundle("chrome://vocalofx/content/skin/skin.properties"); |
| 149 | | var image = prefBrc2.getCharPref(SKIN_PROPERTY_IMAGE); |
| 150 | | var token = image.split("/"); |
| 151 | | var imagefile = token[token.length - 1]; |
| 152 | | var image_id = imagefile.substr(0, imagefile.lastIndexOf(".png")); |
| 153 | | var position = skin_properties.GetStringFromName(image_id + ".position"); |
| 154 | | prefBrc2.setCharPref(SKIN_PROPERTY_POSITION, position); |
| 155 | | |
| 156 | | var category = prefBrc2.getCharPref(SKIN_PROPERTY_CATEGORY); |
| 157 | | var pallet = category; |
| 158 | | prefBrc2.setCharPref(SKIN_PROPERTY_PALLET + "." + category, pallet); |
| 159 | | prefBrc2.setCharPref(SKIN_PROPERTY_PALLET, pallet); |
| 160 | | } |
| 161 | | catch(e){ |
| 162 | | // nop |
| 163 | | } |
| 164 | | } |
| 165 | | , |
| 166 | | alert: function(){ |
| 167 | | const ALERT_ADDON = "extensions.vocalofx.alert_addon."; |
| 168 | | const ALERT_THEME = "extensions.vocalofx.skin_theme_alert"; |
| 169 | | const DEFAULT_THEME = "{972ce4c6-7e08-4474-a285-3208198ce6fd}"; |
| | 161 | alert : function(){ |
| 191 | | var ww = new xpc.ww; |
| 192 | | ww.openWindow(null, "chrome://vocalofx/content/alert.xul", "vocalofx-alert", "chrome,centerscreen,alwaysRaised=yes,modal=yes", installedAddons); |
| 193 | | } |
| 194 | | } |
| 195 | | , |
| 196 | | isLWThemeUsed: function(){ |
| 197 | | const MOZ_LWTHEME_USED = "lightweightThemes.isThemeSelected"; |
| | 183 | this.ww.openWindow(null, "chrome://vocalofx/content/alert.xul", "vocalofx-alert", "chrome,centerscreen,alwaysRaised=yes,modal=yes", installedAddons); |
| | 184 | } |
| | 185 | } |
| | 186 | , |
| | 187 | isLWThemeUsed : function(){ |
| 208 | | piaprogm: function(){ |
| 209 | | const GREASEMONKEY_ID = "{e4a8a97b-f2ed-450b-b12d-ee082ba24781}"; |
| 210 | | const ALERT_PIAPROGM = "extensions.vocalofx.tool_piaprogm_alert"; |
| 211 | | if(this.enabledItems[GREASEMONKEY_ID] && prefBrc2.getBoolPref(ALERT_PIAPROGM)){ |
| 212 | | var ww = new xpc.ww; |
| 213 | | ww.openWindow(null, "chrome://vocalofx/content/tool/piapro_gm.xul", "piaprogm-alert", "chrome,centerscreen,alwaysRaised=yes,modal=yes", null); |
| | 198 | piaprogm : function(){ |
| | 199 | if(this.enabledItems[this.GREASEMONKEY_ID] && this.prefBrc2.getBoolPref(this.ALERT_PIAPROGM)){ |
| | 200 | this.ww.openWindow(null, "chrome://vocalofx/content/tool/piapro_gm.xul", "piaprogm-alert", "chrome,centerscreen,alwaysRaised=yes,modal=yes", null); |
| | 201 | } |
| | 202 | } |
| | 203 | , |
| | 204 | selectSkinByRandom : function(){ |
| | 205 | if(!this.prefBrc2.getBoolPref(this.SKIN_SELECT_RANDOM)){ |
| | 206 | return; |
| | 207 | } |
| | 208 | |
| | 209 | try{ |
| | 210 | var skins = this.skin_properties.GetStringFromName("skinmenu").split(","); |
| | 211 | var skin_index = Math.floor(Math.random() * skins.length); |
| | 212 | var category = this.skin_properties.GetStringFromName(skins[skin_index] + ".category"); |
| | 213 | var pallets; |
| | 214 | if(category == "piapro" || this.prefBrc2.getBoolPref(this.SKIN_PROPERTY_USE_ALLPARET)){ |
| | 215 | pallets = this.skin_properties.GetStringFromName("palletmenu").split(","); |
| | 216 | } |
| | 217 | else{ |
| | 218 | pallets = this.skin_properties.GetStringFromName("palletmenu." + category).split(","); |
| | 219 | } |
| | 220 | var pallet_index = Math.floor(Math.random() * (pallets.length - 1)); |
| | 221 | this.selectVocalofxSkin(skins[skin_index], pallets[pallet_index]); |
| | 222 | } |
| | 223 | catch(e){ |
| | 224 | // nop |
| | 225 | } |
| | 226 | } |
| | 227 | , |
| | 228 | resetVocalofxSkin : function(){ |
| | 229 | try{ |
| | 230 | var image = this.prefBrc2.getCharPref(this.SKIN_PROPERTY_IMAGE); |
| | 231 | var token = image.split("/"); |
| | 232 | var imagefile = token[token.length - 1]; |
| | 233 | var skin = imagefile.substr(0, imagefile.lastIndexOf(".png")); |
| | 234 | var pallet = this.prefBrc2.getCharPref(this.SKIN_PROPERTY_PALLET); |
| | 235 | this.selectVocalofxSkin(skin, pallet); |
| | 236 | } |
| | 237 | catch(e){ |
| | 238 | // nop |
| | 239 | } |
| | 240 | } |
| | 241 | , |
| | 242 | selectVocalofxSkin : function(skin, pallet){ |
| | 243 | try{ |
| | 244 | var position = this.skin_properties.GetStringFromName(skin + ".position"); |
| | 245 | var category = this.skin_properties.GetStringFromName(skin + ".category"); |
| | 246 | this.prefBrc2.setCharPref(this.SKIN_PROPERTY_IMAGE, "chrome://vocalofx/content/skin/" + skin + ".png"); |
| | 247 | this.prefBrc2.setCharPref(this.SKIN_PROPERTY_POSITION, position); |
| | 248 | this.prefBrc2.setCharPref(this.SKIN_PROPERTY_CATEGORY, category); |
| | 249 | this.prefBrc2.setCharPref(this.SKIN_PROPERTY_PALLET + "." + category, pallet); |
| | 250 | this.prefBrc2.setCharPref(this.SKIN_PROPERTY_PALLET, pallet); |
| | 251 | } |
| | 252 | catch(e){ |
| | 253 | // nop |