private static void RegisterRulesActions() { IResource res; IFilterRegistry fmgr = Core.FilterRegistry; IStandardConditions std = fmgr.Std; // Register them here since they require live object as parameter fmgr.RegisterRuleAction(std.MarkResourceAsImportantActionName, std.MarkResourceAsImportantActionNameDeep, new ImportantRuleAction()); fmgr.RegisterRuleAction(std.DeleteResourceActionName, std.DeleteResourceActionNameDeep, new DeleteResourceAction()); fmgr.RegisterRuleAction(std.DeleteResourcePermActionName, std.DeleteResourcePermActionNameDeep, new DeleteResourcePermanentlyAction()); fmgr.RegisterRuleAction(std.MarkResourceAsReadActionName, std.MarkResourceAsReadActionNameDeep, new MarkMessageAsReadAction()); fmgr.RegisterRuleAction(std.MarkResourceAsUnreadActionName, std.MarkResourceAsUnreadActionNameDeep, new MarkMessageAsUnreadAction()); fmgr.RegisterRuleAction(std.ShowDesktopAlertActionName, std.ShowDesktopAlertActionNameDeep, new BalloonNotificationAction()); fmgr.RegisterRuleAction(std.ShowAsPlainTextActionName, std.ShowAsPlainTextActionNameDeep, new ShowAsPlainTextAction()); fmgr.RegisterRuleActionTemplate(std.AssignCategoryActionName, std.AssignCategoryActionNameDeep, new AssignCategoryAction(), ConditionOp.In, "Category"); fmgr.RegisterRuleActionTemplate(std.AssignCategoryToAuthorActionName, std.AssignCategoryToAuthorActionNameDeep, new AssignCategoryToMessageAuthorAction(), ConditionOp.In, "Category"); fmgr.RegisterRuleActionTemplate(std.PlaySoundFromFileActionName, std.PlaySoundFromFileActionNameDeep, new PlaySoundAction(), ConditionOp.In, "ExternalFile", "Sound files (*.wav)|*.wav|All files(*.*)|*.*"); fmgr.RegisterRuleActionTemplate(std.DisplayMessageBoxActionName, std.DisplayMessageBoxActionNameDeep, new MessageBoxNotificationAction(), ConditionOp.Eq); fmgr.RegisterRuleActionTemplate(std.RunApplicationActionName, std.RunApplicationActionNameDeep, new RunApplicationAction(), ConditionOp.In, "ExternalFile", "Execution files (*.exe)|*.exe|All files(*.*)|*.*"); res = fmgr.RegisterRuleActionTemplate(std.MarkMessageWithFlagActionName, std.MarkMessageWithFlagActionNameDeep, new MarkMessageWithFlagAction(), ConditionOp.In, "Flag"); fmgr.MarkActionTemplateAsSingleSelection(res); Core.ActionManager.RegisterLinkClickAction(new EditRuleAction(), FilterManagerProps.RuleResName, null); }
public void RegisterViewsFirstRun() { IFilterRegistry fMgr = Core.FilterRegistry; IStandardConditions std = fMgr.Std; string replyName = Core.ResourceStore.PropTypes[Core.Props.Reply].Name; // We check for a link of reversed direction Core.FilterRegistry.CreateStandardCondition(std.MessageHasReplyName, std.MessageHasReplyDeep, null, "-" + replyName, ConditionOp.HasLink); replyName = Core.ResourceStore.PropTypes[Core.Props.Reply].Name; Core.FilterRegistry.CreateStandardCondition(std.MessageIsAReplyName, std.MessageIsAReplyDeep, null, replyName, ConditionOp.HasLink); }
private void AscribeDeepNames() { IStandardConditions std = Core.FilterRegistry.Std; AscribeDeepName(FilterManagerProps.ConditionResName, std.ResourceIsUnreadName, std.ResourceIsUnreadNameDeep); AscribeDeepName(FilterManagerProps.ConditionResName, std.ResourceIsFlaggedName, std.ResourceIsFlaggedNameDeep); AscribeDeepName(FilterManagerProps.ConditionResName, std.ResourceIsAnnotatedName, std.ResourceIsAnnotatedNameDeep); AscribeDeepName(FilterManagerProps.ConditionResName, std.ResourceIsCategorizedName, std.ResourceIsCategorizedNameDeep); AscribeDeepName(FilterManagerProps.ConditionResName, std.ResourceIsAClippingName, std.ResourceIsAClippingNameDeep); AscribeDeepName(FilterManagerProps.ConditionResName, std.ResourceIsDeletedName, std.ResourceIsDeletedNameDeep); AscribeDeepName(FilterManagerProps.ConditionResName, FilterManagerStandards.DummyConditionName, FilterManagerStandards.DummyConditionName); AscribeDeepName(FilterManagerProps.ConditionTemplateResName, std.ResourceIsFlaggedWithFlagXName, std.ResourceIsFlaggedWithFlagXNameDeep); AscribeDeepName(FilterManagerProps.ConditionTemplateResName, std.SizeIsInTheIntervalXName, std.SizeIsInTheIntervalXNameDeep); AscribeDeepName(FilterManagerProps.ConditionTemplateResName, std.ResourceBelongsToWorkspaceXName, std.ResourceBelongsToWorkspaceXNameDeep); AscribeDeepName(FilterManagerProps.ConditionTemplateResName, std.FromContactXName, std.FromContactXNameDeep); AscribeDeepName(FilterManagerProps.ConditionTemplateResName, std.ToContactXName, std.ToContactXNameDeep); AscribeDeepName(FilterManagerProps.ConditionTemplateResName, std.CCContactXName, std.CCContactXNameDeep); AscribeDeepName(FilterManagerProps.ConditionTemplateResName, std.BodyMatchesSearchQueryXName, std.BodyMatchesSearchQueryXNameDeep); AscribeDeepName(FilterManagerProps.ConditionTemplateResName, std.SubjectMatchSearchQueryXName, std.SubjectMatchSearchQueryXNameDeep); AscribeDeepName(FilterManagerProps.ConditionTemplateResName, std.SourceMatchSearchQueryXName, std.SourceMatchSearchQueryXNameDeep); AscribeDeepName(FilterManagerProps.ConditionTemplateResName, std.SubjectIsTextXName, std.SubjectIsTextXNameDeep); AscribeDeepName(FilterManagerProps.ConditionTemplateResName, std.SubjectContainsTextXName, std.SubjectContainsTextXNameDeep); AscribeDeepName(FilterManagerProps.ConditionTemplateResName, std.InTheCategoryXName, std.InTheCategoryXNameDeep); AscribeDeepName(FilterManagerProps.ConditionTemplateResName, std.SenderIsInTheCategoryXName, std.SenderIsInTheCategoryXNameDeep); AscribeDeepName(FilterManagerProps.ConditionTemplateResName, std.ReceivedInTheTimeSpanXName, std.ReceivedInTheTimeSpanXNameDeep); AscribeDeepName(FilterManagerProps.RuleActionResName, std.DeleteResourceActionName, std.DeleteResourceActionNameDeep); AscribeDeepName(FilterManagerProps.RuleActionResName, std.DeleteResourcePermActionName, std.DeleteResourcePermActionNameDeep); AscribeDeepName(FilterManagerProps.RuleActionResName, std.MarkResourceAsReadActionName, std.MarkResourceAsReadActionNameDeep); AscribeDeepName(FilterManagerProps.RuleActionResName, std.MarkResourceAsUnreadActionName, std.MarkResourceAsUnreadActionNameDeep); AscribeDeepName(FilterManagerProps.RuleActionResName, std.MarkResourceAsImportantActionName, std.MarkResourceAsImportantActionNameDeep); AscribeDeepName(FilterManagerProps.RuleActionResName, std.ShowDesktopAlertActionName, std.ShowDesktopAlertActionNameDeep); AscribeDeepName(FilterManagerProps.RuleActionResName, std.ShowAsPlainTextActionName, std.ShowAsPlainTextActionNameDeep); AscribeDeepName(FilterManagerProps.RuleActionTemplateResName, std.AssignCategoryActionName, std.AssignCategoryActionNameDeep); AscribeDeepName(FilterManagerProps.RuleActionTemplateResName, std.AssignCategoryToAuthorActionName, std.AssignCategoryToAuthorActionNameDeep); AscribeDeepName(FilterManagerProps.RuleActionTemplateResName, std.PlaySoundFromFileActionName, std.PlaySoundFromFileActionNameDeep); AscribeDeepName(FilterManagerProps.RuleActionTemplateResName, std.DisplayMessageBoxActionName, std.DisplayMessageBoxActionNameDeep); AscribeDeepName(FilterManagerProps.RuleActionTemplateResName, std.RunApplicationActionName, std.RunApplicationActionNameDeep); AscribeDeepName(FilterManagerProps.RuleActionTemplateResName, std.MarkMessageWithFlagActionName, std.MarkMessageWithFlagActionNameDeep); }
public void RegisterViewsFirstRun() { //----------------------------------------------------------------- IFilterRegistry fMgr = Core.FilterRegistry; IStandardConditions std = fMgr.Std; //----------------------------------------------------------------- // Standard atomic conditions //----------------------------------------------------------------- IResource unr = fMgr.CreateStandardCondition(std.ResourceIsUnreadName, std.ResourceIsUnreadNameDeep, null, "IsUnread", ConditionOp.In, "true"); IResource fla = fMgr.CreateStandardCondition(std.ResourceIsFlaggedName, std.ResourceIsFlaggedNameDeep, null, "Flag", ConditionOp.HasLink); IResource ann = fMgr.CreateStandardCondition(std.ResourceIsAnnotatedName, std.ResourceIsAnnotatedNameDeep, null, "Annotation", ConditionOp.HasProp); IResource cli = fMgr.CreateStandardCondition(std.ResourceIsAClippingName, std.ResourceIsAClippingNameDeep, null, "IsClippingFakeProp", ConditionOp.HasProp); IResource del = fMgr.CreateStandardCondition(std.ResourceIsDeletedName, std.ResourceIsDeletedNameDeep, null, "IsDeleted", ConditionOp.HasProp); IResource foo = fMgr.CreateStandardCondition(FilterManagerStandards.DummyConditionName, FilterManagerStandards.DummyConditionName, null, "Id", ConditionOp.Gt, "0"); foo.SetProp("Invisible", true); //----------------------------------------------------------------- // Standard condition templates //----------------------------------------------------------------- fMgr.CreateConditionTemplate(std.ResourceIsFlaggedWithFlagXName, std.ResourceIsFlaggedWithFlagXNameDeep, null, ConditionOp.In, "Flag", "Flag"); fMgr.CreateConditionTemplate(std.SizeIsInTheIntervalXName, std.SizeIsInTheIntervalXNameDeep, null, ConditionOp.InRange, "Size", "0", Int32.MaxValue.ToString()); fMgr.CreateConditionTemplate(std.ResourceBelongsToWorkspaceXName, std.ResourceBelongsToWorkspaceXNameDeep, null, ConditionOp.In, "Workspace", "WorkspaceVisible"); IResource res; res = fMgr.CreateConditionTemplate(std.BodyMatchesSearchQueryXName, std.BodyMatchesSearchQueryXNameDeep, null, ConditionOp.QueryMatch); fMgr.AssociateConditionWithGroup(res, "Text Query Conditions"); res = fMgr.CreateConditionTemplate(std.SubjectMatchSearchQueryXName, std.SubjectMatchSearchQueryXNameDeep, null, ConditionOp.QueryMatch, DocumentSection.SubjectSection); fMgr.AssociateConditionWithGroup(res, "Text Query Conditions"); res = fMgr.CreateConditionTemplate(std.SourceMatchSearchQueryXName, std.SourceMatchSearchQueryXNameDeep, null, ConditionOp.QueryMatch, DocumentSection.SourceSection); fMgr.AssociateConditionWithGroup(res, "Text Query Conditions"); res = fMgr.CreateConditionTemplate(std.SubjectIsTextXName, std.SubjectIsTextXNameDeep, null, ConditionOp.Eq, "Subject"); fMgr.AssociateConditionWithGroup(res, "Text Query Conditions"); res = fMgr.CreateConditionTemplate(std.SubjectContainsTextXName, std.SubjectContainsTextXNameDeep, null, ConditionOp.Has, "Subject"); fMgr.AssociateConditionWithGroup(res, "Text Query Conditions"); res = fMgr.CreateConditionTemplate(std.FromContactXName, std.FromContactXNameDeep, null, ConditionOp.In, "Contact", "From"); fMgr.AssociateConditionWithGroup(res, "Address and Contact Conditions"); res = fMgr.CreateConditionTemplate(std.ToContactXName, std.ToContactXNameDeep, null, ConditionOp.In, "Contact", "To"); fMgr.AssociateConditionWithGroup(res, "Address and Contact Conditions"); res = fMgr.CreateConditionTemplate(std.CCContactXName, std.CCContactXNameDeep, null, ConditionOp.In, "Contact", "CC"); fMgr.AssociateConditionWithGroup(res, "Address and Contact Conditions"); res = fMgr.CreateConditionTemplate(std.InTheCategoryXName, std.InTheCategoryXNameDeep, null, ConditionOp.In, "Category", "Category"); fMgr.AssociateConditionWithGroup(res, "Category Conditions"); res = fMgr.CreateConditionTemplate(std.SenderIsInTheCategoryXName, std.SenderIsInTheCategoryXNameDeep, null, ConditionOp.In, "Category", "From>Category"); fMgr.AssociateConditionWithGroup(res, "Category Conditions"); res = fMgr.CreateStandardCondition(std.ReceivedAheadOfTodayName, std.ReceivedAheadOfTodayNameDeep, null, "Date", ConditionOp.Gt, "Tomorrow"); fMgr.AssociateConditionWithGroup(res, "Temporal Conditions"); res = fMgr.CreateConditionTemplate(std.DeletedInTheTimeSpanXName, std.DeletedInTheTimeSpanXNameDeep, null, ConditionOp.Eq, "DelDate"); fMgr.AssociateConditionWithGroup(res, "Temporal Conditions"); IResource dateRes = fMgr.CreateConditionTemplate(std.ReceivedInTheTimeSpanXName, std.ReceivedInTheTimeSpanXNameDeep, null, ConditionOp.Eq, "Date"); fMgr.AssociateConditionWithGroup(dateRes, "Temporal Conditions"); //----------------------------------------------------------------- // Standard conditions derived from standard templates //----------------------------------------------------------------- IResource todayCond = FilterConvertors.InstantiateTemplate(dateRes, "Today", null); IResource yesterdayCond = FilterConvertors.InstantiateTemplate(dateRes, "Yesterday", null); IResource thisWeekCond = FilterConvertors.InstantiateTemplate(dateRes, "This Week", null); IResource lastWeekCond = FilterConvertors.InstantiateTemplate(dateRes, "Last Week", null); IResource thisMonthCond = FilterConvertors.InstantiateTemplate(dateRes, "This Month", null); IResource lastMonthCond = FilterConvertors.InstantiateTemplate(dateRes, "Last Month", null); //----------------------------------------------------------------- // Standard views //----------------------------------------------------------------- IResource unreadRes = fMgr.RegisterView("Unread", new [] { unr }, null); IResource flaggedRes = fMgr.RegisterView("Flagged", new [] { fla }, null); IResource annotatedRes = fMgr.RegisterView("Annotated", new [] { ann }, null); IResource clippings = fMgr.RegisterView("Clippings", new [] { cli }, null); IResource deletedRes = fMgr.RegisterView("Deleted Resources", new [] { del }, null); deletedRes.SetProp(Core.Props.ShowDeletedItems, true); deletedRes.SetProp("IsLiveMode", true); IResource today = fMgr.RegisterView("Today", new [] { todayCond }, null); IResource yesterday = fMgr.RegisterView("Yesterday", new [] { yesterdayCond }, null); IResource thisWeek = fMgr.RegisterView("This week", new [] { thisWeekCond }, null); IResource lastWeek = fMgr.RegisterView("Last week", new [] { lastWeekCond }, null); IResource thisMonth = fMgr.RegisterView("This month", new [] { thisMonthCond }, null); IResource lastMonth = fMgr.RegisterView("Last month", new [] { lastMonthCond }, null); fMgr.SetVisibleInAllTabs(flaggedRes); fMgr.SetVisibleInAllTabs(annotatedRes); fMgr.SetVisibleInAllTabs(clippings); fMgr.SetVisibleInAllTabs(deletedRes); //----------------------------------------------------------------- Core.FilterRegistry.CreateViewFolder("Recent", null, 0); fMgr.AssociateViewWithFolder(unreadRes, null, 1); fMgr.AssociateViewWithFolder(deletedRes, null, 3); fMgr.AssociateViewWithFolder(flaggedRes, null, 4); fMgr.AssociateViewWithFolder(annotatedRes, null, 5); fMgr.AssociateViewWithFolder(clippings, null, 7); fMgr.AssociateViewWithFolder(today, "Recent", 0); fMgr.AssociateViewWithFolder(yesterday, "Recent", 1); fMgr.AssociateViewWithFolder(thisWeek, "Recent", 2); fMgr.AssociateViewWithFolder(lastWeek, "Recent", 3); fMgr.AssociateViewWithFolder(thisMonth, "Recent", 4); fMgr.AssociateViewWithFolder(lastMonth, "Recent", 5); //----------------------------------------------------------------- // By default make all these views "threaded" due to the new // possibilities to show attachments //----------------------------------------------------------------- today.SetProp(Core.Props.DisplayThreaded, true); yesterday.SetProp(Core.Props.DisplayThreaded, true); thisWeek.SetProp(Core.Props.DisplayThreaded, true); lastWeek.SetProp(Core.Props.DisplayThreaded, true); thisMonth.SetProp(Core.Props.DisplayThreaded, true); lastMonth.SetProp(Core.Props.DisplayThreaded, true); }