• 0
omaravet

تفعيل الثيم في تطبيقات سمبيان

سؤال

السلام عليكم و رحمة الله و بركاته

الموضوع عن تفعيل الثيم الافتراضي في برامج s60 بمعنى أن إنشاء تطبيق في كاربيد مثلا ستجد البرنامج شاشة بيضاء أو رمادية و ليست الخلفية الافتراضية للنوكيا التي تعطي شكل جمالي و انسيابي و هذا يوضح ما أعنيه

post-108008-1183881961_thumb.gif

لتفعيل السكين نقوم بالاخطوات التالية

بعد بدء مشروع في الكاربيد على سبيل المثال

في دالة ConstructL() الخاصة ب appui نضع الكود التالي

BaseConstructL(EAknEnableSkin);

و في ملف الهيدر الخاص بالفيو إن كنا نعتمد عليه أو الكونتينر نضع تعريف للكلاس التالي الذي سيعيد لنا صورة الخلفية الخاصة بالثيم

CAknsBasicBackgroundControlContext* iBgContext;

سنحتاج أيضا لتضمين ملفات الهيدر التالية

#include <AknsDrawUtils.h>
#include <AknsBasicBackgroundControlContext.h>

و في الكاربيد أو ملف mmp سنحتاج لتضمين المكتبات التالية

LIBRARY aknskins.lib aknskinsrv.lib

نبدأ في استخدام الكلاس

نقوم بإنشائه في دالة constructl الخاصة بالفيو أو الكونتينر

iBgContext = CAknsBasicBackgroundControlContext::NewL( KAknsIIDQsnBgAreaMain,aRect,ETrue);

و لا ننسى حذفه في destrucor كما يلي

delete iBgContext;

نحتاج لإضافة دالة اسمها MopSupplyObject و هي override ستقوم بتمرير الخلفية للعناصر التي أسف الكونتينر أو ألفيو كما يلي

TTypeUid::Ptr yourclassView::MopSupplyObject(TTypeUid aId)
{
if (iBgContext )
{
return MAknsControlContext::SupplyMopObject( aId, iBgContext );
}
return CCoeControl::MopSupplyObject(aId);
}

و في دالة draw نضيف الكود التالي لرسم الخلفية

CWindowGc& gc = SystemGc();

// Redraw the background using the default skin
MAknsSkinInstance* skin = AknsUtils::SkinInstance();
MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
AknsDrawUtils::Background( skin, cc, this, gc, aRect );

و في دالة SizeChanged نضيف الكود التالي لتغيير حجم الخلفية

if(iBgContext)
{
iBgContext->SetRect(Rect());
if ( &Window() )
{
iBgContext->SetParentPos( PositionRelativeToScreen() );
}
}

و في حالة وجود صندوق قائمة لتفعيل الثيم خلف العناصر نضع الكود التالي

[font="Simplified Arabic Fixed"]iListBox->ItemDrawer()->ColumnData()->SetSkinEnabledL(ETrue)[/font]

post-108008-1183881967_thumb.gif

هل هناك فرق

تم تعديل بواسطه omaravet
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

1 إجابات على هذا السؤال .

  • 0

شكراً جزيلاً صديقي وبارك الله فيك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .