Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ dependencies {
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'junit:junit:4.12'
compile 'org.mockito:mockito-core:2.0.2-beta'
compile 'com.jakewharton:butterknife:7.0.1'

compile 'com.google.dagger:dagger:2.0.1'
apt 'com.google.dagger:dagger-compiler:2.0.1'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.blogspot.e_kanivets.moneytracker.db;

import static org.junit.Assert.*;

/**
* Created by alla on 9/3/15.
*/
Expand Down
11 changes: 9 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
android:name=".util.MTApp"
android:name=".MtApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.Default">
<activity
android:name=".activity.ReportActivity"
android:label="@string/report"
android:screenOrientation="portrait"
android:theme="@style/Theme.Default" />
<activity
Expand Down Expand Up @@ -43,5 +44,11 @@
android:label="@string/title_add_account"
android:screenOrientation="portrait"
android:theme="@style/Theme.Default" />
<activity
android:name=".activity.TransferActivity"
android:label="@string/transfer"
android:screenOrientation="portrait"
android:theme="@style/Theme.Default" />
</application>
</manifest>

</manifest>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.blogspot.e_kanivets.moneytracker.util;
package com.blogspot.e_kanivets.moneytracker;

import android.app.Application;

Expand All @@ -8,11 +8,11 @@
*
* @author Evgenii Kanivets
*/
public class MTApp extends Application {
public class MtApp extends Application {

private static MTApp mtApp;
private static MtApp mtApp;

public static MTApp get() {
public static MtApp get() {
return mtApp;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,48 @@
package com.blogspot.e_kanivets.moneytracker.activity;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatSpinner;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.EditText;

import com.blogspot.e_kanivets.moneytracker.R;
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseActivity;
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
import com.blogspot.e_kanivets.moneytracker.helper.DbHelper;

public class AddAccountActivity extends AppCompatActivity {
import java.util.ArrayList;
import java.util.Collections;
import java.util.Currency;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;

import butterknife.Bind;

public class AddAccountActivity extends BaseActivity {
@SuppressWarnings("unused")
private static final String TAG = "AddAccountActivity";

private EditText etTitle;
private EditText etInitSum;
@Bind(R.id.et_title)
EditText etTitle;
@Bind(R.id.et_init_sum)
EditText etInitSum;
@Bind(R.id.spinner)
AppCompatSpinner spinner;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_account);
protected int getContentViewId() {
return R.layout.activity_add_account;
}

initViews();
initActionBar();
@Override
protected void initViews() {
super.initViews();

spinner.setAdapter(new ArrayAdapter<>(AddAccountActivity.this,
android.R.layout.simple_list_item_1, new ArrayList<>(getAllCurrencies())));
}

@Override
Expand All @@ -36,10 +55,7 @@ public boolean onCreateOptionsMenu(Menu menu) {
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_done:
String title = etTitle.getText().toString();
int initSum = Integer.parseInt(etInitSum.getText().toString());

new AccountController(new DbHelper(AddAccountActivity.this)).addAccount(title, initSum);
addAccount();

setResult(RESULT_OK);
finish();
Expand All @@ -54,12 +70,34 @@ public boolean onOptionsItemSelected(MenuItem item) {
}
}

private void initViews() {
etTitle = (EditText) findViewById(R.id.et_title);
etInitSum = (EditText) findViewById(R.id.et_init_sum);
private void addAccount() {
String title = etTitle.getText().toString().trim();
int initSum = Integer.parseInt(etInitSum.getText().toString().trim());
String currency = (String) spinner.getSelectedItem();

new AccountController(new DbHelper(AddAccountActivity.this))
.addAccount(title, initSum, currency);
}

private void initActionBar() {
if (getSupportActionBar() != null) getSupportActionBar().setCustomView(null);
public static List<String> getAllCurrencies() {
Set<Currency> toret = new HashSet<>();
Locale[] locs = Locale.getAvailableLocales();

for (Locale loc : locs) {
try {
toret.add(Currency.getInstance(loc));
} catch (Exception exc) {
// Locale not found
}
}

List<String> currencyList = new ArrayList<>();
for (Currency currency : toret) {
currencyList.add(currency.getCurrencyCode());
}

Collections.sort(currencyList);

return currencyList;
}
}
Original file line number Diff line number Diff line change
@@ -1,144 +1,22 @@
package com.blogspot.e_kanivets.moneytracker.activity;

import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

import com.blogspot.e_kanivets.moneytracker.R;
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
import com.blogspot.e_kanivets.moneytracker.controller.RecordController;
import com.blogspot.e_kanivets.moneytracker.helper.DbHelper;
import com.blogspot.e_kanivets.moneytracker.activity.base.AddRecordBaseActivity;
import com.blogspot.e_kanivets.moneytracker.model.Account;
import com.blogspot.e_kanivets.moneytracker.model.Record;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class AddExpenseActivity extends AppCompatActivity {
public class AddExpenseActivity extends AddRecordBaseActivity {
@SuppressWarnings("unused")
private static final String TAG = "AddExpenseActivity";

public static final String KEY_RECORD = "key_record";
public static final String KEY_MODE = "key_mode";

private Record record;
private Mode mode;

private EditText etTitle;
private EditText etCategory;
private EditText etPrice;
private Spinner spinnerAccount;

private RecordController recordController;
private AccountController accountController;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_record);

recordController = new RecordController(new DbHelper(AddExpenseActivity.this));
accountController = new AccountController(new DbHelper(AddExpenseActivity.this));

if (getIntent() != null) {
record = (Record) getIntent().getSerializableExtra(KEY_RECORD);
mode = (Mode) getIntent().getSerializableExtra(KEY_MODE);
}
protected boolean doRecord(String title, String category, int price, Account account) {
if (mode == Mode.MODE_ADD) recordController.addRecord(new Record(new Date().getTime(),
Record.TYPE_EXPENSE, title, category, price, account.getId()));
else if (mode == Mode.MODE_EDIT)
recordController.updateRecordById(record.getId(), title, category, price, account.getId());

initViews();
initActionBar();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_add_record, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_done:
String title = etTitle.getText().toString();
String category = etCategory.getText().toString();

//Check if price is valid
//noinspection UnusedAssignment
int price = 0;
try {
price = Integer.parseInt(etPrice.getText().toString());
if (price >= 0 && price <= 1000000000) {
Account account = accountController.getAccounts().get(spinnerAccount.getSelectedItemPosition());

if (mode == Mode.MODE_ADD) recordController.addRecord(new Date().getTime(),
1, title, category, price, account.getId(), -price);
if (mode == Mode.MODE_EDIT)
recordController.updateRecordById(record.getId(),
title, category, price, account.getId(), -(price - record.getPrice()));
} else throw new NumberFormatException();
} catch (NumberFormatException e) {
Toast.makeText(AddExpenseActivity.this, getResources().getString(R.string.wrong_number_text),
Toast.LENGTH_SHORT).show();
}

setResult(RESULT_OK);
finish();
return true;

case R.id.action_close:
finish();
return true;

default:
return super.onOptionsItemSelected(item);
}
}

private void initViews() {
etTitle = (EditText) findViewById(R.id.et_title);
etCategory = (EditText) findViewById(R.id.et_category);
etPrice = (EditText) findViewById(R.id.et_price);

List<Account> accountList = accountController.getAccounts();

List<String> accounts = new ArrayList<>();
for (Account account : accountList) {
accounts.add(account.getTitle());
}

spinnerAccount = (Spinner) findViewById(R.id.spinner_account);
spinnerAccount.setAdapter(new ArrayAdapter<>(AddExpenseActivity.this,
android.R.layout.simple_list_item_1, accounts));

//Add texts to dialog if it's edit dialog
if (mode == Mode.MODE_EDIT) {
etTitle.setText(record.getTitle());
etCategory.setText(record.getCategory());
etPrice.setText(Integer.toString(record.getPrice()));

for (int i = 0; i < accountList.size(); i++) {
Account account = accountList.get(i);
if (account.getId() == record.getAccountId()) {
spinnerAccount.setSelection(i);
}
}
}
}

private void initActionBar() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setCustomView(null);
}
}

public enum Mode {MODE_ADD, MODE_EDIT}
}
Loading