-
Notifications
You must be signed in to change notification settings - Fork 1
/
MissionActivity.java
254 lines (202 loc) · 8.83 KB
/
MissionActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
package tnm082.challenge.activities;
import java.util.List;
import tnm082.challenge.DBHandler;
import tnm082.challenge.IntentIntegrator;
import tnm082.challenge.IntentResult;
import tnm082.challenge.Mission;
import tnm082.challenge.User;
import tnm082.challenge.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.CheckBox;
import android.widget.Toast;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ToggleButton;
import android.util.Log;
import android.widget.Button;
/**
* Kodad av: Markus Olsson
* Task nr: 3 Sprint 2
* Datum: 2012-04-25
* Estimerad tid: 4h
* Faktisk tid: 3h
* Testad/av: Ja/Nej / namn
* Utcheckad/av: Ja/Nej / namn
*/
public class MissionActivity extends Activity {
//skapar en toggleknapp
ToggleButton tb;
//Skapa en CheckBox
CheckBox checkDone;
String barcode;
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if (scanResult != null) {
barcode = scanResult.getContents();
if(Integer.parseInt(barcode) == getIntent().getExtras().getInt("mission_id")){
User.dummyUser().completeMission(getIntent().getExtras().getInt("mission_id"));
//sätter checkknappen "checkad" och inte ändringsbar samt acceptknappen oändringsbar
checkDone.setChecked(true);
checkDone.setEnabled(false);
tb.setEnabled(false);
Toast toast = Toast.makeText(getBaseContext(),"Uppdraget avklarat. Bra gjort!", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}else{
checkDone.setChecked(false);
Toast toast = Toast.makeText(getBaseContext(),"Tyvärr, det där var fel kod.", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
}else {
// Handle cancel
checkDone.setChecked(false);
Toast toast = Toast.makeText(this, "Scan was Cancelled!1111", Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP, 25, 400);
toast.show();
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mission_info); //layouten designas i res/layout/main.xml
final DBHandler db = new DBHandler();
// H�mta den Intent som vyn har
Intent nIntent = getIntent();
// Ja, detta �r ju klurigt
String contentName = nIntent.getData().toString();
// H�mta allt extra som skickades med Intent
Bundle extras = nIntent.getExtras();
// H�mta missionId fr�n extravariablerna som kom med Intent
final int missionId = extras.getInt("mission_id");
// h�mtar missions o users till listor som �r final s� vi kan anv�nda dom i v�r onclick
final List<Mission> mList = db.getMissions();
final List<User> uList = db.getUsers();
int thisMission = 0;
//######## HAMTA VAR SPECIFIKA MISSION ##########
Log.d("Accept/avAccept","MissionId " + missionId);
//loop som hittar vilken plats v�rt mission har i missionlistan och sparar den variabeln som en
//final value s� vi kommer �t den i v�r onclick
for(int i=0;i<mList.size();i++){
if(missionId==mList.get(i).getId())
{
thisMission = i;
}
}
Log.d("Accept/avAccept","thisMission " + thisMission);
final int finalThisMission = thisMission;
//skapar kopplingar till xmlen
final TextView nameText = (TextView)findViewById(R.id.textView1);
final TextView descText = (TextView)findViewById(R.id.textView2);
//lägger in ny text i rutorna
nameText.setText(contentName);
descText.setText((mList.get(finalThisMission).getDesc()));
//**** Koppling mellan Done-knappen och xml ****
// Checkboxen ska vara unchecked om man inte har accepterat uppdraget.
checkDone = (CheckBox) findViewById(R.id.checkDone);
checkDone.setEnabled(false);
//koppla ihop Acceptknappen med xml:en
tb = (ToggleButton) findViewById(R.id.toggleButton1);
List<Mission> acceptedMList = db.getMissions(uList.get(0),"active");
List<Mission> checkedMList = db.getMissions(uList.get(0),"completed");
// Loop som kollar om checkboxen redan ar ikryssad
for(int i = 0; i < checkedMList.size(); i++)
{
Log.d("Checkbox"," checkat: " + i + " dyngcheckat: " + checkedMList.get(i).getName());
//om uppdraget är avklarat
if(checkedMList.get(i).getId()==missionId)
{
checkDone.setChecked(true);//denna skall vara true om vi har checkat uppdraget
Log.d("Checkbox"," Done-Knappen satts till true ");
//sätter acceptknappen checked och inte ändringsbar
tb.setChecked(true);
tb.setEnabled(false);
}
}
for(int i = 0;i<acceptedMList.size();i++)
{
Log.d("Accept/avAccept"," element: " + i + " stuff: " + acceptedMList.get(i).getName());
//om uppdraget är accepterat
if(acceptedMList.get(i).getId()==missionId)
{
tb.setChecked(true);//denna skall vara true om vi har accepterat uppdraget
Log.d("Accept/avAccept"," Knappen s�ts till true ");
//sätter check knappen ändringsbar
checkDone.setEnabled(true);
}
}
//kopierad kod
//skapa en alertdialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//de som ska stå
builder.setMessage("Är du säker?")
.setCancelable(false)
.setPositiveButton("Ja", new DialogInterface.OnClickListener() {//när man trycker ja
//event som ska ske när man klickar
public void onClick(DialogInterface dialog, int id) {
//updaterar mot databasen
db.updateMission(uList.get(0).getId(), mList.get(finalThisMission).getId());
Log.d("Checkat/AvCheckat",uList.get(0).getId()+" Avklarat Uppdrag " + mList.get(finalThisMission).getId());
//sätter checkknappen "checkad" och inte ändringsbar samt acceptknappen oändringsbar
checkDone.setChecked(true);
checkDone.setEnabled(false);
tb.setEnabled(false);
}
})
.setNegativeButton("Nej", new DialogInterface.OnClickListener() {//när man trycker nej
public void onClick(DialogInterface dialog, int id) {
//cancla den actionen och sätt knappen ocheckad
dialog.cancel();
checkDone.setChecked(false);
}
});
//skapar själva objektet som skall anropas
final AlertDialog alert = builder.create();
checkDone.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
//Kolla om checkbox ar checkad.
if(checkDone.isChecked())
{
//om man klickar för att checka i så anropa alertwindown
IntentIntegrator integrator = new IntentIntegrator(MissionActivity.this);
integrator.initiateScan();
}
}
});
tb.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
//kolla vilket state knappen �r i
if(tb.isChecked())
{
//Mittcentrerad popup som sager Uppdraget Accepterat
Toast toast = Toast.makeText(getBaseContext()," Uppdaget Accepterat", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
db.accept(uList.get(0), mList.get(finalThisMission));
Log.d("Accept/avAccept",uList.get(0).getName()+" Acceptera uppdraget " + mList.get(finalThisMission).getName());
checkDone.setEnabled(true);
}
else
{
//Mittcentrerad popup som sager Uppdraget Avaccepterat
Toast toast = Toast.makeText(getBaseContext()," Uppdaget Avaccepterat", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
db.unaccept(uList.get(0), mList.get(finalThisMission));
Log.d("Accept/avAccept",uList.get(0).getName()+" av Accepterar uppdraget " + mList.get(finalThisMission).getName());
checkDone.setEnabled(false);
}
}
});
}
}