9 Kasım 2010 Salı

KNotification

KNotification için miras diyagramı
KNotification bir olayı kullanıcıya bildirmek için kullanılır.
İki çeşit bildirim tipi vardır.
* Geri bildirim olayları : Bu bildirimler ,kullanıcının pencereyi maximize etmesi gibi o anda kullanıcının gerçekleştirdiği olaylar içindir.Bildirim esnasında ses çalmasını da sağlayabilir. Anlık bildirimlerdir. Bu tip bildirimler çok kısa zaman aralığında gerçekleşir ve sonlanırlar.
* Kalıcı bildirimler : Kullanıcı yeni bir mesaj aldığında yada kullanıcının bilmesi gerektiği önemli bir olay gerçekleştiğinde verilen bildirimler bu tip bildirimlerdir. Bu bildirimlerin bir başlangıcı ve sonu vardır. Bildirim olay meydana geldiğinde başlar ve kullanıcı kabul edene yada okuyana kadar devam eder.

Örneğin anlık mesajlaşma uygulamalarındaki kalıcı bildirimler : kullanıcıya bir mesaj geldiğinde uygulama bildirim yayar.Bildirim kutusu; kullanıcının mesajı okuyup close() slotunu kullanana dek kapanmaz.

Bildirim yapmak için , bildirimin varsayılan parametrelerinin olduğu bir tanımlama dosyası yaratmamız gerekmektedir. Ardından uygulamanın kodları arasında -bildirimin gerçekleştirildiği yerde- "KNotification:event" i kullanmalıyız. Geri dönen KNotification işaretcisi signal - slot bağlamalarında kullanılabilir.

Global Config Dosyası

Bir uygulamanın config dosyası "$KDEDIR/share/apps/appname/appname.notifyrc" dizininde bulunmalıdır. Bu dosya 3 ana bölümden oluşur.

1. Global bilgi
2. İçerik bilgisi
3. Uygulamaya özel olayların tanımlamaları
                   [Global]
IconName=Filename
Comment=Friendly Name of app
                   [Context/group]
Name=Group name
Comment=The name of the group for contacts
[Context/folder]
Name=Group name

[Event/newmail]
Name=New email
Comment=You have got a new email
Contexts=folder,group
Action=Sound|Popup
                   [Event/contactOnline]
Name=Contact goes online
Comment=One of your contact has been connected
Contexts=group
Sound=filetoplay.ogg
Action=None
Örneğin yakuake uygulamasının yakuake.notifyrc dosyası şu şekildedir:

[Global]
IconName=yakuake
Comment=yakuake

[Event/startup]
Name=Yakuake Started
Comment=Yakuake has just been started
Action=Popup

Global kısmındaki IconName kısmına simgenin sadece adını yazmalıyız.

Context kısmı widgetin yapılandırımıyla ilişkili bilgiler içerir.

Event kısmı ise config dosyasının en önemli bölümüdür. Uygulamanın hangi olayda hangi bildirimi vermesi gerektiği burada yer alır. Her bildirilebilir olay için varsayılan değerler bu bölümde bulunur.

Kullanıcının Config Dosyası

Uygulama detayı içeren yapılandırma dosyasıdır.

Bu yapılandırma dosyası iki kısımdan oluşur.

1)İçerik Bilgisi
2)Olay Yapılandırılması

İçerik Bilgisi: Yapılandırma penceresi hakkında bilgi içerir. Bu bölümde hem dahili "id"ler hem de kullanıcının görebileceği string ifadeler bulunur.
                   [Context/group]
Values=1:Friends,2:Work,3:Family
Olay Yapılandırılması : Olayların kullanıcıya özel yapılandırma bilgileri bu bölümdedir.
                   [Event/contactOnline]
Action=Sound
Sound=/usr/share/sounds/super.ogg
                   [Event/contactOnline/group/1]
Action=PassivePopup|Sound
Parametreler

eventId Olayın adı

text Açılan popup penceredeki bildirim hakkındaki yazı

pixmap Açılan popuptaki resim.

widget Bildirimin yapıldığı yerdeki widge
KNotification *KNotification::event(
StandardEvent eventid , const QString& text,
const QPixmap& pixmap, QWidget *widget, const NotificationFlags &flags)

Bu metod tam anlamıyla (bütün parametreleri ayarlanmış) bir KNotification yaratır ve bizim ayrıca "SendEvent"i çağırmanıza gerek yoktur.

Signal - slotların iletişiminde bu işaretçi kullanılabilir ve kullanılan işaretçi otomatik olarak olay sonlandığında silinir.

Ayrıca CloseOnTimeOut ve CloseWhenWidgetActivated olarak ayarlanan bildirimlerin , kullanıcının kapatmasına gerek duymadan kapatılacağını unutmamamız gerekmektedir. Aksi takdirde kullanıcı için çok kritik bir bildirimin zaman aşımıyla yada widget aktif olduğunda otomatik olarak kaybolmasına neden olabiliriz.



Kaynak : KNotification Class Reference

Hiç yorum yok:

Yorum Gönder