Makale Özeti

Bu bölümde sizlerle “Mesaj Servisi” adlı örnek bir uygulama geliştireceğiz.Bu uygulama esasında arkadaşlarınıza,sevdiklerinize gerek SMS olarak gerekse de Sosyal Medya hesaplarınızı kullanarak güzel mesajlar paylaşmanıza olanak sağlar.

Makale

WP7 Hileleri Mini E-Kitap'tan alinmistir:


MesajServisi  projesinin kaynak kodları


Bu bölümde sizlerle “Mesaj Servisi” adlı örnek bir uygulama geliştireceğiz.Bu uygulama esasında arkadaşlarınıza,sevdiklerinize gerek SMS olarak gerekse de Sosyal Medya hesaplarınızı kullanarak güzel mesajlar paylaşmanıza olanak sağlar.

Uygulamayı geliştirmeye başlayalım o halde.Windows Phone 7’de yeni bir proje oluşturun.

Uygulamamızın bu şekilde bir tasarıma sahip olduğunu varsayalım:

 

 

 

Uygulama genel itibariyle en üst sağ köşedeki Listbox1 den kategori seçmemizi sağlayacak ardından bu kategorilere ait veriler hemen yanında bulunan Listbox2 de görüntülenecek.Buna ilaveten Listbox2 de seçilen mesajlar Mesaj adlı bölümde geniş bir şekilde gösterilecektir.En son olarak da ilgili mesajı sevdiklerinize göndermenize ve paylaşmanıza olanak sağlayacaktır.Bu uygulamanın çalışma mantığı bu şekildedir.

XAML hali:


<phone:PhoneApplicationPage
    x:Class="MesajServisi.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True">
 
  
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <ListBox Height="301" HorizontalAlignment="Left" Margin="12,12,0,0" Name="listBox1" VerticalAlignment="Top" Width="172">
            <ListBoxItem Content="Ramazan Bayramı" Background="#FF0074A7"></ListBoxItem>
            <ListBoxItem Content="Anneler Günü" Background="#FFB7A900"></ListBoxItem>
            <ListBoxItem Content="Babalar Günü" Background="#FF0074A7" />
            <ListBoxItem Content="Evlilik Yıldönümü" Background="#FFB7A900" />
            <ListBoxItem Content="Sevgililer Günü" Background="#FF0074A7" />
            <ListBoxItem Content="Kandil Mesajları" Background="#FFB7A900" />
            <ListBoxItem Content="Doğum Günü" Background="#FF0074A7" />
            <ListBoxItem Content="Bayram" Background="#FFB7A900" />
            <ListBoxItem Content="Sevgi" Background="#FF0074A7" />
            <ListBoxItem Content="Yalnızlık" Background="#FFB7A900" />
            <ListBoxItem Content="Özlem" Background="#FF0074A7" />
        </ListBox>
        <Button Content="Send SMS" Height="72" HorizontalAlignment="Left" Margin="294,684,0,0" Name="button1" VerticalAlignment="Top" Width="174">
            <Button.Background>
                <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
                    <GradientStop Color="#FF0AB3FF" Offset="0" />
                    <GradientStop Color="#FFFFD800" Offset="1" />
                </LinearGradientBrush>
            </Button.Background>
        </Button>
        <Button Content="Share" Height="72" HorizontalAlignment="Left" Margin="12,684,0,0" Name="button2" VerticalAlignment="Top" Width="160">
            <Button.Background>
                <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
                    <GradientStop Color="#FF0AB3FF" Offset="0" />
                    <GradientStop Color="#FFFFD800" Offset="1" />
                </LinearGradientBrush>
            </Button.Background>
        </Button>
        <ListBox Height="301" HorizontalAlignment="Left" Margin="194,12,0,0" Name="listBox2" VerticalAlignment="Top" Width="274" />
        <TextBlock Height="315" HorizontalAlignment="Left" Margin="12,363,0,0" Name="textBlock1" Text="" VerticalAlignment="Top" Width="456" TextWrapping="Wrap" />
        <TextBlock Height="30" HorizontalAlignment="Left" Margin="12,327,0,0" Name="textBlock2" Text="Mesaj:" VerticalAlignment="Top" />
    </Grid>
 
</phone:PhoneApplicationPage>

  

 

Her bir kategori için 5’er tane mesaj eklememiz gerekiyor.Dolayısıyla bu işlem için static class kullanmayı  - kolayıma gittiğinden :-)  -  uygun gördüm:

 

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Collections.Generic;
 
namespace MesajServisi
{
 class Mesajlar
    {
 
       public static List<string> ramazan = new List<string>       
        {
            "Benim ömrümde ırmaklar vardır sularında hayallerimi yüzdürdüğüm, benim ömrümde sevdiklerim vardır bayramlar ayrı geçince üzüldüğüm. Bayramınız mübarek olsun!",
            "Kainatın yaratıcısı ve alemlerin Rabbi yüce Allah'a sonsuz şükürler olsun! Ramazan Bayramı bereketiyle, bolluğuyla gelsin, tüm insanlık için hayırlara vesile olsun",
            "Heyecan ve özlemle beklenen kutsal Ramazan Bayramı geldi, hoşgeldin. Mübarek bayram ulusumuza sağlık, huzur, mutluluk, bolluk ve bereket getirsin. Hayırlı bayramlar dileğiyle.",
            "Sema kapılarının açık olduğu bugünde heybenizde tohum tohum dua menekşeleri saçmanız temennisiyle hayırlı bayramlar.",
            "Bugün Bayram! Mübarek Ramazan Bayramı. Tüm inananlar birbirlerine daha çok yakınlaşsın, dargınlıklar ortadan kalksın, kardeşlik ve dostluk duyguları daha da kuvvetlensin. Tüm insanlar neşe ve mutluluk denizinde yüzsün. Bugün sevinç günü, kederleri bir yana bırakıp mutlu olalım. Ramazan Bayramı.nı doya doya yaşayalım. Hayırlı bayramlar! Her şeye kadir olan Yüce Allah, bizleri, doğru yoldan ve sevdiklerimizden ayırmasın! Hayırlı ve bereketli Ramazan Bayramları dileğiyle."
        };
 
       public static List<string> anneler = new List<string>
        {
            "Her zaman senin karşında masum ve sevgine muhtaç bir çocuk ruhuyla dururum. Çünkü sen benim annemsin. Beni benden çok tanıyansın, bilensin. Bana sarıldığın zaman tüm dertlerimi yok edensin. Anneler günün kutlu olsun ey aziz kadın, annem!",
            "Sen evimizin kraliçesi, başımızın tacısın.. en aziz varlığımız. Anneler günün kutlu olsun annem.",
            "Her şeye değer senin sonsuz sevgin.. Annem annem.. Seni çok arıyorum.. Çok özledim. Anneler günün kutlu olsun biricik meleğim.",
            "Annem senin sevgin dünyamı ısıtan tek güneştir. Hiç ışığın eksilmeyecek biliyorum. Varlığınla mutluyum. Anneler günün kutlu olsun sevgili annem.",
            "Sınırsız bir sevgi, anlatılmaz bir sevgiyle beni seven annem, sana layık olmak için yaşıyorum. Anneler günün kutlu olsun."
        };
 
      public static List<string> babalar = new List<string>
        {
            "Çok sevdiğim canım babacığıma kucak dolusu sevgilerimi sunar, Babalar gününü kutlarım.",
            "Sen güllere özenme güller sana özensin. Üzme tatlı canını sen güllerden güzelsin. Özgürlük kadar özel güller kadar güzelsin. BENİM GÜZEL BABACIĞIM",
            "Üzerine sabır tohumu ekip sevgiyle suladığın gülünün bilmeni istediği bir şey var. SENİ ÇOK SEVİYORUM CANIM BABACIĞIM.",
            "ATESIN YAKTIGINDAN, GUNESIN HAREKET ETTIGINDEN, GERCEGIN BIR YALAN OLDUGUNDAN KUSKULAN FAKAT BENIM SENI SEVDIGIMDEN ASLA KUSKULANMA BABACIGIM, BABALAR GUNUN KUTLU OLSUN.",
            "Babacığım seni çok seviyorum. İyi ki varsın,iyi ki yanımdasın,iyi ki babamsın. Babalar gunun kutlu olsun..."
        };
 
      public static List<string> evlilik = new List<string>
        {
            "öyle bir anda girdinki hayatıma tam her şey karardı derken ışığım oldun, öyle çok sevdimki seni tam hayatın uçurumuna geldim derken tek dayanağım sen oldun sevgilim seni çok seviyorum seni herşeyden ve herkesten çok seviyorum ve artık hayatımın geri kalanını senile geçirmek istiyorum şimdi sana soruyorum gökyüzündeki ebedi yıldızım BENİMLE EVLENİR MİSİN?",
            "Sarı giyer güneş olursun,Mavi giyer deniz olursun,Siyah giyer matem olursun,Belki birgün beyaz giyer benim olursun",
            "benim biricik sevgilim haytımın anlamı evimin kadını kalbimin yarısı olmaya ve benimle evlenmeye evet der misin",
            "Geceme güneş olsan, Kalbimi görmüş olsan, Unuturdum cihanı, Bana bir gün eş olsan.",
            "Bir Kizin En Güzel Verebilecegi Cegiz Öpülmemis Dudaklaridir"
        };
    }
}

 

 

 

Her bir kategoriyi string argüman alan Liste olarak oluşturduk ve mesajları bu listelere ekledik.

Şimdi gelelim kontrollere ait olaylara.

Listbox1 yani Kategoriler değiştiğinde bu listelere ait verilerin hemen Listbox2 ye eklenmesini istiyoruz.Dolayısıyla bu durumda şöyle bir kod yazmamız makul olacaktır:

 

private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            listBox2.Items.Clear();
            if (listBox1.SelectedIndex == 0)
            {
                foreach (string c in Mesajlar.ramazan)
                {
                    listBox2.Items.Add(c);
                }
            }
 
            else if (listBox1.SelectedIndex == 1)
            {
                foreach (string c in Mesajlar.anneler)
                {
                    listBox2.Items.Add(c);
                }
            }
 
            else if (listBox1.SelectedIndex == 2)
            {
                foreach (string c in Mesajlar.babalar)
                {
                    listBox2.Items.Add(c);
                }
            }
 
            else if (listBox1.SelectedIndex == 3)
            {
                foreach (string c in Mesajlar.evlilik)
                {
                    listBox2.Items.Add(c);
                }
            }
 
        }

 

 

 

Şimdi ise Listbox2 yani mesajlardan birisi seçildiğinde mesaj alanine yazdıracak kodu ekleyiyoruz:


private void listBox2_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            try
            {
                textBlock1.Text = listBox2.SelectedItem.ToString();
            }
 
            catch (Exception ex)
            {
 
            }
           
        }
 


Son olarak da SMS olarak gönderme ve Paylaşma kodlarını ekleyelim:


private void button2_Click(object sender, RoutedEventArgs e)
        {
            //Paylaşma
            try
            {
                ShareStatusTask st = new ShareStatusTask();
                st.Status = textBlock1.Text;
                st.Show();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Hata! Kategori ve Mesajı seçmelisiniz");
            }           
          
        }
 
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            //SMS Gönderme
            try
            {              
                SmsComposeTask sct = new SmsComposeTask();
                sct.Body = textBlock1.Text;
                sct.Show();
            }
 
            catch (Exception ex)
            {
                MessageBox.Show("Hata! Kategori ve Mesajı seçmelisiniz");
            }
          
        }


Buraya kadar uygulamamız tamamlandı.


Nasıl olmuş bir bakalım:





Uygulamamız tüm işlevselliği ile karşınızda.

Gelecek yazımda bu uygulamamızı Marketplace için hazırlamayı göstereceğim.