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

Commit 884e0af

Browse files
author
Evgenii
committed
Merge pull request #8 from evgenii-kanivets/dev
Refactoring. Currencies. Transfers.
2 parents bd4f240 + 64f4a04 commit 884e0af

File tree

63 files changed

+1431
-1072
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+1431
-1072
lines changed

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ dependencies {
4949
compile 'com.android.support:appcompat-v7:23.0.0'
5050
compile 'junit:junit:4.12'
5151
compile 'org.mockito:mockito-core:2.0.2-beta'
52+
compile 'com.jakewharton:butterknife:7.0.1'
5253

5354
compile 'com.google.dagger:dagger:2.0.1'
5455
apt 'com.google.dagger:dagger-compiler:2.0.1'

app/src/androidTest/java/com/blogspot/e_kanivets/moneytracker/db/RecordControllerImplTest.java

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

3-
import static org.junit.Assert.*;
4-
53
/**
64
* Created by alla on 9/3/15.
75
*/

app/src/main/AndroidManifest.xml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@
88
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
99

1010
<application
11-
android:name=".util.MTApp"
11+
android:name=".MtApp"
1212
android:allowBackup="true"
1313
android:icon="@mipmap/ic_launcher"
1414
android:label="@string/app_name"
1515
android:theme="@style/Theme.Default">
1616
<activity
1717
android:name=".activity.ReportActivity"
18+
android:label="@string/report"
1819
android:screenOrientation="portrait"
1920
android:theme="@style/Theme.Default" />
2021
<activity
@@ -43,5 +44,11 @@
4344
android:label="@string/title_add_account"
4445
android:screenOrientation="portrait"
4546
android:theme="@style/Theme.Default" />
47+
<activity
48+
android:name=".activity.TransferActivity"
49+
android:label="@string/transfer"
50+
android:screenOrientation="portrait"
51+
android:theme="@style/Theme.Default" />
4652
</application>
47-
</manifest>
53+
54+
</manifest>

app/src/main/java/com/blogspot/e_kanivets/moneytracker/util/MTApp.java renamed to app/src/main/java/com/blogspot/e_kanivets/moneytracker/MtApp.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blogspot.e_kanivets.moneytracker.util;
1+
package com.blogspot.e_kanivets.moneytracker;
22

33
import android.app.Application;
44

@@ -8,11 +8,11 @@
88
*
99
* @author Evgenii Kanivets
1010
*/
11-
public class MTApp extends Application {
11+
public class MtApp extends Application {
1212

13-
private static MTApp mtApp;
13+
private static MtApp mtApp;
1414

15-
public static MTApp get() {
15+
public static MtApp get() {
1616
return mtApp;
1717
}
1818

Lines changed: 57 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,48 @@
11
package com.blogspot.e_kanivets.moneytracker.activity;
22

3-
import android.os.Bundle;
4-
import android.support.v7.app.AppCompatActivity;
3+
import android.support.v7.widget.AppCompatSpinner;
54
import android.view.Menu;
65
import android.view.MenuItem;
6+
import android.widget.ArrayAdapter;
77
import android.widget.EditText;
88

99
import com.blogspot.e_kanivets.moneytracker.R;
10+
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseActivity;
1011
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
1112
import com.blogspot.e_kanivets.moneytracker.helper.DbHelper;
1213

13-
public class AddAccountActivity extends AppCompatActivity {
14+
import java.util.ArrayList;
15+
import java.util.Collections;
16+
import java.util.Currency;
17+
import java.util.HashSet;
18+
import java.util.List;
19+
import java.util.Locale;
20+
import java.util.Set;
21+
22+
import butterknife.Bind;
23+
24+
public class AddAccountActivity extends BaseActivity {
1425
@SuppressWarnings("unused")
1526
private static final String TAG = "AddAccountActivity";
1627

17-
private EditText etTitle;
18-
private EditText etInitSum;
28+
@Bind(R.id.et_title)
29+
EditText etTitle;
30+
@Bind(R.id.et_init_sum)
31+
EditText etInitSum;
32+
@Bind(R.id.spinner)
33+
AppCompatSpinner spinner;
1934

2035
@Override
21-
protected void onCreate(Bundle savedInstanceState) {
22-
super.onCreate(savedInstanceState);
23-
setContentView(R.layout.activity_add_account);
36+
protected int getContentViewId() {
37+
return R.layout.activity_add_account;
38+
}
2439

25-
initViews();
26-
initActionBar();
40+
@Override
41+
protected void initViews() {
42+
super.initViews();
43+
44+
spinner.setAdapter(new ArrayAdapter<>(AddAccountActivity.this,
45+
android.R.layout.simple_list_item_1, new ArrayList<>(getAllCurrencies())));
2746
}
2847

2948
@Override
@@ -36,10 +55,7 @@ public boolean onCreateOptionsMenu(Menu menu) {
3655
public boolean onOptionsItemSelected(MenuItem item) {
3756
switch (item.getItemId()) {
3857
case R.id.action_done:
39-
String title = etTitle.getText().toString();
40-
int initSum = Integer.parseInt(etInitSum.getText().toString());
41-
42-
new AccountController(new DbHelper(AddAccountActivity.this)).addAccount(title, initSum);
58+
addAccount();
4359

4460
setResult(RESULT_OK);
4561
finish();
@@ -54,12 +70,34 @@ public boolean onOptionsItemSelected(MenuItem item) {
5470
}
5571
}
5672

57-
private void initViews() {
58-
etTitle = (EditText) findViewById(R.id.et_title);
59-
etInitSum = (EditText) findViewById(R.id.et_init_sum);
73+
private void addAccount() {
74+
String title = etTitle.getText().toString().trim();
75+
int initSum = Integer.parseInt(etInitSum.getText().toString().trim());
76+
String currency = (String) spinner.getSelectedItem();
77+
78+
new AccountController(new DbHelper(AddAccountActivity.this))
79+
.addAccount(title, initSum, currency);
6080
}
6181

62-
private void initActionBar() {
63-
if (getSupportActionBar() != null) getSupportActionBar().setCustomView(null);
82+
public static List<String> getAllCurrencies() {
83+
Set<Currency> toret = new HashSet<>();
84+
Locale[] locs = Locale.getAvailableLocales();
85+
86+
for (Locale loc : locs) {
87+
try {
88+
toret.add(Currency.getInstance(loc));
89+
} catch (Exception exc) {
90+
// Locale not found
91+
}
92+
}
93+
94+
List<String> currencyList = new ArrayList<>();
95+
for (Currency currency : toret) {
96+
currencyList.add(currency.getCurrencyCode());
97+
}
98+
99+
Collections.sort(currencyList);
100+
101+
return currencyList;
64102
}
65103
}
Lines changed: 7 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -1,144 +1,22 @@
11
package com.blogspot.e_kanivets.moneytracker.activity;
22

3-
import android.os.Bundle;
4-
import android.support.v7.app.ActionBar;
5-
import android.support.v7.app.AppCompatActivity;
6-
import android.view.Menu;
7-
import android.view.MenuItem;
8-
import android.widget.ArrayAdapter;
9-
import android.widget.EditText;
10-
import android.widget.Spinner;
11-
import android.widget.Toast;
12-
13-
import com.blogspot.e_kanivets.moneytracker.R;
14-
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
15-
import com.blogspot.e_kanivets.moneytracker.controller.RecordController;
16-
import com.blogspot.e_kanivets.moneytracker.helper.DbHelper;
3+
import com.blogspot.e_kanivets.moneytracker.activity.base.AddRecordBaseActivity;
174
import com.blogspot.e_kanivets.moneytracker.model.Account;
185
import com.blogspot.e_kanivets.moneytracker.model.Record;
196

20-
import java.util.ArrayList;
217
import java.util.Date;
22-
import java.util.List;
238

24-
public class AddExpenseActivity extends AppCompatActivity {
9+
public class AddExpenseActivity extends AddRecordBaseActivity {
2510
@SuppressWarnings("unused")
2611
private static final String TAG = "AddExpenseActivity";
2712

28-
public static final String KEY_RECORD = "key_record";
29-
public static final String KEY_MODE = "key_mode";
30-
31-
private Record record;
32-
private Mode mode;
33-
34-
private EditText etTitle;
35-
private EditText etCategory;
36-
private EditText etPrice;
37-
private Spinner spinnerAccount;
38-
39-
private RecordController recordController;
40-
private AccountController accountController;
41-
4213
@Override
43-
protected void onCreate(Bundle savedInstanceState) {
44-
super.onCreate(savedInstanceState);
45-
setContentView(R.layout.activity_add_record);
46-
47-
recordController = new RecordController(new DbHelper(AddExpenseActivity.this));
48-
accountController = new AccountController(new DbHelper(AddExpenseActivity.this));
49-
50-
if (getIntent() != null) {
51-
record = (Record) getIntent().getSerializableExtra(KEY_RECORD);
52-
mode = (Mode) getIntent().getSerializableExtra(KEY_MODE);
53-
}
14+
protected boolean doRecord(String title, String category, int price, Account account) {
15+
if (mode == Mode.MODE_ADD) recordController.addRecord(new Record(new Date().getTime(),
16+
Record.TYPE_EXPENSE, title, category, price, account.getId()));
17+
else if (mode == Mode.MODE_EDIT)
18+
recordController.updateRecordById(record.getId(), title, category, price, account.getId());
5419

55-
initViews();
56-
initActionBar();
57-
}
58-
59-
@Override
60-
public boolean onCreateOptionsMenu(Menu menu) {
61-
// Inflate the menu; this adds items to the action bar if it is present.
62-
getMenuInflater().inflate(R.menu.menu_add_record, menu);
6320
return true;
6421
}
65-
66-
@Override
67-
public boolean onOptionsItemSelected(MenuItem item) {
68-
switch (item.getItemId()) {
69-
case R.id.action_done:
70-
String title = etTitle.getText().toString();
71-
String category = etCategory.getText().toString();
72-
73-
//Check if price is valid
74-
//noinspection UnusedAssignment
75-
int price = 0;
76-
try {
77-
price = Integer.parseInt(etPrice.getText().toString());
78-
if (price >= 0 && price <= 1000000000) {
79-
Account account = accountController.getAccounts().get(spinnerAccount.getSelectedItemPosition());
80-
81-
if (mode == Mode.MODE_ADD) recordController.addRecord(new Date().getTime(),
82-
1, title, category, price, account.getId(), -price);
83-
if (mode == Mode.MODE_EDIT)
84-
recordController.updateRecordById(record.getId(),
85-
title, category, price, account.getId(), -(price - record.getPrice()));
86-
} else throw new NumberFormatException();
87-
} catch (NumberFormatException e) {
88-
Toast.makeText(AddExpenseActivity.this, getResources().getString(R.string.wrong_number_text),
89-
Toast.LENGTH_SHORT).show();
90-
}
91-
92-
setResult(RESULT_OK);
93-
finish();
94-
return true;
95-
96-
case R.id.action_close:
97-
finish();
98-
return true;
99-
100-
default:
101-
return super.onOptionsItemSelected(item);
102-
}
103-
}
104-
105-
private void initViews() {
106-
etTitle = (EditText) findViewById(R.id.et_title);
107-
etCategory = (EditText) findViewById(R.id.et_category);
108-
etPrice = (EditText) findViewById(R.id.et_price);
109-
110-
List<Account> accountList = accountController.getAccounts();
111-
112-
List<String> accounts = new ArrayList<>();
113-
for (Account account : accountList) {
114-
accounts.add(account.getTitle());
115-
}
116-
117-
spinnerAccount = (Spinner) findViewById(R.id.spinner_account);
118-
spinnerAccount.setAdapter(new ArrayAdapter<>(AddExpenseActivity.this,
119-
android.R.layout.simple_list_item_1, accounts));
120-
121-
//Add texts to dialog if it's edit dialog
122-
if (mode == Mode.MODE_EDIT) {
123-
etTitle.setText(record.getTitle());
124-
etCategory.setText(record.getCategory());
125-
etPrice.setText(Integer.toString(record.getPrice()));
126-
127-
for (int i = 0; i < accountList.size(); i++) {
128-
Account account = accountList.get(i);
129-
if (account.getId() == record.getAccountId()) {
130-
spinnerAccount.setSelection(i);
131-
}
132-
}
133-
}
134-
}
135-
136-
private void initActionBar() {
137-
ActionBar actionBar = getSupportActionBar();
138-
if (actionBar != null) {
139-
actionBar.setCustomView(null);
140-
}
141-
}
142-
143-
public enum Mode {MODE_ADD, MODE_EDIT}
14422
}

0 commit comments

Comments
 (0)