Outlook i addin 2/2

Zgodnie z zapowiedzią w pierwszej części dzisiaj pokażę, jak:

  1. dodać grupę do istniejącej zakładki
  2. podpiąć formularz
  3. przekazać istniejący obiekt spotkania do formularza
  4. przekazać dane do exchange’a
  5. odnaleźć się w dokumentacji

Outlook i addin 1/2

[1] Aby dodać stworzoną przez nas grupę do istniejącej zakładki wystarczy zrobić tak naprawdę 2 rzeczy:

  • zmienić w właściwościach kontrolki RibbonType właściwość z grupy/sekcji/zakładki/? ControlId -> ControlIdType z Custom na Office
  • ustawić OfficeId na istniejące np. TabAppointment

Skąd wiedziałem jaką wartość ustawić w OfficeId? Znalazłem w dokumentacji. W dokumentacji są pliki xlsx z listami kontrolek i tam w pliku outlookexplorercontrols.xslx ją sobie znalazłem…  Chociaż bardziej cool byłoby gdybym napisał, że zgadłem 

OfficeId TabAppointment

Inne przykładowe wartości pola OfficeId:

  • None
  • TabMail
  • TabAttachments
  • TabCalendar
  • TabContacts
  • TabSendReceive
  • TabMessage
  • TabCalendarTableView
  • TabNotes

Lista kontrolek outlook: outlook explorer controls.xlsx

[2] Dodawanie własnych formularzy jest proste jak budowa cepa  Dodajesz nowy element, wybierasz „Outlook Form Region”.

add new form Addin

Pojawia się okienko wyboru – wybieramy „Design a new form region”.

add new form Addin

Po dodaniu formularza i wrzuceniu na niego testowej „label’ki” uruchamiany aplikację i sprawdzamy efekt. Powinno się pokazać coś takiego:

OfficeFormRegion

Nasza grupa „Pogodynka” przeniosła się do zakładki spotkanie, a do grupy pokazywanie dodał się formularz.

Przedstawiłem Outlook Form Region tylko dla zajawki  Teraz go usuwam i dodaje nowy element do projektu z grupy Windows Forms -> Windows Forms.

W klasie SunTab dodaje metodę ShowForm która ma pokazać świeżo dodaną kontrolkę po kliknięciu przycisku „Sprawdź pogodę”.

Zaprojektowałem prosty formularz z kontrolkami numeric i button. Do zdarzenia kliknięcia przycisku podpiąłem wyświetlanie kolejnego okna.

Odpalamy aplikację i rzeczywiście, mamy w naszej grupie przycisk, który po kliknięciu reaguje stworzeniem nowego okna, w którym możemy podać temperaturę, a następnie ją wyświetlić 

kontrolkaWindowsFormsOutlook

[3] Ok, mamy już kilka ciekawych rzeczy związanych głównie z GUI, ale jak przekazać dane?  Oczywiście możemy dodać nowy formularz, który będzie dodawał coś do tytułu/treści wiadomości, ale to nie jest fajne.

Fajne byłoby dodanie do wiadomości, naszego własnego atrybutu, do którego moglibyśmy wrzucić co tylko nam się podoba.

Spotkanie w Outlooku to nic innego jak wiadomość email, do której można dodać swoje „extended properties”.   Wspomniane „extended properties” obsługiwane są jedynie przez Exchange’a.

Pierwszym krokiem jest uczynienie publicznym i przekazanie do naszego formularza referencji do obiektu spotkania.

W głównej klasie AddIn’a dodajemy inspektora, który przy starcie ustawi nam obiekt spotkania.

W zakładce SunTab przechodzimy do metody pokazującej formularz i przekazujemy spotkanie np. przez konstruktor.

Po czym dodajemy do niego parametr:

[4]  Teraz wystarczy tylko do obiektu spotkania dodać coś od siebie. Jak to zrobić? Również całkiem prosto – pod warunkiem, że się wie, albo ma się dobry przykład 

Do formularza dodajemy metodę inicjowania właściwości i modyfikujemy metodę wyświetlającą wiek – teraz będzie również przekazywała tajną informację 

Nie pytajcie dlaczego zrobiłem dwa razy InitProperty w try catch… to exchange  Z jakiegoś magicznego powodu pojedyńcza inicjalizacja rzuca wyjątek – rozwiązanie jest banalne… try catch i po sprawie… trudno.

W każdym razie, teraz po kliknięciu na przycisk, powinna się dodać do wiadomości wysyłanej do Exchange’a, informacja o wieku. Jeżeli macie Exchange’a, to można to w łatwy sposób sprawdzić, a jeżeli nie… to cóż 

[5] Poruszanie się po dokumentacji jest dosyć ciekawe i niestety nie ma na to złotego środka. Jedyny tip od mnie to ten zawarty w punkcie pierwszym. Jeżeli szukasz – dajmy na to… nazwy zakładki zgadnij ją sobie w excelu 

Have Fun! 

Projekt w całości dostępny na github