Makale Özeti

Bu makalemizde .NET Compact Framework 2.0 ile birlikte gelen yeni bir kontrolü ; Notification Kontrolünü kullanarak uygulama ekranında kullanıcıları nasıl bilgilendireceğimizi mercek altına alacağız.

Makale

.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.


Ekin ÖZÇİÇEKÇİLER
Microsoft Certified Trainer
ekin.ozcicekciler@bilgeadam.com
MCP, MCAD.NET, MCSD.NET, MCSD.NET, MCTS, MCPD Ent.