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

Commit a7f6fb7

Browse files
author
Evgenii Kanivets
committed
Merge commit.
2 parents 08bf208 + dee73c8 commit a7f6fb7

File tree

3 files changed

+125
-64
lines changed

3 files changed

+125
-64
lines changed

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/record/AddRecordActivity.java

Lines changed: 7 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@
33
import android.annotation.SuppressLint;
44
import android.app.DatePickerDialog;
55
import android.app.TimePickerDialog;
6-
import android.graphics.drawable.ColorDrawable;
7-
import android.os.Build;
86
import android.support.annotation.Nullable;
9-
import android.support.annotation.StyleRes;
107
import android.support.v7.widget.AppCompatSpinner;
118
import android.text.InputFilter;
129
import android.text.Spanned;
@@ -15,8 +12,6 @@
1512
import android.view.Menu;
1613
import android.view.MenuItem;
1714
import android.view.View;
18-
import android.view.Window;
19-
import android.view.WindowManager;
2015
import android.view.inputmethod.EditorInfo;
2116
import android.widget.AdapterView;
2217
import android.widget.ArrayAdapter;
@@ -25,7 +20,6 @@
2520
import android.widget.EditText;
2621
import android.widget.TextView;
2722
import android.widget.TimePicker;
28-
import android.widget.Toast;
2923

3024
import com.blogspot.e_kanivets.moneytracker.R;
3125
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity;
@@ -36,6 +30,7 @@
3630
import com.blogspot.e_kanivets.moneytracker.controller.data.RecordController;
3731
import com.blogspot.e_kanivets.moneytracker.entity.data.Account;
3832
import com.blogspot.e_kanivets.moneytracker.entity.data.Record;
33+
import com.blogspot.e_kanivets.moneytracker.ui.AddRecordUiDecorator;
3934
import com.blogspot.e_kanivets.moneytracker.util.CategoryAutoCompleter;
4035
import com.blogspot.e_kanivets.moneytracker.util.validator.IValidator;
4136
import com.blogspot.e_kanivets.moneytracker.util.validator.RecordValidator;
@@ -72,8 +67,6 @@ public class AddRecordActivity extends BaseBackActivity {
7267

7368
private List<Account> accountList;
7469
private long timestamp;
75-
@StyleRes
76-
private int dialogTheme;
7770

7871
@Inject
7972
CategoryController categoryController;
@@ -85,6 +78,7 @@ public class AddRecordActivity extends BaseBackActivity {
8578
FormatController formatController;
8679

8780
private IValidator<Record> recordValidator;
81+
private AddRecordUiDecorator uiDecorator;
8882

8983
@Bind(R.id.content)
9084
View contentView;
@@ -111,6 +105,8 @@ protected boolean initData() {
111105
super.initData();
112106
getAppComponent().inject(AddRecordActivity.this);
113107

108+
uiDecorator = new AddRecordUiDecorator(AddRecordActivity.this);
109+
114110
record = getIntent().getParcelableExtra(KEY_RECORD);
115111
mode = (Mode) getIntent().getSerializableExtra(KEY_MODE);
116112
type = getIntent().getIntExtra(KEY_TYPE, -1);
@@ -140,44 +136,9 @@ protected void initViews() {
140136
etPrice.setText(formatController.formatPrecisionNone(record.getFullPrice()));
141137
}
142138

139+
uiDecorator.decorateActionBar(getSupportActionBar(), mode, type);
143140
presentSpinnerAccount();
144141

145-
dialogTheme = 0;
146-
if (getSupportActionBar() != null) {
147-
switch (type) {
148-
case Record.TYPE_EXPENSE:
149-
if (mode == Mode.MODE_ADD)
150-
getSupportActionBar().setTitle(R.string.title_add_expense);
151-
else getSupportActionBar().setTitle(R.string.title_edit_expense);
152-
getSupportActionBar().setBackgroundDrawable(
153-
new ColorDrawable(getResources().getColor(R.color.red_light)));
154-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
155-
Window window = getWindow();
156-
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
157-
window.setStatusBarColor(getResources().getColor(R.color.red_dark));
158-
dialogTheme = R.style.RedDialogTheme;
159-
}
160-
break;
161-
162-
case Record.TYPE_INCOME:
163-
if (mode == Mode.MODE_ADD)
164-
getSupportActionBar().setTitle(R.string.title_add_income);
165-
else getSupportActionBar().setTitle(R.string.title_edit_income);
166-
getSupportActionBar().setBackgroundDrawable(
167-
new ColorDrawable(getResources().getColor(R.color.green_light)));
168-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
169-
Window window = getWindow();
170-
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
171-
window.setStatusBarColor(getResources().getColor(R.color.green_dark));
172-
dialogTheme = R.style.GreenDialogTheme;
173-
}
174-
break;
175-
176-
default:
177-
break;
178-
}
179-
}
180-
181142
etCategory.setAdapter(new CategoryAutoCompleteAdapter(AddRecordActivity.this,
182143
R.layout.view_category_item, new CategoryAutoCompleter(categoryController)));
183144
etCategory.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@@ -215,9 +176,6 @@ public boolean onPrepareOptionsMenu(Menu menu) {
215176
menu.removeItem(R.id.action_delete);
216177
break;
217178

218-
case MODE_EDIT:
219-
break;
220-
221179
default:
222180
break;
223181
}
@@ -253,7 +211,7 @@ public void selectDate() {
253211

254212
Calendar calendar = Calendar.getInstance();
255213
calendar.setTimeInMillis(timestamp);
256-
DatePickerDialog dialog = new DatePickerDialog(AddRecordActivity.this, dialogTheme,
214+
DatePickerDialog dialog = new DatePickerDialog(AddRecordActivity.this, uiDecorator.getTheme(type),
257215
new DatePickerDialog.OnDateSetListener() {
258216
@Override
259217
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
@@ -284,7 +242,7 @@ public void selectTime() {
284242

285243
Calendar calendar = Calendar.getInstance();
286244
calendar.setTimeInMillis(timestamp);
287-
TimePickerDialog dialog = new TimePickerDialog(AddRecordActivity.this, dialogTheme,
245+
TimePickerDialog dialog = new TimePickerDialog(AddRecordActivity.this, uiDecorator.getTheme(type),
288246
new TimePickerDialog.OnTimeSetListener() {
289247
@Override
290248
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

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

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,7 @@ public void editRecord(int position) {
133133

134134
// Minus one because of list view's header view
135135
Record record = recordList.get(position - 1);
136-
if (record.isIncome())
137-
startAddIncomeActivity(record, AddRecordActivity.Mode.MODE_EDIT);
138-
else startAddExpenseActivity(record, AddRecordActivity.Mode.MODE_EDIT);
136+
startAddRecordActivity(record, AddRecordActivity.Mode.MODE_EDIT, record.getType());
139137
}
140138

141139
@OnClick(R.id.btn_add_expense)
@@ -145,7 +143,7 @@ public void addExpense() {
145143
.putContentName("Add Expense")
146144
.putContentType("Button"));
147145

148-
startAddExpenseActivity(null, AddRecordActivity.Mode.MODE_ADD);
146+
startAddRecordActivity(null, AddRecordActivity.Mode.MODE_ADD, Record.TYPE_EXPENSE);
149147
}
150148

151149
@OnClick(R.id.btn_add_income)
@@ -155,7 +153,7 @@ public void addIncome() {
155153
.putContentName("Add Income")
156154
.putContentType("Button"));
157155

158-
startAddIncomeActivity(null, AddRecordActivity.Mode.MODE_ADD);
156+
startAddRecordActivity(null, AddRecordActivity.Mode.MODE_ADD, Record.TYPE_INCOME);
159157
}
160158

161159
public void showReport() {
@@ -218,19 +216,11 @@ private void showAppRateDialog() {
218216
dialog.show();
219217
}
220218

221-
private void startAddIncomeActivity(Record record, AddRecordActivity.Mode mode) {
219+
private void startAddRecordActivity(Record record, AddRecordActivity.Mode mode, int type) {
222220
Intent intent = new Intent(MainActivity.this, AddRecordActivity.class);
223221
intent.putExtra(AddRecordActivity.KEY_RECORD, record);
224222
intent.putExtra(AddRecordActivity.KEY_MODE, mode);
225-
intent.putExtra(AddRecordActivity.KEY_TYPE, Record.TYPE_INCOME);
226-
startActivityForResult(intent, REQUEST_ACTION_RECORD);
227-
}
228-
229-
private void startAddExpenseActivity(Record record, AddRecordActivity.Mode mode) {
230-
Intent intent = new Intent(MainActivity.this, AddRecordActivity.class);
231-
intent.putExtra(AddRecordActivity.KEY_RECORD, record);
232-
intent.putExtra(AddRecordActivity.KEY_MODE, mode);
233-
intent.putExtra(AddRecordActivity.KEY_TYPE, Record.TYPE_EXPENSE);
223+
intent.putExtra(AddRecordActivity.KEY_TYPE, type);
234224
startActivityForResult(intent, REQUEST_ACTION_RECORD);
235225
}
236226

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
package com.blogspot.e_kanivets.moneytracker.ui;
2+
3+
import android.app.Activity;
4+
import android.content.res.Resources;
5+
import android.graphics.drawable.ColorDrawable;
6+
import android.os.Build;
7+
import android.support.annotation.NonNull;
8+
import android.support.annotation.Nullable;
9+
import android.support.annotation.StyleRes;
10+
import android.support.v7.app.ActionBar;
11+
import android.view.Window;
12+
import android.view.WindowManager;
13+
14+
import com.blogspot.e_kanivets.moneytracker.R;
15+
import com.blogspot.e_kanivets.moneytracker.activity.record.AddRecordActivity;
16+
import com.blogspot.e_kanivets.moneytracker.entity.data.Record;
17+
18+
/**
19+
* Util class to encapsulate toolbar customization for AddRecordActivity
20+
* Created on 9/2/16.
21+
*
22+
* @author Evgenii Kanivets
23+
*/
24+
public class AddRecordUiDecorator {
25+
private Activity activity;
26+
27+
@StyleRes
28+
private int dialogTheme = -1;
29+
30+
private int redLightColor;
31+
private int redDarkColor;
32+
private int greenLightColor;
33+
private int greenDarkColor;
34+
35+
@SuppressWarnings("deprecation")
36+
public AddRecordUiDecorator(@NonNull Activity activity) {
37+
this.activity = activity;
38+
39+
Resources resources = activity.getResources();
40+
redLightColor = resources.getColor(R.color.red_light);
41+
redDarkColor = resources.getColor(R.color.red_dark);
42+
greenLightColor = resources.getColor(R.color.green_light);
43+
greenDarkColor = resources.getColor(R.color.green_dark);
44+
}
45+
46+
/**
47+
* @param type of record to handle, may be TYPE_EXPENSE or TYPE_INCOME
48+
* @return theme res id
49+
*/
50+
@StyleRes
51+
public int getTheme(int type) {
52+
if (dialogTheme == -1) {
53+
switch (type) {
54+
case Record.TYPE_EXPENSE:
55+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
56+
dialogTheme = R.style.RedDialogTheme;
57+
}
58+
break;
59+
60+
case Record.TYPE_INCOME:
61+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
62+
dialogTheme = R.style.GreenDialogTheme;
63+
}
64+
break;
65+
66+
default:
67+
break;
68+
}
69+
}
70+
71+
return dialogTheme;
72+
}
73+
74+
/**
75+
* @param actionBar to decorate
76+
* @param mode - MODE_ADD or MODE_EDIT
77+
* @param type of record to handle, may be TYPE_EXPENSE or TYPE_INCOME
78+
*/
79+
public void decorateActionBar(@Nullable ActionBar actionBar, AddRecordActivity.Mode mode, int type) {
80+
if (actionBar == null) return;
81+
82+
switch (type) {
83+
case Record.TYPE_EXPENSE:
84+
if (mode == AddRecordActivity.Mode.MODE_ADD)
85+
actionBar.setTitle(R.string.title_add_expense);
86+
else actionBar.setTitle(R.string.title_edit_expense);
87+
88+
actionBar.setBackgroundDrawable(new ColorDrawable(redLightColor));
89+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
90+
Window window = activity.getWindow();
91+
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
92+
window.setStatusBarColor(redDarkColor);
93+
}
94+
break;
95+
96+
case Record.TYPE_INCOME:
97+
if (mode == AddRecordActivity.Mode.MODE_ADD)
98+
actionBar.setTitle(R.string.title_add_income);
99+
else actionBar.setTitle(R.string.title_edit_income);
100+
101+
actionBar.setBackgroundDrawable(new ColorDrawable(greenLightColor));
102+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
103+
Window window = activity.getWindow();
104+
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
105+
window.setStatusBarColor(greenDarkColor);
106+
}
107+
break;
108+
109+
default:
110+
break;
111+
}
112+
}
113+
}

0 commit comments

Comments
 (0)