private void StartSync()
{
SetSyncControlProperties(true);
var syncThread = new Thread(() =>
{
if (TraktSettings.AccountStatus != ConnectionState.Connected)
{
// stop sync
SetSyncControlProperties(false);
TraktSettings.AccountStatus = ConnectionState.Pending;
return;
}
TraktLogger.Info("Library and Playback Sync started for all enabled plugins");
// get data from online and store in cache so its readily available for plugin sync
// data will also be used in user activity feed on the dashboard
if (!TraktCache.RefreshData())
return;
foreach (var item in clbPlugins.CheckedItems)
{
try
{
switch (item.ToString())
{
case "Moving Pictures":
var movingPictures = new MovingPictures(TraktSettings.MovingPictures);
movingPictures.SyncLibrary();
movingPictures.SyncProgress();
break;
case "MP-TVSeries":
var tvSeries = new TVSeries(TraktSettings.TVSeries);
tvSeries.SyncLibrary();
tvSeries.SyncProgress();
break;
case "My Videos":
var myVideos = new MyVideos(TraktSettings.MyVideos);
myVideos.SyncLibrary();
myVideos.SyncProgress();
break;
case "My Films":
var myFilms = new MyFilmsHandler(TraktSettings.MyFilms);
myFilms.SyncLibrary();
myFilms.SyncProgress();
break;
}
}
catch (Exception ex)
{
TraktLogger.Error("Error synchronising library, Plugin = '{0}', Error = '{1}'", item.ToString(), ex.Message);
continue;
}
}
// save user activity cache
TraktCache.Save();
TraktLogger.Info("Library and Playback Sync completed for all enabled plugins");
SetSyncControlProperties(false);
if (SilentMode || AutoCloseAfterSync)
{
CloseConfig();
}
})
{
Name = "Sync",
IsBackground = true
};
syncThread.Start();
}