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

Commit 857ff38

Browse files
author
Evgenii Kanivets
committed
#95. Kotlinify EditAccountActivity.
1 parent 602d875 commit 857ff38

File tree

6 files changed

+158
-171
lines changed

6 files changed

+158
-171
lines changed

app/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@ buildscript {
88
}
99
}
1010
apply plugin: 'com.android.application'
11+
apply plugin: 'kotlin-android'
12+
apply plugin: 'kotlin-android-extensions'
1113
apply plugin: 'io.fabric'
1214

1315
repositories {
1416
maven { url 'https://maven.fabric.io/public' }
17+
mavenCentral()
1518
}
1619

1720
android {
@@ -83,4 +86,5 @@ dependencies {
8386
androidTestCompile 'com.crittercism.dexmaker:dexmaker-mockito:1.4'
8487
annotationProcessor 'com.google.dagger:dagger-compiler:2.11'
8588
provided 'org.glassfish:javax.annotation:10.0-b28'
89+
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
8690
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/AccountsActivity.java

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity;
1111
import com.blogspot.e_kanivets.moneytracker.adapter.AccountAdapter;
1212
import com.blogspot.e_kanivets.moneytracker.controller.data.AccountController;
13+
import com.blogspot.e_kanivets.moneytracker.entity.data.Account;
1314
import com.blogspot.e_kanivets.moneytracker.ui.presenter.AccountsSummaryPresenter;
1415
import com.blogspot.e_kanivets.moneytracker.util.AnswersProxy;
1516

@@ -20,36 +21,30 @@
2021
import butterknife.OnItemClick;
2122

2223
public class AccountsActivity extends BaseBackActivity {
23-
@SuppressWarnings("unused")
24-
private static final String TAG = "AccountsActivity";
24+
@SuppressWarnings("unused") private static final String TAG = "AccountsActivity";
2525

2626
private static final int REQUEST_ADD_ACCOUNT = 1;
2727
private static final int REQUEST_TRANSFER = 2;
2828
private static final int REQUEST_EDIT_ACCOUNT = 3;
2929

30-
@Inject
31-
AccountController accountController;
30+
@Inject AccountController accountController;
3231

3332
private AccountsSummaryPresenter summaryPresenter;
3433

35-
@BindView(R.id.list_view)
36-
ListView listView;
34+
@BindView(R.id.list_view) ListView listView;
3735

38-
@Override
39-
protected int getContentViewId() {
36+
@Override protected int getContentViewId() {
4037
return R.layout.activity_accounts;
4138
}
4239

43-
@Override
44-
protected boolean initData() {
40+
@Override protected boolean initData() {
4541
boolean result = super.initData();
4642
getAppComponent().inject(AccountsActivity.this);
4743
summaryPresenter = new AccountsSummaryPresenter(AccountsActivity.this);
4844
return result;
4945
}
5046

51-
@Override
52-
protected void initViews() {
47+
@Override protected void initViews() {
5348
super.initViews();
5449

5550
listView.addHeaderView(summaryPresenter.create());
@@ -58,14 +53,12 @@ protected void initViews() {
5853
update();
5954
}
6055

61-
@Override
62-
public boolean onCreateOptionsMenu(Menu menu) {
56+
@Override public boolean onCreateOptionsMenu(Menu menu) {
6357
getMenuInflater().inflate(R.menu.menu_accounts, menu);
6458
return true;
6559
}
6660

67-
@Override
68-
public boolean onOptionsItemSelected(MenuItem item) {
61+
@Override public boolean onOptionsItemSelected(MenuItem item) {
6962
switch (item.getItemId()) {
7063
case R.id.action_transfer:
7164
makeTransfer();
@@ -76,28 +69,23 @@ public boolean onOptionsItemSelected(MenuItem item) {
7669
}
7770
}
7871

79-
@OnItemClick(R.id.list_view)
80-
public void onAccountClick(int position) {
81-
Intent intent = new Intent(this, EditAccountActivity.class);
82-
intent.putExtra(EditAccountActivity.KEY_ACCOUNT, accountController.readAll().get(position - 1));
83-
startActivityForResult(intent, REQUEST_EDIT_ACCOUNT);
72+
@OnItemClick(R.id.list_view) public void onAccountClick(int position) {
73+
Account account = accountController.readAll().get(position - 1);
74+
startActivityForResult(EditAccountActivity.Companion.newIntent(this, account), REQUEST_EDIT_ACCOUNT);
8475
}
8576

8677
public void makeTransfer() {
8778
AnswersProxy.get().logButton("Add Transfer");
88-
startActivityForResult(new Intent(AccountsActivity.this, TransferActivity.class),
89-
REQUEST_TRANSFER);
79+
startActivityForResult(new Intent(AccountsActivity.this, TransferActivity.class), REQUEST_TRANSFER);
9080
}
9181

92-
@OnClick(R.id.btn_add_account)
93-
public void addAccount() {
82+
@OnClick(R.id.btn_add_account) public void addAccount() {
9483
AnswersProxy.get().logButton("Add Account");
9584
Intent intent = new Intent(AccountsActivity.this, AddAccountActivity.class);
9685
startActivityForResult(intent, REQUEST_ADD_ACCOUNT);
9786
}
9887

99-
@Override
100-
public void onActivityResult(int requestCode, int resultCode, Intent data) {
88+
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) {
10189
super.onActivityResult(requestCode, resultCode, data);
10290

10391
if (resultCode == AppCompatActivity.RESULT_OK) {

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/EditAccountActivity.java

Lines changed: 0 additions & 139 deletions
This file was deleted.
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
package com.blogspot.e_kanivets.moneytracker.activity.account
2+
3+
import android.app.Activity
4+
import android.app.AlertDialog
5+
import android.content.Context
6+
import android.content.Intent
7+
import android.view.Menu
8+
import android.view.MenuItem
9+
10+
import com.blogspot.e_kanivets.moneytracker.R
11+
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity
12+
import com.blogspot.e_kanivets.moneytracker.controller.data.AccountController
13+
import com.blogspot.e_kanivets.moneytracker.entity.data.Account
14+
import kotlinx.android.synthetic.main.activity_edit_account.*
15+
16+
import javax.inject.Inject
17+
18+
class EditAccountActivity : BaseBackActivity() {
19+
20+
@Inject
21+
internal lateinit var accountController: AccountController
22+
23+
private lateinit var account: Account
24+
25+
override fun getContentViewId(): Int {
26+
return R.layout.activity_edit_account
27+
}
28+
29+
override fun initData(): Boolean {
30+
appComponent.inject(this@EditAccountActivity)
31+
val accountFromParcel: Account? = intent.getParcelableExtra(KEY_ACCOUNT)
32+
33+
return if (accountFromParcel == null) false
34+
else {
35+
account = accountFromParcel
36+
super.initData()
37+
}
38+
}
39+
40+
override fun initViews() {
41+
super.initViews()
42+
43+
etTitle.setText(account.title)
44+
etGoal.setText(account.goal.toString())
45+
viewColor.setBackgroundColor(account.color)
46+
47+
fabDone.setOnClickListener { done() }
48+
}
49+
50+
override fun onCreateOptionsMenu(menu: Menu): Boolean {
51+
if (account.isArchived) {
52+
menuInflater.inflate(R.menu.menu_archived_account, menu)
53+
} else {
54+
menuInflater.inflate(R.menu.menu_account, menu)
55+
}
56+
return true
57+
}
58+
59+
override fun onOptionsItemSelected(item: MenuItem): Boolean {
60+
return when (item.itemId) {
61+
R.id.action_archive -> archive()
62+
R.id.action_restore -> restore()
63+
R.id.action_delete -> delete()
64+
else -> super.onOptionsItemSelected(item)
65+
}
66+
}
67+
68+
private fun done() {
69+
val title = etTitle.text.toString().trim { it <= ' ' }
70+
71+
if (title.isEmpty()) {
72+
tilTitle.error = getString(R.string.field_cant_be_empty)
73+
} else {
74+
val newAccount = Account(
75+
account.id, title, account.curSum.toDouble(),
76+
account.currency, account.goal, account.isArchived, account.color
77+
)
78+
val updated = accountController.update(newAccount) != null
79+
if (updated) {
80+
setResult(Activity.RESULT_OK)
81+
finish()
82+
}
83+
}
84+
}
85+
86+
private fun archive(): Boolean {
87+
if (account == accountController.readDefaultAccount()) {
88+
showToast(R.string.cant_archive_default_account)
89+
} else {
90+
accountController.archive(account)
91+
setResult(Activity.RESULT_OK)
92+
finish()
93+
}
94+
95+
return true
96+
}
97+
98+
private fun restore(): Boolean {
99+
accountController.restore(account)
100+
setResult(Activity.RESULT_OK)
101+
finish()
102+
103+
return true
104+
}
105+
106+
private fun delete(): Boolean {
107+
val builder = AlertDialog.Builder(this)
108+
builder.setTitle(R.string.delete_account_title)
109+
builder.setMessage(R.string.delete_account_message)
110+
builder.setPositiveButton(android.R.string.ok) { _, _ ->
111+
accountController.delete(account)
112+
setResult(Activity.RESULT_OK)
113+
finish()
114+
}
115+
builder.setNegativeButton(android.R.string.cancel, null)
116+
builder.show()
117+
118+
return true
119+
}
120+
121+
companion object {
122+
123+
const val KEY_ACCOUNT = "key_account"
124+
125+
fun newIntent(context: Context, account: Account): Intent {
126+
val intent = Intent(context, EditAccountActivity::class.java)
127+
intent.putExtra(KEY_ACCOUNT, account)
128+
return intent
129+
}
130+
}
131+
132+
}

0 commit comments

Comments
 (0)