الدرس الخامس: [دورة تعليميه - الدرس 5] تعلم صنع تطبيقات الاندرويد بالتفصيل - شرح العناصر الرئيسيه وبرنامج جمع رقمين
[RIGHT]
السلام عليكم، درس اليوم سيتطرق لشرح انواع العناصر objects الرئيسيه التي يمكن استعمالها لصنع التطبيقات طبعا بعضها سيكون متشابه والذي يحدد ماذا نستخدم هو طبيعه عمل البرنامج مالوظيفه المطلوب تأديتها بالاضافه لبرنامج بسيط في النهايه وظيفته جمع رقمين وعرض الناتج على الشاشه [IMG]http://www.ce4arab.com/vb7/images/sub/06_2011/384632.jpg[/IMG] TextView هذا العنصر يمكنك من عرض نص معين للمستخدم دون ان يتمكن المستخدم من تعديله ويمكنك تعديله انت من خلال الكود اثناء تشغيل البرنامج وكذلك يمكن تعديله في وقت البرمجه Button كبسه زر، غنيه عن التعريف، يمكن ان تضع اي نص بها مثلا .. موافق .. الغاء .. خروج ... يمكن تعديل محتوى النص من البرنامج او وقت البرمجه CheckBox يستعمل هذا العنصر في حالات عرض خيارات للمستخدم .. وترغب بأن يحدد ما يريد .. نستعملها دائما.. يكون تفعيل الخيار من قبل المستخدم من خلال وضع اشاره صح على الخيار من خلال لمس العنصر، وتدعم الاختيار المتعدد ، مثلا في برنامج اوقات الصلا تخير المستخدم ... تنبيه على الصلوات : فجر ، ظهر ، عصر ، مغرب ، عشاء (هنا يمكنه اختيار كل الخيارات ولا شيء منطقي يمنع ذلك) RadioButton نفس العنصر السابق الا ان به فرق وهو انك يمكن ان تضع عدد من هذا العنصر .. مثلا اثنين منها في مجموعه افتراضيه عندها يستطيع المستخدم اختيار واحده فقط من بين الخيارين وتستعمل عاده للتخير بين اشياء لا يمكن جمعها منطقيا.. مثل انك تعمل تسأل المستخدم عن جنسه .. ذكر او انثى .. فليس منطقي ان يستطيع اختيار الاثنين معا. --------- في المجموعه الثانيه : TextFields هي مربعات نصيه نوعها الرئيسي يسمى EditText تمكن المستخدم من كتابه ما يريد ويكون عباره عن مدخلات لبرنامجنا ويتفرع عنها انواع متعدده تكون للتسهيل بالعمل ... مثلا حقل النص من نوع password يظهر الكلام المكتوب به على شكل نجوم او نقاط سوداء لكي لا يشاهدها احد... اما نوع Number مثلا فهو يحدد نوع المدخلات بالارقام فقط وذلك من خلال عرض لوحه مفاتيح الارقام فقط وبهذا يمنع المستخدم من ادخال حرف بدلا من الرقم. والبقيه اتوقع واضحه من خلال الاسم ومن يواجه صعوبه بنوع يتفضل بالسؤال. --------- المجموعه الثالثه: Layouts وهي عباره عن مستوعبات Containers ان صح التعبير تحدد سلوك العناصر السابقه على الشاشه من ناحيه مكان وجودها وترتيبها واحتلالها للمساحات...صراحه لست متمكننا منها كلها لكن سأشرح ما اعرف منهم: LinearLayout هذا النوع يقوم بصف العناصر التي تضيفها على التصميم بشكل خطي ولحده بعد الاخرى .. وعند الوصول لاخر الشاشه ينزل سطر للاسف ويكمل باقي العناصر. RelativeLayout يقوم هذا النوع بوضع كل عنصر بشكل نسبي لعنصر اخر .. مثلا تضع TextView وتضع حقل password وتخبره ان حقل كلمه السر تحت مربع TextView وهكذا تبني التصميم بشكل معتمد على بعضه. TableLayout اي الجدول وهو عباره عن تقسيم الشاشه لجدول، صفوف واعمده ومن ثم تعبئه هذه الخلايا (الناتجه عن الصفوف والاعمده) بالعناصر المطلوبه يلزم للعمل به اضافه TableRow به بعدد الصفوف المطلوبه ومن ثم البدء بالتعبئه اضافه العناصر تكون من خلال السحب اي انك تضغط العنصر المطلوب اضافته .. مثلا زر وتبقى ضاغط بالماور وتسحبه فوق المربع الاسود الذي هو التصميم ثم تفلته سيأخذ مكانه حسب نوع ال Layout الذي تستعمله ويمكنك التعديل عليه من خلال مربع الخصائص Properties الموجود على اليمين. كذلك عندما تسحبه فوق التصميم وقبل ان تفلته ستلاحظ ان المحرر يعطيك ظلال في الخلفيه عن مكان وقوع العنصر لكي يساعدك بتحديد مكانه. بقيه المجموعات وعناصرها قد نتطرق لها لاحقا .. حسب الحاجه او اذا سأل احد عن نوع محدد. نأتي للبرنامج الان... سيكون كما قلت جمع رقمين وعرض الناتج.. اذا المطلوب من البرنامج ما يلي: 1- اخذ مدخلات من المستخدم (رقمين) 2- اجراء عمليه الجمع عليهم 3- اعطاء مخرجات للمستخدم من خلال عرض الناتج على الشاشه 5- قد نضيف زر اضافي لمسح الخانات. نبدأ: انشئ مشروع جديد كما تعلمنا وسميه مثلا SumTwoNumbers، لتجنب المشاكل لمن يرغب باستعمال الملفات التي سأضعها هنا ضع في خانه Package Name عند انشاء المشروع القيمه : com.ce4arab.sumNum والباقي عبئه كما تحب التصميم سيكون مربعين من نوع Number لكل رقم سيدخله المستخدم ثم زر للجمع مكتوب عليه Sum وبعدها TextView لعرض الناتج بها وسيكون واجبكم المنزلي عمل زر المسح الذي سيفرغ مربعين ال Number من القيم التي بهما. هذا سيكون ملف ال main.xml وهو الملف الذي سيحوي التصميم، سنستعمل layout من نوع linear وهو النوع الذي يكون مستعمل عند انشاء المشروع. سنضيف له العناصر السابقه مرتبه تحت بعضها ، بالنسبه لل TextView الذي سيعرض النتيجه وللزر بعد اضافتهم للتصميم، نعمل كليك يمين على كل واحد ونختار layout_width - fill parent هذا يعني ان العرض لهم هو ملئ الاب والاب هو الشاشه الخلفيه ستلاحظون الفرق عند تنفيذ هذه الحركه. وهذا ملف التصميم النهائي: [php]<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <EditText android:layout_height="wrap_content" android:layout_width="fill_parent" android:inputType="number" android:id="@+id/txtN1"> <requestFocus></requestFocus> </EditText> <EditText android:layout_height="wrap_content" android:layout_width="fill_parent" android:inputType="number" android:id="@+id/txtN2"></EditText> <Button android:layout_height="wrap_content" android:id="@+id/btnSum" android:text="Sum" android:layout_width="fill_parent"></Button> <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:id="@+id/lblResult" android:text="0" android:layout_width="fill_parent"></TextView> </LinearLayout>[/php] الان نأتي للكود: هذا هو الكلاس النهائي للفعاليه التي انشأها لنا ال ADT واسمها SumTwoNumbersActivit [php] package com.ce4arab.sumNum; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class SumTwoNumbersActivity extends Activity { //متغيرات لكي يتم ربطها بالعناصر على التصميم Button btnSum; EditText txtN1, txtN2; TextView lblResult; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //عمليه الربط بين المتغيرات والتصميم ... لنتمكن من كتابه الكود والتحكم بها btnSum = (Button) findViewById(R.id.btnSum); txtN1 = (EditText) findViewById(R.id.txtN1); txtN2 = (EditText) findViewById(R.id.txtN2); //تحديد معالج الحدث عند الضغط على الزر ... المعالج نفسه مكتوب بالاسفل btnSum_actionListener btnSumLsnr = new btnSum_actionListener(this); btnSum.setOnClickListener(btnSumLsnr); }//onCreate() }//CLASS //معالج الحدث actionListeer class btnSum_actionListener implements OnClickListener{ SumTwoNumbersActivity adaptee; public btnSum_actionListener(SumTwoNumbersActivity a){ adaptee = a; } @Override public void onClick(View v) { //متغيراتلاخذ الارقام من المستخدم int num1=0; int num2=0; //اخذ القيم من مربعين النص في التصميم txtN1 . txtN2 ووضعهم في متغيرات هنا مع تحويلهم لارقام //لان المدخلات من المستخدم تكون نصيه دائما حتى لو كتب رقما لذا يجب تحويلها من خلال ()Integer.parseInt num1 = Integer.parseInt(adaptee.txtN1.getText().toString()); num2 = Integer.parseInt(adaptee.txtN2.getText().toString()); //عمليه الجمع وتخزين الناتح بمتغير جديد result int result = num1 + num2; // وضع قيمه result داخل TextView في التصميم والذي اسمه lblResult adaptee.lblResult.setText(""+result); } }//btnSum_actionListener [/php] ** استعمال الرمز // وكتابه كلام بعده يسمى تعليقات comments تكون لتوضيح الكود والمترجم compiler يتجاهلها يفضل ازاله التعليقات العربيه من الكود اذا واجهت مشاكل الوضع الصيحي ان يتم تلوينها بالاخضر عند نقلها للمحرر eclipse وهذا برنامجنا اصبح جاهز للعمل يمكنكم التعديل عليه واضافه زر للطرح مثلا والقسمه والضرب .. ومن لديه اي استفسار يتفضل ويسأل هنا. [COLOR="Red"] كان هناك خطأ بالكود: بالسطر الاخير من كلاس معالج الحدث adaptee.lblResult.setText(result); الصحيح adaptee.lblResult.setText(""+result); وهذا لان الوظيفه setText مهئيه لاستقبال نص String وليس قيمه رقميه int ووضعنا ال ""+ لكي نحول القيمه الرقميه الى نص وممكن استعمال Integer.toString(result) كذلك[/COLOR] فهرس الدوره: [url]http://www.ce4arab.com/vb7/showthread.php?t=325071[/url] [/RIGHT] |
اخوي الله يعطيك العافيه ماقصرت بس الدرس احسه صعب جدا ياليت تبسط لنا أكثر هذه النقاط يعني في البداية نضع الازرار اللي ذكرتها
TextView Button CheckBox بعدين كلك يمين على كل واحد من هذه الازرار ونختار layout_width - fill parent اشان يكون الزر هذا مالي الشاشة الى حد هنا اعتقد ما في مشكله نجي للنقطه اللي بعدها : هذا سيكون ملف ال main.xml وهو الملف الذي سيحوي التصميم، سنستعمل layout من نوع linear وهو النوع الذي يكون مستعمل عند انشاء المشروع. اللي فهمته اني اذهب لملف المشروع الاساسي اللي على يسار الشاشه SumTwoNumbers واضغط عليه بعدين res بعدها layout بعدين main.xml حتى يظهر الكود اللي في المربع الأول النقطه الثانية : الان نأتي للكود: هذا هو الكلاس النهائي للفعاليه التي انشأها لنا ال ADT واسمها SumTwoNumbersActivit الى حد هنا احس مخي قفل لو تشرحلنا الكلاسات اكثر وكيف اوصل للمربع هذا وكيف يعني اكتب الاكواد والشغلات هذي ياليت ياطويل العمر تسهلنا اكثر الله يسهل عليك كل امورك في الدنيا والاخره لانني بالنسبه لي مبتدئ واريد الدرس يكون حبه حبه اشان نطلع مبرمجين على غفله ههههههههه الله يعطيك الف عافيه .... |
رد مكــــــــــــــــــــــــــرر
|
عزيزي صاحب الموضوع يبدو اني وصلت متاخرا لكن هل تستطيع توفير الدروس السابقة حتى استطيع متابعتك من البداية
واكون شاكرا لك |
جزاك الله خير
جاري التطبيق |
[quote=moshmoshkelah;2546269]عزيزي صاحب الموضوع يبدو اني وصلت متاخرا لكن هل تستطيع توفير الدروس السابقة حتى استطيع متابعتك من البداية
واكون شاكرا لك[/quote] [URL]http://www.ce4arab.com/vb7/showthread.php?t=325071[/URL] |
مشكووووووووووور على هذا الشرح ولكن عندي سؤال خارج هذا الدرس اذا ممكن تساعدني
المشكلة الي تواجهني الان كيفية كتابة عربي و اضهارها بالبرنامج لاني اجد صعوبة للوصول الى الحل لاقوم بالبدء ببرمجة شي عربي |
[quote=sma666;2546009]اخوي الله يعطيك العافيه ماقصرت بس الدرس احسه صعب جدا ياليت تبسط لنا أكثر هذه النقاط يعني في البداية نضع الازرار اللي ذكرتها
TextView Button CheckBox بعدين كلك يمين على كل واحد من هذه الازرار ونختار layout_width - fill parent اشان يكون الزر هذا مالي الشاشة الى حد هنا اعتقد ما في مشكله [COLOR=Red]اخي لن نضيف كل هذه العناصر في برنامجنا برنامجنا سيحوي زر ومربعين نص ومربع textView باقي العناصر للشرح فقط لكن بقيه كلامك صح عن ملئ الشاشه[/COLOR] نجي للنقطه اللي بعدها : هذا سيكون ملف ال main.xml وهو الملف الذي سيحوي التصميم، سنستعمل layout من نوع linear وهو النوع الذي يكون مستعمل عند انشاء المشروع. اللي فهمته اني اذهب لملف المشروع الاساسي اللي على يسار الشاشه SumTwoNumbers واضغط عليه بعدين res بعدها layout بعدين main.xml حتى يظهر الكود اللي في المربع الأول [COLOR=Red] صح 100% هناك تجد الملف ، يمكنك نسخ الكود من هنا كود main.xml وفتح الملف هناك في وضعيه ال xml وليس الوضعيه graphical وتلصقه فوق الكود الذي عندك وهنا يصبح التصميم مطابق[/COLOR] النقطه الثانية : الان نأتي للكود: هذا هو الكلاس النهائي للفعاليه التي انشأها لنا ال ADT واسمها SumTwoNumbersActivit الى حد هنا احس مخي قفل لو تشرحلنا الكلاسات اكثر وكيف اوصل للمربع هذا وكيف يعني اكتب الاكواد والشغلات هذي ياليت ياطويل العمر تسهلنا اكثر الله يسهل عليك كل امورك في الدنيا والاخره لانني بالنسبه لي مبتدئ واريد الدرس يكون حبه حبه اشان نطلع مبرمجين على غفله ههههههههه الله يعطيك الف عافيه [COLOR=Red]نعم اخي ، الاكواد والكلاسات كلها موجوده تحت src على اليسار تجدها داخل الحزم .. ان كنت تذكر الدروس الاولى قلت ان كل الكود يكون داخل الحزم وهي مجلدات com.xxx.yyy [/COLOR] ....[/quote] ان شاء الله افكر في عمل درس بسيط يكون تسجيل فيديو واعرضه ربما الدرس القادم لان كتابه الكود مع الشرح تكون افضل من كتابه الكود ووضع تعليقات عليه |
[quote=bmw_rav4;2546562]مشكووووووووووور على هذا الشرح ولكن عندي سؤال خارج هذا الدرس اذا ممكن تساعدني
المشكلة الي تواجهني الان كيفية كتابة عربي و اضهارها بالبرنامج لاني اجد صعوبة للوصول الى الحل لاقوم بالبدء ببرمجة شي عربي[/quote] اهلا اخي .. المفروض اذا كان جهازك معرب ان تكتب عربي بشكل عادي اثناء البرمجه قد لا يظهر صحيح على المحاكي لكنه سيظهر بشكل صحيح على الهواتف المعربه اما الغير معربه هناك طريقه سأضعها ان شاء الله ... هي عندي لكن لا اعرف على كومبيوتر البيت او العمل لكن ان شاء الله اضعها هنا. |
تم تعديل الدرس...
----------------------- كان هناك خطأ بالكود: بالسطر الاخير من كلاس معالج الحدث adaptee.lblResult.setText(result); الصحيح adaptee.lblResult.setText(""+result); وهذا لان الوظيفه setText مهئيه لاستقبال نص String وليس قيمه رقميه int ووضعنا ال ""+ لكي نحول القيمه الرقميه الى نص وممكن استعمال Integer.toString(result) كذلك ---------------------------------------- اعتذر عن الخطأ ... فعلا في العجله الندامه |
[quote=moshmoshkelah;2546269]عزيزي صاحب الموضوع يبدو اني وصلت متاخرا لكن هل تستطيع توفير الدروس السابقة حتى استطيع متابعتك من البداية
واكون شاكرا لك[/quote] قام الزميل [URL="http://www.ce4arab.com/vb7/member.php?u=131790"]amer1398[/URL] مشكورا بوضع رابط الفهرس وهو [url]http://www.ce4arab.com/vb7/showthread.php?t=325071[/url] وكذلك اضفته للتوقيع الخاص بي وفي نهايه كل درس واهلا بك اخي معنا |
الله يعطيك العافية
تم حفظ الشرح للمفضلة |
1 مرفق
اخي الكريم
ممكن تشوف الصورة.. مع اني جربت نفس الشي ونفس الخطوات مع win7 & ubuntu linux مع اني اقدر اكتب عربي في VB.net طبيعي ياريت تساعدني .... |
1 مرفق
[quote=bmw_rav4;2547810]اخي الكريم
ممكن تشوف الصورة.. مع اني جربت نفس الشي ونفس الخطوات مع win7 & ubuntu linux مع اني اقدر اكتب عربي في VB.net طبيعي ياريت تساعدني ....[/quote] اخي في الدروس القادمه سأشرح كيف تشغل البرنامج على الهاتف ان شاء الله ولو كان هاتفك معرب سيظهر الكلام صحيح ... حتى لو ظهر بشكل خاطء في الايكليبس اما اذا اردت عمل برنامج لكي يتوافق مع الهواتف الغير معربه في المرفقات مشروع لتنفيذ هذا يجب وضع خط فونت يقبل العربي في مجلد assets وعلى ما اعتقد انه لا ينفع لكل العناصر .. يعني textview و button وهكذا ان شاء الله تستفيد منه للامانه هناك كلاسين بالمشروع اخذتهم من النت وهم لمجموعه تعمل على تعريب الاندرويد واعتقد انه ايمن السند او احد اخر... |
طيب استاذي المشكلة اني مااعرف اي لغة برمجة هل ابدء معكم او الافضل اتعلم لغة برمجه الجافا ؟؟
وش الافضل اني اتعلم باالاكواد ولا بدون اكواد زي موقع قوقل [url]http://appinventor.googlelabs.com/learn/setup/setupwindows.html[/url] |
[quote=عالي بعقلي;2553299]طيب استاذي المشكلة اني مااعرف اي لغة برمجة هل ابدء معكم او الافضل اتعلم لغة برمجه الجافا ؟؟
وش الافضل اني اتعلم باالاكواد ولا بدون اكواد زي موقع قوقل [URL]http://appinventor.googlelabs.com/learn/setup/setupwindows.html[/URL][/quote] اهلا اخي نعم اذا استطعت البحث عن دورات جافا بسيطه لتبدأ بها هذا جيد، بالنسبه لل appInventor لا اعرف عنه شيء واذا كان من نوعيه البرامج التي تمكنك من عمل برنامج بدون كتابه الكود انا لا احبها ابدا لاني احب ان يكون لي تحكم كامل بالبرنامج الذي اعمله اما اذا كان يغطي حاجتك ... فيمكنك استعماله حتى تتعلم الجافا ان شاء الله. |
اخوي نحتاج الى من هم مثلك لتنزيل مثل هذه المواضيع ابداع والله ابداع وشغل ما ادري كيف اشكرك على هذا الموضوع الجامد
لكن اتمنى امنيه انك تعيد الشرح من البدايه لكن يكون تصوير الشرح بالفيديو او تحمل البرنامج الي يسجل فيديو من شاشه الكمبيوتر مباشره ولا تحتاج الى كاميره اسهل لك في الشرح واسهل للقارء في سرعه الفهم لان في بعض النقاط فيها صعوبه على المبتدء اما اذا كانت فيديو فيكون ميسر للجميع هذا هو طلبي وتسلم هاليدين الي كتبت الشرح هذي المواضيع الي تستحق التثبيت وشكرا |
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
|
[quote=اسامة البدر;2566160]اخوي نحتاج الى من هم مثلك لتنزيل مثل هذه المواضيع ابداع والله ابداع وشغل ما ادري كيف اشكرك على هذا الموضوع الجامد
لكن اتمنى امنيه انك تعيد الشرح من البدايه لكن يكون تصوير الشرح بالفيديو او تحمل البرنامج الي يسجل فيديو من شاشه الكمبيوتر مباشره ولا تحتاج الى كاميره اسهل لك في الشرح واسهل للقارء في سرعه الفهم لان في بعض النقاط فيها صعوبه على المبتدء اما اذا كانت فيديو فيكون ميسر للجميع هذا هو طلبي وتسلم هاليدين الي كتبت الشرح هذي المواضيع الي تستحق التثبيت وشكرا[/quote] اعتذر للتأخر بالرد .. حقيقه فكرت بهذا وجربت ... لكن انا لست جيد بهذه الامور ... ولست مدرس محترف فقد كانت النتيجه فيديو مليء بال" ايييييييي مممممممممم هنا نعمل ا ه ه ه هه ه ه ممممم" ربما احاول مره ثانيه ... لكن الامر بحاجه للتدريب :rolleyes: وبروفات :rolleyes: شكرا لك اخي على الاقتراح |
عزيزي يزن هل سيكون هناك دروس بلغة الجافا بالمستقبل وتقبل تحياتي ويعطيك الف عافية على المجهود العظيم
|
[quote=stinger1;2566969]اعتذر للتأخر بالرد ..
حقيقه فكرت بهذا وجربت ... لكن انا لست جيد بهذه الامور ... ولست مدرس محترف فقد كانت النتيجه فيديو مليء بال" ايييييييي مممممممممم هنا نعمل ا ه ه ه هه ه ه ممممم" ربما احاول مره ثانيه ... لكن الامر بحاجه للتدريب :rolleyes: وبروفات :rolleyes: شكرا لك اخي على الاقتراح[/quote] ما قصرت يالغالي تحياتي لاهل الاردن |
[quote=moshmoshkelah;2568562]عزيزي يزن هل سيكون هناك دروس بلغة الجافا بالمستقبل وتقبل تحياتي ويعطيك الف عافية على المجهود العظيم[/quote]
صراحه اكذب عليك لو قلت نعم .. لكنها ضروريه لمن يريد التقدم بموضوع برامج الاندرويد قد ابجث عن دورات جاهزه ويفضل عربيه واضعها هنا مع ذكر المصدر لكي يتمكن من يرغب بالتعلم .. وسأكون موجود للاجابه وتوضيح الاشكالات ان شاء الله اسامه البدر [quote]ما قصرت يالغالي تحياتي لاهل الاردن[/quote] حياك الله اخي :) |
مشكووووووووووور على هذا الشرح الأـكثر من مميز
بس عندي سؤال غبي كيف نحفظ البرنامج ؟؟؟ |
[quote=ابوعزوووز 07;2604308]مشكووووووووووور على هذا الشرح الأـكثر من مميز
بس عندي سؤال غبي كيف نحفظ البرنامج ؟؟؟[/quote] لا مو غبي بالمره اخي سؤالك رح يكون الدرس القادم لكن الفتره الاخيره كنت مشغول قليلا ان شاء الله الدرس القادم رح يكون كيفيه حفظ البرنامج او تصديره export بصيغه apk |
^^^^^^^^^
الله يوفقك ويجعل في ميزان حسناتك أنا كنت أظن أنك خلصت الشرح ترا متابع معاك من البداية بتشوف برامجي عن قريب<<< صدق نفسه :D |
جميع الأوقات بتوقيت GMT +3. الساعة الآن 08:06 AM. |
Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.