diff --git a/web/javascript/file-row.js b/web/javascript/file-row.js index fd5469f5a..e034285d7 100644 --- a/web/javascript/file-row.js +++ b/web/javascript/file-row.js @@ -19,7 +19,9 @@ function FileRow(torrent, i) }, elements = { - priority_control: null, + priority_low_button: null, + priority_normal_button: null, + priority_high_button: null, progress: null, root: null }, @@ -51,24 +53,15 @@ function FileRow(torrent, i) refreshWantedHTML = function() { - var e = elements.root, - c = [ e.classNameConst ]; - - if (!fields.isWanted) { c.push('skip'); } - if (isDone()) { c.push('complete'); } - e.className = c.join(' '); + var e = $(elements.root); + e.toggleClass('skip', !fields.isWanted); + e.toggleClass('complete', isDone()); }, refreshPriorityHTML = function() { - var e = elements.priority_control, - c = [ e.classNameConst ]; - - switch(fields.priority) { - case -1 : c.push('low'); break; - case 1 : c.push('high'); break; - default : c.push('normal'); break; - } - e.className = c.join(' '); + $(elements.priority_high_button ).toggleClass('selected', fields.priority === 1 ); + $(elements.priority_normal_button).toggleClass('selected', fields.priority === 0 ); + $(elements.priority_low_button ).toggleClass('selected', fields.priority === -1 ); }, refreshProgressHTML = function() { @@ -99,60 +92,57 @@ function FileRow(torrent, i) }, createRow = function(torrent, i) { - var file = torrent.getFile(i), - name, root, wanted_div, pri_div, file_div, prog_div; + var file = torrent.getFile(i), e, name, root, box; root = document.createElement('li'); root.id = 't' + fields.torrent.getId() + 'f' + fields.index; - root.classNameConst = 'inspector_torrent_file_list_entry ' + ((i%2)?'odd':'even'); - root.className = root.classNameConst; + root.className = 'inspector_torrent_file_list_entry ' + ((i%2)?'odd':'even'); + elements.root = root; - wanted_div = document.createElement('div'); - wanted_div.className = "file_wanted_control"; - $(wanted_div).click(function(){ fireWantedChanged(!fields.isWanted); }); + e = document.createElement('div'); + e.className = "file_wanted_control"; + $(e).click(function(){ fireWantedChanged(!fields.isWanted); }); + root.appendChild(e); - pri_div = document.createElement('div'); - pri_div.classNameConst = "file_priority_control"; - pri_div.className = pri_div.classNameConst; - $(pri_div).bind('click',function(ev){ - var prio, - x = ev.pageX, - e = ev.target; - while (e) { - x -= e.offsetLeft; - e = e.offsetParent; - } - // ugh. - if (isMobileDevice) { - if (x < 8) prio = -1; - else if (x < 27) prio = 0; - else prio = 1; - } else { - if (x < 12) prio = -1; - else if (x < 23) prio = 0; - else prio = 1; - } - firePriorityChanged(prio); - }); + e = document.createElement('div'); + e.className = 'file-priority-radiobox'; + box = e; + + e = document.createElement('div'); + e.className = 'low'; + e.title = 'Low Priority'; + $(e).click(function(){ firePriorityChanged(-1); }); + elements.priority_low_button = e; + box.appendChild(e); + + e = document.createElement('div'); + e.className = 'normal'; + e.title = 'Normal Priority'; + $(e).click(function(){ firePriorityChanged(0); }); + elements.priority_normal_button = e; + box.appendChild(e); + + e = document.createElement('div'); + e.title = 'High Priority'; + e.className = 'high'; + $(e).click(function(){ firePriorityChanged(1); }); + elements.priority_high_button = e; + box.appendChild(e); + + root.appendChild(box); name = file.name || 'Unknown'; name = name.substring(name.lastIndexOf('/')+1); name = name.replace(/([\/_\.])/g, "$1​"); - file_div = document.createElement('div'); - file_div.className = "inspector_torrent_file_list_entry_name"; - file_div.innerHTML = name; + e = document.createElement('div'); + e.className = "inspector_torrent_file_list_entry_name"; + e.innerHTML = name; + root.appendChild(e); - prog_div = document.createElement('div'); - prog_div.className = "inspector_torrent_file_list_entry_progress"; - - root.appendChild(wanted_div); - root.appendChild(pri_div); - root.appendChild(file_div); - root.appendChild(prog_div); - - elements.root = root; - elements.priority_control = pri_div; - elements.progress = prog_div; + e = document.createElement('div'); + e.className = "inspector_torrent_file_list_entry_progress"; + root.appendChild(e); + elements.progress = e; refresh(); return root; diff --git a/web/style/transmission/common.css b/web/style/transmission/common.css index 85c72ee78..2cf6014b5 100644 --- a/web/style/transmission/common.css +++ b/web/style/transmission/common.css @@ -923,38 +923,110 @@ li.inspector_torrent_file_list_entry.complete>.file_wanted_control { cursor: default; } -div.file_priority_control { +div.file-priority-radiobox { + display: inline; float: right; - margin: 4px 0 0 0; - width: 35px; - height: 19px; - background-image: url('images/buttons/file_priority_buttons.png'); - background-repeat: no-repeat; - background-color: transparent; + margin: 4px; + margin-top: 2px; +} +div.file-priority-radiobox > * { + font-size: 20px; cursor: pointer; + display: inline-block; + width: 30px; + height: 12px; + border-style: solid; + border-color: #aaa; + border-width: 1px; + padding: 3px; } -div.file_priority_control.normal { - background-position: left top; + +div.file-priority-radiobox > div.low { + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-bottomleft: 5px; + border-right-width: 0px; + + background: #D7D7D7; + background-image: url(images/file-priority-low.png); /* fallback */ + background-image: url(images/file-priority-low.png), -webkit-gradient(linear, left top, left bottom, from(#EDEDED), to(#D7D7D7)); /* Saf4+, Chrome */ + background-image: url(images/file-priority-low.png), -webkit-linear-gradient(top, #EDEDED, #D7D7D7); /* Chrome 10+, Saf5.1+ */ + background-image: url(images/file-priority-low.png), -moz-linear-gradient(top, #EDEDED, #D7D7D7); /* FF3.6+ */ + background-image: url(images/file-priority-low.png), -ms-linear-gradient(top, #EDEDED, #D7D7D7); /* IE10 */ + background-image: url(images/file-priority-low.png), -o-linear-gradient(top, #EDEDED, #D7D7D7); /* Opera 11.10+ */ + background-image: url(images/file-priority-low.png), linear-gradient(top, #EDEDED, #D7D7D7); /* W3C */ + background-position: center; + background-repeat: no-repeat; } -div.file_priority_control.normal:hover { - background-position: right top; +div.file-priority-radiobox > div.low.selected { + background: #93e8ff; + background-image: url(images/file-priority-low.png); /* fallback */ + background-image: url(images/file-priority-low.png), -webkit-gradient(linear, left top, left bottom, from(#68abe6), to(#93e8ff)); /* Saf4+, Chrome */ + background-image: url(images/file-priority-low.png), -webkit-linear-gradient(top, #68abe6, #93e8ff); /* Chrome 10+, Saf5.1+ */ + background-image: url(images/file-priority-low.png), -moz-linear-gradient(top, #68abe6, #93e8ff); /* FF3.6+ */ + background-image: url(images/file-priority-low.png), -ms-linear-gradient(top, #68abe6, #93e8ff); /* IE10 */ + background-image: url(images/file-priority-low.png), -o-linear-gradient(top, #68abe6, #93e8ff); /* Opera 11.10+ */ + background-image: url(images/file-priority-low.png), linear-gradient(top, #68abe6, #93e8ff); /* W3C */ + background-position: center; + background-repeat: no-repeat; } -div.file_priority_control.high { - background-position: left -19px; + + +div.file-priority-radiobox > div.normal { + background: #D7D7D7; + background-image: url(images/file-priority-normal.png); /* fallback */ + background-image: url(images/file-priority-normal.png), -webkit-gradient(linear, left top, left bottom, from(#EDEDED), to(#D7D7D7)); /* Saf4+, Chrome */ + background-image: url(images/file-priority-normal.png), -webkit-linear-gradient(top, #EDEDED, #D7D7D7); /* Chrome 10+, Saf5.1+ */ + background-image: url(images/file-priority-normal.png), -moz-linear-gradient(top, #EDEDED, #D7D7D7); /* FF3.6+ */ + background-image: url(images/file-priority-normal.png), -ms-linear-gradient(top, #EDEDED, #D7D7D7); /* IE10 */ + background-image: url(images/file-priority-normal.png), -o-linear-gradient(top, #EDEDED, #D7D7D7); /* Opera 11.10+ */ + background-image: url(images/file-priority-normal.png), linear-gradient(top, #EDEDED, #D7D7D7); /* W3C */ + background-position: center; + background-repeat: no-repeat; } -div.file_priority_control.high:hover { - background-position: right -19px; +div.file-priority-radiobox > div.normal.selected { + background: #93e8ff; + background-image: url(images/file-priority-normal.png); /* fallback */ + background-image: url(images/file-priority-normal.png), -webkit-gradient(linear, left top, left bottom, from(#68abe6), to(#93e8ff)); /* Saf4+, Chrome */ + background-image: url(images/file-priority-normal.png), -webkit-linear-gradient(top, #68abe6, #93e8ff); /* Chrome 10+, Saf5.1+ */ + background-image: url(images/file-priority-normal.png), -moz-linear-gradient(top, #68abe6, #93e8ff); /* FF3.6+ */ + background-image: url(images/file-priority-normal.png), -ms-linear-gradient(top, #68abe6, #93e8ff); /* IE10 */ + background-image: url(images/file-priority-normal.png), -o-linear-gradient(top, #68abe6, #93e8ff); /* Opera 11.10+ */ + background-image: url(images/file-priority-normal.png), linear-gradient(top, #68abe6, #93e8ff); /* W3C */ + background-position: center; + background-repeat: no-repeat; } -div.file_priority_control.low { - background-position: left -38px; + + +div.file-priority-radiobox > div.high { + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + -moz-border-radius-topright: 5px; + -moz-border-radius-bottomright: 5px; + border-left-width: 0px; + background: #D7D7D7; + background-image: url(images/file-priority-high.png); /* fallback */ + background-image: url(images/file-priority-high.png), -webkit-gradient(linear, left top, left bottom, from(#EDEDED), to(#D7D7D7)); /* Saf4+, Chrome */ + background-image: url(images/file-priority-high.png), -webkit-linear-gradient(top, #EDEDED, #D7D7D7); /* Chrome 10+, Saf5.1+ */ + background-image: url(images/file-priority-high.png), -moz-linear-gradient(top, #EDEDED, #D7D7D7); /* FF3.6+ */ + background-image: url(images/file-priority-high.png), -ms-linear-gradient(top, #EDEDED, #D7D7D7); /* IE10 */ + background-image: url(images/file-priority-high.png), -o-linear-gradient(top, #EDEDED, #D7D7D7); /* Opera 11.10+ */ + background-image: url(images/file-priority-high.png), linear-gradient(top, #EDEDED, #D7D7D7); /* W3C */ + background-position: center; + background-repeat: no-repeat; } -div.file_priority_control.low:hover { - background-position: right -38px; -} -ul.single_file li.inspector_torrent_file_list_entry>.file_priority_control, -li.inspector_torrent_file_list_entry.complete div.file_priority_control { - background-position: left -57px; - cursor: default; +div.file-priority-radiobox > div.high.selected { + background: #93e8ff; + background-image: url(images/file-priority-high.png); /* fallback */ + background-image: url(images/file-priority-high.png), -webkit-gradient(linear, left top, left bottom, from(#68abe6), to(#93e8ff)); /* Saf4+, Chrome */ + background-image: url(images/file-priority-high.png), -webkit-linear-gradient(top, #68abe6, #93e8ff); /* Chrome 10+, Saf5.1+ */ + background-image: url(images/file-priority-high.png), -moz-linear-gradient(top, #68abe6, #93e8ff); /* FF3.6+ */ + background-image: url(images/file-priority-high.png), -ms-linear-gradient(top, #68abe6, #93e8ff); /* IE10 */ + background-image: url(images/file-priority-high.png), -o-linear-gradient(top, #68abe6, #93e8ff); /* Opera 11.10+ */ + background-image: url(images/file-priority-high.png), linear-gradient(top, #68abe6, #93e8ff); /* W3C */ + background-position: center; + background-repeat: no-repeat; } diff --git a/web/style/transmission/images/Makefile.am b/web/style/transmission/images/Makefile.am index 401bf7493..f50f227b5 100644 --- a/web/style/transmission/images/Makefile.am +++ b/web/style/transmission/images/Makefile.am @@ -4,6 +4,9 @@ datadir = ${datarootdir}/${PACKAGE_NAME}/${subdir} dist_data_DATA = \ blue-turtle.png \ chrome.png \ + file-priority-high.png \ + file-priority-low.png \ + file-priority-normal.png \ filter_bar.png \ filter_icon.png \ iphone_chrome.png \ diff --git a/web/style/transmission/images/buttons/Makefile.am b/web/style/transmission/images/buttons/Makefile.am index 25d872979..37def7b13 100644 --- a/web/style/transmission/images/buttons/Makefile.am +++ b/web/style/transmission/images/buttons/Makefile.am @@ -2,7 +2,6 @@ datadir = ${datarootdir}/${PACKAGE_NAME}/${subdir} dist_data_DATA = \ cancel.png \ - file_priority_buttons.png \ file_wanted_buttons.png \ info_activity.png \ info_files.png \ diff --git a/web/style/transmission/images/buttons/file_priority_buttons.png b/web/style/transmission/images/buttons/file_priority_buttons.png deleted file mode 100644 index 1d4b12b4d..000000000 Binary files a/web/style/transmission/images/buttons/file_priority_buttons.png and /dev/null differ diff --git a/web/style/transmission/images/file-priority-high.png b/web/style/transmission/images/file-priority-high.png new file mode 100644 index 000000000..dc490b8fc Binary files /dev/null and b/web/style/transmission/images/file-priority-high.png differ diff --git a/web/style/transmission/images/file-priority-low.png b/web/style/transmission/images/file-priority-low.png new file mode 100644 index 000000000..c8cc936bb Binary files /dev/null and b/web/style/transmission/images/file-priority-low.png differ diff --git a/web/style/transmission/images/file-priority-normal.png b/web/style/transmission/images/file-priority-normal.png new file mode 100644 index 000000000..cb01551c1 Binary files /dev/null and b/web/style/transmission/images/file-priority-normal.png differ diff --git a/web/style/transmission/mobile.css b/web/style/transmission/mobile.css index 3b998346a..fd0dc5854 100644 --- a/web/style/transmission/mobile.css +++ b/web/style/transmission/mobile.css @@ -792,37 +792,110 @@ li.inspector_torrent_file_list_entry.complete>.file_wanted_control { cursor: default; } -div.file_priority_control { +div.file-priority-radiobox { + display: inline; float: right; - margin: 4px 0 0 0; - width: 35px; - height: 19px; - background-image: url('images/buttons/file_priority_buttons.png'); - background-repeat: no-repeat; - background-color: transparent; + margin: 4px; + margin-top: 2px; +} +div.file-priority-radiobox > * { + font-size: 20px; cursor: pointer; + display: inline-block; + width: 30px; + height: 12px; + border-style: solid; + border-color: #aaa; + border-width: 1px; + padding: 3px; } -div.file_priority_control.normal { - background-position: left top; + +div.file-priority-radiobox > div.low { + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-bottomleft: 5px; + border-right-width: 0px; + + background: #D7D7D7; + background-image: url(images/file-priority-low.png); /* fallback */ + background-image: url(images/file-priority-low.png), -webkit-gradient(linear, left top, left bottom, from(#EDEDED), to(#D7D7D7)); /* Saf4+, Chrome */ + background-image: url(images/file-priority-low.png), -webkit-linear-gradient(top, #EDEDED, #D7D7D7); /* Chrome 10+, Saf5.1+ */ + background-image: url(images/file-priority-low.png), -moz-linear-gradient(top, #EDEDED, #D7D7D7); /* FF3.6+ */ + background-image: url(images/file-priority-low.png), -ms-linear-gradient(top, #EDEDED, #D7D7D7); /* IE10 */ + background-image: url(images/file-priority-low.png), -o-linear-gradient(top, #EDEDED, #D7D7D7); /* Opera 11.10+ */ + background-image: url(images/file-priority-low.png), linear-gradient(top, #EDEDED, #D7D7D7); /* W3C */ + background-position: center; + background-repeat: no-repeat; } -div.file_priority_control.normal:hover { - background-position: right top; +div.file-priority-radiobox > div.low.selected { + background: #93e8ff; + background-image: url(images/file-priority-low.png); /* fallback */ + background-image: url(images/file-priority-low.png), -webkit-gradient(linear, left top, left bottom, from(#68abe6), to(#93e8ff)); /* Saf4+, Chrome */ + background-image: url(images/file-priority-low.png), -webkit-linear-gradient(top, #68abe6, #93e8ff); /* Chrome 10+, Saf5.1+ */ + background-image: url(images/file-priority-low.png), -moz-linear-gradient(top, #68abe6, #93e8ff); /* FF3.6+ */ + background-image: url(images/file-priority-low.png), -ms-linear-gradient(top, #68abe6, #93e8ff); /* IE10 */ + background-image: url(images/file-priority-low.png), -o-linear-gradient(top, #68abe6, #93e8ff); /* Opera 11.10+ */ + background-image: url(images/file-priority-low.png), linear-gradient(top, #68abe6, #93e8ff); /* W3C */ + background-position: center; + background-repeat: no-repeat; } -div.file_priority_control.high { - background-position: left -19px; + + +div.file-priority-radiobox > div.normal { + background: #D7D7D7; + background-image: url(images/file-priority-normal.png); /* fallback */ + background-image: url(images/file-priority-normal.png), -webkit-gradient(linear, left top, left bottom, from(#EDEDED), to(#D7D7D7)); /* Saf4+, Chrome */ + background-image: url(images/file-priority-normal.png), -webkit-linear-gradient(top, #EDEDED, #D7D7D7); /* Chrome 10+, Saf5.1+ */ + background-image: url(images/file-priority-normal.png), -moz-linear-gradient(top, #EDEDED, #D7D7D7); /* FF3.6+ */ + background-image: url(images/file-priority-normal.png), -ms-linear-gradient(top, #EDEDED, #D7D7D7); /* IE10 */ + background-image: url(images/file-priority-normal.png), -o-linear-gradient(top, #EDEDED, #D7D7D7); /* Opera 11.10+ */ + background-image: url(images/file-priority-normal.png), linear-gradient(top, #EDEDED, #D7D7D7); /* W3C */ + background-position: center; + background-repeat: no-repeat; } -div.file_priority_control.high:hover { - background-position: right -19px; +div.file-priority-radiobox > div.normal.selected { + background: #93e8ff; + background-image: url(images/file-priority-normal.png); /* fallback */ + background-image: url(images/file-priority-normal.png), -webkit-gradient(linear, left top, left bottom, from(#68abe6), to(#93e8ff)); /* Saf4+, Chrome */ + background-image: url(images/file-priority-normal.png), -webkit-linear-gradient(top, #68abe6, #93e8ff); /* Chrome 10+, Saf5.1+ */ + background-image: url(images/file-priority-normal.png), -moz-linear-gradient(top, #68abe6, #93e8ff); /* FF3.6+ */ + background-image: url(images/file-priority-normal.png), -ms-linear-gradient(top, #68abe6, #93e8ff); /* IE10 */ + background-image: url(images/file-priority-normal.png), -o-linear-gradient(top, #68abe6, #93e8ff); /* Opera 11.10+ */ + background-image: url(images/file-priority-normal.png), linear-gradient(top, #68abe6, #93e8ff); /* W3C */ + background-position: center; + background-repeat: no-repeat; } -div.file_priority_control.low { - background-position: left -38px; + + +div.file-priority-radiobox > div.high { + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + -moz-border-radius-topright: 5px; + -moz-border-radius-bottomright: 5px; + border-left-width: 0px; + background: #D7D7D7; + background-image: url(images/file-priority-high.png); /* fallback */ + background-image: url(images/file-priority-high.png), -webkit-gradient(linear, left top, left bottom, from(#EDEDED), to(#D7D7D7)); /* Saf4+, Chrome */ + background-image: url(images/file-priority-high.png), -webkit-linear-gradient(top, #EDEDED, #D7D7D7); /* Chrome 10+, Saf5.1+ */ + background-image: url(images/file-priority-high.png), -moz-linear-gradient(top, #EDEDED, #D7D7D7); /* FF3.6+ */ + background-image: url(images/file-priority-high.png), -ms-linear-gradient(top, #EDEDED, #D7D7D7); /* IE10 */ + background-image: url(images/file-priority-high.png), -o-linear-gradient(top, #EDEDED, #D7D7D7); /* Opera 11.10+ */ + background-image: url(images/file-priority-high.png), linear-gradient(top, #EDEDED, #D7D7D7); /* W3C */ + background-position: center; + background-repeat: no-repeat; } -div.file_priority_control.low:hover { - background-position: right -38px; -} -ul.single_file li.inspector_torrent_file_list_entry>.file_priority_control, li.inspector_torrent_file_list_entry.complete div.file_priority_control { - background-position: left -57px; - cursor: default; +div.file-priority-radiobox > div.high.selected { + background: #93e8ff; + background-image: url(images/file-priority-high.png); /* fallback */ + background-image: url(images/file-priority-high.png), -webkit-gradient(linear, left top, left bottom, from(#68abe6), to(#93e8ff)); /* Saf4+, Chrome */ + background-image: url(images/file-priority-high.png), -webkit-linear-gradient(top, #68abe6, #93e8ff); /* Chrome 10+, Saf5.1+ */ + background-image: url(images/file-priority-high.png), -moz-linear-gradient(top, #68abe6, #93e8ff); /* FF3.6+ */ + background-image: url(images/file-priority-high.png), -ms-linear-gradient(top, #68abe6, #93e8ff); /* IE10 */ + background-image: url(images/file-priority-high.png), -o-linear-gradient(top, #68abe6, #93e8ff); /* Opera 11.10+ */ + background-image: url(images/file-priority-high.png), linear-gradient(top, #68abe6, #93e8ff); /* W3C */ + background-position: center; + background-repeat: no-repeat; }