The branch, eden has been updated
via 56968852b5ba02b7b60a05376f6a41cf22684ffa (commit)
from 6548dfce0396921c79e4a86191b0e5a4f4528990 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/webinterfaces;a=commit;h=56968852b5ba02b7b60a05376f6a41cf22684ffa
commit 56968852b5ba02b7b60a05376f6a41cf22684ffa
Author: montellese <[email protected]>
Date: Sun Jul 1 10:31:51 2012 +0200
[webinterface.home-row] updated to 1.5.6
diff --git a/webinterface.home-row/addon.xml b/webinterface.home-row/addon.xml
index d6ec888..ec0c090 100644
--- a/webinterface.home-row/addon.xml
+++ b/webinterface.home-row/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="webinterface.home-row"
- version="1.5.1"
+ version="1.5.6"
name="Home Row"
provider-name="Soljin">
<requires>
@@ -12,7 +12,7 @@
point="xbmc.gui.webinterface"/>
<extension point="xbmc.addon.metadata">
<summary lang="en">Home Row - Fast keystroke/touch based web interface for
XBMC</summary>
- <description lang="en">Updated for Eden with better mobile experience, UI
update, and general feature set. The biggest addition is context modal menus,
which are accessed by right clicking or shift+enter. Home Row focuses on speed
by using a quick refine text field to filter items and then select them by
hitting enter. You can use the up and down arrows to select items while focused
on the field. It is also touch and mobile friendly. It has a hash based history
system but doesn't support deep linking. It should work with any browser that
supports JS. If it looks funny or runs slow, get a better browser.</description>
+ <description lang="en">Home Row focuses on speed by using a quick refine
text field. It is very mouse, touch and mobile friendly. It has queueing and
playlist support. It should work with any modern browser that supports
JS.</description>
<platform>all</platform>
<language>en</language>
</extension>
diff --git a/webinterface.home-row/css/home-row.css
b/webinterface.home-row/css/home-row.css
index 019c174..146a0cb 100644
--- a/webinterface.home-row/css/home-row.css
+++ b/webinterface.home-row/css/home-row.css
@@ -1,509 +1,517 @@
-HTML, BODY, DIV, SPAN, OBJECT, IFRAME, H1, H2, H3, H4, H5, H6, P, BLOCKQUOTE,
PRE, A, ABBR, ADDRESS, CITE, CODE, DEL, DFN, EM, IMG, INS, Q, SMALL, STRONG,
SUB, SUP, DL, DT, DD, OL, UL, LI, FIELDSET, FORM, LABEL, LEGEND, TABLE,
CAPTION, TBODY, TFOOT, THEAD, TR, TH, TD
-{
- border: 0;
- margin: 0;
- padding: 0;
-}
-ARTICLE, ASIDE, FIGURE, FIGURE IMG, FIGCAPTION, HGROUP, FOOTER, HEADER, NAV,
SECTION, VIDEO, OBJECT
-{
- display: block;
-}
-LI
-{
- list-style: none;
-}
-A IMG
-{
- border: 0;
-}
-FIGURE
-{
- position: relative;
-}
-FIGURE IMG
-{
- width: 100%;
-}
-BODY
-{
- font-family: Verdana, Arial, "San Serif";
- font-size: 12px;
- overflow-x: hidden;
- background: rgb(10, 10, 10);
-}
-IMG:not([src])
-{
- display: none;
- padding: 0;
- margin: 0;
-}
-.hide, .templates
-{
- display: none;
-}
-.clear
-{
- clear: both;
-}
-.status-bar
-{
- border: 2px solid #808080;
- background: rgba(255, 255, 255, 0.4);
- width: 100%;
- left: 0;
- bottom: 0px;
- position: fixed;
- z-index: 1;
-}
-.media
-{
- padding: 10px 0px 10px 10px;
- color: #FFFFFF;
-}
-.media .column
-{
- display: inline-block;
-}
-.media P
-{
- padding-bottom: 5px;
- max-width: 240px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-.media P.label
-{
- font-weight: bold;
-}
-P.icon
-{
- height: 66px;
- border: 1px solid #808080;
- overflow: hidden;
- margin-right: 5px;
- vertical-align: top;
- background: rgb(200, 200, 200);
- font-size: 0;
- line-height: 0;
- padding: 0;
-}
-.media P.icon IMG.icon
-{
- height: 100%;
-}
-.info
-{
- background: rgb(255, 255, 255);
- border: 1px solid #808080;
- padding: 14px;
- color: rgb(25, 25, 25);
- max-width: 240px;
-}
-.status
-{
- position: absolute;
- left: 50%;
- top: -25px;
- padding-top: 10px;
-}
-.status.button
-{
- position: relative;
- left: -50%;
-}
-.tools
-{
- float: right;
- text-align: right;
- padding-bottom: 10px;
-}
-.tools > DIV
-{
- padding: 10px 10px 0px 0px;
-}
-.button
-{
- display: inline-block;
- padding: 6px 10px;
- margin: 0px 5px 0px 0px;
- font-size: 12px;
- background: #FFFFFF url(images/home-row-sprite-min.png) no-repeat
center 23px;
- border: 1px solid #808080;
- border-radius: 8px;
- cursor: pointer;
- font-weight: bold;
- color: rgb(25, 25, 25);
- box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.7);
- vertical-align: top;
- height: 14px;
-}
-.button:hover, .button:active, .button:focus
-{
- background-color: rgba(25, 25, 25, 0.75);
- color: #FFFFFF;
-}
-.play-controls .button
-{
- min-width: 14px;
- line-height: 200px;
-}
-.shuffle.button
-{
- background-position: 50% -234px;
-}
-.shuffle.button:hover
-{
- background-position: 50% -494px;
-}
-.skip-forward.button
-{
- background-position: 56% -208px;
- min-width: 38px;
-}
-.skip-forward.button:hover
-{
- background-position: 56% -468px;
-}
-.skip-forward-short.button
-{
- background-position: 36% -130px;
-}
-.skip-forward-short.button:hover
-{
- background-position: 36% -390px;
-}
-.skip-back-short.button
-{
- background-position: 68% -156px;
-}
-.skip-back-short.button:hover
-{
- background-position: 68% -416px;
-}
-.skip-back.button
-{
- background-position: 45% -182px;
- min-width: 38px;
-}
-.skip-back.button:hover
-{
- background-position: 45% -442px;
-}
-.next.button
-{
- background-position: 50% -52px;
-}
-.next.button:hover
-{
- background-position: 50% -312px;
-}
-.stop.button
-{
- background-position: 50% -104px;
-}
-.stop.button:hover
-{
- background-position: 50% -364px;
-}
-.play-pause.button
-{
- background-position: 50% 0px;
-}
-.play-pause.button:hover
-{
- background-position: 50% -260px;
-}
-.previous.button
-{
- background-position: 50% -78px;
-}
-.previous.button:hover
-{
- background-position: 50% -338px;
-}
-.status.button:hover
-{
- color: rgb(25, 25, 25);
- background: rgb(200, 200, 200);
-}
-.search-bar
-{
- border: 2px solid #808080;
- background: rgba(255, 255, 255, 0.4);
- width: 100%;
- position: fixed;
- padding: 0 20px 10px;
- z-index: 1;
-}
-.search-bar > LI
-{
- list-style: none;
- margin-top: 10px;
- float: left;
-}
-.bread-crumbs
-{
- padding: 0 10px;
- display: inline-block;
- vertical-align: top;
-}
-.back
-{
- cursor: pointer;
- text-align: center;
-}
-.info-box
-{
- position: absolute;
- right: 0;
- top: 35px;
- color: #808080;
- display: none;
- width: 200px;
- padding: 20px;
- background: #FFFFFF;
- border: 1px solid #808080;
- line-height: 20px;
-}
-.info-box H3
-{
- margin-bottom: 8px;
- color: #333;
-}
-.info-box UL
-{
- margin-bottom: 15px;
-}
-.info-box UL:last-child
-{
- margin-bottom: 0;
-}
-.info-box UL LI
-{
- margin-bottom: 5px;
-}
-.help.button
-{
- position: relative;
- margin-left: 5px;
-}
-.help.button:hover .info-box
-{
- display: block;
-}
-.search-box
-{
- height: 30px;
- font-size: 16px;
- color: rgb(50, 50, 50);
- border: none;
- padding: 0 10px;
- width: 185px;
-}
-.search-box.on
-{
- color: #000000;
-}
-.status-bar
-{
- clear: both;
-}
-.results-box
-{
- padding: 54px 0px 90px;
-}
-.results
-{
- border-top: 1px solid #808080;
- border-left: 1px solid #808080;
- position: relative;
-/*
-overflow-x:hidden;
-overflow-y:auto;
-*/
-}
-.results LI
-{
- width: 190px;
- height: 300px;
- padding: 10px;
- border-bottom: 1px solid #808080;
- border-right: 1px solid #808080;
- display: inline-block;
- vertical-align: top;
- color: #FFFFFF;
- list-style: none;
- cursor: pointer;
-}
-.results LI.album, .results LI.song
-{
- height: 232px;
-}
-.results LI.hide
-{
- display: none;
-}
-.results LI:hover, .results LI.selected
-{
- background: rgba(255, 255, 255, 0.3);
-}
-.results LI .thumb
-{
- width: 100%;
- height: 268px;
- overflow: hidden;
- text-align: center;
-}
-.results .thumb.no-image
-{
- background: rgba(255, 255, 255, 0.45)
url(images/clean-icons/file-icon.png) no-repeat center;
- height: 250px;
- display: block;
-}
-.home.results .playlist .thumb
-{
- background-image: url(images/clean-icons/document-icon.png);
-}
-.home.results .movies .thumb, .home.results .television .thumb, .home.results
.recent .thumb, .television.results .tv.show .thumb.no-image, .tv-show.results
.season .thumb.no-image
-{
- background-image: url(images/clean-icons/movie-folder-icon.png);
-}
-.home.results .artists .thumb, .home.results .albums .thumb, .albums.results
.thumb.no-image, .artists.results .thumb.no-image
-{
- background-image: url(images/clean-icons/music-folder-icon.png);
-}
-.home.results .video.fliles .thumb.no-image
-{
- background-image: url(images/clean-icons/movie-folder-icon.png);
-}
-.home.results .music.fliles .thumb
-{
- background-image: url(images/clean-icons/music-folder-icon.png);
-}
-.album.results .thumb.no-image, .music-fliles.results .thumb
-{
- background-image: url(images/clean-icons/music-file-icon.png);
-}
-.recent-episodes.results .episode .thumb.no-image, .season.results
.thumb.no-image, .video-fliles.results .thumb.no-image
-{
- background-image: url(images/clean-icons/movie-file-icon.png);
-}
-.results LI.album .thumb, .results LI.song .thumb
-{
- height: 197px;
-}
-.results LI.album .thumb.no-image, .results LI.song .thumb.no-image
-{
- height: 106px;
- padding-top: 85px;
-}
-.results LI .thumb.no-image IMG
-{
- display: none;
-}
-.results LI .thumb IMG
-{
- height: 100%;
-}
-.results LI.episode .thumb IMG
-{
- margin-left: -50%;
-}
-.results LI.album .thumb IMG, .results LI.song .thumb IMG
-{
- height: auto;
- width: 100% !important;
-}
-.results LI .title
-{
- margin-top: 5px;
- text-align: center;
- height: 30px;
- width: 100%;
- overflow: hidden;
- text-transform: uppercase;
- font-weight: bold;
- font-family: Helvetica, Verdana, sans-serif;
-}
-.menu-wrap.overlay
-{
- background-color: rgba(255, 255, 255, 0.45);
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
-}
-.menu-wrap.overlay .menu
-{
- width: 65%;
- max-width: 900px;
- min-width: 640px;
- margin: auto;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
- padding: 40px;
- background: rgba(0, 0, 0, 0.85);
- color: #FFFFFF;
-}
-.menu-wrap.overlay .menu H2.title
-{
- font-size: 18px;
- margin-bottom: 20px;
- text-transform: uppercase;
- font-family: Verdana, sans-serif;
- text-overflow: ellipsis;
- width: 100%;
- overflow: hidden;
- white-space: nowrap;
-}
-.menu .menu-info-wrapper IMG.thumb
-{
- max-width: 72%;
- max-height: 350px;
- margin-bottom: 15px;
- border: 1px solid rgba(255, 255, 255, 0.45);
-}
-.menu .menu-info-wrapper UL.menu-options
-{
- float: right;
- width: 25%;
- border: 1px solid #999;
- margin-bottom: 15px;
-}
-.menu-info-wrapper P.description
-{
- background: rgba(255, 255, 255, 0.85);
- color: #000;
- font-size: 16px;
- line-height: 22px;
- font-family: Georgia;
- padding: 20px;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
-}
-.menu-info-wrapper
-{
- position: relative;
- overflow: hidden;
-}
-UL.menu-options LI, UL.menu-options:hover LI.selected
-{
- list-style: none;
- padding: 20px 0 20px 20px;
- background: rgba(0, 0, 0, 0.85);
- color: #DDD;
- font-size: 14px;
- font-weight: bold;
- cursor: pointer;
- text-align: left;
-}
-UL.menu-options LI.selected, UL.menu-options LI:hover, UL.menu-options:hover
LI.selected:hover
-{
- color: #333;
- background: rgba(255, 255, 255, 0.85);
-}
-.shuffle.button.shuffled
-{
- opacity: .65;
+HTML, BODY, DIV, SPAN, OBJECT, IFRAME, H1, H2, H3, H4, H5, H6, P, BLOCKQUOTE,
PRE, A, ABBR, ADDRESS, CITE, CODE, DEL, DFN, EM, IMG, INS, Q, SMALL, STRONG,
SUB, SUP, DL, DT, DD, OL, UL, LI, FIELDSET, FORM, LABEL, LEGEND, TABLE,
CAPTION, TBODY, TFOOT, THEAD, TR, TH, TD {
+ border: 0;
+ margin: 0;
+ padding: 0;
+}
+
+ARTICLE, ASIDE, FIGURE, FIGURE IMG, FIGCAPTION, HGROUP, FOOTER, HEADER, NAV,
SECTION, VIDEO, OBJECT {
+ display: block;
+}
+
+LI {
+ list-style: none;
+}
+
+A IMG {
+ border: 0;
+}
+
+FIGURE {
+ position: relative;
+}
+
+FIGURE IMG {
+ width: 100%;
+}
+
+BODY {
+ font-family: Verdana, Arial, "San Serif";
+ font-size: 12px;
+ overflow-x: hidden;
+ background: rgb(10, 10, 10);
+}
+
+IMG:not([src]) {
+ display: none;
+ padding: 0;
+ margin: 0;
+}
+
+.hide, .templates {
+ display: none;
+}
+
+.clear {
+ clear: both;
+}
+
+.status-bar {
+ border: 2px solid #808080;
+ background: rgba(255, 255, 255, 0.4);
+ width: 100%;
+ left: 0;
+ bottom: 0px;
+ position: fixed;
+ z-index: 1;
+}
+
+.media {
+ padding: 10px 0px 10px 10px;
+ color: #FFFFFF;
+}
+
+.media .column {
+ display: inline-block;
+}
+
+.media P {
+ padding-bottom: 5px;
+ max-width: 240px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.media P.label {
+ font-weight: bold;
+}
+
+P.icon {
+ height: 66px;
+ border: 1px solid #808080;
+ overflow: hidden;
+ margin-right: 5px;
+ vertical-align: top;
+ background: rgb(200, 200, 200);
+ font-size: 0;
+ line-height: 0;
+ padding: 0;
+}
+
+.media P.icon IMG.icon {
+ height: 100%;
+}
+
+.info {
+ background: rgb(255, 255, 255);
+ border: 1px solid #808080;
+ padding: 14px;
+ color: rgb(25, 25, 25);
+ max-width: 240px;
+}
+
+.status {
+ position: absolute;
+ left: 50%;
+ bottom: 10px;
+ padding-top: 10px;
+ z-index: 5;
+}
+
+.status.button {
+ position: relative;
+ left: -50%;
+}
+
+.tools {
+ float: right;
+ text-align: right;
+ padding-bottom: 10px;
+}
+
+.tools > DIV {
+ padding: 10px 10px 0px 0px;
+}
+
+.button {
+ display: inline-block;
+ padding: 6px 10px;
+ margin: 0px 5px 0px 0px;
+ font-size: 12px;
+ background: #FFFFFF url(images/home-row-sprite-min.png) no-repeat center
23px;
+ border: 1px solid #808080;
+ border-radius: 8px;
+ cursor: pointer;
+ font-weight: bold;
+ color: rgb(25, 25, 25);
+ box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.7);
+ vertical-align: top;
+ height: 14px;
+}
+
+.button:hover, .button:active, .button:focus {
+ background-color: rgba(25, 25, 25, 0.75);
+ color: #FFFFFF;
+}
+
+.play-controls .button {
+ min-width: 14px;
+ line-height: 200px;
+}
+
+.shuffle.button {
+ background-position: 50% -234px;
+}
+
+.shuffle.button:hover {
+ background-position: 50% -494px;
+}
+
+.skip-forward.button {
+ background-position: 56% -208px;
+ min-width: 38px;
+}
+
+.skip-forward.button:hover {
+ background-position: 56% -468px;
+}
+
+.skip-forward-short.button {
+ background-position: 36% -130px;
+}
+
+.skip-forward-short.button:hover {
+ background-position: 36% -390px;
+}
+
+.skip-back-short.button {
+ background-position: 68% -156px;
+}
+
+.skip-back-short.button:hover {
+ background-position: 68% -416px;
+}
+
+.skip-back.button {
+ background-position: 45% -182px;
+ min-width: 38px;
+}
+
+.skip-back.button:hover {
+ background-position: 45% -442px;
+}
+
+.next.button {
+ background-position: 50% -52px;
+}
+
+.next.button:hover {
+ background-position: 50% -312px;
+}
+
+.stop.button {
+ background-position: 50% -104px;
+}
+
+.stop.button:hover {
+ background-position: 50% -364px;
+}
+
+.play-pause.button {
+ background-position: 50% 0px;
+}
+
+.play-pause.button:hover {
+ background-position: 50% -260px;
+}
+
+.play-pause.playing.button {
+ background-position: 50% -26px;
+}
+
+.play-pause.playing.button:hover {
+ background-position: 50% -286px;
+}
+
+.previous.button {
+ background-position: 50% -78px;
+}
+
+.previous.button:hover {
+ background-position: 50% -338px;
+}
+
+.status.button:hover {
+ color: rgb(25, 25, 25);
+ background: rgb(200, 200, 200);
+}
+
+.search-bar {
+ border: 2px solid #808080;
+ background: rgba(255, 255, 255, 0.4);
+ width: 100%;
+ position: fixed;
+ padding: 0 20px 10px;
+ z-index: 1;
+}
+
+.search-bar > LI {
+ list-style: none;
+ margin-top: 10px;
+ float: left;
+}
+
+.bread-crumbs {
+ padding: 0 10px;
+ display: inline-block;
+ vertical-align: top;
+}
+
+.back {
+ cursor: pointer;
+ text-align: center;
+}
+
+.info-box {
+ position: absolute;
+ right: 0;
+ top: 35px;
+ color: #808080;
+ display: none;
+ width: 200px;
+ padding: 20px;
+ background: #FFFFFF;
+ border: 1px solid #808080;
+ line-height: 20px;
+}
+
+.info-box H3 {
+ margin-bottom: 8px;
+ color: #333;
+}
+
+.info-box UL {
+ margin-bottom: 15px;
+}
+
+.info-box UL:last-child {
+ margin-bottom: 0;
+}
+
+.info-box UL LI {
+ margin-bottom: 5px;
+}
+
+.help.button {
+ position: relative;
+ margin-left: 5px;
+}
+
+.help.button:hover .info-box {
+ display: block;
+}
+
+.search-box {
+ height: 30px;
+ font-size: 16px;
+ color: rgb(50, 50, 50);
+ border: none;
+ padding: 0 10px;
+ width: 185px;
+}
+
+.search-box.on {
+ color: #000000;
+}
+
+.status-bar {
+ clear: both;
+}
+
+.results-box {
+ padding: 54px 0px 90px;
+}
+
+.results {
+ border-top: 1px solid #808080;
+ border-left: 1px solid #808080;
+ position: relative;
+ /*
+ overflow-x:hidden;
+ overflow-y:auto;
+ */
+}
+
+.results LI {
+ width: 190px;
+ height: 300px;
+ padding: 10px;
+ border-bottom: 1px solid #808080;
+ border-right: 1px solid #808080;
+ display: inline-block;
+ vertical-align: top;
+ color: #FFFFFF;
+ list-style: none;
+ cursor: pointer;
+}
+
+.results LI.album, .results LI.song {
+ height: 232px;
+}
+
+.results LI.hide {
+ display: none;
+}
+
+.results LI:hover, .results LI.selected {
+ background: rgba(255, 255, 255, 0.3);
+}
+
+.results LI .thumb {
+ width: 100%;
+ height: 268px;
+ overflow: hidden;
+ text-align: center;
+}
+
+.results .thumb.no-image {
+ background: rgba(255, 255, 255, 0.45)
url(images/clean-icons/file-icon.png) no-repeat center;
+ height: 250px;
+ display: block;
+}
+
+.home.results .playlist .thumb {
+ background-image: url(images/clean-icons/document-icon.png);
+}
+
+.home.results .movies .thumb, .home.results .television .thumb, .home.results
.recent .thumb, .television.results .tv.show .thumb.no-image, .tv-show.results
.season .thumb.no-image {
+ background-image: url(images/clean-icons/movie-folder-icon.png);
+}
+
+.home.results .artists .thumb, .home.results .albums .thumb, .albums.results
.thumb.no-image, .artists.results .thumb.no-image {
+ background-image: url(images/clean-icons/music-folder-icon.png);
+}
+
+.home.results .video.fliles .thumb.no-image {
+ background-image: url(images/clean-icons/movie-folder-icon.png);
+}
+
+.home.results .music.fliles .thumb {
+ background-image: url(images/clean-icons/music-folder-icon.png);
+}
+
+.album.results .thumb.no-image, .music-fliles.results .thumb {
+ background-image: url(images/clean-icons/music-file-icon.png);
+}
+
+.recent-episodes.results .episode .thumb.no-image, .season.results
.thumb.no-image, .video-fliles.results .thumb.no-image {
+ background-image: url(images/clean-icons/movie-file-icon.png);
+}
+
+.results LI.album .thumb, .results LI.song .thumb {
+ height: 197px;
+}
+
+.results LI.album .thumb.no-image, .results LI.song .thumb.no-image {
+ height: 106px;
+ padding-top: 85px;
+}
+
+.results LI .thumb.no-image IMG {
+ display: none;
+}
+
+.results LI .thumb IMG {
+ height: 100%;
+}
+
+.results LI.episode .thumb IMG {
+ margin-left: -50%;
+}
+
+.results LI.album .thumb IMG, .results LI.song .thumb IMG {
+ height: auto;
+ width: 100% !important;
+}
+
+.results LI .title {
+ margin-top: 5px;
+ text-align: center;
+ height: 30px;
+ width: 100%;
+ overflow: hidden;
+ text-transform: uppercase;
+ font-weight: bold;
+ font-family: Helvetica, Verdana, sans-serif;
+}
+
+.menu-wrap.overlay {
+ background-color: rgba(255, 255, 255, 0.45);
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+}
+
+.menu-wrap.overlay .menu {
+ width: 65%;
+ max-width: 900px;
+ min-width: 640px;
+ margin: auto;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ padding: 40px;
+ background: rgba(0, 0, 0, 0.85);
+ color: #FFFFFF;
+}
+
+.menu-wrap.overlay .menu H2.title {
+ font-size: 18px;
+ margin-bottom: 20px;
+ text-transform: uppercase;
+ font-family: Verdana, sans-serif;
+ text-overflow: ellipsis;
+ width: 100%;
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+.menu .menu-info-wrapper IMG.thumb {
+ max-width: 72%;
+ max-height: 350px;
+ margin-bottom: 15px;
+ border: 1px solid rgba(255, 255, 255, 0.45);
+}
+
+.menu .menu-info-wrapper UL.menu-options {
+ float: right;
+ width: 25%;
+ border: 1px solid #999;
+ margin-bottom: 15px;
+}
+
+.menu-info-wrapper P.description {
+ background: rgba(255, 255, 255, 0.85);
+ color: #000;
+ font-size: 16px;
+ line-height: 22px;
+ font-family: Georgia;
+ padding: 20px;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+}
+
+.menu-info-wrapper {
+ position: relative;
+ overflow: hidden;
+}
+
+UL.menu-options LI, UL.menu-options:hover LI.selected {
+ list-style: none;
+ padding: 20px 0 20px 20px;
+ background: rgba(0, 0, 0, 0.85);
+ color: #DDD;
+ font-size: 14px;
+ font-weight: bold;
+ cursor: pointer;
+ text-align: left;
+}
+
+UL.menu-options LI.selected, UL.menu-options LI:hover, UL.menu-options:hover
LI.selected:hover {
+ color: #333;
+ background: rgba(255, 255, 255, 0.85);
+}
+
+.shuffle.button.shuffled {
+ opacity: .65;
}
diff --git a/webinterface.home-row/index.html b/webinterface.home-row/index.html
index 040e143..6fa12ce 100644
--- a/webinterface.home-row/index.html
+++ b/webinterface.home-row/index.html
@@ -36,10 +36,10 @@
</ul>
<h3>Hot Keys</h3>
<ul>
- <li>shift+Enter/right click - Default Item Option</li>
- <li>ctrl+shift+Q - Queue and Play</li>
- <li>ctrl+Q - Queue</li>
- <li>ctrl+alt+C - Clean Video Library</li>
+ <li><b>Shift+Enter/Right Click</b> - Default Item
Option</li>
+ <li><b>Ctrl+Shift+Q</b> - Queue and Play</li>
+ <li><b>Ctrl+Q</b> - Queue</li>
+ <li><b>Ctrl+Alt+C</b> - Clean Video Library</li>
</ul>
</div>
</li>
@@ -48,10 +48,10 @@
<ul class="results">
</ul>
</div>
+ <div class="status">
+ <a class="status button">Waiting</a>
+ </div>
<div class="status-bar">
- <div class="status">
- <a class="status button">Waiting</a>
- </div>
<div class="tools">
<div class="emulator hide">
<a class="kb-emulator button">Keyboard Emulator</a>
diff --git a/webinterface.home-row/js/home-row.js
b/webinterface.home-row/js/home-row.js
index 4cc1238..b82f9cc 100644
--- a/webinterface.home-row/js/home-row.js
+++ b/webinterface.home-row/js/home-row.js
@@ -16,6 +16,7 @@ YUI().use("json","io","transition", "node", "substitute",
"history", "array-extr
breadCrumbs = root.one(".bread-crumbs"),
crumbTemplate = breadCrumbs.one(".home").removeClass("home"),
menuTemplate = root.one(".templates .menu-wrap").cloneNode(true),
+ playButton = root.one(".play-pause"),
currentMenu,
historyManager = new Y.HistoryHash(),
isMobile = !!Y.UA.ipod || !!Y.UA.ipad || !!Y.UA.iphone ||
!!Y.UA.android || !!Y.UA.mobile,
@@ -34,7 +35,7 @@ YUI().use("json","io","transition", "node", "substitute",
"history", "array-extr
"skip-back-short":{postfix:"Seek",
params:{value:"smallbackward"},msg:"Skip Back Small"},
"play-pause":{postfix:"PlayPause",msg:"Play Pause"},
"stop":{postfix:"Stop",msg:"Stop"},
- "skip-forward-short":{postfix:".Seek",
params:{value:"smallforward"},msg:"Skip Forward Small"},
+ "skip-forward-short":{postfix:"Seek",
params:{value:"smallforward"},msg:"Skip Forward Small"},
"skip-forward":{postfix:"Seek",
params:{value:"bigforward"},msg:"Skip Forward Big"},
"next":{postfix:"GoNext",msg:"Skip Next"},
"shuffle":{msg:"Toggling Shuffle",postfix:{toString:function(){
@@ -169,7 +170,7 @@ YUI().use("json","io","transition", "node", "substitute",
"history", "array-extr
getSimpleRPC("Player.GetProperties",{
params:{
playerid:playerid,
- properties:["percentage", "type", "repeat",
"shuffled", "time", "totaltime", "playlistid", "position"]
+ properties:["percentage", "type", "repeat",
"shuffled", "time", "totaltime", "playlistid", "position", "speed"]
}
},
function(rslt){
@@ -177,6 +178,9 @@ YUI().use("json","io","transition", "node", "substitute",
"history", "array-extr
shuffled = rslt.shuffled;
shuffleTool.toggleClass("shuffled", shuffled);
+
+ playButton.toggleClass("playing", !!rslt.speed);
+
media.one(".progress").set("text",
getDisplayTime(rslt.time));
media.one(".duration").set("text",
getDisplayTime(rslt.totaltime));
@@ -405,11 +409,13 @@ YUI().use("json","io","transition", "node", "substitute",
"history", "array-extr
var keyHandler = function(e){
if(!currentMenu){
if( e.keyCode == 85 && e.shiftKey && e.ctrlKey ){
+ bark("Scanning for new content");
getSimpleRPC("VideoLibrary.Scan",{});
}else if( e.keyCode == 67 && e.altKey && e.ctrlKey ){
- alert("clean");
+ bark("Cleaning Library");
getSimpleRPC("VideoLibrary.Clean",{});
}else if(
+ /* Queue, Queue and Play */
e.keyCode == 81 &&
e.ctrlKey &&
selectedSubNode &&
@@ -489,8 +495,20 @@ YUI().use("json","io","transition", "node", "substitute",
"history", "array-extr
}else{
var cmd = item.commands.open,
params = gatherParams(item, cmd);
-
- getData(cmd.command, params, cmd.properties, function(list){
+
+ getLayeredRPCCall(item, item.commands.open, function(json){
+ var list;
+ Y.each(json.result,function(obj){
+ if(Y.Lang.isArray(obj)){
+ list = obj;
+ }
+ });
+ Y.Array.each(list,function(newItem){
+ Y.each(newItem,function(value,param){
+ newItem[param] = fixVFSImageURL(value);
+ });
+ });
+
bark("Opened: "+(item.title || item.label || item.name));
item.list = item.alwaysRefreshList ? [] : (item.list ||
[]);
@@ -546,6 +564,12 @@ YUI().use("json","io","transition", "node", "substitute",
"history", "array-extr
var queueAndPlay = function(node, play){
+ if(play){
+ bark("Queueing and playing "+getTitle(selectedSubNode));
+ }else{
+ bark("Queueing "+getTitle(selectedSubNode));
+ }
+
if(node.commands.batchGatherCommand){
if(play){
getSimpleRPC("Playlist.Clear", {params:{playlistid:1}},
batchGather);
@@ -650,32 +674,6 @@ YUI().use("json","io","transition", "node", "substitute",
"history", "array-extr
var getDescription = function(item){
return item.plot || item.description || "";
};
-
- var getData = function(command, params, properties, cb){
- cb = cb || function(){};
-
- var jsonObj = prepCommand(command,params,properties);
-
- Y.io("/jsonrpc",{
- data:Y.JSON.stringify(jsonObj),
- method:"POST",
- on:{complete:function(id, response){
- var json = Y.JSON.parse(response.responseText),
- newList;
- Y.each(json.result,function(obj){
- if(Y.Lang.isArray(obj)){
- newList = obj;
- }
- });
- Y.Array.each(newList,function(newItem){
- Y.each(newItem,function(value,param){
- newItem[param] = fixVFSImageURL(value);
- });
- });
- cb(newList);
- }}
- });
- };
var fixVFSImageURL = function(url){
if(Y.Lang.isString(url) && url.match("special://")){
diff --git a/webinterface.home-row/js/menu-structure.js
b/webinterface.home-row/js/menu-structure.js
index 92814f9..8af1d6f 100644
--- a/webinterface.home-row/js/menu-structure.js
+++ b/webinterface.home-row/js/menu-structure.js
@@ -1,4 +1,39 @@
YUI.add("HomeRowMenus", function(Y){
+ var Movie = {
+ name:"Movie",
+ list:null,
+ commands:{
+ play:{
+ command:"Player.Open",
+ params:[
+ {
+ name:"item",
+ fn:function(item){
+ return { movieid: item.movieid };
+ }
+ }
+ ]
+ },
+ queue:true,
+ batchCommand:{
+ hideMenu:true,
+ command:"Playlist.Add",
+ params:[
+ {
+ name:"playlistid",
+ value:1
+ },
+ {
+ name:"item",
+ fn:function(item){
+ return {movieid: item.movieid};
+ }
+ }
+ ]
+ }
+ }
+ };
+
var Episode = {
name:"Episode",
specialName:"{showtitle} {label}",
@@ -189,85 +224,20 @@ YUI.add("HomeRowMenus", function(Y){
}
},
list:null,
- subItems:{
- name:"Movie",
- list:null,
- commands:{
- play:{
- command:"Player.Open",
- params:[
- {
- name:"item",
- fn:function(item){
- return { movieid: item.movieid };
- }
- }
- ]
- },
- queue:true,
- batchCommand:{
- hideMenu:true,
- command:"Playlist.Add",
- params:[
- {
- name:"playlistid",
- value:1
- },
- {
- name:"item",
- fn:function(item){
- return {movieid: item.movieid};
- }
- }
- ]
- }
- }
- }
+ subItems:Y.clone(Movie)
},
{
name:"Recent Movies",
title:"Recent Movies",
noSort:true,
+ alwaysRefreshList:true,
commands:{
open:{
command:"VideoLibrary.GetRecentlyAddedMovies",
properties:["thumbnail"]
}
},
- subItems:{
- name:"Movie",
- commands:{
- play:{
- command:"Player.Open",
- params:[
- {
- name:"item",
- fn:function(item){
- return { movieid: item.movieid };
- }
- }
- ]
- },
- queue:true,
- batchCommand:{
- hideMenu:true,
- command:"Playlist.Add",
- params:[
- {
- name:"playlistid",
- value:1
- },
- {
- name:"item",
- fn:function(item){
- return {movieid: item.movieid};
- }
- }
- ]
- }
- },
- list:null
- }
+ subItems:Y.clone(Movie)
},
{
name:"Television",
@@ -380,6 +350,7 @@ YUI.add("HomeRowMenus", function(Y){
name:"Recent Episodes",
title:"Recent Episodes",
noSort:true,
+ alwaysRefreshList:true,
commands:{
open:{
command:"VideoLibrary.GetRecentlyAddedEpisodes",
@@ -430,7 +401,7 @@ YUI.add("HomeRowMenus", function(Y){
open:{
command:"Files.GetSources",
params:[
- {name:"media",fn:function(){return "video";}}
+ {name:"media",value:"video"}
]
}
},
@@ -469,7 +440,7 @@ YUI.add("HomeRowMenus", function(Y){
open:{
command:"Files.GetSources",
params:[
- {name:"media",fn:function(){return "music";}}
+ {name:"media",value:"music"}
]
}
},
-----------------------------------------------------------------------
Summary of changes:
webinterface.home-row/addon.xml | 4 +-
webinterface.home-row/css/home-row.css | 1024 ++++++++++++++--------------
webinterface.home-row/index.html | 14 +-
webinterface.home-row/js/home-row.js | 60 +-
webinterface.home-row/js/menu-structure.js | 111 ++--
5 files changed, 595 insertions(+), 618 deletions(-)
hooks/post-receive
--
Web Interfaces
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons