|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.ComponentModel;
|
|
|
using System.Data;
|
|
|
using System.Drawing;
|
|
|
using System.Text;
|
|
|
using System.Windows.Forms;
|
|
|
using ComponentFactory.Krypton.Toolkit;
|
|
|
using System.Diagnostics;
|
|
|
using System.Threading;
|
|
|
using MovieTube.Client.Scraper;
|
|
|
using MovieTube.Viewer.Data;
|
|
|
using System.Linq;
|
|
|
|
|
|
namespace MovieTube.Viewer
|
|
|
{
|
|
|
partial class MainForm : KryptonForm,IViewContainer
|
|
|
{
|
|
|
#region Fields
|
|
|
|
|
|
private IView currentView;
|
|
|
private Thread downloaderThread;
|
|
|
private UpdaterService updaterService = new UpdaterService();
|
|
|
private NotepadForm fakeView;
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region Constructor
|
|
|
|
|
|
public MainForm()
|
|
|
{
|
|
|
InitializeComponent();
|
|
|
this.currentView = this.viewerWindow;
|
|
|
this.Text = Constants.AppTitle;
|
|
|
System.Net.ServicePointManager.Expect100Continue = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region Methods
|
|
|
|
|
|
|
|
|
private void ChangeView(IView futureView)
|
|
|
{
|
|
|
|
|
|
ChangeViewSingle(this.headerView, futureView == this.viewerWindow);
|
|
|
ChangeViewSingle(this.headerBrowse, futureView == this.browseWindow);
|
|
|
ChangeViewSingle(this.headerFavourite, futureView == this.favouriteWindow);
|
|
|
|
|
|
currentView.DeactivateView();
|
|
|
futureView.ActivateView();
|
|
|
currentView = futureView;
|
|
|
}
|
|
|
|
|
|
private void ChangeViewSingle(KryptonHeader view, bool selected)
|
|
|
{
|
|
|
if (!selected)
|
|
|
{
|
|
|
view.StateNormal.Back.Color1 = System.Drawing.SystemColors.GrayText;
|
|
|
view.StateNormal.Back.Color2 = System.Drawing.SystemColors.InactiveCaption;
|
|
|
view.StateNormal.Content.ShortText.Color1 = System.Drawing.SystemColors.GradientInactiveCaption;
|
|
|
view.StateNormal.Content.ShortText.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
view.StateNormal.Back.Color1 = System.Drawing.SystemColors.InactiveCaptionText;
|
|
|
view.StateNormal.Back.Color2 = System.Drawing.SystemColors.InactiveCaption;
|
|
|
view.StateNormal.Content.ShortText.Color1 = Color.White;
|
|
|
view.StateNormal.Content.ShortText.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
public void PlayVideo(Movie video)
|
|
|
{
|
|
|
ChangeView(this.viewerWindow);
|
|
|
this.viewerWindow.LoadVideo(video);
|
|
|
}
|
|
|
|
|
|
public IView ActiveView
|
|
|
{
|
|
|
get { throw new NotImplementedException(); }
|
|
|
private set { }
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void ReloadApp(Version version)
|
|
|
{
|
|
|
this.InvokeEx(() =>
|
|
|
{
|
|
|
KryptonMessageBox.Show(this, String.Format("A new version ({0}) of the application is downloaded. The application will be closed while installing", version),
|
|
|
Constants.AppTitle);
|
|
|
if(new UpdaterService().ExecuteUpdater())
|
|
|
Environment.Exit(0);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
private void CheckMovieDBUpdate(bool showMsg)
|
|
|
{
|
|
|
if (updaterService.DownloadMovieDatabase(true))
|
|
|
ReloadDB();
|
|
|
else if (showMsg)
|
|
|
KryptonMessageBox.Show(this, "No new movies found", Constants.AppTitle);
|
|
|
}
|
|
|
|
|
|
private void ReloadDB()
|
|
|
{
|
|
|
this.InvokeEx(() =>
|
|
|
{
|
|
|
var movies = ClientDataService.Single.GetLatestMovies();
|
|
|
if (movies.Count > 0)
|
|
|
{
|
|
|
new DBUpdatedForm().ShowMe(movies);
|
|
|
if (this.currentView == this.viewerWindow)
|
|
|
{
|
|
|
var lang = this.searchPanelWidget.GetLanguage();
|
|
|
if (movies.Any(x => x.ModifiedDate == null && x.LanguageCode == lang))
|
|
|
{
|
|
|
this.currentView.TriggerSearch(new SearchParameters
|
|
|
{
|
|
|
Language = this.searchPanelWidget.GetLanguage(),
|
|
|
Year = 0
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
UpdateStatusBar();
|
|
|
});
|
|
|
}
|
|
|
|
|
|
private void UpdateStatusBar(string message = "")
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
private void ShowApp()
|
|
|
{
|
|
|
this.Show();
|
|
|
this.WindowState = FormWindowState.Maximized;
|
|
|
this.BringToFront();
|
|
|
bool top = TopMost;
|
|
|
|
|
|
TopMost = true;
|
|
|
|
|
|
TopMost = top;
|
|
|
}
|
|
|
|
|
|
private void StartUpdateCheckThread(bool forcefully)
|
|
|
{
|
|
|
this.toolStripStatusLabelMessage.Text = Constants.ServerMessage;
|
|
|
if (downloaderThread == null)
|
|
|
{
|
|
|
downloaderThread = new Thread(DownloadWorker);
|
|
|
downloaderThread.IsBackground = true;
|
|
|
downloaderThread.Start(forcefully);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void DownloadWorker(object data)
|
|
|
{
|
|
|
|
|
|
var forcefull = (bool)data;
|
|
|
CheckMovieDBUpdate(false);
|
|
|
var v = updaterService.DownloadAppUpdate(forcefull);
|
|
|
if(v > Constants.AppVersion)
|
|
|
ReloadApp(v);
|
|
|
downloaderThread = null;
|
|
|
if (!forcefull)
|
|
|
{
|
|
|
Constants.UpdateShowAds();
|
|
|
Constants.UpdateMessage();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region Events
|
|
|
|
|
|
|
|
|
private void openToolStripMenuItemOpenNStream_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
var frm = new NetworkStreamForm();
|
|
|
if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
var scraper = VideoScraperBase.GetScraper(frm.Url);
|
|
|
var movie = new Movie
|
|
|
{
|
|
|
Description = frm.Url,
|
|
|
Url = frm.Url,
|
|
|
Name = frm.Url,
|
|
|
ReleaseDate =DateTime.Now
|
|
|
};
|
|
|
movie.Links.Add(new MovieLink
|
|
|
{
|
|
|
DowloadUrl = frm.Url,
|
|
|
Parent = movie,
|
|
|
LinkTitle = frm.Url,
|
|
|
PageSiteID = scraper.Title,
|
|
|
DownloadSiteID = scraper.Title,
|
|
|
});
|
|
|
this.viewerWindow.LoadVideo(movie, true);
|
|
|
}
|
|
|
catch(Exception ex) {
|
|
|
KryptonMessageBox.Show(this, ex.Message,
|
|
|
Constants.AppTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
private void toolStripButtonShowNew_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
var lang = ((ToolStripItem)sender).Tag != null ? ((ToolStripItem)sender).Tag.ToString() : null;
|
|
|
this.currentView.TriggerSearch(new SearchParameters { Query = "_new", Language = lang });
|
|
|
}
|
|
|
|
|
|
|
|
|
private void downloadsToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
ViewWindow.DownloadForm.ShowMe();
|
|
|
}
|
|
|
|
|
|
private void custom2_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
IView futureView = null;
|
|
|
if (sender == this.headerView)
|
|
|
futureView = this.viewerWindow;
|
|
|
else if (sender == this.headerBrowse)
|
|
|
futureView = this.browseWindow;
|
|
|
else if (sender == this.headerFavourite)
|
|
|
futureView = this.favouriteWindow;
|
|
|
|
|
|
if (currentView == futureView)
|
|
|
return;
|
|
|
|
|
|
ChangeView(futureView);
|
|
|
|
|
|
}
|
|
|
|
|
|
private void searchPanelWidget_Search(object sender, SearchEventArgs e)
|
|
|
{
|
|
|
this.currentView.TriggerSearch(e.Params);
|
|
|
}
|
|
|
|
|
|
private void quitToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
QuitApp();
|
|
|
}
|
|
|
|
|
|
private void playToolStripMenuItem_DropDownOpening(object sender, EventArgs e)
|
|
|
{
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
private void gotoWebsiteToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
Process.Start(UrlConstants.WebsiteUrl);
|
|
|
}
|
|
|
|
|
|
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
new AboutBox().ShowDialog();
|
|
|
}
|
|
|
|
|
|
private void MainForm_Load(object sender, EventArgs e)
|
|
|
{
|
|
|
if (LicenseManager.UsageMode != LicenseUsageMode.Designtime)
|
|
|
{
|
|
|
LogManager.Log("Starting application");
|
|
|
var movies = ClientDataService.Single.GetAllMovies(new SearchParameters() {
|
|
|
Language = ClientDataService.Single.Settings.DefaultLanguage
|
|
|
});
|
|
|
this.viewerWindow.Initialize(movies);
|
|
|
|
|
|
}
|
|
|
this.viewerWindow.Focus();
|
|
|
StartUpdateCheckThread(true);
|
|
|
}
|
|
|
|
|
|
private void MainForm_KeyDown(object sender, KeyEventArgs e)
|
|
|
{
|
|
|
if (e.Control && e.KeyCode == Keys.S)
|
|
|
{
|
|
|
if (!this.fakeView.Visible)
|
|
|
{
|
|
|
this.Hide();
|
|
|
this.fakeView.ShowDialog();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.Show();
|
|
|
this.fakeView.Hide();
|
|
|
}
|
|
|
e.SuppressKeyPress = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void reportIssueToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
|
|
|
Process.Start(UrlConstants.ReportIssueUrl);
|
|
|
}
|
|
|
|
|
|
private void helpToolStripMenuItem1_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
Process.Start(UrlConstants.HelpUrl);
|
|
|
}
|
|
|
|
|
|
public void OnScrapVideoDetailsCompleted(MovieLink link)
|
|
|
{
|
|
|
throw new NotImplementedException();
|
|
|
}
|
|
|
|
|
|
private void optionsToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
new Options().ShowDialog(this);
|
|
|
}
|
|
|
|
|
|
private void timerDB_Tick(object sender, EventArgs e)
|
|
|
{
|
|
|
StartUpdateCheckThread(false);
|
|
|
}
|
|
|
|
|
|
private void toolStripMenuItem4_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
CheckMovieDBUpdate(true);
|
|
|
}
|
|
|
|
|
|
private void openToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
ShowApp();
|
|
|
}
|
|
|
|
|
|
private void gotoWebsiteToolStripMenuItem1_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
Process.Start(UrlConstants.WebsiteUrl);
|
|
|
}
|
|
|
|
|
|
private void checkForNewMoviesToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
CheckMovieDBUpdate(true);
|
|
|
}
|
|
|
|
|
|
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
QuitApp();
|
|
|
}
|
|
|
|
|
|
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
|
|
|
{
|
|
|
this.viewerWindow.StopPlay();
|
|
|
this.Hide();
|
|
|
e.Cancel = true;
|
|
|
}
|
|
|
|
|
|
private void MainForm_Resize(object sender, EventArgs e)
|
|
|
{
|
|
|
if (FormWindowState.Minimized == this.WindowState)
|
|
|
{
|
|
|
this.Hide();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
|
|
|
{
|
|
|
if (e.Button == System.Windows.Forms.MouseButtons.Left)
|
|
|
ShowApp();
|
|
|
|
|
|
}
|
|
|
TraceForm traceForm;
|
|
|
private void traceToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
if (traceForm == null || traceForm.IsDisposed)
|
|
|
traceForm = new TraceForm();
|
|
|
traceForm.Show();
|
|
|
}
|
|
|
|
|
|
protected override void WndProc(ref Message m)
|
|
|
{
|
|
|
if (m.Msg == NativeMethods.WM_SHOWME)
|
|
|
ShowApp();
|
|
|
base.WndProc(ref m);
|
|
|
}
|
|
|
|
|
|
private void QuitApp()
|
|
|
{
|
|
|
this.FormClosing -= new FormClosingEventHandler(MainForm_FormClosing);
|
|
|
ViewWindow.DownloadForm.Dispose();
|
|
|
Application.Exit();
|
|
|
}
|
|
|
|
|
|
private void toolStripButtonShare_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
Process.Start("https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fwww.filmkhoj.com");
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|