internal static void SaveSettings(bool savePersistedCache = true)
{
TraktLogger.Info("Saving settings");
using (Settings xmlwriter = new MPSettings())
{
xmlwriter.SetValue(cTrakt, cSettingsVersion, SettingsVersion);
xmlwriter.SetValue(cTrakt, cUsername, Username);
xmlwriter.SetValue(cTrakt, cPassword, Password.Encrypt(cGuid + (UseCompNameOnPassKey ? System.Environment.MachineName : string.Empty)));
xmlwriter.SetValue(cTrakt, cUserLogins, UserLogins.Encrypt(cGuid + (UseCompNameOnPassKey ? System.Environment.MachineName : string.Empty)).ToJSON());
xmlwriter.SetValue(cTrakt, cMovingPictures, MovingPictures);
xmlwriter.SetValue(cTrakt, cTVSeries, TVSeries);
xmlwriter.SetValue(cTrakt, cMyVideos, MyVideos);
xmlwriter.SetValue(cTrakt, cMyFilms, MyFilms);
xmlwriter.SetValue(cTrakt, cOnlineVideos, OnlineVideos);
xmlwriter.SetValue(cTrakt, cMyTVRecordings, MyTVRecordings);
xmlwriter.SetValue(cTrakt, cMyTVLive, MyTVLive);
xmlwriter.SetValue(cTrakt, cArgusRecordings, ArgusRecordings);
xmlwriter.SetValue(cTrakt, cArgusTVLive, ArgusTVLive);
xmlwriter.SetValueAsBool(cTrakt, cKeepTraktLibraryClean, KeepTraktLibraryClean);
xmlwriter.SetValue(cTrakt, cBlockedFilenames, BlockedFilenames.ToJSON());
xmlwriter.SetValue(cTrakt, cBlockedFolders, BlockedFolders.ToJSON());
//TODOxmlwriter.SetValue(cTrakt, cSkippedMovies, SkippedMovies.ToJSON());
//TODOxmlwriter.SetValue(cTrakt, cAlreadyExistMovies, AlreadyExistMovies.ToJSON());
xmlwriter.SetValue(cTrakt, cSyncTimerLength, SyncTimerLength);
xmlwriter.SetValue(cTrakt, cSyncStartDelay, SyncStartDelay);
xmlwriter.SetValue(cTrakt, cTrendingMoviesDefaultLayout, TrendingMoviesDefaultLayout);
xmlwriter.SetValue(cTrakt, cTrendingShowsDefaultLayout, TrendingShowsDefaultLayout);
xmlwriter.SetValue(cTrakt, cPopularMoviesDefaultLayout, PopularMoviesDefaultLayout);
xmlwriter.SetValue(cTrakt, cPopularShowsDefaultLayout, PopularShowsDefaultLayout);
xmlwriter.SetValue(cTrakt, cRecommendedMoviesDefaultLayout, RecommendedMoviesDefaultLayout);
xmlwriter.SetValue(cTrakt, cRecommendedShowsDefaultLayout, RecommendedShowsDefaultLayout);
xmlwriter.SetValue(cTrakt, cWatchListMoviesDefaultLayout, WatchListMoviesDefaultLayout);
xmlwriter.SetValue(cTrakt, cWatchListShowsDefaultLayout, WatchListShowsDefaultLayout);
xmlwriter.SetValue(cTrakt, cWatchListEpisodesDefaultLayout, WatchListEpisodesDefaultLayout);
xmlwriter.SetValue(cTrakt, cRelatedMoviesDefaultLayout, RelatedMoviesDefaultLayout);
xmlwriter.SetValue(cTrakt, cRelatedShowsDefaultLayout, RelatedShowsDefaultLayout);
xmlwriter.SetValue(cTrakt, cListsDefaultLayout, ListsDefaultLayout);
xmlwriter.SetValue(cTrakt, cListItemsDefaultLayout, ListItemsDefaultLayout);
xmlwriter.SetValue(cTrakt, cShowSeasonsDefaultLayout, ShowSeasonsDefaultLayout);
xmlwriter.SetValue(cTrakt, cSeasonEpisodesDefaultLayout, SeasonEpisodesDefaultLayout);
xmlwriter.SetValue(cTrakt, cDefaultCalendarView, DefaultCalendarView);
xmlwriter.SetValue(cTrakt, cDefaultCalendarStartDate, DefaultCalendarStartDate);
xmlwriter.SetValueAsBool(cTrakt, cDownloadFullSizeFanart, DownloadFullSizeFanart);
xmlwriter.SetValueAsBool(cTrakt, cDownloadFanart, DownloadFanart);
xmlwriter.SetValue(cTrakt, cWebRequestCacheMinutes, WebRequestCacheMinutes);
xmlwriter.SetValue(cTrakt, cWebRequestTimeout, WebRequestTimeout);
xmlwriter.SetValueAsBool(cTrakt, cGetFollowerRequestsOnStartup, GetFollowerRequestsOnStartup);
xmlwriter.SetValueAsBool(cTrakt, cMovingPicturesCategories, MovingPicturesCategories);
xmlwriter.SetValueAsBool(cTrakt, cMovingPicturesFilters, MovingPicturesFilters);
xmlwriter.SetValueAsBool(cTrakt, cCalendarHideTVShowsInWatchList, CalendarHideTVShowsInWatchList);
xmlwriter.SetValueAsBool(cTrakt, cHideWatchedRelatedMovies, HideWatchedRelatedMovies);
xmlwriter.SetValueAsBool(cTrakt, cHideWatchedRelatedShows, HideWatchedRelatedShows);
xmlwriter.SetValueAsBool(cTrakt, cHideSpoilersOnShouts, HideSpoilersOnShouts);
xmlwriter.SetValueAsBool(cTrakt, cSyncRatings, SyncRatings);
xmlwriter.SetValueAsBool(cTrakt, cShowRateDialogOnWatched, ShowRateDialogOnWatched);
xmlwriter.SetValue(cTrakt, cDashboardActivityPollInterval, DashboardActivityPollInterval);
xmlwriter.SetValue(cTrakt, cDashboardTrendingPollInterval, DashboardTrendingPollInterval);
xmlwriter.SetValue(cTrakt, cDashboardLoadDelay, DashboardLoadDelay);
xmlwriter.SetValueAsBool(cTrakt, cDashboardMovieTrendingActive, DashboardMovieTrendingActive);
xmlwriter.SetValue(cTrakt, cMovieRecommendationGenre, MovieRecommendationGenre);
xmlwriter.SetValueAsBool(cTrakt, cMovieRecommendationHideCollected, MovieRecommendationHideCollected);
xmlwriter.SetValueAsBool(cTrakt, cMovieRecommendationHideWatchlisted, MovieRecommendationHideWatchlisted);
xmlwriter.SetValue(cTrakt, cMovieRecommendationStartYear, MovieRecommendationStartYear);
xmlwriter.SetValue(cTrakt, cMovieRecommendationEndYear, MovieRecommendationEndYear);
xmlwriter.SetValue(cTrakt, cShowRecommendationGenre, ShowRecommendationGenre);
xmlwriter.SetValueAsBool(cTrakt, cShowRecommendationHideCollected, ShowRecommendationHideCollected);
xmlwriter.SetValueAsBool(cTrakt, cShowRecommendationHideWatchlisted, ShowRecommendationHideWatchlisted);
xmlwriter.SetValue(cTrakt, cShowRecommendationStartYear, ShowRecommendationStartYear);
xmlwriter.SetValue(cTrakt, cShowRecommendationEndYear, ShowRecommendationEndYear);
xmlwriter.SetValue(cTrakt, cSortByRecommendedMovies, SortByRecommendedMovies.ToJSON());
xmlwriter.SetValue(cTrakt, cSortByRecommendedShows, SortByRecommendedShows.ToJSON());
xmlwriter.SetValue(cTrakt, cSortByTrendingMovies, SortByTrendingMovies.ToJSON());
xmlwriter.SetValue(cTrakt, cSortByTrendingShows, SortByTrendingShows.ToJSON());
xmlwriter.SetValue(cTrakt, cSortByPopularMovies, SortByPopularMovies.ToJSON());
xmlwriter.SetValue(cTrakt, cSortByPopularShows, SortByPopularShows.ToJSON());
xmlwriter.SetValue(cTrakt, cSortByWatchListMovies, SortByWatchListMovies.ToJSON());
xmlwriter.SetValue(cTrakt, cSortByWatchListShows, SortByWatchListShows.ToJSON());
xmlwriter.SetValue(cTrakt, cSortByAnticipatedMovies, SortByAnticipatedMovies.ToJSON());
xmlwriter.SetValue(cTrakt, cSortByAnticipatedShows, SortByAnticipatedShows.ToJSON());
xmlwriter.SetValueAsBool(cTrakt, cEnableJumpToForTVShows, EnableJumpToForTVShows);
xmlwriter.SetValueAsBool(cTrakt, cMyFilmsCategories, MyFilmsCategories);
xmlwriter.SetValueAsBool(cTrakt, cSortSeasonsAscending, SortSeasonsAscending);
xmlwriter.SetValueAsBool(cTrakt, cRememberLastSelectedActivity, RememberLastSelectedActivity);
xmlwriter.SetValueAsBool(cTrakt, cShowRateDlgForPlaylists, ShowRateDlgForPlaylists);
xmlwriter.SetValueAsBool(cTrakt, cTrendingMoviesHideWatched, TrendingMoviesHideWatched);
xmlwriter.SetValueAsBool(cTrakt, cTrendingMoviesHideWatchlisted, TrendingMoviesHideWatchlisted);
xmlwriter.SetValueAsBool(cTrakt, cTrendingMoviesHideCollected, TrendingMoviesHideCollected);
xmlwriter.SetValueAsBool(cTrakt, cTrendingMoviesHideRated, TrendingMoviesHideRated);
xmlwriter.SetValueAsBool(cTrakt, cTrendingShowsHideWatched, TrendingShowsHideWatched);
xmlwriter.SetValueAsBool(cTrakt, cTrendingShowsHideWatchlisted, TrendingShowsHideWatchlisted);
xmlwriter.SetValueAsBool(cTrakt, cTrendingShowsHideCollected, TrendingShowsHideCollected);
xmlwriter.SetValueAsBool(cTrakt, cTrendingShowsHideRated, TrendingShowsHideRated);
xmlwriter.SetValueAsBool(cTrakt, cPopularMoviesHideWatched, PopularMoviesHideWatched);
xmlwriter.SetValueAsBool(cTrakt, cPopularMoviesHideWatchlisted, PopularMoviesHideWatchlisted);
xmlwriter.SetValueAsBool(cTrakt, cPopularMoviesHideCollected, PopularMoviesHideCollected);
xmlwriter.SetValueAsBool(cTrakt, cPopularMoviesHideRated, PopularMoviesHideRated);
xmlwriter.SetValueAsBool(cTrakt, cPopularShowsHideWatched, PopularShowsHideWatched);
xmlwriter.SetValueAsBool(cTrakt, cPopularShowsHideWatchlisted, PopularShowsHideWatchlisted);
xmlwriter.SetValueAsBool(cTrakt, cPopularShowsHideCollected, PopularShowsHideCollected);
xmlwriter.SetValueAsBool(cTrakt, cPopularShowsHideRated, PopularShowsHideRated);
xmlwriter.SetValueAsBool(cTrakt, cAnticipatedMoviesHideWatchlisted, AnticipatedMoviesHideWatchlisted);
xmlwriter.SetValueAsBool(cTrakt, cAnticipatedShowsHideWatchlisted, AnticipatedShowsHideWatchlisted);
xmlwriter.SetValue(cTrakt, cDefaultNetworkView, DefaultNetworkView);
xmlwriter.SetValue(cTrakt, cRecentWatchedMoviesDefaultLayout, RecentWatchedMoviesDefaultLayout);
xmlwriter.SetValue(cTrakt, cRecentWatchedEpisodesDefaultLayout, RecentWatchedEpisodesDefaultLayout);
xmlwriter.SetValue(cTrakt, cRecentAddedMoviesDefaultLayout, RecentAddedMoviesDefaultLayout);
xmlwriter.SetValue(cTrakt, cRecentAddedEpisodesDefaultLayout, RecentAddedEpisodesDefaultLayout);
xmlwriter.SetValueAsBool(cTrakt, cSyncLibrary, SyncLibrary);
xmlwriter.SetValue(cTrakt, cSearchMoviesDefaultLayout, SearchMoviesDefaultLayout);
xmlwriter.SetValue(cTrakt, cSearchShowsDefaultLayout, SearchShowsDefaultLayout);
xmlwriter.SetValue(cTrakt, cSearchEpisodesDefaultLayout, SearchEpisodesDefaultLayout);
xmlwriter.SetValue(cTrakt, cSearchPeopleDefaultLayout, SearchPeopleDefaultLayout);
xmlwriter.SetValue(cTrakt, cSearchUsersDefaultLayout, SearchUsersDefaultLayout);
xmlwriter.SetValue(cTrakt, cSearchTypes, SearchTypes);
xmlwriter.SetValueAsBool(cTrakt, cShowSearchResultsBreakdown, ShowSearchResultsBreakdown);
xmlwriter.SetValue(cTrakt, cMaxSearchResults, MaxSearchResults);
xmlwriter.SetValueAsBool(cTrakt, cFilterTrendingOnDashboard, FilterTrendingOnDashboard);
xmlwriter.SetValueAsBool(cTrakt, cIgnoreWatchedPercentOnDVD, IgnoreWatchedPercentOnDVD);
xmlwriter.SetValue(cTrakt, cActivityStreamView, ActivityStreamView);
xmlwriter.SetValue(cTrakt, cLastSyncActivities, LastSyncActivities.ToJSON());
xmlwriter.SetValue(cTrakt, cSyncBatchSize, SyncBatchSize);
xmlwriter.SetValueAsBool(cTrakt, cUseCompNameOnPassKey, UseCompNameOnPassKey);
xmlwriter.SetValueAsBool(cTrakt, cSyncPlayback, SyncPlayback);
xmlwriter.SetValue(cTrakt, cSyncResumeDelta, SyncResumeDelta);
xmlwriter.SetValueAsBool(cTrakt, cSyncPlaybackOnEnterPlugin, SyncPlaybackOnEnterPlugin);
xmlwriter.SetValue(cTrakt, cSyncPlaybackCacheExpiry, SyncPlaybackCacheExpiry);
xmlwriter.SetValue(cTrakt, cMaxTrendingMoviesRequest, MaxTrendingMoviesRequest);
xmlwriter.SetValue(cTrakt, cMaxTrendingShowsRequest, MaxTrendingShowsRequest);
xmlwriter.SetValue(cTrakt, cMaxPopularMoviesRequest, MaxPopularMoviesRequest);
xmlwriter.SetValue(cTrakt, cMaxPopularShowsRequest, MaxPopularShowsRequest);
xmlwriter.SetValue(cTrakt, cMaxAnticipatedMoviesRequest, MaxAnticipatedMoviesRequest);
xmlwriter.SetValue(cTrakt, cMaxAnticipatedShowsRequest, MaxAnticipatedShowsRequest);
xmlwriter.SetValueAsBool(cTrakt, cUseSSL, UseSSL);
xmlwriter.SetValue(cTrakt, cLastListActivities, LastListActivities.ToJSON());
xmlwriter.SetValue(cTrakt, cMaxRelatedMoviesRequest, MaxRelatedMoviesRequest);
xmlwriter.SetValue(cTrakt, cMaxRelatedMoviesUnWatchedRequest, MaxRelatedMoviesUnWatchedRequest);
xmlwriter.SetValue(cTrakt, cMaxRelatedShowsRequest, MaxRelatedShowsRequest);
xmlwriter.SetValue(cTrakt, cMaxRelatedShowsUnWatchedRequest, MaxRelatedShowsUnWatchedRequest);
xmlwriter.SetValue(cTrakt, cMaxUserWatchedEpisodesRequest, MaxUserWatchedEpisodesRequest);
xmlwriter.SetValue(cTrakt, cMaxUserWatchedMoviesRequest, MaxUserWatchedMoviesRequest);
xmlwriter.SetValue(cTrakt, cMaxUserCommentsRequest, MaxUserCommentsRequest);
xmlwriter.SetValue(cTrakt, cDashboardActivityFilter, DashboardActivityFilter.ToJSON());
xmlwriter.SetValueAsBool(cTrakt, cSkipMoviesWithNoIdsOnSync, SkipMoviesWithNoIdsOnSync);
xmlwriter.SetValue(cTrakt, cPersonMovieCreditsDefaultLayout, PersonMovieCreditsDefaultLayout);
xmlwriter.SetValue(cTrakt, cPersonShowCreditsDefaultLayout, PersonShowCreditsDefaultLayout);
xmlwriter.SetValue(cTrakt, cSortByCreditMovies, SortByCreditMovies.ToJSON());
xmlwriter.SetValue(cTrakt, cSortByCreditShows, SortByCreditShows.ToJSON());
xmlwriter.SetValueAsBool(cTrakt, cCreditMoviesHideWatched, CreditMoviesHideWatched);
xmlwriter.SetValueAsBool(cTrakt, cCreditMoviesHideWatchlisted, CreditMoviesHideWatchlisted);
xmlwriter.SetValueAsBool(cTrakt, cCreditMoviesHideCollected, CreditMoviesHideCollected);
xmlwriter.SetValueAsBool(cTrakt, cCreditMoviesHideRated, CreditMoviesHideRated);
xmlwriter.SetValueAsBool(cTrakt, cCreditShowsHideWatched, CreditShowsHideWatched);
xmlwriter.SetValueAsBool(cTrakt, cCreditShowsHideWatchlisted, CreditShowsHideWatchlisted);
xmlwriter.SetValueAsBool(cTrakt, cCreditShowsHideCollected, CreditShowsHideCollected);
xmlwriter.SetValueAsBool(cTrakt, cCreditShowsHideRated, CreditShowsHideRated);
xmlwriter.SetValue(cTrakt, cCreditsMovieDefaultLayout, CreditsMovieDefaultLayout);
xmlwriter.SetValue(cTrakt, cCreditsShowDefaultLayout, CreditsShowDefaultLayout);
xmlwriter.SetValue(cTrakt, cAnticipatedMoviesDefaultLayout, AnticipatedMoviesDefaultLayout);
xmlwriter.SetValue(cTrakt, cAnticipatedShowsDefaultLayout, AnticipatedShowsDefaultLayout);
xmlwriter.SetValueAsBool(cTrakt, cParentalControlsEnabled, ParentalControlsEnabled);
xmlwriter.SetValue(cTrakt, cParentalControlsPinCode, ParentalControlsPinCode);
xmlwriter.SetValueAsBool(cTrakt, cParentalIgnoreAfterEnabled, ParentalIgnoreAfterEnabled);
xmlwriter.SetValue(cTrakt, cParentalIgnoreAfterTime, ParentalIgnoreAfterTime);
xmlwriter.SetValueAsBool(cTrakt, cParentalIgnoreMovieRatingEnabled, ParentalIgnoreMovieRatingEnabled);
xmlwriter.SetValueAsBool(cTrakt, cParentalIgnoreShowRatingEnabled, ParentalIgnoreShowRatingEnabled);
xmlwriter.SetValue(cTrakt, cParentalIgnoreMovieRating, ParentalIgnoreMovieRating);
xmlwriter.SetValue(cTrakt, cParentalIgnoreShowRating, ParentalIgnoreShowRating);
xmlwriter.SetValue(cTrakt, cTmdbConfiguration, TmdbConfiguration.ToJSON());
xmlwriter.SetValue(cTrakt, cTmdbConfigurationAge, TmdbConfigurationAge);
xmlwriter.SetValue(cTrakt, cTmdbPreferredBackdropSize, TmdbPreferredBackdropSize);
xmlwriter.SetValue(cTrakt, cTmdbPreferredPosterSize, TmdbPreferredPosterSize);
xmlwriter.SetValue(cTrakt, cTmdbPreferredEpisodeThumbSize, TmdbPreferredEpisodeThumbSize);
xmlwriter.SetValue(cTrakt, cTmdbPreferredHeadshotSize, TmdbPreferredHeadshotSize);
xmlwriter.SetValue(cTrakt, cTmdbShowImageMaxCacheAge, TmdbShowImageMaxCacheAge);
xmlwriter.SetValue(cTrakt, cTmdbMovieImageMaxCacheAge, TmdbMovieImageMaxCacheAge);
xmlwriter.SetValue(cTrakt, cTmdbSeasonImageMaxCacheAge, TmdbSeasonImageMaxCacheAge);
xmlwriter.SetValue(cTrakt, cTmdbEpisodeImageMaxCacheAge, TmdbEpisodeImageMaxCacheAge);
xmlwriter.SetValue(cTrakt, cTmdbPersonImageMaxCacheAge, TmdbPersonImageMaxCacheAge);
xmlwriter.SetValue(cTrakt, cTmdbPreferredImageLanguage, TmdbPreferredImageLanguage);
}
Settings.SaveCache();
if (savePersistedCache)
{
TraktLogger.Info("Saving persistent file cache");
TraktCache.SaveFileCache(cLastActivityFileCache, LastActivityLoad.ToJSON());
TraktCache.SaveFileCache(cLastStatisticsFileCache, LastStatistics.ToJSON());
TraktCache.SaveFileCache(cLastUserProfileFileCache, LastUserProfile.ToJSON());
TraktCache.SaveFileCache(cLastTrendingShowFileCache, (LastTrendingShows ?? "[]".FromJSONArray<TraktShowTrending>()).ToList().ToJSON());
TraktCache.SaveFileCache(cLastTrendingMovieFileCache, (LastTrendingMovies ?? "[]".FromJSONArray<TraktMovieTrending>()).ToList().ToJSON());
// save user activity cache
TraktCache.Save();
}
}