diff --git a/OutlookCaseHelper/Form1.cs b/OutlookCaseHelper/Form1.cs index df0d842..7815531 100644 --- a/OutlookCaseHelper/Form1.cs +++ b/OutlookCaseHelper/Form1.cs @@ -169,6 +169,7 @@ namespace OutlookCaseHelper trayMenu.Items.Add("Settings", null, Settings_Click); trayMenu.Items.Add("Start with Windows", null, ToggleStartup_Click); trayMenu.Items.Add("-"); + trayMenu.Items.Add("About", null, About_Click); trayMenu.Items.Add("Exit", null, Exit_Click); trayIcon = new NotifyIcon(); @@ -944,5 +945,164 @@ namespace OutlookCaseHelper base.OnFormClosing(e); } } + private void About_Click(object? sender, EventArgs e) + { + var form = new AboutForm(); + form.ShowDialog(); + } + + private class AboutForm : Form + { + public AboutForm() + { + this.Text = "About Outlook Case Manager"; + this.Size = new Size(400, 340); + this.MinimumSize = new Size(400, 340); + this.MaximumSize = new Size(400, 340); + this.FormBorderStyle = FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.StartPosition = FormStartPosition.CenterScreen; + try { this.Icon = new Icon(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "casenew.ico")); } catch { } + + // Ícone grande + var pictureBox = new PictureBox + { + Left = 160, + Top = 20, + Width = 64, + Height = 64, + SizeMode = PictureBoxSizeMode.StretchImage + }; + try { pictureBox.Image = new Icon(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "casenew.ico")).ToBitmap(); } catch { } + + // Nome da app + var lblName = new Label + { + Text = "Outlook Case Manager", + Left = 20, + Top = 95, + Width = 350, + Height = 28, + TextAlign = ContentAlignment.MiddleCenter, + Font = new Font("Segoe UI", 14, FontStyle.Bold) + }; + + // Versão + var lblVersion = new Label + { + Text = "Version 1.0.0", + Left = 20, + Top = 125, + Width = 350, + Height = 22, + TextAlign = ContentAlignment.MiddleCenter, + Font = new Font("Segoe UI", 10, FontStyle.Regular), + ForeColor = Color.Gray + }; + + // Data de lançamento + var lblDate = new Label + { + Text = "Released: March 2026", + Left = 20, + Top = 148, + Width = 350, + Height = 20, + TextAlign = ContentAlignment.MiddleCenter, + Font = new Font("Segoe UI", 9, FontStyle.Regular), + ForeColor = Color.Gray + }; + + // Descrição + var lblDesc = new Label + { + Text = "Automatically organizes Outlook emails by TrackingID\ninto folders, keeping your inbox clean and cases managed.", + Left = 30, + Top = 178, + Width = 330, + Height = 40, + TextAlign = ContentAlignment.MiddleCenter, + Font = new Font("Segoe UI", 9, FontStyle.Regular) + }; + + // Separador + var separator = new Label + { + Left = 20, + Top = 228, + Width = 350, + Height = 1, + BorderStyle = BorderStyle.Fixed3D + }; + + // Created by + var lblCreatedBy = new Label + { + Text = "Created by Wellington Ribeiro", + Left = 20, + Top = 238, + Width = 350, + Height = 18, + TextAlign = ContentAlignment.MiddleCenter, + Font = new Font("Segoe UI", 9, FontStyle.Bold) + }; + + // Email — clicável + var lblEmail = new LinkLabel + { + Text = "wribeiro@microsoft.com", + Left = 20, + Top = 258, + Width = 350, + Height = 18, + TextAlign = ContentAlignment.MiddleCenter, + Font = new Font("Segoe UI", 9, FontStyle.Regular) + }; + lblEmail.LinkClicked += (s, e) => + { + try + { + System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo + { + FileName = "mailto:wribeiro@microsoft.com?subject=Outlook Case Manager - Feedback", + UseShellExecute = true + }); + } + catch { } + }; + + // Sugestões + var lblSuggestions = new Label + { + Text = "For suggestions or bugs, contact the email above.", + Left = 20, + Top = 278, + Width = 350, + Height = 18, + TextAlign = ContentAlignment.MiddleCenter, + Font = new Font("Segoe UI", 8, FontStyle.Italic), + ForeColor = Color.Gray + }; + + // Botão fechar + var btnClose = new Button + { + Text = "Close", + Left = 150, + Top = 302, + Width = 90, + DialogResult = DialogResult.Cancel + }; + + this.Controls.AddRange(new Control[] + { + pictureBox, lblName, lblVersion, lblDate, lblDesc, + separator, lblCreatedBy, lblEmail, lblSuggestions, btnClose + }); + + this.CancelButton = btnClose; + } + } } } \ No newline at end of file diff --git a/OutlookCaseHelper/Program.cs b/OutlookCaseHelper/Program.cs index d4211e8..8954a2a 100644 --- a/OutlookCaseHelper/Program.cs +++ b/OutlookCaseHelper/Program.cs @@ -1,3 +1,7 @@ +// Outlook Case Manager +// Version 1.0.0 | March 2026 +// Author: Wellington Ribeiro wribeiro@microsoft.com + using System; using System.Windows.Forms; diff --git a/OutlookCaseHelper/README.md b/OutlookCaseHelper/README.md deleted file mode 100644 index cac99ca..0000000 --- a/OutlookCaseHelper/README.md +++ /dev/null @@ -1,190 +0,0 @@ -# Outlook Case Helper - -A Windows system tray application that automatically organizes Outlook emails by TrackingID into folders. - ---- - -## Requirements - -- Windows 10/11 -- Microsoft Outlook (classic) installed and configured -- .NET 8.0 Runtime - ---- - -## Installation - -1. Run `OutlookCaseHelperSetup.msi` -2. Follow the installation wizard -3. Launch the app from the Start Menu — **Outlook Case Helper** -4. The app runs in the system tray (bottom-right corner of the taskbar) - ---- - -## How It Works - -The app monitors your Outlook Inbox and Sent folders in real time. When an email arrives or is sent with a subject containing `TrackingID#`, it is automatically moved to the corresponding folder under: - -``` -Inbox > Cases > Active > -``` - -When a case is closed, the folder is moved to: - -``` -Inbox > Cases > Closed > -``` - ---- - -## Features - -### Create Rule (Selected Email) -Right-click the tray icon → **Create Rule (Selected Email)** - -- Select an email in Outlook first -- The app reads the `TrackingID#` from the subject automatically -- Optionally add a name to the folder (e.g. `123456 | Client Name`) -- All existing emails with that TrackingID are moved immediately -- Future emails are moved automatically in real time - -> If the case already exists in **Closed**, it is moved back to **Active** automatically — no new folder is created. - ---- - -### Create Rule (Manual ID) -Right-click the tray icon → **Create Rule (Manual ID)** - -- Manually type a TrackingID number -- Optionally add a name to the folder -- Searches and moves all matching emails from Inbox and Sent - ---- - -### Remove Rule (Selected Email) -Right-click the tray icon → **Remove Rule (Selected Email)** - -- Select an email in Outlook first -- The app reads the TrackingID and removes the active rule -- The folder is moved from **Active** to **Closed** -- Monitoring stops for that TrackingID - ---- - -### Remove Rule (Manual ID) -Right-click the tray icon → **Remove Rule (Manual ID)** - -- Manually type a TrackingID number to remove -- Same behavior as above - ---- - -### Run All Rules Now -Right-click the tray icon → **Run All Rules Now** - -- Scans all folders in the mailbox -- Moves any emails matching active rules to the correct folders -- Useful after the app was closed for a period - ---- - -### Settings -Right-click the tray icon → **Settings** - -Configure keyboard shortcuts: - -| Action | Default Shortcut | -|---|---| -| Create Rule | Alt + 1 | -| Remove Rule | Alt + 2 | - -Modifiers available: **Alt**, **Ctrl**, **Shift** -Keys available: F1–F12, 0–9, A–Z - -Also available in Settings: -- **View Rules File** — opens `active_rules.json` in Notepad -- **Reload Rules** — reloads rules from file without restarting the app - ---- - -### Start with Windows -Right-click the tray icon → **Start with Windows** - -- Toggle whether the app starts automatically when Windows starts -- Checkmark indicates current state - ---- - -## Folder Structure - -``` -Inbox -└── Cases - ├── Active - │ ├── 123456 | Client Name - │ └── 789012 - └── Closed - └── 654321 | Old Case -``` - ---- - -## Rules File - -Rules are stored at: -``` -C:\Users\\AppData\Roaming\OutlookCaseHelper\active_rules.json -``` - -You can edit this file manually in Notepad (via Settings → View Rules File) and reload without restarting. - ---- - -## Email Subject Format - -The app looks for emails with subjects containing: -``` -TrackingID# -``` - -Examples: -- `Case update - TrackingID#1234567890` -- `Re: Support ticket TrackingID#9876543210123456` - -The number can be any length. Everything before `TrackingID#` is ignored. - ---- - -## Limitations - -- **Classic Outlook only** — does not work with New Outlook (web-based). New Outlook support via Microsoft Graph API is planned. -- **Single mailbox** — monitors only the primary Outlook account. Shared mailboxes are not supported. -- **Outlook must be open** — the app connects to a running Outlook instance. If Outlook is closed, rules are saved but monitoring pauses until Outlook is opened again. -- **Subject matching only** — rules are matched by subject line. Emails without `TrackingID#` in the subject are ignored. -- **No undo** — moving folders to Closed or Active cannot be undone through the app. Use Outlook directly to move folders manually if needed. -- **Manual file editing** — if you edit `active_rules.json` manually, use **Reload Rules** in Settings or restart the app for changes to take effect. -- **Case sensitivity** — `TrackingID#` is case-sensitive. `trackingid#` or `TRACKINGID#` will not be matched. - ---- - -## Keyboard Shortcuts - -Shortcuts work globally — even when Outlook is in focus. - -| Shortcut | Action | -|---|---| -| Alt + 1 (default) | Create Rule from selected email | -| Alt + 2 (default) | Remove Rule from selected email | - -Shortcuts can be changed in **Settings**. - ---- - -## Uninstall - -Go to **Control Panel → Programs → Uninstall a program** → select **Outlook Case Helper** → Uninstall. - -Rules and settings stored in `AppData` are not removed automatically. Delete the folder manually if needed: -``` -C:\Users\\AppData\Roaming\OutlookCaseHelper\ -``` diff --git a/README.md b/README.md index cac99ca..3b5ea69 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,11 @@ -# Outlook Case Helper +# Outlook Case Manager A Windows system tray application that automatically organizes Outlook emails by TrackingID into folders. +**Version:** 1.0.0 +**Released:** March 2026 +**Author:** Wellington Ribeiro — wribeiro@microsoft.com + --- ## Requirements @@ -37,15 +41,32 @@ Inbox > Cases > Closed > --- +## Tray Menu + +Right-click the tray icon to access all features: + +| Menu Item | Description | +|---|---| +| Create Rule (Selected Email) | Creates a rule from the selected email in Outlook | +| Create Rule (Manual ID) | Creates a rule by manually entering a TrackingID | +| Remove Rule (Selected Email) | Removes the rule for the selected email's TrackingID | +| Remove Rule (Manual ID) | Removes a rule by manually entering a TrackingID | +| Run All Rules Now | Scans all mailbox folders and applies all active rules | +| View Active Rules | Opens the dashboard to manage all active rules | +| Settings | Configure keyboard shortcuts and rule file options | +| Start with Windows | Toggle automatic startup with Windows | +| About | App information, version and contact | +| Exit | Closes the application | + +--- + ## Features ### Create Rule (Selected Email) -Right-click the tray icon → **Create Rule (Selected Email)** - - Select an email in Outlook first - The app reads the `TrackingID#` from the subject automatically - Optionally add a name to the folder (e.g. `123456 | Client Name`) -- All existing emails with that TrackingID are moved immediately +- All existing emails with that TrackingID are moved immediately from all folders - Future emails are moved automatically in real time > If the case already exists in **Closed**, it is moved back to **Active** automatically — no new folder is created. @@ -53,45 +74,67 @@ Right-click the tray icon → **Create Rule (Selected Email)** --- ### Create Rule (Manual ID) -Right-click the tray icon → **Create Rule (Manual ID)** - - Manually type a TrackingID number - Optionally add a name to the folder -- Searches and moves all matching emails from Inbox and Sent +- Searches and moves all matching emails from all folders --- ### Remove Rule (Selected Email) -Right-click the tray icon → **Remove Rule (Selected Email)** - - Select an email in Outlook first - The app reads the TrackingID and removes the active rule - The folder is moved from **Active** to **Closed** - Monitoring stops for that TrackingID +- Confirmation popup before closing the case --- ### Remove Rule (Manual ID) -Right-click the tray icon → **Remove Rule (Manual ID)** - - Manually type a TrackingID number to remove - Same behavior as above --- ### Run All Rules Now -Right-click the tray icon → **Run All Rules Now** - -- Scans all folders in the mailbox +- Scans **all folders** in the mailbox recursively - Moves any emails matching active rules to the correct folders -- Useful after the app was closed for a period +- Useful after the app was closed for a period or to do a full cleanup +- Shows a tray notification when complete + +--- + +### View Active Rules (Dashboard) +Opens an interactive dashboard to manage all active rules. + +| Button | Description | +|---|---| +| Add Rule | Creates a new rule directly from the dashboard | +| Rename | Renames the selected rule and its Outlook folder | +| Close Case | Moves the selected folder to Closed (with confirmation) | +| Reload Rules | Reloads rules from the JSON file without restarting | +| Refresh | Updates the email count for all rules | +| Close | Closes the dashboard | + +The dashboard shows for each rule: +- **Folder Name** — full name including optional label +- **TrackingID** — the numeric ID extracted from the folder name +- **Emails** — current number of emails in the folder + +> Double-clicking a rule opens the Rename dialog directly. --- ### Settings -Right-click the tray icon → **Settings** +Configure keyboard shortcuts and rule file options. -Configure keyboard shortcuts: +| Section | Description | +|---|---| +| Create Rule shortcut | Keyboard shortcut to create a rule from selected email | +| Remove Rule shortcut | Keyboard shortcut to remove a rule from selected email | +| View Rules | Opens `active_rules.json` in Notepad | +| Reload Rules | Reloads rules from file without restarting | + +Default shortcuts: | Action | Default Shortcut | |---|---| @@ -101,17 +144,17 @@ Configure keyboard shortcuts: Modifiers available: **Alt**, **Ctrl**, **Shift** Keys available: F1–F12, 0–9, A–Z -Also available in Settings: -- **View Rules File** — opens `active_rules.json` in Notepad -- **Reload Rules** — reloads rules from file without restarting the app - --- ### Start with Windows -Right-click the tray icon → **Start with Windows** - -- Toggle whether the app starts automatically when Windows starts +- Toggles whether the app starts automatically when Windows starts - Checkmark indicates current state +- Stored in the Windows Registry under `HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run` + +--- + +### About +Displays app information including version, release date, description, and contact details. --- @@ -129,17 +172,6 @@ Inbox --- -## Rules File - -Rules are stored at: -``` -C:\Users\\AppData\Roaming\OutlookCaseHelper\active_rules.json -``` - -You can edit this file manually in Notepad (via Settings → View Rules File) and reload without restarting. - ---- - ## Email Subject Format The app looks for emails with subjects containing: @@ -151,19 +183,26 @@ Examples: - `Case update - TrackingID#1234567890` - `Re: Support ticket TrackingID#9876543210123456` -The number can be any length. Everything before `TrackingID#` is ignored. +The number can be any length. Everything before and after `TrackingID#` is ignored. --- -## Limitations +## Rules File -- **Classic Outlook only** — does not work with New Outlook (web-based). New Outlook support via Microsoft Graph API is planned. -- **Single mailbox** — monitors only the primary Outlook account. Shared mailboxes are not supported. -- **Outlook must be open** — the app connects to a running Outlook instance. If Outlook is closed, rules are saved but monitoring pauses until Outlook is opened again. -- **Subject matching only** — rules are matched by subject line. Emails without `TrackingID#` in the subject are ignored. -- **No undo** — moving folders to Closed or Active cannot be undone through the app. Use Outlook directly to move folders manually if needed. -- **Manual file editing** — if you edit `active_rules.json` manually, use **Reload Rules** in Settings or restart the app for changes to take effect. -- **Case sensitivity** — `TrackingID#` is case-sensitive. `trackingid#` or `TRACKINGID#` will not be matched. +Rules are stored at: +``` +C:\Users\\AppData\Roaming\OutlookCaseHelper\active_rules.json +``` + +You can edit this file manually: +1. Open **Settings → View Rules** to open the file in Notepad +2. Edit the JSON array — each entry is a folder name string +3. Click **Settings → Reload Rules** to apply changes without restarting + +Example file: +```json +["123456 | Client Name", "789012", "654321 | Old Project"] +``` --- @@ -180,11 +219,31 @@ Shortcuts can be changed in **Settings**. --- +## Limitations + +- **Classic Outlook only** — does not work with New Outlook (web-based). New Outlook support via Microsoft Graph API is planned for a future version. +- **Single mailbox** — monitors only the primary Outlook account. Shared mailboxes are not supported. +- **Outlook must be open** — the app connects to a running Outlook instance. If Outlook is closed, rules are saved but monitoring pauses until Outlook is reopened. +- **Subject matching only** — rules are matched by subject line. Emails without `TrackingID#` in the subject are ignored. +- **Case sensitivity** — `TrackingID#` is case-sensitive. `trackingid#` or `TRACKINGID#` will not be matched. +- **No undo** — moving folders to Closed or Active cannot be undone through the app. Use Outlook directly to move folders manually if needed. + +--- + ## Uninstall -Go to **Control Panel → Programs → Uninstall a program** → select **Outlook Case Helper** → Uninstall. +Go to **Control Panel → Programs → Uninstall a program** → select **Outlook Case Manager** → Uninstall. Rules and settings stored in `AppData` are not removed automatically. Delete the folder manually if needed: ``` C:\Users\\AppData\Roaming\OutlookCaseHelper\ ``` + +--- + +## Contact + +**Wellington Ribeiro** +wribeiro@microsoft.com + +For suggestions or bug reports, please send an email with the subject **Outlook Case Manager - Feedback**.