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

Commit 11aa689

Browse files
Added period selection ption
1 parent 02c7b10 commit 11aa689

File tree

11 files changed

+213
-22
lines changed

11 files changed

+213
-22
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
android:allowBackup="true"
1111
android:icon="@drawable/ic_launcher"
1212
android:label="@string/app_name"
13-
android:theme="@style/Theme.NoTitle" >
13+
android:theme="@style/Theme.AppCompat.Light" >
1414
<activity
1515
android:name=".activity.MainActivity"
1616
android:label="@string/app_name" >

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

Lines changed: 56 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,40 @@
11
package com.blogspot.e_kanivets.moneytracker.activity;
22

33
import android.app.Activity;
4-
import android.app.DatePickerDialog;
5-
import android.content.DialogInterface;
64
import android.content.Intent;
7-
import android.content.pm.FeatureInfo;
8-
import android.database.Cursor;
9-
import android.database.sqlite.SQLiteDatabase;
10-
import android.support.v7.app.ActionBarActivity;
115
import android.os.Bundle;
12-
import android.util.Log;
6+
import android.support.v7.widget.PopupMenu;
137
import android.view.ContextMenu;
14-
import android.view.Menu;
158
import android.view.MenuItem;
169
import android.view.View;
1710
import android.view.ViewTreeObserver;
1811
import android.view.Window;
1912
import android.widget.AdapterView;
2013
import android.widget.BaseAdapter;
2114
import android.widget.Button;
22-
import android.widget.DatePicker;
2315
import android.widget.ListView;
2416
import android.widget.TextView;
2517

2618
import com.blogspot.e_kanivets.moneytracker.R;
2719
import com.blogspot.e_kanivets.moneytracker.adapter.RecordAdapter;
28-
import com.blogspot.e_kanivets.moneytracker.helper.DBHelper;
2920
import com.blogspot.e_kanivets.moneytracker.helper.MTHelper;
21+
import com.blogspot.e_kanivets.moneytracker.helper.PeriodHelper;
3022
import com.blogspot.e_kanivets.moneytracker.model.Record;
3123
import com.blogspot.e_kanivets.moneytracker.ui.AddExpenseDialog;
3224
import com.blogspot.e_kanivets.moneytracker.ui.AddIncomeDialog;
3325
import com.blogspot.e_kanivets.moneytracker.ui.ChangeDateDialog;
34-
import com.blogspot.e_kanivets.moneytracker.util.Constants;
35-
import com.blogspot.e_kanivets.moneytracker.util.MTApp;
3626

37-
import java.text.SimpleDateFormat;
38-
import java.util.ArrayList;
27+
import java.util.Calendar;
3928
import java.util.Date;
40-
import java.util.List;
4129
import java.util.Observable;
4230
import java.util.Observer;
4331

44-
4532
public class MainActivity extends Activity implements Observer{
4633

4734
private Activity activity;
4835

4936
private ListView listView;
5037

51-
private Button btnAddIncome;
52-
private Button btnAddExpense;
53-
private Button btnReport;
5438
private TextView tvFromDate;
5539
private TextView tvToDate;
5640

@@ -64,10 +48,16 @@ protected void onCreate(Bundle savedInstanceState) {
6448

6549
activity = this;
6650

51+
Button btnAddIncome;
52+
Button btnAddExpense;
53+
Button btnReport;
54+
Button btnSelectPeriod;
55+
6756
//Link views
6857
btnAddIncome = (Button) findViewById(R.id.btn_add_income);
6958
btnAddExpense = (Button) findViewById(R.id.btn_add_expense);
7059
btnReport = (Button) findViewById(R.id.btn_report);
60+
btnSelectPeriod = (Button) findViewById(R.id.btn_select_period);
7161

7262
tvFromDate = (TextView) findViewById(R.id.tv_from_date);
7363
tvToDate = (TextView) findViewById(R.id.tv_to_date);
@@ -94,6 +84,12 @@ public void onClick(View v) {
9484
dialog.show();
9585
}
9686
});
87+
btnSelectPeriod.setOnClickListener(new View.OnClickListener() {
88+
@Override
89+
public void onClick(View view) {
90+
showSelectPopupMenu(view);
91+
}
92+
});
9793

9894
tvFromDate.setOnClickListener(new View.OnClickListener() {
9995
@Override
@@ -181,8 +177,6 @@ public boolean onContextItemSelected(MenuItem item) {
181177
}
182178
return true;
183179
case R.id.delete:
184-
/*Log.d(Constants.TAG, "pos = " + info.position + " id = " + MTHelper.getInstance().getRecords().
185-
get(info.position).getId());*/
186180
MTHelper.getInstance().deleteRecordById(MTHelper.getInstance().getRecords().
187181
get(info.position).getId());
188182
return true;
@@ -200,4 +194,45 @@ protected void onResume() {
200194
public void update(Observable observable, Object data) {
201195
((BaseAdapter) listView.getAdapter()).notifyDataSetChanged();
202196
}
197+
198+
private void showSelectPopupMenu(View view) {
199+
PopupMenu popupMenu = new PopupMenu(activity, view);
200+
popupMenu.getMenuInflater().inflate(R.menu.menu_popup, popupMenu.getMenu());
201+
202+
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
203+
@Override
204+
public boolean onMenuItemClick(MenuItem menuItem) {
205+
Calendar calendar = Calendar.getInstance();
206+
calendar.clear(Calendar.MINUTE);
207+
calendar.clear(Calendar.SECOND);
208+
calendar.clear(Calendar.MILLISECOND);
209+
210+
switch (menuItem.getItemId()) {
211+
case R.id.period_day:
212+
MTHelper.getInstance().setPeriod(PeriodHelper.getInstance().getDayPeriod());
213+
break;
214+
case R.id.period_week:
215+
MTHelper.getInstance().setPeriod(PeriodHelper.getInstance().getWeekPeriod());
216+
break;
217+
case R.id.period_month:
218+
MTHelper.getInstance().setPeriod(PeriodHelper.getInstance().getMonthPeriod());
219+
break;
220+
case R.id.period_year:
221+
MTHelper.getInstance().setPeriod(PeriodHelper.getInstance().getYearPeriod());
222+
break;
223+
default:
224+
break;
225+
}
226+
227+
MTHelper.getInstance().update();
228+
229+
tvFromDate.setText(MTHelper.getInstance().getFirstDay());
230+
tvToDate.setText(MTHelper.getInstance().getLastDay());
231+
232+
return false;
233+
}
234+
});
235+
236+
popupMenu.show();
237+
}
203238
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.app.Activity;
44
import android.os.Bundle;
5+
import android.view.Window;
56
import android.widget.ListView;
67
import android.widget.TextView;
78

@@ -23,6 +24,9 @@ public class ReportActivity extends Activity {
2324
@Override
2425
protected void onCreate(Bundle savedInstanceState) {
2526
super.onCreate(savedInstanceState);
27+
28+
requestWindowFeature(Window.FEATURE_NO_TITLE);
29+
2630
setContentView(R.layout.activity_report);
2731

2832
activity = this;

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,10 @@ public Period getPeriod() {
258258
return period;
259259
}
260260

261+
public void setPeriod(Period period) {
262+
this.period = period;
263+
}
264+
261265
private void initPeriod() {
262266
// get today and clear time of day
263267
Calendar cal = Calendar.getInstance();
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
package com.blogspot.e_kanivets.moneytracker.helper;
2+
3+
import com.blogspot.e_kanivets.moneytracker.model.Period;
4+
5+
import java.util.Calendar;
6+
import java.util.Date;
7+
8+
/**
9+
* Created by fess on 15.11.2014.
10+
*/
11+
public class PeriodHelper {
12+
13+
private static PeriodHelper periodHelper;
14+
15+
public static PeriodHelper getInstance() {
16+
if(periodHelper == null) {
17+
periodHelper = new PeriodHelper();
18+
}
19+
20+
return periodHelper;
21+
}
22+
23+
private PeriodHelper() {}
24+
25+
public Period getDayPeriod() {
26+
//set start of day
27+
Calendar cal = Calendar.getInstance();
28+
cal.set(Calendar.HOUR_OF_DAY, 0);
29+
cal.set(Calendar.MINUTE, 0);
30+
cal.set(Calendar.SECOND, 0);
31+
cal.set(Calendar.MILLISECOND, 0);
32+
33+
Date first = cal.getTime();
34+
35+
//set end of day
36+
cal.set(Calendar.HOUR_OF_DAY, 23);
37+
cal.set(Calendar.MINUTE, 59);
38+
cal.set(Calendar.SECOND, 59);
39+
cal.set(Calendar.MILLISECOND, 999);
40+
41+
Date last = cal.getTime();
42+
43+
return new Period(first, last);
44+
}
45+
46+
public Period getWeekPeriod() {
47+
// set start of week
48+
Calendar cal = Calendar.getInstance();
49+
cal.set(Calendar.HOUR_OF_DAY, 0);
50+
cal.set(Calendar.MINUTE, 0);
51+
cal.set(Calendar.SECOND, 0);
52+
cal.set(Calendar.MILLISECOND, 0);
53+
54+
// set first day of week
55+
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
56+
57+
Date first = cal.getTime();
58+
59+
// set last day of week
60+
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 6);
61+
cal.set(Calendar.HOUR_OF_DAY, 23);
62+
cal.set(Calendar.MINUTE, 59);
63+
cal.set(Calendar.SECOND, 59);
64+
cal.set(Calendar.MILLISECOND, 999);
65+
66+
Date last = cal.getTime();
67+
68+
return new Period(first, last);
69+
}
70+
71+
public Period getMonthPeriod() {
72+
//set start of month
73+
Calendar cal = Calendar.getInstance();
74+
cal.set(Calendar.HOUR_OF_DAY, 0);
75+
cal.set(Calendar.MINUTE, 0);
76+
cal.set(Calendar.SECOND, 0);
77+
cal.set(Calendar.MILLISECOND, 0);
78+
79+
cal.set(Calendar.DAY_OF_MONTH, 1);
80+
81+
Date first = cal.getTime();
82+
83+
//set end of month
84+
cal.set(Calendar.HOUR_OF_DAY, 23);
85+
cal.set(Calendar.MINUTE, 59);
86+
cal.set(Calendar.SECOND, 59);
87+
cal.set(Calendar.MILLISECOND, 999);
88+
89+
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
90+
91+
Date last = cal.getTime();
92+
93+
return new Period(first, last);
94+
}
95+
96+
public Period getYearPeriod() {
97+
//set start of year
98+
Calendar cal = Calendar.getInstance();
99+
cal.set(Calendar.HOUR_OF_DAY, 0);
100+
cal.set(Calendar.MINUTE, 0);
101+
cal.set(Calendar.SECOND, 0);
102+
cal.set(Calendar.MILLISECOND, 0);
103+
104+
cal.set(Calendar.MONTH, Calendar.JANUARY);
105+
cal.set(Calendar.DAY_OF_MONTH, 1);
106+
107+
Date first = cal.getTime();
108+
109+
//set end of year
110+
cal.set(Calendar.HOUR_OF_DAY, 23);
111+
cal.set(Calendar.MINUTE, 59);
112+
cal.set(Calendar.SECOND, 59);
113+
cal.set(Calendar.MILLISECOND, 999);
114+
115+
cal.set(Calendar.MONTH, Calendar.DECEMBER);
116+
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
117+
118+
Date last = cal.getTime();
119+
120+
return new Period(first, last);
121+
}
122+
}
447 Bytes
Loading
694 Bytes
Loading
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
3+
<selector xmlns:android="http://schemas.android.com/apk/res/android">
4+
<item android:state_pressed="false" android:drawable="@drawable/ic_expand_more_grey600_48dp"/>
5+
<item android:state_pressed="true" android:drawable="@drawable/ic_expand_more_black_48dp"/>
6+
</selector>

app/src/main/res/layout/activity_main.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@
2121
android:background="@drawable/selector_change_date"
2222
android:gravity="center" />
2323

24+
<Button
25+
android:layout_width="wrap_content"
26+
android:layout_height="wrap_content"
27+
android:id="@+id/btn_select_period"
28+
android:background="@drawable/selector_select_period"
29+
android:layout_marginLeft="5dp"
30+
android:layout_marginRight="5dp" />
31+
2432
<TextView
2533
android:layout_width="wrap_content"
2634
android:layout_height="match_parent"
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
3+
<menu xmlns:android="http://schemas.android.com/apk/res/android">
4+
<item android:id="@+id/period_day" android:title="@string/day"/>
5+
<item android:id="@+id/period_week" android:title="@string/week"/>
6+
<item android:id="@+id/period_month" android:title="@string/month"/>
7+
<item android:id="@+id/period_year" android:title="@string/year"/>
8+
</menu>

0 commit comments

Comments
 (0)