Makale Özeti

İşte biz yazılım geliştiriciler Windows Mobile 5.0 la PIM’ını managed code ile sağlanan bazı class lar vasıtasıyla dilediğimiz gibi yapılandırabilme hakkını elde etmiş durumdayız.Sağlanan bu yeni PIM API’si ile bir randevu kaydının programatik olarak nasıl gerçekleştirilebildiğini bu makalem de hep birlikte inceleyeceğiz..

Makale

            Managed Code ile PIM Programlama

 

            Bu makalemizde Windows Mobile 5.0 ile mobil yazılım geliştiriciler için sağlanan yeni bir kolaylıktan bahsedeceğiz.Bu kolaylık özet olarak managed code içerisinden Pocket Outlook’a ait olan verilere nasıl müdahele edilebileceği üzerine olacak.Bildiğiniz gibi bütün PDA ler içinde bir PIM (Personel Information Manager) yapısı bulunmaktadır.Ve tabiki Windows ailesine ait olan mobil işletim sistemleri de kendi içerisinde pek tabi böle bir yapı barındırırlar.Bu yapıyı aslında bir çoğumuz çok yakından tanımakta ve sıklıkla kullanmaktayız.Bu yapı tabi ki Pocket Outlook’dan başka bir şey değildir.(Windows mobile yüklü olan (eski veya yeni) tüm cihazlarda outlook yazılımına rastlamak mümkündür.)

           

 

        İşte biz yazılım geliştiriciler Windows Mobile 5.0 la PIM’ını managed code ile sağlanan bazı class lar vasıtasıyla dilediğimiz gibi yapılandırabilme hakkını elde etmiş durumdayız.Sağlanan bu yeni PIM API’si ile bir randevu kaydının programatik olarak nasıl gerçekleştirilebildiğini bu makalem de hep birlikte  inceleyeceğiz..

           

 

         İsterseniz sözle çok vakit harcamadan direkt olarak uygulama üzerinde sağlanan bu yeni ve güzel özelliği incelemeye başlayalım.Öncelikle aşağıdaki resimde de görüldüğü üzere gereken referans library’leri uygulamamıza dahil ediyoruz..

                                                                                             

 

                                                                                            

 

 

            Daha sonra da yeni kaydetmek istediğimiz randevu için aşağıda ki  gibi bir ekran görüntüsü tasarlıyoruz..

 

 

                                                                                             

            Şimdi gelelim uygulamamızın kodlarına…

 

 

                    using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using Microsoft.WindowsMobile.PocketOutlook;

 

namespace PIMProgram

{

    public partial class frmPIMMain:Form

    {

        public frmPIMMain()

        {

            InitializeComponent();

        }

 

        private void frmPIMMain_Load(object sender,EventArgs e)

        {

            nmrSaat.Maximum = 23;  // max ve min değerlerini set ediyoruz..Yoksa uygulamamız yeni randevu kaydı esnasında exception verecektir..

            nmrSaat.Minimum = 0;

            nmrDakika.Minimum = 0;

            nmrDakika.Maximum = 59;

            nmrNeKadarDk.Minimum = 0;

            nmrNeKadarDk.Maximum = 59;

        }

 

        private void pbxKaydet_Click(object sender,EventArgs e)

        {

            Appointment myApp = new Appointment(); // Kendi randevu kaydımızı yapabilmek için gereken instance ımızı Appointment class'ından

                                                   // alıyoruz.Not olarak overload edilmiş 2. versiyonda daha önceden kaydedilmiş bir randevu kaydının 

                                                   // değiştirilebilmesi için randevu id bilgisinin girilmesi yeterli..

            myApp.Subject = txtRandevuKonu.Text.Trim(); // Randevu konusu kaydediliyor..!

          

            int r_Yil = dtRandevuTarih.Value.Year; //dtRandevuTarih nesnesinden yil bilgisi alınıyor!

            int r_Ay = dtRandevuTarih.Value.Month; //dtRandevuTarih nesnesinden ay bilgisi alınıyor!

            int r_Gun = dtRandevuTarih.Value.Day;  //dtRandevuTarih nesnesinden gün bilgisi alınıyor!

            int r_Saat   = Convert.ToInt32(nmrSaat.Value);  // saat bilgisi alındı!

            int r_Dakika = Convert.ToInt32(nmrDakika.Value);  // dakika bilgisi alındı!

 

            myApp.Start = new DateTime(r_Yil,r_Ay,r_Gun,r_Saat,r_Dakika,00);  // randevu başlangıç zamanı set ediliyor.!!

 

            myApp.Duration = new TimeSpan(1,0,0);  // Randevu süresini 1 saat olarak set ediyoruz!uygulama ekranından da bu bilgi alınabilirdi!..

 

            myApp.ReminderVibrate = true; // Vakti gelince Titreşimle uyarsın!!

 

            myApp.ReminderDialog = true; // Uyarı ekranı gelsin..

 

            myApp.ReminderSound = true; // Sesle uyarı aktif hale getirilsin..

 

            myApp.ReminderLed = true; // Cihaz üzerinde ki led ler ile cihaz kullanıcısı uyarılsın!!

 

            myApp.ReminderRepeat = true; //  Cihaz kullanıcısı uyarıyı farkedip OK diyene kadar uyarı aktif kalsın!!

 

            myApp.ReminderMinutesBeforeStart = Convert.ToInt32(nmrNeKadarDk.Value); // İlgili randevu zamanına kaç dakika kala

                                                                                    // hatırlatma gerçekleşsin..

 

            OutlookSession myOutlookSes=null;

            try

            {

                myOutlookSes = new OutlookSession();  // Randevu kaydı için OutlookSession instance'ı alınıyor!

                myOutlookSes.Appointments.Items.Add(myApp); // diğer randevu kayıtlarının arasına yerleştirildi!

                MessageBox.Show("Randevunuz Başarıyla Kaydedildi!!");

            } catch (Exception ex)

            {

                MessageBox.Show("Randevu Kaydedilirken -> "+ex.Message+" hatası oluştu!!Tekrar Deneyiniz!");

            }

            finally

            {

                if (myOutlookSes!=null// aslında using ifadesi ile de yazabilirdik..(Auto Disposing)

                    myOutlookSes.Dispose();

            }

        }

 

        private void lblKaydet_ParentChanged(object sender,EventArgs e)

        {

            pbxKaydet_Click(null,null);  // Buton a resim ekleyemediğimiz için PictureBox ve Label'ı bir arada hemen hemen aynı iş için

                                         // kullanabiliyoruz.Tek eksiğimiz click event inda buton da meydana gelen görsel olayın olmayışıdır.

                                         // bunun çözümü de kendi geliştireceğimiz user controllerdir.Şu anki amacımız sadece GUI yi daha da

                                         // anlaşılabilir bir hale getirmek :) ..

        }

 

    }

}

 

            Uygulamamızın çalıştığı zaman ki ekran görüntüsü aynen aşağıdaki gibidir..

 

            

                                                                                 

 

 

            “Randevuyu Kaydet“ butonuna basdıktan sonra eğer ilgili Randevu başarıyla kaydedildiyse

 

 

 

                                                                                 

 

ilgili uyarı mesajından hemen sonra uygulamamızı sağ üst köşedeki OK butonuna basarak kapatalım..(Bu arada belirtmekte fayda var.İlgili form un MinimizeBox özelliği False ise uygulama aynen windows uygulamalarında olduğu gibi bellekten silinircesine kapatılır yok True ise ekrandan kaybolur ama background da çalışmaya devam eder.Ben özellikle uygulamanın (aksi bir durum söz konusu değilse ) kapatılmasını tavsiye ediyorum. Neden diyecek olursanız zaten sınırlı özelliklere sahip bir cihaz üzerinde uygulamamız çalışmaktadır.Bunun için gereksiz yere hafıza işgalindense uygulamanın kapatılması çok daha mantıklıdır.)Kaydettiğimiz randevu otomatikmen listeye eklenmiş olacaktır.

 

 

 

                                                                                  

 

 

 

İlgili randevu zamanı gelmeden kaç dakika kadar önce uyarılması istenildiyse o zaman geldiğinde ekranda uyarı mesajı görüntülecektir.Gördüğünüz gibi managed code içerisinden PIM bilgilerine ulaşmak ve onları değiştirmek oldukça basittir..Kendi eklediğimiz randevu için Calender menüsünü tıklayıp randevuyu seçtikten sonra edit menüsüne basarsanız şayet bu durumda kod içerisinden eklediğimiz bütün özellikleri aynen görebilirsiniz..

 

 

 

                                                                                    

 

 

 

                       

Şimdilik bu kadar..Takıldığınız bir nokta olursa eralp.erat@savyazilim.com adresinden bana ulaşabilirsiniz..

 

  • Kodları İndirmek İçin Tıklayınız...
  •  

    Unutmayalım bilgi paylaşıldıkca değerlidir..

     

    Eralp Erat

    Mcp, Mcad.NET , Mcsd.NET

    HIMS

    www.eralperat.com

     

     

    Uygulamanın Kodları İçin..