Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.

Commit c425d83

Browse files
author
Evgeniy Kanivets
committed
Added selection of date period
1 parent 773cdc7 commit c425d83

File tree

8 files changed

+170
-4
lines changed

8 files changed

+170
-4
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="com.blogspot.e_kanivets.moneytracker" >
3+
package="com.blogspot.e_kanivets.moneytracker"
4+
android:versionCode="1"
5+
android:versionName="1.0">
46

57
<application
68
android:name=".util.MTApp"

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/MainActivity.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.blogspot.e_kanivets.moneytracker.activity;
22

33
import android.app.Activity;
4+
import android.app.DatePickerDialog;
45
import android.content.DialogInterface;
56
import android.content.pm.FeatureInfo;
67
import android.database.Cursor;
@@ -14,6 +15,7 @@
1415
import android.view.Window;
1516
import android.widget.BaseAdapter;
1617
import android.widget.Button;
18+
import android.widget.DatePicker;
1719
import android.widget.ListView;
1820
import android.widget.TextView;
1921

@@ -24,10 +26,13 @@
2426
import com.blogspot.e_kanivets.moneytracker.model.Record;
2527
import com.blogspot.e_kanivets.moneytracker.ui.AddExpenseDialog;
2628
import com.blogspot.e_kanivets.moneytracker.ui.AddIncomeDialog;
29+
import com.blogspot.e_kanivets.moneytracker.ui.ChangeDateDialog;
2730
import com.blogspot.e_kanivets.moneytracker.util.Constants;
2831
import com.blogspot.e_kanivets.moneytracker.util.MTApp;
2932

33+
import java.text.SimpleDateFormat;
3034
import java.util.ArrayList;
35+
import java.util.Date;
3136
import java.util.List;
3237
import java.util.Observable;
3338
import java.util.Observer;
@@ -86,6 +91,42 @@ public void onClick(View v) {
8691
}
8792
});
8893

94+
tvFromDate.setOnClickListener(new View.OnClickListener() {
95+
@Override
96+
public void onClick(View view) {
97+
ChangeDateDialog dialog = new ChangeDateDialog(activity,
98+
MTHelper.getInstance().getPeriod().getFirst(), new ChangeDateDialog.OnDateChangedListener() {
99+
@Override
100+
public void OnDataChanged(Date date) {
101+
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
102+
tvFromDate.setText(dateFormat.format(date));
103+
104+
MTHelper.getInstance().getPeriod().setFirst(date);
105+
MTHelper.getInstance().update();
106+
}
107+
});
108+
dialog.show();
109+
}
110+
});
111+
112+
tvToDate.setOnClickListener(new View.OnClickListener() {
113+
@Override
114+
public void onClick(View view) {
115+
ChangeDateDialog dialog = new ChangeDateDialog(activity,
116+
MTHelper.getInstance().getPeriod().getLast(), new ChangeDateDialog.OnDateChangedListener() {
117+
@Override
118+
public void OnDataChanged(Date date) {
119+
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
120+
tvToDate.setText(dateFormat.format(date));
121+
122+
MTHelper.getInstance().getPeriod().setLast(date);
123+
MTHelper.getInstance().update();
124+
}
125+
});
126+
dialog.show();
127+
}
128+
});
129+
89130
listView.setAdapter(new RecordAdapter(activity, MTHelper.getInstance().getRecords()));
90131
((BaseAdapter) listView.getAdapter()).notifyDataSetChanged();
91132

app/src/main/java/com/blogspot/e_kanivets/moneytracker/helper/MTHelper.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,16 @@ private MTHelper() {
4444
dbHelper = new DBHelper(MTApp.get());
4545

4646
initPeriod();
47+
categories = new ArrayList<Category>();
48+
records = new ArrayList<Record>();
4749
}
4850

4951
public void initialize() {
5052
SQLiteDatabase db = dbHelper.getReadableDatabase();
5153

5254
//Read categories table from db
5355
Cursor cursor = db.query(Constants.TABLE_CATEGORIES, null, null, null, null, null, null);
54-
categories = new ArrayList<Category>();
56+
categories.clear();
5557

5658
if(cursor.moveToFirst()) {
5759
int idColIndex = cursor.getColumnIndex("id");
@@ -77,7 +79,7 @@ public void initialize() {
7779

7880
//Read records table from db
7981
cursor = db.query(Constants.TABLE_RECORDS, null, "time BETWEEN ? AND ?", args, null, null, null);
80-
records = new ArrayList<Record>();
82+
records.clear();
8183

8284
if(cursor.moveToFirst()) {
8385
//Get indexes of columns
@@ -111,6 +113,14 @@ public void initialize() {
111113
db.close();
112114
}
113115

116+
public void update() {
117+
initialize();
118+
119+
//notify observers
120+
setChanged();
121+
notifyObservers();
122+
}
123+
114124
public List<Record> getRecords() {
115125
return records;
116126
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/model/Period.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,12 @@ public Date getFirst() {
2121
public Date getLast() {
2222
return last;
2323
}
24+
25+
public void setFirst(Date first) {
26+
this.first = first;
27+
}
28+
29+
public void setLast(Date last) {
30+
this.last = last;
31+
}
2432
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/model/Record.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public Record(int id, long time, int type, String title, int categoryId, int pri
2828

2929
category = MTHelper.getInstance().getCategoryById(categoryId);
3030

31-
Log.d(Constants.TAG, "id = " + categoryId + " category = " + category);
31+
//Log.d(Constants.TAG, "id = " + categoryId + " category = " + category);
3232
}
3333

3434
public int getId() {
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package com.blogspot.e_kanivets.moneytracker.ui;
2+
3+
import android.app.AlertDialog;
4+
import android.content.Context;
5+
import android.os.Bundle;
6+
import android.view.View;
7+
import android.widget.Button;
8+
import android.widget.DatePicker;
9+
10+
import com.blogspot.e_kanivets.moneytracker.R;
11+
12+
import java.util.Calendar;
13+
import java.util.Date;
14+
15+
/**
16+
* Created by eugene on 10/09/14.
17+
*/
18+
public class ChangeDateDialog extends AlertDialog{
19+
20+
private Date date;
21+
private OnDateChangedListener listener;
22+
23+
private DatePicker datePicker;
24+
private Button btnOk;
25+
private Button btnCancel;
26+
27+
public ChangeDateDialog(Context context, Date date, OnDateChangedListener listener) {
28+
super(context);
29+
this.date = date;
30+
this.listener = listener;
31+
}
32+
33+
@Override
34+
protected void onCreate(Bundle savedInstanceState) {
35+
super.onCreate(savedInstanceState);
36+
setContentView(R.layout.dialog_change_date);
37+
38+
Calendar cal = Calendar.getInstance();
39+
cal.setTime(date);
40+
41+
datePicker = (DatePicker) findViewById(R.id.datePicker);
42+
btnOk = (Button) findViewById(R.id.b_ok);
43+
btnCancel = (Button) findViewById(R.id.b_cancel);
44+
45+
datePicker.init(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), null);
46+
47+
btnOk.setOnClickListener(new View.OnClickListener() {
48+
@Override
49+
public void onClick(View view) {
50+
Calendar cal = Calendar.getInstance();
51+
cal.set(Calendar.YEAR, datePicker.getYear());
52+
cal.set(Calendar.MONTH, datePicker.getMonth());
53+
cal.set(Calendar.DAY_OF_MONTH, datePicker.getDayOfMonth());
54+
55+
listener.OnDataChanged(cal.getTime());
56+
dismiss();
57+
}
58+
});
59+
60+
btnCancel.setOnClickListener(new View.OnClickListener() {
61+
@Override
62+
public void onClick(View view) {
63+
dismiss();
64+
}
65+
});
66+
}
67+
68+
public interface OnDateChangedListener {
69+
public void OnDataChanged(Date date);
70+
}
71+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
3+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
4+
android:orientation="vertical" android:layout_width="match_parent"
5+
android:layout_height="match_parent">
6+
7+
<DatePicker
8+
android:layout_width="wrap_content"
9+
android:layout_height="wrap_content"
10+
android:id="@+id/datePicker"
11+
android:layout_gravity="center_horizontal" />
12+
13+
<LinearLayout
14+
android:orientation="horizontal"
15+
android:layout_width="fill_parent"
16+
android:layout_height="fill_parent">
17+
18+
<Button
19+
android:layout_width="match_parent"
20+
android:layout_height="wrap_content"
21+
android:text="@string/ok"
22+
android:id="@+id/b_ok"
23+
android:layout_weight="1" />
24+
25+
<Button
26+
android:layout_width="match_parent"
27+
android:layout_height="wrap_content"
28+
android:text="@string/cancel"
29+
android:id="@+id/b_cancel"
30+
android:layout_weight="1" />
31+
</LinearLayout>
32+
33+
</LinearLayout>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<string name="add_expense">Add expense</string>
1313
<string name="income">INCOME</string>
1414
<string name="expense">EXPENSE</string>
15+
<string name="ok">OK</string>
1516
<string name="cancel">Cancel</string>
1617
<string name="add">Add</string>
1718

0 commit comments

Comments
 (0)