From: <nor...@us...> - 2007-07-22 16:03:09
|
Revision: 749 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=749&view=rev Author: northern_sky Date: 2007-07-22 09:03:05 -0700 (Sun, 22 Jul 2007) Log Message: ----------- restructure of items etc.. probably some bugs introduced too=) Modified Paths: -------------- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItem.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemDirectoryCache.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemFactory.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemGameBase.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemGrouper.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemList.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemMame.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Database/DatabaseHandler.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppFilesImportProgress.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppFilesView.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsBase.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsDirCache.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsGamebase.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsGrouper.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsMame.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsRoot.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/FileDetailsForm.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/FileInfoScraperForm.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SetupForm.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIPrograms.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIProgramsAlt.csproj trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIProgramsAltFileInfo.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/AllGameScraper.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/GamebaseImport.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/MameImport.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ProgramSort.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ProgramUtils.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ProgramViewHandler.cs Added Paths: ----------- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/BaseItem.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/FileItem.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/FileItemInfo.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/FilelinkItem.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/FilterItem.cs Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItem.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItem.cs 2007-07-20 14:43:12 UTC (rev 748) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItem.cs 2007-07-22 16:03:05 UTC (rev 749) @@ -38,16 +38,16 @@ using GUIPrograms; using GUIPrograms.Database; -using GUIPrograms.FileItems; +using GUIPrograms.Items; -namespace GUIPrograms.ApplicationItems +namespace GUIPrograms.Items { - public class ApplicationItem + public class ApplicationItem : BaseItem { #region Variables - protected static SQLiteClient sqlDB = null; + int appID; int fatherID; @@ -69,20 +69,23 @@ string currentView = ""; public bool filesAreLoaded = false; // load on demand.... - protected FileItemList fileList = null; + // protected FileItemList fileList = null; + public bool linksAreLoaded = false; // load on demand.... - protected FilelinkItemList fileLinks = null; + + bool importMamePlaychoice10 = false; bool importMameMahjong = false; bool refreshGUIAllowed = false; + // more variables, maybe need some renaming or anything else Process proc; - ApplicationType sourceType; + ItemType sourceType; string sourceFile; string imageFile; string imageDirectories; // in one string for sqlite db field @@ -98,7 +101,7 @@ int thumbIndex = 0; int thumbFolderIndex = -1; - string lastFilepath = ""; // cached path + protected string lastFilepath = ""; // cached path //private DatabaseSorter dbPc = new DatabaseSorter(); //private ProgramSort dbPc = new ProgramSort(ProgramSort.SortMethod.Name, true); @@ -215,32 +218,6 @@ set { currentView = value; } } - - public FileItemList Files - { - // load on demand.... - get - { - if (!filesAreLoaded) - { - LoadFiles(); - } - return fileList; - } - } - public FilelinkItemList Filelinks - { - // load on demand.... - get - { - if (!linksAreLoaded) - { - LoadFileLinks(); - } - return fileLinks; - } - } - public bool ImportMamePlaychoice10 { get { return importMamePlaychoice10; } @@ -282,7 +259,7 @@ get { return sourceFile; } set { sourceFile = value; } } - public ApplicationType SourceType + public ItemType SourceType { get { return sourceType; } set { sourceType = value; } @@ -309,20 +286,6 @@ set { launchErrorMsg = value; } } - - /* public int CurrentSortIndex - { - get { return GetCurrentSortIndex(); } - set { SetCurrentSortIndex(value); } - - }*/ - /* public bool CurrentSortIsAscending - { - get { return GetCurrentSortIsAscending(); } - set { SetCurrentSortIsAscending(value); } - - } */ - #endregion #region Events @@ -338,12 +301,10 @@ #region Constructor - public ApplicationItem(SQLiteClient initSqlDB) + public ApplicationItem(SQLiteClient initSqlDb) : base(initSqlDb) { - - // constructor: save SQLiteDB object - sqlDB = initSqlDB; - // .. init member variables ... + + // .. init member variables ... appID = -1; fatherID = -1; title = ""; @@ -354,7 +315,7 @@ useShellExecute = false; useQuotes = true; enabled = true; - sourceType = ApplicationType.UNKNOWN; + sourceType = ItemType.UNKNOWN; sourceFile = ""; imageFile = ""; fileDirectory = ""; @@ -386,38 +347,39 @@ protected int GetID = ProgramUtils.GetID; + + public FileItem PrevFile(FileItem curFile) { - if (Files == null) return null; - if (Files.Count == 0) return null; + if (ItemList == null) return null; + if (ItemList.Count == 0) return null; - int index = this.Files.IndexOf(curFile); + int index = this.ItemList.IndexOf(curFile); index = index - 1; if (index < 0) - index = Files.Count - 1; - return (FileItem)Files[index]; + index = ItemList.Count - 1; + return (FileItem)ItemList[index]; } public FileItem NextFile(FileItem curFile) { - if (Files == null) return null; - if (Files.Count == 0) return null; + if (ItemList == null) return null; + if (ItemList.Count == 0) return null; - int index = this.Files.IndexOf(curFile); + int index = this.ItemList.IndexOf(curFile); index = index + 1; - if (index > Files.Count - 1) + if (index > ItemList.Count - 1) index = 0; - return (FileItem)Files[index]; + return (FileItem)ItemList[index]; } /// <summary> /// look for FileItem and launch it using the found object /// </summary> /// <param name="guiListItem"></param> - public virtual void LaunchFile(GUIListItem guiListItem) + public virtual void LaunchFile(BaseItem launchItem) { - if (guiListItem.MusicTag == null) return; - FileItem curFileItem = (FileItem)guiListItem.MusicTag; + FileItem curFileItem = (FileItem)launchItem; if (curFileItem == null) return; this.LaunchFile(curFileItem, true); @@ -623,15 +585,26 @@ int totalItems = 0; if (filePath != lastFilepath) { - Files.Load(AppID, filePath); - Filelinks.Load(AppID, filePath); + ItemLoad(AppID, filePath); + //Filelinks.Load(AppID, filePath); } - totalItems = totalItems + DisplayArrayList(filePath, this.Files, facadeView); - totalItems = totalItems + DisplayArrayList(filePath, this.Filelinks, facadeView); + totalItems = totalItems + DisplayItemList(filePath, this.ItemList, facadeView); + // totalItems = totalItems + DisplayArrayList(filePath, this.Filelinks, facadeView); lastFilepath = filePath; return totalItems; } + public override void OnClick(BaseItem baseItem,GUIPrograms guiPrograms) + { + ApplicationItem candidate = (ApplicationItem)baseItem; + guiPrograms.SaveItemIndex(guiPrograms.GetSelectedItemNo().ToString(), guiPrograms.lastApp, lastFilepath); + guiPrograms.lastApp = candidate; + guiPrograms.mapSettings.LastAppID = guiPrograms.lastApp.AppID; + guiPrograms.lastFilepath = guiPrograms.lastApp.DefaultFilepath(); + guiPrograms.ViewHandler.CurrentLevel = 0; + guiPrograms.lastApp.ViewHandler = guiPrograms.ViewHandler; + } + protected int DisplayArrayList(string filePath, List<object> dbItems, GUIFacadeControl facadeView) { int totalItems = 0; @@ -643,89 +616,20 @@ { FileItem curFile = obj as FileItem; GUIListItem gli = new GUIListItem(curFile.Title); - gli.Label2 = curFile.Title2; + gli.MusicTag = curFile; gli.IsFolder = curFile.IsFolder; gli.OnRetrieveArt += new MediaPortal.GUI.Library.GUIListItem.RetrieveCoverArtHandler(OnRetrieveCoverArt); gli.OnItemSelected += new MediaPortal.GUI.Library.GUIListItem.ItemSelectedHandler(OnItemSelected); facadeView.Add(gli); } - else if (obj is ProgramFilterItem) - { - ProgramFilterItem curFilter = obj as ProgramFilterItem; - GUIListItem gli = new GUIListItem(curFilter.Title); - gli.Label2 = curFilter.Title2; // some filters may have more than one text - gli.MusicTag = curFilter; - gli.IsFolder = true; - //ck - gli.OnItemSelected += new MediaPortal.GUI.Library.GUIListItem.ItemSelectedHandler(OnItemSelected); - - - facadeView.Add(gli); - - } } return totalItems; } - void OnRetrieveCoverArt(GUIListItem guiListItem) - { - if (guiListItem.MusicTag == null) return; - FileItem curFileItem = (FileItem)guiListItem.MusicTag; - if (curFileItem == null) return; - - string imgFile = String.Empty; - - if (DatabaseHandler.useMPsThumbDirectory) - imgFile = curFileItem.Imagefile; - else - imgFile = MediaPortal.Util.Utils.GetCoverArtName( - Config.GetSubFolder(Config.Dir.Thumbs, @"MyProgramsAlt\" + this.Title), - Path.GetFileNameWithoutExtension(curFileItem.Filename) - ); - if (imgFile != "") - { - guiListItem.ThumbnailImage = curFileItem.Imagefile; - guiListItem.IconImageBig = curFileItem.Imagefile; - guiListItem.IconImage = curFileItem.Imagefile; - } - else - { - guiListItem.ThumbnailImage = GUIGraphicsContext.Skin + @"\media\DefaultFolderBig.png"; - guiListItem.IconImageBig = GUIGraphicsContext.Skin + @"\media\DefaultFolderBig.png"; - guiListItem.IconImage = GUIGraphicsContext.Skin + @"\media\DefaultFolderNF.png"; - } - } - /* private void OnItemSelected(GUIListItem item, GUIControl parent) - { - GUIFilmstripControl filmstrip = parent as GUIFilmstripControl; - if (filmstrip == null) return; - if (item == null) return; - if ((item.MusicTag != null) && (item.MusicTag is FileItem) && (!item.IsFolder)) - { - filmstrip.InfoImageFileName = item.ThumbnailImage; - } - else - { - filmstrip.InfoImageFileName = ""; - } - }*/ - private void OnItemSelected(GUIListItem item, GUIControl parent) - { - GUIPrograms.ThumbnailPath = ""; - if (item.ThumbnailImage != "" - && item.ThumbnailImage != GUIGraphicsContext.Skin + @"\media\DefaultFolderBig.png" - && item.ThumbnailImage != GUIGraphicsContext.Skin + @"\media\DefaultAlbum.png" - ) - { - // only show big thumb if there is really one.... - GUIPrograms.ThumbnailPath = item.ThumbnailImage; - } - } - public virtual bool FileEditorAllowed() { return true; // otherwise, override this in child class @@ -956,33 +860,18 @@ public virtual void LoadFiles() { + //linksAreLoaded = true; if (sqlDB == null) return; - - // load Files and fill Files-List<string> here! - if (fileList == null) - fileList = new FileItemList(sqlDB); - else - fileList.Clear(); - + lastFilepath = ""; - fileList.Load(AppID, ""); + ItemLoad(AppID, ""); filesAreLoaded = true; } - public virtual void LoadFileLinks() - { - if (sqlDB == null) return; - if (fileLinks == null) - fileLinks = new FilelinkItemList(sqlDB); - else - fileLinks.Clear(); - lastFilepath = ""; - fileLinks.Load(AppID, ""); - linksAreLoaded = true; - } + public void InsertOrUpdateSettings() { if (appID == -1) Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemDirectoryCache.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemDirectoryCache.cs 2007-07-20 14:43:12 UTC (rev 748) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemDirectoryCache.cs 2007-07-22 16:03:05 UTC (rev 749) @@ -36,9 +36,9 @@ using GUIPrograms; using GUIPrograms.Database; -using GUIPrograms.FileItems; +using GUIPrograms.Items; -namespace GUIPrograms.ApplicationItems +namespace GUIPrograms.Items { /// <summary> /// Summary description for ApplicationItemDirectoryCache. @@ -153,11 +153,10 @@ FileItem curFile = new FileItem(sqlDB); curFile.FileID = -1; // to force an INSERT statement when writing the item curFile.AppID = this.AppID; - curFile.Title = fileInfo.Name; - curFile.Title = curFile.TitleNormalized; + curFile.Title = Path.GetFileNameWithoutExtension(fileInfo.Name); curFile.Filename = fileInfo.FullName; - curFile.Imagefile = GetThumbsFile(fileInfo, curFile.TitleNormalized); + curFile.Imagefile = GetThumbsFile(fileInfo, curFile.Title); // not imported properties => set default values curFile.LastTimeLaunched = DateTime.MinValue; @@ -178,8 +177,8 @@ private void DeleteOrphaned() { string TheFileName; - this.Files.Load(AppID, ""); - foreach (FileItem DBfile in this.Files) + ItemLoad(AppID, ""); + foreach (FileItem DBfile in ItemList) { TheFileName = DBfile.Filename; @@ -214,7 +213,7 @@ fileInDir = (FileInfo)allUnderLyingFiles[i]; - foreach (FileItem DBfile in this.Files) + foreach (FileItem DBfile in ItemList) { if (DBfile.Filename == fileInDir.FullName) { @@ -251,7 +250,7 @@ return; if (this.AppID < 0) return; - if (this.SourceType != ApplicationType.DIRCACHE) + if (this.SourceType != ItemType.DIRCACHE) return; if (mpGuiMode) { @@ -260,7 +259,7 @@ try { ValidExtensions = ValidExtensions.Replace(" ", ""); - this.Files.Load(AppID, ""); + ItemLoad(AppID, ""); string[] fileDirPaths = this.FileDirectory.Split(';'); ImportDirectory(fileDirPaths, mpGuiMode); @@ -278,9 +277,9 @@ override public string CurrentFilePath() { - if (Files.Filepath != "") + if (filePath != "") { - return Files.Filepath; + return filePath; } else { Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemFactory.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemFactory.cs 2007-07-20 14:43:12 UTC (rev 748) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemFactory.cs 2007-07-22 16:03:05 UTC (rev 749) @@ -24,10 +24,10 @@ #endregion using SQLite.NET; - +using System; using GUIPrograms; -namespace GUIPrograms.ApplicationItems +namespace GUIPrograms.Items { /// <summary> /// Factory object that creates the matchin Application descendant class @@ -46,26 +46,147 @@ // nothing to create...... } - public ApplicationItem GetApplicationItem(SQLiteClient sqlDB, ApplicationType sourceType) + public BaseItem GetApplicationItem(SQLiteClient sqlDB, ItemType sourceType,SQLiteResultSet results, int iRecord) { - ApplicationItem applicationItem = null; + BaseItem item = null; switch (sourceType) { - case ApplicationType.DIRCACHE: - applicationItem = new ApplicationItemDirectoryCache(sqlDB); + case ItemType.DIRCACHE: + item = AppItemFactory(sqlDB, results, iRecord,ItemType.DIRCACHE); break; - case ApplicationType.MAMEDIRECT: - applicationItem = new ApplicationItemMame(sqlDB); + case ItemType.MAMEDIRECT: + item = AppItemFactory(sqlDB, results, iRecord,ItemType.MAMEDIRECT); break; - case ApplicationType.GROUPER: - applicationItem = new ApplicationItemGrouper(sqlDB); + case ItemType.GROUPER: + item = AppItemFactory(sqlDB, results, iRecord,ItemType.GROUPER); break; - case ApplicationType.GAMEBASE: - applicationItem = new ApplicationItemGameBase(sqlDB); + case ItemType.GAMEBASE: + item = AppItemFactory(sqlDB, results, iRecord,ItemType.GAMEBASE); break; + case ItemType.FILEITEM: + item = FileItemFactory(sqlDB,results, iRecord); + break; + case ItemType.FILELINKITEM: + item = FilelinkItemFactory(sqlDB, results, iRecord); + break; + case ItemType.FILTERITEM: + item = FilterItemFactory(sqlDB, results, iRecord); + break; } - return applicationItem; + return item; } + + private ApplicationItem AppItemFactory(SQLiteClient sqldb, SQLiteResultSet results, int recordIndex, ItemType sourceType) + { + ApplicationItem item = null;//= (ApplicationItem)appFactory.GetApplicationItem(sqlDB, ProgramUtils.GetSourceType(results, recordIndex, "applicationItemType"), null, 0); + + switch (sourceType) + { + case ItemType.DIRCACHE: + item = new ApplicationItemDirectoryCache(sqldb); + break; + case ItemType.MAMEDIRECT: + item = new ApplicationItemMame(sqldb); + break; + case ItemType.GROUPER: + item = new ApplicationItemGrouper(sqldb); + break; + case ItemType.GAMEBASE: + item = new ApplicationItemGameBase(sqldb); + break; + } + + //fetches from db,, + if (results != null) + { + item.Enabled = ProgramUtils.GetBool(results, recordIndex, "enabled"); + item.AppID = ProgramUtils.GetIntDef(results, recordIndex, "applicationId", -1); + item.FatherID = ProgramUtils.GetIntDef(results, recordIndex, "fatherNodeId", -1); + item.Title = ProgramUtils.Get(results, recordIndex, "title"); + item.Filename = ProgramUtils.Get(results, recordIndex, "filename"); + item.Arguments = ProgramUtils.Get(results, recordIndex, "arguments"); + item.WindowStyle = ProgramUtils.GetProcessWindowStyle(results, recordIndex, "windowstyle"); + item.StartupDir = ProgramUtils.Get(results, recordIndex, "startupdir"); + item.UseShellExecute = ProgramUtils.GetBool(results, recordIndex, "useShellExecute"); + item.UseQuotes = ProgramUtils.GetBool(results, recordIndex, "useQuotes"); + item.SourceType = ProgramUtils.GetSourceType(results, recordIndex, "applicationItemType"); + item.Source = ProgramUtils.Get(results, recordIndex, "source"); + item.Imagefile = ProgramUtils.Get(results, recordIndex, "imagefile"); + item.FileDirectory = ProgramUtils.Get(results, recordIndex, "filedirectory"); + item.ImageDirectory = ProgramUtils.Get(results, recordIndex, "imagedirectory"); + item.ValidExtensions = ProgramUtils.Get(results, recordIndex, "validextensions"); + item.ImportValidImagesOnly = ProgramUtils.GetBool(results, recordIndex, "importvalidimagesonly"); + item.Position = ProgramUtils.GetIntDef(results, recordIndex, "iposition", 0); + item.RefreshGUIAllowed = ProgramUtils.GetBool(results, recordIndex, "refreshGUIAllowed"); + item.SystemDefault = ProgramUtils.Get(results, recordIndex, "systemdefault"); + item.WaitForExit = ProgramUtils.GetBool(results, recordIndex, "waitforexit"); + item.PreLaunch = ProgramUtils.Get(results, recordIndex, "preLaunch"); + item.PostLaunch = ProgramUtils.Get(results, recordIndex, "postLaunch"); + } + return item; + } + + private FileItem FileItemFactory(SQLiteClient sqlDB,SQLiteResultSet results, int iRecord) + { + FileItem newFile = new FileItem(sqlDB); + newFile.FileID = ProgramUtils.GetIntDef(results, iRecord, "fileid", -1); + newFile.AppID = ProgramUtils.GetIntDef(results, iRecord, "applicationId", -1); + newFile.Title = ProgramUtils.Get(results, iRecord, "title"); + newFile.Filename = ProgramUtils.Get(results, iRecord, "filename"); + newFile.Imagefile = ProgramUtils.Get(results, iRecord, "imagefile"); + newFile.MainGenre = ProgramUtils.Get(results, iRecord, "mainGenre"); + newFile.MainGenreId = ProgramUtils.GetIntDef(results, iRecord, "mainGenreId", 1); + newFile.SubGenre = ProgramUtils.Get(results, iRecord, "subGenre"); + newFile.SubGenreId = ProgramUtils.GetIntDef(results, iRecord, "subGenreId", 1); + newFile.Country = ProgramUtils.Get(results, iRecord, "country"); + newFile.ManufacturerId = ProgramUtils.GetIntDef(results, iRecord, "manufacturerId", 1); + newFile.Manufacturer = ProgramUtils.Get(results, iRecord, "manufacturer"); + newFile.Year = ProgramUtils.GetIntDef(results, iRecord, "year", -1); + newFile.Rating = ProgramUtils.GetIntDef(results, iRecord, "rating", 5); + newFile.Overview = ProgramUtils.Get(results, iRecord, "overview"); + newFile.Platform = ProgramUtils.Get(results, iRecord, "platform"); + newFile.PlatformId = ProgramUtils.GetIntDef(results, iRecord, "platformId", 1); + + newFile.IsFolder = ProgramUtils.GetBool(results, iRecord, "isfolder"); + newFile.CategoryData = ProgramUtils.Get(results, iRecord, "categorydata"); + newFile.GameInfoURL = ProgramUtils.Get(results, iRecord, "gameInfoUrl"); + return newFile; + } + + private FilterItem FilterItemFactory(SQLiteClient sqlDB,SQLiteResultSet results, int iRecord) + { + FilterItem filterItem = new FilterItem(sqlDB); + filterItem.Title = ProgramUtils.Get(results, iRecord, "title"); + // newFile.LastTimeLaunched = ProgramUtils.GetDateDef(results, iRecord, "lastTimeLaunched", DateTime.MinValue); + //newFile.LaunchCount = ProgramUtils.GetIntDef(results, iRecord, "launchcount", 0); ; + return filterItem; + } + + + private FilelinkItem FilelinkItemFactory(SQLiteClient sqlDB, SQLiteResultSet results, int iRecord) + { + FilelinkItem newLink = new FilelinkItem(sqlDB); + newLink.FileID = ProgramUtils.GetIntDef(results, iRecord, "fileId", -1); + newLink.AppID = ProgramUtils.GetIntDef(results, iRecord, "grouperAppId", -1); + newLink.TargetAppID = ProgramUtils.GetIntDef(results, iRecord, "targetAppId", -1); + newLink.Title = ProgramUtils.Get(results, iRecord, "title"); + newLink.Filename = ProgramUtils.Get(results, iRecord, "filename"); + newLink.Imagefile = ProgramUtils.Get(results, iRecord, "imagefile"); + newLink.MainGenre = ProgramUtils.Get(results, iRecord, "mainGenre"); + newLink.SubGenre = ProgramUtils.Get(results, iRecord, "subGenre"); + newLink.Country = ProgramUtils.Get(results, iRecord, "country"); + newLink.ManufacturerId = ProgramUtils.GetIntDef(results, iRecord, "manufacturerId", 1); + newLink.Manufacturer = ProgramUtils.Get(results, iRecord, "manufacturer"); + newLink.Year = ProgramUtils.GetIntDef(results, iRecord, "year", -1); + newLink.Rating = ProgramUtils.GetIntDef(results, iRecord, "rating", 5); + newLink.Overview = ProgramUtils.Get(results, iRecord, "overview"); + newLink.Platform = ProgramUtils.Get(results, iRecord, "platform"); + newLink.PlatformId = ProgramUtils.GetIntDef(results, iRecord, "platformId", 1); + newLink.LastTimeLaunched = ProgramUtils.GetDateDef(results, iRecord, "lastTimeLaunched", DateTime.MinValue); + newLink.LaunchCount = ProgramUtils.GetIntDef(results, iRecord, "launchcount", 0); + newLink.IsFolder = ProgramUtils.GetBool(results, iRecord, "isfolder"); + return newLink; + } } } \ No newline at end of file Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemGameBase.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemGameBase.cs 2007-07-20 14:43:12 UTC (rev 748) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemGameBase.cs 2007-07-22 16:03:05 UTC (rev 749) @@ -34,7 +34,7 @@ using GUIPrograms.Database; using GUIPrograms.Imports; -namespace GUIPrograms.ApplicationItems +namespace GUIPrograms.Items { /// <summary> /// Summary description for ApplicationItemGameBase. @@ -68,7 +68,7 @@ return; if (this.AppID < 0) return; - if ((this.SourceType != ApplicationType.GAMEBASE) || (Source == "") || (!File.Exists(Source))) + if ((this.SourceType != ItemType.GAMEBASE) || (Source == "") || (!File.Exists(Source))) return; // show progress dialog and run the import... if (bGUIMode) Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemGrouper.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemGrouper.cs 2007-07-20 14:43:12 UTC (rev 748) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemGrouper.cs 2007-07-22 16:03:05 UTC (rev 749) @@ -27,9 +27,9 @@ using SQLite.NET; using GUIPrograms.Database; -using GUIPrograms.FileItems; +using GUIPrograms.Items; -namespace GUIPrograms.ApplicationItems +namespace GUIPrograms.Items { /// <summary> /// Summary description for appFilesEdit. @@ -58,7 +58,111 @@ { return false; // links cannot be links again..... :) } + public override void LoadFiles() + { + if (sqlDB == null) return; + lastFilepath = ""; + ItemLoad(AppID, ""); + linksAreLoaded = true; + } + + + public override void ItemLoad(int appID, string pathSubfolders) +{ + string strSQL = ""; + // filePath = strPath; + // applicationItem. + // SPECIAL: the current application IS NOT the application with the launchinfo! + strSQL = @" + + SELECT + fi.applicationId AS targetAppId, + fi.grouperAppId AS grouperAppId, + f.fileId AS fileId, + title, + upperTitle, + f.filename AS filename, + imagefile, + tblMaingenre.genre as mainGenre, + mainGenreId, + tblSubgenre.genre as subGenre, + country, + f.manufacturerId, + manufacturer, + year, + rating, + overview, + platform, + f.platformId, + import_flag, + lastTimeLaunched, + launchCount, + isFolder + + FROM + tblFileItem f, + tblFilterItem fi, + tblGenre tblMainGenre, + tblGenre tblSubGenre, + tblManufacturer, + tblPlatform + + WHERE + f.fileId = fi.fileId + AND + tblMainGenre.genreId = f.mainGenreId + AND + tblSubGenre.genreId = f.subGenreId + AND + tblManufacturer.manufacturerId = f.manufacturerId + AND + tblPlatform.platformId = f.platformId + AND + grouperAppId = " + appID + @" + + ORDER BY f.fileName, uppertitle + + "; + + //Debugger.Launch(); + if (sqlDB == null) + return; + + try + { + ItemList.Clear(); + SQLiteResultSet results; + filePath = pathSubfolders; + results = sqlDB.Execute(strSQL); + if (results.Rows.Count == 0) + return; + + + for (int curRow = 0; curRow < results.Rows.Count; curRow++) + { + if (ViewHandler.IsFilterQuery) + { + FilterItem curFile = (FilterItem)ApplicationItemFactory.AppFactory.GetApplicationItem(sqlDB, ItemType.FILTERITEM, results, curRow); + + ItemList.Add(curFile); + } + else + { + FilelinkItem curFile = (FilelinkItem)ApplicationItemFactory.AppFactory.GetApplicationItem(sqlDB, ItemType.FILELINKITEM, results, curRow); + ItemList.Add(curFile); + } + } + + } + catch (SQLiteException ex) + { + Log.Info("Filedatabase exception err:{0} stack:{1}", ex.Message, ex.StackTrace); + } +} + + + public override void LaunchFile(FileItem curFile, bool MPGUIMode) { if (curFile is FilelinkItem) Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemList.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemList.cs 2007-07-20 14:43:12 UTC (rev 748) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemList.cs 2007-07-22 16:03:05 UTC (rev 749) @@ -28,11 +28,11 @@ using GUIPrograms; using GUIPrograms.Database; -using GUIPrograms.FileItems; +using GUIPrograms.Items; using MediaPortal.GUI.Library; -namespace GUIPrograms.ApplicationItems +namespace GUIPrograms.Items { /// <summary> /// Summary description for ApplicationItemList. @@ -53,36 +53,6 @@ LoadAll(); } - static private ApplicationItem DBGetApp(SQLiteResultSet results, int recordIndex) - { - ApplicationItem newApp = appFactory.GetApplicationItem(sqlDB, ProgramUtils.GetSourceType(results, recordIndex, "applicationItemType")); - newApp.OnLaunchFilelink += new ApplicationItem.FilelinkLaunchEventHandler(LaunchFilelink); - newApp.Enabled = ProgramUtils.GetBool(results, recordIndex, "enabled"); - newApp.AppID = ProgramUtils.GetIntDef(results, recordIndex, "applicationId", -1); - newApp.FatherID = ProgramUtils.GetIntDef(results, recordIndex, "fatherNodeId", -1); - newApp.Title = ProgramUtils.Get(results, recordIndex, "title"); - newApp.Filename = ProgramUtils.Get(results, recordIndex, "filename"); - newApp.Arguments = ProgramUtils.Get(results, recordIndex, "arguments"); - newApp.WindowStyle = ProgramUtils.GetProcessWindowStyle(results, recordIndex, "windowstyle"); - newApp.StartupDir = ProgramUtils.Get(results, recordIndex, "startupdir"); - newApp.UseShellExecute = ProgramUtils.GetBool(results, recordIndex, "useShellExecute"); - newApp.UseQuotes = ProgramUtils.GetBool(results, recordIndex, "useQuotes"); - newApp.SourceType = ProgramUtils.GetSourceType(results, recordIndex, "applicationItemType"); - newApp.Source = ProgramUtils.Get(results, recordIndex, "source"); - newApp.Imagefile = ProgramUtils.Get(results, recordIndex, "imagefile"); - newApp.FileDirectory = ProgramUtils.Get(results, recordIndex, "filedirectory"); - newApp.ImageDirectory = ProgramUtils.Get(results, recordIndex, "imagedirectory"); - newApp.ValidExtensions = ProgramUtils.Get(results, recordIndex, "validextensions"); - newApp.ImportValidImagesOnly = ProgramUtils.GetBool(results, recordIndex, "importvalidimagesonly"); - newApp.Position = ProgramUtils.GetIntDef(results, recordIndex, "iposition", 0); - newApp.RefreshGUIAllowed = ProgramUtils.GetBool(results, recordIndex, "refreshGUIAllowed"); - newApp.SystemDefault = ProgramUtils.Get(results, recordIndex, "systemdefault"); - newApp.WaitForExit = ProgramUtils.GetBool(results, recordIndex, "waitforexit"); - newApp.PreLaunch = ProgramUtils.Get(results, recordIndex, "preLaunch"); - newApp.PostLaunch = ProgramUtils.Get(results, recordIndex, "postLaunch"); - return newApp; - } - public List<ApplicationItem> AppsOfFatherID(int FatherID) { List<ApplicationItem> applicationItemList = new List<ApplicationItem>(); @@ -123,7 +93,7 @@ public ApplicationItem CloneAppItem(ApplicationItem sourceApp) { - ApplicationItem newApp = appFactory.GetApplicationItem(sqlDB, sourceApp.SourceType); + ApplicationItem newApp = (ApplicationItem)appFactory.GetApplicationItem(sqlDB, sourceApp.SourceType,null,0); newApp.Assign(sourceApp); newApp.AppID = -1; // to force a sql INSERT when written Add(newApp); @@ -165,7 +135,8 @@ return; for (int row = 0; row < results.Rows.Count; row++) { - ApplicationItem currentApplicationItem = DBGetApp(results, row); + ApplicationItem currentApplicationItem = (ApplicationItem) ApplicationItemFactory.AppFactory.GetApplicationItem(sqlDB,ProgramUtils.GetSourceType(results, row, "applicationItemType"),results, row ); + currentApplicationItem.OnLaunchFilelink += new ApplicationItem.FilelinkLaunchEventHandler(LaunchFilelink); Add(currentApplicationItem); } } Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemMame.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemMame.cs 2007-07-20 14:43:12 UTC (rev 748) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/ApplicationItemMame.cs 2007-07-22 16:03:05 UTC (rev 749) @@ -34,7 +34,7 @@ using GUIPrograms; using GUIPrograms.Imports; -namespace GUIPrograms.ApplicationItems +namespace GUIPrograms.Items { /// <summary> /// Summary description for ApplicationItemMame. @@ -85,7 +85,7 @@ return; if (this.AppID < 0) return; - if (this.SourceType != ApplicationType.MAMEDIRECT) + if (this.SourceType != ItemType.MAMEDIRECT) return; if (!File.Exists(this.Filename)) // no "mame.exe" return; Added: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/BaseItem.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/BaseItem.cs (rev 0) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/BaseItem.cs 2007-07-22 16:03:05 UTC (rev 749) @@ -0,0 +1,165 @@ + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Xml; +using SQLite.NET; + +using MediaPortal.Configuration; +using MediaPortal.GUI.Library; +using MediaPortal.Player; +using MediaPortal.Ripper; +using MediaPortal.Util; + +using GUIPrograms; +using GUIPrograms.Database; +using GUIPrograms.Items; + +namespace GUIPrograms.Items +{ + public abstract class BaseItem + { + + public List<BaseItem> ItemList = new List<BaseItem>(); + protected static SQLiteClient sqlDB = null; + public ProgramViewHandler ViewHandler = ProgramViewHandler.Instance; + public string filePath = ""; + //s protected FilelinkItemList fileLinks = null; + + public BaseItem(SQLiteClient initSqlDB) + { + // constructor: save SQLiteDB object + sqlDB = initSqlDB; + //hackisch until?? + + + + } + + public virtual void OnClick(BaseItem baseItem, GUIPrograms guiPrograms) + { + //override + } + public int DisplayItemList(string filePath, List<BaseItem> dbItems, GUIFacadeControl facadeView) + { + int totalItems = 0; + + foreach (BaseItem baseItem in dbItems) + { + totalItems = totalItems + 1; + + if (baseItem is FileItem) + { + FileItem curFile = baseItem as FileItem; + GUIListItem gli = new GUIListItem(curFile.Title); + + gli.MusicTag = curFile; + gli.IsFolder = curFile.IsFolder; + gli.OnRetrieveArt += new MediaPortal.GUI.Library.GUIListItem.RetrieveCoverArtHandler(OnRetrieveCoverArt); + gli.OnItemSelected += new MediaPortal.GUI.Library.GUIListItem.ItemSelectedHandler(OnItemSelected); + facadeView.Add(gli); + } + if (baseItem is FilterItem) + { + FilterItem curFile = baseItem as FilterItem; + GUIListItem gli = new GUIListItem(curFile.Title); + gli.MusicTag = curFile; + gli.IsFolder = false; + gli.OnItemSelected += new MediaPortal.GUI.Library.GUIListItem.ItemSelectedHandler(OnItemSelected); + facadeView.Add(gli); + } + } + return totalItems; + } + + protected void OnRetrieveCoverArt(GUIListItem guiListItem) + { + if (guiListItem.MusicTag == null) return; + FileItem curFileItem = (FileItem)guiListItem.MusicTag; + if (curFileItem == null) return; + + string imgFile = String.Empty; + + if (DatabaseHandler.useMPsThumbDirectory) + imgFile = curFileItem.Imagefile; + else + imgFile = MediaPortal.Util.Utils.GetCoverArtName( + Config.GetSubFolder(Config.Dir.Thumbs, @"MyProgramsAlt\" + curFileItem.Title), + Path.GetFileNameWithoutExtension(curFileItem.Filename) + ); + + if (imgFile != "") + { + guiListItem.ThumbnailImage = curFileItem.Imagefile; + guiListItem.IconImageBig = curFileItem.Imagefile; + guiListItem.IconImage = curFileItem.Imagefile; + } + else + { + guiListItem.ThumbnailImage = GUIGraphicsContext.Skin + @"\media\DefaultFolderBig.png"; + guiListItem.IconImageBig = GUIGraphicsContext.Skin + @"\media\DefaultFolderBig.png"; + guiListItem.IconImage = GUIGraphicsContext.Skin + @"\media\DefaultFolderNF.png"; + } + } + + protected void OnItemSelected(GUIListItem item, GUIControl parent) + { + GUIPrograms.ThumbnailPath = ""; + if (item.ThumbnailImage != "" + && item.ThumbnailImage != GUIGraphicsContext.Skin + @"\media\DefaultFolderBig.png" + && item.ThumbnailImage != GUIGraphicsContext.Skin + @"\media\DefaultAlbum.png" + ) + { + // only show big thumb if there is really one.... + GUIPrograms.ThumbnailPath = item.ThumbnailImage; + } + } + + public virtual void ItemLoad(int appID, string pathSubfolders) + { + //Debugger.Launch(); + if (sqlDB == null) + return; + + try + { + ItemList.Clear(); + SQLiteResultSet results; + filePath = pathSubfolders; + string sqlQuery = ViewHandler.BuildQuery(appID, pathSubfolders); + // Log.Info("dw \n{0}", sqlQuery); + results = sqlDB.Execute(sqlQuery); + if (results.Rows.Count == 0) + return; + + + for (int curRow = 0; curRow < results.Rows.Count; curRow++) + { + if (ViewHandler.IsFilterQuery) + { + FilterItem curFile = (FilterItem)ApplicationItemFactory.AppFactory.GetApplicationItem(sqlDB, ItemType.FILTERITEM, results, curRow); + ItemList.Add(curFile); + } + else + { + FileItem curFile =(FileItem) ApplicationItemFactory.AppFactory.GetApplicationItem(sqlDB,ItemType.FILEITEM,results, curRow); + ItemList.Add(curFile); + } + } + + } + catch (SQLiteException ex) + { + Log.Info("Filedatabase exception err:{0} stack:{1}", ex.Message, ex.StackTrace); + } + } + + + + } +} + + + + Added: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/FileItem.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/FileItem.cs (rev 0) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ApplicationItems/FileItem.cs 2007-07-22 16:03:05 UTC (rev 749) @@ -0,0 +1,856 @@ +#region Copyright (C) 2005-2007 Team MediaPortal + +/* + * Copyright (C) 2005-2007 Team MediaPortal + * http://www.team-mediaportal.com + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using SQLite.NET; + +using MediaPortal.Configuration; +using MediaPortal.GUI.Library; + +using GUIPrograms; +using GUIPrograms.Database; +using GUIPrograms.Items; +using GUIPrograms.Imports; + +namespace GUIPrograms.Items +{ + public class FileItem : BaseItem + { + #region Variables + + int fileID; + int appID; + string title; + string filename; + string imagefile; + string mainGenre; + int mainGenreId; + int subGenreId; + string subGenre; + string country; + string manufacturer; + int manufacturerId; + int year; + int rating; + string overview; + string platform; + int platformId; + DateTime lastTimeLaunched; + int launchCount; + string categoryData; + bool isFolder; + string gameInfoURL; + + List<FileItemInfo> fileItemInfoList = null; + FileItemInfo fileItemInfoFavourite = null; + + #endregion + + #region Constructor + + public FileItem(SQLiteClient initSqlDB) : base(initSqlDB) + { + // constructor: save SQLiteDB object + + Clear(); + } + + #endregion + + public virtual void Clear() + { + fileID = -1; + appID = -1; + title = ""; + filename = ""; + imagefile = ""; + mainGenreId = 1; + subGenreId = 1; + country = ""; + manufacturer = ""; + manufacturerId = 1; + year = -1; + rating = -1; + overview = ""; + platform = ""; + platformId = 1; + isFolder = false; + lastTimeLaunched = DateTime.MinValue; + launchCount = 0; + categoryData = ""; + gameInfoURL = string.Empty; + } + + public override void OnClick(BaseItem baseItem, GUIPrograms guiPrograms) + { + guiPrograms.selectedItemIndex = guiPrograms.GetSelectedItemNo(); + + if (guiPrograms.lastApp != null) + { + guiPrograms.mapSettings.LastAppID = guiPrograms.lastApp.AppID; + guiPrograms.lastFilepath = guiPrograms.lastApp.DefaultFilepath(); + guiPrograms.lastApp.LaunchFile(baseItem); + } + } + + #region Properties + + public int FileID + { + get + { + return fileID; + } + set + { + fileID = value; + } + } + public int AppID + { + get + { + return appID; + } + set + { + appID = value; + } + } + + public string Title + { + get + { + return title; + } + set + { + title = value; + } + } + + public string Filename + { + get + { + return filename; + } + set + { + filename = value; + } + } + + public string Imagefile + { + get + { + return imagefile; + } + set + { + imagefile = value; + } + } + + public string MainGenre + { + get + { + return mainGenre; + } + set + { + mainGenre = value; + } + } + + public int MainGenreId + { + get + { + return mainGenreId; + } + set + { + mainGenreId = value; + } + } + public int SubGenreId + { + get + { + return subGenreId; + } + set + { + subGenreId = value; + } + } + public string SubGenre + { + get + { + return subGenre; + } + set + { + subGenre = value; + } + } + public string Country + { + get + { + return country; + } + set + { + country = value; + } + } + public string Manufacturer + { + get + { + return manufacturer; + } + set + { + manufacturer = value; + } + } + public int ManufacturerId + { + get + { + return manufacturerId; + } + set + { + manufacturerId = value; + } + } + + public int Year + { + get + { + return year; + } + set + { + year = value; + } + } + public int Rating + { + get + { + return rating; + } + set + { + rating = value; + } + } + public string Overview + { + get + { + return overview; + } + set + { + overview = value; + } + } + public string Platform + { + get + { + return platform; + } + set + { + platform = value; + } + } + public int PlatformId + { + get + { + return platformId; + } + set + { + platformId = value; + } + } + public DateTime LastTimeLaunched + { + get + { + return lastTimeLaunched; + } + set + { + lastTimeLaunched = value; + } + } + public int LaunchCount + { + get + { + return launchCount; + } + set + { + launchCount = value; + } + } + + public string CategoryData + { + get + { + return categoryData; + } + set + { + categoryData = value; + } + } + public bool IsFolder + { + get + { + return isFolder; + } + set + { + isFolder = value; + } + } + public string GameInfoURL + { + get { return gameInfoURL; } + set { gameInfoURL = value; } + } + + + public List<FileItemInfo> FileInfoList + { + get + { + return fileItemInfoList; + } + } + public FileItemInfo FileInfoFavourite + { + get + { + return fileItemInfoFavourite; + } + set + { + fileItemInfoFavourite = value; + } + } + + #endregion + + private int CountQuotes(string strVal) + { + int at = 0; + int start = 0; + int nRes = 0; + while ((start < strVal.Length) && (at > -1)) + { + at = strVal.IndexOf("\"", start); + if (at == -1) + break; + nRes = nRes + 1; + start = at + 1; + } + return nRes; + } + + public string ExtractImageExtension() + { + string strRes = ""; + string[] parts = this.Imagefile.Split('.'); + if (parts.Length >= 2) + { + // there was an extension + strRes = '.' + parts[parts.Length - 1]; + } + return strRes; + } + + public string ExtractImageFileNoPath() + { + string strRes = ""; + string[] parts = this.Imagefile.Split('\\'); + if (parts.Length >= 1) + { + strRes = parts[parts.Length - 1]; + } + return strRes; + } + public void SetProperties() + { + /* string strThumb = MediaPortal.Util.Utils.GetLargeCoverArtName(Thumbs.MovieTitle, Title);*/ + //((GUIPropertyManager.SetProperty("#director", Director); + GUIPropertyManager.SetProperty("#maingenre", MainGenre); + GUIPropertyManager.SetProperty("#subgenre", SubGenre); + GUIPropertyManager.SetProperty("#manufacturer", Manufacturer); + GUIPropertyManager.SetProperty("#fname", Filename); + // GUIPropertyManager.SetProperty("#imdbnumber", IMDBNumber); + // GUIPropertyManager.SetProperty("#file", File); + GUIPropertyManager.SetProperty("#plot", Overview); + // GUIPropertyManager.SetProperty("#plotoutline", PlotOutline); + GUIPropertyManager.SetProperty("#rating", Rating.ToString()); + //GUIPropertyManager.SetProperty("#tagline", TagLine); + // GUIPropertyManager.SetProperty("#votes", Votes); + // GUIPropertyManager.SetProperty("#credits", WritingCredits); + GUIPropertyManager.SetProperty("#thumb", Imagefile); + GUIPropertyManager.SetProperty("#title", Title); + GUIPropertyManager.SetProperty("#year", Year.ToString()); + GUIPropertyManager.SetProperty("#platform", Platform); + /*GUIPropertyManager.SetProperty("#runtime", RunTime.ToString()); + GUIPropertyManager.SetProperty("#mpaarating", MPARating.ToString());*/ + /* string strValue = "no"; + if (Watched > 0) strValue = "yes"; + GUIPropertyManager.SetProperty("#iswatched", strValue);*/ + } + + private void Insert() + { + try + { + string strSQL = String.Format( + @" + INSERT INTO + tblFileItem + ( + fileid, + applicationId, + title, + filename, + imagefile, + mainGenreId, + subGenreId, + country, + manufacturerId, + year, + rating, + overview, + platformId, + lastTimeLaunched, + launchcount, + isfolder, + uppertitle, + categorydata, + gameInfoUrl + ) + + VALUES + ( + null, + '" + AppID + @"', + '" + ProgramUtils.Encode(Title) + @"', + '" + ProgramUtils.Encode(Filename) + @"', + '" + ProgramUtils.Encode(Imagefile) + @"', + " + MainGenreId + @", + '" + SubGenreId + @"', + '" + Country + @"', + '" + ManufacturerId + @"', + '" + Year.ToString() + @"', + '" + Rating + @"', + '" + ProgramUtils.Encode(Overview) + @"', + '" + PlatformId + @"', + '" + LastTimeLaunched.ToString() + @"', + '" + LaunchCount.ToString() + @"', + '" + ProgramUtils.BooleanToStr(IsFolder) + @"', + '" + ProgramUtils.Encode(Title.ToUpper()) + @"', + '" + ProgramUtils.Encode(CategoryData)) + @"', + '" + ProgramUtils.Encode(GameInfoURL) + @"' + )"; + // Log.Info("dw sql\n{0}", strSQL); + + sqlDB.Execute(strSQL); + } + catch (SQLiteException ex) + { + Log.Info("programdatabase exception err:{0} stack:{1}", ex.Message, ex.StackTrace); + } + } + + + + private void Update() + { + string strYear = ""; + if (Year > 0) + { + strYear = String.Format("{0}", Year); + } + else + { + strYear = "-1"; + } + + + + try + { + string strSQL = String.Format( + "UPDATE tblFileItem SET title = '{1}', filename = '{2}', imagefile = '{3}', mainGenreId = '{4}', subGenreId = '{5}', country = '{6}', manufacturerId = '{7}', year = '{8}', rating = '{9}', overview = '{10}', platformId = '{11}', uppertitle = '{12}', categorydata = '{13}', gameInfoURL = '" + ProgramUtils.Encode(GameInfoURL) + "' where fileid = {0}", FileID, ProgramUtils.Encode(Title), ProgramUtils.Encode(Filename), ProgramUtils.Encode(Imagefile), MainGenreId, SubGenreId, ProgramUtils.Encode(Country), ManufacturerId, strYear, Rating, ProgramUtils.Encode(Overview), PlatformId, ProgramUtils.Encode(Title.ToUpper()), ProgramUtils.Encode(CategoryData)); + sqlDB.Execute(strSQL); + } + catch (SQLiteException ex) + { + Log.Info("programdatabase exception err:{0} stack:{1}", ex.Message, ex.StackTrace); + } + } + + public void UpdateLaunchInfo() + { + try + { + LastTimeLaunched = DateTime.Now; + LaunchCount = LaunchCount + 1; + string strSQL = String.Format("UPDATE tblFileItem SET lastTimeLaunched = '{0}', launchcount = {1} WHERE fileid = {2}", LastTimeLaunched, LaunchCount, FileID); + sqlDB.Execute(strSQL); + } + catch (SQLiteException ex) + { + Log.Info("programdatabase exception err:{0} stack:{1}", ex.Message, ex.StackTrace); + } + } + + public virtual void Write() + { + if (fileID == -1) + { + Insert(); + } + else + { + Update(); + } + } + + public virtual void Delete() + { + if (this.FileID >= 0) + { + try + { + string strSQL1 = String.Format("DELETE FROM tblFilterItem WHERE fileid = {0}", this.FileID); + string strSQL2 = String.Format("DELETE FROM tblFileItem WHERE fileid = {0}", this.FileID); + sqlDB.Execute(strSQL1); + sqlDB.Execute(strSQL2); + } + catch (SQLiteException ex) + { + Log.Info("programdatabase exception err:{0} stack:{1}", ex.Message, ex.StackTrace); + } + } + } + + + + public bool FindFileInfo(ScraperType ScraperType) + { + int iRetries = 0; + bool bSuccess = false; + switch (ScraperType) + { + case ScraperType.ALLGAME: + { + AllGameScraper scraper = new AllGameScraper(); + // string strTitle = TitleNormalized; + while ((!bSuccess) && (iRetries < 5)) + { + // brute force! Try five times.... sometimes I get + // a ScrapeWebPage false result... don't know why! + bSuccess = scraper.FindGameinfo(Title); + if (!bSuccess) + { + iRetries++; + } + } + fileItemInfoList = scraper.GameList; + fileItemInfoFavourite = null; + } + break; + } + return bSuccess; + } + + public bool FindFileInfoDetail(ApplicationItem curApp, FileItemInfo curInfo, ScraperType scraperType, ScraperSaveType saveType) + { + int iRetries = 0; + bool bSuccess = false; + switch (scraperType) + { + case ScraperType.ALLGAME: + { + AllGameScraper scraper = new AllGameScraper(); + while ((!bSuccess) && (iRetries < 5)) + { + // brute force! Try five times.... sometimes I get + // a ScrapeWebPage false result... don't know why! + bSuccess = scraper.FindGameinfoDetail(curApp, this, curInfo, saveType); + if (!bSuccess) + { + iRetries++; + } + } + } + break; + } + return bSuccess; + } + + public void ToFileInfoFavourite() + { + FileInfoFavourite = new FileItemInfo(); + + FileInfoFavourite.Title = this.Title; + //FileInfoFavourite.GameURL = this.mGameURL; + FileInfoFavourite.MainGenreId = this.MainGenreId; + FileInfoFavourite.SubGenreId = this.SubGenreId; + FileInfoFavourite.ManufacturerId = this.ManufacturerId; + FileInfoFavourite.Year = this.Year.ToString(); + FileInfoFavourite.Overview = this.Overview; + FileInfoFavourite.Rating = this.Rating; + FileInfoFavourite.Platform = this.Platform; + FileInfoFavourite.PlatformId = this.PlatformId; + } + + public void SaveFromFileInfoFavourite() + { + if (this.FileInfoFavourite != null) + { + + + int LexiconId = DatabaseHandler.LexiconDataExists("tblGenre", "genre", FileInfoFavourite.MainGenre); + this.MainGenreId = LexiconId; + + LexiconId = DatabaseHandler.LexiconDataExists("tblGenre", "genre", FileInfoFavourite.SubGenre); + this.SubGenreId = LexiconId; + + LexiconId = DatabaseHandler.LexiconDataExists("tblManufacturer", "manufacturer", FileInfoFavourite.Manufacturer); + this.ManufacturerId = LexiconId; + + LexiconId = DatabaseHandler.LexiconDataExists("tblPlatform", "platform", FileInfoFavourite.Platform); + this.PlatformId = LexiconId; + + // DON'T overwrite title! this.Title = FileInfoFavourite.Title; + + this.MainGenre = FileInfoFavourite.MainGenre; + this.SubGenre = FileInfoFavourite.SubGenre; + this.Platform = FileInfoFavourite.Platform; + + this.Manufacturer = FileInfoFavourite.Manufacturer; + this.Year = ProgramUtils.StringToInteger(FileInfoFavourite.Year, -1); + this.Overview = FileInfoFavourite.Overview; + this.Rating = FileInfoFavourite.Rating; + + this.GameInfoURL = FileInfoFavourite.GameURL; + this.Write(); + } + } + + public string GetNewValidImageFile(ApplicationItem curApp, string strExtension) + { + if (curApp == null) + return ""; + if (curApp.imageDirs == null) + return ""; + if (curApp.imageDirs.Length == 0) + return ""; + if ((this.Imagefile == "") && (this.Filename == "")) + return ""; + + string strFolder = ""; + string strFileName = ""; + string strCand = ""; + int iImgIndex = -1; + bool bFound = false; + bool isWriteable = false; + + + //check that we have read access to any of the imagefolders + int i = 0; + while (!isWriteable && i < curApp.imageDirs.Length) + { + FileStream fs = null; + + try + { + fs = File.Create(curApp.imageDirs[i] + "... [truncated message content] |