/// <summary> /// Writing into the Rules database. /// There window does not let the user input parameters that i don't want him too. /// There are minimal checks in code for duplicate rules because the checks are part of the database. /// NOTE FOR THE FUTURE - should place this under a try - exception clause. /// /// after writing the rule into the database, have to update the Tagger functions. /// </summary> /// <param name="obj"></param> public void AddRule(object obj) { if (addRuleView.tagsComboBox.SelectedItem.Equals(tagViewModel.Tags[0])) { MessageBox.Show("Can't add rules to Computer time!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } else { string ruleParameter = ""; string ruleOpertor = ""; string ruleConstant = addRuleView.constantTextBox.Text; TagModel selectedTag = (TagModel)addRuleView.tagsComboBox.SelectedItem; switch (addRuleView.ruleParamters.Text) { case "": //bad things break; case "Foreground Window Name": ruleParameter = "FGWindowName"; break; case "Foreground Process Name": ruleParameter = "FGProcessName"; break; } if (addRuleView.ruleOperators.Text.Equals("Every thing else")) { ruleOpertor = RuleModel.everythingElseRuleString; ruleConstant = RuleModel.everythingElseRuleString; } else { ruleOpertor = addRuleView.ruleOperators.Text; } RuleModel newRule = new RuleModel(0, ruleParameter, ruleOpertor, ruleConstant, selectedTag.TagID); SqliteDataAccess.saveRule(newRule); UpdateRuleList(Tagger.BuildRules()); addRuleView.Close(); } }
/// <summary> /// When deleting a rule, we have to remove its function from the tagger. /// Note that after deleting the rule we update the tagger. /// </summary> /// <param name="obj"></param> public void DeleteRule(object obj) { if (deleteRuleWindow.RuleTagData.SelectedItem == null) { MessageBox.Show("Can't delete nothing :)", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } else { var selected = (RuleTagModel)deleteRuleWindow.RuleTagData.SelectedItem; var query = from rules in _rules where rules.RowId == selected.RuleId select rules; RuleModel selectedRule = null; foreach (var r in query) { selectedRule = r; } SqliteDataAccess.DeleteRule(selectedRule); _rules.Remove(selectedRule); ruleTag.Remove(selected); UpdateRuleList(Tagger.BuildRules()); deleteRuleWindow.RuleTagData.Items.Refresh(); } }
private void TagViewModel_TagDeleted(object sender, EventArgs e) { UpdateRuleList(Tagger.BuildRules()); }