public override bool Init()
{
TraktLogger.Info("Starting Trakt plugin. Version = '{0}', Date = '{1}'", TraktSettings.Version, TraktSettings.BuildDate);
TraktSettings.PerformMaintenance();
TraktSettings.LoadSettings();
// Load plugins we want to sync
LoadPluginHandlers();
TraktLogger.Debug("Adding MediaPortal event handlers");
g_Player.PlayBackChanged += new g_Player.ChangedHandler(g_Player_PlayBackChanged);
g_Player.PlayBackEnded += new g_Player.EndedHandler(g_Player_PlayBackEnded);
g_Player.PlayBackStarted += new g_Player.StartedHandler(g_Player_PlayBackStarted);
g_Player.PlayBackStopped += new g_Player.StoppedHandler(g_Player_PlayBackStopped);
// Listen to this event to detect skin\language changes in GUI
GUIWindowManager.OnDeActivateWindow += new GUIWindowManager.WindowActivationHandler(GUIWindowManager_OnDeActivateWindow);
GUIWindowManager.OnActivateWindow += new GUIWindowManager.WindowActivationHandler(GUIWindowManager_OnActivateWindow);
GUIWindowManager.Receivers += new SendMessageHandler(GUIWindowManager_Receivers);
// Resume/Standby Windows Event
Microsoft.Win32.SystemEvents.PowerModeChanged += new Microsoft.Win32.PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);
// Initialise translations
Translation.Init();
// Initialise skin settings
TraktSkinSettings.Init();
// Initialise genres
TraktGenres.Init();
// Initialise Extension Settings
GUIExtensionSettings.Init();
// Initialise Skin Dashboard
DashBoard.Init();
// Initialise TMDb Cache
TmdbCache.Init();
// Load main skin window
// this is a launching pad to all other windows
string xmlSkin = GUIGraphicsContext.Skin + @"\Trakt.xml";
TraktLogger.Info("Loading main skin window. Filename = '{0}'", xmlSkin);
bool loadResult = Load(xmlSkin);
// Sync Libaries now and periodically
syncLibraryTimer = new Timer(new TimerCallback((o) => { SyncLibrary(); }), null, TraktSettings.SyncStartDelay, TraktSettings.SyncTimerLength * 3600000);
SyncPlayback();
return loadResult;
}