/*******************************************************************************
* Copyright (c) 2010 Denis Solonenko.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v2.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* Denis Solonenko - initial API and implementation
******************************************************************************/
package ru.orangesoftware.financisto2.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import ru.orangesoftware.financisto2.R;
import ru.orangesoftware.financisto2.filter.WhereFilter;
import ru.orangesoftware.financisto2.filter.DateTimeCriteria;
import ru.orangesoftware.financisto2.datetime.DateUtils;
import ru.orangesoftware.financisto2.utils.PinProtection;
import ru.orangesoftware.financisto2.datetime.Period;
import ru.orangesoftware.financisto2.datetime.PeriodType;
import java.text.DateFormat;
import java.util.Date;
public abstract class AbstractExportActivity extends Activity {
private final int layoutId;
private final WhereFilter filter = WhereFilter.empty();
private Button bPeriod;
private DateFormat df;
public AbstractExportActivity(int layoutId) {
this.layoutId = layoutId;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layoutId);
df = DateUtils.getShortDateFormat(this);
filter.put(new DateTimeCriteria(PeriodType.THIS_MONTH));
bPeriod = (Button)findViewById(R.id.bPeriod);
bPeriod.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
Intent intent = new Intent(AbstractExportActivity.this, DateFilterActivity.class);
filter.toIntent(intent);
startActivityForResult(intent, 1);
}
});
Button bOk = (Button)findViewById(R.id.bOK);
bOk.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
savePreferences();
Intent data = new Intent();
filter.toIntent(data);
updateResultIntentFromUi(data);
setResult(RESULT_OK, data);
finish();
}
});
Button bCancel = (Button)findViewById(R.id.bCancel);
bCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
setResult(RESULT_CANCELED);
finish();
}
});
internalOnCreate();
restorePreferences();
updatePeriod();
}
protected abstract void savePreferences();
protected abstract void restorePreferences();
protected abstract void internalOnCreate();
protected abstract void updateResultIntentFromUi(Intent data);
public void clearFilter() {
filter.clear();
}
private void updatePeriod() {
DateTimeCriteria c = filter.getDateTime();
if (c == null) {
bPeriod.setText(R.string.no_filter);
} else {
Period p = c.getPeriod();
if (p.isCustom()) {
long periodFrom = c.getLongValue1();
long periodTo = c.getLongValue2();
bPeriod.setText(df.format(new Date(periodFrom))+"-"+df.format(new Date(periodTo)));
} else {
bPeriod.setText(p.type.titleId);
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if (resultCode == RESULT_FIRST_USER) {
filter.clearDateTime();
} else if (resultCode == RESULT_OK) {
String periodType = data.getStringExtra(DateFilterActivity.EXTRA_FILTER_PERIOD_TYPE);
PeriodType p = PeriodType.valueOf(periodType);
if (PeriodType.CUSTOM == p) {
long periodFrom = data.getLongExtra(DateFilterActivity.EXTRA_FILTER_PERIOD_FROM, 0);
long periodTo = data.getLongExtra(DateFilterActivity.EXTRA_FILTER_PERIOD_TO, 0);
filter.put(new DateTimeCriteria(periodFrom, periodTo));
} else {
filter.put(new DateTimeCriteria(p));
}
}
updatePeriod();
}
}
@Override
protected void onPause() {
super.onPause();
PinProtection.lock(this);
}
@Override
protected void onResume() {
super.onResume();
PinProtection.unlock(this);
}
}