1
var speeddial_gPrefBranch = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.speeddial.");
3
function speeddial_initPrefs() {
4
if(document.documentElement.getButton && document.documentElement.getButton('extra2')) {
5
var extra2 = document.documentElement.getButton('extra2');
6
extra2.setAttribute('type', 'menu');
7
extra2.setAttribute('popup', 'speeddial-settings-popup');
11
function speeddial_defaultSettings() {
12
var strings = document.getElementById("prefsStrings");
13
if (!confirm(strings.getString('prefs.confirm'))) return false;
15
var count = { value : 0 };
16
var childList = speeddial_gPrefBranch.getChildList("", count);
18
for (var i = 0; i < count.value; i++) {
19
if(speeddial_gPrefBranch.prefHasUserValue(childList[i]) && childList[i] != "changelog") {
20
speeddial_gPrefBranch.clearUserPref(childList[i]);
24
window.alert(strings.getString('prefs.defaultsuccess'));
28
function speeddial_extendInt(aInput) {
29
if (aInput < 10) return "0" + aInput.toString();
33
function speeddial_exportSettings(onlyDials) {
35
var sDate = speeddial_extendInt(now.getMonth() + 1) + "/" + speeddial_extendInt(now.getDate()) + "/" + now.getFullYear();
36
var sTtime = speeddial_extendInt(now.getHours()) + ":" + speeddial_extendInt(now.getMinutes()) + ":" + speeddial_extendInt(now.getSeconds());
37
var sGMT = now.toGMTString();
39
var speeddialExport = new Array;
40
speeddialExport[0] = "-----------------------------------------------------------------------\n";
41
speeddialExport[0] += " Speed Dial - ";
43
speeddialExport[0] += "Dials";
45
speeddialExport[0] += "Settings";
47
speeddialExport[0] += "\n";
48
speeddialExport[0] += " " + sDate + ", " + sTtime + " (" + sGMT + ")\n";
49
speeddialExport[0] += "-----------------------------------------------------------------------\n";
50
speeddialExport[0] += " DO NOT EDIT THIS FILE\n";
51
speeddialExport[0] += "-----------------------------------------------------------------------";
53
var count = { value : 0 };
54
var childList = speeddial_gPrefBranch.getChildList("", count);
56
for(var i = 0; i < count.value; i++) {
58
if (!onlyDials || (childList[i].match("^thumbnail-") == "thumbnail-")) {
59
if (childList[i].match("-lastsaved$") != "-lastsaved") {
60
switch(speeddial_gPrefBranch.getPrefType(childList[i])) {
61
case Components.interfaces.nsIPrefBranch.PREF_BOOL:
62
speeddialExport[currentIndex] = childList[i] + '=' + speeddial_gPrefBranch.getBoolPref(childList[i]);
65
case Components.interfaces.nsIPrefBranch.PREF_INT:
66
speeddialExport[currentIndex] = childList[i] + '=' + speeddial_gPrefBranch.getIntPref(childList[i]);
69
case Components.interfaces.nsIPrefBranch.PREF_STRING:
70
speeddialExport[currentIndex] = childList[i] + '=' + speeddial_gPrefBranch.getCharPref(childList[i]);
79
speeddialExport.sort();
80
speeddial_saveToFile(speeddialExport);
84
function speeddial_importSettings() {
85
var strings = document.getElementById("prefsStrings");
87
var pattern = speeddial_loadFromFile();
88
if(!pattern) return false;
91
var speeddialImport = new Array;
92
var appendFilters = null;
94
if ((pattern[1].indexOf("Speed Dial - Settings") < 0) && (pattern[1].indexOf("Speed Dial - Dials") < 0)) {
95
alert(strings.getString('prefs.invalid'));
99
if (!confirm(strings.getString('prefs.import'))) return false;
101
for (i = 6; i < pattern.length; i++) {
102
var index = pattern[i].indexOf("=");
105
speeddialImport[i] = [];
106
speeddialImport[i].push(pattern[i].substring(0, index));
107
speeddialImport[i].push(pattern[i].substring(index + 1, pattern[i].length));
111
var processedThumbnails = new Array();
113
for(i = 6; i < speeddialImport.length; i++) {
115
var addCharAsComplex = false;
118
if (speeddialImport[i][0].indexOf("thumbnail-") == 0) {
119
// Determine preference type
120
if (speeddialImport[i][0].indexOf("-label") > -1) {
121
addCharAsComplex = true;
122
prefType = Components.interfaces.nsIPrefBranch.PREF_STRING;
123
} else if (speeddialImport[i][0].indexOf("-refreshinterval") > -1) {
124
prefType = Components.interfaces.nsIPrefBranch.PREF_INT;
125
} else if (speeddialImport[i][0].indexOf("-dynamictitle") > -1) {
126
prefType = Components.interfaces.nsIPrefBranch.PREF_BOOL;
129
prefType = Components.interfaces.nsIPrefBranch.PREF_STRING;
131
var number = (speeddialImport[i][0].split("-", 2))[1];
132
if (!processedThumbnails[number]) {
134
processedThumbnails[number] = true;
137
prefType = speeddial_gPrefBranch.getPrefType(speeddialImport[i][0]);
140
case Components.interfaces.nsIPrefBranch.PREF_BOOL:
141
speeddial_gPrefBranch.setBoolPref(speeddialImport[i][0],/true/i.test(speeddialImport[i][1]));
144
case Components.interfaces.nsIPrefBranch.PREF_INT:
145
speeddial_gPrefBranch.setIntPref(speeddialImport[i][0], speeddialImport[i][1]);
148
case Components.interfaces.nsIPrefBranch.PREF_STRING:
149
var pref = speeddialImport[i][1];
150
if (pref.indexOf('"') == 0) // in prev version we use " " for string
151
pref = pref.substring(1,pref.length - 1);
152
if (addCharAsComplex) {
153
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
155
speeddial_gPrefBranch.setComplexValue(speeddialImport[i][0], Components.interfaces.nsISupportsString, str);
157
speeddial_gPrefBranch.setCharPref(speeddialImport[i][0], pref);
161
} catch(e) { alert(e); }
164
// Refresh updated thumbnails
165
for (i=1; i<processedThumbnails.length; i++) {
166
if (processedThumbnails[i]) {
167
speeddial_gPrefBranch.setBoolPref("thumbnail-" + i + "-manualrefresh", true);
171
window.alert(strings.getString('prefs.importsuccess'));
174
alert(strings.getString('prefs.importfailed'));
180
function speeddial_saveToFile(patterns) {
181
var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
182
var stream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
184
var strings = document.getElementById("prefsStrings");
186
fp.init(window, strings.getString('prefs.save'), fp.modeSave);
187
fp.defaultExtension = 'speeddial';
188
fp.defaultString = strings.getString('prefs.defaultFileName') + '.' + fp.defaultExtension;
189
fp.appendFilter(strings.getString('prefs.filter'), "*.speeddial");
190
fp.appendFilters(fp.filterAll);
192
if(fp.show() != fp.returnCancel) {
194
if(fp.file.exists()) fp.file.remove(true);
195
fp.file.create(fp.file.NORMAL_FILE_TYPE, 0666);
196
stream.init(fp.file, 0x02, 0x200, null);
198
for(var i = 0; i < patterns.length; i++) {
199
patterns[i] = patterns[i] + "\n";
200
stream.write(patterns[i], patterns[i].length);
209
function speeddial_loadFromFile() {
210
var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
211
var stream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
213
var strings = document.getElementById("prefsStrings");
215
fp.init(window, strings.getString('prefs.open'), fp.modeOpen);
216
fp.defaultExtension = 'speeddial';
217
fp.appendFilter(strings.getString('prefs.filter'), "*.speeddial");
218
fp.appendFilters(fp.filterAll);
220
if(fp.show() != fp.returnCancel) {
221
var result = new Array();
222
var charset = "UTF-8";
223
var is = Components.classes["@mozilla.org/intl/converter-input-stream;1"].createInstance(Components.interfaces.nsIConverterInputStream);
225
stream.init(fp.file, 0x01, 0444, null);
226
is.init(stream, charset, 1024, 0xFFFD);
228
if (is instanceof Components.interfaces.nsIUnicharLineInputStream) {
231
cont = is.readLine(line);
232
result[result.length] = line.value;
245
function showFirstTimeConfig() {
246
openDialog("chrome://speeddial/content/firstTimeConfig.xul", "",
247
"centerscreen,chrome,dialog,resizable,modal");