package org.glucosio.android.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
import com.wdullaer.materialdatetimepicker.time.RadialPickerLayout;
import com.wdullaer.materialdatetimepicker.time.TimePickerDialog;
import org.glucosio.android.R;
import org.glucosio.android.presenter.AddReadingPresenter;
import org.glucosio.android.tools.AnimationTools;
import org.glucosio.android.tools.FormatDateTime;
import java.text.DecimalFormat;
import java.util.Calendar;
import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;
public abstract class AddReadingActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener, DatePickerDialog.OnDateSetListener {
private final java.lang.String INTENT_EXTRA_EDIT = "editing";
private final java.lang.String INTENT_EXTRA_EDIT_ID = "edit_id";
private final String INTENT_EXTRA_PAGER = "pager";
private final String INTENT_EXTRA_DROPDOWN = "history_dropdown";
private AddReadingPresenter presenter;
private TextView addTimeTextView;
private TextView addDateTextView;
private FloatingActionButton doneFAB;
private Runnable fabAnimationRunnable;
private int pagerPosition;
private int dropdownPosition;
private long editId = 0;
private boolean editing = false;
protected void retrieveExtra() {
Bundle b = getIntent().getExtras();
if (b != null) {
pagerPosition = b.getInt(INTENT_EXTRA_PAGER);
editId = b.getLong(INTENT_EXTRA_EDIT_ID);
editing = b.getBoolean(INTENT_EXTRA_EDIT);
dropdownPosition = b.getInt(INTENT_EXTRA_DROPDOWN);
}
}
@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int seconds) {
TextView addTime = (TextView) findViewById(R.id.dialog_add_time);
DecimalFormat df = new DecimalFormat("00");
presenter.setReadingHour(df.format(hourOfDay));
presenter.setReadingMinute(df.format(minute));
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, hourOfDay);
cal.set(Calendar.MINUTE, minute);
FormatDateTime formatDateTime = new FormatDateTime(getApplicationContext());
addTime.setText(formatDateTime.getTime(cal));
}
@Override
public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
TextView addDate = (TextView) findViewById(R.id.dialog_add_date);
DecimalFormat df = new DecimalFormat("00");
presenter.setReadingYear(year + "");
presenter.setReadingMonth(df.format(monthOfYear + 1));
presenter.setReadingDay(df.format(dayOfMonth));
String date = +dayOfMonth + "/" + presenter.getReadingMonth() + "/" + presenter.getReadingYear();
addDate.setText(date);
}
public void createDateTimeViewAndListener() {
addTimeTextView = (TextView) findViewById(R.id.dialog_add_time);
addDateTextView = (TextView) findViewById(R.id.dialog_add_date);
addDateTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Calendar now = Calendar.getInstance();
DatePickerDialog dpd = DatePickerDialog.newInstance(
AddReadingActivity.this,
now.get(Calendar.YEAR),
now.get(Calendar.MONTH),
now.get(Calendar.DAY_OF_MONTH)
);
dpd.show(getFragmentManager(), "Datepickerdialog");
dpd.setMaxDate(now);
}
});
addTimeTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean is24HourFormat = android.text.format.DateFormat.is24HourFormat(getApplicationContext());
AddReadingActivity addReadingActivity = AddReadingActivity.this;
AddReadingPresenter addReadingPresenter = addReadingActivity.getPresenter();
Calendar cal = addReadingPresenter.getReadingCal();
if (addReadingActivity.isEditing()) {
cal.setTime(addReadingPresenter.getReadingTime());
}
TimePickerDialog tpd = TimePickerDialog.newInstance(
AddReadingActivity.this,
cal.get(Calendar.HOUR_OF_DAY),
cal.get(Calendar.MINUTE),
is24HourFormat);
tpd.show(getFragmentManager(), "Timepickerdialog");
}
});
}
public void createFANViewAndListener() {
doneFAB = (FloatingActionButton) findViewById(R.id.done_fab);
doneFAB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialogOnAddButtonPressed();
}
});
fabAnimationRunnable = new Runnable() {
@Override
public void run() {
AnimationTools.startCircularReveal(doneFAB);
}
};
doneFAB.postDelayed(fabAnimationRunnable, 600);
}
protected abstract void dialogOnAddButtonPressed();
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (Integer.parseInt(android.os.Build.VERSION.SDK) > 5
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
onBackPressed();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onBackPressed() {
finishActivity();
}
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
public void finishActivity() {
Intent intent = new Intent(this, MainActivity.class);
// Pass pager position to open it again later
Bundle b = new Bundle();
b.putInt(INTENT_EXTRA_PAGER, this.getPagerPosition());
b.putInt(INTENT_EXTRA_DROPDOWN, this.getDropdownPosition());
intent.putExtras(b);
startActivity(intent);
finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
doneFAB.removeCallbacks(fabAnimationRunnable);
}
public AddReadingPresenter getPresenter() {
return this.presenter;
}
// Getter and Setter
public void setPresenter(AddReadingPresenter newPresenter) {
this.presenter = newPresenter;
}
public int getPagerPosition() {
return pagerPosition;
}
public int getDropdownPosition() {
return dropdownPosition;
}
public long getEditId() {
return editId;
}
public boolean isEditing() {
return editing;
}
public TextView getAddTimeTextView() {
return addTimeTextView;
}
public void setAddTimeTextView(TextView addTimeTextView) {
this.addTimeTextView = addTimeTextView;
}
public TextView getAddDateTextView() {
return addDateTextView;
}
public void setAddDateTextView(TextView addDateTextView) {
this.addDateTextView = addDateTextView;
}
}