diff --git a/Addons/generic.EmberCore.BulkRename/clsAPIRenamer.vb b/Addons/generic.EmberCore.BulkRename/clsAPIRenamer.vb index 7c04bf0af..9c8051285 100644 --- a/Addons/generic.EmberCore.BulkRename/clsAPIRenamer.vb +++ b/Addons/generic.EmberCore.BulkRename/clsAPIRenamer.vb @@ -1757,7 +1757,7 @@ Public Class FileFolderRenamer If _DBM.ImagesContainer.Landscape.LocalFilePathSpecified Then _DBM.ImagesContainer.Landscape.LocalFilePath = Path.Combine(Directory.GetParent(_DBM.ImagesContainer.Landscape.LocalFilePath).FullName.Replace(oldPath, newPath), Path.GetFileName(_DBM.ImagesContainer.Landscape.LocalFilePath).Replace(oldFile, newFile)) If _DBM.ImagesContainer.Poster.LocalFilePathSpecified Then _DBM.ImagesContainer.Poster.LocalFilePath = Path.Combine(Directory.GetParent(_DBM.ImagesContainer.Poster.LocalFilePath).FullName.Replace(oldPath, newPath), Path.GetFileName(_DBM.ImagesContainer.Poster.LocalFilePath).Replace(oldFile, newFile)) If _DBM.NfoPathSpecified Then _DBM.NfoPath = Path.Combine(Directory.GetParent(_DBM.NfoPath).FullName.Replace(oldPath, newPath), Path.GetFileName(_DBM.NfoPath).Replace(oldFile, newFile)) - If _DBM.ThemePathSpecified Then _DBM.ThemePath = Path.Combine(Directory.GetParent(_DBM.ThemePath).FullName.Replace(oldPath, newPath), Path.GetFileName(_DBM.ThemePath).Replace(oldFile, newFile)) + If Not String.IsNullOrEmpty(_DBM.Theme.LocalFilePath) Then _DBM.Theme.LocalFilePath = Path.Combine(Directory.GetParent(_DBM.Theme.LocalFilePath).FullName.Replace(oldPath, newPath), Path.GetFileName(_DBM.Theme.LocalFilePath).Replace(oldFile, newFile)) If Not String.IsNullOrEmpty(_DBM.Trailer.LocalFilePath) Then _DBM.Trailer.LocalFilePath = Path.Combine(Directory.GetParent(_DBM.Trailer.LocalFilePath).FullName.Replace(oldPath, newPath), Path.GetFileName(_DBM.Trailer.LocalFilePath).Replace(oldFile, newFile)) If _DBM.ImagesContainer.Extrafanarts.Count > 0 Then For Each eImg In _DBM.ImagesContainer.Extrafanarts.Where(Function(f) f.LocalFilePathSpecified) @@ -1800,7 +1800,7 @@ Public Class FileFolderRenamer If _DBE.ImagesContainer.Poster.LocalFilePathSpecified Then _DBE.ImagesContainer.Poster.LocalFilePath = _DBE.ImagesContainer.Poster.LocalFilePath.Replace(oldPath, newPath) If _DBE.NfoPathSpecified Then _DBE.NfoPath = _DBE.NfoPath.Replace(oldPath, newPath) If _DBE.ShowPathSpecified Then _DBE.ShowPath = _DBE.ShowPath.Replace(oldPath, newPath) - If _DBE.ThemePathSpecified Then _DBE.ThemePath = _DBE.ThemePath.Replace(oldPath, newPath) + If Not String.IsNullOrEmpty(_DBE.Theme.LocalFilePath) Then _DBE.Theme.LocalFilePath = _DBE.Theme.LocalFilePath.Replace(oldPath, newPath) If _DBE.SubtitlesSpecified Then For Each subtitle In _DBE.Subtitles.Where(Function(f) f.SubsPathSpecified) subtitle.SubsPath = subtitle.SubsPath.Replace(oldPath, newPath) diff --git a/Addons/scraper.GoEar.Theme/GoEar_Theme.vb b/Addons/scraper.GoEar.Theme/GoEar_Theme.vb index 806841580..3b93c2af4 100644 --- a/Addons/scraper.GoEar.Theme/GoEar_Theme.vb +++ b/Addons/scraper.GoEar.Theme/GoEar_Theme.vb @@ -139,7 +139,7 @@ Public Class GoEar_Theme End If End Sub - Function Scraper_Movie(ByVal DBMovie As Database.DBElement, ByRef ThemeList As List(Of Themes)) As Interfaces.ModuleResult Implements Interfaces.ScraperModule_Theme_Movie.Scraper + Function Scraper_Movie(ByRef DBMovie As Database.DBElement, ByVal Type As Enums.ModifierType, ByRef ThemeList As List(Of MediaContainers.Theme)) As Interfaces.ModuleResult Implements Interfaces.ScraperModule_Theme_Movie.Scraper logger.Trace("[GoEar_Theme] [Scraper_Movie] [Start]") Dim tGoEar As New GoEar.Scraper(DBMovie.Movie.OriginalTitle, DBMovie.ListTitle) diff --git a/Addons/scraper.GoEar.Theme/Scraper/clsScrapeGoEar.vb b/Addons/scraper.GoEar.Theme/Scraper/clsScrapeGoEar.vb index a31c75057..8b2cf57d5 100644 --- a/Addons/scraper.GoEar.Theme/Scraper/clsScrapeGoEar.vb +++ b/Addons/scraper.GoEar.Theme/Scraper/clsScrapeGoEar.vb @@ -34,7 +34,7 @@ Namespace GoEar Shared logger As Logger = NLog.LogManager.GetCurrentClassLogger() Private originaltitle As String Private listtitle As String - Private _themelist As New List(Of Themes) + Private _themelist As New List(Of MediaContainers.Theme) #End Region 'Fields @@ -51,11 +51,11 @@ Namespace GoEar #Region "Properties" - Public Property ThemeList() As List(Of Themes) + Public Property ThemeList() As List(Of MediaContainers.Theme) Get Return _themelist End Get - Set(ByVal value As List(Of Themes)) + Set(ByVal value As List(Of MediaContainers.Theme)) _themelist = value End Set End Property @@ -65,7 +65,7 @@ Namespace GoEar #Region "Methods" Private Sub Clear() - _themelist = New List(Of Themes) + _themelist = New List(Of MediaContainers.Theme) End Sub Private Sub GetMovieThemes() @@ -119,7 +119,7 @@ Namespace GoEar tURL = String.Concat(DownloadURL, tID).Trim If Not String.IsNullOrEmpty(tID) Then - _themelist.Add(New Themes With {.Title = tTitle, .ID = tID, .URL = tURL, .Description = tDescription, .Duration = tDuration, .Bitrate = tBitrate, .WebURL = tWebURL}) + _themelist.Add(New MediaContainers.Theme With {.URLAudioStream = tURL, .Description = tTitle, .Duration = tDuration, .Bitrate = tBitrate, .URLWebsite = tWebURL, .Scraper = "GoEar"}) End If Next End If diff --git a/Addons/scraper.TelevisionTunes.Theme/Scraper/clsScrapeTelevisionTunes.vb b/Addons/scraper.TelevisionTunes.Theme/Scraper/clsScrapeTelevisionTunes.vb index ba534b464..f7e582eab 100644 --- a/Addons/scraper.TelevisionTunes.Theme/Scraper/clsScrapeTelevisionTunes.vb +++ b/Addons/scraper.TelevisionTunes.Theme/Scraper/clsScrapeTelevisionTunes.vb @@ -31,9 +31,9 @@ Namespace TelevisionTunes Public Class Scraper #Region "Fields" - Shared logger As Logger = NLog.LogManager.GetCurrentClassLogger() + Shared logger As Logger = LogManager.GetCurrentClassLogger() Private originaltitle As String - Private _themelist As New List(Of Themes) + Private _themelist As New List(Of MediaContainers.Theme) #End Region 'Fields @@ -49,11 +49,11 @@ Namespace TelevisionTunes #Region "Properties" - Public Property ThemeList() As List(Of Themes) + Public Property ThemeList() As List(Of MediaContainers.Theme) Get Return _themelist End Get - Set(ByVal value As List(Of Themes)) + Set(ByVal value As List(Of MediaContainers.Theme)) _themelist = value End Set End Property @@ -63,7 +63,7 @@ Namespace TelevisionTunes #Region "Methods" Private Sub Clear() - _themelist = New List(Of Themes) + _themelist = New List(Of MediaContainers.Theme) End Sub Private Sub GetThemes() @@ -85,7 +85,6 @@ Namespace TelevisionTunes Dim tID As String = String.Empty Dim tWebURL As String = String.Empty Dim tURL As String = String.Empty - Dim tDescription As String = String.Empty Dim tLength As String = String.Empty Dim tBitrate As String = String.Empty @@ -105,7 +104,7 @@ Namespace TelevisionTunes tURL = GetDownloadURL(tWebURL) If Not String.IsNullOrEmpty(tURL) Then - _themelist.Add(New Themes With {.Title = tTitle, .URL = tURL, .Description = tDescription, .Duration = tLength, .Bitrate = tBitrate, .WebURL = tWebURL}) + _themelist.Add(New MediaContainers.Theme With {.URLAudioStream = tURL, .Description = tTitle, .Duration = tLength, .Bitrate = tBitrate, .URLWebsite = tWebURL, .Scraper = "TelevisionTunes"}) End If Next diff --git a/Addons/scraper.TelevisionTunes.Theme/TelevisionTunes_Theme.vb b/Addons/scraper.TelevisionTunes.Theme/TelevisionTunes_Theme.vb index 3e451ff8a..3039b3c34 100644 --- a/Addons/scraper.TelevisionTunes.Theme/TelevisionTunes_Theme.vb +++ b/Addons/scraper.TelevisionTunes.Theme/TelevisionTunes_Theme.vb @@ -208,7 +208,7 @@ Public Class TelevisionTunes_Theme End If End Sub - Function Scraper_Movie(ByVal DBMovie As Database.DBElement, ByRef ThemeList As List(Of Themes)) As Interfaces.ModuleResult Implements Interfaces.ScraperModule_Theme_Movie.Scraper + Function Scraper_Movie(ByRef DBMovie As Database.DBElement, ByVal Type As Enums.ModifierType, ByRef ThemeList As List(Of MediaContainers.Theme)) As Interfaces.ModuleResult Implements Interfaces.ScraperModule_Theme_Movie.Scraper logger.Trace("[TelevisionTunes_Theme] [Scraper_Movie] [Start]") Dim tTelevisionTunes As New TelevisionTunes.Scraper(DBMovie.Movie.OriginalTitle) @@ -221,7 +221,7 @@ Public Class TelevisionTunes_Theme Return New Interfaces.ModuleResult With {.breakChain = False} End Function - Function Scraper_TV(ByVal DBTV As Database.DBElement, ByRef ThemeList As List(Of Themes)) As Interfaces.ModuleResult Implements Interfaces.ScraperModule_Theme_TV.Scraper + Function Scraper_TV(ByRef DBTV As Database.DBElement, ByVal Type As Enums.ModifierType, ByRef ThemeList As List(Of MediaContainers.Theme)) As Interfaces.ModuleResult Implements Interfaces.ScraperModule_Theme_TV.Scraper logger.Trace("[TelevisionTunes_Theme] [Scraper_TV] [Start]") Dim tTelevisionTunes As New TelevisionTunes.Scraper(DBTV.TVShow.Title) diff --git a/Addons/scraper.Theme.ThemeLibrary/Scraper/clsScrapeThemeLibrary.vb b/Addons/scraper.Theme.ThemeLibrary/Scraper/clsScrapeThemeLibrary.vb index f425e2d26..96b5641ad 100644 --- a/Addons/scraper.Theme.ThemeLibrary/Scraper/clsScrapeThemeLibrary.vb +++ b/Addons/scraper.Theme.ThemeLibrary/Scraper/clsScrapeThemeLibrary.vb @@ -33,7 +33,7 @@ Namespace ThemeLibrary Shared logger As Logger = LogManager.GetCurrentClassLogger() - Private _themelist As New List(Of Themes) + Private _themelist As New List(Of MediaContainers.Theme) #End Region 'Fields @@ -48,11 +48,11 @@ Namespace ThemeLibrary #Region "Properties" - Public Property ThemeList() As List(Of Themes) + Public Property ThemeList() As List(Of MediaContainers.Theme) Get Return _themelist End Get - Set(ByVal value As List(Of Themes)) + Set(ByVal value As List(Of MediaContainers.Theme)) _themelist = value End Set End Property @@ -62,7 +62,7 @@ Namespace ThemeLibrary #Region "Methods" Private Sub Clear() - _themelist = New List(Of Themes) + _themelist = New List(Of MediaContainers.Theme) End Sub Private Sub GetThemes(ByVal tDBElement As Database.DBElement) @@ -118,7 +118,7 @@ Namespace ThemeLibrary For ctr As Integer = 0 To sResult.Count - 1 If Master.eSettings.FileSystemValidThemeExts.Contains(Path.GetExtension(sResult.Item(ctr).Groups("URL").Value.Trim)) Then Dim strURL As String = String.Concat(strSearchURL, "/", sResult.Item(ctr).Groups("URL").Value.Trim) - _themelist.Add(New Themes With {.Title = tInfo.Name, .URL = strURL, .WebURL = strURL}) + _themelist.Add(New MediaContainers.Theme With {.Description = tInfo.Name, .URLAudioStream = strURL, .URLWebsite = strURL, .Scraper = "ThemeLibrary"}) End If Next End If diff --git a/Addons/scraper.Theme.ThemeLibrary/ThemeLibrary_Theme.vb b/Addons/scraper.Theme.ThemeLibrary/ThemeLibrary_Theme.vb index 8e323521f..8863c7823 100644 --- a/Addons/scraper.Theme.ThemeLibrary/ThemeLibrary_Theme.vb +++ b/Addons/scraper.Theme.ThemeLibrary/ThemeLibrary_Theme.vb @@ -207,7 +207,7 @@ Public Class ThemeLibrary_Theme End If End Sub - Function Scraper_Movie(ByVal DBMovie As Database.DBElement, ByRef ThemeList As List(Of Themes)) As Interfaces.ModuleResult Implements Interfaces.ScraperModule_Theme_Movie.Scraper + Function Scraper_Movie(ByRef DBMovie As Database.DBElement, ByVal Type As Enums.ModifierType, ByRef ThemeList As List(Of MediaContainers.Theme)) As Interfaces.ModuleResult Implements Interfaces.ScraperModule_Theme_Movie.Scraper logger.Trace("[ThemeLibrary_Theme] [Scraper_Movie] [Start]") Dim tScraper As New ThemeLibrary.Scraper(DBMovie) @@ -220,7 +220,7 @@ Public Class ThemeLibrary_Theme Return New Interfaces.ModuleResult With {.breakChain = False} End Function - Function Scraper_TV(ByVal DBTV As Database.DBElement, ByRef ThemeList As List(Of Themes)) As Interfaces.ModuleResult Implements Interfaces.ScraperModule_Theme_TV.Scraper + Function Scraper_TV(ByRef DBTV As Database.DBElement, ByVal Type As Enums.ModifierType, ByRef ThemeList As List(Of MediaContainers.Theme)) As Interfaces.ModuleResult Implements Interfaces.ScraperModule_Theme_TV.Scraper logger.Trace("[ThemeLibrary_Theme] [Scraper_TV] [Start]") Dim tScraper As New ThemeLibrary.Scraper(DBTV) diff --git a/EmberAPI/clsAPIDatabase.vb b/EmberAPI/clsAPIDatabase.vb index 82e992787..1ebeae252 100644 --- a/EmberAPI/clsAPIDatabase.vb +++ b/EmberAPI/clsAPIDatabase.vb @@ -1639,7 +1639,7 @@ Public Class Database If Not DBNull.Value.Equals(SQLreader("NfoPath")) Then _movieDB.NfoPath = SQLreader("NfoPath").ToString If Not DBNull.Value.Equals(SQLreader("EThumbsPath")) Then _movieDB.ExtrathumbsPath = SQLreader("EThumbsPath").ToString If Not DBNull.Value.Equals(SQLreader("EFanartsPath")) Then _movieDB.ExtrafanartsPath = SQLreader("EFanartsPath").ToString - If Not DBNull.Value.Equals(SQLreader("ThemePath")) Then _movieDB.ThemePath = SQLreader("ThemePath").ToString + If Not DBNull.Value.Equals(SQLreader("ThemePath")) Then _movieDB.Theme.LocalFilePath = SQLreader("ThemePath").ToString _movieDB.Source = Load_Source_Movie(Convert.ToInt64(SQLreader("idSource"))) @@ -2507,7 +2507,7 @@ Public Class Database If Not DBNull.Value.Equals(SQLreader("Language")) Then _TVDB.Language = SQLreader("Language").ToString If Not DBNull.Value.Equals(SQLreader("NfoPath")) Then _TVDB.NfoPath = SQLreader("NfoPath").ToString If Not DBNull.Value.Equals(SQLreader("TVShowPath")) Then _TVDB.ShowPath = SQLreader("TVShowPath").ToString - If Not DBNull.Value.Equals(SQLreader("ThemePath")) Then _TVDB.ThemePath = SQLreader("ThemePath").ToString + If Not DBNull.Value.Equals(SQLreader("ThemePath")) Then _TVDB.Theme.LocalFilePath = SQLreader("ThemePath").ToString _TVDB.Source = Load_Source_TVShow(Convert.ToInt64(SQLreader("idSource"))) @@ -3545,6 +3545,7 @@ Public Class Database If ToDisk Then _movieDB.ImagesContainer.SaveAllImages(_movieDB, ForceFileCleanup) _movieDB.Movie.SaveAllActorThumbs(_movieDB) + _movieDB.Theme.SaveAllThemes(_movieDB, ForceFileCleanup) _movieDB.Trailer.SaveAllTrailers(_movieDB, ForceFileCleanup) End If @@ -3555,7 +3556,7 @@ Public Class Database par_movie_ExtrafanartsPath.Value = _movieDB.ExtrafanartsPath par_movie_ExtrathumbsPath.Value = _movieDB.ExtrathumbsPath par_movie_NfoPath.Value = _movieDB.NfoPath - par_movie_ThemePath.Value = _movieDB.ThemePath + par_movie_ThemePath.Value = If(Not String.IsNullOrEmpty(_movieDB.Theme.LocalFilePath), _movieDB.Theme.LocalFilePath, String.Empty) par_movie_TrailerPath.Value = If(Not String.IsNullOrEmpty(_movieDB.Trailer.LocalFilePath), _movieDB.Trailer.LocalFilePath, String.Empty) If Not Master.eSettings.MovieImagesNotSaveURLToNfo Then @@ -4888,13 +4889,14 @@ Public Class Database If ToNFO Then NFO.SaveToNFO_TVShow(_show) If ToDisk Then _show.ImagesContainer.SaveAllImages(_show, False) + _show.Theme.SaveAllThemes(_show, False) _show.TVShow.SaveAllActorThumbs(_show) End If parExtrafanartsPath.Value = _show.ExtrafanartsPath parNfoPath.Value = _show.NfoPath parTVShowPath.Value = _show.ShowPath - parThemePath.Value = _show.ThemePath + parThemePath.Value = If(Not String.IsNullOrEmpty(_show.Theme.LocalFilePath), _show.Theme.LocalFilePath, String.Empty) parNew.Value = Not _show.IDSpecified parListTitle.Value = _show.ListTitle @@ -5297,7 +5299,7 @@ Public Class Database Private _sortmethod As Enums.SortMethod_MovieSet Private _source As New DBSource Private _subtitles As New List(Of MediaContainers.Subtitle) - Private _themepath As String + Private _theme As New MediaContainers.Theme Private _trailer As New MediaContainers.Trailer Private _tvepisode As MediaContainers.EpisodeDetails Private _tvseason As MediaContainers.SeasonDetails @@ -5734,18 +5736,18 @@ Public Class Database End Get End Property - Public Property ThemePath() As String + Public Property Theme() As MediaContainers.Theme Get - Return _themepath + Return _theme End Get - Set(ByVal value As String) - _themepath = value + Set(ByVal value As MediaContainers.Theme) + _theme = value End Set End Property - Public ReadOnly Property ThemePathSpecified() As Boolean + Public ReadOnly Property ThemeSpecified() As Boolean Get - Return Not String.IsNullOrEmpty(_themepath) + Return _theme.ThemeOriginal IsNot Nothing AndAlso _theme.ThemeOriginal.hasMemoryStream End Get End Property @@ -5858,7 +5860,7 @@ Public Class Database _sortmethod = Enums.SortMethod_MovieSet.Year _source = New DBSource _subtitles = New List(Of MediaContainers.Subtitle) - _themepath = String.Empty + _theme = New MediaContainers.Theme _trailer = New MediaContainers.Trailer _tvepisode = Nothing _tvseason = Nothing diff --git a/EmberAPI/clsAPIFileUtils.vb b/EmberAPI/clsAPIFileUtils.vb index da9c1736c..b4f19c627 100644 --- a/EmberAPI/clsAPIFileUtils.vb +++ b/EmberAPI/clsAPIFileUtils.vb @@ -248,6 +248,26 @@ Namespace FileUtils End If End Function + Public Shared Function GetOpenFileDialogFilter_Theme() As String + Dim lstValidExtensions As New List(Of String) + + For Each nExtension In Master.eSettings.FileSystemValidThemeExts + lstValidExtensions.Add(String.Concat("*", nExtension)) + Next + + Return String.Concat(Master.eLang.GetString(1285, "Themes"), "|", String.Join(";", lstValidExtensions.ToArray)) + End Function + + Public Shared Function GetOpenFileDialogFilter_Video(ByVal strDescription As String) As String + Dim lstValidExtensions As New List(Of String) + + For Each nExtension In Master.eSettings.FileSystemValidExts + lstValidExtensions.Add(String.Concat("*", nExtension)) + Next + + Return String.Concat(strDescription, "|", String.Join(";", lstValidExtensions.ToArray)) + End Function + ''' ''' Determine whether the path provided contains a Blu-Ray image ''' diff --git a/EmberAPI/clsAPIInterfaces.vb b/EmberAPI/clsAPIInterfaces.vb index 2c440259a..f97812688 100644 --- a/EmberAPI/clsAPIInterfaces.vb +++ b/EmberAPI/clsAPIInterfaces.vb @@ -318,7 +318,7 @@ Public Class Interfaces Sub ScraperOrderChanged() Sub Init(ByVal sAssemblyName As String) Function InjectSetupScraper() As Containers.SettingsPanel - Function Scraper(ByVal DBMovie As Database.DBElement, ByRef URLList As List(Of Themes)) As ModuleResult + Function Scraper(ByRef DBMovie As Database.DBElement, ByVal Type As Enums.ModifierType, ByRef ThemeList As List(Of MediaContainers.Theme)) As Interfaces.ModuleResult Sub SaveSetupScraper(ByVal DoDispose As Boolean) #End Region 'Methods @@ -349,7 +349,7 @@ Public Class Interfaces Sub ScraperOrderChanged() Sub Init(ByVal sAssemblyName As String) Function InjectSetupScraper() As Containers.SettingsPanel - Function Scraper(ByVal DBTV As Database.DBElement, ByRef URLList As List(Of Themes)) As ModuleResult + Function Scraper(ByRef DBTV As Database.DBElement, ByVal Type As Enums.ModifierType, ByRef ThemeList As List(Of MediaContainers.Theme)) As Interfaces.ModuleResult Sub SaveSetupScraper(ByVal DoDispose As Boolean) #End Region 'Methods diff --git a/EmberAPI/clsAPIMediaContainers.vb b/EmberAPI/clsAPIMediaContainers.vb index f31c5a1ca..692309fbd 100644 --- a/EmberAPI/clsAPIMediaContainers.vb +++ b/EmberAPI/clsAPIMediaContainers.vb @@ -5438,6 +5438,20 @@ Namespace MediaContainers Public Class Theme +#Region "Fields" + + Private _bitrate As String + Private _description As String + Private _duration As String + Private _localfilepath As String + Private _scraper As String + Private _source As String + Private _themeoriginal As New Themes + Private _urlaudiostream As String + Private _urlwebsite As String + +#End Region 'Fields + #Region "Constructors" Public Sub New() @@ -5447,20 +5461,173 @@ Namespace MediaContainers #End Region 'Constructors #Region "Properties" - Public Property Quality As String - Public Property URL As String ' path to image (local or url) - Public Property WebTheme As Themes - Public Property ShortLang As String - Public Property LongLang As String + + Public Property Bitrate() As String + Get + Return _bitrate + End Get + Set(ByVal value As String) + _bitrate = value + End Set + End Property + + Public Property Description() As String + Get + Return _description + End Get + Set(ByVal value As String) + _description = value + End Set + End Property + + Public Property Duration() As String + Get + Return _duration + End Get + Set(ByVal value As String) + _duration = value + End Set + End Property + + Public Property LocalFilePath() As String + Get + Return _localfilepath + End Get + Set(ByVal value As String) + _localfilepath = value + End Set + End Property + + Public ReadOnly Property LocalFilePathSpecified() As Boolean + Get + Return Not String.IsNullOrEmpty(_localfilepath) + End Get + End Property + + Public Property Scraper() As String + Get + Return _scraper + End Get + Set(ByVal value As String) + _scraper = value + End Set + End Property + + Public Property Source() As String + Get + Return _source + End Get + Set(ByVal value As String) + _source = value + End Set + End Property + ''' + ''' Download audio URL of the theme + ''' + ''' + ''' + ''' + Public Property URLAudioStream() As String + Get + Return _urlaudiostream + End Get + Set(ByVal value As String) + _urlaudiostream = value + End Set + End Property + + Public ReadOnly Property URLAudioStreamSpecified() As Boolean + Get + Return Not String.IsNullOrEmpty(_urlaudiostream) + End Get + End Property + ''' + ''' Website URL of the theme for preview in browser + ''' + ''' + ''' + ''' + Public Property URLWebsite() As String + Get + Return _urlwebsite + End Get + Set(ByVal value As String) + _urlwebsite = value + End Set + End Property + + Public ReadOnly Property URLWebsiteSpecified() As Boolean + Get + Return Not String.IsNullOrEmpty(_urlwebsite) + End Get + End Property + + Public Property ThemeOriginal() As Themes + Get + Return _themeoriginal + End Get + Set(ByVal value As Themes) + _themeoriginal = value + End Set + End Property #End Region 'Properties #Region "Methods" Public Sub Clear() - _URL = String.Empty - _Quality = String.Empty - _WebTheme = New Themes + _bitrate = String.Empty + _description = String.Empty + _duration = String.Empty + _localfilepath = String.Empty + _scraper = String.Empty + _source = String.Empty + _themeoriginal = New Themes + _urlaudiostream = String.Empty + _urlwebsite = String.Empty + End Sub + + Public Function LoadAndCache() As Boolean + + If Not ThemeOriginal.hasMemoryStream Then + If File.Exists(LocalFilePath) Then + ThemeOriginal.LoadFromFile(LocalFilePath) + Else + ThemeOriginal.LoadFromWeb(Me) + End If + End If + + If ThemeOriginal.hasMemoryStream Then + Return True + Else + Return False + End If + End Function + + Public Sub SaveAllThemes(ByRef tDBElement As Database.DBElement, ByVal ForceFileCleanup As Boolean) + Dim tContentType As Enums.ContentType = tDBElement.ContentType + + With tDBElement + Select Case tContentType + Case Enums.ContentType.Movie + If .Theme.LoadAndCache() Then + If ForceFileCleanup Then Trailers.Delete_Movie(tDBElement, ForceFileCleanup) + .Theme.LocalFilePath = .Theme.ThemeOriginal.Save_Movie(tDBElement) + Else + Themes.Delete_Movie(tDBElement, ForceFileCleanup) + .Theme = New Theme + End If + + Case Enums.ContentType.TVShow + If .Theme.LoadAndCache() Then + If ForceFileCleanup Then Themes.Delete_TVShow(tDBElement) ', ForceFileCleanup) + .Theme.LocalFilePath = .Theme.ThemeOriginal.Save_TVShow(tDBElement) + Else + Themes.Delete_TVShow(tDBElement) ', ForceFileCleanup) + .Theme = New Theme + End If + End Select + End With End Sub #End Region 'Methods @@ -5531,6 +5698,12 @@ Namespace MediaContainers End Set End Property + Public ReadOnly Property LocalFilePathSpecified() As Boolean + Get + Return Not String.IsNullOrEmpty(_localfilepath) + End Get + End Property + Public Property LongLang() As String Get Return _longlang @@ -5621,6 +5794,12 @@ Namespace MediaContainers _urlvideostream = value End Set End Property + + Public ReadOnly Property URLVideoStreamSpecified() As Boolean + Get + Return Not String.IsNullOrEmpty(_urlvideostream) + End Get + End Property ''' ''' Website URL of the trailer for preview in browser ''' @@ -5636,6 +5815,12 @@ Namespace MediaContainers End Set End Property + Public ReadOnly Property URLWebsiteSpecified() As Boolean + Get + Return Not String.IsNullOrEmpty(_urlwebsite) + End Get + End Property + Public Property TrailerOriginal() As Trailers Get Return _traileroriginal diff --git a/EmberAPI/clsAPIModules.vb b/EmberAPI/clsAPIModules.vb index 584363dd9..3dc9163bf 100644 --- a/EmberAPI/clsAPIModules.vb +++ b/EmberAPI/clsAPIModules.vb @@ -1207,7 +1207,7 @@ Public Class ModulesManager DBElement.ImagesContainer = New MediaContainers.ImagesContainer DBElement.NfoPath = String.Empty DBElement.Seasons.Clear() - DBElement.ThemePath = String.Empty + DBElement.Theme = New MediaContainers.Theme DBElement.TVShow = New MediaContainers.TVShow DBElement.TVShow.Title = StringUtils.FilterTitleFromPath_TVShow(DBElement.ShowPath) @@ -1485,15 +1485,14 @@ Public Class ModulesManager ''' Request that enabled movie theme scrapers perform their functions on the supplied movie ''' ''' Movie to be scraped. Scraper will directly manipulate this structure - ''' List of Themes objects that the scraper will append to. Note that only the URL is returned, - ''' not the full content of the trailer + ''' NOT ACTUALLY USED! + ''' List of Theme objects that the scraper will append to. ''' True if one of the scrapers was cancelled ''' - Public Function ScrapeTheme_Movie(ByRef DBElement As Database.DBElement, ByRef URLList As List(Of Themes)) As Boolean + Public Function ScrapeTheme_Movie(ByRef DBElement As Database.DBElement, ByVal Type As Enums.ModifierType, ByRef ThemeList As List(Of MediaContainers.Theme)) As Boolean logger.Trace(String.Format("[ModulesManager] [ScrapeTheme_Movie] [Start] {0}", DBElement.Filename)) Dim modules As IEnumerable(Of _externalScraperModuleClass_Theme_Movie) = externalScrapersModules_Theme_Movie.Where(Function(e) e.ProcessorModule.ScraperEnabled).OrderBy(Function(e) e.ModuleOrder) Dim ret As Interfaces.ModuleResult - Dim aList As List(Of Themes) While Not ModulesLoaded Application.DoEvents() @@ -1505,12 +1504,10 @@ Public Class ModulesManager For Each _externalScraperModule As _externalScraperModuleClass_Theme_Movie In modules logger.Trace(String.Format("[ModulesManager] [ScrapeTheme_Movie] [Using] {0}", _externalScraperModule.ProcessorModule.ModuleName)) AddHandler _externalScraperModule.ProcessorModule.ScraperEvent, AddressOf Handler_ScraperEvent_Movie - aList = New List(Of Themes) - ret = _externalScraperModule.ProcessorModule.Scraper(DBElement, aList) - If aList IsNot Nothing AndAlso aList.Count > 0 Then - For Each aIm In aList - URLList.Add(aIm) - Next + Dim aList As New List(Of MediaContainers.Theme) + ret = _externalScraperModule.ProcessorModule.Scraper(DBElement, Type, aList) + If aList IsNot Nothing Then + ThemeList.AddRange(aList) End If RemoveHandler _externalScraperModule.ProcessorModule.ScraperEvent, AddressOf Handler_ScraperEvent_Movie If ret.breakChain Then Exit For @@ -1520,6 +1517,41 @@ Public Class ModulesManager Return ret.Cancelled End Function ''' + ''' Request that enabled tvshow theme scrapers perform their functions on the supplied tv show + ''' + ''' TV Show to be scraped. Scraper will directly manipulate this structure + ''' NOT ACTUALLY USED! + ''' List of Theme objects that the scraper will append to. + ''' True if one of the scrapers was cancelled + ''' + Public Function ScrapeTheme_TVShow(ByRef DBElement As Database.DBElement, ByVal Type As Enums.ModifierType, ByRef ThemeList As List(Of MediaContainers.Theme)) As Boolean + logger.Trace(String.Format("[ModulesManager] [ScrapeTheme_TVShow] [Start] {0}", DBElement.TVShow.Title)) + Dim modules As IEnumerable(Of _externalScraperModuleClass_Theme_TV) = externalScrapersModules_Theme_TV.Where(Function(e) e.ProcessorModule.ScraperEnabled).OrderBy(Function(e) e.ModuleOrder) + Dim ret As Interfaces.ModuleResult + + While Not ModulesLoaded + Application.DoEvents() + End While + + If (modules.Count() <= 0) Then + logger.Warn("[ModulesManager] [ScrapeTheme_TVShow] [Abort] No scrapers enabled") + Else + For Each _externalScraperModule As _externalScraperModuleClass_Theme_TV In modules + logger.Trace(String.Format("[ModulesManager] [ScrapeTheme_TVShow] [Using] {0}", _externalScraperModule.ProcessorModule.ModuleName)) + AddHandler _externalScraperModule.ProcessorModule.ScraperEvent, AddressOf Handler_ScraperEvent_TV + Dim aList As New List(Of MediaContainers.Theme) + ret = _externalScraperModule.ProcessorModule.Scraper(DBElement, Type, aList) + If aList IsNot Nothing Then + ThemeList.AddRange(aList) + End If + RemoveHandler _externalScraperModule.ProcessorModule.ScraperEvent, AddressOf Handler_ScraperEvent_TV + If ret.breakChain Then Exit For + Next + End If + logger.Trace(String.Format("[ModulesManager] [ScrapeTheme_TVShow] [Done] {0}", DBElement.TVShow.Title)) + Return ret.Cancelled + End Function + ''' ''' Request that enabled movie trailer scrapers perform their functions on the supplied movie ''' ''' Movie to be scraped. Scraper will directly manipulate this structure diff --git a/EmberAPI/clsAPIScanner.vb b/EmberAPI/clsAPIScanner.vb index 68600b02e..ddb57ed1f 100644 --- a/EmberAPI/clsAPIScanner.vb +++ b/EmberAPI/clsAPIScanner.vb @@ -91,7 +91,7 @@ Public Class Scanner DBMovie.ImagesContainer = New MediaContainers.ImagesContainer DBMovie.NfoPath = String.Empty DBMovie.Subtitles = New List(Of MediaContainers.Subtitle) - DBMovie.ThemePath = String.Empty + DBMovie.Theme = New MediaContainers.Theme DBMovie.Trailer = New MediaContainers.Trailer 'first add files to filelists @@ -246,12 +246,14 @@ Public Class Scanner Next 'theme - For Each a In FileUtils.GetFilenameList.Movie(DBMovie, Enums.ModifierType.MainTheme, bForced) - For Each t As String In Master.eSettings.FileSystemValidThemeExts - DBMovie.ThemePath = tList.FirstOrDefault(Function(s) s.ToLower = String.Concat(a.ToLower, t.ToLower)) - If Not String.IsNullOrEmpty(DBMovie.ThemePath) Then Exit For + If String.IsNullOrEmpty(DBMovie.Theme.LocalFilePath) Then + For Each a In FileUtils.GetFilenameList.Movie(DBMovie, Enums.ModifierType.MainTheme, bForced) + For Each t As String In Master.eSettings.FileSystemValidThemeExts + DBMovie.Theme.LocalFilePath = fList.FirstOrDefault(Function(s) s.ToLower = String.Concat(a.ToLower, t.ToLower)) + If Not String.IsNullOrEmpty(DBMovie.Theme.LocalFilePath) Then Exit For + Next Next - Next + End If 'trailer If String.IsNullOrEmpty(DBMovie.Trailer.LocalFilePath) Then @@ -487,7 +489,7 @@ Public Class Scanner DBTVShow.ExtrafanartsPath = String.Empty DBTVShow.ImagesContainer = New MediaContainers.ImagesContainer DBTVShow.NfoPath = String.Empty - DBTVShow.ThemePath = String.Empty + DBTVShow.Theme = New MediaContainers.Theme Try fList.AddRange(Directory.GetFiles(DBTVShow.ShowPath)) @@ -569,10 +571,9 @@ Public Class Scanner 'show theme For Each a In FileUtils.GetFilenameList.TVShow(DBTVShow, Enums.ModifierType.MainTheme) For Each t As String In Master.eSettings.FileSystemValidThemeExts - DBTVShow.ThemePath = fList.FirstOrDefault(Function(s) s.ToLower = String.Concat(a.ToLower, t.ToLower)) - If Not String.IsNullOrEmpty(DBTVShow.ThemePath) Then Exit For + DBTVShow.Theme.LocalFilePath = fList.FirstOrDefault(Function(s) s.ToLower = String.Concat(a.ToLower, t.ToLower)) + If Not String.IsNullOrEmpty(DBTVShow.Theme.LocalFilePath) Then Exit For Next - If Not String.IsNullOrEmpty(DBTVShow.ThemePath) Then Exit For Next End Sub diff --git a/EmberAPI/clsAPIThemes.vb b/EmberAPI/clsAPIThemes.vb index 36f02581c..f79ece263 100644 --- a/EmberAPI/clsAPIThemes.vb +++ b/EmberAPI/clsAPIThemes.vb @@ -21,25 +21,16 @@ Imports System.IO Imports NLog + Public Class Themes Implements IDisposable #Region "Fields" - Shared logger As Logger = NLog.LogManager.GetCurrentClassLogger() - Private _ext As String - Private _title As String - Private _id As String - Private _isEdit As Boolean - Private _url As String - Private _weburl As String - Private _description As String - Private _duration As String - Private _bitrate As String - Private _toRemove As Boolean + Shared logger As Logger = LogManager.GetCurrentClassLogger() + Private _ext As String Private _ms As MemoryStream - Private Ret As Byte() #End Region 'Fields @@ -67,90 +58,10 @@ Public Class Themes End Set End Property - Public Property Title() As String - Get - Return _title - End Get - Set(ByVal value As String) - _title = value - End Set - End Property - - Public Property ID() As String - Get - Return _id - End Get - Set(ByVal value As String) - _id = value - End Set - End Property - - Public Property isEdit() As Boolean + Public ReadOnly Property hasMemoryStream() As Boolean Get - Return _isEdit + Return _ms IsNot Nothing End Get - Set(ByVal value As Boolean) - _isEdit = value - End Set - End Property - - Public Property URL() As String - Get - Return _url - End Get - Set(ByVal value As String) - _url = value - End Set - End Property - - Public Property Description() As String - Get - Return _description - End Get - Set(ByVal value As String) - _description = value - End Set - End Property - - Public Property Duration() As String - Get - Return _duration - End Get - Set(ByVal value As String) - _duration = value - End Set - End Property - - Public Property Bitrate() As String - Get - Return _bitrate - End Get - Set(ByVal value As String) - _bitrate = value - End Set - End Property - - Public Property WebURL() As String - Get - Return _weburl - End Get - Set(ByVal value As String) - _weburl = value - End Set - End Property - ''' - ''' trigger to remove theme - ''' - ''' - ''' - ''' - Public Property toRemove() As Boolean - Get - Return _toRemove - End Get - Set(ByVal value As Boolean) - _toRemove = value - End Set End Property #End Region 'Properties @@ -170,15 +81,6 @@ Public Class Themes End If _ext = String.Empty - _title = String.Empty - _id = String.Empty - _isEdit = False - _toRemove = False - _url = String.Empty - _weburl = String.Empty - _description = String.Empty - _duration = String.Empty - _bitrate = String.Empty End Sub Public Sub Cancel() @@ -202,13 +104,13 @@ Public Class Themes ''' ''' Delete the movie themes ''' - ''' DBMovie structure representing the movie on which we should operate + ''' DBMovie structure representing the movie on which we should operate ''' - Public Shared Sub DeleteMovieTheme(ByVal DBMovie As Database.DBElement) - If String.IsNullOrEmpty(DBMovie.Filename) Then Return + Public Shared Sub Delete_Movie(ByVal tDBElement As Database.DBElement, ByVal ForceFileCleanup As Boolean) + If String.IsNullOrEmpty(tDBElement.Filename) Then Return Try - For Each a In FileUtils.GetFilenameList.Movie(DBMovie, Enums.ModifierType.MainTheme) + For Each a In FileUtils.GetFilenameList.Movie(tDBElement, Enums.ModifierType.MainTheme, ForceFileCleanup) For Each t As String In Master.eSettings.FileSystemValidThemeExts If File.Exists(String.Concat(a, t)) Then Delete(String.Concat(a, t)) @@ -216,7 +118,7 @@ Public Class Themes Next Next Catch ex As Exception - logger.Error(ex, New StackFrame().GetMethod().Name & Convert.ToChar(Windows.Forms.Keys.Tab) & "<" & DBMovie.Filename & ">") + logger.Error(ex, New StackFrame().GetMethod().Name & Convert.ToChar(Windows.Forms.Keys.Tab) & "<" & tDBElement.Filename & ">") End Try End Sub ''' @@ -224,11 +126,11 @@ Public Class Themes ''' ''' DBMovie structure representing the movie on which we should operate ''' - Public Shared Sub DeleteTVShowTheme(ByVal DBTVShow As Database.DBElement) + Public Shared Sub Delete_TVShow(ByVal DBTVShow As Database.DBElement) ', ByVal ForceFileCleanup As Boolean) If String.IsNullOrEmpty(DBTVShow.ShowPath) Then Return Try - For Each a In FileUtils.GetFilenameList.TVShow(DBTVShow, Enums.ModifierType.MainTheme) + For Each a In FileUtils.GetFilenameList.TVShow(DBTVShow, Enums.ModifierType.MainTheme) ', ForceFileCleanup) For Each t As String In Master.eSettings.FileSystemValidThemeExts If File.Exists(String.Concat(a, t)) Then Delete(String.Concat(a, t)) @@ -247,33 +149,50 @@ Public Class Themes Public Shared Sub DownloadProgressUpdated(ByVal iPercent As Integer) RaiseEvent ProgressUpdated(iPercent) End Sub + + Public Shared Function GetPreferredMovieTheme(ByRef ThemeList As List(Of MediaContainers.Theme), ByRef trlResult As MediaContainers.Theme) As Boolean + If ThemeList.Count = 0 Then Return False + trlResult = Nothing + + trlResult = ThemeList.Item(0) + + If trlResult IsNot Nothing Then + Return True + Else + Return False + End If + End Function + + Public Shared Function GetPreferredTVShowTheme(ByRef ThemeList As List(Of MediaContainers.Theme), ByRef trlResult As MediaContainers.Theme) As Boolean + If ThemeList.Count = 0 Then Return False + trlResult = Nothing + + trlResult = ThemeList.Item(0) + + If trlResult IsNot Nothing Then + Return True + Else + Return False + End If + End Function ''' ''' Loads this theme from the contents of the supplied file ''' ''' Path to the theme file ''' - Public Sub FromFile(ByVal sPath As String) - If _ms IsNot Nothing Then - _ms.Dispose() - End If + Public Sub LoadFromFile(ByVal sPath As String) If Not String.IsNullOrEmpty(sPath) AndAlso File.Exists(sPath) Then - Try - _ms = New MemoryStream() - Using fsImage As New FileStream(sPath, FileMode.Open, FileAccess.Read) - Dim StreamBuffer(Convert.ToInt32(fsImage.Length - 1)) As Byte - - fsImage.Read(StreamBuffer, 0, StreamBuffer.Length) - _ms.Write(StreamBuffer, 0, StreamBuffer.Length) - - StreamBuffer = Nothing - _ms.Flush() - - _ext = Path.GetExtension(sPath) - _url = sPath - End Using - Catch ex As Exception - logger.Error(ex, New StackFrame().GetMethod().Name & Convert.ToChar(Windows.Forms.Keys.Tab) & "<" & sPath & ">") - End Try + _ms = New MemoryStream() + Using fsTheme As FileStream = File.OpenRead(sPath) + Dim memStream As New MemoryStream + memStream.SetLength(fsTheme.Length) + fsTheme.Read(memStream.GetBuffer, 0, CInt(Fix(fsTheme.Length))) + _ms.Write(memStream.GetBuffer, 0, CInt(Fix(fsTheme.Length))) + _ms.Flush() + End Using + _ext = Path.GetExtension(sPath) + Else + _ms = New MemoryStream End If End Sub ''' @@ -281,7 +200,7 @@ Public Class Themes ''' ''' URL to the theme file ''' - Public Sub FromWeb(ByVal sURL As String, Optional ByVal webURL As String = "") + Public Sub LoadFromWeb(ByVal sURL As String, Optional ByVal webURL As String = "") Dim WebPage As New HTTP Dim tURL As String = String.Empty Dim tTheme As String = String.Empty @@ -290,23 +209,18 @@ Public Class Themes Try tTheme = WebPage.DownloadFile(sURL, String.Empty, True, "theme", webURL) If Not String.IsNullOrEmpty(tTheme) Then - If _ms IsNot Nothing Then _ms.Dispose() End If _ms = New MemoryStream() - Dim retSave() As Byte retSave = WebPage.ms.ToArray _ms.Write(retSave, 0, retSave.Length) - _ext = Path.GetExtension(tTheme) - _url = sURL logger.Debug("Theme downloaded: " & sURL) Else logger.Warn("Theme NOT downloaded: " & sURL) End If - Catch ex As Exception logger.Error(ex, New StackFrame().GetMethod().Name & Convert.ToChar(Windows.Forms.Keys.Tab) & "<" & sURL & ">") End Try @@ -314,73 +228,84 @@ Public Class Themes RemoveHandler WebPage.ProgressUpdated, AddressOf DownloadProgressUpdated End Sub - Public Function SaveAsMovieTheme(ByVal mMovie As Database.DBElement) As String + Public Sub LoadFromWeb(ByVal sTheme As MediaContainers.Theme) + LoadFromWeb(sTheme.URLAudioStream, sTheme.URLWebsite) + End Sub + + Public Function Save_Movie(ByVal tDBElement As Database.DBElement) As String + If Not tDBElement.Theme.ThemeOriginal.hasMemoryStream Then Return String.Empty + Dim strReturn As String = String.Empty Try Try - Dim params As New List(Of Object)(New Object() {mMovie}) + Dim params As New List(Of Object)(New Object() {tDBElement}) ModulesManager.Instance.RunGeneric(Enums.ModuleEventType.OnThemeSave_Movie, params, False) Catch ex As Exception + logger.Error(ex, New StackFrame().GetMethod().Name) End Try - Dim fExt As String = Path.GetExtension(_ext) - For Each a In FileUtils.GetFilenameList.Movie(mMovie, Enums.ModifierType.MainTheme) - If Not File.Exists(String.Concat(a, fExt)) OrElse (isEdit OrElse Master.eSettings.MovieThemeKeepExisting) Then - Save(String.Concat(a, fExt)) - strReturn = (String.Concat(a, fExt)) - End If + For Each a In FileUtils.GetFilenameList.Movie(tDBElement, Enums.ModifierType.MainTheme) + SaveToFile(String.Concat(a, _ext)) + strReturn = (String.Concat(a, _ext)) Next Catch ex As Exception logger.Error(ex, New StackFrame().GetMethod().Name) End Try + + Clear() 'Dispose to save memory Return strReturn End Function - Public Sub Save(ByVal sPath As String) - Dim retSave() As Byte - Try - retSave = _ms.ToArray + Public Function Save_TVShow(ByVal tDBElement As Database.DBElement) As String + If Not tDBElement.Theme.ThemeOriginal.hasMemoryStream Then Return String.Empty - 'make sure directory exists - Directory.CreateDirectory(Directory.GetParent(sPath).FullName) - Using FileStream As Stream = File.OpenWrite(sPath) - FileStream.Write(retSave, 0, retSave.Length) - End Using - - Catch ex As Exception - logger.Error(ex, New StackFrame().GetMethod().Name) - End Try - End Sub + Dim strReturn As String = String.Empty - ''' - ''' Determines whether a theme is allowed to be downloaded. This is determined - ''' by a combination of the Master.eSettings.LockTheme settings, - ''' whether the path is valid, and whether the Master.eSettings.OverwriteTheme - ''' flag is set. - ''' - ''' The intended path to save the theme - ''' True if a download is allowed, False otherwise - ''' - Public Function IsAllowedToDownload(ByVal mMovie As Database.DBElement) As Boolean Try - With Master.eSettings - If (String.IsNullOrEmpty(mMovie.ThemePath) OrElse .MovieThemeKeepExisting) AndAlso .MovieThemeTvTunesEnable AndAlso - (mMovie.IsSingle AndAlso .MovieThemeTvTunesMoviePath) OrElse - (mMovie.IsSingle AndAlso .MovieThemeTvTunesSub AndAlso Not String.IsNullOrEmpty(.MovieThemeTvTunesSubDir)) OrElse - (.MovieThemeTvTunesCustom AndAlso Not String.IsNullOrEmpty(.MovieThemeTvTunesCustomPath)) Then - Return True - Else - Return False - End If - End With + 'Try + ' Dim params As New List(Of Object)(New Object() {tDbElement}) + ' ModulesManager.Instance.RunGeneric(Enums.ModuleEventType.OnThemeSave_TVShow, params, False) + 'Catch ex As Exception + 'End Try + + For Each a In FileUtils.GetFilenameList.TVShow(tDBElement, Enums.ModifierType.MainTheme) + SaveToFile(String.Concat(a, _ext)) + strReturn = (String.Concat(a, _ext)) + Next + Catch ex As Exception logger.Error(ex, New StackFrame().GetMethod().Name) - Return False End Try + + Clear() 'Dispose to save memory + Return strReturn End Function + Public Sub SaveToFile(ByVal sPath As String) + If _ms.Length > 0 Then + Dim retSave() As Byte + Try + retSave = _ms.ToArray + + 'make sure directory exists + Directory.CreateDirectory(Directory.GetParent(sPath).FullName) + If sPath.Length <= 260 Then + Using fs As New FileStream(sPath, FileMode.Create, FileAccess.Write) + fs.Write(retSave, 0, retSave.Length) + fs.Flush() + fs.Close() + End Using + End If + Catch ex As Exception + logger.Error(ex, New StackFrame().GetMethod().Name) + End Try + Else + Throw New ArgumentOutOfRangeException("Looks like MemoryStream is empty") + End If + End Sub + #End Region 'Methods #Region "IDisposable Support" diff --git a/EmberAPI/clsAPITrailers.vb b/EmberAPI/clsAPITrailers.vb index 2f86a0e25..dccc92210 100644 --- a/EmberAPI/clsAPITrailers.vb +++ b/EmberAPI/clsAPITrailers.vb @@ -31,8 +31,6 @@ Public Class Trailers Shared logger As Logger = LogManager.GetCurrentClassLogger() Private _ext As String - Private _isEdit As Boolean - Private _ms As MemoryStream #End Region 'Fields @@ -67,15 +65,6 @@ Public Class Trailers End Get End Property - Public Property isEdit() As Boolean - Get - Return _isEdit - End Get - Set(ByVal value As Boolean) - _isEdit = value - End Set - End Property - #End Region 'Properties #Region "Events" @@ -93,7 +82,6 @@ Public Class Trailers End If _ext = String.Empty - _isEdit = False End Sub Public Sub Cancel() diff --git a/EmberMediaManager/dlgEditMovie.Designer.vb b/EmberMediaManager/dlgEditMovie.Designer.vb index be0584d25..5b1b6327b 100644 --- a/EmberMediaManager/dlgEditMovie.Designer.vb +++ b/EmberMediaManager/dlgEditMovie.Designer.vb @@ -188,6 +188,8 @@ Partial Class dlgEditMovie Me.btnSetSubtitleScrape = New System.Windows.Forms.Button() Me.btnSetSubtitleLocal = New System.Windows.Forms.Button() Me.tpTrailer = New System.Windows.Forms.TabPage() + Me.btnLocalTrailerPlay = New System.Windows.Forms.Button() + Me.txtLocalTrailer = New System.Windows.Forms.TextBox() Me.pnlTrailerPreview = New System.Windows.Forms.Panel() Me.pnlTrailerPreviewNoPlayer = New System.Windows.Forms.Panel() Me.tblTrailerPreviewNoPlayer = New System.Windows.Forms.TableLayoutPanel() @@ -197,6 +199,8 @@ Partial Class dlgEditMovie Me.btnSetTrailerScrape = New System.Windows.Forms.Button() Me.btnSetTrailerLocal = New System.Windows.Forms.Button() Me.tpTheme = New System.Windows.Forms.TabPage() + Me.btnLocalThemePlay = New System.Windows.Forms.Button() + Me.txtLocalTheme = New System.Windows.Forms.TextBox() Me.pnlThemePreview = New System.Windows.Forms.Panel() Me.pnlThemePreviewNoPlayer = New System.Windows.Forms.Panel() Me.tblThemePreviewNoPlayer = New System.Windows.Forms.TableLayoutPanel() @@ -2079,6 +2083,8 @@ Partial Class dlgEditMovie ' 'tpTrailer ' + Me.tpTrailer.Controls.Add(Me.btnLocalTrailerPlay) + Me.tpTrailer.Controls.Add(Me.txtLocalTrailer) Me.tpTrailer.Controls.Add(Me.pnlTrailerPreview) Me.tpTrailer.Controls.Add(Me.btnSetTrailerDL) Me.tpTrailer.Controls.Add(Me.btnRemoveTrailer) @@ -2091,6 +2097,26 @@ Partial Class dlgEditMovie Me.tpTrailer.Text = "Trailer" Me.tpTrailer.UseVisualStyleBackColor = True ' + 'btnLocalTrailerPlay + ' + Me.btnLocalTrailerPlay.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnLocalTrailerPlay.Enabled = False + Me.btnLocalTrailerPlay.Image = Global.Ember_Media_Manager.My.Resources.Resources.Play_Icon + Me.btnLocalTrailerPlay.Location = New System.Drawing.Point(783, 462) + Me.btnLocalTrailerPlay.Name = "btnLocalTrailerPlay" + Me.btnLocalTrailerPlay.Size = New System.Drawing.Size(23, 22) + Me.btnLocalTrailerPlay.TabIndex = 53 + Me.btnLocalTrailerPlay.UseVisualStyleBackColor = True + ' + 'txtLocalTrailer + ' + Me.txtLocalTrailer.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(238, Byte)) + Me.txtLocalTrailer.Location = New System.Drawing.Point(6, 462) + Me.txtLocalTrailer.Name = "txtLocalTrailer" + Me.txtLocalTrailer.ReadOnly = True + Me.txtLocalTrailer.Size = New System.Drawing.Size(771, 22) + Me.txtLocalTrailer.TabIndex = 15 + ' 'pnlTrailerPreview ' Me.pnlTrailerPreview.BackColor = System.Drawing.Color.DimGray @@ -2189,6 +2215,8 @@ Partial Class dlgEditMovie ' 'tpTheme ' + Me.tpTheme.Controls.Add(Me.btnLocalThemePlay) + Me.tpTheme.Controls.Add(Me.txtLocalTheme) Me.tpTheme.Controls.Add(Me.pnlThemePreview) Me.tpTheme.Controls.Add(Me.btnSetThemeDL) Me.tpTheme.Controls.Add(Me.btnRemoveTheme) @@ -2201,6 +2229,26 @@ Partial Class dlgEditMovie Me.tpTheme.Text = "Theme" Me.tpTheme.UseVisualStyleBackColor = True ' + 'btnLocalThemePlay + ' + Me.btnLocalThemePlay.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnLocalThemePlay.Enabled = False + Me.btnLocalThemePlay.Image = Global.Ember_Media_Manager.My.Resources.Resources.Play_Icon + Me.btnLocalThemePlay.Location = New System.Drawing.Point(783, 462) + Me.btnLocalThemePlay.Name = "btnLocalThemePlay" + Me.btnLocalThemePlay.Size = New System.Drawing.Size(23, 22) + Me.btnLocalThemePlay.TabIndex = 56 + Me.btnLocalThemePlay.UseVisualStyleBackColor = True + ' + 'txtLocalTheme + ' + Me.txtLocalTheme.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(238, Byte)) + Me.txtLocalTheme.Location = New System.Drawing.Point(6, 462) + Me.txtLocalTheme.Name = "txtLocalTheme" + Me.txtLocalTheme.ReadOnly = True + Me.txtLocalTheme.Size = New System.Drawing.Size(771, 22) + Me.txtLocalTheme.TabIndex = 55 + ' 'pnlThemePreview ' Me.pnlThemePreview.BackColor = System.Drawing.Color.DimGray @@ -2529,12 +2577,14 @@ Partial Class dlgEditMovie Me.tpSubtitles.ResumeLayout(False) Me.tpSubtitles.PerformLayout() Me.tpTrailer.ResumeLayout(False) + Me.tpTrailer.PerformLayout() Me.pnlTrailerPreview.ResumeLayout(False) Me.pnlTrailerPreviewNoPlayer.ResumeLayout(False) Me.pnlTrailerPreviewNoPlayer.PerformLayout() Me.tblTrailerPreviewNoPlayer.ResumeLayout(False) Me.tblTrailerPreviewNoPlayer.PerformLayout() Me.tpTheme.ResumeLayout(False) + Me.tpTheme.PerformLayout() Me.pnlThemePreview.ResumeLayout(False) Me.pnlThemePreviewNoPlayer.ResumeLayout(False) Me.pnlThemePreviewNoPlayer.PerformLayout() @@ -2746,5 +2796,8 @@ Partial Class dlgEditMovie Friend WithEvents btnSetExtrathumbsScrape As System.Windows.Forms.Button Friend WithEvents cbSourceLanguage As System.Windows.Forms.ComboBox Friend WithEvents lblLanguage As System.Windows.Forms.Label - + Friend WithEvents btnLocalTrailerPlay As Button + Friend WithEvents txtLocalTrailer As TextBox + Friend WithEvents btnLocalThemePlay As Button + Friend WithEvents txtLocalTheme As TextBox End Class diff --git a/EmberMediaManager/dlgEditMovie.vb b/EmberMediaManager/dlgEditMovie.vb index 524f1920b..24e5a2c48 100644 --- a/EmberMediaManager/dlgEditMovie.vb +++ b/EmberMediaManager/dlgEditMovie.vb @@ -31,7 +31,7 @@ Public Class dlgEditMovie #Region "Fields" - Shared logger As Logger = NLog.LogManager.GetCurrentClassLogger() + Shared logger As Logger = LogManager.GetCurrentClassLogger() Private tmpDBElement As Database.DBElement @@ -41,7 +41,6 @@ Public Class dlgEditMovie Private lvwActorSorter As ListViewColumnSorter Private pResults As New Containers.ImgResult Private PreviousFrameValue As Integer - Private MovieTheme As New Themes With {.isEdit = True} Private tmpRating As String = String.Empty Private AnyThemePlayerEnabled As Boolean = False Private AnyTrailerPlayerEnabled As Boolean = False @@ -382,8 +381,8 @@ Public Class dlgEditMovie Dim tPath As String = String.Empty - If Not String.IsNullOrEmpty(tmpDBElement.ThemePath) Then - tPath = String.Concat("""", tmpDBElement.ThemePath, """") + If Not String.IsNullOrEmpty(tmpDBElement.Theme.LocalFilePath) Then + tPath = String.Concat("""", tmpDBElement.Theme.LocalFilePath, """") End If If Not String.IsNullOrEmpty(tPath) Then @@ -466,14 +465,15 @@ Public Class dlgEditMovie Private Sub btnRemoveTheme_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemoveTheme.Click ThemeStop() 'axVLCTheme.playlist.items.clear() - MovieTheme.Dispose() - MovieTheme.toRemove = True + tmpDBElement.Theme = New MediaContainers.Theme + txtLocalTheme.Text = String.Empty End Sub Private Sub btnRemoveTrailer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemoveTrailer.Click TrailerStop() TrailerPlaylistClear() tmpDBElement.Trailer = New MediaContainers.Trailer + txtLocalTrailer.Text = String.Empty End Sub Private Sub btnExtrafanartsRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExtrafanartsRemove.Click @@ -1032,17 +1032,16 @@ Public Class dlgEditMovie 'End Sub Private Sub btnSetThemeScrape_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetThemeScrape.Click - Dim dlgThmS As dlgThemeSelect - Dim aUrlList As New List(Of Themes) + Dim dThemeSelect As dlgThemeSelect + Dim tList As New List(Of MediaContainers.Theme) ThemeStop() - If Not ModulesManager.Instance.ScrapeTheme_Movie(tmpDBElement, aUrlList) Then - If aUrlList.Count > 0 Then - dlgThmS = New dlgThemeSelect() - If dlgThmS.ShowDialog(tmpDBElement, aUrlList) = DialogResult.OK Then - MovieTheme = dlgThmS.Results.WebTheme - MovieTheme.isEdit = True - ThemeAddToPlayer(MovieTheme) + If Not ModulesManager.Instance.ScrapeTheme_Movie(tmpDBElement, Enums.ModifierType.MainTheme, tList) Then + If tList.Count > 0 Then + dThemeSelect = New dlgThemeSelect() + If dThemeSelect.ShowDialog(tmpDBElement, tList, True) = DialogResult.OK Then + tmpDBElement.Theme = dThemeSelect.Result + LoadTheme(tmpDBElement.Theme) End If Else MessageBox.Show(Master.eLang.GetString(1163, "No Themes found"), String.Empty, MessageBoxButtons.OK, MessageBoxIcon.Information) @@ -1053,15 +1052,15 @@ Public Class dlgEditMovie Private Sub btnSetThemeLocal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetThemeLocal.Click ThemeStop() With ofdLocalFiles - .InitialDirectory = Directory.GetParent(tmpDBElement.Filename).FullName - .Filter = Master.eLang.GetString(1285, "Themes") + "|*.mp3;*.wav" - .FilterIndex = 0 - End With + .InitialDirectory = Directory.GetParent(tmpDBElement.Filename).FullName + .Filter = FileUtils.Common.GetOpenFileDialogFilter_Theme() + .FilterIndex = 0 + End With If ofdLocalFiles.ShowDialog() = DialogResult.OK Then - MovieTheme.FromFile(ofdLocalFiles.FileName) - MovieTheme.isEdit = True - ThemeAddToPlayer(MovieTheme) + tmpDBElement.Theme = New MediaContainers.Theme With {.LocalFilePath = ofdLocalFiles.FileName} + tmpDBElement.Theme.LoadAndCache() + LoadTheme(tmpDBElement.Theme) End If End Sub @@ -1075,7 +1074,7 @@ Public Class dlgEditMovie If dlgTrlS.ShowDialog(tmpDBElement, tList, False, True, True) = DialogResult.OK Then tResults = dlgTrlS.Result tmpDBElement.Trailer = tResults - TrailerPlaylistAdd(tmpDBElement.Trailer) + LoadTrailer(tmpDBElement.Trailer) End If End Sub @@ -1084,25 +1083,26 @@ Public Class dlgEditMovie Dim tList As New List(Of MediaContainers.Trailer) TrailerStop() - dlgTrlS = New dlgTrailerSelect() + dlgTrlS = New dlgTrailerSelect() If dlgTrlS.ShowDialog(tmpDBElement, tList, False, True, True) = DialogResult.OK Then tmpDBElement.Trailer = dlgTrlS.Result - TrailerPlaylistAdd(tmpDBElement.Trailer) + LoadTrailer(tmpDBElement.Trailer) End If End Sub Private Sub btnSetTrailerLocal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetTrailerLocal.Click TrailerStop() + Dim strValidExtesions As String() = Master.eSettings.FileSystemValidExts.ToArray With ofdLocalFiles .InitialDirectory = Directory.GetParent(tmpDBElement.Filename).FullName - .Filter = Master.eLang.GetString(1195, "Trailers") + "|*.mp4;*.avi" + .Filter = FileUtils.Common.GetOpenFileDialogFilter_Video(Master.eLang.GetString(1195, "Trailers")) .FilterIndex = 0 End With If ofdLocalFiles.ShowDialog() = DialogResult.OK Then - tmpDBElement.Trailer.TrailerOriginal.LoadFromFile(ofdLocalFiles.FileName) - tmpDBElement.Trailer.TrailerOriginal.isEdit = True - TrailerPlaylistAdd(tmpDBElement.Trailer) + tmpDBElement.Trailer = New MediaContainers.Trailer With {.LocalFilePath = ofdLocalFiles.FileName} + tmpDBElement.Trailer.LoadAndCache() + LoadTrailer(tmpDBElement.Trailer) End If End Sub @@ -1138,13 +1138,18 @@ Public Class dlgEditMovie 'btnThemePlay.Text = "Play" End Sub - Private Sub ThemeAddToPlayer(ByVal Theme As Themes) - 'Dim Link As String = String.Empty - 'axVLCTheme.playlist.stop() - 'axVLCTheme.playlist.items.clear() + Private Sub LoadTheme(ByVal Theme As MediaContainers.Theme) + txtLocalTheme.Text = + If(Theme.LocalFilePathSpecified, Theme.LocalFilePath, + If(Theme.URLAudioStreamSpecified, Theme.URLAudioStream, + If(Theme.URLWebsiteSpecified, Theme.URLWebsite, String.Empty))) End Sub - Private Sub TrailerPlaylistAdd(ByVal Trailer As MediaContainers.Trailer) + Private Sub LoadTrailer(ByVal Trailer As MediaContainers.Trailer) + txtLocalTrailer.Text = + If(Trailer.LocalFilePathSpecified, Trailer.LocalFilePath, + If(Trailer.URLVideoStreamSpecified, Trailer.URLVideoStream, + If(Trailer.URLWebsiteSpecified, Trailer.URLWebsite, String.Empty))) If AnyTrailerPlayerEnabled Then Dim paramsTrailerPreview As New List(Of Object)(New String() {Trailer.URLVideoStream}) ModulesManager.Instance.RunGeneric(Enums.ModuleEventType.MediaPlayerPlaylistAdd_Video, paramsTrailerPreview, Nothing, True) @@ -1436,11 +1441,6 @@ Public Class dlgEditMovie 'GrabTheFrame() End Sub - Private Sub dlgEditMovie_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed - MovieTheme.Dispose() - MovieTheme = Nothing - End Sub - Private Sub dlgEditMovie_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load pbBanner.AllowDrop = True pbClearArt.AllowDrop = True @@ -1565,12 +1565,6 @@ Public Class dlgEditMovie SelectMPAA() - If String.IsNullOrEmpty(tmpDBElement.ThemePath) Then - '.btnPlayTheme.Enabled = False - End If - - '.btnDLTheme.Enabled = Master.eSettings.MovieThemeEnable AndAlso Master.eSettings.MovieThemeAnyEnabled AndAlso ModulesManager.Instance.QueryTrailerScraperCapabilities(Enums.ScraperCapabilities.Theme) - If Not String.IsNullOrEmpty(tmpDBElement.Movie.Trailer) Then txtTrailer.Text = tmpDBElement.Movie.Trailer btnPlayTrailer.Enabled = True @@ -1799,22 +1793,18 @@ Public Class dlgEditMovie End With 'Theme - If Not Master.eSettings.MovieThemeAnyEnabled Then + If Master.eSettings.MovieThemeAnyEnabled Then + If Not String.IsNullOrEmpty(tmpDBElement.Theme.LocalFilePath) OrElse Not String.IsNullOrEmpty(tmpDBElement.Theme.URLAudioStream) Then + LoadTheme(tmpDBElement.Theme) + End If + Else tcEdit.TabPages.Remove(tpTheme) End If - If Not String.IsNullOrEmpty(tmpDBElement.ThemePath) AndAlso tmpDBElement.ThemePath.Substring(0, 1) = ":" Then - MovieTheme.FromWeb(tmpDBElement.ThemePath.Substring(1, tmpDBElement.ThemePath.Length - 1)) - ThemeAddToPlayer(MovieTheme) - ElseIf Not String.IsNullOrEmpty(tmpDBElement.ThemePath) Then - MovieTheme.FromFile(tmpDBElement.ThemePath) - ThemeAddToPlayer(MovieTheme) - End If - 'Trailer If Master.eSettings.MovieTrailerAnyEnabled Then If Not String.IsNullOrEmpty(tmpDBElement.Trailer.LocalFilePath) OrElse Not String.IsNullOrEmpty(tmpDBElement.Trailer.URLVideoStream) Then - TrailerPlaylistAdd(tmpDBElement.Trailer) + LoadTrailer(tmpDBElement.Trailer) End If Else tcEdit.TabPages.Remove(tpTrailer) @@ -2394,14 +2384,6 @@ Public Class dlgEditMovie Next End If - If Not String.IsNullOrEmpty(MovieTheme.Extention) AndAlso Not MovieTheme.toRemove Then 'TODO: proper check, extention check is only a woraround - Dim tPath As String = MovieTheme.SaveAsMovieTheme(tmpDBElement) - tmpDBElement.ThemePath = tPath - Else - Themes.DeleteMovieTheme(tmpDBElement) - tmpDBElement.ThemePath = String.Empty - End If - If Path.GetExtension(tmpDBElement.Filename) = ".disc" Then Dim StubFile As String = tmpDBElement.Filename Dim Title As String = txtMediaStubTitle.Text @@ -2720,6 +2702,62 @@ Public Class dlgEditMovie End If End Sub + Private Sub btnLocalThemePlay_Click(sender As Object, e As EventArgs) Handles btnLocalThemePlay.Click + Try + Dim tPath As String = String.Empty + + If Not String.IsNullOrEmpty(txtLocalTheme.Text) Then + tPath = String.Concat("""", txtLocalTheme.Text, """") + End If + + If Not String.IsNullOrEmpty(tPath) Then + If Master.isWindows Then + Process.Start(tPath) + Else + Using Explorer As New Process + Explorer.StartInfo.FileName = "xdg-open" + Explorer.StartInfo.Arguments = tPath + Explorer.Start() + End Using + End If + End If + Catch + MessageBox.Show(Master.eLang.GetString(270, "The trailer could not be played. This could be due to an invalid URI or you do not have the proper player to play the trailer type."), Master.eLang.GetString(271, "Error Playing Trailer"), MessageBoxButtons.OK, MessageBoxIcon.Warning) + End Try + End Sub + + Private Sub btnLocalTrailerPlay_Click(sender As Object, e As EventArgs) Handles btnLocalTrailerPlay.Click + Try + Dim tPath As String = String.Empty + + If Not String.IsNullOrEmpty(txtLocalTrailer.Text) Then + tPath = String.Concat("""", txtLocalTrailer.Text, """") + End If + + If Not String.IsNullOrEmpty(tPath) Then + If Master.isWindows Then + Process.Start(tPath) + Else + Using Explorer As New Process + Explorer.StartInfo.FileName = "xdg-open" + Explorer.StartInfo.Arguments = tPath + Explorer.Start() + End Using + End If + End If + Catch + MessageBox.Show(Master.eLang.GetString(270, "The trailer could not be played. This could be due to an invalid URI or you do not have the proper player to play the trailer type."), Master.eLang.GetString(271, "Error Playing Trailer"), MessageBoxButtons.OK, MessageBoxIcon.Warning) + End Try + End Sub + + Private Sub txtLocalTheme_TextChanged(sender As Object, e As EventArgs) Handles txtLocalTheme.TextChanged + btnLocalThemePlay.Enabled = Not String.IsNullOrEmpty(txtLocalTheme.Text) + End Sub + + Private Sub txtLocalTrailer_TextChanged(sender As Object, e As EventArgs) Handles txtLocalTrailer.TextChanged + btnLocalTrailerPlay.Enabled = Not String.IsNullOrEmpty(txtLocalTrailer.Text) + End Sub + #End Region 'Methods #Region "Nested Types" diff --git a/EmberMediaManager/dlgEditTVShow.Designer.vb b/EmberMediaManager/dlgEditTVShow.Designer.vb index d7bbb05f4..9a893ed1f 100644 --- a/EmberMediaManager/dlgEditTVShow.Designer.vb +++ b/EmberMediaManager/dlgEditTVShow.Designer.vb @@ -29,7 +29,7 @@ Partial Class dlgEditTVShow Me.pbTopLogo = New System.Windows.Forms.PictureBox() Me.Cancel_Button = New System.Windows.Forms.Button() Me.OK_Button = New System.Windows.Forms.Button() - Me.ofdImage = New System.Windows.Forms.OpenFileDialog() + Me.ofdLocalFiles = New System.Windows.Forms.OpenFileDialog() Me.cbOrdering = New System.Windows.Forms.ComboBox() Me.lblOrdering = New System.Windows.Forms.Label() Me.cbEpisodeSorting = New System.Windows.Forms.ComboBox() @@ -141,6 +141,17 @@ Partial Class dlgEditTVShow Me.tcEdit = New System.Windows.Forms.TabControl() Me.lblLanguage = New System.Windows.Forms.Label() Me.cbSourceLanguage = New System.Windows.Forms.ComboBox() + Me.tpTheme = New System.Windows.Forms.TabPage() + Me.pnlThemePreview = New System.Windows.Forms.Panel() + Me.pnlThemePreviewNoPlayer = New System.Windows.Forms.Panel() + Me.tblThemePreviewNoPlayer = New System.Windows.Forms.TableLayoutPanel() + Me.lblThemePreviewNoPlayer = New System.Windows.Forms.Label() + Me.btnSetThemeDL = New System.Windows.Forms.Button() + Me.btnRemoveTheme = New System.Windows.Forms.Button() + Me.btnSetThemeScrape = New System.Windows.Forms.Button() + Me.btnSetThemeLocal = New System.Windows.Forms.Button() + Me.btnLocalThemePlay = New System.Windows.Forms.Button() + Me.txtLocalTheme = New System.Windows.Forms.TextBox() Me.pnlTop.SuspendLayout() CType(Me.pbTopLogo, System.ComponentModel.ISupportInitialize).BeginInit() Me.tpExtrafanarts.SuspendLayout() @@ -172,6 +183,10 @@ Partial Class dlgEditTVShow CType(Me.pbStar2, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.pbStar1, System.ComponentModel.ISupportInitialize).BeginInit() Me.tcEdit.SuspendLayout() + Me.tpTheme.SuspendLayout() + Me.pnlThemePreview.SuspendLayout() + Me.pnlThemePreviewNoPlayer.SuspendLayout() + Me.tblThemePreviewNoPlayer.SuspendLayout() Me.SuspendLayout() ' 'pnlTop @@ -224,8 +239,9 @@ Partial Class dlgEditTVShow ' 'Cancel_Button ' + Me.Cancel_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.Cancel_Button.Location = New System.Drawing.Point(781, 565) + Me.Cancel_Button.Location = New System.Drawing.Point(781, 592) Me.Cancel_Button.Name = "Cancel_Button" Me.Cancel_Button.Size = New System.Drawing.Size(67, 23) Me.Cancel_Button.TabIndex = 1 @@ -233,7 +249,8 @@ Partial Class dlgEditTVShow ' 'OK_Button ' - Me.OK_Button.Location = New System.Drawing.Point(708, 565) + Me.OK_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.OK_Button.Location = New System.Drawing.Point(708, 592) Me.OK_Button.Name = "OK_Button" Me.OK_Button.Size = New System.Drawing.Size(67, 23) Me.OK_Button.TabIndex = 0 @@ -241,18 +258,20 @@ Partial Class dlgEditTVShow ' 'cbOrdering ' + Me.cbOrdering.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.cbOrdering.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.cbOrdering.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(238, Byte)) Me.cbOrdering.FormattingEnabled = True - Me.cbOrdering.Location = New System.Drawing.Point(142, 565) + Me.cbOrdering.Location = New System.Drawing.Point(142, 592) Me.cbOrdering.Name = "cbOrdering" Me.cbOrdering.Size = New System.Drawing.Size(166, 21) Me.cbOrdering.TabIndex = 5 ' 'lblOrdering ' + Me.lblOrdering.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.lblOrdering.AutoSize = True - Me.lblOrdering.Location = New System.Drawing.Point(5, 570) + Me.lblOrdering.Location = New System.Drawing.Point(5, 597) Me.lblOrdering.Name = "lblOrdering" Me.lblOrdering.Size = New System.Drawing.Size(101, 13) Me.lblOrdering.TabIndex = 4 @@ -260,18 +279,20 @@ Partial Class dlgEditTVShow ' 'cbEpisodeSorting ' + Me.cbEpisodeSorting.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.cbEpisodeSorting.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.cbEpisodeSorting.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(238, Byte)) Me.cbEpisodeSorting.FormattingEnabled = True - Me.cbEpisodeSorting.Location = New System.Drawing.Point(142, 592) + Me.cbEpisodeSorting.Location = New System.Drawing.Point(142, 619) Me.cbEpisodeSorting.Name = "cbEpisodeSorting" Me.cbEpisodeSorting.Size = New System.Drawing.Size(166, 21) Me.cbEpisodeSorting.TabIndex = 5 ' 'lblEpisodeSorting ' + Me.lblEpisodeSorting.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.lblEpisodeSorting.AutoSize = True - Me.lblEpisodeSorting.Location = New System.Drawing.Point(5, 595) + Me.lblEpisodeSorting.Location = New System.Drawing.Point(5, 622) Me.lblEpisodeSorting.Name = "lblEpisodeSorting" Me.lblEpisodeSorting.Size = New System.Drawing.Size(103, 13) Me.lblEpisodeSorting.TabIndex = 4 @@ -288,7 +309,7 @@ Partial Class dlgEditTVShow Me.tpExtrafanarts.Controls.Add(Me.pbExtrafanarts) Me.tpExtrafanarts.Location = New System.Drawing.Point(4, 22) Me.tpExtrafanarts.Name = "tpExtrafanarts" - Me.tpExtrafanarts.Size = New System.Drawing.Size(836, 463) + Me.tpExtrafanarts.Size = New System.Drawing.Size(836, 490) Me.tpExtrafanarts.TabIndex = 12 Me.tpExtrafanarts.Text = "Extrafanarts" Me.tpExtrafanarts.UseVisualStyleBackColor = True @@ -376,7 +397,7 @@ Partial Class dlgEditTVShow Me.tpFanart.Controls.Add(Me.pbFanart) Me.tpFanart.Location = New System.Drawing.Point(4, 22) Me.tpFanart.Name = "tpFanart" - Me.tpFanart.Size = New System.Drawing.Size(836, 463) + Me.tpFanart.Size = New System.Drawing.Size(836, 490) Me.tpFanart.TabIndex = 2 Me.tpFanart.Text = "Fanart" Me.tpFanart.UseVisualStyleBackColor = True @@ -440,7 +461,7 @@ Partial Class dlgEditTVShow Me.btnSetFanartLocal.Name = "btnSetFanartLocal" Me.btnSetFanartLocal.Size = New System.Drawing.Size(96, 83) Me.btnSetFanartLocal.TabIndex = 1 - Me.btnSetFanartLocal.Text = "Local" + Me.btnSetFanartLocal.Text = "Local Browse" Me.btnSetFanartLocal.TextAlign = System.Drawing.ContentAlignment.BottomCenter Me.btnSetFanartLocal.UseVisualStyleBackColor = True ' @@ -465,7 +486,7 @@ Partial Class dlgEditTVShow Me.tpClearLogo.Controls.Add(Me.pbClearLogo) Me.tpClearLogo.Location = New System.Drawing.Point(4, 22) Me.tpClearLogo.Name = "tpClearLogo" - Me.tpClearLogo.Size = New System.Drawing.Size(836, 463) + Me.tpClearLogo.Size = New System.Drawing.Size(836, 490) Me.tpClearLogo.TabIndex = 11 Me.tpClearLogo.Text = "ClearLogo" Me.tpClearLogo.UseVisualStyleBackColor = True @@ -554,7 +575,7 @@ Partial Class dlgEditTVShow Me.tpClearArt.Controls.Add(Me.pbClearArt) Me.tpClearArt.Location = New System.Drawing.Point(4, 22) Me.tpClearArt.Name = "tpClearArt" - Me.tpClearArt.Size = New System.Drawing.Size(836, 463) + Me.tpClearArt.Size = New System.Drawing.Size(836, 490) Me.tpClearArt.TabIndex = 10 Me.tpClearArt.Text = "ClearArt" Me.tpClearArt.UseVisualStyleBackColor = True @@ -643,7 +664,7 @@ Partial Class dlgEditTVShow Me.tpCharacterArt.Controls.Add(Me.pbCharacterArt) Me.tpCharacterArt.Location = New System.Drawing.Point(4, 22) Me.tpCharacterArt.Name = "tpCharacterArt" - Me.tpCharacterArt.Size = New System.Drawing.Size(836, 463) + Me.tpCharacterArt.Size = New System.Drawing.Size(836, 490) Me.tpCharacterArt.TabIndex = 9 Me.tpCharacterArt.Text = "CharacterArt" Me.tpCharacterArt.UseVisualStyleBackColor = True @@ -732,7 +753,7 @@ Partial Class dlgEditTVShow Me.tpLandscape.Controls.Add(Me.pbLandscape) Me.tpLandscape.Location = New System.Drawing.Point(4, 22) Me.tpLandscape.Name = "tpLandscape" - Me.tpLandscape.Size = New System.Drawing.Size(836, 463) + Me.tpLandscape.Size = New System.Drawing.Size(836, 490) Me.tpLandscape.TabIndex = 7 Me.tpLandscape.Text = "Landscape" Me.tpLandscape.UseVisualStyleBackColor = True @@ -796,7 +817,7 @@ Partial Class dlgEditTVShow Me.btnSetLandscapeLocal.Name = "btnSetLandscapeLocal" Me.btnSetLandscapeLocal.Size = New System.Drawing.Size(96, 83) Me.btnSetLandscapeLocal.TabIndex = 7 - Me.btnSetLandscapeLocal.Text = "Local" + Me.btnSetLandscapeLocal.Text = "Local Browse" Me.btnSetLandscapeLocal.TextAlign = System.Drawing.ContentAlignment.BottomCenter Me.btnSetLandscapeLocal.UseVisualStyleBackColor = True ' @@ -821,7 +842,7 @@ Partial Class dlgEditTVShow Me.tpBanner.Controls.Add(Me.pbBanner) Me.tpBanner.Location = New System.Drawing.Point(4, 22) Me.tpBanner.Name = "tpBanner" - Me.tpBanner.Size = New System.Drawing.Size(836, 463) + Me.tpBanner.Size = New System.Drawing.Size(836, 490) Me.tpBanner.TabIndex = 4 Me.tpBanner.Text = "Banner" Me.tpBanner.UseVisualStyleBackColor = True @@ -885,7 +906,7 @@ Partial Class dlgEditTVShow Me.btnSetBannerLocal.Name = "btnSetBannerLocal" Me.btnSetBannerLocal.Size = New System.Drawing.Size(96, 83) Me.btnSetBannerLocal.TabIndex = 7 - Me.btnSetBannerLocal.Text = "Local" + Me.btnSetBannerLocal.Text = "Local Browse" Me.btnSetBannerLocal.TextAlign = System.Drawing.ContentAlignment.BottomCenter Me.btnSetBannerLocal.UseVisualStyleBackColor = True ' @@ -911,7 +932,7 @@ Partial Class dlgEditTVShow Me.tpPoster.Location = New System.Drawing.Point(4, 22) Me.tpPoster.Name = "tpPoster" Me.tpPoster.Padding = New System.Windows.Forms.Padding(3) - Me.tpPoster.Size = New System.Drawing.Size(836, 463) + Me.tpPoster.Size = New System.Drawing.Size(836, 490) Me.tpPoster.TabIndex = 1 Me.tpPoster.Text = "Poster" Me.tpPoster.UseVisualStyleBackColor = True @@ -975,7 +996,7 @@ Partial Class dlgEditTVShow Me.btnSetPosterLocal.Name = "btnSetPosterLocal" Me.btnSetPosterLocal.Size = New System.Drawing.Size(96, 83) Me.btnSetPosterLocal.TabIndex = 1 - Me.btnSetPosterLocal.Text = "Local" + Me.btnSetPosterLocal.Text = "Local Browse" Me.btnSetPosterLocal.TextAlign = System.Drawing.ContentAlignment.BottomCenter Me.btnSetPosterLocal.UseVisualStyleBackColor = True ' @@ -1037,7 +1058,7 @@ Partial Class dlgEditTVShow Me.tpDetails.Location = New System.Drawing.Point(4, 22) Me.tpDetails.Name = "tpDetails" Me.tpDetails.Padding = New System.Windows.Forms.Padding(3) - Me.tpDetails.Size = New System.Drawing.Size(836, 463) + Me.tpDetails.Size = New System.Drawing.Size(836, 490) Me.tpDetails.TabIndex = 0 Me.tpDetails.Text = "Details" Me.tpDetails.UseVisualStyleBackColor = True @@ -1455,17 +1476,19 @@ Partial Class dlgEditTVShow Me.tcEdit.Controls.Add(Me.tpClearLogo) Me.tcEdit.Controls.Add(Me.tpFanart) Me.tcEdit.Controls.Add(Me.tpExtrafanarts) + Me.tcEdit.Controls.Add(Me.tpTheme) Me.tcEdit.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.tcEdit.Location = New System.Drawing.Point(4, 70) Me.tcEdit.Name = "tcEdit" Me.tcEdit.SelectedIndex = 0 - Me.tcEdit.Size = New System.Drawing.Size(844, 489) + Me.tcEdit.Size = New System.Drawing.Size(844, 516) Me.tcEdit.TabIndex = 3 ' 'lblLanguage ' + Me.lblLanguage.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.lblLanguage.AutoSize = True - Me.lblLanguage.Location = New System.Drawing.Point(339, 570) + Me.lblLanguage.Location = New System.Drawing.Point(339, 597) Me.lblLanguage.Name = "lblLanguage" Me.lblLanguage.Size = New System.Drawing.Size(61, 13) Me.lblLanguage.TabIndex = 4 @@ -1473,20 +1496,154 @@ Partial Class dlgEditTVShow ' 'cbSourceLanguage ' + Me.cbSourceLanguage.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.cbSourceLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.cbSourceLanguage.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(238, Byte)) - Me.cbSourceLanguage.Location = New System.Drawing.Point(418, 565) + Me.cbSourceLanguage.Location = New System.Drawing.Point(418, 592) Me.cbSourceLanguage.Name = "cbSourceLanguage" Me.cbSourceLanguage.Size = New System.Drawing.Size(172, 21) Me.cbSourceLanguage.TabIndex = 9 ' + 'tpTheme + ' + Me.tpTheme.Controls.Add(Me.pnlThemePreview) + Me.tpTheme.Controls.Add(Me.btnSetThemeDL) + Me.tpTheme.Controls.Add(Me.btnRemoveTheme) + Me.tpTheme.Controls.Add(Me.btnSetThemeScrape) + Me.tpTheme.Controls.Add(Me.btnSetThemeLocal) + Me.tpTheme.Controls.Add(Me.btnLocalThemePlay) + Me.tpTheme.Controls.Add(Me.txtLocalTheme) + Me.tpTheme.Location = New System.Drawing.Point(4, 22) + Me.tpTheme.Name = "tpTheme" + Me.tpTheme.Padding = New System.Windows.Forms.Padding(3) + Me.tpTheme.Size = New System.Drawing.Size(836, 490) + Me.tpTheme.TabIndex = 13 + Me.tpTheme.Text = "Theme" + Me.tpTheme.UseVisualStyleBackColor = True + ' + 'pnlThemePreview + ' + Me.pnlThemePreview.BackColor = System.Drawing.Color.DimGray + Me.pnlThemePreview.Controls.Add(Me.pnlThemePreviewNoPlayer) + Me.pnlThemePreview.Location = New System.Drawing.Point(6, 6) + Me.pnlThemePreview.Name = "pnlThemePreview" + Me.pnlThemePreview.Size = New System.Drawing.Size(724, 440) + Me.pnlThemePreview.TabIndex = 61 + ' + 'pnlThemePreviewNoPlayer + ' + Me.pnlThemePreviewNoPlayer.BackColor = System.Drawing.Color.White + Me.pnlThemePreviewNoPlayer.Controls.Add(Me.tblThemePreviewNoPlayer) + Me.pnlThemePreviewNoPlayer.Location = New System.Drawing.Point(285, 203) + Me.pnlThemePreviewNoPlayer.Name = "pnlThemePreviewNoPlayer" + Me.pnlThemePreviewNoPlayer.Size = New System.Drawing.Size(242, 56) + Me.pnlThemePreviewNoPlayer.TabIndex = 0 + ' + 'tblThemePreviewNoPlayer + ' + Me.tblThemePreviewNoPlayer.AutoSize = True + Me.tblThemePreviewNoPlayer.ColumnCount = 1 + Me.tblThemePreviewNoPlayer.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.tblThemePreviewNoPlayer.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.tblThemePreviewNoPlayer.Controls.Add(Me.lblThemePreviewNoPlayer, 0, 0) + Me.tblThemePreviewNoPlayer.Dock = System.Windows.Forms.DockStyle.Fill + Me.tblThemePreviewNoPlayer.Location = New System.Drawing.Point(0, 0) + Me.tblThemePreviewNoPlayer.Name = "tblThemePreviewNoPlayer" + Me.tblThemePreviewNoPlayer.RowCount = 1 + Me.tblThemePreviewNoPlayer.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.tblThemePreviewNoPlayer.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 56.0!)) + Me.tblThemePreviewNoPlayer.Size = New System.Drawing.Size(242, 56) + Me.tblThemePreviewNoPlayer.TabIndex = 0 + ' + 'lblThemePreviewNoPlayer + ' + Me.lblThemePreviewNoPlayer.Anchor = System.Windows.Forms.AnchorStyles.None + Me.lblThemePreviewNoPlayer.AutoSize = True + Me.lblThemePreviewNoPlayer.Location = New System.Drawing.Point(52, 21) + Me.lblThemePreviewNoPlayer.Name = "lblThemePreviewNoPlayer" + Me.lblThemePreviewNoPlayer.Size = New System.Drawing.Size(137, 13) + Me.lblThemePreviewNoPlayer.TabIndex = 0 + Me.lblThemePreviewNoPlayer.Text = "no Media Player enabled" + ' + 'btnSetThemeDL + ' + Me.btnSetThemeDL.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(238, Byte)) + Me.btnSetThemeDL.Image = CType(resources.GetObject("btnSetThemeDL.Image"), System.Drawing.Image) + Me.btnSetThemeDL.ImageAlign = System.Drawing.ContentAlignment.TopCenter + Me.btnSetThemeDL.Location = New System.Drawing.Point(735, 180) + Me.btnSetThemeDL.Name = "btnSetThemeDL" + Me.btnSetThemeDL.Size = New System.Drawing.Size(96, 83) + Me.btnSetThemeDL.TabIndex = 59 + Me.btnSetThemeDL.Text = "Download" + Me.btnSetThemeDL.TextAlign = System.Drawing.ContentAlignment.BottomCenter + Me.btnSetThemeDL.UseVisualStyleBackColor = True + ' + 'btnRemoveTheme + ' + Me.btnRemoveTheme.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(238, Byte)) + Me.btnRemoveTheme.Image = CType(resources.GetObject("btnRemoveTheme.Image"), System.Drawing.Image) + Me.btnRemoveTheme.ImageAlign = System.Drawing.ContentAlignment.TopCenter + Me.btnRemoveTheme.Location = New System.Drawing.Point(735, 363) + Me.btnRemoveTheme.Name = "btnRemoveTheme" + Me.btnRemoveTheme.Size = New System.Drawing.Size(96, 83) + Me.btnRemoveTheme.TabIndex = 60 + Me.btnRemoveTheme.Text = "Remove" + Me.btnRemoveTheme.TextAlign = System.Drawing.ContentAlignment.BottomCenter + Me.btnRemoveTheme.UseVisualStyleBackColor = True + ' + 'btnSetThemeScrape + ' + Me.btnSetThemeScrape.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(238, Byte)) + Me.btnSetThemeScrape.Image = CType(resources.GetObject("btnSetThemeScrape.Image"), System.Drawing.Image) + Me.btnSetThemeScrape.ImageAlign = System.Drawing.ContentAlignment.TopCenter + Me.btnSetThemeScrape.Location = New System.Drawing.Point(735, 93) + Me.btnSetThemeScrape.Name = "btnSetThemeScrape" + Me.btnSetThemeScrape.Size = New System.Drawing.Size(96, 83) + Me.btnSetThemeScrape.TabIndex = 58 + Me.btnSetThemeScrape.Text = "Scrape" + Me.btnSetThemeScrape.TextAlign = System.Drawing.ContentAlignment.BottomCenter + Me.btnSetThemeScrape.UseVisualStyleBackColor = True + ' + 'btnSetThemeLocal + ' + Me.btnSetThemeLocal.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(238, Byte)) + Me.btnSetThemeLocal.Image = CType(resources.GetObject("btnSetThemeLocal.Image"), System.Drawing.Image) + Me.btnSetThemeLocal.ImageAlign = System.Drawing.ContentAlignment.TopCenter + Me.btnSetThemeLocal.Location = New System.Drawing.Point(735, 6) + Me.btnSetThemeLocal.Name = "btnSetThemeLocal" + Me.btnSetThemeLocal.Size = New System.Drawing.Size(96, 83) + Me.btnSetThemeLocal.TabIndex = 57 + Me.btnSetThemeLocal.Text = "Local Browse" + Me.btnSetThemeLocal.TextAlign = System.Drawing.ContentAlignment.BottomCenter + Me.btnSetThemeLocal.UseVisualStyleBackColor = True + ' + 'btnLocalThemePlay + ' + Me.btnLocalThemePlay.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnLocalThemePlay.Enabled = False + Me.btnLocalThemePlay.Image = Global.Ember_Media_Manager.My.Resources.Resources.Play_Icon + Me.btnLocalThemePlay.Location = New System.Drawing.Point(707, 452) + Me.btnLocalThemePlay.Name = "btnLocalThemePlay" + Me.btnLocalThemePlay.Size = New System.Drawing.Size(23, 22) + Me.btnLocalThemePlay.TabIndex = 63 + Me.btnLocalThemePlay.UseVisualStyleBackColor = True + ' + 'txtLocalTheme + ' + Me.txtLocalTheme.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(238, Byte)) + Me.txtLocalTheme.Location = New System.Drawing.Point(6, 452) + Me.txtLocalTheme.Name = "txtLocalTheme" + Me.txtLocalTheme.ReadOnly = True + Me.txtLocalTheme.Size = New System.Drawing.Size(695, 22) + Me.txtLocalTheme.TabIndex = 62 + ' 'dlgEditTVShow ' Me.AcceptButton = Me.OK_Button Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi Me.CancelButton = Me.Cancel_Button - Me.ClientSize = New System.Drawing.Size(853, 621) + Me.ClientSize = New System.Drawing.Size(853, 648) Me.Controls.Add(Me.cbSourceLanguage) Me.Controls.Add(Me.lblEpisodeSorting) Me.Controls.Add(Me.cbEpisodeSorting) @@ -1537,6 +1694,13 @@ Partial Class dlgEditTVShow CType(Me.pbStar2, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.pbStar1, System.ComponentModel.ISupportInitialize).EndInit() Me.tcEdit.ResumeLayout(False) + Me.tpTheme.ResumeLayout(False) + Me.tpTheme.PerformLayout() + Me.pnlThemePreview.ResumeLayout(False) + Me.pnlThemePreviewNoPlayer.ResumeLayout(False) + Me.pnlThemePreviewNoPlayer.PerformLayout() + Me.tblThemePreviewNoPlayer.ResumeLayout(False) + Me.tblThemePreviewNoPlayer.PerformLayout() Me.ResumeLayout(False) Me.PerformLayout() @@ -1547,7 +1711,7 @@ Partial Class dlgEditTVShow Friend WithEvents pbTopLogo As System.Windows.Forms.PictureBox Friend WithEvents Cancel_Button As System.Windows.Forms.Button Friend WithEvents OK_Button As System.Windows.Forms.Button - Friend WithEvents ofdImage As System.Windows.Forms.OpenFileDialog + Friend WithEvents ofdLocalFiles As System.Windows.Forms.OpenFileDialog Friend WithEvents cbOrdering As System.Windows.Forms.ComboBox Friend WithEvents lblOrdering As System.Windows.Forms.Label Friend WithEvents cbEpisodeSorting As System.Windows.Forms.ComboBox @@ -1659,5 +1823,15 @@ Partial Class dlgEditTVShow Friend WithEvents lblOriginalTitle As System.Windows.Forms.Label Friend WithEvents lblLanguage As System.Windows.Forms.Label Friend WithEvents cbSourceLanguage As System.Windows.Forms.ComboBox - + Friend WithEvents tpTheme As TabPage + Friend WithEvents pnlThemePreview As Panel + Friend WithEvents pnlThemePreviewNoPlayer As Panel + Friend WithEvents tblThemePreviewNoPlayer As TableLayoutPanel + Friend WithEvents lblThemePreviewNoPlayer As Label + Friend WithEvents btnSetThemeDL As Button + Friend WithEvents btnRemoveTheme As Button + Friend WithEvents btnSetThemeScrape As Button + Friend WithEvents btnSetThemeLocal As Button + Friend WithEvents btnLocalThemePlay As Button + Friend WithEvents txtLocalTheme As TextBox End Class diff --git a/EmberMediaManager/dlgEditTVShow.resx b/EmberMediaManager/dlgEditTVShow.resx index 54b5f5537..c7f87be3a 100644 --- a/EmberMediaManager/dlgEditTVShow.resx +++ b/EmberMediaManager/dlgEditTVShow.resx @@ -2027,6 +2027,253 @@ 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 + l+AV3x3A/g9kt3I5oWO4VQAAAABJRU5ErkJggg== + + + + + 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 diff --git a/EmberMediaManager/dlgEditTVShow.vb b/EmberMediaManager/dlgEditTVShow.vb index aeeba4675..0a131571e 100644 --- a/EmberMediaManager/dlgEditTVShow.vb +++ b/EmberMediaManager/dlgEditTVShow.vb @@ -279,6 +279,12 @@ Public Class dlgEditTVShow tmpDBElement.ImagesContainer.Poster = New MediaContainers.Image End Sub + Private Sub btnRemoveTheme_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemoveTheme.Click + 'ThemeStop() + tmpDBElement.Theme = New MediaContainers.Theme + txtLocalTheme.Text = String.Empty + End Sub + Private Sub btnSetBannerScrape_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSetBannerScrape.Click Dim aContainer As New MediaContainers.SearchResultsContainer Dim ScrapeModifiers As New Structures.ScrapeModifiers @@ -310,15 +316,15 @@ Public Class dlgEditTVShow Private Sub btnSetBannerLocal_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSetBannerLocal.Click Try - With ofdImage + With ofdLocalFiles .InitialDirectory = tmpDBElement.ShowPath .Filter = Master.eLang.GetString(497, "Images") + "|*.jpg;*.png" .FilterIndex = 0 End With - If ofdImage.ShowDialog() = DialogResult.OK Then + If ofdLocalFiles.ShowDialog() = DialogResult.OK Then Dim tImage As New MediaContainers.Image - tImage.ImageOriginal.LoadFromFile(ofdImage.FileName, True) + tImage.ImageOriginal.LoadFromFile(ofdLocalFiles.FileName, True) If tImage.ImageOriginal.Image IsNot Nothing Then tmpDBElement.ImagesContainer.Banner = tImage pbBanner.Image = tImage.ImageOriginal.Image @@ -384,15 +390,15 @@ Public Class dlgEditTVShow Private Sub btnSetCharacterArtLocal_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSetCharacterArtLocal.Click Try - With ofdImage + With ofdLocalFiles .InitialDirectory = tmpDBElement.ShowPath .Filter = Master.eLang.GetString(497, "Images") + "|*.jpg;*.png" .FilterIndex = 0 End With - If ofdImage.ShowDialog() = DialogResult.OK Then + If ofdLocalFiles.ShowDialog() = DialogResult.OK Then Dim tImage As New MediaContainers.Image - tImage.ImageOriginal.LoadFromFile(ofdImage.FileName, True) + tImage.ImageOriginal.LoadFromFile(ofdLocalFiles.FileName, True) If tImage.ImageOriginal.Image IsNot Nothing Then tmpDBElement.ImagesContainer.CharacterArt = tImage pbCharacterArt.Image = tImage.ImageOriginal.Image @@ -478,15 +484,15 @@ Public Class dlgEditTVShow Private Sub btnSetClearArtLocal_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSetClearArtLocal.Click Try - With ofdImage + With ofdLocalFiles .InitialDirectory = tmpDBElement.ShowPath .Filter = Master.eLang.GetString(497, "Images") + "|*.jpg;*.png" .FilterIndex = 0 End With - If ofdImage.ShowDialog() = DialogResult.OK Then + If ofdLocalFiles.ShowDialog() = DialogResult.OK Then Dim tImage As New MediaContainers.Image - tImage.ImageOriginal.LoadFromFile(ofdImage.FileName, True) + tImage.ImageOriginal.LoadFromFile(ofdLocalFiles.FileName, True) If tImage.ImageOriginal.Image IsNot Nothing Then tmpDBElement.ImagesContainer.ClearArt = tImage pbClearArt.Image = tImage.ImageOriginal.Image @@ -552,15 +558,15 @@ Public Class dlgEditTVShow Private Sub btnSetClearLogoLocal_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSetClearLogoLocal.Click Try - With ofdImage + With ofdLocalFiles .InitialDirectory = tmpDBElement.ShowPath .Filter = Master.eLang.GetString(497, "Images") + "|*.jpg;*.png" .FilterIndex = 0 End With - If ofdImage.ShowDialog() = DialogResult.OK Then + If ofdLocalFiles.ShowDialog() = DialogResult.OK Then Dim tImage As New MediaContainers.Image - tImage.ImageOriginal.LoadFromFile(ofdImage.FileName, True) + tImage.ImageOriginal.LoadFromFile(ofdLocalFiles.FileName, True) If tImage.ImageOriginal.Image IsNot Nothing Then tmpDBElement.ImagesContainer.ClearLogo = tImage pbClearLogo.Image = tImage.ImageOriginal.Image @@ -626,15 +632,15 @@ Public Class dlgEditTVShow Private Sub btnSetFanartLocal_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSetFanartLocal.Click Try - With ofdImage + With ofdLocalFiles .InitialDirectory = tmpDBElement.ShowPath .Filter = Master.eLang.GetString(497, "Images") + "|*.jpg;*.png" .FilterIndex = 4 End With - If ofdImage.ShowDialog() = DialogResult.OK Then + If ofdLocalFiles.ShowDialog() = DialogResult.OK Then Dim tImage As New MediaContainers.Image - tImage.ImageOriginal.LoadFromFile(ofdImage.FileName, True) + tImage.ImageOriginal.LoadFromFile(ofdLocalFiles.FileName, True) If tImage.ImageOriginal.Image IsNot Nothing Then tmpDBElement.ImagesContainer.Fanart = tImage pbFanart.Image = tImage.ImageOriginal.Image @@ -680,15 +686,15 @@ Public Class dlgEditTVShow Private Sub btnSetLandscapeLocal_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSetLandscapeLocal.Click Try - With ofdImage + With ofdLocalFiles .InitialDirectory = tmpDBElement.ShowPath .Filter = Master.eLang.GetString(497, "Images") + "|*.jpg;*.png" .FilterIndex = 0 End With - If ofdImage.ShowDialog() = DialogResult.OK Then + If ofdLocalFiles.ShowDialog() = DialogResult.OK Then Dim tImage As New MediaContainers.Image - tImage.ImageOriginal.LoadFromFile(ofdImage.FileName, True) + tImage.ImageOriginal.LoadFromFile(ofdLocalFiles.FileName, True) If tImage.ImageOriginal.Image IsNot Nothing Then tmpDBElement.ImagesContainer.Landscape = tImage pbLandscape.Image = tImage.ImageOriginal.Image @@ -774,15 +780,15 @@ Public Class dlgEditTVShow Private Sub btnSetPosterLocal_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSetPosterLocal.Click Try - With ofdImage + With ofdLocalFiles .InitialDirectory = tmpDBElement.ShowPath .Filter = Master.eLang.GetString(497, "Images") + "|*.jpg;*.png" .FilterIndex = 0 End With - If ofdImage.ShowDialog() = DialogResult.OK Then + If ofdLocalFiles.ShowDialog() = DialogResult.OK Then Dim tImage As New MediaContainers.Image - tImage.ImageOriginal.LoadFromFile(ofdImage.FileName, True) + tImage.ImageOriginal.LoadFromFile(ofdLocalFiles.FileName, True) If tImage.ImageOriginal.Image IsNot Nothing Then tmpDBElement.ImagesContainer.Poster = tImage pbPoster.Image = tImage.ImageOriginal.Image @@ -797,6 +803,39 @@ Public Class dlgEditTVShow End Try End Sub + Private Sub btnSetThemeScrape_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetThemeScrape.Click + Dim dThemeSelect As dlgThemeSelect + Dim tList As New List(Of MediaContainers.Theme) + + 'ThemeStop() + If Not ModulesManager.Instance.ScrapeTheme_Movie(tmpDBElement, Enums.ModifierType.MainTheme, tList) Then + If tList.Count > 0 Then + dThemeSelect = New dlgThemeSelect() + If dThemeSelect.ShowDialog(tmpDBElement, tList, True) = DialogResult.OK Then + tmpDBElement.Theme = dThemeSelect.Result + LoadTheme(tmpDBElement.Theme) + End If + Else + MessageBox.Show(Master.eLang.GetString(1163, "No Themes found"), String.Empty, MessageBoxButtons.OK, MessageBoxIcon.Information) + End If + End If + End Sub + + Private Sub btnSetThemeLocal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetThemeLocal.Click + 'ThemeStop() + With ofdLocalFiles + .InitialDirectory = tmpDBElement.ShowPath + .Filter = FileUtils.Common.GetOpenFileDialogFilter_Theme() + .FilterIndex = 0 + End With + + If ofdLocalFiles.ShowDialog() = DialogResult.OK Then + tmpDBElement.Theme = New MediaContainers.Theme With {.LocalFilePath = ofdLocalFiles.FileName} + tmpDBElement.Theme.LoadAndCache() + LoadTheme(tmpDBElement.Theme) + End If + End Sub + Private Sub BuildStars(ByVal sinRating As Single) Try 'f'in MS and them leaving control arrays out of VB.NET @@ -1292,6 +1331,15 @@ Public Class dlgEditTVShow tcEdit.TabPages.Remove(tpPoster) End If End With + + 'Theme + If Master.eSettings.TvShowThemeAnyEnabled Then + If Not String.IsNullOrEmpty(tmpDBElement.Theme.LocalFilePath) OrElse Not String.IsNullOrEmpty(tmpDBElement.Theme.URLAudioStream) Then + LoadTheme(tmpDBElement.Theme) + End If + Else + tcEdit.TabPages.Remove(tpTheme) + End If End Sub Private Sub lbGenre_ItemCheck(ByVal sender As Object, ByVal e As ItemCheckEventArgs) Handles clbGenre.ItemCheck @@ -1325,6 +1373,13 @@ Public Class dlgEditTVShow lbMPAA.Items.AddRange(APIXML.GetRatingList_TV) End Sub + Private Sub LoadTheme(ByVal Theme As MediaContainers.Theme) + txtLocalTheme.Text = + If(Theme.LocalFilePathSpecified, Theme.LocalFilePath, + If(Theme.URLAudioStreamSpecified, Theme.URLAudioStream, + If(Theme.URLWebsiteSpecified, Theme.URLWebsite, String.Empty))) + End Sub + Private Sub lvActors_ColumnClick(ByVal sender As Object, ByVal e As ColumnClickEventArgs) Handles lvActors.ColumnClick ' Determine if the clicked column is already the column that is ' being sorted. @@ -1890,6 +1945,7 @@ Public Class dlgEditTVShow btnSetFanartDL.Text = strDownload btnSetLandscapeDL.Text = strDownload btnSetPosterDL.Text = strDownload + btnSetThemeDL.Text = strDownload 'Loacal Browse Dim strLocalBrowse As String = Master.eLang.GetString(78, "Local Browse") @@ -1900,6 +1956,7 @@ Public Class dlgEditTVShow btnSetFanartLocal.Text = strLocalBrowse btnSetLandscapeLocal.Text = strLocalBrowse btnSetPosterLocal.Text = strLocalBrowse + btnSetThemeLocal.Text = strLocalBrowse 'Remove Dim strRemove As String = Master.eLang.GetString(30, "Remove") @@ -1910,6 +1967,7 @@ Public Class dlgEditTVShow btnRemoveFanart.Text = strRemove btnRemoveLandscape.Text = strRemove btnRemovePoster.Text = strRemove + btnRemoveTheme.Text = strRemove 'Scrape Dim strScrape As String = Master.eLang.GetString(79, "Scrape") @@ -1920,6 +1978,7 @@ Public Class dlgEditTVShow btnSetFanartScrape.Text = strScrape btnSetLandscapeScrape.Text = strScrape btnSetPosterScrape.Text = strScrape + btnSetThemeScrape.Text = strScrape Dim mTitle As String = tmpDBElement.TVShow.Title Dim sTitle As String = String.Concat(Master.eLang.GetString(663, "Edit Show"), If(String.IsNullOrEmpty(mTitle), String.Empty, String.Concat(" - ", mTitle))) @@ -1968,6 +2027,34 @@ Public Class dlgEditTVShow cbSourceLanguage.Items.AddRange((From lLang In APIXML.ScraperLanguagesXML.Languages Select lLang.Description).ToArray) End Sub + Private Sub btnLocalThemePlay_Click(sender As Object, e As EventArgs) Handles btnLocalThemePlay.Click + Try + Dim tPath As String = String.Empty + + If Not String.IsNullOrEmpty(txtLocalTheme.Text) Then + tPath = String.Concat("""", txtLocalTheme.Text, """") + End If + + If Not String.IsNullOrEmpty(tPath) Then + If Master.isWindows Then + Process.Start(tPath) + Else + Using Explorer As New Process + Explorer.StartInfo.FileName = "xdg-open" + Explorer.StartInfo.Arguments = tPath + Explorer.Start() + End Using + End If + End If + Catch + MessageBox.Show(Master.eLang.GetString(270, "The trailer could not be played. This could be due to an invalid URI or you do not have the proper player to play the trailer type."), Master.eLang.GetString(271, "Error Playing Trailer"), MessageBoxButtons.OK, MessageBoxIcon.Warning) + End Try + End Sub + + Private Sub txtLocalTheme_TextChanged(sender As Object, e As EventArgs) Handles txtLocalTheme.TextChanged + btnLocalThemePlay.Enabled = Not String.IsNullOrEmpty(txtLocalTheme.Text) + End Sub + #End Region 'Methods #Region "Nested Types" diff --git a/EmberMediaManager/dlgThemeSelect.Designer.vb b/EmberMediaManager/dlgThemeSelect.Designer.vb index b99c2c153..5922dc318 100644 --- a/EmberMediaManager/dlgThemeSelect.Designer.vb +++ b/EmberMediaManager/dlgThemeSelect.Designer.vb @@ -30,6 +30,15 @@ Partial Class dlgThemeSelect Me.pnlStatus = New System.Windows.Forms.Panel() Me.lblStatus = New System.Windows.Forms.Label() Me.pbStatus = New System.Windows.Forms.ProgressBar() + Me.colNumber = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.colURL = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.colWebURL = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.colDescription = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.colDuration = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.colSource = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.colScraper = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.colBitrate = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.colExtension = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) Me.gbSelectTheme.SuspendLayout() Me.pnlStatus.SuspendLayout() Me.SuspendLayout() @@ -65,6 +74,7 @@ Partial Class dlgThemeSelect ' 'lvThemes ' + Me.lvThemes.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.colNumber, Me.colURL, Me.colWebURL, Me.colDescription, Me.colBitrate, Me.colDuration, Me.colExtension, Me.colSource, Me.colScraper}) Me.lvThemes.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.lvThemes.Location = New System.Drawing.Point(6, 19) Me.lvThemes.Name = "lvThemes" @@ -105,6 +115,53 @@ Partial Class dlgThemeSelect Me.pbStatus.Style = System.Windows.Forms.ProgressBarStyle.Marquee Me.pbStatus.TabIndex = 1 ' + 'colNumber + ' + Me.colNumber.Text = "#" + Me.colNumber.Width = 20 + ' + 'colURL + ' + Me.colURL.Text = "URL" + Me.colURL.Width = 0 + ' + 'colWebURL + ' + Me.colWebURL.Text = "WebURL" + Me.colWebURL.Width = 0 + ' + 'colDescription + ' + Me.colDescription.Text = "Description" + Me.colDescription.Width = 180 + ' + 'colDuration + ' + Me.colDuration.DisplayIndex = 4 + Me.colDuration.Text = "Duration" + ' + 'colSource + ' + Me.colSource.DisplayIndex = 5 + Me.colSource.Text = "Source" + Me.colSource.Width = 80 + ' + 'colScraper + ' + Me.colScraper.DisplayIndex = 6 + Me.colScraper.Text = "Scraper" + Me.colScraper.Width = 80 + ' + 'colBitrate + ' + Me.colBitrate.DisplayIndex = 7 + Me.colBitrate.Text = "Bitrate" + ' + 'colExtension + ' + Me.colExtension.DisplayIndex = 8 + Me.colExtension.Text = "Extension" + ' 'dlgThemeSelect ' Me.AcceptButton = Me.OK_Button @@ -135,4 +192,13 @@ Partial Class dlgThemeSelect Friend WithEvents pnlStatus As System.Windows.Forms.Panel Friend WithEvents lblStatus As System.Windows.Forms.Label Friend WithEvents pbStatus As System.Windows.Forms.ProgressBar + Friend WithEvents colNumber As ColumnHeader + Friend WithEvents colURL As ColumnHeader + Friend WithEvents colWebURL As ColumnHeader + Friend WithEvents colDescription As ColumnHeader + Friend WithEvents colBitrate As ColumnHeader + Friend WithEvents colDuration As ColumnHeader + Friend WithEvents colExtension As ColumnHeader + Friend WithEvents colSource As ColumnHeader + Friend WithEvents colScraper As ColumnHeader End Class diff --git a/EmberMediaManager/dlgThemeSelect.vb b/EmberMediaManager/dlgThemeSelect.vb index d81a1347b..e4c9ad2b6 100644 --- a/EmberMediaManager/dlgThemeSelect.vb +++ b/EmberMediaManager/dlgThemeSelect.vb @@ -30,22 +30,25 @@ Public Class dlgThemeSelect Friend WithEvents bwDownloadTheme As New System.ComponentModel.BackgroundWorker + Private tmpDBElement As Database.DBElement + Private _result As New MediaContainers.Theme + Private nList As New List(Of MediaContainers.Theme) + Private _withPlayer As Boolean + Private _UrlList As List(Of Themes) Private tURL As String = String.Empty - Private sPath As String Private tTheme As New Themes - Private _results As New MediaContainers.Theme #End Region 'Fields #Region "Properties" - Public Property Results As MediaContainers.Theme + Public Property Result As MediaContainers.Theme Get - Return _results + Return _result End Get Set(value As MediaContainers.Theme) - _results = value + _result = value End Set End Property @@ -74,62 +77,62 @@ Public Class dlgThemeSelect Activate() End Sub - Private Sub CreateTable(ByVal tURLList As List(Of Themes)) + Public Overloads Function ShowDialog(ByRef tDBElement As Database.DBElement, ByRef tURLList As List(Of MediaContainers.Theme), Optional ByVal WithPlayer As Boolean = False) As DialogResult + _withPlayer = WithPlayer + 'set ListView lvThemes.MultiSelect = False lvThemes.FullRowSelect = True lvThemes.HideSelection = False - lvThemes.Columns.Add("#", -1, HorizontalAlignment.Right) - lvThemes.Columns.Add("URL", 0, HorizontalAlignment.Left) - lvThemes.Columns.Add("Title", -2, HorizontalAlignment.Left) - lvThemes.Columns.Add(Master.eLang.GetString(979, "Description"), -2, HorizontalAlignment.Left) - lvThemes.Columns.Add("Length", -2, HorizontalAlignment.Left) - lvThemes.Columns.Add("Bitrate", -2, HorizontalAlignment.Left) - lvThemes.Columns.Add("WebURL", 0, HorizontalAlignment.Left) - - 'Me.txtYouTubeSearch.Text = DBMovie.Movie.Title & " Trailer" - - _UrlList = tURLList - Dim ID As Integer = 1 - Dim str(7) As String - For Each aUrl In _UrlList + + tmpDBElement = tDBElement + + AddThemesToList(tURLList) + + pnlStatus.Visible = False + SetControlsEnabled(True) + 'SetEnabled() + If lvThemes.Items.Count = 1 Then + lvThemes.Select() + lvThemes.Items(0).Selected = True + End If + + Return ShowDialog() + End Function + + Protected Overrides Sub Finalize() + MyBase.Finalize() + End Sub + + Private Sub AddThemesToList(ByVal tList As List(Of MediaContainers.Theme)) + Dim ID As Integer = lvThemes.Items.Count + 1 + Dim nList As List(Of MediaContainers.Theme) = tList + + Dim str(9) As String + For Each aUrl In nList Dim itm As ListViewItem str(0) = ID.ToString - str(1) = aUrl.URL.ToString - str(2) = aUrl.Title.ToString + str(1) = aUrl.URLAudioStream.ToString + str(2) = aUrl.URLWebsite.ToString str(3) = aUrl.Description.ToString str(4) = aUrl.Duration.ToString str(5) = aUrl.Bitrate.ToString - str(6) = aUrl.WebURL.ToString + str(6) = aUrl.ThemeOriginal.Extention.ToString + str(7) = aUrl.Source.ToString + str(8) = aUrl.Scraper.ToString itm = New ListViewItem(str) lvThemes.Items.Add(itm) ID = ID + 1 Next - 'Me.pnlStatus.Visible = False - lvThemes.Enabled = True - 'Me.txtYouTube.Enabled = True - 'Me.txtManual.Enabled = True - 'Me.btnBrowse.Enabled = True - 'Me.SetEnabled(False) - If _UrlList.Count = 1 Then - lvThemes.Select() - lvThemes.Items(0).Selected = True - End If End Sub - Public Overloads Function ShowDialog(ByRef DBElement As Database.DBElement, ByRef tURLList As List(Of Themes)) As DialogResult - CreateTable(tURLList) - - Return ShowDialog() - End Function - Private Sub lvThemes_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lvThemes.DoubleClick If Master.isWindows Then - Process.Start(lvThemes.SelectedItems(0).SubItems(6).Text.ToString) + Process.Start(lvThemes.SelectedItems(0).SubItems(2).Text.ToString) Else Using Explorer As New Process Explorer.StartInfo.FileName = "xdg-open" - Explorer.StartInfo.Arguments = lvThemes.SelectedItems(0).SubItems(6).Text.ToString + Explorer.StartInfo.Arguments = lvThemes.SelectedItems(0).SubItems(2).Text.ToString Explorer.Start() End Using End If @@ -146,16 +149,15 @@ Public Class dlgThemeSelect Application.DoEvents() If lvThemes.SelectedItems.Count = 1 Then - Dim selID As Integer = CInt(lvThemes.SelectedItems(0).SubItems(0).Text) - 1 - tTheme = _UrlList.Item(selID) - + Dim SelectedTheme As New MediaContainers.Theme With { + .URLAudioStream = lvThemes.SelectedItems(0).SubItems(1).Text.ToString, + .URLWebsite = lvThemes.SelectedItems(0).SubItems(2).Text.ToString} bwDownloadTheme = New System.ComponentModel.BackgroundWorker bwDownloadTheme.WorkerReportsProgress = True bwDownloadTheme.WorkerSupportsCancellation = True - bwDownloadTheme.RunWorkerAsync(New Arguments With {.Parameter = tTheme, .bType = True}) + bwDownloadTheme.RunWorkerAsync(New Arguments With {.Parameter = SelectedTheme, .bType = True}) Else DialogResult = DialogResult.Cancel - Close() End If End Sub @@ -170,8 +172,8 @@ Public Class dlgThemeSelect Private Sub bwDownloadTheme_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bwDownloadTheme.DoWork Dim Args As Arguments = DirectCast(e.Argument, Arguments) Try - Results.WebTheme.FromWeb(Args.Parameter.URL, Args.Parameter.WebURL) - Results.URL = Args.Parameter.URL + Result.ThemeOriginal.LoadFromWeb(Args.Parameter.URLAudioStream, Args.Parameter.URLWebsite) + Result.URLAudioStream = Args.Parameter.URLAudioStream Catch ex As Exception logger.Error(ex, New StackFrame().GetMethod().Name) End Try @@ -219,7 +221,7 @@ Public Class dlgThemeSelect End While DialogResult = DialogResult.Cancel - Me.Results = Nothing + Me.Result = Nothing End Sub #End Region 'Methods @@ -231,7 +233,7 @@ Public Class dlgThemeSelect #Region "Fields" Dim bType As Boolean - Dim Parameter As Themes + Dim Parameter As MediaContainers.Theme #End Region 'Fields diff --git a/EmberMediaManager/dlgTrailerSelect.vb b/EmberMediaManager/dlgTrailerSelect.vb index f3231e614..dd267228e 100644 --- a/EmberMediaManager/dlgTrailerSelect.vb +++ b/EmberMediaManager/dlgTrailerSelect.vb @@ -37,7 +37,6 @@ Public Class dlgTrailerSelect Private _result As New MediaContainers.Trailer Private tArray As New List(Of String) Private tURL As String = String.Empty - Private sPath As String Private nList As New List(Of MediaContainers.Trailer) Private _noDownload As Boolean Private _withPlayer As Boolean @@ -100,7 +99,6 @@ Public Class dlgTrailerSelect txtYouTubeSearch.Text = String.Concat(DBMovie.Movie.Title, " ", Master.eSettings.MovieTrailerDefaultSearch) tmpDBElement = DBMovie - sPath = DBMovie.Filename AddTrailersToList(tURLList) @@ -280,7 +278,7 @@ Public Class dlgTrailerSelect Try With ofdTrailer .InitialDirectory = Directory.GetParent(tmpDBElement.Filename).FullName - .Filter = String.Concat("Supported Trailer Formats|*", Functions.ListToStringWithSeparator(Master.eSettings.FileSystemValidExts.ToArray(), ";*")) + .Filter = FileUtils.Common.GetOpenFileDialogFilter_Video(Master.eLang.GetString(1195, "Trailers")) .FilterIndex = 0 End With diff --git a/EmberMediaManager/frmMain.vb b/EmberMediaManager/frmMain.vb index 8bb1a6937..e63e419cf 100644 --- a/EmberMediaManager/frmMain.vb +++ b/EmberMediaManager/frmMain.vb @@ -1934,32 +1934,20 @@ Public Class frmMain 'Theme If tScrapeItem.ScrapeModifiers.MainTheme Then bwMovieScraper.ReportProgress(-3, String.Concat(Master.eLang.GetString(266, "Scraping Themes"), ":")) - If Not (Args.ScrapeType = Enums.ScrapeType.SingleScrape) Then - tURL = String.Empty - If Theme.WebTheme.IsAllowedToDownload(DBScrapeMovie) Then - If Not ModulesManager.Instance.ScrapeTheme_Movie(DBScrapeMovie, tUrlList) Then - If tUrlList.Count > 0 Then - If Not (Args.ScrapeType = Enums.ScrapeType.SingleScrape) Then - Theme.WebTheme.FromWeb(tUrlList.Item(0).URL, tUrlList.Item(0).WebURL) - If Theme.WebTheme IsNot Nothing Then 'TODO: fix check - tURL = Theme.WebTheme.SaveAsMovieTheme(DBScrapeMovie) - If Not String.IsNullOrEmpty(tURL) Then - DBScrapeMovie.ThemePath = tURL - End If - End If - 'ElseIf Args.scrapeType = Enums.ScrapeType.SingleScrape OrElse Args.scrapeType = Enums.ScrapeType.FullAsk OrElse Args.scrapeType = Enums.ScrapeType.NewAsk OrElse Args.scrapeType = Enums.ScrapeType.MarkAsk OrElse Args.scrapeType = Enums.ScrapeType.UpdateAsk Then - ' If Args.scrapeType = Enums.ScrapeType.FullAsk OrElse Args.scrapeType = Enums.ScrapeType.NewAsk OrElse Args.scrapeType = Enums.ScrapeType.MarkAsk OrElse Args.scrapeType = Enums.ScrapeType.UpdateAsk Then - ' MsgBox(Master.eLang.GetString(930, "Trailer of your preferred size could not be found. Please choose another."), MsgBoxStyle.Information, Master.eLang.GetString(929, "No Preferred Size:")) - ' End If - ' Using dThemeSelect As New dlgThemeSelect() - ' tURL = dThemeSelect.ShowDialog(DBScrapeMovie, tUrlList) - ' If Not String.IsNullOrEmpty(tURL) Then - ' DBScrapeMovie.ThemePath = tURL - ' MovieScraperEvent(Enums.MovieScraperEventType.ThemeItem, DBScrapeMovie.ThemePath ) - ' End If - ' End Using - End If + Dim SearchResults As New List(Of MediaContainers.Theme) + If Not ModulesManager.Instance.ScrapeTheme_Movie(DBScrapeMovie, Enums.ModifierType.MainTheme, SearchResults) Then + If Args.ScrapeType = Enums.ScrapeType.SingleScrape Then + Using dThemeSelect As New dlgThemeSelect + If dThemeSelect.ShowDialog(DBScrapeMovie, SearchResults, AdvancedSettings.GetBooleanSetting("UseAsVideoPlayer", False, "generic.EmberCore.VLCPlayer")) = DialogResult.OK Then + DBScrapeMovie.Theme = dThemeSelect.Result End If + End Using + + 'autoscraping + ElseIf Not Args.ScrapeType = Enums.ScrapeType.SingleScrape Then + Dim newPreferredTheme As New MediaContainers.Theme + If Themes.GetPreferredMovieTheme(SearchResults, newPreferredTheme) Then + DBScrapeMovie.Theme = newPreferredTheme End If End If End If @@ -2220,7 +2208,7 @@ Public Class frmMain logger.Trace(String.Format("[TVScraper] [Start] TV Shows Count [{0}]", Args.ScrapeList.Count.ToString)) For Each tScrapeItem As ScrapeItem In Args.ScrapeList - Dim ShowTheme As New MediaContainers.Theme + Dim Theme As New MediaContainers.Theme Dim tURL As String = String.Empty Dim tUrlList As New List(Of Themes) Dim OldListTitle As String = String.Empty @@ -2291,6 +2279,23 @@ Public Class frmMain 'Theme If tScrapeItem.ScrapeModifiers.MainTheme Then bwTVScraper.ReportProgress(-3, String.Concat(Master.eLang.GetString(266, "Scraping Themes"), ":")) + Dim SearchResults As New List(Of MediaContainers.Theme) + If Not ModulesManager.Instance.ScrapeTheme_TVShow(DBScrapeShow, Enums.ModifierType.MainTheme, SearchResults) Then + If Args.ScrapeType = Enums.ScrapeType.SingleScrape Then + Using dThemeSelect As New dlgThemeSelect + If dThemeSelect.ShowDialog(DBScrapeShow, SearchResults, AdvancedSettings.GetBooleanSetting("UseAsVideoPlayer", False, "generic.EmberCore.VLCPlayer")) = DialogResult.OK Then + DBScrapeShow.Theme = dThemeSelect.Result + End If + End Using + + 'autoscraping + ElseIf Not Args.ScrapeType = Enums.ScrapeType.SingleScrape Then + Dim newPreferredTheme As New MediaContainers.Theme + If Themes.GetPreferredTVShowTheme(SearchResults, newPreferredTheme) Then + DBScrapeShow.Theme = newPreferredTheme + End If + End If + End If End If If bwTVScraper.CancellationPending Then Exit For