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

Commit 8275722

Browse files
author
Evgenii
committed
Merge pull request #64 from evgenii-kanivets/dev
v1.5.0
2 parents c7ea2bf + 171d76b commit 8275722

File tree

120 files changed

+3267
-2249
lines changed

Some content is hidden

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

120 files changed

+3267
-2249
lines changed

app/build.gradle

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ android {
66
buildToolsVersion '21.1.2'
77
defaultConfig {
88
applicationId 'com.blogspot.e_kanivets.moneytracker'
9-
minSdkVersion 10
9+
minSdkVersion 17
1010
targetSdkVersion 23
11-
versionCode 4
12-
versionName '1.4.0'
11+
versionCode 5
12+
versionName '1.5.0'
1313
}
1414
signingConfigs {
1515
releaseConfig {
@@ -45,8 +45,9 @@ android {
4545

4646
dependencies {
4747
compile fileTree(dir: 'libs', include: ['*.jar'])
48-
compile 'com.android.support:support-v4:23.0.0'
49-
compile 'com.android.support:appcompat-v7:23.0.0'
48+
compile 'com.android.support:support-v4:23.2.1'
49+
compile 'com.android.support:appcompat-v7:23.2.1'
50+
compile 'com.android.support:design:23.2.1'
5051
compile 'com.jakewharton:butterknife:7.0.1'
5152
compile 'com.google.dagger:dagger:2.0.1'
5253

@@ -55,8 +56,7 @@ dependencies {
5556

5657
testCompile 'junit:junit:4.12'
5758
testCompile 'org.mockito:mockito-core:2.0.43-beta'
58-
59-
androidTestCompile "com.crittercism.dexmaker:dexmaker:1.4"
60-
androidTestCompile "com.crittercism.dexmaker:dexmaker-dx:1.4"
61-
androidTestCompile "com.crittercism.dexmaker:dexmaker-mockito:1.4"
59+
androidTestCompile 'com.crittercism.dexmaker:dexmaker:1.4'
60+
androidTestCompile 'com.crittercism.dexmaker:dexmaker-dx:1.4'
61+
androidTestCompile 'com.crittercism.dexmaker:dexmaker-mockito:1.4'
6262
}

app/src/androidTest/java/com/blogspot/e_kanivets/moneytracker/repo/AccountRepoTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.content.ContentValues;
44
import android.database.Cursor;
55

6-
import com.blogspot.e_kanivets.moneytracker.DbHelper;
76
import com.blogspot.e_kanivets.moneytracker.entity.Account;
87

98
import junit.framework.TestCase;

app/src/androidTest/java/com/blogspot/e_kanivets/moneytracker/repo/CategoryRepoTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.content.ContentValues;
44
import android.database.Cursor;
55

6-
import com.blogspot.e_kanivets.moneytracker.DbHelper;
76
import com.blogspot.e_kanivets.moneytracker.entity.Category;
87

98
import junit.framework.TestCase;

app/src/androidTest/java/com/blogspot/e_kanivets/moneytracker/repo/ExchangeRateRepoTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.content.ContentValues;
44
import android.database.Cursor;
55

6-
import com.blogspot.e_kanivets.moneytracker.DbHelper;
76
import com.blogspot.e_kanivets.moneytracker.entity.ExchangeRate;
87

98
import junit.framework.TestCase;

app/src/androidTest/java/com/blogspot/e_kanivets/moneytracker/repo/RecordRepoTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.content.ContentValues;
44
import android.database.Cursor;
55

6-
import com.blogspot.e_kanivets.moneytracker.DbHelper;
76
import com.blogspot.e_kanivets.moneytracker.entity.Record;
87

98
import junit.framework.TestCase;
@@ -47,7 +46,7 @@ public void testContentValues() throws Exception {
4746
expected.put(DbHelper.TYPE_COLUMN, Record.TYPE_EXPENSE);
4847
expected.put(DbHelper.TITLE_COLUMN, "title");
4948
expected.put(DbHelper.CATEGORY_ID_COLUMN, 1L);
50-
expected.put(DbHelper.PRICE_COLUMN, 100);
49+
expected.put(DbHelper.PRICE_COLUMN, 100.0);
5150
expected.put(DbHelper.ACCOUNT_ID_COLUMN, 1L);
5251
expected.put(DbHelper.CURRENCY_COLUMN, "NON");
5352

app/src/androidTest/java/com/blogspot/e_kanivets/moneytracker/repo/TransferRepoTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.content.ContentValues;
44
import android.database.Cursor;
55

6-
import com.blogspot.e_kanivets.moneytracker.DbHelper;
76
import com.blogspot.e_kanivets.moneytracker.entity.Transfer;
87

98
import junit.framework.TestCase;

app/src/main/AndroidManifest.xml

Lines changed: 41 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,14 @@
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
package="com.blogspot.e_kanivets.moneytracker">
44

5-
<!-- permissions to download and cache video ads for playback -->
6-
<uses-permission android:name="android.permission.INTERNET" />
7-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
8-
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
9-
105
<application
116
android:name=".MtApp"
127
android:allowBackup="true"
138
android:icon="@mipmap/ic_launcher"
149
android:label="@string/app_name"
1510
android:theme="@style/Theme.Default">
1611
<activity
17-
android:name=".activity.ReportActivity"
18-
android:label="@string/report"
19-
android:screenOrientation="portrait"
20-
android:theme="@style/Theme.Default" />
21-
<activity
22-
android:name=".activity.NavDrawerActivity"
12+
android:name=".activity.record.MainActivity"
2313
android:label="@string/app_name"
2414
android:screenOrientation="portrait"
2515
android:theme="@style/Theme.Default">
@@ -30,28 +20,63 @@
3020
</intent-filter>
3121
</activity>
3222
<activity
33-
android:name=".activity.AddRecordActivity"
23+
android:name=".activity.ReportActivity"
24+
android:label="@string/report"
25+
android:screenOrientation="portrait"
26+
android:theme="@style/Theme.Default" />
27+
<activity
28+
android:name=".activity.record.AddRecordActivity"
3429
android:screenOrientation="portrait"
3530
android:theme="@style/Theme.Default"
3631
android:windowSoftInputMode="stateVisible" />
3732
<activity
38-
android:name=".activity.AddAccountActivity"
33+
android:name=".activity.account.AddAccountActivity"
3934
android:label="@string/title_add_account"
4035
android:screenOrientation="portrait"
4136
android:theme="@style/Theme.Default"
4237
android:windowSoftInputMode="stateVisible" />
4338
<activity
44-
android:name=".activity.AddExchangeRateActivity"
39+
android:name=".activity.exchange_rate.AddExchangeRateActivity"
4540
android:label="@string/add_exchange_rate"
4641
android:screenOrientation="portrait"
4742
android:theme="@style/Theme.Default"
4843
android:windowSoftInputMode="stateVisible" />
4944
<activity
50-
android:name=".activity.TransferActivity"
45+
android:name=".activity.account.TransferActivity"
5146
android:label="@string/transfer"
5247
android:screenOrientation="portrait"
5348
android:theme="@style/Theme.Default"
5449
android:windowSoftInputMode="stateVisible" />
50+
<activity
51+
android:name=".activity.account.AccountsActivity"
52+
android:label="@string/title_accounts"
53+
android:screenOrientation="portrait"
54+
android:theme="@style/Theme.Default" />
55+
<activity
56+
android:name=".activity.exchange_rate.ExchangeRatesActivity"
57+
android:label="@string/title_exchange_rates"
58+
android:screenOrientation="portrait"
59+
android:theme="@style/Theme.Default" />
60+
<activity
61+
android:name=".activity.ExportActivity"
62+
android:label="@string/title_export"
63+
android:screenOrientation="portrait"
64+
android:theme="@style/Theme.Default" />
65+
<activity
66+
android:name=".activity.SettingsActivity"
67+
android:label="@string/title_settings"
68+
android:screenOrientation="portrait"
69+
android:theme="@style/Theme.Default" />
70+
71+
<provider
72+
android:name="android.support.v4.content.FileProvider"
73+
android:authorities="com.blogspot.e_kanivets.moneytracker"
74+
android:grantUriPermissions="true"
75+
android:exported="false">
76+
<meta-data
77+
android:name="android.support.FILE_PROVIDER_PATHS"
78+
android:resource="@xml/file_paths" />
79+
</provider>
5580
</application>
5681

57-
</manifest>
82+
</manifest>

app/src/main/java/com/blogspot/e_kanivets/moneytracker/MtApp.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
import android.app.Application;
44

5+
import com.blogspot.e_kanivets.moneytracker.di.AppComponent;
6+
import com.blogspot.e_kanivets.moneytracker.di.DaggerAppComponent;
7+
import com.blogspot.e_kanivets.moneytracker.di.module.ControllerModule;
8+
import com.blogspot.e_kanivets.moneytracker.di.module.RepoModule;
9+
510
/**
611
* Custom application implementation.
712
* Created on 29/08/14.
@@ -16,10 +21,24 @@ public static MtApp get() {
1621
return mtApp;
1722
}
1823

24+
private AppComponent component;
25+
1926
@Override
2027
public void onCreate() {
2128
super.onCreate();
2229

2330
mtApp = this;
31+
component = buildComponent();
32+
}
33+
34+
public AppComponent getAppComponent() {
35+
return component;
36+
}
37+
38+
private AppComponent buildComponent() {
39+
return DaggerAppComponent.builder()
40+
.repoModule(new RepoModule(get()))
41+
.controllerModule(new ControllerModule())
42+
.build();
2443
}
2544
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package com.blogspot.e_kanivets.moneytracker.activity;
2+
3+
import android.content.Intent;
4+
import android.net.Uri;
5+
import android.support.annotation.NonNull;
6+
import android.support.v4.content.FileProvider;
7+
import android.util.Log;
8+
9+
import com.blogspot.e_kanivets.moneytracker.MtApp;
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.RecordController;
13+
import com.blogspot.e_kanivets.moneytracker.util.Constants;
14+
15+
import java.io.File;
16+
import java.io.FileNotFoundException;
17+
import java.io.PrintWriter;
18+
import java.util.List;
19+
20+
import javax.inject.Inject;
21+
22+
import butterknife.OnClick;
23+
24+
public class ExportActivity extends BaseBackActivity {
25+
@SuppressWarnings("unused")
26+
private static final String TAG = "ExportActivity";
27+
28+
@Inject
29+
RecordController recordController;
30+
31+
@Override
32+
protected int getContentViewId() {
33+
return R.layout.activity_export;
34+
}
35+
36+
@Override
37+
protected boolean initData() {
38+
boolean result = super.initData();
39+
MtApp.get().getAppComponent().inject(ExportActivity.this);
40+
return result;
41+
}
42+
43+
@OnClick(R.id.btn_export)
44+
public void exportRecords() {
45+
List<String> records = recordController.getRecordsForExport(0, Long.MAX_VALUE);
46+
47+
File exportDir = new File(getCacheDir(), "export");
48+
boolean exportDirCreated = exportDir.mkdirs();
49+
Log.d(TAG, "exportDirCreated: " + exportDirCreated);
50+
51+
File outFile;
52+
if (exportDir.exists()) outFile = new File(exportDir, Constants.DEFAULT_EXPORT_FILE_NAME);
53+
else return;
54+
55+
PrintWriter pw = null;
56+
try {
57+
pw = new PrintWriter(outFile);
58+
} catch (FileNotFoundException e) {
59+
e.printStackTrace();
60+
}
61+
62+
if (pw != null) {
63+
for (String record : records) {
64+
pw.println(record);
65+
pw.flush();
66+
}
67+
68+
pw.flush();
69+
pw.close();
70+
71+
shareExportedRecords(outFile);
72+
}
73+
}
74+
75+
private void shareExportedRecords(@NonNull File exportFile) {
76+
Uri fileUri = FileProvider.getUriForFile(ExportActivity.this, getPackageName(), exportFile);
77+
78+
Intent sendIntent = new Intent();
79+
sendIntent.setAction(Intent.ACTION_SEND);
80+
sendIntent.putExtra(Intent.EXTRA_STREAM, fileUri);
81+
sendIntent.setType("text/plain");
82+
startActivity(Intent.createChooser(sendIntent, "Share exported records"));
83+
}
84+
}

0 commit comments

Comments
 (0)