package com.catglo.taxidroid;
import java.util.Calendar;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import com.catglo.deliveryDatabase.DataBase;
import com.catglo.deliveryDatabase.TipTotalData;
public class TipHistoryActivity extends TaxiDroidBaseActivity {
private static final int SETTINGS = 0;
boolean userDates = false;
private Button email;
private EditText startDateField;
private EditText endDateField;
private TextView tipsMade;
//private TextView driverEarnings;
private TextView bestTip;
private TextView averageTip;
private TextView worstTip;
private Button text;
protected Calendar startDate;
protected Calendar endDate;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tips_totals);
final Calendar now = Calendar.getInstance();
now.setTimeInMillis(System.currentTimeMillis());
startDate = (Calendar) now.clone();
endDate = (Calendar) now.clone();
String[] listValues = {
getString(R.string.today),
getString(R.string.thisWeek),
getString(R.string.ThisMonth),
getString(R.string.ThisYear),
getString(R.string.CustomDateRange)};
Spinner dateRangeSpinner = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, listValues);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
dateRangeSpinner.setAdapter(adapter);
dateRangeSpinner.setSelection(1);
dateRangeSpinner.setOnItemSelectedListener(new OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
startDate = Calendar.getInstance();
startDate.setTimeInMillis(System.currentTimeMillis());
endDate = Calendar.getInstance();
endDate.setTimeInMillis(System.currentTimeMillis());
switch (arg2) {
case 0: startDate.set(Calendar.HOUR_OF_DAY, 0);
endDate.set(Calendar.HOUR_OF_DAY, 0);
endDate.add(Calendar.DAY_OF_YEAR, 1);
startDateField.setText(startDate.get(Calendar.MONTH)+"/"+startDate.get(Calendar.DAY_OF_MONTH)+"/"+startDate.get(Calendar.YEAR));
endDateField.setText(endDate.get(Calendar.MONTH)+"/"+endDate.get(Calendar.DAY_OF_MONTH)+"/"+endDate.get(Calendar.YEAR));
updateUI();
break;
case 1: getWorkWeekDates(now,startDate,endDate);
startDateField.setText(startDate.get(Calendar.MONTH)+"/"+startDate.get(Calendar.DAY_OF_MONTH)+"/"+startDate.get(Calendar.YEAR));
endDateField.setText(endDate.get(Calendar.MONTH)+"/"+endDate.get(Calendar.DAY_OF_MONTH)+"/"+endDate.get(Calendar.YEAR));
updateUI();
break;
case 2: startDate.set(Calendar.DATE, 0);
endDate.add(Calendar.MONTH, 1);
startDate.set(Calendar.DATE, 1);
startDateField.setText(startDate.get(Calendar.MONTH)+"/"+startDate.get(Calendar.DAY_OF_MONTH)+"/"+startDate.get(Calendar.YEAR));
endDateField.setText(endDate.get(Calendar.MONTH)+"/"+endDate.get(Calendar.DAY_OF_MONTH)+"/"+endDate.get(Calendar.YEAR));
updateUI();
break;
case 3: startDate.set(Calendar.DAY_OF_YEAR, 1);
endDate.add(Calendar.YEAR, 1);
endDate.set(Calendar.DAY_OF_YEAR, 0);
startDateField.setText(startDate.get(Calendar.MONTH)+"/"+startDate.get(Calendar.DAY_OF_MONTH)+"/"+startDate.get(Calendar.YEAR));
endDateField.setText(endDate.get(Calendar.MONTH)+"/"+endDate.get(Calendar.DAY_OF_MONTH)+"/"+endDate.get(Calendar.YEAR));
updateUI();
break;
case 4:
getDateRangeDialog(startDate,endDate,new OnDismissListener(){public void onDismiss(DialogInterface dialog) {
startDateField.setText(startDate.get(Calendar.MONTH)+"/"+startDate.get(Calendar.DAY_OF_MONTH)+"/"+startDate.get(Calendar.YEAR));
endDateField.setText(endDate.get(Calendar.MONTH)+"/"+endDate.get(Calendar.DAY_OF_MONTH)+"/"+endDate.get(Calendar.YEAR));
updateUI();
}});
break;
}
}
public void onNothingSelected(AdapterView<?> arg0) {}
});
startDateField = (EditText) findViewById(R.id.editText1);
endDateField = (EditText) findViewById(R.id.editText2);
getWorkWeekDates(now,startDate,endDate);
startDateField.setText(startDate.get(Calendar.MONTH)+"/"+startDate.get(Calendar.DAY_OF_MONTH)+"/"+startDate.get(Calendar.YEAR));
endDateField.setText(endDate.get(Calendar.MONTH)+"/"+endDate.get(Calendar.DAY_OF_MONTH)+"/"+endDate.get(Calendar.YEAR));
OnTouchListener dateTouchListener = new OnTouchListener(){public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN){
getDateRangeDialog(startDate,endDate,new OnDismissListener(){public void onDismiss(DialogInterface dialog) {
startDateField.setText(startDate.get(Calendar.MONTH)+"/"+startDate.get(Calendar.DAY_OF_MONTH)+"/"+startDate.get(Calendar.YEAR));
endDateField.setText(endDate.get(Calendar.MONTH)+"/"+endDate.get(Calendar.DAY_OF_MONTH)+"/"+endDate.get(Calendar.YEAR));
updateUI();
}});
return true;
}
return false;
}};
startDateField.setOnTouchListener(dateTouchListener);
endDateField.setOnTouchListener(dateTouchListener);
tipsMade = (TextView) findViewById(R.id.textView5);
//driverEarnings = (TextView) findViewById(R.id.textView7);
bestTip = (TextView) findViewById(R.id.textView9);
averageTip = (TextView) findViewById(R.id.textView11);
worstTip = (TextView) findViewById(R.id.wordtTip);
email = (Button) findViewById(R.id.button2);
text = (Button) findViewById(R.id.button1);
email.setOnClickListener(new View.OnClickListener() {public void onClick(final View v) {
TipTotalData tips = dataBase.getTipTotal(getApplicationContext(), " Payed >= 0 AND `"+ DataBase.Time + "` >= '"+String.format("%3$tY-%3$tm-%3$td", startDate, startDate, startDate) +
"' AND `"+ DataBase.Time + "` <= '" + String.format("%3$tY-%3$tm-%3$td", endDate, endDate, endDate)+"'");
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent .putExtra(android.content.Intent.EXTRA_TEXT, ""+
getString(R.string.tipsHistoryExportEmailTop)+"\n"+
getString(R.string.startDate)+":"+startDate.get(Calendar.MONTH)+"/"+startDate.get(Calendar.DAY_OF_MONTH)+"/"+startDate.get(Calendar.YEAR)+" "+
getString(R.string.endDate)+":"+startDate.get(Calendar.MONTH)+"/"+endDate.get(Calendar.DAY_OF_MONTH)+"/"+endDate.get(Calendar.YEAR)+" "+
getString(R.string.tipsMade) +":"+(tips.payed-tips.cost)+"\n"+
getString(R.string.DriverEarnings) +":"+(tips.total)+"\n"+
getString(R.string.bestTip) +":"+tips.bestTip+"\n"+
getString(R.string.averageTip) +":"+tips.averageTip+"\n"+
getString(R.string.worstTip) +":"+tips.worstTip+ "\n");
emailIntent .setType("plain/text");
emailIntent .putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{});
emailIntent .putExtra(android.content.Intent.EXTRA_SUBJECT, getString(R.string.app_name)+" "+getString(R.string.tipHistory) +
startDate.get(Calendar.MONTH)+"/"+startDate.get(Calendar.DAY_OF_MONTH)+"/"+startDate.get(Calendar.YEAR)+"..."+startDate.get(Calendar.MONTH)+"/"+endDate.get(Calendar.DAY_OF_MONTH)+"/"+endDate.get(Calendar.YEAR));
startActivity(Intent.createChooser(emailIntent, "Send mail..."));
}});
text.setOnClickListener(new View.OnClickListener() {public void onClick(final View v) {
TipTotalData tips = dataBase.getTipTotal(getApplicationContext(), " Payed >= 0 AND `"+ DataBase.Time + "` >= '"+String.format("%3$tY-%3$tm-%3$td", startDate, startDate, startDate) +
"' AND `"+ DataBase.Time + "` <= '" + String.format("%3$tY-%3$tm-%3$td", endDate, endDate, endDate)+"'");
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.setData(Uri.parse("sms:"));
sendIntent.putExtra("sms_body", ""+
getString(R.string.tipsHistoryExportEmailTop)+"\n"+
getString(R.string.startDate)+":"+startDate.get(Calendar.MONTH)+"/"+startDate.get(Calendar.DAY_OF_MONTH)+"/"+startDate.get(Calendar.YEAR)+" "+
getString(R.string.endDate)+":"+startDate.get(Calendar.MONTH)+"/"+endDate.get(Calendar.DAY_OF_MONTH)+"/"+endDate.get(Calendar.YEAR)+" "+
getString(R.string.tipsMade) +":"+(tips.payed-tips.cost)+"\n"+
getString(R.string.DriverEarnings) +":"+(tips.total)+"\n"+
getString(R.string.bestTip) +":"+tips.bestTip+"\n"+
getString(R.string.averageTip) +":"+tips.averageTip+"\n"+
getString(R.string.worstTip) +":"+tips.worstTip+ "\n");
startActivity(Intent.createChooser(sendIntent, "Send text..."));
}});
updateUI();
}
void updateUI(){
TipTotalData tips = dataBase.getTaxiTipTotal(getApplicationContext(), " `"+ DataBase.Time + "` >= '"+String.format("%3$tY-%3$tm-%3$td", startDate, startDate, startDate) +
"' AND `"+ DataBase.Time + "` <= '" + String.format("%3$tY-%3$tm-%3$td", endDate, endDate, endDate)+"'");
tipsMade.setText(""+currency.format(tips.payed-tips.cost));
bestTip.setText(""+currency.format(tips.bestTip));
if (Float.isNaN(tips.averageTip)==false) averageTip.setText(""+currency.format(tips.averageTip));
worstTip.setText(""+currency.format(tips.worstTip));
}
}