.NET Compact Framework 2.0 daha önceki makalelerimizde
belirttiğimiz üzere bir önceki sürümünde “keşke olsa” diyebileceğimiz birçok
yenilikle birlikte mobil uygulama geliştiricilerin beğenisine sunuldu. Windows
Mobile 5.0’ ında kullanımına geçilmesiyle birlikte mobil cihaz üzerinde
yapabileceklerimizin sınırı genişlerken bu yapılabileceklerden uygulama
geliştiricilerinde faydalanabilmesi için düzenli süreçler halinde yeni API’ ler
yazılmaktadır. Ama hepimizinde bildiği üzere Unmanaged API’ leri kullanarak
uygulama geliştirmenin kolay olmayacağı gibi konu ile ilgili SDK’ larda yoğun
bir dil üzerinden yazılmaktadır. Bu noktada Managed uygulama geliştiricilerin
bu güzelliklerden faydalanabilmeleri için .NET Compact Framework 2.0 üzerinde
birçok “Managed” yenilik gelmektedir. Bu makalemizde Windows Mobile 5.0 işletim
sistemi üzerinde cihaz ekranı üzerinde kullanıcıyı küçük “popup” niteliği
taşıyabilen, ama bir o kadarda yetenekli bir kontrolü ; Notification kontrolünü
mercek altına alacağız. Amacımızın her zaman kullanıcıyla maksimum seviyede
iletişimin olduğunu göz önünde bulundurduğumuzda Notification kontrolünün bu
konuda ne kadar yetenekli olduğunu geliştirecek olduğumuz örnek uygulamada
farkedebileceksiniz.
Örnek uygulamamızı geliştirmeye başlamadan önce Notification
kontrolünün Özellik ve Olaylarını tanımak bu noktada daha doğru olacaktır.

Şekil üzerindende anlaşılabileceği üzere Notification
Kontrolü Windows Mobile 5.0 işletim sistemini kullanan Pocket PC Cihazlarının
ekranlarının alt kısmı içerisinde gözüken ; kimi gerekli durumlarda kullanıcıyı
bilgilendirmek üzere kullanabileceğimiz faydalı bir Mobil Windows Form kontrolü
olarak ifade edilebilir. Şekildeki görünümde dikkatinizi çekmiş olmalıdır ki üzerinde
örneğini geliştirecek olduğumuz Notification kontrolü standart düz metinlerin
yanısıra görsel açıdan daha kapsamlı mesajlarıda ekran üzerinde kullanıcıya
gösterebilmektedir. Bu kavramlar ile ilgili yukarıda örneği makalenin sonunda
birlikte geliştireceğiz.
Hızlı bir şekilde makalemize devam edelim. Bu noktada konunun
daha rahat anlaşılabilmesi açısından şekilde örneği geliştirmek daha doğru
olacaktır.
Örneğin geliştirilebilmesi için ilk olarak yeni bir C# -
Smart Device – Windows Mobile 5.0 Pocket PC – Device Application projesi açarak
işe başlayalım.

Geliştirecek olduğumuz uygulamanın senaryosu şu şekilde
olduğunu kabul edelim. Microsoft Türkiye için bir mobil uygulama geliştirdiğimizi
ve bu uygulamanın kullanıcıya belirli periyotlarda Microsoft’ un kendi sitesi
üzerinde gerçekleştirdiği bir Anket’e katılıp katılmayacağını sorması gerektiği
bir durumu ele alalım. Bu noktada gerçekleştirilmesi gereken senaryoda bu tip
bir sorunun gösterildiği konfirmasyon kutusunun uygulamayı kullanan kullanıcıyı
rahatsız etmemesinin gerektiği gibi ana ekran üzerindende kullanıcıyı
kesinlikle uzaklaştırmamalıdır. Bu noktada Notification kontrolünün ne kadar
başarılı olduğu açıkça ve rahatlıkla söylenebilir.
Bir sonraki adımda konu ile ilgili form tasarımı şekildeki
gibi gerçekleştiriyoruz ; toolbox içerisinde bulunan Notification
kontrolündende form üzerinde bir adet sürükleyip bırakıyoruz.
Kontrolün ToolBox üzerindeki yeri :

Form üzerine bir adet sürükleyip bırakıyoruz.

Şekil üzerinden de anlaşılabileceği üzere Notification kontrolü
form üzerinde görsel açıdan herhangi bir anlam ifade etmemektedir. Sadece Form
üzerinde eklendiğine dair bir görsel çubuk Visual Studio 2005 Mobil Form Dizayn
ekranı altında uygulama geliştiriciyi bilgilendirmektedir. Örneğimize devam
etmeden önce kontrolü biraz daha yakından tanımak bu noktada daha doğru
olacaktır.
Daha öncede belirtildiği üzere Notification kontrlü
adındanda anlaşılabileceği üzere kullanıcıları notifike etmek üzere tasarlanmış
bir kontroldür. Bu noktada mantık çerçevesinde düşünüldüğünde kontrolün en
temel özellikleri notifikasyon esnasında görüntüleyecek olduğu mesaj, bu
mesajın başlığı ve mesajın ne derece önemli olduğu parametresi. Kontrolü
uygulamamız içerisinde ntfMICROSOFT olarak adlandırdıktan sonra Özellikler
(Properties) penceresi üzerinden kontrolün özelliklerini mercek altına
alıyoruz.

Listenin kalabalık olmadığı eminizki dikaktinizi çekmiştir.
Bir sonraki adımda bu özellikleri kısaca açıklayalım.
·
Name – Kontrolün benzersiz ismi.
·
Caption – Notifikasyon esnasında bilgilendirme kutusunun üzerinde
görünecek olan başlık değeri.
·
Critical – Notifikasyon’ un kritik bir eylem oluğ olmadığı ifade
eden bir özelliktir. True değeri bilgilendirme kutusunun etrafının “kırmızı”
renk alacağı anlamına gelmektedir.
·
Icon – Opsiyonel ikon değeri. Notifikasyon esnasında ikon olup
olmayacağını ifade eder.
·
InitialDuration – İstisnai bir durum oluşmadığı sürece (Kullanıcı
Kutuyu Kapatır v.b.) Notifikasyon Bilgilendirme kutusunun ekran üzerinde ne
kadar süre görüneceğini belirtir.
·
Text – Notifikasyon metnini ifade eder. Bu özellik ayrıntılı
olarak incelenecektir.
·
Visible – En önemli özelliklerinden biridir. True değeri ekran
üzerinde görüneceğini ifade eder.
Özelliklerinin yanısıra Notification kontrolünün Olaylarıda
bu noktada önemli bir yer teşkil etmektedir. Örneğimize devam etmeden önce
kontrolümüzün olaylarını yakından incelemek daha doğru olacaktır.

Evet, bu noktada kalabalık bir liste ile karşı karşıya
kalmamaktayız. Olaylar ile ilgilide kısaca açıklama yapmak gerekirse ;
·
BalloonChanged – Adındanda anlaşılabileceği üzere Ekran üzerinde
notifikasyon esnasında görünen Balon’ un görünürlüğü değiştiğinde fırlatılır.
·
ResponseSubmitted – Bu olay kontrolün Text özelliğine HTML gömüldüğü
ve bu HTML üzerinden bir sonuç geldiğinde tetiklenir. Ayrıntılı olarak
incelenecektir.
Genel hatlarıyla kontrol incelendiğinde çokta karmaşık bir
yapısı olmadığı kolaylıkla gözlenebilir. Sıra geldi örneğimizi geliştirmeye.
Örnek basit seviyeden karmaşık seviyeye doğru geliştirilecektir. İlk olarak
form üzerindeki Button kontrolüne tıkladığımızda ekrana basit bir notifikasyon
balon’ u getirelim.

Bu değerler üzerinde uygulamamızı Emülatörümüz yada Fiziksel
cihazımız üzerinde çalıştırdığımızda şekildeki görünümü görüyor olmamız
gerekmektedir :

Ve sonuç. Ekran üzerinde belirttiğimiz özellik değerleri
üzerinden bir notifikasyon balon’ u görünmektedir. Peki bu noktada daha kapsamlı
neler yapılabilir ? Bu konuya az sonra değineceğiz. Fakat şunu belirterek devam
etmeliyizki kullanıcı ekran üzerinde balon dışında herhangi bir lokasyona kalem
kullanarak tıkladığında notifikasyon balon’ u kaybolacak ; mavi çubuk üzerinde “Notification”
metninin çıkmasını sağlayacaktır. Kullanıcı Notification metnine tıklayarak
balon’ un ekran üzerine tekrar gelmesini sağlayabilecektir ; ta ki Visible
özelliği false olana kadar.
Sıra geldi özellikler listelenirken ayrıntılı olarak
inceleyeceğimizi ifade ettiğimiz Text özelliğinin mercek altına alınmasına.
Text özelliği daha öncede ifade edildiği üzere balon
içerisinde gösterilecek olan metni temsil etmektedir. Bu noktada entereasn bir
kavram üzerinde konumuza devam edelim.
Uygulama geliştiriciler bu özelliğe çok ilginç ve
başarılıdır ki basit HTML sintaksını kullanarak HTML içeriğini
gömebilmektedirler. Hemen kafamızdaki soru işaretlerini çözümleyelim.
HTML (HyperText Markup Language) Internet üzerinde
kullanılan basit işaretleme dili olarak ifade edilebilir.
Bu dili kullanarak kullanıcılar görsel ortamda her türlü
standartize işlemi gerçekleştirebilirler. Peki Notification kontrolü içerisinde
bu yapıdan Uygulama geliştiriciler nasıl faydalanacaklardır ?
Konuyu örnek üzerinden anlatmak bu noktada daha faydalı
olacaktır :
HTML üzerinde bir metnin kalın olması için metni
<b></b> tagleri arasına almak yeterli olacaktır. Ayrıca bir alt
satıra geçmek için <br> tag’ inden faydalanabilmektedir.
Text özelliğini şekildeki gibi düzenliyoruz :

Uygulamımızı çalıştırıyoruz :

Ve sonuç. Merhaba ! yazısı ekran üzerinde kalın harflerle
yazılmış ve metnin diğer kısmı alt satıra taşınmıştır. Peki HTML kullanarak
yapabileceklerimiz sadece metnin görsel anlamda değiştirilmesimi ? Tabiki
hayır. Bu noktada HTML kullanarak Balon’ umuzun içerisine Input Tag’ i
kullanarak eklenebilecek her türlü objeyi Notification Balon’ umuzun içerisine
ekleyebiliriz. Ayrıca bir diğer önemli nokta ise <a href=””></a>
tag’ lerini kullanarak metin içerisine linkler gömebiliriz. Şimdi balon’ umuzu
senaryomuza uygun olarak düzenliyoruz.

Uygulamımızı çalıştırdığımızda :

Sonuç süper. Kullanıcıya belirli periyotlarda (bu noktada
timer kontrolü kullanılabilir) Anket’ e katılıp katılmak istemediğini uygulama
ekranından uzaklaştırmadan rahatlıkla sorabiliyoruz. Üzerinde çalışmamız
gerekecek tek birşey kaldı. Balon içerisindeki Link yada Button’ lara
tıkladığımız zaman gerekli aksiyonları nasıl gerçekleştireceğiz ? HTML ile
uygulamamız arasındaki haberleşme nasıl gerçekleştirilecektir ? Hemen
cevaplayalım.
Olaylardan bahsederken ResponseSubmitted olayı için “Bu olay
kontrolün Text özelliğine HTML gömüldüğü ve bu HTML üzerinden bir sonuç
geldiğinde tetiklenir.” Şeklinde bir açıklama kullanmıştık.
Evet, gömülü HTML içerisinden “Response” kavramını ifade
edecek bir eylem gerçekleştirildiğinde (buton’ a tıklamaki link’ e tıklamak)
sistem gerekli parametreler üzerinde bu olay’ ı tetiklemektedir.
Olay tetiklendiğinde inceleyebilmek açısından gerekli
delegeyi Çalışma Zamanında Form yüklendiğinde atıyoruz.

Ve olay tetiklendiğinde yakalanan kod bloğunu
incelediğimizde “e” parametresi üzerinden tek bir özelliğin ; Response
özelliğinin geldiğini görmekteyiz.

Response özelliği Buton’ a tıklandığında button’ un name
özelliğine atanan değeri, link’ e tıklandığında ise Link’ in adres değerin
kullanıcıya geri döndürmektedir. Senaryoyu şu şekilde tamamlayalım. Kullanıcı “Evet”
butonuna bastığında Mobil Cihazımız üzerinde Internet Explorer uygulamasını
açarak anket sayfasına yönlendirelim ; Hayır’ a tıkladığımızda ise sadece balon’
u ekran üzerinden kaldıralım. Ayrıca Link’ e tıkladığında ise Microsoft.com
adresine surf yapmasına izin verelim. Kod bloğunu şu şekilde düzenliyoruz :

Uygulamayı hiç vakit kaybetmeden çalıştırıyoruz ve çıkan
soruya “Evet “ diyoruz.

Mesaj kutusu kapandığında ise :

Internet Explorer’ ın açıldığını görebiliriz. Ayrıca Microsoft.com
linkine tıklandığında ise aynı sonuca ulaşabiliriz.
Evet, bu makalemizde .NET Compact Framework 2.0 ile birlikte
gelen Notification Kontrolünü mercek altına aldık. Bir başka makalede daha görüşmek
üzere. İyi Çalışmalar.