Programowanie Windows Mobile

Środowisko .NET do urządzeń mobilnych czyni z komórek z systemem Microsoftu istny raj dla programistów. Do napisania pierwszego programu wystarczy chwila zastanowienia, a dobrą aplikację można przygotować w ciągu kilku godzin!


Środowisko .NET do urządzeń mobilnych czyni z komórek z systemem Microsoftu istny raj dla programistów. Do napisania pierwszego programu wystarczy chwila zastanowienia, a dobrą aplikację można przygotować w ciągu kilku godzin!

Windows Mobile jest dobrym środowiskiem testowym dla programistów z jeszcze jednego powodu: deweloperzy Microsoftu w wielu miejscach zapomnieli o ergonomii. Jako dobry przykład "użyteczności" rozumianej inaczej można tu podać funkcję dodawania kontaktu. Skorzystanie z niej w systemie Windows Mobile wymaga przejścia prawie czterdziestu (!) różnych pól, a w tym tak przydatnych, jak nazwisko asystenta, menedżera, numer pagera, czy też "Radio tel", cokolwiek to jest. W WM 5.0 i starszych brakuje natomiast naprawdę przydatnych funkcji, np. filtrowania listy kontaktów według zadanych kryteriów. Tego rodzaju drobiazgi powodują, że używanie konkurencji - w tym urządzeń z systemami Symbiana - jest przyjemnością, a w wypadku sprzętu z Windows Mobile nieustannie pojawia się jakieś "ale"...

Na szczęście zawsze pozostaje inna droga: własne programy. Korzystając z narzędzi Microsoftu, pokażemy, jak rozpocząć tworzenie własnego systemu książki telefonicznej (menedżera kontaktów) do telefonu z WM 5.0. Do tego celu będą nam potrzebne środowisko programistyczne Microsoft Visual Studio 2005 oraz biblioteka Windows Mobile SDK.

Kieszonkowy Outlook

Projektowanie głównego formularza w Visual Studio polega przede wszystkim na zręcznym operowaniu myszą.

Projektowanie głównego formularza w Visual Studio polega przede wszystkim na zręcznym operowaniu myszą.

Telefon wyposażony w system Windows Mobile użytkownik otrzymuje zwykle razem z zestawem standardowych aplikacji, takich jak Excel Mobile, PowerPoint Mobile czy Word Mobile - wszystkie są "kieszonkowymi" odpowiednikami desktopowych aplikacji znanych z pakietu biurowego Microsoft Office. Gdzieś w tle działa natomiast kolejna aplikacja w swojej mobilnej wersji, Pocket Outlook. Zarządzanie kontaktami, notatkami i zadaniami wiąże się z wieloma miejscami i dlatego "mały" Outlook pełni tutaj funkcję serwera udostępniającego dane na życzenie aplikacji.

Aby rozpocząć tworzenie naszego programu, uruchom Visual Studio i z menu wybierz File | New | Project. Następnie rozwiń gałąź Visual C# | Smart Device, wybierz Windows Mobile 5.0 Pocket PC i jako szablon projektu zaznacz Device Application.

Na formularz, który się pojawi, przeciągnij z przybornika (Toolbox) kontrolkę TabControl, dostępną w grupie Device Containers. Ustaw jej właściwość Dock na wartość Fill, aby wypełniła całą powierzchnię okna, po czym dodaj jeszcze dwie karty, klikając Add Tab w panelu właściwości obiektu bądź wybierając tę opcję z menu kontekstowego kontrolki. Następnie w panelu Properties kliknij właściwość TabPages kontrolki, wybierając mały przycisk obok napisu "(Collection)". Pojawi się edytor kolekcji, który umożliwi na przykład nadawanie nazw kartom. Nazwij je: "Wszystkie", "Ulubione" i "Klawiatura". Na razie ostatnim etapem budowy interfejsu użytkownika będzie przeciągnięcie na kartę Wszystkie kontrol-ki listy (ListBox), znajdującej się w zasobniku w grupie Common Device Controls, i nadanie jej nazwy lstAll.

Pora na napisanie pierwszego wiersza kodu, jednak przedtem trzeba jeszcze do projektu dodać dwie referencje. W panelu widoku projektu - Solution Explorer - kliknij prawym przyciskiem myszy gałąź References projektu, z menu kontekstowego wybierz opcję Add Reference i na liście, która się pojawi, wskaż Microsoft.WindowsMobile.PocketOutlook oraz Microsoft.Windows-Mobile.Telephony. Teraz kliknij prawym przyciskiem myszy element Form1.cs i z menu wybierz opcję View Code. Pojawi się okienko z kodem źródłowym formularza i możesz już zapoznawać się z kieszonkową wersją Outlooka. Najpierw do używanych przestrzeni nazw pod ostatnim wierszem ze słowem kluczowym using dopisz wiersz:

using Microsoft.WindowsMobile.PocketOutlook;

Potem dodaj do klasy zmienną statyczną outlook:

public static OutlookSession outlook = new OutlookSession();

Na koniec w konstruktorze, zaraz po zainicjowaniu formularza (InitializeComponent()), dopisz kod, który wypełni listę kontaktami pobieranymi z Outlooka:

foreach (Contact contact in outlook.Contacts.Items)

{

lstAll.Items.Add(contact);

}

Klasa OutlookSession jest głównym interfejsem do komunikacji z programem Pocket Outlook i pobierania wszystkich udostępnianych przez niego danych, więc właściwie należy utworzyć jeden nowy obiekt tego typu, przechować go i udostępnić wszystkim modułom tworzonego programu. Z tego powodu udostępniliśmy go jako publiczną zmienną statyczną w klasie Form1.

Na razie nasz program robi niewiele. Wylicza jedynie wszystkie kontakty w książce adresowej i dodaje je do listy. Ponieważ klasa Contact ma przeciążoną metodę ToString(), dodając te obiekty do listy, otrzymasz ładnie sformatowane teksty w postaci domyślnej wyświetlanej nazwy kontaktu, np. "Kowalski, Jan". Przed pierwszym uruchomieniem programu można jeszcze zmienić tytuł głównego formularza na "Kontakty+" i usunąć z dołu pasek menu mainMenu1, z którego nie będziesz korzystać.

Dodajemy kontakty

Jak już wspomnieliśmy, Windows Mobile pozwala na przechowanie prawie czterdziestu różnych informacji o pojedynczej osobie - jak teraz w prosty sposób dostać się do potrzebnej pozycji? W Visual Studio wystarczy po identyfikatorze zmiennej wpisać znak "." (kropka), a środowisko zaraz podpowie nam wszystkie dostępne metody i zmienne klasy Contact. Jak widać, opcji jest wiele, np. odpowiednia właściwość dla każdej porcji informacji o kontakcie, a także zdarzenia Changed dla każdej z nich, wywoływane w chwili, kiedy poszczególne dane kontaktu zostaną gdzieś zmienione.