diff --git a/OutlookCaseHelper/Form1.cs b/OutlookCaseHelper/Form1.cs index 9e303cc..170cbe0 100644 --- a/OutlookCaseHelper/Form1.cs +++ b/OutlookCaseHelper/Form1.cs @@ -39,7 +39,7 @@ namespace OutlookCaseHelper public Form1() { InitializeComponent(); - this.Icon = new Icon(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "casenew.ico")); //adding the icon + this.Icon = new Icon(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "casenew.ico")); this.WindowState = FormWindowState.Minimized; this.ShowInTaskbar = false; outlookHelper = new OutlookHelper(); @@ -47,10 +47,14 @@ namespace OutlookCaseHelper InitializeTray(); InitializeTimer(); SetStartupWithWindows(true); - // Task.Run(() => outlookHelper.ScanInboxOnStartup()); trayIcon.ShowBalloonTip(3000, "Outlook Case Manager", "App is running and monitoring your emails.", ToolTipIcon.Info); } + public void ReloadOutlookRules() + { + outlookHelper.ReloadRules(); + } + private void SetStartupWithWindows(bool enable) { try @@ -155,6 +159,7 @@ namespace OutlookCaseHelper trayMenu.Items.Add("Create Rule (Manual ID)", null, CreateRuleManual_Click); trayMenu.Items.Add("Remove Rule (Selected Email)", null, RemoveRuleFromSelected_Click); trayMenu.Items.Add("Remove Rule (Manual ID)", null, RemoveRule_Click); + trayMenu.Items.Add("Run All Rules Now", null, RunAllRules_Click); trayMenu.Items.Add("-"); trayMenu.Items.Add("Settings", null, Settings_Click); trayMenu.Items.Add("Start with Windows", null, ToggleStartup_Click); @@ -168,12 +173,16 @@ namespace OutlookCaseHelper trayIcon.Visible = true; trayIcon.MouseDoubleClick += TrayIcon_MouseDoubleClick; - // Marca o estado atual do startup using var regKey = Registry.CurrentUser.OpenSubKey( @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", false); - var startupItem = trayMenu.Items[6] as ToolStripMenuItem; - if (startupItem != null) - startupItem.Checked = regKey?.GetValue("OutlookCaseHelper") != null; + foreach (ToolStripItem menuItem in trayMenu.Items) + { + if (menuItem is ToolStripMenuItem item && item.Text == "Start with Windows") + { + item.Checked = regKey?.GetValue("OutlookCaseHelper") != null; + break; + } + } } private void ToggleStartup_Click(object? sender, EventArgs e) @@ -197,6 +206,7 @@ namespace OutlookCaseHelper var form = new HotkeySettingsForm( hotkeyCreateMod, hotkeyCreateKey, hotkeyRemoveMod, hotkeyRemoveKey); + form.Owner = this; if (form.ShowDialog() == DialogResult.OK) { @@ -226,6 +236,24 @@ namespace OutlookCaseHelper catch { } } + private void RunAllRules_Click(object? sender, EventArgs e) + { + try + { + trayIcon.ShowBalloonTip(2000, "Outlook Case Manager", "Running all rules...", ToolTipIcon.Info); + Task.Run(() => + { + outlookHelper.RunAllRules(); + this.Invoke(() => + trayIcon.ShowBalloonTip(3000, "Outlook Case Manager", "All rules applied successfully!", ToolTipIcon.Info)); + }); + } + catch (Exception ex) + { + MessageBox.Show($"Error: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ProcessEmail_Click(object? sender, EventArgs e) { try @@ -426,9 +454,9 @@ namespace OutlookCaseHelper public HotkeySettingsForm(uint createMod, uint createKey, uint removeMod, uint removeKey) { this.Text = "Hotkey Settings"; - this.Size = new Size(400, 300); - this.MinimumSize = new Size(400, 300); - this.MaximumSize = new Size(400, 300); + this.Size = new Size(420, 280); + this.MinimumSize = new Size(420, 280); + this.MaximumSize = new Size(420, 280); this.FormBorderStyle = FormBorderStyle.FixedDialog; this.MaximizeBox = false; this.MinimizeBox = false; @@ -442,29 +470,61 @@ namespace OutlookCaseHelper cmbCreateKey = new ComboBox { Left = 220, Top = 38, Width = 100, DropDownStyle = ComboBoxStyle.DropDownList }; cmbCreateKey.Items.AddRange(KeyOptions); - var lblRemove = new Label { Text = "Remove Rule shortcut:", Left = 20, Top = 85, Width = 350, Height = 20, Font = new Font(Font, FontStyle.Bold) }; - chkRemoveAlt = new CheckBox { Text = "Alt", Left = 20, Top = 110, Width = 60, Checked = (removeMod & 0x0001) != 0 }; - chkRemoveCtrl = new CheckBox { Text = "Ctrl", Left = 85, Top = 110, Width = 60, Checked = (removeMod & 0x0002) != 0 }; - chkRemoveShift = new CheckBox { Text = "Shift", Left = 150, Top = 110, Width = 65, Checked = (removeMod & 0x0004) != 0 }; - cmbRemoveKey = new ComboBox { Left = 220, Top = 108, Width = 100, DropDownStyle = ComboBoxStyle.DropDownList }; + var lblRemove = new Label { Text = "Remove Rule shortcut:", Left = 20, Top = 80, Width = 350, Height = 20, Font = new Font(Font, FontStyle.Bold) }; + chkRemoveAlt = new CheckBox { Text = "Alt", Left = 20, Top = 105, Width = 60, Checked = (removeMod & 0x0001) != 0 }; + chkRemoveCtrl = new CheckBox { Text = "Ctrl", Left = 85, Top = 105, Width = 60, Checked = (removeMod & 0x0002) != 0 }; + chkRemoveShift = new CheckBox { Text = "Shift", Left = 150, Top = 105, Width = 65, Checked = (removeMod & 0x0004) != 0 }; + cmbRemoveKey = new ComboBox { Left = 220, Top = 103, Width = 100, DropDownStyle = ComboBoxStyle.DropDownList }; cmbRemoveKey.Items.AddRange(KeyOptions); SelectKey(cmbCreateKey, createKey); SelectKey(cmbRemoveKey, removeKey); - var btnOk = new Button { Text = "Save", Left = 200, Top = 220, Width = 80, DialogResult = DialogResult.OK }; - var btnCancel = new Button { Text = "Cancel", Left = 290, Top = 220, Width = 80, DialogResult = DialogResult.Cancel }; + // Todos os botões na mesma linha + var btnViewRules = new Button { Text = "View Rules", Left = 20, Top = 200, Width = 90 }; + btnViewRules.Click += (s, e) => + { + try + { + string rulesPath = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), + "OutlookCaseHelper", "active_rules.json"); + if (File.Exists(rulesPath)) + System.Diagnostics.Process.Start("notepad.exe", rulesPath); + else + MessageBox.Show("No rules file found.", "Info", + MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch { } + }; + + var btnReloadRules = new Button { Text = "Reload Rules", Left = 118, Top = 200, Width = 90 }; + btnReloadRules.Click += (s, e) => + { + try + { + if (this.Owner is Form1 form1) + { + form1.ReloadOutlookRules(); + MessageBox.Show("Rules reloaded successfully!", "Success", + MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + catch { } + }; + + var btnOk = new Button { Text = "Save", Left = 216, Top = 200, Width = 80, DialogResult = DialogResult.OK }; + var btnCancel = new Button { Text = "Cancel", Left = 304, Top = 200, Width = 80, DialogResult = DialogResult.Cancel }; this.Controls.AddRange(new Control[] { - lblCreate, chkCreateAlt, chkCreateCtrl, chkCreateShift, cmbCreateKey, - lblRemove, chkRemoveAlt, chkRemoveCtrl, chkRemoveShift, cmbRemoveKey, - btnOk, btnCancel - }); + lblCreate, chkCreateAlt, chkCreateCtrl, chkCreateShift, cmbCreateKey, + lblRemove, chkRemoveAlt, chkRemoveCtrl, chkRemoveShift, cmbRemoveKey, + btnViewRules, btnReloadRules, btnOk, btnCancel + }); this.AcceptButton = btnOk; this.CancelButton = btnCancel; } - private void SelectKey(ComboBox cmb, uint keyCode) { var key = (Keys)keyCode; diff --git a/OutlookCaseHelper/OutlookHelper.cs b/OutlookCaseHelper/OutlookHelper.cs index 470a020..aab435d 100644 --- a/OutlookCaseHelper/OutlookHelper.cs +++ b/OutlookCaseHelper/OutlookHelper.cs @@ -26,7 +26,65 @@ namespace OutlookCaseHelper "active_rules.json"); Directory.CreateDirectory(Path.GetDirectoryName(rulesFilePath)!); LoadRules(); - // Não tenta ligar ao Outlook aqui — liga só quando necessário + + } + public void RunAllRules() + { + if (!EnsureOutlookConnected()) return; + if (activeRules.Count == 0) return; + + try + { + Outlook.Folder? inboxFolder = + outlookNamespace!.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox) as Outlook.Folder; + if (inboxFolder == null) return; + + Outlook.Folder? sentFolder = + outlookNamespace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail) as Outlook.Folder; + + Outlook.Folder casesFolder = GetOrCreateFolder(inboxFolder, "Cases"); + Outlook.Folder activeFolder = GetOrCreateFolder(casesFolder, "Active"); + + + var rootFolder = inboxFolder.Parent as Outlook.Folder; + var allFolders = new List(); + if (rootFolder != null) + GetAllFolders(rootFolder, allFolders, casesFolder.EntryID); + + foreach (var folderName in activeRules) + { + string trackingId = ExtractTrackingId(folderName); + string filter = $"@SQL=\"urn:schemas:httpmail:subject\" LIKE '%TrackingID#{trackingId}%'"; + Outlook.Folder trackingFolder = GetOrCreateFolder(activeFolder, folderName); + + foreach (var folder in allFolders) + { + try { MoveFilteredEmails(folder, filter, trackingFolder); } catch { } + } + } + } + catch { } + } + + public void ReloadRules() + { + activeRules.Clear(); + LoadRules(); + } + + private void GetAllFolders(Outlook.Folder parent, List result, string excludeEntryId) + { + foreach (Outlook.Folder folder in parent.Folders) + { + try + { + if (folder.EntryID == excludeEntryId) continue; + result.Add(folder); + if (folder.Folders.Count > 0) + GetAllFolders(folder, result, excludeEntryId); + } + catch { } + } } private bool EnsureOutlookConnected() @@ -146,6 +204,26 @@ namespace OutlookCaseHelper return null; } + /*public bool ExistsInClosed(string trackingId) + { + try + { + if (!EnsureOutlookConnected()) return false; + Outlook.Folder? inboxFolder = + outlookNamespace!.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox) as Outlook.Folder; + if (inboxFolder == null) return false; + + Outlook.Folder? casesFolder = GetFolder(inboxFolder, "Cases"); + if (casesFolder == null) return false; + + Outlook.Folder? closedFolder = GetFolder(casesFolder, "Closed"); + if (closedFolder == null) return false; + + return GetFolderStartingWith(closedFolder, trackingId) != null; + } + catch { return false; } + }*/ + public bool ExistsInClosed(string trackingId) { try @@ -216,6 +294,40 @@ namespace OutlookCaseHelper catch { return null; } } + /* public bool ReopenFromClosed(string trackingId, Outlook.MailItem? triggerEmail = null) + { + if (!EnsureOutlookConnected()) return false; + try + { + Outlook.Folder? inboxFolder = + outlookNamespace!.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox) as Outlook.Folder; + if (inboxFolder == null) return false; + + Outlook.Folder casesFolder = GetOrCreateFolder(inboxFolder, "Cases"); + Outlook.Folder activeFolder = GetOrCreateFolder(casesFolder, "Active"); + Outlook.Folder? closedFolder = GetFolder(casesFolder, "Closed"); + if (closedFolder == null) return false; + + Outlook.Folder? closedTracking = GetFolderStartingWith(closedFolder, trackingId); + if (closedTracking == null) return false; + + string existingName = closedTracking.Name; + closedTracking.MoveTo(activeFolder); + + if (triggerEmail != null) + { + Outlook.Folder? movedFolder = GetFolder(activeFolder, existingName); + if (movedFolder != null) + triggerEmail.Move(movedFolder); + } + + activeRules.Add(existingName); + SaveRules(); + return true; + } + catch { return false; } + }*/ + public bool ReopenFromClosed(string trackingId, Outlook.MailItem? triggerEmail = null) { if (!EnsureOutlookConnected()) return false; @@ -234,22 +346,106 @@ namespace OutlookCaseHelper if (closedTracking == null) return false; string existingName = closedTracking.Name; - closedTracking.MoveTo(activeFolder); - if (triggerEmail != null) + // Verifica se já existe pasta com mesmo nome em Active + Outlook.Folder? existingActive = GetFolder(activeFolder, existingName); + if (existingActive != null) { - Outlook.Folder? movedFolder = GetFolder(activeFolder, existingName); - if (movedFolder != null) - triggerEmail.Move(movedFolder); + var toMove = new List(); + foreach (object item in closedTracking.Items) + if (item is Outlook.MailItem mail) toMove.Add(mail); + foreach (var mail in toMove) + mail.Move(existingActive); + try { closedTracking.Delete(); } catch { } + } + else + { + closedTracking.MoveTo(activeFolder); } + // Move o email trigger — usa try/catch separado para não falhar o resto + if (triggerEmail != null) + { + try + { + Outlook.Folder? targetFolder = GetFolder(activeFolder, existingName); + if (targetFolder != null) + triggerEmail.Move(targetFolder); + } + catch { } + } + + // Adiciona regra — independente do email trigger activeRules.Add(existingName); SaveRules(); return true; } - catch { return false; } + catch (Exception ex) + { + // Se a pasta já foi movida mas a regra não foi adicionada, tenta recuperar + try + { + Outlook.Folder? inboxFolder = + outlookNamespace!.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox) as Outlook.Folder; + Outlook.Folder? casesFolder = GetFolder(inboxFolder!, "Cases"); + Outlook.Folder? activeFolder = GetFolder(casesFolder!, "Active"); + Outlook.Folder? movedFolder = GetFolderStartingWith(activeFolder!, trackingId); + if (movedFolder != null) + { + activeRules.Add(movedFolder.Name); + SaveRules(); + return true; // pasta estava lá, regra foi adicionada + } + } + catch { } + return false; + } } + /* public bool CreateFolderAndMoveEmails(string trackingId, string folderName) + { + if (!EnsureOutlookConnected()) return false; + try + { + Outlook.Folder? inboxFolder = + outlookNamespace!.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox) as Outlook.Folder; + if (inboxFolder == null) return false; + + Outlook.Folder casesFolder = GetOrCreateFolder(inboxFolder, "Cases"); + Outlook.Folder activeFolder = GetOrCreateFolder(casesFolder, "Active"); + Outlook.Folder trackingFolder = GetOrCreateFolder(activeFolder, folderName); + + string filter = $"@SQL=\"urn:schemas:httpmail:subject\" LIKE '%TrackingID#{trackingId}%'"; + + Outlook.Items restricted = inboxFolder.Items.Restrict(filter); + var toMove = new List(); + foreach (object item in restricted) + if (item is Outlook.MailItem mail) toMove.Add(mail); + foreach (var mail in toMove) + mail.Move(trackingFolder); + + Outlook.Folder? sentFolder = + outlookNamespace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail) as Outlook.Folder; + if (sentFolder != null) + { + Outlook.Items restrictedSent = sentFolder.Items.Restrict(filter); + var toMoveSent = new List(); + foreach (object item in restrictedSent) + if (item is Outlook.MailItem mail) toMoveSent.Add(mail); + foreach (var mail in toMoveSent) + mail.Move(trackingFolder); + } + + activeRules.Add(folderName); + SaveRules(); + return true; + } + catch (Exception ex) + { + MessageBox.Show($"Error: {ex.Message}", "Error"); + return false; + } + }*/ public bool CreateFolderAndMoveEmails(string trackingId, string folderName) { if (!EnsureOutlookConnected()) return false; @@ -265,23 +461,24 @@ namespace OutlookCaseHelper string filter = $"@SQL=\"urn:schemas:httpmail:subject\" LIKE '%TrackingID#{trackingId}%'"; - Outlook.Items restricted = inboxFolder.Items.Restrict(filter); - var toMove = new List(); - foreach (object item in restricted) - if (item is Outlook.MailItem mail) toMove.Add(mail); - foreach (var mail in toMove) - mail.Move(trackingFolder); + // Procura em Inbox + MoveFilteredEmails(inboxFolder, filter, trackingFolder); + // Procura em Sent Outlook.Folder? sentFolder = outlookNamespace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail) as Outlook.Folder; if (sentFolder != null) + MoveFilteredEmails(sentFolder, filter, trackingFolder); + + // Procura em todas as outras pastas do utilizador + foreach (Outlook.Folder folder in inboxFolder.Parent.Folders) { - Outlook.Items restrictedSent = sentFolder.Items.Restrict(filter); - var toMoveSent = new List(); - foreach (object item in restrictedSent) - if (item is Outlook.MailItem mail) toMoveSent.Add(mail); - foreach (var mail in toMoveSent) - mail.Move(trackingFolder); + if (folder.Name != "Cases" && + folder.EntryID != inboxFolder.EntryID && + folder.EntryID != sentFolder?.EntryID) + { + try { MoveFilteredEmails(folder, filter, trackingFolder); } catch { } + } } activeRules.Add(folderName); @@ -295,6 +492,20 @@ namespace OutlookCaseHelper } } + private void MoveFilteredEmails(Outlook.Folder source, string filter, Outlook.Folder dest) + { + try + { + Outlook.Items restricted = source.Items.Restrict(filter); + var toMove = new List(); + foreach (object item in restricted) + if (item is Outlook.MailItem mail) toMove.Add(mail); + foreach (var mail in toMove) + mail.Move(dest); + } + catch { } + } + public bool RemoveRuleAndMoveToClosed(string folderName) { if (!EnsureOutlookConnected()) return false; diff --git a/OutlookCaseHelper/Program.cs b/OutlookCaseHelper/Program.cs index 5cd91c4..d4211e8 100644 --- a/OutlookCaseHelper/Program.cs +++ b/OutlookCaseHelper/Program.cs @@ -6,26 +6,10 @@ namespace OutlookCaseHelper internal static class Program { [STAThread] - static void Main(string[] args) + static void Main() { try { - if (args.Length > 0 && args[0] == "/postinstall") - { - string exePath = System.Diagnostics.Process.GetCurrentProcess().MainModule!.FileName; - - var psi = new System.Diagnostics.ProcessStartInfo - { - FileName = exePath, - UseShellExecute = true, - CreateNoWindow = false - }; - - System.Threading.Thread.Sleep(12000); // aguarda 12 segundos - System.Diagnostics.Process.Start(psi); - return; - } - Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); @@ -33,4 +17,4 @@ namespace OutlookCaseHelper catch { } } } -} +} \ No newline at end of file diff --git a/OutlookCaseHelperSetup/OutlookCaseHelperSetup.vdproj b/OutlookCaseHelperSetup/OutlookCaseHelperSetup.vdproj index 780684f..8c57b7a 100644 --- a/OutlookCaseHelperSetup/OutlookCaseHelperSetup.vdproj +++ b/OutlookCaseHelperSetup/OutlookCaseHelperSetup.vdproj @@ -128,20 +128,6 @@ { "CustomAction" { - "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_DD81DF56EF8A4C8E95F2B3F1B9E1759D" - { - "Name" = "8:OutlookCaseHelper.exe" - "Condition" = "8:LAUNCH_APP=\"1\"" - "Object" = "8:_20E8A2E3188C435B800533011482D2FC" - "FileType" = "3:2" - "InstallAction" = "3:1" - "Arguments" = "8:/postinstall" - "EntryPoint" = "8:" - "Sequence" = "3:1" - "Identifier" = "8:_BB6F4E07_E0B7_4049_9B93_6BD9670746E7" - "InstallerClass" = "11:FALSE" - "CustomActionData" = "8:" - } } "DefaultFeature" { @@ -374,7 +360,7 @@ "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:Outlook Case Manager" "ProductCode" = "8:{D8A20294-9095-4817-808A-8B9144CD168F}" - "PackageCode" = "8:{F9F5DDD8-2BB9-40B2-89C9-074DFFBBBC2A}" + "PackageCode" = "8:{8F8E7EE2-D7ED-47C6-BD5F-617C4F88BEDA}" "UpgradeCode" = "8:{AAF43788-D89F-4285-AC74-CA5E1413DADC}" "AspNetVersion" = "8:2.0.50727.0" "RestartWWWService" = "11:FALSE" @@ -704,262 +690,6 @@ } } } - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_7D04F05A2A1149FCB26D59521B1E8172" - { - "Sequence" = "3:110" - "DisplayName" = "8:Checkboxes (A)" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdCustomCheck1Dlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - "BannerText" - { - "Name" = "8:BannerText" - "DisplayName" = "8:#1014" - "Description" = "8:#1114" - "Type" = "3:3" - "ContextData" = "8:" - "Attributes" = "3:0" - "Setting" = "3:2" - "Value" = "8:Launch options" - "DefaultValue" = "8:#1214" - "UsePlugInResources" = "11:TRUE" - } - "BodyText" - { - "Name" = "8:BodyText" - "DisplayName" = "8:#1015" - "Description" = "8:#1115" - "Type" = "3:3" - "ContextData" = "8:" - "Attributes" = "3:0" - "Setting" = "3:2" - "Value" = "8:Select additional options" - "DefaultValue" = "8:#1215" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox1Label" - { - "Name" = "8:Checkbox1Label" - "DisplayName" = "8:#1034" - "Description" = "8:#1134" - "Type" = "3:3" - "ContextData" = "8:" - "Attributes" = "3:0" - "Setting" = "3:2" - "Value" = "8:Launch Outlook Case Manager after installation" - "DefaultValue" = "8:#1234" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox1Property" - { - "Name" = "8:Checkbox1Property" - "DisplayName" = "8:#1030" - "Description" = "8:#1130" - "Type" = "3:14" - "ContextData" = "8:Public" - "Attributes" = "3:2" - "Setting" = "3:2" - "Value" = "8:LAUNCH_APP" - "DefaultValue" = "8:CHECKBOXA1" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox1Value" - { - "Name" = "8:Checkbox1Value" - "DisplayName" = "8:#1038" - "Description" = "8:#1138" - "Type" = "3:2" - "ContextData" = "8:Unchecked=;Checked=1" - "Attributes" = "3:0" - "Setting" = "3:2" - "Value" = "8:1" - "DefaultValue" = "8:" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox1Visible" - { - "Name" = "8:Checkbox1Visible" - "DisplayName" = "8:#1026" - "Description" = "8:#1126" - "Type" = "3:5" - "ContextData" = "8:1;True=1;False=0" - "Attributes" = "3:0" - "Setting" = "3:0" - "Value" = "3:1" - "DefaultValue" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox2Label" - { - "Name" = "8:Checkbox2Label" - "DisplayName" = "8:#1035" - "Description" = "8:#1135" - "Type" = "3:3" - "ContextData" = "8:" - "Attributes" = "3:0" - "Setting" = "3:1" - "Value" = "8:#1235" - "DefaultValue" = "8:#1235" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox2Property" - { - "Name" = "8:Checkbox2Property" - "DisplayName" = "8:#1031" - "Description" = "8:#1131" - "Type" = "3:14" - "ContextData" = "8:Public" - "Attributes" = "3:2" - "Setting" = "3:2" - "Value" = "8:CHECKBOXA2" - "DefaultValue" = "8:CHECKBOXA2" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox2Value" - { - "Name" = "8:Checkbox2Value" - "DisplayName" = "8:#1039" - "Description" = "8:#1139" - "Type" = "3:2" - "ContextData" = "8:Unchecked=;Checked=1" - "Attributes" = "3:0" - "Setting" = "3:2" - "Value" = "8:" - "DefaultValue" = "8:" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox2Visible" - { - "Name" = "8:Checkbox2Visible" - "DisplayName" = "8:#1027" - "Description" = "8:#1127" - "Type" = "3:5" - "ContextData" = "8:1;True=1;False=0" - "Attributes" = "3:0" - "Setting" = "3:0" - "Value" = "3:0" - "DefaultValue" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox3Label" - { - "Name" = "8:Checkbox3Label" - "DisplayName" = "8:#1036" - "Description" = "8:#1136" - "Type" = "3:3" - "ContextData" = "8:" - "Attributes" = "3:0" - "Setting" = "3:1" - "Value" = "8:#1236" - "DefaultValue" = "8:#1236" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox3Property" - { - "Name" = "8:Checkbox3Property" - "DisplayName" = "8:#1032" - "Description" = "8:#1132" - "Type" = "3:14" - "ContextData" = "8:Public" - "Attributes" = "3:2" - "Setting" = "3:2" - "Value" = "8:CHECKBOXA3" - "DefaultValue" = "8:CHECKBOXA3" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox3Value" - { - "Name" = "8:Checkbox3Value" - "DisplayName" = "8:#1040" - "Description" = "8:#1140" - "Type" = "3:2" - "ContextData" = "8:Unchecked=;Checked=1" - "Attributes" = "3:0" - "Setting" = "3:2" - "Value" = "8:" - "DefaultValue" = "8:" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox3Visible" - { - "Name" = "8:Checkbox3Visible" - "DisplayName" = "8:#1028" - "Description" = "8:#1128" - "Type" = "3:5" - "ContextData" = "8:1;True=1;False=0" - "Attributes" = "3:0" - "Setting" = "3:0" - "Value" = "3:0" - "DefaultValue" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox4Label" - { - "Name" = "8:Checkbox4Label" - "DisplayName" = "8:#1037" - "Description" = "8:#1137" - "Type" = "3:3" - "ContextData" = "8:" - "Attributes" = "3:0" - "Setting" = "3:1" - "Value" = "8:#1237" - "DefaultValue" = "8:#1237" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox4Property" - { - "Name" = "8:Checkbox4Property" - "DisplayName" = "8:#1033" - "Description" = "8:#1133" - "Type" = "3:14" - "ContextData" = "8:Public" - "Attributes" = "3:2" - "Setting" = "3:2" - "Value" = "8:CHECKBOXA4" - "DefaultValue" = "8:CHECKBOXA4" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox4Value" - { - "Name" = "8:Checkbox4Value" - "DisplayName" = "8:#1041" - "Description" = "8:#1141" - "Type" = "3:2" - "ContextData" = "8:Unchecked=;Checked=1" - "Attributes" = "3:0" - "Setting" = "3:2" - "Value" = "8:" - "DefaultValue" = "8:" - "UsePlugInResources" = "11:TRUE" - } - "Checkbox4Visible" - { - "Name" = "8:Checkbox4Visible" - "DisplayName" = "8:#1029" - "Description" = "8:#1129" - "Type" = "3:5" - "ContextData" = "8:1;True=1;False=0" - "Attributes" = "3:0" - "Setting" = "3:0" - "Value" = "3:0" - "DefaultValue" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - } - } "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_8D58EEEC23E14DBC9F4D9DB32472B784" { "Sequence" = "3:300" diff --git a/OutlookCaseManager.sln b/OutlookCaseManager.sln index 74561cf..35f484e 100644 --- a/OutlookCaseManager.sln +++ b/OutlookCaseManager.sln @@ -9,6 +9,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ProjectSection(SolutionItems) = preProject App.config = App.config OutlookCaseHelper\bin\Debug\net8.0-windows\casenew.ico = OutlookCaseHelper\bin\Debug\net8.0-windows\casenew.ico + ..\..\..\Downloads\README.md = ..\..\..\Downloads\README.md EndProjectSection EndProject Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "OutlookCaseHelperSetup", "OutlookCaseHelperSetup\OutlookCaseHelperSetup.vdproj", "{45984EC3-3682-760C-C1F0-4987692FB84A}"