الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

مغلق
بدأه omaravet في 8 يوليو 2007 · 1 رد · 1,235 مشاهدة · في برمجة الأجهزة الكفية والمحمولة بالدوت نيت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الموضوع عن تفعيل الثيم الافتراضي في برامج 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() );
				}
}

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

iListBox->ItemDrawer()->ColumnData()->SetSkinEnabledL(ETrue)

post-108008-1183881967_thumb.gif

هل هناك فرق

تم تعديل هذه المشاركة بواسطة omaravet في 8 يوليو 2007 في 11:21

#2

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

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…