niedziela, 18 października 2009

Pierwsze kroki w Carbide C++

Od pewnego czasu obserwuję bardzo dużą popularność wśród programistów potrzebę programowania na Windows Mobile czy Androida i co najciekawsze na iPhone. Główny sukces tkwi w tym że programiści otrzymują potężne środowisko IDE, dzięki któremu projektant przed klientem szybko zrobi najpierw prototyp interfejsu użytkownika, designer zadba o kolorystykę i grafikę oraz zwróci uwagę na problemy z interakcją i wtedy do wszystko trafia w tym samym IDE do programisty który ma sprawić żeby to działało. Oznacza to że tak naprawdę programujemy na końcu. Programowanie na Symbiana jest bliższe programowaniu systemów operacyjnych czy gier. W tych przypadkach trzeba najpierw poznać abstrakcję czyli frameworki czy silnik gry oraz zapoznać się z API. Powoduje to pewne problemy z realizacją projektów. Zazwyczaj projektant musi znać frameworka UI czy silnik gry, żeby nie obiecywać czegoś co nie da się szybko zrobić. Specjalista od użyteczności też musi znać niuanse doświadczenia użytkowników z urządzeniami mobilnymi, bo często jest tak że wersja dotykowa na S60 5th powinna być inna niż ta z S60 3rd. Zaplanowanie i zaprojektowanie na Symbiana nie jest takie trywialne jak w przypadku jak się programuje pod IDE w trybie designera (w VisualStudio czy XCode) dla innych platform mobilnych. Jedno jest teraz pewne większość ludzi chce naukę programowania rozpoczynać nie od nauki programowania frameworka czy silnika gry tylko od zaprojektowania interfejsu użytkownika swojej aplikacji w designerze IDE. Nic nie poradzę na to, że ludzie szukają takiego sposobu nauki. Większość autorów książek dla początkujących poleca naukę od używania designera IDE dopiero potem przechodzą do tłumaczenia dlaczego tak zrobili, a teorię i API zostawiają na końcu. Skutkiem tego jest że ci którzy teraz się uczyli z książek programowania tak naprawdę zostają projektantami interfejsu aplikacji. Mała popularność programowania na Symbiana wynika z tego że najpierw trzeba poznać teorię (budowę frameworka AVKON, idomy Symbiana C++) a dopiero potem zmagać się z projektowaniem w IDE Carbide C++. Po części to wynika z tego że trzeba sporo czasu włożyć w przygotowanie środowiska pracy i instalowanie SDKów. Inny powód jest też taki że trzeba lubić C++, że zechcieć programować pod Symbianem profesjonalnie. Istotnym powodem dla którego ludzie zniechęcają się jest brak szerokiego wsparcia dla początkujących. Prawie wszystkie książki jakie napisano dla programistów Symbiana C++ są napisane jakby w stylu akademickim. I zakładają że wcześniej już cokolwiek programowałeś na Symbiana. Sporo piszą o API a za mało przykładów (jak przykłady są, to już jakby dla profesjonalistów). Przykładem dobrych książek dla początkujących tylko że dla programujących w Java Mobile są książki: J2ME Tworzenie gier Janusza Grzyba czy J2ME Praktyczne projekty Krzysztofa Rychlickiego-Kiciora. Tego czego brakuje dla początkujących to przepisu jak zrobić na szybko projekt aplikacji w Carbide C++. Zakładam że czytelnik ma skonfigurowane SDK i wie jak z linii poleceń korzystać przy kompilacji. Klienci czasami są wybredni i projekt aplikacji trzeba zrobić już tak szybko jak to się da.

Uruchamiamy Carbide C++ 2.0



Wybieramy z menu File -> New -> Symbian OS C++ Project



Pojawi się okienko kreatora Select type of project Wybieramy z węzła S60 GUI Application with UI Designer.





Pojawi się kolejne okno kreatora New Symbian OS C++ Project w którym trzeba podać nazwę projektu (nie może zawierać spacji, ani zaczynać się od liczby, ani zawierać polskich znaków). Należy też podać ścieżkę do folderu gdzie ma być projekt. I znowu w ścieżce projektu nie powinno być spacji. Nazwiemy projekt NaszProjekt Klikamy Next.



Pojawi się okno kreatora Symbian OS SDKs - Trzeba wybrać jaką wersję będziemy robić. Z węzła S60_5th_Edition_SDK_v10 zaznaczamy Emulator Debug (WINSCW). Klikamy Next




Pojawia się okno kreatora Application Properties gdzie zmieniamy Initial Languages z listy rozwijanej na Polish (27) Klikamy Next.



Pojawi się okno kreatora S60 UI Design Selection. Wybieramy Empty co oznacza że mamy większy wpływ na to co tam się pojawi. Klikamy Next.




Pojawi się okno kreatora Container Name and Type. Tutaj chodzi o to, że trzeba nazwać naszą klasę która będzie zawierała UI naszej aplikacji, czyli jest kontrolką widoku View a pochodną od klasy bazowej CCoeControl. Warto zaznaczyć, że trzeba wygenerować kod który będzie obsługiwał przełączanie się pomiędzy widokami aplikacji zaznaczając Support view switching. Klikamy Next.



Pojawi się okno kreatora Basic Setting które pokazuje wygenerowany identyfikator aplikacji. Klikamy Next



Pojawia się okno kreatora Project Directories który informuje nas jakie foldery w projekcie utworzy Klikamy Finish




Zostanie nam otworzone okno Projektu. Niektórym może okazać się że nic nie zobaczą. W tej sytuacji trzeba użyć z menu Window -> Show View -> Project Explorer a potem jeszcze raz Window -> Open Perspective -> Other. Pojawi się okno wyboru perspektywy i wybieramy Carbide C/C++ (default).





Trzeba się upewnić czy aplikacja będzie zapisywać naszą pracę w UTF-8. Z menu wybieramy Project -> Properties Pojawi się okno i ustawiamy Text file encoding na UTF-8 Klikamy Apply a potem OK




Zmienimy tytuł aplikacji z NaszProjektContainter na Nasz Projekt. Otóż klikamy na napis NaszProjektContainter z menu podręcznego wybieramy Show Properties View.


Pojawi się na dole zakładka Properties i weżle Data mamy właściwość title i wpisujemy tam jako Value:Nasz Projekt



Kolejnym krokiem będzie pokazanie jak dodać pozycję menu Klikamy w ikonkę optionMenu Pojawi się na projekcie Type here klikamy w to i wpisujemy ShowMe.



Robię to tak dlatego że nazwa ShowMe pojawi się w kodzie jako nazwa pewnych funkcji.
Nie polecam w momencie gdy coś wpisujemy w projekcie Designu używania polskich znaków zawsze je potem można zmienić z poziomu Show Properties View.




Zmienimy teraz to na Pokaż mnie. W zakładce Properties w węźle Appearance mamy Property text to ustawiamy to na Pokaż mnie.


Teraz zostało nam obsłużenie zdarzenia w momencie jak użytkownik kliknie na w menu na Pokaż mnie. Nad tekstem Pokaż mnie wywołujemy z menu podręcznego Handle Selected Event



Pojawi się okienko z monitem o zapisanie projektu



Potem pojawi się okno z kodem źródłowym



Tam gdzie mamy kursor to wpisujemy taki kod w następnej linijce iEikonEnv->AlertWin(_L("Witaj świecie !"));


Zapisujemy projekt wystarczy wcisnąć CTRL+S

Następnie wystarczy uruchomić w emulatorze. Z menu wybieramy Run ->Run (albo wciskamy CTRL+F11)


Klikamy Finish

Po paru minutach mnie wyszło po 5 minutach otwiera się emulator z programem który prze chwilą stworzyliśmy.



Wybieramy z menu Pokaż Mnie to emulator wyświetli komunikat bez polskich znaków tylko z jakimiś kwadracikami - Witaj świecie! Jest taka cecha przy programowaniu Symbiana że w kodzie raczej nie umieszczamy wyrażeń tylko w plikach zasobów (tym razem zrobiłem wyjątek).



Pokazuje tez że sporo plików zostało wygenerowanych przez Carbide.C++ na zrobienie szkieletu aplikacji.

2 komentarze:

Vadis pisze...

W końcu coś konkretnego kolego. Brakuje takiego bloga w Polsce.
Wielu by coś napisało ale nie wie jak sie zabrac do tego. O ile pamietam pisałes już jak zainstalować Carbide i jak konfigurować.Przypomnij czytelnikom krotkim linkiem na początku no i ..... kontynuuj to. A bedzie ok
Czekam aż zaczniesz opisywać bardziej złożone kwestie - np. nieszczęsny Bluetooth - obsługa i zarządzanie połączeniem,przesyłem strumienia danych wg potrzeb. Proszę więc kontynuuj to.

Paweł Maziarz pisze...

O, fajny wpis i wszystko działa jak piszesz. Dzięki.