/Forms/Form1/Form1.vb

# · Visual Basic · 18371 lines · 17282 code · 828 blank · 261 comment · 23 complexity · 40a1bfda00cc6a098c9293f61b2d26d8 MD5 · raw file

  1. Option Explicit On
  2. Imports System.Net
  3. Imports System.IO
  4. Imports System.Text
  5. Imports System.Text.RegularExpressions
  6. Imports System.Threading
  7. Imports System.Runtime.InteropServices
  8. Imports System.Globalization
  9. Imports Microsoft.Win32
  10. Imports Media_Companion.Pref
  11. Imports System.Xml
  12. Imports System.Reflection
  13. Imports System.Windows.Forms
  14. Imports System.ComponentModel
  15. Imports System.Linq
  16. Imports XBMC.JsonRpc
  17. #Const SilentErrorScream = False
  18. #Const Refocus = False
  19. Public Class Form1
  20. Const HOME_PAGE = "http://mediacompanion.codeplex.com"
  21. Const TMDB_SITE = "www.themoviedb.org/"
  22. Const TMDB_SET_URL = TMDB_SITE & "collection/"
  23. Const TMDB_MOVIE_URL = TMDB_SITE & "movie/"
  24. Const NFO_INDEX As Integer = 7
  25. Public Const XBMC_Controller_full_log_file As String = "XBMC-Controller-full-log-file.txt"
  26. Public Const XBMC_Controller_brief_log_file As String = "XBMC-Controller-brief-log-file.txt"
  27. Public Const MCToolsCommands As Integer = 5 ' increment when adding MC functions to ToolsToolStripMenuItem
  28. Public Dim WithEvents BckWrkScnMovies As BackgroundWorker = New BackgroundWorker
  29. Public Dim WithEvents BckWrkCheckNewVersion As BackgroundWorker = New BackgroundWorker
  30. Public Dim WithEvents BckWrkXbmcController As BackgroundWorker = New BackgroundWorker
  31. Public Dim WithEvents Bw As BackgroundWorker = New BackgroundWorker
  32. Public Dim WithEvents ImgBw As BackgroundWorker = New BackgroundWorker
  33. Property BWs As New List(Of BackgroundWorker)
  34. Property NumActiveThreads As Integer
  35. Shared Public XbmcControllerQ As PriorityQueue = New PriorityQueue
  36. Shared Public XbmcControllerBufferQ As PriorityQueue = New PriorityQueue
  37. Shared Public Property MC_Only_Movies As List(Of ComboList)
  38. Public Shared Property MaxXbmcMovies As List(Of MaxXbmcMovie)
  39. Shared Public MyCulture As New System.Globalization.CultureInfo("en-US")
  40. Private Declare Function GetActiveWindow Lib "user32" Alias "GetActiveWindow" () As IntPtr
  41. Public Property XBMC_Controller_LogLastShownDt As Date = Now
  42. Private XBMC_Link_ErrorLog_Timer As Timers.Timer = New Timers.Timer()
  43. Private XBMC_Link_Idle_Timer As Timers.Timer = New Timers.Timer()
  44. Private XBMC_Link_Check_Timer As Timers.Timer = New Timers.Timer()
  45. Declare Function AttachConsole Lib "kernel32.dll" (ByVal dwProcessId As Int32) As Boolean
  46. Private WithEvents Tmr As New Windows.Forms.Timer With {.Interval = 200}
  47. Private fb As New FolderBrowserDialog
  48. Private Const WM_USER As Integer = &H400
  49. Private Const BFFM_SETEXPANDED As Integer = WM_USER + 106
  50. <DllImport("user32.dll", EntryPoint:="SendMessageW")> _
  51. Private Shared Function SendMessageW(ByVal hWnd As IntPtr, ByVal msg As UInteger, ByVal wParam As Integer, <MarshalAs(UnmanagedType.LPWStr)> ByVal lParam As String) As IntPtr
  52. End Function
  53. <DllImport("user32.dll", EntryPoint:="FindWindowW")> _
  54. Private Shared Function FindWindowW(<MarshalAs(UnmanagedType.LPWStr)> ByVal lpClassName As String, <MarshalAs(UnmanagedType.LPWStr)> ByVal lpWindowName As String) As IntPtr
  55. End Function
  56. Shared ReadOnly Property Link_TotalQCount
  57. Get
  58. Return XbmcControllerQ.Count + XbmcControllerBufferQ.Count
  59. End Get
  60. End Property
  61. Shared ReadOnly Property MC_Only_Movies_Nfos As List(Of String)
  62. Get
  63. If IsNothing(MC_Only_Movies) Then Return New List(Of String)
  64. Return (From M In MC_Only_Movies Select M.fullpathandfilename).ToList
  65. End Get
  66. End Property
  67. ReadOnly Shared Property NumOfScreens As Integer
  68. Get
  69. Return System.Windows.Forms.Screen.AllScreens.GetUpperBound(0)
  70. End Get
  71. End Property
  72. ReadOnly Shared Property CurrentScreen As Integer
  73. Get
  74. Try
  75. Dim display As String = System.Windows.Forms.Screen.FromControl(Form1).DeviceName
  76. Dim m As String = Regex.Match(display, "DISPLAY[0-9]").Value
  77. Return ToInt(m.Substring(m.Length - 1)) - 1
  78. Catch
  79. Return 0
  80. End Try
  81. End Get
  82. End Property
  83. Property frmXBMC_Progress As frmXBMC_Progress = New frmXBMC_Progress
  84. #Region "Movie scraping related objects"
  85. Public WithEvents oMovies As New Movies
  86. Public filteredList As New List(Of ComboList)
  87. Public rescrapeList As New RescrapeList
  88. Public workingMovieDetails As FullMovieDetails
  89. Public _rescrapeList As New RescrapeSpecificParams
  90. Public ChangeMovieId = ""
  91. Public droppedItems As New List(Of String)
  92. Public ControlsToDisableDuringMovieScrape As IEnumerable(Of Control)
  93. Public Shared blnAbortFileDownload As Boolean
  94. Public Shared ReadOnly countLock = New Object
  95. Public ScraperErrorDetected As Boolean
  96. #End Region 'Movie scraping objects
  97. Enum ProgramState
  98. ResettingFilters
  99. UpdatingFilteredList
  100. ResizingSplitterPanel
  101. MovieControlsDisabled
  102. Other
  103. End Enum
  104. Shared Public ProgState As ProgramState=ProgramState.Other
  105. Public StateBefore As ProgramState=ProgramState.Other
  106. Public DataDirty As Boolean
  107. Public _yield As Boolean
  108. Public LastMovieDisplayed As String=""
  109. Public MainFormLoadedStatus As Boolean = False
  110. Public tvRefreshNeeded As Boolean = True
  111. Public messbox As New frmMessageBox("blank", "", "")
  112. Public startup As Boolean = True
  113. Public SeriesXmlPath As String
  114. Public scraperFunction2 As New ScraperFunctions
  115. Public globalThreadStop As Boolean = False
  116. Public nfoFunction As New WorkingWithNfoFiles
  117. Public mediaInfoExp As New MediaInfoExport
  118. Shared Public langarray(300, 3) As String
  119. Public screen As Screen
  120. Public Shared genrelist As New List(Of String)
  121. Public Data_GridViewMovie As Data_GridViewMovie
  122. Public DataGridViewBindingSource As New BindingSource
  123. Public homemovielist As New List(Of str_BasicHomeMovie)
  124. Public WorkingHomeMovie As New HomeMovieDetails
  125. Public workingMovie As New ComboList
  126. Public tvBatchList As New str_TvShowBatchWizard(SetDefaults)
  127. Public moviefolderschanged As Boolean = False
  128. Public tvfolderschanged As Boolean = False
  129. Public hmfolderschanged As Boolean = False
  130. Public customTvfolderschanged As Boolean = False
  131. Public scraperLog As String = ""
  132. Public NewTagList As New List(Of String)
  133. Public MovieSearchEngine As String = "imdb"
  134. Dim mov_TableColumnName As String = ""
  135. Dim mov_TableRowNum As Integer = -1
  136. Dim MovFanartToggle As Boolean = False
  137. Dim MovPosterToggle As Boolean = False
  138. Private keypresstimer As Timers.Timer = New Timers.Timer()
  139. Private statusstripclear As Timers.Timer = New Timers.Timer()
  140. Private MovieKeyPress As String = ""
  141. Public cropMode As String = "movieposter"
  142. Dim WithEvents bigPictureBox As PictureBox
  143. Dim WithEvents fanartBoxes As PictureBox
  144. Dim WithEvents fanartCheckBoxes As RadioButton
  145. Dim WithEvents posterPicBoxes As PictureBox
  146. Dim WithEvents posterCheckBoxes As RadioButton
  147. Dim WithEvents posterLabels As Label
  148. Dim WithEvents resLabel As Label
  149. Dim WithEvents tvFanartBoxes As PictureBox
  150. Dim WithEvents tvFanartCheckBoxes As RadioButton
  151. Dim WithEvents resolutionLabels As Label
  152. Dim newTvFolders As New List(Of String)
  153. Dim tvprogresstxt As String = ""
  154. Dim maximised As Boolean = False
  155. Dim tootip5 As New ToolTip
  156. Dim MovpictureList As New List(Of PictureBox)
  157. Dim tvpictureList As New List(Of PictureBox)
  158. Dim screenshotTab As TabPage
  159. Dim filterOverride As Boolean = False
  160. Dim bigPanel As Panel
  161. Dim realTvPaths As New List(Of String)
  162. Public Shared profileStruct As New Profiles
  163. Dim frmSplash As New frmSplashscreen
  164. Dim frmSplash2 As New frmProgressScreen
  165. Public Shared multimonitor As Boolean = False
  166. Dim progressmode As Boolean
  167. Dim scrapeAndQuit As Boolean = False
  168. Dim refreshAndQuit As Boolean = False
  169. Dim sandq As Integer = 0
  170. Dim mouseDelta As Integer = 0
  171. Dim resLabels As Label
  172. Dim votelabels As Label
  173. Dim fanartArray As New List(Of McImage)
  174. Dim cropString As String
  175. Dim thumbedItsMade As Boolean = False
  176. Dim posterArray As New List(Of McImage)
  177. Dim pageCount As Integer = 0
  178. Dim currentPage As Integer = 0
  179. Dim actorflag As Boolean = False
  180. Dim listOfTvFanarts As New List(Of str_FanartList)
  181. Dim tableSets As New List(Of str_TableItems)
  182. Dim relativeFolderList As New List(Of str_RelativeFileList)
  183. Dim templanguage As String
  184. Dim WithEvents tvposterpicboxes As PictureBox
  185. Dim WithEvents tvpostercheckboxes As RadioButton
  186. Dim WithEvents tvposterlabels As Label
  187. Dim WithEvents tvreslabel As Label
  188. Dim tvposterpage As Integer = 1
  189. Public Shared WallPicWidth As Integer = 165
  190. Public Shared WallPicHeight As Integer = Math.Floor((WallPicWidth/3)*4)
  191. Dim MovMaxWallCount As Integer = 0
  192. Dim tvMaxWallCount As Integer = 0
  193. Dim moviecount_bak As Integer = 0
  194. Dim tvCount_bak As Integer = 0
  195. Dim lastSort As String = ""
  196. Dim lastinvert As String = ""
  197. Public displayRuntimeScraper As Boolean = True
  198. Dim tv_IMDbID_detected As Boolean = False
  199. Dim tv_IMDbID_warned As Boolean = False
  200. Dim tv_IMDbID_detectedMsg As String = String.Format("Media Companion has detected one or more TV Shows has an incorrect ID.{0}", vbCrLf) & _
  201. String.Format("To rectify, please select the following:{0}", vbCrLf) & _
  202. String.Format(" 1. TV Preferences -> Fix NFO id during cache refresh{0}", vbCrLf) & _
  203. String.Format(" 2. TV Shows -> Refresh Shows{0}", vbCrLf) & _
  204. String.Format("(This will only be reported once per session)", vbCrLf)
  205. Dim TVSearchALL As Boolean = False
  206. Private ClickedControl As String
  207. Private tvCurrentTabIndex As Integer = 0
  208. Private currentTabIndex As Integer = 0
  209. Private homeTabIndex As Integer = 0
  210. Private CustTvIndex As Integer = 0
  211. Public totalfilesize As Long = 0
  212. Public listoffilestomove As New List(Of String)
  213. Dim currenttitle As String
  214. Public singleshow As Boolean = False
  215. Public showslist As Object
  216. Public DGVMoviesColName As String = ""
  217. Dim CloseMC As Boolean = False
  218. Public Imageloading As Boolean = False
  219. Dim MoviesFiltersResizeCalled As Boolean = False
  220. Private tb_tagtxt_changed As Boolean = False
  221. 'TODO: (Form1_Load) Need to refactor
  222. #Region "Form1 Events"
  223. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  224. PictureBoxAssignedMoviePoster.AllowDrop = True
  225. Try
  226. Pref.movie_filters.FilterPanel = SplitContainer5.Panel2
  227. Label73.Text = ""
  228. BckWrkScnMovies.WorkerReportsProgress = True
  229. BckWrkScnMovies.WorkerSupportsCancellation = True
  230. ImgBw.WorkerReportsProgress = True
  231. ImgBw.WorkerSupportsCancellation = True
  232. oMovies.Bw = BckWrkScnMovies
  233. For I = 0 To 20
  234. Common.Tasks.Add(New Tasks.BlankTask())
  235. Next
  236. Pref.applicationPath = Application.StartupPath
  237. Utilities.applicationPath = Application.StartupPath
  238. SeriesXmlPath = IO.Path.Combine(Utilities.applicationPath, "SeriesXml\")
  239. Utilities.EnsureFolderExists(Utilities.PosterCachePath)
  240. Utilities.EnsureFolderExists(Utilities.MissingPath)
  241. Utilities.EnsureFolderExists(Utilities.CacheFolderPath)
  242. If Not Utilities.GetFrameworkVersions().IndexOf("4.0") Then
  243. Dim RequiredNetURL As String = "http://www.microsoft.com/download/en/details.aspx?id=17718"
  244. If MsgBox("The Client version is available through Windows Updates." & vbCrLf & _
  245. "The Full version, while not required, is available from:" & vbCrLf & _
  246. RequiredNetURL & vbCrLf & vbCrLf & _
  247. "Do you wish to download the Full version?", _
  248. MsgBoxStyle.YesNo, "MC Requires .Net 4.0.") = MsgBoxResult.Yes Then
  249. OpenUrl(RequiredNetURL)
  250. End
  251. End If
  252. End If
  253. ForegroundWorkTimer.Interval = 500
  254. #If Not Debug Then
  255. AddHandler ForegroundWorkTimer.Tick, AddressOf ForegroundWorkPumper
  256. #End If
  257. Dim asm As Assembly = Assembly.GetExecutingAssembly
  258. Dim InternalResourceNames() As String = asm.GetManifestResourceNames
  259. For Each Temp In InternalResourceNames
  260. Dim Temp1 As ManifestResourceInfo = asm.GetManifestResourceInfo(Temp)
  261. Next
  262. TvTreeview.Sort()
  263. For Each arg As String In Environment.GetCommandLineArgs().Skip(1)
  264. Select Case arg.ToLower
  265. Case "sq"
  266. scrapeAndQuit = True
  267. sandq = 3
  268. Case "st"
  269. scrapeAndQuit = True
  270. sandq = 1
  271. Case "sm"
  272. scrapeAndQuit = True
  273. sandq = 2
  274. Case "r"
  275. refreshAndQuit = True
  276. Case "?"
  277. AttachConsole(-1)
  278. Console.WriteLine("")
  279. Console.WriteLine("")
  280. Console.WriteLine("Commandline options")
  281. Console.WriteLine("-------------------")
  282. Console.WriteLine("sq - Search for & scrape new movies & tv shows")
  283. Console.WriteLine("st - Search for & scrape newtv shows")
  284. Console.WriteLine("sm - Search for & scrape new movies")
  285. Console.WriteLine("r - Refresh movie & tv caches")
  286. Console.WriteLine("? - Show this page")
  287. Console.WriteLine("")
  288. Environment.Exit(1)
  289. 'Me.Close()
  290. Case Else
  291. AttachConsole(-1)
  292. Console.WriteLine("")
  293. Console.WriteLine("")
  294. Console.WriteLine("Unrecognised commandline option : [" & arg & "]. Type ? for help")
  295. Console.WriteLine("")
  296. Environment.Exit(1)
  297. 'Me.Close()
  298. End Select
  299. Next
  300. If scrapeAndQuit Or refreshAndQuit Then
  301. Me.WindowState = FormWindowState.Minimized
  302. Else
  303. Dim scrn As Integer = splashscreenread()
  304. If multimonitor Then
  305. frmSplash.Bounds = screen.AllScreens(scrn).Bounds
  306. frmSplash.StartPosition = FormStartPosition.Manual
  307. Dim x As Integer = screen.AllScreens(scrn).Bounds.X
  308. frmSplash.Location = New Point(x + 250, 250)
  309. frmSplash.TopMost = True
  310. End If
  311. frmSplash.Show()
  312. frmSplash.Label3.Text = "Status :- Initialising Program"
  313. frmSplash.Label3.Refresh()
  314. End If
  315. Me.Visible = False
  316. Me.Refresh()
  317. Application.DoEvents()
  318. Dim tempstring As String
  319. tempstring = applicationPath & "\enablemultiple.set"
  320. If Not File.Exists(tempstring) Then
  321. Dim tej As Integer = 0
  322. Dim processes() As Process
  323. Dim instance As Process
  324. Dim process As New Process()
  325. processes = process.GetProcesses
  326. For Each instance In processes
  327. If instance.ProcessName = "Media Companion" Then
  328. tej = tej + 1
  329. If tej >= 2 Then
  330. MsgBox("Media Companion is already running")
  331. End 'Close MC since another version of the program is running.
  332. End If
  333. End If
  334. Next
  335. End If
  336. CheckForIllegalCrossThreadCalls = False
  337. Pref.maximised = False
  338. Pref.SetUpPreferences() 'Set defaults to all userpreferences. We then load the preferences from config.xml this way any missing ones have a default already set
  339. GenreMasterLoad()
  340. tempstring = applicationPath & "\Settings\" 'read in the config.xml to set the stored preferences (if it exists)
  341. Dim hg As New IO.DirectoryInfo(tempstring)
  342. If hg.Exists Then
  343. Pref.configpath = tempstring & "config.xml"
  344. If Not IO.File.Exists(Pref.configpath) Then Pref.ConfigSave()
  345. Else
  346. IO.Directory.CreateDirectory(tempstring)
  347. workingProfile.Config = applicationPath & "\Settings\config.xml"
  348. Pref.ConfigSave()
  349. End If
  350. If Not IO.File.Exists(applicationPath & "\Settings\profile.xml") Then
  351. profileStruct.WorkingProfileName = "Default"
  352. profileStruct.DefaultProfile = "Default"
  353. profileStruct.StartupProfile = "Default"
  354. Dim currentprofile As New ListOfProfiles
  355. tempstring = applicationPath & "\Settings\"
  356. currentprofile.ActorCache = tempstring & "actorcache.xml"
  357. currentprofile.DirectorCache = tempstring & "directorcache.xml"
  358. currentprofile.Config = tempstring & "config.xml"
  359. currentprofile.RegExList = tempstring & "regex.xml"
  360. currentprofile.TvCache = tempstring & "tvcache.xml"
  361. currentprofile.MusicVideoCache = tempstring & "musicvideocache.xml"
  362. currentprofile.Genres = tempstring & "genres.txt"
  363. currentprofile.MovieCache = tempstring & "moviecache.xml"
  364. currentprofile.MovieSetCache = tempstring & "moviesetcache.xml"
  365. currentprofile.CustomTvCache = tempstring & "customtvcache.xml"
  366. currentprofile.ProfileName = "Default"
  367. profileStruct.ProfileList.Add(currentprofile)
  368. profileStruct.WorkingProfileName = "Default"
  369. Call util_ProfileSave()
  370. End If
  371. 'hide debug xml view tabs - unhiden (i.e. added) via debug tab
  372. TabLevel1.TabPages.Remove(Me.TabConfigXML)
  373. TabLevel1.TabPages.Remove(Me.TabMovieCacheXML)
  374. TabLevel1.TabPages.Remove(Me.TabTVCacheXML)
  375. TabLevel1.TabPages.Remove(Me.TabProfile)
  376. TabLevel1.TabPages.Remove(Me.TabActorCache)
  377. TabLevel1.TabPages.Remove(Me.TabRegex)
  378. TabLevel1.TabPages.Remove(Me.TabCustTv) 'Hide customtv tab while Work-In-Progress
  379. 'TabControl2.TabPages.Remove(Me.tpMovSets)
  380. TabControl2.TabPages.Remove(Me.tpMovTags)
  381. Call util_ProfilesLoad()
  382. For Each prof In profileStruct.ProfileList
  383. If prof.ProfileName = profileStruct.StartupProfile Then
  384. workingProfile.ActorCache = prof.ActorCache
  385. workingProfile.DirectorCache = prof.DirectorCache
  386. workingProfile.Config = prof.Config
  387. workingProfile.MovieCache = prof.MovieCache
  388. workingProfile.ProfileName = prof.ProfileName
  389. workingProfile.RegExList = prof.RegExList
  390. workingProfile.Genres = prof.Genres
  391. workingProfile.TvCache = prof.TvCache
  392. workingProfile.CustomTvCache = prof.CustomTvCache
  393. workingProfile.ProfileName = prof.ProfileName
  394. workingProfile.MusicVideoCache = prof.MusicVideoCache
  395. workingProfile.MovieSetCache = prof.MovieSetCache
  396. For Each item In ProfilesToolStripMenuItem.DropDownItems
  397. If item.text = workingProfile.ProfileName Then
  398. With item
  399. item.checked = True
  400. End With
  401. Else
  402. item.checked = False
  403. End If
  404. Next
  405. End If
  406. Next
  407. 'add musicvideocache to profile if it doesnt exist
  408. Dim counter As Int16 = 0
  409. tempstring = applicationPath & "\Settings\"
  410. For Each prof In profileStruct.ProfileList
  411. If counter = 0 Then
  412. If prof.MusicVideoCache = "" Then
  413. prof.MusicVideoCache = tempstring & "musicvideocache.xml"
  414. If prof.ProfileName = workingProfile.ProfileName Then
  415. workingProfile.MusicVideoCache = tempstring & "musicvideocache.xml"
  416. End If
  417. End If
  418. If prof.MovieSetCache = "" Then
  419. prof.MovieSetCache = tempstring & "moviesetcache.xml"
  420. If prof.ProfileName = workingProfile.ProfileName Then
  421. workingProfile.MovieSetCache = tempstring & "moviesetcache.xml"
  422. End If
  423. End If
  424. If prof.CustomTvCache = "" Then
  425. prof.CustomTvCache = tempstring & "customtvcache.xml"
  426. If prof.ProfileName = workingProfile.ProfileName Then
  427. workingProfile.CustomTvCache = tempstring & "customtvcache.xml"
  428. End If
  429. End If
  430. Else
  431. If prof.MusicVideoCache = "" Then
  432. prof.MusicVideoCache = tempstring & "musicvideocache" & counter.ToString & ".xml"
  433. End If
  434. If prof.ProfileName = workingProfile.ProfileName Then
  435. workingProfile.MusicVideoCache = tempstring & "musicvideocache" & counter.ToString & ".xml"
  436. End If
  437. If prof.MovieSetCache = "" Then
  438. prof.MovieSetCache = tempstring & "moviesetcache" & counter.ToString & ".xml"
  439. End If
  440. If prof.ProfileName = workingProfile.ProfileName Then
  441. workingProfile.MovieSetCache = tempstring & "moviesetcache" & counter.ToString & ".xml"
  442. End If
  443. If prof.CustomTvCache = "" Then
  444. prof.CustomTvCache = tempstring & "customtvcache" & counter.ToString & ".xml"
  445. End If
  446. If prof.ProfileName = workingProfile.ProfileName Then
  447. workingProfile.CustomTvCache = tempstring & "customtvcache" & counter.ToString & ".xml"
  448. End If
  449. End If
  450. counter += 1
  451. Next
  452. If workingProfile.HomeMovieCache = "" Then workingProfile.HomeMovieCache = tempstring & "homemoviecache.xml"
  453. 'Update Main Form Window Title to show Currrent Version - displays current profile so has to be done after profile is loaded
  454. util_MainFormTitleUpdate()
  455. Dim g As New IO.DirectoryInfo(Utilities.PosterCachePath)
  456. If Not g.Exists Then
  457. Try
  458. Directory.CreateDirectory(Utilities.PosterCachePath)
  459. Catch ex As Exception
  460. MsgBox(ex.Message.ToString)
  461. End
  462. End Try
  463. End If
  464. CheckForIllegalCrossThreadCalls = False
  465. Try
  466. If IO.File.Exists(IO.Path.Combine(applicationPath, "\error.log")) Then IO.File.Delete(IO.Path.Combine(applicationPath, "\error.log"))
  467. Catch ex As Exception
  468. #If SilentErrorScream Then
  469. Throw ex
  470. #End If
  471. End Try
  472. tempstring = applicationDatapath & "error.log"
  473. If IO.File.Exists(tempstring) = True Then IO.File.Delete(tempstring)
  474. Call util_RegexLoad()
  475. Call util_PrefsLoad()
  476. Statusstrip_Enable(False)
  477. 'These lines fixed the associated panel so that they don't automove when the Form1 is resized
  478. SplitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1 'Left Panel on Movie tab - Movie Listing
  479. SplitContainer5.FixedPanel = System.Windows.Forms.FixedPanel.Panel2 'Bottom Left Panel on Movie Tab - Filters
  480. SplitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel1 'Left Panel on TV Tab
  481. Movies.SpinUpDrives()
  482. If Not (scrapeAndQuit Or refreshAndQuit) Then
  483. Me.Visible = True
  484. Dim intX As Integer
  485. Dim intY As Integer
  486. If Pref.MultiMonitoEnabled Then
  487. Dim scrn As Integer = If(NumOfScreens > 0, Pref.preferredscreen, 0)
  488. intX = screen.AllScreens(scrn).Bounds.X ' + screen.AllScreens(scrn).Bounds.Width
  489. intY = screen.AllScreens(scrn).Bounds.Height
  490. Else
  491. intX = Screen.PrimaryScreen.Bounds.Width
  492. intY = Screen.PrimaryScreen.Bounds.Height
  493. End If
  494. SplitContainer1.IsSplitterFixed = True
  495. SplitContainer2.IsSplitterFixed = True
  496. SplitContainer3.IsSplitterFixed = True
  497. SplitContainer4.IsSplitterFixed = True
  498. SplitContainer5.IsSplitterFixed = True
  499. If intX >= 0 Then 'First check if screen is Centre or to the right of main screen.
  500. If Pref.locx < 0 Then Pref.locx = 0
  501. If Pref.locy < 0 Then Pref.locy = 0
  502. If Pref.formheight > intY Then Pref.formheight = intY
  503. If Pref.formwidth > intX Then Pref.formwidth = intX
  504. If Pref.locx >= intX Then Pref.locx = intX - Pref.formwidth
  505. If Pref.locy >= intY Then Pref.locy = intY - Pref.formheight
  506. Else 'Else screen could be to the left of Centre/Main screen so intX is a negative number.
  507. 'If Pref.locx < 0 Then Pref.locx = 0
  508. If Pref.locy < 0 Then Pref.locy = 0
  509. If Pref.formheight > intY Then Pref.formheight = intY
  510. If Pref.formwidth > Math.Abs(intX) Then Pref.formwidth = intX
  511. If Pref.locx <= intX Then Pref.locx = intX ' - Pref.formwidth
  512. If Pref.locy >= intY Then Pref.locy = intY - Pref.formheight
  513. End If
  514. If Pref.formheight <> 0 And Pref.formwidth <> 0 Then
  515. Me.Width = Pref.formwidth
  516. Me.Height = Pref.formheight
  517. Me.Location = New Point(Pref.locx, Pref.locy)
  518. End If
  519. If Pref.maximised Then Me.WindowState = FormWindowState.Maximized
  520. Dim dpi As Graphics = Me.CreateGraphics
  521. 'MessageBox.Show(String.Format("X={0}, Y={1}", dpi.DpiX, dpi.DpiY),
  522. '"DPI Settings", MessageBoxButtons.OK, MessageBoxIcon.Information)
  523. DebugSytemDPITextBox.Text = dpi.DpiX
  524. Me.Refresh()
  525. Application.DoEvents()
  526. Me.Refresh()
  527. Application.DoEvents()
  528. Application.DoEvents()
  529. screenshotTab = TabControl3.TabPages(1)
  530. TabControl3.TabPages.RemoveAt(1)
  531. If Pref.splt5 = 0 Then
  532. Dim tempint As Integer = SplitContainer1.Height
  533. tempint = tempint / 4
  534. tempint = tempint * 3
  535. If tempint > 275 Then
  536. Pref.splt5 = tempint
  537. Else
  538. Pref.splt5 = 275
  539. End If
  540. End If
  541. SplitContainer1.SplitterDistance = Pref.splt1
  542. SplitContainer2.SplitterDistance = Pref.splt2
  543. SplitContainer5.SplitterDistance = Pref.splt5
  544. SplitContainer3.SplitterDistance = Pref.splt3
  545. SplitContainer4.SplitterDistance = Pref.splt4
  546. TabLevel1.SelectedIndex = Pref.startuptab
  547. If Pref.startuptab = 0 Then
  548. If Not MoviesFiltersResizeCalled Then
  549. MoviesFiltersResizeCalled = True
  550. Pref.movie_filters.RemoveInvalidMovieFilters
  551. Pref.movie_filters.SetMovieFiltersVisibility
  552. UpdateMovieFiltersPanel
  553. End If
  554. End If
  555. btn_MPDB_posters.Enabled = False 'Disable MoviePoster button on Movie Poster Tab as now not available to us.
  556. SplitContainer1.IsSplitterFixed = False
  557. SplitContainer2.IsSplitterFixed = False
  558. SplitContainer3.IsSplitterFixed = False
  559. SplitContainer4.IsSplitterFixed = False
  560. SplitContainer5.IsSplitterFixed = False
  561. End If
  562. If scrapeAndQuit Or refreshAndQuit Then
  563. Do_ScrapeAndQuit()
  564. Me.Close()
  565. Else
  566. Try
  567. If cbMovieDisplay_MovieSet.Items.Count <> Pref.moviesets.Count Then
  568. cbMovieDisplay_MovieSet.Items.Clear()
  569. For Each mset In Pref.moviesets
  570. cbMovieDisplay_MovieSet.Items.Add(If(Pref.MovSetTitleIgnArticle, Pref.RemoveIgnoredArticles(mset), mset))
  571. Next
  572. End If
  573. If Not IsNothing(workingMovieDetails) AndAlso workingMovieDetails.fullmoviebody.MovieSet.MovieSetName <> "-None-" Then
  574. For Each mset In Pref.moviesets
  575. cbMovieDisplay_MovieSet.Items.Add(If(Pref.MovSetTitleIgnArticle, Pref.RemoveIgnoredArticles(mset), mset))
  576. Next
  577. For te = 0 To cbMovieDisplay_MovieSet.Items.Count - 1
  578. If cbMovieDisplay_MovieSet.Items(te) = workingMovieDetails.fullmoviebody.MovieSet.MovieSetDisplayName Then
  579. cbMovieDisplay_MovieSet.SelectedIndex = te
  580. Exit For
  581. End If
  582. Next
  583. End If
  584. Catch ex As Exception
  585. #If SilentErrorScream Then
  586. Throw ex
  587. #End If
  588. End Try
  589. mov_VideoSourcePopulate()
  590. ep_VideoSourcePopulate()
  591. Call util_FontSetup()
  592. Call langarrsetup()
  593. Dim mediaDropdown As New SortedList(Of String, String)
  594. mediaInfoExp.addTemplates(mediaDropdown)
  595. For Each item In mediaDropdown
  596. If item.Value = MediaInfoExport.mediaType.Movie Then
  597. ExportMovieListInfoToolStripMenuItem.DropDownItems.Add(item.Key)
  598. ElseIf item.Value = MediaInfoExport.mediaType.TV Then
  599. ExportTVShowInfoToolStripMenuItem.DropDownItems.Add(item.Key)
  600. End If
  601. Next
  602. Call util_CommandListLoad()
  603. startup = False
  604. frmSplash.Label3.Text = "Status :- Cleaning Cache folder."
  605. frmSplash.Label3.Refresh()
  606. frmSplash.Close()
  607. mov_SplitContainerAutoPosition()
  608. tv_ShowSelectedCurrently(TvTreeview)
  609. tv_SplitContainerAutoPosition()
  610. End If
  611. 'Parameters to display the movie grid at startup
  612. Select Case Pref.moviedefaultlist
  613. Case 0
  614. rbTitleAndYear.Checked = True
  615. Case 1
  616. rbFileName.Checked = True
  617. Case 2
  618. rbFolder.Checked = True
  619. End Select
  620. Try
  621. cbSort.SelectedIndex = Pref.moviesortorder
  622. Catch
  623. cbSort.SelectedIndex = 0
  624. End Try
  625. btnreverse.Checked = Pref.movieinvertorder
  626. If btnreverse.Checked Then
  627. Mc.clsGridViewMovie.GridSort = "Desc"
  628. Else
  629. Mc.clsGridViewMovie.GridSort = "Asc"
  630. End If
  631. Read_XBMC_TMDB_Scraper_Config()
  632. Read_XBMC_TVDB_Scraper_Config()
  633. MainFormLoadedStatus = True
  634. UcFanartTv1.Form1MainFormLoadedStatus = True
  635. UcFanartTvTv1.Form1MainFormLoadedStatus = True
  636. ReloadMovieCacheToolStripMenuItem.Visible = False
  637. ToolStripSeparator9.Visible = False
  638. ResetFilters()
  639. UpdateFilteredList()
  640. If Not IsNothing(Pref.MovFiltLastSize) Then ResizeBottomLHSPanel(Pref.MovFiltLastSize, MovieFiltersPanelMaxHeight)
  641. Common.Tasks.StartTaskEngine()
  642. ForegroundWorkTimer.Start()
  643. BckWrkXbmcController.WorkerReportsProgress = True
  644. ' BckWrkXbmcController.WorkerSupportsCancellation = true
  645. oMovies.Bw = BckWrkScnMovies
  646. AddHandler XBMC_Link_ErrorLog_Timer.Elapsed, AddressOf XBMC_Controller_Log_TO_Timer_Elapsed
  647. Ini_Timer(XBMC_Link_ErrorLog_Timer, 3000)
  648. AddHandler XBMC_Link_Idle_Timer.Elapsed, AddressOf XBMC_Link_Idle_Timer_Elapsed
  649. Ini_Timer(XBMC_Link_Idle_Timer, 3000)
  650. AddHandler XBMC_Link_Check_Timer.Elapsed, AddressOf XBMC_Link_Check_Timer_Elapsed
  651. Ini_Timer(XBMC_Link_Check_Timer, 2000, True)
  652. 'XBMC_Link_Check_Timer.Start
  653. AddHandler keypresstimer.Elapsed, AddressOf keypresstimer_Elapsed
  654. Ini_Timer(keypresstimer, 1000)
  655. AddHandler statusstripclear.Elapsed, AddressOf statusstripclear_Elapsed
  656. Ini_Timer(statusstripclear, 2000)
  657. AddHandler BckWrkXbmcController.ProgressChanged, AddressOf BckWrkXbmcController_ReportProgress
  658. AddHandler BckWrkXbmcController.DoWork, AddressOf BckWrkXbmcController_DoWork
  659. BckWrkXbmcController.RunWorkerAsync(Me)
  660. For each pb As Control In TableLayoutPanel6.Controls
  661. If pb.Name.Contains("pbEpScrSht") Then
  662. AddHandler pb.Click, AddressOf pbepscrsht_click
  663. End If
  664. Next
  665. For each pb As Control In TableLayoutPanel27.Controls
  666. If pb.Name.Contains("pbHmScrSht") Then
  667. AddHandler pb.Click, AddressOf pbHmScrSht_click
  668. End If
  669. Next
  670. Catch ex As Exception
  671. ExceptionHandler.LogError(ex)
  672. End Try
  673. End Sub
  674. #If Refocus Then
  675. Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated
  676. Try
  677. If messbox.Visible = True Then
  678. messbox.Activate()
  679. messbox.BringToFront()
  680. messbox.Focus()
  681. End If
  682. Catch ex As Exception
  683. ExceptionHandler.LogError(ex)
  684. End Try
  685. End Sub
  686. #End If
  687. Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
  688. Try
  689. Me.Dispose()
  690. Me.Finalize()
  691. CleanCacheFolder(, cbClearCache.Checked) 'Limit cachefolder to max 300 files. Cleaned on startup and shutdown.
  692. 'If cbClearCache checked then completely empty
  693. If cbClearMissingFolder.Checked = True Then ClearMissingFolder() ' delete missing folder if option selected.
  694. End
  695. Catch ex As Exception
  696. ExceptionHandler.LogError(ex)
  697. End Try
  698. End Sub
  699. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
  700. BckWrkScnMovies_Cancel()
  701. While BckWrkScnMovies.IsBusy
  702. Application.DoEvents()
  703. End While
  704. Try
  705. oMovies.SaveCaches()
  706. If Tv_CacheSave() Then
  707. e.Cancel = True
  708. Exit Sub
  709. End If
  710. Call HomeMovieCacheSave()
  711. Call UcMusicVideo1.MVCacheSave()
  712. 'if we say cancel to save nfo's & exit then we don't want to exit MC if e.cancel= true we abort the closing....
  713. 'Todo: Code a better way to serialize the data
  714. Pref.splt1 = SplitContainer1.SplitterDistance
  715. Pref.splt2 = SplitContainer2.SplitterDistance
  716. Pref.splt3 = SplitContainer3.SplitterDistance
  717. Pref.splt4 = SplitContainer4.SplitterDistance
  718. Pref.splt5 = SplitContainer5.SplitterDistance
  719. Pref.splt6 = _tv_SplitContainer.SplitterDistance
  720. Pref.tvbannersplit = Math.Round(_tv_SplitContainer.SplitterDistance / _tv_SplitContainer.Height, 2)
  721. Pref.MovFiltLastSize = SplitContainer5.Height - SplitContainer5.SplitterDistance
  722. Pref.preferredscreen = CurrentScreen
  723. If Me.WindowState = FormWindowState.Minimized Then
  724. Me.WindowState = FormWindowState.Normal
  725. Pref.formwidth = Me.Width
  726. Pref.formheight = Me.Height
  727. Pref.locx = Me.Location.X
  728. Pref.locy = Me.Location.Y
  729. Pref.maximised = False
  730. End If
  731. If Me.WindowState = FormWindowState.Normal Then
  732. Pref.formwidth = Me.Width
  733. Pref.formheight = Me.Height
  734. Pref.locx = Me.Location.X
  735. Pref.locy = Me.Location.Y
  736. Pref.maximised = False
  737. End If
  738. If Me.WindowState = FormWindowState.Maximized Then
  739. Me.WindowState = FormWindowState.Normal
  740. Pref.maximised = True
  741. End If
  742. If DataGridView1.Columns.Count > 0 Then
  743. Pref.tableview.Clear()
  744. For Each column In DataGridView1.Columns
  745. Dim tempstring As String = String.Format("{0}|{1}|{2}|{3}", column.name, column.width, column.displayindex, column.visible)
  746. Pref.tableview.Add(tempstring)
  747. Next
  748. End If
  749. Pref.startuptab = TabLevel1.SelectedIndex
  750. Pref.ConfigSave()
  751. SplashscreenWrite()
  752. Call util_ProfileSave()
  753. Dim errpath As String = IO.Path.Combine(applicationPath, "tvrefresh.log")
  754. Catch ex As Exception
  755. MessageBox.Show(ex.ToString, "Exception")
  756. Environment.Exit(1)
  757. 'ExceptionHandler.LogError(ex)
  758. End Try
  759. End Sub
  760. Private Sub Form1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.GotFocus
  761. Try
  762. If messbox.Visible = True Then
  763. messbox.Activate()
  764. End If
  765. Catch ex As Exception
  766. ExceptionHandler.LogError(ex)
  767. End Try
  768. End Sub
  769. Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize
  770. Try
  771. If Me.WindowState = FormWindowState.Maximized Then
  772. mov_SplitContainerAutoPosition()
  773. tv_SplitContainerAutoPosition()
  774. End If
  775. If Not Me.WindowState = FormWindowState.Minimized Then
  776. tv_SplitContainerAutoPosition()
  777. End If
  778. If startup = False Then
  779. Pref.locx = Me.Location.X
  780. Pref.locy = Me.Location.Y
  781. End If
  782. If MainFormLoadedStatus = True Then
  783. doResizeRefresh()
  784. End If
  785. Catch ex As Exception
  786. Dim paramInfo As String = ""
  787. Try
  788. paramInfo = "PbMovieFanArt.Width:" & PbMovieFanArt.Width.ToString & " PbMovieFanArt.Height: " & PbMovieFanArt.Height.ToString & " Rating:" & ratingtxt.Text
  789. Catch ex2 As Exception
  790. ExceptionHandler.LogError(ex2)
  791. End Try
  792. ExceptionHandler.LogError(ex, paramInfo)
  793. End Try
  794. End Sub
  795. Private Sub Form1_ResizeEnd(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.ResizeEnd
  796. Try
  797. If Pref.formwidth <> Me.Width Or Pref.formheight <> Me.Height Then
  798. Pref.formwidth = Me.Width
  799. Pref.formheight = Me.Height
  800. End If
  801. mov_SplitContainerAutoPosition()
  802. tv_SplitContainerAutoPosition()
  803. Catch ex As Exception
  804. ExceptionHandler.LogError(ex)
  805. End Try
  806. End Sub
  807. Private Sub Form1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
  808. If e.KeyCode = Keys.Escape Then bckgrndcancel()
  809. If e.KeyCode = Keys.F5 Then doRefresh()
  810. If e.KeyCode = Keys.F3 Then doSearchNew()
  811. If e.Control And e.KeyCode = Keys.C Then AbortFileDownload()
  812. End Sub
  813. #End Region
  814. Sub Ini_Timer(t As Timers.Timer, Optional Interval As Integer = 1000, Optional Repeating As Boolean = False)
  815. t.Stop()
  816. t.Interval = Interval
  817. t.AutoReset = Repeating
  818. End Sub
  819. #Region "XBMC Link"
  820. Private Sub BckWrkXbmcController_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs)
  821. Dim bw As BackgroundWorker = CType(sender, BackgroundWorker)
  822. Dim sm As New XbmcController(e.Argument, bw)
  823. sm.Go()
  824. End Sub
  825. Private Sub XBMC_Controller_Log_TO_Timer_Elapsed()
  826. If Not BckWrkScnMovies.IsBusy And XbmcControllerBufferQ.Count = 0 Then
  827. If DateDiff(DateInterval.Second, XBMC_Controller_LogLastShownDt, Now) > 30 Then
  828. Pref.OpenFileInAppPath(Form1.XBMC_Controller_full_log_file)
  829. Pref.OpenFileInAppPath(Form1.XBMC_Controller_brief_log_file)
  830. frmXBMC_Progress.Reset()
  831. Dim ce As New BaseEvent(XbmcController.E.ResetErrorCount, New BaseEventArgs())
  832. XbmcControllerQ.Write(ce)
  833. End If
  834. XBMC_Controller_LogLastShownDt = Now
  835. XBMC_Link_ErrorLog_Timer.Stop()
  836. End If
  837. End Sub
  838. Private Sub XBMC_Link_Idle_Timer_Elapsed()
  839. If Not BckWrkScnMovies.IsBusy And XbmcControllerBufferQ.Count = 0 Then
  840. frmXBMC_Progress.Visible = False
  841. XBMC_Link_ErrorLog_Timer.Stop()
  842. End If
  843. End Sub
  844. Sub Restart(tmr As Timers.Timer)
  845. tmr.Stop()
  846. tmr.Start()
  847. End Sub
  848. Private Sub BckWrkXbmcController_ReportProgress(ByVal sender As Object, ByVal e As ProgressChangedEventArgs)
  849. Dim oProgress As XBMC_Controller_Progress = CType(e.UserState, XBMC_Controller_Progress)
  850. If XBMC_Link_ErrorLog_Timer.Enabled Then
  851. Restart(XBMC_Link_ErrorLog_Timer)
  852. End If
  853. Restart(XBMC_Link_Idle_Timer)
  854. Restart(XBMC_Link_Check_Timer)
  855. frmXBMC_Progress.Visible = True
  856. If HandleEvents(oProgress) Then Return
  857. If oProgress.ErrorCount > 0 Then
  858. If Pref.ShowLogOnError Then
  859. XBMC_Link_ErrorLog_Timer.Start()
  860. End If
  861. End If
  862. frmXBMC_Progress.UpdateDetails(oProgress)
  863. End Sub
  864. Function HandleEvents(oProgress As XBMC_Controller_Progress) As Boolean
  865. Select Case oProgress.Evt
  866. Case XbmcController.E.MC_Only_Movies
  867. MC_Only_Movies = CType(oProgress.Args, ComboList_EventArgs).XbmcMovies
  868. Assign_FilterGeneral()
  869. Return True
  870. Case XbmcController.E.MC_XbmcMcMovies
  871. oMovies.XbmcMcMovies = CType(oProgress.Args, XBMC_MC_Movies_EventArgs).XbmcMcMovies
  872. Assign_FilterGeneral()
  873. Return True
  874. Case XbmcController.E.MC_XbmcOnlyMovies
  875. oMovies.XbmcOnlyMovies = CType(oProgress.Args, XBMC_Only_Movies_EventArgs).XbmcOnlyMovies
  876. Return True
  877. Case XbmcController.E.MC_XbmcQuit
  878. SetcbBtnLink()
  879. Return True
  880. End Select
  881. Return False
  882. End Function
  883. Const MaxConseqFailures As Integer = 3
  884. Dim ConnectSent As Boolean
  885. Dim XbmcLastLinkState As Boolean
  886. Dim ConseqFailures As Integer = 0
  887. Sub SetcbBtnLink(Optional sender As Object = Nothing)
  888. XBMC_Link_Check_Timer.Stop()
  889. 'Only check when link is idle
  890. If Not BckWrkScnMovies.IsBusy And XbmcControllerBufferQ.Count = 0 Then
  891. Dim passed As Boolean = XBMC_TestsPassed
  892. '
  893. ' Sometimes the link test fails. Don't know why yet, maybe XBMC is busy...but anyway this should reduce the number of phantom
  894. ' link disablings...
  895. '
  896. If Not IsNothing(sender) Then
  897. If cbBtnLink.Enabled And Not passed Then
  898. ConseqFailures += 1
  899. Else
  900. ConseqFailures = 0
  901. End If
  902. Else
  903. ConseqFailures = 0
  904. End If
  905. If IsNothing(sender) Or ConseqFailures <= MaxConseqFailures Then
  906. cbBtnLink.Enabled = passed
  907. If cbBtnLink.Enabled Then
  908. cbBtnLink.BackColor = IIf(cbBtnLink.Checked, Color.LightGreen, Color.Transparent)
  909. If Pref.XBMC_Link <> cbBtnLink.Checked Then
  910. Pref.XBMC_Link = cbBtnLink.Checked
  911. If Pref.XbmcLinkReady Then
  912. XbmcControllerQ.Write(XbmcController.E.ConnectReq, PriorityQueue.Priorities.low)
  913. End If
  914. Pref.ConfigSave()
  915. End If
  916. Else
  917. cbBtnLink.Checked = False
  918. cbBtnLink.BackColor = Color.Transparent
  919. End If
  920. tsmiMov_SyncToXBMC.Enabled = cbBtnLink.Enabled And cbBtnLink.Checked
  921. End If
  922. End If
  923. XBMC_Link_Check_Timer.Start()
  924. End Sub
  925. Private Sub XBMC_Link_Check_Timer_Elapsed()
  926. If ProgState = ProgramState.MovieControlsDisabled Then Return
  927. SetcbBtnLink(XBMC_Link_Check_Timer)
  928. End Sub
  929. Private Sub keypresstimer_Elapsed()
  930. MovieKeyPress = ""
  931. End Sub
  932. Private Sub statusstripclear_Elapsed()
  933. ToolStripStatusLabel2.Visible = False
  934. Statusstrip_Enable(False)
  935. ToolStripStatusLabel2.Text = "TV Show Episode Scan In Progress"
  936. End Sub
  937. Sub XbmcLink_UpdateArtwork()
  938. If Pref.XBMC_Delete_Cached_Images AndAlso Pref.XbmcLinkReady Then
  939. Dim m As Movie = oMovies.LoadMovie(workingMovieDetails.fileinfo.fullpathandfilename)
  940. m.SaveNFO()
  941. End If
  942. End Sub
  943. #End Region
  944. Private Sub BlinkTaskBar()
  945. If GetActiveWindow <> Me.Handle Then
  946. Dim res = WindowsApi.FlashWindow(Process.GetCurrentProcess().MainWindowHandle, True, True, 5)
  947. End If
  948. End Sub
  949. Private Function splashscreenread() As Integer
  950. Dim scrn As Integer = 0
  951. Dim checkpath As String = Pref.applicationPath & "\Settings\screen.xml"
  952. If File.Exists(checkpath) Then
  953. Try
  954. Dim document As XDocument = XDocument.Load(checkpath)
  955. Dim sc = From t In document.Descendants("screen") Select t.Value
  956. Dim mten = From t In document.Descendants("MultiEnabled") Select t.Value
  957. multimonitor = Convert.ToBoolean(mten.First())
  958. scrn = sc.First().ToInt
  959. If scrn > NumOfScreens Then scrn = 0
  960. Catch
  961. scrn = 0
  962. multimonitor = False
  963. End Try
  964. End If
  965. Return scrn
  966. End Function
  967. Private Sub SplashscreenWrite()
  968. Dim doc As New XmlDocument
  969. Dim thispref As XmlNode = Nothing
  970. Dim xmlproc As XmlDeclaration
  971. Dim root As XmlElement = Nothing
  972. Dim child As XmlElement = Nothing
  973. xmlproc = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes")
  974. doc.AppendChild(xmlproc)
  975. root = doc.CreateElement("root")
  976. child = doc.CreateElement("MultiEnabled")
  977. child.InnerXml = Pref.MultiMonitoEnabled
  978. root.AppendChild(child)
  979. child = doc.CreateElement("screen")
  980. child.InnerText = CurrentScreen.ToString
  981. root.AppendChild(child)
  982. doc.AppendChild(root)
  983. Dim screenpath As String = Pref.applicationPath & "\Settings\screen.xml"
  984. Try
  985. Dim output As New XmlTextWriter(screenpath, System.Text.Encoding.UTF8)
  986. output.Formatting = Formatting.Indented
  987. doc.WriteTo(output)
  988. output.Close()
  989. Catch
  990. End Try
  991. End Sub
  992. Private Sub Batch_Rewritenfo()
  993. rescrapeList.ResetFields()
  994. rescrapeList.rebuildnfo = True
  995. _rescrapeList.FullPathAndFilenames.Clear()
  996. For Each movie As ComboList In oMovies.MovieCache
  997. _rescrapeList.FullPathAndFilenames.Add(movie.fullpathandfilename)
  998. Next
  999. RunBackgroundMovieScrape("BatchRescrape")
  1000. End Sub
  1001. Sub CleanCacheFolder(Optional ByVal All As Boolean = False, Optional ByVal Total As Boolean = False)
  1002. Dim cachefolder As String = applicationPath & "\cache\"
  1003. If IO.Directory.Exists(cacheFolder) Then
  1004. Dim Files As New IO.DirectoryInfo(cachefolder)
  1005. Dim FileList() = Files.GetFiles().OrderByDescending(Function(f) f.LastWriteTime).ToArray
  1006. Dim limit As Integer = If(Total, 0, 299)
  1007. Dim i As Integer = FileList.Count
  1008. Try
  1009. If i > limit Then
  1010. Do Until i = limit
  1011. i-=1
  1012. Dim filepath As String = FileList(i).FullName
  1013. Utilities.SafeDeleteFile(filepath)
  1014. Loop
  1015. End If
  1016. Catch
  1017. End Try
  1018. End If
  1019. If All Then
  1020. ClearSeriesFolder()
  1021. ClearPosterFolder()
  1022. End If
  1023. End Sub
  1024. Sub ClearSeriesFolder()
  1025. If IO.Directory.Exists(SeriesXmlPath) Then
  1026. Dim Files As New IO.DirectoryInfo(SeriesXmlPath)
  1027. Dim Filelist() = Files.GetFiles()
  1028. For Each f In Filelist
  1029. Utilities.SafeDeleteFile(f.FullName)
  1030. Next
  1031. End If
  1032. End Sub
  1033. Sub ClearMissingFolder()
  1034. Try
  1035. If IO.Directory.Exists(Utilities.MissingPath)
  1036. Dim Files As New IO.DirectoryInfo(Utilities.MissingPath)
  1037. Dim Filelist() = Files.GetFiles()
  1038. For Each f In Filelist
  1039. Utilities.SafeDeleteFile(f.FullName)
  1040. Next
  1041. End If
  1042. Catch ex As Exception
  1043. End Try
  1044. End Sub
  1045. Sub ClearPosterFolder()
  1046. If IO.Directory.Exists(Utilities.PosterCachePath) Then
  1047. Dim Files As New IO.DirectoryInfo(Utilities.PosterCachePath)
  1048. Dim Filelist() = Files.GetFiles()
  1049. For Each f In Filelist
  1050. Utilities.SafeDeleteFile(f.FullName)
  1051. Next
  1052. End If
  1053. End Sub
  1054. Sub util_MainFormTitleUpdate()
  1055. 'Update Main Form Window Title to show Currrent Version
  1056. Dim sAssemblyVersion As String = Trim(System.Reflection.Assembly.GetExecutingAssembly.FullName.Split(",")(1))
  1057. sAssemblyVersion = Microsoft.VisualBasic.Right(sAssemblyVersion, 7) 'Cuts Version=3.4.0.2 down to just 3.4.0.2
  1058. Dim codebase As String = If(Environment.Is64BitProcess, "64Bit", "32Bit")
  1059. If workingProfile.profilename.ToLower = "default" Then
  1060. Me.Text = "Media Companion - V" & sAssemblyVersion & " - " & codebase
  1061. Else
  1062. Me.Text = "Media Companion - V" & sAssemblyVersion & " - " & codebase & " - " & workingProfile.profilename
  1063. End If
  1064. End Sub
  1065. Sub mov_SplitContainerAutoPosition()
  1066. 'Set Movie Splitter Auto Position
  1067. Dim pic1ratio As Decimal
  1068. Dim pic2ratio As Decimal
  1069. Try
  1070. If Not IsNothing(PbMovieFanArt.Image) Then
  1071. Dim pic1ImSzW = PbMovieFanArt.Image.Size.Width 'original picture sizes
  1072. Dim pic1ImszH = PbMovieFanArt.Image.Size.Height
  1073. Dim pic2ImSzW = PbMoviePoster.Image.Size.Width
  1074. Dim pic2ImszH = PbMoviePoster.Image.Size.Height
  1075. pic1ratio = pic1ImSzW / pic1ImszH
  1076. pic2ratio = pic2ImSzW / pic2ImszH
  1077. Dim width As Integer = SplitContainer2.Size.Width
  1078. ' MsgBox(from & " = " & width & ":" & Int(SplitContainer2.Size.Width * (pic1ratio / (pic1ratio + pic2ratio))) - 5 & " - " & pic1ImSzW & "x" & pic1ImszH & " " & pic2ImszH & "x" & pic2ImSzW)
  1079. Else
  1080. pic1ratio = 2
  1081. pic2ratio = 1
  1082. End If
  1083. Catch ex As Exception
  1084. pic1ratio = 2
  1085. pic2ratio = 1
  1086. 'MsgBox("Movie Splitter Exception")
  1087. End Try
  1088. SplitContainer2.SplitterDistance = (SplitContainer2.Size.Width - 8) * (pic1ratio / (pic1ratio + pic2ratio))
  1089. End Sub
  1090. Sub tv_SplitContainerAutoPosition()
  1091. 'Set TVShow Splitter Auto Position
  1092. Dim pic3ratio As Decimal
  1093. Dim pic4ratio As Decimal
  1094. Dim HorizontalSplit As Decimal
  1095. Try
  1096. If (tv_PictureBoxLeft.Image IsNot Nothing AndAlso tv_PictureBoxRight.Image IsNot Nothing) Then
  1097. Dim pic3ImSzW = tv_PictureBoxLeft.Image.Size.Width
  1098. Dim pic3ImszH = tv_PictureBoxLeft.Image.Size.Height
  1099. Dim pic4ImSzW = tv_PictureBoxRight.Image.Size.Width
  1100. Dim pic4ImszH = tv_PictureBoxRight.Image.Size.Height
  1101. pic3ratio = pic3ImSzW / pic3ImszH
  1102. pic4ratio = pic4ImSzW / pic4ImszH
  1103. HorizontalSplit = ((SplitContainer4.Size.Width - 8) * (pic3ratio / (pic3ratio + pic4ratio)) / pic3ratio)
  1104. Else
  1105. pic3ratio = 2
  1106. pic4ratio = 1
  1107. HorizontalSplit = 235
  1108. End If
  1109. Catch ex As Exception
  1110. pic3ratio = 2
  1111. pic4ratio = 1
  1112. HorizontalSplit = 235
  1113. End Try
  1114. SplitContainer4.SplitterDistance = (SplitContainer4.Size.Width - 8) * (pic3ratio / (pic3ratio + pic4ratio))
  1115. Try 'Try Catch for minimize of MC when Full-screen
  1116. If _tv_SplitContainer.Height > 100 Then
  1117. If Pref.tvbannersplit = 0 Then
  1118. _tv_SplitContainer.SplitterDistance = HorizontalSplit
  1119. Else
  1120. _tv_SplitContainer.SplitterDistance = _tv_SplitContainer.Height * Pref.tvbannersplit
  1121. End If
  1122. End If
  1123. Catch
  1124. End Try
  1125. End Sub
  1126. Public Sub mov_CacheLoad()
  1127. mov_PreferencesDisplay
  1128. oMovies.LoadCaches
  1129. If oMovies.MovieCache.Count = 0 Then
  1130. mov_RebuildMovieCaches
  1131. Return
  1132. End If
  1133. filteredList.Clear
  1134. filteredList.AddRange(oMovies.MovieCache)
  1135. Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  1136. If DataGridViewMovies.Rows.Count > 0 then
  1137. DataGridViewMovies.Rows(0).Selected = True
  1138. End If
  1139. mov_FormPopulate
  1140. End Sub
  1141. Public Sub util_RegexLoad()
  1142. Dim tempstring As String
  1143. tempstring = workingProfile.regexlist
  1144. Pref.tv_RegexScraper.Clear()
  1145. Pref.tv_RegexRename.Clear()
  1146. Dim path As String = tempstring
  1147. Dim createDefaultRegexScrape As Boolean = True
  1148. Dim createDefaultRegexRename As Boolean = True
  1149. If File.Exists(path) Then
  1150. Try
  1151. Dim regexList As New XmlDocument
  1152. regexList.Load(path)
  1153. If regexList.DocumentElement.Name = "regexlist" Then
  1154. For Each result As XmlElement In regexList("regexlist")
  1155. Select Case result.Name
  1156. Case "tvregex" 'This is the old tag before custom renamer was introduced,
  1157. Pref.tv_RegexScraper.Add(result.InnerText) 'so add it to the scraper regex list in case there are custom regexs.
  1158. createDefaultRegexScrape = False 'The rename regex will not be flagged so regex.xml will be created as new format.
  1159. Case "tvregexscrape"
  1160. Pref.tv_RegexScraper.Add(result.InnerText)
  1161. createDefaultRegexScrape = False
  1162. Case "tvregexrename"
  1163. Pref.tv_RegexRename.Add(result.InnerText)
  1164. createDefaultRegexRename = False
  1165. End Select
  1166. Next
  1167. End If
  1168. Catch ex As Exception
  1169. Call util_RegexSave(True, True)
  1170. #If SilentErrorScream Then
  1171. Throw ex
  1172. #End If
  1173. End Try
  1174. End If
  1175. If createDefaultRegexScrape Or createDefaultRegexRename Then
  1176. Call util_RegexSave(createDefaultRegexScrape, createDefaultRegexRename) 'Valid regex XML doc not available, so create default one.
  1177. End If
  1178. End Sub
  1179. Public Sub util_RegexSave(Optional ByVal setScraperDefault As Boolean = False, Optional ByVal setRenameDefault As Boolean = False)
  1180. Dim path As String = workingProfile.regexlist
  1181. Dim doc As New XmlDocument
  1182. Dim xmlProc As XmlDeclaration = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes")
  1183. Dim root As XmlElement
  1184. Dim child As XmlElement
  1185. If setScraperDefault = True Then Pref.util_RegexSetDefaultScraper()
  1186. If setRenameDefault = True Then Pref.util_RegexSetDefaultRename()
  1187. doc.AppendChild(xmlProc)
  1188. root = doc.CreateElement("regexlist")
  1189. For Each Regex In Pref.tv_RegexScraper
  1190. child = doc.CreateElement("tvregexscrape")
  1191. child.InnerText = Regex
  1192. root.AppendChild(child)
  1193. Next
  1194. For Each Regex In Pref.tv_RegexRename
  1195. child = doc.CreateElement("tvregexrename")
  1196. child.InnerText = Regex
  1197. root.AppendChild(child)
  1198. Next
  1199. doc.AppendChild(root)
  1200. Try
  1201. Using output As New XmlTextWriter(path, System.Text.Encoding.UTF8) With {.Formatting = Formatting.Indented}
  1202. '"D:\Dados de Utilizador\Freddy Krueger\Ambiente de Trabalho\MediaCompanion-EVRSOEIRANAS\Settings\regex.xml"
  1203. doc.WriteTo(output)
  1204. output.Close()
  1205. End Using
  1206. Catch ex As Exception
  1207. #If SilentErrorScream Then
  1208. Throw ex
  1209. #End If
  1210. End Try
  1211. End Sub
  1212. Private Sub GenreMasterLoad()
  1213. genrelist.Clear()
  1214. genrelist = Utilities.loadGenre
  1215. End Sub
  1216. Private Sub util_GenreLoad()
  1217. If Not File.Exists(workingProfile.Genres) Then Exit Sub
  1218. Dim line As String = String.Empty
  1219. Dim listof As New List(Of String)
  1220. listof.Clear()
  1221. genrelist.Sort()
  1222. Try
  1223. Dim userConfig As StreamReader = File.OpenText(workingProfile.Genres)
  1224. Do
  1225. Try
  1226. line = userConfig.ReadLine
  1227. If line = Nothing Then Continue Do
  1228. Dim regexMatch As Match
  1229. regexMatch = Regex.Match(line, "<([\d]{2,3})>")
  1230. If regexMatch.Success = False AndAlso (genrelist.FindIndex(Function(x) x.Equals(line.trim, StringComparison.OrdinalIgnoreCase) ) = -1) Then
  1231. listof.Add(line.trim)
  1232. End If
  1233. Catch ex As Exception
  1234. MessageBox.Show(ex.Message)
  1235. End Try
  1236. Loop Until line = Nothing
  1237. userConfig.Close()
  1238. userConfig = Nothing
  1239. Catch ex As Exception
  1240. MessageBox.Show(ex.Message)
  1241. End Try
  1242. If listof.Count > 0 Then
  1243. If Pref.GenreCustomBefore Then
  1244. listof.Sort()
  1245. genrelist.Sort()
  1246. genrelist.InsertRange(0, listof)
  1247. Else
  1248. genrelist.AddRange(listof)
  1249. genrelist.Sort()
  1250. End If
  1251. End If
  1252. End Sub
  1253. Private Sub util_PrefsLoad()
  1254. Dim tempstring As String
  1255. For Each prof In profileStruct.ProfileList
  1256. If prof.profilename = workingProfile.profilename Then
  1257. tempstring = prof.Config
  1258. If IO.File.Exists(tempstring) Then Pref.configpath = tempstring
  1259. Pref.configpath = tempstring
  1260. Pref.SetUpPreferences()
  1261. Pref.ConfigLoad()
  1262. If Pref.CheckForNewVersion Then
  1263. BckWrkCheckNewVersion.RunWorkerAsync(False)
  1264. Do Until Not BckWrkCheckNewVersion.IsBusy
  1265. Application.DoEvents()
  1266. Loop
  1267. If CloseMC AndAlso Pref.CloseMCForDLNewVersion Then
  1268. frmSplash.Close()
  1269. Process.GetCurrentProcess.Kill()
  1270. Application.Exit()
  1271. Me.Close()
  1272. Else
  1273. CloseMC = False
  1274. End If
  1275. End If
  1276. Me.util_ConfigLoad()
  1277. End If
  1278. Next
  1279. For Each item In Pref.moviesets
  1280. cbMovieDisplay_MovieSet.Items.Add(If(Pref.MovSetTitleIgnArticle, Pref.RemoveIgnoredArticles(item), item))
  1281. Next
  1282. End Sub
  1283. Private Sub util_ProfilesLoad()
  1284. profileStruct.ProfileList.Clear()
  1285. Dim profilepath As String = IO.Path.Combine(applicationPath, "Settings")
  1286. profilepath = IO.Path.Combine(profilepath, "profile.xml")
  1287. Dim notportable As Boolean = False
  1288. Dim path As String = profilepath
  1289. If IO.File.Exists(path) Then
  1290. Try
  1291. Dim profilelist As New XmlDocument
  1292. profilelist.Load(path)
  1293. If profilelist.DocumentElement.Name = "profile" Then
  1294. For Each thisresult In profilelist("profile")
  1295. Select Case thisresult.Name
  1296. Case "default"
  1297. profileStruct.DefaultProfile = thisresult.innertext
  1298. Case "startup"
  1299. profileStruct.StartupProfile = thisresult.innertext
  1300. Case "profiledetails"
  1301. Dim currentprofile As New ListOfProfiles
  1302. Dim result As XmlNode
  1303. For Each result In thisresult.childnodes
  1304. Dim t As Integer = result.innertext.ToString.ToLower.IndexOf("\s")
  1305. If t > 0 Then notportable = True
  1306. Select Case result.name
  1307. Case "actorcache"
  1308. Dim s As String = result.innertext.ToString.Substring(t)
  1309. currentprofile.ActorCache = applicationPath & s
  1310. Case "directorcache"
  1311. Dim s As String = result.innertext.ToString.Substring(t)
  1312. currentprofile.DirectorCache = applicationPath & s
  1313. Case "config"
  1314. Dim s As String = result.innertext.ToString.Substring(t)
  1315. currentprofile.Config = applicationPath & s
  1316. Case "moviecache"
  1317. Dim s As String = result.innertext.ToString.Substring(t)
  1318. currentprofile.MovieCache = applicationPath & s
  1319. Case "profilename"
  1320. currentprofile.ProfileName = result.innertext
  1321. Case "regex"
  1322. Dim s As String = result.innertext.ToString.Substring(t)
  1323. currentprofile.RegExList = applicationPath & s
  1324. Case "genres"
  1325. Dim s As String = ""
  1326. If result.innertext = "" Then
  1327. s = "\Settings\genres.txt" 'incase missing from existing profile.xml
  1328. Else
  1329. s = result.innertext.ToString.Substring(t)
  1330. End If
  1331. currentprofile.Genres = applicationPath & s
  1332. Case "tvcache"
  1333. Dim s As String = result.innertext.ToString.Substring(t)
  1334. currentprofile.TvCache = applicationPath & s
  1335. Case "musicvideocache"
  1336. Dim s As String = result.innertext.ToString.Substring(t)
  1337. currentprofile.MusicVideoCache = applicationPath & s
  1338. Case "moviesetcache"
  1339. Dim s As String = result.innertext.ToString.Substring(t)
  1340. currentprofile.MovieSetCache = applicationPath & s
  1341. Case "customtvcache"
  1342. Dim s As String = result.InnerText.ToString.Substring(t)
  1343. currentprofile.CustomTvCache = applicationPath & s
  1344. End Select
  1345. Next
  1346. profileStruct.ProfileList.Add(currentprofile)
  1347. End Select
  1348. Next
  1349. End If
  1350. Catch ex As Exception
  1351. #If SilentErrorScream Then
  1352. Throw ex
  1353. #End If
  1354. End Try
  1355. Else
  1356. End If
  1357. If notportable Then util_ProfileSave()
  1358. If profileStruct.ProfileList.Count > 1 Then
  1359. ProfilesToolStripMenuItem.Visible = True
  1360. ProfilesToolStripMenuItem.Enabled = True
  1361. ProfilesToolStripMenuItem.DropDownItems.Clear()
  1362. For Each prof In profileStruct.ProfileList
  1363. If prof.ProfileName <> Nothing Then
  1364. ProfilesToolStripMenuItem.DropDownItems.Add(prof.ProfileName)
  1365. End If
  1366. Next
  1367. For Each item In ProfilesToolStripMenuItem.DropDownItems
  1368. If item.text = workingProfile.profilename Then
  1369. With item
  1370. item.checked = True
  1371. End With
  1372. Else
  1373. item.checked = False
  1374. End If
  1375. Next
  1376. End If
  1377. End Sub
  1378. Public Sub util_ProfileSave()
  1379. Dim profilepath As String = IO.Path.Combine(applicationPath, "Settings")
  1380. profilepath = IO.Path.Combine(profilepath, "profile.xml")
  1381. Dim doc As New XmlDocument
  1382. Dim thispref As XmlNode = Nothing
  1383. Dim xmlproc As XmlDeclaration
  1384. xmlproc = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes")
  1385. doc.AppendChild(xmlproc)
  1386. Dim root As XmlElement
  1387. Dim child As XmlElement
  1388. Dim childchild As XmlElement
  1389. root = doc.CreateElement("profile")
  1390. child = doc.CreateElement("default")
  1391. child.InnerText = profileStruct.DefaultProfile
  1392. root.AppendChild(child)
  1393. child = doc.CreateElement("startup")
  1394. child.InnerText = profileStruct.StartupProfile
  1395. root.AppendChild(child)
  1396. doc.AppendChild(root)
  1397. For Each prof In profileStruct.ProfileList
  1398. child = doc.CreateElement("profiledetails")
  1399. childchild = doc.CreateElement("actorcache") : childchild.InnerText = prof.ActorCache.Replace(applicationPath, "")
  1400. child.AppendChild(childchild)
  1401. childchild = doc.CreateElement("directorcache") : childchild.InnerText = prof.DirectorCache.Replace(applicationPath, "")
  1402. child.AppendChild(childchild)
  1403. childchild = doc.CreateElement("config") : childchild.InnerText = prof.Config.Replace(applicationPath, "")
  1404. child.AppendChild(childchild)
  1405. childchild = doc.CreateElement("moviecache") : childchild.InnerText = prof.MovieCache.Replace(applicationPath, "")
  1406. child.AppendChild(childchild)
  1407. childchild = doc.CreateElement("profilename") : childchild.InnerText = prof.ProfileName
  1408. child.AppendChild(childchild)
  1409. childchild = doc.CreateElement("regex") : childchild.InnerText = prof.RegExList.Replace(applicationPath, "")
  1410. child.AppendChild(childchild)
  1411. childchild = doc.CreateElement("genres") : childchild.InnerText = prof.Genres.Replace(applicationPath, "")
  1412. child.AppendChild(childchild)
  1413. childchild = doc.CreateElement("tvcache") : childchild.InnerText = prof.TvCache.Replace(applicationPath, "")
  1414. child.AppendChild(childchild)
  1415. childchild = doc.CreateElement("musicvideocache") : childchild.InnerText = prof.MusicVideoCache.Replace(applicationPath, "")
  1416. child.AppendChild(childchild)
  1417. childchild = doc.CreateElement("moviesetcache") : childchild.InnerText = prof.MovieSetCache.Replace(applicationPath, "")
  1418. child.AppendChild(childchild)
  1419. childchild = doc.CreateElement("customtvcache") : childchild.InnerText = prof.CustomTvCache.Replace(applicationPath, "")
  1420. child.AppendChild(childchild)
  1421. root.AppendChild(child)
  1422. Next
  1423. doc.AppendChild(root)
  1424. Dim saveing As New XmlTextWriter(profilepath, System.Text.Encoding.UTF8)
  1425. saveing.Formatting = Formatting.Indented
  1426. doc.WriteTo(saveing)
  1427. saveing.Close()
  1428. If profileStruct.ProfileList.Count > 1 Then
  1429. ProfilesToolStripMenuItem.Visible = True
  1430. ProfilesToolStripMenuItem.Enabled = True
  1431. ProfilesToolStripMenuItem.DropDownItems.Clear()
  1432. For Each prof In profileStruct.ProfileList
  1433. If prof.ProfileName <> Nothing Then
  1434. ProfilesToolStripMenuItem.DropDownItems.Add(prof.ProfileName)
  1435. End If
  1436. Next
  1437. For Each item In ProfilesToolStripMenuItem.DropDownItems
  1438. If item.text = workingProfile.profilename Then
  1439. With item
  1440. item.checked = True
  1441. End With
  1442. Else
  1443. item.checked = False
  1444. End If
  1445. Next
  1446. End If
  1447. End Sub
  1448. Private Sub util_CommandListLoad()
  1449. For Each com In Pref.commandlist
  1450. ToolsToolStripMenuItem.DropDownItems.Add(com.title)
  1451. Next
  1452. End Sub
  1453. Private Sub mov_ActorRebuild()
  1454. oMovies.RebuildMoviePeopleCaches
  1455. End Sub
  1456. Private Sub MovToggleReset()
  1457. MovFanartToggle = False
  1458. MovPosterToggle = False
  1459. btnMovFanartToggle.Text = "Show MovieSet Fanart"
  1460. btnMovFanartToggle.BackColor = System.Drawing.Color.Lime
  1461. btnMovPosterToggle.Text = "Show MovieSet Posters"
  1462. btnMovPosterToggle.BackColor = System.Drawing.Color.Lime
  1463. btn_IMPA_posters.Enabled = True
  1464. btn_MPDB_posters.Enabled = True
  1465. btn_IMDB_posters.Enabled = True
  1466. End Sub
  1467. Public Sub mov_FormPopulate(Optional yieldIng As Boolean=False)
  1468. If Not IsNothing(workingMovieDetails) Then
  1469. If workingMovie.fullpathandfilename <> workingMovieDetails.fileinfo.fullpathandfilename Then
  1470. Try
  1471. For i = panelAvailableMoviePosters.Controls.Count - 1 To 0 Step -1
  1472. panelAvailableMoviePosters.Controls.RemoveAt(i)
  1473. Next
  1474. Catch
  1475. End Try
  1476. Try
  1477. For i = Panel2.Controls.Count - 1 To 0 Step -1
  1478. Panel2.Controls.RemoveAt(i)
  1479. Next
  1480. MovToggleReset()
  1481. Catch
  1482. End Try
  1483. Try
  1484. TextBox8.Text = ""
  1485. Catch
  1486. End Try
  1487. End If
  1488. End If
  1489. If Yield(yieldIng) Then Return
  1490. If workingMovie.fullpathandfilename <> Nothing And DataGridViewMovies.Rows.Count > 0 Then
  1491. workingMovieDetails = WorkingWithNfoFiles.mov_NfoLoadFull(workingMovie.fullpathandfilename)
  1492. If Yield(yieldIng) Then Return
  1493. If IsNothing(workingMovieDetails) = False Then
  1494. If workingMovieDetails.fullmoviebody.playcount = Nothing Then workingMovieDetails.fullmoviebody.playcount = "0"
  1495. If workingMovieDetails.fullmoviebody.lastplayed = Nothing Then workingMovieDetails.fullmoviebody.lastplayed = ""
  1496. If workingMovieDetails.fullmoviebody.credits = Nothing Then workingMovieDetails.fullmoviebody.credits = ""
  1497. If workingMovieDetails.fullmoviebody.director = Nothing Then workingMovieDetails.fullmoviebody.director = ""
  1498. If workingMovieDetails.fullmoviebody.stars = Nothing Then workingMovieDetails.fullmoviebody.stars = ""
  1499. If workingMovieDetails.fullmoviebody.filename = Nothing Then workingMovieDetails.fullmoviebody.filename = ""
  1500. If workingMovieDetails.fullmoviebody.genre = Nothing Then workingMovieDetails.fullmoviebody.genre = ""
  1501. If workingMovieDetails.fullmoviebody.imdbid = Nothing Then workingMovieDetails.fullmoviebody.imdbid = ""
  1502. If workingMovieDetails.fullmoviebody.mpaa = Nothing Then workingMovieDetails.fullmoviebody.mpaa = ""
  1503. If workingMovieDetails.fullmoviebody.outline = Nothing Then workingMovieDetails.fullmoviebody.outline = ""
  1504. If workingMovieDetails.fullmoviebody.playcount = Nothing Then workingMovieDetails.fullmoviebody.playcount = ""
  1505. If workingMovieDetails.fullmoviebody.plot = Nothing Then workingMovieDetails.fullmoviebody.plot = ""
  1506. If workingMovieDetails.fullmoviebody.premiered = Nothing Then workingMovieDetails.fullmoviebody.premiered = ""
  1507. If workingMovieDetails.fullmoviebody.rating = Nothing Then workingMovieDetails.fullmoviebody.rating = ""
  1508. If workingMovieDetails.fullmoviebody.runtime = Nothing Then workingMovieDetails.fullmoviebody.runtime = ""
  1509. If workingMovieDetails.fullmoviebody.studio = Nothing Then workingMovieDetails.fullmoviebody.studio = ""
  1510. If workingMovieDetails.fullmoviebody.tagline = Nothing Then workingMovieDetails.fullmoviebody.tagline = ""
  1511. If workingMovieDetails.fullmoviebody.title = Nothing Then workingMovieDetails.fullmoviebody.title = ""
  1512. If workingMovieDetails.fullmoviebody.originaltitle = Nothing Then workingMovieDetails.fullmoviebody.originaltitle = ""
  1513. If workingMovieDetails.fullmoviebody.top250 = Nothing Then workingMovieDetails.fullmoviebody.top250 = ""
  1514. If workingMovieDetails.fullmoviebody.trailer = Nothing Then workingMovieDetails.fullmoviebody.trailer = ""
  1515. If workingMovieDetails.fullmoviebody.votes = Nothing Then workingMovieDetails.fullmoviebody.votes = ""
  1516. If workingMovieDetails.fullmoviebody.year = Nothing Then workingMovieDetails.fullmoviebody.year = ""
  1517. If workingMovieDetails.fullmoviebody.source = Nothing Then workingMovieDetails.fullmoviebody.source = ""
  1518. titletxt.Items.Clear()
  1519. titletxt.Items.Add(workingMovieDetails.fullmoviebody.title)
  1520. For Each title In workingMovieDetails.alternativetitles
  1521. titletxt.Items.Add(title)
  1522. Next
  1523. titletxt.Text = workingMovieDetails.fullmoviebody.title
  1524. TextBox3.Text = workingMovieDetails.fullmoviebody.title & " (" & workingMovieDetails.fullmoviebody.year & ")"
  1525. tbCurrentMoviePoster.Text = workingMovieDetails.fullmoviebody.title & " (" & workingMovieDetails.fullmoviebody.year & ")"
  1526. Me.ToolTip1.SetToolTip(Me.titletxt, "Original Title: '" & workingMovieDetails.fullmoviebody.originaltitle & "'")
  1527. If workingMovieDetails.fullmoviebody.sortorder = "" Then workingMovieDetails.fullmoviebody.sortorder = workingMovieDetails.fullmoviebody.title
  1528. TextBox34.Text = workingMovieDetails.fullmoviebody.sortorder
  1529. outlinetxt.Text = workingMovieDetails.fullmoviebody.outline
  1530. plottxt.Text = workingMovieDetails.fullmoviebody.plot
  1531. taglinetxt.Text = workingMovieDetails.fullmoviebody.tagline
  1532. txtStars.Text = workingMovieDetails.fullmoviebody.stars
  1533. genretxt.Text = workingMovieDetails.fullmoviebody.genre
  1534. premiertxt.Text = workingMovieDetails.fullmoviebody.premiered
  1535. creditstxt.Text = workingMovieDetails.fullmoviebody.credits
  1536. directortxt.Text = workingMovieDetails.fullmoviebody.director
  1537. studiotxt.Text = workingMovieDetails.fullmoviebody.studio
  1538. countrytxt.Text = workingMovieDetails.fullmoviebody.country
  1539. pathtxt.Text = workingMovie.fullpathandfilename
  1540. ratingtxt.Text = workingMovieDetails.fullmoviebody.rating.FormatRating
  1541. cbUsrRated.Text = If(workingMovieDetails.fullmoviebody.usrrated = "0", "None", workingMovieDetails.fullmoviebody.usrrated)
  1542. SetTagTxtField
  1543. tagtxt.Text = ""
  1544. tb_tagtxt_changed = False
  1545. If workingMovieDetails.fullmoviebody.tag.Count <> 0 Then
  1546. Dim first As Boolean = True
  1547. For Each t In workingMovieDetails.fullmoviebody.tag
  1548. If Not first Then tagtxt.Text &= ", "
  1549. tagtxt.Text &= t
  1550. first = False
  1551. Next
  1552. End If
  1553. 'Catch exception thrown when votes is an empty string
  1554. If workingMovieDetails.fullmoviebody.votes <> "" Then
  1555. Dim votestext As String = workingMovieDetails.fullmoviebody.votes
  1556. votestext = votestext.RemoveWhitespace
  1557. votestxt.Text = Double.Parse(votestext.Replace(".",",")).ToString("N0")
  1558. Else
  1559. votestxt.Text = workingMovieDetails.fullmoviebody.votes
  1560. End If
  1561. certtxt.Text = workingMovieDetails.fullmoviebody.mpaa
  1562. If lbl_movTop250.Text = "Top 250" Then
  1563. top250txt.Text = workingMovieDetails.fullmoviebody.top250
  1564. Else
  1565. top250txt.Text = workingMovieDetails.fullmoviebody.metascore
  1566. End If
  1567. 'top250txt.Text = workingMovieDetails.fullmoviebody.top250
  1568. If Pref.movieRuntimeDisplay = "file" Then
  1569. displayRuntimeScraper = False
  1570. Else
  1571. displayRuntimeScraper = True
  1572. End If
  1573. Call mov_SwitchRuntime()
  1574. workingMovieDetails.fileinfo.fullpathandfilename = workingMovie.fullpathandfilename
  1575. workingMovieDetails.fileinfo.filename = IO.Path.GetFileName(workingMovie.fullpathandfilename)
  1576. workingMovieDetails.fileinfo.path = IO.Path.GetFullPath(workingMovie.fullpathandfilename)
  1577. workingMovieDetails.fileinfo.foldername = workingMovie.foldername
  1578. workingMovieDetails.fileinfo.trailerpath = pref.ActualTrailerPath(workingMovieDetails.fileinfo.path)
  1579. If Yield(yieldIng) Then Return
  1580. HandleTrailerBtn(workingMovieDetails)
  1581. If Yield(yieldIng) Then Return
  1582. If workingMovieDetails.fileinfo.posterpath <> Nothing Then
  1583. If Not File.Exists(workingMovieDetails.fileinfo.posterpath) Then
  1584. If IO.File.Exists(workingMovieDetails.fileinfo.posterpath.Replace(IO.Path.GetFileName(workingMovieDetails.fileinfo.fanartpath), "folder.jpg")) Then
  1585. workingMovieDetails.fileinfo.posterpath = workingMovieDetails.fileinfo.posterpath.Replace(IO.Path.GetFileName(workingMovieDetails.fileinfo.posterpath), "folder.jpg")
  1586. End If
  1587. End If
  1588. End If
  1589. If Yield(yieldIng) Then Return
  1590. If workingMovieDetails.fileinfo.posterpath <> Nothing Then
  1591. Dim workingposter As String = workingMovieDetails.fileinfo.posterpath
  1592. util_ImageLoad(PbMoviePoster, workingposter, Utilities.DefaultPosterPath)
  1593. If Yield(yieldIng) Then Return
  1594. util_ImageLoad(PictureBoxAssignedMoviePoster, workingposter, Utilities.DefaultPosterPath)
  1595. If Yield(yieldIng) Then Return
  1596. lblCurrentLoadedPoster.Text = "Width: " & PictureBoxAssignedMoviePoster.Image.Width.ToString & " Height: " & PictureBoxAssignedMoviePoster.Image.Height.ToString
  1597. lblMovPosterPages.Visible = False
  1598. End If
  1599. If workingMovieDetails.fileinfo.fanartpath <> Nothing Then
  1600. Dim workingfanart As String = workingMovieDetails.fileinfo.fanartpath
  1601. util_ImageLoad(PbMovieFanArt, workingfanart, Utilities.DefaultFanartPath)
  1602. End If
  1603. If Yield(yieldIng) Then Return
  1604. If Convert.ToInt32(workingMovieDetails.fullmoviebody.playcount) > 0 Then
  1605. btnMovWatched.Text = "&Watched"
  1606. btnMovWatched.BackColor = Color.LawnGreen
  1607. btnMovWatched.Refresh()
  1608. Else
  1609. btnMovWatched.Text = "Un&watched"
  1610. btnMovWatched.BackColor = Color.Red
  1611. btnMovWatched.Refresh()
  1612. End If
  1613. cbMovieDisplay_Actor.Items.Clear()
  1614. For Each actor In workingMovieDetails.listactors
  1615. If actor.actorname <> Nothing Then cbMovieDisplay_Actor.Items.Add(actor.actorname)
  1616. Next
  1617. If cbMovieDisplay_Actor.Items.Count > 0 Then
  1618. cbMovieDisplay_Actor.SelectedIndex = 0
  1619. Else
  1620. util_ImageLoad(PictureBoxActor, Utilities.DefaultActorPath, Utilities.DefaultActorPath)
  1621. End If
  1622. Dim fi As New FilteredItems(cbFilterActor)
  1623. fi.SelectFirstMatch(cbMovieDisplay_Actor)
  1624. If Yield(yieldIng) Then Return
  1625. If workingMovieDetails.fullmoviebody.MovieSet.MovieSetName <> "-None-" And workingMovieDetails.fullmoviebody.MovieSet.MovieSetName <> "" Then
  1626. Dim add As Boolean = True
  1627. For Each item In Pref.moviesets
  1628. If item = workingMovieDetails.fullmoviebody.MovieSet.MovieSetName Then
  1629. add = False
  1630. Exit For
  1631. End If
  1632. Next
  1633. If add Then
  1634. Pref.moviesets.Add(workingMovieDetails.fullmoviebody.MovieSet.MovieSetName)
  1635. End If
  1636. End If
  1637. cbMovieDisplay_MovieSet.SelectedItem=Nothing
  1638. pop_cbMovieDisplay_MovieSet
  1639. For f = 0 To cbMovieDisplay_Source.Items.Count - 1
  1640. If cbMovieDisplay_Source.Items(f) = workingMovieDetails.fullmoviebody.source Then
  1641. cbMovieDisplay_Source.SelectedIndex = f
  1642. Exit For
  1643. End If
  1644. Next
  1645. btnPlayMovie.Enabled = True
  1646. mov_SplitContainerAutoPosition
  1647. Dim video_flags = VidMediaFlags(workingMovieDetails.filedetails, workingMovieDetails.fullmoviebody.title.ToLower.Contains("3d"))
  1648. movieGraphicInfo.OverlayInfo(PbMovieFanArt, ratingtxt.Text, video_flags,workingMovie.DisplayFolderSize)
  1649. MovPanel6Update()
  1650. End If
  1651. Else
  1652. cbMovieDisplay_Actor.Items.Clear()
  1653. PictureBoxActor.CancelAsync()
  1654. PictureBoxActor.Image = Nothing
  1655. PictureBoxActor.Refresh()
  1656. btnMoviePosterSaveCroppedImage.Enabled = False
  1657. btnMoviePosterResetImage.Enabled = False
  1658. thumbedItsMade = False
  1659. cbMoviePosterSaveLoRes.Enabled = False
  1660. btnPosterTabs_SaveImage.Enabled = False
  1661. btnMovPosterNext.Visible = False
  1662. btnMovPosterPrev.Visible = False
  1663. lblMovPosterPages.Visible = False
  1664. titletxt.Text = ""
  1665. TextBox3.Text = ""
  1666. outlinetxt.Text = ""
  1667. plottxt.Text = ""
  1668. taglinetxt.Text = ""
  1669. txtStars.Text = ""
  1670. genretxt.Text = ""
  1671. premiertxt.Text = ""
  1672. creditstxt.Text = ""
  1673. directortxt.Text = ""
  1674. studiotxt.Text = ""
  1675. countrytxt.Text = ""
  1676. pathtxt.Text = ""
  1677. cbUsrRated.SelectedIndex = -1
  1678. ratingtxt.Text = ""
  1679. runtimetxt.Text = ""
  1680. votestxt.Text = ""
  1681. top250txt.Text = ""
  1682. certtxt.Text = ""
  1683. PbMovieFanArt.Image = Nothing
  1684. PictureBox2.Image = Nothing
  1685. PbMoviePoster.Image = Nothing
  1686. lblMovFanartWidth.Text = ""
  1687. lblMovFanartHeight.Text = ""
  1688. PictureBoxAssignedMoviePoster.Image = Nothing
  1689. lblCurrentLoadedPoster.Text = ""
  1690. TextBox34.Text = ""
  1691. titletxt.Text = ""
  1692. tagtxt.Text = "" : tb_tagtxt_changed = False
  1693. roletxt.Text = ""
  1694. PictureBoxActor.Image = Nothing
  1695. Panel6.Visible = False
  1696. FanTvArtList.Items.Clear()
  1697. btnPlayMovie.Enabled = False
  1698. Me.Refresh()
  1699. Application.DoEvents()
  1700. End If
  1701. If ratingtxt.Text.IndexOf("/10") <> -1 Then
  1702. ratingtxt.Text = ratingtxt.Text.Replace("/10", "")
  1703. workingMovieDetails.fullmoviebody.rating = ratingtxt.Text
  1704. End If
  1705. If ratingtxt.Text.Length > 3 Then
  1706. ratingtxt.Text = ratingtxt.Text.Substring(0, 3).Trim
  1707. End If
  1708. If Yield(yieldIng) Then Return
  1709. GC.Collect()
  1710. End Sub
  1711. Private Sub Mov_PictureboxLoad()
  1712. util_ImageLoad(PbMoviePoster, workingMovieDetails.fileinfo.posterpath, Utilities.DefaultPosterPath)
  1713. util_ImageLoad(PbMovieFanArt, workingMovieDetails.fileinfo.fanartpath, Utilities.DefaultPosterPath)
  1714. End Sub
  1715. Public Function CheckforExtraArt() As Boolean
  1716. Dim confirmedpresent As Boolean = False
  1717. If File.Exists(workingMovieDetails.fileinfo.movsetposterpath) Then FanTvArtList.Items.Add("Set Poster") : confirmedpresent = True
  1718. If File.Exists(workingMovieDetails.fileinfo.movsetfanartpath) Then FanTvArtList.Items.Add("Set Fanart") : confirmedpresent = True
  1719. If Not Pref.GetRootFolderCheck(workingMovieDetails.fileinfo.fullpathandfilename) Then
  1720. Dim MovPath As String = IO.Path.GetDirectoryName(workingMovieDetails.fileinfo.fullpathandfilename) & "\"
  1721. If Pref.MovFanartNaming Then MovPath = workingMovieDetails.fileinfo.fullpathandfilename.Replace(".nfo", "-")
  1722. If File.Exists(MovPath & "clearart.png") Then FanTvArtList.Items.Add("ClearArt") : confirmedpresent = True
  1723. If File.Exists(MovPath & "logo.png") Then FanTvArtList.Items.Add("Logo") : confirmedpresent = True
  1724. If File.Exists(MovPath & "banner.jpg") Then FanTvArtList.Items.Add("Banner") : confirmedpresent = True
  1725. If File.Exists(MovPath & "landscape.jpg") Then FanTvArtList.Items.Add("Landscape") : confirmedpresent = True
  1726. If File.Exists(MovPath & "disc.png") Then FanTvArtList.Items.Add("Disc") : confirmedpresent = True
  1727. If File.Exists(MovPath & "poster.jpg") AndAlso Not Pref.posterjpg AndAlso Not Pref.MovFanartNaming Then FanTvArtList.Items.Add("Poster") : confirmedpresent = True
  1728. If File.Exists(MovPath & "fanart.jpg") AndAlso Not Pref.fanartjpg AndAlso Not Pref.MovFanartNaming Then FanTvArtList.Items.Add("Fanart") : confirmedpresent = True
  1729. If File.Exists(MovPath & "folder.jpg") Then FanTvArtList.Items.Add("Folder") : confirmedpresent = True
  1730. End If
  1731. Return confirmedpresent
  1732. End Function
  1733. Public Sub MovPanel6Update()
  1734. FanTvArtList.Items.Clear()
  1735. Panel6.Visible = CheckforExtraArt()
  1736. End Sub
  1737. Private Sub FanTvArtList_Mouse(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles FanTvArtList.MouseDown
  1738. Dim imagepath As String = Nothing
  1739. Dim item As String = Nothing
  1740. Dim pbheight As Integer = 112
  1741. If e.button = Windows.Forms.MouseButtons.Right Then
  1742. Dim index As Integer = FanTvArtList.IndexFromPoint(New Point(e.X, e.Y))
  1743. If index >= 0 Then FanTvArtList.SelectedItem = FanTvArtList.Items(index)
  1744. End If
  1745. If IsNothing(FanTvArtList.SelectedItem) Then Exit Sub
  1746. item = FanTvArtList.SelectedItem.ToString.ToLower
  1747. If Not String.IsNullOrEmpty(item) Then
  1748. If item.ToLower = "set poster" Or item.ToLower = "set fanart" Then
  1749. If item.ToLower = "set poster" Then
  1750. imagepath = workingMovieDetails.fileinfo.movsetposterpath
  1751. Else
  1752. imagepath = workingMovieDetails.fileinfo.movsetfanartpath
  1753. End If
  1754. Else
  1755. If Pref.MovFanartNaming Then
  1756. imagepath = workingMovieDetails.fileinfo.fullpathandfilename.Replace(".nfo", "-")
  1757. Else
  1758. imagepath = IO.Path.GetDirectoryName(workingMovieDetails.fileinfo.fullpathandfilename) & "\"
  1759. End If
  1760. Dim suffix As String = If((item = "clearart" or item = "logo" or item = "disc"),".png", ".jpg")
  1761. imagepath &= item & suffix
  1762. End If
  1763. End If
  1764. If e.Button = Windows.Forms.MouseButtons.Left Then
  1765. ftvArtPicBox.Visible = True
  1766. If IsNothing(imagepath) Then Exit Sub
  1767. util_ImageLoad(ftvArtPicBox, imagepath, "")
  1768. Try
  1769. Dim panelwidth As Integer = SplitContainer1.Panel2.Width
  1770. Dim panelheight As Integer = SplitContainer1.Panel2.Height
  1771. Dim pbw As Integer = Math.Ceiling(panelwidth*.413)
  1772. Dim pbh As Integer = Math.Ceiling(PbMovieFanArt.Height*.90)
  1773. Dim imgw As Integer = ftvArtPicBox.Image.Width
  1774. Dim imgh As Integer = ftvArtPicBox.Image.Height
  1775. If item.ToLower.Contains("poster") Or item.ToLower.Contains("disc") Then
  1776. ftvArtPicBox.Height = pbh
  1777. ftvArtPicBox.Width = Math.Ceiling(pbh/(imgh/imgw))
  1778. ftvArtPicBox.Location = New System.Drawing.Point(Math.Ceiling((panelwidth*.4)-(ftvArtPicBox.Width/2)), 45)
  1779. Else
  1780. ftvArtPicBox.Height = Math.Ceiling(pbw*(imgh/imgw))
  1781. ftvArtPicBox.Width = pbw
  1782. ftvArtPicBox.Location = New System.Drawing.Point(140, Math.Ceiling((panelheight*.3)-(ftvArtPicBox.Height/2)))
  1783. End If
  1784. Catch
  1785. End Try
  1786. ElseIf e.button = Windows.Forms.MouseButtons.Right Then
  1787. Dim tempint = MessageBox.show("Do you wish to delete this image from" & vbCrLf & "this Movie?", "Fanart.Tv Artwork Delete", MessageBoxButtons.YesNoCancel)
  1788. If tempint = Windows.Forms.DialogResult.No or tempint = DialogResult.Cancel Then Exit Sub
  1789. If tempint = Windows.Forms.DialogResult.Yes Then
  1790. Utilities.SafeDeleteFile(imagepath)
  1791. MovPanel6Update()
  1792. End If
  1793. End If
  1794. End Sub
  1795. Private Sub FanTvArtList_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FanTvArtList.MouseLeave
  1796. FanTvArtList.ClearSelected()
  1797. ftvArtPicBox.Image = Nothing
  1798. ftvArtPicBox.Visible = False
  1799. End Sub
  1800. Private Sub HandleTrailerBtn(ByVal fmd As FullMovieDetails)
  1801. If IsNothing(fmd) Then
  1802. Return
  1803. End If
  1804. DeleteZeroLengthFile(fmd.fileinfo.trailerpath)
  1805. ButtonTrailer.Enabled = False
  1806. If IO.File.Exists(fmd.fileinfo.trailerpath) Then
  1807. ButtonTrailer.Text = "Play Trailer"
  1808. ButtonTrailer.Enabled = True
  1809. Else
  1810. If fmd.fullmoviebody.trailer = ""
  1811. ButtonTrailer.Text = "No trailer found"
  1812. Else
  1813. ButtonTrailer.Text = "Download Trailer"
  1814. ButtonTrailer.Enabled = True
  1815. End If
  1816. End If
  1817. End Sub
  1818. Private Function mov_FileCheckValid(ByVal fullpathandfilename As String) As Boolean
  1819. Dim validfile As Boolean = True
  1820. Dim tempint2 As Integer = 0
  1821. Dim tempstring As String
  1822. Dim extension As String
  1823. Dim tempname As String
  1824. 'First check, is it a video file!
  1825. extension = System.IO.Path.GetExtension(fullpathandfilename)
  1826. Dim isvideofile As Boolean = False
  1827. For Each extn In Utilities.VideoExtensions
  1828. If extn = extension Then isvideofile = True
  1829. Next
  1830. If Not isvideofile Then Return False
  1831. 'if the file is a .vob then check it is not part of a dvd folder (Stop dvdfolders vobs getting seperate nfos)
  1832. If IO.Path.GetExtension(fullpathandfilename) = ".vob" Then
  1833. If IO.File.Exists(fullpathandfilename.Replace(System.IO.Path.GetFileName(fullpathandfilename), "VIDEO_TS.IFO")) Then
  1834. validfile = False
  1835. End If
  1836. End If
  1837. Dim filename2 As String = System.IO.Path.GetFileName(fullpathandfilename).ToLower
  1838. For each cleanmultipart In Utilities.cleanMultipart
  1839. For Each separator In Utilities.separators
  1840. For I = 2 To 5
  1841. Dim lookfor As String = cleanmultipart & separator & I.ToString
  1842. If filename2.IndexOf(cleanmultipart & separator & I.ToString) <> -1 Then validfile = False
  1843. Next
  1844. Next
  1845. Next
  1846. If filename2.IndexOf("-trailer") <> -1 Then validfile = False
  1847. If filename2.IndexOf(".trailer") <> -1 Then validfile = False
  1848. If filename2.IndexOf("_trailer") <> -1 Then validfile = False
  1849. If filename2.IndexOf("-theme") <> -1 Then validfile = False
  1850. If filename2.IndexOf(".theme") <> -1 Then validfile = False
  1851. If filename2.IndexOf("_theme") <> -1 Then validfile = False
  1852. If filename2.IndexOf("sample") <> -1 And filename2.IndexOf("people") = -1 Then validfile = False
  1853. 'check for movies ending a,b,c, etc (moviea, movieb) for multipart. movieb is multipart if moviea exists
  1854. 'extension = System.IO.Path.GetExtension(fullpathandfilename)
  1855. tempname = fullpathandfilename.Replace(extension, "")
  1856. If tempname.Substring(tempname.Length - 1) = "b" Or tempname.Substring(tempname.Length - 1) = "c" Or tempname.Substring(tempname.Length - 1) = "d" Or tempname.Substring(tempname.Length - 1) = "e" Or tempname.Substring(tempname.Length - 1) = "B" Or tempname.Substring(tempname.Length - 1) = "C" Or tempname.Substring(tempname.Length - 1) = "D" Or tempname.Substring(tempname.Length - 1) = "E" Then
  1857. tempname = fullpathandfilename.Substring(0, fullpathandfilename.Length - (1 + extension.Length)) & "a" & extension
  1858. If System.IO.File.Exists(tempname) Then validfile = False
  1859. End If
  1860. 'now need to deal with multipart rar files
  1861. Dim tempmovie2 As String = fullpathandfilename.Replace(".nfo", ".rar")
  1862. Dim tempmovie As String = String.Empty
  1863. If IO.File.Exists(tempmovie2) = True Then
  1864. If IO.File.Exists(fullpathandfilename) = False Then
  1865. Dim rarname As String = tempmovie2
  1866. Dim SizeOfFile As Integer = FileLen(rarname)
  1867. tempint2 = Convert.ToInt32(Pref.rarsize) * 1048576
  1868. If SizeOfFile > tempint2 Then
  1869. Dim mat As Match
  1870. mat = Regex.Match(rarname, "\.part[0-9][0-9]?[0-9]?[0-9]?.rar")
  1871. If mat.Success = True Then
  1872. rarname = mat.Value
  1873. If rarname.ToLower.IndexOf(".part1.rar") <> -1 Or rarname.ToLower.IndexOf(".part01.rar") <> -1 Or rarname.ToLower.IndexOf(".part001.rar") <> -1 Or rarname.ToLower.IndexOf(".part0001.rar") <> -1 Then
  1874. Dim stackrarexists As Boolean = False
  1875. rarname = fullpathandfilename.Replace(".nfo", ".rar")
  1876. If rarname.ToLower.IndexOf(".part1.rar") <> -1 Then
  1877. rarname = rarname.Replace(".part1.rar", ".nfo")
  1878. If IO.File.Exists(rarname) Then
  1879. stackrarexists = True
  1880. tempmovie = rarname
  1881. Else
  1882. stackrarexists = False
  1883. tempmovie = rarname
  1884. End If
  1885. End If
  1886. If rarname.ToLower.IndexOf(".part01.rar") <> -1 Then
  1887. rarname = rarname.Replace(".part01.rar", ".nfo")
  1888. If IO.File.Exists(rarname) Then
  1889. stackrarexists = True
  1890. tempmovie = rarname
  1891. Else
  1892. stackrarexists = False
  1893. tempmovie = rarname
  1894. End If
  1895. End If
  1896. If rarname.ToLower.IndexOf(".part001.rar") <> -1 Then
  1897. rarname = rarname.Replace(".part001.rar", ".nfo")
  1898. If IO.File.Exists(rarname) Then
  1899. tempmovie = rarname
  1900. stackrarexists = True
  1901. Else
  1902. stackrarexists = False
  1903. tempmovie = rarname
  1904. End If
  1905. End If
  1906. If rarname.ToLower.IndexOf(".part0001.rar") <> -1 Then
  1907. rarname = rarname.Replace(".part0001.rar", ".nfo")
  1908. If IO.File.Exists(rarname) Then
  1909. tempmovie = rarname
  1910. stackrarexists = True
  1911. Else
  1912. stackrarexists = False
  1913. tempmovie = rarname
  1914. End If
  1915. End If
  1916. If stackrarexists = True Then
  1917. Dim allok As Boolean = False
  1918. Try
  1919. Dim filechck As IO.StreamReader = IO.File.OpenText(tempmovie)
  1920. Do
  1921. tempstring = filechck.ReadLine
  1922. If tempstring = Nothing Then Exit Do
  1923. If tempstring.IndexOf("<movie") <> -1 Then
  1924. allok = True
  1925. Exit Do
  1926. End If
  1927. Loop Until tempstring.IndexOf("</movie>") <> -1
  1928. filechck.Close()
  1929. filechck = Nothing
  1930. Catch ex As Exception
  1931. #If SilentErrorScream Then
  1932. Throw ex
  1933. #End If
  1934. Finally
  1935. End Try
  1936. If allok = True Then
  1937. validfile = False
  1938. End If
  1939. End If
  1940. Else
  1941. validfile = False
  1942. End If
  1943. End If
  1944. Else
  1945. validfile = False
  1946. End If
  1947. End If
  1948. End If
  1949. 'rename fullpathandfilename to that of the nfo file
  1950. fullpathandfilename = fullpathandfilename.Replace(fullpathandfilename.Substring(fullpathandfilename.LastIndexOf("."), fullpathandfilename.Length - fullpathandfilename.LastIndexOf(".")), ".nfo")
  1951. 'check for both variations of the filename
  1952. Dim nfopaths(1) As String
  1953. nfopaths(0) = fullpathandfilename
  1954. nfopaths(1) = fullpathandfilename.Replace(IO.Path.GetFileName(fullpathandfilename), "movie.nfo")
  1955. 'check if the file exists
  1956. For f = 0 To 1
  1957. If IO.File.Exists(nfopaths(f)) Then
  1958. 'if it does check if it is a valid xbmc nfo, if it is not then move it or delete it according to prefs
  1959. Try
  1960. Dim filechck As IO.StreamReader = IO.File.OpenText(nfopaths(f))
  1961. tempstring = filechck.ReadToEnd
  1962. filechck.Close()
  1963. If tempstring.IndexOf("<movie") = -1 And tempstring.IndexOf("</movie>") = -1 Then
  1964. If Pref.renamenfofiles = True Then
  1965. Dim fi As New IO.FileInfo(nfopaths(f))
  1966. Dim newpath As String = nfopaths(f).Replace(nfopaths(f).Substring(nfopaths(f).LastIndexOf("."), nfopaths(f).Length - nfopaths(f).LastIndexOf(".")), ".info")
  1967. fi.MoveTo(newpath)
  1968. End If
  1969. Else
  1970. validfile = False
  1971. End If
  1972. filechck.Close()
  1973. filechck = Nothing
  1974. Catch ex As Exception
  1975. #If SilentErrorScream Then
  1976. Throw ex
  1977. #End If
  1978. Finally
  1979. End Try
  1980. End If
  1981. Next
  1982. Return validfile
  1983. End Function
  1984. Private Sub DeleteZeroLengthFile(ByVal fileName)
  1985. If IO.File.Exists(fileName) Then
  1986. If (New IO.FileInfo(fileName)).Length = 0 Then
  1987. Utilities.SafeDeleteFile(fileName)
  1988. End If
  1989. End If
  1990. End Sub
  1991. Private Sub ReloadMovieCacheToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReloadMovieCacheToolStripMenuItem.Click
  1992. mov_CacheLoad()
  1993. End Sub
  1994. Private Sub StartVideo(ByVal tempstring As String)
  1995. If Pref.videomode = 1 Then
  1996. Call util_VideoMode(1, tempstring)
  1997. Exit Sub
  1998. End If
  1999. If Pref.videomode = 2 OrElse Pref.videomode = 3 Then
  2000. Call util_VideoMode(2, tempstring)
  2001. Exit Sub
  2002. End If
  2003. If Pref.videomode >= 4 Then
  2004. If Pref.selectedvideoplayer <> Nothing Then
  2005. Call util_VideoMode(4, tempstring)
  2006. Else
  2007. Call util_VideoMode(1, tempstring)
  2008. End If
  2009. End If
  2010. End Sub
  2011. Private Sub util_VideoMode(ByVal mode As Integer, ByVal tempstring As String)
  2012. Dim action As String = ""
  2013. Dim errors As String = ""
  2014. If mode = 1 Then
  2015. Try
  2016. Dim myProc As Process = Process.Start(tempstring)
  2017. Catch ex As Exception
  2018. errors = ex.ToString
  2019. action = "Dim myProc As Process = Process.Start(" & tempstring & ")"
  2020. Call util_ErrorLog(action, errors)
  2021. End Try
  2022. ElseIf mode = 2 Then
  2023. Try
  2024. Dim thePSI As New System.Diagnostics.ProcessStartInfo("wmplayer")
  2025. thePSI.Arguments = """" & tempstring & """"
  2026. System.Diagnostics.Process.Start(thePSI)
  2027. Catch ex As Exception
  2028. errors = ex.ToString
  2029. action = "Dim thePSI As New System.Diagnostics.ProcessStartInfo(""wmplayer"")" & vbCrLf & "thePSI.Arguments = "" & tempstring & """ & vbCrLf & "System.Diagnostics.Process.Start(thePSI)"
  2030. Call util_ErrorLog(action, errors)
  2031. End Try
  2032. ElseIf mode = 4 Then
  2033. Try
  2034. Dim myProc As Process = Process.Start("""" & Pref.selectedvideoplayer & """", """" & tempstring & """")
  2035. Catch ex As Exception
  2036. errors = ex.ToString
  2037. action = "Dim myProc As Process = Process.Start(""" & Pref.selectedvideoplayer & """," & """" & tempstring & """)"
  2038. Call util_ErrorLog(action, errors)
  2039. End Try
  2040. End If
  2041. End Sub
  2042. 'Private Sub util_VideoMode1(ByVal tempstring As String)
  2043. ' Dim action As String
  2044. ' Dim errors As String
  2045. ' Try
  2046. ' Dim myProc As Process = Process.Start(tempstring)
  2047. ' Catch ex As Exception
  2048. ' errors = ex.ToString
  2049. ' action = "Dim myProc As Process = Process.Start(" & tempstring & ")"
  2050. ' Call util_ErrorLog(action, errors)
  2051. ' End Try
  2052. 'End Sub
  2053. 'Private Sub util_VideoMode2(ByVal tempstring As String)
  2054. ' Dim action As String
  2055. ' Dim errors As String
  2056. ' Try
  2057. ' Dim thePSI As New System.Diagnostics.ProcessStartInfo("wmplayer")
  2058. ' thePSI.Arguments = """" & tempstring & """"
  2059. ' System.Diagnostics.Process.Start(thePSI)
  2060. ' Catch ex As Exception
  2061. ' errors = ex.ToString
  2062. ' action = "Dim thePSI As New System.Diagnostics.ProcessStartInfo(""wmplayer"")" & vbCrLf & "thePSI.Arguments = "" & tempstring & """ & vbCrLf & "System.Diagnostics.Process.Start(thePSI)"
  2063. ' Call util_ErrorLog(action, errors)
  2064. ' End Try
  2065. 'End Sub
  2066. 'Private Sub util_VideoMode4(ByVal tempstring As String)
  2067. ' Dim action As String
  2068. ' Dim errors As String
  2069. ' Try
  2070. ' Dim myProc As Process = Process.Start("""" & Pref.selectedvideoplayer & """", """" & tempstring & """")
  2071. ' Catch ex As Exception
  2072. ' errors = ex.ToString
  2073. ' action = "Dim myProc As Process = Process.Start(""" & Pref.selectedvideoplayer & """," & """" & tempstring & """)"
  2074. ' Call util_ErrorLog(action, errors)
  2075. ' End Try
  2076. 'End Sub
  2077. Private Sub util_ErrorLog(ByVal action As String, Optional ByVal errors As String = "")
  2078. Dim errpath As String = applicationPath & "\error.log"
  2079. Try
  2080. Dim objWriter As New System.IO.StreamWriter(errpath, True)
  2081. objWriter.WriteLine(errors)
  2082. objWriter.WriteLine(action)
  2083. objWriter.WriteLine() '(Chr(13))
  2084. objWriter.Close()
  2085. Catch ex As Exception
  2086. MsgBox("Error, cant write to " & errpath & vbCrLf & vbCrLf & ex.ToString)
  2087. End Try
  2088. End Sub
  2089. Public Sub tv_RefreshLog(ByVal action As String, Optional ByVal errors As String = "", Optional ByVal clear As Boolean = False)
  2090. If Pref.tvshowrefreshlog = False Then
  2091. Exit Sub
  2092. End If
  2093. Dim errpath As String = IO.Path.Combine(applicationPath, "tvrefresh.log")
  2094. If clear = True Then
  2095. If IO.File.Exists(errpath) Then
  2096. Try
  2097. IO.File.Delete(errpath)
  2098. Catch ex As Exception
  2099. MsgBox("Error deleting: " & errpath & vbCrLf & vbCrLf & ex.ToString)
  2100. End Try
  2101. End If
  2102. End If
  2103. Try
  2104. Dim objWriter As New System.IO.StreamWriter(errpath, True)
  2105. objWriter.WriteLine(action)
  2106. If errors <> "" Then
  2107. objWriter.WriteLine(errors)
  2108. End If
  2109. objWriter.Close()
  2110. Catch ex As Exception
  2111. MsgBox("Error, cant write to " & errpath & vbCrLf & vbCrLf & ex.ToString)
  2112. End Try
  2113. End Sub
  2114. Private Sub util_ThreadsRunningCheck()
  2115. 'If globalthreadcounter = 0 Then
  2116. ' ToolStripButton10.Visible = False
  2117. 'Else
  2118. ' ToolStripButton10.Visible = True
  2119. 'End If
  2120. End Sub
  2121. Private Sub util_ThreadsAllExit()
  2122. Dim busy As Boolean = False
  2123. Try
  2124. If bckgroundscanepisodes.IsBusy Then
  2125. busy = True
  2126. bckgroundscanepisodes.CancelAsync()
  2127. End If
  2128. If BckWrkScnMovies.IsBusy Then
  2129. busy = True
  2130. BckWrkScnMovies.CancelAsync()
  2131. End If
  2132. If bckepisodethumb.IsBusy Then
  2133. busy = True
  2134. bckepisodethumb.CancelAsync()
  2135. End If
  2136. If BWs.Count > 0 Then
  2137. busy = True
  2138. Bw.CancelAsync()
  2139. End If
  2140. If ImgBw.IsBusy Then
  2141. busy = True
  2142. ImgBw.CancelAsync()
  2143. End If
  2144. Dim exitnowok As Boolean = False
  2145. If busy = True Then
  2146. messbox.TextBox1.Text = "Please Wait"
  2147. messbox.TextBox2.Text = ""
  2148. messbox.TextBox3.Text = "Stopping threads when it is Safe to do so"
  2149. messbox.Refresh()
  2150. messbox.Visible = True
  2151. End If
  2152. Do Until busy = False
  2153. If Not bckepisodethumb.IsBusy And Not bckgroundscanepisodes.IsBusy And Not BckWrkScnMovies.IsBusy And Not BWs.Count > 0 And Not ImgBw.IsBusy Then
  2154. busy = False
  2155. Exit Do
  2156. End If
  2157. Threading.Thread.Sleep(100)
  2158. Application.DoEvents()
  2159. Loop
  2160. messbox.Visible = False
  2161. Catch ex As Exception
  2162. #If SilentErrorScream Then
  2163. Throw ex
  2164. #End If
  2165. Finally
  2166. End Try
  2167. End Sub
  2168. Public Sub util_ZoomImage(ByVal file As String)
  2169. bigPanel = New Panel
  2170. With bigPanel
  2171. .Width = Me.Width
  2172. .Height = Me.Height
  2173. .BringToFront()
  2174. .Dock = DockStyle.Fill
  2175. End With
  2176. bigPictureBox = New PictureBox()
  2177. With bigPictureBox
  2178. .Location = New Point(0, 0)
  2179. .Width = bigPanel.Width
  2180. .Height = bigPanel.Height
  2181. .SizeMode = PictureBoxSizeMode.Zoom
  2182. .Visible = True
  2183. .BorderStyle = BorderStyle.Fixed3D
  2184. AddHandler bigPictureBox.DoubleClick, AddressOf util_PicBoxClose
  2185. .Dock = DockStyle.Fill
  2186. End With
  2187. util_ImageLoad(bigPictureBox, file, Utilities.DefaultPosterPath)
  2188. 'Dim sizex As Integer = bigpicbox.Width
  2189. 'Dim sizey As Integer = bigpicbox.Height
  2190. Dim bigpanellabel As Label
  2191. bigpanellabel = New Label
  2192. With bigpanellabel
  2193. .Location = New Point(20, 200)
  2194. .Width = 170
  2195. .Height = 75
  2196. .Visible = True
  2197. .Text = "Double Click Image To Return To Browser"
  2198. .Font = New System.Drawing.Font("Microsoft Sans Serif", 12!, System.Drawing.FontStyle.Bold)
  2199. End With
  2200. Me.bigPanel.Controls.Add(bigpanellabel)
  2201. bigpanellabel.BringToFront()
  2202. Application.DoEvents()
  2203. If Not bigPictureBox.Image Is Nothing And bigPictureBox.Image.Width > 20 Then
  2204. Dim sizey As Integer = bigPictureBox.Image.Height
  2205. Dim sizex As Integer = bigPictureBox.Image.Width
  2206. Dim tempstring As String
  2207. tempstring = "Full Image Resolution :- " & sizex.ToString & " x " & sizey.ToString
  2208. Dim resolutionlbl As New Label
  2209. With resolutionlbl
  2210. .Location = New Point(20, 450)
  2211. .Width = 200
  2212. .Text = tempstring
  2213. .BackColor = Color.Transparent
  2214. End With
  2215. Me.bigPanel.Controls.Add(resolutionlbl)
  2216. resolutionlbl.BringToFront()
  2217. Me.Refresh()
  2218. Application.DoEvents()
  2219. Dim tempstring2 As String = resolutionlbl.Text
  2220. End If
  2221. Me.Controls.Add(bigPanel)
  2222. bigPanel.BringToFront()
  2223. Me.bigPanel.Controls.Add(bigPictureBox)
  2224. Me.Refresh()
  2225. End Sub
  2226. Private Sub util_PicBoxClose()
  2227. Me.Controls.Remove(bigPanel)
  2228. bigPanel = Nothing
  2229. Me.Controls.Remove(bigPictureBox)
  2230. bigPictureBox.Image = Nothing
  2231. bigPictureBox = Nothing
  2232. Me.ControlBox = True
  2233. MenuStrip1.Enabled = True
  2234. End Sub
  2235. Public Sub resetallfilters()
  2236. Try
  2237. ResetFilters()
  2238. Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  2239. Try
  2240. If DataGridViewMovies.SelectedRows.Count = 1 Then
  2241. If workingMovieDetails.fileinfo.fullpathandfilename = DataGridViewMovies.SelectedCells(NFO_INDEX).Value.ToString Then Return
  2242. End If
  2243. Catch
  2244. End Try
  2245. DisplayMovie()
  2246. Catch ex As Exception
  2247. ExceptionHandler.LogError(ex)
  2248. End Try
  2249. End Sub
  2250. Sub ResetFilters()
  2251. ProgState = ProgramState.ResettingFilters
  2252. filterOverride = False
  2253. TextBox1.Text = ""
  2254. txt_titlesearch.Text = ""
  2255. txt_titlesearch.BackColor = Color.White
  2256. TextBox1.BackColor = Color.White
  2257. rbTitleAndYear.Checked = True
  2258. cbFilterGeneral.SelectedIndex = 0
  2259. UpdateMinMaxMovieFilters()
  2260. oMovies.ActorsFilter_AlsoInclude.Clear()
  2261. oMovies.SetsFilter_AlsoInclude.Clear()
  2262. cbFilterActor .UpdateItems(oMovies.ActorsFilter )
  2263. cbFilterDirector.UpdateItems(oMovies.DirectorsFilter)
  2264. cbFilterSet .UpdateItems(oMovies.SetsFilter )
  2265. cbFilterTag .UpdateItems(oMovies.TagsFilter )
  2266. Dim query = From c As Control In SplitContainer5.Panel2.Controls Where c.Name.IndexOf("cbFilter") = 0 And c.GetType().Namespace = "MC_UserControls"
  2267. For Each c As Object In query
  2268. c.Reset()
  2269. Next
  2270. ProgState = ProgramState.Other
  2271. End Sub
  2272. Public Sub UpdateMovieSetDisplayNames
  2273. oMovies.UpdateMovieSetDisplayNames
  2274. pop_cbMovieDisplay_MovieSet
  2275. cbFilterSet.UpdateItems(oMovies.SetsFilter)
  2276. End Sub
  2277. Sub UpdateMinMaxMovieFilters()
  2278. If cbFilterVotes .Visible Then cbFilterVotes .Values = oMovies.ListVotes
  2279. If cbFilterRuntime .Visible Then cbFilterRuntime .Values = oMovies.ListRuntimes
  2280. If cbFilterFolderSizes.Visible Then
  2281. cbFilterFolderSizes.Min = oMovies.MinFolderSize
  2282. cbFilterFolderSizes.Max = oMovies.MaxFolderSize
  2283. End If
  2284. If cbFilterYear.Visible Then
  2285. cbFilterYear.Min = If(oMovies.MinYear < 1850, 1850, oMovies.MinYear)
  2286. cbFilterYear.Max = oMovies.MaxYear
  2287. End If
  2288. End Sub
  2289. 'Medianfo.dll to outputlog
  2290. Private Sub util_FileDetailsGet()
  2291. Try
  2292. Dim tempstring As String = String.Empty
  2293. Dim appPath As String = ""
  2294. Dim exists As Boolean
  2295. Dim movieinfo As String = String.Empty
  2296. Dim medianfoexists As Boolean = False
  2297. tempstring = Utilities.GetFileName(pathtxt.Text)
  2298. If IO.Path.GetFileName(tempstring).ToLower = "video_ts.ifo" Then
  2299. Dim temppath As String = tempstring.Replace(IO.Path.GetFileName(tempstring), "VTS_01_0.IFO")
  2300. If IO.File.Exists(temppath) Then
  2301. tempstring = temppath
  2302. End If
  2303. End If
  2304. Dim fileisiso As Boolean = (IO.Path.GetExtension(tempstring).ToLower = ".iso")
  2305. If fileisiso Then
  2306. If applicationPath.IndexOf("/") <> -1 Then appPath = applicationPath & "/" & "mediainfo-rar.exe"
  2307. If applicationPath.IndexOf("\") <> -1 Then appPath = applicationPath & "\" & "mediainfo-rar.exe"
  2308. If Not IO.File.Exists(appPath) Then
  2309. MsgBox("Unable to find th file ""mediainfo-rar.exe""" & vbCrLf & vbCrLf & "Please make sure this file is available in the programs root directory")
  2310. Exit Sub
  2311. End If
  2312. Try
  2313. Dim NewProcess As New System.Diagnostics.Process()
  2314. With NewProcess.StartInfo
  2315. .FileName = appPath
  2316. .Arguments = tempstring
  2317. .RedirectStandardOutput = True
  2318. .RedirectStandardError = True
  2319. .RedirectStandardInput = True
  2320. .UseShellExecute = False
  2321. .WindowStyle = ProcessWindowStyle.Hidden
  2322. .CreateNoWindow = False
  2323. End With
  2324. Dim To_Display As String = ""
  2325. NewProcess.Start()
  2326. movieinfo = NewProcess.StandardOutput.ReadToEnd
  2327. Catch ex As Exception
  2328. End Try
  2329. Else
  2330. If applicationPath.IndexOf("/") <> -1 Then appPath = applicationPath & "/" & "MediaInfo.dll"
  2331. If applicationPath.IndexOf("\") <> -1 Then appPath = applicationPath & "\" & "MediaInfo.dll"
  2332. exists = IO.File.Exists(appPath)
  2333. If exists = True Then
  2334. medianfoexists = True
  2335. End If
  2336. If medianfoexists = False Then
  2337. MsgBox("Unable to find th file ""MediaInfo.dll""" & vbCrLf & vbCrLf & "Please make sure this file is available in the programs root directory")
  2338. Exit Sub
  2339. End If
  2340. Dim To_Display As String = ""
  2341. Dim tempstring5 As String
  2342. Dim MI As mediainfo
  2343. MI = New mediainfo
  2344. tempstring5 = MI.Option_("Info_Version", "0.7.0.0;MediaInfoDLL_Example_MSVB;0.7.0.0")
  2345. If (tempstring5.Length() = 0) Then
  2346. TextBox1.Text = "MediaInfo.Dll: this version of the DLL is not compatible"
  2347. Exit Sub
  2348. End If
  2349. If IO.File.Exists(tempstring) Then
  2350. MI.Open(tempstring)
  2351. To_Display = MI.Inform
  2352. movieinfo = To_Display
  2353. MI.Close()
  2354. End If
  2355. End If
  2356. TextBox8.Text = movieinfo
  2357. Catch
  2358. End Try
  2359. End Sub
  2360. Private Sub mov_Rescrape()
  2361. If outlinetxt.Text = "MC cannot find this file, either the file no longer exists, or MC cannot access the file path" Then
  2362. MsgBox("MC cannot find this file, either the file no longer exists, or MC cannot access the file path")
  2363. Exit Sub
  2364. End If
  2365. If workingMovieDetails Is Nothing Then Exit Sub
  2366. If workingMovieDetails.fullmoviebody.title = Nothing And workingMovieDetails.fullmoviebody.imdbid = Nothing Then
  2367. MsgBox("Can't rescrape this movie because it doesn't have any NFO File" & vbCrLf & "refresh movie database, and search for new movies", MsgBoxStyle.OkOnly, "Error")
  2368. Exit Sub
  2369. End If
  2370. Dim tempint = MessageBox.Show("Rescraping the movie will Overwrite all the current details" & vbCrLf & "Do you wish to continue?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
  2371. If tempint = DialogResult.No Then
  2372. Exit Sub
  2373. End If
  2374. RunBackgroundMovieScrape("RescrapeDisplayedMovie")
  2375. End Sub
  2376. Private Sub mov_SaveQuick()
  2377. If DataGridViewMovies.SelectedRows.Count = 0 Then Return
  2378. If DataGridViewMovies.SelectedRows.Count = 1 Then
  2379. Dim movie As Movie = oMovies.LoadMovie(workingMovieDetails.fileinfo.fullpathandfilename)
  2380. movie.ScrapedMovie.fullmoviebody.title = titletxt.Text.Replace(" (" & workingMovieDetails.fullmoviebody.year & ")", "")
  2381. If movie.ScrapedMovie.fullmoviebody.originaltitle = Nothing Or movie.ScrapedMovie.fullmoviebody.originaltitle = "" Then
  2382. movie.ScrapedMovie.fullmoviebody.originaltitle = movie.ScrapedMovie.fullmoviebody.title
  2383. End If
  2384. movie.ScrapedMovie.fullmoviebody.director = directortxt.Text
  2385. movie.ScrapedMovie.fullmoviebody.playcount = workingMovieDetails.fullmoviebody.playcount
  2386. movie.ScrapedMovie.fullmoviebody.lastplayed = workingMovieDetails.fullmoviebody.lastplayed
  2387. movie.ScrapedMovie.fullmoviebody.credits = creditstxt.Text
  2388. movie.ScrapedMovie.fullmoviebody.studio = studiotxt.Text
  2389. movie.ScrapedMovie.fullmoviebody.country = countrytxt.Text
  2390. movie.ScrapedMovie.fullmoviebody.genre = genretxt.Text
  2391. movie.ScrapedMovie.fullmoviebody.premiered = premiertxt.Text
  2392. movie.ScrapedMovie.fullmoviebody.votes = votestxt.Text
  2393. If lbl_movTop250.Text = "Top 250" Then
  2394. movie.ScrapedMovie.fullmoviebody.top250 = top250txt.Text
  2395. Else
  2396. movie.ScrapedMovie.fullmoviebody.metascore = top250txt.Text
  2397. End If
  2398. 'movie.ScrapedMovie.fullmoviebody.top250 = top250txt.Text
  2399. movie.ScrapedMovie.fullmoviebody.rating = ratingtxt.Text
  2400. movie.ScrapedMovie.fullmoviebody.usrrated = If(cbUsrRated.Text = "None", "0", cbUsrRated.Text)
  2401. movie.ScrapedMovie.fullmoviebody.runtime = runtimetxt.Text
  2402. movie.ScrapedMovie.fullmoviebody.outline = outlinetxt.Text
  2403. movie.ScrapedMovie.fullmoviebody.plot = plottxt.Text
  2404. movie.ScrapedMovie.fullmoviebody.tagline = taglinetxt.Text
  2405. movie.ScrapedMovie.fullmoviebody.stars = txtStars.Text.ToString.Replace(", See full cast and crew", "")
  2406. movie.ScrapedMovie.fullmoviebody.mpaa = certtxt.Text
  2407. movie.ScrapedMovie.fullmoviebody.sortorder = TextBox34.Text
  2408. If movie.ScrapedMovie.fullmoviebody.MovieSet.MovieSetName <> cbMovieDisplay_MovieSet.Items(cbMovieDisplay_MovieSet.SelectedIndex) AndAlso cbMovieDisplay_MovieSet.SelectedIndex <> -1 Then
  2409. movie.ScrapedMovie.fullmoviebody.MovieSet.MovieSetName = cbMovieDisplay_MovieSet.Items(cbMovieDisplay_MovieSet.SelectedIndex)
  2410. movie.ScrapedMovie.fullmoviebody.MovieSet.MovieSetId = oMovies.GetMovieSetIdFromName(movie.ScrapedMovie.fullmoviebody.MovieSet.MovieSetName)
  2411. End If
  2412. movie.ScrapedMovie.fullmoviebody.source = If(cbMovieDisplay_Source.SelectedIndex < 1, Nothing, cbMovieDisplay_Source.Items(cbMovieDisplay_Source.SelectedIndex))
  2413. If TabControl2.SelectedTab.Name = tpMovSetsTags.Name Then
  2414. For Each t In NewTagList
  2415. Dim remtag As String = t.Replace("- ","").Replace("+ ","")
  2416. If t.Contains("- ") Then
  2417. If movie.ScrapedMovie.fullmoviebody.tag.Contains(remtag) Then
  2418. movie.ScrapedMovie.fullmoviebody.tag.Remove(remtag)
  2419. End If
  2420. ElseIf t.Contains("+ ") Then
  2421. If Not movie.ScrapedMovie.fullmoviebody.tag.Contains(remtag) Then
  2422. movie.ScrapedMovie.fullmoviebody.tag.Add(remtag)
  2423. End If
  2424. End If
  2425. Next
  2426. If movie.ScrapedMovie.fullmoviebody.tag.Count <> 0 Then
  2427. Dim first As Boolean = True
  2428. tagtxt.Text = ""
  2429. For Each t In movie.ScrapedMovie.fullmoviebody.tag
  2430. If Not first Then
  2431. tagtxt.Text &= ", " & t
  2432. Else
  2433. tagtxt.Text &= t
  2434. End If
  2435. first = False
  2436. Next
  2437. tb_tagtxt_changed = False
  2438. End If
  2439. Else
  2440. If Pref.AllowUserTags AndAlso tb_tagtxt_changed Then
  2441. tb_tagtxt_changed = False
  2442. movie.ScrapedMovie.fullmoviebody.tag.Clear()
  2443. For Each wd In tagtxt.Text.Split(",")
  2444. wd = wd.Trim
  2445. If wd.Length = 0 Then Continue For
  2446. movie.ScrapedMovie.fullmoviebody.tag.Add(wd)
  2447. If Not Pref.movietags.Contains(wd) Then
  2448. Pref.movietags.Add(wd)
  2449. End If
  2450. If movie.ScrapedMovie.fullmoviebody.tag.Count >= Pref.keywordlimit Then Exit For
  2451. Next
  2452. ConfigSave()
  2453. End If
  2454. End If
  2455. 'If TabControl2.SelectedTab.Name = tpMovSets.Name Then
  2456. ' For Each t In NewTagList
  2457. ' Dim remtag As String = t.Replace("- ", "").Replace("+ ", "")
  2458. ' If t.Contains("- ") Then
  2459. ' If movie.ScrapedMovie.fullmoviebody.tag.Contains(remtag) Then
  2460. ' movie.ScrapedMovie.fullmoviebody.tag.Remove(remtag)
  2461. ' End If
  2462. ' ElseIf t.Contains("+ ") Then
  2463. ' If Not movie.ScrapedMovie.fullmoviebody.tag.Contains(remtag) Then
  2464. ' movie.ScrapedMovie.fullmoviebody.tag.Add(remtag)
  2465. ' End If
  2466. ' End If
  2467. ' Next
  2468. ' If movie.ScrapedMovie.fullmoviebody.tag.Count <> 0 Then
  2469. ' Dim first As Boolean = True
  2470. ' For Each t In movie.ScrapedMovie.fullmoviebody.tag
  2471. ' If Not first Then tagtxt.Text &= ", "
  2472. ' tagtxt.Text &= t
  2473. ' first = False
  2474. ' Next
  2475. ' End If
  2476. 'Else
  2477. ' If Pref.AllowUserTags Then
  2478. ' movie.ScrapedMovie.fullmoviebody.tag.Clear()
  2479. ' For Each wd In tagtxt.Text.Split(",")
  2480. ' wd = wd.Trim
  2481. ' If wd.Length = 0 Then Continue For
  2482. ' movie.ScrapedMovie.fullmoviebody.tag.Add(wd)
  2483. ' If Not Pref.movietags.Contains(wd) Then
  2484. ' Pref.movietags.Add(wd)
  2485. ' End If
  2486. ' ConfigSave()
  2487. ' If movie.ScrapedMovie.fullmoviebody.tag.Count >= Pref.keywordlimit Then Exit For
  2488. ' Next
  2489. ' End If
  2490. 'End If
  2491. movie.AssignMovieToCache()
  2492. movie.UpdateMovieCache()
  2493. movie.SaveNFO()
  2494. UpdateFilteredList()
  2495. If TabControl2.SelectedTab.Name = tpMovSetsTags.Name Then TagsPopulate()
  2496. Else
  2497. messbox = New frmMessageBox("Saving Selected Movies", , " Please Wait. ") 'Multiple movies selected
  2498. messbox.TextBox3.Text = "Press ESC to cancel"
  2499. messbox.TopMost = True
  2500. messbox.Show()
  2501. messbox.Refresh()
  2502. Application.DoEvents()
  2503. Dim Startfullpathandfilename As String = ""
  2504. If Not ISNothing(DataGridViewMovies.CurrentRow) Then
  2505. Dim i As Integer = DataGridViewMovies.CurrentRow.Index
  2506. Startfullpathandfilename = DataGridViewMovies.Item(5, i).Value.ToString
  2507. messbox.Cancelled = False
  2508. Dim pos As Integer = 0
  2509. Dim NfosToSave As List(Of String) = (From x As datagridviewrow In DataGridViewMovies.SelectedRows Select nfo=x.Cells("fullpathandfilename").Value.ToString).ToList
  2510. For Each nfo As String In NfosToSave
  2511. If Not File.Exists(nfo) Then Continue For
  2512. Dim movie As Movie = oMovies.LoadMovie(nfo)
  2513. If IsNothing(movie) Then Continue For
  2514. pos += 1
  2515. messbox.TextBox2.Text = pos.ToString + " of " + NfosToSave.Count.ToString
  2516. If directortxt.Text <> "" Then movie.ScrapedMovie.fullmoviebody.director = directortxt.Text
  2517. If creditstxt.Text <> "" Then movie.ScrapedMovie.fullmoviebody.credits = creditstxt.Text
  2518. If genretxt.Text <> "" Then movie.ScrapedMovie.fullmoviebody.genre = genretxt.Text
  2519. If premiertxt.Text <> "" Then movie.ScrapedMovie.fullmoviebody.premiered = premiertxt.Text
  2520. If certtxt.Text <> "" Then movie.ScrapedMovie.fullmoviebody.mpaa = certtxt.Text
  2521. If outlinetxt.Text <> "" Then movie.ScrapedMovie.fullmoviebody.outline = outlinetxt.Text
  2522. If runtimetxt.Text <> "" Then movie.ScrapedMovie.fullmoviebody.runtime = runtimetxt.Text
  2523. If studiotxt.Text <> "" Then movie.ScrapedMovie.fullmoviebody.studio = studiotxt.Text
  2524. If countrytxt.Text <> "" then movie.ScrapedMovie.fullmoviebody.country = countrytxt.Text
  2525. If plottxt.Text <> "" Then movie.ScrapedMovie.fullmoviebody.plot = plottxt.Text
  2526. If taglinetxt.Text <> "" Then movie.ScrapedMovie.fullmoviebody.tagline = taglinetxt.Text
  2527. If txtStars.Text <> "" Then movie.ScrapedMovie.fullmoviebody.stars = txtStars.Text.ToString.Replace(", See full cast and crew", "")
  2528. If ratingtxt.Text <> "" Then movie.ScrapedMovie.fullmoviebody.rating = ratingtxt.Text
  2529. If votestxt.Text <> "" Then movie.ScrapedMovie.fullmoviebody.votes = votestxt.Text
  2530. If top250txt.Text <> "" Then
  2531. If lbl_movTop250.Text = "Top 250" Then
  2532. movie.ScrapedMovie.fullmoviebody.top250 = top250txt.Text
  2533. Else
  2534. movie.ScrapedMovie.fullmoviebody.metascore = top250txt.Text
  2535. End If
  2536. 'movie.ScrapedMovie.fullmoviebody.top250 = top250txt.Text
  2537. End If
  2538. If Not cbMovieDisplay_MovieSet.SelectedIndex < 1 Then
  2539. movie.ScrapedMovie.fullmoviebody.MovieSet.MovieSetName = cbMovieDisplay_MovieSet.Items(cbMovieDisplay_MovieSet.SelectedIndex)
  2540. movie.ScrapedMovie.fullmoviebody.MovieSet.MovieSetId = oMovies.GetMovieSetIdFromName(movie.ScrapedMovie.fullmoviebody.MovieSet.MovieSetName)
  2541. End If
  2542. If cbUsrRated.SelectedIndex <> -1 Then movie.ScrapedMovie.fullmoviebody.usrrated = cbUsrRated.SelectedIndex.ToString'text
  2543. movie.ScrapedMovie.fullmoviebody.source = If(cbMovieDisplay_Source.SelectedIndex < 1, Nothing, cbMovieDisplay_Source.Items(cbMovieDisplay_Source.SelectedIndex))
  2544. If TabControl2.SelectedTab.Name = tpMovSetsTags.Name Then
  2545. For Each t In NewTagList
  2546. Dim remtag As String = t.Replace("- ","").Replace("+ ","")
  2547. If t.Contains("- ") Then
  2548. If movie.ScrapedMovie.fullmoviebody.tag.Contains(remtag) Then
  2549. movie.ScrapedMovie.fullmoviebody.tag.Remove(remtag)
  2550. End If
  2551. ElseIf t.Contains("+ ") Then
  2552. If Not movie.ScrapedMovie.fullmoviebody.tag.Contains(remtag) Then
  2553. movie.ScrapedMovie.fullmoviebody.tag.Add(remtag)
  2554. End If
  2555. End If
  2556. Next
  2557. Else
  2558. If tb_tagtxt_changed Then
  2559. 'tb_tagtxt_changed = False
  2560. movie.ScrapedMovie.fullmoviebody.tag.Clear()
  2561. If tagtxt.Text <> "" AndAlso tagtxt.Text.Contains(",") Then
  2562. Dim tags() As String = tagtxt.Text.Split(",")
  2563. For Each strtag In tags
  2564. If Not movie.ScrapedMovie.fullmoviebody.tag.Contains(strtag.Trim()) Then movie.ScrapedMovie.fullmoviebody.tag.Add(strtag.Trim())
  2565. Next
  2566. ElseIf tagtxt.Text <> "" Then
  2567. If Not movie.ScrapedMovie.fullmoviebody.tag.Contains(tagtxt.Text.Trim()) Then movie.ScrapedMovie.fullmoviebody.tag.Add(tagtxt.Text.Trim())
  2568. End If
  2569. End If
  2570. End If
  2571. 'If TabControl2.SelectedTab.Name = tpMovSets.Name Then
  2572. ' For Each t In NewTagList
  2573. ' Dim remtag As String = t.Replace("- ", "").Replace("+ ", "")
  2574. ' If t.Contains("- ") Then
  2575. ' If movie.ScrapedMovie.fullmoviebody.tag.Contains(remtag) Then
  2576. ' movie.ScrapedMovie.fullmoviebody.tag.Remove(remtag)
  2577. ' End If
  2578. ' ElseIf t.Contains("+ ") Then
  2579. ' If Not movie.ScrapedMovie.fullmoviebody.tag.Contains(remtag) Then
  2580. ' movie.ScrapedMovie.fullmoviebody.tag.Add(remtag)
  2581. ' End If
  2582. ' End If
  2583. ' Next
  2584. 'Else
  2585. ' If tb_tagtxt_changed Then
  2586. ' tb_tagtxt_changed = False
  2587. ' movie.ScrapedMovie.fullmoviebody.tag.Clear()
  2588. ' If tagtxt.Text <> "" AndAlso tagtxt.Text.Contains(",") Then
  2589. ' Dim tags() As String = tagtxt.Text.Split(",")
  2590. ' For Each strtag In tags
  2591. ' If Not movie.ScrapedMovie.fullmoviebody.tag.Contains(strtag.Trim()) Then movie.ScrapedMovie.fullmoviebody.tag.Add(strtag.Trim())
  2592. ' Next
  2593. ' ElseIf tagtxt.Text <> "" Then
  2594. ' If Not movie.ScrapedMovie.fullmoviebody.tag.Contains(tagtxt.Text.Trim()) Then movie.ScrapedMovie.fullmoviebody.tag.Add(tagtxt.Text.Trim())
  2595. ' End If
  2596. ' End If
  2597. 'End If
  2598. movie.AssignMovieToCache()
  2599. movie.UpdateMovieCache()
  2600. movie.SaveNFO()
  2601. Application.DoEvents()
  2602. If messbox.Cancelled Then Exit For
  2603. Next
  2604. If tb_tagtxt_changed Then tb_tagtxt_changed = False
  2605. UpdateFilteredList()
  2606. ProgState = ProgramState.Other
  2607. Else
  2608. messbox.Close()
  2609. MsgBox("Must Select an Initial Movie" & vbCrLf & "Save Cancelled")
  2610. Exit Sub
  2611. End If
  2612. workingMovie.fullpathandfilename = Startfullpathandfilename
  2613. mov_FormPopulate()
  2614. messbox.Close()
  2615. If TabControl2.SelectedTab.Name = tpMovSetsTags.Name Then TabControl2.SelectedIndex = 0
  2616. End If
  2617. End Sub
  2618. Private Sub mov_Edit()
  2619. If outlinetxt.Text = "MC cannot find this file, either the file no longer exists, or MC cannot access the file path" Then
  2620. MsgBox("MC cannot find this file, either the file no longer exists, or MC cannot access the file path")
  2621. Exit Sub
  2622. End If
  2623. Dim oldmovietitle As String = workingMovieDetails.fileinfo.fullpathandfilename
  2624. Dim newmovietitle As String = ""
  2625. Dim MyFormObject As New Form2()
  2626. MyFormObject.ShowDialog()
  2627. newmovietitle = workingMovieDetails.fileinfo.fullpathandfilename
  2628. For f = 0 To oMovies.MovieCache.Count - 1
  2629. If oMovies.MovieCache(f).fullpathandfilename = newmovietitle Then
  2630. Dim newfullmovie As New ComboList
  2631. oMovies.MovieCache.RemoveAt(f)
  2632. newfullmovie = nfoFunction.mov_NfoLoadBasic(workingMovieDetails.fileinfo.fullpathandfilename, "movielist")
  2633. If workingMovie.title <> "ERROR" Then 'if there is a problem with the nfo being invalid we need to skip
  2634. oMovies.MovieCache.Add(newfullmovie)
  2635. End If
  2636. Exit For
  2637. End If
  2638. Next
  2639. 'Todo: need to update all details after edit.
  2640. For f = 0 To filteredList.Count - 1
  2641. If filteredList(f).fullpathandfilename = oldmovietitle Then
  2642. Dim newfullmovie2 As New ComboList
  2643. newfullmovie2 = filteredList(f)
  2644. filteredList.RemoveAt(f)
  2645. Dim filecreation2 As New IO.FileInfo(workingMovieDetails.fileinfo.fullpathandfilename)
  2646. Dim myDate2 As Date = filecreation2.LastWriteTime
  2647. Try
  2648. newfullmovie2.filedate = Format(myDate2, datePattern).ToString
  2649. Catch ex As Exception
  2650. #If SilentErrorScream Then
  2651. Throw ex
  2652. #End If
  2653. End Try
  2654. newfullmovie2.filename = workingMovieDetails.fileinfo.filename
  2655. newfullmovie2.foldername = workingMovieDetails.fileinfo.foldername
  2656. newfullmovie2.fullpathandfilename = workingMovieDetails.fileinfo.fullpathandfilename
  2657. newfullmovie2.genre = workingMovieDetails.fullmoviebody.genre
  2658. newfullmovie2.id = workingMovieDetails.fullmoviebody.imdbid
  2659. newfullmovie2.playcount = workingMovieDetails.fullmoviebody.playcount
  2660. newfullmovie2.lastplayed = workingMovieDetails.fullmoviebody.lastplayed
  2661. newfullmovie2.rating = workingMovieDetails.fullmoviebody.rating.ToRating
  2662. newfullmovie2.year = workingMovieDetails.fullmoviebody.year
  2663. newfullmovie2.rootfolder = workingMovieDetails.fileinfo.rootfolder
  2664. filteredList.Add(newfullmovie2)
  2665. Exit For
  2666. End If
  2667. Next
  2668. Call mov_FormPopulate()
  2669. Call Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  2670. End Sub
  2671. Private Sub XBMCMCThreadToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles XBMCMCThreadToolStripMenuItem.Click
  2672. Try
  2673. Dim webAddress As String = "http://forum.xbmc.org/showthread.php?t=129134"
  2674. OpenUrl(webAddress)
  2675. Catch ex As Exception
  2676. ExceptionHandler.LogError(ex)
  2677. End Try
  2678. End Sub
  2679. Private Sub ListMoviesWithoutFanartToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  2680. Try
  2681. filterOverride = True
  2682. Dim newlist As New List(Of ComboList)
  2683. newlist.Clear()
  2684. For Each movie In oMovies.MovieCache
  2685. If Not IO.File.Exists(Pref.GetFanartPath(movie.fullpathandfilename)) Then
  2686. Dim movietoadd As New ComboList
  2687. movietoadd.fullpathandfilename = movie.fullpathandfilename
  2688. movietoadd.filename = movie.filename
  2689. movietoadd.year = movie.year
  2690. movietoadd.filedate = movie.filedate
  2691. movietoadd.foldername = movie.foldername
  2692. movietoadd.rating = movie.rating
  2693. movietoadd.top250 = movie.top250
  2694. movietoadd.rootfolder = movie.rootfolder
  2695. newlist.Add(movietoadd)
  2696. End If
  2697. Next
  2698. filteredList = newlist
  2699. mov_CacheLoad()
  2700. filterOverride = False
  2701. Catch ex As Exception
  2702. ExceptionHandler.LogError(ex)
  2703. End Try
  2704. End Sub
  2705. Private Sub ListMoviesWithoutPostersToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  2706. Try
  2707. filterOverride = True
  2708. Dim newlist As New List(Of ComboList)
  2709. newlist.Clear()
  2710. For Each movie In oMovies.MovieCache
  2711. If Not IO.File.Exists(Pref.GetPosterPath(movie.fullpathandfilename)) Then
  2712. Dim movietoadd As New ComboList
  2713. movietoadd.fullpathandfilename = movie.fullpathandfilename
  2714. movietoadd.filename = movie.filename
  2715. movietoadd.year = movie.year
  2716. movietoadd.filedate = movie.filedate
  2717. movietoadd.foldername = movie.foldername
  2718. movietoadd.rating = movie.rating
  2719. movietoadd.top250 = movie.top250
  2720. movietoadd.rootfolder = movie.rootfolder
  2721. newlist.Add(movietoadd)
  2722. End If
  2723. Next
  2724. filteredList = newlist
  2725. mov_CacheLoad()
  2726. filterOverride = False
  2727. Catch ex As Exception
  2728. ExceptionHandler.LogError(ex)
  2729. End Try
  2730. End Sub
  2731. Private Sub BatchRescraperToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BatchRescraperToolStripMenuItem.Click
  2732. rescrapeList.ResetFields()
  2733. Dim displaywizard As New frmBatchScraper
  2734. displaywizard.ShowDialog()
  2735. If rescrapeList.AnyEnabled Then
  2736. _rescrapeList.FullPathAndFilenames.Clear()
  2737. If DataGridViewMovies.SelectedRows.Count > 1 Then 'run batch wizard on multiple selected movies
  2738. For Each row As DataGridViewRow In DataGridViewMovies.SelectedRows
  2739. Dim fullpath As String = row.Cells("fullpathandfilename").Value.ToString
  2740. If Not File.Exists(fullpath) Then Continue For
  2741. If rescrapeList.EmptyMainTags AndAlso MovieHasEmptyMainTags(fullpath) Then Continue For
  2742. _rescrapeList.FullPathAndFilenames.Add(fullpath)
  2743. Next
  2744. Else 'Otherwise run batch wizard on all movies.
  2745. For Each row As DataGridViewRow In DataGridViewMovies.Rows
  2746. Dim m As Data_GridViewMovie = row.DataBoundItem
  2747. Dim fullpath As String = m.fullpathandfilename.ToString
  2748. If Not File.Exists(fullpath) Then Continue For
  2749. If rescrapeList.EmptyMainTags AndAlso MovieHasEmptyMainTags(fullpath) Then Continue For
  2750. _rescrapeList.FullPathAndFilenames.Add(fullpath)
  2751. Next
  2752. End If
  2753. RunBackgroundMovieScrape("BatchRescrape")
  2754. End If
  2755. End Sub
  2756. Public Function MovieHasEmptyMainTags(ByVal checkmovie As String) As Boolean
  2757. If rescrapeList.AnyNonMainEnabled Then Return True
  2758. For each movie As ComboList In oMovies.MovieCache
  2759. If Not movie.fullpathandfilename = checkmovie Then Continue For
  2760. If rescrapeList.rating AndAlso movie.rating < 1 Then Return False
  2761. If rescrapeList.votes AndAlso movie.Votes = 0 Then Return False
  2762. If rescrapeList.mpaa AndAlso movie.Certificate = "" Then Return False
  2763. If rescrapeList.genre AndAlso movie.genre = "" Then Return False
  2764. If rescrapeList.year AndAlso movie.year < 1900 Then Return False
  2765. If rescrapeList.top250 AndAlso movie.top250 = "" Then Return False
  2766. If rescrapeList.outline AndAlso movie.outline = "" Then Return False
  2767. If rescrapeList.plot AndAlso movie.plot = "" Then Return False
  2768. If rescrapeList.tagline AndAlso movie.tagline = "" Then Return False
  2769. If rescrapeList.runtime AndAlso movie.runtime = "" Then Return False
  2770. If rescrapeList.director AndAlso movie.director = "" Then Return False
  2771. If rescrapeList.credits AndAlso movie.credits = "" Then Return False
  2772. If rescrapeList.title AndAlso movie.title = "" Then Return False
  2773. If rescrapeList.premiered AndAlso movie.Premiered = "" Then Return False
  2774. If rescrapeList.stars AndAlso movie.stars = "" Then Return False
  2775. If rescrapeList.studio AndAlso movie.studios = "" Then Return False
  2776. If rescrapeList.country AndAlso movie.countries = "" Then Return False
  2777. If rescrapeList.metascore AndAlso movie.metascore = 0 Then Return False
  2778. Exit For
  2779. Next
  2780. Return True
  2781. End Function
  2782. 'Public Function GetTrailerPath(ByVal s As String)
  2783. ' Dim FileName As String = ""
  2784. ' For Each extension In Utilities.TrailerExtensions
  2785. ' FileName = IO.Path.Combine(s.Replace(IO.Path.GetFileName(s), ""), System.IO.Path.GetFileNameWithoutExtension(s) & "-trailer" & extension)
  2786. ' If File.Exists(FileName) Then Return FileName
  2787. ' Next
  2788. ' 'set default trailer path and filename
  2789. ' Return IO.Path.Combine(s.Replace(IO.Path.GetFileName(s), ""), System.IO.Path.GetFileNameWithoutExtension(s) & "-trailer.flv")
  2790. 'End Function
  2791. Private Sub mov_Play(ByVal type As String)
  2792. If DataGridViewMovies.SelectedRows.Count < 1 Then Return
  2793. Dim tempstring As String
  2794. tempstring = DataGridViewMovies.SelectedCells(NFO_INDEX).Value.ToString
  2795. Dim playlist As New List(Of String)
  2796. Select Case type
  2797. Case "Movie"
  2798. If tempstring.IndexOf("index.nfo") <> -1 Then
  2799. tempstring = tempstring.Replace(".nfo", ".bdmv")
  2800. Else
  2801. tempstring = Utilities.GetFileName(tempstring)
  2802. End If
  2803. playlist = Utilities.GetMediaList(tempstring)
  2804. Case "Trailer"
  2805. Dim movie = oMovies.LoadMovie(tempstring)
  2806. If movie.TrailerExists Then playlist.Add(movie.ActualTrailerPath)
  2807. Case "HomeMovie"
  2808. tempstring = CType(ListBox18.SelectedItem, ValueDescriptionPair).Value
  2809. tempstring = Utilities.GetFileName(tempstring)
  2810. playlist = Utilities.GetMediaList(tempstring)
  2811. End Select
  2812. If playlist.Count <= 0 Then
  2813. MsgBox("No Media File Found For This nfo")
  2814. Exit Sub
  2815. End If
  2816. LaunchPlayList(playlist)
  2817. End Sub
  2818. Public Function CleanMovieTitle(ByVal s As String) As String
  2819. Dim tmplist As New List(Of String)
  2820. Dim q = From el In MovSepLst Order By el.Length Descending
  2821. tmplist.AddRange(q.tolist)
  2822. For each item In tmplist
  2823. Dim t As String = " " & item
  2824. If s.Contains(t) Then s = s.Replace(t, "")
  2825. Next
  2826. tmplist.Clear()
  2827. Dim r = From el In ThreeDKeyWords Order By el.Length Descending
  2828. tmplist.AddRange(r.ToList)
  2829. For each item In tmplist
  2830. Dim t As String = " " & item & " "
  2831. If s.Contains(t) Then s = s.Replace(t, "")
  2832. If s.Contains(t.TrimEnd) Then s = s.Replace(t.TrimEnd, "")
  2833. Next
  2834. Return s
  2835. End Function
  2836. Public Sub LaunchPlayList(ByVal plist As List(Of String))
  2837. Statusstrip_Enable()
  2838. ToolStripStatusLabel2.Text = ""
  2839. ToolStripStatusLabel2.Visible = True
  2840. Dim tempstring = applicationPath & "\Settings\temp.m3u"
  2841. ToolStripStatusLabel2.Text = "Playing Movie...Creating m3u file:..." & tempstring
  2842. Application.DoEvents()
  2843. Dim aok As Boolean = True
  2844. If IO.File.Exists(tempstring) Then
  2845. aok = Utilities.SafeDeleteFile(tempstring)
  2846. End If
  2847. If aok Then
  2848. Dim file As New StreamWriter(tempstring, False, Encoding.GetEncoding(1252))
  2849. For Each part In plist
  2850. If part <> Nothing Then file.WriteLine(part)
  2851. Next
  2852. file.Close()
  2853. ToolStripStatusLabel2.Text &= "............Launching Player."
  2854. StartVideo(tempstring)
  2855. Else
  2856. ToolStripStatusLabel2.Text = "Failed to create playlist"
  2857. End If
  2858. statusstripclear.Start()
  2859. End Sub
  2860. Private Sub MovieFormInit()
  2861. workingMovie.filedate = Nothing
  2862. workingMovie.filename = Nothing
  2863. workingMovie.foldername = Nothing
  2864. workingMovie.fullpathandfilename = Nothing
  2865. workingMovie.genre = Nothing
  2866. workingMovie.id = Nothing
  2867. workingMovie.playcount = Nothing
  2868. workingMovie.lastplayed = Nothing
  2869. workingMovie.rating = Nothing
  2870. workingMovie.title = Nothing
  2871. workingMovie.top250 = Nothing
  2872. workingMovie.year = Nothing
  2873. workingMovie.MovieSet = Nothing
  2874. workingMovie.rootfolder = Nothing
  2875. titletxt.Text = ""
  2876. TextBox3.Text = ""
  2877. outlinetxt.Text = ""
  2878. TextBox34.Text = ""
  2879. plottxt.Text = ""
  2880. taglinetxt.Text = ""
  2881. txtStars.Text = ""
  2882. genretxt.Text = ""
  2883. premiertxt.Text = ""
  2884. creditstxt.Text = ""
  2885. directortxt.Text = ""
  2886. studiotxt.Text = ""
  2887. countrytxt.Text = ""
  2888. pathtxt.Text = ""
  2889. cbMovieDisplay_Actor.Items.Clear()
  2890. ratingtxt.Text = ""
  2891. runtimetxt.Text = ""
  2892. votestxt.Text = ""
  2893. top250txt.Text = ""
  2894. certtxt.Text = ""
  2895. PbMovieFanArt.Image = Nothing
  2896. PbMoviePoster.Image = Nothing
  2897. roletxt.Text = ""
  2898. PictureBoxActor.Image = Nothing
  2899. btnPlayMovie.Enabled = False
  2900. End Sub
  2901. Public Sub genretxt_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles genretxt.MouseDown
  2902. If e.Button = Windows.Forms.MouseButtons.Right Then
  2903. Dim multicount As Integer = 0
  2904. Try
  2905. Dim genre As String = ""
  2906. Dim listof As New List(Of str_genre)
  2907. Dim Multi As Boolean = DataGridViewMovies.SelectedRows.Count > 1
  2908. If Not Multi Then
  2909. Dim item As List(Of String) = workingMovieDetails.fullmoviebody.genre.Split("/").[Select](Function(p) p.Trim()).ToList
  2910. If item(0) = "" Then item.RemoveAt(0)
  2911. multicount = multicount +1
  2912. listof.Clear()
  2913. For Each i In item
  2914. Dim g As New str_genre
  2915. g.genre = i.Trim
  2916. g.count = 1
  2917. listof.Add(g)
  2918. Next
  2919. Else
  2920. For Each row As DataGridViewRow In DataGridViewMovies.SelectedRows
  2921. multicount = multicount +1
  2922. Dim genretxt As String = row.Cells("genre").Value.ToString
  2923. Dim spltgenre As List(Of String) = genretxt.Split("/").[Select](Function(p) p.Trim()).ToList
  2924. If spltgenre(0) = "" Then spltgenre.RemoveAt(0)
  2925. For Each i In spltgenre
  2926. Dim g As New str_genre
  2927. g.genre = i
  2928. g.count = 1
  2929. For each item In listof
  2930. If item.genre.ToLower = g.genre.ToLower Then
  2931. g.count = item.count
  2932. Exit For
  2933. End If
  2934. Next
  2935. If listof.Contains(g) Then
  2936. listof.RemoveAt(listof.IndexOf(g))
  2937. g.count = g.count + 1
  2938. End If
  2939. listof.Add(g)
  2940. Next
  2941. Next
  2942. End If
  2943. Dim frm As New frmGenreSelect
  2944. frm.multicount = multicount
  2945. frm.SelectedGenres = listof
  2946. frm.Init()
  2947. If frm.ShowDialog() = Windows.Forms.DialogResult.OK Then
  2948. listof.Clear()
  2949. listof.AddRange(frm.SelectedGenres)
  2950. If Not Multi Then
  2951. genre = ""
  2952. For each g In listof
  2953. If g.count = 0 Then Continue For
  2954. If genre = "" Then
  2955. genre = g.genre
  2956. Else
  2957. genre += " / " & g.genre
  2958. End If
  2959. Next
  2960. genretxt.Text = genre
  2961. Call mov_SaveQuick()
  2962. Else
  2963. Dim NfosToSave As List(Of String) = (From x As datagridviewrow In DataGridViewMovies.SelectedRows Select nfo=x.Cells("fullpathandfilename").Value.ToString).ToList
  2964. For Each nfo As String In NfosToSave
  2965. If Not File.Exists(nfo) Then Continue For
  2966. Dim movie As Movie = oMovies.LoadMovie(nfo)
  2967. If IsNothing(movie) Then Continue For
  2968. Dim genretxt As String = movie.ScrapedMovie.fullmoviebody.genre
  2969. Dim spgenre2 As List(Of String) = genretxt.Split("/").[Select](Function(p) p.Trim()).ToList
  2970. genre = ""
  2971. For Each g In listof
  2972. Dim ToAdd As Boolean = False
  2973. If g.count = 0 Then Continue For
  2974. If (g.count = 1 AndAlso spgenre2.Contains(g.genre)) OrElse g.count = 2 Then ToAdd = True
  2975. If Not ToAdd Then Continue For
  2976. If genre = "" Then
  2977. genre = g.genre
  2978. Else
  2979. genre += " / " & g.genre
  2980. End If
  2981. Next
  2982. movie.ScrapedMovie.fullmoviebody.genre = genre
  2983. movie.AssignMovieToCache()
  2984. movie.UpdateMovieCache()
  2985. movie.SaveNFO()
  2986. Application.DoEvents()
  2987. Next
  2988. End If
  2989. End If
  2990. frm.Dispose()
  2991. Catch
  2992. End Try
  2993. End If
  2994. End Sub
  2995. Public Sub DisplayMovie(Optional yielding As Boolean = False)
  2996. Try
  2997. DisplayMovie(DataGridViewMovies.SelectedCells, DataGridViewMovies.SelectedRows, yielding)
  2998. Catch
  2999. Return
  3000. End Try
  3001. End Sub
  3002. Public Sub DisplayMovie(ByVal selectedCells As DataGridViewSelectedCellCollection, ByVal selectedRows As DataGridViewSelectedRowCollection, yielding As Boolean)
  3003. Try
  3004. If selectedRows.Count = 1 Then
  3005. If LastMovieDisplayed = selectedCells(NFO_INDEX).Value.ToString Then Return
  3006. LastMovieDisplayed = selectedCells(NFO_INDEX).Value.ToString
  3007. Else
  3008. LastMovieDisplayed = ""
  3009. End If
  3010. Catch
  3011. Return
  3012. End Try
  3013. If yielding Then
  3014. _yield = True
  3015. Application.DoEvents()
  3016. _yield = False
  3017. End If
  3018. 'Clear all fields of the movie
  3019. MovieFormInit()
  3020. If selectedRows.Count = 0 Then Exit Sub
  3021. Dim needtoload As Boolean = False
  3022. Dim done As Boolean = False
  3023. Dim blnShow = (selectedRows.Count=1)
  3024. tsmiMov_PlayMovie.Visible = blnShow
  3025. tsmiMov_OpenFolder.Visible = blnShow
  3026. tsmiMov_ViewNfo.Visible = blnShow
  3027. tsmiMov_Separator1.Visible = blnShow
  3028. tsmiMov_Separator7.Visible = blnShow
  3029. tsmiMov_FanartBrowserAlt.Visible = blnShow
  3030. tsmiMov_PosterBrowserAlt.Visible = blnShow
  3031. tsmiMov_EditMovieAlt.Visible = blnShow
  3032. tsmiMov_ReloadFromCache.Visible = blnShow
  3033. If Yield(yielding) Then Return
  3034. If selectedRows.Count = 1 Then
  3035. 'mov_ToolStripPlayMovie.Visible = True
  3036. 'mov_ToolStripOpenFolder.Visible = True
  3037. 'mov_ToolStripViewNfo.Visible = True
  3038. 'ToolStripSeparator17.Visible = True
  3039. 'ToolStripSeparator24.Visible = True
  3040. 'ToolStripSeparator4.Visible = True
  3041. 'mov_ToolStripFanartBrowserAlt.Visible = True
  3042. 'mov_ToolStripPosterBrowserAlt.Visible = True
  3043. 'mov_ToolStripEditMovieAlt.Visible = True
  3044. 'mov_ToolStripReloadFromCache.Visible = True
  3045. If titletxt.Visible = False Then
  3046. needtoload = True
  3047. End If
  3048. titletxt.Visible = True
  3049. TextBoxMutisave.Visible = False
  3050. btnMovRescrape.Visible = True
  3051. SplitContainer2.Visible = True
  3052. Label128.Visible = False
  3053. Label75.Visible = True
  3054. TextBox34.Visible = True
  3055. If Yield(yielding) Then Return
  3056. If Yield(yielding) Then Return
  3057. Dim query = From f In oMovies.Data_GridViewMovieCache Where f.fullpathandfilename = selectedCells(NFO_INDEX).Value.ToString
  3058. Dim queryList As List(Of Data_GridViewMovie) = query.ToList()
  3059. If Yield(yielding) Then Return
  3060. If Not queryList.Count = 0 AndAlso Not File.Exists(queryList(0).MoviePathAndFileName) Then 'Detect if video file is missing
  3061. If Mov_MissingMovie(queryList) Then Exit Sub
  3062. End If
  3063. If queryList.Count > 0 Then
  3064. workingMovie.filedate = queryList(0).filedate
  3065. workingMovie.filename = queryList(0).filename
  3066. workingMovie.foldername = queryList(0).foldername
  3067. workingMovie.fullpathandfilename = queryList(0).fullpathandfilename
  3068. workingMovie.genre = queryList(0).genre
  3069. workingMovie.id = queryList(0).id
  3070. workingMovie.playcount = queryList(0).playcount
  3071. workingMovie.rating = queryList(0).Rating
  3072. workingMovie.title = queryList(0).title
  3073. workingMovie.top250 = queryList(0).top250
  3074. workingMovie.year = queryList(0).year
  3075. workingMovie.FolderSize = queryList(0).FolderSize
  3076. workingMovie.rootfolder = queryList(0).rootfolder
  3077. workingMovie.MovieSet = queryList(0).movieset
  3078. workingMovie.tmdbid = queryList(0).tmdbid
  3079. tsmiMov_PlayTrailer.Visible = Not queryList(0).MissingTrailer
  3080. tsmiMov_ViewMovieDbSetPage.Enabled = Not IsNothing(workingMovie.MovieSet) AndAlso Integer.TryParse(workingMovie.MovieSet.MovieSetId,Nothing)
  3081. tsmiMov_ViewMovieDbMoviePage.Enabled = Integer.TryParse(workingMovie.tmdbid,Nothing) And Not workingMovie.tmdbid=""
  3082. Call mov_FormPopulate(yielding)
  3083. Else
  3084. If needtoload = True Then Call mov_FormPopulate(yielding)
  3085. End If
  3086. done = True
  3087. Else
  3088. outlinetxt.Text = ""
  3089. PbMovieFanArt.Image = Nothing
  3090. PbMoviePoster.Image = Nothing
  3091. roletxt.Text = ""
  3092. PictureBoxActor.Image = Nothing
  3093. SplitContainer2.Visible = False
  3094. titletxt.Visible = False
  3095. Label75.Visible = False
  3096. TextBox34.Visible = False
  3097. TextBoxMutisave.Visible = True
  3098. Panel6.Visible = False
  3099. FanTvArtList.Items.Clear()
  3100. btnMovRescrape.Visible = False
  3101. Label128.Visible = True
  3102. cbMovieDisplay_MovieSet.Items.Insert(0, "")
  3103. cbMovieDisplay_MovieSet.SelectedIndex = 0
  3104. cbUsrRated.SelectedIndex = -1
  3105. Dim add As Boolean = True
  3106. Dim watched As String = ""
  3107. For Each sRow As DataGridViewRow In selectedRows
  3108. Dim old As String = watched
  3109. For Each item In oMovies.MovieCache
  3110. If item.fullpathandfilename = sRow.Cells(NFO_INDEX).Value.ToString Then
  3111. If watched = "" Then
  3112. watched = item.playcount
  3113. old = watched
  3114. Else
  3115. watched = item.playcount
  3116. End If
  3117. If watched <> old Then
  3118. add = False
  3119. End If
  3120. Exit For
  3121. End If
  3122. If Yield(yielding) Then Return
  3123. Next
  3124. Next
  3125. If add = False Then
  3126. btnMovWatched.Text = ""
  3127. btnMovWatched.BackColor = Color.Gray
  3128. Else
  3129. If watched = "1" Then
  3130. btnMovWatched.Text = "&Watched"
  3131. btnMovWatched.BackColor = Color.LawnGreen
  3132. btnMovWatched.Refresh()
  3133. Else
  3134. btnMovWatched.Text = "Un&watched"
  3135. btnMovWatched.BackColor = Color.Red
  3136. btnMovWatched.Refresh()
  3137. End If
  3138. End If
  3139. End If
  3140. End Sub
  3141. #Region "DataGridViewMovies Events"
  3142. Private Sub DataGridViewMovies_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridViewMovies.CellClick
  3143. _yield = True
  3144. Application.DoEvents()
  3145. _yield = False
  3146. DisplayMovie()
  3147. End Sub
  3148. Private Sub DataGridViewMovies_ColumnHeaderMouseClick( sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridViewMovies.ColumnHeaderMouseClick
  3149. Dim col_index = e.ColumnIndex
  3150. DGVMoviesColName = DataGridViewMovies.Columns(col_index).Name
  3151. btnreverse.Checked = Not btnreverse.Checked
  3152. btnreverse_CheckedChanged(Nothing,Nothing)
  3153. End Sub
  3154. Private Sub DataGridViewMovies_DoubleClick(ByVal sender As System.Object, ByVal e As MouseEventArgs) Handles DataGridViewMovies.DoubleClick
  3155. Try
  3156. Dim info = DataGridViewMovies.HitTest(e.X, e.Y)
  3157. If info.ColumnX = -1 Then
  3158. Return
  3159. End If
  3160. Try
  3161. If IsNumeric(DataGridViewMovies.SelectedCells(NFO_INDEX).Value.ToString) Then Return
  3162. Catch
  3163. Return
  3164. End Try
  3165. If info.Type <> DataGridViewHitTestType.ColumnHeader Then
  3166. mov_Play("Movie")
  3167. End If
  3168. Catch ex As Exception
  3169. ExceptionHandler.LogError(ex)
  3170. End Try
  3171. End Sub
  3172. Private Sub DataGridViewMovies_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridViewMovies.DragDrop
  3173. Dim files() As String
  3174. files = e.Data.GetData(DataFormats.FileDrop)
  3175. For f = 0 To UBound(files)
  3176. If IO.File.Exists(files(f)) Then
  3177. ' This path is a file.
  3178. Dim skip As Boolean = False
  3179. For Each item In oMovies.MovieCache
  3180. If item.fullpathandfilename = files(f) Then
  3181. skip = True
  3182. Exit For
  3183. End If
  3184. Next
  3185. For Each item In droppedItems
  3186. If item = files(f) Then
  3187. skip = True
  3188. Exit For
  3189. End If
  3190. Next
  3191. If mov_FileCheckValid(files(f)) = True Then
  3192. If skip = False Then droppedItems.Add(files(f))
  3193. End If
  3194. Else
  3195. If IO.Directory.Exists(files(f)) Then
  3196. ' This path is a directory.
  3197. Dim di As New IO.DirectoryInfo(files(f))
  3198. Dim diar1 As IO.FileInfo() = di.GetFiles()
  3199. Dim dra As IO.FileInfo
  3200. 'list the names of all files in the specified directory
  3201. For Each dra In diar1
  3202. Dim skip As Boolean = False
  3203. For Each item In oMovies.MovieCache
  3204. If item.fullpathandfilename = dra.FullName Then
  3205. skip = True
  3206. Exit For
  3207. End If
  3208. Next
  3209. For Each item In droppedItems
  3210. If item = dra.FullName Then
  3211. skip = True
  3212. Exit For
  3213. End If
  3214. Next
  3215. If mov_FileCheckValid(dra.FullName) = True Then
  3216. If skip = False Then droppedItems.Add(dra.FullName)
  3217. End If
  3218. Next
  3219. End If
  3220. End If
  3221. Next
  3222. If droppedItems.Count > 0 Then
  3223. DoScrapeDroppedFiles()
  3224. End If
  3225. End Sub
  3226. Private Sub DataGridViewMovies_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridViewMovies.DragEnter
  3227. Try
  3228. e.Effect = DragDropEffects.Copy
  3229. Catch ex As Exception
  3230. ExceptionHandler.LogError(ex)
  3231. End Try
  3232. End Sub
  3233. Private Sub DataGridViewMovies_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridViewMovies.KeyUp
  3234. DisplayMovie(True)
  3235. End Sub
  3236. Private Sub DataGridViewMovies_KeyPress(sender As Object, e As KeyPressEventArgs) Handles DataGridViewMovies.Keypress
  3237. If [Char].IsLetter(e.KeyChar) or [Char].IsDigit(e.KeyChar) Then
  3238. Dim ekey As String = e.KeyChar.ToString.ToLower
  3239. keypresstimer.Stop()
  3240. MovieKeyPress &= ekey
  3241. keypresstimer.Start()
  3242. For i As Integer = 0 To (DataGridViewMovies.Rows.Count) - 1
  3243. Dim rtitle As String = DataGridViewMovies.Rows(i).Cells("DisplayTitle").Value.ToString.ToLower
  3244. If rtitle.StartsWith(MovieKeyPress) Then
  3245. Dim icell As Integer = DataGridViewMovies.CurrentCell.ColumnIndex
  3246. DataGridViewMovies.CurrentCell = DataGridViewMovies.Rows(i).Cells(icell)
  3247. DisplayMovie()
  3248. Return
  3249. End If
  3250. Next
  3251. End If
  3252. End Sub
  3253. Private Sub DataGridViewMovies_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGridViewMovies.MouseLeave
  3254. TooltipGridViewMovies1.Visible = False
  3255. TimerToolTip.Enabled = False
  3256. End Sub
  3257. Private Sub DataGridViewMovies_MouseHover(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGridViewMovies.MouseHover
  3258. TimerToolTip.Start()
  3259. End Sub
  3260. Private Sub DataGridViewMovies_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridViewMovies.MouseMove
  3261. Try
  3262. Dim MousePos As Point = DataGridViewMovies.PointToClient(Control.MousePosition)
  3263. Dim objHitTestInfo As DataGridView.HitTestInfo = DataGridViewMovies.HitTest (MousePos.X, MousePos.Y)
  3264. Dim MouseRowIndex As Integer = objHitTestInfo.RowIndex
  3265. TimerToolTip.Enabled = True
  3266. If MouseRowIndex > -1 Then
  3267. Dim Runtime As String = ""
  3268. Dim RatingRuntime As String = ""
  3269. Dim movietitle As String = DataGridViewMovies.Rows(MouseRowIndex).Cells("Title").Value.ToString
  3270. Dim movieYear As String = DataGridViewMovies.Rows(MouseRowIndex).Cells("Year").Value.ToString
  3271. Dim Rating As String = "Rating: " & DataGridViewMovies.Rows(MouseRowIndex).Cells("Rating").Value.ToString.FormatRating
  3272. If DataGridViewMovies.Rows(MouseRowIndex).Cells("Runtime").Value.ToString.Length > 3 Then
  3273. Runtime = "Runtime: " & DataGridViewMovies.Rows(MouseRowIndex).Cells("IntRuntime").Value.ToString
  3274. End If
  3275. RatingRuntime = Rating & " " & Runtime
  3276. Dim Plot As String = DataGridViewMovies.Rows(MouseRowIndex).Cells("Plot").Value.ToString
  3277. If objHitTestInfo.RowY > -1 Then
  3278. TooltipGridViewMovies1.Visible = Pref.ShowMovieGridToolTip
  3279. TooltipGridViewMovies1.Textinfo(Plot)
  3280. TooltipGridViewMovies1.TextLabelMovieYear(movieYear)
  3281. TooltipGridViewMovies1.TextMovieName(movietitle)
  3282. TooltipGridViewMovies1.TextLabelRatingRuntime(RatingRuntime)
  3283. TooltipGridViewMovies1.Left = MousePos.X + 10
  3284. TooltipGridViewMovies1.Top = MousePos.Y + TooltipGridViewMovies1.Height + 30
  3285. End If
  3286. End If
  3287. Catch
  3288. End Try
  3289. End Sub
  3290. Private Sub DataGridViewMovies_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridViewMovies.MouseUp
  3291. tsmiMov_PlayTrailer.Visible = True
  3292. tsmiMov_ViewMovieDbSetPage.Enabled = False
  3293. tsmiMov_ViewMovieDbMoviePage.Enabled = False
  3294. If e.Button = MouseButtons.Right Then
  3295. Dim multiselect As Boolean = False
  3296. 'If more than one movie is selected, check if right-click is on the selection.
  3297. If DataGridViewMovies.SelectedRows.Count > 1 Then
  3298. multiselect = True
  3299. End If
  3300. 'Otherwise, bring up the context menu for a single movie
  3301. If multiselect = True Then
  3302. tsmiMov_MovieName.BackColor = Color.Orange
  3303. tsmiMov_MovieName.Text = "Multisave Mode"
  3304. tsmiMov_MovieName.Font = New Font("Arial", 10, FontStyle.Bold)
  3305. tsmiMov_PlayTrailer.Visible = False 'multisave mode the "Play Trailer' is always hidden
  3306. Else
  3307. Try
  3308. 'update context menu with movie name & also if we show the 'Play Trailer' menu item
  3309. tsmiMov_MovieName.BackColor = Color.Honeydew
  3310. tsmiMov_MovieName.Text = "'" & DataGridViewMovies.SelectedCells(NFO_INDEX+4).Value.ToString & "'"
  3311. tsmiMov_MovieName.Font = New Font("Arial", 10, FontStyle.Bold)
  3312. Dim movie As Data_GridViewMovie = (From f In oMovies.Data_GridViewMovieCache Where f.fullpathandfilename = DataGridViewMovies.selectedCells(NFO_INDEX).Value.ToString).ToList(0)
  3313. tsmiMov_PlayTrailer.Visible = Not movie.MissingTrailer
  3314. tsmiMov_ViewMovieDbSetPage.Enabled = Not IsNothing(workingMovie.MovieSet) AndAlso Integer.TryParse(movie.MovieSet.MovieSetId,Nothing)
  3315. tsmiMov_ViewMovieDbMoviePage.Enabled = Integer.TryParse(workingMovie.tmdbid,Nothing) And Not workingMovie.tmdbid=""
  3316. Catch
  3317. End Try
  3318. End If
  3319. End If
  3320. End Sub
  3321. #End Region ' DataGridViewMovies Events
  3322. Private Function Mov_MissingMovie(ByVal qrylst As List(Of Data_GridViewMovie)) As Boolean
  3323. Dim missingstr As String
  3324. Dim Filepathandname As String
  3325. Filepathandname = qrylst(0).fullpathandfilename.Replace(".nfo","")
  3326. missingstr = "Video file Missing" & vbCrLf & Filepathandname & vbCrLf & "Do you wish to remove from database?"
  3327. If MsgBox(missingstr,MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
  3328. Mov_RemoveMovie()
  3329. Return True
  3330. End If
  3331. Return False
  3332. End Function
  3333. Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
  3334. Try
  3335. If filterOverride = False Then
  3336. If TextBox1.Text.Length > 0 Then
  3337. TextBox1.BackColor = Color.Pink
  3338. Else
  3339. TextBox1.BackColor = Color.White
  3340. End If
  3341. TextBox1.Refresh()
  3342. Call Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  3343. End If
  3344. Catch ex As Exception
  3345. ExceptionHandler.LogError(ex)
  3346. End Try
  3347. End Sub
  3348. Private Sub TabControl2_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabControl2.MouseWheel
  3349. Try
  3350. If TabControl2.SelectedIndex = 1 Then
  3351. mouseDelta = e.Delta / 120
  3352. Try
  3353. tpMovWall.AutoScrollPosition = New Point(0, tpMovWall.VerticalScroll.Value - (mouseDelta * 30))
  3354. Catch ex As Exception
  3355. #If SilentErrorScream Then
  3356. Throw ex
  3357. #End If
  3358. End Try
  3359. End If
  3360. Catch ex As Exception
  3361. ExceptionHandler.LogError(ex)
  3362. End Try
  3363. End Sub
  3364. Private Sub TabControl2_Selecting(ByVal sender As Object, ByVal e As CancelEventArgs) Handles TabControl2.Selecting
  3365. Dim tab As String = TabControl2.SelectedTab.Text
  3366. If tab.ToLower = "movie preferences" Then
  3367. e.Cancel = True
  3368. OpenPreferences(1)
  3369. End If
  3370. End Sub
  3371. Private Sub TabControl2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabControl2.SelectedIndexChanged
  3372. mov_PreferencesDisplay()
  3373. Dim tempstring As String = ""
  3374. Dim tab As String = TabControl2.SelectedTab.Name
  3375. If tab <> tpMovMain.Name And tab <> tpMovFolders.Name And tab <> tpMovStubs.Name Then
  3376. 'If tab <> "Main Browser" And tab <> "Folders" And tab <> "Movie Preferences" And tab <> "Media Stubs" Then
  3377. If workingMovieDetails Is Nothing And movieFolders.Count = 0 And Pref.offlinefolders.Count = 0 Then
  3378. Me.TabControl2.SelectedIndex = currentTabIndex
  3379. MsgBox("There are no movies in your list to work on" & vbCrLf & "Add movie folders in the Folders Tab" & vbCrLf & "Then select the ""Search For New Movies"" Tab")
  3380. Exit Sub
  3381. ElseIf workingMovieDetails Is Nothing And movieFolders.Count > 0 Then 'And tab <> "Search for new movies" Then
  3382. Me.TabControl2.SelectedIndex = currentTabIndex
  3383. If oMovies.MovieCache.Count > 0 Then
  3384. MsgBox("No Movie is selected")
  3385. Exit Sub
  3386. Else
  3387. MsgBox("There are no movies in your list to work on" & vbCrLf & "If The Folders You Have Added In The" & vbCrLf & "Preferences Menu Contain Movie Files" & vbCrLf & "Then select the ""Search For New Movies"" Tab")
  3388. Exit Sub
  3389. End If
  3390. End If
  3391. Else
  3392. currentTabIndex = Me.TabControl2.SelectedIndex
  3393. End If
  3394. If tab = tpMovWebBrowser.Name Then 'Movie WebBrowser tab.
  3395. 'If tab = "" Then
  3396. If workingMovieDetails.fullmoviebody.imdbid <> Nothing OrElse workingMovieDetails.fullmoviebody.tmdbid <> "" Then
  3397. Dim weburl As String = ""
  3398. Dim TMDB As String = workingMovieDetails.fullmoviebody.tmdbid
  3399. Dim IMDB As String = workingMovieDetails.fullmoviebody.imdbid
  3400. Dim TMDBLan As List(Of String) = Utilities.GetTmdbLanguage(Pref.TMDbSelectedLanguageName)
  3401. If (IMDB <> "" And IMDB <> "0") AndAlso TMDB <> "" Then
  3402. Dim tpi As Integer = tpMovWebBrowser.ImageIndex
  3403. If tpi = 1 Then
  3404. weburl = "https://www.themoviedb.org/movie/" & TMDB & "?language=" & TMDBLan(0) 'de"
  3405. Else
  3406. weburl = "http://www.imdb.com/title/" & IMDB & "/"
  3407. End If
  3408. ElseIf (IMDB <> "" And IMDB <> "0") AndAlso TMDB = "" Then
  3409. weburl = "http://www.imdb.com/title/" & IMDB & "/"
  3410. ElseIf IMDB = "0" AndAlso TMDB <> "" Then
  3411. weburl = "https://www.themoviedb.org/movie/" & TMDB & "?language=" & TMDBLan(0) 'de"
  3412. End If
  3413. If Pref.externalbrowser = True Then
  3414. Me.TabControl2.SelectedIndex = currentTabIndex
  3415. 'AnotherPhil bug fix - If the default browser is <goz> IE <goz/> then not stating the exe throws an exception
  3416. OpenUrl(weburl)
  3417. Else
  3418. Try
  3419. currentTabIndex = TabControl2.SelectedIndex
  3420. WebBrowser2.Hide()
  3421. WebBrowser2.Navigate("about:blank")
  3422. Do Until WebBrowser2.ReadyState = WebBrowserReadyState.Complete
  3423. Application.DoEvents()
  3424. System.Threading.Thread.Sleep(100)
  3425. Loop
  3426. WebBrowser2.Show()
  3427. If IsNothing(WebBrowser2.Url) OrElse WebBrowser2.Url.AbsoluteUri.ToLower.ToString <> weburl Then
  3428. WebBrowser2.Stop()
  3429. WebBrowser2.ScriptErrorsSuppressed = True
  3430. WebBrowser2.Navigate(weburl)
  3431. currentTabIndex = TabControl2.SelectedIndex
  3432. End If
  3433. Catch
  3434. WebBrowser2.Stop()
  3435. WebBrowser2.ScriptErrorsSuppressed = True
  3436. WebBrowser2.Navigate(weburl)
  3437. End Try
  3438. WebBrowser2.Focus()
  3439. End If
  3440. Else
  3441. MsgBox("No IMDB or TMDB ID is available for this movie")
  3442. End If
  3443. ElseIf tab = tpMovMain.Name Then 'Movie Main Browser tab
  3444. 'ElseIf tab = "Main Browser" Then
  3445. 'Need to update displayed movies list as user may have invalidated it by have a 'missing...' filter selected and assigning one or more missing items
  3446. currentTabIndex = TabControl2.SelectedIndex
  3447. UpdateFilteredList()
  3448. ElseIf tab = tpMovFileDetails.Name Then 'Movie File Details tab
  3449. 'ElseIf tab.ToLower = "file details" Then
  3450. currentTabIndex = TabControl2.SelectedIndex
  3451. If TextBox8.Text = "" Then Call util_FileDetailsGet()
  3452. ElseIf tab = tpMovFanart.Name Then 'Movie Fanart tab
  3453. 'ElseIf tab.ToLower = "fanart" Then
  3454. Dim isrootfolder As Boolean = False
  3455. If Pref.movrootfoldercheck Then
  3456. For Each moviefolder In movieFolders
  3457. Dim movfolder As String = workingMovieDetails.fileinfo.fullpathandfilename.Replace("\" & workingMovieDetails.fileinfo.filename, "")
  3458. If moviefolder.rpath = movfolder Then
  3459. isrootfolder = True 'Check movie isn't in a rootfolder, if so, disable extrathumbs option from displaying
  3460. Exit For
  3461. End If
  3462. Next
  3463. End If
  3464. If String.IsNullOrEmpty(tb_MovFanartScrnShtTime.Text) Then tb_MovFanartScrnShtTime.Text = "50"
  3465. GroupBoxFanartExtrathumbs.Enabled = Not isrootfolder 'Or usefoldernames Or allfolders ' Visible 'hide or show fanart/extrathumbs depending of if we are using foldenames or not (extrathumbs needs foldernames to be used)
  3466. UpdateMissingFanartNav()
  3467. If Panel2.Controls.Count = 0 Then
  3468. btn_MovFanartScrnSht.Visible = False
  3469. tb_MovFanartScrnShtTime.Visible = False
  3470. Label2.Visible = False
  3471. Call mov_FanartLoad()
  3472. End If
  3473. If Panel2.Controls.Count = 1 AndAlso Panel2.Controls().Item(0).GetType Is GetType(Label) Then
  3474. btn_MovFanartScrnSht.Visible = True
  3475. tb_MovFanartScrnShtTime.Visible = True
  3476. Label2.Visible = True
  3477. End If
  3478. currentTabIndex = TabControl2.SelectedIndex
  3479. If Panel2.Controls.Count > 1 Then EnableFanartScrolling()
  3480. ElseIf tab = tpMovPoster.Name Then 'Poster Tab
  3481. 'ElseIf tab.ToLower = "posters" Then
  3482. currentTabIndex = TabControl2.SelectedIndex
  3483. gbMoviePostersAvailable.Refresh()
  3484. btnMovPosterToggle.Visible = workingMovieDetails.fullmoviebody.MovieSet.MovieSetId <> ""
  3485. UpdateMissingPosterNav()
  3486. If Pref.MovPosterTabTMDBSelect Then btn_TMDb_posters.PerformClick()
  3487. ElseIf tab = tpMovChange.Name Then 'Change Movie
  3488. 'ElseIf tab.ToLower = "change movie" Then
  3489. Call mov_ChangeMovieSetup(MovieSearchEngine)
  3490. currentTabIndex = TabControl2.SelectedIndex
  3491. ElseIf tab = tpMovWall.Name Then 'Wall Tab
  3492. 'ElseIf tab.ToLower = "wall" Then
  3493. Call mov_WallSetup()
  3494. ElseIf tab = tpMovSetsTags.Name Then 'This will become obsolete
  3495. 'ElseIf tab.ToLower = "moviesets & tags" Then
  3496. Call MovieSetsAndTagsSetup()
  3497. ElseIf tab = tpMovSets.Name Then 'Movie Sets & Tags tab
  3498. 'ElseIf tab.ToLower = "moviesets & tags" Then
  3499. Call MovieSetsAndTagsSetup() '' Change this to split Movie Sets and Tags
  3500. ElseIf tab = tpMovTags.Name Then 'Movie Sets & Tags tab
  3501. 'ElseIf tab.ToLower = "moviesets & tags" Then
  3502. Call MovieSetsAndTagsSetup() '' Change this to split Movie Sets and Tags
  3503. ElseIf tab = tpMovFanartTv.Name Then 'Fanart.Tv tab
  3504. 'ElseIf tab.ToLower = "fanart.tv"
  3505. UcFanartTv1.ucFanartTv_Refresh(workingMovieDetails)
  3506. ElseIf tab = tpMovTable.Name Then 'Table tab
  3507. 'ElseIf tab.ToLower = "table" Then
  3508. currentTabIndex = TabControl2.SelectedIndex
  3509. Call mov_TableSetup()
  3510. Else
  3511. currentTabIndex = TabControl2.SelectedIndex
  3512. End If
  3513. End Sub
  3514. Private Sub TabControl2_Selecting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TabControlCancelEventArgs) Handles TabControl2.Selecting
  3515. Try
  3516. If Not IsNothing(messbox) AndAlso messbox.visible Then e.Cancel = True
  3517. Dim selOption = cbFilterGeneral.Text.RemoveAfterMatch
  3518. If selOption.IndexOf("Missing from set")=0 Then e.Cancel = True
  3519. Catch
  3520. End Try
  3521. End Sub
  3522. Private Sub TabControl2_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs) Handles TabControl2.MouseClick
  3523. If e.Button = Windows.Forms.MouseButtons.Right Then
  3524. For index As Integer = 0 To TabControl2.TabCount - 1 Step 1
  3525. If TabControl2.GetTabRect(index).Contains(e.Location) Then
  3526. If index = 8 Then
  3527. Dim tpi As Integer = tpMovWebBrowser.ImageIndex
  3528. If tpi = 0 Then
  3529. tpMovWebBrowser.ImageIndex = 1
  3530. Else
  3531. tpMovWebBrowser.ImageIndex = 0
  3532. End If
  3533. tpMovWebBrowser.Refresh()
  3534. End If
  3535. Exit For
  3536. End If
  3537. Next index
  3538. End If
  3539. End Sub
  3540. Private Sub mov_ChangeMovieSetup(ByVal engine As String)
  3541. Dim tempstring As String = ""
  3542. Dim isroot As Boolean = Pref.GetRootFolderCheck(workingMovieDetails.fileinfo.fullpathandfilename)
  3543. If Pref.usefoldernames = False OrElse isroot Then
  3544. tempstring = Utilities.RemoveFilenameExtension(IO.Path.GetFileName(workingMovieDetails.fileinfo.fullpathandfilename))
  3545. Else
  3546. tempstring = Utilities.GetLastFolder(workingMovieDetails.fileinfo.fullpathandfilename)
  3547. End If
  3548. If workingMovieDetails.fileinfo.fullpathandfilename.ToLower.IndexOf("\video_ts\") <> -1 Then
  3549. tempstring = Utilities.GetLastFolder(workingMovieDetails.fileinfo.fullpathandfilename)
  3550. End If
  3551. Dim url As String
  3552. If engine = "imdb" Then
  3553. url = Pref.imdbmirror & "find?s=tt&q=" & Utilities.CleanFileName(tempstring)
  3554. Else
  3555. url = "http://www.themoviedb.org/search?query=" & Utilities.CleanFileName(tempstring)
  3556. End If
  3557. Dim uri As New Uri(url)
  3558. WebBrowser1.Stop()
  3559. WebBrowser1.ScriptErrorsSuppressed = True
  3560. WebBrowser1.Navigate(uri.AbsoluteUri)
  3561. WebBrowser1.Refresh()
  3562. Panel2.Visible = True
  3563. End Sub
  3564. Public Sub util_OpenFolder(ByVal path As String)
  3565. Dim tempstring As String = ""
  3566. Dim action As String = String.Empty
  3567. Dim errors As String = String.Empty
  3568. Try
  3569. If path <> "" Then
  3570. tempstring = path
  3571. Try
  3572. If Not tempstring.ToLower.Contains("nfo") Then
  3573. errors = "Trying to open Folder :- " & tempstring
  3574. action = "Command - ""Call Shell(""explorer """ & tempstring & ", AppWinStyle.NormalFocus)"""
  3575. Call Shell("explorer " & """" & tempstring & """", AppWinStyle.NormalFocus) 'opens the selected folder showing contents, no focus on any file.
  3576. Else
  3577. errors = "Trying to open Folder :- " & tempstring
  3578. action = "Command - ""Call Shell(""explorer /select,""" & tempstring & ", AppWinStyle.NormalFocus)"""
  3579. Call Shell("explorer /select," & """" & tempstring & """", AppWinStyle.NormalFocus) 'this shows the item as selected provided as tempstring i.e. a folder or a file (.nfo)
  3580. End If
  3581. Catch ex As Exception
  3582. MsgBox("Can't open folder :- " & path)
  3583. Call util_ErrorLog(action, errors)
  3584. End Try
  3585. Else
  3586. MsgBox("No Folder To Open")
  3587. End If
  3588. Catch
  3589. MsgBox("No Folder To Open")
  3590. End Try
  3591. End Sub
  3592. Private Sub mov_FanartLoad()
  3593. rbMovFanart.Checked = True
  3594. MovFanartToggle = False
  3595. btnMovFanartToggle.Visible = workingMovieDetails.fullmoviebody.MovieSet.MovieSetId <> ""
  3596. Dim isfanartpath As String = workingMovieDetails.fileinfo.fanartpath
  3597. Dim isvideotspath As String = If(workingMovieDetails.fileinfo.videotspath = "", "", workingMovieDetails.fileinfo.videotspath + "fanart.jpg")
  3598. Dim movfanartpath As String = Utilities.DefaultFanartPath
  3599. If isfanartpath <> Nothing Or isvideotspath <> "" Then
  3600. Try
  3601. If IO.File.Exists(isvideotspath) Then
  3602. movfanartpath = isvideotspath
  3603. ElseIf IO.File.Exists(isfanartpath) Then
  3604. movfanartpath = isfanartpath
  3605. End If
  3606. util_ImageLoad(PictureBox2, movfanartpath, Utilities.DefaultFanartPath)
  3607. If movfanartpath = "" Then
  3608. lblMovFanartWidth.Text = ""
  3609. lblMovFanartHeight.Text = ""
  3610. Else
  3611. lblMovFanartWidth.Text = PictureBox2.Image.Width
  3612. lblMovFanartHeight.Text = PictureBox2.Image.Height
  3613. End If
  3614. Catch ex As Exception
  3615. End Try
  3616. End If
  3617. MovFanartDisplay()
  3618. End Sub
  3619. Public Sub MovFanartClear()
  3620. Try
  3621. For i = Panel2.Controls.Count - 1 To 0 Step -1
  3622. Panel2.Controls.RemoveAt(i)
  3623. Next
  3624. Catch
  3625. End Try
  3626. End Sub
  3627. Public Sub MovFanartDisplay(Optional ByVal SetId As String = "")
  3628. Me.Refresh()
  3629. fanartArray.Clear()
  3630. messbox = New frmMessageBox("", "Retrieving Fanart...", "Please wait...")
  3631. messbox.Show()
  3632. messbox.Refresh()
  3633. Dim tmdb As New TMDb
  3634. If SetId = "" Then
  3635. tmdb.Imdb = If(workingMovieDetails.fullmoviebody.imdbid.Contains("tt"), workingMovieDetails.fullmoviebody.imdbid, "")
  3636. tmdb.TmdbId = workingMovieDetails.fullmoviebody.tmdbid
  3637. Try
  3638. fanartArray.AddRange(tmdb.McFanart)
  3639. Catch
  3640. End Try
  3641. Else
  3642. tmdb.SetId = SetId
  3643. Try
  3644. fanartArray.AddRange(tmdb.McSetFanart)
  3645. Catch
  3646. End Try
  3647. End If
  3648. messbox.TextBox2.Text = "Setting up display...."
  3649. messbox.Refresh()
  3650. Try
  3651. If fanartArray.Count > 0 Then
  3652. Dim MovFanartPicBox As New List(Of FanartPicBox)
  3653. Dim location As Integer = 0
  3654. Dim itemcounter As Integer = 0
  3655. For Each item In fanartArray
  3656. Dim thispicbox As New FanartPicBox
  3657. fanartBoxes() = New PictureBox()
  3658. With fanartBoxes
  3659. .Location = New Point(0, location)
  3660. If fanartArray.Count > 2 Then
  3661. .Width = 410
  3662. .Height = 233
  3663. Else
  3664. .Width = 424
  3665. .Height = 243
  3666. End If
  3667. .SizeMode = PictureBoxSizeMode.Zoom
  3668. .Visible = True
  3669. .BorderStyle = BorderStyle.Fixed3D
  3670. .Name = "moviefanart" & itemcounter.ToString
  3671. AddHandler fanartBoxes.DoubleClick, AddressOf util_ZoomImage2
  3672. End With
  3673. thispicbox.pbox = fanartBoxes
  3674. thispicbox.imagepath = item.ldurl
  3675. MovFanartPicBox.Add(thispicbox)
  3676. Application.DoEvents()
  3677. If fanartArray.Count > 2 Then
  3678. fanartCheckBoxes() = New RadioButton()
  3679. With fanartCheckBoxes
  3680. .BringToFront()
  3681. .Location = New Point(199, location + 229)
  3682. .Name = "moviefanartcheckbox" & itemcounter.ToString
  3683. End With
  3684. resLabels = New Label()
  3685. With resLabels
  3686. .BringToFront()
  3687. .Location = New Point(0, location + 235)
  3688. .Name = "label" & itemcounter.ToString
  3689. .Text = "(" & item.hdwidth & " x " & item.hdheight & ") (" & item.ldwidth & " x " & item.ldheight & ")"
  3690. .Width = 200
  3691. End With
  3692. votelabels = New Label()
  3693. With votelabels
  3694. .BringToFront()
  3695. .Location = New Point(300, location + 235)
  3696. .Name = "votelabel" & itemcounter.ToString
  3697. .Text = "Votes: " & item.votes.ToString
  3698. '.Width = 200
  3699. End With
  3700. itemcounter += 1
  3701. location += 260
  3702. Else
  3703. fanartCheckBoxes() = New RadioButton()
  3704. With fanartCheckBoxes
  3705. .BringToFront()
  3706. .Location = New Point(199, location + 243)
  3707. .Name = "moviefanartcheckbox" & itemcounter.ToString
  3708. .Text = ""
  3709. End With
  3710. resLabels = New Label()
  3711. With resLabels
  3712. .BringToFront()
  3713. .Location = New Point(0, location + 249)
  3714. .Name = "label" & itemcounter.ToString
  3715. .Text = "(" & item.hdwidth & " x " & item.hdheight & ") (" & item.ldwidth & " x " & item.ldheight & ")"
  3716. .Width = 200
  3717. End With
  3718. votelabels = New Label()
  3719. With votelabels
  3720. .BringToFront()
  3721. .Location = New Point(300, location + 249)
  3722. .Name = "votelabel" & itemcounter.ToString
  3723. .Text = "Votes: " & item.votes.ToString
  3724. .Width = 200
  3725. End With
  3726. itemcounter += 1
  3727. location += 275
  3728. End If
  3729. Me.Panel2.Controls.Add(fanartBoxes())
  3730. Me.Panel2.Controls.Add(fanartCheckBoxes())
  3731. Me.Panel2.Controls.Add(resLabels)
  3732. Me.Panel2.Controls.Add(votelabels)
  3733. Application.DoEvents()
  3734. Next
  3735. Me.Panel2.Refresh()
  3736. Me.Refresh()
  3737. If MovFanartPicBox.Count > 0 Then
  3738. messbox.Close()
  3739. If Not ImgBw.IsBusy Then
  3740. ToolStripStatusLabel2.Text = "Starting Download of Images..."
  3741. ToolStripStatusLabel2.Visible = True
  3742. ImgBw.RunWorkerAsync({MovFanartPicBox, 0, MovFanartPicBox.Count, Me.Panel2})
  3743. End If
  3744. End If
  3745. EnableFanartScrolling()
  3746. Me.Panel2.Refresh()
  3747. Me.Refresh
  3748. Else
  3749. Dim mainlabel2 As Label
  3750. mainlabel2 = New Label
  3751. With mainlabel2
  3752. .Location = New Point(0, 100)
  3753. .AutoSize = False
  3754. .TextAlign = ContentAlignment.MiddleCenter
  3755. .Width = 410
  3756. .Height = 400
  3757. .Font = New System.Drawing.Font("Arial", 15, FontStyle.Bold)
  3758. .Text = "No Fanart Was Found At" & Environment.NewLine & "www.themoviedb.org For This Movie"
  3759. End With
  3760. Me.Panel2.Controls.Add(mainlabel2)
  3761. End If
  3762. messbox.Close()
  3763. Catch ex As Exception
  3764. #If SilentErrorScream Then
  3765. Throw ex
  3766. #End If
  3767. If Not IsNothing(messbox) Then messbox.Close()
  3768. End Try
  3769. End Sub
  3770. Sub EnableFanartScrolling()
  3771. Try
  3772. Panel2.Focus()
  3773. 'Dim rb As RadioButton = Panel2.Controls("moviefanartcheckbox0")
  3774. 'If rb Is Nothing Then Exit Sub
  3775. 'rb.Select() 'Causes RadioButtons checked state to toggle
  3776. 'rb.Checked = Not rb.Checked 'Undo unwanted checked state toggling
  3777. Catch
  3778. End Try
  3779. End Sub
  3780. Private Sub util_ZoomImage2(ByVal sender As Object, ByVal e As EventArgs)
  3781. Dim tempstring As String = sender.name
  3782. Dim tempstring2 As String = String.Empty
  3783. Dim tempint As Integer = 0
  3784. If tempstring.IndexOf("poster") <> -1 Then
  3785. tempstring = tempstring.Replace("poster", "")
  3786. tempint = Convert.ToDecimal(tempstring)
  3787. If tempstring2 = Nothing Then
  3788. tempint = Convert.ToDecimal(tempstring)
  3789. tempint = tempint + ((currentPage - 1) * 10)
  3790. tempstring2 = posterArray(tempint).hdUrl
  3791. End If
  3792. End If
  3793. If tempstring.IndexOf("moviefanart") <> -1 Then
  3794. tempstring = tempstring.Replace("moviefanart", "")
  3795. tempint = Convert.ToDecimal(tempstring)
  3796. tempstring2 = fanartArray(tempint).hdUrl
  3797. End If
  3798. If tempstring.IndexOf("tvfanart") <> -1 Then
  3799. tempstring = tempstring.Replace("tvfanart", "")
  3800. tempint = Convert.ToDecimal(tempstring)
  3801. tempstring2 = listOfTvFanarts(tempint).bigUrl
  3802. End If
  3803. Dim buffer(4000000) As Byte
  3804. Dim size As Integer = 0
  3805. Dim bytesRead As Integer = 0
  3806. bigPanel = New Panel
  3807. With bigPanel
  3808. .Width = Me.Width
  3809. .Height = Me.Height
  3810. .BringToFront()
  3811. .Dock = DockStyle.Fill
  3812. End With
  3813. Me.Controls.Add(bigPanel)
  3814. bigPanel.BringToFront()
  3815. bigPictureBox = New PictureBox()
  3816. With bigPictureBox
  3817. .Location = New Point(0, 0)
  3818. .Width = bigPanel.Width
  3819. .Height = bigPanel.Height
  3820. .SizeMode = PictureBoxSizeMode.Zoom
  3821. .WaitOnLoad = True
  3822. .Visible = False
  3823. .BorderStyle = BorderStyle.Fixed3D
  3824. AddHandler bigPictureBox.DoubleClick, AddressOf util_PicBoxClose
  3825. .Dock = DockStyle.Fill
  3826. End With
  3827. Try
  3828. util_ImageLoad(bigPictureBox, tempstring2, "")
  3829. Catch ex As Exception
  3830. #If SilentErrorScream Then
  3831. Throw ex
  3832. #End If
  3833. End Try
  3834. Me.bigPanel.Controls.Add(bigPictureBox)
  3835. Dim bigpanellabel As Label
  3836. bigpanellabel = New Label
  3837. With bigpanellabel
  3838. .Location = New Point(20, 200)
  3839. .Width = 150
  3840. .Height = 50
  3841. .Visible = True
  3842. .Text = "Double Click Image To" & vbCrLf & "Return To Browser"
  3843. End With
  3844. Me.bigPanel.Controls.Add(bigpanellabel)
  3845. bigpanellabel.BringToFront()
  3846. Application.DoEvents()
  3847. Me.Refresh()
  3848. Try
  3849. If bigPictureBox.Image Is Nothing Then
  3850. tempstring2 = posterArray(tempint).ldUrl
  3851. util_ImageLoad(bigPictureBox, tempstring2, "")
  3852. End If
  3853. Catch ex As Exception
  3854. #If SilentErrorScream Then
  3855. Throw ex
  3856. #End If
  3857. End Try
  3858. Try
  3859. If bigPictureBox.Image.Width < 20 Then
  3860. tempstring2 = posterArray(tempint).ldUrl
  3861. util_ImageLoad(bigPictureBox, tempstring2, "")
  3862. End If
  3863. Catch ex As Exception
  3864. #If SilentErrorScream Then
  3865. Throw ex
  3866. #End If
  3867. End Try
  3868. Dim sizex As Integer = bigPictureBox.Image.Width
  3869. Dim sizey As Integer = bigPictureBox.Image.Height
  3870. tempstring = "Full Image Resolution :- " & sizex.ToString & " x " & sizey.ToString
  3871. Dim resolutionlbl As New Label
  3872. With resolutionlbl
  3873. .Location = New Point(20, 450)
  3874. .Width = 180
  3875. .Text = tempstring
  3876. .BackColor = Color.Transparent
  3877. End With
  3878. Me.bigPanel.Controls.Add(resolutionlbl)
  3879. resolutionlbl.BringToFront()
  3880. bigPictureBox.Visible = True
  3881. bigPictureBox.Refresh()
  3882. End Sub
  3883. Private Sub SaveFanart(hd As Boolean, Optional clipbrd As Boolean = False)
  3884. Try
  3885. If ImgBw.Isbusy Then
  3886. ImgBw.CancelAsync()
  3887. Do Until Not ImgBw.IsBusy
  3888. Application.DoEvents()
  3889. Loop
  3890. End If
  3891. Try
  3892. messbox.Close()
  3893. Catch
  3894. End Try
  3895. messbox = New frmMessageBox("", "Downloading Fanart...", "")
  3896. messbox.Show()
  3897. messbox.Refresh()
  3898. Application.DoEvents()
  3899. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  3900. Dim tempstring As String = String.Empty
  3901. Dim tempint As Integer = 0
  3902. Dim tempstring2 As String = String.Empty
  3903. Dim allok As Boolean = False
  3904. If clipbrd Then
  3905. tempstring2 = PictureBox2.Tag.tostring
  3906. allok = True
  3907. Else
  3908. 'Find selected fanart, if any
  3909. For Each button As Control In Me.Panel2.Controls
  3910. If button.Name.IndexOf("checkbox") <> -1 Then
  3911. Dim b1 As RadioButton = CType(button, RadioButton)
  3912. If b1.Checked = True Then
  3913. tempstring = b1.Name
  3914. tempstring = tempstring.Replace("moviefanartcheckbox", "")
  3915. tempint = Convert.ToDecimal(tempstring)
  3916. If hd Then
  3917. tempstring2 = fanartArray(tempint).hdUrl
  3918. Else
  3919. tempstring2 = fanartArray(tempint).ldUrl
  3920. End If
  3921. allok = True
  3922. Exit For
  3923. End If
  3924. End If
  3925. Next
  3926. End If
  3927. If Not allok Then
  3928. MsgBox("No Fanart Is Selected")
  3929. Else
  3930. Try
  3931. If Not MovFanartToggle Then
  3932. Dim issavefanart As Boolean = Pref.savefanart
  3933. Dim FanartOrExtraPath As String = mov_FanartORExtrathumbPath
  3934. Dim xtra As Boolean = False
  3935. Dim extrfanart As Boolean = False
  3936. If rbMovThumb1.Checked Or rbMovThumb2.Checked Or rbMovThumb3.Checked Or rbMovThumb4.Checked Or rbMovThumb5.Checked Then xtra = True
  3937. Pref.savefanart = True
  3938. If xtra Then extrfanart = Movie.SaveFanartImageToCacheAndPath(tempstring2, FanartOrExtraPath)
  3939. If xtra OrElse Movie.SaveFanartImageToCacheAndPath(tempstring2, FanartOrExtraPath) Then
  3940. If Not xtra Then
  3941. Dim paths As List(Of String) = Pref.GetfanartPaths(workingMovieDetails.fileinfo.fullpathandfilename,If(workingMovieDetails.fileinfo.videotspath <>"",workingMovieDetails.fileinfo.videotspath,""))
  3942. Movie.SaveFanartImageToCacheAndPaths(tempstring2, paths)
  3943. End If
  3944. Pref.savefanart = issavefanart
  3945. mov_DisplayFanart()
  3946. util_ImageLoad(PbMovieFanArt, workingMovieDetails.fileinfo.fanartpath, Utilities.DefaultFanartPath)
  3947. Dim video_flags = VidMediaFlags(workingMovieDetails.filedetails, workingMovieDetails.fullmoviebody.title.ToLower.Contains("3d"))
  3948. movieGraphicInfo.OverlayInfo(PbMovieFanArt, ratingtxt.Text, video_flags, workingMovie.DisplayFolderSize)
  3949. For Each paths In Pref.offlinefolders
  3950. Dim offlinepath As String = paths & "\"
  3951. If workingMovieDetails.fileinfo.fanartpath.IndexOf(offlinepath) <> -1 Then
  3952. Dim mediapath As String
  3953. mediapath = Utilities.GetFileName(workingMovieDetails.fileinfo.fullpathandfilename)
  3954. messbox.TextBox1.Text = "Creating Offline Movie..."
  3955. Call mov_OfflineDvdProcess(workingMovieDetails.fileinfo.fullpathandfilename, workingMovieDetails.fullmoviebody.title, mediapath)
  3956. End If
  3957. Next
  3958. Else
  3959. util_ImageLoad(PictureBox2, Utilities.DefaultFanartPath, Utilities.DefaultFanartPath)
  3960. Pref.savefanart = issavefanart
  3961. End If
  3962. lblMovFanartWidth.Text = PictureBox2.Image.Width
  3963. lblMovFanartHeight.Text = PictureBox2.Image.Height
  3964. UpdateMissingFanart()
  3965. XbmcLink_UpdateArtwork
  3966. Else
  3967. Dim MovSetFanartSavePath As String = workingMovieDetails.fileinfo.movsetfanartpath
  3968. If MovSetFanartSavePath <> "" Then
  3969. Movie.SaveFanartImageToCacheAndPath(tempstring2, MovSetFanartSavePath)
  3970. MovPanel6Update()
  3971. util_ImageLoad(PictureBox2, MovSetFanartSavePath, Utilities.DefaultFanartPath)
  3972. Else
  3973. MsgBox("!! Problem formulating correct save location for Fanart" & vbCrLf & " Please check your settings")
  3974. End If
  3975. End If
  3976. Catch ex As WebException
  3977. MsgBox(ex.Message)
  3978. End Try
  3979. End If
  3980. Catch ex As Exception
  3981. ExceptionHandler.LogError(ex)
  3982. Finally
  3983. messbox.Close()
  3984. End Try
  3985. End Sub
  3986. Sub UpdateMissingFanart
  3987. oMovies.LoadMovie(workingMovieDetails.fileinfo.fullpathandfilename)
  3988. ProgState = ProgramState.ResettingFilters
  3989. Assign_FilterGeneral()
  3990. ProgState = ProgramState.Other
  3991. UpdateMissingFanartNav
  3992. End Sub
  3993. Sub UpdateMissingFanartNav
  3994. 'Default to selecting first row if non selected
  3995. If DataGridViewMovies.SelectedRows.Count=0 And DataGridViewMovies.Rows.Count>1 Then
  3996. DataGridViewMovies.Rows(0).Selected=True
  3997. End If
  3998. UpdateMissingFanartNextBtn
  3999. UpdateMissingFanartPrevBtn
  4000. UpdatelblFanartMissingCount
  4001. End Sub
  4002. Sub UpdatelblFanartMissingCount
  4003. Dim i As Integer = 0
  4004. Dim x As Integer = 0
  4005. While i<DataGridViewMovies.Rows.Count
  4006. Dim row As Data_GridViewMovie = DataGridViewMovies.DataSource(i)
  4007. If row.MissingFanart Then x = x + 1
  4008. i = i + 1
  4009. End While
  4010. lblFanartMissingCount.Text = x & " Missing"
  4011. lblFanartMissingCount.Visible = x <> 0
  4012. End Sub
  4013. Sub UpdateMissingFanartNextBtn
  4014. btnNextMissingFanart.Enabled = False
  4015. If DataGridViewMovies.SelectedRows.Count=0 Then Return
  4016. Dim i As Integer = DataGridViewMovies.SelectedRows(0).Index + 1
  4017. While i<DataGridViewMovies.Rows.Count
  4018. Dim row As Data_GridViewMovie = DataGridViewMovies.DataSource(i)
  4019. If row.MissingFanart Then
  4020. btnNextMissingFanart.Enabled = True
  4021. btnNextMissingFanart.Tag = i
  4022. Return
  4023. End If
  4024. i = i + 1
  4025. End While
  4026. btnNextMissingFanart.Visible = btnNextMissingFanart.Enabled
  4027. End Sub
  4028. Sub UpdateMissingFanartPrevBtn
  4029. btnPrevMissingFanart.Enabled = False
  4030. If DataGridViewMovies.SelectedRows.Count=0 Then Return
  4031. Dim i As Integer = DataGridViewMovies.SelectedRows(0).Index - 1
  4032. While i>=0
  4033. Dim row As Data_GridViewMovie = DataGridViewMovies.DataSource(i)
  4034. If row.MissingFanart Then
  4035. btnPrevMissingFanart.Enabled = True
  4036. btnPrevMissingFanart.Tag = i
  4037. Return
  4038. End If
  4039. i = i - 1
  4040. End While
  4041. btnPrevMissingFanart.Visible = btnPrevMissingFanart.Enabled
  4042. End Sub
  4043. Sub UpdateMissingPoster
  4044. oMovies.LoadMovie(workingMovieDetails.fileinfo.fullpathandfilename)
  4045. ProgState = ProgramState.ResettingFilters
  4046. Assign_FilterGeneral()
  4047. ProgState = ProgramState.Other
  4048. UpdateMissingPosterNav
  4049. End Sub
  4050. Sub UpdateMissingPosterNav
  4051. 'Default to selecting first row if non selected
  4052. If DataGridViewMovies.SelectedRows.Count=0 And DataGridViewMovies.Rows.Count>1 Then DataGridViewMovies.Rows(0).Selected=True
  4053. UpdateMissingPosterNextBtn
  4054. UpdateMissingPosterPrevBtn
  4055. UpdatelblPosterMissingCount
  4056. End Sub
  4057. Sub UpdatelblPosterMissingCount
  4058. Dim i As Integer = 0
  4059. Dim x As Integer = 0
  4060. While i<DataGridViewMovies.Rows.Count
  4061. Dim row As Data_GridViewMovie = DataGridViewMovies.DataSource(i)
  4062. If row.MissingPoster Then x = x + 1
  4063. i = i + 1
  4064. End While
  4065. lblPosterMissingCount.Text = x & " Missing"
  4066. lblPosterMissingCount.Visible = x <> 0
  4067. End Sub
  4068. Sub UpdateMissingPosterNextBtn
  4069. btnNextMissingPoster.Enabled = False
  4070. If DataGridViewMovies.SelectedRows.Count=0 Then Return
  4071. Dim i As Integer = DataGridViewMovies.SelectedRows(0).Index + 1
  4072. While i<DataGridViewMovies.Rows.Count
  4073. Dim row As Data_GridViewMovie = DataGridViewMovies.DataSource(i)
  4074. If row.MissingPoster Then
  4075. btnNextMissingPoster.Enabled = True
  4076. btnNextMissingPoster.Tag = i
  4077. Return
  4078. End If
  4079. i = i + 1
  4080. End While
  4081. btnNextMissingPoster.Visible = btnNextMissingPoster.Enabled
  4082. End Sub
  4083. Sub UpdateMissingPosterPrevBtn
  4084. btnPrevMissingPoster.Enabled = False
  4085. If DataGridViewMovies.SelectedRows.Count=0 Then Return
  4086. Dim i As Integer = DataGridViewMovies.SelectedRows(0).Index - 1
  4087. While i>=0
  4088. Dim row As Data_GridViewMovie = DataGridViewMovies.DataSource(i)
  4089. If row.MissingPoster Then
  4090. btnPrevMissingPoster.Enabled = True
  4091. btnPrevMissingPoster.Tag = i
  4092. Return
  4093. End If
  4094. i = i - 1
  4095. End While
  4096. btnPrevMissingPoster.Visible = btnPrevMissingPoster.Enabled
  4097. End Sub
  4098. Private Function util_ImageCrop(ByVal SrcBmp As Bitmap, ByVal NewSize As Size, ByVal StartPoint As Point) As Bitmap
  4099. If NewSize.Width < 1 Or NewSize.Height < 1 Then
  4100. Return SrcBmp
  4101. Exit Function
  4102. End If
  4103. Dim SrcRect As New Rectangle(StartPoint.X, StartPoint.Y, NewSize.Width, NewSize.Height)
  4104. Dim DestRect As New Rectangle(0, 0, NewSize.Width, NewSize.Height)
  4105. Dim DestBmp As New Bitmap(NewSize.Width, NewSize.Height, Imaging.PixelFormat.Format32bppArgb)
  4106. Dim g As Graphics = Graphics.FromImage(DestBmp)
  4107. g.DrawImage(SrcBmp, DestRect, SrcRect, GraphicsUnit.Pixel)
  4108. Return DestBmp
  4109. End Function ' Crop Image Function
  4110. Private Sub util_ImageCropTop()
  4111. If PictureBox2.Image Is Nothing Then Exit Sub
  4112. Dim imagewidth As Integer
  4113. Dim imageheight As Integer
  4114. imagewidth = PictureBox2.Image.Width
  4115. imageheight = PictureBox2.Image.Height
  4116. PictureBox2.Image = util_ImageCrop(PictureBox2.Image, New Size(imagewidth, imageheight - 1), New Point(0, 1)).Clone
  4117. PictureBox2.SizeMode = PictureBoxSizeMode.Zoom
  4118. End Sub
  4119. Private Sub util_ImageCropBottom()
  4120. If PictureBox2.Image Is Nothing Then Exit Sub
  4121. Dim imagewidth As Integer
  4122. Dim imageheight As Integer
  4123. imagewidth = PictureBox2.Image.Width
  4124. imageheight = PictureBox2.Image.Height
  4125. PictureBox2.Image = util_ImageCrop(PictureBox2.Image, New Size(imagewidth, imageheight - 1), New Point(0, 0)).Clone
  4126. PictureBox2.SizeMode = PictureBoxSizeMode.Zoom
  4127. End Sub
  4128. Private Sub util_ImageCropLeft()
  4129. If PictureBox2.Image Is Nothing Then Exit Sub
  4130. Dim imagewidth As Integer
  4131. Dim imageheight As Integer
  4132. imagewidth = PictureBox2.Image.Width
  4133. imageheight = PictureBox2.Image.Height
  4134. PictureBox2.Image = util_ImageCrop(PictureBox2.Image, New Size(imagewidth - 1, imageheight), New Point(1, 0)).Clone
  4135. PictureBox2.SizeMode = PictureBoxSizeMode.Zoom
  4136. End Sub
  4137. Private Sub util_ImageCropRight()
  4138. If PictureBox2.Image Is Nothing Then Exit Sub
  4139. Dim imagewidth As Integer
  4140. Dim imageheight As Integer
  4141. thumbedItsMade = True
  4142. imagewidth = PictureBox2.Image.Width
  4143. imageheight = PictureBox2.Image.Height
  4144. PictureBox2.Image = util_ImageCrop(PictureBox2.Image, New Size(imagewidth - 1, imageheight), New Point(0, 0)).Clone
  4145. PictureBox2.SizeMode = PictureBoxSizeMode.Zoom
  4146. End Sub
  4147. Private Sub mov_PosterPanelClear()
  4148. For i = panelAvailableMoviePosters.Controls.Count - 1 To 0 Step -1
  4149. panelAvailableMoviePosters.Controls.RemoveAt(i)
  4150. Next
  4151. End Sub
  4152. Private Sub mov_PosterInitialise()
  4153. pageCount = 0
  4154. currentPage = 1
  4155. cbMoviePosterSaveLoRes.Enabled = False
  4156. btnPosterTabs_SaveImage.Enabled = False
  4157. mov_PosterPanelClear()
  4158. If Pref.maximumthumbs < 1 Then
  4159. Else
  4160. Pref.maximumthumbs = 10
  4161. End If
  4162. btnPosterTabs_SaveImage.Enabled = False
  4163. cbMoviePosterSaveLoRes.Enabled = False
  4164. posterPicBoxes = Nothing
  4165. posterCheckBoxes = Nothing
  4166. resLabel = Nothing
  4167. Application.DoEvents()
  4168. posterArray.Clear()
  4169. End Sub
  4170. Private Sub mov_PosterSelectionDisplay()
  4171. Dim names As New List(Of McImage)
  4172. Me.panelAvailableMoviePosters.Visible = False
  4173. If pageCount = 0 Then
  4174. messbox = New frmMessageBox("", "Retrieving Posters...", "Please wait...")
  4175. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  4176. messbox.Show()
  4177. Me.Refresh()
  4178. messbox.Refresh()
  4179. End If
  4180. Dim itemcounter As Integer = 0
  4181. If posterArray.Count > 0 Then
  4182. Dim MovPosterPicBox As New List(Of FanartPicBox)
  4183. If pageCount = 0 Then pageCount = Math.Ceiling(posterArray.count/10)
  4184. If posterArray.Count > 10 Then
  4185. Dim totalthispagecount As Integer = ((currentPage*10)-1)
  4186. If totalthispagecount >= posterArray.Count Then totalthispagecount = posterArray.Count -1
  4187. For f = ((currentPage-1)*10) To totalthispagecount '((currentPage*10)-1)
  4188. names.Add(posterArray(f))
  4189. Next
  4190. Else
  4191. For f = 0 To posterArray.Count - 1
  4192. names.Add(posterArray(f))
  4193. Next
  4194. End If
  4195. If pageCount > 1 Then
  4196. btnMovPosterNext.Visible = True
  4197. btnMovPosterPrev.Visible = True
  4198. If posterArray.Count >= 10 Then
  4199. lblMovPosterPages.Text = "Displaying " & ((currentPage*10) - 9) & " to " & (currentPage*10) & " of " & posterArray.Count.ToString & " Images"
  4200. Else
  4201. lblMovPosterPages.Text = "Displaying 1 to " & posterArray.Count.ToString & " of " & posterArray.Count.ToString & " Images"
  4202. End If
  4203. lblMovPosterPages.Visible = True
  4204. Me.Refresh()
  4205. Application.DoEvents()
  4206. btnMovPosterPrev.Enabled = currentPage > 1
  4207. btnMovPosterNext.Enabled = currentPage < pagecount
  4208. Else
  4209. btnMovPosterPrev.Visible = False
  4210. btnMovPosterNext.Visible = False
  4211. lblMovPosterPages.Text = "Displaying 1 to " & posterArray.Count.ToString & " of " & posterArray.Count.ToString & " Images"
  4212. lblMovPosterPages.Visible = True
  4213. Me.Refresh()
  4214. Application.DoEvents()
  4215. End If
  4216. Dim tempboolean As Boolean = True
  4217. Dim locationX As Integer = 0
  4218. Dim locationY As Integer = 0
  4219. messbox.TextBox2.Text = "Setting up display...."
  4220. messbox.Refresh()
  4221. For Each item In names
  4222. Dim thispicbox As New FanartPicBox
  4223. Try
  4224. posterPicBoxes() = New PictureBox()
  4225. With posterPicBoxes
  4226. .WaitOnLoad = True
  4227. .Location = New Point(locationX, locationY)
  4228. .Width = 126
  4229. .Height = 189
  4230. .SizeMode = PictureBoxSizeMode.Zoom
  4231. .Visible = True
  4232. .BorderStyle = BorderStyle.Fixed3D
  4233. .Name = "poster" & itemcounter.ToString
  4234. AddHandler posterPicBoxes.DoubleClick, AddressOf util_ZoomImage2
  4235. AddHandler posterPicBoxes.LoadCompleted, AddressOf util_ImageRes
  4236. End With
  4237. thispicbox.imagepath = item.ldUrl
  4238. thispicbox.pbox = posterPicBoxes
  4239. MovPosterPicBox.Add(thispicbox)
  4240. posterCheckBoxes() = New RadioButton()
  4241. With posterCheckBoxes
  4242. .Location = New Point(locationX + 18, locationY + 187) '179
  4243. .Width = 79
  4244. .Height = 32
  4245. .Name = "postercheckbox" & itemcounter.ToString
  4246. .SendToBack()
  4247. .CheckAlign = ContentAlignment.TopCenter
  4248. If item.hdheight <> "" Then
  4249. .Text = item.hdwidth & " x " & item.hdheight
  4250. Else
  4251. .Text = "?"
  4252. End If
  4253. .TextAlign = ContentAlignment.BottomCenter
  4254. AddHandler posterCheckBoxes.CheckedChanged, AddressOf mov_PosterRadioChanged
  4255. End With
  4256. itemcounter += 1
  4257. Me.panelAvailableMoviePosters.Controls.Add(posterPicBoxes())
  4258. Me.panelAvailableMoviePosters.Controls.Add(posterCheckBoxes())
  4259. Me.Refresh()
  4260. Application.DoEvents()
  4261. If tempboolean = True Then
  4262. locationY = (213 + 19)
  4263. Else
  4264. locationX += 126
  4265. locationY = 0
  4266. End If
  4267. tempboolean = Not tempboolean
  4268. Catch ex As Exception
  4269. #If SilentErrorScream Then
  4270. Throw ex
  4271. #End If
  4272. End Try
  4273. Next
  4274. Me.panelAvailableMoviePosters.Refresh()
  4275. Me.Refresh()
  4276. Me.panelAvailableMoviePosters.Visible = True
  4277. If MovPosterPicBox.Count > 0 Then
  4278. messbox.Close()
  4279. If Not ImgBw.IsBusy Then
  4280. ToolStripStatusLabel2.Text = "Starting Download of Images..."
  4281. ToolStripStatusLabel2.Visible = True
  4282. ImgBw.RunWorkerAsync({MovPosterPicBox, 0, If(posterArray.Count >= 10, 10, posterArray.Count), Me.panelAvailableMoviePosters})
  4283. End If
  4284. End If
  4285. Else
  4286. Dim mainlabel2 As Label
  4287. mainlabel2 = New Label
  4288. With mainlabel2
  4289. .Location = New Point(0, 100)
  4290. .Width = 700
  4291. .Height = 100
  4292. .Font = New System.Drawing.Font("Arial", 15, FontStyle.Bold)
  4293. .Text = "No Posters Were Found For This Movie"
  4294. End With
  4295. Me.panelAvailableMoviePosters.Controls.Add(mainlabel2)
  4296. End If
  4297. If itemcounter = 0 Then
  4298. btnMovPosterNext.Visible = False
  4299. btnMovPosterPrev.Visible = False
  4300. Dim mainlabel2 As Label
  4301. mainlabel2 = New Label
  4302. With mainlabel2
  4303. .Location = New Point(0, 100)
  4304. .Width = 700
  4305. .Height = 100
  4306. .Font = New System.Drawing.Font("Arial", 15, FontStyle.Bold)
  4307. .Text = "No Posters Were Found For This Movie"
  4308. End With
  4309. lblMovPosterPages.Text = "0 of 0 Images"
  4310. Me.panelAvailableMoviePosters.Controls.Add(mainlabel2)
  4311. End If
  4312. Me.panelAvailableMoviePosters.Visible = True
  4313. messbox.Close()
  4314. End Sub
  4315. Private Sub mov_PosterSelectionDisplayPrev()
  4316. Try
  4317. mov_PosterPanelClear()
  4318. currentPage -= 1
  4319. If currentPage = 1 Then
  4320. btnMovPosterPrev.Enabled = False
  4321. End If
  4322. btnMovPosterNext.Enabled = True
  4323. mov_PosterSelectionDisplay()
  4324. Catch ex As Exception
  4325. ExceptionHandler.LogError(ex)
  4326. End Try
  4327. End Sub
  4328. Private Sub mov_PosterSelectionDisplayNext()
  4329. Try
  4330. mov_PosterPanelClear()
  4331. currentPage += 1
  4332. If currentPage = pageCount Then
  4333. btnMovPosterNext.Enabled = False
  4334. End If
  4335. btnMovPosterPrev.Enabled = True
  4336. mov_PosterSelectionDisplay()
  4337. Catch ex As Exception
  4338. ExceptionHandler.LogError(ex)
  4339. End Try
  4340. End Sub
  4341. Private Sub mov_PosterRadioChanged(ByVal sender As Object, ByVal e As EventArgs)
  4342. Dim tempstring As String = sender.name
  4343. Dim tempint As Integer = 0
  4344. Dim tempstring2 As String = tempstring
  4345. Dim allok As Boolean = False
  4346. tempstring = tempstring.Replace("postercheckbox", "")
  4347. tempint = Convert.ToDecimal(tempstring)
  4348. For Each button As Control In Me.panelAvailableMoviePosters.Controls
  4349. If button.Name.IndexOf("postercheckbox") <> -1 Then
  4350. Dim b1 As RadioButton = CType(button, RadioButton)
  4351. If b1.Checked = True Then
  4352. allok = True
  4353. Exit For
  4354. End If
  4355. End If
  4356. Next
  4357. If allok = True Then
  4358. btnPosterTabs_SaveImage.Enabled = True
  4359. cbMoviePosterSaveLoRes.Enabled = ( posterArray(0).ldUrl.ToLower.IndexOf("impawards")<>-1 Or posterArray(0).ldUrl.ToLower.IndexOf("image.tmdb")<>-1 )
  4360. Else
  4361. cbMoviePosterSaveLoRes.Enabled = False
  4362. btnPosterTabs_SaveImage.Enabled = False
  4363. End If
  4364. End Sub
  4365. Private Sub util_ImageRes(ByVal sender As Object, ByVal e As EventArgs)
  4366. resLabel = New Label
  4367. Dim tempstring As String
  4368. tempstring = sender.image.width.ToString
  4369. tempstring = tempstring & " x "
  4370. tempstring = tempstring & sender.image.height.ToString
  4371. Dim locx As Integer = sender.location.x
  4372. Dim locy As Integer = sender.location.y
  4373. locy = locy + sender.height
  4374. With resLabel
  4375. .Location = New Point(locx + 30, locy)
  4376. .Text = tempstring
  4377. .BringToFront()
  4378. End With
  4379. Me.panelAvailableMoviePosters.Controls.Add(resLabel)
  4380. Me.Refresh()
  4381. Application.DoEvents()
  4382. End Sub
  4383. Private Sub cmbxEpActor_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbxEpActor.SelectedIndexChanged
  4384. Try
  4385. Dim Episode As Media_Companion.TvEpisode
  4386. If TvTreeview.SelectedNode IsNot Nothing Then
  4387. If TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvEpisode Then
  4388. Episode = TvTreeview.SelectedNode.Tag
  4389. Else
  4390. Exit Sub
  4391. End If
  4392. Else
  4393. Exit Sub
  4394. End If
  4395. pbEpActorImage.Image = Nothing
  4396. pbEpActorImage.Visible = True
  4397. For Each actor In Episode.ListActors
  4398. If actor.actorname = cmbxEpActor.Text Then
  4399. tbEpRole.Text = actor.actorrole
  4400. Dim temppath As String = Episode.ShowObj.FolderPath
  4401. Dim tempname As String = actor.actorname.Replace(" ", "_") & If(Pref.FrodoEnabled, ".jpg", ".tbn")
  4402. temppath = temppath & ".actors\" & tempname
  4403. If IO.File.Exists(temppath) Then
  4404. util_ImageLoad(pbEpActorImage, temppath, Utilities.DefaultActorPath)
  4405. Exit Sub
  4406. End If
  4407. If actor.actorthumb <> Nothing Then
  4408. If actor.actorthumb.IndexOf("http") <> -1 Or IO.File.Exists(actor.actorthumb) Then
  4409. util_ImageLoad(pbEpActorImage, actor.actorthumb, Utilities.DefaultActorPath)
  4410. Else
  4411. util_ImageLoad(pbEpActorImage, Utilities.DefaultActorPath, Utilities.DefaultActorPath)
  4412. End If
  4413. Else
  4414. util_ImageLoad(pbEpActorImage, Utilities.DefaultActorPath, Utilities.DefaultActorPath)
  4415. End If
  4416. pbEpActorImage.SizeMode = PictureBoxSizeMode.Zoom
  4417. End If
  4418. Next
  4419. Catch ex As Exception
  4420. ExceptionHandler.LogError(ex)
  4421. End Try
  4422. End Sub
  4423. Private Sub ExpandAllToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExpandAllToolStripMenuItem.Click
  4424. Try
  4425. Dim node As TreeNode
  4426. For Each node In TvTreeview.Nodes
  4427. node.ExpandAll()
  4428. Next
  4429. Catch ex As Exception
  4430. ExceptionHandler.LogError(ex)
  4431. End Try
  4432. End Sub
  4433. Private Sub CollapseAllToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CollapseAllToolStripMenuItem.Click
  4434. Try
  4435. Dim node As TreeNode
  4436. For Each node In TvTreeview.Nodes
  4437. node.Collapse()
  4438. Next
  4439. Catch ex As Exception
  4440. ExceptionHandler.LogError(ex)
  4441. End Try
  4442. End Sub
  4443. Private Sub ExpandSelectedShowToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExpandSelectedShowToolStripMenuItem.Click
  4444. Try
  4445. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  4446. WorkingTvShow.ShowNode.ExpandAll()
  4447. Catch ex As Exception
  4448. ExceptionHandler.LogError(ex)
  4449. End Try
  4450. End Sub
  4451. Private Sub CollapseSelectedShowToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CollapseSelectedShowToolStripMenuItem.Click
  4452. Try
  4453. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  4454. WorkingTvShow.ShowNode.Collapse()
  4455. Catch ex As Exception
  4456. ExceptionHandler.LogError(ex)
  4457. End Try
  4458. End Sub
  4459. Private Sub ReloadItemToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tv_TreeViewContext_ReloadFromCache.Click
  4460. Try
  4461. Call tv_ShowReload(True)
  4462. Catch ex As Exception
  4463. ExceptionHandler.LogError(ex)
  4464. End Try
  4465. End Sub
  4466. Private Sub tv_ShowReload(Optional ByVal force As Boolean = False)
  4467. Dim Show As Media_Companion.TvShow = tv_ShowSelectedCurrently(TvTreeview)
  4468. Dim Season As Media_Companion.TvSeason = tv_SeasonSelectedCurrently(TvTreeview)
  4469. Dim Episode As Media_Companion.TvEpisode = ep_SelectedCurrently(TvTreeview)
  4470. End Sub
  4471. Private Sub TabControl3_Selecting(ByVal sender As Object, ByVal e As CancelEventArgs) Handles TabControl3.Selecting
  4472. If TabControl3.SelectedTab.Name = tpTvPrefs.Name Then
  4473. e.Cancel = True
  4474. OpenPreferences(2)
  4475. End If
  4476. End Sub
  4477. Private Sub TabControl3_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabControl3.SelectedIndexChanged
  4478. Try
  4479. Dim Show As Media_Companion.TvShow = tv_ShowSelectedCurrently(TvTreeview)
  4480. Dim tab As String = TabControl3.SelectedTab.Name
  4481. Dim WorkingEpisode As TvEpisode = ep_SelectedCurrently(TvTreeview)
  4482. If (tab <> tpTvMainBrowser.Name And tab <> tpTvFolders.Name And tab <> tpTvPrefs.Name) AndAlso Show Is Nothing Then
  4483. MsgBox("No TV Show is selected")
  4484. Exit Sub
  4485. End If
  4486. Dim tempstring As String = ""
  4487. If tab <> tpTvMainBrowser.Name And tab <> tpTvFolders.Name And tab <> tpTvPrefs.Name Then
  4488. If Show.NfoFilePath = "" And tvFolders.Count = 0 Then
  4489. Me.TabControl3.SelectedIndex = tvCurrentTabIndex
  4490. MsgBox("There are no TV Shows in your list to work on" & vbCrLf & "Set the Preferences as you want them" & vbCrLf & "Using the Preferences Tab, then" & vbCrLf & "add your TV Folders using the Folders Tab" & vbCrLf & "Once the tvshow has been scraped then" & vbCrLf & "Use the tab, ""Search for new episodes""")
  4491. If tab <> tpTvPrefs.Name Then Exit Sub
  4492. ElseIf Show.NfoFilePath = "" And tvFolders.Count > 0 And tab <> tpTvPrefs.Name Then
  4493. Me.TabControl3.SelectedIndex = tvCurrentTabIndex
  4494. If Cache.TvCache.Shows.Count > 0 Then
  4495. MsgBox("No TV Show is selected")
  4496. Exit Sub
  4497. Else
  4498. MsgBox("There are no TV Shows in your list to work on")
  4499. Exit Sub
  4500. End If
  4501. End If
  4502. ElseIf tab = tpTvFolders.Name Then 'Tv Folders tab
  4503. tvCurrentTabIndex = TabControl3.SelectedIndex
  4504. TabControl3.SelectedIndex = tvCurrentTabIndex
  4505. Call tv_FoldersSetup()
  4506. Else
  4507. tvCurrentTabIndex = 0
  4508. Exit Sub
  4509. End If
  4510. If tab = tpTvSelector.Name Then 'Tv Show Change tba
  4511. If ListBox3.Items.Count = 0 Then
  4512. tvCurrentTabIndex = TabControl3.SelectedIndex
  4513. Call tv_ShowChangedRePopulate()
  4514. End If
  4515. ElseIf tab = tpTvMainBrowser.Name Then 'Tv Main Browser tab
  4516. If TvTreeview.Nodes.Count = 0 Then TvTreeview.SelectedNode = TvTreeview.TopNode
  4517. TvTreeview.Focus()
  4518. tvCurrentTabIndex = 0
  4519. ElseIf tab = tpTvPosters.Name Then 'Tv Posters tab
  4520. tvCurrentTabIndex = TabControl3.SelectedIndex
  4521. Call tv_PosterSetup()
  4522. ElseIf tab = tpTvTable.Name Then 'Tv TableView tab
  4523. tvCurrentTabIndex = TabControl3.SelectedIndex
  4524. Call tv_TableView()
  4525. ElseIf tab = tpTvWall.Name Then 'Tv Wall View tab
  4526. tvCurrentTabIndex = TabControl3.SelectedIndex
  4527. Call tv_wallSetup()
  4528. ElseIf tab = tpTvWeb.Name Then 'Tv Web Browser tab
  4529. Dim TvdbId As Integer = 0
  4530. If Not String.IsNullOrEmpty(Show.TvdbId.Value) AndAlso Integer.TryParse(Show.TvdbId.Value, TvdbId) Then
  4531. Dim tpi As Integer = tpTvWeb.ImageIndex
  4532. If tpi = 0 Then
  4533. tempstring = "http://thetvdb.com/?tab=series&id=" & TvdbId & "&lid=7"
  4534. Else
  4535. tempstring = "http://www.imdb.com/title/" & Show.ImdbId.Value & "/"
  4536. End If
  4537. Call GoTvWebBrowser(tempstring)
  4538. ElseIf String.IsNullOrEmpty(Show.TvdbId.Value) AndAlso String.IsNullOrEmpty(Show.ImdbId.Value) Then
  4539. TabControl3.SelectedIndex = 0
  4540. MsgBox("No TVDB or IMDB ID present for selected Show" & vbCrLf & "Use Tv Show Selector Tab, to select" & vbCrLf & "correct show")
  4541. End If
  4542. ElseIf tab = tpTvFanart.Name Then 'Tv Fanart tab
  4543. Call tv_Fanart_Load()
  4544. tvCurrentTabIndex = TabControl3.SelectedIndex
  4545. ElseIf tab = tpTvFanartTv.Name Then 'Tv Fanart.Tv tab
  4546. UcFanartTvTv1.ucFanartTv_Refresh(tv_ShowSelectedCurrently(TvTreeview))
  4547. ElseIf tab = tpTvScreenshot.Name Then 'Tv Episode Screenshot tab
  4548. tvCurrentTabIndex = TabControl3.SelectedIndex
  4549. Call GoScreenshotTab(WorkingEpisode)
  4550. End If
  4551. Catch ex As Exception
  4552. ExceptionHandler.LogError(ex)
  4553. End Try
  4554. End Sub
  4555. Private Sub TabControl3_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs) Handles TabControl3.MouseClick
  4556. If e.Button = Windows.Forms.MouseButtons.Right Then
  4557. For index As Integer = 0 To TabControl3.TabCount - 2 Step 1
  4558. If TabControl3.GetTabRect(index).Contains(e.X,e.Y) AndAlso TabControl3.TabPages(index).Name.ToLower = "tptvweb" Then
  4559. Dim tpi As Integer = tpTvWeb.ImageIndex
  4560. If tpi = 0 Then
  4561. tpTvWeb.ImageIndex = 1
  4562. Else
  4563. tpTvWeb.ImageIndex = 0
  4564. End If
  4565. tpTvWeb.Refresh()
  4566. Exit For
  4567. End If
  4568. Next
  4569. End If
  4570. End Sub
  4571. Private Sub TabControl3_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabControl3.MouseWheel
  4572. Try
  4573. If Tabcontrol3.TabPages(TabControl3.SelectedIndex).Text.ToLower = "wall" Then
  4574. mouseDelta = e.Delta / 120
  4575. Try
  4576. tptvwall.AutoScrollPosition = New Point(0, tptvwall.VerticalScroll.Value - (mouseDelta * 30))
  4577. Catch ex As Exception
  4578. End Try
  4579. End If
  4580. Catch ex As Exception
  4581. ExceptionHandler.LogError(ex)
  4582. End Try
  4583. End Sub
  4584. Private Sub GoTvWebBrowser(ByVal tempstring As String)
  4585. If Pref.externalbrowser = True Then
  4586. Me.TabControl3.SelectedIndex = tvCurrentTabIndex
  4587. OpenUrl(tempstring)
  4588. Else
  4589. tvCurrentTabIndex = TabControl3.SelectedIndex
  4590. Try
  4591. WebBrowser4.Stop()
  4592. WebBrowser4.ScriptErrorsSuppressed = True
  4593. WebBrowser4.Navigate(tempstring)
  4594. Catch
  4595. WebBrowser4.Stop()
  4596. WebBrowser4.ScriptErrorsSuppressed = True
  4597. WebBrowser4.Navigate(tempstring)
  4598. End Try
  4599. WebBrowser4.Focus()
  4600. End If
  4601. End Sub
  4602. Private Sub GoScreenshotTab(ByRef WorkingEpisode As TvEpisode)
  4603. If Pref.EdenEnabled Then
  4604. util_ImageLoad(pbTvEpScrnShot, WorkingEpisode.VideoFilePath.Replace(IO.Path.GetExtension(WorkingEpisode.VideoFilePath), ".tbn"), Utilities.DefaultScreenShotPath)
  4605. End If
  4606. If Pref.FrodoEnabled Then
  4607. util_ImageLoad(pbTvEpScrnShot, WorkingEpisode.VideoFilePath.Replace(IO.Path.GetExtension(WorkingEpisode.VideoFilePath), "-thumb.jpg"), Utilities.DefaultScreenShotPath)
  4608. End If
  4609. If TextBox35.Text = "" Then
  4610. TextBox35.Text = Pref.ScrShtDelay
  4611. End If
  4612. End Sub
  4613. Private Sub tv_TableView()
  4614. Dim availableshows As New List(Of TvShow)
  4615. messbox = New frmMessageBox("Loading all tvshow.nfo")
  4616. messbox.Show
  4617. For Each sh As TvShow In Cache.TvCache.Shows
  4618. Dim shload As New TvShow
  4619. shload.NfoFilePath = sh.NfoFilePath
  4620. shload = nfoFunction.tvshow_NfoLoad(sh.NfoFilePath) '.Load()
  4621. availableshows.Add(shload)
  4622. Next
  4623. messbox.Close()
  4624. Dim tvdbase(availableshows.Count, 8) as String
  4625. DataGridView2.Rows.Clear()
  4626. DataGridView2.Columns.Item(1).DefaultCellStyle.WrapMode = DataGridViewTriState.True
  4627. Try
  4628. Dim lst As List(Of TvShow) = (From x In availableshows Order By x.Title.Value).ToList
  4629. For Each sh As TvShow In lst
  4630. Dim n As Integer = DataGridView2.Rows.Add()
  4631. DataGridView2.Rows(n).Cells(0).Value = sh.Title.Value
  4632. DataGridView2.Rows(n).Cells(1).Value = sh.Plot.Value
  4633. DataGridView2.Rows(n).Cells(2).Value = sh.Premiered.Value
  4634. DataGridView2.Rows(n).Cells(3).Value = sh.Rating.Value
  4635. DataGridView2.Rows(n).Cells(4).Value = sh.Genre.Value
  4636. DataGridView2.Rows(n).Cells(5).Value = sh.Studio.Value
  4637. DataGridView2.Rows(n).Cells(6).Value = sh.TvdbId.Value
  4638. DataGridView2.Rows(n).Cells(7).Value = sh.ImdbId.Value
  4639. DataGridView2.Rows(n).Cells(8).Value = sh.Mpaa.Value
  4640. Next
  4641. Catch
  4642. End Try
  4643. End Sub
  4644. Public Sub util_LanguageListLoad()
  4645. languageList.Clear()
  4646. Application.DoEvents()
  4647. System.Threading.Thread.Sleep(500)
  4648. Dim XmlFile As String
  4649. XmlFile = Utilities.DownloadTextFiles("http://thetvdb.com/api/6E82FED600783400/languages.xml")
  4650. Dim LangList As New Tvdb.Languages()
  4651. LangList.LoadXml(XmlFile)
  4652. For Each Lang As Tvdb.Language In LangList.Languages
  4653. languageList.Add(Lang)
  4654. Next
  4655. ListBox1.Items.Clear()
  4656. For Each lan In languageList
  4657. ListBox1.Items.Add(lan.Language.Value)
  4658. Next
  4659. End Sub
  4660. Private Sub tv_ShowChangedRePopulate()
  4661. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  4662. Try
  4663. TextBox26.Text = Utilities.GetLastFolder(WorkingTvShow.NfoFilePath)
  4664. tb_TvShSelectSeriesPath.Enabled = True
  4665. tb_TvShSelectSeriesPath.Text = WorkingTvShow.NfoFilePath.Replace("tvshow.nfo", "")
  4666. PictureBox9.Image = Nothing
  4667. If languageList.Count = 0 Then
  4668. util_LanguageListLoad()
  4669. End If
  4670. If workingTvShow.language <> Nothing Then
  4671. For Each language In languageList
  4672. If language.Abbreviation.Value = WorkingTvShow.Language.Value Then
  4673. ListBox1.SelectedItem = language.Language.Value
  4674. Exit For
  4675. End If
  4676. Next
  4677. Else
  4678. ListBox1.SelectedItem = Pref.TvdbLanguage
  4679. End If
  4680. Label55.Text = "Default Language for TV Shows is :- " & Pref.TvdbLanguage
  4681. Call tv_ShowListLoad()
  4682. Try
  4683. If Pref.sortorder <> Nothing Then
  4684. If Pref.sortorder = "dvd" Then
  4685. RadioButton14.Checked = True
  4686. Else
  4687. RadioButton15.Checked = True
  4688. End If
  4689. Else
  4690. RadioButton15.Checked = True
  4691. End If
  4692. Catch ex As Exception
  4693. #If SilentErrorScream Then
  4694. Throw ex
  4695. #End If
  4696. RadioButton15.Checked = True
  4697. End Try
  4698. Select Case Pref.seasonall
  4699. Case "none"
  4700. RadioButton18.Checked = True
  4701. Case "poster"
  4702. RadioButton17.Checked = True
  4703. Case "wide"
  4704. RadioButton16.Checked = True
  4705. End Select
  4706. '0 - Everything from TVDB
  4707. '1 - Everything from IMDB
  4708. '2 - TV show Nfo From IMDB, Episode nfo from TVDB
  4709. '3 - TV show Nfo From TVDB, Episode nfo from IMDB
  4710. If Pref.tvdbactorscrape = 0 Then
  4711. RadioButton13.Checked = True
  4712. RadioButton11.Checked = True
  4713. End If
  4714. If Pref.tvdbactorscrape = 1 Then
  4715. RadioButton12.Checked = True
  4716. RadioButton10.Checked = True
  4717. End If
  4718. If Pref.tvdbactorscrape = 2 Then
  4719. RadioButton12.Checked = True
  4720. RadioButton11.Checked = True
  4721. End If
  4722. If Pref.tvdbactorscrape = 3 Then
  4723. RadioButton13.Checked = True
  4724. RadioButton10.Checked = True
  4725. End If
  4726. If Pref.postertype = "poster" Then
  4727. RadioButton9.Checked = True
  4728. Else
  4729. RadioButton8.Checked = True
  4730. End If
  4731. cbTvChgShowDLFanart .Checked = Pref.tvdlfanart
  4732. cbTvChgShowDLPoster .Checked = Pref.tvdlposter
  4733. cbTvChgShowDLSeason .Checked = Pref.tvdlseasonthumbs
  4734. cbTvChgShowDLFanartTvArt .Checked = Pref.TvDlFanartTvArt
  4735. If Pref.tvshow_useXBMC_Scraper = True Then
  4736. GroupBox2.Enabled = False
  4737. GroupBox3.Enabled = False
  4738. GroupBox5.Enabled = False
  4739. Else
  4740. GroupBox2.Enabled = True
  4741. GroupBox3.Enabled = True
  4742. GroupBox5.Enabled = True
  4743. End If
  4744. cbTvChgShowOverwriteImgs.CheckState = CheckState.Checked 'set overwrite images for changing shows.
  4745. Catch ex As WebException
  4746. MsgBox("There seems to be a problem with the tvdb website, please try again later")
  4747. tvCurrentTabIndex = 0
  4748. TabControl3.SelectedIndex = 0
  4749. End Try
  4750. End Sub
  4751. Private Sub util_LanguageCheck()
  4752. Try
  4753. If ListBox1.SelectedIndex < 0 Then ListBox1.SelectedIndex = languageList.FindIndex(Function(index As Tvdb.Language) index.Abbreviation.Value = Pref.TvdbLanguageCode)
  4754. If ListBox3.SelectedIndex = -1 orElse listOfShows(ListBox3.SelectedIndex).showid = "none" Then Exit Sub
  4755. Dim languagecode As String = languageList(ListBox1.SelectedIndex).Abbreviation.Value
  4756. Dim url As String = "http://thetvdb.com/api/6E82FED600783400/series/" & listOfShows(ListBox3.SelectedIndex).showid & "/" & languagecode & ".xml"
  4757. Dim websource(10000)
  4758. Dim urllinecount As Integer = 0
  4759. Try
  4760. Dim wrGETURL As WebRequest
  4761. wrGETURL = WebRequest.Create(url)
  4762. wrGETURL.Proxy = Utilities.MyProxy
  4763. Dim objStream As Stream
  4764. objStream = wrGETURL.GetResponse.GetResponseStream()
  4765. Dim objReader As New StreamReader(objStream)
  4766. Dim sLine As String = ""
  4767. urllinecount = 0
  4768. Do While Not sLine Is Nothing
  4769. urllinecount += 1
  4770. sLine = objReader.ReadLine
  4771. If Not sLine Is Nothing Then
  4772. websource(urllinecount) = sLine
  4773. End If
  4774. Loop
  4775. objReader.Close()
  4776. objStream.Close()
  4777. objReader = Nothing
  4778. objStream = Nothing
  4779. urllinecount -= 1
  4780. Catch ex As Exception
  4781. End Try
  4782. For f = 1 To urllinecount
  4783. If websource(f).IndexOf("<Language>") <> -1 Then
  4784. websource(f) = websource(f).Replace("<Language>", "")
  4785. websource(f) = websource(f).Replace("</Language>", "")
  4786. websource(f) = websource(f).Replace(" ", "")
  4787. If websource(f).ToLower <> languagecode Then
  4788. Label55.BackColor = Color.Red
  4789. Label55.Text = ListBox3.SelectedItem.ToString & " is not available in " & ListBox1.SelectedItem.ToString & ", Please try another language"
  4790. Else
  4791. Label55.BackColor = Color.Transparent
  4792. Label55.Text = ListBox3.SelectedItem.ToString & " is available in " & ListBox1.SelectedItem.ToString
  4793. Label55.Font = New Font(Label55.Font, FontStyle.Bold)
  4794. End If
  4795. End If
  4796. Next
  4797. Catch ex As Exception
  4798. #If SilentErrorScream Then
  4799. Throw ex
  4800. #End If
  4801. End Try
  4802. End Sub
  4803. Private Sub RefreshShowsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RefreshShowsToolStripMenuItem.Click
  4804. Call tv_CacheRefresh()
  4805. End Sub
  4806. Private Sub Tv_tsmi_CheckDuplicateEpisodes_Click(sender As Object, e As EventArgs) Handles Tv_tsmi_CheckDuplicateEpisodes.Click
  4807. Tv_CacheCheckDuplicates()
  4808. End Sub
  4809. Private Sub ReloadShowCacheToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReloadShowCacheToolStripMenuItem.Click
  4810. Try
  4811. If IO.File.Exists(workingProfile.tvcache) Then
  4812. Call tv_CacheLoad()
  4813. Else
  4814. MsgBox("No Cache exists to load")
  4815. End If
  4816. Catch ex As Exception
  4817. ExceptionHandler.LogError(ex)
  4818. End Try
  4819. End Sub
  4820. Private Function util_ReplaceXMLChrs(ByVal Text As String) 'Convert textcodes to real characters
  4821. If Text.IndexOf("‘") <> -1 Then Text = Text.Replace("‘", "'")
  4822. If Text.IndexOf("’") <> -1 Then Text = Text.Replace("’", "'")
  4823. If Text.IndexOf("’") <> -1 Then Text = Text.Replace("’", "'")
  4824. If Text.IndexOf("â€" & Chr(147)) <> -1 Then Text = Text.Replace("â€" & Chr(147), "-")
  4825. Return Text
  4826. End Function
  4827. Private Function ep_NfoValidate(ByVal nfopath As String)
  4828. Dim validated As Boolean = True
  4829. If IO.File.Exists(nfopath) Then
  4830. Dim tvshow As New XmlDocument
  4831. Try
  4832. tvshow.Load(nfopath)
  4833. Catch ex As Exception
  4834. If ex.Message.ToLower.Contains("multiple root elements") Then
  4835. validated = chkxbmcmultinfo(nfopath)
  4836. Else
  4837. validated = False
  4838. End If
  4839. End Try
  4840. If validated = True Then
  4841. Try
  4842. Dim tempstring As String
  4843. Dim filechck As IO.StreamReader = IO.File.OpenText(nfopath)
  4844. tempstring = filechck.ReadToEnd.ToLower
  4845. filechck.Close()
  4846. filechck = Nothing
  4847. If tempstring = Nothing Then
  4848. validated = False
  4849. End If
  4850. Try
  4851. Dim seasonno As String = tempstring.Substring(tempstring.IndexOf("<season>") + 8, tempstring.IndexOf("</season>") - tempstring.IndexOf("<season>") - 8)
  4852. If Not IsNumeric(seasonno) Then
  4853. validated = False
  4854. End If
  4855. Catch ex As Exception
  4856. validated = False
  4857. End Try
  4858. Try
  4859. Dim episodeno As String = tempstring.Substring(tempstring.IndexOf("<episode>") + 9, tempstring.IndexOf("</episode>") - tempstring.IndexOf("<episode>") - 9)
  4860. If Not IsNumeric(episodeno) Then
  4861. validated = False
  4862. End If
  4863. Catch ex As Exception
  4864. validated = False
  4865. End Try
  4866. Catch ex As Exception
  4867. #If SilentErrorScream Then
  4868. Throw ex
  4869. #End If
  4870. End Try
  4871. End If
  4872. Return validated
  4873. End If
  4874. Return False
  4875. End Function
  4876. Private Function chkxbmcmultinfo(ByVal xmlpath As String) As Boolean
  4877. Try
  4878. Dim testxml() As String = File.ReadAllLines(xmlpath)
  4879. Dim first As Boolean = True
  4880. Dim finalxml As String = ""
  4881. For Each line In testxml
  4882. If line.Contains("<episodedetails>") AndAlso first Then
  4883. finalxml &= "<multiepisodenfo>"
  4884. End If
  4885. finalxml &= line
  4886. If line.Contains("</episodedetails>") Then first = False
  4887. Next
  4888. finalxml &= "</multiepisodenfo>"
  4889. Dim Finaldoc As New XmlDocument
  4890. Finaldoc.LoadXml(finalxml)
  4891. Finaldoc.Save(xmlpath)
  4892. Return ep_NfoValidate(xmlpath)
  4893. Catch
  4894. Return False
  4895. End Try
  4896. Return False
  4897. End Function
  4898. Private Sub tv_NewFind(ByVal path As String, ByVal pattern As String)
  4899. Dim episode As New List(Of TvEpisode)
  4900. Dim propfile As Boolean = False
  4901. Dim allok As Boolean = False
  4902. Dim dir_info As New System.IO.DirectoryInfo(path)
  4903. Dim fs_infos() As String = IO.Directory.GetFiles(path, "*" & pattern, SearchOption.TopDirectoryOnly)
  4904. Dim counter As Integer = 1
  4905. Dim counter2 As Integer = 1
  4906. For Each FilePath As String In fs_infos
  4907. Dim filename_video As String = FilePath
  4908. Dim filename_nfo As String = filename_video.Replace(IO.Path.GetExtension(filename_video), ".nfo")
  4909. If IO.File.Exists(filename_nfo) Then
  4910. If ep_NfoValidate(filename_nfo) = False And Pref.renamenfofiles = True Then
  4911. Dim movefilename As String = filename_nfo.Replace(IO.Path.GetExtension(filename_nfo), ".info")
  4912. Try
  4913. If File.Exists(movefilename) Then
  4914. Utilities.SafeDeleteFile(movefilename)
  4915. End If
  4916. IO.File.Move(filename_nfo, movefilename)
  4917. Catch ex As Exception
  4918. Utilities.SafeDeleteFile(movefilename)
  4919. End Try
  4920. End If
  4921. End If
  4922. If Not IO.File.Exists(filename_nfo) Then
  4923. Dim add As Boolean = True
  4924. If pattern = ".vob" Then 'If a vob file is detected, check that it is not part of a dvd file structure
  4925. Dim name As String = filename_nfo
  4926. name = name.Replace(IO.Path.GetFileName(name), "VIDEO_TS.IFO")
  4927. If IO.File.Exists(name) Then
  4928. add = False
  4929. End If
  4930. End If
  4931. If pattern = "*.rar" Then
  4932. Dim tempmovie As String = String.Empty
  4933. Dim tempint2 As Integer = 0
  4934. Dim tempmovie2 As String = FilePath
  4935. If IO.Path.GetExtension(tempmovie2).ToLower = ".rar" Then
  4936. If IO.File.Exists(tempmovie2) = True Then
  4937. If IO.File.Exists(tempmovie) = False Then
  4938. Dim rarname As String = tempmovie2
  4939. Dim SizeOfFile As Integer = FileLen(rarname)
  4940. tempint2 = Convert.ToInt32(Pref.rarsize) * 1048576
  4941. If SizeOfFile > tempint2 Then
  4942. Dim mat As Match
  4943. mat = Regex.Match(rarname, "\.part[0-9][0-9]?[0-9]?[0-9]?.rar")
  4944. If mat.Success = True Then
  4945. rarname = mat.Value
  4946. If rarname.ToLower.IndexOf(".part1.rar") <> -1 Or rarname.ToLower.IndexOf(".part01.rar") <> -1 Or rarname.ToLower.IndexOf(".part001.rar") <> -1 Or rarname.ToLower.IndexOf(".part0001.rar") <> -1 Then
  4947. Dim stackrarexists As Boolean = False
  4948. rarname = tempmovie.Replace(".nfo", ".rar")
  4949. If rarname.ToLower.IndexOf(".part1.rar") <> -1 Then
  4950. rarname = rarname.Replace(".part1.rar", ".nfo")
  4951. If IO.File.Exists(rarname) Then
  4952. stackrarexists = True
  4953. tempmovie = rarname
  4954. Else
  4955. stackrarexists = False
  4956. tempmovie = rarname
  4957. End If
  4958. End If
  4959. If rarname.ToLower.IndexOf(".part01.rar") <> -1 Then
  4960. rarname = rarname.Replace(".part01.rar", ".nfo")
  4961. If IO.File.Exists(rarname) Then
  4962. stackrarexists = True
  4963. tempmovie = rarname
  4964. Else
  4965. stackrarexists = False
  4966. tempmovie = rarname
  4967. End If
  4968. End If
  4969. If rarname.ToLower.IndexOf(".part001.rar") <> -1 Then
  4970. rarname = rarname.Replace(".part001.rar", ".nfo")
  4971. If IO.File.Exists(rarname) Then
  4972. tempmovie = rarname
  4973. stackrarexists = True
  4974. Else
  4975. stackrarexists = False
  4976. tempmovie = rarname
  4977. End If
  4978. End If
  4979. If rarname.ToLower.IndexOf(".part0001.rar") <> -1 Then
  4980. rarname = rarname.Replace(".part0001.rar", ".nfo")
  4981. If IO.File.Exists(rarname) Then
  4982. tempmovie = rarname
  4983. stackrarexists = True
  4984. Else
  4985. stackrarexists = False
  4986. tempmovie = rarname
  4987. End If
  4988. End If
  4989. Else
  4990. add = False
  4991. End If
  4992. Else
  4993. 'remove = True
  4994. End If
  4995. Else
  4996. add = False
  4997. End If
  4998. End If
  4999. End If
  5000. End If
  5001. End If
  5002. Dim truefilename As String = Utilities.GetFileNameFromPath(filename_video)
  5003. If truefilename.Substring(0,2)="._" Then add = False
  5004. If add = True Then
  5005. Dim newep As New TvEpisode
  5006. newep.NfoFilePath = filename_nfo
  5007. newep.VideoFilePath = filename_video
  5008. newep.MediaExtension = IO.Path.GetExtension(filename_video)
  5009. newEpisodeList.Add(newep)
  5010. End If
  5011. End If
  5012. Next
  5013. fs_infos = Nothing
  5014. End Sub
  5015. Private Sub OpenFolderToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tv_TreeViewContext_OpenFolder.Click
  5016. Try
  5017. If Not TvTreeview.SelectedNode Is Nothing Then
  5018. Dim Path As String = Nothing
  5019. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview) 'set WORKINGTVSHOW to show obj irrelavent if we have selected show/season/episode
  5020. Dim WorkingTvEpisode As TvEpisode = ep_SelectedCurrently(TvTreeview)
  5021. Dim WorkingTvSeason As TvSeason = tv_SeasonSelectedCurrently(TvTreeview)
  5022. If Not IsNothing(WorkingTvEpisode) AndAlso Not WorkingTvEpisode.IsMissing Then
  5023. Path = WorkingTvEpisode.NfoFilePath
  5024. ElseIf Not IsNothing(WorkingTvSeason) AndAlso Not IsNothing(WorkingTvSeason.FolderPath) Then
  5025. Path = WorkingTvSeason.FolderPath
  5026. ElseIf Not WorkingTvShow.NfoFilePath Is Nothing And Not WorkingTvShow.NfoFilePath = "" Then
  5027. Path = WorkingTvShow.NfoFilePath 'we send the path of the tvshow.nfo, that way in explorer it will be highlighted in the folder
  5028. Else
  5029. MsgBox("There is no show selected to open")
  5030. End If
  5031. If Not IsNothing(Path) Then
  5032. Call util_OpenFolder(Path)
  5033. End If
  5034. Else
  5035. MsgBox("There is no show selected to open")
  5036. End If
  5037. Catch ex As Exception
  5038. ExceptionHandler.LogError(ex)
  5039. End Try
  5040. End Sub
  5041. Private Sub WebBrowser2_NewWindow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WebBrowser2.NewWindow
  5042. Try
  5043. e.Cancel = True
  5044. Catch ex As Exception
  5045. ExceptionHandler.LogError(ex)
  5046. End Try
  5047. End Sub
  5048. Private Sub WebBrowser4_NewWindow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WebBrowser4.NewWindow
  5049. Try
  5050. Dim myelement As HtmlElement = WebBrowser4.Document.ActiveElement
  5051. Dim target As String = myelement.GetAttribute("href")
  5052. e.Cancel = True
  5053. WebBrowser4.Navigate(target)
  5054. Catch ex As Exception
  5055. ExceptionHandler.LogError(ex)
  5056. End Try
  5057. End Sub
  5058. Private Sub PictureBox_Zoom(ByVal sender As Object, ByVal e As System.EventArgs) Handles tv_PictureBoxBottom.DoubleClick, tv_PictureBoxRight.DoubleClick, tv_PictureBoxLeft.DoubleClick
  5059. Try
  5060. Dim picBox As PictureBox = sender
  5061. Dim imageLocation As String = picBox.tag
  5062. If imageLocation <> Nothing Then
  5063. If IO.File.Exists(imageLocation) Then
  5064. Me.ControlBox = False
  5065. MenuStrip1.Enabled = False
  5066. Call util_ZoomImage(imageLocation)
  5067. End If
  5068. End If
  5069. Catch ex As Exception
  5070. ExceptionHandler.LogError(ex)
  5071. End Try
  5072. End Sub
  5073. Private Sub tv_Fanart_Load()
  5074. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  5075. Me.Panel13.Controls.Clear()
  5076. listOfTvFanarts.Clear()
  5077. btnTvFanartResetImage.Visible = False
  5078. btnTvFanartSaveCropped.Visible = False
  5079. If TvTreeview.SelectedNode.Name.ToLower.IndexOf("tvshow.nfo") <> -1 Or TvTreeview.SelectedNode.Name = "" Then
  5080. If Not tv_PictureBoxLeft.Image Is Nothing Then
  5081. util_ImageLoad(PictureBox10, WorkingTvShow.FolderPath & "fanart.jpg", Utilities.DefaultTvFanartPath)
  5082. Else
  5083. PictureBox10.Image = Nothing
  5084. End If
  5085. Else
  5086. util_ImageLoad(PictureBox10, WorkingTvShow.FolderPath & "fanart.jpg", Utilities.DefaultTvFanartPath)
  5087. End If
  5088. Try
  5089. Label58.Text = PictureBox10.Image.Height.ToString
  5090. Label59.Text = PictureBox10.Image.Width.ToString
  5091. Catch ex As Exception
  5092. End Try
  5093. TextBox28.Text = WorkingTvShow.Title.Value
  5094. messbox = New frmMessageBox("Please wait,", "", "Querying TVDB for fanart list")
  5095. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  5096. messbox.Show()
  5097. Me.Refresh()
  5098. messbox.Refresh()
  5099. Dim fanarturl As String = "http://www.thetvdb.com/api/6E82FED600783400/series/" & WorkingTvShow.TvdbId.Value & "/banners.xml"
  5100. Dim apple2(4000) As String
  5101. Dim fanartlinecount As Integer = 0
  5102. Dim tmplistOfTvFanarts As New List(Of str_FanartList)
  5103. Try
  5104. Dim wrGETURL As WebRequest
  5105. wrGETURL = WebRequest.Create(fanarturl)
  5106. wrGETURL.Proxy = Utilities.MyProxy
  5107. Dim objStream As Stream
  5108. objStream = wrGETURL.GetResponse.GetResponseStream()
  5109. Dim objReader As New StreamReader(objStream)
  5110. Dim sLine As String = ""
  5111. fanartlinecount = 0
  5112. sLine = objReader.ReadToEnd
  5113. Dim bannerslist As New XmlDocument
  5114. Dim bannerlist As String = "<banners>"
  5115. bannerslist.LoadXml(sLine)
  5116. Dim thisresult As XmlNode = Nothing
  5117. objReader.Close()
  5118. objStream.Close()
  5119. objReader = Nothing
  5120. objStream = Nothing
  5121. For Each thisresult In bannerslist("Banners")
  5122. Select Case thisresult.Name
  5123. Case "Banner"
  5124. Dim fanart As New str_FanartList(SetDefaults)
  5125. Dim bannerselection As XmlNode = Nothing
  5126. For Each bannerselection In thisresult.ChildNodes
  5127. Select Case bannerselection.Name
  5128. Case "BannerPath"
  5129. fanart.bigUrl = "http://thetvdb.com/banners/" & bannerselection.InnerXml
  5130. fanart.smallUrl = "http://thetvdb.com/banners/_cache/" & bannerselection.InnerXml
  5131. Case "BannerType"
  5132. fanart.type = bannerselection.InnerXml
  5133. Case "BannerType2"
  5134. fanart.resolution = bannerselection.InnerXml
  5135. Case "Rating"
  5136. fanart.rating = bannerselection.InnerXml.ToRating
  5137. End Select
  5138. Next
  5139. If fanart.type = "fanart" Then
  5140. tmplistOfTvFanarts.Add(fanart)
  5141. 'listOfTvFanarts.Add(fanart)
  5142. End If
  5143. End Select
  5144. Next
  5145. Catch ex As WebException
  5146. Dim webmsg As String = ex.Message
  5147. MsgBox("TVDB appears to be down at the moment, please try again later")
  5148. End Try
  5149. If tmplistOfTvFanarts.Count > 1 Then
  5150. Dim q = From x In tmplistOfTvFanarts Order By x.rating Descending
  5151. listOfTvFanarts.AddRange(q.ToList)
  5152. End If
  5153. If listOfTvFanarts.Count > 0 Then
  5154. Dim MovFanartPicBox As New List(Of FanartPicBox)
  5155. Dim location As Integer = 0
  5156. Dim itemcounter As Integer = 0
  5157. For Each item In listOfTvFanarts
  5158. Dim thispicbox As New FanartPicBox
  5159. tvFanartBoxes() = New PictureBox()
  5160. With tvFanartBoxes
  5161. .Location = New Point(0, location)
  5162. If listOfTvFanarts.Count > 2 Then
  5163. .Width = 400
  5164. .Height = 225
  5165. Else
  5166. .Width = 415
  5167. .Height = 225
  5168. End If
  5169. .SizeMode = PictureBoxSizeMode.Zoom
  5170. .Visible = True
  5171. .BorderStyle = BorderStyle.Fixed3D
  5172. .Name = "tvfanart" & itemcounter.ToString
  5173. AddHandler tvFanartBoxes.DoubleClick, AddressOf util_ZoomImage2
  5174. End With
  5175. thispicbox.pbox = tvFanartBoxes
  5176. thispicbox.imagepath = item.smallUrl
  5177. MovFanartPicBox.Add(thispicbox)
  5178. Application.DoEvents()
  5179. tvFanartCheckBoxes() = New RadioButton()
  5180. With tvFanartCheckBoxes
  5181. .BringToFront()
  5182. .Location = New Point(199, location + 225)
  5183. .Name = "checkbox" & itemcounter.ToString
  5184. End With
  5185. resolutionLabels() = New Label
  5186. With resolutionLabels
  5187. .BringToFront()
  5188. .Location = New Point(10, location + 225)
  5189. .Name = item.resolution
  5190. .Text = item.resolution
  5191. End With
  5192. itemcounter += 1
  5193. location += 250
  5194. Me.Panel13.Controls.Add(tvFanartBoxes())
  5195. Me.Panel13.Controls.Add(tvFanartCheckBoxes())
  5196. Me.Panel13.Controls.Add(resolutionLabels())
  5197. Application.DoEvents()
  5198. Next
  5199. Me.Panel13.Refresh()
  5200. Me.Refresh()
  5201. If MovFanartPicBox.Count > 0 Then
  5202. messbox.Close()
  5203. If Not ImgBw.IsBusy Then
  5204. ToolStripStatusLabel2.Text = "Starting Download of Images..."
  5205. ToolStripStatusLabel2.Visible = True
  5206. ImgBw.RunWorkerAsync({MovFanartPicBox, 0, MovFanartPicBox.Count, Me.Panel13})
  5207. End If
  5208. End If
  5209. Me.Panel13.Refresh()
  5210. Me.Refresh()
  5211. EnableTvFanartScrolling
  5212. Else
  5213. Dim mainlabel2 As Label
  5214. mainlabel2 = New Label
  5215. With mainlabel2
  5216. .Location = New Point(0, 100)
  5217. .Width = 700
  5218. .Height = 100
  5219. .Font = New System.Drawing.Font("Arial", 15, FontStyle.Bold)
  5220. .Text = "No Fanart Was Found At TVDB For This Movie"
  5221. End With
  5222. Me.Panel13.Controls.Add(mainlabel2)
  5223. End If
  5224. System.Windows.Forms.Cursor.Current = Cursors.Default
  5225. messbox.Close()
  5226. End Sub
  5227. 'Set focus on the first checkbox to enable mouse wheel scrolling
  5228. Sub EnableTvFanartScrolling
  5229. Try
  5230. Dim rb As RadioButton = Panel13.Controls("checkbox0")
  5231. rb.Select 'Causes RadioButtons checked state to toggle
  5232. rb.Checked = Not rb.Checked 'Undo unwanted checked state toggling
  5233. Catch
  5234. End Try
  5235. End Sub
  5236. Sub EnableTvBannerScrolling
  5237. Try
  5238. Panel16.Focus()
  5239. Catch
  5240. End Try
  5241. End Sub
  5242. Private Sub Tv_FanartDisplay()
  5243. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  5244. If IsNothing(WorkingTvShow) Then Exit Sub
  5245. If TvTreeview.SelectedNode.Name.ToLower.IndexOf("tvshow.nfo") <> -1 Or TvTreeview.SelectedNode.Name = "" Then
  5246. If Not tv_PictureBoxLeft.Image Is Nothing Then
  5247. util_ImageLoad(PictureBox10, WorkingTvShow.FolderPath & "fanart.jpg", Utilities.DefaultTvFanartPath)
  5248. Else
  5249. PictureBox10.Image = Nothing
  5250. End If
  5251. Else
  5252. util_ImageLoad(PictureBox10, WorkingTvShow.FolderPath & "fanart.jpg", Utilities.DefaultTvFanartPath)
  5253. End If
  5254. End Sub
  5255. Private Sub tv_FanartCropTop()
  5256. Dim imagewidth As Integer = PictureBox10.Image.Width
  5257. Dim imageheight As Integer = PictureBox10.Image.Height
  5258. PictureBox10.Image = util_ImageCrop(PictureBox10.Image, New Size(imagewidth, imageheight - 1), New Point(0, 1)).Clone
  5259. PictureBox10.SizeMode = PictureBoxSizeMode.Zoom
  5260. End Sub
  5261. Private Sub tv_FanartCropBottom()
  5262. Dim imagewidth As Integer = PictureBox10.Image.Width
  5263. Dim imageheight As Integer = PictureBox10.Image.Height
  5264. PictureBox10.Image = util_ImageCrop(PictureBox10.Image, New Size(imagewidth, imageheight - 1), New Point(0, 0)).Clone
  5265. PictureBox10.SizeMode = PictureBoxSizeMode.Zoom
  5266. End Sub
  5267. Private Sub tv_FanartCropLeft()
  5268. Dim imagewidth As Integer = PictureBox10.Image.Width
  5269. Dim imageheight As Integer = PictureBox10.Image.Height
  5270. PictureBox10.Image = util_ImageCrop(PictureBox10.Image, New Size(imagewidth - 1, imageheight), New Point(1, 0)).Clone
  5271. PictureBox10.SizeMode = PictureBoxSizeMode.Zoom
  5272. End Sub
  5273. Private Sub tv_FanartCropRight()
  5274. Dim imagewidth As Integer = PictureBox10.Image.Width
  5275. Dim imageheight As Integer = PictureBox10.Image.Height
  5276. PictureBox10.Image = util_ImageCrop(PictureBox10.Image, New Size(imagewidth - 1, imageheight), New Point(0, 0)).Clone
  5277. PictureBox10.SizeMode = PictureBoxSizeMode.Zoom
  5278. End Sub
  5279. Sub tv_Rescrape() 'Panel9 visibility indicates which is selected - a tvshow or an episode
  5280. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  5281. Dim WorkingEpisode As TvEpisode = ep_SelectedCurrently(TvTreeview)
  5282. If IsNothing(WorkingTvShow.TvdbId.Value) = True Then
  5283. WorkingTvShow.TvdbId.Value = ""
  5284. End If
  5285. If WorkingTvShow.TvdbId.Value.IndexOf("tt").Equals(0) Then tv_IMDbID_detected = True
  5286. If Panel_EpisodeInfo.Visible = False Then 'i.e. rescrape selected TVSHOW else rescrape selected EPISODE
  5287. 'its a tv show
  5288. Dim selectednode As Integer = TvTreeview.SelectedNode.Index
  5289. tv_Rescrape_Show(WorkingTvShow)
  5290. TvTreeview.SelectedNode = TvTreeview.Nodes(selectednode)
  5291. Else
  5292. 'its an episode
  5293. tv_Rescrape_Episode(WorkingTvShow, WorkingEpisode)
  5294. End If
  5295. If Not tv_IMDbID_warned And tv_IMDbID_detected Then
  5296. MessageBox.Show(tv_IMDbID_detectedMsg, "TV Show ID", MessageBoxButtons.OK, MessageBoxIcon.Information)
  5297. tv_IMDbID_warned = True
  5298. End If
  5299. End Sub
  5300. Private Sub Tv_TreeViewContext_RenameEp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tv_TreeViewContext_RenameEp.Click
  5301. Try
  5302. Dim renamelog As String = ""
  5303. Dim tempint As Integer = 0
  5304. Dim oldname As String = ""
  5305. Dim nfofilestorename As New List(Of String)
  5306. nfofilestorename.Clear()
  5307. Dim donelist As New List(Of String)
  5308. donelist.Clear()
  5309. If TvTreeview.SelectedNode.Name.IndexOf("\missing\") = -1 Then
  5310. If TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvEpisode Then
  5311. 'individual episode
  5312. tempint = MessageBox.Show("Using this option will rename the selected episode" & vbCrLf & "Do you wish to continue?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
  5313. If tempint = DialogResult.No Then
  5314. Exit Sub
  5315. End If
  5316. If Not nfofilestorename.Contains(TvTreeview.SelectedNode.Name) And TvTreeview.SelectedNode.Name.IndexOf("Missing: ") <> 0 Then
  5317. nfofilestorename.Add(TvTreeview.SelectedNode.Name)
  5318. End If
  5319. ElseIf TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvSeason Then
  5320. 'season
  5321. tempint = MessageBox.Show("Using this option will rename all episode nfo's within the selected season" & vbCrLf & "Do you wish to continue?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
  5322. If tempint = DialogResult.No Then
  5323. Exit Sub
  5324. End If
  5325. Dim childnode As TreeNode
  5326. For Each childnode In TvTreeview.SelectedNode.Nodes
  5327. If Not nfofilestorename.Contains(childnode.Name) And childnode.Name.IndexOf("\missing\") = -1 Then
  5328. nfofilestorename.Add(childnode.Name)
  5329. End If
  5330. Next
  5331. ElseIf TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvShow Then
  5332. 'full show
  5333. tempint = MessageBox.Show("Using this option will rename all episode nfo's within the selected show" & vbCrLf & "Do you wish to continue?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
  5334. If tempint = DialogResult.No Then
  5335. Exit Sub
  5336. End If
  5337. Dim childnode As TreeNode
  5338. Dim childchildnode As TreeNode
  5339. For Each childnode In TvTreeview.SelectedNode.Nodes
  5340. For Each childchildnode In childnode.Nodes
  5341. If Not nfofilestorename.Contains(childchildnode.Name) And childchildnode.Name.IndexOf("\missing\") = -1 Then
  5342. nfofilestorename.Add(childchildnode.Name)
  5343. End If
  5344. Next
  5345. Next
  5346. End If
  5347. Else
  5348. MsgBox("This is a Missing Episode, and can not be renamed!")
  5349. Exit Sub
  5350. End If
  5351. messbox = New frmMessageBox("Renaming episodes,", "", " Please Wait")
  5352. messbox.Show()
  5353. messbox.Refresh()
  5354. Application.DoEvents()
  5355. If nfofilestorename.Count <= 0 Then
  5356. messbox.Close()
  5357. Exit Sub
  5358. End If
  5359. renamelog += "!!! " & nfofilestorename.Count & " nfo's to rename..." & vbCrLf & vbCrLf
  5360. For Each renamefile In nfofilestorename
  5361. Dim seasonno As String = ""
  5362. Dim episodetitle As String = ""
  5363. Dim showtitle As String = ""
  5364. Dim episodeno As New List(Of String)
  5365. episodeno.Clear()
  5366. For Each tvshow In Cache.TvCache.Shows
  5367. Dim showpath As String = tvshow.NfoFilePath.Replace(IO.Path.GetFileName(tvshow.NfoFilePath), "")
  5368. If renamefile.IndexOf(showpath) <> -1 Then
  5369. showtitle = Pref.RemoveIgnoredArticles(tvshow.Title.Value)
  5370. For Each episode In tvshow.Episodes
  5371. If episode.NfoFilePath = renamefile Then
  5372. If seasonno = "" Then
  5373. seasonno = episode.Season.Value
  5374. End If
  5375. If episodetitle = "" Then
  5376. episodetitle = episode.Title.Value
  5377. End If
  5378. episodeno.Add(episode.Episode.Value)
  5379. End If
  5380. Next
  5381. Dim newfilename As String
  5382. newfilename = ""
  5383. If seasonno.Length = 1 Then
  5384. seasonno = "0" & seasonno
  5385. End If
  5386. For f = 0 To episodeno.Count - 1
  5387. If episodeno(f).Length = 1 Then
  5388. episodeno(f) = "0" & episodeno(f)
  5389. End If
  5390. Next
  5391. newfilename = Renamer.setTVFilename(showtitle, episodetitle, episodeno, seasonno)
  5392. newfilename = newfilename.Replace("?", "")
  5393. newfilename = newfilename.Replace("/", "")
  5394. newfilename = newfilename.Replace("\", "")
  5395. newfilename = newfilename.Replace("<", "")
  5396. newfilename = newfilename.Replace(">", "")
  5397. newfilename = newfilename.Replace(":", "")
  5398. newfilename = newfilename.Replace("""", "")
  5399. newfilename = newfilename.Replace("*", "")
  5400. If Pref.TvRenameReplaceSpace Then
  5401. If Pref.TvRenameReplaceSpaceDot Then
  5402. newfilename = newfilename.Replace(" ", ".")
  5403. Else
  5404. newfilename = newfilename.Replace(" ", "_")
  5405. End If
  5406. End If
  5407. Dim listtorename As New List(Of String)
  5408. listtorename.Clear()
  5409. listtorename.Add(renamefile)
  5410. For Each ext In Utilities.VideoExtensions
  5411. If ext = "VIDEO_TS.IFO" Then Continue For
  5412. Dim temppath2 As String = renamefile.Replace(IO.Path.GetExtension(renamefile), ext)
  5413. If IO.File.Exists(temppath2) Then
  5414. listtorename.Add(temppath2)
  5415. End If
  5416. Next
  5417. Dim di As DirectoryInfo = New DirectoryInfo(renamefile.Replace(IO.Path.GetFileName(renamefile), ""))
  5418. Dim filenama As String = IO.Path.GetFileNameWithoutExtension(renamefile)
  5419. Dim fils As IO.FileInfo() = di.GetFiles(filenama & ".*")
  5420. For Each fiNext In fils
  5421. If Not listtorename.Contains(fiNext.FullName) Then
  5422. listtorename.Add(fiNext.FullName)
  5423. End If
  5424. Next
  5425. Dim temppath As String = renamefile
  5426. temppath = temppath.Replace(IO.Path.GetExtension(temppath), ".tbn")
  5427. If IO.File.Exists(temppath) Then
  5428. If Not listtorename.Contains(temppath) Then
  5429. listtorename.Add(temppath)
  5430. End If
  5431. End If
  5432. temppath = temppath.Replace(IO.Path.GetExtension(temppath), ".rar")
  5433. If IO.File.Exists(temppath) Then
  5434. If Not listtorename.Contains(temppath) Then
  5435. listtorename.Add(temppath)
  5436. End If
  5437. End If
  5438. temppath = temppath.Replace(IO.Path.GetExtension(temppath), "-thumb.jpg")
  5439. If IO.File.Exists(temppath) Then
  5440. If Not listtorename.Contains(temppath) Then
  5441. listtorename.Add(temppath)
  5442. End If
  5443. End If
  5444. Dim oldnfofile As String = ""
  5445. Dim newnfofile As String = ""
  5446. For Each items In listtorename
  5447. If IO.Path.GetExtension(items).ToLower = ".nfo" And oldnfofile = "" Then
  5448. oldnfofile = items
  5449. newnfofile = items.Replace(IO.Path.GetFileName(items), newfilename) & IO.Path.GetExtension(items)
  5450. End If
  5451. Dim newname As String = items.Replace(filenama, newfilename)
  5452. Try
  5453. Dim pathsep As String = If(items.Contains("/"), "/", "\")
  5454. Dim origpath As String = items.Substring(0, items.LastIndexOf(pathsep)+1)
  5455. renamelog += "!!! " & items.Replace(origpath, "") & " -- to -- " & newname.Replace(origpath, "")
  5456. Dim fi As New IO.FileInfo(items)
  5457. If Not IO.File.Exists(newname) Then
  5458. fi.MoveTo(newname)
  5459. If items.ToLower = IO.Path.Combine(tb_EpPath.Text, tb_EpFilename.Text).ToLower Then
  5460. tb_EpFilename.Text = IO.Path.GetFileName(fi.FullName)
  5461. End If
  5462. renamelog += " ---Succeeded" & vbCrLf
  5463. Else
  5464. renamelog += " --! Not Renamed - Same" & vbCrLf
  5465. End If
  5466. Catch ex As Exception
  5467. renamelog += "!!! *** Not Succeeded - Please rename all files manually!" & vbCrLf & "!!! Reported Message: " & ex.Message.ToString & vbCrLf
  5468. End Try
  5469. Next
  5470. renamelog += "!!! " & vbCrLf
  5471. renamelog += "!!! Updating Tables" & vbCrLf
  5472. Try
  5473. For Each noder2 In TvTreeview.Nodes
  5474. If noder2.name = oldnfofile Then
  5475. noder2.name = newnfofile
  5476. End If
  5477. For Each noder3 In noder2.nodes
  5478. If noder3.name = oldnfofile Then
  5479. noder3.name = newnfofile
  5480. End If
  5481. For Each noder4 In noder3.nodes
  5482. If noder4.name = oldnfofile Then
  5483. noder4.name = newnfofile
  5484. End If
  5485. Next
  5486. Next
  5487. Next
  5488. For Each episode In tvshow.Episodes
  5489. If episode.NfoFilePath = oldnfofile Then
  5490. episode.NfoFilePath = newnfofile
  5491. End If
  5492. Next
  5493. renamelog += "!!! Tables Updated" & vbCrLf & vbCrLf
  5494. Catch
  5495. renamelog += "!!! Failed to update tables, use 'Refresh TV Shows' menu item to fix" & vbCrLf & vbCrLf
  5496. End Try
  5497. End If
  5498. Next
  5499. Next
  5500. Call Tv_CacheSave()
  5501. messbox.Close()
  5502. If Pref.disabletvlogs Then
  5503. Dim MyFormObject As New frmoutputlog(renamelog, True)
  5504. Try
  5505. MyFormObject.ShowDialog()
  5506. Catch ex As ObjectDisposedException
  5507. Catch ex As Exception
  5508. #If SilentErrorScream Then
  5509. Throw ex
  5510. #End If
  5511. End Try
  5512. End If
  5513. Catch ex As Exception
  5514. ExceptionHandler.LogError(ex)
  5515. End Try
  5516. End Sub
  5517. Private Sub Tv_TreeViewContext_RescrapeWizard_Click(sender As System.Object, e As System.EventArgs) Handles Tv_TreeViewContext_RescrapeWizard.Click
  5518. Try
  5519. singleshow = True
  5520. TV_BatchRescrapeWizardToolStripMenuItem.PerformClick()
  5521. While tvbckrescrapewizard.IsBusy
  5522. Application.DoEvents()
  5523. End While
  5524. singleshow = False
  5525. Catch ex As Exception
  5526. End Try
  5527. End Sub
  5528. Private Sub Tv_TreeViewContext_RescrapeMediaTags_Click(sender As System.Object, e As System.EventArgs) Handles Tv_TreeViewContext_RescrapeMediaTags.Click
  5529. Try
  5530. Dim tmp As Integer = Utilities.languagelibrary.count
  5531. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  5532. Dim tempint As Integer = 0
  5533. Dim nfofilestorename As New List(Of String)
  5534. nfofilestorename.Clear()
  5535. Dim donelist As New List(Of String)
  5536. donelist.Clear()
  5537. If TvTreeview.SelectedNode.Name.IndexOf("\missing\") = -1 Then
  5538. If TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvEpisode Then
  5539. 'individual episode
  5540. If Not nfofilestorename.Contains(TvTreeview.SelectedNode.Name) And TvTreeview.SelectedNode.Name.IndexOf("\missing\") = -1 Then
  5541. nfofilestorename.Add(TvTreeview.SelectedNode.Name)
  5542. End If
  5543. ElseIf TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvSeason Then
  5544. 'season
  5545. tempint = MessageBox.Show("This option will Rescrape Media tags for the selected season" & vbCrLf & "Do you wish to continue?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
  5546. If tempint = DialogResult.No Then
  5547. Exit Sub
  5548. End If
  5549. Dim childnode As TreeNode
  5550. For Each childnode In TvTreeview.SelectedNode.Nodes
  5551. If Not nfofilestorename.Contains(childnode.Name) And childnode.Name.IndexOf("\missing\") = -1 Then
  5552. nfofilestorename.Add(childnode.Name)
  5553. End If
  5554. Next
  5555. ElseIf TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvShow Then
  5556. 'full show
  5557. tempint = MessageBox.Show("This option will Rescrape Media tags for the selected show" & vbCrLf & "Do you wish to continue?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
  5558. If tempint = DialogResult.No Then
  5559. Exit Sub
  5560. End If
  5561. Dim childnode As TreeNode
  5562. Dim childchildnode As TreeNode
  5563. For Each childnode In TvTreeview.SelectedNode.Nodes
  5564. For Each childchildnode In childnode.Nodes
  5565. If Not nfofilestorename.Contains(childchildnode.Name) And childchildnode.Name.IndexOf("\missing\") = -1 Then
  5566. nfofilestorename.Add(childchildnode.Name)
  5567. End If
  5568. Next
  5569. Next
  5570. End If
  5571. End If
  5572. messbox = New frmMessageBox("Getting Media Tags for episodes,", "", " Please Wait")
  5573. messbox.Show()
  5574. messbox.Refresh()
  5575. Application.DoEvents()
  5576. If nfofilestorename.Count <= 0 Then
  5577. messbox.Close()
  5578. Exit Sub
  5579. End If
  5580. For Each nfo In nfofilestorename
  5581. Try
  5582. Dim ThisEp As New List(Of TvEpisode)
  5583. ThisEp.Clear()
  5584. ThisEp = WorkingWithNfoFiles.ep_NfoLoad(nfo)
  5585. For h = ThisEp.Count - 1 To 0 Step -1
  5586. Dim fileStreamDetails As FullFileDetails = Pref.Get_HdTags(Utilities.GetFileName(ThisEp(h).VideoFilePath))
  5587. ThisEp(h).Details.StreamDetails.Video = fileStreamDetails.filedetails_video
  5588. ThisEp(h).Details.StreamDetails.Audio.Clear()
  5589. For Each audioStream In fileStreamDetails.filedetails_audio
  5590. ThisEp(h).Details.StreamDetails.Audio.Add(audioStream)
  5591. Next
  5592. ThisEp(h).Details.StreamDetails.Subtitles.Clear()
  5593. For each langStream In fileStreamDetails.filedetails_subtitles
  5594. ThisEp(h).Details.StreamDetails.Subtitles.Add(langStream)
  5595. Next
  5596. If ThisEp(h).Details.StreamDetails.Video.DurationInSeconds.Value <> Nothing Then
  5597. Try
  5598. Dim tempstring As String
  5599. tempstring = ThisEp(h).Details.StreamDetails.Video.DurationInSeconds.Value
  5600. If Pref.intruntime Then
  5601. ThisEp(h).Runtime.Value = Math.Round(tempstring / 60).ToString
  5602. Else
  5603. ThisEp(h).Runtime.Value = Math.Round(tempstring / 60).ToString & " min"
  5604. End If
  5605. Catch
  5606. End Try
  5607. End If
  5608. Next
  5609. WorkingWithNfoFiles.ep_NfoSave(ThisEp, ThisEp(0).NfoFilePath)
  5610. Catch ex As Exception
  5611. messbox.Close()
  5612. ExceptionHandler.LogError(ex)
  5613. End Try
  5614. Next
  5615. messbox.Close()
  5616. tv_CacheRefresh(WorkingTvShow)
  5617. Catch ex As Exception
  5618. messbox.Close()
  5619. ExceptionHandler.LogError(ex)
  5620. End Try
  5621. End Sub
  5622. Private Sub Tv_TreeViewContext_MissingEpThumbs_Click(sender As System.Object, e As System.EventArgs) Handles Tv_TreeViewContext_MissingEpThumbs.Click
  5623. Try
  5624. Dim tmp As Integer = Utilities.languagelibrary.count
  5625. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  5626. Dim tempint As Integer = 0
  5627. Dim seasonnumber As Integer = -1
  5628. Dim nfofilestorename As New List(Of String)
  5629. nfofilestorename.Clear()
  5630. Dim donelist As New List(Of String)
  5631. donelist.Clear()
  5632. If WorkingTvShow.Episodes.Count = 0 Then
  5633. MsgBox("No Episodes in this Show")
  5634. Exit Sub
  5635. End If
  5636. If TvTreeview.SelectedNode.Name.IndexOf("\missing\") = -1 Then
  5637. If TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvSeason Then
  5638. Dim Thisseason As TvSeason = TvTreeview.SelectedNode.Tag
  5639. seasonnumber = Thisseason.SeasonNumber
  5640. End If
  5641. End If
  5642. messbox = New frmMessageBox("Scanning for Missing episode thumbnails,", "and downloading if available.", " Please Wait")
  5643. messbox.Show()
  5644. messbox.Refresh()
  5645. Application.DoEvents()
  5646. Dim tvdbstuff As New TVDBScraper
  5647. Dim tvseriesdata As New Tvdb.ShowData
  5648. Dim language As String = WorkingTvShow.Language.Value
  5649. If language = "" Then language = "en"
  5650. tvseriesdata = tvdbstuff.GetShow(WorkingTvShow.TvdbId.Value, language, SeriesXmlPath)
  5651. For Each ep As TvEpisode In WorkingTvShow.Episodes
  5652. If ep.IsMissing Then Continue For
  5653. If Not seasonnumber = -1 AndAlso ep.Season.Value <> seasonnumber.ToString Then Continue For
  5654. Dim Episodedata As New Tvdb.Episode
  5655. Dim epfound As Boolean = False
  5656. If Not tvseriesdata.FailedLoad Then
  5657. For Each NewEpisode As Tvdb.Episode In tvseriesdata.Episodes
  5658. If Not String.IsNullOrEmpty(ep.UniqueId.Value) Then
  5659. If NewEpisode.Id.Value = ep.UniqueId.Value Then epfound = True
  5660. ElseIf NewEpisode.SeasonNumber.Value = ep.Season.Value
  5661. If NewEpisode.EpisodeNumber.Value = ep.Episode.Value Then epfound = True
  5662. End If
  5663. If epfound Then
  5664. Episodedata = NewEpisode
  5665. Episodedata.ThumbNail.Value = "http://www.thetvdb.com/banners/" & NewEpisode.ThumbNail.value
  5666. Exit For
  5667. End If
  5668. Next
  5669. End If
  5670. If Not epfound Then
  5671. Dim sortorder As String = WorkingTvShow.SortOrder.Value
  5672. If sortorder = "" Then sortorder = "default"
  5673. Dim tvdbid As String = WorkingTvShow.TvdbId.Value
  5674. Dim imdbid As String = WorkingTvShow.ImdbId.Value
  5675. Dim seasonno As String = ep.Season.Value
  5676. Dim episodeno As String = ep.Episode.Value
  5677. Episodedata = tvdbstuff.getepisodefromxml(tvdbid, sortorder, seasonno, episodeno, language, True)
  5678. If Episodedata.FailedLoad Then Continue For
  5679. End If
  5680. Dim epdata As New TvEpisode
  5681. epdata.AbsorbTvdbEpisode(Episodedata)
  5682. epdata.NfoFilePath = ep.NfoFilePath
  5683. epdata.VideoFilePath = ep.VideoFilePath
  5684. epdata.Thumbnail.Url = Episodedata.ThumbNail.Value
  5685. tv_EpisodeFanartGet(epdata, False)
  5686. Next
  5687. messbox.Close()
  5688. Catch ex As Exception
  5689. messbox.Close()
  5690. ExceptionHandler.LogError(ex)
  5691. End Try
  5692. End Sub
  5693. Private Sub tv_PosterSetup(Optional ByVal IsOfType As String = "")
  5694. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  5695. Dim WorkingSeason As TvSeason = tv_SeasonSelectedCurrently(TvTreeview)
  5696. tvposterpage = 0
  5697. imdbposterlist.Clear()
  5698. tvdbposterlist.Clear()
  5699. rbTVposter.Checked = True
  5700. rbTVposter.Enabled = False
  5701. rbTVbanner.Enabled = False
  5702. ComboBox2.Items.Clear()
  5703. tvobjects.Clear()
  5704. TextBox31.Text = WorkingTvShow.Title.Value
  5705. Label72.Text = ""
  5706. tv_PosterPanelClear()
  5707. ComboBox2.Items.Add("Main Image")
  5708. ComboBox2.Items.Add("Season All")
  5709. For Each tvshow In Cache.TvCache.Shows
  5710. If tvshow.TvdbId = WorkingTvShow.TvdbId Then
  5711. For Each Season As Media_Companion.TvSeason In tvshow.Seasons.Values
  5712. For Each ep As Media_Companion.TvEpisode In Season.Episodes
  5713. Dim seasonstring As String = ""
  5714. If ep.Season.Value < 1 Then
  5715. seasonstring = "Specials"
  5716. Else
  5717. seasonstring = "Season " & Utilities.PadNumber(ep.Season.Value.ToString, 2)
  5718. End If
  5719. If Not ComboBox2.Items.Contains(seasonstring) Then
  5720. ComboBox2.Items.Add(seasonstring)
  5721. End If
  5722. Next
  5723. Next
  5724. Exit For
  5725. End If
  5726. Next
  5727. ComboBox2.SelectedIndex = 0
  5728. If Not WorkingSeason is Nothing then
  5729. Dim ThisSeason As String = WorkingSeason.ToString
  5730. If ThisSeason = "Season 00" then ThisSeason = "Specials"
  5731. For i=0 to ComboBox2.Items.Count
  5732. ComboBox2.SelectedIndex = i
  5733. If ComboBox2.text = ThisSeason Then
  5734. If IsOfType = "banner" Then rbTVbanner.Checked = True
  5735. Exit For
  5736. End If
  5737. Next
  5738. End If
  5739. End Sub
  5740. Public Function BannerAndPosterViewer()
  5741. Try
  5742. Me.Panel16.Hide()
  5743. Label72.Text = ""
  5744. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  5745. rbTVposter.Enabled = True
  5746. rbTVbanner.Enabled = True
  5747. btnTvPosterTVDBSpecific.Enabled = True
  5748. Dim eden As Boolean = Pref.EdenEnabled
  5749. Dim frodo As Boolean = Pref.FrodoEnabled
  5750. Dim edenpath As String =""
  5751. Dim frodopath As string =""
  5752. Dim tempstring As String = ComboBox2.SelectedItem
  5753. Dim PresentImage As String = ""
  5754. Dim defimg As String = ""
  5755. Dim path As String = ""
  5756. EdenImageTrue.Visible = False
  5757. FrodoImageTrue.Visible=False
  5758. If tempstring = "Main Image" Then
  5759. If eden Then
  5760. path = WorkingTvShow.NfoFilePath.Replace("tvshow.nfo", "folder.jpg")
  5761. edenpath = path
  5762. End If
  5763. If frodo Then
  5764. If rbTVbanner.Checked = True Then
  5765. path = WorkingTvShow.NfoFilePath.Replace("tvshow.nfo", "banner.jpg")
  5766. frodopath = path
  5767. ElseIf rbTVposter.Checked = True Then
  5768. path = WorkingTvShow.NfoFilePath.Replace("tvshow.nfo", "poster.jpg")
  5769. frodopath = path
  5770. End If
  5771. End If
  5772. ElseIf tempstring = "Specials" Then
  5773. If eden Then
  5774. path = WorkingTvShow.NfoFilePath.Replace("tvshow.nfo", "season-specials.tbn")
  5775. edenpath = path
  5776. End If
  5777. If frodo Then
  5778. If rbTVbanner.Checked = True Then
  5779. path = WorkingTvShow.NfoFilePath.Replace("tvshow.nfo", "season-specials-banner.jpg")
  5780. frodopath = path
  5781. ElseIf rbTVposter.Checked = True Then
  5782. path = WorkingTvShow.NfoFilePath.Replace("tvshow.nfo", "season-specials-poster.jpg")
  5783. frodopath = path
  5784. End If
  5785. End If
  5786. ElseIf tempstring.IndexOf("Season") = 0 And tempstring.IndexOf("Season All") = -1 Then
  5787. path = tempstring.Replace("Season ", "")
  5788. path = WorkingTvShow.NfoFilePath.Replace("tvshow.nfo", "season" & path & ".tbn")
  5789. edenpath = path
  5790. If frodo Then
  5791. If rbTVbanner.Checked = True Then
  5792. path = path.Replace(".tbn", "-banner.jpg")
  5793. frodopath = path
  5794. ElseIf rbTVposter.Checked = True Then
  5795. path = path.Replace(".tbn", "-poster.jpg")
  5796. frodopath = path
  5797. End If
  5798. End If
  5799. ElseIf tempstring = "Season All" Then
  5800. btnTvPosterTVDBSpecific.Enabled = False
  5801. If eden Then
  5802. path = WorkingTvShow.NfoFilePath.Replace("tvshow.nfo", "season-all.tbn")
  5803. edenpath = path
  5804. End If
  5805. If frodo Then
  5806. If rbTVbanner.Checked = True Then
  5807. path = WorkingTvShow.NfoFilePath.Replace("tvshow.nfo", "season-all-banner.jpg")
  5808. frodopath = path
  5809. ElseIf rbTVposter.Checked = True Then
  5810. path = WorkingTvShow.NfoFilePath.Replace("tvshow.nfo", "season-all-poster.jpg")
  5811. frodopath = path
  5812. End If
  5813. End If
  5814. End If
  5815. If (eden and IO.File.Exists(edenpath)) or (frodo and IO.File.Exists(frodopath)) Then
  5816. EdenImageTrue.Visible =False
  5817. EdenImageTrue.Text = "Eden Image Present"
  5818. FrodoImageTrue.Visible=False
  5819. FrodoImageTrue.Text = "Frodo Image Present"
  5820. ArtMode.Text=""
  5821. If eden Then
  5822. EdenImageTrue.Visible = True
  5823. ArtMode.Text="Pre-Frodo Enabled"
  5824. End If
  5825. If frodo Then
  5826. FrodoImageTrue.Visible = True
  5827. ArtMode.Text="Frodo Enabled"
  5828. End If
  5829. If frodo and eden then
  5830. ArtMode.text="Both Enabled"
  5831. EdenImageTrue.Visible=True
  5832. FrodoImageTrue.Visible=True
  5833. End If
  5834. If IO.File.Exists(edenpath) then
  5835. PresentImage = edenpath
  5836. EdenImageTrue.Text = "Eden Image Present"
  5837. Else
  5838. EdenImageTrue.Text = "No Eden Image"
  5839. End If
  5840. If IO.File.Exists(frodopath) then
  5841. PresentImage = frodopath
  5842. FrodoImageTrue.Text="Frodo Image Present"
  5843. Else
  5844. FrodoImageTrue.Text = "No Frodo Image"
  5845. End If
  5846. Else
  5847. If rbTVbanner.Checked = True Then
  5848. defimg = Utilities.DefaultBannerPath
  5849. If eden and not frodo then
  5850. EdenImageTrue.Text="No Eden Image"
  5851. EdenImageTrue.Visible=True
  5852. FrodoImageTrue.Visible=False
  5853. ElseIf frodo and Not eden then
  5854. FrodoImageTrue.Text="No Frodo Image"
  5855. FrodoImageTrue.Visible=True
  5856. EdenImageTrue.Visible=False
  5857. ElseIf frodo and eden then
  5858. EdenImageTrue.Text="No Eden Image"
  5859. EdenImageTrue.Visible=True
  5860. FrodoImageTrue.Text="No Frodo Image"
  5861. FrodoImageTrue.Visible=True
  5862. End If
  5863. Else
  5864. defimg = Utilities.DefaultPosterPath
  5865. If eden and not frodo then
  5866. EdenImageTrue.Text="No Eden Image"
  5867. EdenImageTrue.Visible=True
  5868. FrodoImageTrue.Visible=False
  5869. ElseIf frodo and Not eden then
  5870. FrodoImageTrue.Text="No Frodo Image"
  5871. FrodoImageTrue.Visible=True
  5872. EdenImageTrue.Visible=False
  5873. ElseIf frodo and eden then
  5874. EdenImageTrue.Text="No Eden Image"
  5875. EdenImageTrue.Visible=True
  5876. FrodoImageTrue.Text="No Frodo Image"
  5877. FrodoImageTrue.Visible=True
  5878. End If
  5879. End If
  5880. End If
  5881. util_ImageLoad(PictureBox12, PresentImage, If(rbTVbanner.Checked, Utilities.DefaultTvBannerPath, Utilities.DefaultTvPosterPath))
  5882. If rbTVbanner.Checked = True Then
  5883. Label73.Text = "Current Banner - " & PictureBox12.Image.Width.ToString & " x " & PictureBox12.Image.Height.ToString
  5884. Else
  5885. Label73.Text = "Current Poster - " & PictureBox12.Image.Width.ToString & " x " & PictureBox12.Image.Height.ToString
  5886. End If
  5887. Return 0
  5888. Catch ex As Exception
  5889. Return 0
  5890. ExceptionHandler.LogError(ex)
  5891. End Try
  5892. End Function
  5893. Private Sub tv_TvdbThumbsGet()
  5894. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  5895. Dim showlist As New XmlDocument
  5896. Dim tvdbstuff As New TVDBScraper
  5897. 'Dim AListOfBanners As New List(Of TvBanners)
  5898. Dim thumblist As String = tvdbstuff.GetPosterList(WorkingTvShow.TvdbId.Value, tvdbposterlist)
  5899. If thumblist <> "ok" Then MsgBox(thumblist, MsgBoxStyle.OkOnly, "TVdb site returned.....")
  5900. 'Try
  5901. ' showlist.LoadXml(thumblist)
  5902. 'Catch ex As Exception
  5903. ' MsgBox(thumblist, MsgBoxStyle.OkOnly, "TVdb site returned.....")
  5904. ' Exit Sub
  5905. 'End Try
  5906. 'For Each thisresult In showlist("banners")
  5907. ' Select Case thisresult.Name
  5908. ' Case "banner"
  5909. ' Dim individualposter As New TvBanners
  5910. ' For Each results In thisresult.ChildNodes
  5911. ' Select Case results.Name
  5912. ' Case "id"
  5913. ' individualposter.id = results.InnerText
  5914. ' Case "url"
  5915. ' individualposter.Url = results.InnerText
  5916. ' Case "bannertype"
  5917. ' individualposter.BannerType = results.InnerText
  5918. ' Case "resolution"
  5919. ' individualposter.Resolution = results.InnerText
  5920. ' Case "language"
  5921. ' individualposter.Language = results.InnerText
  5922. ' Case "season"
  5923. ' individualposter.Season = results.InnerText
  5924. ' End Select
  5925. ' Next
  5926. ' individualposter.SmallUrl = individualposter.Url.Replace("http://thetvdb.com/banners/", "http://thetvdb.com/banners/_cache/")
  5927. ' tvdbposterlist.Add(individualposter)
  5928. ' End Select
  5929. 'Next
  5930. End Sub
  5931. Private Sub tv_PosterPanelPopulate()
  5932. Me.Panel16.Show()
  5933. tvposterpage = 1
  5934. If usedlist.Count <= 0 Then
  5935. Label72.Text = "Displaying 0 of 0 Images"
  5936. Label72.Visible = True
  5937. btnTvPosterNext.Visible = False
  5938. btnTvPosterPrev.Visible = False
  5939. Call tv_PosterPanelClear()
  5940. Exit Sub
  5941. End If
  5942. If Not rbTVbanner.Checked Then
  5943. If usedlist.Count > 10 Then
  5944. btnTvPosterNext.Visible = True
  5945. btnTvPosterPrev.Visible = True
  5946. If usedlist.Count >= 10 Then
  5947. Label72.Text = "Displaying 1 to 10 of " & usedlist.Count.ToString & " Images"
  5948. Else
  5949. Label72.Text = "Displaying 1 to " & usedlist.Count.ToString & " of " & usedlist.Count.ToString & " Images"
  5950. End If
  5951. Label72.Visible = True
  5952. Me.Refresh()
  5953. Application.DoEvents()
  5954. btnTvPosterPrev.Enabled = False
  5955. btnTvPosterNext.Enabled = True
  5956. Else
  5957. btnTvPosterNext.Visible = False
  5958. btnTvPosterPrev.Visible = False
  5959. If posterArray.Count >= 10 Then
  5960. Label72.Text = "Displaying 1 to 10 of " & usedlist.Count.ToString & " Images"
  5961. 'Label72.Text = "Displaying 1 to " & Pref.maximumthumbs & " of " & usedlist.Count.ToString & " Images"
  5962. Else
  5963. Label72.Text = "Displaying 1 to " & usedlist.Count.ToString & " of " & usedlist.Count.ToString & " Images"
  5964. End If
  5965. Label72.Visible = True
  5966. Me.Refresh()
  5967. Application.DoEvents()
  5968. End If
  5969. Else
  5970. btnTvPosterNext.Visible = False
  5971. btnTvPosterPrev.Visible = False
  5972. Label72.Text = "Displaying 1 to " & usedlist.Count.ToString
  5973. End If
  5974. Call tv_PosterSelectionDisplay()
  5975. End Sub
  5976. Private Sub tv_PosterPanelClear()
  5977. For i = Panel16.Controls.Count - 1 To 0 Step -1
  5978. Panel16.Controls.RemoveAt(i)
  5979. Next
  5980. End Sub
  5981. Private Sub tv_PosterSelectionDisplay()
  5982. tv_PosterPanelClear()
  5983. Dim tempint As Integer = ((tvposterpage * 10) + 1) - 10
  5984. Dim tempint2 As Integer = tvposterpage * 10
  5985. If tempint2 > usedlist.Count Then
  5986. tempint2 = usedlist.Count
  5987. End If
  5988. If Not rbTVbanner.Checked Then
  5989. Label72.Text = "Displaying " & tempint.ToString & " to " & tempint2 & " of " & usedlist.Count.ToString & " Images"
  5990. Else
  5991. Label72.Text = "Displaying 1 to " & usedlist.Count.ToString
  5992. tempint2 = usedlist.Count
  5993. End If
  5994. Dim locationX As Integer = 0
  5995. Dim locationY As Integer = 0
  5996. Dim itemcounter As Integer = 0
  5997. Dim tempboolean As Boolean = True
  5998. Dim MovFanartPicBox As New List(Of FanartPicBox)
  5999. If rbTVposter.Checked = True Or rbTVbanner.Enabled = False Then
  6000. For f = tempint - 1 To tempint2 - 1
  6001. Dim thispicbox As New FanartPicBox
  6002. tvposterpicboxes() = New PictureBox()
  6003. With tvposterpicboxes
  6004. .Location = New Point(locationX, locationY)
  6005. .Width = 123
  6006. .Height = 168
  6007. .SizeMode = PictureBoxSizeMode.Zoom
  6008. .Tag = usedlist(f).Url
  6009. .Visible = True
  6010. .BorderStyle = BorderStyle.Fixed3D
  6011. .Name = "poster" & itemcounter.ToString
  6012. AddHandler tvposterpicboxes.DoubleClick, AddressOf tv_PosterDoubleClick
  6013. 'AddHandler tvposterpicboxes.LoadCompleted, AddressOf imageres
  6014. End With
  6015. thispicbox.pbox = tvposterpicboxes
  6016. thispicbox.imagepath = usedlist(f).SmallUrl
  6017. MovFanartPicBox.Add(thispicbox)
  6018. tvpostercheckboxes() = New RadioButton()
  6019. With tvpostercheckboxes
  6020. .Location = New Point(locationX + 19, locationY + 166) '179
  6021. .Width = 79
  6022. .Height = 32
  6023. .Name = "postercheckbox" & itemcounter.ToString
  6024. .SendToBack()
  6025. .CheckAlign = ContentAlignment.TopCenter
  6026. If usedlist(f).Resolution = "season" Then
  6027. .Text = " "
  6028. ElseIf usedlist(f).Resolution <> "" Then
  6029. .Text = usedlist(f).Resolution
  6030. Else
  6031. .Text = "?"
  6032. End If
  6033. .TextAlign = ContentAlignment.BottomCenter
  6034. .Tag = usedlist(f).Url
  6035. AddHandler tvpostercheckboxes.CheckedChanged, AddressOf tv_PosterRadioChanged
  6036. End With
  6037. itemcounter += 1
  6038. Me.Panel16.Controls.Add(tvposterpicboxes())
  6039. Me.Panel16.Controls.Add(tvpostercheckboxes())
  6040. Application.DoEvents()
  6041. If tempboolean = True Then
  6042. locationY = (192 + 19)
  6043. Else
  6044. locationX += 120
  6045. locationY = 0
  6046. End If
  6047. tempboolean = Not tempboolean
  6048. Next
  6049. Else
  6050. For f = tempint - 1 To tempint2 - 1
  6051. Dim thispicbox As New FanartPicBox
  6052. tvposterpicboxes() = New PictureBox()
  6053. With tvposterpicboxes
  6054. .Location = New Point(0, locationY)
  6055. .Width = 600
  6056. .Height = 114
  6057. .SizeMode = PictureBoxSizeMode.Zoom
  6058. .Tag = usedlist(f).Url
  6059. .Visible = True
  6060. .BorderStyle = BorderStyle.Fixed3D
  6061. .Name = "poster" & itemcounter.ToString
  6062. AddHandler tvposterpicboxes.DoubleClick, AddressOf tv_PosterDoubleClick
  6063. 'AddHandler tvposterpicboxes.LoadCompleted, AddressOf imageres
  6064. End With
  6065. thispicbox.pbox = tvposterpicboxes
  6066. thispicbox.imagepath = usedlist(f).Url
  6067. MovFanartPicBox.Add(thispicbox)
  6068. tvpostercheckboxes() = New RadioButton()
  6069. With tvpostercheckboxes
  6070. .Location = New Point(290, locationY + 110)
  6071. .Name = "postercheckbox" & itemcounter.ToString
  6072. .SendToBack()
  6073. .Text = " "
  6074. .Tag = usedlist(f).Url
  6075. AddHandler tvpostercheckboxes.CheckedChanged, AddressOf tv_PosterRadioChanged
  6076. End With
  6077. itemcounter += 1
  6078. locationY += 140
  6079. Me.Panel16.Controls.Add(tvposterpicboxes())
  6080. Me.Panel16.Controls.Add(tvpostercheckboxes())
  6081. Application.DoEvents()
  6082. Next
  6083. End If
  6084. Me.Panel16.Refresh()
  6085. Me.Refresh()
  6086. If MovFanartPicBox.Count > 0 Then
  6087. messbox.Close()
  6088. If Not ImgBw.IsBusy Then
  6089. ToolStripStatusLabel2.Text = "Starting Download of Images..."
  6090. ToolStripStatusLabel2.Visible = True
  6091. ImgBw.RunWorkerAsync({MovFanartPicBox, tempint, tempint2, Me.Panel16})
  6092. End If
  6093. End If
  6094. Me.Panel16.Refresh()
  6095. Me.Refresh()
  6096. Application.DoEvents()
  6097. If rbTVbanner.Checked AndAlso Me.Panel16.Controls.Count > 0 Then EnableTvBannerScrolling
  6098. Me.Refresh()
  6099. End Sub
  6100. Private Sub tv_PosterRadioChanged(ByVal sender As Object, ByVal e As EventArgs)
  6101. Dim tempstring As String = sender.name
  6102. Dim tempint As Integer = 0
  6103. Dim tempstring2 As String = tempstring
  6104. Dim allok As Boolean = False
  6105. tempstring = tempstring.Replace("postercheckbox", "")
  6106. tempint = Convert.ToDecimal(tempstring)
  6107. Dim hires(1)
  6108. Dim lores(1)
  6109. lores(0) = ""
  6110. hires(0) = ""
  6111. lores(1) = ""
  6112. hires(1) = ""
  6113. For Each cont As Control In Me.Panel16.Controls()
  6114. If cont.Name.Replace("poster", "") = tempint.ToString Then
  6115. Dim picbox As PictureBox = cont
  6116. lores(0) = "Save Image (" & picbox.Image.Width & " x " & picbox.Image.Height & ")"
  6117. lores(1) = picbox.Name
  6118. For Each poster In usedlist
  6119. If poster.url = sender.tag Then
  6120. If Not IsNothing(poster.Resolution) AndAlso IsNumeric(poster.resolution.Replace("x", "")) Then
  6121. hires(0) = "Save Image (" & poster.resolution & ")"
  6122. hires(0) = hires(0).replace("x", " x ")
  6123. Else
  6124. hires(0) = "Save Image (Hi-Res)"
  6125. End If
  6126. hires(1) = poster.url
  6127. Exit For
  6128. End If
  6129. Next
  6130. allok = True
  6131. Exit For
  6132. End If
  6133. Next
  6134. If allok = True Then
  6135. btnTvPosterSaveBig.Text = hires(0)
  6136. btnTvPosterSaveBig.Visible = True
  6137. btnTvPosterSaveBig.Tag = hires(1)
  6138. Else
  6139. btnTvPosterSaveBig.Visible = False
  6140. End If
  6141. End Sub
  6142. Private Sub tv_PosterDoubleClick(ByVal sender As Object, ByVal e As EventArgs)
  6143. Dim tempstring As String = sender.name.replace("poster", "postercheckbox")
  6144. Dim hdurl As String = ""
  6145. For Each Control In Panel16.Controls
  6146. If Control.name = tempstring Then
  6147. Dim rb As RadioButton = Control
  6148. rb.Checked = True
  6149. hdurl = rb.Tag.ToString
  6150. End If
  6151. Next
  6152. messbox = New frmMessageBox("Please wait,", "", "Downloading Full Image")
  6153. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  6154. messbox.Show()
  6155. Me.Refresh()
  6156. messbox.Refresh()
  6157. If hdurl = "" Then hdurl = sender.tag.tostring
  6158. Dim cachefile As String = Utilities.Download2Cache(hdurl)
  6159. Call util_ZoomImage(cachefile)
  6160. messbox.Close()
  6161. End Sub
  6162. Private Sub TvPosterSave(ByVal imageUrl As String)
  6163. If ImgBw.IsBusy Then
  6164. ImgBw.CancelAsync()
  6165. Do Until Not ImgBw.IsBusy
  6166. Application.DoEvents()
  6167. Loop
  6168. End If
  6169. Try
  6170. Dim witherror As Boolean = False
  6171. Dim witherror2 As Boolean = False
  6172. Dim path As String = ""
  6173. Dim eden As Int16=0
  6174. Dim frodo As Int16=0
  6175. Dim imagePaths As New List(Of String)
  6176. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  6177. Dim workingposterpath = WorkingTvShow.FolderPath & "folder.jpg"
  6178. If ComboBox2.Text.ToLower = "main image" Then
  6179. If (Pref.EdenEnabled OrElse Pref.tvfolderjpg) And Not (Pref.FrodoEnabled AndAlso rbTVbanner.Checked) Then
  6180. imagePaths.Add(workingposterpath)
  6181. eden = 1
  6182. End If
  6183. If Pref.FrodoEnabled Then
  6184. If rbTVbanner.Checked = True Then
  6185. imagePaths.Add(workingposterpath.Replace(IO.Path.GetFileName(workingposterpath), "banner.jpg"))
  6186. frodo = 1
  6187. ElseIf rbTVposter.Checked = True Then
  6188. imagePaths.Add(workingposterpath.Replace(IO.Path.GetFileName(workingposterpath), "poster.jpg"))
  6189. frodo = 1
  6190. End If
  6191. End If
  6192. If Pref.tvfolderjpg AndAlso rbTVposter.Checked Then
  6193. imagePaths.Add(workingposterpath)
  6194. End If
  6195. ElseIf ComboBox2.Text.ToLower.IndexOf("season") <> -1 And ComboBox2.Text.ToLower.IndexOf("all") = -1 Then
  6196. Dim temp As String = ComboBox2.Text.ToLower
  6197. temp = temp.Replace(" ", "")
  6198. If Pref.EdenEnabled Then
  6199. imagePaths.Add(workingposterpath.Replace(IO.Path.GetFileName(workingposterpath), temp & ".tbn"))
  6200. eden =1
  6201. End If
  6202. If Pref.FrodoEnabled Then
  6203. If rbTVbanner.Checked = True Then
  6204. imagePaths.Add(workingposterpath.Replace(IO.Path.GetFileName(workingposterpath), temp & "-banner.jpg"))
  6205. frodo = 1
  6206. ElseIf rbTVposter.Checked = True Then
  6207. imagePaths.Add(workingposterpath.Replace(IO.Path.GetFileName(workingposterpath), temp & "-poster.jpg"))
  6208. frodo = 1
  6209. End If
  6210. End If
  6211. If Pref.seasonfolderjpg Then
  6212. temp = temp.Replace("season", "")
  6213. Dim seasonno As Integer = temp.ToInt
  6214. Dim seasonpath As String = Nothing
  6215. For Each ep As TvEpisode In WorkingTvShow.Episodes
  6216. If ep.Season.Value = seasonno Then
  6217. seasonpath = ep.FolderPath.Replace(WorkingTvShow.FolderPath, "")
  6218. Exit For
  6219. End If
  6220. Next
  6221. If Not IsNothing(seasonpath) Then imagePaths.Add(WorkingTvShow.FolderPath & seasonpath & "folder.jpg")
  6222. End If
  6223. ElseIf ComboBox2.Text.ToLower.IndexOf("season") <> -1 And ComboBox2.Text.ToLower.IndexOf("all") <> -1 Then
  6224. If Pref.EdenEnabled Then
  6225. If Pref.seasonall="poster" and rbTVposter.Checked Then
  6226. imagePaths.Add(workingposterpath.Replace(IO.Path.GetFileName(workingposterpath), "season-all.tbn"))
  6227. eden =1
  6228. ElseIf Pref.seasonall="wide" and rbTVbanner.Checked Then
  6229. imagePaths.Add(workingposterpath.Replace(IO.Path.GetFileName(workingposterpath), "season-all.tbn"))
  6230. eden =1
  6231. End If
  6232. End If
  6233. If Pref.FrodoEnabled Then
  6234. If rbTVbanner.Checked = True Then
  6235. imagePaths.Add(workingposterpath.Replace(IO.Path.GetFileName(workingposterpath), "season-all-banner.jpg"))
  6236. frodo = 1
  6237. ElseIf rbTVposter.Checked = True Then
  6238. imagePaths.Add(workingposterpath.Replace(IO.Path.GetFileName(workingposterpath), "season-all-poster.jpg"))
  6239. frodo = 1
  6240. End If
  6241. End If
  6242. ElseIf ComboBox2.Text.ToLower = "specials" Then
  6243. If Pref.EdenEnabled Then
  6244. imagePaths.Add(workingposterpath.Replace(IO.Path.GetFileName(workingposterpath), "season-specials.tbn"))
  6245. eden =1
  6246. End If
  6247. If Pref.FrodoEnabled Then
  6248. If rbTVbanner.Checked = True Then
  6249. imagePaths.Add(workingposterpath.Replace(IO.Path.GetFileName(workingposterpath), "season-specials-banner.jpg"))
  6250. frodo = 1
  6251. ElseIf rbTVposter.Checked = True Then
  6252. imagePaths.Add(workingposterpath.Replace(IO.Path.GetFileName(workingposterpath), "season-specials-poster.jpg"))
  6253. frodo = 1
  6254. End If
  6255. End If
  6256. If Pref.seasonfolderjpg AndAlso rbTVposter.Checked Then
  6257. Dim seasonpath As String = ""
  6258. For Each seas In WorkingTvShow.Seasons.Values
  6259. If seas.SeasonNumber = 0 Then
  6260. seasonpath = seas.FolderPath
  6261. Exit For
  6262. End If
  6263. Next
  6264. If seasonpath <> "" Then
  6265. imagePaths.Add(seasonpath & "folder.jpg")
  6266. End If
  6267. End If
  6268. End If
  6269. messbox = New frmMessageBox("Please wait,", "", "Downloading Full Resolution Image")
  6270. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  6271. messbox.Show()
  6272. Me.Refresh()
  6273. messbox.Refresh()
  6274. Try
  6275. If Not IsNothing(imageUrl) Then
  6276. witherror = Not DownloadCache.SaveImageToCacheAndPaths(imageUrl, ImagePaths, True)
  6277. If Not witherror Then
  6278. path = imagePaths(0)
  6279. If rbTVbanner.Checked Then
  6280. util_ImageLoad(tv_PictureBoxBottom, path, Utilities.DefaultTvBannerPath)
  6281. End If
  6282. If rbTVposter.Checked Then
  6283. util_ImageLoad(tv_PictureBoxRight, path, Utilities.DefaultTvPosterPath)
  6284. End If
  6285. util_ImageLoad(PictureBox12, path, Utilities.DefaultTvPosterPath)
  6286. Label73.Text = "Current Poster - " & PictureBox12.Image.Width.ToString & " x " & PictureBox12.Image.Height.ToString
  6287. End If
  6288. End If
  6289. If witherror = True Then
  6290. MsgBox("Unable to download image")
  6291. Else
  6292. If eden =1 then
  6293. EdenImageTrue.Visible =True
  6294. EdenImageTrue.Text="Eden Image Present"
  6295. End if
  6296. If frodo =1 then
  6297. FrodoImageTrue.Visible =True
  6298. FrodoImageTrue.Text="Frodo Image Present"
  6299. End if
  6300. End If
  6301. Catch ex As Exception
  6302. MsgBox(ex.ToString)
  6303. Finally
  6304. messbox.Close()
  6305. End Try
  6306. If ComboBox2.Text.ToLower = "main image" AndAlso rbtvposter.Checked Then
  6307. Dim popath As String = Utilities.save2postercache(WorkingTvShow.NfoFilePath, WorkingTvShow.ImagePoster.Path, WallPicWidth, WallPicHeight)
  6308. updateTvPosterWall(popath, WorkingTvShow.NfoFilePath)
  6309. End If
  6310. path = ""
  6311. Catch ex As Exception
  6312. ExceptionHandler.LogError(ex)
  6313. End Try
  6314. End Sub
  6315. Private Sub RefreshMovieNfoFilesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RefreshMovieNfoFilesToolStripMenuItem.Click
  6316. Try
  6317. Call Batch_Rewritenfo()
  6318. Catch ex As Exception
  6319. ExceptionHandler.LogError(ex)
  6320. End Try
  6321. End Sub
  6322. Sub ShowMovieFilter(cbFilter As Control)
  6323. If Not cbFilter.Visible Then
  6324. movie_filters.GetItem(cbFilter.Name).Visible = True
  6325. Pref.movie_filters.SetMovieFiltersVisibility
  6326. UpdateMovieFiltersPanel
  6327. End If
  6328. End Sub
  6329. #Region "Media Info Export"
  6330. Dim exportMovieInfo As Boolean = False 'these are used to allow only a single execution of media export functions
  6331. Dim exportTVInfo As Boolean = False 'when there may be mulitple drop-down events. (Found that out the hard way!)
  6332. Private Sub ExportMovieListInfoToolStripMenuItem_DropDownItemClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles ExportMovieListInfoToolStripMenuItem.DropDownItemClicked
  6333. If Not exportMovieInfo Then exportMovieInfo = mediaInfoExp.setTemplate(e.ClickedItem.Text)
  6334. End Sub
  6335. Private Sub ExportTVShowInfoToolStripMenuItem_DropDownItemClicked(sender As Object, e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles ExportTVShowInfoToolStripMenuItem.DropDownItemClicked
  6336. If Not exportTVInfo Then exportTVInfo = mediaInfoExp.setTemplate(e.ClickedItem.Text)
  6337. End Sub
  6338. Private Sub ExportMovieListInfoToolStripMenuItem_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) Handles ExportMovieListInfoToolStripMenuItem.DropDownClosed
  6339. If exportMovieInfo Then
  6340. exportMovieInfo = False
  6341. Call util_ExportMediaListInfo(MediaInfoExport.mediaType.Movie)
  6342. End If
  6343. End Sub
  6344. Private Sub ExportTVShowInfoToolStripMenuItem_DropDownClosed(sender As Object, e As System.EventArgs) Handles ExportTVShowInfoToolStripMenuItem.DropDownClosed
  6345. If exportTVInfo = True Then
  6346. exportTVInfo = False
  6347. Call util_ExportMediaListInfo(MediaInfoExport.mediaType.TV)
  6348. End If
  6349. End Sub
  6350. Private Sub util_ExportMediaListInfo(ByVal mediaType As String)
  6351. Dim savepath As String
  6352. Dim extensions As New Dictionary(Of String, String)
  6353. extensions.Add("html", "Html Documents (*.html)|*.html")
  6354. extensions.Add("xml", "XML Data (*.xml)|*.xml")
  6355. extensions.Add("csv", "CSV (Comma delimited) (*.csv)|*.csv")
  6356. Dim ext As String = mediaInfoExp.getPossibleFileType
  6357. Dim idx As Integer
  6358. For idx = 1 To extensions.Count
  6359. If extensions.Keys(idx - 1) = ext Then Exit For
  6360. Next
  6361. With SaveFileDialog1
  6362. .DefaultExt = ext
  6363. .Filter = String.Join("|", extensions.Values)
  6364. .FilterIndex = idx
  6365. .Title = "ExportMedia File"
  6366. .OverwritePrompt = True
  6367. .CheckPathExists = True
  6368. If mediaInfoExp.workingTemplate.FileName <> "" Then
  6369. .FileName = mediaInfoExp.workingTemplate.FileName
  6370. End If
  6371. End With
  6372. If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
  6373. savepath = SaveFileDialog1.FileName
  6374. Dim mediaCollection As Object
  6375. If mediaType = MediaInfoExport.mediaType.Movie Then
  6376. 'Dirty hack to get the media export to use the data grid source. Wasn't as straight forward as hoped,
  6377. 'and after spending many hours trying to find an elegant solution, I gave up.
  6378. 'If anyone comes across this and thinks "Huey, you twat, just do it like this", then please go right
  6379. 'ahead! - HueyHQ 15Feb13
  6380. Dim mediaList As New List(Of ComboList)
  6381. For Each mediaItem As Data_GridViewMovie In DataGridViewMovies.DataSource
  6382. mediaList.Add(mediaItem.Export)
  6383. Next
  6384. mediaCollection = mediaList
  6385. Else
  6386. mediaCollection = Cache.TvCache.Shows
  6387. End If
  6388. mediaInfoExp.createDocument(savepath, mediaCollection)
  6389. End If
  6390. End Sub
  6391. #End Region 'Media Info Export
  6392. Private Sub bckgroundscanepisodes_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs, Optional ByVal manual As Boolean = False) Handles bckgroundscanepisodes.DoWork
  6393. Try
  6394. Dim List As List(Of TvShow) = e.Argument(0)
  6395. Dim Force As Boolean = e.Argument(1)
  6396. Statusstrip_Enable()
  6397. 'StatusStrip1.BackColor = Color.Honeydew
  6398. 'StatusStrip1.Visible = True
  6399. 'tsStatusLabel1.Visible = False
  6400. Call TV_EpisodeScraper(List, Force)
  6401. Catch ex As Exception
  6402. ExceptionHandler.LogError(ex)
  6403. End Try
  6404. End Sub
  6405. Private Sub bckgroundscanepisodes_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bckgroundscanepisodes.ProgressChanged
  6406. Try
  6407. If e.ProgressPercentage = 0 Then
  6408. ToolStripStatusLabel6.Text = e.UserState
  6409. ToolStripStatusLabel6.Visible = True
  6410. ElseIf e.ProgressPercentage = 1 Then
  6411. If TypeOf e.UserState Is TvEpisode Then
  6412. Dim TempEpisode As TvEpisode = CType(e.UserState, TvEpisode)
  6413. TempEpisode.ShowObj.AddEpisode(TempEpisode)
  6414. TempEpisode.SeasonObj.UpdateTreenode()
  6415. TempEpisode.UpdateTreenode(True)
  6416. 'This bit updates the Epsiode Count on the fly when the progress is updated. It has to be done here to avoid thread issues. (GUI wouldn't update properly)
  6417. TextBox_TotEpisodeCount.Text = Cache.TvCache.Episodes.Count
  6418. End If
  6419. End If
  6420. Catch ex As Exception
  6421. ExceptionHandler.LogError(ex)
  6422. End Try
  6423. End Sub
  6424. Private Sub bckgroundscanepisodes_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bckgroundscanepisodes.RunWorkerCompleted
  6425. Try
  6426. If scrapeAndQuit = True Then
  6427. sandq = sandq -1
  6428. Exit Sub
  6429. End If
  6430. If Not (e.Error Is Nothing) Then
  6431. tvScraperLog = tvScraperLog & vbCrLf
  6432. tvScraperLog = tvScraperLog & "!!! Error, exiting TV episode scraper" & vbCrLf
  6433. tvScraperLog = tvScraperLog & "Error:-" & vbCrLf
  6434. tvScraperLog = tvScraperLog & e.Error.ToString & vbCrLf
  6435. Else
  6436. tvScraperLog = tvScraperLog & vbCrLf & "!!! Operation Completed" & vbCrLf
  6437. End If
  6438. ToolStripStatusLabel6.Text = "TV Show Scraper"
  6439. ToolStripStatusLabel6.Visible = False
  6440. StatusStrip1.Visible = BckWrkScnMovies.IsBusy OrElse Not Pref.AutoHideStatusBar
  6441. If Not BckWrkScnMovies.IsBusy Then StatusStrip1.BackColor = Color.LightGray
  6442. tsStatusLabel1.Visible = Not BckWrkScnMovies.IsBusy
  6443. btnTvSearchNew.Text = "Search New"
  6444. Call util_ThreadsRunningCheck()
  6445. Tv_CacheSave()
  6446. tv_CacheLoad()
  6447. tv_Filter()
  6448. If Pref.disabletvlogs Or ScraperErrorDetected Then
  6449. Dim MyFormObject As New frmoutputlog(tvScraperLog, True)
  6450. Try
  6451. MyFormObject.ShowDialog()
  6452. Catch ex As ObjectDisposedException
  6453. #If SilentErrorScream Then
  6454. Throw ex
  6455. #End If
  6456. End Try
  6457. ScraperErrorDetected = False
  6458. Else
  6459. BlinkTaskBar()
  6460. End If
  6461. GC.Collect()
  6462. Catch ex As Exception
  6463. ExceptionHandler.LogError(ex)
  6464. End Try
  6465. End Sub
  6466. Private Sub ep_Search()
  6467. Dim ShowList As New List(Of TvShow)
  6468. If Not bckgroundscanepisodes.IsBusy And Not Bckgrndfindmissingepisodes.IsBusy Then
  6469. btnTvSearchNew.Text = "Cancel "
  6470. For Each item In Cache.TvCache.Shows
  6471. If (item.NfoFilePath.ToLower.IndexOf("tvshow.nfo") <> -1) And ((item.State = Media_Companion.ShowState.Open) Or TVSearchALL = True) Then
  6472. ShowList.Add(item)
  6473. End If
  6474. Next
  6475. bckgroundscanepisodes.RunWorkerAsync({ShowList, TVSearchALL}) 'if searching all episodes (inc locked) TVSearchALL is true
  6476. ElseIf bckgroundscanepisodes.IsBusy Then
  6477. MsgBox("This Episode Scraper is already running")
  6478. ElseIf Bckgrndfindmissingepisodes.IsBusy Then
  6479. MsgBox("The missing episode search cannot be performed" & vbCrLf & " while the episode scraper is running")
  6480. End If
  6481. End Sub
  6482. Private Sub SearchThisShowForNewEpisodesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tv_TreeViewContext_SearchNewEp.Click
  6483. Try
  6484. If TvTreeview.SelectedNode Is Nothing Then Exit Sub
  6485. Dim Season As TvSeason
  6486. Dim Episode As TvEpisode
  6487. Dim ShowList As New List(Of TvShow)
  6488. Dim selectednode As Integer = TvTreeview.SelectedNode.Index
  6489. If TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvShow Then
  6490. ShowList.Add(TvTreeview.SelectedNode.Tag)
  6491. ElseIf TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvSeason Then
  6492. Season = TvTreeview.SelectedNode.Tag
  6493. ShowList.Add(Season.ShowObj)
  6494. ElseIf TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvEpisode Then
  6495. Episode = TvTreeview.SelectedNode.Tag
  6496. ShowList.Add(Episode.ShowObj)
  6497. End If
  6498. Dim OverrideLock As Boolean = False
  6499. If ShowList(0).State <> 0 Then 'i.e. it is either locked or unverified
  6500. If MsgBox("This show is either 'Locked' or 'Unverified'. Do you want to continue scan?", MsgBoxStyle.YesNo, "Question?") = MsgBoxResult.Yes Then
  6501. OverrideLock = True
  6502. Else
  6503. Exit Sub
  6504. End If
  6505. End If
  6506. If Not bckgroundscanepisodes.IsBusy And Not Bckgrndfindmissingepisodes.IsBusy Then
  6507. btnTvSearchNew.Text = "Cancel "
  6508. bckgroundscanepisodes.RunWorkerAsync({ShowList, OverrideLock})
  6509. ElseIf bckgroundscanepisodes.IsBusy Then
  6510. MsgBox("This Episode Scraper is already running")
  6511. ElseIf Bckgrndfindmissingepisodes.IsBusy Then
  6512. MsgBox("The missing episode search cannot be performed" & vbCrLf & " while the episode scraper is running")
  6513. End If
  6514. Do Until Not bckgroundscanepisodes.IsBusy
  6515. Application.DoEvents()
  6516. Loop
  6517. TvTreeview.SelectedNode = TvTreeview.Nodes(selectednode)
  6518. Catch ex As Exception
  6519. ExceptionHandler.LogError(ex)
  6520. End Try
  6521. End Sub
  6522. Private Sub tpMovWall_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles tpMovWall.LostFocus
  6523. Try
  6524. tpMovWall.Focus()
  6525. Catch ex As Exception
  6526. ExceptionHandler.LogError(ex)
  6527. End Try
  6528. End Sub
  6529. Private Sub RefreshActorDBToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  6530. Try
  6531. Call mov_ActorRebuild()
  6532. Catch ex As Exception
  6533. ExceptionHandler.LogError(ex)
  6534. End Try
  6535. End Sub
  6536. Private Sub DownsizeAllFanartsToSelectedSizeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DownsizeAllFanartsToSelectedSizeToolStripMenuItem.Click
  6537. DownSizeAll("Backdrops")
  6538. End Sub
  6539. Private Sub DownsizeAllPostersToSelectedSizeToolStripMenuItem_Click( sender As System.Object, e As System.EventArgs) Handles DownsizeAllPostersToSelectedSizeToolStripMenuItem.Click
  6540. DownSizeAll("Posters")
  6541. End Sub
  6542. Private Sub DownSizeAll(postersOrBackdrops As String)
  6543. Dim tempint As Integer = oMovies.MovieCache.Count
  6544. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  6545. Dim point As Point
  6546. Dim height = 0
  6547. If postersOrBackdrops = "Backdrops" then
  6548. point = Movie.GetBackDropResolution(Pref.BackDropResolutionSI)
  6549. Else
  6550. height = Movie.GetHeightResolution(Pref.PosterResolutionSI)
  6551. End If
  6552. Using messbox As frmMessageBox = New frmMessageBox("Please wait - " & postersOrBackdrops & " are being resized", "", tempint.ToString & " remaining")
  6553. messbox.Show
  6554. Me.Refresh
  6555. messbox.Refresh
  6556. Dim path = ""
  6557. For Each m In oMovies.MovieCache
  6558. If postersOrBackdrops = "Backdrops" then
  6559. path = Pref.GetFanartPath(m.fullpathandfilename)
  6560. If File.Exists(path) Then DownloadCache.CopyAndDownSizeImage(path, path, point.x, point.y)
  6561. Else
  6562. path = Pref.GetPosterPath(m.fullpathandfilename)
  6563. If File.Exists(path) Then DownloadCache.CopyAndDownSizeImage(path, path, , height )
  6564. End If
  6565. tempint -= 1
  6566. messbox.TextBox3.Text = tempint.ToString & " remaining"
  6567. messbox.TextBox3.Refresh
  6568. Application.DoEvents
  6569. Next
  6570. End Using
  6571. End Sub
  6572. Public Sub mov_RebuildMovieCaches
  6573. mov_PreferencesDisplay
  6574. RunBackgroundMovieScrape("RebuildCaches")
  6575. End Sub
  6576. Private Sub CheckRootsForToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckRootsForToolStripMenuItem.Click
  6577. Try
  6578. tv_ShowFind(Pref.tvRootFolders, False)
  6579. If newTvFolders.Count > 0 Then
  6580. For Each item In newTvFolders
  6581. Pref.tvFolders.Add(item)
  6582. Next
  6583. Pref.tvFolders.Sort()
  6584. Pref.ConfigSave()
  6585. End If
  6586. tv_ShowScrape()
  6587. Catch ex As Exception
  6588. ExceptionHandler.LogError(ex)
  6589. End Try
  6590. End Sub
  6591. Public Sub tv_ShowFind(ByVal rootfolders As List(Of str_RootPaths), Optional ByVal skiptvfolderschk As Boolean = False)
  6592. Dim Folders As List(Of String)
  6593. newTvFolders.Clear()
  6594. For Each folder In rootfolders
  6595. If Not folder.selected Then Continue For
  6596. Folders = Utilities.EnumerateFolders(folder.rpath, 0)
  6597. For Each strfolder2 As String In Folders
  6598. If skiptvfolderschk Then
  6599. If Not ListBox6.Items.Contains(strfolder2) AndAlso Utilities.ValidMovieDir(strfolder2) Then newTvFolders.Add(strfolder2)
  6600. ElseIf Not Pref.tvFolders.Contains(strfolder2) AndAlso Utilities.ValidMovieDir(strfolder2) Then
  6601. If Not ListBox6.Items.Contains(strfolder2) Then newTvFolders.Add(strfolder2)
  6602. End If
  6603. Next
  6604. Next
  6605. End Sub
  6606. Public Sub tv_ShowScrape()
  6607. If Not bckgrnd_tvshowscraper.IsBusy Then
  6608. If newTvFolders.Count > 0 Then
  6609. ToolStripStatusLabel5.Text = "Scraping TV Shows, " & newTvFolders.Count & " remaining"
  6610. ToolStripStatusLabel5.Visible = True
  6611. End If
  6612. Dim selectedLang As String = If(Pref.tvshow_useXBMC_Scraper, Pref.XBMCTVDbLanguage, Pref.TvdbLanguageCode)
  6613. Dim args As TvdbArgs = New TvdbArgs("", selectedLang)
  6614. bckgrnd_tvshowscraper.RunWorkerAsync(args) ' Even if no shows scraped, saves tvcache and updates treeview in RunWorkerComplete
  6615. End If
  6616. End Sub
  6617. Public Function util_RegexValidate(ByVal regexs As String)
  6618. Try
  6619. Dim test As Match
  6620. test = Regex.Match("", regexs)
  6621. Catch ex As Exception
  6622. Return False
  6623. End Try
  6624. Return True
  6625. End Function
  6626. Public Function tv_LanguageCheck(ByVal id As String, ByVal language As String)
  6627. Try
  6628. Dim languagecode As String = language
  6629. Dim url As String = "http://thetvdb.com/api/6E82FED600783400/series/" & id & "/" & languagecode & ".xml"
  6630. Dim websource(10000)
  6631. Dim urllinecount As Integer = 0
  6632. Try
  6633. Dim wrGETURL As WebRequest
  6634. wrGETURL = WebRequest.Create(url)
  6635. wrGETURL.Proxy = Utilities.MyProxy
  6636. Dim objStream As Stream
  6637. objStream = wrGETURL.GetResponse.GetResponseStream()
  6638. Dim objReader As New StreamReader(objStream)
  6639. Dim sLine As String = ""
  6640. urllinecount = 0
  6641. Do While Not sLine Is Nothing
  6642. urllinecount += 1
  6643. sLine = objReader.ReadLine
  6644. If Not sLine Is Nothing Then
  6645. websource(urllinecount) = sLine
  6646. End If
  6647. Loop
  6648. objReader.Close()
  6649. objStream.Close()
  6650. objReader = Nothing
  6651. objStream = Nothing
  6652. urllinecount -= 1
  6653. Catch ex As Exception
  6654. End Try
  6655. For f = 1 To urllinecount
  6656. If websource(f).IndexOf("<Language>") <> -1 Then
  6657. websource(f) = websource(f).Replace("<Language>", "")
  6658. websource(f) = websource(f).Replace("</Language>", "")
  6659. websource(f) = websource(f).Replace(" ", "")
  6660. If websource(f).ToLower = languagecode Then
  6661. Return True
  6662. Else
  6663. Return False
  6664. End If
  6665. End If
  6666. Next
  6667. Catch ex As Exception
  6668. End Try
  6669. Return "Error"
  6670. End Function
  6671. Private Sub ProfilesToolStripMenuItem_DropDownItemClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles ProfilesToolStripMenuItem.DropDownItemClicked
  6672. Try
  6673. Pref.ConfigSave()
  6674. For Each prof In profileStruct.ProfileList
  6675. If prof.ProfileName = e.ClickedItem.Text Then
  6676. workingProfile.actorcache = prof.actorcache
  6677. workingProfile.DirectorCache = prof.DirectorCache
  6678. workingProfile.config = prof.config
  6679. workingProfile.Genres = prof.Genres
  6680. workingProfile.moviecache = prof.moviecache
  6681. workingProfile.MusicVideoCache = prof.MusicVideoCache
  6682. workingProfile.profilename = prof.profilename
  6683. workingProfile.regexlist = prof.regexlist
  6684. workingProfile.tvcache = prof.tvcache
  6685. workingProfile.MovieSetCache = prof.MovieSetCache
  6686. workingProfile.CustomTvCache = prof.CustomTvCache
  6687. Call util_ProfileSetup()
  6688. End If
  6689. Next
  6690. If e.ClickedItem.Text <> workingProfile.profilename Then Exit Sub
  6691. For Each item In ProfilesToolStripMenuItem.DropDownItems
  6692. If item.text = workingProfile.profilename Then
  6693. With item
  6694. item.checked = True
  6695. End With
  6696. Else
  6697. item.checked = False
  6698. End If
  6699. Next
  6700. Catch ex As Exception
  6701. ExceptionHandler.LogError(ex)
  6702. End Try
  6703. End Sub
  6704. Private Sub util_ProfileSetup()
  6705. messbox = New frmMessageBox(" Please Wait", , "Loading Profile")
  6706. messbox.Show()
  6707. messbox.Refresh()
  6708. Application.DoEvents()
  6709. Me.Enabled = False
  6710. If IO.File.Exists(workingProfile.config) Then
  6711. Pref.moviesets.Clear()
  6712. Me.util_ConfigLoad()
  6713. Else
  6714. Call SetUpPreferences()
  6715. End If
  6716. util_MainFormTitleUpdate() 'creates & shows new title to Form1, also includes current profile name
  6717. If Not IO.File.Exists(workingProfile.moviecache) Or Pref.startupCache = False Then
  6718. mov_RebuildMovieCaches
  6719. Else
  6720. oMovies.LoadCaches
  6721. End If
  6722. If IO.File.Exists(workingProfile.Genres) Then Call util_GenreLoad()
  6723. If Not IO.File.Exists(workingProfile.tvcache) Or Pref.startupCache = False Then
  6724. Call tv_CacheRefresh()
  6725. Else
  6726. Call tv_CacheLoad()
  6727. End If
  6728. If Not IO.File.Exists(workingProfile.CustomTvCache) Or Pref.startupCache = False Then
  6729. Call Custtv_CacheRefresh()
  6730. Else
  6731. Call Custtv_CacheLoad()
  6732. End If
  6733. If IO.File.Exists(workingProfile.MusicVideoCache) Then Call UcMusicVideo1.MVCacheLoad()
  6734. Me.Refresh()
  6735. Application.DoEvents()
  6736. If Pref.splt5 = 0 Then
  6737. Dim tempint As Integer = SplitContainer1.Height
  6738. tempint = tempint / 4
  6739. tempint = tempint * 3
  6740. Pref.splt5 = If(tempint > 275, tempint, 275)
  6741. End If
  6742. If Pref.startuptab = 0 Then
  6743. SplitContainer1.SplitterDistance = Pref.splt1
  6744. SplitContainer2.SplitterDistance = Pref.splt2
  6745. SplitContainer5.SplitterDistance = Pref.splt5
  6746. TabLevel1.SelectedIndex = 1
  6747. SplitContainer3.SplitterDistance = Pref.splt3
  6748. SplitContainer4.SplitterDistance = Pref.splt4
  6749. _tv_SplitContainer.SplitterDistance = Pref.splt6
  6750. TabLevel1.SelectedIndex = 0
  6751. Else
  6752. SplitContainer1.SplitterDistance = Pref.splt1
  6753. SplitContainer2.SplitterDistance = Pref.splt2
  6754. SplitContainer5.SplitterDistance = Pref.splt5
  6755. TabLevel1.SelectedIndex = 1
  6756. SplitContainer3.SplitterDistance = Pref.splt3
  6757. SplitContainer4.SplitterDistance = Pref.splt4
  6758. _tv_SplitContainer.SplitterDistance = Pref.splt6
  6759. End If
  6760. SplitContainer1.IsSplitterFixed = False
  6761. SplitContainer2.IsSplitterFixed = False
  6762. SplitContainer3.IsSplitterFixed = False
  6763. SplitContainer4.IsSplitterFixed = False
  6764. SplitContainer5.IsSplitterFixed = False
  6765. _tv_SplitContainer.IsSplitterFixed = False
  6766. 'Dim tempboolean As Boolean = UrlIsValid("http://thetvdb.com/")
  6767. Try
  6768. If cbMovieDisplay_MovieSet.Items.Count <> Pref.moviesets.Count Then
  6769. cbMovieDisplay_MovieSet.Items.Clear()
  6770. For Each mset In Pref.moviesets
  6771. cbMovieDisplay_MovieSet.Items.Add(If(Pref.MovSetTitleIgnArticle, Pref.RemoveIgnoredArticles(mset), mset))
  6772. Next
  6773. End If
  6774. If workingMovieDetails.fullmoviebody.MovieSet.MovieSetName <> "-None-" Then
  6775. For Each mset In Pref.moviesets
  6776. cbMovieDisplay_MovieSet.Items.Add(If(Pref.MovSetTitleIgnArticle, Pref.RemoveIgnoredArticles(mset), mset))
  6777. Next
  6778. For te = 0 To cbMovieDisplay_MovieSet.Items.Count - 1
  6779. If cbMovieDisplay_MovieSet.Items(te) = workingMovieDetails.fullmoviebody.MovieSet.MovieSetDisplayName Then
  6780. cbMovieDisplay_MovieSet.SelectedIndex = te
  6781. Exit For
  6782. End If
  6783. Next
  6784. End If
  6785. Catch ex As Exception
  6786. #If SilentErrorScream Then
  6787. Throw ex
  6788. #End If
  6789. End Try
  6790. mov_VideoSourcePopulate()
  6791. ep_VideoSourcePopulate()
  6792. Try
  6793. TabControl2.SelectedIndex = 0
  6794. currentTabIndex = 0
  6795. Catch ex As Exception
  6796. #If SilentErrorScream Then
  6797. Throw ex
  6798. #End If
  6799. End Try
  6800. Try
  6801. TabControl3.SelectedIndex = 0
  6802. tvCurrentTabIndex = 0
  6803. Catch ex As Exception
  6804. #If SilentErrorScream Then
  6805. Throw ex
  6806. #End If
  6807. End Try
  6808. Me.Enabled = True
  6809. messbox.Close()
  6810. End Sub
  6811. Public Sub mov_SwitchRuntime()
  6812. If workingMovieDetails Is Nothing Then Exit Sub
  6813. If Pref.enablehdtags = True And workingMovieDetails.filedetails.filedetails_video.DurationInSeconds <> Nothing And Not displayRuntimeScraper Then
  6814. runtimetxt.Text = Utilities.cleanruntime(workingMovieDetails.filedetails.filedetails_video.DurationInSeconds.Value) & " min"
  6815. runtimetxt.Enabled = False
  6816. Else
  6817. runtimetxt.Text = workingMovieDetails.fullmoviebody.runtime
  6818. runtimetxt.Enabled = True
  6819. End If
  6820. End Sub
  6821. Public Sub mov_Switchtop250()
  6822. If workingMovieDetails Is Nothing Then Exit Sub
  6823. If lbl_movTop250.Text = "Top 250" Then
  6824. lbl_movTop250.Text = "Metascore"
  6825. top250txt.Text = workingMovieDetails.fullmoviebody.metascore
  6826. Else
  6827. lbl_movTop250.Text = "Top 250"
  6828. top250txt.Text = workingMovieDetails.fullmoviebody.top250
  6829. End If
  6830. 'If Pref.enablehdtags = True And workingMovieDetails.filedetails.filedetails_video.DurationInSeconds <> Nothing And Not displayRuntimeScraper Then
  6831. ' runtimetxt.Text = Utilities.cleanruntime(workingMovieDetails.filedetails.filedetails_video.DurationInSeconds.Value) & " min"
  6832. ' runtimetxt.Enabled = False
  6833. 'Else
  6834. ' runtimetxt.Text = workingMovieDetails.fullmoviebody.runtime
  6835. ' runtimetxt.Enabled = True
  6836. 'End If
  6837. End Sub
  6838. Private Sub SearchForNewMoviesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SearchForNewMoviesToolStripMenuItem.Click
  6839. SearchForNew
  6840. End Sub
  6841. Public Function Yield(yielding As Boolean) As Boolean
  6842. If yielding Then
  6843. Application.DoEvents
  6844. Return _yield
  6845. End If
  6846. Return False
  6847. End Function
  6848. Private Sub util_FontSetup()
  6849. If Pref.font <> Nothing Then
  6850. If Pref.font <> "" Then
  6851. Try
  6852. Dim tcc As TypeConverter = TypeDescriptor.GetConverter(GetType(System.Drawing.Font))
  6853. Dim newFont As System.Drawing.Font = CType(tcc.ConvertFromString(Pref.font), System.Drawing.Font)
  6854. genretxt.Font = newFont
  6855. premiertxt.Font = newFont
  6856. certtxt.Font = newFont
  6857. directortxt.Font = newFont
  6858. creditstxt.Font = newFont
  6859. outlinetxt.Font = newFont
  6860. runtimetxt.Font = newFont
  6861. studiotxt.Font = newFont
  6862. countrytxt.Font = newFont
  6863. taglinetxt.Font = newFont
  6864. cbMovieDisplay_Actor.Font = newFont
  6865. roletxt.Font = newFont
  6866. pathtxt.Font = newFont
  6867. TextBox34.Font = newFont
  6868. DataGridViewMovies.Font = newFont
  6869. plottxt.Font = newFont
  6870. txtStars.Font = newFont
  6871. cbMovieDisplay_MovieSet.Font = newFont
  6872. cmbxEpActor.Font = newFont
  6873. TvTreeview.Font = newFont
  6874. tbEpRole.Font = newFont
  6875. tb_EpDirector.Font = newFont
  6876. tb_EpCredits.Font = newFont
  6877. tb_EpPlot.Font = newFont
  6878. tb_EpAired.Font = newFont
  6879. tb_EpRating.Font = newFont
  6880. tb_EpPath.Font = newFont
  6881. tb_EpFilename.Font = newFont
  6882. tb_ShPlot.Font = newFont
  6883. cbTvActor.Font = newFont
  6884. cbTvActorRole.Font = newFont
  6885. tb_ShRunTime.Font = newFont
  6886. tb_ShStudio.Font = newFont
  6887. tb_ShPremiered.Font = newFont
  6888. tb_ShRating.Font = newFont
  6889. tb_ShVotes.Font = newFont
  6890. tb_ShTvdbId.Font = newFont
  6891. tb_ShGenre.Font = newFont
  6892. tb_ShImdbId.Font = newFont
  6893. tb_ShCert.Font = newFont
  6894. ratingtxt.Font = newFont
  6895. votestxt.Font = newFont
  6896. top250txt.Font = newFont
  6897. cbUsrRated.Font = newFont
  6898. cbFilterGeneral.Font = newFont
  6899. cbFilterGenre.Font = newFont
  6900. cbFilterCountries.Font = newFont
  6901. cbFilterStudios.Font = newFont
  6902. cbFilterSet.Font = newFont
  6903. cbFilterActor.Font = newFont
  6904. cbFilterTag.Font = newFont
  6905. cbFilterDirector.Font = newFont
  6906. cbFilterSource.Font = newFont
  6907. cbFilterResolution.Font = newFont
  6908. cbFilterVideoCodec.Font = newFont
  6909. cbFilterSubTitleLang.Font = newFont
  6910. cbFilterRootFolder.Font = newfont
  6911. cbFilterUserRated.Font = newfont
  6912. cbFilterAudioCodecs.Font = newFont
  6913. cbFilterAudioLanguages.Font = newFont
  6914. cbFilterAudioDefaultLanguages.Font = newFont
  6915. cbFilterAudioBitrates .Font = newFont
  6916. cbFilterAudioChannels .Font = newFont
  6917. cbFilterNumAudioTracks.Font = newFont
  6918. cbFilterCertificate .Font = newFont
  6919. LabelCountFilter.Font = newFont
  6920. Me.Refresh()
  6921. Application.DoEvents()
  6922. Catch ex As Exception
  6923. #If SilentErrorScream Then
  6924. Throw ex
  6925. #End If
  6926. End Try
  6927. End If
  6928. End If
  6929. End Sub
  6930. Private Sub langarrsetup()
  6931. Dim strfilename As String
  6932. Dim num_rows As Long
  6933. Dim num_cols As Long
  6934. Dim x As Integer
  6935. Dim y As Integer
  6936. strfilename = applicationPath & "\Assets\" & "test.csv"
  6937. If File.Exists(strfilename) Then
  6938. Dim tmpstream As StreamReader = File.OpenText(strfilename)
  6939. Dim strlines() As String
  6940. Dim strline() As String
  6941. strlines = tmpstream.ReadToEnd().Split(Environment.NewLine)
  6942. num_rows = UBound(strlines)
  6943. strline = strlines(0).Split(",")
  6944. num_cols = UBound(strline)
  6945. ' Copy the data into the array.
  6946. For x = 0 To num_rows-1
  6947. strline = strlines(x).Split(",")
  6948. For y = 0 To num_cols
  6949. langarray(x, y) = strline(y)
  6950. Next
  6951. Next
  6952. tmpstream.Close()
  6953. tmpstream = Nothing
  6954. End If
  6955. End Sub
  6956. #Region "Movie Table"
  6957. 'tabpage events
  6958. Private Sub tpMovTable_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles tpMovTable.Enter
  6959. 'MovSetsRepopulate()
  6960. 'mov_TableSetup()
  6961. End Sub
  6962. Private Sub tpMovTable_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles tpMovTable.Leave
  6963. DataGridView1.EndEdit()
  6964. Pref.tableview.Clear()
  6965. For Each column In DataGridView1.Columns
  6966. Dim tempstring As String = String.Format("{0}|{1}|{2}|{3}", column.name, column.width, column.displayindex, column.visible)
  6967. Pref.tableview.Add(tempstring)
  6968. Next
  6969. If IsNothing(DataGridView1.SortedColumn) = False Then
  6970. Pref.tablesortorder = String.Format("{0} | {1}", DataGridView1.SortedColumn.HeaderText, DataGridView1.SortOrder.ToString)
  6971. Pref.ConfigSave()
  6972. End If
  6973. If DataDirty Then
  6974. Dim tempint As Integer = MessageBox.Show("You appear to have made changes to some of your movie details." & vbCrLf & vbCrLf & "Any changes will be lost if you do not save the changes now." & " Do wish to save the changes?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
  6975. If tempint = DialogResult.Yes Then
  6976. Call mov_TableChangesSave()
  6977. MsgBox("Changes Saved")
  6978. End If
  6979. End If
  6980. DataDirty=False
  6981. btn_movTableSave.Enabled = DataDirty
  6982. End Sub
  6983. 'Table Setup and update
  6984. Private Sub mov_TableViewSetup()
  6985. Pref.tableview.Clear()
  6986. Pref.tableview.Add("title|150|0|true")
  6987. Pref.tableview.Add("year|40|1|true")
  6988. Pref.tableview.Add("genre|160|2|true")
  6989. Pref.tableview.Add("rating|50|3|true")
  6990. Pref.tableview.Add("runtime|60|4|true")
  6991. Pref.tableview.Add("top250|89|5|false")
  6992. Pref.tableview.Add("source|150|6|false")
  6993. Pref.tableview.Add("playcount|120|7|true")
  6994. Pref.tableview.Add("set|150|8|true")
  6995. Pref.tableview.Add("certificate|100|9|false")
  6996. Pref.tableview.Add("sorttitle|100|10|false")
  6997. Pref.tableview.Add("outline|200|11|false")
  6998. Pref.tableview.Add("plot|200|12|false")
  6999. Pref.tableview.Add("stars|200|13|false")
  7000. Pref.tableview.Add("id|82|14|false")
  7001. Pref.tableview.Add("missingdata1|115|15|false")
  7002. Pref.tableview.Add("fullpathandfilename|300|16|false")
  7003. Pref.tableview.Add("createdate|104|17|false")
  7004. Pref.tableview.Add("userrated|100|18|false")
  7005. End Sub
  7006. Private Sub mov_TableSetup()
  7007. DataGridView1.Columns.Clear()
  7008. If Pref.tablesortorder = Nothing Then Pref.tablesortorder = "Title|Ascending"
  7009. If Pref.tablesortorder = "" Then Pref.tablesortorder = "Title|Ascending"
  7010. If Pref.tableview.Count < 19 Then 'Counter. Increase if adding new tableview column else new columns won't be added to config.xml.
  7011. Call mov_TableViewSetup()
  7012. End If
  7013. tableSets.Clear()
  7014. For Each item In Pref.tableview
  7015. Dim tempdata() As String
  7016. tempdata = item.Split("|")
  7017. Dim newcolumn As New str_TableItems(SetDefaults)
  7018. newcolumn.title = tempdata(0)
  7019. newcolumn.width = Convert.ToInt32(tempdata(1))
  7020. newcolumn.index = Convert.ToInt32(tempdata(2))
  7021. newcolumn.visible = (tempdata(3).ToLower = "true")
  7022. tableSets.Add(newcolumn)
  7023. Next
  7024. DataGridView1.AutoGenerateColumns = False
  7025. Dim doc As New XmlDocument
  7026. Dim thispref As XmlNode = Nothing
  7027. Dim xmlproc As XmlDeclaration
  7028. xmlproc = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes")
  7029. doc.AppendChild(xmlproc)
  7030. Dim root As XmlElement
  7031. Dim child As XmlElement
  7032. root = doc.CreateElement("movie_cache")
  7033. Dim childchild As XmlElement
  7034. For Each row As DataGridViewRow In DataGridViewMovies.Rows
  7035. Dim movie As Data_GridViewMovie = row.DataBoundItem
  7036. child = doc.CreateElement("movie")
  7037. childchild = doc.CreateElement("filedate") : childchild.InnerText = movie.filedate : child.AppendChild(childchild)
  7038. childchild = doc.CreateElement("missingdata1") : childchild.InnerText = movie.missingdata1.ToString : child.AppendChild(childchild)
  7039. childchild = doc.CreateElement("filename") : childchild.InnerText = movie.filename : child.AppendChild(childchild)
  7040. childchild = doc.CreateElement("foldername") : childchild.InnerText = movie.foldername : child.AppendChild(childchild)
  7041. childchild = doc.CreateElement("fullpathandfilename") : childchild.InnerText = movie.fullpathandfilename : child.AppendChild(childchild)
  7042. childchild = doc.CreateElement("set") : childchild.InnerText = movie.movieset.MovieSetName : child.AppendChild(childchild)
  7043. childchild = doc.CreateElement("source") : childchild.InnerText = movie.source : child.AppendChild(childchild)
  7044. childchild = doc.CreateElement("genre") : childchild.InnerText = movie.genre : child.AppendChild(childchild)
  7045. childchild = doc.CreateElement("id") : childchild.InnerText = movie.id : child.AppendChild(childchild)
  7046. childchild = doc.CreateElement("playcount") : childchild.InnerText = movie.playcount : child.AppendChild(childchild)
  7047. childchild = doc.CreateElement("rating") : childchild.InnerText = movie.Rating : child.AppendChild(childchild)
  7048. childchild = doc.CreateElement("title") : childchild.InnerText = movie.title : child.AppendChild(childchild)
  7049. childchild = doc.CreateElement("certificate") : childchild.InnerText = movie.Certificate : child.AppendChild(childchild)
  7050. childchild = doc.CreateElement("outline") : childchild.InnerText = movie.outline : child.AppendChild(childchild)
  7051. childchild = doc.CreateElement("plot") : childchild.InnerText = movie.plot : child.AppendChild(childchild)
  7052. childchild = doc.CreateElement("stars") : childchild.InnerText = movie.stars : child.AppendChild(childchild)
  7053. childchild = doc.CreateElement("sortorder") : childchild.InnerText = movie.SortOrder : child.AppendChild(childchild)
  7054. childchild = doc.CreateElement("runtime") : childchild.InnerText = movie.runtime : child.AppendChild(childchild)
  7055. childchild = doc.CreateElement("top250") : childchild.InnerText = movie.top250 : child.AppendChild(childchild)
  7056. childchild = doc.CreateElement("year") : childchild.InnerText = movie.year : child.AppendChild(childchild)
  7057. childchild = doc.CreateElement("createdate") : childchild.InnerText = movie.createdate : child.AppendChild(childchild)
  7058. childchild = doc.CreateElement("usrrated") : childchild.InnerText = movie.usrrated : child.AppendChild(childchild)
  7059. root.AppendChild(child)
  7060. Next
  7061. doc.AppendChild(root)
  7062. For Each thisresult In doc("movie_cache")
  7063. Select Case thisresult.Name
  7064. Case "movie"
  7065. Dim chi As XmlElement
  7066. For Each chi In thisresult.childnodes
  7067. If chi.Name = "runtime" Then
  7068. chi.InnerText = chi.InnerText.Replace("minutes", "")
  7069. chi.InnerText = chi.InnerText.Replace("mins", "")
  7070. chi.InnerText = chi.InnerText.Replace("min", "")
  7071. chi.InnerText = chi.InnerText.Replace(" ", "")
  7072. If chi.InnerText.Length = 1 Then
  7073. chi.InnerText = "00" & chi.InnerText
  7074. End If
  7075. If chi.InnerText.Length = 2 Then
  7076. chi.InnerText = "0" & chi.InnerText
  7077. End If
  7078. chi.InnerText = chi.InnerText & " min"
  7079. End If
  7080. If chi.Name = "top250" Then
  7081. If chi.InnerText = "" Then
  7082. chi.InnerText = "000" & chi.InnerText
  7083. End If
  7084. If IsNumeric(chi.InnerText) Then
  7085. If chi.InnerText.Length = 0 Then
  7086. chi.InnerText = "000" & chi.InnerText
  7087. End If
  7088. If chi.InnerText.Length = 1 Then
  7089. chi.InnerText = "00" & chi.InnerText
  7090. End If
  7091. If chi.InnerText.Length = 2 Then
  7092. chi.InnerText = "0" & chi.InnerText
  7093. End If
  7094. End If
  7095. End If
  7096. If chi.Name = "playcount" Then
  7097. If chi.InnerText = "" OrElse chi.InnerText = "0" OrElse Not IsNumeric(chi.InnerText) Then
  7098. chi.InnerText = "UnWatched"
  7099. Else
  7100. chi.InnerText = "Watched"
  7101. End If
  7102. End If
  7103. If chi.Name = "missingdata1" Then
  7104. If chi.InnerText = "" Or Not IsNumeric(chi.InnerText) Then
  7105. chi.InnerText = "0"
  7106. Else
  7107. chi.InnerText = Movie.GetMissingDataText( Convert.ToByte(chi.InnerText) )
  7108. End If
  7109. End If
  7110. If chi.Name = "createdate" Then
  7111. If chi.InnerText = "" Or Not IsNumeric(chi.InnerText) Then
  7112. chi.InnerText = "0"
  7113. Else
  7114. chi.InnerText = Utilities.DecodeDateTime(chi.InnerText, Pref.DateFormat)
  7115. End If
  7116. End If
  7117. Next
  7118. End Select
  7119. Next
  7120. Dim movstring As String = doc.InnerXml
  7121. Dim XMLreader2 As StringReader = New System.IO.StringReader(movstring)
  7122. ' Create the dataset
  7123. Dim newDS As DataSet = New DataSet
  7124. newDS.ReadXml(XMLreader2)
  7125. XMLreader2.Dispose()
  7126. DataGridView1.DataSource = Nothing
  7127. Try
  7128. DataGridView1.DataSource = newDS.Tables(0)
  7129. Catch
  7130. End Try
  7131. DataGridView1.AllowUserToOrderColumns = True
  7132. DataGridView1.RowHeadersVisible = True
  7133. DataGridView1.RowHeadersWidth = 25
  7134. Dim titlecolumn As New DataGridViewColumn()
  7135. With titlecolumn
  7136. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7137. .CellTemplate = oCell
  7138. .HeaderText = "Title"
  7139. .DataPropertyName = "title"
  7140. .Name = "title"
  7141. .SortMode = DataGridViewColumnSortMode.Automatic
  7142. End With
  7143. Dim yearcolumn As New DataGridViewColumn()
  7144. With yearcolumn
  7145. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7146. .CellTemplate = oCell
  7147. .HeaderText = "Year"
  7148. .DataPropertyName = "year"
  7149. .Name = "year"
  7150. .SortMode = DataGridViewColumnSortMode.Automatic
  7151. .DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter
  7152. End With
  7153. Dim idcolumn As New DataGridViewColumn()
  7154. With idcolumn
  7155. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7156. .CellTemplate = oCell
  7157. .HeaderText = "IMDB ID"
  7158. .DataPropertyName = "id"
  7159. .Name = "id"
  7160. .SortMode = DataGridViewColumnSortMode.Automatic
  7161. .ReadOnly = True
  7162. End With
  7163. Dim pathcolumn As New DataGridViewColumn()
  7164. With pathcolumn
  7165. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7166. .CellTemplate = oCell
  7167. .HeaderText = "Full Path"
  7168. .DataPropertyName = "fullpathandfilename"
  7169. .Name = "fullpathandfilename"
  7170. .SortMode = DataGridViewColumnSortMode.Automatic
  7171. .ReadOnly = True
  7172. End With
  7173. Dim genrecolumn As New DataGridViewColumn()
  7174. With genrecolumn
  7175. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7176. .CellTemplate = oCell
  7177. .HeaderText = "Genre"
  7178. .DataPropertyName = "genre"
  7179. .Name = "genre"
  7180. .SortMode = DataGridViewColumnSortMode.Automatic
  7181. .ToolTipText = "Separate Genre's with a ""Space/Space"", ie: Action / Horror"
  7182. End With
  7183. Dim ratingcolumn As New DataGridViewColumn()
  7184. With ratingcolumn
  7185. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7186. .CellTemplate = oCell
  7187. .HeaderText = "Rating"
  7188. .DataPropertyName = "rating"
  7189. .Name = "rating"
  7190. .SortMode = DataGridViewColumnSortMode.Automatic
  7191. .DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter
  7192. End With
  7193. Dim outlinecolumn As New DataGridViewColumn()
  7194. With outlinecolumn
  7195. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7196. .CellTemplate = oCell
  7197. .HeaderText = "Outline"
  7198. .DataPropertyName = "outline"
  7199. .Name = "outline"
  7200. .SortMode = DataGridViewColumnSortMode.Automatic
  7201. End With
  7202. Dim plotcolumn As New DataGridViewColumn()
  7203. With plotcolumn
  7204. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7205. .CellTemplate = oCell
  7206. .HeaderText = "Plot"
  7207. .DataPropertyName = "plot"
  7208. .Name = "plot"
  7209. .SortMode = DataGridViewColumnSortMode.Automatic
  7210. End With
  7211. Dim starscolumn As New DataGridViewColumn()
  7212. With starscolumn
  7213. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7214. .CellTemplate = oCell
  7215. .HeaderText = "Stars"
  7216. .DataPropertyName = "stars"
  7217. .Name = "stars"
  7218. .SortMode = DataGridViewColumnSortMode.Automatic
  7219. .ReadOnly = True
  7220. End With
  7221. Dim sorttitlecolumn As New DataGridViewColumn()
  7222. With sorttitlecolumn
  7223. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7224. .CellTemplate = oCell
  7225. .HeaderText = "Sort Title"
  7226. .DataPropertyName = "sortorder"
  7227. .Name = "sorttitle"
  7228. .SortMode = DataGridViewColumnSortMode.Automatic
  7229. End With
  7230. Dim top250column As New DataGridViewColumn()
  7231. With top250column
  7232. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7233. .CellTemplate = oCell
  7234. .HeaderText = "Top 250"
  7235. .DataPropertyName = "top250"
  7236. .Name = "top250"
  7237. .SortMode = DataGridViewColumnSortMode.Automatic
  7238. End With
  7239. Dim watchedcolumn As New DataGridViewComboBoxColumn()
  7240. watchedcolumn.Items.Add("UnWatched")
  7241. watchedcolumn.Items.Add("Watched")
  7242. With watchedcolumn
  7243. .HeaderText = "Watched"
  7244. .Name = "playcount"
  7245. .DataPropertyName = "playcount"
  7246. .SortMode = DataGridViewColumnSortMode.Automatic
  7247. .DefaultCellStyle.NullValue = ""
  7248. End With
  7249. Dim sourcecolumn As New DataGridViewComboBoxColumn()
  7250. For Each src In Pref.releaseformat
  7251. sourcecolumn.Items.Add(src)
  7252. Next
  7253. sourcecolumn.Items.Insert(0, "")
  7254. With sourcecolumn
  7255. .HeaderText = "Source"
  7256. .Name = "source"
  7257. .DataPropertyName = "source"
  7258. .SortMode = DataGridViewColumnSortMode.Automatic
  7259. .DefaultCellStyle.NullValue = ""
  7260. End With
  7261. Dim runtimecolumn As New DataGridViewColumn()
  7262. With runtimecolumn
  7263. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7264. .CellTemplate = oCell
  7265. .HeaderText = "Runtime"
  7266. .Name = "runtime"
  7267. .DataPropertyName = "runtime"
  7268. .SortMode = DataGridViewColumnSortMode.Automatic
  7269. End With
  7270. Dim certificatecolumn As New DataGridViewColumn()
  7271. With certificatecolumn
  7272. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7273. .CellTemplate = oCell
  7274. .HeaderText = "Certificate"
  7275. .Name = "certificate"
  7276. .DataPropertyName = "certificate"
  7277. .SortMode = DataGridViewColumnSortMode.Automatic
  7278. End With
  7279. Dim setscolumn As New DataGridViewComboBoxColumn
  7280. For Each sets In Pref.moviesets
  7281. setscolumn.Items.Add(sets)
  7282. Next
  7283. With setscolumn
  7284. .HeaderText = "Sets"
  7285. .Name = "set"
  7286. .DataPropertyName = "set"
  7287. .SortMode = DataGridViewColumnSortMode.Automatic
  7288. .DefaultCellStyle.NullValue = "-None-"
  7289. End With
  7290. Dim artcolumn As New DataGridViewColumn()
  7291. With artcolumn
  7292. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7293. .CellTemplate = oCell
  7294. .HeaderText = "Missing"
  7295. .Name = "missingdata1"
  7296. .DataPropertyName = "missingdata1"
  7297. .SortMode = DataGridViewColumnSortMode.Automatic
  7298. .ReadOnly = True
  7299. End With
  7300. Dim createdatecolumn As New DataGridViewColumn()
  7301. With createdatecolumn
  7302. Dim oCell As DataGridViewCell = New DataGridViewTextBoxCell
  7303. .CellTemplate = oCell
  7304. .HeaderText = "Date Added"
  7305. .Name = "createdate"
  7306. .DataPropertyName = "createdate"
  7307. .SortMode = DataGridViewColumnSortMode.Automatic
  7308. End With
  7309. Dim usrratedcolumn As New DataGridViewComboBoxColumn()
  7310. For each t In cbUsrRated.Items
  7311. usrratedcolumn.Items.Add(t)
  7312. Next
  7313. usrratedcolumn.Items.Item(0) = "0"
  7314. With usrratedcolumn
  7315. .HeaderText = "User Rating"
  7316. .DataPropertyName = "usrrated"
  7317. .Name = "userrated"
  7318. .SortMode = DataGridViewColumnSortMode.Automatic
  7319. End With
  7320. For f = 0 To tableview.Count -1
  7321. For Each col In tableSets
  7322. If col.index = f Then
  7323. Select Case col.title
  7324. Case "title"
  7325. titlecolumn.Width = col.width
  7326. titlecolumn.Visible = col.visible
  7327. DataGridView1.Columns.Insert(f, titlecolumn)
  7328. Exit For
  7329. Case "year"
  7330. yearcolumn.Width = col.width
  7331. yearcolumn.Visible = col.visible
  7332. DataGridView1.Columns.Insert(f, yearcolumn)
  7333. Exit For
  7334. Case "sorttitle"
  7335. sorttitlecolumn.Width = col.width
  7336. sorttitlecolumn.Visible = col.visible
  7337. DataGridView1.Columns.Insert(f, sorttitlecolumn)
  7338. Exit For
  7339. Case "genre"
  7340. genrecolumn.Width = col.width
  7341. genrecolumn.Visible = col.visible
  7342. DataGridView1.Columns.Insert(f, genrecolumn)
  7343. Exit For
  7344. Case "rating"
  7345. ratingcolumn.Width = col.width
  7346. ratingcolumn.Visible = col.visible
  7347. DataGridView1.Columns.Insert(f, ratingcolumn)
  7348. Exit For
  7349. Case "runtime"
  7350. runtimecolumn.Width = col.width
  7351. runtimecolumn.Visible = col.visible
  7352. DataGridView1.Columns.Insert(f, runtimecolumn)
  7353. Exit For
  7354. Case "top250"
  7355. top250column.Width = col.width
  7356. top250column.Visible = col.visible
  7357. DataGridView1.Columns.Insert(f, top250column)
  7358. Exit For
  7359. Case "certificate"
  7360. certificatecolumn.Width = col.width
  7361. certificatecolumn.Visible = col.visible
  7362. DataGridView1.Columns.Insert(f, certificatecolumn)
  7363. Case "source"
  7364. sourcecolumn.Width = col.width
  7365. sourcecolumn.Visible = col.visible
  7366. DataGridView1.Columns.Insert(f, sourcecolumn)
  7367. Exit For
  7368. Case "playcount"
  7369. watchedcolumn.Width = col.width
  7370. watchedcolumn.Visible = col.visible
  7371. DataGridView1.Columns.Insert(f, watchedcolumn)
  7372. Exit For
  7373. Case "set"
  7374. setscolumn.Width = col.width
  7375. setscolumn.Visible = col.visible
  7376. DataGridView1.Columns.Insert(f, setscolumn)
  7377. Exit For
  7378. Case "outline"
  7379. outlinecolumn.Width = col.width
  7380. outlinecolumn.Visible = col.visible
  7381. DataGridView1.Columns.Insert(f, outlinecolumn)
  7382. Exit For
  7383. Case "plot"
  7384. plotcolumn.Width = col.width
  7385. plotcolumn.Visible = col.visible
  7386. DataGridView1.Columns.Insert(f, plotcolumn)
  7387. Exit For
  7388. Case "stars"
  7389. starscolumn.Width = col.width
  7390. starscolumn.Visible = col.visible
  7391. DataGridView1.Columns.Insert(f, starscolumn)
  7392. Exit For
  7393. Case "id"
  7394. idcolumn.Width = col.width
  7395. idcolumn.Visible = col.visible
  7396. DataGridView1.Columns.Insert(f, idcolumn)
  7397. Exit For
  7398. Case "missingdata1"
  7399. artcolumn.Width = col.width
  7400. artcolumn.Visible = col.visible
  7401. DataGridView1.Columns.Insert(f, artcolumn)
  7402. Exit For
  7403. Case "fullpathandfilename"
  7404. pathcolumn.Width = col.width
  7405. pathcolumn.Visible = col.visible
  7406. DataGridView1.Columns.Insert(f, pathcolumn)
  7407. Exit For
  7408. Case "createdate"
  7409. createdatecolumn.Width = col.width
  7410. createdatecolumn.Visible = col.visible
  7411. DataGridView1.Columns.Insert(f, createdatecolumn)
  7412. Exit For
  7413. Case "userrated"
  7414. usrratedcolumn.Width = col.width
  7415. usrratedcolumn.Visible = col.visible
  7416. DataGridView1.Columns.Insert(f, usrratedcolumn)
  7417. Exit For
  7418. End Select
  7419. End If
  7420. Next
  7421. Next f
  7422. Dim sortheader As String
  7423. Dim sortord As String
  7424. Dim tempdata2() As String
  7425. tempdata2 = Pref.tablesortorder.Split("|")
  7426. sortheader = tempdata2(0)
  7427. sortord = tempdata2(1)
  7428. For Each col In DataGridView1.Columns
  7429. If col.headertext = sortheader Then
  7430. If sortord.ToLower.IndexOf("desc") <> -1 Then
  7431. DataGridView1.Sort(DataGridView1.Columns(col.index), ListSortDirection.Descending)
  7432. Else
  7433. DataGridView1.Sort(DataGridView1.Columns(col.index), ListSortDirection.Ascending)
  7434. End If
  7435. End If
  7436. Next
  7437. For Each tempRow As System.Windows.Forms.DataGridViewRow In Me.DataGridView1.Rows
  7438. For Each tempCell As Windows.Forms.DataGridViewCell In tempRow.Cells
  7439. If tempCell.Value = "Fanart" Or tempCell.Value = "Poster" Or tempCell.Value = "Poster & Fanart" Then tempCell.Style.BackColor = Color.Red
  7440. Next
  7441. Next
  7442. Call mov_TableEditSetup()
  7443. Try
  7444. For f = 0 To DataGridView1.Rows.Count-1
  7445. If DataGridView1.Rows(f).Cells("fullpathandfilename").Value = workingMovieDetails.fileinfo.fullpathandfilename Then
  7446. DataGridView1.ClearSelection()
  7447. DataGridView1.FirstDisplayedScrollingRowIndex = f
  7448. Exit For
  7449. End If
  7450. Next
  7451. Catch ex As Exception
  7452. #If SilentErrorScream Then
  7453. Throw ex
  7454. #End If
  7455. End Try
  7456. End Sub
  7457. Private Sub mov_TableEditSetup()
  7458. mov_TableEditDGV.Columns.Clear()
  7459. mov_TableEditDGV.AutoGenerateColumns = False
  7460. mov_TableEditDGV.DataSource = Nothing
  7461. For Each dgvCol As DataGridViewColumn In DataGridView1.Columns
  7462. Dim dgvNewCol As New DataGridViewColumn
  7463. dgvNewCol = DirectCast(dgvCol.Clone(), DataGridViewColumn)
  7464. dgvNewCol.CellTemplate = DirectCast(dgvCol.CellTemplate, DataGridViewCell)
  7465. If dgvNewCol.Name = "plot" Or dgvNewCol.Name = "outline" Or dgvNewCol.Name = "stars" Or dgvNewCol.Name = "id" Or dgvNewCol.Name = "missingdata1" or dgvNewCol.Name = "fullpathandfilename"Then
  7466. dgvNewCol.ReadOnly = True
  7467. dgvNewCol.DefaultCellStyle.BackColor = System.Drawing.Color.gray
  7468. End If
  7469. mov_TableEditDGV.Columns.Add(dgvNewCol)
  7470. Next
  7471. 'add "Unchanged"
  7472. Dim src_add As DataGridViewComboBoxColumn = DirectCast(Me.mov_TableEditDGV.Columns("source"), DataGridViewComboBoxColumn)
  7473. src_add.Items.Insert(0, "UnChanged")
  7474. Dim set_add As DataGridViewComboBoxColumn = DirectCast(Me.mov_TableEditDGV.Columns("set"), DataGridViewComboBoxColumn)
  7475. set_add.Items.Insert(0, "UnChanged")
  7476. Dim play_add As DataGridViewComboBoxColumn = DirectCast(Me.mov_TableEditDGV.Columns("playcount"), DataGridViewComboBoxColumn)
  7477. play_add.Items.Insert(0, "UnChanged")
  7478. Dim usrrated_add As DataGridViewComboBoxColumn = DirectCast(Me.mov_TableEditDGV.Columns("userrated"), DataGridViewComboBoxColumn)
  7479. usrrated_add.Items.Insert(0, "UnChanged")
  7480. mov_TableEditDGV.RowHeadersWidth = DataGridView1.RowHeadersWidth
  7481. mov_TableEditDGV.ClearSelection
  7482. mov_TableEditDGV.ScrollBars = ScrollBars.None
  7483. Me.mov_TableEditDGV.DefaultCellStyle.SelectionBackColor = Me.mov_TableEditDGV.DefaultCellStyle.BackColor
  7484. Me.mov_TableEditDGV.DefaultCellStyle.SelectionForeColor = Me.mov_TableEditDGV.DefaultCellStyle.ForeColor
  7485. Dim emptydata As String = FillEmptydoc().InnerXml
  7486. Dim XMLreader3 As StringReader = New System.IO.StringReader(emptydata)
  7487. ' Create the Empty dataset
  7488. Dim emptydataset As DataSet = New DataSet
  7489. emptydataset.ReadXml(XMLreader3)
  7490. XMLreader3.Dispose()
  7491. mov_TableEditDGV.DataSource = emptydataset.tables(0)
  7492. mov_TableEditDGV.CurrentRow.Selected = false
  7493. End Sub
  7494. Private Sub mov_TableChangesSave()
  7495. DataDirty=False
  7496. frmSplash2.Text = "Saving Table Changes..."
  7497. frmSplash2.Label1.Text = "Saving Movie Data....."
  7498. frmSplash2.Label1.Visible = True
  7499. frmSplash2.Label2.Visible = True
  7500. frmSplash2.ProgressBar1.Visible = True
  7501. frmSplash2.ProgressBar1.Maximum = DataGridView1.Rows.Count
  7502. frmSplash2.Show()
  7503. Application.DoEvents
  7504. Dim progcount As Integer = 0
  7505. Dim changed As Boolean
  7506. Dim oCachedMovie As ComboList
  7507. For Each gridrow As DataGridViewRow In DataGridView1.Rows
  7508. changed = False
  7509. progcount += 1
  7510. frmSplash2.ProgressBar1.Value = progcount
  7511. frmSplash2.Label2.Text = gridrow.Cells("Title").Value
  7512. oCachedMovie = oMovies.FindCachedMovie( gridrow.Cells("fullpathandfilename").Value )
  7513. Try
  7514. If oCachedMovie.title <> gridrow.Cells("Title").Value Then changed = True
  7515. Catch
  7516. End Try
  7517. Try
  7518. If oCachedMovie.outline <> gridrow.Cells("Outline").Value Then changed = True
  7519. Catch
  7520. End Try
  7521. Try
  7522. If oCachedMovie.genre <> gridrow.Cells("genre").Value Then changed = True
  7523. Catch
  7524. End Try
  7525. Try
  7526. If oCachedMovie.rating <> gridrow.Cells("rating").Value Then changed = True
  7527. Catch
  7528. End Try
  7529. Try
  7530. Dim playstatus As String = gridrow.Cells("playcount").EditedFormattedValue
  7531. Dim plycnt As Integer = 0
  7532. If playstatus.tolower = "watched" Then plycnt = 1
  7533. If oCachedMovie.playcount <> plycnt Then Changed = True
  7534. Catch
  7535. End Try
  7536. Try
  7537. If oCachedMovie.sortorder <> gridrow.Cells("sorttitle").Value Then changed = True
  7538. Catch
  7539. End Try
  7540. Try
  7541. If oCachedMovie.year <> gridrow.Cells("year").Value Then
  7542. If IsNumeric(gridrow.Cells("year").Value) Then changed = True
  7543. End If
  7544. Catch
  7545. End Try
  7546. Try
  7547. If Convert.ToInt32(oCachedMovie.top250) <> Convert.ToInt32(gridrow.Cells("top250").Value) Then
  7548. If IsNumeric(gridrow.Cells("top250").Value) Then changed = True
  7549. End If
  7550. Catch
  7551. End Try
  7552. Try
  7553. If oCachedMovie.Certificate <> gridrow.Cells("certificate").Value Then changed = True
  7554. Catch
  7555. End Try
  7556. Dim runtime As String=""
  7557. Dim intRunTime As Integer
  7558. Dim runTimeChanged As Boolean
  7559. Dim newRunTime As String=""
  7560. Try
  7561. runtime = gridrow.Cells("runtime").Value
  7562. runtime = runtime.Replace("min", "")
  7563. runtime = runtime.Trim(" ")
  7564. If IsNumeric(runtime) Then
  7565. intRunTime = Convert.ToInt32(runtime)
  7566. newRunTime = intRunTime.ToString & " min"
  7567. If oCachedMovie.runtime <> newRunTime Then changed = True : runTimeChanged = True
  7568. End If
  7569. Catch
  7570. End Try
  7571. If oCachedMovie.source <> If(IsDBNull(gridrow.Cells("source").Value), "", gridrow.Cells("source").Value) Then changed = True
  7572. If oCachedMovie.MovieSet.MovieSetName <> If(IsDBNull(gridrow.Cells("set").Value), "", gridrow.Cells("set").Value) Then changed = True
  7573. If oCachedMovie.usrrated <> gridrow.Cells("userrated").Value Then changed = True
  7574. If changed And IO.File.Exists(oCachedMovie.fullpathandfilename) Then
  7575. Dim oMovie As Movie = oMovies.LoadMovie(oCachedMovie.fullpathandfilename)
  7576. If IsNothing(oMovie) Then Continue For
  7577. Try
  7578. oCachedMovie.genre = gridrow.Cells("genre").Value
  7579. Catch
  7580. End Try
  7581. Try
  7582. oCachedMovie.title = gridrow.Cells("title").Value
  7583. Catch
  7584. End Try
  7585. Try
  7586. oCachedMovie.year = gridrow.Cells("year").Value
  7587. Catch
  7588. End Try
  7589. Try
  7590. oCachedMovie.sortorder = gridrow.Cells("sorttitle").Value
  7591. Catch
  7592. End Try
  7593. Try
  7594. oCachedMovie.rating = gridrow.Cells("rating").Value
  7595. Catch
  7596. End Try
  7597. Try
  7598. oCachedMovie.source = If(IsDBNull(gridrow.Cells("source").Value), "", gridrow.Cells("source").Value)
  7599. Catch
  7600. End Try
  7601. Try
  7602. Dim NewSetName As String = If(IsDBNull(gridrow.Cells("set").Value), "", gridrow.Cells("set").Value)
  7603. If NewSetName = "" Then
  7604. oCachedMovie.MovieSet.MovieSetName = ""
  7605. oCachedMovie.MovieSet.MovieSetId = ""
  7606. Else
  7607. Dim aok As Boolean = False
  7608. For Each m In oMovies.MovieSetDB
  7609. If m.MovieSetName = NewSetName Then
  7610. oCachedMovie.MovieSet.MovieSetName = m.MovieSetName
  7611. oCachedMovie.MovieSet.MovieSetId = m.MovieSetId
  7612. aok = True
  7613. End If
  7614. Next
  7615. If Not aok Then
  7616. For each m In Pref.moviesets
  7617. If m = NewSetName Then
  7618. oCachedMovie.MovieSet.MovieSetName = m
  7619. Exit For
  7620. End If
  7621. Next
  7622. End If
  7623. End If
  7624. Catch
  7625. End Try
  7626. oCachedMovie.top250 = Convert.ToInt32(gridrow.Cells("top250").Value).ToString
  7627. If gridrow.Cells("playcount").EditedFormattedValue = "Watched" Then
  7628. oCachedMovie.playcount = "1"
  7629. Else
  7630. oCachedMovie.playcount = "0"
  7631. End If
  7632. Try
  7633. oCachedMovie.Certificate = gridrow.Cells("certificate").Value
  7634. Catch
  7635. End Try
  7636. Try
  7637. oCachedMovie.usrrated = gridrow.Cells("userrated").Value
  7638. Catch
  7639. End Try
  7640. If runTimeChanged Then
  7641. oMovie.ScrapedMovie.fullmoviebody.runtime = newRunTime
  7642. End If
  7643. oMovie.ScrapedMovie.fullmoviebody.title = oCachedMovie.title
  7644. oMovie.ScrapedMovie.fullmoviebody.year = oCachedMovie.year
  7645. oMovie.ScrapedMovie.fullmoviebody.playcount = oCachedMovie.playcount
  7646. oMovie.ScrapedMovie.fullmoviebody.genre = oCachedMovie.genre
  7647. oMovie.ScrapedMovie.fullmoviebody.rating = oCachedMovie.rating
  7648. oMovie.ScrapedMovie.fullmoviebody.source = oCachedMovie.source
  7649. oMovie.ScrapedMovie.fullmoviebody.MovieSet.MovieSetName = oCachedMovie.MovieSet.MovieSetName
  7650. oMovie.ScrapedMovie.fullmoviebody.MovieSet.MovieSetId = oCachedMovie.MovieSet.MovieSetId
  7651. oMovie.ScrapedMovie.fullmoviebody.sortorder = oCachedMovie.sortorder
  7652. oMovie.ScrapedMovie.fullmoviebody.top250 = oCachedMovie.top250
  7653. oMovie.ScrapedMovie.fullmoviebody.director = oCachedMovie.director
  7654. oMovie.ScrapedMovie.fullmoviebody.credits = oCachedMovie.credits
  7655. oMovie.ScrapedMovie.fullmoviebody.usrrated = oCachedMovie.usrrated.ToString
  7656. Dim checkmpaa = oCachedMovie.Certificate
  7657. oMovie.ScrapedMovie.fullmoviebody.mpaa = checkmpaa
  7658. oMovie.AssignMovieToCache
  7659. oMovie.SaveNFO
  7660. oMovie.UpdateMovieCache
  7661. End If
  7662. Next
  7663. oMovies.SaveMovieCache
  7664. UpdateFilteredList
  7665. frmSplash2.Hide
  7666. Application.DoEvents
  7667. Me.BringToFront
  7668. End Sub
  7669. Private Sub mov_TableUpdate()
  7670. ''Table View is not the best location to edit Outline, Plot, IMDB Id.
  7671. Dim changed As Boolean = False
  7672. For Each row In DataGridView1.SelectedRows
  7673. If mov_TableEditDGV.Columns("title").Visible AndAlso mov_TableEditDGV.Rows(0).Cells("title").Value <> "" Then
  7674. row.cells("title").value = mov_TableEditDGV.Rows(0).Cells("title").Value : changed = True
  7675. End If
  7676. If mov_TableEditDGV.Columns("top250").Visible AndAlso mov_TableEditDGV.Rows(0).Cells("top250").Value <> "" Then
  7677. row.cells("top250").value = mov_TableEditDGV.Rows(0).Cells("top250").Value : changed = True
  7678. End If
  7679. If mov_TableEditDGV.Columns("year").Visible AndAlso mov_TableEditDGV.Rows(0).Cells("year").Value <> "" Then
  7680. row.cells("year").value = mov_TableEditDGV.Rows(0).Cells("year").Value : changed = True
  7681. End If
  7682. If mov_TableEditDGV.Columns("sorttitle").Visible AndAlso mov_TableEditDGV.Rows(0).Cells("sorttitle").Value <> "" Then
  7683. row.cells("sorttitle") = mov_TableEditDGV.Rows(0).Cells("sorttitle").Value : changed = True
  7684. End If
  7685. If mov_TableEditDGV.Columns("runtime").Visible AndAlso mov_TableEditDGV.Rows(0).Cells("runtime").Value <> "" Then
  7686. row.cells("runtime").value = mov_TableEditDGV.Rows(0).Cells("runtime").Value : changed = True
  7687. End If
  7688. If mov_TableEditDGV.Columns("rating").Visible AndAlso mov_TableEditDGV.Rows(0).Cells("rating").Value <> "" Then
  7689. row.cells("rating").value = mov_TableEditDGV.Rows(0).Cells("rating").Value : changed = True
  7690. End If
  7691. If mov_TableEditDGV.Columns("certificate").Visible AndAlso mov_TableEditDGV.Rows(0).Cells("certificate").Value <> "" Then
  7692. row.cells("certificate").value = mov_TableEditDGV.Rows(0).Cells("certificate").Value : changed = True
  7693. End If
  7694. If mov_TableEditDGV.Columns("genre").Visible AndAlso mov_TableEditDGV.Rows(0).Cells("genre").Value <> "" Then
  7695. row.cells("genre").value = mov_TableEditDGV.Rows(0).Cells("genre").Value : changed = True
  7696. End If
  7697. If mov_TableEditDGV.Columns("source").Visible AndAlso mov_TableEditDGV.Rows(0).Cells("source").Value <> "UnChanged" Then
  7698. row.cells("source").value = mov_TableEditDGV.Rows(0).Cells("source").Value : changed = True
  7699. End If
  7700. If mov_TableEditDGV.Columns("playcount").Visible AndAlso mov_TableEditDGV.Rows(0).Cells("playcount").Value <> "UnChanged" Then
  7701. If mov_TableEditDGV.Rows(0).Cells("playcount").Value = "Watched" Then
  7702. row.cells("playcount").value = "Watched"
  7703. Else
  7704. row.cells("playcount").value = "UnWatched"
  7705. End If
  7706. changed = True
  7707. End If
  7708. If mov_TableEditDGV.Columns("set").Visible AndAlso (IsDBNull(mov_TableEditDGV.Rows(0).Cells("set").Value) OrElse mov_TableEditDGV.Rows(0).Cells("set").Value <> "UnChanged") Then
  7709. row.cells("set").value = If(IsDBNull(mov_TableEditDGV.Rows(0).Cells("set").Value), Nothing, mov_TableEditDGV.Rows(0).Cells("set").Value) : changed = True
  7710. End If
  7711. If mov_TableEditDGV.Columns("userrated").Visible AndAlso mov_TableEditDGV.ROws(0).Cells("userrated").Value <> "UnChanged" Then
  7712. row.cells("userrated").Value = mov_TableEditDGV.Rows(0).Cells("userrated").Value : changed = True
  7713. End If
  7714. Next
  7715. DataDirty = changed
  7716. btn_movTableSave.Enabled = changed
  7717. End Sub
  7718. Private Function FillEmptyDoc() As XmlDocument
  7719. Dim doc As New XmlDocument
  7720. Dim thispref As XmlNode = Nothing
  7721. Dim xmlproc As XmlDeclaration
  7722. xmlproc = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes")
  7723. doc.AppendChild(xmlproc)
  7724. Dim root As XmlElement
  7725. Dim child As XmlElement
  7726. root = doc.CreateElement("movie_cache")
  7727. Dim childchild As XmlElement
  7728. child = doc.CreateElement("movie")
  7729. childchild = doc.CreateElement("filedate") : childchild.InnerText = "" : child.AppendChild(childchild)
  7730. childchild = doc.CreateElement("missingdata1") : childchild.InnerText = "" : child.AppendChild(childchild)
  7731. childchild = doc.CreateElement("filename") : childchild.InnerText = "" : child.AppendChild(childchild)
  7732. childchild = doc.CreateElement("foldername") : childchild.InnerText = "" : child.AppendChild(childchild)
  7733. childchild = doc.CreateElement("fullpathandfilename") : childchild.InnerText = "Not Editable in TableView" : child.AppendChild(childchild)
  7734. childchild = doc.CreateElement("set") : childchild.InnerText = "UnChanged" : child.AppendChild(childchild)
  7735. childchild = doc.CreateElement("source") : childchild.InnerText = "UnChanged" : child.AppendChild(childchild)
  7736. childchild = doc.CreateElement("genre") : childchild.InnerText = "" : child.AppendChild(childchild)
  7737. childchild = doc.CreateElement("id") : childchild.InnerText = "" : child.AppendChild(childchild)
  7738. childchild = doc.CreateElement("playcount") : childchild.InnerText = "UnChanged" : child.AppendChild(childchild)
  7739. childchild = doc.CreateElement("rating") : childchild.InnerText = "" : child.AppendChild(childchild)
  7740. childchild = doc.CreateElement("title") : childchild.InnerText = "" : child.AppendChild(childchild)
  7741. childchild = doc.CreateElement("certificate") : childchild.InnerText = "" : child.AppendChild(childchild)
  7742. childchild = doc.CreateElement("outline") : childchild.InnerText = "Not Editable in TableView" : child.AppendChild(childchild)
  7743. childchild = doc.CreateElement("plot") : childchild.InnerText = "Not Editable in TableView" : child.AppendChild(childchild)
  7744. childchild = doc.CreateElement("sortorder") : childchild.InnerText = "" : child.AppendChild(childchild)
  7745. childchild = doc.CreateElement("runtime") : childchild.InnerText = "" : child.AppendChild(childchild)
  7746. childchild = doc.CreateElement("top250") : childchild.InnerText = "" : child.AppendChild(childchild)
  7747. childchild = doc.CreateElement("year") : childchild.InnerText = "" : child.AppendChild(childchild)
  7748. childchild = doc.CreateElement("usrrated") : childchild.InnerText = "UnChanged" : child.AppendChild(childchild)
  7749. root.AppendChild(child)
  7750. doc.AppendChild(root)
  7751. Return doc
  7752. End Function
  7753. 'Table buttons
  7754. Private Sub btnTableColumnsSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_movTableColumnsSelect.Click
  7755. Try
  7756. Dim frm As New frmConfigureTableColumns
  7757. frm.Init()
  7758. frm.ShowDialog()
  7759. mov_TableSetup()
  7760. Catch ex As Exception
  7761. ExceptionHandler.LogError(ex)
  7762. End Try
  7763. End Sub
  7764. Private Sub btn_movTableSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_movTableSave.Click
  7765. Try
  7766. Call mov_TableChangesSave()
  7767. MsgBox("Changes Saved")
  7768. Catch ex As Exception
  7769. ExceptionHandler.LogError(ex)
  7770. End Try
  7771. End Sub
  7772. Private Sub btn_movTableApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_movTableApply.Click
  7773. Try
  7774. Call mov_TableUpdate()
  7775. Catch ex As Exception
  7776. ExceptionHandler.LogError(ex)
  7777. End Try
  7778. End Sub
  7779. 'Table - DataGridView1 events
  7780. Private Sub DataGridView1_ColumnWidthChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewColumnEventArgs) Handles DataGridView1.ColumnWidthChanged
  7781. Try
  7782. mov_TableEditDGV.Columns(e.Column.Index).Width = e.Column.Width
  7783. Dim offSetValue As Integer = DataGridView1.HorizontalScrollingOffset
  7784. mov_TableEditDGV.HorizontalScrollingOffset = offSetValue
  7785. Catch ex As Exception
  7786. ExceptionHandler.LogError(ex)
  7787. End Try
  7788. End Sub
  7789. Private Sub dataGridViews1_Scroll(sender As Object, e As ScrollEventArgs) Handles DataGridView1.Scroll
  7790. Try
  7791. Dim offSetValue As Integer = DataGridView1.HorizontalScrollingOffset
  7792. mov_TableEditDGV.HorizontalScrollingOffset = offSetValue
  7793. Catch
  7794. End Try
  7795. DataGridView1.Invalidate()
  7796. End Sub
  7797. Private Sub DataGridView1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown
  7798. Try
  7799. Dim ColIndexFromMouseDown = DataGridView1.HitTest(e.X, e.Y).ColumnIndex
  7800. Dim objHitTestInfo As DataGridView.HitTestInfo = DataGridView1.HitTest (e.X, e.Y)
  7801. Dim MouseRowIndex As Integer = objHitTestInfo.RowIndex
  7802. mov_TableRowNum = MouseRowIndex
  7803. If ColIndexFromMouseDown < 0 Then Exit Sub
  7804. mov_TableColumnName = DataGridView1.Columns(ColIndexFromMouseDown).Name
  7805. Catch ex As Exception
  7806. ExceptionHandler.LogError(ex)
  7807. End Try
  7808. End Sub
  7809. Private Sub DataGridView1_ColumnDisplayIndexChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewColumnEventArgs) Handles DataGridView1.ColumnDisplayIndexChanged
  7810. Dim ColNewIndex = DataGridView1.Columns(mov_TableColumnName).DisplayIndex
  7811. mov_TableEditDGV.Columns(mov_TableColumnName).DisplayIndex = ColNewIndex
  7812. End Sub
  7813. Private Sub DataGridView1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.SelectionChanged
  7814. Dim MultiRowsSelected As Boolean = DataGridView1.SelectedRows.Count > 1
  7815. If MultiRowsSelected Then
  7816. mov_TableEditDGV.Visible = True
  7817. lbl_movTableEdit.Visible = True
  7818. lbl_movTableMulti.Visible = True
  7819. btn_movTableApply.Visible = True
  7820. Else
  7821. mov_TableEditDGV.Visible = False
  7822. lbl_movTableEdit.Visible = False
  7823. lbl_movTableMulti.Visible = False
  7824. btn_movTableApply.Visible = False
  7825. End If
  7826. End Sub
  7827. Private Sub DataGridView1_Sorted(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.Sorted
  7828. Try
  7829. For Each tempRow As System.Windows.Forms.DataGridViewRow In Me.DataGridView1.Rows
  7830. For Each tempCell As Windows.Forms.DataGridViewCell In tempRow.Cells
  7831. If tempCell.Value = "Fanart" Or tempCell.Value = "Poster" Or tempCell.Value = "Poster & Fanart" Then
  7832. tempCell.Style.BackColor = Color.Red
  7833. End If
  7834. Next
  7835. Next
  7836. Catch ex As Exception
  7837. ExceptionHandler.LogError(ex)
  7838. End Try
  7839. End Sub
  7840. Private Sub mov_TableEditDGV_CellClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles mov_TableEditDGV.CellClick
  7841. Try
  7842. mov_TableEditDGV.CurrentRow.Selected = False
  7843. Catch ex As Exception
  7844. ExceptionHandler.LogError(ex)
  7845. End Try
  7846. End Sub
  7847. Private Sub DataGridView1_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
  7848. DataDirty = True
  7849. btn_movTableSave.Enabled = DataDirty
  7850. End Sub
  7851. 'Table context toolstrips
  7852. Private Sub MarkAllSelectedAsWatchedToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MarkAllSelectedAsWatchedToolStripMenuItem.Click
  7853. Try
  7854. Dim selectedrowindex As New List(Of Integer)
  7855. For Each row in DataGridView1.SelectedRows
  7856. selectedrowindex.Add(row.index)
  7857. Next
  7858. If selectedrowindex.Count = 0 Then selectedrowindex.Add(DataGridView1.CurrentRow.Index)
  7859. DataGridView1.ClearSelection()
  7860. DataGridView1.CurrentCell = DataGridView1.Rows(selectedrowindex.Item(0)).Cells(0)
  7861. For Each row In selectedrowindex
  7862. DataGridView1.rows(row).Selected = True
  7863. DataGridView1.rows(row).Cells("playcount").Value = "Watched"
  7864. Next
  7865. DataDirty = True
  7866. btn_movTableSave.Enabled = True
  7867. Catch ex As Exception
  7868. ExceptionHandler.LogError(ex)
  7869. End Try
  7870. End Sub
  7871. Private Sub MarkAllSelectedAsUnWatchedToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MarkAllSelectedAsUnWatchedToolStripMenuItem.Click
  7872. Try
  7873. Dim selectedrowindex As New List(Of Integer)
  7874. For Each row in DataGridView1.SelectedRows
  7875. selectedrowindex.Add(row.index)
  7876. Next
  7877. If selectedrowindex.Count = 0 Then selectedrowindex.Add(DataGridView1.CurrentRow.Index)
  7878. DataGridView1.ClearSelection()
  7879. DataGridView1.CurrentCell = DataGridView1.Rows(selectedrowindex.Item(0)).Cells(0)
  7880. For Each row In selectedrowindex
  7881. DataGridView1.rows(row).Selected = True
  7882. DataGridView1.rows(row).Cells("playcount").Value = "UnWatched"
  7883. Next
  7884. DataDirty = True
  7885. btn_movTableSave.Enabled = True
  7886. Catch ex As Exception
  7887. ExceptionHandler.LogError(ex)
  7888. End Try
  7889. End Sub
  7890. Private Sub MovieTableContextMenu_Opening(sender As Object, e As CancelEventArgs) Handles MovieTableContextMenu.Opening
  7891. If mov_TableRowNum = -1 Then e.Cancel = True
  7892. End Sub
  7893. Private Sub GoToToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GoToToolStripMenuItem.Click
  7894. Try
  7895. Dim tempstring As String = ""
  7896. tempstring = DataGridView1.Rows(mov_TableRowNum).Cells("fullpathandfilename").Value
  7897. For f = 0 To DataGridViewMovies.Rows.Count - 1
  7898. If DataGridViewMovies.Rows(f).Cells("fullpathandfilename").Value.ToString = tempstring Then
  7899. DataGridViewMovies.ClearSelection()
  7900. DataGridViewMovies.Rows(f).Selected = True
  7901. Application.DoEvents()
  7902. currentTabIndex = 0
  7903. Me.TabControl2.SelectedIndex = 0
  7904. Exit For
  7905. End If
  7906. Next
  7907. Catch ex As Exception
  7908. ExceptionHandler.LogError(ex)
  7909. End Try
  7910. End Sub
  7911. Private Sub GoToSelectedMoviePosterSelectorToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GoToSelectedMoviePosterSelectorToolStripMenuItem.Click
  7912. Try
  7913. Dim tempstring As String = ""
  7914. tempstring = DataGridView1.Rows(mov_TableRowNum).Cells("fullpathandfilename").Value
  7915. For f = 0 To DataGridViewMovies.Rows.Count - 1
  7916. If DataGridViewMovies.Rows(f).Cells("fullpathandfilename").Value.ToString = tempstring Then
  7917. DataGridViewMovies.ClearSelection()
  7918. DataGridViewMovies.Rows(f).Selected = True
  7919. DisplayMovie()
  7920. For Each tabs In TabControl2.TabPages
  7921. If tabs.text = "Posters" Then
  7922. currentTabIndex = tabs.tabindex + 1
  7923. Me.TabControl2.SelectedIndex = tabs.tabindex + 1
  7924. Exit For
  7925. End If
  7926. Next
  7927. Exit For
  7928. End If
  7929. Next
  7930. Catch ex As Exception
  7931. ExceptionHandler.LogError(ex)
  7932. End Try
  7933. End Sub
  7934. Private Sub GoToSelectedMovieFanartSelectorToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GoToSelectedMovieFanartSelectorToolStripMenuItem.Click
  7935. Try
  7936. Dim tempstring As String = ""
  7937. tempstring = DataGridView1.Rows(mov_TableRowNum).Cells("fullpathandfilename").Value
  7938. For f = 0 To DataGridViewMovies.RowCount - 1
  7939. If DataGridViewMovies.Rows(f).Cells("fullpathandfilename").Value.ToString = tempstring Then
  7940. DataGridViewMovies.ClearSelection()
  7941. DataGridViewMovies.Rows(f).Selected = True
  7942. DisplayMovie()
  7943. For Each tabs In TabControl2.TabPages
  7944. If tabs.text = "Fanart" Then
  7945. currentTabIndex = tabs.tabindex + 1
  7946. Me.TabControl2.SelectedIndex = tabs.tabindex + 1
  7947. Exit For
  7948. End If
  7949. Next
  7950. Exit For
  7951. End If
  7952. Next
  7953. Catch ex As Exception
  7954. ExceptionHandler.LogError(ex)
  7955. End Try
  7956. End Sub
  7957. #End Region 'Movie Tableview code
  7958. Private Sub SearchForNewEpisodesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SearchForNewEpisodesToolStripMenuItem.Click
  7959. Try
  7960. SearchForNewEpisodesToolStripMenuItem.Owner.Hide()
  7961. Call ep_Search()
  7962. Catch ex As Exception
  7963. ExceptionHandler.LogError(ex)
  7964. End Try
  7965. End Sub
  7966. Private Sub SearchALLForNewEpisodesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SearchALLForNewEpisodesToolStripMenuItem.Click
  7967. Try
  7968. TVSearchALL = True
  7969. Call ep_Search()
  7970. TVSearchALL = False
  7971. Catch ex As Exception
  7972. ExceptionHandler.LogError(ex)
  7973. End Try
  7974. End Sub
  7975. Private Sub mov_ScrapeSpecific(ByVal field As String)
  7976. _rescrapeList.Field = field
  7977. _rescrapeList.FullPathAndFilenames.Clear
  7978. For Each row As DataGridViewRow In DataGridViewMovies.SelectedRows
  7979. Dim fullpath As String = row.Cells("fullpathandfilename").Value.ToString
  7980. If Not File.Exists(fullpath) Then Continue For
  7981. _rescrapeList.FullPathAndFilenames.Add(fullpath)
  7982. Next
  7983. RunBackgroundMovieScrape("RescrapeSpecific")
  7984. End Sub
  7985. Private Sub RescrapeFanartToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RescrapeFanartToolStripMenuItem.Click
  7986. Try
  7987. 'rescrape fanart
  7988. Call mov_FanartGet()
  7989. Catch ex As Exception
  7990. ExceptionHandler.LogError(ex)
  7991. End Try
  7992. End Sub
  7993. Private Sub DownloadFanartToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DownloadFanartToolStripMenuItem.Click
  7994. Try
  7995. 'download fanart
  7996. Call mov_FanartGet()
  7997. UpdateMissingFanart()
  7998. Catch ex As Exception
  7999. ExceptionHandler.LogError(ex)
  8000. End Try
  8001. End Sub
  8002. Private Sub mov_FanartGet(Optional ByVal MovSet As Boolean = False)
  8003. If IsNothing(workingMovieDetails) Then Return
  8004. messbox = New frmMessageBox(" Please Wait,", "", "Attempting to download Fanart")
  8005. messbox.Show() : messbox.Refresh()
  8006. Application.DoEvents()
  8007. Dim tmdb As New TMDb
  8008. tmdb.Imdb = If(workingMovieDetails.fullmoviebody.imdbid.Contains("tt"), workingMovieDetails.fullmoviebody.imdbid, "")
  8009. tmdb.TmdbId = workingMovieDetails.fullmoviebody.tmdbid
  8010. tmdb.SetId = workingMovieDetails.fullmoviebody.MovieSet.MovieSetId
  8011. Try
  8012. Dim FanartUrl As String = ""
  8013. If Not MovSet Then
  8014. FanartUrl = tmdb.GetBackDropUrl()
  8015. Else
  8016. FanartUrl = tmdb.McSetFanart(0).hdUrl
  8017. End If
  8018. Dim isvideotspath As String = If(workingMovieDetails.fileinfo.videotspath="","",workingMovieDetails.fileinfo.videotspath+"fanart.jpg")
  8019. If IsNothing(FanartUrl) then
  8020. MsgBox("No Fanart Found on TMDB")
  8021. Else
  8022. If Not MovSet Then
  8023. Dim paths As List(Of String) = Pref.GetfanartPaths(workingMovieDetails.fileinfo.fullpathandfilename,If(workingMovieDetails.fileinfo.videotspath <>"",workingMovieDetails.fileinfo.videotspath,""))
  8024. Dim point = Movie.GetBackDropResolution(Pref.BackDropResolutionSI)
  8025. Dim aok As Boolean = DownloadCache.SaveImageToCacheAndPaths(FanartUrl, paths, True, point.X, point.Y)
  8026. If Not aok Then Throw New Exception("TMDB is offline")
  8027. util_ImageLoad(PbMovieFanArt, paths(0), Utilities.DefaultFanartPath)
  8028. util_ImageLoad(PictureBox2, paths(0), Utilities.DefaultFanartPath)
  8029. Dim video_flags = VidMediaFlags(workingMovieDetails.filedetails, workingMovieDetails.fullmoviebody.title.ToLower.Contains("3d"))
  8030. movieGraphicInfo.OverlayInfo(PbMovieFanArt, ratingtxt.Text, video_flags, workingMovie.DisplayFolderSize)
  8031. Else
  8032. Dim MovSetFanartSavePath As String = workingMovieDetails.fileinfo.movsetfanartpath
  8033. If MovSetFanartSavePath <> "" Then
  8034. Movie.SaveFanartImageToCacheAndPath(FanartUrl, MovSetFanartSavePath)
  8035. MovPanel6Update()
  8036. Else
  8037. MsgBox("!! Problem formulating correct save location for Fanart" & vbCrLf & " Please check your settings")
  8038. End If
  8039. End If
  8040. End If
  8041. Catch ex As Exception
  8042. If ex.Message = "TMDB is offline" Then
  8043. messbox.Close()
  8044. MsgBox("Unable to connect to TheMovieDb.org." & vbCrLf & "Please confirm site is online")
  8045. ElseIf ex.Message.Contains("Index was out of range") Then
  8046. messbox.Close()
  8047. MsgBox("No Fanart available on TMDB Site")
  8048. End If
  8049. End Try
  8050. If Not IsNothing(messbox) Then messbox.Close()
  8051. End Sub
  8052. 'Rescrape Poster
  8053. Private Sub RescrapePToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RescrapePToolStripMenuItem.Click
  8054. Try
  8055. 'rescrape poster IMPA
  8056. mov_PosterGet("impa")
  8057. Catch ex As Exception
  8058. ExceptionHandler.LogError(ex)
  8059. End Try
  8060. End Sub
  8061. Private Sub RescrapePosterFromTMDBToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RescrapePosterFromTMDBToolStripMenuItem.Click
  8062. Try
  8063. 'rescrape poster tmdb
  8064. mov_PosterGet("tmdb")
  8065. Catch ex As Exception
  8066. ExceptionHandler.LogError(ex)
  8067. End Try
  8068. End Sub
  8069. Private Sub RescraToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RescraToolStripMenuItem.Click
  8070. Try
  8071. 'rescrape poster mpdb
  8072. MsgBox("MoviePoster Db is not longer available")
  8073. 'mov_PosterGet("mpdb")
  8074. Catch ex As Exception
  8075. ExceptionHandler.LogError(ex)
  8076. End Try
  8077. End Sub
  8078. Private Sub PeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PeToolStripMenuItem.Click
  8079. Try
  8080. 'rescrape poster imdb
  8081. mov_PosterGet("imdb")
  8082. Catch ex As Exception
  8083. ExceptionHandler.LogError(ex)
  8084. End Try
  8085. End Sub
  8086. Private Sub DownloadPosterToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DownloadPosterToolStripMenuItem.Click
  8087. Try
  8088. 'downloadposter impa
  8089. mov_PosterGet("impa")
  8090. Catch ex As Exception
  8091. ExceptionHandler.LogError(ex)
  8092. End Try
  8093. End Sub
  8094. Private Sub DownloadPosterFromTMDBToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DownloadPosterFromTMDBToolStripMenuItem.Click
  8095. Try
  8096. 'downloadposter tmdb
  8097. mov_PosterGet("tmdb")
  8098. Catch ex As Exception
  8099. ExceptionHandler.LogError(ex)
  8100. End Try
  8101. End Sub
  8102. Private Sub DownloadPosterFromMPDBToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DownloadPosterFromMPDBToolStripMenuItem.Click
  8103. Try
  8104. 'downloadposter mpdb
  8105. MsgBox("MoviePoster Db is not longer available")
  8106. 'mov_PosterGet("mpdb")
  8107. Catch ex As Exception
  8108. ExceptionHandler.LogError(ex)
  8109. End Try
  8110. End Sub
  8111. Private Sub DownloadPosterFromIMDBToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DownloadPosterFromIMDBToolStripMenuItem.Click
  8112. Try
  8113. 'downloadposter imdb
  8114. mov_PosterGet("imdb")
  8115. Catch ex As Exception
  8116. ExceptionHandler.LogError(ex)
  8117. End Try
  8118. End Sub
  8119. Private Sub mov_PosterGet(ByVal source As String, Optional ByVal MovSet As Boolean = False)
  8120. Dim success As Boolean = False
  8121. Try
  8122. If workingMovieDetails Is Nothing Then Exit Sub
  8123. messbox = New frmMessageBox(" Please Wait,", "", "Attempting to download Poster from " & source.ToUpper)
  8124. messbox.Show()
  8125. messbox.Refresh()
  8126. Application.DoEvents()
  8127. Dim isvideotspath As String = ""
  8128. If workingMovieDetails.fileinfo.videotspath<>"" Then
  8129. isvideotspath=workingMovieDetails.fileinfo.videotspath+"poster.jpg"
  8130. End If
  8131. Dim moviethumburl As String = ""
  8132. Dim tmdb As New TMDb
  8133. tmdb.Imdb = If(workingMovieDetails.fullmoviebody.imdbid.Contains("tt"), workingMovieDetails.fullmoviebody.imdbid, "")
  8134. tmdb.TmdbId = workingMovieDetails.fullmoviebody.tmdbid
  8135. tmdb.SetId = workingMovieDetails.fullmoviebody.MovieSet.MovieSetId
  8136. If tmdb.Imdb = "" AndAlso tmdb.TmdbId = "" Then Exit Sub
  8137. If source = "impa" Then
  8138. If workingMovieDetails.fullmoviebody.title <> "" And workingMovieDetails.fullmoviebody.year <> "" Then
  8139. moviethumburl = scraperFunction2.impathumb(workingMovieDetails.fullmoviebody.title, workingMovieDetails.fullmoviebody.year)
  8140. End If
  8141. ElseIf source = "tmdb" Then
  8142. If workingMovieDetails.fullmoviebody.imdbid.Contains("tt") OrElse workingMovieDetails.fullmoviebody.tmdbid <> "" Then
  8143. Try
  8144. If Not MovSet Then
  8145. moviethumburl = tmdb.FirstOriginalPosterUrl
  8146. Else
  8147. moviethumburl = tmdb.McSetPosters(0).hdUrl
  8148. End If
  8149. Catch
  8150. End Try
  8151. End If
  8152. ElseIf source = "mpdb" Then
  8153. If workingMovieDetails.fullmoviebody.imdbid.Contains("tt") Then
  8154. moviethumburl = scraperFunction2.mpdbthumb(workingMovieDetails.fullmoviebody.imdbid)
  8155. End If
  8156. ElseIf source = "imdb" Then
  8157. If workingMovieDetails.fullmoviebody.imdbid.Contains("tt") Then
  8158. moviethumburl = scraperFunction2.imdbthumb(workingMovieDetails.fullmoviebody.imdbid)
  8159. End If
  8160. End If
  8161. If moviethumburl <> "" And moviethumburl <> "na" Then
  8162. Try
  8163. If Not MovSet Then
  8164. Dim PostPaths As List(Of String) = Pref.GetPosterPaths(workingMovieDetails.fileinfo.fullpathandfilename,workingMovieDetails.fileinfo.videotspath)
  8165. Dim height As Integer = 0
  8166. height = Movie.GetHeightResolution(Pref.PosterResolutionSI)
  8167. Dim aok As Boolean = DownloadCache.SaveImageToCacheAndPaths(moviethumburl, PostPaths, True, , height)
  8168. If Not aok Then Throw New Exception()
  8169. util_ImageLoad(PictureBoxAssignedMoviePoster, PostPaths(0), Utilities.DefaultPosterPath)
  8170. util_ImageLoad(PbMoviePoster, PostPaths(0), Utilities.DefaultPosterPath)
  8171. Dim path As String = Utilities.save2postercache(workingMovieDetails.fileinfo.fullpathandfilename, PostPaths(0), WallPicWidth, WallPicHeight)
  8172. updateposterwall(path, workingMovieDetails.fileinfo.fullpathandfilename)
  8173. success = True
  8174. Else
  8175. Dim MovSetPosterSavePath As String = workingMovieDetails.fileinfo.movsetposterpath
  8176. If MovSetPosterSavePath <> "" Then
  8177. Movie.SavePosterImageToCacheAndPath(moviethumburl, MovSetPosterSavePath)
  8178. MovPanel6Update()
  8179. Else
  8180. messbox.Close()
  8181. MsgBox("!! Problem formulating correct save location for Poster" & vbCrLf & " Please check your settings")
  8182. End If
  8183. End If
  8184. Catch ex As Exception
  8185. MsgBox("Error [" & ex.Message & "] occurred while trying to download and save the poster")
  8186. End Try
  8187. Else
  8188. MsgBox("Unable to obtain a Poster from " & source.ToUpper)
  8189. End If
  8190. messbox.Close()
  8191. Catch ex As Exception
  8192. #If SilentErrorScream Then
  8193. Throw ex
  8194. #End If
  8195. Finally
  8196. messbox.Close()
  8197. End Try
  8198. If success then UpdateMissingPoster()
  8199. End Sub
  8200. Public Sub mov_OfflineDvdProcess(ByVal nfopath As String, ByVal title As String, ByVal mediapath As String)
  8201. Dim tempint2 As Integer = 2097152
  8202. Dim SizeOfFile As Integer = FileLen(mediapath)
  8203. If SizeOfFile > tempint2 Then
  8204. Exit Sub
  8205. End If
  8206. Try
  8207. Dim fanartpath As String = ""
  8208. If IO.File.Exists(Pref.GetFanartPath(nfopath)) Then
  8209. fanartpath = Pref.GetFanartPath(nfopath)
  8210. Else
  8211. fanartpath = Utilities.DefaultOfflineArtPath
  8212. End If
  8213. Dim curImage As Image = Image.FromFile(fanartpath)
  8214. Dim tempstring As String = Pref.OfflineDVDTitle.Replace("%T", title)
  8215. Dim g As System.Drawing.Graphics
  8216. g = Graphics.FromImage(curImage)
  8217. Dim semiTransBrush As New SolidBrush(Color.FromArgb(80, 0, 0, 0))
  8218. Dim drawString As String = tempstring
  8219. Dim drawFont As New System.Drawing.Font("Arial", 40)
  8220. Dim drawBrush As New SolidBrush(Color.White)
  8221. Dim StringSize As New SizeF
  8222. StringSize = g.MeasureString(drawString, drawFont)
  8223. Dim width As Single = StringSize.Width + 5
  8224. Dim height As Single = StringSize.Height + 5
  8225. If height < (curImage.Height / 100) * 8 Then
  8226. Do
  8227. Dim newsize As Integer = drawFont.Size + 1
  8228. drawFont = New System.Drawing.Font("Arial", newsize)
  8229. StringSize = g.MeasureString(drawString, drawFont)
  8230. height = StringSize.Height
  8231. Loop Until height > (curImage.Height / 100) * 8
  8232. End If
  8233. If height > (curImage.Height / 100) * 8 Then
  8234. Do
  8235. Dim newsize As Integer = drawFont.Size - 1
  8236. drawFont = New System.Drawing.Font("Arial", newsize)
  8237. StringSize = g.MeasureString(drawString, drawFont)
  8238. height = StringSize.Height
  8239. Loop Until height < (curImage.Height / 100) * 8
  8240. End If
  8241. StringSize = g.MeasureString(drawString, drawFont)
  8242. width = StringSize.Width
  8243. height = StringSize.Height
  8244. If width > curImage.Width - 30 Then
  8245. Do
  8246. Dim newsize As Integer = drawFont.Size - 1
  8247. drawFont = New System.Drawing.Font("Arial", newsize)
  8248. StringSize = g.MeasureString(drawString, drawFont)
  8249. width = StringSize.Width + 20
  8250. Loop Until width < curImage.Width - 30
  8251. End If
  8252. StringSize = g.MeasureString(drawString, drawFont)
  8253. width = StringSize.Width + 5
  8254. height = StringSize.Height + 5
  8255. Dim x As Integer = (curImage.Width / 2) - (width / 2)
  8256. Dim y As Integer = (curImage.Height - StringSize.Height) - ((curImage.Height / 100) * 2)
  8257. Dim drawRect As New RectangleF(x, y, width, height)
  8258. g.FillRectangle(semiTransBrush, New Rectangle(x, y, width, height))
  8259. Dim drawFormat As New StringFormat
  8260. drawFormat.Alignment = StringAlignment.Center
  8261. g.DrawString(drawString, drawFont, drawBrush, drawRect, drawFormat)
  8262. For f = 1 To 16
  8263. Dim path As String
  8264. If f < 10 Then
  8265. path = applicationPath & "\Settings\00" & f.ToString & ".jpg"
  8266. Else
  8267. path = applicationPath & "\Settings\0" & f.ToString & ".jpg"
  8268. End If
  8269. curImage.Save(path, Drawing.Imaging.ImageFormat.Jpeg)
  8270. Next
  8271. Dim myProcess As Process = New Process
  8272. myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
  8273. myProcess.StartInfo.CreateNoWindow = False
  8274. myProcess.StartInfo.FileName = applicationPath & "\Assets\ffmpeg.exe"
  8275. Dim proc_arguments As String = "-r 1 -b 1800 -qmax 6 -i """ & applicationPath & "\Settings\%03d.jpg"" -vcodec msmpeg4v2 -y """ & mediapath & """"
  8276. myProcess.StartInfo.Arguments = proc_arguments
  8277. myProcess.Start()
  8278. myProcess.WaitForExit()
  8279. For f = 1 To 16
  8280. Dim tempstring4 As String
  8281. If f < 10 Then
  8282. tempstring4 = applicationPath & "\Settings\00" & f.ToString & ".jpg"
  8283. Else
  8284. tempstring4 = applicationPath & "\Settings\0" & f.ToString & ".jpg"
  8285. End If
  8286. Try
  8287. IO.File.Delete(tempstring4)
  8288. Catch ex As Exception
  8289. #If SilentErrorScream Then
  8290. Throw ex
  8291. #End If
  8292. End Try
  8293. Next
  8294. Catch ex As Exception
  8295. #If SilentErrorScream Then
  8296. Throw ex
  8297. #End If
  8298. End Try
  8299. End Sub
  8300. Private Sub ToolsToolStripMenuItem_DropDownItemClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles ToolsToolStripMenuItem.DropDownItemClicked
  8301. Try
  8302. For Each temp In Pref.commandlist
  8303. If temp.title = e.ClickedItem.Text Then
  8304. Try
  8305. Process.Start(temp.command)
  8306. Catch ex As Exception
  8307. End Try
  8308. Exit For
  8309. End If
  8310. Next
  8311. Catch ex As Exception
  8312. ExceptionHandler.LogError(ex)
  8313. End Try
  8314. End Sub
  8315. Private Sub PreferencesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PreferencesToolStripMenuItem.Click
  8316. OpenPreferences(0)
  8317. End Sub
  8318. Private Sub OpenPreferences(Optional ByVal TabRequired As Integer = 0)
  8319. Try
  8320. Dim t As New frmPreferences
  8321. t.SelectTab = TabRequired
  8322. If Pref.MultiMonitoEnabled Then
  8323. t.Bounds = screen.AllScreens(CurrentScreen).Bounds
  8324. t.StartPosition = FormStartPosition.Manual
  8325. End If
  8326. t.ShowDialog()
  8327. If Not tvbckrescrapewizard.IsBusy AndAlso Not bckgroundscanepisodes.IsBusy AndAlso Not bckgrnd_tvshowscraper.IsBusy AndAlso Not Bckgrndfindmissingepisodes.IsBusy AndAlso Not BckWrkScnMovies.IsBusy Then
  8328. Statusstrip_Enable(False)
  8329. End If
  8330. Catch ex As Exception
  8331. ExceptionHandler.LogError(ex)
  8332. End Try
  8333. End Sub
  8334. Private Sub SearchForMissingEpisodesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SearchForMissingEpisodesToolStripMenuItem.Click
  8335. Try
  8336. If Not Bckgrndfindmissingepisodes.IsBusy And bckgroundscanepisodes.IsBusy = False Then
  8337. Pref.displayMissingEpisodes = SearchForMissingEpisodesToolStripMenuItem.Checked
  8338. Pref.ConfigSave()
  8339. If Pref.displayMissingEpisodes = False
  8340. RefreshMissingEpisodesToolStripMenuItem.Enabled = False
  8341. rbTvListAll.Checked = True
  8342. rbTvMissingEpisodes.Enabled = False
  8343. rbTvMissingAiredEp.Enabled = False
  8344. RefreshMissingEpisodesToolStripMenuItem.ToolTipText = Nothing
  8345. tv_CacheRefresh
  8346. Return
  8347. End If
  8348. RefreshMissingEpisodesToolStripMenuItem.Enabled = True
  8349. RefreshMissingEpisodesToolStripMenuItem.ToolTipText = "Last Refresh: " & Pref.lastrefreshmissingdate
  8350. rbTvMissingEpisodes.Enabled = True
  8351. rbTvMissingAiredEp.Enabled = True
  8352. Pref.DlMissingEpData = False
  8353. tv_EpisodesMissingLoad(False)
  8354. ElseIf Bckgrndfindmissingepisodes.IsBusy Then
  8355. MsgBox("Process is already running")
  8356. Else
  8357. MsgBox("Missing episode search cannot be performed" & vbCrLf & " when the episode scraper is running")
  8358. End If
  8359. Catch ex As Exception
  8360. ExceptionHandler.LogError(ex)
  8361. End Try
  8362. End Sub
  8363. Private Sub RefreshMissingEpisodesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RefreshMissingEpisodesToolStripMenuItem.Click
  8364. Pref.DlMissingEpData = True
  8365. Pref.lastrefreshmissingdate = DateTime.Now.ToString("yyyy-MM-dd")
  8366. ClearMissingFolder()
  8367. tv_EpisodesMissingLoad(True)
  8368. End Sub
  8369. Private Sub RefreshThisShowToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tv_TreeViewContext_RefreshShow.Click
  8370. Try
  8371. Dim Show As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  8372. Dim selectednode As Integer = TvTreeview.SelectedNode.Index
  8373. If Show IsNot Nothing Then
  8374. Call tv_CacheRefreshSelected(Show)
  8375. Else
  8376. MsgBox("No Show Selected")
  8377. End If
  8378. TvTreeview.SelectedNode = TvTreeview.Nodes(selectednode)
  8379. Catch ex As Exception
  8380. ExceptionHandler.LogError(ex)
  8381. End Try
  8382. End Sub
  8383. Private Sub Tv_TreeViewContext_ShowMissEps_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tv_TreeViewContext_ShowMissEps.Click
  8384. Try
  8385. Dim Show As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  8386. If Not Bckgrndfindmissingepisodes.IsBusy Then
  8387. Dim tempstring As String = ""
  8388. For Each sho In Cache.TvCache.Shows
  8389. If sho.NfoFilePath = TvTreeview.SelectedNode.Name Then
  8390. tempstring = "Checking """ & sho.Title.Value & """ for missing episodes"
  8391. Exit For
  8392. End If
  8393. Next
  8394. If tempstring = "" Then tempstring = "Checking for missing episodes"
  8395. messbox = New frmMessageBox(tempstring, "", "Please Wait")
  8396. messbox.Show()
  8397. messbox.Refresh()
  8398. Application.DoEvents()
  8399. Dim ShowList As New List(Of TvShow)
  8400. ShowList.Add(Show)
  8401. Bckgrndfindmissingepisodes.RunWorkerAsync(ShowList)
  8402. messbox.Close()
  8403. Else
  8404. MsgBox("The missing episode thread is already running")
  8405. End If
  8406. Catch ex As Exception
  8407. ExceptionHandler.LogError(ex)
  8408. End Try
  8409. End Sub
  8410. Private Sub LockAllToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LockAllToolStripMenuItem.Click
  8411. Try
  8412. Dim Show As Media_Companion.TvShow
  8413. For Each Show In Cache.TvCache.Shows
  8414. Show = nfoFunction.tvshow_NfoLoad(Show.NfoFilePath) '.Load()
  8415. Show.State = Media_Companion.ShowState.Locked
  8416. nfoFunction.tvshow_NfoSave(Show, True)
  8417. 'Show.Save()
  8418. Tv_CacheSave()
  8419. Next
  8420. tv_CacheLoad()
  8421. Catch ex As Exception
  8422. ExceptionHandler.LogError(ex)
  8423. End Try
  8424. End Sub
  8425. Private Sub UnlockAllToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UnlockAllToolStripMenuItem.Click
  8426. Try
  8427. Dim Show As Media_Companion.TvShow
  8428. For Each Show In Cache.TvCache.Shows
  8429. Show = nfoFunction.tvshow_NfoLoad(Show.NfoFilePath) '.Load()
  8430. Show.State = Media_Companion.ShowState.Open
  8431. nfoFunction.tvshow_NfoSave(Show, True)
  8432. 'Show.Save()
  8433. Tv_CacheSave()
  8434. Next
  8435. tv_CacheLoad()
  8436. Catch ex As Exception
  8437. ExceptionHandler.LogError(ex)
  8438. End Try
  8439. End Sub
  8440. Private Sub TV_BatchRescrapeWizardToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TV_BatchRescrapeWizardToolStripMenuItem.Click
  8441. Try
  8442. If Not tvbckrescrapewizard.IsBusy Then
  8443. tvBatchList.Reset()
  8444. Dim displaywizard As New tv_batch_wizard
  8445. If Pref.MultiMonitoEnabled Then
  8446. displaywizard.Bounds = screen.AllScreens(CurrentScreen).Bounds
  8447. displaywizard.StartPosition = FormStartPosition.Manual
  8448. End If
  8449. displaywizard.ShowDialog()
  8450. If tvBatchList.activate = True Then
  8451. Statusstrip_Enable()
  8452. ToolStripStatusLabel8.Text = "Starting TV Batch Scrape"
  8453. ToolStripStatusLabel8.Visible = True
  8454. ToolStripProgressBar7.Value = 0
  8455. ToolStripProgressBar7.Visible = True
  8456. tvbckrescrapewizard.RunWorkerAsync()
  8457. End If
  8458. Else
  8459. MsgBox("The update Wizard is Already Running")
  8460. End If
  8461. Catch ex As Exception
  8462. ExceptionHandler.LogError(ex)
  8463. End Try
  8464. End Sub
  8465. Private Sub tsmiMov_ExportMovies_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiMov_ExportMovies.Click
  8466. Try
  8467. listoffilestomove.Clear()
  8468. If DataGridViewMovies.SelectedRows.Count > 0 Then
  8469. For Each sRow As DataGridViewRow In DataGridViewMovies.SelectedRows
  8470. Dim playlist As New List(Of String)
  8471. Dim tempstring As String = Utilities.GetFileName(DataGridViewMovies.SelectedCells(NFO_INDEX).Value.ToString)
  8472. playlist = Utilities.GetMediaList(tempstring)
  8473. If playlist.Count > 0 Then
  8474. For Each File In playlist
  8475. If Not listoffilestomove.Contains(File) Then listoffilestomove.Add(File)
  8476. Next
  8477. Dim fullpathandfilename As String = sRow.Cells("fullpathandfilename").Value.ToString
  8478. listoffilestomove.Add(fullpathandfilename)
  8479. If IO.File.Exists(Pref.GetFanartPath(fullpathandfilename)) Then listoffilestomove.Add(Pref.GetFanartPath(fullpathandfilename))
  8480. If IO.File.Exists(Pref.GetPosterPath(fullpathandfilename)) Then listoffilestomove.Add(Pref.GetPosterPath(fullpathandfilename))
  8481. Dim di As DirectoryInfo = New DirectoryInfo(fullpathandfilename.Replace(IO.Path.GetFileName(fullpathandfilename), ""))
  8482. Dim filenama As String = IO.Path.GetFileNameWithoutExtension(fullpathandfilename)
  8483. Dim fils As IO.FileInfo() = di.GetFiles(filenama & ".*")
  8484. For Each fiNext In fils
  8485. If Not listoffilestomove.Contains(fiNext.FullName) Then
  8486. listoffilestomove.Add(fiNext.FullName)
  8487. End If
  8488. Next
  8489. Dim trailerpath As String = Pref.ActualTrailerPath(fullpathandfilename) 'fullpathandfilename.Replace(IO.Path.GetExtension(fullpathandfilename), "-trailer.flv")
  8490. Dim filenama2 As String = IO.Path.GetFileNameWithoutExtension(trailerpath)
  8491. Dim fils2 As IO.FileInfo() = di.GetFiles(filenama2 & ".*")
  8492. For Each fiNext In fils2
  8493. If Not listoffilestomove.Contains(fiNext.FullName) Then
  8494. listoffilestomove.Add(fiNext.FullName)
  8495. End If
  8496. Next
  8497. End If
  8498. Next
  8499. totalfilesize = 0
  8500. For Each item In listoffilestomove
  8501. totalfilesize = totalfilesize + Utilities.GetFileSize(item)
  8502. Next
  8503. With FolderBrowserDialog1
  8504. .ShowNewFolderButton = True
  8505. .Description = "Select destination for file copy"
  8506. End With
  8507. Dim drive As String = ""
  8508. Dim savepath As String = ""
  8509. Dim frm As New frmCopyProgress
  8510. If Pref.MultiMonitoEnabled Then
  8511. frm.Bounds = screen.AllScreens(CurrentScreen).Bounds
  8512. frm.StartPosition = FormStartPosition.Manual
  8513. End If
  8514. frm.ShowDialog()
  8515. End If
  8516. Catch ex As Exception
  8517. ExceptionHandler.LogError(ex)
  8518. End Try
  8519. End Sub
  8520. Private Sub frm_ExportTabSetup()
  8521. If TextBox45.Text = "" Then
  8522. Dim tempstring2 As String = workingProfile.config.Replace(IO.Path.GetFileName(workingProfile.config), "pathsubstitution.xml")
  8523. If IO.File.Exists(tempstring2) Then
  8524. relativeFolderList.Clear()
  8525. Dim prefs As New XmlDocument
  8526. Try
  8527. prefs.Load(tempstring2)
  8528. Catch ex As Exception
  8529. End Try
  8530. Dim thisresult As XmlNode = Nothing
  8531. For Each thisresult In prefs("relativepaths")
  8532. Select Case thisresult.Name
  8533. Case "folder"
  8534. Dim mc As New str_RelativeFileList(SetDefaults)
  8535. Dim it2 As XmlNode
  8536. For Each it2 In thisresult.ChildNodes
  8537. Select Case it2.Name
  8538. Case "mc"
  8539. mc.mc = it2.InnerText
  8540. Case "xbmc"
  8541. mc.xbmc = it2.InnerText
  8542. relativeFolderList.Add(mc)
  8543. End Select
  8544. Next
  8545. End Select
  8546. Next
  8547. For Each item In relativeFolderList
  8548. TextBox45.Text += "<folder>" & vbCrLf
  8549. TextBox45.Text += " <mc>" & item.mc & "</mc>" & vbCrLf
  8550. TextBox45.Text += " <xbmc>" & item.xbmc & "</xbmc>" & vbCrLf
  8551. TextBox45.Text += "</folder>" & vbCrLf & vbCrLf
  8552. Next
  8553. End If
  8554. If TextBox45.Text = "" Then
  8555. For Each pat In movieFolders
  8556. If Not pat.selected Then Continue For
  8557. TextBox45.Text += "<folder>" & vbCrLf
  8558. TextBox45.Text += " <mc>" & pat.rpath & "</mc>" & vbCrLf
  8559. TextBox45.Text += " <xbmc>" & pat.rpath & "</xbmc>" & vbCrLf
  8560. TextBox45.Text += "</folder>" & vbCrLf & vbCrLf
  8561. Next
  8562. For Each pat In Pref.offlinefolders
  8563. TextBox45.Text += "<folder>" & vbCrLf
  8564. TextBox45.Text += " <mc>" & pat & "</mc>" & vbCrLf
  8565. TextBox45.Text += " <xbmc>" & pat & "</xbmc>" & vbCrLf
  8566. TextBox45.Text += "</folder>" & vbCrLf & vbCrLf
  8567. Next
  8568. For Each pat In tvRootFolders
  8569. TextBox45.Text += "<folder>" & vbCrLf
  8570. TextBox45.Text += " <mc>" & pat.rpath & "</mc>" & vbCrLf
  8571. TextBox45.Text += " <xbmc>" & pat.rpath & "</xbmc>" & vbCrLf
  8572. TextBox45.Text += "</folder>" & vbCrLf & vbCrLf
  8573. Next
  8574. End If
  8575. End If
  8576. End Sub
  8577. Private Sub Button109_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button109.Click
  8578. Try
  8579. relativeFolderList.Clear()
  8580. Dim tempstring2 As String = workingProfile.config.Replace(IO.Path.GetFileName(workingProfile.config), "pathsubstitution.xml")
  8581. Dim temptext As String = ""
  8582. temptext = "<relativepaths>" & TextBox45.Text & "</relativepaths>"
  8583. Dim doc As New XmlDocument
  8584. doc.LoadXml(temptext)
  8585. Dim thisresult As XmlElement
  8586. For Each thisresult In doc("relativepaths")
  8587. Dim newfo As New str_RelativeFileList(SetDefaults)
  8588. For Each innerresult In thisresult
  8589. Select Case innerresult.Name
  8590. Case "mc"
  8591. newfo.mc = innerresult.InnerText
  8592. Case "xbmc"
  8593. newfo.xbmc = innerresult.InnerText
  8594. End Select
  8595. Next
  8596. If Not String.IsNullOrEmpty(newfo.mc) AndAlso Not String.IsNullOrEmpty(newfo.xbmc) Then relativeFolderList.Add(newfo)
  8597. Next
  8598. If relativeFolderList.Count > 0 Then
  8599. Dim docs As New XmlDocument
  8600. Dim thispref As XmlNode = Nothing
  8601. Dim xmlproc As XmlDeclaration
  8602. xmlproc = docs.CreateXmlDeclaration("1.0", "UTF-8", "yes")
  8603. docs.AppendChild(xmlproc)
  8604. Dim root As XmlElement
  8605. Dim child As XmlElement
  8606. Dim childchild As XmlElement
  8607. root = doc.CreateElement("relativepaths")
  8608. For Each item In relativeFolderList
  8609. child = doc.CreateElement("folder")
  8610. childchild = doc.CreateElement("mc")
  8611. childchild.InnerText = item.mc
  8612. child.AppendChild(childchild)
  8613. childchild = doc.CreateElement("xbmc")
  8614. childchild.InnerText = item.xbmc
  8615. child.AppendChild(childchild)
  8616. root.AppendChild(child)
  8617. Next
  8618. Dim output As New XmlTextWriter(tempstring2, System.Text.Encoding.UTF8)
  8619. output.Formatting = Formatting.Indented
  8620. doc.WriteTo(output)
  8621. output.Close()
  8622. End If
  8623. Catch ex As Exception
  8624. ExceptionHandler.LogError(ex)
  8625. End Try
  8626. End Sub
  8627. Private Sub SplitContainer1_SplitterMoved(ByVal sender As System.Object, ByVal e As System.Windows.Forms.SplitterEventArgs) Handles SplitContainer1.SplitterMoved
  8628. Mc.clsGridViewMovie.SetFirstColumnWidth(DataGridViewMovies)
  8629. End Sub
  8630. Private Sub SplitContainer5_SplitterMoved(ByVal sender As System.Object, ByVal e As System.Windows.Forms.SplitterEventArgs) Handles SplitContainer5.SplitterMoved
  8631. ResizeBottomLHSPanel()
  8632. Try
  8633. DebugSplitter5PosLabel.Text = SplitContainer5.SplitterDistance
  8634. Catch ex As Exception
  8635. ExceptionHandler.LogError(ex)
  8636. End Try
  8637. End Sub
  8638. Private Sub MediaCompanionCodeplexSiteToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MediaCompanionCodeplexSiteToolStripMenuItem.Click
  8639. Try
  8640. Dim webAddress As String = "http://mediacompanion.codeplex.com/"
  8641. OpenUrl(webAddress)
  8642. Catch ex As Exception
  8643. ExceptionHandler.LogError(ex)
  8644. End Try
  8645. End Sub
  8646. Private Sub CheckBoxDebugShowXML_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBoxDebugShowXML.CheckedChanged
  8647. Try
  8648. If CheckBoxDebugShowXML.Checked = False Then
  8649. TabLevel1.TabPages.Remove(Me.TabConfigXML)
  8650. TabLevel1.TabPages.Remove(Me.TabMovieCacheXML)
  8651. TabLevel1.TabPages.Remove(Me.TabTVCacheXML)
  8652. TabLevel1.TabPages.Remove(Me.TabProfile)
  8653. TabLevel1.TabPages.Remove(Me.TabActorCache)
  8654. TabLevel1.TabPages.Remove(Me.TabRegex)
  8655. Else
  8656. TabLevel1.TabPages.Add(Me.TabConfigXML)
  8657. TabLevel1.TabPages.Add(Me.TabMovieCacheXML)
  8658. TabLevel1.TabPages.Add(Me.TabTVCacheXML)
  8659. TabLevel1.TabPages.Add(Me.TabProfile)
  8660. TabLevel1.TabPages.Add(Me.TabActorCache)
  8661. TabLevel1.TabPages.Add(Me.TabRegex)
  8662. End If
  8663. Catch ex As Exception
  8664. ExceptionHandler.LogError(ex)
  8665. End Try
  8666. End Sub
  8667. Public Sub util_ConfigLoad(ByVal Optional prefs As Boolean = False)
  8668. Pref.SetUpPreferences()
  8669. Pref.ConfigLoad()
  8670. Pref.MultiMonitoEnabled = convert.ToBoolean(multimonitor)
  8671. DataGridViewMovies.DataSource = Nothing
  8672. Me.SearchForMissingEpisodesToolStripMenuItem.Checked = Pref.displayMissingEpisodes
  8673. Me.RefreshMissingEpisodesToolStripMenuItem.Enabled = Pref.displayMissingEpisodes
  8674. If Pref.displayMissingEpisodes Then
  8675. Me.RefreshMissingEpisodesToolStripMenuItem.ToolTipText = "Last Refresh: " & Pref.lastrefreshmissingdate
  8676. End If
  8677. Me.rbTvMissingEpisodes.Enabled = Pref.displayMissingEpisodes
  8678. Me.rbTvMissingAiredEp.Enabled = Pref.displayMissingEpisodes
  8679. Renamer.setRenamePref(Pref.tv_RegexRename.Item(Pref.tvrename), Pref.tv_RegexScraper)
  8680. XBMCTMDBConfigSave()
  8681. XBMCTVDBConfigSave()
  8682. '----------------------------------------------------------
  8683. mScraperManager = New ScraperManager(IO.Path.Combine(My.Application.Info.DirectoryPath, "Assets\scrapers"))
  8684. '----------------------------------------------------------
  8685. Dim loadinginfo As String = ""
  8686. If Not IO.File.Exists(workingProfile.moviecache) Or Pref.startupCache = False Then
  8687. loadinginfo = "Status :- Building Movie caches"
  8688. frmSplash.Label3.Text = loadinginfo
  8689. frmSplash.Label3.Refresh()
  8690. mov_RebuildMovieCaches()
  8691. Else
  8692. loadinginfo = "Status :- Loading Movie Database"
  8693. frmSplash.Label3.Text = loadinginfo
  8694. frmSplash.Label3.Refresh()
  8695. mov_CacheLoad()
  8696. End If
  8697. If IO.File.Exists(workingProfile.Genres) Then
  8698. loadinginfo = "Status :- Loading Genre List"
  8699. frmSplash.Label3.Text = loadinginfo
  8700. frmSplash.Label3.Refresh()
  8701. Call util_GenreLoad()
  8702. End If
  8703. If IO.File.Exists(workingProfile.homemoviecache) Then
  8704. loadinginfo = "Status :- Loading Home Movie Database"
  8705. frmSplash.Label3.Text = loadinginfo
  8706. frmSplash.Label3.Refresh()
  8707. Call homemovieCacheLoad()
  8708. End If
  8709. If IO.File.Exists(workingProfile.MusicVideoCache) Then
  8710. loadinginfo = "Status :- Loading Music Video Database"
  8711. frmSplash.Label3.Text = loadinginfo
  8712. frmSplash.Label3.Refresh()
  8713. UcMusicVideo1.cmbxMVSort.SelectedIndex = 0
  8714. Call UcMusicVideo1.MVCacheLoad()
  8715. End If
  8716. If Not prefs then
  8717. If Not IO.File.Exists(workingProfile.tvcache) Or Pref.startupCache = False Then
  8718. loadinginfo = "Status :- Building TV Database"
  8719. frmSplash.Label3.Text = loadinginfo
  8720. frmSplash.Label3.Refresh()
  8721. Call tv_CacheRefresh()
  8722. Else
  8723. loadinginfo = "Status :- Loading TV Database"
  8724. frmSplash.Label3.Text = loadinginfo
  8725. frmSplash.Label3.Refresh()
  8726. Call tv_CacheLoad()
  8727. End If
  8728. Call tv_Filter()
  8729. End If
  8730. If Pref.homemoviefolders.Count > 0 Then
  8731. AuthorizeCheck = True
  8732. clbx_HMMovieFolders.Items.Clear()
  8733. For Each folder In homemoviefolders
  8734. clbx_HMMovieFolders.Items.Add(folder.rpath, folder.selected)
  8735. Next
  8736. AuthorizeCheck = False
  8737. End If
  8738. cbBtnLink.Checked = Pref.XBMC_Link
  8739. SetcbBtnLink
  8740. If Pref.XbmcLinkReady Then
  8741. XbmcControllerQ.Write(XbmcController.E.ConnectReq, PriorityQueue.Priorities.low)
  8742. End If
  8743. End Sub
  8744. Private Sub MediaCompanionHelpFileToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles MediaCompanionHelpFileToolStripMenuItem.Click
  8745. Try
  8746. Process.Start(applicationPath & "\Media_Companion.chm")
  8747. Catch ex As Exception
  8748. ExceptionHandler.LogError(ex)
  8749. End Try
  8750. End Sub
  8751. Private Sub Tv_TreeViewContext_DispByAiredDate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tv_TreeViewContext_DispByAiredDate.Click
  8752. 'This function displays in a Form with a fullscreen textbox, a list off all of a TvShows episodes in 'date aired' order, separated by calendar year.
  8753. 'It can be called from a TVShow, Season or Episode context menu
  8754. 'It handles the following errors - no aired date, episodes on the same aired date, episodes on same date with same series & same episode i.e. a duplicate....
  8755. Try
  8756. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  8757. Dim NoDateCountUp As Integer = 0
  8758. Dim Abort As Boolean = True 'this is used to verify that we actually have episodes to process
  8759. Dim mySortedList As New SortedList() 'this is our sorted list, we add to the list a key (aired date) & the associated data (episode name), then we sort it & then we read out the data
  8760. Dim childNodeLevel1 As TreeNode
  8761. Select Case TvTreeview.SelectedNode.Level
  8762. Case Is = 0
  8763. childNodeLevel1 = TvTreeview.SelectedNode
  8764. Case Is = 1
  8765. childNodeLevel1 = TvTreeview.SelectedNode.Parent
  8766. Case Is = 2
  8767. childNodeLevel1 = TvTreeview.SelectedNode.Parent.Parent
  8768. Case Else
  8769. MsgBox("Unsupported TvTreeviewlevel in Aired Date Function", MsgBoxStyle.Exclamation, "Error!")
  8770. Exit Sub
  8771. End Select
  8772. 'this section steps down through the tree to get from the tvshow to each episode
  8773. For Each childNodeLevel2 As TreeNode In childNodeLevel1.Nodes
  8774. For Each childNodeLevel3 As TreeNode In childNodeLevel2.Nodes
  8775. Abort = False 'if we get here then there is at least 1 episode
  8776. Dim episode As New TvEpisode
  8777. episode.Load(childNodeLevel3.Name)
  8778. Dim EpAired As String = episode.Aired.Value 'this holds the 'aired' value
  8779. If EpAired Is Nothing Then
  8780. EpAired = "9999-" & Utilities.PadNumber(NoDateCountUp, 5) 'if the aired date is nothing then we add it as 9999-xxxxx where x increments
  8781. NoDateCountUp += 1
  8782. End If
  8783. 'Convert episode to 2 digits for formatting
  8784. Dim episode2digit As New List(Of String)
  8785. episode2digit.Clear()
  8786. episode2digit.Add(childNodeLevel3.Tag.Episode.Value)
  8787. If episode2digit(0).Length = 1 Then episode2digit(0) = "0" & episode2digit(0)
  8788. 'Convert season to 2 digits for formatting
  8789. Dim season2digit As String = childNodeLevel3.Tag.Season.Value
  8790. If season2digit.Length = 1 Then season2digit = "0" & season2digit
  8791. 'here we add our data in the order that it is read in the tree - the sorted list will sort it for us
  8792. 'using the key value .aired (date format is yyyy-mm-dd so simple alphabetical sort is all that is required)
  8793. 'FormatTVFilename formats the show title,episode tile, season no & episode no as per the users preferences
  8794. Dim SameDateLoop As Boolean = True
  8795. Dim Key As String
  8796. Key = EpAired & season2digit & episode2digit(0) 'the key index (which is the string used to sort by) is the date+season+episode - this should be unique!
  8797. Do Until SameDateLoop = False
  8798. If mySortedList.ContainsKey(Key) Then
  8799. Key += "^" 'we add an aditional ^ to the key if its still not unique.....
  8800. Else
  8801. SameDateLoop = False
  8802. End If
  8803. Loop
  8804. mySortedList.Add(Key, EpAired & " " & Renamer.setTVFilename(WorkingTvShow.Title.Value, childNodeLevel3.Tag.title.value, episode2digit, season2digit))
  8805. Next
  8806. Next
  8807. If Not Abort Then 'i.e. we have episodes in this show....
  8808. Dim textstring As String = "!!! " & WorkingTvShow.Title.Value & " Seasons: " & WorkingTvShow.Seasons.Count & " Episodes: " & WorkingTvShow.Episodes.Count & vbCrLf 'start our text with the show title
  8809. textstring += "!!! " & StrDup(textstring.Length - 2, "-") & vbCrLf 'add an underline of the same length
  8810. Dim prevkey As String = mySortedList.GetKey(0).Substring(0, 4) 'load with first year value first four digits of aired date
  8811. For Line = 0 To mySortedList.Count - 1 'read the data from the sorted list
  8812. If mySortedList.GetKey(Line).Substring(0, 4) <> prevkey Then textstring += "!!! ----------" & vbCrLf 'line break between years...
  8813. prevkey = mySortedList.GetKey(Line).Substring(0, 4) 'set so that we can compare with next iteration
  8814. textstring += "!!! " & mySortedList.GetByIndex(Line) & vbCrLf ' "!!! " allows this to be shown in either brief or Full log modes
  8815. Next
  8816. textstring += "!!! " & vbCrLf & "!!! 9999 episodes have no valid aired date stored" & vbCrLf
  8817. ' 'Show Final Listing Screen
  8818. Dim MyFormObject As New frmoutputlog(textstring, True) 'create the log form & modify it to suit our needs
  8819. MyFormObject.TextBox1.Font = New System.Drawing.Font("Courier New", 10.2!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) 'constant width font
  8820. MyFormObject.btn_savelog.AutoSize = True 'change button size to text will fit automatically
  8821. MyFormObject.btn_savelog.Text = "Save Details..." 'change the button text
  8822. MyFormObject.Text = "Episodes in Aired Order for " & WorkingTvShow.Title.Value 'change the form title text
  8823. MyFormObject.ShowDialog() 'show the form
  8824. Else 'we get here if abort still = true, i.e. no episodes
  8825. MsgBox("There are no Epsiodes or Missing Episodes for this show.", MsgBoxStyle.OkOnly, "No Episodes")
  8826. End If
  8827. Catch ex As Exception
  8828. ExceptionHandler.LogError(ex)
  8829. End Try
  8830. End Sub
  8831. Private Sub util_FixSeasonEpisode() 'atleast try... if season or episode is -1, but title contains a regexable name to retreive season & episode
  8832. Dim textstring As String = "!!! Season Episode -1 fix..." & vbCrLf
  8833. Dim correctionsfound As Integer = 0
  8834. Dim correctionsfixed As Integer = 0
  8835. Dim childNodeLevel1 As TreeNode
  8836. Dim originallabeltext = Label148.Text
  8837. For Each childNodeLevel1 In TvTreeview.Nodes 'step thru each tvshow/season/episode in the treeview
  8838. For Each childNodeLevel2 As TreeNode In childNodeLevel1.Nodes
  8839. Label148.Text = childNodeLevel1.Text & " - " & childNodeLevel2.Text 'display some sort of progress using the text label associated with the fix
  8840. Label148.Invalidate()
  8841. Windows.Forms.Application.DoEvents() 'this refreshes the label whilst we are still in this sub
  8842. For Each childNodeLevel3 As TreeNode In childNodeLevel2.Nodes
  8843. Dim episode As New TvEpisode
  8844. episode.Load(childNodeLevel3.Name) 'load the episode from the nfo using the path stored in the treeview
  8845. If episode.Season.Value <> -1 AndAlso episode.Episode.Value <> -1 Then Continue For ' check if we have the issue
  8846. textstring += "!!! " & childNodeLevel1.Text & " - " & childNodeLevel3.Name 'add details to the log"
  8847. correctionsfound += 1 'increment the found issues counter
  8848. For Each regexp In Pref.tv_RegexScraper
  8849. Dim M As Match
  8850. Dim sourcetext As String = ""
  8851. If RadioButton_Fix_Filename.Checked Then
  8852. sourcetext = childNodeLevel3.Name 'use nfo filename to retrieve season/episode
  8853. Else
  8854. sourcetext = episode.Title.Value 'use 'title' node in nfo to retieve season/episode
  8855. End If
  8856. M = Regex.Match(episode.Title.Value, regexp)
  8857. If Not M.Success Then Continue For 'we found a valid regex match
  8858. Try
  8859. episode.Season.Value = M.Groups(1).Value.ToString 'set new values
  8860. episode.Episode.Value = M.Groups(2).Value.ToString
  8861. correctionsfixed += 1
  8862. episode.Save(childNodeLevel3.Name) 'save episode
  8863. textstring += " - Corrected - S" & episode.Season.Value & "E" & episode.Episode.Value
  8864. Exit For
  8865. Catch
  8866. textstring += vbCrLf & "**** exception created during nfo save **** - " & childNodeLevel3.Name
  8867. End Try
  8868. Next
  8869. textstring += vbCrLf
  8870. Next
  8871. Next
  8872. Next
  8873. Label148.Text = originallabeltext 'return the label text back after we have used it to diplay progress
  8874. Dim MyFormObject As New frmoutputlog(textstring, True) 'create the log form & modify it to suit our needs
  8875. MyFormObject.TextBox1.Font = New System.Drawing.Font("Courier New", 10.2!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) 'constant width font
  8876. MyFormObject.btn_savelog.AutoSize = True 'change button size to text will fit automatically
  8877. MyFormObject.btn_savelog.Text = "Save Details..." 'change the button text
  8878. MyFormObject.Font = New System.Drawing.Font("Courier New", 10.2!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
  8879. MyFormObject.Text = "Corrections" & vbCrLf & "Found: " & correctionsfound & vbCrLf & " Fixed: " & correctionsfixed 'change the form title text
  8880. MyFormObject.ShowDialog() 'show the form
  8881. If MsgBox("Corrections" & vbCrLf & "Found: " & correctionsfound & vbCrLf & "Fixed: " & correctionsfixed & vbCrLf & vbCrLf & "Do you want to perform a refresh to reload the corrected nfo's?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
  8882. tv_CacheRefresh() 'ask to do a refresh or not, user may want to try both methods before do a refresh.
  8883. End If
  8884. End Sub
  8885. Private Sub tsmiTvDelShowNfoArt_Click(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles tsmiTvDelShowNfoArt.MouseDown
  8886. Dim NoDelArt As Boolean = (e.Button = MouseButtons.Right)
  8887. TVContextMenu.Close()
  8888. Dim Sh As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  8889. TvDelShowNfoArt(Sh, False, NoDelArt)
  8890. End Sub
  8891. Private Sub tsmiTvDelShowEpNfoArt_Click(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles tsmiTvDelShowEpNfoArt.MouseDown
  8892. Dim NoDelArt As Boolean = (e.Button = MouseButtons.Right)
  8893. TVContextMenu.Close()
  8894. Dim msgstring As String = "Warning: This will Remove all nfo's" & If(Not NoDelArt, " and artwork", "") & " for this Show and Episodes"
  8895. msgstring &= vbcrlf & "and remove the show's folder from MC's ""List Of Separate Folders""." & vbCrLf
  8896. msgstring &= vbCrLf & "To Rescrape this show, use ""Check Roots for New TV Shows"" or "
  8897. msgstring &= vbCrLf & "Add this show's folder again to your ""List Of Separate Folders""." & vbCrLf
  8898. msgstring &= vbCrLf & "Are your sure you wish to continue?"
  8899. Dim x = MsgBox(msgstring, MsgBoxStyle.OkCancel, "Delete Show and Episode's nfo's" & If(Not NoDelArt, " and artwork", ""))
  8900. If x = MsgBoxResult.Cancel Then Exit Sub
  8901. Dim Sh As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  8902. Dim seas As TvSeason = tv_SeasonSelectedCurrently(TvTreeview)
  8903. Dim ep As TvEpisode = ep_SelectedCurrently(TvTreeview)
  8904. TvDelEpNfoAst(Sh, seas, ep, True, NoDelArt)
  8905. TvDelShowNfoArt(Sh, True, NoDelArt)
  8906. End Sub
  8907. Private Sub tsmiTvDelEpNfoArt_Click(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles tsmiTvDelEpNfoArt.MouseDown
  8908. Dim NoDelArt As Boolean = (e.Button = MouseButtons.Right)
  8909. TVContextMenu.Close()
  8910. Dim Sh As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  8911. Dim seas As TvSeason = tv_SeasonSelectedCurrently(TvTreeview)
  8912. Dim ep As TvEpisode = ep_SelectedCurrently(TvTreeview)
  8913. TvDelEpNfoAst(Sh, seas, ep, False, NoDelArt)
  8914. End Sub
  8915. Private Sub Tv_TreeViewContext_RescrapeShowOrEpisode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tv_TreeViewContext_RescrapeShowOrEpisode.Click
  8916. tv_Rescrape()
  8917. End Sub
  8918. Private Sub Tv_TreeViewContext_WatchedShowOrEpisode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tv_TreeViewContext_WatchedShowOrEpisode.Click
  8919. Tv_MarkAs_Watched_UnWatched("1")
  8920. End Sub
  8921. Private Sub Tv_TreeViewContext_UnWatchedShowOrEpisode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tv_TreeViewContext_UnWatchedShowOrEpisode.Click
  8922. Tv_MarkAs_Watched_UnWatched("0")
  8923. End Sub
  8924. Private Sub Tv_TreeViewContext_Play_Episode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tv_TreeViewContext_Play_Episode.Click
  8925. Try
  8926. Dim ep As TvEpisode = ep_SelectedCurrently(TvTreeview)
  8927. If ep.IsMissing Then Exit Sub
  8928. Dim tempstring As String = ep.VideoFilePath 'DirectCast(TvTreeview.SelectedNode.Tag, Media_Companion.TvEpisode).VideoFilePath
  8929. StartVideo(tempstring)
  8930. 'If Pref.videomode = 1 Then Call util_VideoMode1(tempstring)
  8931. 'If Pref.videomode = 2 Then Call util_VideoMode2(tempstring)
  8932. 'If Pref.videomode = 3 Then
  8933. ' Pref.videomode = 2
  8934. ' Call util_VideoMode2(tempstring)
  8935. 'End If
  8936. 'If Pref.videomode >= 4 Then
  8937. ' If Pref.selectedvideoplayer <> Nothing Then
  8938. ' Call util_VideoMode4(tempstring)
  8939. ' Else
  8940. ' Call util_VideoMode1(tempstring)
  8941. ' End If
  8942. 'End If
  8943. Catch ex As Exception
  8944. ExceptionHandler.LogError(ex)
  8945. End Try
  8946. End Sub
  8947. Private Sub Tv_TreeViewContext_ViewNfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tv_TreeViewContext_ViewNfo.Click
  8948. Try
  8949. If TvTreeview.SelectedNode Is Nothing Then Exit Sub
  8950. If TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvShow Then
  8951. Utilities.NfoNotepadDisplay(DirectCast(TvTreeview.SelectedNode.Tag, Media_Companion.TvShow).NfoFilePath, Pref.altnfoeditor)
  8952. ElseIf TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvSeason Then
  8953. MsgBox("A Season NFO is invalid so it can't be shown")
  8954. ElseIf TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvEpisode Then
  8955. Utilities.NfoNotepadDisplay(DirectCast(TvTreeview.SelectedNode.Tag, Media_Companion.TvEpisode).NfoFilePath, Pref.altnfoeditor)
  8956. Else
  8957. MsgBox("None")
  8958. End If
  8959. Catch ex As Exception
  8960. ExceptionHandler.LogError(ex)
  8961. End Try
  8962. Debug.Print(Me.Controls.Count)
  8963. End Sub
  8964. Private Sub TvDelShowNfoArt(Show As TvShow, ByVal Ignore As Boolean, Optional ByVal NoDelArt As Boolean = False)
  8965. Try
  8966. If Not Ignore Then
  8967. Dim msgstring As String = "Warning: This will Remove the selected Tv Show's nfo" & If(Not NoDelArt, " and artwork", "")
  8968. msgstring &= vbcrlf & "and remove the show's folder from MC's ""List Of Separate Folders""." & vbCrLf
  8969. msgstring &= vbCrLf & "To Rescrape this show, use ""Check Roots for New TV Shows"" or "
  8970. msgstring &= vbCrLf & "Add this show's folder again to your ""List Of Separate Folders""." & vbCrLf
  8971. msgstring &= vbCrLf & "Are your sure you wish to continue?"
  8972. Dim x = MsgBox(msgstring, MsgBoxStyle.OkCancel, "Delete Show's nfo's" & If(Not NoDelArt, " and artwork", ""))
  8973. If x = MsgBoxResult.Cancel Then Exit Sub
  8974. End If
  8975. If Not NoDelArt Then TvDeleteShowArt(show)
  8976. Dim showpath As String = Show.FolderPath
  8977. Utilities.SafeDeleteFile(showpath & "tvshow.nfo")
  8978. showpath = showpath.Substring(0, showpath.Length-1)
  8979. If ListBox6.items.Contains(showpath) Then ListBox6.Items.Remove(showpath)
  8980. If Pref.tvFolders.Contains(showpath) Then Pref.tvFolders.Remove(showpath)
  8981. TvTreeview.Nodes.Remove(show.ShowNode)
  8982. Cache.TvCache.Remove(show)
  8983. Tv_CacheSave()
  8984. TvTreeviewRebuild()
  8985. Show.UpdateTreenode()
  8986. Catch ex As Exception
  8987. ExceptionHandler.LogError(ex)
  8988. End Try
  8989. End Sub
  8990. Private Sub TvDelEpNfoAst(Show As TvShow, season As TvSeason, ep As TvEpisode, ByVal Ignore As Boolean, Optional ByVal NoDelArt As Boolean = False)
  8991. Try
  8992. If Not Ignore Then
  8993. Dim msgstring As String = "Warning, This operation will delete all Episode nfo's" & If(Not NoDelArt, " and artwork", "")
  8994. msgstring &= vbCrLf & "!! Note: will not delete missing episodes." & vbCrLf
  8995. msgstring &= vbCrLf & "Are your sure you wish to continue?"
  8996. Dim res As MsgBoxResult = MsgBox(msgstring, MsgBoxStyle.YesNoCancel, "Delete episode nfo(s)" & If(Not NoDelArt, " and artwork", ""))
  8997. If res = MsgBoxResult.No OrElse res = MsgBoxResult.Cancel Then Exit Sub
  8998. End If
  8999. Dim TheseEpisodes As New List(Of Media_Companion.TvEpisode)
  9000. If Not IsNothing(ep) Then
  9001. For Each epis In season.Episodes
  9002. If epis.NfoFilePath = ep.NfoFilePath Then TheseEpisodes.Add(epis)
  9003. Next
  9004. Else
  9005. TheseEpisodes.AddRange(Show.Episodes)
  9006. End If
  9007. For Each episode In TheseEpisodes
  9008. If IsNothing(season) OrElse episode.Season.Value = season.SeasonNumber.ToString Then
  9009. If Not episode.IsMissing Then
  9010. If episode.FolderPath <> Show.FolderPath AndAlso File.Exists(episode.FolderPath & "folder.jpg") Then
  9011. Utilities.SafeDeleteFile(episode.FolderPath & "folder.jpg")
  9012. End If
  9013. Dim eppath As String = episode.NfoFilePath
  9014. Utilities.SafeDeleteFile(eppath)
  9015. If Not NoDelArt Then
  9016. Utilities.SafeDeleteFile(eppath.Replace(".nfo", ".tbn"))
  9017. Utilities.SafeDeleteFile(eppath.Replace(".nfo", "-thumb.jpg"))
  9018. End If
  9019. End If
  9020. Cache.TvCache.Remove(episode)
  9021. TvTreeview.Nodes.Remove(episode.EpisodeNode)
  9022. If Not IsNothing(season) Then season.Episodes.Remove(episode)
  9023. End If
  9024. Next
  9025. Dim listofnodes As New List(Of TreeNode)
  9026. For Each n As TreeNode In TvTreeview.Nodes
  9027. listofnodes.Add(n)
  9028. For Each chn As TreeNode in n.nodes
  9029. listofnodes.Add(chn)
  9030. Next
  9031. Next
  9032. For Each n In listofnodes
  9033. If n.FullPath.Contains(Show.Title.Value) AndAlso n.FullPath.ToLower.Contains("season") AndAlso n.GetNodeCount(False) = 0 Then
  9034. TvTreeview.Nodes.Remove(n)
  9035. End If
  9036. Next
  9037. Tv_CacheSave()
  9038. TvTreeviewRebuild()
  9039. Show.UpdateTreenode()
  9040. Catch ex As Exception
  9041. ExceptionHandler.LogError(ex)
  9042. End Try
  9043. End Sub
  9044. Private Sub Tv_TreeViewContext_FindMissArt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tv_TreeViewContext_FindMissArt.Click
  9045. Try
  9046. tv_MissingArtDownload(tv_ShowSelectedCurrently(TvTreeview))
  9047. Catch ex As Exception
  9048. ExceptionHandler.LogError(ex)
  9049. End Try
  9050. End Sub
  9051. Private Sub MovieContextMenu_Opening(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MovieContextMenu.Opening
  9052. Try
  9053. If DataGridViewMovies.SelectedRows.Count = 0 Then
  9054. e.Cancel = True
  9055. End If
  9056. tsmiRescrapeRenameFiles.Enabled = Not Pref.usefoldernames AndAlso Not Pref.basicsavemode And Pref.MovieRenameEnable
  9057. tsmiMov_OpenInMkvmergeGUI .Enabled = (Pref.MkvMergeGuiPath <> "")
  9058. tsmiRescrapeFrodo_Poster_Thumbs .Enabled = Pref.FrodoEnabled
  9059. tsmiRescrapeFrodo_Fanart_Thumbs .Enabled = Pref.FrodoEnabled
  9060. Catch ex As Exception
  9061. ExceptionHandler.LogError(ex)
  9062. End Try
  9063. End Sub
  9064. Private Sub TVContextMenu_Opening(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TVContextMenu.Opening
  9065. Try
  9066. If (TvTreeview.SelectedNode Is Nothing) Then
  9067. e.Cancel = True
  9068. End If
  9069. Catch ex As Exception
  9070. ExceptionHandler.LogError(ex)
  9071. End Try
  9072. End Sub
  9073. Private Sub SaveSelectedFanartAsToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SaveSelectedFanartAsToolStripMenuItem.Click
  9074. Try
  9075. messbox = New frmMessageBox("Please wait,", "", "Downloading Fanart")
  9076. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  9077. messbox.Show()
  9078. Me.Refresh()
  9079. messbox.Refresh()
  9080. Me.Refresh()
  9081. Application.DoEvents()
  9082. Dim tempstring As String
  9083. Dim tempint As Integer = 0
  9084. Dim tempstring2 As String = String.Empty
  9085. Dim allok As Boolean = False
  9086. For Each button As Control In Me.Panel2.Controls
  9087. If button.Name.IndexOf("checkbox") <> -1 Then
  9088. Dim b1 As RadioButton = CType(button, RadioButton)
  9089. If b1.Checked = True Then
  9090. tempstring = b1.Name
  9091. tempstring = tempstring.Replace("moviefanartcheckbox", "")
  9092. tempint = Convert.ToDecimal(tempstring)
  9093. tempstring2 = fanartArray(tempint).hdUrl
  9094. allok = True
  9095. Exit For
  9096. End If
  9097. End If
  9098. Next
  9099. If allok = False Then
  9100. MsgBox("No Fanart Is Selected")
  9101. Else
  9102. Try
  9103. Panel1.Controls.Remove(Label1)
  9104. With SaveFileDialog1
  9105. .AddExtension = True
  9106. .DefaultExt = "jpg"
  9107. .Filter = "Jpg Pictures (*.jpg)|*.jpg"
  9108. .Title = "Save Hi-Res Fanart as"
  9109. .OverwritePrompt = True
  9110. .CheckPathExists = True
  9111. .InitialDirectory = workingMovieDetails.fileinfo.path
  9112. End With
  9113. If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
  9114. Movie.SaveFanartImageToCacheAndPath(tempstring2, SaveFileDialog1.FileName)
  9115. End If
  9116. Catch ex As WebException
  9117. MsgBox(ex.Message)
  9118. End Try
  9119. End If
  9120. Catch ex As Exception
  9121. ExceptionHandler.LogError(ex)
  9122. Finally
  9123. messbox.Close()
  9124. End Try
  9125. End Sub
  9126. Private Sub TasksDontShowCompleted_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles TasksDontShowCompleted.CheckedChanged
  9127. Me.TasksOnlyIncompleteTasks = TasksDontShowCompleted.Checked
  9128. End Sub
  9129. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
  9130. util_FixSeasonEpisode()
  9131. End Sub
  9132. Private Sub mov_DisplayFanart()
  9133. If workingMovieDetails Is Nothing Then Exit Sub
  9134. If workingMovieDetails.fileinfo.fanartpath <> Nothing Then
  9135. Try
  9136. Dim fanartpath = mov_FanartORExtrathumbPath()
  9137. If IO.File.Exists(fanartpath) Then
  9138. util_ImageLoad(PictureBox2, fanartpath, Utilities.DefaultFanartPath)
  9139. lblMovFanartWidth.Text = PictureBox2.Image.Width
  9140. lblMovFanartHeight.Text = PictureBox2.Image.Height
  9141. Else
  9142. util_ImageLoad(PictureBox2, Utilities.DefaultFanartPath, Utilities.DefaultFanartPath)
  9143. lblMovFanartWidth.Text = ""
  9144. lblMovFanartHeight.Text = ""
  9145. End If
  9146. Catch ex As Exception
  9147. #If SilentErrorScream Then
  9148. Throw ex
  9149. #End If
  9150. End Try
  9151. End If
  9152. End Sub
  9153. Private Function mov_FanartORExtrathumbPath() As String
  9154. Dim fanarttype As String = ""
  9155. For Each rb As RadioButton In GroupBoxFanartExtrathumbs.Controls
  9156. If rb.Checked Then
  9157. fanarttype = rb.Text.ToLower
  9158. Exit For
  9159. End If
  9160. Next
  9161. Dim workingfanartpath As String = workingMovieDetails.fileinfo.fanartpath
  9162. If fanarttype = "fanart" Then
  9163. Return workingfanartpath
  9164. Else
  9165. Return Strings.Left(workingfanartpath, workingfanartpath.LastIndexOf("\")) & "\extrathumbs\" & fanarttype & ".jpg"
  9166. End If
  9167. End Function
  9168. Private Sub tpMovMain_Enter(sender As Object, e As System.EventArgs) Handles tpMovMain.Enter
  9169. mov_SplitContainerAutoPosition()
  9170. End Sub
  9171. Private Sub tpTvMainBrowser_Enter(sender As Object, e As System.EventArgs) Handles tpTvMainBrowser.Enter
  9172. tv_SplitContainerAutoPosition()
  9173. End Sub
  9174. Private Sub plottxt_DoubleClick(sender As System.Object, e As System.EventArgs) Handles plottxt.DoubleClick
  9175. ShowBigMovieText()
  9176. End Sub
  9177. Private Sub plottxt_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles plottxt.KeyPress
  9178. If e.KeyChar = Convert.ToChar(1) Then
  9179. DirectCast(sender, TextBox).SelectAll()
  9180. e.Handled = True
  9181. End If
  9182. End Sub
  9183. Private Sub outlinetxt_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles outlinetxt.KeyPress
  9184. If e.KeyChar = Convert.ToChar(1) Then
  9185. DirectCast(sender, TextBox).SelectAll()
  9186. e.Handled = True
  9187. End If
  9188. End Sub
  9189. Private Sub ShowBigMovieText()
  9190. Dim frm As New frmBigMovieText
  9191. If Pref.MultiMonitoEnabled Then
  9192. frm.Bounds = screen.AllScreens(CurrentScreen).Bounds
  9193. frm.StartPosition = FormStartPosition.Manual
  9194. End If
  9195. frm.ShowDialog(
  9196. titletxt.Text,
  9197. directortxt.Text,
  9198. votestxt.Text,
  9199. ratingtxt.Text,
  9200. runtimetxt.Text,
  9201. genretxt.Text,
  9202. txtStars.Text,
  9203. certtxt.Text,
  9204. plottxt.Text
  9205. )
  9206. End Sub
  9207. 'Private Function GetActorThumb(ByRef currentUri As String)
  9208. ' Dim actorthumb As String = currentUri
  9209. ' If Pref.actorsave Then
  9210. ' Dim uri As Uri
  9211. ' uri = New Uri(actorthumb)
  9212. ' If Len(Pref.actornetworkpath) > 0 AndAlso Len(Pref.actorsavepath) > 0 Then
  9213. ' Dim actorThumbFileName As String
  9214. ' Dim localActorThumbFileName As String
  9215. ' actorThumbFileName = System.IO.Path.Combine(Pref.actornetworkpath, uri.Segments(uri.Segments.GetLength(0) - 1))
  9216. ' localActorThumbFileName = System.IO.Path.Combine(Pref.actorsavepath, uri.Segments(uri.Segments.GetLength(0) - 1))
  9217. ' Movie.SaveActorImageToCacheAndPath(uri.OriginalString, localActorThumbFileName)
  9218. ' actorthumb = actorThumbFileName
  9219. ' End If
  9220. ' End If
  9221. ' Return actorthumb
  9222. 'End Function
  9223. Private Sub mov_RescrapeAllSelected()
  9224. _rescrapeList.Field = Nothing
  9225. _rescrapeList.FullPathAndFilenames.Clear()
  9226. For Each row In DataGridViewMovies.SelectedRows
  9227. Dim fullpath As String = row.Cells("fullpathandfilename").Value.ToString
  9228. If Not File.Exists(fullpath) Then Continue For
  9229. _rescrapeList.FullPathAndFilenames.Add(fullpath)
  9230. Next
  9231. RunBackgroundMovieScrape("RescrapeAll")
  9232. End Sub
  9233. Public Sub mov_VideoSourcePopulate()
  9234. Try
  9235. cbMovieDisplay_Source.Items.Clear()
  9236. cbMovieDisplay_Source.Items.Add("")
  9237. For Each mset In Pref.releaseformat
  9238. cbMovieDisplay_Source.Items.Add(mset)
  9239. Next
  9240. cbFilterSource.UpdateItems( Pref.releaseformat.ToList )
  9241. cbMovieDisplay_Source.SelectedIndex = 0
  9242. If IsNothing(workingMovieDetails) = False Then
  9243. If workingMovieDetails.fullmoviebody.source <> "" Then
  9244. For te = 0 To cbMovieDisplay_Source.Items.Count - 1
  9245. If cbMovieDisplay_Source.Items(te) = workingMovieDetails.fullmoviebody.source Then
  9246. cbMovieDisplay_Source.SelectedIndex = te
  9247. Exit For
  9248. End If
  9249. Next
  9250. End If
  9251. End If
  9252. Catch ex As Exception
  9253. #If SilentErrorScream Then
  9254. Throw ex
  9255. #End If
  9256. End Try
  9257. End Sub
  9258. 'AnotherPhil bug fix - If the default browser is <goz> IE <goz/> then not stating the exe throws an exception
  9259. Public Sub OpenUrl(ByVal url As String)
  9260. 'Dim testprocess As New Process
  9261. 'testprocess.Start("notepad.exe")
  9262. Try
  9263. If Pref.selectedBrowser <> "" Then
  9264. 'testprocess.Start(Pref.selectedBrowser, Uri.EscapeUriString(url))
  9265. Process.Start(Pref.selectedBrowser, Uri.EscapeUriString(url))
  9266. Else
  9267. Try
  9268. 'testprocess.Start(url)
  9269. Process.Start(url)
  9270. Catch ex As Exception
  9271. MessageBox.Show("An error occurred while trying to launch the default browser - Under 'General Preferences' check 'Use external Browser...' and then locate your browser to fix this error", "", MessageBoxButtons.OK)
  9272. End Try
  9273. End If
  9274. Catch ex As Exception
  9275. ExceptionHandler.LogError(ex)
  9276. End Try
  9277. 'testprocess.Close()
  9278. 'testprocess.Dispose()
  9279. End Sub
  9280. Private Sub ZoomActorPictureBox(pictureBox As PictureBox)
  9281. If IsNothing(pictureBox.Tag) orElse pictureBox.Tag.ToString = Utilities.DefaultActorPath Then Exit Sub
  9282. Me.ControlBox = False
  9283. MenuStrip1.Enabled = False
  9284. Try
  9285. util_ZoomImage(pictureBox.Tag.ToString)
  9286. Catch
  9287. Dim wc As New WebClient()
  9288. Dim ImageInBytes() As Byte = wc.DownloadData(pictureBox.Tag)
  9289. Dim ImageStream As New IO.MemoryStream(ImageInBytes)
  9290. Dim cachefile As String = Utilities.Download2Cache(pictureBox.Tag.ToString)
  9291. util_ZoomImage(cachefile)
  9292. End Try
  9293. End Sub
  9294. Private Sub Mov_RemoveMovie()
  9295. For Each row As DataGridViewRow In DataGridViewMovies.SelectedRows
  9296. oMovies.RemoveMovieFromCache(row.Cells("fullpathandfilename").Value.ToString)
  9297. DataGridViewMovies.Rows.RemoveAt(row.Index)
  9298. Next
  9299. DataGridViewMovies.ClearSelection
  9300. oMovies.SaveMovieCache
  9301. UpdateFilteredList
  9302. End Sub
  9303. Private Sub Mov_DeleteNfoArtwork(Optional ByVal DelArtwork As Boolean = True)
  9304. Dim msgstr As String = " Are you sure you wish to delete" & vbCrLf
  9305. msgstr &= ".nfo" & If(DelArtwork, ", Fanart, Poster and Actors", " only") & " for" & vbCrLf
  9306. msgstr &= "Selected Movie(s)?"
  9307. If MsgBox(msgstr, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
  9308. Dim movielist As New List(Of String)
  9309. Pref.MovieDeleteNfoArtwork = True
  9310. For Each row As DataGridViewRow In DataGridViewMovies.SelectedRows
  9311. movielist.Add(row.Cells(NFO_INDEX).Value.ToString)
  9312. oMovies.DeleteScrapedFiles(row.Cells(NFO_INDEX).Value.ToString, DelArtwork)
  9313. Next
  9314. 'Last remove from dataGridViewMovies and update cache.
  9315. Mov_RemoveMovie()
  9316. Pref.MovieDeleteNfoArtwork = False
  9317. Else
  9318. MsgBox(" Deletion of .nfo, artwork and Actors " &vbCrLf & "has been Cancelled")
  9319. End If
  9320. End Sub
  9321. Private Sub TabLevel1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles TabLevel1.SelectedIndexChanged
  9322. Select Case TabLevel1.SelectedTab.Text.ToLower
  9323. Case "config.xml"
  9324. RichTextBoxTabConfigXML.Text = Utilities.LoadFullText(workingProfile.config) ' applicationPath & "\Settings\config.xml"
  9325. Case "moviecache"
  9326. RichTextBoxTabMovieCache.Text = Utilities.LoadFullText(workingProfile.moviecache) ' applicationPath & "\Settings\moviecache.xml"
  9327. Case = "tvcache"
  9328. RichTextBoxTabTVCache.Text = Utilities.LoadFullText(workingProfile.tvcache) ' applicationPath & "\Settings\tvcache.xml"
  9329. Case = "actorcache"
  9330. RichTextBoxTabActorCache.Text = Utilities.LoadFullText(workingProfile.actorcache) ' applicationPath & "\Settings\actorcache.xml"
  9331. Case = "profile"
  9332. RichTextBoxTabProfile.Text = Utilities.LoadFullText(applicationPath & "\Settings\profile.xml") ' applicationPath & "\Settings\profile.xml"
  9333. Case = "regex"
  9334. RichTextBoxTabRegex.Text = Utilities.LoadFullText(workingProfile.regexlist) ' applicationPath & "\Settings\regex.xml"
  9335. Case "export"
  9336. frm_ExportTabSetup()
  9337. Case "movies"
  9338. If Not MoviesFiltersResizeCalled Then
  9339. MoviesFiltersResizeCalled = True
  9340. Pref.movie_filters.SetMovieFiltersVisibility
  9341. UpdateMovieFiltersPanel
  9342. End If
  9343. Case "music videos"
  9344. UcMusicVideo1.mv_FiltersAndSortApply(True)
  9345. End Select
  9346. End Sub
  9347. Sub HandleMovieList_DisplayChange(DisplayField As String)
  9348. Mc.clsGridViewMovie.GridFieldToDisplay1 = DisplayField
  9349. If rbTitleAndYear.Checked Then Pref.moviedefaultlist = 0
  9350. If rbFileName .Checked Then Pref.moviedefaultlist = 1
  9351. If rbFolder .Checked Then Pref.moviedefaultlist = 2
  9352. Mc.clsGridViewMovie.GridviewMovieDesign(Me)
  9353. If MainFormLoadedStatus Then
  9354. DisplayMovie()
  9355. End If
  9356. End Sub
  9357. Private Sub cbFilterChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbFilterGeneral.SelectedValueChanged, cbFilterSource.TextChanged,
  9358. cbFilterGenre.TextChanged, cbFilterCertificate.TextChanged,
  9359. cbFilterSet.TextChanged, cbFilterResolution.TextChanged,
  9360. cbFilterAudioCodecs.TextChanged, cbFilterAudioChannels.TextChanged,
  9361. cbFilterAudioBitrates.TextChanged, cbFilterNumAudioTracks.TextChanged,
  9362. cbFilterAudioLanguages.TextChanged, cbFilterActor.TextChanged, cbFilterTag.TextChanged,
  9363. cbFilterDirector.TextChanged, cbFilterVideoCodec.TextChanged, cbFilterSubTitleLang.TextChanged,
  9364. cbFilterAudioDefaultLanguages.TextChanged, cbFilterCountries.TextChanged,
  9365. cbFilterStudios.TextChanged, cbFilterRootFolder.TextChanged,
  9366. cbFilterUserRated.TextChanged
  9367. If TypeName(sender) = "TriStateCheckedComboBox" Then
  9368. Dim x As MC_UserControls.TriStateCheckedComboBox = sender
  9369. If x.opState <> 0 Then
  9370. Return
  9371. End If
  9372. End If
  9373. ApplyMovieFilters()
  9374. End Sub
  9375. Private Sub cbFilterRatingChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbFilterRating.SelectionChanged, cbFilterVotes.SelectionChanged,
  9376. cbFilterRuntime.SelectionChanged, cbFilterFolderSizes.SelectionChanged,
  9377. cbFilterYear.SelectionChanged
  9378. ApplyMovieFilters
  9379. End Sub
  9380. 'Private Sub cbFilterVotesChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbFilterVotes.SelectionChanged
  9381. ' ApplyMovieFilters
  9382. 'End Sub
  9383. 'Private Sub cbFilterRuntimeChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbFilterRuntime.SelectionChanged
  9384. ' ApplyMovieFilters
  9385. 'End Sub
  9386. 'Private Sub cbFilterFolderSizesChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbFilterFolderSizes.SelectionChanged
  9387. ' ApplyMovieFilters
  9388. 'End Sub
  9389. 'Private Sub cbFilterYearChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbFilterYear.SelectionChanged
  9390. ' ApplyMovieFilters
  9391. 'End Sub
  9392. Private Sub cbFilterBeginSliding(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbFilterRuntime.BeginSliding, cbFilterYear.BeginSliding, cbFilterVotes.BeginSliding, cbFilterRating.BeginSliding, cbFilterFolderSizes.BeginSliding
  9393. SplitContainer5.Panel2.ContextMenuStrip = Nothing
  9394. End Sub
  9395. Private Sub cbFilterEndSliding(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbFilterRuntime.EndSliding, cbFilterYear.EndSliding, cbFilterVotes.EndSliding, cbFilterRating.EndSliding, cbFilterFolderSizes.EndSliding
  9396. SplitContainer5.Panel2.ContextMenuStrip = cmsConfigureMovieFilters
  9397. End Sub
  9398. Private Sub ApplyMovieFilters
  9399. tsmiMov_ConvertToFrodo.Enabled = (cbFilterGeneral.Text.RemoveAfterMatch="Pre-Frodo poster only") or (cbFilterGeneral.Text.RemoveAfterMatch="Both poster formats")
  9400. If ProgState = ProgramState.Other Then
  9401. Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  9402. DisplayMovie
  9403. End If
  9404. End Sub
  9405. Sub HandleMovieFilter_SelectedValueChanged(cbFilter As ComboBox, ByRef filterValue As String, Optional replaceUnknown As Boolean = False)
  9406. If ProgState = ProgramState.Other Then
  9407. If cbFilter.Text = "All" Then
  9408. filterValue = ""
  9409. Else
  9410. filterValue = cbFilter.Text.RemoveAfterMatch
  9411. If replaceUnknown Then filterValue = filterValue.Replace("Unknown","-1")
  9412. End If
  9413. ApplyMovieFilters
  9414. End If
  9415. End Sub
  9416. Private Sub TimerToolTip_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerToolTip.Tick
  9417. TimerToolTip.Enabled = False
  9418. TooltipGridViewMovies1.Visible = Pref.ShowMovieGridToolTip
  9419. End Sub
  9420. #Region "Movie scraping stuff"
  9421. Sub RunBackgroundMovieScrape(action As String)
  9422. If Not BckWrkScnMovies.IsBusy Then
  9423. scraperLog = ""
  9424. tsStatusLabel.Text = ""
  9425. tsMultiMovieProgressBar.Value = tsMultiMovieProgressBar.Minimum
  9426. tsMultiMovieProgressBar.Visible = Get_MultiMovieProgressBar_Visiblity(action)
  9427. tsStatusLabel.Visible = True
  9428. tsLabelEscCancel.Visible = True
  9429. Statusstrip_Enable()
  9430. 'StatusStrip1.BackColor = Color.Honeydew
  9431. 'StatusStrip1.Visible = True
  9432. 'tsStatusLabel1.Visible = False
  9433. ssFileDownload.Visible = False
  9434. tsProgressBarFileDownload_Resize()
  9435. EnableDisableByTag("M", False) 'Disable all UI options that can't be run while scraper is running
  9436. ScraperErrorDetected = False
  9437. BckWrkScnMovies.RunWorkerAsync(action)
  9438. While BckWrkScnMovies.IsBusy
  9439. Application.DoEvents()
  9440. End While
  9441. If Not Pref.MusicVidScrape Then oMovies.SaveCaches
  9442. Else
  9443. MsgBox("The " & If(Pref.MusicVidScrape, "MusicVideo", "Movie") & " Scraper is Already Running")
  9444. End If
  9445. End Sub
  9446. Private cbBtnLink_Checked As Boolean
  9447. Sub EnableDisableByTag(tagQualifier As String, _state As Boolean)
  9448. If Not _state Then
  9449. StateBefore = ProgState
  9450. cbBtnLink_Checked = cbBtnLink.Checked
  9451. ProgState = ProgramState.MovieControlsDisabled
  9452. Else
  9453. cbBtnLink.Checked = cbBtnLink_Checked
  9454. ProgState = StateBefore
  9455. End If
  9456. If IsNothing(ControlsToDisableDuringMovieScrape) Then
  9457. ControlsToDisableDuringMovieScrape = (From c As Control In GetAllMatchingControls("M")).ToList
  9458. End If
  9459. For Each c In ControlsToDisableDuringMovieScrape
  9460. c.Enabled = _state
  9461. Next
  9462. 'Not picked up for some unknown reason...
  9463. MoviesToolStripMenuItem.Enabled = _state
  9464. End Sub
  9465. Function GetAllMatchingControls(tagQualifier As String) As List(Of Control)
  9466. Dim allControls As New List(Of Control)
  9467. GetAllMatchingControls(tagQualifier, Me, allControls)
  9468. Return allControls
  9469. End Function
  9470. Sub GetAllMatchingControls(tagQualifier As String, parent As Control, allControls As List(Of Control))
  9471. Dim query = From c As Control In parent.Controls
  9472. For Each c As Control In query
  9473. Try
  9474. If Not IsNothing(c) AndAlso Not IsNothing(c.Tag) AndAlso TypeName(c.Tag).ToLower = "string" AndAlso c.Tag = tagQualifier Then allControls.Add(c)
  9475. Catch ex As Exception
  9476. End Try
  9477. GetAllMatchingControls(tagQualifier, c, allControls)
  9478. Next
  9479. End Sub
  9480. #Region "MC Scraper Calls"
  9481. Function Get_MultiMovieProgressBar_Visiblity(action As String)
  9482. Select Case action
  9483. Case "BatchRescrape" : Return _rescrapeList.FullPathAndFilenames.Count>1 ' filteredList.Count > 1
  9484. Case "ChangeMovie" : Return False
  9485. Case "RescrapeAll" : Return _rescrapeList.FullPathAndFilenames.Count>1
  9486. Case "RescrapeDisplayedMovie" : Return False
  9487. Case "RescrapeSpecific" : Return _rescrapeList.FullPathAndFilenames.Count>1
  9488. Case "ScrapeDroppedFiles" : Return droppedItems.Count>1
  9489. Case "SearchForNewMovies" : Return True
  9490. Case "SearchForNewMusicVideo" : Return True
  9491. Case "RefreshMVCache" : Return True
  9492. Case "ChangeMusicVideo" : Return True
  9493. Case "RebuildCaches" : Return True
  9494. End Select
  9495. MsgBox("Unrecognised scrape action : [" + action + "]!", MsgBoxStyle.Exclamation, "Programming Error!")
  9496. Return False
  9497. End Function
  9498. Private Sub BckWrkScnMovies_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BckWrkScnMovies.DoWork
  9499. Try
  9500. CallSubByName(DirectCast(e.Argument, String))
  9501. Catch ex As Exception
  9502. ExceptionHandler.LogError(ex)
  9503. End Try
  9504. End Sub
  9505. Public Sub CallSubByName(SubName As String)
  9506. Me.GetType.GetMethod(SubName).Invoke(Me, Nothing)
  9507. End Sub
  9508. Public Sub BatchRescrape()
  9509. oMovies.BatchRescrapeSpecific(_rescrapeList.FullPathAndFilenames, rescrapeList) 'filteredList
  9510. End Sub
  9511. Public Sub ChangeMovie
  9512. oMovies.ChangeMovie(workingMovieDetails.fileinfo.fullpathandfilename, ChangeMovieId, MovieSearchEngine)
  9513. End Sub
  9514. Public Sub RescrapeAll
  9515. oMovies.RescrapeAll(_rescrapeList.FullPathAndFilenames)
  9516. End Sub
  9517. Public Sub RebuildCaches
  9518. oMovies.RebuildCaches
  9519. End Sub
  9520. Public Sub RescrapeDisplayedMovie
  9521. oMovies.RescrapeMovie(workingMovieDetails.fileinfo.fullpathandfilename, workingMovieDetails.fullmoviebody.tmdbid)
  9522. oMovies.SaveCaches
  9523. End Sub
  9524. Public Sub RescrapeSpecific
  9525. oMovies.RescrapeSpecific(_rescrapeList)
  9526. End Sub
  9527. Public Sub ScrapeDroppedFiles
  9528. oMovies.ScrapeFiles(droppedItems)
  9529. End Sub
  9530. Public Sub SearchForNewMovies
  9531. Pref.googlecount = 0
  9532. oMovies.FindNewMovies
  9533. End Sub
  9534. Public Sub SearchForNewMusicVideo
  9535. oMovies.FindNewMusicVideos()
  9536. End Sub
  9537. Public Sub RefreshMVCache
  9538. oMovies.RebuildMVCache()
  9539. End Sub
  9540. Public Sub ChangeMusicVideo
  9541. oMovies.ChangeMovie(ucMusicVideo.changeMVList(0), ucMusicVideo.changeMVList(3), ucMusicVideo.changeMVList(1))
  9542. End Sub
  9543. Private Sub BckWrkScnMovies_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BckWrkScnMovies.ProgressChanged
  9544. Dim oProgress As Progress = CType(e.UserState, Progress)
  9545. If e.ProgressPercentage <> -1 Then
  9546. tsMultiMovieProgressBar.Value = e.ProgressPercentage
  9547. End If
  9548. If oProgress.Command = Progress.Commands.Append Then
  9549. Dim msgtxt As String = tsStatusLabel.Text & oProgress.Message
  9550. If msgtxt.Length > 144 AndAlso oProgress.Message <> "-OK" Then
  9551. msgtxt = tsStatusLabel.Text.Substring(0, (tsStatusLabel.Text.ToLower.IndexOf("actors-ok")+9)) ' & oProgress.Message
  9552. msgtxt &= oProgress.Message
  9553. End If
  9554. tsStatusLabel.Text = msgtxt '&= oProgress.Message
  9555. Else
  9556. tsStatusLabel.Text = oProgress.Message
  9557. End If
  9558. If oProgress.Message = Movie.MSG_ERROR then
  9559. ScraperErrorDetected = True
  9560. End If
  9561. If Not IsNothing(oProgress.Log) Then
  9562. scraperLog += oProgress.Log
  9563. End If
  9564. End Sub
  9565. Private Sub BckWrkScnMovies_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BckWrkScnMovies.RunWorkerCompleted
  9566. If scrapeAndQuit = True Then
  9567. sandq = sandq -2
  9568. Exit Sub
  9569. End If
  9570. If Not Pref.MusicVidScrape Then
  9571. LastMovieDisplayed="" 'Force currently displayed movie details to be re-displayed
  9572. UpdateFilteredList()
  9573. End If
  9574. tsStatusLabel.Visible = False
  9575. tsMultiMovieProgressBar.Visible = False
  9576. tsLabelEscCancel.Visible = False
  9577. Statusstrip_Enable(False)
  9578. ssFileDownload.Visible = False
  9579. EnableDisableByTag("M", True) 'Re-enable disabled UI options that couldn't be run while scraper was running
  9580. Pref.MovieChangeMovie = False
  9581. GC.Collect()
  9582. Dim Displayed As Boolean = DisplayLogFile()
  9583. Pref.MusicVidScrape = False ' Reset to false only after scrapers complete
  9584. Pref.MusicVidConcertScrape = False
  9585. If Not Displayed Then BlinkTaskBar()
  9586. End Sub
  9587. #End Region
  9588. Private Sub UpdateFilteredList
  9589. oMovies.UpdateTmdbSetMissingMovies()
  9590. Dim lastSelectedRow As Integer = 0
  9591. If DataGridViewMovies.SelectedRows.Count = 1 Then
  9592. lastSelectedRow = DataGridViewMovies.SelectedRows(0).Index
  9593. End If
  9594. ProgState = ProgramState.UpdatingFilteredList
  9595. Dim lastSelectedMovie = workingMovie.fullpathandfilename
  9596. filteredList.Clear
  9597. filteredList.AddRange(oMovies.MovieCache)
  9598. Assign_FilterGeneral()
  9599. UpdateMinMaxMovieFilters
  9600. If cbFilterCountries .Visible Then cbFilterCountries .UpdateItems( oMovies.CountriesFilter )
  9601. If cbFilterStudios .Visible Then cbFilterStudios .UpdateItems (oMovies.StudiosFilter )
  9602. If cbFilterGenre .Visible Then cbFilterGenre .UpdateItems( oMovies.GenresFilter )
  9603. If cbFilterCertificate .Visible Then cbFilterCertificate .UpdateItems( oMovies.CertificatesFilter )
  9604. If cbFilterSet .Visible Then cbFilterSet .UpdateItems( oMovies.SetsFilter )
  9605. If cbFilterTag .Visible Then cbFilterTag .UpdateItems( oMovies.TagFilter )
  9606. If cbFilterResolution .Visible Then cbFilterResolution .UpdateItems( oMovies.ResolutionFilter )
  9607. If cbFilterVideoCodec .Visible Then cbFilterVideoCodec .UpdateItems( oMovies.VideoCodecFilter )
  9608. If cbFilterAudioCodecs .Visible Then cbFilterAudioCodecs .UpdateItems( oMovies.AudioCodecsFilter )
  9609. If cbFilterAudioChannels .Visible Then cbFilterAudioChannels .UpdateItems( oMovies.AudioChannelsFilter )
  9610. If cbFilterAudioBitrates .Visible Then cbFilterAudioBitrates .UpdateItems( oMovies.AudioBitratesFilter )
  9611. If cbFilterNumAudioTracks .Visible Then cbFilterNumAudioTracks .UpdateItems( oMovies.NumAudioTracksFilter )
  9612. If cbFilterAudioLanguages .Visible Then cbFilterAudioLanguages .UpdateItems( oMovies.AudioLanguagesFilter )
  9613. If cbFilterAudioDefaultLanguages.Visible Then cbFilterAudioDefaultLanguages .UpdateItems( oMovies.AudioDefaultLanguagesFilter )
  9614. If cbFilterActor .Visible Then cbFilterActor .UpdateItems( oMovies.ActorsFilter )
  9615. If cbFilterDirector .Visible Then cbFilterDirector .UpdateItems( oMovies.DirectorsFilter )
  9616. If cbFilterTag .Visible Then cbFilterTag .UpdateItems( oMovies.TagsFilter )
  9617. If cbFilterSubTitleLang .Visible Then cbFilterSubTitleLang .UpdateItems( oMovies.SubTitleLangFilter )
  9618. If cbFilterRootFolder .Visible Then cbFilterRootFolder .UpdateItems( oMovies.RootFolderFilter )
  9619. If cbFilterUserRated .Visible Then cbFilterUserRated .UpdateItems( oMovies.UsrRated )
  9620. Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  9621. Try
  9622. If DataGridViewMovies.SelectedRows.Count = 0 Then
  9623. For Each row As DataGridViewRow In DataGridViewMovies.Rows
  9624. row.Selected = (row.Cells("fullpathandfilename").Value.ToString = lastSelectedMovie)
  9625. Next
  9626. ElseIf DataGridViewMovies.SelectedRows.Count = 1 Then
  9627. DataGridViewMovies.ClearSelection()
  9628. DataGridViewMovies.Rows(lastSelectedRow).Selected = True
  9629. End If
  9630. Catch
  9631. End Try
  9632. If DataGridViewMovies.SelectedRows.Count=0 And DataGridViewMovies.Rows.Count>0 Then
  9633. DataGridViewMovies.Rows(0).Selected=True
  9634. End If
  9635. DisplayMovie()
  9636. ProgState = ProgramState.Other
  9637. End Sub
  9638. Private Function TriStateFilter_OnFormatItem(ByVal item As String) As String Handles cbFilterGenre.OnFormatItem, cbFilterCertificate.OnFormatItem,
  9639. cbFilterSet.OnFormatItem, cbFilterResolution.OnFormatItem,
  9640. cbFilterAudioCodecs.OnFormatItem, cbFilterAudioChannels.OnFormatItem,
  9641. cbFilterAudioBitrates.OnFormatItem, cbFilterNumAudioTracks.OnFormatItem,
  9642. cbFilterAudioLanguages.OnFormatItem, cbFilterActor.OnFormatItem,
  9643. cbFilterSource.OnFormatItem, cbFilterTag.OnFormatItem, cbFilterTag.OnFormatItem,
  9644. cbFilterDirector.OnFormatItem, cbFilterVideoCodec.OnFormatItem, cbFilterSubTitleLang.OnFormatItem,
  9645. cbFilterAudioDefaultLanguages.OnFormatItem, cbFilterCountries.OnFormatItem,
  9646. cbFilterStudios.OnFormatItem, cbFilterRootFolder.OnFormatItem, cbFilterUserRated.OnFormatItem
  9647. Return item.RemoveAfterMatch
  9648. End Function
  9649. Sub Assign_FilterGeneral
  9650. If cbFilterGeneral.Visible Then
  9651. Dim selected = cbFilterGeneral.Text
  9652. cbFilterGeneral.Items.Clear
  9653. cbFilterGeneral.Items.AddRange( oMovies.GeneralFilters.ToArray )
  9654. If cbFilterGeneral.Text = "" Then cbFilterGeneral.Text = "All"
  9655. If selected<>"" Then
  9656. For Each item As String In cbFilterGeneral.Items
  9657. If item.RemoveAfterMatch=selected.RemoveAfterMatch Then
  9658. cbFilterGeneral.SelectedItem=item
  9659. Exit For
  9660. End If
  9661. Next
  9662. End If
  9663. End If
  9664. End Sub
  9665. 'Private Sub XBMC_ProgressChanged(ByVal e As System.ComponentModel.ProgressChangedEventArgs)
  9666. ' If Not scrapeAndQuit Then
  9667. ' If e.ProgressPercentage <> 999999 Then
  9668. ' ToolStripStatusLabel1.Text = e.UserState
  9669. ' Else
  9670. ' Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  9671. ' End If
  9672. ' End If
  9673. 'End Sub
  9674. Sub FileDownload_SizeObtained(ByVal iFileSize As Long) Handles oMovies.FileDownloadSizeObtained
  9675. Callback_ShowHideFileDownloadProgressBar(True, iFileSize)
  9676. End Sub
  9677. Private Sub FileDownload_AmountDownloadedChanged(ByVal iTotalBytesRead As Long) Handles oMovies.AmountDownloadedChanged
  9678. Me.Invoke(CType(Sub() Safe_FileDownload_AmountDownloadedChanged(iTotalBytesRead), MethodInvoker))
  9679. End Sub
  9680. Private Sub FileDownload_FileDownloadComplete() Handles oMovies.FileDownloadComplete
  9681. Callback_ShowHideFileDownloadProgressBar(False, -1)
  9682. End Sub
  9683. Private Sub FileDownload_FileDownloadFailed() Handles oMovies.FileDownloadFailed
  9684. Callback_ShowHideFileDownloadProgressBar(False, -1)
  9685. End Sub
  9686. 'Initiate callback from main UI thread
  9687. Sub Callback_ShowHideFileDownloadProgressBar(ByVal bool As Boolean, iFileSize As Long)
  9688. Me.Invoke(CType(Sub() ShowHideFileDownloadProgressBar(bool, iFileSize), MethodInvoker))
  9689. End Sub
  9690. Sub ShowHideFileDownloadProgressBar(ByVal bool As Boolean, iFileSize As Long)
  9691. ssFileDownload.Visible = bool
  9692. If bool Then tsProgressBarFileDownload.Maximum = iFileSize
  9693. End Sub
  9694. Sub Safe_FileDownload_AmountDownloadedChanged(ByVal iTotalBytesRead As Long)
  9695. tsProgressBarFileDownload.Value = iTotalBytesRead
  9696. End Sub
  9697. Private Sub tsLabelEscCancel_Click(sender As System.Object, e As System.EventArgs)
  9698. BckWrkScnMovies_Cancel()
  9699. End Sub
  9700. Sub bckgrndcancel
  9701. If ImgBw.IsBusy Then ImgBw.CancelAsync()
  9702. Dim CurrentTab As String = TabLevel1.SelectedTab.Name
  9703. If CurrentTab = TabPage1.Name Then BckWrkScnMovies_Cancel
  9704. If CurrentTab = TabPage2.Name Then bckgroundscanepisodes.CancelAsync()
  9705. End Sub
  9706. Sub BckWrkScnMovies_Cancel
  9707. If BckWrkScnMovies.IsBusy Then
  9708. tsStatusLabel.Text = "* Cancelling... *"
  9709. BckWrkScnMovies.CancelAsync()
  9710. End If
  9711. If ImgBw.IsBusy Then
  9712. tsStatusLabel.Text = "* Cancelling... *"
  9713. ImgBw.CancelAsync()
  9714. End If
  9715. End Sub
  9716. Sub AbortFileDownload
  9717. tsStatusLabel.Text = "* Aborting trailer download... *"
  9718. Monitor.Enter(countLock)
  9719. blnAbortFileDownload = True
  9720. Monitor.Exit(countLock)
  9721. End Sub
  9722. Sub doResizeRefresh
  9723. Try
  9724. Dim CurrentTab As String = TabLevel1.SelectedTab.Name
  9725. If CurrentTab = TabPage1.Name Then 'Movies
  9726. mov_DisplayFanart()
  9727. util_ImageLoad(PbMovieFanArt, workingMovieDetails.fileinfo.fanartpath, Utilities.DefaultFanartPath)
  9728. Dim video_flags = VidMediaFlags(workingMovieDetails.filedetails, workingMovieDetails.fullmoviebody.title.ToLower.Contains("3d"))
  9729. movieGraphicInfo.OverlayInfo(PbMovieFanArt, ratingtxt.Text, video_flags, workingMovie.DisplayFolderSize)
  9730. ElseIf CurrentTab = TabPage2.Name Then 'TV Shows
  9731. TvTreeview_AfterSelect_Do()
  9732. End If
  9733. Dim MovMaxWallCount2 As Integer = Math.Floor((tpMovWall.Width - 50) / 150) 'Convert.ToInt32((TabPage22.Width - 100) / 150)
  9734. Dim tvMaxWallCount2 As Integer = Math.Floor((tpTvWall.Width - 50) / 150)
  9735. If MovMaxWallCount2 <> MovMaxWallCount Then
  9736. MovMaxWallCount = MovMaxWallCount2
  9737. Call mov_WallReset()
  9738. End If
  9739. If tvMaxWallCount2 <> tvMaxWallCount Then
  9740. tvMaxWallCount = tvMaxWallCount2
  9741. Call tv_WallReset()
  9742. End If
  9743. Catch
  9744. End Try
  9745. End Sub
  9746. Sub doRefresh
  9747. Dim CurrentTab As String = TabLevel1.SelectedTab.Name
  9748. If CurrentTab = TabPage1.Name Then 'Movies
  9749. Dim SubTab As String = TabControl2.SelectedTab.Name
  9750. If SubTab = tpMovMain.Name Then mov_RebuildMovieCaches()
  9751. If SubTab = tpMovFanart.name Then
  9752. MovFanartClear()
  9753. MovFanartDisplay()
  9754. End If
  9755. End If
  9756. If CurrentTab = TabPage2.Name Then 'TV Shows
  9757. Dim SubTab As String = TabControl3.SelectedTab.Name
  9758. If SubTab = tpTvMainBrowser.Name Then tv_CacheRefresh()
  9759. If SubTab = tpTvFanart.Name Then tv_Fanart_Load()
  9760. End If
  9761. If CurrentTab = TabMV.Name Then ucMusicVideo1.btnRefresh.PerformClick()
  9762. End Sub
  9763. Sub doSearchNew
  9764. Dim CurrentTab As String = TabLevel1.SelectedTab.Name
  9765. If CurrentTab = TabPage1.name AndAlso TabControl2.SelectedTab.Name = tpMovMain.Name Then SearchForNew()
  9766. If CurrentTab = TabPage2.Name AndAlso TabControl3.SelectedTab.Name = tpTvMainBrowser.Name Then ep_Search()
  9767. If CurrentTab = TabMV.Name Then ucMusicVideo1.btnSearchNew.PerformClick()
  9768. End Sub
  9769. Private Sub ssFileDownload_Resize(sender As System.Object, e As System.EventArgs) Handles ssFileDownload.Resize
  9770. tsProgressBarFileDownload_Resize()
  9771. End Sub
  9772. Private Sub tsProgressBarFileDownload_Resize()
  9773. tsProgressBarFileDownload.Width = ssFileDownload.Width - tsFileDownloadlabel.Width - 8
  9774. End Sub
  9775. #End Region 'Movie scraping stuff
  9776. Sub SearchForNew
  9777. RunBackgroundMovieScrape("SearchForNewMovies")
  9778. End Sub
  9779. Sub Do_ScrapeAndQuit
  9780. If refreshAndQuit Then
  9781. mov_RebuildMovieCaches()
  9782. tv_CacheRefresh()
  9783. While BckWrkScnMovies.IsBusy
  9784. Thread.Sleep(100)
  9785. Application.DoEvents
  9786. End While
  9787. End If
  9788. Do While sandq <> 0
  9789. If sandq >= 2 Then
  9790. SearchForNew
  9791. Do Until sandq < 2
  9792. Thread.Sleep(100)
  9793. Application.DoEvents()
  9794. Loop
  9795. End If
  9796. If sandq = 1 Then
  9797. ep_Search()
  9798. Do Until sandq < 1
  9799. Thread.Sleep(100)
  9800. Application.DoEvents()
  9801. Loop
  9802. End If
  9803. Loop
  9804. End Sub
  9805. Sub DoScrapeDroppedFiles()
  9806. RunBackgroundMovieScrape("ScrapeDroppedFiles")
  9807. End Sub
  9808. Private Function DisplayLogFile()
  9809. Dim Displayed As Boolean = False
  9810. If ScraperErrorDetected And Pref.ShowLogOnError Then
  9811. scraperLog = "******************************************************************************" & vbCrLf &
  9812. "* One or more errors were detected during scraping. See below for details. *" & vbCrLf &
  9813. "* To disable seeing this, turn off General Preferences -'Show log on error'. *" & vbCrLf &
  9814. "******************************************************************************" & vbCrLf & vbCrLf & scraperLog
  9815. End If
  9816. If (Not Pref.disablelogfiles Or (Pref.MusicVidScrape AndAlso Pref.MVPrefShowLog) Or (ScraperErrorDetected And Pref.ShowLogOnError)) And scraperLog <> "" Then
  9817. Displayed = True
  9818. Dim MyFormObject As New frmoutputlog(scraperLog, True)
  9819. Try
  9820. MyFormObject.ShowDialog()
  9821. Catch ex As Exception
  9822. End Try
  9823. End If
  9824. ScraperErrorDetected=False
  9825. Return Displayed
  9826. End Function
  9827. Sub pop_cbMovieDisplay_MovieSet
  9828. Dim previouslySelected = cbMovieDisplay_MovieSet.SelectedItem
  9829. cbMovieDisplay_MovieSet.Sorted = True
  9830. cbMovieDisplay_MovieSet.Items.Clear
  9831. For each item In Pref.moviesets
  9832. cbMovieDisplay_MovieSet.Items.Add(If(Pref.MovSetTitleIgnArticle, Pref.RemoveIgnoredArticles(item), item))
  9833. Next
  9834. cbMovieDisplay_MovieSet.Sorted = False
  9835. If cbMovieDisplay_MovieSet.Items.Count = 0 Then cbMovieDisplay_MovieSet.Items.Add("-None-")
  9836. If cbMovieDisplay_MovieSet.Items(0) <> "-None-" Then cbMovieDisplay_MovieSet.Items.Insert(0, "-None-")
  9837. cbMovieDisplay_MovieSet.SelectedIndex = 0
  9838. If IsNothing(workingMovieDetails) Then Exit Sub
  9839. If previouslySelected=Nothing Then
  9840. If workingMovieDetails.fullmoviebody.MovieSet.MovieSetName <> Nothing Then
  9841. If workingMovieDetails.fullmoviebody.MovieSet.MovieSetName.IndexOf(" / ") = -1 Then
  9842. cbMovieDisplay_MovieSet.SelectedItem = workingMovieDetails.fullmoviebody.MovieSet.MovieSetDisplayName
  9843. End If
  9844. End If
  9845. Else
  9846. cbMovieDisplay_MovieSet.SelectedItem = previouslySelected
  9847. End If
  9848. End Sub
  9849. Private Sub tsmiMov_PlayMovie_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiMov_PlayMovie.Click
  9850. Try
  9851. mov_Play("Movie")
  9852. Catch ex As Exception
  9853. ExceptionHandler.LogError(ex)
  9854. End Try
  9855. End Sub
  9856. Private Sub tsmiMov_PlayTrailer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiMov_PlayTrailer.Click
  9857. Try
  9858. mov_Play("Trailer")
  9859. Catch ex As Exception
  9860. ExceptionHandler.LogError(ex)
  9861. End Try
  9862. End Sub
  9863. Private Sub tsmiMov_OpenFolder_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiMov_OpenFolder.Click
  9864. Try
  9865. If Not workingMovieDetails.fileinfo.fullpathandfilename Is Nothing Then
  9866. Call util_OpenFolder(workingMovieDetails.fileinfo.fullpathandfilename)
  9867. Else
  9868. MsgBox("There is no Movie selected to open")
  9869. End If
  9870. Catch ex As Exception
  9871. ExceptionHandler.LogError(ex)
  9872. End Try
  9873. End Sub
  9874. Private Sub tsmiMov_ViewNfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiMov_ViewNfo.Click
  9875. Try
  9876. Utilities.NfoNotepadDisplay(workingMovieDetails.fileinfo.fullpathandfilename, Pref.altnfoeditor)
  9877. Catch ex As Exception
  9878. ExceptionHandler.LogError(ex)
  9879. End Try
  9880. End Sub
  9881. Private Sub tsmiMov_DeleteNfoArtwork_Click( sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles tsmiMov_DeleteNfoArtwork.MouseDown
  9882. Dim DelArt As Boolean = (e.Button <> MouseButtons.Right)
  9883. MovieContextMenu.Close()
  9884. Mov_DeleteNfoArtwork(DelArt)
  9885. End Sub
  9886. Private Sub tsmiMov_ReloadFromCache_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiMov_ReloadFromCache.Click
  9887. Try
  9888. Call mov_FormPopulate()
  9889. Catch ex As Exception
  9890. ExceptionHandler.LogError(ex)
  9891. End Try
  9892. End Sub
  9893. Private Sub tsmiMov_RemoveMovie_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiMov_RemoveMovie.Click
  9894. Mov_RemoveMovie ()
  9895. End Sub
  9896. Private Sub tsmiMov_RescrapeAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiMov_RescrapeAll.Click
  9897. mov_RescrapeAllSelected()
  9898. End Sub
  9899. Private Sub tsmiMov_FanartBrowserAlt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiMov_FanartBrowserAlt.Click
  9900. Try
  9901. Dim t As New frmMovieAltFanart
  9902. If Pref.MultiMonitoEnabled Then
  9903. Dim w As Integer = t.Width
  9904. Dim h As Integer = t.Height
  9905. t.Bounds = screen.AllScreens(CurrentScreen).Bounds
  9906. t.StartPosition = FormStartPosition.Manual
  9907. t.Width = w
  9908. t.Height = h
  9909. End If
  9910. t.ShowDialog()
  9911. Try
  9912. If IO.File.Exists(workingMovieDetails.fileinfo.fanartpath) Then
  9913. util_ImageLoad(PbMovieFanArt, workingMovieDetails.fileinfo.fanartpath, Utilities.DefaultFanartPath)
  9914. Else
  9915. PbMovieFanArt.Image = Nothing
  9916. End If
  9917. Catch ex As Exception
  9918. #If SilentErrorScream Then
  9919. Throw ex
  9920. #End If
  9921. End Try
  9922. Catch ex As Exception
  9923. ExceptionHandler.LogError(ex)
  9924. End Try
  9925. End Sub
  9926. Private Sub tsmiMov_PosterBrowserAlt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiMov_PosterBrowserAlt.Click
  9927. Try
  9928. Dim t As New frmMovieAltPosterArt
  9929. If Pref.MultiMonitoEnabled Then
  9930. Dim w As Integer = t.Width
  9931. Dim h As Integer = t.Height
  9932. t.Bounds = screen.AllScreens(CurrentScreen).Bounds
  9933. t.StartPosition = FormStartPosition.Manual
  9934. t.Width = w
  9935. t.Height = h
  9936. End If
  9937. t.ShowDialog()
  9938. Catch ex As Exception
  9939. ExceptionHandler.LogError(ex)
  9940. End Try
  9941. End Sub
  9942. Private Sub tsmiMov_EditMovieAlt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiMov_EditMovieAlt.Click
  9943. Try
  9944. Call mov_Edit()
  9945. Catch ex As Exception
  9946. ExceptionHandler.LogError(ex)
  9947. End Try
  9948. End Sub
  9949. #Region "ToolStripmenu Movie Rescrape Specific"
  9950. Private Sub tsmiRescrapeTrailer_Click(sender As Object, e As EventArgs) Handles tsmiRescrapeTrailer.Click
  9951. Call mov_ScrapeSpecific("trailer")
  9952. End Sub 'trailer
  9953. Private Sub tsmiRescrapeRenameFiles_Click(sender As Object, e As EventArgs) Handles tsmiRescrapeRenameFiles.Click
  9954. mov_ScrapeSpecific("rename_files")
  9955. End Sub 'rename files
  9956. Private Sub tsmiRescrapeTitle_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiRescrapeTitle.Click
  9957. Call mov_ScrapeSpecific("title")
  9958. End Sub 'title
  9959. Private Sub tsmiRescrapeplotClick(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiRescrapeplot.Click
  9960. Call mov_ScrapeSpecific("plot")
  9961. End Sub 'plot
  9962. Private Sub tsmiRescrapeTagline_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiRescrapeTagline.Click
  9963. Call mov_ScrapeSpecific("tagline")
  9964. End Sub 'tagline
  9965. Private Sub tsmiRescrapeDirector_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiRescrapeDirector.Click
  9966. Call mov_ScrapeSpecific("director")
  9967. End Sub 'director
  9968. Private Sub tsmiRescrapeCredits_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiRescrapeCredits.Click
  9969. Call mov_ScrapeSpecific("credits")
  9970. End Sub 'Credits
  9971. Private Sub tsmiRescrapeCert_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiRescrapeCert.Click
  9972. Call mov_ScrapeSpecific("mpaa")
  9973. End Sub 'mpaa
  9974. Private Sub tsmiRescrapeGenre_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiRescrapeGenre.Click
  9975. Call mov_ScrapeSpecific("genre")
  9976. End Sub 'genre
  9977. Private Sub tsmiRescrapeOutline_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiRescrapeOutline.Click
  9978. Call mov_ScrapeSpecific("outline")
  9979. End Sub 'outline
  9980. Private Sub tsmiRescrapeRuntimeImdb_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiRescrapeRuntimeImdb.Click
  9981. Call mov_ScrapeSpecific("runtime")
  9982. End Sub 'runtime
  9983. Private Sub tsmiRescrapeRuntimeFile_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiRescrapeRuntimeFile.Click
  9984. Call mov_ScrapeSpecific("runtime_file")
  9985. End Sub 'runtime file
  9986. Private Sub tsmiRescrapeStudio_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiRescrapeStudio.Click
  9987. Call mov_ScrapeSpecific("studio")
  9988. End Sub 'studio
  9989. Private Sub tsmiRescrapeActors_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiRescrapeActors.Click
  9990. Call mov_ScrapeSpecific("actors")
  9991. End Sub 'actors
  9992. Private Sub tsmiRescrapeFanart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiRescrapeFanart.Click
  9993. Call mov_ScrapeSpecific("missingfanart")
  9994. End Sub 'missingfanart
  9995. Private Sub tsmiRescrapePoster_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiRescrapePoster.Click
  9996. Call mov_ScrapeSpecific("missingposters")
  9997. End Sub 'missingposters
  9998. Private Sub tsmiRescrapeMediaTags_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiRescrapeMediaTags.Click
  9999. Call mov_ScrapeSpecific("mediatags")
  10000. End Sub 'mediatags
  10001. Private Sub tsmiRescrapeRating_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiRescrapeRating.Click
  10002. Call mov_ScrapeSpecific("rating")
  10003. End Sub 'rating
  10004. Private Sub tsmiRescrapeVotes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiRescrapeVotes.Click
  10005. Call mov_ScrapeSpecific("votes")
  10006. End Sub 'votes
  10007. Private Sub tsmiRescrapeStars_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiRescrapeStars.Click
  10008. Call mov_ScrapeSpecific("stars")
  10009. End Sub 'stars
  10010. Private Sub tsmiRescrapeYear_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiRescrapeYear.Click
  10011. Call mov_ScrapeSpecific("year")
  10012. End Sub 'year
  10013. Private Sub tsmiRescrapeKeyWords_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiRescrapeKeyWords.Click
  10014. Call mov_ScrapeSpecific("TagsFromKeywords")
  10015. End Sub 'TagsFromKeywords
  10016. Private Sub tsmiRescrapeTMDbSetName_Click( sender As Object, e As EventArgs) Handles tsmiRescrapeTMDbSetName.Click
  10017. Call mov_ScrapeSpecific("tmdb_set_name")
  10018. End Sub 'Tmdb set info
  10019. Private Sub tsmiMov_SetWatched_Click( sender As Object, e As EventArgs) Handles tsmiMov_SetWatched.Click
  10020. Call mov_ScrapeSpecific("SetWatched")
  10021. End Sub 'set watched
  10022. Private Sub tsmiMov_ClearWatched_Click( sender As Object, e As EventArgs) Handles tsmiMov_ClearWatched.Click
  10023. Call mov_ScrapeSpecific("ClearWatched")
  10024. End Sub 'clear watched
  10025. Private Sub tsmiDlTrailer_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiDlTrailer.Click
  10026. Call mov_ScrapeSpecific("Download_Trailer")
  10027. End Sub 'Download Trailer
  10028. Private Sub tsmiRescrapeCountry_Click( sender As Object, e As EventArgs) Handles tsmiRescrapeCountry.Click
  10029. mov_ScrapeSpecific("country")
  10030. End Sub 'country
  10031. Private Sub tsmiRescrapeTop250_Click( sender As Object, e As EventArgs) Handles tsmiRescrapeTop250.Click
  10032. mov_ScrapeSpecific("top250")
  10033. End Sub 'top250
  10034. Private Sub tsmiRescrapeMetascore_Click(sender As Object, e As EventArgs) Handles tsmiRescrapeMetascore.Click
  10035. mov_ScrapeSpecific("metascore")
  10036. End Sub 'metascore
  10037. Private Sub tsmiRescrapePremiered_Click( sender As Object, e As EventArgs) Handles tsmiRescrapePremiered.Click
  10038. mov_ScrapeSpecific("Premiered")
  10039. End Sub 'premiered
  10040. Private Sub tsmiRescrapePosterUrls_Click( sender As Object, e As EventArgs) Handles tsmiRescrapePosterUrls.Click
  10041. mov_ScrapeSpecific("PosterUrls")
  10042. End Sub 'poster urls
  10043. Private Sub tsmiRescrapeFrodo_Poster_Thumbs_Click( sender As Object, e As EventArgs) Handles tsmiRescrapeFrodo_Poster_Thumbs.Click
  10044. mov_ScrapeSpecific("Frodo_Poster_Thumbs")
  10045. End Sub 'Frodo poster thumbs
  10046. Private Sub tsmiRescrapeFrodo_Fanart_Thumbs_Click( sender As Object, e As EventArgs) Handles tsmiRescrapeFrodo_Fanart_Thumbs.Click
  10047. mov_ScrapeSpecific("Frodo_Fanart_Thumbs")
  10048. End Sub 'Frodo fanart thumbs
  10049. Private Sub tsmiRescrapeFanartTv_Click( sender As Object, e As EventArgs) Handles tsmiRescrapeFanartTv.Click
  10050. mov_ScrapeSpecific("ArtFromFanartTv")
  10051. End Sub 'Frodo fanart thumbs
  10052. Private Sub tsmiRescrapeMovieSetArt_Click( sender As Object, e As EventArgs) Handles tsmiRescrapeMovieSetArt.Click
  10053. mov_ScrapeSpecific("missingmovsetart")
  10054. End Sub 'MovieSet Artwork
  10055. #End Region 'ToolStripmenu Movie Rescrape Specific
  10056. Private Sub mov_PreferencesDisplay()
  10057. AuthorizeCheck = True
  10058. clbx_MovieRoots.Items.Clear()
  10059. For Each item In movieFolders
  10060. clbx_MovieRoots.Items.Add(item.rpath, item.selected)
  10061. Next
  10062. AuthorizeCheck = False
  10063. lbx_MovOfflineFolders.Items.Clear()
  10064. For Each item In Pref.offlinefolders
  10065. lbx_MovOfflineFolders.Items.Add(item)
  10066. Next
  10067. moviefolderschanged = False
  10068. End Sub
  10069. Private Sub tv_FoldersSetup()
  10070. clbx_TvRootFolders.Items.Clear()
  10071. ListBox6.Items.Clear()
  10072. AuthorizeCheck = True
  10073. For Each folder In tvRootFolders
  10074. clbx_TvRootFolders.Items.Add(folder.rpath, folder.selected)
  10075. Next
  10076. AuthorizeCheck = False
  10077. For Each folder In tvFolders
  10078. ListBox6.Items.Add(folder)
  10079. Next
  10080. End Sub
  10081. #Region "Movie Browser Tab"
  10082. Private Sub btnMovSearchNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovSearchNew.Click
  10083. SearchForNew()
  10084. End Sub
  10085. Private Sub btnMovRefreshAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovRefreshAll.Click
  10086. mov_RebuildMovieCaches()
  10087. End Sub
  10088. Private Sub ToolStripMenuItemRebuildMovieCaches_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItemRebuildMovieCaches.Click
  10089. mov_RebuildMovieCaches()
  10090. End Sub
  10091. Private Sub cbBtnLink_Click(sender As Object, e As EventArgs) Handles cbBtnLink.Click
  10092. SetcbBtnLink()
  10093. LabelCountFilter.Focus()
  10094. End Sub
  10095. Private Sub rbFileName_CheckedChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbFileName.CheckedChanged
  10096. HandleMovieList_DisplayChange("FileName")
  10097. If Not cbSort.Text = "A - Z" Then
  10098. cbSort.Text = "A - Z"
  10099. Else
  10100. cbsort_SelectedIndexChanged(cbsort, EventArgs.Empty)
  10101. End If
  10102. End Sub
  10103. Private Sub rbTitleAndYear_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbTitleAndYear.CheckedChanged
  10104. HandleMovieList_DisplayChange("TitleAndYear")
  10105. cbsort_SelectedIndexChanged(cbsort, EventArgs.Empty)
  10106. End Sub
  10107. Private Sub rbFolder_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbFolder.CheckedChanged
  10108. HandleMovieList_DisplayChange("Folder")
  10109. If Not cbSort.Text = "A - Z" Then
  10110. cbSort.Text = "A - Z"
  10111. Else
  10112. cbsort_SelectedIndexChanged(cbsort, EventArgs.Empty)
  10113. End If
  10114. End Sub
  10115. Private Sub cbSort_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cbSort.SelectedIndexChanged
  10116. Mc.clsGridViewMovie.GridFieldToDisplay2 = cbSort.Text
  10117. Call Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  10118. DisplayMovie()
  10119. If Not MainFormLoadedStatus Then Exit Sub
  10120. Pref.moviesortorder = cbSort.SelectedIndex
  10121. End Sub
  10122. Private Sub btnreverse_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnreverse.CheckedChanged
  10123. If btnreverse.Checked Then
  10124. Mc.clsGridViewMovie.GridSort = "Desc"
  10125. Else
  10126. Mc.clsGridViewMovie.GridSort = "Asc"
  10127. End If
  10128. Pref.movieinvertorder = btnreverse.Checked
  10129. Call Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  10130. DisplayMovie()
  10131. End Sub
  10132. Private Sub btnResetFilters_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnResetFilters.Click
  10133. resetallfilters()
  10134. End Sub
  10135. Private Sub txt_titlesearch_KeyDown(ByVal sender As Object, ByVal e As Object) Handles txt_titlesearch.KeyDown, txt_titlesearch.ModifiedChanged
  10136. Try
  10137. If filterOverride = False Then
  10138. _yield = True
  10139. Application.DoEvents()
  10140. _yield = False
  10141. If txt_titlesearch.Text.Length > 0 Then
  10142. txt_titlesearch.BackColor = Color.DarkOrange
  10143. Else
  10144. txt_titlesearch.BackColor = Color.White
  10145. End If
  10146. txt_titlesearch.Refresh()
  10147. Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  10148. If _yield Then Return
  10149. DisplayMovie(True)
  10150. Cursor.Current = Cursors.Default
  10151. End If
  10152. Catch ex As Exception
  10153. ExceptionHandler.LogError(ex)
  10154. End Try
  10155. End Sub
  10156. Private Sub btnMovSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovSave.Click
  10157. Try
  10158. Call mov_SaveQuick()
  10159. Catch ex As Exception
  10160. ExceptionHandler.LogError(ex)
  10161. End Try
  10162. End Sub
  10163. Private Sub btnMovRescrape_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovRescrape.Click
  10164. mov_Rescrape()
  10165. End Sub
  10166. Private Sub btnMovieDisplay_ActorFilter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovieDisplay_ActorFilter.Click
  10167. Try
  10168. ProgState = ProgramState.ResettingFilters
  10169. oMovies.ActorsFilter_AddIfMissing(cbMovieDisplay_Actor.Text)
  10170. ShowMovieFilter(cbFilterActor)
  10171. cbFilterActor.UpdateItems(oMovies.ActorsFilter)
  10172. cbFilterActor.SelectItem(cbMovieDisplay_Actor.Text)
  10173. ProgState = ProgramState.Other
  10174. Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  10175. Catch ex As Exception
  10176. ExceptionHandler.LogError(ex)
  10177. End Try
  10178. End Sub
  10179. Private Sub btnMovieDisplay_DirectorFilter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovieDisplay_DirectorFilter.Click
  10180. Try
  10181. ProgState = ProgramState.ResettingFilters
  10182. oMovies.DirectorsFilter_AddIfMissing(directortxt.Text)
  10183. ShowMovieFilter(cbFilterDirector)
  10184. cbFilterDirector.UpdateItems(oMovies.DirectorsFilter)
  10185. cbFilterDirector.SelectItem(directortxt.Text)
  10186. ProgState = ProgramState.Other
  10187. Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  10188. Catch ex As Exception
  10189. ExceptionHandler.LogError(ex)
  10190. End Try
  10191. End Sub
  10192. Private Sub btnMovieDisplay_CountriesFilter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovieDisplay_CountriesFilter.Click
  10193. Try
  10194. ProgState = ProgramState.ResettingFilters
  10195. ShowMovieFilter(cbFilterCountries)
  10196. cbFilterCountries.SelectItem(countrytxt.Text.Split(", ")(0))
  10197. ProgState = ProgramState.Other
  10198. Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  10199. Catch ex As Exception
  10200. ExceptionHandler.LogError(ex)
  10201. End Try
  10202. End Sub
  10203. Private Sub titletxt_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles titletxt.Enter
  10204. Try
  10205. Try
  10206. If titletxt.Text.IndexOf(workingMovieDetails.fullmoviebody.year) <> -1 Then
  10207. Dim tempstring2 As String = " (" & workingMovieDetails.fullmoviebody.year & ")"
  10208. Dim tempstring As String = titletxt.Text.Replace(tempstring2, "")
  10209. tempstring = tempstring.TrimEnd(" ")
  10210. currenttitle = tempstring
  10211. titletxt.Items.Clear()
  10212. For Each item In workingMovieDetails.alternativetitles
  10213. If item <> tempstring Then titletxt.Items.Add(item)
  10214. Next
  10215. titletxt.SelectedIndex = -1
  10216. titletxt.Text = tempstring
  10217. End If
  10218. Catch ex As Exception
  10219. #If SilentErrorScream Then
  10220. Throw ex
  10221. #End If
  10222. End Try
  10223. Catch ex As Exception
  10224. ExceptionHandler.LogError(ex)
  10225. End Try
  10226. End Sub
  10227. Private Sub titletxt_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles titletxt.Leave
  10228. Try
  10229. Try
  10230. If titletxt.Text.IndexOf(workingMovieDetails.fullmoviebody.year) = -1 Then
  10231. Dim tempstring As String = titletxt.Text
  10232. titletxt.Items.Clear()
  10233. For Each item In workingMovieDetails.alternativetitles
  10234. If item <> currenttitle Then titletxt.Items.Add(item)
  10235. Next
  10236. titletxt.Text = tempstring & " (" & workingMovieDetails.fullmoviebody.year & ")"
  10237. End If
  10238. Catch ex As Exception
  10239. #If SilentErrorScream Then
  10240. Throw ex
  10241. #End If
  10242. End Try
  10243. Catch ex As Exception
  10244. ExceptionHandler.LogError(ex)
  10245. End Try
  10246. End Sub
  10247. Private Sub titletxt_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles titletxt.SelectedIndexChanged
  10248. Try
  10249. Try
  10250. If titletxt.Text.IndexOf(workingMovieDetails.fullmoviebody.year) = -1 Then
  10251. Dim tempstring As String = titletxt.Text
  10252. titletxt.Items.Clear()
  10253. titletxt.Items.Add(tempstring & " (" & workingMovieDetails.fullmoviebody.year & ")")
  10254. For Each item In workingMovieDetails.alternativetitles
  10255. If item <> tempstring Then titletxt.Items.Add(item)
  10256. Next
  10257. titletxt.SelectedIndex = 0
  10258. End If
  10259. Catch ex As Exception
  10260. #If SilentErrorScream Then
  10261. Throw ex
  10262. #End If
  10263. End Try
  10264. Catch ex As Exception
  10265. ExceptionHandler.LogError(ex)
  10266. End Try
  10267. End Sub
  10268. Private Sub PbMovieFanArt_Click(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PbMovieFanArt.MouseUp, PbMovieFanArt.Click
  10269. Try
  10270. If e.Button = Windows.Forms.MouseButtons.Right Then
  10271. RescrapePToolStripMenuItem.Visible = False
  10272. RescrapePosterFromTMDBToolStripMenuItem.Visible = False
  10273. RescraToolStripMenuItem.Visible = False
  10274. PeToolStripMenuItem.Visible = False
  10275. DownloadPosterToolStripMenuItem.Visible = False
  10276. DownloadPosterFromTMDBToolStripMenuItem.Visible = False
  10277. DownloadPosterFromMPDBToolStripMenuItem.Visible = False
  10278. DownloadPosterFromIMDBToolStripMenuItem.Visible = False
  10279. RescrapeFanartToolStripMenuItem.Visible = False
  10280. DownloadFanartToolStripMenuItem.Visible = False
  10281. Try
  10282. If IO.File.Exists(Pref.GetFanartPath(workingMovieDetails.fileinfo.fullpathandfilename)) Or (workingMovieDetails.fileinfo.videotspath <> "" And IO.File.Exists(workingMovieDetails.fileinfo.videotspath + "fanart.jpg")) Then
  10283. RescrapeFanartToolStripMenuItem.Visible = True
  10284. Else
  10285. DownloadFanartToolStripMenuItem.Visible = True
  10286. End If
  10287. Catch
  10288. RescrapePToolStripMenuItem.Visible = False
  10289. RescrapeFanartToolStripMenuItem.Visible = False
  10290. DownloadFanartToolStripMenuItem.Visible = False
  10291. DownloadPosterToolStripMenuItem.Visible = False
  10292. End Try
  10293. End If
  10294. Catch ex As Exception
  10295. ExceptionHandler.LogError(ex)
  10296. End Try
  10297. End Sub
  10298. Private Sub PbMovieFanArt_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles PbMovieFanArt.DoubleClick
  10299. Try
  10300. If workingMovieDetails.fileinfo.fanartpath <> Nothing Then
  10301. If IO.File.Exists(workingMovieDetails.fileinfo.fanartpath) Then
  10302. Me.ControlBox = False
  10303. MenuStrip1.Enabled = False
  10304. util_ZoomImage(workingMovieDetails.fileinfo.fanartpath)
  10305. End If
  10306. End If
  10307. Catch ex As Exception
  10308. ExceptionHandler.LogError(ex)
  10309. End Try
  10310. End Sub
  10311. Private Sub PbMoviePoster_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles PbMoviePoster.DoubleClick
  10312. Try
  10313. If workingMovieDetails.fileinfo.posterpath <> Nothing Then
  10314. If IO.File.Exists(workingMovieDetails.fileinfo.posterpath) Then
  10315. Me.ControlBox = False
  10316. MenuStrip1.Enabled = False
  10317. util_ZoomImage(workingMovieDetails.fileinfo.posterpath)
  10318. End If
  10319. End If
  10320. Catch ex As Exception
  10321. ExceptionHandler.LogError(ex)
  10322. End Try
  10323. End Sub
  10324. Private Sub PbMoviePoster_Click(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PbMoviePoster.MouseUp
  10325. Try
  10326. If e.Button = Windows.Forms.MouseButtons.Right Then
  10327. RescrapePToolStripMenuItem.Visible = False
  10328. RescrapePosterFromTMDBToolStripMenuItem.Visible = False
  10329. RescraToolStripMenuItem.Visible = False
  10330. PeToolStripMenuItem.Visible = False
  10331. DownloadPosterToolStripMenuItem.Visible = False
  10332. DownloadPosterFromTMDBToolStripMenuItem.Visible = False
  10333. DownloadPosterFromMPDBToolStripMenuItem.Visible = False
  10334. DownloadPosterFromIMDBToolStripMenuItem.Visible = False
  10335. RescrapeFanartToolStripMenuItem.Visible = False
  10336. DownloadFanartToolStripMenuItem.Visible = False
  10337. Try
  10338. If IO.File.Exists(Pref.GetPosterPath(workingMovieDetails.fileinfo.fullpathandfilename)) Then
  10339. RescrapePToolStripMenuItem.Visible = True
  10340. RescrapePosterFromTMDBToolStripMenuItem.Visible = True
  10341. RescraToolStripMenuItem.Visible = True
  10342. PeToolStripMenuItem.Visible = True
  10343. Else
  10344. DownloadPosterToolStripMenuItem.Visible = True
  10345. DownloadPosterFromTMDBToolStripMenuItem.Visible = True
  10346. DownloadPosterFromMPDBToolStripMenuItem.Visible = True
  10347. DownloadPosterFromIMDBToolStripMenuItem.Visible = True
  10348. End If
  10349. Catch
  10350. RescrapePToolStripMenuItem.Visible = False
  10351. RescrapePosterFromTMDBToolStripMenuItem.Visible = False
  10352. RescraToolStripMenuItem.Visible = False
  10353. PeToolStripMenuItem.Visible = False
  10354. DownloadPosterToolStripMenuItem.Visible = False
  10355. DownloadPosterFromTMDBToolStripMenuItem.Visible = False
  10356. DownloadPosterFromMPDBToolStripMenuItem.Visible = False
  10357. DownloadPosterFromIMDBToolStripMenuItem.Visible = False
  10358. RescrapeFanartToolStripMenuItem.Visible = False
  10359. DownloadFanartToolStripMenuItem.Visible = False
  10360. End Try
  10361. End If
  10362. Catch ex As Exception
  10363. ExceptionHandler.LogError(ex)
  10364. End Try
  10365. End Sub
  10366. Private Sub cbMovieDisplay_Actor_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbMovieDisplay_Actor.MouseEnter
  10367. Try
  10368. cbMovieDisplay_Actor.Focus()
  10369. Catch ex As Exception
  10370. ExceptionHandler.LogError(ex)
  10371. End Try
  10372. End Sub
  10373. Private Sub cbMovieDisplay_Actor_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbMovieDisplay_Actor.SelectedIndexChanged
  10374. Try
  10375. For Each actor In workingMovieDetails.listactors
  10376. If actor.actorname = cbMovieDisplay_Actor.SelectedItem Then
  10377. If actor.actorrole <> "" Then roletxt.Text = actor.actorrole
  10378. Dim temppath = GetActorPath(workingMovieDetails.fileinfo.fullpathandfilename, actor.actorname, actor.actorid)
  10379. If Not String.IsNullOrEmpty(temppath) AndAlso IO.File.Exists(temppath) Then
  10380. util_ImageLoad(PictureBoxActor, temppath, Utilities.DefaultActorPath)
  10381. Exit Sub
  10382. End If
  10383. If actor.actorthumb <> Nothing Then 'And Not Pref.LocalActorImage Then
  10384. Dim actorthumbpath As String = Pref.GetActorThumbPath(actor.actorthumb)
  10385. If actorthumbpath <> "none" Then
  10386. If Not Pref.LocalActorImage AndAlso actorthumbpath.IndexOf("http") = 0 Then
  10387. If actorthumbpath.ToLower.IndexOf("http") <> -1 OrElse IO.File.Exists(actorthumbpath) Then
  10388. util_ImageLoad(PictureBoxActor, actorthumbpath, Utilities.DefaultActorPath)
  10389. End If
  10390. Else
  10391. util_ImageLoad(PictureBoxActor, Utilities.DefaultActorPath, Utilities.DefaultActorPath)
  10392. End If
  10393. Else
  10394. util_ImageLoad(PictureBoxActor, Utilities.DefaultActorPath, Utilities.DefaultActorPath)
  10395. End If
  10396. Else
  10397. util_ImageLoad(PictureBoxActor, Utilities.DefaultActorPath, Utilities.DefaultActorPath)
  10398. End If
  10399. Exit For
  10400. Else
  10401. util_ImageLoad(PictureBoxActor, Utilities.DefaultActorPath, Utilities.DefaultActorPath)
  10402. End If
  10403. Next
  10404. Catch ex As Exception
  10405. ExceptionHandler.LogError(ex)
  10406. End Try
  10407. End Sub
  10408. Private Sub btnMovSelectPlot_Click(sender As Object, e As EventArgs) Handles btnMovSelectPlot.Click
  10409. Dim newplot As String = GetlistofPlots()
  10410. If Not IsNothing(newplot) Then
  10411. plottxt.Text = newplot
  10412. Call mov_SaveQuick()
  10413. End If
  10414. End Sub
  10415. Private Sub lbl_movRuntime_Click(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lbl_movRuntime.MouseDown
  10416. If e.Button = Windows.Forms.MouseButtons.Left Then
  10417. displayRuntimeScraper = Not (runtimetxt.Enabled = True)
  10418. Call mov_SwitchRuntime()
  10419. End If
  10420. End Sub
  10421. Private Sub lbl_movTop250_Click(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lbl_movTop250.MouseDown
  10422. If e.Button = Windows.Forms.MouseButtons.Left Then
  10423. Call mov_Switchtop250
  10424. End If
  10425. End Sub
  10426. Private Sub btnMovieDisplay_SetFilter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovieDisplay_SetFilter.Click
  10427. Try
  10428. ProgState = ProgramState.ResettingFilters
  10429. oMovies.SetsFilter_AddIfMissing(cbMovieDisplay_MovieSet.Text)
  10430. ShowMovieFilter(cbFilterSet)
  10431. cbFilterSet.UpdateItems(oMovies.SetsFilter)
  10432. cbFilterSet.SelectItem(cbMovieDisplay_MovieSet.Text)
  10433. ProgState = ProgramState.Other
  10434. Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  10435. Catch ex As Exception
  10436. ExceptionHandler.LogError(ex)
  10437. End Try
  10438. End Sub
  10439. Private Sub ButtonTrailer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonTrailer.Click
  10440. If Not IO.File.Exists(workingMovieDetails.fileinfo.trailerpath) Then
  10441. _rescrapeList.Field = "Download_Trailer"
  10442. _rescrapeList.FullPathAndFilenames.Clear()
  10443. _rescrapeList.FullPathAndFilenames.Add(workingMovieDetails.fileinfo.fullpathandfilename)
  10444. RunBackgroundMovieScrape("RescrapeSpecific")
  10445. Else
  10446. Statusstrip_Enable()
  10447. ToolStripStatusLabel2.Text = ""
  10448. ToolStripStatusLabel2.Visible = True
  10449. Dim tempstring = applicationPath & "\Settings\temp.m3u"
  10450. ToolStripStatusLabel2.Text = "Playing Movie...Creating m3u file:..." & tempstring
  10451. Dim file = IO.File.CreateText(tempstring)
  10452. file.WriteLine(workingMovieDetails.fileinfo.trailerpath)
  10453. file.Close()
  10454. ToolStripStatusLabel2.Text &= "............Launching Player."
  10455. StartVideo(tempstring)
  10456. 'If Pref.videomode = 1 Then Call util_VideoMode1(tempstring)
  10457. 'If Pref.videomode = 2 Then Call util_VideoMode2(tempstring)
  10458. 'If Pref.videomode = 3 Then
  10459. ' Pref.videomode = 2
  10460. ' Call util_VideoMode2(tempstring)
  10461. 'End If
  10462. 'If Pref.videomode >= 4 Then
  10463. ' If Pref.selectedvideoplayer <> Nothing Then
  10464. ' Call util_VideoMode4(tempstring)
  10465. ' Else
  10466. ' Call util_VideoMode1(tempstring)
  10467. ' End If
  10468. 'End If
  10469. statusstripclear.Start()
  10470. End If
  10471. End Sub
  10472. Private Sub btnPlayMovie_Click(sender As System.Object, e As System.EventArgs) Handles btnPlayMovie.Click
  10473. mov_Play("Movie")
  10474. End Sub
  10475. Private Sub btnMovWatched_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovWatched.Click
  10476. Try
  10477. If DataGridViewMovies.SelectedRows.Count = 1 Then
  10478. If btnMovWatched.Text = "&Watched" Then
  10479. btnMovWatched.Text = "Un&watched"
  10480. btnMovWatched.BackColor = Color.Red
  10481. btnMovWatched.Refresh()
  10482. workingMovieDetails.fullmoviebody.playcount = "0"
  10483. Else
  10484. btnMovWatched.Text = "&Watched"
  10485. btnMovWatched.BackColor = Color.LawnGreen
  10486. btnMovWatched.Refresh()
  10487. workingMovieDetails.fullmoviebody.playcount = "1"
  10488. End If
  10489. Call mov_SaveQuick()
  10490. ElseIf DataGridViewMovies.SelectedRows.Count > 1 Then
  10491. messbox = New frmMessageBox("Saving Selected Movies", , " Please Wait. ")
  10492. messbox.Show()
  10493. messbox.Refresh()
  10494. Dim watched As String = ""
  10495. If btnMovWatched.Text = "&Watched" Then
  10496. btnMovWatched.Text = "Un&watched"
  10497. btnMovWatched.BackColor = Color.Red
  10498. btnMovWatched.Refresh()
  10499. watched = "0"
  10500. ElseIf btnMovWatched.Text = "Un&watched" Then
  10501. btnMovWatched.Text = "&Watched"
  10502. btnMovWatched.BackColor = Color.LawnGreen
  10503. btnMovWatched.Refresh()
  10504. watched = "1"
  10505. ElseIf btnMovWatched.Text = "" Then
  10506. btnMovWatched.Text = "&Watched"
  10507. btnMovWatched.BackColor = Color.LawnGreen
  10508. btnMovWatched.Refresh()
  10509. watched = "1"
  10510. End If
  10511. For Each sRow As DataGridViewRow In DataGridViewMovies.SelectedRows
  10512. Dim filepath As String = sRow.Cells("fullpathandfilename").Value.ToString
  10513. If (IO.File.Exists(filepath)) Then
  10514. Dim fmd As New FullMovieDetails
  10515. fmd = WorkingWithNfoFiles.mov_NfoLoadFull(filepath)
  10516. If IsNothing(fmd) Then Continue For
  10517. fmd.fullmoviebody.playcount = watched
  10518. Movie.SaveNFO(filepath, fmd)
  10519. For f = 0 To oMovies.MovieCache.Count - 1
  10520. If oMovies.MovieCache(f).fullpathandfilename = filepath Then
  10521. Dim newfullmovie As New ComboList
  10522. newfullmovie = oMovies.MovieCache(f)
  10523. newfullmovie.playcount = watched
  10524. oMovies.MovieCache.RemoveAt(f)
  10525. oMovies.MovieCache.Add(newfullmovie)
  10526. Exit For
  10527. End If
  10528. Next
  10529. End If
  10530. Next
  10531. messbox.Close()
  10532. End If
  10533. Mc.clsGridViewMovie.mov_FiltersAndSortApply(Me)
  10534. Catch ex As Exception
  10535. ExceptionHandler.LogError(ex)
  10536. End Try
  10537. End Sub
  10538. Private Sub PictureBoxActor_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBoxActor.DoubleClick
  10539. ZoomActorPictureBox(PictureBoxActor)
  10540. End Sub
  10541. Private Sub rcmenuOption(x, y)
  10542. ' x is equal to the menu item title that was clicked
  10543. ' Create case stament for that to call the correct xmlinteraction passing in y
  10544. Select Case x
  10545. Case "Premiered"
  10546. mov_ScrapeSpecific("Premiered")
  10547. Case "Cert"
  10548. Call mov_ScrapeSpecific("mpaa")
  10549. Case "Plot"
  10550. Call mov_ScrapeSpecific("plot")
  10551. Case "Outline"
  10552. Call mov_ScrapeSpecific("outline")
  10553. Case "Tagline"
  10554. Call mov_ScrapeSpecific("tagline")
  10555. Case "Genre"
  10556. Call mov_ScrapeSpecific("genre")
  10557. Case "Rating"
  10558. Call mov_ScrapeSpecific("rating")
  10559. Case "Runtime"
  10560. Call mov_ScrapeSpecific("runtime")
  10561. Case "Set"
  10562. Call mov_ScrapeSpecific("tmdb_set_name")
  10563. Case "Actors"
  10564. Call mov_ScrapeSpecific("actors")
  10565. Case "Stars"
  10566. Call mov_ScrapeSpecific("stars")
  10567. Case "Director"
  10568. Call mov_ScrapeSpecific("director")
  10569. Case "Credits", "Writers"
  10570. Call mov_ScrapeSpecific("credits")
  10571. Case "Studio"
  10572. Call mov_ScrapeSpecific("studio")
  10573. Case "Country"
  10574. Call mov_ScrapeSpecific("country")
  10575. Case "Tag(s)"
  10576. Call mov_ScrapeSpecific("TagsFromKeywords")
  10577. Case "Top 250"
  10578. Call mov_ScrapeSpecific("top250")
  10579. Case "Metascore"
  10580. Call mov_ScrapeSpecific("metascore")
  10581. Case "Votes"
  10582. Call mov_ScrapeSpecific("votes")
  10583. End Select
  10584. End Sub
  10585. Private Sub rcmenu_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles rcmenu.ItemClicked
  10586. Dim contextMenu = DirectCast(sender, ContextMenuStrip)
  10587. Dim label = DirectCast(contextMenu.SourceControl, Label)
  10588. Dim var As String = label.Text
  10589. Dim toolStripItem = e.ClickedItem
  10590. Dim var2 As String = toolStripItem.Text
  10591. rcmenu.Close()
  10592. rcmenuOption(var, var2)
  10593. End Sub
  10594. Private Sub rcmenuClicked(ByVal sender As System.Object, ByVal e As CancelEventArgs) Handles rcmenu.Opening
  10595. ' Get the Label clicked from the SourceControl property of the clicked ContextMenuStrip.
  10596. rcmenu.Items.Clear()
  10597. Dim contextMenu = DirectCast(sender, ContextMenuStrip)
  10598. Dim label = DirectCast(contextMenu.SourceControl, Label)
  10599. Dim var2 As String = label.Text
  10600. contextMenu.Items.Add("Rescrape " & var2)
  10601. End Sub
  10602. #End Region
  10603. #Region "Movie Wall"
  10604. Public Shared Sub updateposterwall(ByVal path As String, ByVal movie As String)
  10605. For Each poster As PictureBox In Form1.tpMovWall.Controls
  10606. If poster.Tag = movie Then
  10607. util_ImageLoad(poster, path, Utilities.DefaultPosterPath)
  10608. poster.Tag = movie
  10609. End If
  10610. Next
  10611. End Sub
  10612. Private Sub mov_WallReset()
  10613. For i = tpMovWall.Controls.Count - 1 To 0 Step -1
  10614. tpMovWall.Controls.RemoveAt(i)
  10615. Next
  10616. Dim count As Integer = 0
  10617. Dim locx As Integer = 0
  10618. Dim locy As Integer = 0
  10619. Dim MovMaxWallCount As Integer = Math.Floor((tpMovWall.Width - 40) / WallPicWidth)
  10620. While (DataGridViewMovies.SelectedRows.Count / MovMaxWallCount) > WallPicWidth
  10621. MovMaxWallCount += 1
  10622. End While
  10623. Try
  10624. For Each pic In MovpictureList
  10625. Try
  10626. If count = MovMaxWallCount Then
  10627. count = 0
  10628. locx = 0
  10629. locy += WallPicHeight
  10630. End If
  10631. With pic
  10632. Dim vscrollPos As Integer = tpMovWall.VerticalScroll.Value
  10633. .Location = New Point(locx, locy - vscrollPos)
  10634. .ContextMenuStrip = MovieWallContextMenu
  10635. End With
  10636. locx += WallPicWidth
  10637. count += 1
  10638. Me.tpMovWall.Controls.Add(pic)
  10639. tpMovWall.Refresh()
  10640. Application.DoEvents()
  10641. Catch ex As Exception
  10642. MsgBox(ex.ToString)
  10643. End Try
  10644. Next
  10645. Catch ex As Exception
  10646. Finally
  10647. End Try
  10648. End Sub
  10649. Private Sub mov_WallSetup()
  10650. Dim check As Boolean = True
  10651. Dim count As Integer = 0
  10652. Dim locx As Integer = 0
  10653. Dim locy As Integer = 0
  10654. If lastSort = "" Then lastSort = Mc.clsGridViewMovie.GridFieldToDisplay2
  10655. If lastinvert = "" Then lastinvert = Mc.clsGridViewMovie.GridSort
  10656. If lastSort <> Mc.clsGridViewMovie.GridFieldToDisplay2 OrElse lastinvert <> Mc.clsGridViewMovie.GridSort Then
  10657. lastSort = Mc.clsGridViewMovie.GridFieldToDisplay2
  10658. lastinvert = Mc.clsGridViewMovie.GridSort
  10659. moviecount_bak = 0
  10660. End If
  10661. If moviecount_bak = DataGridViewMovies.RowCount Then Exit Sub
  10662. MovMaxWallCount = Math.Floor((tpMovWall.Width - 40)/WallPicWidth)
  10663. While (DataGridViewMovies.SelectedRows.Count / MovMaxWallCount) > WallPicWidth
  10664. MovMaxWallCount += 1
  10665. End While
  10666. MovpictureList.Clear()
  10667. For i = tpMovWall.Controls.Count - 1 To 0 Step -1
  10668. If tpMovWall.Controls(i).Name = "" Then tpMovWall.Controls.RemoveAt(i)
  10669. Next
  10670. tpMovWall.Refresh()
  10671. Application.DoEvents()
  10672. For Each row As DataGridViewRow In DataGridViewMovies.Rows
  10673. moviecount_bak += 1
  10674. Dim m As Data_GridViewMovie = row.DataBoundItem
  10675. bigPictureBox = New PictureBox()
  10676. With bigPictureBox
  10677. .Width = WallPicWidth
  10678. .Height = WallPicHeight
  10679. .SizeMode = PictureBoxSizeMode.StretchImage
  10680. Dim filename As String = Utilities.GetCRC32(m.fullpathandfilename)
  10681. Dim posterCache As String = Utilities.PosterCachePath & filename & ".jpg"
  10682. If Not File.Exists(posterCache) And File.Exists(Pref.GetPosterPath(m.fullpathandfilename)) Then
  10683. Try
  10684. Dim bitmap2 As New Bitmap(Pref.GetPosterPath(m.fullpathandfilename))
  10685. bitmap2 = Utilities.ResizeImage(bitmap2, WallPicWidth, WallPicHeight)
  10686. Utilities.SaveImage(bitmap2, IO.Path.Combine(posterCache))
  10687. bitmap2.Dispose()
  10688. Catch
  10689. 'Invalid file
  10690. File.Delete(Pref.GetPosterPath(m.fullpathandfilename))
  10691. End Try
  10692. End If
  10693. If File.Exists(posterCache) Then
  10694. Try
  10695. .Image = Utilities.LoadImage(posterCache)
  10696. Catch
  10697. 'Invalid file
  10698. File.Delete(Pref.GetPosterPath(m.fullpathandfilename))
  10699. End Try
  10700. Else
  10701. .Image = Utilities.LoadImage(Utilities.DefaultPosterPath)
  10702. End If
  10703. .Tag = m.fullpathandfilename
  10704. Dim toolTip1 As ToolTip = New ToolTip(Me.components)
  10705. toolTip1.AutoPopDelay = 12000
  10706. Dim outline As String = m.outline
  10707. Dim newoutline As List(Of String) = util_TextWrap(outline, 50)
  10708. outline = ""
  10709. For Each line In newoutline
  10710. outline = outline & vbCrLf & line
  10711. Next
  10712. outline.TrimEnd(vbCrLf)
  10713. toolTip1.SetToolTip(bigPictureBox, m.fullpathandfilename & vbCrLf & vbCrLf & m.DisplayTitleAndYear & vbCrLf & outline)
  10714. toolTip1.Active = True
  10715. toolTip1.InitialDelay = 0
  10716. .Visible = True
  10717. .BorderStyle = BorderStyle.None
  10718. .WaitOnLoad = True
  10719. .ContextMenuStrip = MovieWallContextMenu
  10720. AddHandler bigPictureBox.MouseEnter, AddressOf util_MouseEnter
  10721. AddHandler bigPictureBox.DoubleClick, AddressOf mov_WallClicked
  10722. If count = MovMaxWallCount Then
  10723. count = 0
  10724. locx = 0
  10725. locy += WallPicHeight
  10726. End If
  10727. Dim vscrollPos As Integer = tpMovWall.VerticalScroll.Value
  10728. If mouseDelta <> 0 Then
  10729. vscrollPos = vscrollPos - mouseDelta
  10730. mouseDelta = 0
  10731. End If
  10732. .Location = New Point(locx, locy - vscrollPos)
  10733. locx += WallPicWidth
  10734. count += 1
  10735. End With
  10736. Me.tpMovWall.Controls.Add(bigPictureBox)
  10737. MovpictureList.Add(bigPictureBox)
  10738. Me.tpMovWall.Refresh()
  10739. Application.DoEvents()
  10740. Next
  10741. End Sub
  10742. Private Sub mov_WallClicked(ByVal sender As Object, ByVal e As EventArgs)
  10743. Dim item As Windows.Forms.PictureBox = sender
  10744. Dim tempstring As String = item.Tag
  10745. For f = 0 To DataGridViewMovies.RowCount - 1
  10746. If DataGridViewMovies.Rows(f).Cells("fullpathandfilename").Value.ToString = tempstring Then
  10747. DataGridViewMovies.ClearSelection()
  10748. DataGridViewMovies.Rows(f).Selected = True
  10749. Application.DoEvents()
  10750. currentTabIndex = 0
  10751. Me.TabControl2.SelectedIndex = 0
  10752. Exit For
  10753. End If
  10754. Next
  10755. End Sub
  10756. Private Function util_TextWrap(ByVal text As String, ByVal linelength As Integer)
  10757. Dim ReturnValue As New List(Of String)
  10758. text = Trim(text)
  10759. Dim Words As String() = text.Split(" ")
  10760. If Words.Length = 1 And Words(0).Length > linelength Then
  10761. Dim lines As Integer = (Int(text.Length / linelength) + 1)
  10762. text = text.PadRight(lines * linelength)
  10763. For i = 0 To lines - 1
  10764. Dim SliceStart As Integer = i * linelength
  10765. ReturnValue.Add(text.Substring(SliceStart, linelength))
  10766. Next
  10767. Else
  10768. Dim CurrentLine As New System.Text.StringBuilder
  10769. For Each Word As String In Words
  10770. If CurrentLine.Length + Word.Length < linelength Then
  10771. CurrentLine.Append(Word & " ")
  10772. Else
  10773. If Word.Length > linelength Then
  10774. Dim Slice As String = Word.Substring(0, linelength - CurrentLine.Length)
  10775. CurrentLine.Append(Slice)
  10776. ReturnValue.Add(CurrentLine.ToString)
  10777. CurrentLine = New System.Text.StringBuilder()
  10778. Word = Word.Substring(Slice.Length, Word.Length - Slice.Length)
  10779. Dim RemainingSlices As Integer = Int(Word.Length / linelength) + 1
  10780. For LineNumber = 1 To RemainingSlices
  10781. If LineNumber = RemainingSlices Then
  10782. CurrentLine.Append(Word & " ")
  10783. Else
  10784. Slice = Word.Substring(0, linelength)
  10785. CurrentLine.Append(Slice)
  10786. ReturnValue.Add(CurrentLine.ToString)
  10787. CurrentLine = New System.Text.StringBuilder()
  10788. Word = Word.Substring(Slice.Length, Word.Length - Slice.Length)
  10789. End If
  10790. Next
  10791. Else
  10792. ReturnValue.Add(CurrentLine.ToString)
  10793. CurrentLine = New System.Text.StringBuilder(Word & " ")
  10794. End If
  10795. End If
  10796. Next
  10797. If CurrentLine.Length > 0 Then ReturnValue.Add(CurrentLine.ToString)
  10798. End If
  10799. Return ReturnValue
  10800. End Function
  10801. Private Shadows Sub util_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs)
  10802. Try
  10803. ClickedControl = sender.tag
  10804. Catch ex As Exception
  10805. ExceptionHandler.LogError(ex)
  10806. End Try
  10807. End Sub
  10808. Private Sub MovieWallContextMenu_Opening(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MovieWallContextMenu.Opening
  10809. Dim tempstring As String = ClickedControl
  10810. If tempstring <> Nothing Then
  10811. Dim trailerpath As String = Pref.ActualTrailerPath(tempstring) 'GetTrailerPath(tempstring)
  10812. If IO.File.Exists(trailerpath) Then
  10813. tsmiWallPlayTrailer.Enabled = True
  10814. Else
  10815. tsmiWallPlayTrailer.Enabled = False
  10816. End If
  10817. End If
  10818. End Sub
  10819. Private Sub PlayMovieToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PlayMovieToolStripMenuItem.Click
  10820. Try
  10821. Dim tempstring As String = ClickedControl
  10822. If tempstring = Nothing Then
  10823. Exit Sub
  10824. End If
  10825. If tempstring = "" Then
  10826. Exit Sub
  10827. End If
  10828. tempstring = Utilities.GetFileName(tempstring)
  10829. Dim playlist As New List(Of String)
  10830. playlist = Utilities.GetMediaList(tempstring)
  10831. If playlist.Count <= 0 Then
  10832. MsgBox("No Media File Found For This nfo")
  10833. Exit Sub
  10834. End If
  10835. LaunchPlayList(playlist)
  10836. Catch ex As Exception
  10837. ExceptionHandler.LogError(ex)
  10838. End Try
  10839. End Sub
  10840. Private Sub EditMovieToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EditMovieToolStripMenuItem1.Click
  10841. Try
  10842. Dim tempstring As String = ClickedControl
  10843. For f = 0 To DataGridViewMovies.RowCount - 1
  10844. If DataGridViewMovies.Rows(f).Cells("fullpathandfilename").Value.ToString = tempstring Then
  10845. DataGridViewMovies.ClearSelection()
  10846. DataGridViewMovies.Rows(f).Selected = True
  10847. DisplayMovie()
  10848. Application.DoEvents()
  10849. currentTabIndex = 4
  10850. Me.TabControl2.SelectedIndex = 4
  10851. Exit For
  10852. End If
  10853. Next
  10854. Catch ex As Exception
  10855. ExceptionHandler.LogError(ex)
  10856. End Try
  10857. End Sub
  10858. Private Sub DToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DToolStripMenuItem.Click
  10859. Try
  10860. Dim tempstring As String = ClickedControl
  10861. If tempstring <> Nothing Then
  10862. Try
  10863. Dim Temp2 As String = Pref.GetPosterPath(tempstring)
  10864. If IO.File.Exists(Temp2) Then
  10865. Me.ControlBox = False
  10866. MenuStrip1.Enabled = False
  10867. util_ZoomImage(Temp2)
  10868. Else
  10869. MsgBox("Cant find file:-" & vbCrLf & Pref.GetPosterPath(tempstring))
  10870. End If
  10871. Catch ex As Exception
  10872. #If SilentErrorScream Then
  10873. Throw ex
  10874. #End If
  10875. End Try
  10876. End If
  10877. Catch ex As Exception
  10878. ExceptionHandler.LogError(ex)
  10879. End Try
  10880. End Sub
  10881. Private Sub OpenFolderToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenFolderToolStripMenuItem1.Click
  10882. Try
  10883. Dim tempstring As String = ClickedControl
  10884. If tempstring <> Nothing Then
  10885. Try
  10886. Call util_OpenFolder(tempstring)
  10887. Catch ex As Exception
  10888. #If SilentErrorScream Then
  10889. Throw ex
  10890. #End If
  10891. End Try
  10892. End If
  10893. Catch ex As Exception
  10894. ExceptionHandler.LogError(ex)
  10895. End Try
  10896. End Sub
  10897. Private Sub tsmiWallPlayTrailer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiWallPlayTrailer.Click
  10898. Try
  10899. Dim tempstring As String = ClickedControl
  10900. If tempstring <> Nothing Then
  10901. Dim trailerpath As String = Pref.ActualTrailerPath(tempstring) 'GetTrailerPath(tempstring)
  10902. statusstrip_Enable()
  10903. ToolStripStatusLabel2.Text = ""
  10904. ToolStripStatusLabel2.Visible = True
  10905. If IO.File.Exists(trailerpath) Then
  10906. statusstrip_Enable()
  10907. ToolStripStatusLabel2.Visible = True
  10908. Dim trailerstring = applicationPath & "\Settings\temp.m3u"
  10909. ToolStripStatusLabel2.Text = "Playing Movie...Creating m3u file:..." & trailerstring
  10910. Dim file = IO.File.CreateText(trailerstring)
  10911. file.WriteLine(trailerpath)
  10912. file.Close()
  10913. ToolStripStatusLabel2.Text &= "............Launching Player."
  10914. StartVideo(trailerstring)
  10915. 'If Pref.videomode = 1 Then Call util_VideoMode1(trailerstring)
  10916. 'If Pref.videomode = 2 Or Pref.videomode = 3 Then Call util_VideoMode2(trailerstring)
  10917. 'If Pref.videomode >= 4 Then
  10918. ' If Pref.selectedvideoplayer <> Nothing Then
  10919. ' Call util_VideoMode4(trailerstring)
  10920. ' Else
  10921. ' Call util_VideoMode1(trailerstring)
  10922. ' End If
  10923. 'End If
  10924. Else
  10925. ToolStripStatusLabel2.Text = "No downloaded trailer present"
  10926. End If
  10927. End If
  10928. statusstripclear.Start()
  10929. Catch ex As Exception
  10930. ExceptionHandler.LogError(ex)
  10931. End Try
  10932. End Sub
  10933. #End Region 'Movie Wall
  10934. #Region "Movie Fanart Tab"
  10935. Private Sub tpMovFanart_Leave( sender As Object, e As EventArgs) Handles tpMovFanart.Leave
  10936. If ImgBw.IsBusy Then
  10937. ImgBw.CancelAsync()
  10938. Do Until Not ImgBw.IsBusy
  10939. Application.DoEvents()
  10940. Loop
  10941. End If
  10942. End Sub
  10943. Private Sub PictureBox2_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox2.DoubleClick
  10944. Try
  10945. If Not PictureBox2.Tag Is Nothing Then
  10946. Me.ControlBox = False
  10947. MenuStrip1.Enabled = False
  10948. Call util_ZoomImage(PictureBox2.Tag.ToString)
  10949. Else
  10950. MsgBox("No Image Available To Zoom")
  10951. End If
  10952. Catch ex As Exception
  10953. ExceptionHandler.LogError(ex)
  10954. End Try
  10955. End Sub
  10956. Private Sub btncroptop_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btncroptop.MouseDown
  10957. Try
  10958. If PictureBox2.Image Is Nothing Then Exit Sub
  10959. thumbedItsMade = True
  10960. btnresetimage.Enabled = True
  10961. btnSaveCropped.Enabled = True
  10962. cropString = "top"
  10963. Timer2.Enabled = True
  10964. Catch ex As Exception
  10965. ExceptionHandler.LogError(ex)
  10966. End Try
  10967. End Sub
  10968. Private Sub btncropbottom_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btncropbottom.MouseDown
  10969. Try
  10970. If PictureBox2.Image Is Nothing Then Exit Sub
  10971. thumbedItsMade = True
  10972. btnresetimage.Enabled = True
  10973. btnSaveCropped.Enabled = True
  10974. Call util_ImageCropTop()
  10975. cropString = "bottom"
  10976. Timer2.Enabled = True
  10977. Catch ex As Exception
  10978. ExceptionHandler.LogError(ex)
  10979. End Try
  10980. End Sub
  10981. Private Sub btncropleft_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btncropleft.MouseDown
  10982. Try
  10983. If PictureBox2.Image Is Nothing Then Exit Sub
  10984. thumbedItsMade = True
  10985. btnresetimage.Enabled = True
  10986. btnSaveCropped.Enabled = True
  10987. Call util_ImageCropTop()
  10988. cropString = "left"
  10989. Timer2.Enabled = True
  10990. Catch ex As Exception
  10991. ExceptionHandler.LogError(ex)
  10992. End Try
  10993. End Sub
  10994. Private Sub btncropright_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btncropright.MouseDown
  10995. Try
  10996. If PictureBox2.Image Is Nothing Then Exit Sub
  10997. thumbedItsMade = True
  10998. btnresetimage.Enabled = True
  10999. btnSaveCropped.Enabled = True
  11000. Call util_ImageCropTop()
  11001. cropString = "right"
  11002. Timer2.Enabled = True
  11003. Catch ex As Exception
  11004. ExceptionHandler.LogError(ex)
  11005. End Try
  11006. End Sub
  11007. Private Sub btncropbottom_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btncropbottom.MouseUp
  11008. Try
  11009. Timer2.Enabled = False
  11010. Catch ex As Exception
  11011. ExceptionHandler.LogError(ex)
  11012. End Try
  11013. End Sub
  11014. Private Sub btncropleft_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btncropleft.MouseUp
  11015. Timer2.Enabled = False
  11016. End Sub
  11017. Private Sub btncropright_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btncropright.MouseUp
  11018. Try
  11019. Timer2.Enabled = False
  11020. Catch ex As Exception
  11021. ExceptionHandler.LogError(ex)
  11022. End Try
  11023. End Sub
  11024. Private Sub btncroptop_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btncroptop.MouseUp
  11025. Try
  11026. Timer2.Enabled = False
  11027. Catch ex As Exception
  11028. ExceptionHandler.LogError(ex)
  11029. End Try
  11030. End Sub
  11031. Private Sub Timer2_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer2.Tick
  11032. Try
  11033. If cropString = "top" Then Call util_ImageCropTop()
  11034. If cropString = "bottom" Then Call util_ImageCropBottom()
  11035. If cropString = "left" Then Call util_ImageCropLeft()
  11036. If cropString = "right" Then Call util_ImageCropRight()
  11037. Catch ex As Exception
  11038. ExceptionHandler.LogError(ex)
  11039. End Try
  11040. End Sub
  11041. Private Sub btnresetimage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnresetimage.Click
  11042. Try
  11043. thumbedItsMade = False
  11044. util_ImageLoad(PictureBox2, mov_FanartORExtrathumbPath(), Utilities.DefaultFanartPath)
  11045. btnresetimage.Enabled = False
  11046. btnSaveCropped.Enabled = False
  11047. lblMovFanartWidth.Text = PictureBox2.Image.Width
  11048. lblMovFanartHeight.Text = PictureBox2.Image.Height
  11049. Catch ex As Exception
  11050. ExceptionHandler.LogError(ex)
  11051. End Try
  11052. End Sub
  11053. Private Sub btnSaveCropped_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveCropped.Click
  11054. Try
  11055. thumbedItsMade = False
  11056. Try
  11057. Dim stream As New System.IO.MemoryStream
  11058. Utilities.SaveImage(PictureBox2.Image, mov_FanartORExtrathumbPath)
  11059. lblMovFanartWidth.Text = PictureBox2.Image.Width
  11060. lblMovFanartHeight.Text = PictureBox2.Image.Height
  11061. If rbMovFanart.Checked Then ' i.e. this is a fanart task rather than an extrathumb task
  11062. PbMovieFanArt.Image = PictureBox2.Image 'if we are saving the main fanart then update the art on the main form view
  11063. For Each paths In Pref.offlinefolders
  11064. If workingMovieDetails.fileinfo.fanartpath.IndexOf(paths) <> -1 Then
  11065. Dim mediapath As String
  11066. mediapath = Utilities.GetFileName(workingMovieDetails.fileinfo.fullpathandfilename)
  11067. Call mov_OfflineDvdProcess(workingMovieDetails.fileinfo.fullpathandfilename, workingMovieDetails.fullmoviebody.title, mediapath)
  11068. End If
  11069. Next
  11070. End If
  11071. btnresetimage.Enabled = False
  11072. btnSaveCropped.Enabled = False
  11073. Catch ex As Exception
  11074. #If SilentErrorScream Then
  11075. Throw ex
  11076. #End If
  11077. End Try
  11078. Catch ex As Exception
  11079. ExceptionHandler.LogError(ex)
  11080. End Try
  11081. End Sub
  11082. Private Sub btn_MovFanartScrnSht_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_MovFanartScrnSht.Click
  11083. Dim Timepoint As Integer = Nothing
  11084. If Int16.TryParse(tb_MovFanartScrnShtTime.Text, Timepoint) Then
  11085. Dim cachepathandfilename As String = Utilities.CreateScrnShotToCache(workingMovieDetails.fileinfo.filenameandpath, workingMovieDetails.fileinfo.fanartpath, Timepoint)
  11086. If cachepathandfilename <> "" Then
  11087. File.Copy(cachepathandfilename, workingMovieDetails.fileinfo.fanartpath, True)
  11088. util_ImageLoad(PictureBox2, workingMovieDetails.fileinfo.fanartpath, Utilities.DefaultFanartPath)
  11089. mov_DisplayFanart()
  11090. util_ImageLoad(PbMovieFanArt, workingMovieDetails.fileinfo.fanartpath, Utilities.DefaultFanartPath)
  11091. Dim video_flags = VidMediaFlags(workingMovieDetails.filedetails, workingMovieDetails.fullmoviebody.title.ToLower.Contains("3d"))
  11092. movieGraphicInfo.OverlayInfo(PbMovieFanArt, ratingtxt.Text, video_flags, workingMovie.DisplayFolderSize)
  11093. End If
  11094. End If
  11095. End Sub
  11096. Private Sub tb_MovFanartScrnShtTime_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tb_MovFanartScrnShtTime.KeyPress
  11097. If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
  11098. If tb_MovFanartScrnShtTime.Text <> "" AndAlso Convert.ToInt32(tb_MovFanartScrnShtTime.Text) > 0 Then
  11099. TvEpThumbScreenShot()
  11100. End If
  11101. End If
  11102. If Char.IsNumber(e.KeyChar) = False And e.KeyChar <> Chr(8) Then
  11103. e.Handled = True
  11104. End If
  11105. End Sub
  11106. Private Sub tb_MovFanartScrnShtTime_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_MovFanartScrnShtTime.Leave
  11107. If tb_MovFanartScrnShtTime.Text = "" Then
  11108. MsgBox("Please enter a numerical value >0 into the textbox")
  11109. tb_MovFanartScrnShtTime.Focus()
  11110. ElseIf Convert.ToInt32(tb_MovFanartScrnShtTime.Text) = 0 Then
  11111. MsgBox("Please enter a numerical value >0 into the textbox")
  11112. tb_MovFanartScrnShtTime.Focus()
  11113. End If
  11114. End Sub
  11115. Private Sub btnMovFanartUrlorBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovFanartUrlorBrowse.Click
  11116. Try
  11117. Dim t As New frmImageBrowseOrUrl
  11118. t.Location = Me.PointToScreen(New Point(btnMovFanartUrlorBrowse.Left - 460, btnMovFanartUrlorBrowse.Top + 30))
  11119. t.ShowDialog()
  11120. If t.DialogResult = Windows.Forms.DialogResult.Cancel Or t.tb_PathorUrl.Text = "" Then
  11121. t.Dispose()
  11122. Exit Sub
  11123. End If
  11124. Dim PathOrUrl As String = t.tb_PathorUrl.Text
  11125. t.Dispose()
  11126. t = Nothing
  11127. Dim cachename As String = Utilities.Download2Cache(PathOrUrl)
  11128. If cachename <> "" Then
  11129. If Not MovFanartToggle Then
  11130. Dim issavefanart As Boolean = Pref.savefanart
  11131. Dim FanartOrExtraPath As String = mov_FanartORExtrathumbPath
  11132. Dim xtra As Boolean = False
  11133. Dim extrfanart As Boolean = False
  11134. If rbMovThumb1.Checked Or rbMovThumb2.Checked Or rbMovThumb3.Checked Or rbMovThumb4.Checked Or rbMovThumb5.Checked Then xtra = True
  11135. Pref.savefanart = True
  11136. If xtra AndAlso Pref.movxtrathumb Then extrfanart = Movie.SaveFanartImageToCacheAndPath(cachename, FanartOrExtraPath)
  11137. If xtra OrElse Movie.SaveFanartImageToCacheAndPath(cachename, FanartOrExtraPath) Then
  11138. If Not xtra Then
  11139. Dim paths As List(Of String) = Pref.GetfanartPaths(workingMovieDetails.fileinfo.fullpathandfilename,If(workingMovieDetails.fileinfo.videotspath <>"",workingMovieDetails.fileinfo.videotspath,""))
  11140. Movie.SaveFanartImageToCacheAndPaths(cachename, paths)
  11141. End If
  11142. Pref.savefanart = issavefanart
  11143. mov_DisplayFanart()
  11144. util_ImageLoad(PbMovieFanArt, workingMovieDetails.fileinfo.fanartpath, Utilities.DefaultFanartPath)
  11145. Dim video_flags = VidMediaFlags(workingMovieDetails.filedetails, workingMovieDetails.fullmoviebody.title.ToLower.Contains("3d"))
  11146. movieGraphicInfo.OverlayInfo(PbMovieFanArt, ratingtxt.Text, video_flags, workingMovie.DisplayFolderSize)
  11147. For Each paths In Pref.offlinefolders
  11148. Dim offlinepath As String = paths & "\"
  11149. If workingMovieDetails.fileinfo.fanartpath.IndexOf(offlinepath) <> -1 Then
  11150. Dim mediapath As String
  11151. mediapath = Utilities.GetFileName(workingMovieDetails.fileinfo.fullpathandfilename)
  11152. messbox.TextBox1.Text = "Creating Offline Movie..."
  11153. Call mov_OfflineDvdProcess(workingMovieDetails.fileinfo.fullpathandfilename, workingMovieDetails.fullmoviebody.title, mediapath)
  11154. End If
  11155. Next
  11156. Else
  11157. util_ImageLoad(PictureBox2, Utilities.DefaultFanartPath, Utilities.DefaultFanartPath)
  11158. Pref.savefanart = issavefanart
  11159. End If
  11160. lblMovFanartWidth.Text = PictureBox2.Image.Width
  11161. lblMovFanartHeight.Text = PictureBox2.Image.Height
  11162. UpdateMissingFanart()
  11163. XbmcLink_UpdateArtwork
  11164. Else
  11165. Dim MovSetFanartSavePath As String = workingMovieDetails.fileinfo.movsetfanartpath
  11166. If MovSetFanartSavePath <> "" Then
  11167. Movie.SaveFanartImageToCacheAndPath(cachename, MovSetFanartSavePath)
  11168. MovPanel6Update()
  11169. util_ImageLoad(PictureBox2, MovSetFanartSavePath, Utilities.DefaultFanartPath)
  11170. Else
  11171. MsgBox("!! Problem formulating correct save location for Fanart" & vbCrLf & " Please check your settings")
  11172. End If
  11173. End If
  11174. End If
  11175. UpdateMissingFanart()
  11176. XbmcLink_UpdateArtwork()
  11177. Catch ex As Exception
  11178. MsgBox("Unable To Download Image")
  11179. End Try
  11180. End Sub
  11181. Private Sub ButtonFanartSaveLoRes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonFanartSaveLoRes.Click
  11182. SaveFanart(False)
  11183. End Sub
  11184. Private Sub ButtonFanartSaveHiRes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonFanartSaveHiRes.Click
  11185. SaveFanart(True)
  11186. End Sub
  11187. Private Sub btnMovPasteClipboardFanart_Click(sender As Object, e As EventArgs) Handles btnMovPasteClipboardFanart.Click
  11188. If AssignClipboardImage(PictureBox2) Then
  11189. SaveFanart(True, True)
  11190. lblMovFanartWidth.Text = PictureBox2.Image.Width
  11191. lblMovFanartHeight.Text = PictureBox2.Image.Height
  11192. End If
  11193. End Sub
  11194. Private Sub rbMovFanart_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbMovFanart.CheckedChanged
  11195. If rbMovFanart.Checked Then mov_DisplayFanart()
  11196. End Sub
  11197. Private Sub rbMovThumb1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbMovThumb1.CheckedChanged
  11198. If rbMovThumb1.Checked Then mov_DisplayFanart()
  11199. End Sub
  11200. Private Sub rbMovThumb2_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbMovThumb2.CheckedChanged
  11201. If rbMovThumb2.Checked Then mov_DisplayFanart()
  11202. End Sub
  11203. Private Sub rbMovThumb3_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbMovThumb3.CheckedChanged
  11204. If rbMovThumb3.Checked Then mov_DisplayFanart()
  11205. End Sub
  11206. Private Sub rbMovThumb4_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbMovThumb4.CheckedChanged
  11207. If rbMovThumb4.Checked Then mov_DisplayFanart()
  11208. End Sub
  11209. Private Sub rbMovThumb5_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbMovThumb5.CheckedChanged
  11210. If rbMovThumb5.Checked Then mov_DisplayFanart()
  11211. End Sub
  11212. Private Sub BtnSearchGoogleFanart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSearchGoogleFanart.Click
  11213. GoogleSearch("+screenshot")
  11214. End Sub
  11215. Private Sub btnPrevNextMissingFanart_Click(sender As System.Object, e As System.EventArgs) Handles btnPrevMissingFanart.Click, btnNextMissingFanart.Click
  11216. btnPrevMissingFanart.Enabled = False
  11217. btnNextMissingFanart.Enabled = False
  11218. DataGridViewMovies.ClearSelection()
  11219. DataGridViewMovies.Rows(sender.Tag).Selected = True
  11220. DisplayMovie()
  11221. UpdateMissingFanartNav()
  11222. mov_FanartLoad()
  11223. End Sub
  11224. Private Sub btnMovFanartToggle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovFanartToggle.Click
  11225. If MovFanartToggle Then
  11226. btnMovFanartToggle.Text = "Show MovieSet Fanart"
  11227. btnMovFanartToggle.BackColor = System.Drawing.Color.Lime
  11228. MovFanartClear()
  11229. util_ImageLoad(Picturebox2, workingMovieDetails.fileinfo.fanartpath, Utilities.DefaultFanartPath)
  11230. MovFanartDisplay()
  11231. Else
  11232. btnMovFanartToggle.Text = "Show Movie Fanart"
  11233. btnMovFanartToggle.BackColor = System.Drawing.Color.Aqua
  11234. MovFanartClear()
  11235. util_ImageLoad(Picturebox2, workingMovieDetails.fileinfo.movsetfanartpath, Utilities.DefaultFanartPath)
  11236. MovFanartDisplay(workingMovieDetails.fullmoviebody.MovieSet.MovieSetId)
  11237. End If
  11238. MovFanartToggle = Not MovFanartToggle
  11239. End Sub
  11240. #End Region
  11241. #Region "Movie Poster Tab"
  11242. Private Sub tpMovPoster_Leave( sender As Object, e As EventArgs) Handles tpMovPoster.Leave
  11243. If ImgBw.IsBusy Then
  11244. ImgBw.CancelAsync()
  11245. Do Until Not ImgBw.IsBusy
  11246. Application.DoEvents()
  11247. Loop
  11248. End If
  11249. End Sub
  11250. Private Sub PictureBoxAssignedMoviePoster_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBoxAssignedMoviePoster.DoubleClick
  11251. Try
  11252. If Not PictureBoxAssignedMoviePoster.Tag Is Nothing Then
  11253. Me.ControlBox = False
  11254. MenuStrip1.Enabled = False
  11255. Call util_ZoomImage(PictureBoxAssignedMoviePoster.Tag.ToString)
  11256. End If
  11257. Catch ex As Exception
  11258. ExceptionHandler.LogError(ex)
  11259. End Try
  11260. End Sub
  11261. Private Sub PictureBoxAssignedMoviePoster_DragEnter(ByVal sender As System.Object, ByVal e As DragEventArgs) Handles PictureBoxAssignedMoviePoster.DragEnter
  11262. Try
  11263. If (e.Data.GetDataPresent(DataFormats.FileDrop)) Then
  11264. e.Effect = DragDropEffects.Copy
  11265. End If
  11266. Catch ex As Exception
  11267. ExceptionHandler.LogError(ex)
  11268. End Try
  11269. End Sub
  11270. Private Sub PictureBoxAssignedMoviePoster_DragDrop(ByVal sender As System.Object, ByVal e As DragEventArgs) Handles PictureBoxAssignedMoviePoster.DragDrop
  11271. Try
  11272. Dim Pic As String = CType(e.Data.GetData(DataFormats.FileDrop), Array).GetValue(0).ToString '"FileDrop", False)
  11273. Dim FInfo As IO.FileInfo = New IO.FileInfo(Pic)
  11274. If FInfo.Extension.ToLower() = ".jpg" Or FInfo.Extension.ToLower() = ".tbn" Or FInfo.Extension.ToLower() = ".bmp" Or FInfo.Extension.ToLower() = ".png" Then
  11275. util_ImageLoad(PictureBoxAssignedMoviePoster, Pic, Utilities.DefaultPosterPath)
  11276. lblCurrentLoadedPoster.Text = "Width: " & PictureBoxAssignedMoviePoster.Image.Width.ToString & " Height: " & PictureBoxAssignedMoviePoster.Image.Height.ToString
  11277. btnMoviePosterSaveCroppedImage.Enabled = True
  11278. Else
  11279. MessageBox.Show("Not a picture")
  11280. End If
  11281. Catch ex As Exception
  11282. ExceptionHandler.LogError(ex)
  11283. End Try
  11284. End Sub
  11285. Private Sub btn_IMDB_posters_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_IMDB_posters.Click
  11286. Try
  11287. If Not workingMovieDetails.fullmoviebody.imdbid.Contains("tt") Then
  11288. MsgBox("No IMDB ID" & vbCrLf & "Searching IMDB for Posters halted")
  11289. Exit Sub
  11290. End If
  11291. messbox = New frmMessageBox("Please wait,", "", "Retrieving Movie Poster List")
  11292. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  11293. messbox.Show()
  11294. Me.Refresh()
  11295. messbox.Refresh()
  11296. Call mov_PosterInitialise()
  11297. Dim newobject2 As New imdb_thumbs.Class1
  11298. newobject2.MCProxy = Utilities.MyProxy
  11299. Dim posters(,) As String = newobject2.getimdbposters(workingMovieDetails.fullmoviebody.imdbid)
  11300. For f = 0 To UBound(posters)
  11301. If posters(f, 0) <> Nothing Then
  11302. If posters(f, 1) = Nothing Then posters(f, 1) = posters(f, 0)
  11303. Dim mcPoster As New McImage
  11304. mcPoster.hdUrl = posters(f, 1)
  11305. mcPoster.ldUrl = posters(f, 0)
  11306. posterArray.Add(mcPoster)
  11307. 'mcPoster.ldUrl = Nothing
  11308. 'mcPoster.hdUrl = Nothing
  11309. End If
  11310. Next
  11311. messbox.Close()
  11312. Call mov_PosterSelectionDisplay()
  11313. Catch ex As Exception
  11314. ExceptionHandler.LogError(ex)
  11315. End Try
  11316. End Sub
  11317. Private Sub btnMovPosterNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovPosterNext.Click
  11318. If ImgBw.IsBusy Then
  11319. ImgBw.CancelAsync()
  11320. Do Until Not ImgBw.IsBusy
  11321. Application.DoEvents()
  11322. Loop
  11323. End If
  11324. mov_PosterSelectionDisplayNext()
  11325. End Sub
  11326. Private Sub btnMovPosterPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovPosterPrev.Click
  11327. If ImgBw.IsBusy Then
  11328. ImgBw.CancelAsync()
  11329. Do Until Not ImgBw.IsBusy
  11330. Application.DoEvents()
  11331. Loop
  11332. End If
  11333. mov_PosterSelectionDisplayPrev()
  11334. End Sub
  11335. Private Sub btn_TMDb_posters_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_TMDb_posters.Click
  11336. Try
  11337. messbox = New frmMessageBox("Please wait,", "", "Retrieving Movie Poster List")
  11338. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  11339. messbox.Show()
  11340. Me.Refresh()
  11341. messbox.Refresh()
  11342. Call mov_PosterInitialise()
  11343. Try
  11344. Dim tmdb As New TMDb
  11345. If Not MovPosterToggle Then
  11346. tmdb.Imdb = If(workingMovieDetails.fullmoviebody.imdbid.Contains("tt"), workingMovieDetails.fullmoviebody.imdbid, "")
  11347. tmdb.TmdbId = workingMovieDetails.fullmoviebody.tmdbid
  11348. posterArray.AddRange(tmdb.McPosters)
  11349. Else
  11350. tmdb.SetId = workingMovieDetails.fullmoviebody.MovieSet.MovieSetId
  11351. posterArray.AddRange(tmdb.McSetPosters)
  11352. End If
  11353. Catch ex As Exception
  11354. #If SilentErrorScream Then
  11355. Throw ex
  11356. #End If
  11357. Finally
  11358. messbox.Close()
  11359. Call mov_PosterSelectionDisplay()
  11360. End Try
  11361. Catch ex As Exception
  11362. ExceptionHandler.LogError(ex)
  11363. End Try
  11364. End Sub
  11365. Private Sub btn_MPDB_posters_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_MPDB_posters.Click
  11366. Try
  11367. If Not workingMovieDetails.fullmoviebody.imdbid.Contains("tt") Then
  11368. MsgBox("No IMDB ID" & vbCrLf & "Searching Movie Poster DB halted")
  11369. Exit Sub
  11370. End If
  11371. messbox = New frmMessageBox("Please wait,", "", "Retrieving Movie Poster List")
  11372. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  11373. messbox.Show()
  11374. Me.Refresh()
  11375. messbox.Refresh()
  11376. Call mov_PosterInitialise()
  11377. Dim newobject As New class_mpdb_thumbs.Class1
  11378. newobject.MCProxy = Utilities.MyProxy
  11379. Dim teststring As New XmlDocument
  11380. Dim testthumbs As String = String.Empty
  11381. Try
  11382. testthumbs = newobject.get_mpdb_thumbs(workingMovieDetails.fullmoviebody.imdbid)
  11383. testthumbs = "<totalthumbs>" & testthumbs & "</totalthumbs>"
  11384. teststring.LoadXml(testthumbs)
  11385. Catch ex As Exception
  11386. #If SilentErrorScream Then
  11387. Throw ex
  11388. #End If
  11389. Thread.Sleep(1)
  11390. End Try
  11391. Dim thumbstring As New XmlDocument
  11392. Try
  11393. thumbstring.LoadXml(testthumbs)
  11394. For Each thisresult In thumbstring("totalthumbs")
  11395. Select Case thisresult.Name
  11396. Case "thumb"
  11397. Dim newposters As New McImage
  11398. newposters.hdUrl = thisresult.InnerText
  11399. newposters.ldUrl = thisresult.InnerText
  11400. posterArray.Add(newposters)
  11401. 'newposters.ldUrl = Nothing
  11402. 'newposters.hdUrl = Nothing
  11403. End Select
  11404. Next
  11405. Catch ex As Exception
  11406. #If SilentErrorScream Then
  11407. Throw ex
  11408. #End If
  11409. End Try
  11410. messbox.Close()
  11411. Call mov_PosterSelectionDisplay()
  11412. Catch ex As Exception
  11413. ExceptionHandler.LogError(ex)
  11414. End Try
  11415. End Sub
  11416. Private Sub btn_IMPA_posters_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_IMPA_posters.Click
  11417. Try
  11418. messbox = New frmMessageBox("Please wait,", "", "Retrieving Movie Poster List")
  11419. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  11420. messbox.Show()
  11421. Me.Refresh()
  11422. messbox.Refresh()
  11423. Call mov_PosterInitialise()
  11424. Dim newobject2 As New IMPA.getimpaposters
  11425. newobject2.MCProxy = Utilities.MyProxy
  11426. Try
  11427. Dim title As String = CleanMovieTitle(workingMovieDetails.fullmoviebody.title)
  11428. Dim posters(,) As String = newobject2.getimpaafulllist(title, workingMovieDetails.fullmoviebody.year)
  11429. For f = 0 To UBound(posters)
  11430. If posters(f, 0) <> Nothing Then
  11431. If posters(f, 1) = Nothing Then posters(f, 1) = posters(f, 0)
  11432. Dim poster As New McImage
  11433. poster.hdUrl = posters(f, 0)
  11434. poster.ldUrl = posters(f, 1)
  11435. posterArray.Add(poster)
  11436. End If
  11437. Next
  11438. Catch ex As Exception
  11439. #If SilentErrorScream Then
  11440. Throw ex
  11441. #End If
  11442. End Try
  11443. messbox.Close()
  11444. Call mov_PosterSelectionDisplay()
  11445. Catch ex As Exception
  11446. ExceptionHandler.LogError(ex)
  11447. End Try
  11448. End Sub
  11449. Private Sub btnPosterTabs_SaveImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPosterTabs_SaveImage.Click
  11450. MoviePosterSave()
  11451. End Sub
  11452. Private Sub btnMovPosterURLorBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovPosterURLorBrowse.Click
  11453. Try
  11454. Dim t As New frmImageBrowseOrUrl
  11455. t.Location = Me.PointToScreen(New Point(gbMoviePosterSelection.Left + 10, gbMoviePosterSelection.Top + gbMoviePosterSelection.Height))
  11456. t.ShowDialog()
  11457. If t.DialogResult = Windows.Forms.DialogResult.Cancel Or t.tb_PathorUrl.Text = "" Then
  11458. t.Dispose()
  11459. Exit Sub
  11460. End If
  11461. Dim PathOrUrl As String = t.tb_PathorUrl.Text
  11462. t.Dispose()
  11463. t = Nothing
  11464. Dim tempstring As String = ""
  11465. Dim aok As Boolean = True
  11466. Dim cachename As String = Utilities.Download2Cache(PathOrUrl)
  11467. If cachename <> "" Then
  11468. If Not MovPosterToggle Then
  11469. Dim Paths As List(Of String) = Pref.GetPosterPaths(workingMovieDetails.fileinfo.fullpathandfilename, workingMovieDetails.fileinfo.videotspath)
  11470. For Each pth As String In Paths
  11471. Try
  11472. File.Copy(cachename, pth, True)
  11473. Catch ex As Exception
  11474. aok = False
  11475. End Try
  11476. Next
  11477. If aok Then
  11478. util_ImageLoad(PictureBoxAssignedMoviePoster, cachename, Utilities.DefaultPosterPath)
  11479. util_ImageLoad(PbMoviePoster, cachename, Utilities.DefaultPosterPath)
  11480. Dim path As String = Utilities.save2postercache(workingMovieDetails.fileinfo.fullpathandfilename, cachename, WallPicWidth, WallPicHeight)
  11481. updateposterwall(path, workingMovieDetails.fileinfo.fullpathandfilename)
  11482. End If
  11483. Else
  11484. Dim MovSetPosterSavePath As String = workingMovieDetails.fileinfo.movsetposterpath
  11485. If MovSetPosterSavePath <> "" Then
  11486. Movie.SavePosterImageToCacheAndPath(cachename, MovSetPosterSavePath)
  11487. MovPanel6Update()
  11488. util_ImageLoad(PictureBoxAssignedMoviePoster, MovSetPosterSavePath, Utilities.DefaultPosterPath)
  11489. Else
  11490. messbox.Close()
  11491. MsgBox("!! Problem formulating correct save location for Poster" & vbCrLf & " Please check your settings")
  11492. End If
  11493. End If
  11494. Else
  11495. aok = False
  11496. End If
  11497. If Not aok Then MsgBox("There was a problem downloading the Image")
  11498. UpdateMissingPoster()
  11499. XbmcLink_UpdateArtwork()
  11500. Catch ex As Exception
  11501. ExceptionHandler.LogError(ex)
  11502. End Try
  11503. End Sub
  11504. Private Sub BtnGoogleSearchPoster_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGoogleSearchPoster.Click
  11505. GoogleSearch("+poster")
  11506. End Sub
  11507. Private Sub btnMoviePosterResetImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMoviePosterResetImage.Click
  11508. Try
  11509. PictureBoxAssignedMoviePoster.Image = PbMoviePoster.Image
  11510. btnMoviePosterResetImage.Enabled = False
  11511. btnMoviePosterSaveCroppedImage.Enabled = False
  11512. lblCurrentLoadedPoster.Text = "Width: " & PictureBoxAssignedMoviePoster.Image.Width.ToString & " Height: " & PictureBoxAssignedMoviePoster.Image.Height.ToString
  11513. Catch ex As Exception
  11514. ExceptionHandler.LogError(ex)
  11515. End Try
  11516. End Sub
  11517. Private Sub btnMoviePosterSaveCroppedImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMoviePosterSaveCroppedImage.Click
  11518. Try
  11519. Try
  11520. Dim posterpath As String = ""
  11521. Dim stream As New System.IO.MemoryStream
  11522. Dim PostPaths As List(Of String) = Pref.GetPosterPaths(workingMovieDetails.fileinfo.fullpathandfilename, workingMovieDetails.fileinfo.videotspath)
  11523. Dim bitmap3 As New Bitmap(PictureBoxAssignedMoviePoster.Image)
  11524. For Each pth As String In PostPaths
  11525. bitmap3.Save(pth, System.Drawing.Imaging.ImageFormat.Jpeg)
  11526. posterpath = pth
  11527. Next
  11528. bitmap3.Dispose()
  11529. GC.Collect()
  11530. util_ImageLoad(PbMoviePoster, posterpath, Utilities.DefaultPosterPath) '.Image = bmp4
  11531. btnMoviePosterResetImage.Enabled = False
  11532. btnMoviePosterSaveCroppedImage.Enabled = False
  11533. Dim path As String = Utilities.save2postercache(workingMovieDetails.fileinfo.fullpathandfilename, workingMovieDetails.fileinfo.posterpath, WallPicWidth, WallPicHeight)
  11534. updateposterwall(path, workingMovieDetails.fileinfo.fullpathandfilename)
  11535. XbmcLink_UpdateArtwork()
  11536. Catch ex As Exception
  11537. #If SilentErrorScream Then
  11538. Throw ex
  11539. #End If
  11540. End Try
  11541. Catch ex As Exception
  11542. ExceptionHandler.LogError(ex)
  11543. End Try
  11544. End Sub
  11545. Private Sub btnMovPasteClipboardPoster_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovPasteClipboardPoster.Click
  11546. If AssignClipboardImage(PictureBoxAssignedMoviePoster) Then
  11547. MoviePosterSave(True)
  11548. lblCurrentLoadedPoster.Text = "Width: " & PictureBoxAssignedMoviePoster.Image.Width.ToString & " Height: " & PictureBoxAssignedMoviePoster.Image.Height.ToString
  11549. btnMoviePosterSaveCroppedImage.Enabled = True
  11550. End If
  11551. End Sub
  11552. Private Sub btn_MovEnableCrop_Click(sender As System.Object, e As System.EventArgs) Handles btnMoviePosterEnableCrop.Click
  11553. Try
  11554. cropMode = "poster"
  11555. Using t As New frmMovPosterCrop
  11556. If Pref.MultiMonitoEnabled Then
  11557. t.bounds = screen.allscreens(form1.currentscreen).bounds
  11558. t.startposition = formstartposition.manual
  11559. end if
  11560. t.img = New Bitmap(PictureBoxAssignedMoviePoster.Tag.ToString)
  11561. t.cropmode = "poster"
  11562. t.title = workingMovie.title
  11563. t.Setup()
  11564. t.ShowDialog()
  11565. If Not IsNothing(t.newimg) Then
  11566. btnMoviePosterSaveCroppedImage.Enabled = True
  11567. btnMoviePosterResetImage.Enabled = True
  11568. PictureBoxAssignedMoviePoster.Image = t.newimg
  11569. lblCurrentLoadedPoster.Text = "Width: " & PictureBoxAssignedMoviePoster.Image.Width.ToString & " Height: " & PictureBoxAssignedMoviePoster.Image.Height.ToString
  11570. End If
  11571. End Using
  11572. Catch ex As Exception
  11573. ExceptionHandler.LogError(ex)
  11574. End Try
  11575. End Sub
  11576. Private Sub btnPrevNextMissingPoster_Click(sender As System.Object, e As System.EventArgs) Handles btnPrevMissingPoster.Click, btnNextMissingPoster.Click
  11577. btnPrevMissingPoster.Enabled = False
  11578. btnNextMissingPoster.Enabled = False
  11579. PictureBoxAssignedMoviePoster.Image = Nothing
  11580. DataGridViewMovies.ClearSelection()
  11581. DataGridViewMovies.Rows(sender.Tag).Selected = True
  11582. DisplayMovie()
  11583. UpdateMissingPosterNav()
  11584. End Sub
  11585. Private Sub btnMovPosterToggle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovPosterToggle.Click
  11586. 'If Not BWs.Count = 0 Then
  11587. ' _cancelled = True
  11588. ' Do Until Cancelled = False
  11589. ' Thread.Sleep(100)
  11590. ' Application.DoEvents()
  11591. ' If BWs.Count = 0 Then _cancelled = False
  11592. ' Loop
  11593. 'End If
  11594. If MovPosterToggle Then
  11595. btnMovPosterToggle.Text = "Show MovieSet Posters"
  11596. btnMovPosterToggle.BackColor = System.Drawing.Color.Lime
  11597. btn_IMPA_posters.Enabled = True
  11598. btn_MPDB_posters.Enabled = True
  11599. btn_IMDB_posters.Enabled = True
  11600. util_ImageLoad(PictureBoxAssignedMoviePoster, workingMovieDetails.fileinfo.posterpath, Utilities.DefaultPosterPath)
  11601. Call mov_PosterInitialise()
  11602. Else
  11603. btnMovPosterToggle.Text = "Show Movie Posters"
  11604. btnMovPosterToggle.BackColor = System.Drawing.Color.Aqua
  11605. btn_IMPA_posters.Enabled = False
  11606. btn_MPDB_posters.Enabled = False
  11607. btn_IMDB_posters.Enabled = False
  11608. util_ImageLoad(PictureBoxAssignedMoviePoster, workingMovieDetails.fileinfo.movsetposterpath, Utilities.DefaultPosterPath)
  11609. Call mov_PosterInitialise()
  11610. End If
  11611. MovPosterToggle = Not MovPosterToggle
  11612. End Sub
  11613. Private Function MoviePosterSave(Optional clipbrd As Boolean = False) As Boolean
  11614. If ImgBw.Isbusy Then
  11615. ImgBw.CancelAsync()
  11616. Do Until Not ImgBw.IsBusy
  11617. Application.DoEvents()
  11618. Loop
  11619. End If
  11620. Dim allok As Boolean = False
  11621. Try
  11622. Dim tempstring As String = ""
  11623. Dim tempint As Integer = 0
  11624. Dim realnumber As Integer = 0
  11625. Dim tempstring2 As String = ""
  11626. 'Dim allok As Boolean = False
  11627. Dim backup As String = ""
  11628. If messbox.Visible Then messbox.Close()
  11629. messbox = New frmMessageBox("Downloading Poster...")
  11630. messbox.Show()
  11631. If clipbrd Then
  11632. tempstring2 = PictureBoxAssignedMoviePoster.Tag.ToString
  11633. allok = True
  11634. Else
  11635. For Each button As Control In Me.panelAvailableMoviePosters.Controls
  11636. If button.Name.IndexOf("postercheckbox") <> -1 Then
  11637. Dim b1 As RadioButton = CType(button, RadioButton)
  11638. If b1.Checked = True Then
  11639. tempstring = b1.Name
  11640. If tempstring.IndexOf("postercheckbox") <> -1 Then
  11641. tempstring = tempstring.Replace("postercheckbox", "")
  11642. tempint = Convert.ToDecimal(tempstring)
  11643. If tempstring2 = Nothing Then
  11644. tempint = Convert.ToDecimal(tempstring)
  11645. tempint = tempint + ((currentPage - 1) * 10)
  11646. If cbMoviePosterSaveLoRes.Enabled = True Then
  11647. If cbMoviePosterSaveLoRes.CheckState = CheckState.Checked Then
  11648. tempstring2 = posterArray(tempint).ldUrl
  11649. Else
  11650. tempstring2 = posterArray(tempint).hdUrl
  11651. backup = posterArray(tempint).ldUrl
  11652. End If
  11653. Else
  11654. tempstring2 = posterArray(tempint).hdUrl
  11655. End If
  11656. allok = True
  11657. Exit For
  11658. End If
  11659. End If
  11660. End If
  11661. End If
  11662. Next
  11663. End If
  11664. If allok = False Then
  11665. MsgBox("No Poster Is Selected")
  11666. Return allok
  11667. End If
  11668. Try
  11669. If Not MovPosterToggle Then
  11670. util_ImageLoad(PictureBoxAssignedMoviePoster, Utilities.DefaultPosterPath, Utilities.DefaultPosterPath)
  11671. Dim Paths As List(Of String) = Pref.GetPosterPaths(workingMovieDetails.fileinfo.fullpathandfilename, workingMovieDetails.fileinfo.videotspath)
  11672. Dim success As Boolean = DownloadCache.SaveImageToCacheAndPaths(tempstring2, Paths, False, , ,True)
  11673. Dim path As String = Utilities.save2postercache(workingMovieDetails.fileinfo.fullpathandfilename, Paths(0), WallPicWidth, WallPicHeight)
  11674. updateposterwall(path, workingMovieDetails.fileinfo.fullpathandfilename)
  11675. util_ImageLoad(PictureBoxAssignedMoviePoster, Paths(0), Utilities.DefaultPosterPath)
  11676. util_ImageLoad(PbMoviePoster, Paths(0), Utilities.DefaultPosterPath)
  11677. lblCurrentLoadedPoster.Text = "Width: " & PictureBoxAssignedMoviePoster.Image.Width.ToString & " Height: " & PictureBoxAssignedMoviePoster.Image.Height.ToString
  11678. lblCurrentLoadedPoster.Refresh()
  11679. XbmcLink_UpdateArtwork()
  11680. Else
  11681. Dim MovSetPosterSavePath As String = workingMovieDetails.fileinfo.movsetposterpath
  11682. If MovSetPosterSavePath <> "" Then
  11683. Movie.SavePosterImageToCacheAndPath(tempstring2, MovSetPosterSavePath)
  11684. MovPanel6Update()
  11685. util_ImageLoad(PictureBoxAssignedMoviePoster, MovSetPosterSavePath, Utilities.DefaultPosterPath)
  11686. Else
  11687. messbox.Close()
  11688. MsgBox("!! Problem formulating correct save location for Poster" & vbCrLf & " Please check your settings")
  11689. End If
  11690. End If
  11691. Catch ex As Exception
  11692. ExceptionHandler.LogError(ex)
  11693. #If SilentErrorScream Then
  11694. Throw ex
  11695. #End If
  11696. End Try
  11697. UpdateMissingPoster()
  11698. Catch ex As Exception
  11699. ExceptionHandler.LogError(ex)
  11700. End Try
  11701. messbox.Close()
  11702. Return allok
  11703. End Function
  11704. #End Region
  11705. #Region "Movie Fanart.TV Tab"
  11706. Private Sub tpMovFanartTv_Leave(sender As Object, e As EventArgs) Handles tpMovFanartTv.Leave
  11707. If ImgBw.IsBusy Then
  11708. ImgBw.CancelAsync()
  11709. Do Until Not ImgBw.IsBusy
  11710. Application.DoEvents()
  11711. Loop
  11712. End If
  11713. Mov_PictureboxLoad()
  11714. End Sub
  11715. #End Region
  11716. #Region "Movie Sets & Tags Tab"
  11717. Private Sub MovieSetsAndTagsSetup() '' split this in Tags and Sets
  11718. MovSetDgvLoad()
  11719. MovSetArtworkCheck()
  11720. TagListBox.Items.Clear()
  11721. 'Here we clean up Pref.MovieTags, removing any that are also in the Tags database.
  11722. Dim ToRemove As New List(Of String)
  11723. For Each mtag In Pref.movietags
  11724. If Not IsNothing(mtag)
  11725. Dim q = From t In oMovies.TagDB Where t.TagName = mtag
  11726. If q.Count = 0 Then
  11727. TagListBox.Items.Add(mtag)
  11728. Else
  11729. ToRemove.Add(mtag)
  11730. End If
  11731. End If
  11732. Next
  11733. 'If any duplicate tags, remove them from Pref.MovieTags
  11734. If ToRemove.Count > 0 Then
  11735. For each t In ToRemove
  11736. Pref.movietags.Remove(t)
  11737. Next
  11738. End If
  11739. TagsPopulate()
  11740. End Sub
  11741. Sub TagsPopulate()
  11742. CurrentMovieTags.Items.Clear()
  11743. If DataGridViewMovies.SelectedRows.Count > 1 Then
  11744. lblMovTagMulti1.Visible = True
  11745. lblMovTagMulti2.Visible = True
  11746. Else
  11747. lblMovTagMulti1.Visible = False
  11748. lblMovTagMulti2.Visible = False
  11749. End If
  11750. For Each item As DataGridViewRow In DataGridViewMovies.SelectedRows
  11751. Dim filepath As String = item.Cells("fullpathandfilename").Value.ToString
  11752. Dim movie As Movie = oMovies.LoadMovie(filepath, False)
  11753. For Each ctag In movie.ScrapedMovie.fullmoviebody.tag
  11754. If Not IsNothing(ctag) Then
  11755. If Not CurrentMovieTags.Items.Contains(ctag) Then CurrentMovieTags.Items.Add(ctag)
  11756. End If
  11757. Next
  11758. Next
  11759. CurrentMovieTags.Refresh()
  11760. End Sub
  11761. #Region "Tag(s) Section"
  11762. Private Sub btnMovTagListAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnMovTagListAdd.Click
  11763. Try
  11764. If txtbxMovTagEntry.Text <> "" Then
  11765. Dim ex As Boolean = False
  11766. For Each mtag In Pref.movietags
  11767. If mtag.ToLower = txtbxMovTagEntry.Text.ToLower Then
  11768. ex = True
  11769. Exit For
  11770. End If
  11771. Next
  11772. If ex = False Then
  11773. Pref.movietags.Add(txtbxMovTagEntry.Text)
  11774. TagListBox.Items.Add(txtbxMovTagEntry.Text)
  11775. txtbxMovTagEntry.Clear()
  11776. Else
  11777. MsgBox("This Movie Tag Already Exists")
  11778. End If
  11779. End If
  11780. Catch ex As Exception
  11781. ExceptionHandler.LogError(ex)
  11782. End Try
  11783. End Sub
  11784. Private Sub btnMovTagListRemove_Click(sender As System.Object, e As System.EventArgs) Handles btnMovTagListRemove.Click
  11785. Try
  11786. For i = 0 To TagListBox.SelectedItems.Count - 1
  11787. Dim tempboolean As Boolean = False
  11788. If TagListBox.SelectedItems(i) <> Nothing And TagListBox.SelectedItems(i) <> "" Then
  11789. For Each mtag In Pref.movietags
  11790. If mtag = TagListBox.SelectedItems(i) Then
  11791. Pref.movietags.Remove(mtag)
  11792. Exit For
  11793. End If
  11794. Next
  11795. End If
  11796. Next
  11797. TagListBox.Items.Clear()
  11798. For Each mset In Pref.movietags
  11799. If Not IsNothing(mset) Then TagListBox.Items.Add(mset)
  11800. Next
  11801. Catch ex As Exception
  11802. ExceptionHandler.LogError(ex)
  11803. End Try
  11804. End Sub
  11805. Private Sub btnMovTagListRefresh_Click(sender As System.Object, e As System.EventArgs) Handles btnMovTagListRefresh.Click
  11806. Try
  11807. TagListBox.Items.Clear()
  11808. For x = 0 To oMovies.MovieCache.Count - 1
  11809. Dim movtag As List(Of String) = oMovies.MovieCache(x).movietag
  11810. For Each mtag In movtag
  11811. If Not TagListBox.Items.Contains(mtag) Then TagListBox.Items.Add(mtag)
  11812. Next
  11813. Next
  11814. Pref.movietags.Clear()
  11815. For Each mtag In Pref.movietags
  11816. If Not TagListBox.Items.Contains(mtag) Then TagListBox.Items.Add(mtag)
  11817. Next
  11818. UpdateFilteredList()
  11819. Catch ex As Exception
  11820. End Try
  11821. End Sub
  11822. Private Sub btnMovTagAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnMovTagAdd.Click
  11823. Try
  11824. Dim MultiMovie As Boolean = DataGridViewMovies.SelectedRows.Count > 1
  11825. If TagListBox.SelectedIndex <> -1 Then
  11826. For Each item In TagListBox.SelectedItems
  11827. If item = "" Then Exit For
  11828. If Not CurrentMovieTags.Items.Contains("+ " & item) Then
  11829. If CurrentMovieTags.Items.Contains("- " & item) Then
  11830. Dim i As Integer = CurrentMovieTags.Items.IndexOf("- " & item)
  11831. CurrentMovieTags.Items(i) = item
  11832. ElseIf CurrentMovieTags.Items.Contains(item) Then
  11833. Dim i As Integer = CurrentMovieTags.Items.IndexOf(item)
  11834. CurrentMovieTags.Items(i) = "+ " & item
  11835. Else
  11836. CurrentMovieTags.Items.Add("+ " & item)
  11837. End If
  11838. End If
  11839. Next
  11840. End If
  11841. Catch
  11842. End Try
  11843. End Sub
  11844. Private Sub btnMovTagRemove_Click(sender As System.Object, e As System.EventArgs) Handles btnMovTagRemove.Click
  11845. Try
  11846. Dim MultiMovie As Boolean = DataGridViewMovies.SelectedRows.Count > 1
  11847. If CurrentMovieTags.SelectedIndex <> -1 Then
  11848. Dim i As Integer = CurrentMovieTags.SelectedIndex
  11849. Dim item As String = CurrentMovieTags.Items(i)
  11850. If item.Contains("+ ") Then
  11851. CurrentMovieTags.Items.RemoveAt(i)
  11852. Exit Sub
  11853. End If
  11854. If item.Contains("- ") Then Exit Sub
  11855. item = "- " & item
  11856. CurrentMovieTags.Items(i) = item
  11857. End If
  11858. Catch
  11859. End Try
  11860. End Sub
  11861. Private Sub btnMovTagSavetoNfo_Click(sender As System.Object, e As System.EventArgs) Handles btnMovTagSavetoNfo.Click
  11862. Try
  11863. If CurrentMovieTags.Items.Count <> -1 Then
  11864. NewTagList.Clear()
  11865. For Each tags In CurrentMovieTags.Items
  11866. NewTagList.Add(tags)
  11867. Next
  11868. Call mov_SaveQuick()
  11869. End If
  11870. Catch ex As Exception
  11871. End Try
  11872. End Sub
  11873. Private Sub txtbxMovTagEntry_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtbxMovTagEntry.KeyPress
  11874. If e.KeyChar = Convert.ToChar(Keys.Enter) Then
  11875. btnMovTagListAdd.PerformClick()
  11876. 'This tells the system not to process
  11877. 'the key, as you've already taken care
  11878. 'of it
  11879. e.Handled = True
  11880. End If
  11881. End Sub
  11882. #End Region 'Tag(s) Section
  11883. #Region "Movie Set Routines"
  11884. ''' <summary>
  11885. ''' Main column with a list of all known movie sets (both themoviedb.org and manual sets)
  11886. ''' </summary>
  11887. Private Sub MovSetDgvLoad()
  11888. Dim MsetCache As New List(Of MovieSetInfo)
  11889. oMovies.LoadMovieSetCache(MsetCache, "movieset", Pref.workingProfile.MovieSetCache)
  11890. dgvMovieSets.Rows.Clear()
  11891. dgvmovset.Rows.Clear() '' will be deleted later with the moviesets&tags tab
  11892. Pref.moviesets.Sort()
  11893. For Each mset In Pref.moviesets
  11894. '' will be deleted later with the moviesets&tags tab
  11895. If mset <> "-None-" Then
  11896. Dim row As DataGridViewRow = DirectCast(dgvmovset.RowTemplate.Clone(), DataGridViewRow)
  11897. Dim msetid As String = ""
  11898. For Each movset In MsetCache
  11899. If movset.MovieSetName.ToLower = mset.ToLower Then
  11900. msetid = movset.MovieSetId
  11901. Exit For
  11902. End If
  11903. Next
  11904. row.CreateCells(dgvmovset, mset, If(msetid <> "", Global.Media_Companion.My.Resources.Resources.correct, Global.Media_Companion.My.Resources.Resources.incorrect))
  11905. If msetid <> "" Then row.Cells(1).Tag = msetid
  11906. dgvmovset.Rows.Add(row)
  11907. End If
  11908. '' End of what must be deleted later
  11909. If mset <> "-None-" Then
  11910. Dim row As DataGridViewRow = DirectCast(dgvMovieSets.RowTemplate.Clone(), DataGridViewRow)
  11911. Dim msetid As String = ""
  11912. For Each movset In MsetCache
  11913. If movset.MovieSetName.ToLower = mset.ToLower Then
  11914. msetid = movset.MovieSetId
  11915. Exit For
  11916. End If
  11917. Next
  11918. '' fanart and poster columns not functional yet!
  11919. ' if a set has films but not completed, then show missing
  11920. ' if a set has all movies, then show is correct (change to complete)
  11921. ' if a set is done manually don't show themoviedb ID at all (empty) but some other marking (other color?)
  11922. If msetid = String.Empty Then
  11923. row.CreateCells(dgvMovieSets, mset, Global.Media_Companion.My.Resources.Resources.error24)
  11924. ElseIf msetid.Chars(0) = "L" Then
  11925. row.CreateCells(dgvMovieSets, mset, Global.Media_Companion.My.Resources.Resources.correct_manual24)
  11926. Else
  11927. row.CreateCells(dgvMovieSets, mset, Global.Media_Companion.My.Resources.Resources.correct)
  11928. End If
  11929. ' row.CreateCells(dgvMovieSettings, mset, If(msetid <> "", Global.Media_Companion.My.Resources.Resources.correct, Global.Media_Companion.My.Resources.Resources.error24))
  11930. If msetid <> "" Then row.Cells(1).Tag = msetid
  11931. dgvMovieSets.Rows.Add(row)
  11932. End If
  11933. Next
  11934. End Sub
  11935. ''' <summary>
  11936. ''' Get the proper movie set
  11937. ''' </summary>
  11938. ''' <param name="MovieSetName"></param>
  11939. ''' <returns></returns>
  11940. 'Private Function GetMovSet(MovieSetName As String) As MovieSetInfo
  11941. ' Dim q As New MovieSetInfo
  11942. ' For Each p In oMovies.MovieSetDB
  11943. ' If p.MovieSetName = MovieSetName Then
  11944. ' q = p
  11945. ' Exit For
  11946. ' End If
  11947. ' Next
  11948. ' Return q
  11949. ' '' need something here for later as we shouldn't get here anyway
  11950. 'End Function
  11951. ''' <summary>
  11952. ''' Not sure how this happens. But sometimes a movie/item is added twice to the set.
  11953. ''' should be make obsolete once this error has been found. Keep it active just to be sure though?
  11954. ''' </summary>
  11955. Private Sub removeDoubleItems(MovSet As MovieSetInfo)
  11956. Dim itemToDelete(MovSet.Collection.Count - 1) As Boolean 'array to hold the items which are double and needs to be deleted
  11957. ' Find out which items are double in the MovSet Collection
  11958. For item As Integer = 0 To itemToDelete.Length - 1
  11959. For item2 As Integer = item + 1 To itemToDelete.Length - 1
  11960. If Not (item = item2) Then
  11961. If MovSet.Collection(item2).TmdbMovieId = MovSet.Collection(item).TmdbMovieId Then
  11962. itemToDelete(item2) = True
  11963. End If
  11964. End If
  11965. Next
  11966. Next
  11967. ' Now delete the double items (backwards of course)
  11968. For item As Integer = itemToDelete.Length - 1 To 0 Step -1
  11969. If itemToDelete(item) = True Then
  11970. MovSet.Collection.RemoveAt(item)
  11971. End If
  11972. Next
  11973. End Sub
  11974. ''' <summary>
  11975. ''' Region to fill the current movies in the selected collection
  11976. ''' </summary>
  11977. ''' <param name="sender"></param>
  11978. ''' <param name="e"></param>
  11979. Private Sub dgvMovieSets_CellEnter(sender As Object, e As DataGridViewCellEventArgs) Handles dgvMovieSets.CellEnter
  11980. Try
  11981. Application.DoEvents()
  11982. messbox = New frmMessageBox("Getting Collection data from TMDb.", "......", "Please Wait")
  11983. Dim found As Boolean = False
  11984. If e.ColumnIndex < 0 Or e.RowIndex < 0 Then Exit Sub
  11985. Dim MsetName As String = dgvMovieSets.Rows(e.RowIndex).Cells(0).Value
  11986. Dim MovSet As MovieSetInfo = oMovies.FindMovieSetInfoByName(MsetName) 'GetMovSet(MsetName)
  11987. removeDoubleItems(MovSet)
  11988. Dim matchedmovies As New List(Of FullMovieDetails)
  11989. For Each Mov As ComboList In oMovies.MovieCache
  11990. If Mov.MovieSet.MovieSetId = MovSet.MovieSetId Then
  11991. Dim filepath As String = Mov.fullpathandfilename
  11992. Dim fmd As New FullMovieDetails
  11993. fmd = WorkingWithNfoFiles.mov_NfoLoadFull(filepath)
  11994. matchedmovies.Add(fmd)
  11995. End If
  11996. Next
  11997. If matchedmovies.Count = 0 Then
  11998. MsgBox("No movies found for this collection" & vbCrLf & "recommend click ""Repopulate from Used""" & vbCrLf & "to update your Collection List")
  11999. Exit Sub
  12000. End If
  12001. If matchedmovies.Count > MovSet.Collection.Count Then
  12002. '' Obviously 1 or more of our movies are linked to a movie set they don't belong to!
  12003. ' fix this (aliens is one of those)
  12004. End If
  12005. Dim MovCollectionList As New List(Of MovieSetDatabase)
  12006. For Each mset In oMovies.MovieSetDB
  12007. If mset.MovieSetId = MovSet.MovieSetId Then
  12008. If mset.Collection.Count > 0 Then
  12009. For Each collect In mset.Collection
  12010. Dim ac As New MovieSetDatabase
  12011. ac.title = collect.MovieTitle
  12012. ac.tmdbid = collect.TmdbMovieId
  12013. MovCollectionList.Add(ac)
  12014. Next
  12015. Exit For
  12016. 'Else
  12017. 'System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  12018. 'messbox.Show()
  12019. 'messbox.Refresh()
  12020. 'Application.DoEvents()
  12021. 'Try
  12022. ' Dim api As New TMDb
  12023. ' api.SetId = MovSet.MovieSetId
  12024. ' 'This should never be called for the scenarios discussed below
  12025. ' MovCollectionList = api.Collection
  12026. 'Catch ex As Exception
  12027. ' If ex.Message.Contains("TMDB") Then
  12028. ' messbox.Close()
  12029. ' MsgBox("Issue getting data from TMDB")
  12030. ' Exit Sub
  12031. ' End If
  12032. 'End Try
  12033. 'If MovCollectionList.Count > 0 Then
  12034. ' For Each Mcol In MovCollectionList
  12035. 'Scenarios...movie is a...
  12036. '1. Normal movie not in a tmdb set -> Nothing to change here
  12037. '2. Normal movie in a tmdb set -> Nothing to change here, TMDb.vb's MovieSet property has already assigned this correctly from tmdb
  12038. '3. User has created his own collection and assigned it to a movie not in a tmdb set -> Nothing to change here, just save the collection name in Config
  12039. '4. User has created his own collection and assigned it to a movie in a tmdb set -> Nothing to change here, the change will be saved in the movies NFO file
  12040. '5. User has added a movie to a tmdb set -> Nothing to change here, the change will be saved in the movies NFO file
  12041. 'Rob : Let me know if you agree or disagree with the above \ pass me any scenarios not covered above and I'll try to help come up with a matually acceptable solution
  12042. 'This should never be called. MovieSetDB must be assigned solely from Tmdb:
  12043. 'Dim coll As New CollectionMovie
  12044. 'coll.TmdbMovieId = Mcol.tmdbid
  12045. 'coll.MovieTitle = Mcol.title
  12046. 'mset.Collection.Add(coll)
  12047. ' Next
  12048. 'End If
  12049. 'Exit For
  12050. End If
  12051. End If
  12052. Next
  12053. If Not IsNothing(messbox) Then messbox.Close()
  12054. For Each x In MovCollectionList
  12055. For Each y In matchedmovies
  12056. If y.fullmoviebody.tmdbid = x.tmdbid Then
  12057. found = True
  12058. x.present = True
  12059. Exit For
  12060. End If
  12061. Next
  12062. Next
  12063. If Not found Then
  12064. Dim message As String = matchedmovies.Count & " Movie(s) found for: " & MovSet.MovieSetName & vbCrLf & "But no TMBD ID's match" & vbCrLf
  12065. message &= "Recommend Batch Wizard to populate movie's TMDb Id's" & vbCrLf
  12066. message &= "Select ""Attempt to Locate & Download Fanart for Movies""" & vbCrLf & "is sufficient to populate TMBD Id"
  12067. MsgBox(message)
  12068. Exit Sub
  12069. End If
  12070. If Not IsNothing(messbox) Then messbox.Close()
  12071. 'lbl_CollectionTitle.Text = MovSet.MovieSetName
  12072. tbMovieSetTitle.Text = MovSet.MovieSetName
  12073. ' vincent add text title
  12074. DataGridViewSelectedMovieSet.Rows.Clear()
  12075. For Each item In MovCollectionList
  12076. Dim row As DataGridViewRow = DirectCast(DataGridViewSelectedMovieSet.RowTemplate.Clone(), DataGridViewRow)
  12077. row.CreateCells(DataGridViewSelectedMovieSet, If(item.present, Global.Media_Companion.My.Resources.Resources.correct, Global.Media_Companion.My.Resources.Resources.missing24), item.title)
  12078. DataGridViewSelectedMovieSet.Rows.Add(row)
  12079. Next
  12080. Catch ex As Exception
  12081. ExceptionHandler.LogError(ex)
  12082. Finally
  12083. If Not IsNothing(messbox) Then messbox.Close()
  12084. End Try
  12085. End Sub
  12086. Private Sub btnMovieSetAddOld_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovieSetAddOld.Click
  12087. Try
  12088. If tbMovSetEntry.Text <> "" Then
  12089. Dim ex As Boolean = False
  12090. For Each mset In Pref.moviesets
  12091. If mset.ToLower = tbMovSetEntry.Text.ToLower Then
  12092. ex = True
  12093. Exit For
  12094. End If
  12095. Next
  12096. If ex = False Then
  12097. Pref.moviesets.Add(tbMovSetEntry.Text)
  12098. Pref.moviesets.Sort()
  12099. MovSetDgvLoad()
  12100. pop_cbMovieDisplay_MovieSet()
  12101. tbMovSetEntry.Clear()
  12102. Else
  12103. MsgBox("This Movie Set Already Exists")
  12104. End If
  12105. End If
  12106. Catch ex As Exception
  12107. ExceptionHandler.LogError(ex)
  12108. End Try
  12109. End Sub
  12110. Private Sub btnMovieSetAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMovieSetAdd.Click
  12111. Try
  12112. Dim newForm As New frmMovSetAdd()
  12113. newForm.ShowDialog()
  12114. MovSetDgvLoad()
  12115. pop_cbMovieDisplay_MovieSet()
  12116. Catch ex As Exception
  12117. ExceptionHandler.LogError(ex)
  12118. End Try
  12119. End Sub
  12120. Private Sub tbMovSetEntry_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles tbMovSetEntry.KeyPress
  12121. If e.KeyChar = Convert.ToChar(Keys.Enter) Then
  12122. btnMovieSetAddOld.PerformClick()
  12123. e.Handled = True
  12124. End If
  12125. End Sub
  12126. Private Sub btnMovieSetRemoveOld_Click(sender As Object, e As EventArgs) Handles btnMovieSetRemoveOld.Click
  12127. Try
  12128. Dim SelectedMovieSet As String = dgvmovset.SelectedCells(0).Value
  12129. If Not RemoveFromMovieSetCache(SelectedMovieSet) Then
  12130. MsgBox("Setname selected is already allocated to a" & vbCrLf & " movie in Media Companions cache" & vbCrLf & " unable to remove is in use.")
  12131. Exit Sub
  12132. End If
  12133. Pref.moviesets.Remove(SelectedMovieSet)
  12134. dgvmovset.Rows.RemoveAt(dgvmovset.CurrentRow.Index)
  12135. pop_cbMovieDisplay_MovieSet()
  12136. Catch ex As Exception
  12137. ExceptionHandler.LogError(ex)
  12138. End Try
  12139. End Sub
  12140. Private Sub btnMovieSetRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  12141. Try
  12142. Dim SelectedMovieSet As String = dgvMovieSets.SelectedCells(0).Value
  12143. If Not RemoveFromMovieSetCache(SelectedMovieSet) Then
  12144. MsgBox("Setname selected is already allocated to a" & vbCrLf & " movie in Media Companions cache" & vbCrLf & " unable to remove is in use.")
  12145. Exit Sub
  12146. End If
  12147. Pref.moviesets.Remove(SelectedMovieSet)
  12148. dgvMovieSets.Rows.RemoveAt(dgvMovieSets.CurrentRow.Index)
  12149. pop_cbMovieDisplay_MovieSet()
  12150. Catch ex As Exception
  12151. ExceptionHandler.LogError(ex)
  12152. End Try
  12153. End Sub
  12154. Private Sub btnMovieSetsRepopulateFromUsed_Click(sender As System.Object, e As System.EventArgs) Handles btnMovieSetsRepopulateFromUsed.Click
  12155. MovSetsRepopulate()
  12156. MovSetDgvLoad()
  12157. MovSetArtworkCheck()
  12158. pop_cbMovieDisplay_MovieSet()
  12159. End Sub
  12160. Private Sub MovSetsRepopulate()
  12161. Pref.moviesets.Clear()
  12162. Pref.moviesets.Add("-None-")
  12163. Pref.moviesets.AddRange(oMovies.MoviesSetsExNone)
  12164. 'oMovies.SaveMovieSetCache()
  12165. End Sub
  12166. Private Sub MovSetArtworkCheck()
  12167. For Each row As DataGridViewRow In dgvmovset.Rows
  12168. Dim mset As String = row.Cells(0).Value
  12169. For Each mov In oMovies.MovieCache
  12170. If mov.MovieSet.MovieSetName = mset Then
  12171. Dim movsetfanart As String = Pref.GetMovSetFanartPath(mov.fullpathandfilename, mset)
  12172. Dim movsetposter As String = Pref.GetMovSetPosterPath(mov.fullpathandfilename, mset)
  12173. If File.Exists(movsetfanart) Then
  12174. row.Cells(2).Value = Global.Media_Companion.My.Resources.Resources.correct
  12175. row.Cells(2).Tag = movsetfanart
  12176. Else
  12177. row.Cells(2).Value = Global.Media_Companion.My.Resources.Resources.incorrect
  12178. row.Cells(2).Tag = Nothing
  12179. End If
  12180. If File.Exists(movsetposter) Then
  12181. row.Cells(3).Value = Global.Media_Companion.My.Resources.Resources.correct
  12182. row.Cells(3).Tag = movsetposter
  12183. Else
  12184. row.Cells(3).Value = Global.Media_Companion.My.Resources.Resources.incorrect
  12185. row.Cells(3).Tag = Nothing
  12186. End If
  12187. Exit For
  12188. End If
  12189. Next
  12190. Next
  12191. For Each row As DataGridViewRow In dgvMovieSets.Rows
  12192. Dim mset As String = row.Cells(0).Value
  12193. For Each mov In oMovies.MovieCache
  12194. If mov.MovieSet.MovieSetName = mset Then
  12195. Dim movsetfanart As String = Pref.GetMovSetFanartPath(mov.fullpathandfilename, mset)
  12196. Dim movsetposter As String = Pref.GetMovSetPosterPath(mov.fullpathandfilename, mset)
  12197. If File.Exists(movsetfanart) Then
  12198. row.Cells(2).Value = Global.Media_Companion.My.Resources.Resources.correct
  12199. row.Cells(2).Tag = movsetfanart
  12200. Else
  12201. row.Cells(2).Value = Global.Media_Companion.My.Resources.Resources.incorrect
  12202. row.Cells(2).Tag = Nothing
  12203. End If
  12204. If File.Exists(movsetposter) Then
  12205. row.Cells(3).Value = Global.Media_Companion.My.Resources.Resources.correct
  12206. row.Cells(3).Tag = movsetposter
  12207. Else
  12208. row.Cells(3).Value = Global.Media_Companion.My.Resources.Resources.incorrect
  12209. row.Cells(3).Tag = Nothing
  12210. End If
  12211. Exit For
  12212. End If
  12213. Next
  12214. Next
  12215. End Sub
  12216. Private Sub dgvmovset_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles dgvmovset.MouseDoubleClick
  12217. Dim columnno As Integer = dgvmovset.SelectedCells(0).ColumnIndex
  12218. If columnno < 2 Then Exit Sub
  12219. If dgvmovset.SelectedCells(0).Tag <> Nothing Then
  12220. util_ZoomImage(dgvmovset.SelectedCells(0).Tag.ToString)
  12221. End If
  12222. End Sub
  12223. 'Private Sub dgvmovset_MouseDown(sender As Object, e As MouseEventArgs) Handles dgvmovset.MouseDown
  12224. ' Dim Fail As Boolean = False
  12225. ' If Not e.Button = MouseButtons.Right Then Exit Sub
  12226. ' Dim ColIndexFromMouseDown = dgvmovset.HitTest(e.X, e.Y).ColumnIndex
  12227. ' If ColIndexFromMouseDown < 0 Then
  12228. ' tsmiMovSetName.Text = ""
  12229. ' Exit Sub
  12230. ' End If
  12231. ' Dim RowIndexFromMouseDown = dgvmovset.HitTest(e.X, e.Y).RowIndex
  12232. ' If RowIndexFromMouseDown < 0 Then Exit Sub
  12233. ' messbox = New frmMessageBox("Updating Movies in this collection with", "entered Set ID")
  12234. ' Dim MsetName As String = dgvmovset.Rows(RowIndexFromMouseDown).Cells(0).Value
  12235. ' If ColIndexFromMouseDown = 1 Then
  12236. ' Try
  12237. ' 'Dim MsetName As String = dgvmovset.Rows(RowIndexFromMouseDown).Cells(0).Value
  12238. ' If MsetName = "" Then
  12239. ' MsgBox("", "No Movie Set Title!", "")
  12240. ' Exit Sub
  12241. ' End If
  12242. ' Dim CurrentTMDbId As String = ""
  12243. ' Dim MsetCache As New List(Of MovieSetInfo)
  12244. ' oMovies.LoadMovieSetCache(MsetCache, "movieset", Pref.workingProfile.MovieSetCache)
  12245. ' Dim q = From x In MsetCache Where x.MovieSetName = MsetName Select x.MovieSetId
  12246. ' If q.Count > 0 Then 'AndAlso q.ToString <> Nothing AndAlso q.ToString <> "Enumeration yielded no results"
  12247. ' CurrentTMDbId = q(0).ToString
  12248. ' End If
  12249. ' Dim iboxmsg As String = "Enter TMDB Set ID:"
  12250. ' If CurrentTMDbId <> "" Then iboxmsg = "Replace current TMDB Set ID?:"
  12251. ' Dim NewTMDBID As String = InputBox(iboxmsg & vbCrLf & "Note: Numerical only!", "TMDB Set ID", CurrentTMDbId)
  12252. ' If NewTMDBID = "" Then Exit Sub
  12253. ' If Regex.IsMatch(NewTMDBID, "^[0-9]+$") Then
  12254. ' messbox.Show()
  12255. ' messbox.Refresh()
  12256. ' Application.DoEvents()
  12257. ' 'oMovies.LoadMovieSetCache(MsetCache, "movieset", Pref.workingProfile.moviesetcache)
  12258. ' Dim found As Boolean = False
  12259. ' For Each s As MovieSetInfo In oMovies.MovieSetDB 'MsetCache
  12260. ' If s.MovieSetName = MsetName Then
  12261. ' If s.MovieSetId <> NewTMDBID Then
  12262. ' If s.MovieSetId <> "" Then
  12263. ' Dim tempint = MsgBox("This Set already has an ID" & vbCrLf & "Are you sure you wish to overwrite?", MessageBoxButtons.YesNoCancel)
  12264. ' If tempint = Windows.Forms.DialogResult.No Or tempint = DialogResult.Cancel Then
  12265. ' Fail = True
  12266. ' Exit For
  12267. ' End If
  12268. ' End If
  12269. ' s.MovieSetId = NewTMDBID
  12270. ' oMovies.SaveMovieSetCache()
  12271. ' 'oMovies.SaveMovieSetCache(MsetCache, "movieset", Pref.workingProfile.moviesetcache)
  12272. ' found = True
  12273. ' Exit For
  12274. ' End If
  12275. ' End If
  12276. ' Next
  12277. ' If Not Fail Then
  12278. ' If Not found Then
  12279. ' Dim newset As New MovieSetInfo
  12280. ' newset.MovieSetName = MsetName
  12281. ' newset.MovieSetId = NewTMDBID
  12282. ' oMovies.MovieSetDB.Add(newset)
  12283. ' oMovies.SaveMovieSetCache()
  12284. ' End If
  12285. ' dgvmovset.Rows(RowIndexFromMouseDown).Cells(ColIndexFromMouseDown).Value = Global.Media_Companion.My.Resources.Resources.correct
  12286. ' Dim matchedmovies As New List(Of String)
  12287. ' For Each Mov As ComboList In oMovies.MovieCache
  12288. ' If Mov.MovieSet.MovieSetName = MsetName Then
  12289. ' Mov.MovieSet.MovieSetId = NewTMDBID
  12290. ' Dim filepath As String = Mov.fullpathandfilename
  12291. ' Dim fmd As New FullMovieDetails
  12292. ' fmd = WorkingWithNfoFiles.mov_NfoLoadFull(filepath)
  12293. ' fmd.fullmoviebody.MovieSet.MovieSetId = NewTMDBID
  12294. ' Movie.SaveNFO(filepath, fmd)
  12295. ' End If
  12296. ' Next
  12297. ' End If
  12298. ' Else
  12299. ' Fail = True
  12300. ' MsgBox("Invalid ID." & vbCrLf & "Numerical Only!", , "Invalid TMDB Set ID")
  12301. ' End If
  12302. ' Catch
  12303. ' End Try
  12304. ' ElseIf ColIndexFromMouseDown = 0 Then
  12305. ' tsmiMovSetName.Text = MsetName
  12306. ' tsmiMovSetShowCollection.Visible = True
  12307. ' tsmiMovSetGetFanart.Visible = False
  12308. ' tsmiMovSetGetPoster.Visible = False
  12309. ' ElseIf ColIndexFromMouseDown = 2 Then
  12310. ' tsmiMovSetName.Text = MsetName
  12311. ' tsmiMovSetShowCollection.Visible = False
  12312. ' tsmiMovSetGetFanart.Visible = True
  12313. ' tsmiMovSetGetPoster.Visible = False
  12314. ' ElseIf ColIndexFromMouseDown = 3 Then
  12315. ' tsmiMovSetName.Text = MsetName
  12316. ' tsmiMovSetShowCollection.Visible = False
  12317. ' tsmiMovSetGetFanart.Visible = False
  12318. ' tsmiMovSetGetPoster.Visible = True
  12319. ' End If
  12320. ' messbox.Close()
  12321. ' messbox = Nothing
  12322. ' If Fail Then Exit Sub
  12323. 'End Sub
  12324. Private Sub MovSetsContextMenu_Opening(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MovSetsContextMenu.Opening
  12325. If tsmiMovSetName.Text = "" Then
  12326. e.Cancel = True
  12327. End If
  12328. tsmiMovSetName.BackColor = Color.Honeydew
  12329. tsmiMovSetName.Font = New Font("Arial", 10, FontStyle.Bold)
  12330. End Sub
  12331. 'Private Sub tsmiMovSetShowCollection_Click(sender As System.Object, e As System.EventArgs) Handles tsmiMovSetShowCollection.Click
  12332. ' Try
  12333. ' MovSetsContextMenu.Close()
  12334. ' Application.DoEvents()
  12335. ' messbox = New frmMessageBox("Getting Collection data from TMDb.", "......", "Please Wait")
  12336. ' Dim found As Boolean = False
  12337. ' Dim MovSet As MovieSetInfo = GetMovSetDetails()
  12338. ' Dim matchedmovies As New List(Of FullMovieDetails)
  12339. ' For Each Mov As ComboList In oMovies.MovieCache
  12340. ' If Mov.MovieSet.MovieSetId = MovSet.MovieSetId Then
  12341. ' Dim filepath As String = Mov.fullpathandfilename
  12342. ' Dim fmd As New FullMovieDetails
  12343. ' fmd = WorkingWithNfoFiles.mov_NfoLoadFull(filepath)
  12344. ' matchedmovies.Add(fmd)
  12345. ' End If
  12346. ' Next
  12347. ' If matchedmovies.Count = 0 Then
  12348. ' MsgBox("No movies found for this collection" & vbCrLf & "recommend click ""Repopulate from Used""" & vbCrLf & "to update your Collection List")
  12349. ' Exit Sub
  12350. ' End If
  12351. ' Dim MovCollectionList As New List(Of MovieSetDatabase)
  12352. ' For Each mset In oMovies.MovieSetDB
  12353. ' If mset.MovieSetId = MovSet.MovieSetId Then
  12354. ' If mset.Collection.Count > 0 Then
  12355. ' For Each collect In mset.Collection
  12356. ' Dim ac As New MovieSetDatabase
  12357. ' ac.title = collect.MovieTitle
  12358. ' ac.tmdbid = collect.TmdbMovieId
  12359. ' MovCollectionList.Add(ac)
  12360. ' Next
  12361. ' Exit For
  12362. ' Else
  12363. ' System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  12364. ' messbox.Show()
  12365. ' messbox.Refresh()
  12366. ' Application.DoEvents()
  12367. ' Try
  12368. ' Dim api As New TMDb
  12369. ' api.SetId = MovSet.MovieSetId
  12370. ' MovCollectionList = api.Collection
  12371. ' Catch ex As Exception
  12372. ' If ex.Message.Contains("TMDB") Then
  12373. ' messbox.Close()
  12374. ' MsgBox("Issue getting data from TMDB")
  12375. ' Exit Sub
  12376. ' End If
  12377. ' End Try
  12378. ' If MovCollectionList.Count > 0 Then
  12379. ' For Each Mcol In MovCollectionList
  12380. ' Dim coll As New CollectionMovie
  12381. ' coll.TmdbMovieId = Mcol.tmdbid
  12382. ' coll.MovieTitle = Mcol.title
  12383. ' mset.Collection.Add(coll)
  12384. ' Next
  12385. ' End If
  12386. ' Exit For
  12387. ' End If
  12388. ' End If
  12389. ' Next
  12390. ' If Not IsNothing(messbox) Then messbox.Close()
  12391. ' For Each x In MovCollectionList
  12392. ' For Each y In matchedmovies
  12393. ' If y.fullmoviebody.tmdbid = x.tmdbid Then
  12394. ' found = True
  12395. ' x.present = True
  12396. ' Exit For
  12397. ' End If
  12398. ' Next
  12399. ' Next
  12400. ' If Not found Then
  12401. ' Dim message As String = matchedmovies.Count & " Movie(s) found for: " & MovSet.MovieSetName & vbCrLf & "But no TMBD ID's match" & vbCrLf
  12402. ' message &= "Recommend Batch Wizard to populate movie's TMDb Id's" & vbCrLf
  12403. ' message &= "Select ""Attempt to Locate & Download Fanart for Movies""" & vbCrLf & "is sufficient to populate TMBD Id"
  12404. ' MsgBox(message)
  12405. ' Exit Sub
  12406. ' End If
  12407. ' If Not IsNothing(messbox) Then messbox.Close()
  12408. ' Dim frm As New frmMovSets
  12409. ' frm.CollectionTitle = MovSet.MovieSetName
  12410. ' frm.Collection = MovCollectionList
  12411. ' frm.Init()
  12412. ' frm.ShowDialog()
  12413. ' Catch ex As Exception
  12414. ' ExceptionHandler.LogError(ex)
  12415. ' Finally
  12416. ' If Not IsNothing(messbox) Then messbox.Close()
  12417. ' End Try
  12418. 'End Sub
  12419. Private Sub tsmiMovSetGetFanart_Click(sender As System.Object, e As System.EventArgs) Handles tsmiMovSetGetFanart.Click
  12420. Try
  12421. Dim MovSet As MovieSetInfo = GetMovSetDetails()
  12422. If MovSet.MovieSetId = "" Then Exit Sub
  12423. For f = 0 To DataGridViewMovies.RowCount - 1
  12424. If DataGridViewMovies.Rows(f).Cells("movieset").Value.MovieSetName = MovSet.MovieSetName Then
  12425. DataGridViewMovies.ClearSelection()
  12426. DataGridViewMovies.Rows(f).Selected = True
  12427. DisplayMovie()
  12428. mov_FanartGet(True)
  12429. MovSetArtworkCheck()
  12430. Exit For
  12431. End If
  12432. Next
  12433. Catch ex As Exception
  12434. ExceptionHandler.LogError(ex)
  12435. End Try
  12436. End Sub
  12437. Private Sub tsmiMovSetGetPoster_Click(sender As System.Object, e As System.EventArgs) Handles tsmiMovSetGetPoster.Click
  12438. Try
  12439. Dim MovSet As MovieSetInfo = GetMovSetDetails()
  12440. If MovSet.MovieSetId = "" Then Exit Sub
  12441. For f = 0 To DataGridViewMovies.RowCount - 1
  12442. If DataGridViewMovies.Rows(f).Cells("movieset").Value.MovieSetName = MovSet.MovieSetName Then
  12443. DataGridViewMovies.ClearSelection()
  12444. DataGridViewMovies.Rows(f).Selected = True
  12445. DisplayMovie()
  12446. mov_PosterGet("tmdb", True)
  12447. MovSetArtworkCheck()
  12448. Exit For
  12449. End If
  12450. Next
  12451. Catch ex As Exception
  12452. ExceptionHandler.LogError(ex)
  12453. End Try
  12454. End Sub
  12455. Private Function GetMovSetDetails() As MovieSetInfo
  12456. Dim t As New MovieSetInfo
  12457. For Each p In oMovies.MovieSetDB
  12458. If p.MovieSetName = tsmiMovSetName.Text Then
  12459. t = p
  12460. Exit For
  12461. End If
  12462. Next
  12463. Return t
  12464. End Function
  12465. 'Private Sub tsmiMovieSetIdCheck_Click(sender As Object, e As EventArgs) Handles tsmiMovieSetIdCheck.Click
  12466. ' Application.DoEvents()
  12467. ' rescrapeList.ResetFields()
  12468. ' _rescrapeList.FullPathAndFilenames.Clear()
  12469. ' Dim MovieSetIds As New List(Of String)
  12470. ' For Each movie As ComboList In oMovies.MovieCache
  12471. ' If movie.MovieSet.MovieSetName.ToLower <> "-none-" Then
  12472. ' MovieSetIds.Add(movie.MovieSet.MovieSetId)
  12473. ' If movie.MovieSet.MovieSetId = "" Or movie.tmdbid = "" Then
  12474. ' _rescrapeList.FullPathAndFilenames.Add(movie.fullpathandfilename)
  12475. ' End If
  12476. ' End If
  12477. ' Next
  12478. ' If Not _rescrapeList.FullPathAndFilenames.Count = 0 Then
  12479. ' rescrapeList.tmdb_set_id = True
  12480. ' RunBackgroundMovieScrape("BatchRescrape")
  12481. ' End If
  12482. ' If MovieSetIds.Count > 0 Then RebuildMovieSetCollectionList(MovieSetIds)
  12483. ' UpdateFilteredList()
  12484. 'End Sub
  12485. 'Private Sub RebuildMovieSetCollectionList(ByVal SetIds As List(Of String))
  12486. ' Try
  12487. ' messbox = New frmMessageBox("Updating Movie Collections", "with Movies in the collection", "...Checking TMDB is accessible...")
  12488. ' System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  12489. ' messbox.Show()
  12490. ' messbox.Refresh()
  12491. ' Application.DoEvents()
  12492. ' If Not Utilities.UrlIsValid("https://api.themoviedb.org") Then
  12493. ' MsgBox("TMDB not accessible," & vbCrLf & "Try again later")
  12494. ' Exit Sub
  12495. ' End If
  12496. ' SetIds.Sort()
  12497. ' For x As Integer = SetIds.Count - 1 To 1 Step -1
  12498. ' If SetIds(x) = SetIds(x - 1) Then SetIds.RemoveAt(x)
  12499. ' Next x
  12500. ' Dim totalsets As Integer = SetIds.Count
  12501. ' Dim currentset As Integer = 0
  12502. ' For Each item In SetIds
  12503. ' currentset += 1
  12504. ' messbox.TextBox3.Text = currentset.ToString & " of " & totalsets.ToString
  12505. ' messbox.Refresh()
  12506. ' Dim api As New TMDb
  12507. ' api.SetId = item
  12508. ' Dim MovCollectionList As New List(Of MovieSetDatabase)
  12509. ' Try
  12510. ' MovCollectionList = api.Collection
  12511. ' Catch
  12512. ' Continue For
  12513. ' End Try
  12514. ' For Each mset In oMovies.MovieSetDB
  12515. ' If mset.MovieSetId = item Then
  12516. ' If Not IsNothing(mset.Collection) Then mset.Collection.Clear()
  12517. ' For Each movset In MovCollectionList
  12518. ' Dim ac As New CollectionMovie
  12519. ' ac.TmdbMovieId = movset.tmdbid
  12520. ' ac.MovieTitle = movset.title
  12521. ' mset.Collection.Add(ac)
  12522. ' Next
  12523. ' End If
  12524. ' Next
  12525. ' Next
  12526. ' oMovies.SaveMovieSetCache()
  12527. ' Catch ex As Exception
  12528. ' Finally
  12529. ' If Not IsNothing(messbox) Then messbox.Close()
  12530. ' End Try
  12531. 'End Sub
  12532. Private Function RemoveFromMovieSetCache(ByVal s As String) As Boolean
  12533. Dim aok As Boolean = True
  12534. For Each mov In oMovies.MovieCache
  12535. If mov.MovieSet.MovieSetName = s Then
  12536. aok = False
  12537. Exit For
  12538. End If
  12539. Next
  12540. If Not aok Then Return aok
  12541. 'Dim res = oMovies.MovieSetDB.Find(Function(c) c.MovieSetName = s)
  12542. 'If Not IsNothing(res) Then
  12543. ' Dim msetdb As Integer = oMovies.MovieSetDB.IndexOf(res)
  12544. ' Dim something As String = Nothing
  12545. ' oMovies.MovieSetDB.RemoveAt(msetdb)
  12546. 'End If
  12547. Return aok
  12548. End Function
  12549. #End Region 'Movie Set Routines
  12550. #End Region
  12551. #Region "Movie Web Tab"
  12552. Private Sub btnMovWebStop_Click(sender As System.Object, e As System.EventArgs) Handles btnMovWebStop.Click
  12553. WebBrowser2.Stop()
  12554. WebBrowser2.Focus()
  12555. End Sub
  12556. Private Sub btnMovWebRefresh_Click(sender As System.Object, e As System.EventArgs) Handles btnMovWebRefresh.Click
  12557. Try
  12558. WebBrowser2.Refresh()
  12559. Catch
  12560. End Try
  12561. WebBrowser2.Focus()
  12562. End Sub
  12563. Private Sub btnMovWebBack_Click(sender As System.Object, e As System.EventArgs) Handles btnMovWebBack.Click
  12564. Try
  12565. WebBrowser2.GoBack()
  12566. Catch
  12567. End Try
  12568. WebBrowser2.Focus()
  12569. End Sub
  12570. Private Sub btnMovWebForward_Click(sender As System.Object, e As System.EventArgs) Handles btnMovWebForward.Click
  12571. Try
  12572. WebBrowser2.GoForward()
  12573. Catch
  12574. End Try
  12575. WebBrowser2.Focus()
  12576. End Sub
  12577. Private Sub btnMovWebTMDb_Click(sender As System.Object, e As System.EventArgs) Handles btnMovWebTMDb.Click
  12578. Dim TMDB As String = workingMovieDetails.fullmoviebody.tmdbid
  12579. If TMDB = "" Then
  12580. MsgBox("Selected Movie does not contain a TMDb ID number")
  12581. Exit Sub
  12582. End If
  12583. Dim TMDBLan As List(Of String) = Utilities.GetTmdbLanguage(Pref.TMDbSelectedLanguageName)
  12584. Dim weburl = "https://www.themoviedb.org/movie/" & TMDB & "?language=" & TMDBLan(0)
  12585. Try
  12586. WebBrowser2.Hide()
  12587. WebBrowser2.Navigate("about:blank")
  12588. Do Until WebBrowser2.ReadyState = WebBrowserReadyState.Complete
  12589. Application.DoEvents()
  12590. System.Threading.Thread.Sleep(100)
  12591. Loop
  12592. WebBrowser2.Show()
  12593. WebBrowser2.Stop()
  12594. WebBrowser2.Navigate(weburl)
  12595. Catch
  12596. End Try
  12597. WebBrowser2.Focus()
  12598. End Sub
  12599. Private Sub btnMovWebIMDb_Click(sender As System.Object, e As System.EventArgs) Handles btnMovWebIMDb.Click
  12600. Dim IMDB As String = workingMovieDetails.fullmoviebody.imdbid
  12601. If Not IMDB.Contains("tt") Then
  12602. MsgBox("Selected Movie does not contain a IMDb ID number")
  12603. Exit Sub
  12604. End If
  12605. Dim weburl = "http://www.imdb.com/title/" & IMDB & "/"
  12606. Try
  12607. WebBrowser2.Hide()
  12608. WebBrowser2.Navigate("about:blank")
  12609. Do Until WebBrowser2.ReadyState = WebBrowserReadyState.Complete
  12610. Application.DoEvents()
  12611. System.Threading.Thread.Sleep(100)
  12612. Loop
  12613. WebBrowser2.Show()
  12614. WebBrowser2.Stop()
  12615. WebBrowser2.Navigate(weburl)
  12616. Catch
  12617. End Try
  12618. WebBrowser2.Focus()
  12619. End Sub
  12620. #End Region
  12621. #Region "Movie Change Movie Tab"
  12622. Private Sub WebBrowser1_NewWindow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WebBrowser1.NewWindow
  12623. Try
  12624. e.Cancel = True
  12625. Catch ex As Exception
  12626. ExceptionHandler.LogError(ex)
  12627. End Try
  12628. End Sub
  12629. Private Sub btnChangeMovie_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChangeMovie.Click
  12630. Dim messagestring As String = "Changing the movie will Overwrite all the current details"
  12631. messagestring &= vbCrLf & "If this is an offline video, please delete folder and add as New" & vbCrLf & "Do you wish to continue?"
  12632. If MovieSearchEngine = "imdb" Then
  12633. Dim mat = Regex.Match(WebBrowser1.Url.ToString, "(tt\d{7})")
  12634. If mat.Success Then
  12635. ChangeMovieId = mat.Value
  12636. Else
  12637. MsgBox("Please Browse to a Movie page")
  12638. Exit Sub
  12639. End If
  12640. If MessageBox.Show(messagestring, "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.No Then
  12641. Exit Sub
  12642. End If
  12643. Pref.MovieChangeMovie = True
  12644. RunBackgroundMovieScrape("ChangeMovie")
  12645. ElseIf MovieSearchEngine = "tmdb" Then
  12646. Dim mat As String = WebBrowser1.Url.ToString
  12647. mat = mat.Substring(mat.LastIndexOf("/")+1, mat.Length - mat.LastIndexOf("/")-1)
  12648. Dim urlsplit As String()
  12649. urlsplit = Split(mat, "-")
  12650. If Integer.TryParse(urlsplit(0), Nothing) Then
  12651. ChangeMovieId = urlsplit(0)
  12652. Else
  12653. MsgBox("Please Browse to a Movie page")
  12654. Exit Sub
  12655. End If
  12656. If MessageBox.Show(messagestring, "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.No Then
  12657. Exit Sub
  12658. End If
  12659. Pref.MovieChangeMovie = True
  12660. RunBackgroundMovieScrape("ChangeMovie")
  12661. End If
  12662. TabControl2.SelectedIndex = 0
  12663. End Sub
  12664. Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
  12665. Try
  12666. WebBrowser1.GoBack()
  12667. Catch ex As Exception
  12668. ExceptionHandler.LogError(ex)
  12669. End Try
  12670. End Sub
  12671. Private Sub btn_IMDBSearch_Click(sender As System.Object, e As System.EventArgs) Handles btn_IMDBSearch.Click
  12672. Try
  12673. MovieSearchEngine = "imdb"
  12674. mov_ChangeMovieSetup(MovieSearchEngine)
  12675. Catch
  12676. End Try
  12677. End Sub
  12678. Private Sub btn_TMDBSearch_Click(sender As System.Object, e As System.EventArgs) Handles btn_TMDBSearch.Click
  12679. Try
  12680. MovieSearchEngine = "tmdb"
  12681. mov_ChangeMovieSetup(MovieSearchEngine)
  12682. Catch
  12683. End Try
  12684. End Sub
  12685. Private Sub CheckBox2_CheckedChanged( sender As System.Object, e As System.EventArgs) Handles CheckBox2.CheckedChanged
  12686. Pref.MovieChangeKeepExistingArt = Not CheckBox2.Checked
  12687. End Sub
  12688. #End Region
  12689. #Region "Movie Folder Tab"
  12690. 'Movie Folders
  12691. Private Sub tpMovFolders_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles tpMovFolders.Leave
  12692. Try
  12693. If moviefolderschanged Then
  12694. Dim save = MsgBox("You have made changes to some folders" & vbCrLf & " Do you wish to save these changes?", MsgBoxStyle.YesNo)
  12695. If save = DialogResult.Yes Then
  12696. ButtonSaveAndQuickRefresh.PerformClick()
  12697. Else
  12698. 'btn_TvFoldersUndo.PerformClick()
  12699. End If
  12700. moviefolderschanged = False
  12701. End If
  12702. Catch ex As Exception
  12703. ExceptionHandler.LogError(ex)
  12704. End Try
  12705. End Sub
  12706. Private Sub btnMovieManualPathAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnMovieManualPathAdd.Click
  12707. Try
  12708. If tbMovieManualPath.Text = Nothing Then
  12709. Exit Sub
  12710. End If
  12711. If tbMovieManualPath.Text = "" Then
  12712. Exit Sub
  12713. End If
  12714. Dim tempstring As String = tbMovieManualPath.Text
  12715. Do While tempstring.LastIndexOf("\") = tempstring.Length - 1
  12716. tempstring = tempstring.Substring(0, tempstring.Length - 1)
  12717. Loop
  12718. Do While tempstring.LastIndexOf("/") = tempstring.Length - 1
  12719. tempstring = tempstring.Substring(0, tempstring.Length - 1)
  12720. Loop
  12721. Dim exists As Boolean = False
  12722. For Each item In clbx_MovieRoots.items
  12723. If item.ToString.ToLower = tempstring.ToLower Then
  12724. exists = True
  12725. Exit For
  12726. End If
  12727. Next
  12728. If exists = True Then
  12729. MsgBox(" Folder Already Exists")
  12730. Else
  12731. Dim f As New IO.DirectoryInfo(tempstring)
  12732. If f.Exists Then
  12733. AuthorizeCheck = True
  12734. clbx_MovieRoots.Items.Add(tempstring, True)
  12735. clbx_MovieRoots.Refresh()
  12736. moviefolderschanged = True
  12737. AuthorizeCheck = False
  12738. tbMovieManualPath.Text = ""
  12739. Else
  12740. Dim tempint As Integer = MessageBox.Show("This folder does not appear to exist" & vbCrLf & "Are you sure you wish to add it", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
  12741. If tempint = DialogResult.Yes Then
  12742. AuthorizeCheck = True
  12743. clbx_MovieRoots.Items.Add(tempstring, True)
  12744. clbx_MovieRoots.Refresh()
  12745. moviefolderschanged = True
  12746. AuthorizeCheck = False
  12747. tbMovieManualPath.Text = ""
  12748. End If
  12749. End If
  12750. End If
  12751. Catch ex As Exception
  12752. ExceptionHandler.LogError(ex)
  12753. End Try
  12754. End Sub
  12755. Private Sub btn_addmoviefolderdialogue_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_addmoviefolderdialogue.Click
  12756. Try
  12757. Dim allok As Boolean = True
  12758. 'Dim theFolderBrowser As New FolderBrowserDialog
  12759. Dim thefoldernames As String
  12760. fb.Description = "Please Select Folder to Add to DB (Subfolders will also be added)"
  12761. fb.ShowNewFolderButton = True
  12762. fb.RootFolder = System.Environment.SpecialFolder.Desktop
  12763. fb.SelectedPath = Pref.lastpath
  12764. Tmr.Start()
  12765. If fb.ShowDialog = Windows.Forms.DialogResult.OK Then
  12766. thefoldernames = (fb.SelectedPath)
  12767. Pref.lastpath = thefoldernames
  12768. If allok = True Then
  12769. AuthorizeCheck = True
  12770. clbx_MovieRoots.Items.Add(thefoldernames, True)
  12771. clbx_MovieRoots.Refresh()
  12772. moviefolderschanged = True
  12773. AuthorizeCheck = False
  12774. Else
  12775. MsgBox(" Folder Already Exists")
  12776. End If
  12777. End If
  12778. Catch ex As Exception
  12779. ExceptionHandler.LogError(ex)
  12780. End Try
  12781. End Sub
  12782. Private Sub clbx_MovieRoots_DragDrop(sender As Object, e As DragEventArgs) Handles clbx_MovieRoots.DragDrop
  12783. Dim folders() As String
  12784. droppedItems.Clear()
  12785. folders = e.Data.GetData(DataFormats.FileDrop)
  12786. For f = 0 To UBound(folders)
  12787. Dim exists As Boolean = False
  12788. For Each rtpath In Pref.movieFolders
  12789. If rtpath.rpath = folders(f) Then
  12790. exists = True
  12791. Exit For
  12792. End If
  12793. Next
  12794. If exists Then Continue For
  12795. If clbx_MovieRoots.Items.Contains(folders(f)) Then Continue For
  12796. Dim skip As Boolean = False
  12797. For Each item In droppedItems
  12798. If item = folders(f) Then
  12799. skip = True
  12800. Exit For
  12801. End If
  12802. Next
  12803. If Not skip Then droppedItems.Add(folders(f))
  12804. Next
  12805. If droppedItems.Count < 1 Then Exit Sub
  12806. AuthorizeCheck = True
  12807. For Each item In droppedItems
  12808. clbx_MovieRoots.Items.Add(item, True)
  12809. moviefolderschanged = True
  12810. Next
  12811. AuthorizeCheck = False
  12812. clbx_MovieRoots.Refresh()
  12813. End Sub
  12814. Private Sub clbx_MovieRoots_DragEnter(sender As Object, e As DragEventArgs) Handles clbx_MovieRoots.DragEnter
  12815. Try
  12816. e.Effect = DragDropEffects.Copy
  12817. Catch ex As Exception
  12818. ExceptionHandler.LogError(ex)
  12819. End Try
  12820. End Sub
  12821. Private Sub clbx_MovieRoots_KeyPress(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles clbx_MovieRoots.KeyDown
  12822. If e.KeyCode = Keys.Delete AndAlso clbx_MovieRoots.SelectedItem <> Nothing
  12823. Call btn_removemoviefolder.PerformClick()
  12824. ElseIf e.KeyCode = Keys.Space Then
  12825. AuthorizeCheck = True
  12826. Call clbx_movierootstoggle()
  12827. AuthorizeCheck = False
  12828. End If
  12829. End Sub
  12830. Private Sub clbx_MovieRoots_MouseDown(sender As Object, e As MouseEventArgs) Handles clbx_MovieRoots.MouseDown
  12831. Dim loc As Point = Me.clbx_MovieRoots.PointToClient(Cursor.Position)
  12832. For i As Integer = 0 To Me.clbx_MovieRoots.Items.Count - 1
  12833. Dim rec As Rectangle = Me.clbx_MovieRoots.GetItemRectangle(i)
  12834. rec.Width = 16
  12835. 'checkbox itself has a default width of about 16 pixels
  12836. If rec.Contains(loc) Then
  12837. AuthorizeCheck = True
  12838. Dim newValue As Boolean = Not Me.clbx_MovieRoots.GetItemChecked(i)
  12839. Me.clbx_MovieRoots.SetItemChecked(i, newValue)
  12840. AuthorizeCheck = False
  12841. Return
  12842. End If
  12843. Next
  12844. End Sub
  12845. Private Sub clbx_MovieRoots_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles clbx_MovieRoots.ItemCheck
  12846. If Not AuthorizeCheck Then
  12847. e.NewValue = e.CurrentValue
  12848. Exit Sub
  12849. End If
  12850. Static Updating As Boolean
  12851. If Updating Then Exit Sub
  12852. moviefolderschanged = True
  12853. Updating = False
  12854. End Sub
  12855. Private Sub clbx_movierootstoggle()
  12856. Dim i = clbx_MovieRoots.SelectedIndex
  12857. clbx_MovieRoots.SetItemCheckState(i, If(clbx_MovieRoots.GetItemCheckState(i) = CheckState.Checked, CheckState.Unchecked, CheckState.Checked))
  12858. End Sub
  12859. Private Sub btn_removemoviefolder_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_removemoviefolder.Click
  12860. Try
  12861. While clbx_MovieRoots.SelectedItems.Count > 0
  12862. clbx_MovieRoots.Items.Remove(clbx_MovieRoots.SelectedItems(0))
  12863. moviefolderschanged = True
  12864. End While
  12865. Catch ex As Exception
  12866. ExceptionHandler.LogError(ex)
  12867. End Try
  12868. End Sub
  12869. 'Offline Movie Folders
  12870. Private Sub btn_OfflineMovAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_OfflineMovAdd.Click
  12871. Try
  12872. 'listbox15
  12873. If lbx_MovOfflineFolders.SelectedItem <> Nothing Then
  12874. Dim tempstring As String = tb_OfflineMovName.Text
  12875. tempstring = tempstring.Replace("?", "")
  12876. tempstring = tempstring.Replace("/", "")
  12877. tempstring = tempstring.Replace("\", "")
  12878. tempstring = tempstring.Replace("<", "")
  12879. tempstring = tempstring.Replace(">", "")
  12880. tempstring = tempstring.Replace(":", "")
  12881. tempstring = tempstring.Replace("""", "")
  12882. tempstring = tempstring.Replace("*", "")
  12883. If tempstring.Length <> 0 Then
  12884. Try
  12885. Dim temppath As String = IO.Path.Combine(lbx_MovOfflineFolders.SelectedItem, tempstring)
  12886. Dim f As New IO.DirectoryInfo(temppath)
  12887. If Not f.Exists Then
  12888. IO.Directory.CreateDirectory(temppath)
  12889. MsgBox("Folder Created")
  12890. Else
  12891. MsgBox("Folder Already Exists")
  12892. End If
  12893. Catch ex As Exception
  12894. MsgBox("Unable to create folder" & vbCrLf & ex.Message.ToString)
  12895. End Try
  12896. End If
  12897. Else
  12898. MsgBox("Please Select a folder from the above listbox")
  12899. End If
  12900. Catch ex As Exception
  12901. ExceptionHandler.LogError(ex)
  12902. End Try
  12903. End Sub
  12904. Private Sub btn_OfflineMovLoadList_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_OfflineMovLoadList.Click
  12905. Try
  12906. If lbx_MovOfflineFolders.SelectedItem <> Nothing Then
  12907. Dim tempint As Integer = 0
  12908. Dim textfilename As String = ""
  12909. Dim filebrowser As New OpenFileDialog
  12910. Dim mstrProgramFilesPath As String = System.Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
  12911. filebrowser.InitialDirectory = mstrProgramFilesPath
  12912. filebrowser.Filter = "Text Files|*.txt"
  12913. filebrowser.Title = "Select text file to load"
  12914. If filebrowser.ShowDialog = Windows.Forms.DialogResult.OK Then
  12915. textfilename = filebrowser.FileName
  12916. End If
  12917. If textfilename <> "" Then
  12918. Using textfile As StreamReader = New StreamReader(textfilename)
  12919. Dim line As String
  12920. line = textfile.ReadLine
  12921. Do While (Not line Is Nothing)
  12922. ' Add this line to list.
  12923. Dim tempstring As String = line
  12924. tempstring = tempstring.Replace("?", "")
  12925. tempstring = tempstring.Replace("/", "")
  12926. tempstring = tempstring.Replace("\", "")
  12927. tempstring = tempstring.Replace("<", "")
  12928. tempstring = tempstring.Replace(">", "")
  12929. tempstring = tempstring.Replace(":", "")
  12930. tempstring = tempstring.Replace("""", "")
  12931. tempstring = tempstring.Replace("*", "")
  12932. If tempstring.Length <> 0 Then
  12933. Try
  12934. Dim temppath As String = IO.Path.Combine(lbx_MovOfflineFolders.SelectedItem, tempstring)
  12935. Dim f As New IO.DirectoryInfo(temppath)
  12936. If Not f.Exists Then
  12937. tempint += 1
  12938. IO.Directory.CreateDirectory(temppath)
  12939. Else
  12940. End If
  12941. Catch ex As Exception
  12942. #If SilentErrorScream Then
  12943. Throw ex
  12944. #End If
  12945. End Try
  12946. End If
  12947. line = textfile.ReadLine
  12948. Loop
  12949. End Using
  12950. MsgBox(tempint.ToString & " Movie Folders added")
  12951. End If
  12952. Else
  12953. MsgBox("Please Select a folder from the above listbox")
  12954. End If
  12955. Catch ex As Exception
  12956. ExceptionHandler.LogError(ex)
  12957. End Try
  12958. End Sub
  12959. Private Sub btn_OfflineMovFolderAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_OfflineMovFolderAdd.Click
  12960. Try
  12961. 'add offline movie folder browser
  12962. Dim allok As Boolean = True
  12963. 'Dim theFolderBrowser As New FolderBrowserDialog
  12964. Dim thefoldernames As String
  12965. fb.Description = "Please Select a Root Offline DVD Folder to Add to DB"
  12966. fb.ShowNewFolderButton = True
  12967. fb.RootFolder = System.Environment.SpecialFolder.Desktop
  12968. fb.SelectedPath = Pref.lastpath
  12969. Tmr.Start()
  12970. If fb.ShowDialog = Windows.Forms.DialogResult.OK Then
  12971. thefoldernames = (fb.SelectedPath)
  12972. Pref.lastpath = thefoldernames
  12973. For Each item As Object In lbx_MovOfflineFolders.Items
  12974. If thefoldernames.ToString = item.ToString Then allok = False
  12975. Next
  12976. If allok = True Then
  12977. lbx_MovOfflineFolders.Items.Add(thefoldernames)
  12978. lbx_MovOfflineFolders.Refresh()
  12979. Else
  12980. MsgBox(" Folder Already Exists")
  12981. End If
  12982. End If
  12983. Catch ex As Exception
  12984. ExceptionHandler.LogError(ex)
  12985. End Try
  12986. End Sub
  12987. Private Sub btn_OfflineMovFolderRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_OfflineMovFolderRemove.Click
  12988. Try
  12989. 'remove selected offline movie folders
  12990. While lbx_MovOfflineFolders.SelectedItems.Count > 0
  12991. lbx_MovOfflineFolders.Items.Remove(lbx_MovOfflineFolders.SelectedItems(0))
  12992. End While
  12993. Catch ex As Exception
  12994. ExceptionHandler.LogError(ex)
  12995. End Try
  12996. End Sub
  12997. Private Sub ButtonSaveAndQuickRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSaveAndQuickRefresh.Click
  12998. 'ProgressAndStatus1.Display()
  12999. 'Application.DoEvents()
  13000. Dim folderstoadd As New List(Of String)
  13001. Dim offlinefolderstoadd As New List(Of String)
  13002. Dim folderstoremove As New List(Of String)
  13003. Dim offlinefolderstoremove As New List(Of String)
  13004. For Each item In clbx_MovieRoots.Items
  13005. Dim add As Boolean = True
  13006. For Each folder In movieFolders
  13007. If folder.rpath = item Then add = False
  13008. Next
  13009. If add = True Then folderstoadd.Add(item)
  13010. Next
  13011. For Each item In lbx_MovOfflineFolders.Items
  13012. Dim add As Boolean = True
  13013. For Each folder In Pref.offlinefolders
  13014. If folder = item Then add = False
  13015. Next
  13016. If add = True Then offlinefolderstoadd.Add(item)
  13017. Next
  13018. For Each item In movieFolders
  13019. Dim remove As Boolean = True
  13020. For Each folder In clbx_MovieRoots.Items
  13021. If folder = item.rpath Then
  13022. remove = False
  13023. Exit For
  13024. End If
  13025. Next
  13026. If remove = True Then folderstoremove.Add(item.rpath)
  13027. Next
  13028. For Each item In Pref.offlinefolders
  13029. Dim remove As Boolean = True
  13030. For Each folder In lbx_MovOfflineFolders.Items
  13031. If folder = item Then remove = False
  13032. Next
  13033. If remove = True Then offlinefolderstoremove.Add(item)
  13034. Next
  13035. If folderstoremove.Count > 0 Or offlinefolderstoremove.Count > 0 Then
  13036. For Each item In folderstoremove
  13037. For f = oMovies.MovieCache.Count - 1 To 0 Step -1
  13038. If oMovies.MovieCache(f).fullpathandfilename.IndexOf(item) <> -1 Then
  13039. oMovies.MovieCache.RemoveAt(f)
  13040. End If
  13041. Next
  13042. Next
  13043. For Each item In offlinefolderstoremove
  13044. For f = oMovies.MovieCache.Count - 1 To 0 Step -1
  13045. If oMovies.MovieCache(f).fullpathandfilename.IndexOf(item) <> -1 Then
  13046. oMovies.MovieCache.RemoveAt(f)
  13047. End If
  13048. Next
  13049. Next
  13050. For f = movieFolders.Count - 1 To 0 Step -1
  13051. Dim remove As Boolean = False
  13052. For Each folder In folderstoremove
  13053. If movieFolders(f).rpath = folder Then
  13054. remove = True
  13055. End If
  13056. Next
  13057. If remove = True Then movieFolders.RemoveAt(f)
  13058. Next
  13059. For f = Pref.offlinefolders.Count - 1 To 0 Step -1
  13060. Dim remove As Boolean = False
  13061. For Each folder In offlinefolderstoremove
  13062. If Pref.offlinefolders(f) = folder Then
  13063. remove = True
  13064. End If
  13065. Next
  13066. If remove = True Then Pref.offlinefolders.RemoveAt(f)
  13067. Next
  13068. End If
  13069. If folderstoadd.Count > 0 Or offlinefolderstoadd.Count > 0 Then
  13070. Application.DoEvents()
  13071. For Each folder In folderstoadd
  13072. Dim t As New str_RootPaths
  13073. t.rpath = folder
  13074. movieFolders.Add(t)
  13075. Next
  13076. For Each folder In offlinefolderstoadd
  13077. Pref.offlinefolders.Add(folder)
  13078. folderstoadd.Add(folder)
  13079. Next
  13080. If Pref.usefoldernames = True Then 'use TRUE if folder contains nfo's, False if folder contains folders which contain nfo's
  13081. progressmode = False
  13082. Else
  13083. progressmode = True
  13084. End If
  13085. Pref.ConfigSave()
  13086. End If
  13087. For f = 0 To clbx_MovieRoots.Items.Count - 1
  13088. Dim rtpath As String = clbx_MovieRoots.Items(f)
  13089. Dim chkstate As CheckState = clbx_MovieRoots.GetItemCheckState(f)
  13090. Dim selected As Boolean = (chkstate = CheckState.Checked)
  13091. For Each item In Pref.movieFolders
  13092. If item.rpath = rtpath Then
  13093. item.selected = selected
  13094. Exit For
  13095. End If
  13096. Next
  13097. Next
  13098. Pref.ConfigSave()
  13099. mov_RebuildMovieCaches()
  13100. moviefolderschanged = False
  13101. TabControl2.SelectedIndex = 0
  13102. End Sub
  13103. #End Region 'Controls for Movie Folders tab
  13104. #Region "Tv Browser Form"
  13105. Private Sub TvTreeview_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TvTreeview.DoubleClick
  13106. Try
  13107. If TvTreeview.SelectedNode Is Nothing Then Exit Sub
  13108. Dim tempstring2 As String
  13109. Dim tempstring As String = ""
  13110. Dim pathandfilename As String = TvTreeview.SelectedNode.Name
  13111. If pathandfilename.IndexOf("tvshow.nfo") <> -1 Then Exit Sub
  13112. If pathandfilename = "" Then Exit Sub
  13113. If pathandfilename <> Nothing Then
  13114. statusstrip_Enable()
  13115. ToolStripStatusLabel2.Text = ""
  13116. ToolStripStatusLabel2.Visible = True
  13117. If pathandfilename.ToLower.Substring(pathandfilename.Length - 4, 4) = ".nfo" Then
  13118. pathandfilename = pathandfilename.Substring(0, pathandfilename.Length - 4)
  13119. Dim exists As Boolean = False
  13120. For Each ext In Utilities.VideoExtensions
  13121. If ext = "VIDEO_TS.IFO" Then Continue For
  13122. tempstring2 = pathandfilename & ext
  13123. If IO.File.Exists(tempstring2) Then
  13124. exists = True
  13125. tempstring = applicationPath & "\Settings\temp.m3u"
  13126. ToolStripStatusLabel2.Text = "Playing Movie...Creating m3u file:..." & tempstring
  13127. Dim file As IO.StreamWriter = IO.File.CreateText(tempstring)
  13128. file.WriteLine(tempstring2)
  13129. file.Close()
  13130. ToolStripStatusLabel2.Text &= "......Launching Player."
  13131. StartVideo(tempstring)
  13132. 'If Pref.videomode = 1 Then Call util_VideoMode1(tempstring)
  13133. 'If Pref.videomode = 2 Then Call util_VideoMode2(tempstring)
  13134. 'If Pref.videomode = 3 Then
  13135. ' Pref.videomode = 2
  13136. ' Call util_VideoMode2(tempstring)
  13137. 'End If
  13138. 'If Pref.videomode >= 4 Then
  13139. ' If Pref.selectedvideoplayer <> Nothing Then
  13140. ' Call util_VideoMode4(tempstring)
  13141. ' Else
  13142. ' Call util_VideoMode1(tempstring)
  13143. ' End If
  13144. 'End If
  13145. Exit For
  13146. End If
  13147. Next
  13148. If exists = False Then
  13149. ToolStripStatusLabel2.Text = "Could not find file: """ & pathandfilename & """ with any supported extension"
  13150. End If
  13151. statusstripclear.Start()
  13152. End If
  13153. End If
  13154. Catch ex As Exception
  13155. ExceptionHandler.LogError(ex)
  13156. End Try
  13157. End Sub
  13158. Private Sub TvTreeview_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles TvTreeview.MouseHover
  13159. TvTreeview.Focus()
  13160. End Sub
  13161. Private Sub TvTreeview_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TvTreeview.MouseUp
  13162. If e.Button = MouseButtons.Right Then
  13163. 'Dim pt As Point
  13164. 'pt.X = e.X
  13165. 'pt.Y = e.Y
  13166. 'Dim objMousePosition As Point = DataGridViewMovies.PointToClient(Control.MousePosition)
  13167. 'Dim objHitTestInfo As DataGridView.HitTestInfo
  13168. 'objHitTestInfo = DataGridViewMovies.HitTest(pt.X, pt.Y)
  13169. TvTreeview.SelectedNode = TvTreeview.GetNodeAt(TvTreeview.PointToClient(Cursor.Position)) '***select actual the node
  13170. 'context menu will be shown soon so we modify it to suit...***after*** we make the selection of the node
  13171. Tv_TreeViewContextMenuItemsEnable()
  13172. End If
  13173. End Sub
  13174. Private Sub rbTvDisplayFiltering_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbTvDisplayUnWatched.CheckedChanged,
  13175. rbTvDisplayWatched.CheckedChanged,
  13176. rbTvMissingAiredEp.CheckedChanged,
  13177. rbTvMissingEpisodes.CheckedChanged,
  13178. rbTvMissingPoster.CheckedChanged,
  13179. rbTvListAll.CheckedChanged,
  13180. rbTvMissingFanart.CheckedChanged,
  13181. rbTvMissingThumb.CheckedChanged,
  13182. rbTvListContinuing.CheckedChanged,
  13183. rbTvListEnded.CheckedChanged,
  13184. rbTvListUnKnown.CheckedChanged
  13185. Try
  13186. Call tv_Filter()
  13187. Catch ex As Exception
  13188. ExceptionHandler.LogError(ex)
  13189. End Try
  13190. End Sub
  13191. Private Sub btn_EpWatched_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_EpWatched.Click
  13192. Try
  13193. Tv_MarkAs_Watched_UnWatched("3")
  13194. 'Dim WorkingEpisode As TvEpisode = ep_SelectedCurrently()
  13195. 'Dim multi As Boolean = TestForMultiepisode(ep_SelectedCurrently.NfoFilePath)
  13196. 'If multi = False Then
  13197. ' util_EpisodeSetWatched(WorkingEpisode.PlayCount.Value, True)
  13198. ' WorkingEpisode.Save()
  13199. ' WorkingEpisode.UpdateTreenode()
  13200. 'Else
  13201. ' Dim episodelist As New List(Of TvEpisode)
  13202. ' episodelist = WorkingWithNfoFiles.ep_NfoLoad(WorkingEpisode.NfoFilePath)
  13203. ' Dim First As Boolean = True
  13204. ' Dim done As String = ""
  13205. ' For Each ep In episodelist
  13206. ' If First Then done = ep.PlayCount.Value
  13207. ' Dim toggled As String = done
  13208. ' util_EpisodeSetWatched(toggled, True)
  13209. ' ep.PlayCount.Value = toggled
  13210. ' ep.UpdateTreenode()
  13211. ' First = False
  13212. ' Next
  13213. ' WorkingWithNfoFiles.ep_NfoSave(episodelist, WorkingEpisode.NfoFilePath)
  13214. 'End If
  13215. 'Dim ThisSeason As TvSeason = tv_SeasonSelectedCurrently()
  13216. 'ThisSeason.UpdateTreenode()
  13217. 'tv_ShowSelectedCurrently.UpdateTreenode()
  13218. Catch ex As Exception
  13219. ExceptionHandler.LogError(ex)
  13220. End Try
  13221. End Sub
  13222. Private Sub btn_TvRescrape_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_TvRescrape.Click
  13223. Try
  13224. tv_Rescrape()
  13225. Catch ex As Exception
  13226. ExceptionHandler.LogError(ex)
  13227. End Try
  13228. End Sub
  13229. Private Sub tb_EpPlot_DoubleClick(sender As System.Object, e As System.EventArgs) Handles tb_EpPlot.DoubleClick
  13230. ShowBigTvEpisodeText()
  13231. End Sub
  13232. Private Sub tb_EpPlot_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tb_EpPlot.KeyPress
  13233. If e.KeyChar = Convert.ToChar(1) Then
  13234. DirectCast(sender, TextBox).SelectAll()
  13235. e.Handled = True
  13236. End If
  13237. End Sub
  13238. Private Sub tb_ShPlot_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tb_ShPlot.KeyPress
  13239. If e.KeyChar = Convert.ToChar(1) Then
  13240. DirectCast(sender, TextBox).SelectAll()
  13241. e.Handled = True
  13242. End If
  13243. End Sub
  13244. Private Sub ShowBigTvEpisodeText()
  13245. Dim frm As New frmBigTvEpisodeText
  13246. If Pref.MultiMonitoEnabled Then
  13247. frm.Bounds = screen.AllScreens(CurrentScreen).Bounds
  13248. frm.StartPosition = FormStartPosition.Manual
  13249. End If
  13250. frm.ShowDialog(
  13251. tb_Sh_Ep_Title.Text,
  13252. tb_EpDirector.Text,
  13253. tb_EpAired.Text,
  13254. tb_EpRating.Text,
  13255. tb_EpVotes.Text,
  13256. tb_ShRunTime.Text,
  13257. tb_ShGenre.Text,
  13258. tb_ShCert.Text,
  13259. tb_EpPlot.Text
  13260. )
  13261. End Sub
  13262. Private Sub tb_Sh_Ep_Title_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_Sh_Ep_Title.Enter
  13263. If Panel_EpisodeInfo.Visible Then
  13264. tb_Sh_Ep_Title.Text = ep_SelectedCurrently(TvTreeview).Title.Value
  13265. Else
  13266. tb_Sh_Ep_Title.Text = tv_ShowSelectedCurrently(TvTreeview).Title.Value
  13267. End If
  13268. End Sub
  13269. Private Sub btn_SaveTvShowOrEpisode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_SaveTvShowOrEpisode.Click
  13270. Try
  13271. Dim Show As Media_Companion.TvShow = Nothing
  13272. Dim Season As Media_Companion.TvSeason = Nothing
  13273. Dim Episode As Media_Companion.TvEpisode = Nothing
  13274. If TvTreeview.SelectedNode IsNot Nothing Then
  13275. If TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvShow Then
  13276. Show = TvTreeview.SelectedNode.Tag
  13277. ElseIf TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvEpisode Then
  13278. Episode = TvTreeview.SelectedNode.Tag
  13279. ElseIf TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvSeason Then
  13280. Exit Sub
  13281. Else
  13282. Exit Sub
  13283. End If
  13284. Else
  13285. Exit Sub
  13286. End If
  13287. Dim tempint As Integer = 0
  13288. Dim tempstring As String = ""
  13289. If Show IsNot Nothing Then
  13290. Dim changed As Integer = 0
  13291. If Utilities.ReplaceNothing(Show.TvdbId.Value) <> tb_ShTvdbId.Text Then
  13292. changed += 1
  13293. End If
  13294. If Utilities.ReplaceNothing(Show.ImdbId.Value).ToLower <> tb_ShImdbId.Text.ToLower Then
  13295. changed += 2
  13296. End If
  13297. If changed > 0 Then
  13298. If changed = 1 Then
  13299. tempint = MessageBox.Show("It appears that you have changed the TVDB ID" & vbCrLf & "Media Companion depends on this ID for scraping episodes and art" & vbCrLf & vbCrLf & "Are you sure you wish to continue and save this?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
  13300. If tempint = DialogResult.No Then
  13301. Exit Sub
  13302. End If
  13303. ElseIf changed = 2 Then
  13304. tempint = MessageBox.Show("It appears that you have changed the IMDB ID" & vbCrLf & "Media Companion depends on this ID for scraping actors from IMDB" & vbCrLf & vbCrLf & "Are you sure you wish to continue and save this?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
  13305. If tempint = DialogResult.No Then
  13306. Exit Sub
  13307. End If
  13308. ElseIf changed = 3 Then
  13309. tempint = MessageBox.Show("It appears that you have changed the IMDB ID & TVDB ID" & vbCrLf & "Media Companion depends on these IDs being correct for a number of scraping operations" & vbCrLf & vbCrLf & "Are you sure you wish to continue and save this?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
  13310. If tempint = DialogResult.No Then
  13311. Exit Sub
  13312. End If
  13313. End If
  13314. End If
  13315. 'its a tvshow
  13316. Dim TmpTitle As String = ""
  13317. If tb_Sh_Ep_Title.Text.ToLower.IndexOf(", the") = tb_Sh_Ep_Title.Text.Length - 5 And tb_Sh_Ep_Title.Text.Length > 5 Then
  13318. TmpTitle = "The " & tb_Sh_Ep_Title.Text.Substring(0, tb_Sh_Ep_Title.Text.Length - 5)
  13319. Else
  13320. TmpTitle = tb_Sh_Ep_Title.Text
  13321. End If
  13322. If TmpTitle <> Show.Title.Value Then
  13323. Dim TryTitle As MsgBoxResult = MsgBox(" You have changed this Show's Title " & vbCrLf & "Are you sure you want to accept this change", MsgBoxStyle.YesNo)
  13324. If TryTitle = MsgBoxResult.No Then
  13325. tb_Sh_Ep_Title.Text = Show.Title.Value 'Pref.RemoveIgnoredArticles(Show.Title.Value)
  13326. Exit Sub
  13327. End If
  13328. Show.Title.Value = TmpTitle
  13329. End If
  13330. Show.Plot.Value = tb_ShPlot.Text
  13331. Show.Runtime.Value = tb_ShRunTime.Text
  13332. Show.Premiered.Value = tb_ShPremiered.Text
  13333. Show.Studio.Value = tb_ShStudio.Text
  13334. Show.Rating.Value = tb_ShRating.Text
  13335. Show.ImdbId.Value = tb_ShImdbId.Text
  13336. Show.TvdbId.Value = tb_ShTvdbId.Text
  13337. Show.Mpaa.Value = tb_ShCert.Text
  13338. Show.Genre.Value = tb_ShGenre.Text
  13339. Show.SortTitle.Value = If(TextBox_Sorttitle.Text <> Show.Title.Value, TextBox_Sorttitle.Text, "")
  13340. nfoFunction.tvshow_NfoSave(Show, True) 'Show.Save()
  13341. Show.UpdateTreenode()
  13342. Else
  13343. Dim trueseason As String = Utilities.PadNumber(Episode.Season.Value, 2)
  13344. Do While trueseason.Substring(0, 1) = "0" AndAlso trueseason.Length <> 1
  13345. trueseason = trueseason.Substring(1, trueseason.Length - 1)
  13346. Loop
  13347. Dim trueepisode As String = Utilities.PadNumber(Episode.Episode.Value, 2)
  13348. Do While trueepisode.Substring(0, 1) = "0" AndAlso trueepisode.Length <> 1
  13349. trueepisode = trueepisode.Substring(1, trueepisode.Length - 1)
  13350. Loop
  13351. Dim episodelist As New List(Of TvEpisode)
  13352. episodelist = WorkingWithNfoFiles.ep_NfoLoad(Episode.NfoFilePath)
  13353. For Each ep In episodelist
  13354. If ep.Season.Value = trueseason And ep.Episode.Value = trueepisode Then
  13355. If tb_Sh_Ep_Title.Text.Replace("'", "").ToLower <> ep.Title.Value.ToLower Then
  13356. Dim TryTitle As MsgBoxResult = MsgBox(" You have changed this Episode's Title " & vbCrLf & "Are you sure you want to accept this change", MsgBoxStyle.YesNo)
  13357. If TryTitle = MsgBoxResult.Yes Then
  13358. ep.Title.Value = tb_Sh_Ep_Title.Text.Replace("'", "")
  13359. End If
  13360. End If
  13361. ep.Plot.Value = tb_EpPlot.Text
  13362. ep.Aired.Value = tb_EpAired.Text
  13363. ep.Rating.Value = tb_EpRating.Text
  13364. 'ep.Votes.Value = tb_EpVotes.Text 'No, don't allow users to change votes.
  13365. ep.Credits.Value = tb_EpCredits.Text
  13366. ep.Director.Value = tb_EpDirector.Text
  13367. If ep.Season.Value = "0" Then
  13368. ep.DisplayEpisode.Value = tb_EpAirEpisode.Text
  13369. ep.DisplaySeason.Value = tb_EpAirSeason.Text
  13370. End If
  13371. ep.Source.Value = If(cbTvSource.SelectedIndex = 0, "", cbTvSource.Items(cbTvSource.SelectedIndex))
  13372. End If
  13373. Next
  13374. WorkingWithNfoFiles.ep_NfoSave(episodelist, Episode.NfoFilePath)
  13375. ep_Load(Episode.EpisodeNode.Parent.Tag, Episode, True)
  13376. End If
  13377. Catch ex As Exception
  13378. ExceptionHandler.LogError(ex)
  13379. End Try
  13380. End Sub 'save button
  13381. Private Sub btn_TvShSortOrder_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_TvShSortOrder.Click
  13382. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  13383. Dim TVShowNFOContent As String = ""
  13384. If btn_TvShSortOrder.Text = "Default" Then
  13385. WorkingTvShow.SortOrder.Value = "dvd"
  13386. btn_TvShSortOrder.Text = "DVD"
  13387. Else
  13388. WorkingTvShow.SortOrder.Value = "Default"
  13389. btn_TvShSortOrder.Text = "Default"
  13390. End If
  13391. 'Button_Save_TvShow_Episode.PerformClick()
  13392. nfoFunction.tvshow_NfoSave(WorkingTvShow, True)
  13393. tv_ShowLoad(WorkingTvShow)
  13394. End Sub
  13395. Private Sub Button45_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button45.Click
  13396. Try
  13397. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  13398. Dim TVShowNFOContent As String = ""
  13399. If Button45.Text = "TVDB" Then
  13400. If WorkingTvShow.ImdbId.Value <> "" Then
  13401. WorkingTvShow.TvShowActorSource.Value = "imdb"
  13402. Button45.Text = "IMDB"
  13403. Else
  13404. MsgBox("No IMDB ID allocated to this Show!")
  13405. End If
  13406. Else
  13407. WorkingTvShow.TvShowActorSource.Value = "tvdb"
  13408. Button45.Text = "TVDB"
  13409. End If
  13410. nfoFunction.tvshow_NfoSave(WorkingTvShow, True)
  13411. 'WorkingTvShow.Save()
  13412. Catch ex As Exception
  13413. ExceptionHandler.LogError(ex)
  13414. End Try
  13415. End Sub
  13416. Private Sub Button46_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button46.Click
  13417. Try
  13418. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  13419. Dim TVShowNFOContent As String = ""
  13420. If Button46.Text = "TVDB" Then
  13421. WorkingTvShow.EpisodeActorSource.Value = "imdb"
  13422. Button46.Text = "IMDB"
  13423. Else
  13424. WorkingTvShow.EpisodeActorSource.Value = "tvdb"
  13425. Button46.Text = "TVDB"
  13426. End If
  13427. Catch ex As Exception
  13428. ExceptionHandler.LogError(ex)
  13429. End Try
  13430. End Sub
  13431. Private Sub cbTvActor_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbTvActor.MouseHover
  13432. Try
  13433. cbTvActor.Focus()
  13434. Catch ex As Exception
  13435. ExceptionHandler.LogError(ex)
  13436. End Try
  13437. End Sub
  13438. Private Sub cbTvActor_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbTvActor.SelectedIndexChanged
  13439. Try
  13440. If Not actorflag Then
  13441. actorflag = True
  13442. cbTvActorRole.SelectedIndex = cbTvActor.SelectedIndex
  13443. Call tv_ActorDisplay()
  13444. Else
  13445. actorflag = False
  13446. End If
  13447. Catch ex As Exception
  13448. ExceptionHandler.LogError(ex)
  13449. End Try
  13450. End Sub
  13451. Private Sub cbTvActorRole_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbTvActorRole.MouseHover
  13452. Try
  13453. cbTvActorRole.Focus()
  13454. Catch ex As Exception
  13455. ExceptionHandler.LogError(ex)
  13456. End Try
  13457. End Sub
  13458. Private Sub cbTvActorRole_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbTvActorRole.SelectedIndexChanged
  13459. Try
  13460. If Not actorflag Then
  13461. actorflag = True
  13462. cbTvActor.SelectedIndex = cbTvActorRole.SelectedIndex
  13463. Call tv_ActorRoleDisplay()
  13464. Else
  13465. actorflag = False
  13466. End If
  13467. Catch ex As Exception
  13468. ExceptionHandler.LogError(ex)
  13469. End Try
  13470. End Sub
  13471. Private Sub PictureBox6_DoubleClick(sender As System.Object, e As System.EventArgs) Handles PictureBox6.DoubleClick
  13472. ZoomActorPictureBox(PictureBox6)
  13473. End Sub
  13474. Private Sub btn_TvShState_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_TvShState.Click
  13475. Try
  13476. Dim Btn As Button = sender
  13477. If TypeOf Btn.Tag Is Media_Companion.TvShow Then
  13478. Dim TempShow As Media_Companion.TvShow = tv_ShowSelectedCurrently(TvTreeview) 'Btn.Tag
  13479. Select Case TempShow.State
  13480. Case Media_Companion.ShowState.Locked
  13481. TempShow.State = Media_Companion.ShowState.Open
  13482. Case Media_Companion.ShowState.Open
  13483. TempShow.State = Media_Companion.ShowState.Locked
  13484. Case Media_Companion.ShowState.Error
  13485. Case Media_Companion.ShowState.Unverified
  13486. TempShow.State = Media_Companion.ShowState.Open
  13487. tb_Sh_Ep_Title.BackColor = Color.White
  13488. End Select
  13489. If TempShow.State = Media_Companion.ShowState.Locked Then
  13490. btn_TvShState.Text = "Locked"
  13491. btn_TvShState.BackColor = Color.Red
  13492. ElseIf TempShow.State = Media_Companion.ShowState.Open Then
  13493. btn_TvShState.Text = "Open"
  13494. btn_TvShState.BackColor = Color.LawnGreen
  13495. ElseIf TempShow.State = Media_Companion.ShowState.Unverified Then
  13496. btn_TvShState.Text = "Un-Verified"
  13497. btn_TvShState.BackColor = Color.Yellow
  13498. Else
  13499. btn_TvShState.Text = "Error"
  13500. btn_TvShState.BackColor = Color.Gray
  13501. End If
  13502. TempShow.UpdateTreenode() 'update the treenode so we can see the state change
  13503. nfoFunction.tvshow_NfoSave(TempShow, True) 'save the nfo immediately (you don't have to press save button)
  13504. End If
  13505. Catch ex As Exception
  13506. ExceptionHandler.LogError(ex)
  13507. End Try
  13508. End Sub
  13509. Private Sub tb_airepisode_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tb_EpAirEpisode.KeyPress
  13510. If Char.IsNumber(e.KeyChar) = False And e.KeyChar <> Chr(8) Then
  13511. e.Handled = True
  13512. End If
  13513. End Sub
  13514. Private Sub tb_airseason_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tb_EpAirSeason.KeyPress
  13515. If Char.IsNumber(e.KeyChar) = False And e.KeyChar <> Chr(8) Then
  13516. e.Handled = True
  13517. End If
  13518. End Sub
  13519. Private Sub btnTvSearchNew_Click(sender As System.Object, e As System.EventArgs) Handles btnTvSearchNew.Click
  13520. Try
  13521. If btnTvSearchNew.Text = "Cancel " Then
  13522. bckgroundscanepisodes.CancelAsync()
  13523. Exit Sub
  13524. End If
  13525. Call ep_Search()
  13526. Catch ex As Exception
  13527. End Try
  13528. End Sub
  13529. Private Sub btnTvRefreshAll_Click(sender As System.Object, e As System.EventArgs) Handles btnTvRefreshAll.Click
  13530. Try
  13531. Call tv_CacheRefresh()
  13532. Catch ex As Exception
  13533. End Try
  13534. End Sub
  13535. #Region "Tv PictureBoxes"
  13536. Private Sub ReScrFanartToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ReScrFanartToolStripMenuItem.Click
  13537. Try
  13538. Dim Showname As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  13539. TvGetArtwork(Showname, True, False, False, False, False)
  13540. tv_ShowLoad(Showname)
  13541. Catch ex As Exception
  13542. ExceptionHandler.LogError(ex)
  13543. End Try
  13544. End Sub
  13545. Private Sub SelNewFanartToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles SelNewFanartToolStripMenuItem.Click
  13546. Try
  13547. Me.tpTvFanart.Select()
  13548. TabControl3.SelectedIndex = 1
  13549. Catch ex As Exception
  13550. ExceptionHandler.LogError(ex)
  13551. End Try
  13552. End Sub
  13553. Private Sub RescrapeTvEpThumbToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles RescrapeTvEpThumbToolStripMenuItem.Click
  13554. Try
  13555. TvEpThumbRescrape()
  13556. Catch ex As Exception
  13557. ExceptionHandler.LogError(ex)
  13558. End Try
  13559. End Sub
  13560. Private Sub RescrapeTvEpScreenShotToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles RescrapeTvEpScreenShotToolStripMenuItem.Click
  13561. Try
  13562. TvEpThumbScreenShot()
  13563. Catch ex As Exception
  13564. ExceptionHandler.LogError(ex)
  13565. End Try
  13566. End Sub
  13567. Private Sub tv_PictureBoxLeft_Click(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles tv_PictureBoxLeft.MouseUp, tv_PictureBoxLeft.Click
  13568. Try
  13569. If e.Button = Windows.Forms.MouseButtons.Right Then
  13570. ReScrFanartToolStripMenuItem.Visible = False
  13571. SelNewFanartToolStripMenuItem.Visible = False
  13572. RescrapeTvEpThumbToolStripMenuItem.Visible = False
  13573. RescrapeTvEpScreenShotToolStripMenuItem.Visible = False
  13574. If TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvShow Or TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvSeason Then
  13575. ReScrFanartToolStripMenuItem.Visible = True
  13576. SelNewFanartToolStripMenuItem.Visible = True
  13577. ElseIf TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvEpisode Then
  13578. RescrapeTvEpThumbToolStripMenuItem.Visible = True
  13579. RescrapeTvEpScreenShotToolStripMenuItem.Visible = True
  13580. Else
  13581. Exit Sub
  13582. End If
  13583. End If
  13584. Catch ex As Exception
  13585. End Try
  13586. End Sub
  13587. Private Sub tv_PictureBoxRight_Click(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles tv_PictureBoxRight.MouseUp, tv_PictureBoxRight.Click
  13588. Try
  13589. If e.Button = Windows.Forms.MouseButtons.Right Then
  13590. tsm_TvScrapeBanner.Visible = False
  13591. tsm_TvScrapePoster.Visible = False
  13592. tsm_TvSelectBanner.Visible = False
  13593. tsm_TvSelectPoster.Visible = False
  13594. If TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvShow Or TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvSeason Or TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvEpisode Then
  13595. tsm_TvScrapePoster.Visible = True
  13596. tsm_TvSelectPoster.Visible = True
  13597. Else
  13598. Exit Sub
  13599. End If
  13600. End If
  13601. Catch ex As Exception
  13602. End Try
  13603. End Sub
  13604. Private Sub tv_PictureBoxBottom_Click(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles tv_PictureBoxBottom.MouseUp, tv_PictureBoxBottom.Click
  13605. Try
  13606. If e.Button = Windows.Forms.MouseButtons.Right Then
  13607. tsm_TvScrapeBanner.Visible = False
  13608. tsm_TvScrapePoster.Visible = False
  13609. tsm_TvSelectBanner.Visible = False
  13610. tsm_TvSelectPoster.Visible = False
  13611. If TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvShow Or TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvSeason Or TypeOf TvTreeview.SelectedNode.Tag Is Media_Companion.TvEpisode Then
  13612. tsm_TvScrapeBanner.Visible = True
  13613. tsm_TvSelectBanner.Visible = True
  13614. Else
  13615. Exit Sub
  13616. End If
  13617. End If
  13618. Catch ex As Exception
  13619. End Try
  13620. End Sub
  13621. Private Sub _tv_SplitContainer_SplitterMoved(sender As Object, e As SplitterEventArgs) Handles _tv_SplitContainer.SplitterMoved
  13622. If Not MainFormLoadedStatus Then Exit Sub
  13623. Pref.tvbannersplit = Math.Round(_tv_SplitContainer.SplitterDistance / _tv_SplitContainer.Height, 2)
  13624. End Sub
  13625. #End Region 'Tv PictureBoxes
  13626. #End Region 'Tv Browser Form functions
  13627. #Region "Tv Screenshot Form"
  13628. Private Sub TextBox35_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox35.KeyPress
  13629. If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
  13630. If TextBox35.Text <> "" AndAlso Convert.ToInt32(TextBox35.Text) > 0 Then
  13631. tv_EpThumbScreenShot.PerformClick()
  13632. End If
  13633. End If
  13634. If Char.IsNumber(e.KeyChar) = False And e.KeyChar <> Chr(8) Then
  13635. e.Handled = True
  13636. End If
  13637. End Sub
  13638. Private Sub tv_EpThumbScreenShot_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tv_EpThumbScreenShot.Click
  13639. Dim Cachename As String = epGetThumbScreenShot()
  13640. If Cachename = "" Then
  13641. MsgBox("Unable to get screenshots from episode file")
  13642. Exit Sub
  13643. End If
  13644. Dim matches() As Control
  13645. For i = 0 To 4
  13646. matches = Me.Controls.Find("pbEpScrSht" & i, True)
  13647. If matches.Length > 0 Then
  13648. Dim pb As PictureBox = DirectCast(matches(0), PictureBox)
  13649. pb.SizeMode = PictureBoxSizeMode.StretchImage
  13650. Dim image2load As String = Cachename.Substring(0, Cachename.Length - 5) & i.ToString & ".jpg"
  13651. util_ImageLoad(pb, image2load, Utilities.DefaultTvFanartPath)
  13652. End If
  13653. Next
  13654. If Not IsNothing(pbEpScrSht0.Tag) Then util_ImageLoad(pbTvEpScrnShot, pbEpScrSht0.Tag.ToString, Utilities.DefaultTvFanartPath)
  13655. End Sub
  13656. Private Sub TextBox35_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox35.Leave
  13657. If TextBox35.Text = "" Then
  13658. MsgBox("Please enter a numerical value >0 into the textbox")
  13659. TextBox35.Focus()
  13660. ElseIf Convert.ToInt32(TextBox35.Text) = 0 Then
  13661. MsgBox("Please enter a numerical value >0 into the textbox")
  13662. TextBox35.Focus()
  13663. End If
  13664. End Sub
  13665. Private Sub tv_EpThumbRescrape_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tv_EpThumbRescrape.Click
  13666. Try
  13667. TvEpThumbRescrape()
  13668. Catch ex As Exception
  13669. ExceptionHandler.LogError(ex)
  13670. End Try
  13671. End Sub
  13672. Private Sub tv_EpThumbScreenShotSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tv_EpThumbScreenShotSave.Click
  13673. Try
  13674. Dim aok As Boolean = False
  13675. Dim WorkingEpisode As TvEpisode = ep_SelectedCurrently(TvTreeview)
  13676. Dim paths As New List(Of String)
  13677. If Pref.EdenEnabled Then paths.Add(WorkingEpisode.NfoFilePath.Replace(".nfo", ".tbn"))
  13678. If Pref.FrodoEnabled Then paths.Add(WorkingEpisode.NfoFilePath.Replace(".nfo", "-thumb.jpg"))
  13679. Dim cachepathandfilename As String = pbTvEpScrnShot.Tag.ToString
  13680. aok = True
  13681. Dim imagearr() As Integer = GetAspect(WorkingEpisode)
  13682. If Pref.tvscrnshtTVDBResize AndAlso Not imagearr(0) = 0 Then
  13683. DownloadCache.CopyAndDownSizeImage(cachepathandfilename, paths(0), imagearr(0), imagearr(1))
  13684. Else
  13685. File.Copy(cachepathandfilename, paths(0), True)
  13686. End If
  13687. If paths.Count > 1 Then File.Copy(paths(0), paths(1), True)
  13688. If File.Exists(paths(0)) Then
  13689. util_ImageLoad(pbTvEpScrnShot, paths(0), Utilities.DefaultTvFanartPath)
  13690. util_ImageLoad(tv_PictureBoxLeft, paths(0), Utilities.DefaultTvFanartPath)
  13691. Dim Rating As String = tb_EpRating.Text 'WorkingEpisode.Rating.Value
  13692. If TestForMultiepisode(WorkingEpisode.NfoFilePath) Then
  13693. Dim episodelist As New List(Of TvEpisode)
  13694. episodelist = WorkingWithNfoFiles.ep_NfoLoad(WorkingEpisode.NfoFilePath)
  13695. For Each Ep In episodelist
  13696. If Ep.Season.Value = WorkingEpisode.Season.Value And Ep.Episode.Value = WorkingEpisode.Episode.Value Then
  13697. Dim video_flags = GetMultiEpMediaFlags(Ep)
  13698. movieGraphicInfo.OverlayInfo(tv_PictureBoxLeft, Rating, video_flags)
  13699. End If
  13700. Next
  13701. Else
  13702. Dim video_flags = GetEpMediaFlags()
  13703. movieGraphicInfo.OverlayInfo(tv_PictureBoxLeft, Rating, video_flags)
  13704. End If
  13705. End If
  13706. Catch ex As Exception
  13707. ExceptionHandler.LogError(ex)
  13708. End Try
  13709. End Sub
  13710. 'pbEpScrSht0 - pbEpScrSht4
  13711. Private Sub pbepscrsht_click(ByVal sender As Object, ByVal e As EventArgs)
  13712. Dim pb As PictureBox = sender
  13713. If IsNothing(pb.Image) OrElse IsNothing(pb.Tag) Then Exit Sub
  13714. util_ImageLoad(pbTvEpScrnShot, pb.Tag, Utilities.DefaultTvFanartPath)
  13715. End Sub
  13716. Private Function epGetThumbScreenShot() As String
  13717. Try
  13718. Dim aok As Boolean = False
  13719. Dim WorkingEpisode As TvEpisode = ep_SelectedCurrently(TvTreeview)
  13720. If WorkingEpisode.IsMissing Then Return ""
  13721. If TextBox35.Text = "" Then TextBox35.Text = Pref.ScrShtDelay
  13722. If IsNumeric(TextBox35.Text) Then
  13723. Dim paths As New List(Of String)
  13724. If Pref.EdenEnabled Then paths.Add(WorkingEpisode.NfoFilePath.Replace(".nfo", ".tbn"))
  13725. If Pref.FrodoEnabled Then paths.Add(WorkingEpisode.NfoFilePath.Replace(".nfo", "-thumb.jpg"))
  13726. 'Dim messbox As frmMessageBox = New frmMessageBox("ffmpeg is working to capture the desired screenshot", "", "Please Wait")
  13727. Dim tempstring2 As String = WorkingEpisode.VideoFilePath
  13728. If IO.File.Exists(tempstring2) Then
  13729. Dim seconds As Integer = Pref.ScrShtDelay
  13730. If Convert.ToInt32(TextBox35.Text) > 0 Then
  13731. seconds = Convert.ToInt32(TextBox35.Text)
  13732. End If
  13733. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  13734. 'messbox.Show()
  13735. 'messbox.Refresh()
  13736. Application.DoEvents()
  13737. Dim cachepathandfilename As String = Utilities.CreateScrnShotToCache(tempstring2, paths(0), seconds, 5, 10)
  13738. If cachepathandfilename <> "" Then
  13739. Return cachepathandfilename
  13740. End If
  13741. End If
  13742. End If
  13743. Catch
  13744. End Try
  13745. Return ""
  13746. End Function
  13747. #End Region
  13748. #Region "Tv Fanart Form"
  13749. Private Sub tpTvFanart_Leave(sender As Object, e As EventArgs) Handles tpTvFanart.Leave
  13750. If ImgBw.IsBusy Then
  13751. ImgBw.CancelAsync()
  13752. Do Until Not ImgBw.IsBusy
  13753. Application.DoEvents()
  13754. Loop
  13755. End If
  13756. End Sub
  13757. Private Sub btnTvFanartSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTvFanartSave.Click
  13758. If ImgBw.IsBusy Then
  13759. ImgBw.CancelAsync()
  13760. Do Until Not ImgBw.IsBusy
  13761. Application.DoEvents()
  13762. Loop
  13763. End If
  13764. Dim issavefanart As Boolean = Pref.savefanart
  13765. Pref.savefanart = True
  13766. Try
  13767. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  13768. lbl_movVotes.Text = "Please Wait, Trying to Download Fanart"
  13769. Me.Refresh()
  13770. Application.DoEvents()
  13771. Dim miscvar As String = String.Empty
  13772. Dim miscint As Integer = 0
  13773. Dim miscvar2 As String = String.Empty
  13774. Dim allok As Boolean = False
  13775. For Each button As Control In Me.Panel13.Controls
  13776. If button.Name.IndexOf("checkbox") <> -1 Then
  13777. Dim b1 As RadioButton = CType(button, RadioButton)
  13778. If b1.Checked = True Then
  13779. miscvar = b1.Name
  13780. miscvar = miscvar.Replace("checkbox", "")
  13781. miscint = Convert.ToDecimal(miscvar)
  13782. miscvar2 = listOfTvFanarts(miscint).bigUrl
  13783. allok = True
  13784. Exit For
  13785. End If
  13786. End If
  13787. Next
  13788. If allok = False Then
  13789. MsgBox("No Fanart Is Selected")
  13790. Else
  13791. Try
  13792. Dim savepath As String = WorkingTvShow.NfoFilePath.ToLower.Replace("tvshow.nfo", "fanart.jpg")
  13793. If Movie.SaveFanartImageToCacheAndPath(miscvar2, savepath) Then
  13794. Try
  13795. util_ImageLoad(PictureBox10, savepath, Utilities.DefaultTvFanartPath)
  13796. If TvTreeview.SelectedNode.Name.ToLower.IndexOf("tvshow.nfo") <> -1 Or TvTreeview.SelectedNode.Name = "" Then
  13797. util_ImageLoad(tv_PictureBoxLeft, savepath, Utilities.DefaultTvFanartPath)
  13798. End If
  13799. Catch ex As Exception
  13800. #If SilentErrorScream Then
  13801. Throw ex
  13802. #End If
  13803. End Try
  13804. Else
  13805. PictureBox10.Image = Nothing
  13806. End If
  13807. If Pref.FrodoEnabled Then
  13808. Utilities.SafeCopyFile(savepath, savepath.Replace("fanart.jpg", "season-all-fanart.jpg"), True)
  13809. End If
  13810. Catch ex As WebException
  13811. MsgBox(ex.Message)
  13812. End Try
  13813. End If
  13814. Pref.savefanart = issavefanart
  13815. Catch ex As Exception
  13816. ExceptionHandler.LogError(ex)
  13817. Pref.savefanart = issavefanart
  13818. End Try
  13819. End Sub
  13820. Private Sub rbTvFanart_CheckedChanged(sender As System.Object, e As System.EventArgs)
  13821. Tv_FanartDisplay()
  13822. End Sub
  13823. Private Sub Button35_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button35.MouseDown
  13824. Try
  13825. 'up
  13826. If PictureBox10.Image Is Nothing Then Exit Sub
  13827. thumbedItsMade = True
  13828. btnTvFanartResetImage.Visible = True
  13829. btnTvFanartSaveCropped.Visible = True
  13830. cropString = "top"
  13831. Timer4.Enabled = True
  13832. Catch ex As Exception
  13833. ExceptionHandler.LogError(ex)
  13834. End Try
  13835. End Sub
  13836. Private Sub Button36_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button36.MouseDown
  13837. Try
  13838. 'down
  13839. If PictureBox10.Image Is Nothing Then Exit Sub
  13840. thumbedItsMade = True
  13841. btnTvFanartResetImage.Visible = True
  13842. btnTvFanartSaveCropped.Visible = True
  13843. cropString = "bottom"
  13844. Timer4.Enabled = True
  13845. Catch ex As Exception
  13846. ExceptionHandler.LogError(ex)
  13847. End Try
  13848. End Sub
  13849. Private Sub Button38_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button38.MouseDown
  13850. Try
  13851. If PictureBox10.Image Is Nothing Then Exit Sub
  13852. thumbedItsMade = True
  13853. btnTvFanartResetImage.Visible = True
  13854. btnTvFanartSaveCropped.Visible = True
  13855. cropString = "left"
  13856. Timer4.Enabled = True
  13857. Catch ex As Exception
  13858. ExceptionHandler.LogError(ex)
  13859. End Try 'left
  13860. End Sub
  13861. Private Sub Button37_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button37.MouseDown
  13862. Try
  13863. 'right
  13864. If PictureBox10.Image Is Nothing Then Exit Sub
  13865. thumbedItsMade = True
  13866. btnTvFanartResetImage.Visible = True
  13867. btnTvFanartSaveCropped.Visible = True
  13868. cropString = "right"
  13869. Timer4.Enabled = True
  13870. Catch ex As Exception
  13871. ExceptionHandler.LogError(ex)
  13872. End Try
  13873. End Sub
  13874. Private Sub Timer4_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer4.Tick
  13875. Try
  13876. If cropString = "top" Then Call tv_FanartCropTop()
  13877. If cropString = "bottom" Then Call tv_FanartCropBottom()
  13878. If cropString = "left" Then Call tv_FanartCropLeft()
  13879. If cropString = "right" Then Call tv_FanartCropRight()
  13880. Label58.Text = PictureBox10.Image.Height.ToString
  13881. Label59.Text = PictureBox10.Image.Width.ToString
  13882. Catch ex As Exception
  13883. ExceptionHandler.LogError(ex)
  13884. End Try
  13885. End Sub
  13886. Private Sub Button35_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button35.MouseUp
  13887. Try
  13888. Timer4.Enabled = False
  13889. Catch ex As Exception
  13890. ExceptionHandler.LogError(ex)
  13891. End Try
  13892. End Sub
  13893. Private Sub Button36_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button36.MouseUp
  13894. Try
  13895. Timer4.Enabled = False
  13896. Catch ex As Exception
  13897. ExceptionHandler.LogError(ex)
  13898. End Try
  13899. End Sub
  13900. Private Sub Button38_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button38.MouseUp
  13901. Try
  13902. Timer4.Enabled = False
  13903. Catch ex As Exception
  13904. ExceptionHandler.LogError(ex)
  13905. End Try
  13906. End Sub
  13907. Private Sub Button37_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button37.MouseUp
  13908. Try
  13909. Timer4.Enabled = False
  13910. Catch ex As Exception
  13911. ExceptionHandler.LogError(ex)
  13912. End Try
  13913. End Sub
  13914. Private Sub btnTvFanartResetImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTvFanartResetImage.Click
  13915. Try
  13916. Dim workingtvshow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  13917. util_ImageLoad(PictureBox10, workingtvshow.FolderPath & "fanart.jpg", Utilities.DefaultTvFanartPath)
  13918. Label58.Text = PictureBox10.Image.Height.ToString
  13919. Label59.Text = PictureBox10.Image.Width.ToString
  13920. btnTvFanartResetImage.Visible = False
  13921. btnTvFanartSaveCropped.Visible = False
  13922. Catch ex As Exception
  13923. ExceptionHandler.LogError(ex)
  13924. End Try
  13925. End Sub
  13926. Private Sub btnTvFanartSaveCropped_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTvFanartSaveCropped.Click
  13927. Try
  13928. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  13929. Try
  13930. Dim stream As New System.IO.MemoryStream
  13931. PictureBox10.Image.Save(WorkingTvShow.FolderPath & "fanart.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
  13932. If TvTreeview.SelectedNode.Name.ToLower.IndexOf("tvshow.nfo") <> -1 Or TvTreeview.SelectedNode.Name = "" Then
  13933. util_ImageLoad(tv_PictureBoxLeft, WorkingTvShow.FolderPath & "fanart.jpg", Utilities.DefaultTvFanartPath)
  13934. End If
  13935. Label58.Text = PictureBox10.Image.Height.ToString
  13936. Label59.Text = PictureBox10.Image.Width.ToString
  13937. btnTvFanartResetImage.Visible = False
  13938. btnTvFanartSaveCropped.Visible = False
  13939. Catch ex As Exception
  13940. #If SilentErrorScream Then
  13941. Throw ex
  13942. #End If
  13943. End Try
  13944. Catch ex As Exception
  13945. ExceptionHandler.LogError(ex)
  13946. End Try
  13947. End Sub
  13948. Private Sub btnTvFanartUrl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTvFanartUrl.Click
  13949. Try
  13950. Dim t As New frmImageBrowseOrUrl
  13951. t.Location = Me.PointToScreen(New Point(btnTvFanartUrl.Left - 480, btnTvFanartUrl.Top + btnTvFanartUrl.Height))
  13952. t.ShowDialog()
  13953. If t.DialogResult = Windows.Forms.DialogResult.Cancel Or t.tb_PathorUrl.Text = "" Then
  13954. t.Dispose()
  13955. Exit Sub
  13956. End If
  13957. Dim PathOrUrl As String = t.tb_PathorUrl.Text
  13958. t.Dispose()
  13959. t = Nothing
  13960. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  13961. Dim savepath As String = WorkingTvShow.NfoFilePath.ToLower.Replace("tvshow.nfo", "fanart.jpg")
  13962. Dim eh As Boolean = Pref.savefanart
  13963. Pref.savefanart = True
  13964. Movie.SaveFanartImageToCacheAndPath(PathOrUrl, savepath)
  13965. Pref.savefanart = eh
  13966. Dim exists As Boolean = System.IO.File.Exists(savepath)
  13967. If exists = True Then
  13968. util_ImageLoad(PictureBox10, savepath, Utilities.DefaultTvFanartPath)
  13969. If TvTreeview.SelectedNode.Name.ToLower.IndexOf("tvshow.nfo") <> -1 Or TvTreeview.SelectedNode.Name = "" Then
  13970. util_ImageLoad(tv_PictureBoxLeft, savepath, Utilities.DefaultTvFanartPath)
  13971. End If
  13972. End If
  13973. Label59.Text = PictureBox10.Image.Width
  13974. Label58.Text = PictureBox10.Image.Height
  13975. Catch ex As Exception
  13976. MsgBox("Unable To Download Image")
  13977. End Try
  13978. End Sub
  13979. #End Region
  13980. #Region "Tv Poster Form"
  13981. Private Sub tpTvPosters_Leave(sender As Object, e As EventArgs) Handles tpTvPosters.Leave
  13982. If ImgBw.IsBusy Then
  13983. ImgBw.CancelAsync()
  13984. Do Until Not ImgBw.IsBusy
  13985. Application.DoEvents()
  13986. Loop
  13987. End If
  13988. End Sub
  13989. Private Sub btnTvPosterSaveBig_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTvPosterSaveBig.Click
  13990. Call TvPosterSave(btnTvPosterSaveBig.Tag)
  13991. End Sub
  13992. Private Sub btnTvPosterTVDBAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTvPosterTVDBAll.Click
  13993. Try
  13994. 'tvdb all
  13995. tvdbmode = True
  13996. usedlist.Clear()
  13997. btnTvPosterSaveBig.Visible = False
  13998. If tvdbposterlist.Count = 0 Then
  13999. Call tv_TvdbThumbsGet()
  14000. End If
  14001. For Each poster In tvdbposterlist
  14002. If rbTVbanner.Enabled = False Then
  14003. If poster.BannerType <> "fanart" And poster.BannerType <> "series" Then
  14004. usedlist.Add(poster)
  14005. End If
  14006. Else
  14007. If rbTVposter.Checked = False And poster.BannerType = "series" Then
  14008. usedlist.Add(poster)
  14009. ElseIf rbTVposter.Checked = True And poster.BannerType <> "fanart" Then
  14010. If poster.BannerType <> "series" Then usedlist.Add(poster)
  14011. End If
  14012. End If
  14013. Next
  14014. Call tv_PosterPanelPopulate()
  14015. Catch ex As Exception
  14016. ExceptionHandler.LogError(ex)
  14017. End Try
  14018. End Sub
  14019. Private Sub btnTvPosterTVDBSpecific_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTvPosterTVDBSpecific.Click
  14020. Try
  14021. 'tvdb specific
  14022. tvdbmode = True
  14023. usedlist.Clear()
  14024. btnTvPosterSaveBig.Visible = False
  14025. If tvdbposterlist.Count = 0 Then
  14026. Call tv_TvdbThumbsGet()
  14027. End If
  14028. Dim tempseason As String = ""
  14029. If ComboBox2.SelectedItem.indexof("Season ") <> -1 Then
  14030. tempseason = ComboBox2.SelectedItem.replace("Season ", "")
  14031. End If
  14032. If tempseason.IndexOf("0") = 0 And tempseason.Length > 1 Then
  14033. tempseason = tempseason.Substring(1, tempseason.Length - 1)
  14034. End If
  14035. If ComboBox2.SelectedItem.indexof("Specials") <> -1 Then
  14036. tempseason = "0"
  14037. End If
  14038. If ComboBox2.SelectedItem.indexof("Main Image") <> -1 And rbTVposter.Checked = True Then
  14039. tempseason = "poster"
  14040. ElseIf ComboBox2.SelectedItem.indexof("Main Image") <> -1 And rbTVposter.Checked = False Then
  14041. tempseason = "series"
  14042. End If
  14043. If tempseason = "poster" Or tempseason = "series" Then
  14044. For Each poster In tvdbposterlist
  14045. If poster.BannerType = "poster" And rbTVposter.Checked = True Then
  14046. If poster.BannerType <> "fanart" Then usedlist.Add(poster)
  14047. End If
  14048. If poster.BannerType = "series" And rbTVposter.Checked = False Then
  14049. If poster.BannerType <> "fanart" Then usedlist.Add(poster)
  14050. End If
  14051. Next
  14052. Else
  14053. For Each poster In tvdbposterlist
  14054. If poster.Season = tempseason Then
  14055. If rbTVbanner.Checked = True Then
  14056. If poster.Resolution = "seasonwide" And poster.BannerType <> "fanart" And poster.BannerType <> "poster" Then
  14057. usedlist.Add(poster)
  14058. End If
  14059. End If
  14060. If rbTVposter.Checked = True Then
  14061. If poster.Resolution <> "seasonwide" And poster.BannerType <> "fanart" And poster.BannerType <> "banner" Then
  14062. usedlist.Add(poster)
  14063. End If
  14064. End If
  14065. End If
  14066. Next
  14067. End If
  14068. Call tv_PosterPanelPopulate()
  14069. Catch ex As Exception
  14070. ExceptionHandler.LogError(ex)
  14071. End Try
  14072. End Sub
  14073. Private Sub btnTvPosterNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTvPosterNext.Click 'TV Poster Page Next
  14074. Try
  14075. If ImgBw.IsBusy Then
  14076. ImgBw.CancelAsync()
  14077. Do Until Not ImgBw.IsBusy
  14078. Application.DoEvents()
  14079. Loop
  14080. End If
  14081. tvposterpage += 1
  14082. btnTvPosterSaveBig.Visible = False
  14083. If usedlist.Count < 10 * tvposterpage Then
  14084. btnTvPosterNext.Enabled = False
  14085. End If
  14086. Call tv_PosterSelectionDisplay()
  14087. btnTvPosterPrev.Enabled = True
  14088. Catch ex As Exception
  14089. ExceptionHandler.LogError(ex)
  14090. End Try
  14091. End Sub
  14092. Private Sub btnTvPosterPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTvPosterPrev.Click 'TV Poster Page Prev
  14093. Try
  14094. If ImgBw.IsBusy Then
  14095. ImgBw.CancelAsync()
  14096. Do Until Not ImgBw.IsBusy
  14097. Application.DoEvents()
  14098. Loop
  14099. End If
  14100. tvposterpage -= 1
  14101. btnTvPosterSaveBig.Visible = False
  14102. If tvposterpage = 1 Then
  14103. btnTvPosterPrev.Enabled = False
  14104. End If
  14105. Call tv_PosterSelectionDisplay()
  14106. btnTvPosterNext.Enabled = True
  14107. Catch ex As Exception
  14108. ExceptionHandler.LogError(ex)
  14109. End Try
  14110. End Sub
  14111. Private Sub btnTvPosterIMDB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTvPosterIMDB.Click
  14112. Try
  14113. btnTvPosterSaveBig.Visible = False
  14114. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  14115. If WorkingTvShow.ImdbId = Nothing Then
  14116. MsgBox("No IMDB ID is available for this movie, cant scrape posters")
  14117. Exit Sub
  14118. End If
  14119. If WorkingTvShow.ImdbId.Value = "" Then
  14120. MsgBox("No IMDB ID is available for this movie, cant scrape posters")
  14121. Exit Sub
  14122. End If
  14123. Dim ok As Boolean = False
  14124. If WorkingTvShow.ImdbId.Value.ToLower.IndexOf("tt") = 0 Then
  14125. Dim tempstring As String = WorkingTvShow.ImdbId.Value.ToLower.Substring(2, WorkingTvShow.ImdbId.Value.Length - 2)
  14126. If IsNumeric(tempstring) Then
  14127. ok = True
  14128. End If
  14129. End If
  14130. If IsNumeric(WorkingTvShow.ImdbId) And WorkingTvShow.ImdbId.Value.Length = 7 Then
  14131. WorkingTvShow.ImdbId.Value = "tt" & WorkingTvShow.ImdbId.Value
  14132. ok = True
  14133. End If
  14134. If ok = False Then
  14135. MsgBox("IMDB ID seems to be an invalid format, can't scrape posters")
  14136. Exit Sub
  14137. End If
  14138. tvdbmode = False
  14139. usedlist.Clear()
  14140. If imdbposterlist.Count <= 0 Then
  14141. Dim newobject2 As New imdb_thumbs.Class1
  14142. newobject2.MCProxy = Utilities.MyProxy
  14143. Dim posters(,) As String = newobject2.getimdbposters(WorkingTvShow.ImdbId.Value)
  14144. For f = 0 To UBound(posters)
  14145. If posters(f, 0) <> Nothing Then
  14146. Dim individualposter As New TvBanners
  14147. individualposter.SmallUrl = posters(f, 0)
  14148. individualposter.Url = posters(f, 0)
  14149. imdbposterlist.Add(individualposter)
  14150. End If
  14151. Next
  14152. End If
  14153. For Each po In imdbposterlist
  14154. usedlist.Add(po)
  14155. Next
  14156. usedlist.Reverse()
  14157. Call tv_PosterPanelPopulate()
  14158. Catch ex As Exception
  14159. ExceptionHandler.LogError(ex)
  14160. End Try
  14161. End Sub
  14162. Private Sub btnTvPosterUrlBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTvPosterUrlBrowse.Click
  14163. Try
  14164. Dim t As New frmImageBrowseOrUrl
  14165. t.Location = Me.PointToScreen(New Point(btnTvPosterUrlBrowse.Left - 480, GroupBox23.Top + GroupBox23.Height))
  14166. t.ShowDialog()
  14167. If t.DialogResult = Windows.Forms.DialogResult.Cancel Or t.tb_PathorUrl.Text = "" Then
  14168. t.Dispose()
  14169. Exit Sub
  14170. End If
  14171. Dim PathOrUrl As String = t.tb_PathorUrl.Text
  14172. t.Dispose()
  14173. t = Nothing
  14174. Try
  14175. Call TvPosterSave(PathOrUrl)
  14176. Catch ex As Exception
  14177. MsgBox(ex.ToString)
  14178. End Try
  14179. Catch ex As Exception
  14180. ExceptionHandler.LogError(ex)
  14181. End Try
  14182. End Sub
  14183. Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
  14184. btnTvPosterSaveBig.Visible = False
  14185. BannerAndPosterViewer()
  14186. End Sub
  14187. Private Sub rbTVbanner_CheckedChanged(sender As Object, e As EventArgs) Handles rbTVbanner.CheckedChanged
  14188. btnTvPosterSaveBig.Visible = False
  14189. BannerAndPosterViewer()
  14190. End Sub
  14191. #End Region
  14192. #Region "TV Fanart.TV Form"
  14193. Private Sub tvtpfanarttv_Leave(sender As Object, e As EventArgs) Handles tpTvFanartTv.Leave
  14194. If ImgBw.IsBusy Then
  14195. ImgBw.CancelAsync()
  14196. Do Until Not ImgBw.IsBusy
  14197. Application.DoEvents()
  14198. Loop
  14199. End If
  14200. tv_ShowLoad(tv_ShowSelectedCurrently(TvTreeview))
  14201. End Sub
  14202. #End Region
  14203. #Region "TV Wall Form"
  14204. Private Sub updateTvPosterWall(ByVal path As String, ByVal series As String)
  14205. For Each poster As PictureBox In tpTvWall.Controls
  14206. If poster.Tag = series Then
  14207. util_ImageLoad(poster, path, Utilities.DefaultPosterPath)
  14208. poster.Tag = series
  14209. End If
  14210. Next
  14211. For each poster As PictureBox In tvpicturelist
  14212. If poster.Tag = series Then
  14213. util_ImageLoad(poster, path, Utilities.DefaultPosterPath)
  14214. poster.Tag = series
  14215. End If
  14216. Next
  14217. End Sub
  14218. Private Sub tv_WallReset()
  14219. For i = tpTvWall.Controls.Count - 1 To 0 Step -1
  14220. tpTvWall.Controls.RemoveAt(i)
  14221. Next
  14222. Dim count As Integer = 0
  14223. Dim locx As Integer = 0
  14224. Dim locy As Integer = 0
  14225. Dim tvMaxWallCount As Integer = Math.Floor((tpTvWall.Width - 40) / WallPicWidth)
  14226. While (Cache.TvCache.Shows.Count / tvMaxWallCount) > (WallPicWidth + 15)
  14227. tvMaxWallCount += 1
  14228. End While
  14229. Try
  14230. For Each pic In tvpictureList
  14231. Try
  14232. If count = tvMaxWallCount Then
  14233. count = 0
  14234. locx = 0
  14235. locy += WallPicHeight
  14236. End If
  14237. With pic
  14238. Dim vscrollPos As Integer = tpTvWall.VerticalScroll.Value
  14239. .Location = New Point(locx, locy - vscrollPos)
  14240. .ContextMenuStrip = TVWallContextMenu
  14241. End With
  14242. locx += WallPicWidth
  14243. count += 1
  14244. Me.tpTvWall.Controls.Add(pic)
  14245. tpTvWall.Refresh()
  14246. Application.DoEvents()
  14247. Catch ex As Exception
  14248. MsgBox(ex.ToString)
  14249. End Try
  14250. Next
  14251. Catch ex As Exception
  14252. Finally
  14253. End Try
  14254. End Sub
  14255. Private Sub tv_wallSetup()
  14256. Dim check As Boolean = True
  14257. Dim count As Integer = 0
  14258. Dim locx As Integer = 0
  14259. Dim locy As Integer = 0
  14260. If tvCount_bak = Cache.TvCache.Shows.count Then Exit Sub
  14261. tvMaxWallCount = Math.Floor((tpTvWall.Width - 40)/WallPicWidth)
  14262. While (Cache.TvCache.Shows.Count / tvMaxWallCount) > (WallPicWidth+15)
  14263. tvMaxWallCount += 1
  14264. End While
  14265. tvpictureList.Clear()
  14266. For i = tpTvWall.Controls.Count - 1 To 0 Step -1
  14267. If tpTvWall.Controls(i).Name = "" Then
  14268. tpTvWall.Controls.RemoveAt(i)
  14269. End If
  14270. Next
  14271. tpTvWall.Refresh()
  14272. Application.DoEvents()
  14273. For Each tvsh In Cache.TvCache.Shows
  14274. tvCount_bak += 1
  14275. bigPictureBox = New PictureBox()
  14276. With bigPictureBox
  14277. .Width = WallPicWidth
  14278. .Height = WallPicHeight
  14279. .SizeMode = PictureBoxSizeMode.StretchImage
  14280. Dim filename As String = Utilities.GetCRC32(tvsh.NfoFilePath)
  14281. Dim posterCache As String = Utilities.PosterCachePath & filename & ".jpg"
  14282. If Not File.Exists(posterCache) And File.Exists(tvsh.ImagePoster.Path) Then
  14283. Try
  14284. Utilities.save2postercache(tvsh.NfoFilePath, tvsh.ImagePoster.Path, WallPicWidth, WallPicHeight)
  14285. 'Dim bitmap2 As New Bitmap(tvsh.ImagePoster.Path)
  14286. 'bitmap2 = Utilities.ResizeImage(bitmap2, WallPicWidth, WallPicHeight)
  14287. 'Utilities.SaveImage(bitmap2, IO.Path.Combine(posterCache))
  14288. 'bitmap2.Dispose()
  14289. Catch
  14290. 'Invalid file
  14291. File.Delete(tvsh.ImagePoster.Path)
  14292. End Try
  14293. End If
  14294. If File.Exists(posterCache) Then
  14295. Try
  14296. .Image = Utilities.LoadImage(posterCache)
  14297. Catch
  14298. 'Invalid file
  14299. File.Delete(Pref.GetPosterPath(tvsh.nfofilepath))
  14300. End Try
  14301. Else
  14302. .Image = Utilities.LoadImage(Utilities.DefaultPosterPath)
  14303. End If
  14304. .Tag = tvsh.nfofilepath
  14305. Dim toolTip1 As ToolTip = New ToolTip(Me.components)
  14306. toolTip1.AutoPopDelay = 12000
  14307. Dim outline As String = tvsh.Plot.Value
  14308. Dim newoutline As List(Of String) = util_TextWrap(outline, 55)
  14309. outline = ""
  14310. For Each line In newoutline
  14311. outline = outline & vbCrLf & line
  14312. Next
  14313. outline.TrimEnd(vbCrLf)
  14314. Dim epcount As String = "Episodes: " & tvsh.Episodes.Count.ToString & vbcrlf
  14315. Dim Seasoncount As String = "Seasons: " & tvsh.Seasons.Count.ToString & vbCrLf
  14316. Dim ttiptext As String = tvsh.Title.Value & vbCrLf & tvsh.FolderPath & vbCrLf & vbCrLf
  14317. ttiptext = ttiptext & epcount & Seasoncount & vbCrLf & outline
  14318. toolTip1.SetToolTip(bigPictureBox, ttiptext)
  14319. toolTip1.Active = True
  14320. toolTip1.InitialDelay = 0
  14321. .Visible = True
  14322. .BorderStyle = BorderStyle.None
  14323. .WaitOnLoad = True
  14324. .ContextMenuStrip = TVWallContextMenu
  14325. AddHandler bigPictureBox.MouseEnter, AddressOf util_MouseEnter
  14326. AddHandler bigPictureBox.DoubleClick, AddressOf tv_WallClicked
  14327. If count = tvMaxWallCount Then
  14328. count = 0
  14329. locx = 0
  14330. locy += WallPicHeight
  14331. End If
  14332. Dim vscrollPos As Integer = tpTvWall.VerticalScroll.Value
  14333. If mouseDelta <> 0 Then
  14334. vscrollPos = vscrollPos - mouseDelta
  14335. mouseDelta = 0
  14336. End If
  14337. .Location = New Point(locx, locy - vscrollPos)
  14338. locx += WallPicWidth
  14339. count += 1
  14340. End With
  14341. Me.tpTvWall.Controls.Add(bigPictureBox)
  14342. tvpictureList.Add(bigPictureBox)
  14343. Me.tpTvWall.Refresh()
  14344. Application.DoEvents()
  14345. Next
  14346. End Sub
  14347. Private Sub tv_WallClicked(ByVal sender As Object, ByVal e As EventArgs)
  14348. Dim item As Windows.Forms.PictureBox = sender
  14349. Dim tempstring As String = item.Tag
  14350. Dim child As TreeNode
  14351. For Each child In TvTreeview.Nodes
  14352. If TypeOf child.Tag Is Media_Companion.TvShow Then
  14353. Dim TempShow As TvShow = child.Tag
  14354. If TempShow.NfoFilePath = tempstring Then
  14355. TvTreeview.SelectedNode = child
  14356. TabControl3.SelectedIndex = 0
  14357. Exit For
  14358. End If
  14359. End If
  14360. Next
  14361. End Sub
  14362. Private Sub tsmiTvWallPosterChange_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiTvWallPosterChange.Click
  14363. Dim tempstring As String = ClickedControl
  14364. If tempstring <> Nothing Then
  14365. Dim child As TreeNode
  14366. For Each child In TvTreeview.Nodes
  14367. If TypeOf child.Tag Is Media_Companion.TvShow Then
  14368. Dim TempShow As TvShow = child.Tag
  14369. If TempShow.NfoFilePath = tempstring Then
  14370. TvTreeview.SelectedNode = child
  14371. TabControl3.SelectedIndex = TabControl3.TabPages.IndexOf(tpTvPosters)
  14372. Exit For
  14373. End If
  14374. End If
  14375. Next
  14376. End If
  14377. End Sub
  14378. Private Sub tsmiTvWallLargeView_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsmiTvWallLargeView.Click
  14379. Dim tempstring As String = ClickedControl
  14380. If tempstring <> Nothing Then
  14381. Try
  14382. Dim Temp2 As String = SeriesFromCache(tempstring).ImagePoster.path
  14383. If IO.File.Exists(Temp2) Then
  14384. Me.ControlBox = False
  14385. MenuStrip1.Enabled = False
  14386. util_ZoomImage(Temp2)
  14387. Else
  14388. MsgBox("Cant find file:-" & vbCrLf & Temp2)
  14389. End If
  14390. Catch ex As Exception
  14391. End Try
  14392. End If
  14393. End Sub
  14394. Private Sub tsmiTvWallOpenFolder_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles tsmiTvWallOpenFolder.Click
  14395. Try
  14396. Dim tempstring As String = ClickedControl
  14397. If tempstring <> Nothing Then
  14398. Try
  14399. Call util_OpenFolder(tempstring)
  14400. Catch ex As Exception
  14401. End Try
  14402. End If
  14403. Catch ex As Exception
  14404. ExceptionHandler.LogError(ex)
  14405. End Try
  14406. End Sub
  14407. Private Function SeriesFromCache(ByVal nfopath As String) As TvShow
  14408. Dim child As TreeNode
  14409. For each child In TvTreeview.Nodes
  14410. If TypeOf child.Tag Is Media_Companion.TvShow Then
  14411. Dim TempShow As TvShow = child.Tag
  14412. If TempShow.NfoFilePath = nfopath Then Return TempShow
  14413. End If
  14414. Next
  14415. Return Nothing
  14416. End Function
  14417. #End Region
  14418. #Region "Tv Show Selector Form"
  14419. Private Sub TextBox26_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox26.KeyDown
  14420. Try
  14421. If e.KeyCode = Keys.Enter Then
  14422. Call tv_ShowListLoad()
  14423. End If
  14424. Catch ex As Exception
  14425. ExceptionHandler.LogError(ex)
  14426. End Try
  14427. End Sub
  14428. Private Sub Button30_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button30.Click
  14429. Try
  14430. Call tv_ShowListLoad()
  14431. Catch ex As Exception
  14432. ExceptionHandler.LogError(ex)
  14433. End Try
  14434. End Sub
  14435. Private Sub ListBox3_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox3.SelectedIndexChanged
  14436. util_ImageLoad(PictureBox9, listOfShows(ListBox3.SelectedIndex).showbanner, Utilities.DefaultBannerPath)
  14437. End Sub
  14438. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
  14439. Try
  14440. Call util_LanguageCheck()
  14441. Catch ex As Exception
  14442. ExceptionHandler.LogError(ex)
  14443. End Try
  14444. End Sub
  14445. Private Sub RadioButton8_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton8.CheckedChanged
  14446. Try
  14447. If RadioButton8.Checked = True Then
  14448. Pref.postertype = "banner"
  14449. Else
  14450. Pref.postertype = "poster"
  14451. End If
  14452. Catch ex As Exception
  14453. ExceptionHandler.LogError(ex)
  14454. End Try
  14455. End Sub
  14456. Private Sub RadioButton9_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton9.CheckedChanged
  14457. Try
  14458. If RadioButton9.Checked = True Then
  14459. Pref.postertype = "poster"
  14460. Else
  14461. Pref.postertype = "banner"
  14462. End If
  14463. Catch ex As Exception
  14464. ExceptionHandler.LogError(ex)
  14465. End Try
  14466. End Sub
  14467. Private Sub RadioButton16_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton16.CheckedChanged
  14468. Try
  14469. If RadioButton16.Checked = True Then
  14470. Pref.seasonall = "wide"
  14471. End If
  14472. Catch ex As Exception
  14473. ExceptionHandler.LogError(ex)
  14474. End Try
  14475. End Sub
  14476. Private Sub RadioButton17_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton17.CheckedChanged
  14477. Try
  14478. If RadioButton17.Checked = True Then
  14479. Pref.seasonall = "poster"
  14480. End If
  14481. Catch ex As Exception
  14482. ExceptionHandler.LogError(ex)
  14483. End Try
  14484. End Sub
  14485. Private Sub RadioButton18_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton18.CheckedChanged
  14486. Try
  14487. If RadioButton18.Checked = True Then
  14488. Pref.seasonall = "none"
  14489. End If
  14490. Catch ex As Exception
  14491. ExceptionHandler.LogError(ex)
  14492. End Try
  14493. End Sub
  14494. Private Sub cbTvChgShowDLSeason_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbTvChgShowDLSeason.CheckedChanged
  14495. Try
  14496. Pref.TvChgShowDlSeasonthumbs = cbTvChgShowDLSeason.Checked
  14497. Catch ex As Exception
  14498. ExceptionHandler.LogError(ex)
  14499. End Try
  14500. End Sub
  14501. Private Sub cbTvChgShowOverwriteImgs_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbTvChgShowOverwriteImgs.CheckedChanged
  14502. Try
  14503. Pref.TvChgShowOverwriteImgs = cbTvChgShowOverwriteImgs.Checked
  14504. Catch ex As Exception
  14505. ExceptionHandler.LogError(ex)
  14506. End Try
  14507. End Sub
  14508. Private Sub cbTvChgShowDLFanart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbTvChgShowDLFanart.CheckedChanged
  14509. Try
  14510. Pref.TvChgShowDlFanart = cbTvChgShowDLFanart.Checked
  14511. Catch ex As Exception
  14512. ExceptionHandler.LogError(ex)
  14513. End Try
  14514. End Sub
  14515. Private Sub cbTvChgShowDLFanartTvArt_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbTvChgShowDLFanartTvArt.CheckedChanged
  14516. Try
  14517. Pref.TvChgShowDlFanartTvArt = cbTvChgShowDLFanartTvArt.Checked
  14518. Catch ex As Exception
  14519. ExceptionHandler.LogError(ex)
  14520. End Try
  14521. End Sub
  14522. Private Sub cbTvChgShowDLPoster_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbTvChgShowDLPoster.CheckedChanged
  14523. Try
  14524. Pref.TvChgShowDlPoster = cbTvChgShowDLPoster.Checked
  14525. Catch ex As Exception
  14526. ExceptionHandler.LogError(ex)
  14527. End Try
  14528. End Sub
  14529. Private Sub btnTvShowSelectorScrape_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTvShowSelectorScrape.Click
  14530. Try
  14531. Dim WorkingTvShow As TvShow = tv_ShowSelectedCurrently(TvTreeview)
  14532. If listOfShows.Count = 1 And listOfShows(0).showtitle = "TVDB Search Returned Zero Results" Then
  14533. MsgBox("No show is selected")
  14534. Exit Sub
  14535. End If
  14536. Dim tempstring As String = ""
  14537. If Label55.Text.IndexOf("is not available in") <> -1 Then
  14538. MsgBox("Please select a language that is available for this show")
  14539. Exit Sub
  14540. End If
  14541. messbox = New frmMessageBox("The Selected TV Show is being Scraped", "", "Please Wait")
  14542. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  14543. messbox.Show()
  14544. messbox.Refresh()
  14545. Application.DoEvents()
  14546. Dim LanCode As String
  14547. If ListBox1.SelectedIndex = -1 Then
  14548. LanCode = Pref.TvdbLanguageCode
  14549. Else
  14550. LanCode = languageList(ListBox1.SelectedIndex).Abbreviation.Value
  14551. End If
  14552. If Pref.tvshow_useXBMC_Scraper = True Then
  14553. Dim TVShowNFOContent As String = XBMCScrape_TVShow_General_Info("metadata.tvdb.com", listOfShows(ListBox3.SelectedIndex).showid, LanCode, WorkingTvShow.NfoFilePath)
  14554. If TVShowNFOContent <> "error" Then CreateMovieNfo(WorkingTvShow.NfoFilePath, TVShowNFOContent)
  14555. Dim newshow As TvShow = nfoFunction.tvshow_NfoLoad(WorkingTvShow.NfoFilePath)
  14556. newshow.ListActors.Clear()
  14557. If Pref.TvdbActorScrape = 0 Or Pref.TvdbActorScrape = 3 Or NewShow.ImdbId.Value = Nothing Then
  14558. TvGetActorTvdb(NewShow)
  14559. ElseIf (Pref.TvdbActorScrape = 1 Or Pref.TvdbActorScrape = 2) And NewShow.ImdbId.Value <> Nothing Then
  14560. TvGetActorImdb(NewShow)
  14561. End If
  14562. If Pref.tvdbIMDbRating Then
  14563. Dim rating As String = ""
  14564. Dim votes As String = ""
  14565. If ep_getIMDbRating(newshow.ImdbId.Value, rating, votes) Then
  14566. newshow.Rating.Value = rating
  14567. newshow.Votes.Value = votes
  14568. End If
  14569. End If
  14570. nfoFunction.tvshow_NfoSave(newshow, True)
  14571. Call tv_ShowLoad(WorkingTvShow)
  14572. TvTreeview.Refresh()
  14573. messbox.Close()
  14574. TabControl3.SelectedIndex = 0
  14575. Else
  14576. If Pref.TvChgShowOverwriteImgs Then TvDeleteShowArt(WorkingTvShow)
  14577. Cache.TvCache.Remove(WorkingTvShow)
  14578. newTvFolders.Add(WorkingTvShow.FolderPath.Substring(0, WorkingTvShow.FolderPath.LastIndexOf("\")))
  14579. Dim args As TvdbArgs = New TvdbArgs(listOfShows(ListBox3.SelectedIndex).showid, LanCode)
  14580. bckgrnd_tvshowscraper.RunWorkerAsync(args)
  14581. While bckgrnd_tvshowscraper.IsBusy
  14582. Application.DoEvents()
  14583. End While
  14584. TabControl3.SelectedIndex = 0
  14585. messbox.Close()
  14586. End If
  14587. Catch ex As Exception
  14588. ExceptionHandler.LogError(ex)
  14589. Finally
  14590. Pref.TvChgShowDlFanart = False
  14591. Pref.TvChgShowDlFanartTvArt = False
  14592. Pref.TvChgShowDlPoster = False
  14593. Pref.TvChgShowDlSeasonthumbs = False
  14594. Pref.TvChgShowOverwriteImgs = False
  14595. End Try
  14596. End Sub
  14597. #End Region
  14598. #Region "TV TVDB/IMDB Form"
  14599. Private Sub btn_TvTVDb_Click(sender As System.Object, e As System.EventArgs) Handles btn_TvTVDb.Click
  14600. Dim url As String
  14601. Dim Show As Media_Companion.TvShow = tv_ShowSelectedCurrently(TvTreeview)
  14602. If Show.TvdbId.Value.Contains("tt") Then
  14603. MsgBox("Invalid Tvdb ID" & vbCrLf & "Unable to load Show's TVDB page")
  14604. Exit Sub
  14605. End If
  14606. If String.IsNullOrEmpty(Show.TvdbId.Value) Then
  14607. MsgBox("Selected Show has no Tvdb ID" & vbCrLf & "Unable to load Show's TVDB page")
  14608. Exit Sub
  14609. End If
  14610. Dim TvdbId As Integer = Show.TvdbId.Value
  14611. url = "http://thetvdb.com/?tab=series&id=" & TvdbId & "&lid=7"
  14612. 'url = "whatsmyuseragent.com"
  14613. Try
  14614. WebBrowser4.Stop()
  14615. WebBrowser4.ScriptErrorsSuppressed = True
  14616. WebBrowser4.Navigate(url)
  14617. Catch
  14618. WebBrowser4.Stop()
  14619. WebBrowser4.ScriptErrorsSuppressed = True
  14620. WebBrowser4.Navigate(url)
  14621. End Try
  14622. WebBrowser4.Focus()
  14623. End Sub
  14624. Private Sub btn_TvIMDB_Click(sender As System.Object, e As System.EventArgs) Handles btn_TvIMDB.Click
  14625. Dim url As String
  14626. Dim Show As Media_Companion.TvShow = tv_ShowSelectedCurrently(TvTreeview)
  14627. If String.IsNullOrEmpty(Show.ImdbId.Value) Then
  14628. MsgBox("Selected Show has no IMDB ID" & vbCrLf & "Unable to load Show's IMDB page")
  14629. Exit Sub
  14630. End If
  14631. url = "http://www.imdb.com/title/" & Show.ImdbId.Value & "/"
  14632. Try
  14633. WebBrowser4.Stop()
  14634. WebBrowser4.ScriptErrorsSuppressed = True
  14635. WebBrowser4.Navigate(url)
  14636. Catch
  14637. WebBrowser4.Stop()
  14638. WebBrowser4.ScriptErrorsSuppressed = True
  14639. WebBrowser4.Navigate(url)
  14640. End Try
  14641. WebBrowser4.Focus()
  14642. End Sub
  14643. Private Sub btnTvWebStop_Click(sender As System.Object, e As System.EventArgs) Handles btnTvWebStop.Click
  14644. WebBrowser4.Stop()
  14645. WebBrowser4.Focus()
  14646. End Sub
  14647. Private Sub btnTvWebRefresh_Click(sender As System.Object, e As System.EventArgs) Handles btnTvWebRefresh.Click
  14648. Try
  14649. WebBrowser4.Refresh()
  14650. Catch
  14651. End Try
  14652. WebBrowser4.Focus()
  14653. End Sub
  14654. Private Sub btnTvWebBack_Click(sender As System.Object, e As System.EventArgs) Handles btnTvWebBack.Click
  14655. Try
  14656. WebBrowser4.GoBack()
  14657. Catch
  14658. End Try
  14659. WebBrowser4.Focus()
  14660. End Sub
  14661. Private Sub btnTvWebForward_Click(sender As System.Object, e As System.EventArgs) Handles btnTvWebForward.Click
  14662. Try
  14663. WebBrowser4.GoForward()
  14664. Catch
  14665. End Try
  14666. WebBrowser4.Focus()
  14667. End Sub
  14668. #End Region
  14669. #Region "Tv Folders Form"
  14670. 'Private Sub tpTvFolders_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles tpTvFolders.Enter
  14671. ' tvfolderschanged = False
  14672. 'End Sub
  14673. Private Sub tpTvFolders_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles tpTvFolders.Leave
  14674. Try
  14675. If tvfolderschanged Then
  14676. Dim save = MsgBox("You have made changes to some folders" & vbCrLf & " Do you wish to save these changes?", MsgBoxStyle.YesNo)
  14677. If save = DialogResult.Yes Then
  14678. btn_TvFoldersSave.PerformClick()
  14679. Else
  14680. btn_TvFoldersUndo.PerformClick()
  14681. End If
  14682. tvfolderschanged = False
  14683. End If
  14684. Catch ex As Exception
  14685. ExceptionHandler.LogError(ex)
  14686. End Try
  14687. End Sub
  14688. Private Sub btn_TvFoldersRootAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_TvFoldersRootAdd.Click
  14689. Try
  14690. If TextBox39.Text = Nothing Then
  14691. Exit Sub
  14692. End If
  14693. If TextBox39.Text = "" Then
  14694. Exit Sub
  14695. End If
  14696. Dim tempstring As String = TextBox39.Text
  14697. Do While tempstring.LastIndexOf("\") = tempstring.Length - 1
  14698. tempstring = tempstring.Substring(0, tempstring.Length - 1)
  14699. Loop
  14700. Do While tempstring.LastIndexOf("/") = tempstring.Length - 1
  14701. tempstring = tempstring.Substring(0, tempstring.Length - 1)
  14702. Loop
  14703. Dim exists As Boolean = False
  14704. For Each item In clbx_TvRootFolders.items
  14705. If item.ToString.ToLower = tempstring.ToLower Then
  14706. exists = True
  14707. Exit For
  14708. End If
  14709. Next
  14710. If exists = True Then
  14711. MsgBox(" Folder Already Exists")
  14712. Else
  14713. Dim f As New IO.DirectoryInfo(tempstring)
  14714. If f.Exists Then
  14715. AuthorizeCheck = True
  14716. clbx_TvRootFolders.Items.Add(tempstring, True)
  14717. AuthorizeCheck = False
  14718. TextBox39.Text = ""
  14719. tvfolderschanged = True
  14720. Else
  14721. Dim tempint As Integer = MessageBox.Show("This folder does not appear to exist" & vbCrLf & "Are you sure you wish to add it", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
  14722. If tempint = DialogResult.Yes Then
  14723. AuthorizeCheck = True
  14724. clbx_TvRootFolders.Items.Add(tempstring, True)
  14725. AuthorizeCheck = False
  14726. TextBox39.Text = ""
  14727. tvfolderschanged = True
  14728. End If
  14729. End If
  14730. End If
  14731. Catch ex As Exception
  14732. ExceptionHandler.LogError(ex)
  14733. End Try
  14734. End Sub
  14735. Private Sub btn_TvFoldersRootBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_TvFoldersRootBrowse.Click
  14736. Try
  14737. 'browse for root tv folder
  14738. Dim allok As Boolean = True
  14739. Dim cancelregex As Boolean = False
  14740. Dim newtvshow As Boolean = False
  14741. 'Dim theFolderBrowser As New FolderBrowserDialog
  14742. Dim strfolder As String
  14743. Dim tempstring3 As String
  14744. Dim tempint As Integer = 0
  14745. Dim tempint2 As Integer = 0
  14746. fb.Description = "Please Select Root Folder of the TV Shows You Wish To Add to DB"
  14747. fb.ShowNewFolderButton = True
  14748. fb.RootFolder = System.Environment.SpecialFolder.Desktop
  14749. fb.SelectedPath = Pref.lastpath
  14750. Tmr.Start()
  14751. If fb.ShowDialog = Windows.Forms.DialogResult.OK Then
  14752. strfolder = (fb.SelectedPath)
  14753. Pref.lastpath = strfolder
  14754. Dim hasseason As Boolean = False
  14755. If Not clbx_TvRootFolders.Items.Contains(strfolder) Then
  14756. For Each strfolder2 As String In My.Computer.FileSystem.GetDirectories(strfolder)
  14757. Dim M As Match
  14758. tempstring3 = strfolder2.ToLower.Replace(strfolder.ToLower,"")
  14759. M = Regex.Match(tempstring3, "(series ?\d+|season ?\d+|s ?\d+|^\d{1,3}$)")
  14760. If M.Success = True Then
  14761. hasseason = True
  14762. Exit For
  14763. End If
  14764. Next
  14765. If hasseason = True Then
  14766. tempint = MessageBox.Show(strfolder & " Appears to Contain Season Folders." & vbCrLf & "Are you sure this folder contains multiple" & vbCrLf & "TV Shows, each in its own folder?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
  14767. If tempint = DialogResult.Yes Then
  14768. clbx_TvRootFolders.Items.Add(strfolder, True)
  14769. tvfolderschanged = True
  14770. ElseIf tempint = DialogResult.No Then
  14771. tempint2 = MessageBox.Show("Do you wish to add this as a single TV Show Folder?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
  14772. If tempint2 = DialogResult.Yes Then
  14773. If Not ListBox6.Items.Contains(strfolder) Then
  14774. ListBox6.Items.Add(strfolder)
  14775. tvfolderschanged = True
  14776. Else
  14777. MsgBox("Folder not added, Already exists")
  14778. End If
  14779. End If
  14780. End If
  14781. Else
  14782. AuthorizeCheck = True
  14783. clbx_TvRootFolders.Items.Add(strfolder, True)
  14784. AuthorizeCheck = False
  14785. tvfolderschanged = True
  14786. End If
  14787. Else
  14788. MsgBox("Root already exists")
  14789. End If
  14790. End If
  14791. Catch ex As Exception
  14792. ExceptionHandler.LogError(ex)
  14793. End Try
  14794. End Sub
  14795. Private Sub btn_TvFoldersRootRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_TvFoldersRootRemove.Click
  14796. Try
  14797. While clbx_TvRootFolders.SelectedItems.Count > 0
  14798. clbx_TvRootFolders.Items.Remove(clbx_TvRootFolders.SelectedItems(0))
  14799. tvfolderschanged = True
  14800. End While
  14801. Catch ex As Exception
  14802. ExceptionHandler.LogError(ex)
  14803. End Try
  14804. End Sub
  14805. Private Property AuthorizeCheck() As Boolean
  14806. Get
  14807. Return m_AuthorizeCheck
  14808. End Get
  14809. Set
  14810. m_AuthorizeCheck = Value
  14811. End Set
  14812. End Property
  14813. Private m_AuthorizeCheck As Boolean
  14814. Private Sub clbx_TvRootFolders_MouseDown(sender As Object, e As MouseEventArgs) Handles clbx_TvRootFolders.MouseDown
  14815. If e.Button = MouseButtons.Right Then
  14816. Dim index As Integer = clbx_TvRootFolders.IndexFromPoint(New Point(e.X, e.Y))
  14817. If index >= 0 Then
  14818. clbx_TvRootFolders.SelectedItem = clbx_TvRootFolders.Items(index)
  14819. End If
  14820. Else
  14821. Dim loc As Point = Me.clbx_TvRootFolders.PointToClient(Cursor.Position)
  14822. For i As Integer = 0 To Me.clbx_TvRootFolders.Items.Count - 1
  14823. Dim rec As Rectangle = Me.clbx_TvRootFolders.GetItemRectangle(i)
  14824. rec.Width = 16
  14825. 'checkbox itself has a default width of about 16 pixels
  14826. If rec.Contains(loc) Then
  14827. AuthorizeCheck = True
  14828. Dim newValue As Boolean = Not Me.clbx_TvRootFolders.GetItemChecked(i)
  14829. Me.clbx_TvRootFolders.SetItemChecked(i, newValue)
  14830. AuthorizeCheck = False
  14831. Return
  14832. End If
  14833. Next
  14834. End If
  14835. End Sub
  14836. Private Sub clbx_TvRootFolders_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles clbx_TvRootFolders.ItemCheck
  14837. If Not AuthorizeCheck Then
  14838. e.NewValue = e.CurrentValue
  14839. End If
  14840. Static Updating As Boolean
  14841. If Updating Then Exit Sub
  14842. Updating = True
  14843. Dim cmbBox As CheckedListBox = sender
  14844. Dim Item As ItemCheckEventArgs = e
  14845. Dim unchkd As Boolean = False
  14846. If Item.NewValue = CheckState.Checked Then
  14847. cmbBox.SetItemChecked(Item.Index, True)
  14848. Else
  14849. unchkd = True
  14850. cmbBox.SetItemChecked(Item.Index, False)
  14851. End If
  14852. If unchkd Then
  14853. Dim rtfolder As String = cmbBox.Items(Item.Index).ToString
  14854. rtfolder = rtfolder & If(rtfolder.Contains("\"), "\", "/")
  14855. For f = ListBox6.Items.Count -1 To 0 Step -1
  14856. If Listbox6.Items(f).contains(rtfolder) Then
  14857. ListBox6.Items.RemoveAt(f)
  14858. tvfolderschanged = True
  14859. End If
  14860. Next
  14861. End If
  14862. Updating = False
  14863. End Sub
  14864. Private Sub bnt_TvChkFolderList_Click(sender As System.Object, e As System.EventArgs) Handles bnt_TvChkFolderList.Click
  14865. Try
  14866. tvfolderschanged = tv_Showremovedfromlist(ListBox6, True, , True)
  14867. Catch ex As Exception
  14868. End Try
  14869. End Sub
  14870. Private Sub btn_TvFoldersAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_TvFoldersAdd.Click
  14871. Try
  14872. If TextBox40.Text = Nothing Then
  14873. Exit Sub
  14874. End If
  14875. If TextBox40.Text = "" Then
  14876. Exit Sub
  14877. End If
  14878. Dim tempstring As String = TextBox40.Text
  14879. Do While tempstring.LastIndexOf("\") = tempstring.Length - 1
  14880. tempstring = tempstring.Substring(0, tempstring.Length - 1)
  14881. Loop
  14882. Do While tempstring.LastIndexOf("/") = tempstring.Length - 1
  14883. tempstring = tempstring.Substring(0, tempstring.Length - 1)
  14884. Loop
  14885. Dim exists As Boolean = False
  14886. For each fol In Pref.tvRootFolders
  14887. If fol.rpath.ToLower = tempstring.ToLower Then Continue For
  14888. If tempstring.ToLower.Contains(fol.rpath.ToLower) AndAlso Not fol.selected Then
  14889. Dim msg As String = "The series dropped is in a root folder that has been unselected"
  14890. msg &= "To avoid catastrophic failure, please re-select"
  14891. msg &= "root folder: " & fol.rpath
  14892. msg &= "and attempt again"
  14893. MsgBox(msg)
  14894. exists = True
  14895. Exit For
  14896. End If
  14897. Next
  14898. If exists Then Exit Sub
  14899. exists = False
  14900. For Each item In ListBox6.Items
  14901. If item.ToString.ToLower = tempstring.ToLower Then
  14902. exists = True
  14903. Exit For
  14904. End If
  14905. Next
  14906. If exists Then
  14907. MsgBox(" Folder Already Exists")
  14908. Else
  14909. Dim f As New IO.DirectoryInfo(tempstring)
  14910. If f.Exists Then
  14911. ListBox6.Items.Add(tempstring)
  14912. tvfolderschanged = True
  14913. TextBox40.Text = ""
  14914. newTvFolders.Add(tempstring)
  14915. Else
  14916. Dim tempint As Integer = MessageBox.Show("This folder does not appear to exist" & vbCrLf & "Are you sure you wish to add it", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
  14917. If tempint = DialogResult.Yes Then
  14918. ListBox6.Items.Add(tempstring)
  14919. tvfolderschanged = True
  14920. TextBox40.Text = ""
  14921. newTvFolders.Add(tempstring)
  14922. End If
  14923. End If
  14924. End If
  14925. Catch ex As Exception
  14926. ExceptionHandler.LogError(ex)
  14927. End Try
  14928. End Sub
  14929. Private Sub btn_TvFoldersAddFromRoot_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_TvFoldersAddFromRoot.Click
  14930. Try
  14931. Dim tmplst As New List(Of str_RootPaths)
  14932. For f = 0 To clbx_TvRootFolders.Items.Count - 1
  14933. Dim t As New str_RootPaths
  14934. t.rpath = clbx_TvRootFolders.Items(f).ToString
  14935. Dim chkstate As CheckState = clbx_TvRootFolders.GetItemCheckState(f)
  14936. t.selected = (chkstate = CheckState.Checked)
  14937. If t.selected Then tmplst.Add(t)
  14938. Next
  14939. tv_ShowFind(tmplst, True)
  14940. If newTvFolders.Count > 0 Then
  14941. tvfolderschanged = True
  14942. For Each item In newTvFolders
  14943. ListBox6.Items.Add(item)
  14944. Next
  14945. End If
  14946. Catch ex As Exception
  14947. ExceptionHandler.LogError(ex)
  14948. End Try
  14949. End Sub
  14950. Private Sub btn_TvFoldersBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_TvFoldersBrowse.Click
  14951. Try
  14952. Dim allok As Boolean = True
  14953. 'Dim theFolderBrowser As New FolderBrowserDialog
  14954. Dim thefoldernames As String
  14955. fb.Description = "Please Select TV Folder to Add to DB"
  14956. fb.ShowNewFolderButton = True
  14957. fb.RootFolder = System.Environment.SpecialFolder.Desktop
  14958. fb.SelectedPath = Pref.lastpath
  14959. Tmr.Start()
  14960. If fb.ShowDialog = Windows.Forms.DialogResult.OK Then
  14961. thefoldernames = (fb.SelectedPath)
  14962. For Each item As Object In ListBox6.Items
  14963. If thefoldernames.ToString = item.ToString Then allok = False
  14964. Next
  14965. Pref.lastpath = thefoldernames
  14966. If allok = True Then
  14967. ListBox6.Items.Add(thefoldernames)
  14968. newTvFolders.Add(thefoldernames)
  14969. tvfolderschanged = True
  14970. Else
  14971. MsgBox(" Folder Already Exists", MsgBoxStyle.OkOnly)
  14972. End If
  14973. End If
  14974. Catch ex As Exception
  14975. ExceptionHandler.LogError(ex)
  14976. End Try
  14977. End Sub
  14978. Private Sub btn_TvFoldersRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_TvFoldersRemove.Click
  14979. Try
  14980. Dim Folder As String
  14981. Dim cachechanged As Boolean = False
  14982. While ListBox6.SelectedItems.Count > 0
  14983. tvfolderschanged = True
  14984. Folder = ListBox6.SelectedItems(0)
  14985. For Each Item As Media_Companion.TvShow In Cache.TvCache.Shows
  14986. If Item.FolderPath.Trim("\") = Folder.Trim("\") Then
  14987. TvTreeview.Nodes.Remove(Item.ShowNode)
  14988. For Each ep As TvEpisode In Item.Episodes
  14989. Cache.TvCache.Remove(ep)
  14990. Next
  14991. Cache.TvCache.Remove(Item)
  14992. cachechanged = True
  14993. Exit For
  14994. End If
  14995. Next
  14996. ListBox6.Items.Remove(ListBox6.SelectedItems(0))
  14997. End While
  14998. If cachechanged Then Tv_CacheSave()
  14999. Catch ex As Exception
  15000. ExceptionHandler.LogError(ex)
  15001. End Try
  15002. End Sub
  15003. Private Sub btn_TvFoldersUndo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_TvFoldersUndo.Click
  15004. Try
  15005. newTvFolders.Clear()
  15006. tvfolderschanged = False
  15007. Catch ex As Exception
  15008. ExceptionHandler.LogError(ex)
  15009. End Try
  15010. End Sub
  15011. Private Sub btn_TvFoldersSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_TvFoldersSave.Click
  15012. Try
  15013. Dim removeTvFolders As New List(Of String)
  15014. Pref.tvRootFolders.Clear()
  15015. For f = 0 To clbx_TvRootFolders.Items.Count - 1
  15016. Dim t As New str_RootPaths
  15017. t.rpath = clbx_TvRootFolders.Items(f).ToString
  15018. Dim chkstate As CheckState = clbx_TvRootFolders.GetItemCheckState(f)
  15019. t.selected = (chkstate = CheckState.Checked)
  15020. Pref.tvRootFolders.Add(t)
  15021. Next
  15022. newTvFolders.Clear()
  15023. Dim tmplist As New List(Of String)
  15024. tmplist.AddRange(Pref.tvFolders)
  15025. Pref.tvFolders.Clear()
  15026. For Each item In ListBox6.Items
  15027. Pref.tvFolders.Add(item)
  15028. If Not tmplist.Contains(item) Then
  15029. newTvFolders.Add(item)
  15030. End If
  15031. Next
  15032. For Each item In tmplist
  15033. If Not Pref.tvFolders.Contains(item) Then removeTvFolders.Add(item)
  15034. Next
  15035. If Not removeTvFolders.Count = 0 Then
  15036. Dim cachechanged As Boolean = False
  15037. For Each tvfolder In removeTvFolders
  15038. For Each cacheItem As Media_Companion.TvShow In Cache.TvCache.Shows
  15039. If cacheItem.FolderPath.Trim("\") = tvfolder.Trim("\") Then
  15040. TvTreeview.Nodes.Remove(cacheItem.ShowNode)
  15041. For Each ep As TvEpisode In cacheItem.Episodes
  15042. Cache.TvCache.Remove(ep)
  15043. Next
  15044. Cache.TvCache.Remove(cacheItem)
  15045. cachechanged = True
  15046. Exit For
  15047. End If
  15048. Next
  15049. Next
  15050. If cachechanged Then Tv_CacheSave()
  15051. End If
  15052. tvfolderschanged = False
  15053. Pref.ConfigSave()
  15054. tv_ShowScrape()
  15055. TabControl3.SelectedIndex = 0
  15056. Catch ex As Exception
  15057. ExceptionHandler.LogError(ex)
  15058. End Try
  15059. End Sub
  15060. Private Sub clbx_TvRootFolders_DragDrop(sender As Object, e As DragEventArgs) Handles clbx_TvRootFolders.DragDrop
  15061. Dim files() As String
  15062. Dim tempstring3 As String
  15063. Dim tempint As Integer = 0
  15064. Dim tempint2 As Integer = 0
  15065. droppedItems.Clear()
  15066. files = e.Data.GetData(DataFormats.FileDrop)
  15067. For f = 0 To UBound(files)
  15068. If IO.Directory.Exists(files(f)) Then
  15069. Dim hasseason As Boolean = False
  15070. If Not clbx_TvRootFolders.Items.Contains(files(f)) Then
  15071. For Each strfolder2 As String In My.Computer.FileSystem.GetDirectories(files(f))
  15072. Dim M As Match
  15073. tempstring3 = strfolder2.ToLower.Replace(files(f).ToLower, "")
  15074. M = Regex.Match(tempstring3, "(series ?\d+|season ?\d+|s ?\d+|^\d{1,3}$)")
  15075. If M.Success = True Then
  15076. hasseason = True
  15077. Exit For
  15078. End If
  15079. Next
  15080. If hasseason = True Then
  15081. tempint = MessageBox.Show(files(f) & " Appears to Contain Season Folders." & vbCrLf & "Are you sure this folder contains multiple" & vbCrLf & "TV Shows, each in its own folder?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
  15082. If tempint = DialogResult.Yes Then
  15083. AuthorizeCheck = True
  15084. clbx_TvRootFolders.Items.Add(files(f), True)
  15085. AuthorizeCheck = False
  15086. tvfolderschanged = True
  15087. ElseIf tempint = DialogResult.No Then
  15088. tempint2 = MessageBox.Show("Do you wish to add this as a single TV Show Folder?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
  15089. If tempint2 = DialogResult.Yes Then
  15090. If Not ListBox6.Items.Contains(files(f)) Then
  15091. ListBox6.Items.Add(files(f))
  15092. tvfolderschanged = True
  15093. Else
  15094. MsgBox("Folder not added, Already exists")
  15095. End If
  15096. End If
  15097. End If
  15098. Else
  15099. AuthorizeCheck = True
  15100. clbx_TvRootFolders.Items.Add(files(f), True)
  15101. AuthorizeCheck = False
  15102. tvfolderschanged = True
  15103. End If
  15104. Else
  15105. MsgBox("Root already exists")
  15106. End If
  15107. End If
  15108. Next
  15109. End Sub
  15110. Private Sub clbx_TvRootFolders_DragEnter(sender As Object, e As DragEventArgs) Handles clbx_TvRootFolders.DragEnter
  15111. Try
  15112. e.Effect = DragDropEffects.Copy
  15113. Catch ex As Exception
  15114. ExceptionHandler.LogError(ex)
  15115. End Try
  15116. End Sub
  15117. Private Sub clbx_TvRootFolders_KeyPress(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles clbx_TvRootFolders.KeyDown
  15118. If e.KeyCode = Keys.Delete AndAlso clbx_TvRootFolders.SelectedItem <> Nothing Then
  15119. Call btn_TvFoldersRootRemove.PerformClick()
  15120. ElseIf e.KeyCode = Keys.Space Then
  15121. AuthorizeCheck = True
  15122. Call clbx_tvrootfoldertoggle()
  15123. AuthorizeCheck = False
  15124. End If
  15125. End Sub
  15126. Private Sub clbx_tvrootfoldertoggle()
  15127. Dim i = clbx_TvRootFolders.SelectedIndex
  15128. clbx_TvRootFolders.SetItemCheckState(i, If(clbx_TvRootFolders.GetItemCheckState(i) = CheckState.Checked, CheckState.Unchecked, CheckState.Checked))
  15129. End Sub
  15130. Private Sub tsmi_tvRtAddSeries_click(sender As Object, e As EventArgs) Handles tsmi_tvRtAddSeries.Click
  15131. Dim rtpath As String = clbx_TvRootFolders.SelectedItem.ToString
  15132. Dim tmplst As New List(Of str_RootPaths)
  15133. Dim t As New str_RootPaths
  15134. t.rpath = rtpath
  15135. t.selected = True
  15136. tmplst.Add(t)
  15137. tv_ShowFind(tmplst, True)
  15138. If newTvFolders.Count > 0 Then
  15139. tvfolderschanged = True
  15140. For Each item In newTvFolders
  15141. ListBox6.Items.Add(item)
  15142. Next
  15143. End If
  15144. End Sub
  15145. Private Sub TvRootFolderContextMenu_Opening(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TvRootFolderContextMenu.Opening
  15146. If clbx_TvRootFolders.SelectedIndex = -1 Then
  15147. e.Cancel = True
  15148. Else
  15149. If Not clbx_TvRootFolders.GetItemChecked(clbx_TvRootFolders.SelectedIndex) Then
  15150. e.Cancel = True
  15151. End If
  15152. End If
  15153. End Sub
  15154. Private Sub ListBox6_DragDrop(sender As Object, e As DragEventArgs) Handles ListBox6.DragDrop
  15155. Dim files() As String
  15156. droppedItems.Clear()
  15157. Dim skipdrop As Boolean
  15158. files = e.Data.GetData(DataFormats.FileDrop)
  15159. For f = 0 To UBound(files)
  15160. skipdrop = False
  15161. If IO.Directory.Exists(files(f)) Then
  15162. If files(f).ToLower.Contains(".actors") Or files(f).ToLower.Contains("season") Then Continue For
  15163. For Each fol In Pref.tvRootFolders
  15164. If fol.rpath = files(f) Then Continue For
  15165. If files(f).Contains(fol.rpath) AndAlso Not fol.selected Then
  15166. Dim msg As String = "The series dropped is in a root folder that has been unselected" & vbCrLf
  15167. msg &= "To avoid catastrophic failure, please re-select" & vbCrLf
  15168. msg &= "root folder: " & fol.rpath & vbCrLf
  15169. msg &= "and attempt again"
  15170. MsgBox(msg)
  15171. skipdrop = True
  15172. Continue For
  15173. End If
  15174. Next
  15175. If skipdrop Then Continue For
  15176. Dim di As New IO.DirectoryInfo(files(f))
  15177. If ListBox6.Items.Contains(files(f)) Then Continue For
  15178. Dim skip As Boolean = False
  15179. For Each item In droppedItems
  15180. If item = files(f) Then
  15181. skip = True
  15182. Exit For
  15183. End If
  15184. Next
  15185. If Not skip Then droppedItems.Add(files(f))
  15186. End If
  15187. Next
  15188. If droppedItems.Count < 1 Then Exit Sub
  15189. For Each item In droppedItems
  15190. ListBox6.Items.Add(item)
  15191. tvfolderschanged = True
  15192. Next
  15193. End Sub
  15194. Private Sub ListBox6_DragEnter(sender As Object, e As DragEventArgs) Handles ListBox6.DragEnter
  15195. Try
  15196. e.Effect = DragDropEffects.Copy
  15197. Catch ex As Exception
  15198. ExceptionHandler.LogError(ex)
  15199. End Try
  15200. End Sub
  15201. Private Sub ListBox6_KeyPress(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles ListBox6.KeyDown
  15202. If e.KeyCode = Keys.Delete AndAlso ListBox6.SelectedItem <> Nothing Then
  15203. Call btn_TvFoldersRemove.PerformClick()
  15204. End If
  15205. End Sub
  15206. #End Region
  15207. #Region "Home Movie routines"
  15208. Private Sub TabControl1_Selecting(sender As System.Object, e As CancelEventArgs) Handles TabControl1.Selecting
  15209. If TabControl1.SelectedTab.Text.ToLower = "homemovie preferences" Then
  15210. e.Cancel = True
  15211. OpenPreferences(3)
  15212. End If
  15213. End Sub
  15214. Private Sub TabControl1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged
  15215. 'If Pref.homemoviefolders.Count = 0 And homemovielist.Count = 0 And TabControl1.SelectedIndex <> 5 Then
  15216. ' MsgBox("Please add A Folder containing Home Movies")
  15217. ' Try
  15218. ' TabControl1.SelectedIndex = 5
  15219. ' Catch
  15220. ' End Try
  15221. ' homeTabIndex = 1
  15222. ' Exit Sub
  15223. 'End If
  15224. Dim tab As String = TabControl1.SelectedTab.Text.ToLower
  15225. If tab = "screenshot" Then
  15226. pbx_HmFanartSht.SizeMode = PictureBoxSizeMode.Zoom
  15227. util_ImageLoad(pbx_HmFanartSht, WorkingHomeMovie.fileinfo.fanartpath, Utilities.DefaultFanartPath)
  15228. If tb_HmFanartTime.Text = "" Then tb_HmFanartTime.Text = Pref.HmFanartTime.ToString
  15229. homeTabIndex = TabControl1.SelectedIndex
  15230. ElseIf tab = " poster " Then
  15231. util_ImageLoad(pbx_HmPosterSht, WorkingHomeMovie.fileinfo.posterpath, Utilities.DefaultPosterPath)
  15232. If tb_HmPosterTime.Text = "" Then tb_HmPosterTime.Text = Pref.HmPosterTime.ToString
  15233. homeTabIndex = TabControl1.SelectedIndex
  15234. ElseIf tab = "folders" Then
  15235. HomeFoldersUpdate()
  15236. homeTabIndex = TabControl1.SelectedIndex
  15237. Else
  15238. homeTabIndex = TabControl1.SelectedIndex
  15239. End If
  15240. End Sub
  15241. #Region "Browser Tab"
  15242. Private Sub PlayHomeMovieToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PlayHomeMovieToolStripMenuItem.Click
  15243. mov_Play("HomeMovie")
  15244. End Sub
  15245. Private Sub OpenFolderToolStripMenuItem_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenFolderToolStripMenuItem.Click
  15246. Try
  15247. If Not WorkingHomeMovie.fileinfo.fullpathandfilename Is Nothing Then
  15248. Call util_OpenFolder(WorkingHomeMovie.fileinfo.fullpathandfilename)
  15249. Else
  15250. MsgBox("There is no Movie selected to open")
  15251. End If
  15252. Catch ex As Exception
  15253. ExceptionHandler.LogError(ex)
  15254. End Try
  15255. End Sub
  15256. Private Sub OpenFileToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenFileToolStripMenuItem.Click
  15257. Try
  15258. Utilities.NfoNotepadDisplay(WorkingHomeMovie.fileinfo.fullpathandfilename, Pref.altnfoeditor)
  15259. Catch ex As Exception
  15260. ExceptionHandler.LogError(ex)
  15261. End Try
  15262. End Sub
  15263. Private Sub pbx_HmFanart_DoubleClick1(ByVal sender As Object, ByVal e As System.EventArgs) Handles pbx_HmFanart.DoubleClick
  15264. Try
  15265. Try
  15266. If WorkingHomeMovie.fileinfo.fanartpath <> Nothing Then
  15267. If IO.File.Exists(WorkingHomeMovie.fileinfo.fanartpath) Then
  15268. Me.ControlBox = False
  15269. MenuStrip1.Enabled = False
  15270. 'Using newimage As New Bitmap(WorkingHomeMovie.fileinfo.fanartpath)
  15271. util_ZoomImage(WorkingHomeMovie.fileinfo.fanartpath)
  15272. 'End Using
  15273. End If
  15274. End If
  15275. Catch ex As Exception
  15276. #If SilentErrorScream Then
  15277. Throw ex
  15278. #End If
  15279. End Try
  15280. Catch ex As Exception
  15281. ExceptionHandler.LogError(ex)
  15282. End Try
  15283. End Sub
  15284. Private Sub pbx_HmPoster_DoubleClick1(ByVal sender As Object, ByVal e As System.EventArgs) Handles pbx_HmPoster.DoubleClick
  15285. Try
  15286. Try
  15287. If WorkingHomeMovie.fileinfo.posterpath <> Nothing Then
  15288. If IO.File.Exists(WorkingHomeMovie.fileinfo.posterpath) Then
  15289. Me.ControlBox = False
  15290. MenuStrip1.Enabled = False
  15291. util_ZoomImage(WorkingHomeMovie.fileinfo.posterpath)
  15292. End If
  15293. End If
  15294. Catch ex As Exception
  15295. #If SilentErrorScream Then
  15296. Throw ex
  15297. #End If
  15298. End Try
  15299. Catch ex As Exception
  15300. ExceptionHandler.LogError(ex)
  15301. End Try
  15302. End Sub
  15303. Private Sub SearchForNewHomeMoviesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SearchForNewHomeMoviesToolStripMenuItem.Click
  15304. Call homeMovieScan()
  15305. End Sub
  15306. Private Sub RebuildHomeMovieCacheToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RebuildHomeMovieCacheToolStripMenuItem.Click
  15307. Call rebuildHomeMovies()
  15308. End Sub
  15309. Private Sub ListBox18_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox18.DoubleClick
  15310. mov_Play("HomeMovie")
  15311. End Sub
  15312. Private Sub ListBox18_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox18.MouseDown
  15313. End Sub
  15314. Private Sub ListBox18_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox18.MouseUp
  15315. Try
  15316. Dim ptIndex As Integer = ListBox18.IndexFromPoint(e.X, e.Y)
  15317. If e.Button = MouseButtons.Right AndAlso ptIndex > -1 AndAlso ListBox18.SelectedItems.Count > 0 Then
  15318. Dim newSelection As Boolean = True
  15319. 'If more than one movie is selected, check if right-click is on the selection.
  15320. If ListBox18.SelectedItems.Count > 1 And ListBox18.GetSelected(ptIndex) Then
  15321. newSelection = False
  15322. End If
  15323. 'Otherwise, bring up the context menu for a single movie
  15324. If newSelection Then
  15325. ListBox18.SelectedIndex = ptIndex
  15326. 'update context menu with movie name & also if we show the 'Play Trailer' menu item
  15327. PlaceHolderforHomeMovieTitleToolStripMenuItem.BackColor = Color.Honeydew
  15328. PlaceHolderforHomeMovieTitleToolStripMenuItem.Text = "'" & ListBox18.Text & "'"
  15329. PlaceHolderforHomeMovieTitleToolStripMenuItem.Font = New Font("Arial", 10, FontStyle.Bold)
  15330. End If
  15331. End If
  15332. Catch ex As Exception
  15333. ExceptionHandler.LogError(ex)
  15334. End Try
  15335. End Sub
  15336. Private Sub ListBox18_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox18.SelectedValueChanged
  15337. If ListBox18.SelectedIndex < 0 Then Exit Sub
  15338. Try
  15339. For Each homemovie In homemovielist
  15340. If homemovie.FullPathAndFilename Is CType(ListBox18.SelectedItem, ValueDescriptionPair).Value Then
  15341. WorkingHomeMovie.fileinfo.fullpathandfilename = CType(ListBox18.SelectedItem, ValueDescriptionPair).Value
  15342. Call loadhomemoviedetails()
  15343. End If
  15344. Next
  15345. Catch
  15346. End Try
  15347. End Sub
  15348. Private Sub btnHomeMovieSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHomeMovieSave.Click
  15349. If HmMovTitle.Text <> "" Then
  15350. WorkingHomeMovie.fullmoviebody.title = HmMovTitle.Text
  15351. End If
  15352. If HmMovSort.Text <> "" Then
  15353. WorkingHomeMovie.fullmoviebody.sortorder = HmMovSort.Text
  15354. End If
  15355. WorkingHomeMovie.fullmoviebody.year = HmMovYear.Text
  15356. WorkingHomeMovie.fullmoviebody.plot = HmMovPlot.Text
  15357. WorkingHomeMovie.fullmoviebody.stars = HmMovStars.Text
  15358. nfoFunction.nfoSaveHomeMovie(WorkingHomeMovie.fileinfo.fullpathandfilename, WorkingHomeMovie)
  15359. End Sub
  15360. Private Sub btn_HMSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_HMSearch.Click
  15361. Call homeMovieScan()
  15362. End Sub
  15363. Private Sub btn_HMRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_HMRefresh.Click
  15364. Call rebuildHomeMovies()
  15365. End Sub
  15366. #End Region
  15367. #Region "Home fanart"
  15368. Private Sub btn_HmFanartShot_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_HmFanartShot.Click
  15369. HmScreenshot_Save()
  15370. End Sub
  15371. Private Sub tb_HmFanartTime_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tb_HmFanartTime.KeyPress
  15372. If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
  15373. If tb_HmFanartTime.Text <> "" AndAlso Convert.ToInt32(tb_HmFanartTime.Text) > 0 Then
  15374. HmScreenshot_Load()
  15375. End If
  15376. End If
  15377. If Char.IsNumber(e.KeyChar) = False And e.KeyChar <> Chr(8) Then
  15378. e.Handled = True
  15379. End If
  15380. End Sub
  15381. Private Sub tb_HmFanartTime_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_HmFanartTime.Leave
  15382. If tb_HmFanartTime.Text = "" Then
  15383. MsgBox("Please enter a numerical value >0 into the textbox")
  15384. tb_HmFanartTime.Focus()
  15385. ElseIf Convert.ToInt32(tb_HmFanartTime.Text) = 0 Then
  15386. MsgBox("Please enter a numerical value >0 into the textbox")
  15387. tb_HmFanartTime.Focus()
  15388. End If
  15389. End Sub
  15390. Private Sub btn_HmFanartGet_Click(sender As Object, e As EventArgs) Handles btn_HmFanartGet.Click
  15391. HmScreenshot_Load()
  15392. End Sub
  15393. Private Sub HmScreenshot_Save()
  15394. Try
  15395. pbx_HmFanart.Image = Nothing
  15396. Dim screenshotpath As String = WorkingHomeMovie.fileinfo.fanartpath
  15397. If screenshotpath = "" Then screenshotpath = WorkingHomeMovie.fileinfo.fullpathandfilename.Replace(".nfo", "-fanart.jpg")
  15398. Dim cachepathandfilename As String = pbx_HmFanartSht.Tag.ToString
  15399. File.Copy(cachepathandfilename, screenshotpath, True)
  15400. util_ImageLoad(pbx_HmFanart, cachepathandfilename, Utilities.DefaultTvFanartPath)
  15401. Dim video_flags = VidMediaFlags(WorkingHomeMovie.filedetails)
  15402. movieGraphicInfo.OverlayInfo(pbx_HmFanart, "", video_flags)
  15403. Catch
  15404. End Try
  15405. End Sub
  15406. Private Sub HmScreenshot_Load()
  15407. Dim Cachename As String = HmGetScreenShot()
  15408. If Cachename = "" Then
  15409. MsgBox("Unable to get screenshots from HomeVideo file")
  15410. Exit Sub
  15411. End If
  15412. Try
  15413. Dim matches() As Control
  15414. For i = 0 To 4
  15415. matches = Me.Controls.Find("pbHmScrSht" & i, True)
  15416. If matches.Length > 0 Then
  15417. Dim pb As PictureBox = DirectCast(matches(0), PictureBox)
  15418. pb.SizeMode = PictureBoxSizeMode.StretchImage
  15419. Dim image2load As String = Cachename.Substring(0, Cachename.Length - 5) & i.ToString & ".jpg"
  15420. Form1.util_ImageLoad(pb, image2load, Utilities.DefaultTvFanartPath)
  15421. End If
  15422. Next
  15423. If Not IsNothing(pbHmScrSht0.Image) Then Form1.util_ImageLoad(pbx_HmFanartSht, pbHmScrSht0.Tag.ToString, Utilities.DefaultTvFanartPath)
  15424. Catch
  15425. End Try
  15426. End Sub
  15427. Private Function HmGetScreenShot() As String
  15428. Try
  15429. If tb_HmFanartTime.Text = "" OrElse Convert.ToInt32(tb_HmFanartTime.Text) < 1 Then tb_HmFanartTime.Text = Pref.HmFanartTime.ToString
  15430. If IsNumeric(tb_HmFanartTime.Text) Then
  15431. Dim path As String = WorkingHomeMovie.fileinfo.fullpathandfilename.Replace(".nfo", "-fanart.jpg")
  15432. Dim tempstring2 As String = WorkingHomeMovie.fileinfo.filenameandpath
  15433. If IO.File.Exists(tempstring2) Then
  15434. Dim seconds = Convert.ToInt32(tb_HmFanartTime.Text)
  15435. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  15436. Application.DoEvents()
  15437. Dim cachepathandfilename As String = Utilities.CreateScrnShotToCache(tempstring2, path, seconds, 5, 10)
  15438. If cachepathandfilename <> "" Then
  15439. Return cachepathandfilename
  15440. End If
  15441. End If
  15442. End If
  15443. Catch
  15444. End Try
  15445. Return ""
  15446. End Function
  15447. Private Sub pbHmScrSht_click(ByVal sender As Object, ByVal e As EventArgs)
  15448. Dim pb As PictureBox = sender
  15449. If IsNothing(pb.Image) Then Exit Sub
  15450. Form1.util_ImageLoad(pbx_HmFanartSht, pb.Tag, Utilities.DefaultTvFanartPath)
  15451. End Sub
  15452. #End Region
  15453. #Region "Home poster"
  15454. Private Sub btn_HmPosterShot_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_HmPosterShot.Click
  15455. Try
  15456. If IsNumeric(tb_HmPosterTime.Text) Then
  15457. Dim thumbpathandfilename As String = IO.Path.Combine(Utilities.CacheFolderPath, WorkingHomeMovie.fileinfo.posterpath.Replace(WorkingHomeMovie.fileinfo.path, ""))
  15458. Dim pathandfilename As String = WorkingHomeMovie.fileinfo.fullpathandfilename.Replace(".nfo", "")
  15459. messbox = New frmMessageBox("ffmpeg is working to capture the desired screenshot", "", "Please Wait")
  15460. Dim aok As Boolean = False
  15461. For Each ext In Utilities.VideoExtensions
  15462. Dim tempstring2 As String = pathandfilename & ext
  15463. If IO.File.Exists(tempstring2) Then
  15464. pathandfilename = tempstring2
  15465. aok = True
  15466. Exit For
  15467. End If
  15468. Next
  15469. If aok Then
  15470. Dim seconds As Integer = 10
  15471. If Convert.ToInt32(tb_HmPosterTime.Text) > 0 Then
  15472. seconds = Convert.ToInt32(tb_HmPosterTime.Text)
  15473. End If
  15474. System.Windows.Forms.Cursor.Current = Cursors.WaitCursor
  15475. messbox.Show()
  15476. messbox.Refresh()
  15477. Application.DoEvents()
  15478. aok = Utilities.CreateScreenShot(pathandfilename, thumbpathandfilename, seconds, True)
  15479. messbox.Close()
  15480. If aok Then
  15481. Dim cancelclicked As Boolean
  15482. Using pbx As New PictureBox
  15483. util_ImageLoad(pbx, thumbpathandfilename, Utilities.DefaultPosterPath)
  15484. Using t As New frmMovPosterCrop
  15485. If Pref.MultiMonitoEnabled Then
  15486. t.Bounds = Screen.AllScreens(Form1.CurrentScreen).Bounds
  15487. t.StartPosition = FormStartPosition.Manual
  15488. End If
  15489. t.img = pbx.Image
  15490. t.cropmode = "poster"
  15491. t.title = WorkingHomeMovie.fullmoviebody.title
  15492. t.Setup()
  15493. t.ShowDialog()
  15494. If Not IsNothing(t.newimg) Then
  15495. Utilities.SaveImage(t.newimg, WorkingHomeMovie.fileinfo.posterpath)
  15496. Else
  15497. cancelclicked = True
  15498. End If
  15499. End Using
  15500. End Using
  15501. Utilities.SafeDeleteFile(thumbpathandfilename)
  15502. If File.Exists(WorkingHomeMovie.fileinfo.posterpath) Then
  15503. Try
  15504. util_ImageLoad(pbx_HmPosterSht, WorkingHomeMovie.fileinfo.posterpath, Utilities.DefaultFanartPath)
  15505. util_ImageLoad(pbx_HmPoster, WorkingHomeMovie.fileinfo.posterpath, Utilities.DefaultFanartPath)
  15506. Catch
  15507. End Try
  15508. End If
  15509. Else
  15510. MsgBox("Failed to get ScreenShot")
  15511. End If
  15512. End If
  15513. If Not IsNothing(messbox) Then messbox.Close()
  15514. Else
  15515. MsgBox("Please enter a numerical value into the textbox")
  15516. tb_HmPosterTime.Focus()
  15517. Exit Sub
  15518. End If
  15519. Catch ex As Exception
  15520. ExceptionHandler.LogError(ex)
  15521. Finally
  15522. If Not IsNothing(messbox) Then messbox.Close()
  15523. End Try
  15524. End Sub
  15525. #End Region
  15526. #Region "Home folders"
  15527. Private Sub tp_HmFolders_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles tp_HmFolders.Leave
  15528. Try
  15529. If hmfolderschanged Then
  15530. Dim save = MsgBox("You have made changes to some folders" & vbCrLf & " Do you wish to save these changes?", MsgBoxStyle.YesNo)
  15531. If save = DialogResult.Yes Then
  15532. Call HomeMovieFoldersRefresh()
  15533. End If
  15534. hmfolderschanged = False
  15535. End If
  15536. Catch ex As Exception
  15537. ExceptionHandler.LogError(ex)
  15538. End Try
  15539. End Sub
  15540. Private Sub btn_HmFolderSaveRefresh_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_HmFolderSaveRefresh.Click
  15541. Call HomeMovieFoldersRefresh()
  15542. hmfolderschanged = False
  15543. End Sub
  15544. Private Sub btnHomeFolderAdd_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHomeFolderAdd.Click
  15545. Try
  15546. Dim allok As Boolean = True
  15547. 'Dim theFolderBrowser As New FolderBrowserDialog
  15548. Dim thefoldernames As String
  15549. fb.Description = "Please Select Folder to Add to DB (Subfolders will also be added)"
  15550. fb.ShowNewFolderButton = True
  15551. fb.RootFolder = System.Environment.SpecialFolder.Desktop
  15552. fb.SelectedPath = Pref.lastpath
  15553. Tmr.Start()
  15554. If fb.ShowDialog = Windows.Forms.DialogResult.OK Then
  15555. thefoldernames = (fb.SelectedPath)
  15556. Pref.lastpath = thefoldernames
  15557. For Each item As Object In clbx_HMMovieFolders.Items
  15558. If thefoldernames.ToString = item.ToString Then allok = False
  15559. Next
  15560. If allok = True Then
  15561. AuthorizeCheck = True
  15562. clbx_HMMovieFolders.Items.Add(thefoldernames, True)
  15563. clbx_HMMovieFolders.Refresh()
  15564. AuthorizeCheck = False
  15565. Else
  15566. MsgBox(" Folder Already Exists")
  15567. End If
  15568. End If
  15569. Catch ex As Exception
  15570. ExceptionHandler.LogError(ex)
  15571. End Try
  15572. End Sub
  15573. Private Sub btnHomeFoldersRemove_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHomeFoldersRemove.Click
  15574. Try
  15575. While clbx_HMMovieFolders.SelectedItems.Count > 0
  15576. clbx_HMMovieFolders.Items.Remove(clbx_HMMovieFolders.SelectedItems(0))
  15577. End While
  15578. Catch ex As Exception
  15579. ExceptionHandler.LogError(ex)
  15580. End Try
  15581. End Sub
  15582. Private Sub btnHomeManualPathAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnHomeManualPathAdd.Click
  15583. Try
  15584. If tbHomeManualPath.Text = Nothing Then
  15585. Exit Sub
  15586. End If
  15587. If tbHomeManualPath.Text = "" Then
  15588. Exit Sub
  15589. End If
  15590. Dim tempstring As String = tbHomeManualPath.Text
  15591. Do While tempstring.LastIndexOf("\") = tempstring.Length - 1
  15592. tempstring = tempstring.Substring(0, tempstring.Length - 1)
  15593. Loop
  15594. Do While tempstring.LastIndexOf("/") = tempstring.Length - 1
  15595. tempstring = tempstring.Substring(0, tempstring.Length - 1)
  15596. Loop
  15597. Dim exists As Boolean = False
  15598. For Each item In clbx_HMMovieFolders.Items
  15599. If item.ToString.ToLower = tempstring.ToLower Then
  15600. exists = True
  15601. Exit For
  15602. End If
  15603. Next
  15604. If exists = True Then
  15605. MsgBox(" Folder Already Exists")
  15606. Else
  15607. Dim f As New IO.DirectoryInfo(tempstring)
  15608. If f.Exists Then
  15609. AuthorizeCheck = True
  15610. clbx_HMMovieFolders.Items.Add(tempstring, True)
  15611. clbx_HMMovieFolders.Refresh()
  15612. AuthorizeCheck = False
  15613. tbHomeManualPath.Text = ""
  15614. Else
  15615. Dim tempint As Integer = MessageBox.Show("This folder does not appear to exist" & vbCrLf & "Are you sure you wish to add it", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
  15616. If tempint = DialogResult.Yes Then
  15617. AuthorizeCheck = True
  15618. clbx_HMMovieFolders.Items.Add(tempstring, True)
  15619. clbx_HMMovieFolders.Refresh()
  15620. AuthorizeCheck = False
  15621. tbHomeManualPath.Text = ""
  15622. End If
  15623. End If
  15624. End If
  15625. Catch ex As Exception
  15626. ExceptionHandler.LogError(ex)
  15627. End Try
  15628. End Sub
  15629. Private Sub clbx_HMMovieFolders_DragDrop(sender As Object, e As DragEventArgs) Handles clbx_HMMovieFolders.DragDrop
  15630. Dim folders() As String
  15631. droppedItems.Clear()
  15632. folders = e.Data.GetData(DataFormats.FileDrop)
  15633. For f = 0 To UBound(folders)
  15634. Dim exists As Boolean = False
  15635. For Each rtpath In Pref.homemoviefolders
  15636. If rtpath.rpath = folders(f) Then
  15637. exists = True
  15638. Exit For
  15639. End If
  15640. Next
  15641. If exists OrElse clbx_HMMovieFolders.Items.Contains(folders(f)) Then Continue For
  15642. Dim skip As Boolean = False
  15643. For Each item In droppedItems
  15644. If item = folders(f) Then
  15645. skip = True
  15646. Exit For
  15647. End If
  15648. Next
  15649. If Not skip Then droppedItems.Add(folders(f))
  15650. Next
  15651. If droppedItems.Count < 1 Then Exit Sub
  15652. AuthorizeCheck = True
  15653. For Each item In droppedItems
  15654. clbx_HMMovieFolders.Items.Add(item, True)
  15655. hmfolderschanged = True
  15656. Next
  15657. AuthorizeCheck = False
  15658. clbx_HMMovieFolders.Refresh()
  15659. End Sub
  15660. Private Sub clbx_HMMovieFolders_DragEnter(sender As Object, e As DragEventArgs) Handles clbx_HMMovieFolders.DragEnter
  15661. Try
  15662. e.Effect = DragDropEffects.Copy
  15663. Catch ex As Exception
  15664. ExceptionHandler.LogError(ex)
  15665. End Try
  15666. End Sub
  15667. Private Sub clbx_HMMovieFolders_KeyPress(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles clbx_HMMovieFolders.KeyDown
  15668. If e.KeyCode = Keys.Delete AndAlso clbx_MovieRoots.SelectedItem <> Nothing Then
  15669. Call btnHomeFoldersRemove.PerformClick()
  15670. ElseIf e.KeyCode = Keys.Space Then
  15671. AuthorizeCheck = True
  15672. Call clbx_hmmoviefolderstoggle()
  15673. AuthorizeCheck = False
  15674. End If
  15675. End Sub
  15676. Private Sub clbx_HMMovieFolders_MouseDown(sender As Object, e As MouseEventArgs) Handles clbx_HMMovieFolders.MouseDown
  15677. Dim loc As Point = Me.clbx_HMMovieFolders.PointToClient(Cursor.Position)
  15678. For i As Integer = 0 To Me.clbx_HMMovieFolders.Items.Count - 1
  15679. Dim rec As Rectangle = Me.clbx_HMMovieFolders.GetItemRectangle(i)
  15680. rec.Width = 16
  15681. 'checkbox itself has a default width of about 16 pixels
  15682. If rec.Contains(loc) Then
  15683. AuthorizeCheck = True
  15684. Dim newValue As Boolean = Not Me.clbx_HMMovieFolders.GetItemChecked(i)
  15685. Me.clbx_HMMovieFolders.SetItemChecked(i, newValue)
  15686. AuthorizeCheck = False
  15687. Return
  15688. End If
  15689. Next
  15690. End Sub
  15691. Private Sub clbx_HMMovieFolders_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles clbx_HMMovieFolders.ItemCheck
  15692. If Not AuthorizeCheck Then
  15693. e.NewValue = e.CurrentValue
  15694. Exit Sub
  15695. End If
  15696. hmfolderschanged = True
  15697. End Sub
  15698. Private Sub clbx_hmmoviefolderstoggle()
  15699. Dim i = clbx_HMMovieFolders.SelectedIndex
  15700. clbx_HMMovieFolders.SetItemCheckState(i, If(clbx_HMMovieFolders.GetItemCheckState(i) = CheckState.Checked, CheckState.Unchecked, CheckState.Checked))
  15701. End Sub
  15702. Private Sub HomeFoldersUpdate()
  15703. AuthorizeCheck = True
  15704. clbx_HMMovieFolders.Items.Clear()
  15705. For Each item In Pref.homemoviefolders
  15706. clbx_HMMovieFolders.Items.Add(item.rpath, item.selected)
  15707. Next
  15708. AuthorizeCheck = False
  15709. hmfolderschanged = False
  15710. End Sub
  15711. #End Region
  15712. 'Private Sub SetupHomeMovies()
  15713. ' If Pref.homemoviefolders.Count = 0 And homemovielist.Count = 0 And TabControl1.SelectedIndex <> 4 Then
  15714. ' MsgBox("Please add A Folder containing Home Movies")
  15715. ' Try
  15716. ' TabControl1.SelectedIndex = 4
  15717. ' Catch
  15718. ' End Try
  15719. ' Else
  15720. ' If homemovielist.Count > 0 Then
  15721. ' Call loadhomemovielist()
  15722. ' End If
  15723. ' If homemoviefolders.Count > 0 Then
  15724. ' AuthorizeCheck = True
  15725. ' clbx_HMMovieFolders.Items.Clear()
  15726. ' For Each folder In homemoviefolders
  15727. ' clbx_HMMovieFolders.Items.Add(folder.rpath, folder.selected)
  15728. ' Next
  15729. ' AuthorizeCheck = False
  15730. ' End If
  15731. ' End If
  15732. 'End Sub
  15733. Private Sub homeMovieScan()
  15734. 'Search for new Home Movies
  15735. Dim moviepattern As String
  15736. Dim newhomemoviefolders As New List(Of String)
  15737. Dim progress As Integer = 0
  15738. progress = 0
  15739. scraperLog = ""
  15740. Dim dirpath As String = String.Empty
  15741. scraperLog &= "MC " & Trim(System.Reflection.Assembly.GetExecutingAssembly.FullName.Split(",")(1)) & vbCrLf
  15742. Statusstrip_Enable()
  15743. 'StatusStrip1.BackColor = Color.Honeydew
  15744. 'StatusStrip1.Visible = true
  15745. 'tsStatusLabel1.Visible = False
  15746. ToolStripProgressBar8.Value = 0
  15747. ToolStripProgressBar8.ProgressBar.Refresh()
  15748. ToolStripStatusLabel9.Text = "Scanning for Home Movies"
  15749. ToolStripProgressBar8.Visible = True
  15750. ToolStripStatusLabel9.Visible = True
  15751. Dim newHomeMovieList As New List(Of str_BasicHomeMovie)
  15752. Dim totalfolders As New List(Of String)
  15753. totalfolders.Clear()
  15754. For Each moviefolder In homemoviefolders
  15755. If Not moviefolder.selected Then Continue For
  15756. Dim hg As New IO.DirectoryInfo(moviefolder.rpath)
  15757. If hg.Exists Then
  15758. scraperLog &= "Found Movie Folder: " & hg.FullName.ToString & vbCrLf
  15759. totalfolders.Add(moviefolder.rpath)
  15760. Dim newlist As List(Of String)
  15761. Try
  15762. newlist = Utilities.EnumerateFolders(moviefolder.rpath) 'Max levels restriction of 6 deep removed
  15763. For Each subfolder In newlist
  15764. scraperLog = scraperLog & "Subfolder added :- " & subfolder.ToString & vbCrLf
  15765. totalfolders.Add(subfolder)
  15766. Next
  15767. Catch ex As Exception
  15768. #If SilentErrorScream Then
  15769. Throw ex
  15770. #End If
  15771. End Try
  15772. End If
  15773. Next
  15774. For Each homemoviefolder In totalfolders
  15775. For Each ext In Utilities.VideoExtensions
  15776. Dim returnedhomemovielist As New List(Of str_BasicHomeMovie)
  15777. moviepattern = If((ext = "VIDEO_TS.IFO"), ext, "*" & ext) 'this bit adds the * for the extension search in mov_ListFiles2 if its not the string VIDEO_TS.IFO
  15778. dirpath = homemoviefolder
  15779. Dim dir_info As New System.IO.DirectoryInfo(dirpath)
  15780. returnedhomemovielist = HomeMovies.listHomeMovieFiles(dir_info, moviepattern, scraperLog) 'titlename is logged in here
  15781. If returnedhomemovielist.Count > 0 Then
  15782. For Each newhomemovie In returnedhomemovielist
  15783. Dim existsincache As Boolean = False
  15784. Dim pathOnly As String = IO.Path.GetDirectoryName(newhomemovie.FullPathAndFilename) & "\"
  15785. Dim nfopath As String = pathOnly & IO.Path.GetFileNameWithoutExtension(newhomemovie.FullPathAndFilename) & ".nfo"
  15786. If IO.File.Exists(nfopath) Then
  15787. Try
  15788. Dim newexistingmovie As New HomeMovieDetails
  15789. newexistingmovie = nfoFunction.nfoLoadHomeMovie(nfopath)
  15790. Dim newexistingbasichomemovie As New str_BasicHomeMovie
  15791. newexistingbasichomemovie.FullPathAndFilename = newexistingmovie.fileinfo.fullpathandfilename
  15792. newexistingbasichomemovie.Title = newexistingmovie.fullmoviebody.title
  15793. homemovielist.Add(newexistingbasichomemovie)
  15794. ListBox18.Items.Add(New ValueDescriptionPair(newexistingbasichomemovie.FullPathAndFilename, newexistingbasichomemovie.Title))
  15795. Catch ex As Exception
  15796. End Try
  15797. Else
  15798. newHomeMovieList.Add(newhomemovie)
  15799. End If
  15800. Next
  15801. End If
  15802. Next
  15803. Next
  15804. ToolStripStatusLabel9.Text = newHomeMovieList.Count.ToString & " New Home Movies Found"
  15805. Dim counter As Integer = 1
  15806. For Each item In newHomeMovieList
  15807. ToolStripStatusLabel9.Text = "Adding Home Movie " & counter & " of " & newHomeMovieList.Count
  15808. Me.Refresh()
  15809. Application.DoEvents()
  15810. If item.FullPathAndFilename <> "" Then
  15811. Dim newhomemovie As New str_BasicHomeMovie
  15812. newhomemovie.FullPathAndFilename = item.FullPathAndFilename
  15813. newhomemovie.Title = item.Title
  15814. Dim fulldetails As New HomeMovieDetails
  15815. fulldetails.fullmoviebody.title = newhomemovie.Title
  15816. 'Get year for home movie using modified time since more accurate (Creation date is reset if a file is copied)
  15817. Dim fileCreatedDate As DateTime = File.GetLastWriteTime(item.FullPathAndFilename)
  15818. Dim format As String = "yyyy"
  15819. Dim yearstring As String = fileCreatedDate.ToString(format)
  15820. fulldetails.fullmoviebody.year = yearstring
  15821. 'create fanart for home movie if it does not exist
  15822. If Pref.HmFanartScrnShot Then
  15823. Dim thumbpathandfilename As String = Pref.GetFanartPath(item.FullPathAndFilename)
  15824. If Not IO.File.Exists(thumbpathandfilename) Then
  15825. Try
  15826. Utilities.CreateScreenShot(item.FullPathAndFilename, thumbpathandfilename, Pref.HmFanartTime)
  15827. Catch ex As Exception
  15828. End Try
  15829. End If
  15830. End If
  15831. Dim nfofilename As String = ""
  15832. Dim extension As String = ""
  15833. fulldetails.fullmoviebody.movieset = "Home Movie"
  15834. fulldetails.fileinfo.fullpathandfilename = newhomemovie.FullPathAndFilename
  15835. fulldetails.filedetails = Pref.Get_HdTags(fulldetails.fileinfo.fullpathandfilename)
  15836. Dim rtime As Integer = (fulldetails.filedetails.filedetails_video.DurationInSeconds.Value / 60)
  15837. fulldetails.fullmoviebody.runtime = rtime.ToString
  15838. Dim pathOnly As String = IO.Path.GetDirectoryName(fulldetails.fileinfo.fullpathandfilename) & "\"
  15839. Dim nfopath As String = pathOnly & IO.Path.GetFileNameWithoutExtension(fulldetails.fileinfo.fullpathandfilename) & ".nfo"
  15840. newhomemovie.FullPathAndFilename = nfopath
  15841. nfoFunction.nfoSaveHomeMovie(nfopath, fulldetails)
  15842. homemovielist.Add(newhomemovie)
  15843. ListBox18.Items.Add(New ValueDescriptionPair(newhomemovie.FullPathAndFilename, newhomemovie.Title))
  15844. End If
  15845. counter += 1
  15846. progress = ((100 / newHomeMovieList.Count) * (counter))
  15847. If progress > 100 Then progress = 100
  15848. ToolStripProgressBar8.Value = progress
  15849. Next
  15850. ToolStripProgressBar8.Visible = False
  15851. ToolStripStatusLabel9.Visible = False
  15852. Statusstrip_Enable(False)
  15853. End Sub
  15854. Private Sub rebuildHomeMovies()
  15855. homemovielist.Clear()
  15856. ListBox18.Items.Clear()
  15857. Dim newhomemoviefolders As New List(Of String)
  15858. Dim progress As Integer = 0
  15859. progress = 0
  15860. scraperLog = ""
  15861. Dim dirpath As String = String.Empty
  15862. Dim newHomeMovieList As New List(Of str_BasicHomeMovie)
  15863. Dim totalfolders As New List(Of String)
  15864. totalfolders.Clear()
  15865. For Each moviefolder In homemoviefolders
  15866. If Not moviefolder.selected Then Continue For
  15867. Dim hg As New IO.DirectoryInfo(moviefolder.rpath)
  15868. If hg.Exists Then
  15869. scraperLog &= "Searching Movie Folder: " & hg.FullName.ToString & vbCrLf
  15870. totalfolders.Add(moviefolder.rpath)
  15871. Dim newlist As List(Of String)
  15872. Try
  15873. newlist = Utilities.EnumerateFolders(moviefolder.rpath) 'Max levels restriction of 6 deep removed
  15874. For Each subfolder In newlist
  15875. scraperLog = scraperLog & "Subfolder added :- " & subfolder.ToString & vbCrLf
  15876. totalfolders.Add(subfolder)
  15877. Next
  15878. Catch ex As Exception
  15879. #If SilentErrorScream Then
  15880. Throw ex
  15881. #End If
  15882. End Try
  15883. End If
  15884. Next
  15885. For Each homemoviefolder In totalfolders
  15886. Dim returnedhomemovielist As New List(Of str_BasicHomeMovie)
  15887. dirpath = homemoviefolder
  15888. Dim dir_info As New System.IO.DirectoryInfo(dirpath)
  15889. returnedhomemovielist = HomeMovies.listHomeMovieFiles(dir_info, "*.nfo", scraperLog) 'titlename is logged in here
  15890. If returnedhomemovielist.Count > 0 Then
  15891. For Each newhomemovie In returnedhomemovielist
  15892. Dim existsincache As Boolean = False
  15893. Dim pathOnly As String = IO.Path.GetDirectoryName(newhomemovie.FullPathAndFilename) & "\"
  15894. Dim nfopath As String = pathOnly & IO.Path.GetFileNameWithoutExtension(newhomemovie.FullPathAndFilename) & ".nfo"
  15895. If IO.File.Exists(nfopath) Then
  15896. Try
  15897. Dim newexistingmovie As New HomeMovieDetails
  15898. newexistingmovie = nfoFunction.nfoLoadHomeMovie(nfopath)
  15899. Dim newexistingbasichomemovie As New str_BasicHomeMovie
  15900. newexistingbasichomemovie.FullPathAndFilename = newexistingmovie.fileinfo.fullpathandfilename
  15901. newexistingbasichomemovie.Title = newexistingmovie.fullmoviebody.title
  15902. homemovielist.Add(newexistingbasichomemovie)
  15903. ListBox18.Items.Add(New ValueDescriptionPair(newexistingbasichomemovie.FullPathAndFilename, newexistingbasichomemovie.Title))
  15904. Catch ex As Exception
  15905. End Try
  15906. Else
  15907. newHomeMovieList.Add(newhomemovie)
  15908. End If
  15909. Next
  15910. End If
  15911. Next
  15912. Call HomeMovieCacheSave()
  15913. End Sub
  15914. Private Sub HomeMovieCacheSave()
  15915. Dim fullpath As String = workingProfile.HomeMovieCache
  15916. If homemovielist.Count > 0 And homemoviefolders.Count > 0 Then
  15917. If IO.File.Exists(fullpath) Then
  15918. Dim don As Boolean = False
  15919. Dim count As Integer = 0
  15920. Do
  15921. Try
  15922. If IO.File.Exists(fullpath) Then
  15923. IO.File.Delete(fullpath)
  15924. don = True
  15925. Else
  15926. don = True
  15927. End If
  15928. Catch ex As Exception
  15929. #If SilentErrorScream Then
  15930. Throw ex
  15931. #End If
  15932. Finally
  15933. count += 1
  15934. End Try
  15935. Loop Until don = True
  15936. End If
  15937. frmSplash2.Label1.Text = "Creating Home Movie Cache xml....."
  15938. frmSplash2.Label2.Visible = False
  15939. frmSplash2.ProgressBar1.Visible = False
  15940. Dim doc As New XmlDocument
  15941. Dim thispref As XmlNode = Nothing
  15942. Dim xmlproc As XmlDeclaration
  15943. xmlproc = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes")
  15944. doc.AppendChild(xmlproc)
  15945. Dim root As XmlElement
  15946. Dim child As XmlElement
  15947. root = doc.CreateElement("homemovie_cache")
  15948. Dim childchild As XmlElement
  15949. Dim count2 As Integer = 0
  15950. frmSplash2.Label2.Text = "Creating cache xml...."
  15951. For Each movie In homemovielist
  15952. child = doc.CreateElement("movie")
  15953. childchild = doc.CreateElement("fullpathandfilename")
  15954. childchild.InnerText = movie.FullPathAndFilename
  15955. child.AppendChild(childchild)
  15956. childchild = doc.CreateElement("title")
  15957. childchild.InnerText = movie.Title
  15958. child.AppendChild(childchild)
  15959. root.AppendChild(child)
  15960. Next
  15961. doc.AppendChild(root)
  15962. For f = 1 To 100
  15963. Try
  15964. frmSplash2.Label2.Text = "Saving cache xml...." & f
  15965. Dim output As New XmlTextWriter(fullpath, System.Text.Encoding.UTF8)
  15966. output.Formatting = Formatting.Indented
  15967. doc.WriteTo(output)
  15968. output.Close()
  15969. Exit For
  15970. Catch ex As Exception
  15971. #If SilentErrorScream Then
  15972. Throw ex
  15973. #End If
  15974. End Try
  15975. Next
  15976. Else
  15977. Try
  15978. If IO.File.Exists(fullpath) Then
  15979. IO.File.Delete(fullpath)
  15980. End If
  15981. Catch
  15982. End Try
  15983. End If
  15984. End Sub
  15985. Private Sub homemovieCacheLoad()
  15986. homemovielist.Clear()
  15987. Dim movielist As New XmlDocument
  15988. Dim objReader As New System.IO.StreamReader(workingProfile.HomeMovieCache)
  15989. Dim tempstring As String = objReader.ReadToEnd
  15990. objReader.Close()
  15991. objReader = Nothing
  15992. movielist.LoadXml(tempstring)
  15993. Dim thisresult As XmlNode = Nothing
  15994. For Each thisresult In movielist("homemovie_cache")
  15995. Select Case thisresult.Name
  15996. Case "movie"
  15997. Dim newmovie As New str_BasicHomeMovie(SetDefaults)
  15998. Dim detail As XmlNode = Nothing
  15999. For Each detail In thisresult.ChildNodes
  16000. Select Case detail.Name
  16001. Case "fullpathandfilename"
  16002. newmovie.FullPathAndFilename = detail.InnerText
  16003. Case "title"
  16004. newmovie.Title = detail.InnerText
  16005. End Select
  16006. Next
  16007. homemovielist.Add(newmovie)
  16008. End Select
  16009. Next
  16010. Call loadhomemovielist()
  16011. Try
  16012. ListBox18.SelectedIndex = 0
  16013. Catch ex As Exception
  16014. #If SilentErrorScream Then
  16015. Throw ex
  16016. #End If
  16017. End Try
  16018. End Sub
  16019. Private Sub loadhomemovielist()
  16020. ListBox18.Items.Clear()
  16021. For Each item In homemovielist
  16022. ListBox18.Items.Add(New ValueDescriptionPair(item.FullPathAndFilename, item.Title))
  16023. Next
  16024. End Sub
  16025. Private Sub loadhomemoviedetails()
  16026. HmMovTitle.Text = ""
  16027. HmMovSort.Text = ""
  16028. HmMovYear.Text = ""
  16029. HmMovPlot.Text = ""
  16030. HmMovStars.Text = ""
  16031. pbx_HmFanart.Image = Nothing
  16032. WorkingHomeMovie = nfoFunction.nfoLoadHomeMovie(WorkingHomeMovie.fileinfo.fullpathandfilename)
  16033. HmMovTitle.Text = WorkingHomeMovie.fullmoviebody.title
  16034. HmMovSort.Text = WorkingHomeMovie.fullmoviebody.sortorder
  16035. HmMovPlot.Text = WorkingHomeMovie.fullmoviebody.plot
  16036. HmMovStars.Text = WorkingHomeMovie.fullmoviebody.stars
  16037. HmMovYear.Text = WorkingHomeMovie.fullmoviebody.year
  16038. PlaceHolderforHomeMovieTitleToolStripMenuItem.Text = WorkingHomeMovie.fullmoviebody.title
  16039. PlaceHolderforHomeMovieTitleToolStripMenuItem.BackColor = Color.Honeydew
  16040. PlaceHolderforHomeMovieTitleToolStripMenuItem.Font = New Font("Arial", 10, FontStyle.Bold)
  16041. If IO.File.Exists(WorkingHomeMovie.fileinfo.fanartpath) Then
  16042. util_ImageLoad(pbx_HmFanart, WorkingHomeMovie.fileinfo.fanartpath, Utilities.DefaultFanartPath)
  16043. Dim video_flags = VidMediaFlags(WorkingHomeMovie.filedetails)
  16044. movieGraphicInfo.OverlayInfo(pbx_HmFanart, "", video_flags)
  16045. End If
  16046. util_ImageLoad(pbx_HmPoster, WorkingHomeMovie.fileinfo.posterpath, Utilities.DefaultPosterPath)
  16047. End Sub
  16048. Private Sub HomeMovieFoldersRefresh()
  16049. AuthorizeCheck = True
  16050. Pref.homemoviefolders.Clear()
  16051. For f = 0 To clbx_HMMovieFolders.Items.Count - 1
  16052. Dim t As New str_RootPaths
  16053. t.rpath = clbx_HMMovieFolders.Items(f).ToString
  16054. Dim chkstate As CheckState = clbx_HMMovieFolders.GetItemCheckState(f)
  16055. t.selected = (chkstate = CheckState.Checked)
  16056. Pref.homemoviefolders.Add(t)
  16057. Next
  16058. Call ConfigSave()
  16059. Call rebuildHomeMovies()
  16060. AuthorizeCheck = False
  16061. hmfolderschanged = False
  16062. TabControl1.SelectedIndex = 0
  16063. End Sub
  16064. #End Region 'Home Movie Routines, buttons etc.
  16065. Sub BckWrkCheckNewVersion_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BckWrkCheckNewVersion.DoWork
  16066. Dim ShowNoNewVersionMsgBox As String = DirectCast(e.Argument, Boolean)
  16067. e.Result = New NewVersionCheckResult(ShowNoNewVersionMsgBox, CheckForNewVersion)
  16068. End Sub
  16069. Private Sub BckWrkCheckNewVersion_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BckWrkCheckNewVersion.RunWorkerCompleted
  16070. Dim Results As NewVersionCheckResult = e.Result
  16071. If IsNothing(Results.NewVersion) Then
  16072. If Results.ShowNoNewVersionMsgBox Then
  16073. MsgBox("You're up-to-date!", MsgBoxStyle.OkOnly, "No new version found")
  16074. End If
  16075. Exit Sub
  16076. End If
  16077. Dim answer = MsgBox("Would you like to download the new version?", MsgBoxStyle.YesNo, "New version " & Results.NewVersion & " available")
  16078. If answer = MsgBoxResult.Yes Then
  16079. CloseMC = True
  16080. OpenUrl(HOME_PAGE)
  16081. End If
  16082. End Sub
  16083. #Region "ToolStrip Menus"
  16084. Private Sub tsmi_RenMovieOnly_click(sender As Object, e As EventArgs) Handles tsmi_RenMovieOnly.Click
  16085. Dim ismovrenenabled As Boolean = Pref.MovieRenameEnable
  16086. Dim isusefolder As Boolean = Pref.usefoldernames
  16087. If Pref.MovieManualRename Then
  16088. If isusefolder Then
  16089. Dim tempint As Integer = MessageBox.Show("You currently have 'UseFolderName' Selected" & vbCrLf & "Are you sure you wish to Rename this Movie file", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
  16090. If tempint = DialogResult.No Then
  16091. Exit Sub
  16092. End If
  16093. End If
  16094. Pref.MovieRenameEnable = True
  16095. Pref.usefoldernames = False
  16096. mov_ScrapeSpecific("rename_files")
  16097. While BckWrkScnMovies.IsBusy
  16098. Application.DoEvents()
  16099. End While
  16100. Else
  16101. MsgBox("Manual Movie Rename is not enabled", 0)
  16102. End If
  16103. Pref.MovieRenameEnable = ismovrenenabled
  16104. Pref.usefoldernames = isusefolder
  16105. End Sub
  16106. Private Sub tsmi_RenMovFolderOnly_click(sender As Object, e As EventArgs) Handles tsmi_RenMovFolderOnly.Click
  16107. Dim isMovFoldRenEnabled As Boolean = Pref.MovFolderRename
  16108. If Pref.MovieManualRename Then
  16109. Pref.MovFolderRename = True
  16110. mov_ScrapeSpecific("rename_folders")
  16111. While BckWrkScnMovies.IsBusy
  16112. Application.DoEvents()
  16113. End While
  16114. Else
  16115. MsgBox("Manual Movie Rename is not enabled", 0)
  16116. End If
  16117. Pref.MovFolderRename = isMovFoldRenEnabled
  16118. End Sub
  16119. Private Sub tsmi_RenMovieAndFolder_click(sender As Object, e As EventArgs) Handles tsmi_RenMovieAndFolder.Click
  16120. Dim isMovFoldRenEnabled As Boolean = Pref.MovFolderRename
  16121. Dim isMovRenEnabled As Boolean = Pref.MovieRenameEnable
  16122. Dim isusefolder As Boolean = Pref.usefoldernames
  16123. If Pref.MovieManualRename Then
  16124. Dim renmov As Boolean = True
  16125. If isusefolder Then
  16126. Dim tempint As Integer = MessageBox.Show("You currently have 'UseFolderName' Selected" & vbCrLf & "Are you sure you wish to Rename this Movie file" & vbCrLf & "Folder Renaming will still commence", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
  16127. If tempint = DialogResult.No Then
  16128. renmov = False
  16129. End If
  16130. End If
  16131. Pref.MovFolderRename = True
  16132. Pref.MovieRenameEnable = True
  16133. Pref.usefoldernames = False
  16134. _rescrapeList.FullPathAndFilenames.Clear()
  16135. For Each row As DataGridViewRow In DataGridViewMovies.SelectedRows
  16136. _rescrapeList.FullPathAndFilenames.Add(row.Cells("fullpathandfilename").Value.ToString)
  16137. Next
  16138. rescrapeList.ResetFields()
  16139. rescrapeList.Rename_Folders = True
  16140. rescrapeList.Rename_Files = renmov
  16141. RunBackgroundMovieScrape("BatchRescrape")
  16142. While BckWrkScnMovies.IsBusy
  16143. Application.DoEvents()
  16144. End While
  16145. Else
  16146. MsgBox("Manual Movie Rename is not enabled", 0)
  16147. End If
  16148. Pref.MovFolderRename = isMovFoldRenEnabled
  16149. Pref.MovieRenameEnable = isMovRenEnabled
  16150. Pref.usefoldernames = isusefolder
  16151. End Sub
  16152. Private Sub tsmiMov_OpenInMkvmergeGUI_Click(sender As Object, e As EventArgs) Handles tsmiMov_OpenInMkvmergeGUI.Click
  16153. If DataGridViewMovies.SelectedRows.Count > 10 Then
  16154. If MsgBox("Are you sure you want to open that many?", MsgBoxStyle.YesNo, "About to open " & DataGridViewMovies.SelectedRows.Count & " instances of Mkvmerge Gui") <> MsgBoxResult.Ok Then Exit Sub
  16155. End If
  16156. For Each row In DataGridViewMovies.SelectedRows
  16157. Process.Start(Pref.MkvMergeGuiPath, """" & Utilities.GetFileName(row.Cells("fullpathandfilename").Value) & """")
  16158. Next
  16159. End Sub
  16160. Private Sub tsmiCheckForNewVersion_Click(sender As System.Object, e As System.EventArgs) Handles tsmiCheckForNewVersion.Click
  16161. BckWrkCheckNewVersion.RunWorkerAsync(True)
  16162. End Sub
  16163. Private Sub tsmiMov_ConvertToFrodo_Click(sender As Object, e As EventArgs) Handles tsmiMov_ConvertToFrodo.Click
  16164. Try
  16165. Call mov_ScrapeSpecific("Convert_To_Frodo")
  16166. Catch ex As Exception
  16167. ExceptionHandler.LogError(ex)
  16168. End Try
  16169. End Sub
  16170. Private Sub tsm_TvScrapePoster_Click(sender As System.Object, e As System.EventArgs) Handles tsm_TvScrapePoster.Click
  16171. Try
  16172. TvScrapePosterBanner("poster")
  16173. Catch ex As Exception
  16174. ExceptionHandler.LogError(ex)
  16175. End Try
  16176. End Sub
  16177. Private Sub tsm_TvSelectPoster_Click(sender As System.Object, e As System.EventArgs) Handles tsm_TvSelectPoster.Click
  16178. Try
  16179. TvSelectPosterBanner(False)
  16180. Catch ex As Exception
  16181. ExceptionHandler.LogError(ex)
  16182. End Try
  16183. End Sub
  16184. Private Sub tsm_TvScrapeBanner_Click(sender As System.Object, e As System.EventArgs) Handles tsm_TvScrapeBanner.Click
  16185. Try
  16186. TvScrapePosterBanner("series")
  16187. Catch ex As Exception
  16188. ExceptionHandler.LogError(ex)
  16189. End Try
  16190. End Sub
  16191. Private Sub tsm_TvSelectBanner_Click(sender As System.Object, e As System.EventArgs) Handles tsm_TvSelectBanner.Click
  16192. Try
  16193. TvSelectPosterBanner(True)
  16194. Catch ex As Exception
  16195. ExceptionHandler.LogError(ex)
  16196. End Try
  16197. End Sub
  16198. Private Sub ReloadHtmlTemplatesToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ReloadHtmlTemplatesToolStripMenuItem.Click
  16199. Dim mediaDropdown As New SortedList(Of String, String)
  16200. mediaInfoExp.addTemplates(mediaDropdown)
  16201. ExportMovieListInfoToolStripMenuItem.DropDownItems.Clear()
  16202. ExportTVShowInfoToolStripMenuItem.DropDownItems.Clear()
  16203. For Each item In mediaDropdown
  16204. If item.Value = MediaInfoExport.mediaType.Movie Then
  16205. ExportMovieListInfoToolStripMenuItem.DropDownItems.Add(item.Key)
  16206. ElseIf item.Value = MediaInfoExport.mediaType.TV Then
  16207. ExportTVShowInfoToolStripMenuItem.DropDownItems.Add(item.Key)
  16208. End If
  16209. Next
  16210. End Sub
  16211. Private Sub FixNFOCreateDateToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles FixNFOCreateDateToolStripMenuItem.Click
  16212. Dim fixCreateDate As New frmCreateDateFix
  16213. If Pref.MultiMonitoEnabled Then
  16214. Dim w As Integer = fixCreateDate.Width
  16215. Dim h As Integer = fixCreateDate.Height
  16216. fixCreateDate.Bounds = Screen.AllScreens(CurrentScreen).Bounds
  16217. fixCreateDate.StartPosition = FormStartPosition.Manual
  16218. fixCreateDate.Width = w
  16219. fixCreateDate.Height = h
  16220. End If
  16221. fixCreateDate.ShowDialog()
  16222. End Sub
  16223. Private Sub tsmicacheclean_Click(sender As Object, e As EventArgs) Handles tsmicacheclean.Click
  16224. If Not tvbckrescrapewizard.IsBusy AndAlso Not bckgroundscanepisodes.IsBusy AndAlso Not bckgrnd_tvshowscraper.IsBusy AndAlso Not Bckgrndfindmissingepisodes.IsBusy AndAlso Not BckWrkScnMovies.IsBusy Then
  16225. messbox = New frmMessageBox("Emptying Cache & Series Folders", , " Please Wait. ")
  16226. messbox.Show()
  16227. messbox.Refresh()
  16228. Application.DoEvents()
  16229. CleanCacheFolder(True, True)
  16230. messbox.Close()
  16231. End If
  16232. End Sub
  16233. Private Sub tsmiCleanCacheOnly_Click(sender As Object, e As EventArgs) Handles tsmiCleanCacheOnly.Click
  16234. If Not tvbckrescrapewizard.IsBusy AndAlso Not bckgroundscanepisodes.IsBusy AndAlso Not bckgrnd_tvshowscraper.IsBusy AndAlso Not Bckgrndfindmissingepisodes.IsBusy AndAlso Not BckWrkScnMovies.IsBusy Then
  16235. messbox = New frmMessageBox("Emptying Cache Folders", , " Please Wait. ")
  16236. messbox.Show()
  16237. messbox.Refresh()
  16238. Application.DoEvents()
  16239. CleanCacheFolder(, True)
  16240. messbox.Close()
  16241. End If
  16242. End Sub
  16243. Private Sub tsmiCleanSeriesonly_Click(sender As Object, e As EventArgs) Handles tsmiCleanSeriesonly.Click
  16244. If Not tvbckrescrapewizard.IsBusy AndAlso Not bckgroundscanepisodes.IsBusy AndAlso Not bckgrnd_tvshowscraper.IsBusy AndAlso Not Bckgrndfindmissingepisodes.IsBusy AndAlso Not BckWrkScnMovies.IsBusy Then
  16245. messbox = New frmMessageBox("Emptying Series Folder", , " Please Wait. ")
  16246. messbox.Show()
  16247. messbox.Refresh()
  16248. Application.DoEvents()
  16249. ClearSeriesFolder()
  16250. messbox.Close()
  16251. End If
  16252. End Sub
  16253. Private Sub RefreshGenreListboxToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RefreshGenreListboxToolStripMenuItem.Click
  16254. GenreMasterLoad()
  16255. util_GenreLoad()
  16256. End Sub
  16257. Private Sub ExportLibraryToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExportLibraryToolStripMenuItem.Click
  16258. Dim frmxport As New frmXbmcExport
  16259. If Pref.MultiMonitoEnabled Then
  16260. Dim w As Integer = frmxport.Width
  16261. Dim h As Integer = frmxport.Height
  16262. frmxport.Bounds = Screen.AllScreens(CurrentScreen).Bounds
  16263. frmxport.StartPosition = FormStartPosition.Manual
  16264. frmxport.Width = w
  16265. frmxport.Height = h
  16266. End If
  16267. frmxport.ShowDialog()
  16268. End Sub
  16269. #End Region 'ToolStrip Menus misc
  16270. 'Sub MkvMergeGuiPath_ChangeHandler()
  16271. ' tsmiOpenInMkvmergeGUI.Enabled = True
  16272. ' tbMkvMergeGuiPath.Text = Pref.MkvMergeGuiPath
  16273. 'End Sub
  16274. #Region "Movie Filters"
  16275. Private Sub ConfigureMovieFiltersToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles ConfigureMovieFiltersToolStripMenuItem1.Click
  16276. Dim frm As New frmConfigureMovieFilters
  16277. frm.Init(SplitContainer5.Panel2)
  16278. If frm.ShowDialog = Windows.Forms.DialogResult.OK Then
  16279. UpdateMovieFiltersPanel()
  16280. Pref.ConfigSave()
  16281. UpdateFilteredList()
  16282. End If
  16283. End Sub
  16284. Sub UpdateMovieFiltersPanel()
  16285. 'ResizeBottomLHSPanel
  16286. Pref.movie_filters.UpdateFromPanel()
  16287. ResizeBottomLHSPanel(MovieFiltersPanelMaxHeight)
  16288. Pref.movie_filters.PositionMovieFilters()
  16289. End Sub
  16290. ReadOnly Property MovieFiltersPanelMaxHeight As Integer
  16291. Get
  16292. Return Pref.movie_filters.CalculatedFilterPanelHeight
  16293. End Get
  16294. End Property
  16295. Private Sub SplitContainer5_DoubleClick(sender As Object, e As EventArgs) Handles SplitContainer5.DoubleClick
  16296. If SplitContainer5.Panel2.Height = MovieFiltersPanelMaxHeight - 5 Then
  16297. ResizeBottomLHSPanel(0)
  16298. Else
  16299. ResizeBottomLHSPanel(MovieFiltersPanelMaxHeight)
  16300. End If
  16301. End Sub
  16302. Private Sub ResizeBottomLHSPanel(height As Integer, Optional ByVal MaxHeight As Integer = 0)
  16303. ProgState = ProgramState.ResizingSplitterPanel
  16304. SplitContainer5.SplitterDistance = If((SplitContainer5.Height - height) < 0, 0, SplitContainer5.Height - height)
  16305. DataGridViewMovies.Height = SplitContainer5.SplitterDistance - 140
  16306. If MaxHeight = 0 Then
  16307. SplitContainer5.Panel2.AutoScrollMinSize = New Size(SplitContainer5.Panel2.AutoScrollMinSize.Width, height - 10)
  16308. Else
  16309. SplitContainer5.Panel2.AutoScrollMinSize = New Size(SplitContainer5.Panel2.AutoScrollMinSize.Width, MaxHeight - 10)
  16310. End If
  16311. ProgState = ProgramState.Other
  16312. End Sub
  16313. Private Sub ResizeBottomLHSPanel()
  16314. If ProgState = ProgramState.ResizingSplitterPanel Then Return
  16315. If Not MainFormLoadedStatus Then Return
  16316. If Not SplitContainer5.Panel2.Visible Then Return
  16317. Dim maxSize = MovieFiltersPanelMaxHeight
  16318. Dim minSize = 2
  16319. If SplitContainer5.Height - SplitContainer5.SplitterDistance > maxSize Then
  16320. SplitContainer5.SplitterDistance = SplitContainer5.Height - maxSize
  16321. End If
  16322. If SplitContainer5.Height - SplitContainer5.SplitterDistance < minSize Then
  16323. SplitContainer5.SplitterDistance = SplitContainer5.Height - minSize
  16324. End If
  16325. 'Needed as workaround for splitter panel framework bug:
  16326. Dim h = SplitContainer5.SplitterDistance - 140
  16327. If h < minSize Then h = minSize
  16328. DataGridViewMovies.Height = h
  16329. End Sub
  16330. Private Sub ResetFilter(sender As Object, e As EventArgs) Handles lblFilterSet.Click, lblFilterVotes.Click, lblFilterRating.Click,
  16331. lblFilterCertificate.Click, lblFilterGenre.Click, lblFilterYear.Click,
  16332. lblFilterResolution.Click, lblFilterAudioCodecs.Click, lblFilterAudioChannels.Click,
  16333. lblFilterAudioBitrates.Click, lblFilterNumAudioTracks.Click, lblFilterAudioLanguages.Click,
  16334. lblFilterActor.Click, lblFilterSource.Click, lblFilterTag.Click,
  16335. lblFilterDirector.Click, lblFilterVideoCodec.Click, lblFilterSubTitleLang.Click,
  16336. lblFilterFolderSizes.Click, lblFilterRuntime.Click, lblFilterAudioDefaultLanguages.Click,
  16337. lblFilterCountries.Click, lblFilterStudios.Click, lblFilterRootFolder.Click,
  16338. lblFilterUserRated.Click
  16339. Dim filter As Object = GetFilterFromLabel(sender)
  16340. ProgState = ProgramState.ResettingFilters
  16341. filter.Reset()
  16342. ProgState = ProgramState.Other
  16343. UpdateFilteredList()
  16344. End Sub
  16345. Private Sub ChangeFilterMode(ByVal sender As Object, ByVal e As EventArgs) Handles lblFilterGenreMode.Click, lblFilterSetMode.Click, lblFilterResolutionMode.Click,
  16346. lblFilterAudioCodecsMode.Click, lblFilterCertificateMode.Click, lblFilterAudioChannelsMode.Click,
  16347. lblFilterAudioBitratesMode.Click, lblFilterNumAudioTracksMode.Click, lblFilterAudioLanguagesMode.Click,
  16348. lblFilterActorMode.Click, lblFilterSourceMode.Click, lblFilterTagMode.Click, lblFilterDirectorMode.Click,
  16349. lblFilterVideoCodecMode.Click, lblFilterSubTitleLangMode.Click, lblFilterAudioDefaultLanguagesMode.Click,
  16350. lblFilterCountriesMode.Click, lblFilterStudiosMode.Click , lblFilterRootFolderMode.Click,
  16351. lblFilterUserRatedMode.Click
  16352. Dim lbl As Label = sender
  16353. Dim filter As MC_UserControls.TriStateCheckedComboBox = GetFilterFromLabel(lbl)
  16354. filter.QuickSelect = Not filter.QuickSelect
  16355. lbl.Text = If(filter.QuickSelect, "S", "M")
  16356. movie_filters.GetItem(filter.Name).QuickSelect = filter.QuickSelect
  16357. End Sub
  16358. Private Function GetFilterFromLabel(ctl As Control)
  16359. Dim name As String = ctl.Name.RemoveAfterMatch("Mode")
  16360. Return ctl.Parent.Controls("cb" + name.Substring(3, name.Length - 3))
  16361. End Function
  16362. Private Sub ResetCbGeneralFilter(sender As Control, e As EventArgs) Handles lblFilterGeneral.Click
  16363. cbFilterGeneral.SelectedIndex = 0
  16364. End Sub
  16365. Private Sub cbFilterGeneral_DropDown(sender As Object, e As EventArgs) Handles cbFilterGeneral.DropDown
  16366. Dim maxWidth As Integer = cbFilterGeneral.DropDownWidth
  16367. Dim g As Graphics = cbFilterGeneral.CreateGraphics
  16368. Dim vertScrollBarWidth As Integer = If(cbFilterGeneral.Items.Count > cbFilterGeneral.MaxDropDownItems, SystemInformation.VerticalScrollBarWidth, 0)
  16369. Dim renderedWidth As Integer
  16370. Dim lbl As Label = New Label()
  16371. lbl.AutoSize = True
  16372. lbl.Font = cbFilterGeneral.Font
  16373. For Each item As String In cbFilterGeneral.Items
  16374. lbl.Text = item
  16375. renderedWidth = lbl.PreferredSize.Width + vertScrollBarWidth
  16376. maxWidth = Math.Max(maxWidth, renderedWidth)
  16377. Next
  16378. cbFilterGeneral.DropDownWidth = maxWidth
  16379. End Sub
  16380. #End Region 'Movie Filter code
  16381. Public Shared Function VidMediaFlags(ByVal Vidfiledetails As FullFileDetails, Optional ByVal Is3d As Boolean = False) As List(Of KeyValuePair(Of String, String))
  16382. Dim flags As New List(Of KeyValuePair(Of String, String))
  16383. Try
  16384. Dim tracks = If(Pref.ShowAllAudioTracks, Vidfiledetails.filedetails_audio, From x In Vidfiledetails.filedetails_audio Where x = Vidfiledetails.DefaultAudioTrack)
  16385. For Each track In tracks
  16386. flags.Add(New KeyValuePair(Of String, String)("channels" + GetNotDefaultStr(track = Vidfiledetails.DefaultAudioTrack), GetNumAudioTracks(track.Channels.Value)))
  16387. flags.Add(New KeyValuePair(Of String, String)("audio" + GetNotDefaultStr(track = Vidfiledetails.DefaultAudioTrack), track.Codec.Value))
  16388. flags.Add(New KeyValuePair(Of String, String)("lang" + GetNotDefaultStr(track = Vidfiledetails.DefaultAudioTrack), track.Language.Value))
  16389. Next
  16390. flags.Add(New KeyValuePair(Of String, String)("aspect", Utilities.GetStdAspectRatio(Vidfiledetails.filedetails_video.Aspect.Value)))
  16391. flags.Add(New KeyValuePair(Of String, String)("codec", Utilities.GetCodecCommonName(GetMasterCodec(Vidfiledetails.filedetails_video)))) '.Codec.Value.RemoveWhitespace)))
  16392. flags.Add(New KeyValuePair(Of String, String)("resolution", If(Vidfiledetails.filedetails_video.VideoResolution < 0, "", Vidfiledetails.filedetails_video.VideoResolution.ToString)))
  16393. flags.Add(New KeyValuePair(Of String, String)("special", If(Is3d, "3d", "")))
  16394. Dim subtitles = If(Not Pref.DisplayDefaultSubtitleLang, Nothing, If(Pref.DisplayAllSubtitleLang, Vidfiledetails.filedetails_subtitles, From x In Vidfiledetails.filedetails_subtitles Where x = Vidfiledetails.DefaultSubTrack))
  16395. If Not IsNothing(subtitles) Then
  16396. For Each subtitle In subtitles
  16397. flags.Add(New KeyValuePair(Of String, String)("sublang", subtitle.Language.Value))
  16398. Next
  16399. End If
  16400. Catch
  16401. End Try
  16402. Return flags
  16403. End Function
  16404. Private Shared Function GetNotDefaultStr(dflt)
  16405. If dflt Then
  16406. Return ""
  16407. End If
  16408. Return "_notdefault"
  16409. End Function
  16410. Private Shared Function GetNumAudioTracks(AudCh)
  16411. 'Return If((AudCh = "" Or AudCh = "-1"), "0", AudCh.Substring(0, 1))
  16412. Return If((AudCh = "" Or AudCh = "-1"), "0", Regex.Match(AudCh, "\d+").Value)
  16413. End Function
  16414. Private Shared Function GetMasterCodec(strmdata As VideoDetails)
  16415. Dim codec As String = strmdata.Codec.Value.RemoveWhitespace
  16416. Dim format As String = strmdata.FormatInfo.Value.RemoveWhitespace
  16417. Return If(codec = "h264" AndAlso format = "avc1", format, codec)
  16418. End Function
  16419. 'Private Sub TabPage18_Enter(sender As Object, e As EventArgs) Handles TabPage18.Enter
  16420. ' UcGenPref_XbmcLink.Pop()
  16421. 'End Sub
  16422. 'Private Sub tpPrxy_Enter(sender As Object, e As EventArgs)
  16423. ' UcGenPref_Proxy1.pop()
  16424. 'End Sub
  16425. Private Sub tsmiMov_SyncToXBMC_Click(sender As Object, e As EventArgs) Handles tsmiMov_SyncToXBMC.Click
  16426. Try
  16427. Call mov_ScrapeSpecific("Xbmc_Sync")
  16428. Catch ex As Exception
  16429. ExceptionHandler.LogError(ex)
  16430. End Try
  16431. End Sub
  16432. #Region "Functions"
  16433. Private Function AssignClipboardImage(picBox As PictureBox) As Boolean
  16434. Try
  16435. If Clipboard.GetDataObject.GetDataPresent(DataFormats.FileDrop) Then
  16436. Dim pth As String = CType(Clipboard.GetData(DataFormats.FileDrop), Array).GetValue(0).ToString
  16437. Dim FInfo As IO.FileInfo = New IO.FileInfo(pth)
  16438. If FInfo.Extension.ToLower() = ".jpg" Or FInfo.Extension.ToLower() = ".tbn" Or FInfo.Extension.ToLower() = ".bmp" Or FInfo.Extension.ToLower() = ".png" Then
  16439. util_ImageLoad(picBox, pth, Utilities.DefaultPosterPath)
  16440. Return True
  16441. Else
  16442. MessageBox.Show("Not a picture")
  16443. End If
  16444. End If
  16445. If Clipboard.GetDataObject.GetDataPresent(DataFormats.Bitmap) Then
  16446. Dim createfilename As String = Format(System.DateTime.Now, "yyyyMMddHHmmss").ToString
  16447. createfilename = Utilities.CacheFolderPath & createfilename & ".jpg"
  16448. Dim oImgObj As System.Drawing.Image = Clipboard.GetDataObject.GetData(DataFormats.Bitmap, True)
  16449. oImgObj.Save(createfilename, System.Drawing.Imaging.ImageFormat.Jpeg)
  16450. util_ImageLoad(picBox, createfilename, Utilities.DefaultPosterPath)
  16451. 'picBox.Image = Clipboard.GetDataObject().GetData(DataFormats.Bitmap)
  16452. Return True
  16453. End If
  16454. Catch ex As Exception
  16455. ExceptionHandler.LogError(ex)
  16456. End Try
  16457. Return False
  16458. End Function
  16459. Public Function CheckForNewVersion() As String
  16460. Dim MC_Version_RegEx = "<th><span class=""rating_header"">current</span></th>.*?<td>[\s]+.*?([0-9]*\.?[0-9]+).*?[\s]+</td>"
  16461. Dim s As New Classimdb
  16462. Dim html As String = s.loadwebpage(Pref.proxysettings, HOME_PAGE, True, 10).ToString
  16463. Dim m = Regex.Match(html, MC_Version_RegEx, RegexOptions.Singleline)
  16464. Dim displayVersion As String = m.Groups(1).Value.Trim
  16465. Dim latestVersion As String = displayVersion.Replace(".", "")
  16466. Dim currVersion As String = Trim(System.Reflection.Assembly.GetExecutingAssembly.FullName.Split(",")(1)).Replace(".", "").Replace("Version=", "")
  16467. If latestVersion.Length < 4 Then Return Nothing
  16468. If latestVersion <> currVersion Then Return displayVersion
  16469. Return Nothing
  16470. End Function
  16471. #End Region
  16472. Private Sub GoogleSearch(ByVal search As String)
  16473. 'Open Webpage at Google image search for movietitle & year
  16474. Dim title As String = workingMovieDetails.fullmoviebody.title
  16475. Dim year As String = workingMovieDetails.fullmoviebody.year
  16476. Dim url As String = ""
  16477. If Not IsNothing(year) AndAlso IsNumeric(year) AndAlso year.Length = 4 Then
  16478. url = "http://images.google.com/images?q=" & title & "+" & year & search
  16479. Else
  16480. url = "http://images.google.com/images?q=" & title & search
  16481. End If
  16482. OpenUrl(url)
  16483. End Sub
  16484. Public Function GetlistofPlots() As String
  16485. messbox = New frmMessageBox("Gathering plots", , " Please Wait. ")
  16486. messbox.Show()
  16487. messbox.Refresh()
  16488. Dim ListofPlots As New List(Of String)
  16489. Dim _imdbScraper As New Classimdb
  16490. Dim tmdb As New TMDB
  16491. tmdb.Imdb = workingMovieDetails.fullmoviebody.imdbid
  16492. tmdb.TmdbId = workingMovieDetails.fullmoviebody.tmdbid
  16493. Dim tmdbplot As String = Nothing
  16494. Try
  16495. tmdbplot = tmdb.Movie.overview
  16496. Catch
  16497. tmdbplot = Nothing
  16498. End Try
  16499. ListofPlots = _imdbScraper.GetImdbPlots(workingMovieDetails.fullmoviebody.imdbid)
  16500. If Not IsNothing(tmdbplot) AndAlso tmdbplot <> "" AndAlso Not ListofPlots.Contains(tmdbplot) Then ListofPlots.Add(tmdbplot)
  16501. messbox.Close()
  16502. If ListofPlots.Count < 2 Then
  16503. MsgBox("No Extra Plots found for this movie", MsgBoxStyle.Exclamation)
  16504. Return Nothing
  16505. End If
  16506. Dim plotfrm As New frmmovieplotlist(ListofPlots)
  16507. plotfrm.ShowDialog
  16508. If plotfrm.DialogResult = Windows.Forms.DialogResult.Cancel Then
  16509. plotfrm.Dispose()
  16510. Return Nothing
  16511. End If
  16512. Dim plotselected As Integer = plotfrm.cmbxplotnumber.SelectedIndex
  16513. plotfrm.Dispose()
  16514. Return ListofPlots(plotselected)
  16515. End Function
  16516. Private Sub TSMI_AboutMC_Click(sender As Object, e As EventArgs) Handles TSMI_AboutMC.Click
  16517. Dim txt As String
  16518. txt = "Media Companion. Designed by William Adamson in 2008"
  16519. txt &= vbCrLf & "" & vbCrLf & "OpenSourced in December 2010"
  16520. txt &= vbCrLf & "" & vbCrLf & "Worked on by billyad2000, EvLSnoopY, FreddyKrueger, StormyKnight, Playos, HueyHQ, AnotherPhil, anand, vbat99 and many more"
  16521. txt &= vbCrLf & vbCrLf & If(Environment.Is64BitProcess, "64bit build", "32bit build")
  16522. Dim abtfrm As New frmSplashscreen
  16523. Dim scrn As Integer = splashscreenread()
  16524. Dim MClocation As Point
  16525. abtfrm.StartPosition = FormStartPosition.Manual
  16526. MClocation = Me.Location
  16527. abtfrm.Location = New Point(MClocation.X + 50, MClocation.Y + 50)
  16528. abtfrm.Label1.Visible = False
  16529. abtfrm.Label3.Visible = False
  16530. abtfrm.lbl_about.Text = txt
  16531. abtfrm.lbl_about.Visible = True
  16532. abtfrm.allowlostfocus = True
  16533. abtfrm.TopMost = True
  16534. abtfrm.Show()
  16535. Do Until abtfrm.Cancelled
  16536. Application.DoEvents()
  16537. Loop
  16538. abtfrm.Close()
  16539. End Sub
  16540. Private Sub DataGridViewMovies_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridViewMovies.SelectionChanged
  16541. Dim something As String = ""
  16542. End Sub
  16543. Private Sub Tmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Tmr.Tick
  16544. Dim hFb As IntPtr = FindWindowW("#32770", "Browse For Folder") '#32770 is the class name of a folderbrowser dialog
  16545. If hFb <> IntPtr.Zero Then
  16546. If SendMessageW(hFb, BFFM_SETEXPANDED, 1, fb.SelectedPath) = IntPtr.Zero Then
  16547. Tmr.Stop()
  16548. End If
  16549. End If
  16550. End Sub
  16551. Private Sub XBMCTMDBConfigSave()
  16552. If Not Pref.XbmcTmdbScraperRatings = Nothing Then
  16553. Save_XBMC_TMDB_Scraper_Config("fanart", Pref.XbmcTmdbScraperFanart)
  16554. Save_XBMC_TMDB_Scraper_Config("trailerq", Pref.XbmcTmdbScraperTrailerQ)
  16555. Save_XBMC_TMDB_Scraper_Config("language", Pref.XbmcTmdbScraperLanguage)
  16556. Save_XBMC_TMDB_Scraper_Config("ratings", Pref.XbmcTmdbScraperRatings)
  16557. Save_XBMC_TMDB_Scraper_Config("tmdbcertcountry", Pref.XbmcTmdbScraperCertCountry)
  16558. End If
  16559. End Sub
  16560. Private Sub XBMCTVDBConfigSave()
  16561. 'If Not Pref.XbmcTmdbScraperRatings = Nothing Then
  16562. Save_XBMC_TVDB_Scraper_Config("dvdorder", Pref.XBMCTVDbDvdOrder)
  16563. Save_XBMC_TVDB_Scraper_Config("absolutenumber", Pref.XBMCTVDbAbsoluteNumber)
  16564. Save_XBMC_TVDB_Scraper_Config("fanart", Pref.XBMCTVDbFanart)
  16565. Save_XBMC_TVDB_Scraper_Config("posters", Pref.XBMCTVDbPoster)
  16566. Save_XBMC_TVDB_Scraper_Config("language", Pref.XBMCTVDbLanguage) 'ComboBox_TVDB_Language.Text)
  16567. Save_XBMC_TVDB_Scraper_Config("ratings", Pref.XBMCTVDbRatings)
  16568. Save_XBMC_TVDB_Scraper_Config("fallback", Pref.XBMCTVDbfallback)
  16569. 'End If
  16570. End Sub
  16571. Sub SetTagTxtField()
  16572. tagtxt.ReadOnly = Not Pref.AllowUserTags
  16573. If Pref.AllowUserTags Then
  16574. tagtxt.BackColor = Nothing
  16575. tagtxt.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
  16576. Else
  16577. tagtxt.BackColor = System.Drawing.SystemColors.Control
  16578. tagtxt.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
  16579. End If
  16580. End Sub
  16581. Public ReadOnly Property ImgBwCancelled As Boolean
  16582. Get
  16583. Application.DoEvents()
  16584. Return ImgBw.CancellationPending
  16585. End Get
  16586. End Property
  16587. Sub imgbw_DoWork(ByVal snder As Object, ByVal e As DoWorkEventArgs) Handles ImgBw.DoWork
  16588. Statusstrip_Enable()
  16589. 'StatusStrip1.BackColor = Color.Honeydew
  16590. 'StatusStrip1.Visible = True
  16591. 'tsStatusLabel1.Visible = False
  16592. Dim listpicbox As New List(Of FanartPicBox)
  16593. listpicbox.AddRange(e.Argument(0)) '{image list, Start image number, total number of images, picture panel}
  16594. Dim count As Integer = e.Argument(1)
  16595. Dim Total As Integer = e.Argument(2)
  16596. BWs.Clear()
  16597. Dim totalcount As Integer = count
  16598. If Total = 0 Then Total = listpicbox.Count
  16599. NumActiveThreads = 0
  16600. For Each item In listpicbox
  16601. Dim bw As BackgroundWorker = New BackgroundWorker
  16602. bw.WorkerSupportsCancellation = True
  16603. AddHandler bw.DoWork, AddressOf bw_DoWork
  16604. AddHandler bw.RunWorkerCompleted, AddressOf bw_RunWorkerCompleted
  16605. BWs.Add(bw)
  16606. NumActiveThreads += 1
  16607. bw.RunWorkerAsync(item)
  16608. totalcount += 1
  16609. ImgBw.ReportProgress(0, "Press ""Esc"" to Cancel: Downloading image: " & totalcount & " of " & Total)
  16610. If NumActiveThreads > 2 Then
  16611. Do Until NumActiveThreads < 2
  16612. If ImgBwCancelled Then
  16613. Exit Do
  16614. End If
  16615. Loop
  16616. End If
  16617. If ImgBwCancelled Then
  16618. Exit For
  16619. End If
  16620. Next
  16621. 'Dim panelrefresh As Panel = DirectCast(e.Argument(3), Panel)
  16622. 'panelrefresh.Refresh()
  16623. End Sub
  16624. Sub ImgBw_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles ImgBw.ProgressChanged
  16625. ToolStripStatusLabel2.Text = e.UserState
  16626. End Sub
  16627. Sub ImgBw_RunWorkerComplete(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles ImgBw.RunWorkerCompleted
  16628. Imageloading = True
  16629. ToolStripStatusLabel2.Text = "TV Show Episode Scan In Progress"
  16630. ToolStripStatusLabel2.Visible = False
  16631. Statusstrip_Enable(False)
  16632. 'StatusStrip1.Visible = Not Pref.AutoHideStatusBar
  16633. 'StatusStrip1.BackColor = Color.LightGray
  16634. 'tsStatusLabel1.Visible = True
  16635. Imageloading = False
  16636. End Sub
  16637. Sub bw_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
  16638. If Not ImgBwCancelled Then
  16639. Dim item As FanartPicBox = DirectCast(e.Argument, FanartPicBox)
  16640. e.Result = util_ImageLoad2(item.pbox, item.imagepath, "")
  16641. End If
  16642. End Sub
  16643. Private Sub bw_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs)
  16644. Threading.Monitor.Enter(Me)
  16645. NumActiveThreads -= 1
  16646. Threading.Monitor.Exit(Me)
  16647. End Sub
  16648. ' We need to load images in this way so that they remain unlocked by the OS so we can update the fanart/poster files as needed
  16649. Public Function util_ImageLoad2(ByVal PicBox As PictureBox, ByVal ImagePath As String, ByVal DefaultPic As String) As Boolean
  16650. Dim PathToUse As String = DefaultPic
  16651. Dim cachename As String = ""
  16652. PicBox.Tag = Nothing
  16653. If ImgBwCancelled Then Exit Function
  16654. If Utilities.UrlIsValid(ImagePath) Then
  16655. cachename = Utilities.Download2Cache(ImagePath)
  16656. If cachename <> "" Then PathToUse = cachename
  16657. ElseIf File.Exists(ImagePath) Then
  16658. PathToUse = ImagePath
  16659. End If
  16660. If PathToUse = "" Then
  16661. PicBox.Image = Nothing
  16662. Exit Function
  16663. End If
  16664. If ImgBwCancelled Then Exit Function
  16665. Try
  16666. 'Dim image As Image
  16667. Using fs As New System.IO.FileStream(PathToUse, System.IO.FileMode.Open, System.IO.FileAccess.Read), ms As System.IO.MemoryStream = New System.IO.MemoryStream()
  16668. fs.CopyTo(ms)
  16669. ms.Seek(0, System.IO.SeekOrigin.Begin)
  16670. 'image = Image.FromStream(ms)
  16671. PicBox.Image = Image.FromStream(ms)
  16672. End Using
  16673. 'PicBox.Image = Utilities.ResizeImage(image, PicBox.Width, PicBox.Height)
  16674. PicBox.Tag = PathToUse
  16675. Catch
  16676. 'Image is invalid e.g. not downloaded correctly -> Delete it
  16677. Try
  16678. File.Delete(PathToUse)
  16679. Catch
  16680. End Try
  16681. If ImgBwCancelled Then Exit Function
  16682. Try
  16683. Using fs As New System.IO.FileStream(DefaultPic, System.IO.FileMode.Open, System.IO.FileAccess.Read), ms As System.IO.MemoryStream = New System.IO.MemoryStream()
  16684. fs.CopyTo(ms)
  16685. ms.Seek(0, System.IO.SeekOrigin.Begin)
  16686. PicBox.Image = Image.FromStream(ms)
  16687. End Using
  16688. PicBox.ImageLocation = DefaultPic
  16689. Catch
  16690. Return False
  16691. End Try
  16692. Return True
  16693. End Try
  16694. Return True
  16695. End Function
  16696. Protected Overrides Sub Finalize()
  16697. MyBase.Finalize()
  16698. End Sub
  16699. Private Sub Statusstrip_Enable(Optional ByVal Enable As Boolean = True)
  16700. If Enable Then
  16701. StatusStrip1.BackColor = Color.Honeydew
  16702. StatusStrip1.Visible = True
  16703. tsStatusLabel1.Visible = False
  16704. Else
  16705. StatusStrip1.Visible = Not Pref.AutoHideStatusBar
  16706. StatusStrip1.BackColor = Color.LightGray
  16707. tsStatusLabel1.Visible = True
  16708. End If
  16709. End Sub
  16710. Private Sub tagtxt_TextChanged(sender As Object, e As EventArgs) Handles tagtxt.TextChanged
  16711. tb_tagtxt_changed = True
  16712. End Sub
  16713. Public Function cmsMissingMovies() As ContextMenuStrip
  16714. Dim cms = New ContextMenuStrip
  16715. Dim tsmiMissingMovie = New ToolStripMenuItem("Open TMDb Movie Info Page",My.Resources.TheMovieDB, AddressOf tsmiMissingMovie_Click)
  16716. Dim tsmiIncompleteMovieSet = New ToolStripMenuItem("Open TMDb Set Info Page" ,My.Resources.TheMovieDB, AddressOf tsmiMissingSet_Click )
  16717. cms.Items.Add(tsmiMissingMovie)
  16718. cms.Items.Add(tsmiIncompleteMovieSet)
  16719. Return cms
  16720. End Function
  16721. Private Sub tsmiMissingMovie_Click(ByVal sender As Object, ByVal e As EventArgs)
  16722. dim tmdbid As String = DataGridViewMovies.SelectedRows(0).Cells("tmdbid").Value
  16723. OpenUrl(TMDB_MOVIE_URL & tmdbid)
  16724. End Sub
  16725. Private Sub tsmiMissingSet_Click(ByVal sender As Object, ByVal e As EventArgs)
  16726. dim msi As MovieSetInfo = DataGridViewMovies.SelectedRows(0).Cells("movieset").Value
  16727. OpenUrl(TMDB_SET_URL & msi.MovieSetId)
  16728. End Sub
  16729. Private Sub tsmiMov_ViewMovieDbMoviePage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiMov_ViewMovieDbMoviePage.Click
  16730. dim tmdbId = workingMovie.tmdbid
  16731. OpenUrl(TMDB_MOVIE_URL & tmdbId)
  16732. End Sub
  16733. Private Sub tsmiMov_ViewMovieDbSetPage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsmiMov_ViewMovieDbSetPage.Click
  16734. dim msi As MovieSetInfo = workingMovie.MovieSet
  16735. OpenUrl(TMDB_SET_URL & msi.MovieSetId)
  16736. End Sub
  16737. End Class