private void btnAdd_OnClick(object sender, RoutedEventArgs e)
        {
            string location = tbLocation.Text;
            if (this.tbLocation.IsEnabled == true && string.IsNullOrEmpty(location))
            {
                MessageBox.Show("Please input Type field");
                return;
            }

            string type = cbType.SelectedItem as string;
            if (string.IsNullOrEmpty(type))
            {
                MessageBox.Show("Please input Type field");
                return;
            }

            int bonusPoint = 0;
            int.TryParse(this.tbBonusPoints.Text, out bonusPoint);

            if (!update)
            {
                ProgramSource p = new ProgramSource()
                {
                    Location = this.tbLocation.IsEnabled ? location : null,
                    Enabled = cbEnable.IsChecked ?? false,
                    Type = type,
                    BonusPoints = bonusPoint
                };
                if (UserSettingStorage.Instance.ProgramSources.Exists(o => o.ToString() == p.ToString() && o != p))
                {
                    MessageBox.Show("Program source already exists!");
                    return;
                }
                UserSettingStorage.Instance.ProgramSources.Add(p);
                MessageBox.Show(string.Format("Add {0} program source successfully!", p.ToString()));
            }
            else
            {
                if (UserSettingStorage.Instance.ProgramSources.Exists(o => o.ToString() == updateProgramSource.ToString() && o != updateProgramSource))
                {
                    MessageBox.Show("Program source already exists!");
                    return;
                }
                updateProgramSource.Location = this.tbLocation.IsEnabled ? location : null;
                updateProgramSource.Type = type;
                updateProgramSource.Enabled = cbEnable.IsChecked ?? false;
                updateProgramSource.BonusPoints = bonusPoint;
                MessageBox.Show(string.Format("Update {0} program source successfully!", updateProgramSource.ToString()));
            }
            UserSettingStorage.Instance.Save();
            settingWindow.ReloadProgramSourceView();
            Close();
        }
        public void UpdateItem(ProgramSource programSource)
        {
            updateProgramSource = UserSettingStorage.Instance.ProgramSources.FirstOrDefault(o => o == programSource);
            if (updateProgramSource == null)
            {
                MessageBox.Show("Invalid program source");
                Close();
                return;
            }

            update = true;
            lblAdd.Text = "Update";
            cbEnable.IsChecked = programSource.Enabled;
            cbType.SelectedItem = programSource.Type;
            cbType.IsEnabled = false;
            tbLocation.Text = programSource.Location;
            tbBonusPoints.Text = programSource.BonusPoints.ToString();
        }
 public AppPathsProgramSource(ProgramSource source)
     : this()
 {
     this.BonusPoints = source.BonusPoints;
 }
 public FileSystemProgramSource(ProgramSource source):this(source.Location)
 {
     this.BonusPoints = source.BonusPoints;
 }
 public CommonStartMenuProgramSource(ProgramSource source)
     : this()
 {
     this.BonusPoints = source.BonusPoints;
 }
		public FileSystemFolderSourceShallow(ProgramSource source)
			: base(source) { }
 public PortableAppsProgramSource(ProgramSource source)
     : this(source.Location)
 {
     this.BonusPoints = source.BonusPoints;
 }