1/*
2
3LocationView - View for the Location Controls on DUNWindow
4
5Authors: Misza (misza@ihug.com.au)
6		 Sikosis (beos@gravity24hr.com)
7
8(C) 2002 OpenBeOS under MIT license
9
10*/
11
12
13#include "LocationView.h"
14
15using std::cout;
16using std::endl;
17
18
19// LocationView -- View inside DUNWindow
20LocationView::LocationView() : BView(BRect(55,31,285,87),"locationview",B_FOLLOW_NONE,B_WILL_DRAW)
21{
22	SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
23
24	BRect line1(0,5,125,20);
25	disablecallwaiting = new BCheckBox(line1,"disablecallwaiting","Disable call waiting:",new BMessage(DCW_CHKBOX));
26
27	AddChild(disablecallwaiting);
28
29	line1.OffsetBy(30,0);
30
31	dcwvalue = new BTextControl(BRect(125,5,175,20),"dcwvalue",NULL,NULL,new BMessage(CHANGE_DCW));
32	AddChild(dcwvalue);
33
34	line1.OffsetBy(30,0);
35
36	dcwlist = new BPopUpMenu("");
37
38	dcwone = new BMenuItem("*70,",new BMessage(DCW_ITEMS));
39    dcwtwo = new BMenuItem("70#,",new BMessage(DCW_ITEMS));
40    dcwthree = new BMenuItem("1170,",new BMessage(DCW_ITEMS));
41	dcwlist->AddItem(dcwone);
42	dcwlist->AddItem(dcwtwo);
43	dcwlist->AddItem(dcwthree);
44
45	dcwlistfield = new BMenuField(BRect(180,5,240,20),
46	NULL,NULL,dcwlist);
47	dcwone->SetMarked(true);
48	AddChild(dcwlistfield);
49
50	//LINE 2
51	BRect line2(0,30,125,45);
52
53	dialoutprefix = new BCheckBox(line2,"dialoutprefix",
54	"Dial out prefix:",new BMessage(DOP_CHKBOX));
55	AddChild(dialoutprefix);
56
57	dopvalue = new BTextControl(BRect(125,30,175,45),"dopvalue",NULL,NULL,
58	new BMessage(CHANGE_DOP));
59	AddChild(dopvalue);
60
61	doplist = new BPopUpMenu("");
62
63	dopone = new BMenuItem("1,",new BMessage(DOP_ITEMS));
64    doptwo = new BMenuItem("9,",new BMessage(DOP_ITEMS));
65    dopthree = new BMenuItem("9,1,",new BMessage(DOP_ITEMS));
66
67	doplist->AddItem(dopone);
68	doplist->AddItem(doptwo);
69	doplist->AddItem(dopthree);
70	doplistfield = new BMenuField(BRect(180,30,240,45),
71	NULL,NULL,doplist);
72	dopone->SetMarked(true);
73	AddChild(doplistfield);
74
75	//turned off by default
76   	dcwlistfield->SetEnabled(false);
77	dcwvalue->SetEnabled(false);
78
79   	doplistfield->SetEnabled(false);
80	dopvalue->SetEnabled(false);
81}
82// ------------------------------------------------------------------------------- //
83
84
85// LocationView::MessageReceived -- Receives Messages
86void LocationView::MessageReceived(BMessage *msg)
87{
88	switch(msg->what)
89	{
90		case DCW_CHKBOX:
91			if(disablecallwaiting->Value() == B_CONTROL_ON)
92			{
93				cout << "dcw on" << endl;
94				dcwlistfield->SetEnabled(true);
95				dcwvalue->SetEnabled(true);
96			} else {
97				cout << "dcw off" << endl;
98				dcwlistfield->SetEnabled(false);
99				dcwvalue->SetEnabled(false);
100			}
101			break;
102		case DOP_CHKBOX:
103			if(dialoutprefix->Value() == B_CONTROL_ON)
104			{
105				cout << "dop on" << endl;
106				doplistfield->SetEnabled(true);
107				dopvalue->SetEnabled(true);
108			} else {
109				cout << "dop off" << endl;
110				doplistfield->SetEnabled(false);
111				dopvalue->SetEnabled(false);
112			}
113			break;
114		case CHANGE_DOP:
115			cout << "DOP is set to: " << dopvalue->Text() << endl;
116			break;
117		case CHANGE_DCW:
118			cout << "DCW is set to: " << dcwvalue->Text() << endl;
119			break;
120		case DCW_ITEMS:
121			if(dcwone->IsMarked())
122				dcwvalue->SetText("*70,");
123			else if(dcwtwo->IsMarked())
124				dcwvalue->SetText("70#,");
125			else if(dcwthree->IsMarked())
126				dcwvalue->SetText("1170,");
127			dcwvalue->MakeFocus();
128			cout << "DCW is set to: " << dcwvalue->Text() << endl;
129			break;
130		case DOP_ITEMS:
131			if(dopone->IsMarked())
132				dopvalue->SetText("1,");
133			else if(doptwo->IsMarked())
134				dopvalue->SetText("9,");
135			else if(dopthree->IsMarked())
136				dopvalue->SetText("9,1,");
137			dopvalue->MakeFocus();
138			cout << "DOP is set to: " << dopvalue->Text() << endl;
139			break;
140		default:
141    	    BView::MessageReceived(msg);
142        	break;
143	}
144}
145// ------------------------------------------------------------------------------- //
146
147// LocationView::AttachedToWindow -- facilitates the LocationView to be able to receive messages in MessageReceived()
148void LocationView::AttachedToWindow()
149{
150	disablecallwaiting->SetTarget(this);
151	dcwvalue->SetTarget(this);
152	dcwone->SetTarget(this);
153	dcwtwo->SetTarget(this);
154	dcwthree->SetTarget(this);
155
156	dialoutprefix->SetTarget(this);
157	dopvalue->SetTarget(this);
158	dopone->SetTarget(this);
159	doptwo->SetTarget(this);
160	dopthree->SetTarget(this);
161}
162// ------------------------------------------------------------------------------- //
163