?? viewpasswords.js
字號:
// clicking 'Cancel' or entering the correct password. } catch (e) { // An exception will be thrown if the user cancels the login prompt dialog. // User is also logged out of Software Security Device. } return token.isLoggedIn();}function FinalizeSignonDeletions() { for (var s=0; s<deletedSignons.length; s++) { passwordmanager.removeUser(deletedSignons[s].host, deletedSignons[s].rawuser); } deletedSignons.length = 0;}function HandleSignonKeyPress(e) { if (e.keyCode == 46) { DeleteSignonSelected(); }}var lastSignonSortColumn = "";var lastSignonSortAscending = false;function SignonColumnSort(column) { lastSignonSortAscending = SortTree(signonsTree, signonsTreeView, signons, column, lastSignonSortColumn, lastSignonSortAscending); lastSignonSortColumn = column;}/*** =================== REJECTED SIGNONS CODE =================== ***/var rejectsTreeView = { rowCount : 0, setTree : function(tree){}, getImageSrc : function(row,column) {}, getProgressMode : function(row,column) {}, getCellValue : function(row,column) {}, getCellText : function(row,column){ var rv=""; if (column.id=="rejectCol") { rv = rejects[row].host; } return rv; }, isSeparator : function(index) {return false;}, isSorted: function() { return false; }, isContainer : function(index) {return false;}, cycleHeader : function(column) {}, getRowProperties : function(row,prop){}, getColumnProperties : function(column,prop){}, getCellProperties : function(row,column,prop){} };var rejectsTree;function Reject(number, host) { this.number = number; this.host = host;}function LoadRejects() { var enumerator = passwordmanager.rejectEnumerator; var count = 0; while (enumerator.hasMoreElements()) { var nextReject = enumerator.getNext(); nextReject = nextReject.QueryInterface(Components.interfaces.nsIPassword); var host = nextReject.host; rejects[count] = new Reject(count++, host); } rejectsTreeView.rowCount = rejects.length; // sort and display the table rejectsTree.treeBoxObject.view = rejectsTreeView; RejectColumnSort('host'); var element = document.getElementById("removeAllRejects"); if (rejects.length == 0) { element.setAttribute("disabled","true"); } else { element.removeAttribute("disabled"); }}function RejectSelected() { var selections = GetTreeSelections(rejectsTree); if (selections.length) { document.getElementById("removeReject").removeAttribute("disabled"); }}function DeleteReject() { DeleteSelectedItemFromTree(rejectsTree, rejectsTreeView, rejects, deletedRejects, "removeReject", "removeAllRejects"); FinalizeRejectDeletions();}function DeleteAllRejects() { DeleteAllFromTree(rejectsTree, rejectsTreeView, rejects, deletedRejects, "removeReject", "removeAllRejects"); FinalizeRejectDeletions();}function FinalizeRejectDeletions() { for (var r=0; r<deletedRejects.length; r++) { passwordmanager.removeReject(deletedRejects[r].host); } deletedRejects.length = 0;}function HandleRejectKeyPress(e) { if (e.keyCode == 46) { DeleteRejectSelected(); }}var lastRejectSortColumn = "";var lastRejectSortAscending = false;function RejectColumnSort(column) { lastRejectSortAscending = SortTree(rejectsTree, rejectsTreeView, rejects, column, lastRejectSortColumn, lastRejectSortAscending); lastRejectSortColumn = column;}/*** =================== GENERAL CODE =================== ***/// Remove whitespace from both ends of a stringfunction TrimString(string){ if (!string) { return ""; } return string.replace(/(^\s+)|(\s+$)/g, '')}function DeleteAllFromTree (tree, view, table, deletedTable, removeButton, removeAllButton) { // remove all items from table and place in deleted table for (var i=0; i<table.length; i++) { deletedTable[deletedTable.length] = table[i]; } table.length = 0; // clear out selections view.selection.select(-1); // update the tree view and notify the tree view.rowCount = 0; var box = tree.treeBoxObject; box.rowCountChanged(0, -deletedTable.length); box.invalidate(); // disable buttons document.getElementById(removeButton).setAttribute("disabled", "true") document.getElementById(removeAllButton).setAttribute("disabled","true");}function DeleteSelectedItemFromTree (tree, view, table, deletedTable, removeButton, removeAllButton) { var box = tree.treeBoxObject; // Remove selected items from list (by setting them to null) and place in // deleted list. At the same time, notify the tree of the row count changes. var selection = box.view.selection; var oldSelectStart = table.length; box.beginUpdateBatch(); var selCount = selection.getRangeCount(); var min = new Object(); var max = new Object(); for (var s = 0; s < selCount; ++s) { selection.getRangeAt(s, min, max); var minVal = min.value; var maxVal = max.value; oldSelectStart = minVal < oldSelectStart ? minVal : oldSelectStart; var rowCount = maxVal - minVal + 1; view.rowCount -= rowCount; box.rowCountChanged(minVal, -rowCount); for (var i = minVal; i <= maxVal; ++i) { deletedTable[deletedTable.length] = table[i]; table[i] = null; } } // collapse list by removing all the null entries for (var j = 0; j < table.length; ++j) { if (!table[j]) { var k = j; while (k < table.length && !table[k]) k++; table.splice(j, k-j); } } box.endUpdateBatch(); // update selection and/or buttons var removeButton = document.getElementById(removeButton); var removeAllButton = document.getElementById(removeAllButton); if (table.length) { removeButton.removeAttribute("disabled"); removeAllButton.removeAttribute("disabled"); selection.select(oldSelectStart < table.length ? oldSelectStart : table.length - 1); } else { removeButton.setAttribute("disabled", "true"); removeAllButton.setAttribute("disabled", "true"); }}function GetTreeSelections(tree) { var selections = []; var select = tree.view.selection; if (select) { var count = select.getRangeCount(); var min = new Object(); var max = new Object(); for (var i=0; i<count; i++) { select.getRangeAt(i, min, max); for (var k=min.value; k<=max.value; k++) { if (k != -1) { selections[selections.length] = k; } } } } return selections;}function SortTree(tree, view, table, column, lastSortColumn, lastSortAscending, updateSelection) { // remember which item was selected so we can restore it after the sort var selections = GetTreeSelections(tree); var selectedNumber = selections.length ? table[selections[0]].number : -1; // determine if sort is to be ascending or descending var ascending = (column == lastSortColumn) ? !lastSortAscending : true; // do the sort var compareFunc; if (ascending) { compareFunc = function compare(first, second) { return CompareLowerCase(first[column], second[column]); } } else { compareFunc = function compare(first, second) { return CompareLowerCase(second[column], first[column]); } } table.sort(compareFunc); // restore the selection var selectedRow = -1; if (selectedNumber>=0 && updateSelection) { for (var s=0; s<table.length; s++) { if (table[s].number == selectedNumber) { // update selection // note: we need to deselect before reselecting in order to trigger ...Selected() tree.view.selection.select(-1); tree.view.selection.select(s); selectedRow = s; break; } } } // display the results tree.treeBoxObject.invalidate(); if (selectedRow >= 0) { tree.treeBoxObject.ensureRowIsVisible(selectedRow) } return ascending;}/** * Case insensitive string comparator. */function CompareLowerCase(first, second) { var firstLower = first.toLowerCase(); var secondLower = second.toLowerCase(); if (firstLower < secondLower) { return -1; } if (firstLower > secondLower) { return 1; } return 0;}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -