コード例 #1
0
        /// <summary>
        /// Loads all of the settings.
        /// </summary>
        /// <param name="settings">The settings.</param>
        /// <param name="personalInformation">The personal information.</param>
        public void Load(BackpackPlannerSettings settings, PersonalInformation personalInformation)
        {
            // TODO: put these in a LoadMetaSettings() method

            settings.MetaSettings.FirstRun = GetBoolean(MetaSettings.FirstRunPreferenceKey, settings.MetaSettings.FirstRun);

            // TODO: put these in a LoadSettings() method

            settings.ConnectGooglePlayServices = GetBoolean(BackpackPlannerSettings.ConnectGooglePlayServicesPreferenceKey, settings.ConnectGooglePlayServices);

            // NOTE: have to read the unit system/currency settings first in order
            // to properly interpret the rest of the settings

            string unitSystemPreference = GetString(BackpackPlannerSettings.UnitSystemPreferenceKey, settings.Units.ToString());

            UnitSystem unitSystem;
            if(Enum.TryParse(unitSystemPreference, out unitSystem)) {
                settings.Units = unitSystem;
            } else {
                Logger.Error("Error parsing unit system preference!");
            }

            string currencyPreference = GetString(BackpackPlannerSettings.CurrencyPreferenceKey, settings.Currency.ToString());

            Currency currency;
            if(Enum.TryParse(currencyPreference, out currency)) {
                settings.Currency = currency;
            } else {
                Logger.Error("Error parsing currency preference!");
            }

            // TODO: put these in a LoadPersonalInformation() method

            personalInformation.Name = GetString(PersonalInformation.NamePreferenceKey, personalInformation.Name);

            string birthDatePreference = GetString(PersonalInformation.DateOfBirthPreferenceKey, personalInformation.DateOfBirth?.ToString() ?? string.Empty);

            if(!string.IsNullOrWhiteSpace(birthDatePreference)) {
                try {
                    personalInformation.DateOfBirth = Convert.ToDateTime(birthDatePreference);
                } catch(FormatException) {
                    Logger.Error("Error parsing date of birth preference!");
                }
            }

            string userSexPreference = GetString(PersonalInformation.UserSexPreferenceKey, personalInformation.Sex.ToString());

            UserSex userSex;
            if(Enum.TryParse(userSexPreference, out userSex)) {
                personalInformation.Sex = userSex;
            } else {
                Logger.Error("Error parsing user sex preference!");
            }

            personalInformation.HeightInUnits = GetFloat(PersonalInformation.HeightPreferenceKey, (float)personalInformation.HeightInUnits);

            personalInformation.WeightInUnits = GetFloat(PersonalInformation.WeightPreferenceKey, (float)personalInformation.WeightInUnits);
        }
コード例 #2
0
        public void PersonalInformation_WeightInGrams_Default()
        {
            // Arrange
            PersonalInformation personalInformation = new PersonalInformation(MockUtil.FakeSettingsManager(), MockUtil.FakeSettings());

            // Act

            // Assert
            Assert.AreEqual(0, personalInformation.WeightInGrams);
        }
コード例 #3
0
        public void PersonalInformation_Sex_Default()
        {
            // Arrange
            PersonalInformation personalInformation = new PersonalInformation(MockUtil.FakeSettingsManager(), MockUtil.FakeSettings());

            // Act

            // Assert
            Assert.AreEqual(UserSex.Undeclared, personalInformation.Sex);
        }
コード例 #4
0
        public void PersonalInformation_HeightInCm_Negative()
        {
            // Arrange
            PersonalInformation personalInformation = new PersonalInformation(MockUtil.FakeSettingsManager(), MockUtil.FakeSettings());

            // Act
            personalInformation.HeightInCm = -1;

            // Assert
            Assert.AreEqual(0, personalInformation.HeightInCm);
        }
コード例 #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BackpackPlannerState" /> class.
        /// </summary>
        /// <param name="platformHockeyAppManager">The platform HockeyApp manager.</param>
        /// <param name="platformSettingsManager">The platform settings manager.</param>
        /// <param name="platformPlayServicesManager">The platform google play services manager.</param>
        /// <param name="platformDatabaseSyncManager">The platform database sync manager.</param>
        /// <param name="sqlitePlatform">The SQLite platform.</param>
        public BackpackPlannerState(IHockeyAppManager platformHockeyAppManager, SettingsManager platformSettingsManager, PlayServicesManager platformPlayServicesManager, DatabaseSyncManager platformDatabaseSyncManager, ISQLitePlatform sqlitePlatform)
        {
            if(null == platformHockeyAppManager) {
                throw new ArgumentNullException(nameof(platformHockeyAppManager));
            }

            if(null == platformSettingsManager) {
                throw new ArgumentNullException(nameof(platformSettingsManager));
            }

            if(null == platformPlayServicesManager) {
                throw new ArgumentNullException(nameof(platformPlayServicesManager));
            }

            if(null == platformDatabaseSyncManager) {
                throw new ArgumentNullException(nameof(platformDatabaseSyncManager));
            }

            if(null == sqlitePlatform) {
                throw new ArgumentNullException(nameof(sqlitePlatform));
            }

            PlatformHockeyAppManager = platformHockeyAppManager;

            PlatformSettingsManager = platformSettingsManager;
            Settings = new BackpackPlannerSettings(PlatformSettingsManager);

            DatabaseState.SQLitePlatform = sqlitePlatform;

            PlatformPlayServicesManager = platformPlayServicesManager;
            PlatformDatabaseSyncManager = platformDatabaseSyncManager;

            PersonalInformation = new PersonalInformation(PlatformSettingsManager, Settings);
        }
コード例 #6
0
        /// <summary>
        /// Updates a setting from the prferences.
        /// </summary>
        /// <param name="key">The setting key.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="personalInformation">The personal information.</param>
        public void UpdateFromPreferences(string key, BackpackPlannerSettings settings, PersonalInformation personalInformation)
        {
            switch(key)
            {
            // TODO: put these in an UpdateMetaSettingsFromPreferences() method
            case MetaSettings.FirstRunPreferenceKey:
                settings.MetaSettings.FirstRun = GetBoolean(MetaSettings.FirstRunPreferenceKey, settings.MetaSettings.FirstRun);
                break;
            // TODO: put these in an UpdateSettingsFromPreferences() method
            case BackpackPlannerSettings.ConnectGooglePlayServicesPreferenceKey:
                settings.ConnectGooglePlayServices = GetBoolean(BackpackPlannerSettings.ConnectGooglePlayServicesPreferenceKey, settings.ConnectGooglePlayServices);
                break;
            case BackpackPlannerSettings.UnitSystemPreferenceKey:
                string unitSystemPreference = GetString(BackpackPlannerSettings.UnitSystemPreferenceKey, settings.Units.ToString());

                UnitSystem unitSystem;
                if(Enum.TryParse(unitSystemPreference, out unitSystem)) {
                    settings.Units = unitSystem;
                } else {
                    Logger.Error("Error parsing unit system preference!");
                }
                break;
            case BackpackPlannerSettings.CurrencyPreferenceKey:
                string currencyPreference = GetString(BackpackPlannerSettings.CurrencyPreferenceKey, settings.Currency.ToString());

                Currency currency;
                if(Enum.TryParse(currencyPreference, out currency)) {
                    settings.Currency = currency;
                } else {
                    Logger.Error("Error parsing currency preference!");
                }
                break;
            // TODO: put these in an UpdatePersonalInformationFromPreferences() method
            case PersonalInformation.NamePreferenceKey:
                personalInformation.Name = GetString(PersonalInformation.NamePreferenceKey, personalInformation.Name);
                break;
            case PersonalInformation.DateOfBirthPreferenceKey:
                string birthDatePreference = GetString(PersonalInformation.DateOfBirthPreferenceKey, personalInformation.DateOfBirth?.ToString() ?? string.Empty);

                if(!string.IsNullOrWhiteSpace(birthDatePreference)) {
                    try {
                        personalInformation.DateOfBirth = Convert.ToDateTime(birthDatePreference);
                    } catch(FormatException) {
                        Logger.Error("Error parsing date of birth preference!");
                    }
                }
                break;
            case PersonalInformation.UserSexPreferenceKey:
                string userSexPreference = GetString(PersonalInformation.UserSexPreferenceKey, personalInformation.Sex.ToString());

                UserSex userSex;
                if(Enum.TryParse(userSexPreference, out userSex)) {
                    personalInformation.Sex = userSex;
                } else {
                    Logger.Error("Error parsing user sex preference!");
                }
                break;
            case PersonalInformation.HeightPreferenceKey:
                personalInformation.HeightInUnits = GetFloat(PersonalInformation.HeightPreferenceKey, (float)personalInformation.HeightInUnits);
                break;
            case PersonalInformation.WeightPreferenceKey:
                personalInformation.WeightInUnits = GetFloat(PersonalInformation.WeightPreferenceKey, (float)personalInformation.WeightInUnits);
                break;
            default:
                Logger.Warn($"Unhandled preference key: {key}");
                break;
            }
        }