First Dialog Shot:
Mobile Owner Shot:
Dialer Shot:
Introduction
Most of people may wonder that simulating isn�t a worthy work and is just wasting time. But as an answer to those people I should say simulating actually is not a simple work and it needs so much experience and ability, which differs in case of the project. This program is just a project and its own end is to show the author�s abilities in OOP and other special topics of advanced programming such as exception handling using STL and so forth. And on the other hand it can be used for educational purposes, many users or maybe many beginner programmers need to have some kind of resources to deal with their new problems by using those resources. So this project can be used as a good resource for those people.
This Project is a simulator of a simple mobile set which has these abilities:
- Call Records Menu
- Phone Book Menu
- Settings Menu
- Messages Menu
Note that the structure of this program is in a way that u can add any other abilities to this mobile set.
Because this program (MS) is a simulator so I should enable all simple actions and simulate them correctly such as sending messages or calling to some one by the mobile owner or maybe receiving messages form another persons. So when u start the MS an intermediate Dialog comes up and ask u if u want to be the mobile owner or the dialer, the first dialog has 5 text boxes which the mobile owner should just fill 2 of them and the dialer should fill them all, the first and the second fields are IP and the PROT of the computer on which the MS as the mobile owner is running, notice that using IP and PORT here is just for simulating this property of real mobile sets that they can call other persons via cables or satellites and here our cable or remote devices is just a Socket. If the dialer enters the same IP & PORT as the mobile owner then they can connect each other by calling or sending messages.
About The Main Classes:
This Project has been written by VC++6 and it has so many different classes. Some of them are just practical classes used in the interface of MS but some of them are key classes, which the basis of the project is settled on them.
The Key Classes Are:
- Scr
- BtZero
- BtOne
- BtTwo
- BtThree
- BtFour
- BtFive
- BtSix
- BtSeven
- BtEight
- BtNine
- BtStar
- BtSquar
- BtOk
- BtCancel
- BtUp
- BtDown
- BtLeft
- BtRight
- BtDial
- BtCancel
All the above classes are actually the builders of the main parts of the mobile set. Like the screen or any key one the pad like button one, button ok�
The most important class of all above is the first one �Class Scr� which handles all the actions that I�ve defined in it. This Class has some defined actions that you can see them all in the �Scr.h� file. All Actions that I myself added to the main class are listed below:
SCRACT_0 |
0 |
Handles Pressing Button 0 |
SCRACT_1 |
1 |
Handles Pressing Button 1 |
SCRACT_2 |
2 |
Handles Pressing Button 2 |
SCRACT_3 |
3 |
Handles Pressing Button 3 |
SCRACT_4 |
4 |
Handles Pressing Button 4 |
SCRACT_5 |
5 |
Handles Pressing Button 5 |
SCRACT_6 |
6 |
Handles Pressing Button 6 |
SCRACT_7 |
7 |
Handles Pressing Button 7 |
SCRACT_8 |
8 |
Handles Pressing Button 8 |
SCRACT_9 |
9 |
Handles Pressing Button 9 |
SCRACT_OK |
10 |
Handles Pressing Button Ok |
SCRACT_CANCEL |
11 |
Handles Pressing Button Cancel |
SCRACT_DIAL |
12 |
Handles Pressing Button Dial |
SCRACT_HANG |
13 |
Handles Pressing Button Hang |
SCRACT_OFF |
14 |
Handles Turning The Set Off |
SCRACT_ON |
15 |
Handles Turning The Set On |
SCRACT_NORMAL |
16 |
Handles The Normal Mode |
SCRACT_STAR |
17 |
Handles Pressing The Star Button |
SCRACT_SQUAR |
18 |
Handles Pressing The Square Button |
SCRACT_BASEMENU |
19 |
Handles Showing The Base Menu |
SCRACT_SETTINGSMENU |
20 |
Handles Showing The Settings Menu |
SCRACT_RINGSANDBEEPSMENU |
21 |
Handles Showing The Rings And Beeps Menu |
SCRACT_MUTEMENU |
22 |
Handles Showing The Mute Menu |
SCRACT_ORGANIZERMENU |
23 |
Handles Showing The Organizer Menu |
SCRACT_MESSAGESMENU |
24 |
Handles Showing The Messages Menu |
SCRACT_SENDMESSAGEMENU |
25 |
Handles Showing The Send A Message Part |
SCRACT_CLEARMESSAGEMENU |
26 |
Handles Showing The Clear Message Part |
SCRACT_READMESSAGEMENU |
27 |
Handles Showing The Read Message Part |
SCRACT_ADDPHONEMENU |
28 |
Handles Showing The Add Phone Menu |
SCRACT_READPHONEMENU |
29 |
Handles Showing The Read Phone Menu |
SCRACT_CLEARPHONEMENU |
30 |
Handles Showing The Clear Phone Menu |
SCRACT_PHONEBOOKMENU |
31 |
Handles Showing The Phonebook Menu |
SCRACT_CALLRECORDSMENU |
32 |
Handles Showing The Call Records Menu |
SCRACT_RECEVINGMESSAGE |
33 |
Handles The Action When A Messages is just received. |
SCRACT_RINGING |
34 |
Handles The Action Ringing. |
SCRACT_LOSTCON |
35 |
Handles Showing The Connection Is Lost. |
SCRACT_ISOFF |
36 |
Handles Specifying Whether The Set Is Off |
SCRACT_BUSY |
37 |
Handles Specifying Whether The Set Is Busy |
SCRACT_DIALACT |
38 |
Handles Specifying the Action On Dialing Someone Except The Dialer |
SCRACT_VIBRATORMENU |
39 |
Handles Showing The Vibrator Menu |
SCRACT_SCREENCOLMENU |
40 |
Handles Showing The Screen Color Menu |
SCRACT_SCREENSELCOLMENU |
41 |
Handles Showing The Screen Selected Color Menu |
SCRACT_SCREENMENU |
42 |
Handles Showing The Screen Menu |
SCRACT_SCREENTXTMENU |
43 |
Handles Showing The Screen Selected Text Color Menu |
SCRACT_LEFT |
44 |
Handles Pressing The Left Button |
The basis of all key classes is in a way that the interface and the classes are in the maximum independency in comparison with each other.
That�s because of those defined actions that make the �Scr� class very independent and gives it the ability of being used in different circumstances in different projects.
For better understanding of the relations between the classes you�d better check the �MS.mdl� which shows you all the relations and you should have the �Rational Rose� Program To Open The .mdl file.
In the �Scr � there is a key variable called �stat� with CString type that include the Set�s immediate situation and helps us understand where we are right now!
By checking the �stat� variable and updating it when ever some changes are made we can easily handle all actions.
In addition to the main class that handles all actions Just for having the interface and the code production in the maximum range of independency I made a single class for each of the pad buttons like BtZero, BtOne and so forth�
Lets See What Do We Have In Those Separate Classes For Instance Class BtOk:
#include "ShadeButtonST.H"
#include "scr.h"
class BtOk : public CShadeButtonST
{
public:
void OnPressBt(Scr *s)
{
s->PerformAct(SCRACT_OK);
}
void CancelSound()
{
SetSound(NULL,::GetModuleHandle(NULL), TRUE,FALSE);
}
};
As u can see there are two methods one of them is �void OnPressBt (Scr *s){�}� which is called when ever some one press the ok button and asks the Scr object to perform the SCRACT_OK action by using the PerformAction method. And the other method is for canceling the sound property of one button.
In the Scr class we have an important function, which handle all the action called PerformAction, and we use this method whenever we want to perform an action.
How To Use It?
There Is A Help File,By Pressing F1 While Running The MS You Can Check It.
You can see other things there and if still you have any question please make me happy and mail me ;).