public void Register() { _plugin = this; _tracer.Trace("Start registering..."); Core.AddExceptionReportData("\nOutlookPlugin is enabled"); Settings.LoadSettings(); REGISTRY.RegisterTypes(this, Core.ContactManager); _tracer.Trace("Start OutlookProcessor..."); _outlookProcessor = new OutlookProcessor(); _outlookUIHandler = new OutlookUIHandler(); if (!_outlookProcessor.IsStarted) { _tracer.Trace("OutlookProcessor failed to start"); Core.AddExceptionReportData("\nOutlookProcessor failed to start"); Core.AddExceptionReportData("\nOutlook plugin cannot be loaded.\n" + _outlookProcessor.LastException.Message); MsgBox.Error("Outlook plugin", "Outlook plugin cannot be loaded.\n" + _outlookProcessor.LastException.Message); _startupStatus = false; Core.ActionManager.DisableXmlActionConfiguration(Assembly.GetExecutingAssembly()); return; } _tracer.Trace("Start OutlookProcessor OK"); _outlookProcessor.SynchronizeMAPIInfoStores(); if (Settings.ExportTasks) { _tracer.Trace("prepare ExportTasks"); _outlookProcessor.ExportTasks(); } Core.PluginLoader.RegisterResourceUIHandler(STR.MAPIFolder, _outlookUIHandler); Core.PluginLoader.RegisterResourceDragDropHandler(STR.MAPIFolder, _outlookUIHandler); Core.PluginLoader.RegisterResourceDragDropHandler(Core.ResourceTreeManager.GetRootForType(STR.MAPIFolder).Type, new OutlookRootDragDropHandler()); IUIManager uiManager = Core.UIManager; Core.TabManager.RegisterResourceTypeTab("Email", "Mail", new[] { STR.Email, STR.MAPIFolder }, PROP.Attachment, 1); Image img = Utils.TryGetEmbeddedResourceImageFromAssembly(Assembly.GetExecutingAssembly(), "OutlookPlugin.Icons.Folders24.png"); IResourceTreePane outlookFolders = Core.LeftSidebar.RegisterResourceStructureTreePane("MAPIFolders", "Email", "Outlook Folders", img, STR.MAPIFolder); if (outlookFolders != null) { outlookFolders.AddNodeFilter(new OutlookFoldersFilter()); ((ResourceTreePaneBase)outlookFolders).AddNodeDecorator(new TotalCountDecorator(STR.MAPIFolder, PROP.MAPIFolder)); outlookFolders.ToolTipCallback = GetMAPIFolderToolTip; Settings.OutlookFolders = outlookFolders; Core.LeftSidebar.RegisterViewPaneShortcut("MAPIFolders", Keys.Control | Keys.Alt | Keys.O); } uiManager.RegisterResourceLocationLink(STR.Email, PROP.MAPIFolder, STR.MAPIFolder); CorrespondentCtrl correspondentPane = new CorrespondentCtrl { IniSection = "Outlook" }; img = Utils.TryGetEmbeddedResourceImageFromAssembly(Assembly.GetExecutingAssembly(), "OutlookPlugin.Icons.Correspondents24.png"); Core.LeftSidebar.RegisterViewPane("Correspondents", "Email", "Correspondents", img, correspondentPane); img = Utils.TryGetEmbeddedResourceImageFromAssembly(Assembly.GetExecutingAssembly(), "OutlookPlugin.Icons.Attachments24.png"); Core.LeftSidebar.RegisterViewPane("Attachments", "Email", "Attachments", img, new AttachmentsCtrl()); Core.LeftSidebar.RegisterViewPaneShortcut("Attachments", Keys.Control | Keys.Alt | Keys.T); RegisterCustomColumns(); RegisterOptionsPanes(); uiManager.RegisterResourceSelectPane(STR.MAPIFolder, typeof(MAPIFoldersTreeSelectPane)); IWorkspaceManager workspaceMgr = Core.WorkspaceManager; if (workspaceMgr != null) { workspaceMgr.RegisterWorkspaceType(STR.MAPIFolder, new[] { PROP.MAPIFolder }, WorkspaceResourceType.Container); workspaceMgr.RegisterWorkspaceType(STR.Email, new[] { -PROP.Attachment }, WorkspaceResourceType.None); workspaceMgr.RegisterWorkspaceSelectorFilter(STR.MAPIFolder, new OutlookFoldersFilter()); } ResourceTextProvider textProvider = new ResourceTextProvider(); Core.PluginLoader.RegisterResourceTextProvider(STR.Email, textProvider); Core.PluginLoader.RegisterResourceTextProvider(STR.EmailFile, textProvider); ResourceDisplayer displayer = new ResourceDisplayer(); Core.PluginLoader.RegisterResourceDisplayer(STR.Email, displayer); Core.PluginLoader.RegisterResourceDisplayer(STR.EmailFile, displayer); Core.PluginLoader.RegisterStreamProvider(STR.Email, new StreamProvider()); Core.PluginLoader.RegisterViewsConstructor(new OutlookUpgrade1ViewsInitializer()); Core.PluginLoader.RegisterViewsConstructor(new OutlookViewsInitializer()); Core.PluginLoader.RegisterViewsConstructor(new OutlookUpgrade2ViewsInitializer()); //----------------------------------------------------------------- // Register Search Extensions to narrow the list of results using // simple phrases in search queries: for restricting the resource // type to emails (three synonyms). //----------------------------------------------------------------- Core.SearchQueryExtensions.RegisterResourceTypeRestriction("in", "mail", STR.Email); Core.SearchQueryExtensions.RegisterResourceTypeRestriction("in", "mails", STR.Email); Core.SearchQueryExtensions.RegisterResourceTypeRestriction("in", "email", STR.Email); Core.ExpirationRuleManager.RegisterResourceType(PROP.MAPIFolder, STR.MAPIFolder, STR.Email); //----------------------------------------------------------------- Core.PluginLoader.RegisterPluginService(this); Core.ResourceIconManager.RegisterPropTypeIcon(PROP.Attachment, LoadIconFromAssembly("OutlookPlugin.Icons.attachment.ico")); Core.ResourceBrowser.RegisterLinksPaneFilter(STR.Email, new OutlookLinksPaneFilter()); Core.ResourceBrowser.RegisterLinksPaneFilter(STR.Task, new OutlookLinksPaneFilterForTasks()); Core.ContactManager.RegisterContactMergeFilter(new EntryIdMergeFilter()); Core.ResourceBrowser.RegisterLinksPaneFilter("Email", new ItemRecipientsFilter()); FolderIconProvider folderIconProvider = new FolderIconProvider(); Core.ResourceIconManager.RegisterResourceIconProvider(STR.MAPIFolder, folderIconProvider); Core.ResourceIconManager.RegisterOverlayIconProvider(STR.MAPIFolder, folderIconProvider); Core.ResourceIconManager.RegisterOverlayIconProvider(STR.Email, new MailIconProvider()); if (Core.ResourceStore.GetAllResources("SentItemsEnumSign").Count == 0) { OutlookSession.OutlookProcessor.RunJob("Detect owner e-mail", new MethodInvoker(OwnerEmailDetector.Detect)); } ResourceDeleters.Register(); EmailThreadingHandler threadingHandler = new EmailThreadingHandler(); Core.PluginLoader.RegisterResourceThreadingHandler("Email", threadingHandler); Core.PluginLoader.RegisterResourceThreadingHandler(PROP.Attachment, threadingHandler); Core.StateChanged += Core_StateChanged; Core.ResourceBrowser.SetDefaultViewSettings("Email", AutoPreviewMode.UnreadItems, true); _tracer.Trace("End of Register"); }
public void Register() { _thePlugin = this; _folderWatchers = new HashMap(); _dbLocations = new HashSet(); _icqContacts = new ArrayList(); _icqMessages = new ArrayList(); _idResources = new IntHashSet(); RegisterTypes(); IUIManager uiMgr = Core.UIManager; uiMgr.RegisterOptionsGroup("Instant Messaging", "The Instant Messaging options enable you to control how [product name] works with supported instant messaging programs."); OptionsPaneCreator icqPaneCreator = ICQOptionsPane.ICQOptionsPaneCreator; uiMgr.RegisterOptionsPane("Instant Messaging", "ICQ", icqPaneCreator, "The ICQ options enable you to specify which ICQ accounts should be indexed, and how [product name] should build conversations from ICQ messages."); uiMgr.AddOptionsChangesListener("Instant Messaging", "ICQ", ICQOptionsChanged); if (UINsCollection.GetUINs().Count > 0) { uiMgr.RegisterWizardPane("ICQ", icqPaneCreator, 10); Core.TabManager.RegisterResourceTypeTab("IM", "IM", _icqConversationResName, 2); _correspondentPane = new CorrespondentCtrl(); _correspondentPane.IniSection = "ICQ"; _correspondentPane.SetCorresponentFilterList(Core.ResourceStore.FindResourcesWithProp(null, "ICQAcct")); Image img = Utils.TryGetEmbeddedResourceImageFromAssembly(Assembly.GetExecutingAssembly(), "ICQPlugin.Icons.Correspondents24.png"); Core.LeftSidebar.RegisterResourceStructurePane("ICQCorrespondents", "IM", "ICQ Correspondents", img, _correspondentPane); Core.LeftSidebar.RegisterViewPaneShortcut("ICQCorrespondents", Keys.Control | Keys.Alt | Keys.Q); } IPluginLoader loader = Core.PluginLoader; IActionManager actionManager = Core.ActionManager; loader.RegisterResourceDisplayer(_icqConversationResName, this); actionManager.RegisterLinkClickAction(new ConversationLinkClickAction(), _icqConversationResName, null); _conversationManager = new IMConversationsManager(_icqConversationResName, "ICQ Conversation", "Subject", GetConversationTimeSpan(), _propICQAcct, _propFromICQ, _propToICQ, this); _conversationManager.ReverseMode = GetReverseMode(); SaveConversationAction saveConvAction = new SaveConversationAction(_conversationManager, _propNickName); actionManager.RegisterContextMenuAction(saveConvAction, ActionGroups.ITEM_OPEN_ACTIONS, ListAnchor.Last, "Save to File...", null, _icqConversationResName, null); actionManager.RegisterActionComponent(saveConvAction, "SaveAs", _icqConversationResName, null); EmailConversationAction mailConvAction = new EmailConversationAction(_conversationManager, _propNickName); actionManager.RegisterContextMenuAction(mailConvAction, ActionGroups.ITEM_OPEN_ACTIONS, ListAnchor.Last, "Send by Email", null, _icqConversationResName, null); actionManager.RegisterActionComponent(mailConvAction, "SendByMail", _icqConversationResName, null); loader.RegisterResourceSerializer(_icqAccountResName, new ICQAccountSerializer()); loader.RegisterResourceTextProvider(_icqConversationResName, _conversationManager); loader.RegisterResourceTextProvider(_contactResName, this); Core.ResourceBrowser.RegisterLinksPaneFilter(_icqConversationResName, new ItemRecipientsFilter()); Core.ResourceBrowser.RegisterLinksGroup("Accounts", new[] { _propICQAcct }, ListAnchor.First); // Upgrade information about ICQ address book - set its // ContentType property so that it could be filtered out when // this plugin is switched off. IResource ab = Core.ResourceStore.FindUniqueResource("AddessBook", "Name", "ICQ Contacts"); if (ab != null) { ab.SetProp("ContentType", _icqConversationResName); } Core.ResourceBrowser.SetDefaultViewSettings("IM", AutoPreviewMode.Off, true); }
void IPlugin.Register() { _theInstance = this; _store = Core.ResourceStore; Props.Register(); ResourceTypes.Register(this); RegisterTypes(); IDisplayColumnManager colMgr = Core.DisplayColumnManager; colMgr.RegisterDisplayColumn(ResourceTypes.MirandaConversation, 0, new ColumnDescriptor("From", 100)); colMgr.RegisterDisplayColumn(ResourceTypes.MirandaConversation, 1, new ColumnDescriptor("To", 100)); colMgr.RegisterDisplayColumn(ResourceTypes.MirandaConversation, 2, new ColumnDescriptor(new[] { Core.ResourceStore.PropTypes [Core.Props.Subject].Name, "DisplayName" }, 300, ColumnDescriptorFlags.AutoSize)); colMgr.RegisterDisplayColumn(ResourceTypes.MirandaConversation, 3, new ColumnDescriptor("Date", 120)); if (!_store.PropTypes.Exist("ConversationList")) { ClearConversations(); } _convManager = new IMConversationsManager(ResourceTypes.MirandaConversation, "Miranda Conversation", "Subject", IniSettings.ConversationPeriodTimeSpan, Props.MirandaAcct, Props.FromAccount, Props.ToAccount, this); _convManager.ReverseMode = IniSettings.LatestOnTop; Core.PluginLoader.RegisterResourceTextProvider(ResourceTypes.MirandaConversation, _convManager); Core.PluginLoader.RegisterResourceTextProvider("Contact", new MirandaContactTextProvider()); Core.PluginLoader.RegisterResourceDisplayer(ResourceTypes.MirandaConversation, this); Core.ActionManager.RegisterLinkClickAction(new ConversationLinkClickAction(), ResourceTypes.MirandaConversation, null); Core.PluginLoader.RegisterResourceSerializer(ResourceTypes.MirandaAIMAccount, new MirandaAccountSerializer(Props.ScreenName)); Core.PluginLoader.RegisterResourceSerializer(ResourceTypes.MirandaICQAccount, new MirandaAccountSerializer(Props.UIN)); string[] dbNames = ProfileManager.GetProfileList(); if (dbNames.Length > 0) { IUIManager uiMgr = Core.UIManager; uiMgr.RegisterOptionsGroup("Instant Messaging", "The Instant Messaging options enable you to control how [product name] works with supported instant messaging programs."); uiMgr.RegisterWizardPane("Miranda", CreateMirandaOptions, 11); uiMgr.RegisterOptionsPane("Instant Messaging", "Miranda", CreateMirandaOptions, _MirandaOptionsDescription); uiMgr.AddOptionsChangesListener("Instant Messaging", "Miranda", OnMirandaOptionsChanged); Core.TabManager.RegisterResourceTypeTab("IM", "IM", "MirandaConversation", 2); _correspondentPane = new CorrespondentCtrl(); _correspondentPane.IniSection = "Miranda"; _correspondentPane.SetCorresponentFilterList(Core.ResourceStore.FindResourcesWithProp(null, Props.MirandaAcct)); Image img = Utils.TryGetEmbeddedResourceImageFromAssembly(Assembly.GetExecutingAssembly(), "OmniaMea.InstantMessaging.Miranda.Icons.correspondents.ico"); Core.LeftSidebar.RegisterResourceStructurePane("MirandaCorrespondents", "IM", "Miranda Correspondents", img, _correspondentPane); Core.LeftSidebar.RegisterViewPaneShortcut("MirandaCorrespondents", Keys.Control | Keys.Alt | Keys.M); SaveConversationAction saveConvAction = new SaveConversationAction(_convManager, Props.NickName); Core.ActionManager.RegisterContextMenuAction(saveConvAction, ActionGroups.ITEM_OPEN_ACTIONS, ListAnchor.Last, "Save to File...", null, "MirandaConversation", null); Core.ActionManager.RegisterActionComponent(saveConvAction, "SaveAs", "MirandaConversation", null); EmailConversationAction mailConvAction = new EmailConversationAction(_convManager, Props.NickName); Core.ActionManager.RegisterContextMenuAction(mailConvAction, ActionGroups.ITEM_OPEN_ACTIONS, ListAnchor.Last, "Send by Email", null, "MirandaConversation", null); Core.ActionManager.RegisterActionComponent(mailConvAction, "SendByMail", "MirandaConversation", null); Core.ResourceBrowser.RegisterLinksGroup("Accounts", new[] { Props.MirandaAcct }, ListAnchor.First); Core.ResourceBrowser.RegisterLinksPaneFilter(ResourceTypes.MirandaConversation, new ItemRecipientsFilter()); _mirandaAB = new AddressBook("Miranda Contacts", ResourceTypes.MirandaConversation); _mirandaAB.IsExportable = false; // Upgrade information about Miranda address book - set its // ContentType property so that it could be filtered out when // this plugin is switched off. _mirandaAB.Resource.SetProp(Core.Props.ContentType, ResourceTypes.MirandaConversation); Core.ResourceBrowser.SetDefaultViewSettings("IM", AutoPreviewMode.Off, true); } Core.PluginLoader.RegisterResourceDeleter(ResourceTypes.MirandaConversation, new MirandaConversationDeleter()); }