Windows Mobile 6 Telefon Rehberindeki Kayıtlara Erişim

Batuhan Düzgün tarafından yayınlanmıştır 10. February 2012 08:34

Merhaba arkadaşlar, bu makalede sizlere Windows Mobile 6 yüklü bir telefonda veya mobil cihazdaki telefon kayıtlarına erişim yapabilmeyi anlatacağım. Rehberdeki kayıtları bir grid ekrana döküp içlerinden seçtiklerimizi listeleyip, yen bir arkadaş grubu oluşturmayı anlatacağım.

Projeye geçmeden önce, zengin içerikli mobil formları temin etmek için, deneme sürümü olarak indirebileceğiniz, Resco Mobile Forms paketini indiriyoruz. Bu paketi indirmeden önce üye olup hesap açmanız gerekiyor. Ardından 30 günlük deneme sürümü indirip, paketi kuruyorsunuz.

http://www.resco.net/developer/mobileformstoolkit/

Yukarıdaki paketi indirip, kurumu tamamladıktan sonra, File >> New >>  Project >> Smart Device seçerek ilerlenir. Visual Studio 2010 kullananlar, Windows Phone 7 desteği ile karşılaşır. O yüzden projeyi Visual Studio 2008 ortamında oluşturunuz.  Platform olarak, Windows Mobile 6 seçilir. Bunun için Target Platform kısmındaki açılır menüden platform seçimi yapabilirsiniz.

 

Projemizi oluşturuldu. Rehberden okuyup alacağımız kayıtlar için, bir sınıf tasarlanır. İsmine “TelephoneUser” diyelim. Kodları aşağıdaki gibidir.

 

 

public classTelephoneUser

        {

            // Kullanıcı adı ve soyadı.

            string UserName;

            string UserMobileTelephone;

            string UserCompany;

            int RowIndex;

            public TelephoneUser()

            {

                UserName = "Bos";

                UserMobileTelephone = "";

            }

 

            public void SetUserInformation(string Name, string TelephoneNumber, string Company)

            {

                this.UserMobileTelephone = TelephoneNumber;

                this.UserName = Name;

                this.UserCompany = Company;

            }

            public void SetRowIndex(int IndexofRow)

            {

                this.RowIndex = IndexofRow;

            }

            public string GetUserName()

            {

                return this.UserName;

            }

            public string GetUserMobileTelephone()

            {

                return this.UserMobileTelephone;

            }

            public string GetUserCompany()

            {

                return this.UserCompany;

            }

            public int GetRowIndex()

            {

                return this.RowIndex;

            }

        }

Rehberden çekilen tek bir kaydı alıp bilgilerinin saklandığı sınıf yapısı oluşturuldu. Bunun ardından TelephoneUser sınıfından oluşturulan nesneleri tutacak bir collection hazırlamaya geldi. Bu nedenle, List< TelephoneUser>  şeklinde bir List tanımlanır. Grup oluşturma yapısını sağlayan kodlar ise aşağıdaki gibidir.

public classTelephoneContactObject

        {

            // Rehberden okuduğumuz kayıtları alıp, yeni br grup oluşturmak için List'e eklenir.

            List TelephoneUsers;

            int UserCounter = 0;

            string GroupName;

            public TelephoneContactObject()

            {

                TelephoneUsers = new List();

            }

            // Yeni bir kayıt ekleneceği zaman bu metod ile List'e ekleme yapılır.

            public void AddUserToSMSList(TelephoneUser User)

            {

                TelephoneUsers.Add(User);

                UserCounter++;

            }

            // List'ten bir kayıt almak istenildiğinde bu metod çağrılır.

            public TelephoneUser GetUserFromList()

            {

                if ((UserCounter > -1) && (TelephoneUsers[UserCounter - 1] != null))

                {

                    UserCounter--;

                    return this.TelephoneUsers[UserCounter];

                }

                return null;

            }

            // List'de kaç kayıt olduğunun alındığı metod.

            public int GetUsersCount()

            {

                return this.UserCounter;

            }

            // Grup ismini set edildiği metod.

            public void SetGroupName(string GName)

            {

                this.GroupName = GName;

            }

        }

Artık gridi form üzerine yerleştirme zamanıdır. Resco formları kullanabilmek için referans eklemek gerebilir. Bu nedenle, References bölümüne sağ tıklanıp, Add Reference seçilir. Aşağıda bunun örneği verilmiştir.

 

Ardından Resco DLL dosyaları seçilir, aşağıdaki gibi.

 

Daha sonra Resco form bileşenlerinden SmartGrid bileşenini bulup, solda Toolbox kısmından, form üzerine sürükle bırak yapılır.  Properties panelinden SmartGrid bileşenine ait kısımdan aşağıdaki resimde gösterildiği gibi, Columns özelliğine tıklanır.

 

Böylece SmartGrid üzerinde sütun oluşturma işlemi yapmış olunur. Ben 4 adet sütun ekledim.

Birinci sütun  =  UserName özelliği için,

İkinci sütun  =  UserTelephone özelliği için,

Üçüncü sütun = UserCompany özelliği için,

Dördüncü sütun = Checkbox sütunudur. Bu sütunda gruba eklenmek istenen kullanıcıyı işaretlemek içindir. Select sütunun CustomizeCells özelliğini True yapıyoruz. Aynı zamandaModifiers özelliğini public olarak işaretliyoruz. EditMode özelliğini Auto yapıyoruz.

 

Ardından telefon rehberinden kayıt okuyabilmek için aşağıdaki gibi iki DLL dosyayı projeye dahil etmek gerekiyor.

 

 Bunun ardından aşağıdaki gibi kodlar düzenlenir.

Form load örneği.

 

        private void Form1_Load(object sender, EventArgs e)

        {

            // Rehberdeki kayıtları okumaya yarayan sınıfa ait nesne       örneği.

            ContactSession = new OutlookSession();

            // Telefon rehberindeki bütün numaraları listeye alınır.

            ContactList = ContactSession.Contacts.Items;

            PrepareContactList();

        }

 

Kayıtları SmartGrid’e ekleyen metoddur.

publicvoid PrepareContactList()

        {

            // SmartGrid grid satırı oluşturulur.

            Row TempRow;

            foreach (Contact User in ContactList)

            {

                // 4 sütunlu satır açılır.

                TempRow = new Row(4);

                // Rehberde kayıtlı olan kişinin adı-soyadı alınır.

                TempRow[0] = User.FileAs.ToString();

                // Rehberdeki kişinin telefon numarası.

                TempRow[1] = User.MobileTelephoneNumber.ToString();

                // Rehberdeki kişinin şirket ismi.

                TempRow[2] = User.CompanyName.ToString();

                // Oluşturulan kayıt SmartGrid'e yeni bir satır olarak eklenir.

                smartGrid1.Rows.Add(TempRow);

            }

        }

Ardından “Grup Oluştur” butonuna basıldığı zaman, işaretli olan numaralardan  liste oluşturmayı sağlayan metod yapısı eklenir.

publicvoid Prepare_UsersList()

        {

            TelephoneUser TempUser;

            int CountUser = 0;

            foreach (Row TempRow in smartGrid1.Rows)

            {

                // if içindeki ifade eğerki 4. sütundaki checkbox işaretlenmişse kullanıcıyı gruba ekle anlamına geliyor.

                if (TempRow[3] != null)

                {

                    TempUser = new TelephoneUser();

                    TempUser.SetUserInformation(TempRow[0].ToString(), TempRow[1].ToString(), TempRow[2].ToString());

                    TempUser.SetRowIndex(CountUser);

                    GroupList.AddUserToSMSList(TempUser);

                    CountUser++;

                }

            }

        }

Bir sonraki form açıldığında, o formun kullanacağı bilgilerin temin edileceği metod aşağıdaki gibi eklenir. Bu metod ile oluşturduğumuz grup bilgileri bir sonraki formda kullanılabilecektir.

// Grup şeklinde hazıladığımız nesneyi döndüren metod.

        public TelephoneContactObject GetGroupList() {

            return this.GroupList;

        }

Son olarak butona tıklandığına icra edilecek olan kodları yazıyorum. Bu kodlarda, şu işlemler yapılır. İşaretli olan kullanıcılardan grup oluşturma işlemi ki bunu yapan  “Prepare_UserList” adlı metoddur. Daha sonra, bilgilerimizi tuttuğumuz formun adresi “this“ ile belirtilen adresi yani, alınır geçici bir yere konur. Daha sorna başka bir form açıldığında bu  forma ait bilgileri kullanabilelim diye. Çünkü “new” ile yeni bir Form1 nesnei üretsek bile, bu bellekte farklı bir adres bölgesini temsil edecektir. O yüzden new ile yeni alan talep edince boş ve sıfırdan oluşturulmuş bir Form1 nesnesi verecektir. Böylece bizim bilgilerimizi depoladığımız ve üzerinde işlem yaptığımız Form1 sınıfına ait nesneye erişim yapmamız imkansız olacaktır.

Son olarak yeni bir form açılır ve işlem tamamlanır.

Projeye yeni bir form ekleyelim. Projeye sağ tıklanıp, Add New Item ile yeni bir form eklenir. İsmini “Group” diye belirledim. Aşağıdaki gibi bir tasarım yapılır.

 

Group formu altında aşağıdaki kodlar icra edilir. Bu kodların yapısı genel olarak şu şekildedir. Öncelikle form yüklenirken, bir önceki formdan alınan değerleri, listbox’a eklenir, bu bir “for” döngüsüyle yapılır. Daha sonra ise “Geri” tuşuna tıklandığında ise static sınıf içindeki form adresi null yapılır. Ve yeni bir Form1 nesnesi oluşturulur ve ekrana “show” metoduyla gönderilir.

namespaceContactListOrnek

{

    public partial class Group : Form

    {

        public Group()

        {

            InitializeComponent();

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            // Yeni form açılır., static sınıfta tutan form referansı null ile silinir.

            Form1 BackForm = new Form1();

            FormTemp.Form1This = null;

            BackForm.Show();

        }

 

        private void Group_Load(object sender, EventArgs e)

        {

            Prepare_List();

        }

 

        public void Prepare_List() {

            // Bir önceki formda hazırladığımız grup üyelerini listeliyoruz.

            for (int i = 0; i < FormTemp.Form1This.GetGroupList().GetUsersCount(); i++)

            {

                string Username = FormTemp.Form1This.GetGroupList().TelephoneUsers[i].GetUserName();

                string Usertelephone = FormTemp.Form1This.GetGroupList().TelephoneUsers[i].GetUserMobileTelephone();

                string Usercomany = FormTemp.Form1This.GetGroupList().TelephoneUsers[i].GetUserCompany();

                listBox1.Items.Add(Username +" "+ Usertelephone +" "+ Usercomany);

            }

        }

    }

}

Son olarak projeyi derleyelim ve test edelim. Aşağıdaki ekran görüntüleri projenin başarıyla bittiğini gösteriyor.

 

Ardından “Grup Oluştur” butonuna tıklanır. Böylece hazırlanan kullanıcı grubu oluşturulmuş olunur.

 

Windows Mobile 6 ile bir projeyi tamamladık. Bir sonraki makalemde görüşmek dileğiyle …

Batuhan Düzgün

Bilgisayar Mühendisi

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Windows Mobile 6

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  July 2018  >>
MoTuWeThFrSaSu
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

Yazıları geniş takvimde göster