The branch, dharma-pre has been updated
       via  dc71fda6ce91eb132d84e0ecaebde0690caf7bea (commit)
      from  12c46ad840009a80d3a455fe1ba4c2c27bfab710 (commit)

- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/webinterfaces;a=commit;h=dc71fda6ce91eb132d84e0ecaebde0690caf7bea

commit dc71fda6ce91eb132d84e0ecaebde0690caf7bea
Author: malard <[email protected]>
Date:   Sat Nov 6 15:29:23 2010 +0000

    Updating XWMM to 1.9.2 thanks nicolas

diff --git a/webinterface.XWMM/Changelog.txt b/webinterface.XWMM/Changelog.txt
index 21dcb2e..6be2cac 100644
--- a/webinterface.XWMM/Changelog.txt
+++ b/webinterface.XWMM/Changelog.txt
@@ -1,18 +1,14 @@
 XWMM Change log
-
-1.8.0
-- Added actor management
-
-1.8.1
-- Improved music interface
-
-1.9.0
-- Removed cache folder (not required anymore)
-- Added addon.xml and icon.png for addon support
-
 1.9.1
 - Fixes :
        - Fixed genre list display was not always showing
        - Fixed movie information not always showing
        - Fixed changing covers and fanart in movies
-               
\ No newline at end of file
+
+1.9.2
+- Fixes :
+       - Fixed genre list display was not always showing in TV Shows
+       - Fixed episode list not always showing
+- Added :
+       - Scraper list is created dynamicly from installed add-ons
+       - Fanart display in Movie interface
\ No newline at end of file
diff --git a/webinterface.XWMM/addon.xml b/webinterface.XWMM/addon.xml
index 52fe3f9..a8545ec 100644
--- a/webinterface.XWMM/addon.xml
+++ b/webinterface.XWMM/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <addon
   id="webinterface.XWMM"
-  version="1.9.0"
+  version="1.9.2"
   name="XWMM"
   provider-name="slash">
   <requires>
diff --git a/webinterface.XWMM/files/browser.js 
b/webinterface.XWMM/files/browser.js
index 780dfbf..4abb63d 100644
--- a/webinterface.XWMM/files/browser.js
+++ b/webinterface.XWMM/files/browser.js
@@ -8,7 +8,9 @@
 
 Ext.onReady(function() {
 
-       // costumize menu
+       // customize menu
+       //Ext.StoreMgr.get('scraperstore').load({data: scraperList});
+
        menuBar.add({                   
                        xtype: 'tbfill'
                },{
@@ -16,16 +18,15 @@ Ext.onReady(function() {
     });
        
        setXBMCResponseFormat();
-       
+       parseScrapers();
        var str = '';
        var myjson = '';
 
-               var storesToLoad = [
+       var storesToLoad = [
           {store : 'storepath', url: 
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idPath, strPath, 
strContent, scanRecursive, useFolderNames, noUpdate strScraper FROM path)' },
           {store : 'storefiles', url: 
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile, idPath, 
strFilename, playCount FROM files)' }
        ];
 
-
        loadStartupStores = function(record, options, success){
                 var task = storesToLoad.shift();  //From the top
                 if(task){
@@ -36,14 +37,17 @@ Ext.onReady(function() {
                        } else { 
                          complain( );
                        }
-                } else {
+                } else {               
                        runtree();
                 }
        };
        loadStartupStores();
        
+       scraperStore.loadData(scraperList);
+       
 function runtree() {
        
+
        var treegrid = new Ext.ux.tree.TreeGrid({
         title: 'XBMC File browser',
                region: 'west',
@@ -67,7 +71,7 @@ function runtree() {
                columns:[{
             header: 'Sources',
             dataIndex: 'text',
-            width: 450
+            width: 400
                },{
                        header: '',
                        dataIndex: 'watched',
@@ -108,7 +112,7 @@ function runtree() {
                },{
             header: 'Scraper',
                        dataIndex: 'xbmcScraper',
-            width: 75
+            width: 120
                }]
        });
        
@@ -187,6 +191,8 @@ function runtree() {
        
        getStacks();
 
+       
+       
        var myVideoShares = getShares('video');
        
        
diff --git a/webinterface.XWMM/files/include.js 
b/webinterface.XWMM/files/include.js
index 4f940e4..e83cefb 100644
--- a/webinterface.XWMM/files/include.js
+++ b/webinterface.XWMM/files/include.js
@@ -74,7 +74,7 @@ function myExpend(node, event) {
                if (node.attributes.leaf == false) {
                        node.attributes.scansub = true;
                        var mypath = normalizeString(node.attributes.data);
-                       var myParams = '{\"jsonrpc\": \"2.0\", \"method\": 
\"Files.GetDirectory\", \"params\": {\"type\": \"video\", \"directory\": 
\"'+mypath+'\"}, \"id\": 1}';
+                       var myParams = '{\"jsonrpc\": \"2.0\", \"method\": 
\"Files.GetDirectory\", \"params\": {\"type\": \"files\", \"directory\": 
\"'+mypath+'\"}, \"id\": 1}';
                        var tempStr = xbmcJsonRPC(myParams);
                        if (tempStr.directories != undefined) {
                                for (var i = 0; i < tempStr.directories.length; 
i++) {
@@ -166,9 +166,7 @@ var storeFiles = new Ext.data.Store({
        reader: new Ext.data.JsonXBMCReader({
                        root:'data'            
        }, filesRecord),
-       listeners: {
-                       beforeload: function(){ setXBMCResponseFormat() }
-               },
+
        url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile, 
idPath, strFilename, playCount FROM files)'
 });
 
@@ -177,9 +175,6 @@ var storePath = new Ext.data.Store({
        reader: new Ext.data.JsonXBMCReader({
                        root:'data'            
        }, pathRecord),
-       listeners: {
-                       beforeload: function(){ setXBMCResponseFormat() }
-               },
        url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idPath, 
strPath, strContent, strScraper FROM path)'
 });
 
diff --git a/webinterface.XWMM/files/json.html 
b/webinterface.XWMM/files/json.html
index 14d745f..d7d0134 100644
--- a/webinterface.XWMM/files/json.html
+++ b/webinterface.XWMM/files/json.html
@@ -13,6 +13,8 @@
 
 Ext.onReady(function() {
        
+       var ScraperList = [];
+       
        function xbmcJsonRPC(params) {
                var inputUrl = '/jsonrpc'
                var myjson = '';
@@ -30,6 +32,8 @@ Ext.onReady(function() {
                return myjson.result;
        }
 
+       
+               
        //get Season (tvshows)
        var myParams = '{"jsonrpc": "2.0", "method": "VideoLibrary.GetSeasons", 
\"params\": {\"tvshowid\": 1}, "id": 1}';
        
@@ -40,16 +44,24 @@ Ext.onReady(function() {
        //var myParams = '{"jsonrpc": "2.0", "method": 
"AudioLibrary.GetAlbums", "id": 1}';
        
        // get shares
-       //var myParams = '{"jsonrpc": "2.0", "method": "Files.GetShares", 
"params": {"type": "video"}, "id": 1}';
+       var myParams = '{"jsonrpc": "2.0", "method": "Files.GetSources", 
"params": {"media": "video"}, "id": 1}';
        
        //get directory
-       //var myParams = '{\"jsonrpc\": \"2.0\", \"method\": 
\"Files.GetDirectory\", \"params\": {\"type\": \"video\", \"directory\": 
\"multipath://G%3a%5cVideos%5cArchive%5c/G%3a%5cVideos%5cBurn%5c/\"}, \"id\": 
1}';
+       //var myParams = '{\"jsonrpc\": \"2.0\", \"method\": 
\"Files.GetDirectory\", \"params\": {\"type\": \"files\", \"directory\": 
\"special://home/addons"}, \"id\": 1}';
+       
+       //Get RootDirectory
+       //var myParams = '{\"jsonrpc\": \"2.0\", \"method\": 
\"Files.GetRootDirectory\", \"params\": {\"type\": \"files\", \"directory\": 
\"special://home/addons"}, \"id\": 1}';
+
+       
+       
        var myShares = xbmcJsonRPC(myParams);
-       for (var i=0; i<myShares.directories.length; i++) {
-               console.log(myShares.directories[i].label,' -- 
',myShares.directories[i].file);
-       }
+       //for (var i=0; i<myShares.directories.length; i++) {
+       //      console.log(myShares.directories[i].label,' -- 
',myShares.directories[i].file);
+       //}
        console.log(myShares);
 
+       
+
                
 });
        
diff --git a/webinterface.XWMM/files/scrapers.js 
b/webinterface.XWMM/files/scrapers.js
index 898d603..118a918 100644
--- a/webinterface.XWMM/files/scrapers.js
+++ b/webinterface.XWMM/files/scrapers.js
@@ -1,25 +1,66 @@
+       function xbmcJsonRPC(params) {
+               var inputUrl = '/jsonrpc'
+               var myjson = '';
+               Ext.Ajax.request({
+                       url: inputUrl,
+                       params : params,
+                       method: "POST",
+                       async: false,
+                       success: function (t){
+                               myjson = Ext.util.JSON.decode(t.responseText);
+                               },
+                       failure: function(t){},
+                               timeout: 2000
+               });     
+               return myjson.result;
+       }
+
+function getAddonList(myDir) {
+       for (var i=0; i<myDir.directories.length; i++) {
+               if (myDir.directories[i].label.match("metadata") == "metadata") 
{
+                       var mytest = '{\"jsonrpc\": \"2.0\", \"method\": 
\"Files.GetDirectory\", \"params\": {\"type\": \"files\", \"directory\": 
\"'+myDir.directories[i].file+'"}, \"id\": 1}';                               
+                       
//IsScraper('/vfs/'+myDir.directories[i].file+'addon.xml')
+                               Ext.Ajax.request({
+                                       url: 
'/vfs/'+myDir.directories[i].file+'addon.xml',
+                                       method: 'GET',
+                                       async: false,
+                                       success: function (t){
+                                               parseAddonXML(t.responseXML, 
myDir.directories[i].file)
+                                       },
+                                       failure: function(t){},
+                                       timeout: 2000
+                               });
+                       }
+               }
+       //console.log(scraperList);
+}
+       
+function parseAddonXML(string, path) {
+               xmlDoc = string
+               var addonCategory = 
xmlDoc.getElementsByTagName("extension")[0].attributes[0].value;
+               var addonId = 
xmlDoc.getElementsByTagName("addon")[0].attributes[0].value;
+               var addonLang = 
xmlDoc.getElementsByTagName("extension")[0].attributes[1].value;
+               var addonImg = '../../../vfs/'+path+'icon.png';
+
+               if (addonCategory.match("scraper.movies") == "scraper.movies") {
+                       scraperList.push([addonId,addonLang,addonImg,'movies']);
+               }
+               if (addonCategory.match("scraper.tvshows") == 
"scraper.tvshows") {
+                       
scraperList.push([addonId,addonLang,addonImg,'tvshows']);
+               }
+               
+       }
+
+function parseScrapers() {
+       
+       var myParams = '{\"jsonrpc\": \"2.0\", \"method\": 
\"Files.GetDirectory\", \"params\": {\"type\": \"files\", \"directory\": 
\"special://home/addons"}, \"id\": 1}';
+       var myShares = xbmcJsonRPC(myParams);
+
+       getAddonList(myShares);
+}
+
+var scraperList = [];
 
-var scraperList = [
-    ['imdb.xml', 'en', 'imdb.png', 'movies'],
-    ['tvdb.xml', 'multi', 'tvdb.png', 'tvshows'],
-       ['adultcdmovies.xml', 'en', 'adultcdmovies.jpg', 'movies'],
-       ['amazonuk.xml', 'en', 'amazonuk.png', 'movies'],
-       ['amazonus.xml', 'men', 'amazonus.png', 'movies'],
-       ['asiandb.xml', 'en', 'asiandb.gif', 'movies'],
-       ['cinefacts.xml', 'de', 'cinefacts.png', 'movies'],
-       ['culturalia.xml', 'es', 'culturalia.gif', 'movies'],
-       ['daum.xml', 'ko', 'daum.png', 'movies'],
-       ['Excalibur.xml', 'en', 'excalibur.jpg', 'movies'],     
-       ['fdbpl.xml', 'pl', 'fdbpl.png', 'movies'],
-       ['filmaffinity.xml', 'es', 'filmaffinity.gif', 'movies'],
-       ['filmdelta.xml', 'sv', 'filmdelta.png', 'movies'],
-       ['imdb tv.xml', 'en', 'imdb.png', 'tvshows'],
-       ['KinoPoisk.xml', 'ru', 'KinoPoisk.gif', 'movies'],
-       ['mymoviesdk.xml', 'multi', 'mymoviesdk.png', 'movies'],
-       ['getlib.xml', 'zh', 'getlib.gif', 'movies'],
-       ['tvcom.xml', 'en', 'tvcom.png', 'tvshows'],
-    ['cine-passion.xml', 'fr', 'cine-passion.png', 'movies']
-];
 
 var combo = new Ext.form.ComboBox({
        triggerAction: 'all',
@@ -64,29 +105,31 @@ function inheritContent(node) {
        return myXbmcContent;
 }
 
-var ScraperGrid = new Ext.grid.GridPanel({
-       height: 500,
-    store: new Ext.data.SimpleStore({
+var scraperStore = new Ext.data.SimpleStore({
+               id: 'scraperstore',
         fields: ['scraper', 'language','image', 'content'],
         data: scraperList,
-               autoLoad: true
-    }),
+               listeners: {
+                       load: function() {
+                               //parseScrapers();
+                       }
+               },
+    })
+
+var ScraperGrid = new Ext.grid.GridPanel({
+       height: 500,
+       store : scraperStore,
        sm: new Ext.grid.RowSelectionModel({
                singleSelect: true,
                listeners: {
                        rowselect: function(sm, rowIdx, r) {
                                scraperImage.updateSrc(r);
-                       }
+                       },
+                       beforeshow: function(sm, rowIdx, r) {
+                               console.log('show');
+                       },
                }
        }),
-       // listeners: {
-               // selectionchange: function(sm, rowIdx, r) {
-                               // scraperImage.updateSrc(r);
-                       // //movieGenreChange(sm);
-                       // //var bt = Ext.getCmp('savebutton');
-                       // //bt.enable();
-                       // }
-       // },
        viewConfig: {forceFit: true},
     columns: [
         {header: 'Scraper', dataIndex: 'scraper', width: 80},
diff --git a/webinterface.XWMM/genre.js b/webinterface.XWMM/genre.js
index e02e8de..a263fd1 100644
--- a/webinterface.XWMM/genre.js
+++ b/webinterface.XWMM/genre.js
@@ -48,6 +48,7 @@ var GenrecolModel = new Ext.grid.ColumnModel([
 ]);
 
 var storegenre = new Ext.data.Store({
+       id: 'storegenre',
        sortInfo: {field: 'strGenre', direction: "ASC"},
        reader: new Ext.data.JsonXBMCReader({
                root:'data'            
diff --git a/webinterface.XWMM/global.js b/webinterface.XWMM/global.js
index e0506c1..1797654 100644
--- a/webinterface.XWMM/global.js
+++ b/webinterface.XWMM/global.js
@@ -1,5 +1,5 @@
 
-var myVersion = '1.9.1'
+var myVersion = '1.9.2'
 
 var videoFlagsRecord = Ext.data.Record.create([
    {name: 'idFile', mapping: 'field:nth(1)'},          
@@ -77,22 +77,18 @@ var menuBar = new Ext.Toolbar({
 })
 
 var storeVideoFlags = new Ext.data.Store({
+       id: 'storevideoflags',
        reader: new Ext.data.JsonXBMCReader({
                        root:'data'            
        }, videoFlagsRecord),
-       listeners: {
-        beforeload: function(){ setXBMCResponseFormat() }
-    },
        url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile, 
strVideoCodec, fVideoAspect, iVideoWidth, iVideoHeight from streamdetails where 
iStreamType=0)' 
 });
 
 var storeAudioFlags = new Ext.data.Store({
+       id: 'storeaudioflags',
        reader: new Ext.data.JsonXBMCReader({
                        root:'data'            
        }, audioFlagsRecord),
-       listeners: {
-        beforeload: function(){ setXBMCResponseFormat() }
-    },
        url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile, 
strAudioCodec, iAudioChannels from streamdetails where iStreamType=1)' 
 });
 
@@ -139,7 +135,7 @@ function copyXBMCVideoThumb(thumb, r, element, type) {
        var temp = '';
        Ext.Ajax.request({
                url: inputUrl,
-               async: false,
+               //async: false,
                method: 'GET',
                success: function (t){
                        // if (type == 'season') {
@@ -169,7 +165,7 @@ var currentMovie;
 var DetailsFlag;
 var detailPanel;
 
-var FlagsPanel = new Ext.Panel({
+var VideoFlagsPanel = new Ext.Panel({
        border: false,
        defaults:{xtype:'container', width: 64, height: 44},
        items: [{
@@ -183,17 +179,25 @@ var FlagsPanel = new Ext.Panel({
                width:48,
                height:31,
                autoEl: {tag: 'img', src: "../images/flags/default.png"}
-       },{
+       }]
+});
+
+var AudioFlagsPanel = new Ext.Panel({
+       border: false,
+       defaults:{xtype:'container', width: 64, height: 44},
+       items: [{
                id: 'audiocodec',
                autoEl: {tag: 'img', src: "../images/flags/defaultsound.png"}
        },{
                id: 'audiochannels',
-               width:38,
-               height:29,
+               // width:38,
+               // height:29,
                autoEl: {tag: 'img', src: "../images/flags/0c.png"}
        }]
 });
 
+
+
 function findResolution(iWidth) {
 
 if (iWidth == 0)
diff --git a/webinterface.XWMM/images.js b/webinterface.XWMM/images.js
index dd8115f..979188f 100644
--- a/webinterface.XWMM/images.js
+++ b/webinterface.XWMM/images.js
@@ -55,9 +55,10 @@ function ChangeImages(record) {
                var selNode = viewFanarts.getSelectedRecords();
                var currentMovie = 
Ext.getCmp('Moviegrid').getSelectionModel().getSelected();
                // selNode contains only one item
-               downloadXBMCFile(selNode[0].data.url, 
currentMovie.data.cover.replace('Video', 'Video/Fanart'));
+               downloadXBMCFile(selNode[0].data.url, currentMovie.data.fanart);
+               //console.log(currentMovie.data);
                //update main Movie form
-               //Ext.getCmp('cover').refreshMe();
+               Ext.getCmp('fanart').refreshMe();
                loadingMask.hide();
                
        }
diff --git a/webinterface.XWMM/movies/include.js 
b/webinterface.XWMM/movies/include.js
index 03be3cd..a44364a 100644
--- a/webinterface.XWMM/movies/include.js
+++ b/webinterface.XWMM/movies/include.js
@@ -93,7 +93,7 @@ function updateAllForms(r) {
        Ext.getCmp('filedetailPanel').getForm().loadRecord(r);
 
        Ext.getCmp('movierating').updateSrc(r);
-       
+       Ext.getCmp('fanart').updateSrc(r);
        Ext.getCmp('cover').updateSrc(r);
        
        
diff --git a/webinterface.XWMM/movies/movie.js 
b/webinterface.XWMM/movies/movie.js
index 812d11e..3020465 100644
--- a/webinterface.XWMM/movies/movie.js
+++ b/webinterface.XWMM/movies/movie.js
@@ -1,12 +1,9 @@
 // -----------------------------------------
 // movie.js
-// last modified : 19-09-2010
-// 
 //------------------------------------------ 
 
 Ext.ns('Movie');
 
-
 var Stars = new Ext.Container ({
        id: 'movierating',
        border: 0,
@@ -25,19 +22,48 @@ var Stars = new Ext.Container ({
        }
 });
 
+var MovieFanart = new Ext.Container ({
+       id: 'fanart',
+       border: 0,
+       width: 295,
+       height:165,
+       autoEl: {tag: 'img', src: "../images/defaultMovieFanart.jpg", 
qtip:'Double-click to change'},
+               refreshMe : function(){
+               this.el.dom.src =  this.el.dom.src + '?dc=' + new 
Date().getTime();
+       },
+       updateSrc :function(r){
+               if (r.data.details)     {
+                       this.el.dom.src = '../../vfs/'+r.data.fanart
+               }
+               else {  
+                       var file = r.data.strFilename;
+                       var path = r.data.strPath;
+                       if (file.substr(0,6) == 'stack:'){      //it is a stack
+                               file = file.replace(/stack:\/\//g, "");
+                               var tempArr = file.split(" , ");
+                               file = tempArr[0];
+                               path=""
+                       }
+                       thumbCrc = FindCRC(path+file);
+                       r.data.fanart = 
'special://masterprofile/Thumbnails/Video/Fanart/'+thumbCrc+'.tbn';
+                       this.el.dom.src = '../../vfs/'+ r.data.fanart;
+               }
+       }
+});
+
 var MovieCover = new Ext.Container ({
        id: 'cover',
        cls: 'center-align',
        border: 0,
-       width: 300,
-       height:400,
+       width: 250,
+       height:375,
        autoEl: {tag: 'img', src: "../images/defaultMovieCover.jpg", 
qtip:'Double-click to change'},
        refreshMe : function(){
                this.el.dom.src =  this.el.dom.src + '?dc=' + new 
Date().getTime();
        },
        updateSrc :function(r){
                if (r.data.details)     {
-                       this.el.dom.src = r.data.cover
+                       this.el.dom.src = '../../vfs/'+r.data.cover
                }
                else {  
                        var file = r.data.strFilename;
@@ -137,105 +163,130 @@ var MoviedetailPanel = new Ext.FormPanel({
                        updateGenreGrid(currentRecord.data.genres)
                }
        }],    
-       items: [{
-               layout:'column',
-               frame:true,
-               labelWidth:50,
-               bodyStyle:'padding:5px',
-               items:[{
-                       columnWidth:0.56,
-                       layout: 'form',
-                       labelWidth: 65,
-                       defaults: {     xtype:'textfield',
-                               width: 300,
-                               listeners:{'change' : function(){DetailsFlag = 
true; Ext.getCmp('savebutton').enable()}}
-                       },
-                       items: [{
-                               fieldLabel: 'Title',
-                               name: 'Movietitle',
-                               XBMCName: 'c00',
-                               allowBlank: false
-                       },{
-                               fieldLabel: 'Sort Title',
-                               name: 'sortTitle',
-                               XBMCName: 'c10'
-                       },{
-                               fieldLabel: 'Release',
-                               XBMCName: 'c07',
-                               name: 'MovieRelease'
-                       },{
-                               fieldLabel: 'Genres',
-                               name: 'Moviegenres',
-                               XBMCName: 'c14',
-                               id:'moviegenres',
-                               readOnly: true
-                       },{
-                               xtype:'textarea',
-                               height: 130,
-                               name:'Moviedescr',
-                               XBMCName: 'c01',
-                               fieldLabel:'Description'
-                       },{
-                               xtype:'textarea',
-                               height: 34,
-                               name:'MovieOutline',
-                               XBMCName: 'c02',
-                               fieldLabel:'Abstract'
-                       },{
-                               xtype:'textarea',
-                               name:'MovieTagline',
-                               XBMCName: 'c03',
-                               fieldLabel:'Tag Line',
-                               height: 34
-                       },{
-                               fieldLabel: 'Duration',
-                               XBMCName: 'c11',
-                               name: 'MovieRuntime'
-                       },{
-                               fieldLabel: 'Director',
-                               XBMCName: 'c15',
-                               name: 'MovieDirector'
-                       },{
-                               fieldLabel: 'Viewers',
-                               XBMCName: 'c12',
-                               name: 'MovieViewers'
-                       },{
-                               fieldLabel: 'Studio',
-                               XBMCName: 'c18',
-                               name: 'MovieStudio'
-                       },{     
-                               fieldLabel: 'Rating',
-                               name: 'MovieRating',
-                               XBMCName: 'c05'
-                       },{
-                               fieldLabel: 'Trailer',
-                               id: 'trailer',
-                               XBMCName: 'c19',
-                               name: 'MovieTrailer'
-                       },{
-                               xtype: 'button',
-                               text: 'View Trailer',
-                               handler: function(){
-                                       if (Ext.getCmp('trailer').getValue() != 
'') {
-                                       //var w = (window.open(urlstring, 
wname, wfeatures, false));
-
-                                               
window.open(Ext.getCmp('trailer').getValue(),'')
-                                       }
-                               },
-                               width: 60
-                       }]
+       
+       layout:'table',
+       layoutConfig: {columns:3},
+       defaults: {frame:true, width:220, height: 120, labelWidth: 60},
+       items:[{
+               width: 300,
+               height : 90,
+               layout: 'form',
+               defaults: {     xtype:'textfield',
+                       width: 220,
+                       listeners:{'change' : function(){DetailsFlag = true; 
Ext.getCmp('savebutton').enable()}}
+               },
+               items: [{
+                       fieldLabel: 'Title',
+                       name: 'Movietitle',
+                       XBMCName: 'c00',
+                       allowBlank: false
+               },{
+                       fieldLabel: 'Sort Title',
+                       name: 'sortTitle',
+                       XBMCName: 'c10'
 
-               },{ 
-                       columnWidth:0.44,
-                       defaults:{xtype:'container'},
-                       items: [
-                               Stars,
-                               MovieCover,
-                               FlagsPanel      
-                       ]
+               },{
+                       fieldLabel: 'Genres',
+                       name: 'Moviegenres',
+                       XBMCName: 'c14',
+                       id:'moviegenres',
+                       readOnly: true
 
                }]
-
+       },{     
+               layout: 'form',
+               width:160,
+               height: 90,
+               defaults: {     xtype:'textfield',
+                       width: 80,
+                       listeners:{'change' : function(){DetailsFlag = true; 
Ext.getCmp('savebutton').enable()}}
+               },
+               labelWidth: 60,
+               items:[{
+                       fieldLabel: 'Release',
+                       XBMCName: 'c07',
+                       name: 'MovieRelease'
+               },{     
+                       fieldLabel: 'Rating',
+                       name: 'MovieRating',
+                       XBMCName: 'c05'
+               },{
+                       fieldLabel: 'Duration',
+                       XBMCName: 'c11',
+                       name: 'MovieRuntime'
+               }]
+       },{
+               rowspan:2,
+               width:255,
+               height: 410,
+               items: [Stars, MovieCover]
+       },{
+               layout : 'form',
+               width: 460,
+               height: 320,
+        colspan:2,
+               defaults: {     xtype:'textfield', width: 370},
+               items: [{
+                       xtype:'textarea',
+                       name:'Moviedescr',
+                       XBMCName: 'c01',
+                       fieldLabel:'Description',
+                       height: 95
+               },{
+                       xtype:'textarea',
+                       height: 34,
+                       name:'MovieOutline',
+                       XBMCName: 'c02',
+                       fieldLabel:'Abstract'
+               },{
+                       xtype:'textarea',
+                       name:'MovieTagline',
+                       XBMCName: 'c03',
+                       fieldLabel:'Tag Line',
+                       height: 34
+               },{     
+                       fieldLabel: 'Director',
+                       XBMCName: 'c15',
+                       name: 'MovieDirector'
+               },{
+                       fieldLabel: 'Viewers',
+                       XBMCName: 'c12',
+                       name: 'MovieViewers'
+               },{
+                       fieldLabel: 'Studio',
+                       XBMCName: 'c18',
+                       name: 'MovieStudio'
+               },{     
+                       fieldLabel: 'Trailer',
+                       id: 'trailer',
+                       XBMCName: 'c19',
+                       name: 'MovieTrailer'
+               },{
+                       xtype: 'button',
+                       text: 'View Trailer',
+                       handler: function(){
+                               if (Ext.getCmp('trailer').getValue() != '') {
+                               //var w = (window.open(urlstring, wname, 
wfeatures, false));
+                                               
window.open(Ext.getCmp('trailer').getValue(),'')
+                               }
+                       },
+                       width: 60
+               }]
+       },{
+               frame : false,
+               width: 300,
+               height: 120,
+               items: [MovieFanart]
+       },{
+               width: 160,
+               //frame : false,
+               items: [AudioFlagsPanel]
+               // height : 200
+       },{
+               width : 255,
+               //frame : false,
+               items: [VideoFlagsPanel]
+               // heigth :
        }]
 })
 
@@ -253,7 +304,7 @@ Movie.Mainpanel = Ext.extend(Ext.Panel, {
                items: [{               
                        xtype: 'panel',
                        region:'east',
-                       margins:'5 5 5 5',
+                       //margins:'5 5 5 5',
                        split:true,
                        width: 225,
                        items: [{
diff --git a/webinterface.XWMM/movies/movieset.js 
b/webinterface.XWMM/movies/movieset.js
index fe6b3ea..ba6fc43 100644
--- a/webinterface.XWMM/movies/movieset.js
+++ b/webinterface.XWMM/movies/movieset.js
@@ -14,12 +14,10 @@ var MovieSetRecord = Ext.data.Record.create([
 
 var MovieSetStore = new Ext.data.GroupingStore({
        sortInfo: {field: 'strSet', direction: "ASC"},
+       id: 'moviesetstore',
        reader: new Ext.data.JsonXBMCReader({
                root:'data'            
        }, MovieSetRecord),
-       listeners: {
-        beforeload: function(){ setXBMCResponseFormat() }
-    },
        url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idSet, 
strSet FROM sets)' 
 });
 
@@ -37,12 +35,10 @@ var MoviesInSetRecord = Ext.data.Record.create([
 
 var MoviesInSetStore = new Ext.data.GroupingStore({
        sortInfo: {field: 'c00', direction: "ASC"},
+       id: 'moviesinsetstore',
        reader: new Ext.data.JsonXBMCReader({
                root:'data'            
        }, MoviesInSetRecord),
-       listeners: {
-        beforeload: function(){ setXBMCResponseFormat() }
-    },
        url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select 
movie.idMovie, c00 FROM setlinkmovie JOIN movie ON setlinkmovie.idMovie = 
movie.idMovie WHERE idSet = -1)' 
 });
 
diff --git a/webinterface.XWMM/movies/startapp.js 
b/webinterface.XWMM/movies/startapp.js
index 82fed72..eaf4806 100644
--- a/webinterface.XWMM/movies/startapp.js
+++ b/webinterface.XWMM/movies/startapp.js
@@ -7,12 +7,6 @@
 
 Ext.onReady(function() {
 
-       //Load existing genres
-       
-       //storegenre.load();
-       LoadAllMoviesdetails();
-       MovieSetStore.load();
-
        menuBar.add({
                        xtype: 'tbspacer'
                },{
@@ -59,14 +53,14 @@ Ext.onReady(function() {
                        value: '',
                        style: 'background: #F0F0F9;'
        });
-
        
        menuBar.add({
         text: 'X',
         tooltip: 'Clear quicksearch',
         handler: function() {
-            if (searchBox.getValue().length!=0) {
-                searchBox.setValue('');
+                       var item = Ext.getCmp('searchBox');
+            if (item.getValue().length!=0) {
+                item.setValue('');
                 storeMovie.clearFilter();
             }
         }
@@ -78,128 +72,128 @@ Ext.onReady(function() {
                        text: myVersion
     });
        
-       //Start Application with Main Panel
-
-       // storegenre.on( 'load', function( store, records, options ) {
-               // console.log( 'succesfully loaded' );
-               
-       // } ); 
-       
        setXBMCResponseFormat();
-       storegenre.load();
-
-       var inputUrl = '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select 
idGenre, strGenre FROM genre)';
-       Ext.Ajax.request({
-               url: inputUrl,
-               method: 'GET',
-               async: false,
-               success: function (t){
-                       genreRequest = t.responseText
-               },
-               failure: function(t){},
-               timeout: 2000
-       });
 
+       var storesToLoad = [
+          {store : 'storevideoflags', url: 
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile, strVideoCodec, 
fVideoAspect, iVideoWidth, iVideoHeight from streamdetails where 
iStreamType=0)'},
+          {store : 'storeaudioflags', url: 
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile, strAudioCodec, 
iAudioChannels from streamdetails where iStreamType=1)'},
+          {store : 'moviesetstore', url: 
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idSet, strSet FROM 
sets)'},
+          {store : 'storegenre', url: 
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idGenre, strGenre FROM 
genre)'}
+       ];
 
+       loadStartupStores = function(record, options, success){
+                var task = storesToLoad.shift();  //From the top
+                if(task){
+                       if(success !== false){
+                         task.callback = arguments.callee   //let's do this 
again
+                         var store = Ext.StoreMgr.lookup(task.store);
+                         store ? store.load(task) : complain('bad store 
specified');
+                       } else { 
+                         complain( );
+                       }
+                } else {startMyApp()}
+       };
        
-        var App = new Movie.Mainpanel({
-                renderTo: Ext.getBody()
-        });
+        loadStartupStores();
                
-       // We can retrieve a reference to the data store
-       // via the StoreMgr by its storeId
-       Ext.QuickTips.init();
-       storeMovie.load();
-       
-       
        //Moviegrid.on('contextmenu', gridContextHandler);
        
-       // begin search config
-    var searchStore = new Ext.data.SimpleStore({
-        fields: ['query'],
-       data: []
-    });
-    var searchBox = new Ext.form.ComboBox({
-        store: searchStore,
-        displayField: 'query',
-        typeAhead: false,
-        mode: 'local',
-        triggerAction: 'all',
-               applyTo: 'quicksearch',
-        hideTrigger: true
-    });
+       function startMyApp() {
+               var App = new Movie.Mainpanel({
+                       renderTo: Ext.getBody()  
+               });
+               Ext.QuickTips.init();
+               storeMovie.load();
+               
+               // begin search config
+               var searchStore = new Ext.data.SimpleStore({
+                       fields: ['query'],
+               data: []
+               });
+               
+               var searchBox = new Ext.form.ComboBox({
+                       id: 'searchBox',
+                       store: searchStore,
+                       displayField: 'query',
+                       typeAhead: false,
+                       mode: 'local',
+                       triggerAction: 'all',
+                       applyTo: 'quicksearch',
+                       hideTrigger: true
+               });
 
-    var searchRec = Ext.data.Record.create([
-        {name: 'query', type: 'string'}
-    ]);
+               var searchRec = Ext.data.Record.create([
+                       {name: 'query', type: 'string'}
+               ]);
 
 
-    var onFilteringBeforeQuery = function(e) {
-       //grid.getSelectionModel().clearSelections();
-        if (this.getValue().length==0) {
-                    storeMovie.clearFilter();
-                } else {
-                    var value = this.getValue().replace(/^\s+|\s+$/g, "");
-                    if (value=="")
-                        return;
-                    storeMovie.filterBy(function(r) {
-                        valueArr = value.split(/\ +/);
-                        for (var i=0; i<valueArr.length; i++) {
-                            re = new RegExp(Ext.escapeRe(valueArr[i]), "i");
-                            if (re.test(r.data['Movietitle'])==false
-                                //&& re.test(r.data['light'])==false) {
-                                                               ) {
-                                return false;
-                            };
-                        }
-                        return true;
-                    });
-                }
-    };
-    var onQuickSearchBeforeQuery = function(e) {
-        if (this.getValue().length==0) {
-        } else {
-            var value = this.getValue().replace(/^\s+|\s+$/g, "");
-            if (value=="")
-                return;
-            searchStore.clearFilter();
-            var vr_insert = true;
-            searchStore.each(function(r) {
-                if (r.data['query'].indexOf(value)==0) {
-                    // backspace
-                    vr_insert = false;
-                    return false;
-                } else if (value.indexOf(r.data['query'])==0) {
-                    // forward typing
-                    searchStore.remove(r);
-                }
-            });
-            if (vr_insert==true) {
-                searchStore.each(function(r) {
-                    if (r.data['query']==value) {
-                        vr_insert = false;
-                    }
-                });
-            }
-            if (vr_insert==true) {
-                var vr = new searchRec({query: value});
-                searchStore.insert(0, vr);
-            }
-            var ss_max = 4; // max 5 query history, starts counting from 0; 
0==1,1==2,2==3,etc
-            if (searchStore.getCount()>ss_max) {
-                var ssc = searchStore.getCount();
-                var overflow = searchStore.getRange(ssc-(ssc-ss_max), ssc);
-                for (var i=0; i<overflow.length; i++) {
-                    searchStore.remove(overflow[i]);
-                }
-            }
+               var onFilteringBeforeQuery = function(e) {
+               //grid.getSelectionModel().clearSelections();
+                       if (this.getValue().length==0) {
+                                               storeMovie.clearFilter();
+                                       } else {
+                                               var value = 
this.getValue().replace(/^\s+|\s+$/g, "");
+                                               if (value=="")
+                                                       return;
+                                               storeMovie.filterBy(function(r) 
{
+                                                       valueArr = 
value.split(/\ +/);
+                                                       for (var i=0; 
i<valueArr.length; i++) {
+                                                               re = new 
RegExp(Ext.escapeRe(valueArr[i]), "i");
+                                                               if 
(re.test(r.data['Movietitle'])==false
+                                                                       //&& 
re.test(r.data['light'])==false) {
+                                                                       ) {
+                                                                       return 
false;
+                                                               };
+                                                       }
+                                                       return true;
+                                               });
+                                       }
+               };
+               
+               var onQuickSearchBeforeQuery = function(e) {
+                       if (this.getValue().length==0) {
+                       } else {
+                               var value = 
this.getValue().replace(/^\s+|\s+$/g, "");
+                               if (value=="")
+                                       return;
+                               searchStore.clearFilter();
+                               var vr_insert = true;
+                               searchStore.each(function(r) {
+                                       if (r.data['query'].indexOf(value)==0) {
+                                               // backspace
+                                               vr_insert = false;
+                                               return false;
+                                       } else if 
(value.indexOf(r.data['query'])==0) {
+                                               // forward typing
+                                               searchStore.remove(r);
+                                       }
+                               });
+                               if (vr_insert==true) {
+                                       searchStore.each(function(r) {
+                                               if (r.data['query']==value) {
+                                                       vr_insert = false;
+                                               }
+                                       });
+                               }
+                               if (vr_insert==true) {
+                                       var vr = new searchRec({query: value});
+                                       searchStore.insert(0, vr);
+                               }
+                               var ss_max = 4; // max 5 query history, starts 
counting from 0; 0==1,1==2,2==3,etc
+                               if (searchStore.getCount()>ss_max) {
+                                       var ssc = searchStore.getCount();
+                                       var overflow = 
searchStore.getRange(ssc-(ssc-ss_max), ssc);
+                                       for (var i=0; i<overflow.length; i++) {
+                                               searchStore.remove(overflow[i]);
+                                       }
+                               }
+               }
+               };
+               
+               searchBox.on("beforequery", onQuickSearchBeforeQuery);
+               searchBox.on("beforequery", onFilteringBeforeQuery);
+               searchBox.on("select", onFilteringBeforeQuery); 
+               // end search
        }
-    };
-    searchBox.on("beforequery", onQuickSearchBeforeQuery);
-    searchBox.on("beforequery", onFilteringBeforeQuery);
-    searchBox.on("select", onFilteringBeforeQuery); 
-       // end search
-       
-
        
 }); 
\ No newline at end of file
diff --git a/webinterface.XWMM/tvshows/actors.js 
b/webinterface.XWMM/tvshows/actors.js
index 04bc450..5b51dd9 100644
--- a/webinterface.XWMM/tvshows/actors.js
+++ b/webinterface.XWMM/tvshows/actors.js
@@ -15,9 +15,6 @@ var storeActor = new Ext.data.Store({
        reader: new Ext.data.JsonXBMCReader({
                root:'data'            
                }, actorRecord),
-       listeners: {
-        beforeload: function(){ setXBMCResponseFormat() }
-    },
        url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT strActor, 
strRole FROM actorlinktvshow JOIN actors ON (actorlinktvshow.idActor = 
actors.idActor) where idShow =-1)' 
        
 });
diff --git a/webinterface.XWMM/tvshows/app.js b/webinterface.XWMM/tvshows/app.js
index 742aa2e..6c5e605 100644
--- a/webinterface.XWMM/tvshows/app.js
+++ b/webinterface.XWMM/tvshows/app.js
@@ -4,8 +4,8 @@ Ext.onReady(function() {
 
        //Load existing genres
 
-       storegenre.load();
-       LoadAllshowsdetails();
+       //storegenre.load();
+       //LoadAllshowsdetails();
 
        // customize menu
        menuBar.add({
@@ -33,18 +33,45 @@ Ext.onReady(function() {
                        value: '',
                        style: 'background: #F0F0F9;'
        });
+       
        menuBar.add({                   
                        xtype: 'tbfill'
                },{
                        text: myVersion
     });
-       //Start Application with Main Panel
-       var App = new TVShow.Mainpanel({
-               renderTo: Ext.getBody()
-       });
-       // We can retrieve a reference to the data store
-       // via the StoreMgr by its storeId
        
-       Ext.StoreMgr.get('gridtvshowstore').load();
+       setXBMCResponseFormat();
+
+       var storesToLoad = [
+          {store : 'storevideoflags', url: 
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile, strVideoCodec, 
fVideoAspect, iVideoWidth, iVideoHeight from streamdetails where 
iStreamType=0)'},
+          {store : 'storeaudioflags', url: 
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile, strAudioCodec, 
iAudioChannels from streamdetails where iStreamType=1)'},
+          {store : 'gridtvshowstore', url: 
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select tvshow.idShow, 
tvshow.c00, tvshow.c08, counts.totalcount, counts.watchedcount, 
counts.totalcount=counts.watchedcount from tvshow join tvshowlinkpath on 
tvshow.idShow=tvshowlinkpath.idShow join path on 
path.idpath=tvshowlinkpath.idPath left outer join (select tvshow.idShow as 
idShow,count(1) as totalcount,count(files.playCount) as watchedcount from 
tvshow join tvshowlinkepisode on tvshow.idShow = tvshowlinkepisode.idShow JOIN 
episode on episode.idEpisode = tvshowlinkepisode.idEpisode join files on 
files.idFile = episode.idFile group by tvshow.idShow) counts on tvshow.idShow = 
counts.idShow)'},
+          {store : 'storegenre', url: 
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idGenre, strGenre FROM 
genre)'}
+       ];
+
+       loadStartupStores = function(record, options, success){
+                var task = storesToLoad.shift();  //From the top
+                if(task){
+                       if(success !== false){
+                         task.callback = arguments.callee   //let's do this 
again
+                         var store = Ext.StoreMgr.lookup(task.store);
+                         store ? store.load(task) : complain('bad store 
specified');
+                       } else { 
+                         complain( );
+                       }
+                } else {startMyApp()}
+       };
+       
+       loadStartupStores();
        
+       function startMyApp() {
+               //Start Application with Main Panel
+               var App = new TVShow.Mainpanel({
+                       renderTo: Ext.getBody()
+               });
+               // We can retrieve a reference to the data store
+               // via the StoreMgr by its storeId
+               
+               //Ext.StoreMgr.get('gridtvshowstore').load();
+       }
 }); 
diff --git a/webinterface.XWMM/tvshows/include.js 
b/webinterface.XWMM/tvshows/include.js
index 043ff04..4f9b10a 100644
--- a/webinterface.XWMM/tvshows/include.js
+++ b/webinterface.XWMM/tvshows/include.js
@@ -14,11 +14,6 @@ var DetailsFlag;
 var genresFlag;
 var detailPanel;
 
-function LoadAllshowsdetails(){
-
-       storeVideoFlags.load();
-       storeAudioFlags.load()
-}
 
 var gridContextMenu = new Ext.menu.Menu({
        items: [
@@ -127,28 +122,27 @@ function updateEpisodeForms(r) {
 
 function GettvShowDetails(r){
 
-       setXBMCResponseFormat();
-
-       var conn = new Ext.data.Connection();
-               conn.request({
-                       url: 
"/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT c01, c04, c05, c06, c08, 
c11, c12, c14, strPath FROM tvshow JOIN tvshowlinkpath ON (tvshow.idShow = 
tvshowlinkpath.idShow) JOIN path ON (tvshowlinkpath.idPath = path.idPath) WHERE 
tvshow.idShow="+r.data.idShow+")",
+       //setXBMCResponseFormat();
 
-                       success: function(resp,opt) {
-                               XBMCTVShowgetFields(resp, r);
-               
-                               currentShowPath = r.data.ShowPath;
-                               
-                               updateTvShowForms(r);
-                               r.data.details = true                   
-                       },
-                       failure: function(resp,opt) {           
-                       }
-               });
+       var inputUrl = '/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT 
c01, c04, c05, c06, c08, c11, c12, c14, strPath FROM tvshow JOIN tvshowlinkpath 
ON (tvshow.idShow = tvshowlinkpath.idShow) JOIN path ON (tvshowlinkpath.idPath 
= path.idPath) WHERE tvshow.idShow='+r.data.idShow+')';
+       Ext.Ajax.request({
+               url: inputUrl,
+               method: 'GET',
+               async: false,
+               success: function(resp,opt) {
+                       XBMCTVShowgetFields(resp, r);
+                       currentShowPath = r.data.ShowPath;                      
+                       updateTvShowForms(r);
+                       r.data.details = true                   
+               },
+               failure: function(resp,opt) {},
+               timeout: 2000
+       });
 }
 
 function GetepisodeDetails(r) {
 
-       setXBMCResponseFormat();
+       //setXBMCResponseFormat();
 
        var conn = new Ext.data.Connection();
        conn.request({
@@ -181,24 +175,22 @@ function updateXBMCGenreTvshow(){
                url: inputUrl,
                method: 'GET',
                async: false,
-               success: function (t){
-                                       
-                       },
+               success: function (t){},
                failure: function(t){},
                timeout: 2000
        });     
        // insert selected genres 
-                                       for (var i = 0; i < 
modifiedGenre.length; i++){
-                                       var inputUrl = 
'/xbmcCmds/xbmcHttp?command=execvideodatabase(INSERT INTO genrelinktvshow 
(idGenre, idShow) VALUES ('+modifiedGenre[i].data.idGenre+','+idShow+'))';
-                                       Ext.Ajax.request({
-                                               url: inputUrl,
-                                               method: 'GET',
-                                               async: false,
-                                               success: function (t){},
-                                               failure: function(t){},
-                                               timeout: 2000
-                                       });
-                               }
+       for (var i = 0; i < modifiedGenre.length; i++){
+               var inputUrl = 
'/xbmcCmds/xbmcHttp?command=execvideodatabase(INSERT INTO genrelinktvshow 
(idGenre, idShow) VALUES ('+modifiedGenre[i].data.idGenre+','+idShow+'))';
+               Ext.Ajax.request({
+                       url: inputUrl,
+                       method: 'GET',
+                       //async: false,
+                       success: function (t){},
+                       failure: function(t){},
+                       timeout: 2000
+               });
+       }
 }
 
 // Query XBMC DB genrelinktvshow
@@ -209,6 +201,7 @@ function GetTvshowGenres(record){
                        Ext.Ajax.request({
                                url: inputUrl,
                                method: 'GET',
+                               async: false,
                                success: function (t){
                                                var responseArr = 
TrimXbmcXml(t);
                                                responseArr = 
responseArr.split("<record>");
diff --git a/webinterface.XWMM/tvshows/tvshow.js 
b/webinterface.XWMM/tvshows/tvshow.js
index 719e068..1671550 100644
--- a/webinterface.XWMM/tvshows/tvshow.js
+++ b/webinterface.XWMM/tvshows/tvshow.js
@@ -32,12 +32,12 @@ var TVShowstars = new Ext.Container ({
        autoEl: {tag: 'img', src: "../images/stars/0.png"},
        updateSrc :function(r){
                if (r.data.details)     {
-                       this.el.dom.src = r.data.ShowRating
+                       this.el.dom.src = r.data.ShowStars
                }
                else {
                        var value = Math.round(r.data.ShowRating);
-                       r.data.ShowRating =  '../images/stars/'+value+'.png';
-                       this.el.dom.src = r.data.ShowRating;
+                       r.data.ShowStars =  '../images/stars/'+value+'.png';
+                       this.el.dom.src = r.data.ShowStars;
                }
        }
 });
@@ -45,8 +45,8 @@ var TVShowstars = new Ext.Container ({
 var EpisodeStars = new Ext.Container ({
        id: 'episoderating',
        border: 0,
-       width: 96,
-       height:27,
+       width: 72,
+       height:20,
        autoEl: {tag: 'img', src: "../images/stars/0.png"},
                updateSrc :function(r){
                if (r.data.details)     {
@@ -70,12 +70,14 @@ var TVShowCover = new Ext.Container ({
        autoEl: {tag: 'img', src: "../images/nobanner.png"},
        updateSrc :function(r){
                if (r.data.details)     {
-                       this.el.dom.src = r.data.ShowCover
+                       this.el.dom.src = '../../vfs/'+ r.data.cover;
                }
                else {  
                        thumbCrc = FindCRC(r.data.ShowPath);
-                       this.el.dom.src = 
'../../vfs/special://masterprofile/Thumbnails/Video/'+thumbCrc.substring(0,1)+'/'+thumbCrc+'.tbn';
-                       r.data.cover = this.el.dom.src
+                       r.data.cover = 
'special://masterprofile/Thumbnails/Video/'+thumbCrc.substring(0,1)+'/'+thumbCrc+'.tbn';
+                       this.el.dom.src = '../../vfs/'+ r.data.cover;
+                       // this.el.dom.src = 
'../../vfs/special://masterprofile/Thumbnails/Video/'+thumbCrc.substring(0,1)+'/'+thumbCrc+'.tbn';
+                       // r.data.cover = this.el.dom.src
                        //copyXBMCVideoThumb(thumbCrc,r, this, "cover");        
                
                }
        }
@@ -85,8 +87,8 @@ var SeasonCover = new Ext.Container ({
        id: 'seasoncover',
        cls: 'center-align',
        border: 0,
-       width: 200,
-       height:289,
+       width: 160,
+       height:231,
        autoEl: {tag: 'img', src: "../images/defaultMovieCover.jpg"},
        updateSrc :function(r, season){
                
@@ -206,7 +208,7 @@ var TVShowdetailPanel = new Ext.FormPanel({
        }]
 })
 
-var EpisodedetailPanel = new Ext.FormPanel({
+var EpisodedetailPanel2 = new Ext.FormPanel({
        region: 'center',
        id: 'episodedetailPanel',
        trackResetOnLoad: true,
@@ -235,7 +237,6 @@ var EpisodedetailPanel = new Ext.FormPanel({
                                name: 'EpisodeAired',
                                XBMCName: 'c05',
                                width: 215
-                               //readOnly: true
                        },{
                                xtype:'textarea',
                                fieldLabel: 'Description',
@@ -253,7 +254,7 @@ var EpisodedetailPanel = new Ext.FormPanel({
                                name: 'EpisodeRating',
                                XBMCName: 'c03',
                                width: 215
-                       },FlagsPanel
+                       }, AudioFlagsPanel, VideoFlagsPanel 
                        ]
 
                },{ 
@@ -268,6 +269,66 @@ var EpisodedetailPanel = new Ext.FormPanel({
        }]
 })
 
+var EpisodedetailPanel = new Ext.FormPanel({
+       //width: 600,
+       region: 'center',
+       id: 'episodedetailPanel',
+       trackResetOnLoad : true,
+       title: "<div align='center'>Movie details</div>",
+       defaults:{hideLabels:true, border:false}, 
+       layout:'table',
+       layoutConfig: {columns:2},
+       defaults: {frame:true, labelWidth: 60},
+       items:[{
+               layout: 'form',
+               width : 370,
+               defaults: {     xtype:'textfield',
+                       width: 275,
+                       listeners:{'change' : function(){DetailsFlag = true; 
Ext.getCmp('savebutton').enable()}}
+               },
+               items: [{
+                       fieldLabel: 'Title',
+                       name: 'EpisodeTitle',
+                       XBMCName: 'c00',
+                       allowBlank: false
+               },{
+                       fieldLabel: 'Aired',
+                       name: 'EpisodeAired',
+                       XBMCName: 'c05'
+               },{
+                       xtype:'textarea',
+                       fieldLabel: 'Description',
+                       name: 'EpisodeDescr',
+                       XBMCName: 'c01',
+                       height: 145
+               },{
+                       fieldLabel: 'Director',
+                       name: 'EpisodeDirector',
+                       XBMCName: 'c10'
+               },{
+                       fieldLabel: 'Rating',
+                       name: 'EpisodeRating',
+                       XBMCName: 'c03'
+               }]
+       },{
+               //rowspan:2,
+               width:170,
+               //height: 260,
+               items: [EpisodeStars, SeasonCover]
+       },{
+               //width: 160,
+               //frame : false,
+               items: [VideoFlagsPanel]
+               
+               // height : 200
+       },{
+               //width : 255,
+               //frame : false,
+               items: [AudioFlagsPanel]
+               // heigth :
+       }]
+})
+
 // grid with list of movies
 tvShowGrid = new Ext.grid.GridPanel({
        cm: tvShowcolModel,
@@ -283,17 +344,14 @@ tvShowGrid = new Ext.grid.GridPanel({
        split: true,
        store: new TVShow.Store({
        storeId: 'gridtvshowstore',
-               listeners: {
-                       beforeload: function(){ setXBMCResponseFormat() }
-               },
        url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select 
tvshow.idShow, tvshow.c00, tvshow.c08, counts.totalcount, counts.watchedcount, 
counts.totalcount=counts.watchedcount from tvshow join tvshowlinkpath on 
tvshow.idShow=tvshowlinkpath.idShow join path on 
path.idpath=tvshowlinkpath.idPath left outer join (    select tvshow.idShow as 
idShow,count(1) as totalcount,count(files.playCount) as watchedcount from 
tvshow     join tvshowlinkepisode on tvshow.idShow = tvshowlinkepisode.idShow 
JOIN episode on episode.idEpisode = tvshowlinkepisode.idEpisode     join files 
on files.idFile = episode.idFile     group by tvshow.idShow) counts on 
tvshow.idShow = counts.idShow)'
        })
 });
 
-
 EpisodeGrid = new Ext.grid.GridPanel({
        cm: episodecolModel,
        id: 'episodegrid',
+       loadMask: true,
        title: 'Episodes List',
        enableDragDrop: false,
        viewconfig: {forceFit: true},
@@ -311,15 +369,26 @@ EpisodeGrid = new Ext.grid.GridPanel({
             gridContextMenu.showAt(e.getXY());    
             e.stopEvent();
             return false;
-        }}     
+        }}
        },
        split: true,
        store: new TVShow.EpiStore({
                storeId: 'gridepisodestore',
-               listeners: {
-                       beforeload: function(){ setXBMCResponseFormat() }
+               listeners:{
+                       load: function() {
+                               if (currentRecord.data.details == undefined){
+                                       GetTvshowGenres(currentRecord);
+                                       GettvShowDetails(currentRecord);
+                               }
+                               else {
+                                       updateTvShowForms(currentRecord);
+                                       
updateGenreGrid(currentRecord.data.selectedGenre);
+                                       
Ext.getCmp('filedetailPanel').getForm().loadRecord(currentRecord);
+                               }
+                               storeActor.proxy.conn.url = 
"/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT strActor, strRole FROM 
actorlinktvshow JOIN actors ON (actorlinktvshow.idActor = actors.idActor) where 
idShow ="+currentRecord.data.idShow+")";
+                               storeActor.load();
+                       }
                },
-               //url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT 
episode.idEpisode, episode.c00, episode.c12, episode.c13 FROM episode JOIN 
tvshowlinkepisode ON (episode.idEpisode = tvshowlinkepisode.idEpisode) where 
tvshowlinkepisode.idShow=-1)' 
                url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT 
idEpisode, c00, c12, c13, playCount FROM episodeview WHERE idShow=-1)' 
        })
 });
@@ -344,7 +413,6 @@ var fileDetailsPanel = new Ext.FormPanel({
        }]
 })
 
-
 //Main Panel
 TVShow.Mainpanel = Ext.extend(Ext.Panel, {
        initComponent: function() {
@@ -422,31 +490,18 @@ TVShow.Mainpanel = Ext.extend(Ext.Panel, {
        },
 
        tvShowSelect: function(sm, rowIdx, r) {
-               
+
                TVShowdetailPanel.setTitle("<div 
align='center'>"+r.data.ShowTitle+" ( "+r.data.totalCount+" Episodes / 
"+r.data.watchedCount+" watched )</div>");
                selectedMovie = r.data.idShow;
                currentRecord = r;
-               
-               Ext.StoreMgr.get('gridepisodestore').proxy.conn.url = 
"/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT episode.idEpisode, 
episode.c00, episode.c12, episode.c13 FROM episode JOIN tvshowlinkepisode ON 
(episode.idEpisode = tvshowlinkepisode.idEpisode) where 
tvshowlinkepisode.idShow="+r.data.idShow+")";
-               //Ext.StoreMgr.get('gridepisodestore').proxy.conn.url= 
"/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idEpisode, c00, c12, c13, 
playCount FROM episodeview WHERE idShow="+r.data.idShow+")"; 
 
+               //Ext.StoreMgr.get('gridepisodestore').proxy.conn.url = 
"/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT episode.idEpisode, 
episode.c00, episode.c12, episode.c13, episode.playCount FROM episode JOIN 
tvshowlinkepisode ON (episode.idEpisode = tvshowlinkepisode.idEpisode) where 
tvshowlinkepisode.idShow="+r.data.idShow+")";
+               Ext.StoreMgr.get('gridepisodestore').proxy.conn.url= 
"/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idEpisode, c00, c12, c13, 
playCount FROM episodeview WHERE idShow="+r.data.idShow+")"; 
                Ext.StoreMgr.get('gridepisodestore').load();
-
-               EpisodedetailPanel.getForm().reset();
-               EpisodedetailPanel.setTitle("<div align='center'>Select 
Episode</div>");
-
-               if (r.data.details == undefined){
-                       GetTvshowGenres(r);
-                       GettvShowDetails(r);
-               }
-               else {
-                       updateTvShowForms(r);
-                       updateGenreGrid(r.data.selectedGenre);
-                       Ext.getCmp('filedetailPanel').getForm().loadRecord(r);
-               }
                
-               storeActor.proxy.conn.url = 
"/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT strActor, strRole FROM 
actorlinktvshow JOIN actors ON (actorlinktvshow.idActor = actors.idActor) where 
idShow ="+r.data.idShow+")";
-               storeActor.load();
+               //EpisodedetailPanel.getForm().reset();
+               EpisodedetailPanel.setTitle("<div align='center'>Select 
Episode</div>");
+                       
        },
        
        episodeSelect: function(sm, rowIdx, r) {                
diff --git a/webinterface.XWMM/xbmc.js b/webinterface.XWMM/xbmc.js
index eeb61a1..ad34339 100644
--- a/webinterface.XWMM/xbmc.js
+++ b/webinterface.XWMM/xbmc.js
@@ -511,7 +511,7 @@ function XBMCEpisodegetFields(t, r) {
        //temp = TrimXbmcXml(t); should be used
        r.data.EpisodeTitle = temp[1];
        r.data.EpisodeDescr = temp[2];
-       r.data.EpisodeRating = temp[3];
+       r.data.EpisodeRating = temp[3].slice(0,3);
        r.data.EpisodeWriter = temp[4];
        r.data.EpisodeAired = temp[5];
        r.data.EpisodeDirector = temp[6];

-----------------------------------------------------------------------

Summary of changes:
 webinterface.XWMM/Changelog.txt                    |   20 +-
 webinterface.XWMM/addon.xml                        |    2 +-
 .../extjs/resources/images/default/box/Thumbs.db   |  Bin 5632 -> 0 bytes
 .../extjs/resources/images/default/dd/Thumbs.db    |  Bin 8192 -> 0 bytes
 .../resources/images/default/editor/Thumbs.db      |  Bin 5120 -> 0 bytes
 .../extjs/resources/images/default/form/Thumbs.db  |  Bin 7168 -> 0 bytes
 .../extjs/resources/images/default/grid/Thumbs.db  |  Bin 8192 -> 0 bytes
 .../resources/images/default/layout/Thumbs.db      |  Bin 7680 -> 0 bytes
 webinterface.XWMM/files/browser.js                 |   20 +-
 webinterface.XWMM/files/include.js                 |    9 +-
 webinterface.XWMM/files/json.html                  |   22 ++-
 webinterface.XWMM/files/scrapers.js                |  113 ++++++---
 webinterface.XWMM/genre.js                         |    1 +
 webinterface.XWMM/global.js                        |   28 ++-
 webinterface.XWMM/images.js                        |    5 +-
 webinterface.XWMM/images/defaultMovieFanart.jpg    |  Bin 0 -> 130584 bytes
 webinterface.XWMM/images/flags/Thumbs.db           |  Bin 5632 -> 0 bytes
 webinterface.XWMM/images/stars/Thumbs.db           |  Bin 6144 -> 0 bytes
 webinterface.XWMM/movies/include.js                |    2 +-
 .../movies/{movie.js => movie-good.js}             |    4 +-
 webinterface.XWMM/movies/movie.js                  |  257 ++++++++++++--------
 webinterface.XWMM/movies/movieset.js               |    8 +-
 webinterface.XWMM/movies/startapp.js               |  236 +++++++++---------
 webinterface.XWMM/tvshows/actors.js                |    3 -
 webinterface.XWMM/tvshows/app.js                   |   45 +++-
 webinterface.XWMM/tvshows/include.js               |   65 +++---
 webinterface.XWMM/tvshows/tvshow.js                |  137 ++++++++---
 webinterface.XWMM/xbmc.js                          |    2 +-
 28 files changed, 574 insertions(+), 405 deletions(-)
 delete mode 100644 
webinterface.XWMM/extjs/resources/images/default/box/Thumbs.db
 delete mode 100644 
webinterface.XWMM/extjs/resources/images/default/dd/Thumbs.db
 delete mode 100644 
webinterface.XWMM/extjs/resources/images/default/editor/Thumbs.db
 delete mode 100644 
webinterface.XWMM/extjs/resources/images/default/form/Thumbs.db
 delete mode 100644 
webinterface.XWMM/extjs/resources/images/default/grid/Thumbs.db
 delete mode 100644 
webinterface.XWMM/extjs/resources/images/default/layout/Thumbs.db
 create mode 100644 webinterface.XWMM/images/defaultMovieFanart.jpg
 delete mode 100644 webinterface.XWMM/images/flags/Thumbs.db
 delete mode 100644 webinterface.XWMM/images/stars/Thumbs.db
 copy webinterface.XWMM/movies/{movie.js => movie-good.js} (99%)


hooks/post-receive
-- 
Web Interfaces

------------------------------------------------------------------------------
The Next 800 Companies to Lead America's Growth: New Video Whitepaper
David G. Thomson, author of the best-selling book "Blueprint to a 
Billion" shares his insights and actions to help propel your 
business during the next growth cycle. Listen Now!
http://p.sf.net/sfu/SAP-dev2dev
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to