aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--css/popup.css30
-rw-r--r--js/background.js25
-rw-r--r--js/popup.js47
-rw-r--r--manifest.json2
-rw-r--r--popup.html8
5 files changed, 95 insertions, 17 deletions
diff --git a/css/popup.css b/css/popup.css
new file mode 100644
index 0000000..7451ec8
--- /dev/null
+++ b/css/popup.css
@@ -0,0 +1,30 @@
+
+body {
+ width:180px;
+ text-align: center;
+ font-family: Arial, sans-serif;
+}
+
+h1 {
+ margin-top:-4px;
+ font-size:22px;
+ font-weight: bold;
+}
+
+h1 span {
+ position: relative;
+ top:1px;
+ font-size:38px;
+}
+
+button {
+ display:block;
+ width:90%;
+ margin:5px auto !important;
+}
+
+.disabled {
+ margin-top:-16px;
+ color:red;
+ height:13px;
+} \ No newline at end of file
diff --git a/js/background.js b/js/background.js
index b6260d7..35b1243 100644
--- a/js/background.js
+++ b/js/background.js
@@ -23,3 +23,28 @@ var isFirefox = !!navigator.userAgent.match(/Firefox\//);
var ev = isFirefox ? chrome.webRequest.onBeforeSendHeaders : chrome.webRequest.onBeforeRequest;
ev.addListener(checkForRedirect, filter, ["blocking"]);
+
+var storage = chrome.storage.local; //TODO: Change to sync when Firefox supports it...
+
+
+//Icon updating code below
+
+function updateIcon() {
+ storage.get({disabled:false}, function(obj) {
+ chrome.browserAction.setIcon({
+ path: {
+ 19: obj.disabled ? "images/icon19disabled.png" : "images/icon19active.png",
+ 38: obj.disabled ? "images/icon38disabled.png" : "images/icon38active.png"
+ }
+ });
+ });
+}
+
+updateIcon();
+
+chrome.storage.onChanged.addListener(function(changes, namespace) {
+ if (changes.disabled) {
+ updateIcon();
+ }
+});
+ \ No newline at end of file
diff --git a/js/popup.js b/js/popup.js
index fbff178..9aa13cf 100644
--- a/js/popup.js
+++ b/js/popup.js
@@ -1,13 +1,34 @@
-function hi() {
- chrome.browserAction.setIcon({
- path: {
- 19: "images/icon19disabled.png",
- 38: "images/icon38disabled.png"
- }
- });
- open('redirector.html');
-}
-
-document.addEventListener('DOMContentLoaded', function() {
- document.getElementsByTagName('button')[0].addEventListener('click', hi);
-}) \ No newline at end of file
+
+angular.module('popupApp', []).controller('PopupCtrl', ['$scope', function($s) {
+
+ var storage = chrome.storage.local; //TODO: Change to sync when Firefox supports it...
+
+ storage.get({disabled:false}, function(obj) {
+ $s.disabled = obj.disabled;
+ $s.$apply();
+ });
+
+ $s.toggleDisabled = function() {
+ storage.get({disabled:false}, function(obj) {
+ storage.set({disabled:!obj.disabled});
+ $s.disabled = !obj.disabled;
+ $s.$apply();
+ });
+ };
+
+ $s.openRedirectorSettings = function() {
+
+ //switch to open one if we have it to minimize conflicts
+ var url = chrome.extension.getURL('redirector.html');
+
+ chrome.tabs.query({currentWindow:true, url:url}, function(tabs) {
+ if (tabs.length > 0) {
+ chrome.tabs.update(tabs[0].id, {active:true}, function(tab) {
+ close();
+ });
+ } else {
+ open(url);
+ }
+ });
+ };
+}]); \ No newline at end of file
diff --git a/manifest.json b/manifest.json
index 20d0b2f..75579fa 100644
--- a/manifest.json
+++ b/manifest.json
@@ -9,7 +9,7 @@
"48": "images/icon48active.png",
"128": "images/icon128active.png" },
- "permissions" : ["webRequest", "webRequestBlocking", "storage", "http://*/*", "https://*/*"],
+ "permissions" : ["webRequest", "webRequestBlocking", "storage", "tabs", "http://*/*", "https://*/*"],
"applications": {
"gecko": {
"id": "redirector@einaregilsson.com"
diff --git a/popup.html b/popup.html
index 5e7e81f..f651ab0 100644
--- a/popup.html
+++ b/popup.html
@@ -7,8 +7,10 @@
<script src="js/angular.min.js"></script>
<script src="js/popup.js"></script>
</head>
- <body >
- <h1>Redirector</h1>
- <button>Disable</button>
+ <body ng-app="popupApp" ng-controller="PopupCtrl">
+ <h1><span>☈</span>edirector</h1>
+ <div class="disabled"><span ng-show="disabled">Disabled</span></div>
+ <button ng-click="toggleDisabled()">{{disabled ? 'Enable Redirector' : 'Disable Redirector'}}</button>
+ <button ng-click="openRedirectorSettings()">Edit Redirects</button>
</body>
</html>