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

Commit 1245cc5

Browse files
author
evgenii
committed
Changed AddRecord fragments to activities. Fixed the issue with a wrong keyboard state.
1 parent 35642bd commit 1245cc5

File tree

14 files changed

+327
-469
lines changed

14 files changed

+327
-469
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,14 @@
3434
android:label="@string/app_name"
3535
android:screenOrientation="portrait"
3636
android:theme="@style/Theme.Default" />
37+
<activity
38+
android:name=".activity.AddExpenseActivity"
39+
android:label="@string/title_add_expense"
40+
android:screenOrientation="portrait" />
41+
<activity
42+
android:name=".activity.AddIncomeActivity"
43+
android:label="@string/title_add_income"
44+
android:screenOrientation="portrait" />
3745
</application>
3846

3947
</manifest>
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
package com.blogspot.e_kanivets.moneytracker.activity;
2+
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.helper.MTHelper;
15+
import com.blogspot.e_kanivets.moneytracker.model.Account;
16+
import com.blogspot.e_kanivets.moneytracker.model.Record;
17+
18+
import java.util.ArrayList;
19+
import java.util.Date;
20+
import java.util.List;
21+
22+
public class AddExpenseActivity extends AppCompatActivity {
23+
@SuppressWarnings("unused")
24+
private static final String TAG = "AddExpenseActivity";
25+
26+
public static final String KEY_RECORD = "key_record";
27+
public static final String KEY_MODE = "key_mode";
28+
29+
private Record record;
30+
private Mode mode;
31+
32+
private EditText etTitle;
33+
private EditText etCategory;
34+
private EditText etPrice;
35+
private Spinner spinnerAccount;
36+
37+
@Override
38+
protected void onCreate(Bundle savedInstanceState) {
39+
super.onCreate(savedInstanceState);
40+
setContentView(R.layout.activity_add_record);
41+
42+
if (getIntent() != null) {
43+
record = (Record) getIntent().getSerializableExtra(KEY_RECORD);
44+
mode = (Mode) getIntent().getSerializableExtra(KEY_MODE);
45+
}
46+
47+
initViews();
48+
initActionBar();
49+
}
50+
51+
@Override
52+
public boolean onCreateOptionsMenu(Menu menu) {
53+
// Inflate the menu; this adds items to the action bar if it is present.
54+
getMenuInflater().inflate(R.menu.menu_add_record, menu);
55+
return true;
56+
}
57+
58+
@Override
59+
public boolean onOptionsItemSelected(MenuItem item) {
60+
switch (item.getItemId()) {
61+
case R.id.action_done:
62+
String title = etTitle.getText().toString();
63+
String category = etCategory.getText().toString();
64+
65+
//Check if price is valid
66+
//noinspection UnusedAssignment
67+
int price = 0;
68+
try {
69+
price = Integer.parseInt(etPrice.getText().toString());
70+
if (price >= 0 && price <= 1000000000) {
71+
Account account = MTHelper.getInstance().getAccounts().get(spinnerAccount.getSelectedItemPosition());
72+
73+
if (mode == Mode.MODE_ADD) {
74+
MTHelper.getInstance().addRecord(new Date().getTime(), 1, title, category,
75+
price, account.getId(), -price);
76+
}
77+
if (mode == Mode.MODE_EDIT) {
78+
MTHelper.getInstance().updateRecordById(record.getId(), title, category,
79+
price, account.getId(), -(price - record.getPrice()));
80+
}
81+
82+
} else {
83+
throw new NumberFormatException();
84+
}
85+
} catch (NumberFormatException e) {
86+
Toast.makeText(AddExpenseActivity.this, getResources().getString(R.string.wrong_number_text),
87+
Toast.LENGTH_SHORT).show();
88+
}
89+
90+
finish();
91+
return true;
92+
93+
case R.id.action_close:
94+
finish();
95+
return true;
96+
97+
default:
98+
return super.onOptionsItemSelected(item);
99+
}
100+
}
101+
102+
private void initViews() {
103+
etTitle = (EditText) findViewById(R.id.et_title);
104+
etCategory = (EditText) findViewById(R.id.et_category);
105+
etPrice = (EditText) findViewById(R.id.et_price);
106+
107+
List<String> accounts = new ArrayList<>();
108+
for (Account account : MTHelper.getInstance().getAccounts()) {
109+
accounts.add(account.getTitle());
110+
}
111+
112+
spinnerAccount = (Spinner) findViewById(R.id.spinner_account);
113+
spinnerAccount.setAdapter(new ArrayAdapter<>(AddExpenseActivity.this,
114+
android.R.layout.simple_list_item_1, accounts));
115+
116+
//Add texts to dialog if it's edit dialog
117+
if (mode == Mode.MODE_EDIT) {
118+
etTitle.setText(record.getTitle());
119+
etCategory.setText(record.getCategory());
120+
etPrice.setText(Integer.toString(record.getPrice()));
121+
122+
for (int i = 0; i < MTHelper.getInstance().getAccounts().size(); i++) {
123+
Account account = MTHelper.getInstance().getAccounts().get(i);
124+
if (account.getId() == record.getAccountId()) {
125+
spinnerAccount.setSelection(i);
126+
}
127+
}
128+
}
129+
}
130+
131+
private void initActionBar() {
132+
ActionBar actionBar = getSupportActionBar();
133+
if (actionBar != null) {
134+
actionBar.setCustomView(null);
135+
}
136+
}
137+
138+
public enum Mode {MODE_ADD, MODE_EDIT}
139+
}
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
package com.blogspot.e_kanivets.moneytracker.activity;
2+
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.helper.MTHelper;
15+
import com.blogspot.e_kanivets.moneytracker.model.Account;
16+
import com.blogspot.e_kanivets.moneytracker.model.Record;
17+
18+
import java.util.ArrayList;
19+
import java.util.Date;
20+
import java.util.List;
21+
22+
public class AddIncomeActivity extends AppCompatActivity {
23+
@SuppressWarnings("unused")
24+
private static final String TAG = "AddIncomeActivity";
25+
26+
private static final String KEY_RECORD = "key_record";
27+
private static final String KEY_MODE = "key_mode";
28+
29+
private Record record;
30+
private Mode mode;
31+
32+
private EditText etTitle;
33+
private EditText etCategory;
34+
private EditText etPrice;
35+
private Spinner spinnerAccount;
36+
37+
@Override
38+
protected void onCreate(Bundle savedInstanceState) {
39+
super.onCreate(savedInstanceState);
40+
setContentView(R.layout.activity_add_record);
41+
42+
if (getIntent() != null) {
43+
record = (Record) getIntent().getSerializableExtra(KEY_RECORD);
44+
mode = (Mode) getIntent().getSerializableExtra(KEY_MODE);
45+
}
46+
47+
initViews();
48+
initActionBar();
49+
}
50+
51+
@Override
52+
public boolean onCreateOptionsMenu(Menu menu) {
53+
// Inflate the menu; this adds items to the action bar if it is present.
54+
getMenuInflater().inflate(R.menu.menu_add_record, menu);
55+
return true;
56+
}
57+
58+
@Override
59+
public boolean onOptionsItemSelected(MenuItem item) {
60+
switch (item.getItemId()) {
61+
case R.id.action_done:
62+
String title = etTitle.getText().toString();
63+
String category = etCategory.getText().toString();
64+
65+
//Check if price is valid
66+
//noinspection UnusedAssignment
67+
int price = 0;
68+
try {
69+
price = Integer.parseInt(etPrice.getText().toString());
70+
if (price >= 0 && price <= 1000000000) {
71+
Account account = MTHelper.getInstance().getAccounts().get(spinnerAccount.getSelectedItemPosition());
72+
73+
if (mode == Mode.MODE_ADD) {
74+
MTHelper.getInstance().addRecord(new Date().getTime(), 0, title, category,
75+
price, account.getId(), price);
76+
}
77+
if (mode == Mode.MODE_EDIT) {
78+
MTHelper.getInstance().updateRecordById(record.getId(), title, category,
79+
price, account.getId(), price - record.getPrice());
80+
}
81+
} else {
82+
throw new NumberFormatException();
83+
}
84+
} catch (NumberFormatException e) {
85+
Toast.makeText(AddIncomeActivity.this, getResources().getString(R.string.wrong_number_text),
86+
Toast.LENGTH_SHORT).show();
87+
}
88+
finish();
89+
90+
return true;
91+
92+
case R.id.action_close:
93+
finish();
94+
return true;
95+
96+
default:
97+
return super.onOptionsItemSelected(item);
98+
}
99+
}
100+
101+
private void initViews() {
102+
etTitle = (EditText) findViewById(R.id.et_title);
103+
etCategory = (EditText) findViewById(R.id.et_category);
104+
etPrice = (EditText) findViewById(R.id.et_price);
105+
106+
List<String> accounts = new ArrayList<>();
107+
for (Account account : MTHelper.getInstance().getAccounts()) {
108+
accounts.add(account.getTitle());
109+
}
110+
111+
spinnerAccount = (Spinner) findViewById(R.id.spinner_account);
112+
spinnerAccount.setAdapter(new ArrayAdapter<>(AddIncomeActivity.this,
113+
android.R.layout.simple_list_item_1, accounts));
114+
115+
//Add texts to dialog if it's edit dialog
116+
if (mode == Mode.MODE_EDIT) {
117+
etTitle.setText(record.getTitle());
118+
etCategory.setText(record.getCategory());
119+
etPrice.setText(Integer.toString(record.getPrice()));
120+
121+
for (int i = 0; i < MTHelper.getInstance().getAccounts().size(); i++) {
122+
Account account = MTHelper.getInstance().getAccounts().get(i);
123+
if (account.getId() == record.getAccountId()) {
124+
spinnerAccount.setSelection(i);
125+
}
126+
}
127+
}
128+
}
129+
130+
private void initActionBar() {
131+
ActionBar actionBar = getSupportActionBar();
132+
if (actionBar != null) {
133+
actionBar.setCustomView(null);
134+
}
135+
}
136+
137+
public enum Mode {MODE_ADD, MODE_EDIT}
138+
}

0 commit comments

Comments
 (0)