summaryrefslogtreecommitdiff
path: root/client/Piztor/src/com/macaroon/piztor/AlertMaker.java
blob: eec01f5bf621b8dc98cb9c7d8af02cbcb6f95f91 (plain) (blame)
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
package com.macaroon.piztor;

import java.io.Closeable;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
import java.util.zip.Inflater;

import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.os.Message;
import android.provider.Settings;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.LocationData;
import com.baidu.mapapi.map.MKMapTouchListener;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.OverlayItem;
import com.baidu.mapapi.map.PopupOverlay;
import com.baidu.platform.comapi.basestruct.GeoPoint;

public class AlertMaker {

	private Calendar calendar;
	private Context context;
	private GeoPoint markerPoint;
	private MapMaker mapMaker;
	private long timestamp;
	 int mHour;
	 int mMinute;
	
	public AlertMaker(Context cc, MapMaker mm) {
		context =cc;
		mapMaker = mm;
	}
		
	public static void closeBoard(Context cc) {
		InputMethodManager imm = (InputMethodManager) cc
				.getSystemService(Context.INPUT_METHOD_SERVICE);
		  if (imm.isActive())
			  imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,
		 InputMethodManager.HIDE_NOT_ALWAYS);
		 }

	public void showSettingsAlert() {
		
		closeBoard(context);
		AlertDialog.Builder gpsDialog = new AlertDialog.Builder(context);
		gpsDialog.setTitle("GPS设置");
		gpsDialog.setMessage("GPS未开启,是否前去打开?");
		gpsDialog.setPositiveButton("设置",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
						context.startActivity(intent);
					}
				});
		gpsDialog.setNegativeButton("不使用GPS",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						dialog.cancel();
					}
				});
		gpsDialog.show();
	}
	
	public void showLateAlert() {
		
		closeBoard(context);
		AlertDialog.Builder lateDialog = new AlertDialog.Builder(context);
		lateDialog.setTitle("阿哦");
		lateDialog.setMessage("你迟到了!");
		lateDialog.setNeutralButton("知道了", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				arg0.cancel();
			}
		});
		lateDialog.show();
		closeBoard(context);
	}

public void showRemoveMarkerAlert() {
		
		closeBoard(context);
		AlertDialog.Builder removeDialog = new AlertDialog.Builder(context);
		removeDialog.setTitle("取消路标");
		removeDialog.setMessage("是否取消路标?");
		removeDialog.setPositiveButton("确定",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						mapMaker.mOverlay.removeItem(mapMaker.nowMarker);
						mapMaker.nowMarker = null;
						mapMaker.mMapView.refresh();
						mapMaker.popLay.hidePop();
					}
				});
		removeDialog.setNegativeButton("取消",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						mapMaker.popLay.hidePop();
						dialog.cancel();
					}
				});
		removeDialog.show();
		closeBoard(context);
	}
	
	public long toTimestamp(int hour, int minute) {
		
		calendar = Calendar.getInstance();
		calendar.set(calendar.get(Calendar.YEAR), 
				calendar.get(Calendar.MONTH), 
				calendar.get(Calendar.DAY_OF_MONTH),
				hour,minute);
		return calendar.getTimeInMillis()/1000;
	}
	
	//TODO
	public void updateMarkerTime(int hour, int minute) {
		Log.d("time", hour + "  " + minute);
		Log.d("time", "    " + toTimestamp(hour, minute));
		mapMaker.newMarkerHour = hour;
		mapMaker.newMarkerMinute = minute;
		mapMaker.newMarkerTimestamp = toTimestamp(hour, minute);
	}
	
	public void showMarkerAlert(GeoPoint point) {
		
		closeBoard(context);
		boolean flag = false;
		if (point == null) return;
		markerPoint = point;
		
		calendar = Calendar.getInstance();
		TimePickerDialog markerDialog = new TimePickerDialog(context
				, new TimePickerDialog.OnTimeSetListener() {
					boolean flag = false;
					@Override
					public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
						////// at least 2 minutes
						if ( !flag &&
							((hourOfDay >= calendar.get(Calendar.HOUR_OF_DAY) && minute >= calendar.get(Calendar.MINUTE))
							|| hourOfDay > calendar.get(Calendar.HOUR_OF_DAY))) {
							updateMarkerTime(hourOfDay, minute);
							mapMaker.DrawMarker(markerPoint);
							flag = true;
							Log.d("marker", "marker alert calls drawmarker");
							} else if (!flag) {
							Toast toast = Toast.makeText(context,
								"太早了!多给一点时间", Toast.LENGTH_LONG);
							toast.show();
							closeBoard(context);
							showMarkerAlert(markerPoint);
						}
					}
				}
				, calendar.get(Calendar.HOUR_OF_DAY)
				, calendar.get(Calendar.MINUTE), true);
				markerDialog.show();
				closeBoard(context);
	}

	public void showCheckinAlter() {
		closeBoard(context);
		final AlertDialog.Builder checkinDialog = new AlertDialog.Builder(context);
		LayoutInflater infaler = LayoutInflater.from(context);
		final LinearLayout layout = (LinearLayout)infaler.inflate(R.layout.checkindialog, null);
		checkinDialog.setView(layout);
		checkinDialog.setNeutralButton("取消", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				InputMethodManager im = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
                im.hideSoftInputFromWindow(layout.getWindowToken(), 0);
				dialog.cancel();
			}
		});
		final ProgressBar pbar = (ProgressBar)layout.findViewById(R.id.checkin_progress);
		final TextView checkinInfo = (TextView)layout.findViewById(R.id.checkin_info);
		checkinDialog.show();
		closeBoard(context);
		new CountDownTimer(5000, 1000) {

		     public void onTick(long millisUntilFinished) {
		    	 int ttt = (int)millisUntilFinished;
		         pbar.setProgress(ttt);
		     }

		     public void onFinish() {
		    	 //TODO
		    	 pbar.setVisibility(View.GONE);
		    	 mapMaker.removeMarker();
		    	 Toast toast = Toast.makeText(context, "已签到!", 2000);
		    	 toast.setGravity(Gravity.TOP, 0, 80);
		    	 toast.show();
		    	 checkinInfo.setText("成功!");
		     }
		  }.start();
	}

}