diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5b3de8b..717091f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,7 +2,6 @@
-
@@ -15,18 +14,29 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
-
-
-
+
+
+
+
+
+
+
@@ -34,13 +44,6 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/inc/padmal/ussdtrack/SMSReceiver.java b/app/src/main/java/inc/padmal/ussdtrack/Controllers/SMSReceiver.java
similarity index 92%
rename from app/src/main/java/inc/padmal/ussdtrack/SMSReceiver.java
rename to app/src/main/java/inc/padmal/ussdtrack/Controllers/SMSReceiver.java
index e853831..a827a27 100644
--- a/app/src/main/java/inc/padmal/ussdtrack/SMSReceiver.java
+++ b/app/src/main/java/inc/padmal/ussdtrack/Controllers/SMSReceiver.java
@@ -1,12 +1,12 @@
-package inc.padmal.ussdtrack;
+package inc.padmal.ussdtrack.Controllers;
-import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
-import android.util.Log;
+
+import inc.padmal.ussdtrack.Controllers.SmsListener;
/**
* Created by knight on 10/21/18.
diff --git a/app/src/main/java/inc/padmal/ussdtrack/SmsListener.java b/app/src/main/java/inc/padmal/ussdtrack/Controllers/SmsListener.java
similarity index 74%
rename from app/src/main/java/inc/padmal/ussdtrack/SmsListener.java
rename to app/src/main/java/inc/padmal/ussdtrack/Controllers/SmsListener.java
index f4f958f..f0cb2d3 100644
--- a/app/src/main/java/inc/padmal/ussdtrack/SmsListener.java
+++ b/app/src/main/java/inc/padmal/ussdtrack/Controllers/SmsListener.java
@@ -1,4 +1,4 @@
-package inc.padmal.ussdtrack;
+package inc.padmal.ussdtrack.Controllers;
/**
* Created by knight on 10/21/18.
diff --git a/app/src/main/java/inc/padmal/ussdtrack/BackGrounds.java b/app/src/main/java/inc/padmal/ussdtrack/Helpers/BackGrounds.java
similarity index 80%
rename from app/src/main/java/inc/padmal/ussdtrack/BackGrounds.java
rename to app/src/main/java/inc/padmal/ussdtrack/Helpers/BackGrounds.java
index e800c6e..61a39a8 100644
--- a/app/src/main/java/inc/padmal/ussdtrack/BackGrounds.java
+++ b/app/src/main/java/inc/padmal/ussdtrack/Helpers/BackGrounds.java
@@ -1,8 +1,9 @@
-package inc.padmal.ussdtrack;
+package inc.padmal.ussdtrack.Helpers;
import android.annotation.SuppressLint;
import android.graphics.Color;
import android.os.AsyncTask;
+import android.widget.TextView;
import android.widget.Toast;
import com.github.mikephil.charting.charts.LineChart;
@@ -16,19 +17,27 @@
import java.util.Iterator;
import java.util.List;
+import inc.padmal.ussdtrack.Models.HourAxisValueFormatter;
+import inc.padmal.ussdtrack.Models.Medium;
+
/**
* Created by knight on 10/23/18.
*/
-class BackGrounds extends AsyncTask {
+public class BackGrounds extends AsyncTask {
@SuppressLint("StaticFieldLeak")
private LineChart chart;
+ private TextView tv;
+ private boolean mode;
+ private String lastValue = "";
private HourAxisValueFormatter axisFormatter;
- BackGrounds(LineChart chart) {
+ public BackGrounds(LineChart chart, TextView tv, boolean mode) {
this.chart = chart;
+ this.tv = tv;
+ this.mode = mode;
axisFormatter = new HourAxisValueFormatter(0);
}
@@ -64,6 +73,8 @@ protected LineData doInBackground(Medium... media) {
i++;
}
+ this.lastValue = String.valueOf(entries.get(entries.size() - 1).getY());
+
LineDataSet dataSet = new LineDataSet(entries, medium.getLabel());
dataSet.setColor(medium.getColor());
dataSet.setCircleColor(Color.BLACK);
@@ -75,6 +86,8 @@ protected LineData doInBackground(Medium... media) {
@Override
protected void onPostExecute(LineData data) {
super.onPostExecute(data);
+ String v = (mode ? "Balance Rs. " : "Data ") + lastValue + (!mode ? " MB" : "");
+ tv.setText(v);
chart.getXAxis().setValueFormatter(axisFormatter);
chart.getDescription().setEnabled(false);
chart.setData(data);
diff --git a/app/src/main/java/inc/padmal/ussdtrack/Plotter.java b/app/src/main/java/inc/padmal/ussdtrack/Helpers/Plotter.java
similarity index 65%
rename from app/src/main/java/inc/padmal/ussdtrack/Plotter.java
rename to app/src/main/java/inc/padmal/ussdtrack/Helpers/Plotter.java
index c8fb99c..8411957 100644
--- a/app/src/main/java/inc/padmal/ussdtrack/Plotter.java
+++ b/app/src/main/java/inc/padmal/ussdtrack/Helpers/Plotter.java
@@ -1,12 +1,15 @@
-package inc.padmal.ussdtrack;
+package inc.padmal.ussdtrack.Helpers;
import android.content.Context;
+import android.widget.TextView;
import com.github.mikephil.charting.charts.LineChart;
import org.json.JSONException;
import org.json.JSONObject;
+import inc.padmal.ussdtrack.Models.Medium;
+
/**
* Created by knight on 10/22/18.
*/
@@ -19,17 +22,19 @@ public static Plotter getInstance() {
return ourInstance;
}
- public void plotChart(Context context, JSONObject i, LineChart chart, String label, int color) {
+ public void plotChart(Context context, JSONObject i, LineChart chart, String label,
+ int color, TextView tv, boolean mode) {
Medium medium = new Medium(context, i, chart, label, color);
- BackGrounds backGrounds = new BackGrounds(chart);
+ BackGrounds backGrounds = new BackGrounds(chart, tv, mode);
backGrounds.execute(medium);
}
- public void loadCharts(Context context, LineChart chart, String data, int color, String label) {
+ public void loadCharts(Context context, LineChart chart, String data, int color, String label,
+ TextView tv, boolean mode) {
if (!data.isEmpty()) {
try {
JSONObject j = new JSONObject(data);
- plotChart(context, j, chart, label, color);
+ plotChart(context, j, chart, label, color, tv, mode);
} catch (JSONException e) {
e.printStackTrace();
}
diff --git a/app/src/main/java/inc/padmal/ussdtrack/USSDService.java b/app/src/main/java/inc/padmal/ussdtrack/Helpers/USSDService.java
similarity index 97%
rename from app/src/main/java/inc/padmal/ussdtrack/USSDService.java
rename to app/src/main/java/inc/padmal/ussdtrack/Helpers/USSDService.java
index dfb814f..35aeb96 100644
--- a/app/src/main/java/inc/padmal/ussdtrack/USSDService.java
+++ b/app/src/main/java/inc/padmal/ussdtrack/Helpers/USSDService.java
@@ -1,4 +1,4 @@
-package inc.padmal.ussdtrack;
+package inc.padmal.ussdtrack.Helpers;
import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.AccessibilityServiceInfo;
diff --git a/app/src/main/java/inc/padmal/ussdtrack/HourAxisValueFormatter.java b/app/src/main/java/inc/padmal/ussdtrack/Models/HourAxisValueFormatter.java
similarity index 97%
rename from app/src/main/java/inc/padmal/ussdtrack/HourAxisValueFormatter.java
rename to app/src/main/java/inc/padmal/ussdtrack/Models/HourAxisValueFormatter.java
index 7d65311..2b9938b 100644
--- a/app/src/main/java/inc/padmal/ussdtrack/HourAxisValueFormatter.java
+++ b/app/src/main/java/inc/padmal/ussdtrack/Models/HourAxisValueFormatter.java
@@ -1,4 +1,4 @@
-package inc.padmal.ussdtrack;
+package inc.padmal.ussdtrack.Models;
import com.github.mikephil.charting.components.AxisBase;
import com.github.mikephil.charting.formatter.IAxisValueFormatter;
diff --git a/app/src/main/java/inc/padmal/ussdtrack/Medium.java b/app/src/main/java/inc/padmal/ussdtrack/Models/Medium.java
similarity index 97%
rename from app/src/main/java/inc/padmal/ussdtrack/Medium.java
rename to app/src/main/java/inc/padmal/ussdtrack/Models/Medium.java
index 49a26a6..9964e3b 100644
--- a/app/src/main/java/inc/padmal/ussdtrack/Medium.java
+++ b/app/src/main/java/inc/padmal/ussdtrack/Models/Medium.java
@@ -1,4 +1,4 @@
-package inc.padmal.ussdtrack;
+package inc.padmal.ussdtrack.Models;
import android.content.Context;
diff --git a/app/src/main/java/inc/padmal/ussdtrack/MainActivity.java b/app/src/main/java/inc/padmal/ussdtrack/TrackingActivity.java
similarity index 63%
rename from app/src/main/java/inc/padmal/ussdtrack/MainActivity.java
rename to app/src/main/java/inc/padmal/ussdtrack/TrackingActivity.java
index 4aee90b..dcd5c3b 100644
--- a/app/src/main/java/inc/padmal/ussdtrack/MainActivity.java
+++ b/app/src/main/java/inc/padmal/ussdtrack/TrackingActivity.java
@@ -11,8 +11,13 @@
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.design.widget.NavigationView;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.LocalBroadcastManager;
+import android.support.v4.view.GravityCompat;
+import android.support.v4.widget.DrawerLayout;
+import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
@@ -27,7 +32,13 @@
import org.json.JSONException;
import org.json.JSONObject;
-public class MainActivity extends AppCompatActivity {
+import inc.padmal.ussdtrack.Controllers.SMSReceiver;
+import inc.padmal.ussdtrack.Controllers.SmsListener;
+import inc.padmal.ussdtrack.Helpers.Plotter;
+import inc.padmal.ussdtrack.Helpers.USSDService;
+
+public class TrackingActivity extends AppCompatActivity
+ implements NavigationView.OnNavigationItemSelectedListener {
LineChart chartMoney, chartData;
String ussd = "*100" + Uri.encode("#");
@@ -38,10 +49,19 @@ public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- Toolbar toolbar = findViewById(R.id.toolbar);
+ setContentView(R.layout.activity_tracking);
+ Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
+ DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
+ ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
+ this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
+ drawer.addDrawerListener(toggle);
+ toggle.syncState();
+
+ NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
+ navigationView.setNavigationItemSelectedListener(this);
+
chartMoney = findViewById(R.id.chartMoney);
chartData = findViewById(R.id.chartData);
@@ -61,18 +81,16 @@ protected void onCreate(Bundle savedInstanceState) {
@Override
public void messageReceived(String messageText) {
processData(Logs.getString("DATA", ""),
- messageText, chartData, "DATA", "Data", Color.RED);
- setCurrentValues(tvData, chartData, "Data", false);
- setCurrentValues(tvMoney, chartMoney, "Money", true);
+ messageText, chartData, "DATA", "Data", Color.RED, tvData, false);
}
});
makeTheCall();
plotter.loadCharts(getApplicationContext(), chartMoney,
- Logs.getString("MONEY", ""), Color.BLUE, "Money");
+ Logs.getString("MONEY", ""), Color.BLUE, "Money", tvMoney, true);
plotter.loadCharts(getApplicationContext(), chartData,
- Logs.getString("DATA", ""), Color.RED, "Data");
+ Logs.getString("DATA", ""), Color.RED, "Data", tvData, false);
}
private void setCurrentValues(TextView t, LineChart c, String l, boolean mode) {
@@ -89,9 +107,19 @@ private void makeTheCall() {
}
}
+ @Override
+ public void onBackPressed() {
+ DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
+ if (drawer.isDrawerOpen(GravityCompat.START)) {
+ drawer.closeDrawer(GravityCompat.START);
+ } else {
+ super.onBackPressed();
+ }
+ }
+
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.menu_main, menu);
+ getMenuInflater().inflate(R.menu.menu_tracking, menu);
return true;
}
@@ -104,8 +132,8 @@ public boolean onOptionsItemSelected(MenuItem item) {
case R.id.action_clean:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder
- .setMessage("You are going to delete all the chart data. Are you sure?")
- .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
+ .setMessage(getString(R.string.delete_confirmation))
+ .setPositiveButton(getString(R.string.yes), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Logs.edit().clear().apply();
chartMoney.invalidate();
@@ -114,7 +142,7 @@ public void onClick(DialogInterface dialog, int id) {
chartData.clear();
}
})
- .setNegativeButton("No", new DialogInterface.OnClickListener() {
+ .setNegativeButton(getString(R.string.no), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {/**/}
})
.create().show();
@@ -126,32 +154,62 @@ public void onClick(DialogInterface dialog, int id) {/**/}
return true;
}
+ @SuppressWarnings("StatementWithEmptyBody")
+ @Override
+ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
+
+ switch (item.getItemId()) {
+ case R.id.nav_settings:
+ break;
+ case R.id.nav_camera:
+ break;
+ case R.id.nav_gallery:
+ break;
+ case R.id.nav_slideshow:
+ break;
+ case R.id.nav_manage:
+ break;
+ case R.id.nav_share:
+ break;
+ case R.id.nav_send:
+ break;
+ default:
+ break;
+ }
+ DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
+ drawer.closeDrawer(GravityCompat.START);
+ return true;
+ }
+
private BroadcastReceiver USSDReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String message = intent.getStringExtra("USSD");
processData(Logs.getString("MONEY", ""),
message.substring(message.indexOf("Rs.") + 4, message.indexOf("will") - 1),
- chartMoney, "MONEY", "Money", Color.BLUE);
+ chartMoney, "MONEY", "Money", Color.BLUE, tvMoney, true);
}
};
- private void processData(String JStr, String msg, LineChart chart, String Key, String label, int color) {
+ private void processData(String JStr, String msg, LineChart chart, String Key, String label,
+ int color, TextView tv, boolean mode) {
try {
JSONObject jsonObject = new JSONObject(JStr);
jsonObject.put(String.valueOf(System.currentTimeMillis()), msg);
String updateJSONString = jsonObject.toString();
Logs.edit().putString(Key, updateJSONString).apply();
- plotter.plotChart(getApplicationContext(), jsonObject, chart, label, color);
+ plotter.plotChart(getApplicationContext(), jsonObject, chart, label,
+ color, tv, mode);
} catch (JSONException e) {
JSONObject FirstJSON = new JSONObject();
try {
FirstJSON.put(String.valueOf(System.currentTimeMillis()), msg);
String updateJSONString = FirstJSON.toString();
Logs.edit().putString(Key, updateJSONString).apply();
- plotter.plotChart(getApplicationContext(), FirstJSON, chart, label, color);
+ plotter.plotChart(getApplicationContext(), FirstJSON, chart, label,
+ color, tv, mode);
} catch (JSONException j) {
- Toast.makeText(getApplicationContext(), "Error in parsing", Toast.LENGTH_LONG).show();
+ Toast.makeText(getApplicationContext(), getString(R.string.error_parse), Toast.LENGTH_LONG).show();
}
}
}
diff --git a/app/src/main/res/drawable/ic_menu_camera.xml b/app/src/main/res/drawable/ic_menu_camera.xml
new file mode 100644
index 0000000..0d9ea10
--- /dev/null
+++ b/app/src/main/res/drawable/ic_menu_camera.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_menu_gallery.xml b/app/src/main/res/drawable/ic_menu_gallery.xml
new file mode 100644
index 0000000..f6872c4
--- /dev/null
+++ b/app/src/main/res/drawable/ic_menu_gallery.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_menu_manage.xml b/app/src/main/res/drawable/ic_menu_manage.xml
new file mode 100644
index 0000000..c1be60b
--- /dev/null
+++ b/app/src/main/res/drawable/ic_menu_manage.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_menu_send.xml b/app/src/main/res/drawable/ic_menu_send.xml
new file mode 100644
index 0000000..00c668c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_menu_send.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_menu_share.xml b/app/src/main/res/drawable/ic_menu_share.xml
new file mode 100644
index 0000000..a28fb9e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_menu_share.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_menu_slideshow.xml b/app/src/main/res/drawable/ic_menu_slideshow.xml
new file mode 100644
index 0000000..209aa64
--- /dev/null
+++ b/app/src/main/res/drawable/ic_menu_slideshow.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/icon_settings.xml b/app/src/main/res/drawable/icon_settings.xml
new file mode 100644
index 0000000..ace746c
--- /dev/null
+++ b/app/src/main/res/drawable/icon_settings.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/side_nav_bar.xml b/app/src/main/res/drawable/side_nav_bar.xml
new file mode 100644
index 0000000..6d81870
--- /dev/null
+++ b/app/src/main/res/drawable/side_nav_bar.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_tracking.xml b/app/src/main/res/layout/activity_tracking.xml
new file mode 100644
index 0000000..fdaead1
--- /dev/null
+++ b/app/src/main/res/layout/activity_tracking.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/app_bar_tracking.xml
similarity index 89%
rename from app/src/main/res/layout/activity_main.xml
rename to app/src/main/res/layout/app_bar_tracking.xml
index b5af6e9..6b21fd2 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/app_bar_tracking.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context="inc.padmal.ussdtrack.MainActivity">
+ tools:context="inc.padmal.ussdtrack.TrackingActivity">
-
+
diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_tracking.xml
similarity index 95%
rename from app/src/main/res/layout/content_main.xml
rename to app/src/main/res/layout/content_tracking.xml
index 52dd4e4..2d6fcb7 100644
--- a/app/src/main/res/layout/content_main.xml
+++ b/app/src/main/res/layout/content_tracking.xml
@@ -5,8 +5,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
- tools:context="inc.padmal.ussdtrack.MainActivity"
- tools:showIn="@layout/activity_main">
+ tools:context="inc.padmal.ussdtrack.TrackingActivity"
+ tools:showIn="@layout/activity_tracking">
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/menu/activity_tracking_drawer.xml b/app/src/main/res/menu/activity_tracking_drawer.xml
new file mode 100644
index 0000000..e041ea8
--- /dev/null
+++ b/app/src/main/res/menu/activity_tracking_drawer.xml
@@ -0,0 +1,43 @@
+
+
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_tracking.xml
similarity index 90%
rename from app/src/main/res/menu/menu_main.xml
rename to app/src/main/res/menu/menu_tracking.xml
index 9011066..44d5361 100644
--- a/app/src/main/res/menu/menu_main.xml
+++ b/app/src/main/res/menu/menu_tracking.xml
@@ -1,7 +1,7 @@
+ tools:context="inc.padmal.ussdtrack.TrackingActivity">
-
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 59a0b0c..03c4820 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -1,3 +1,8 @@
16dp
+
+ 16dp
+ 16dp
+ 8dp
+ 176dp
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index da70b6f..43f491c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -4,4 +4,13 @@
Padmal\'s stuff
Review
Clean
+ TrackingActivity
+
+ Open navigation drawer
+ Close navigation drawer
+
+ You are going to delete all the chart data. Are you sure?
+ Yes
+ No
+ Error in parsing
diff --git a/upload-apk.sh b/upload-apk.sh
index 3c88db7..23f7b8b 100644
--- a/upload-apk.sh
+++ b/upload-apk.sh
@@ -10,6 +10,9 @@ git config --global user.name "Travis CI"
#clone the repository
git clone --quiet --branch=apk https://CloudyPadmal:$GITHUB_API_KEY@github.com/CloudyPadmal/USSDTrack apk > /dev/null
+echo "List of files in current directory"
+ls -la
+
cd apk
\cp -r ../app/build/outputs/apk/*/**.apk .
@@ -22,10 +25,10 @@ if [ "$TRAVIS_BRANCH" == "$PUBLISH_BRANCH" ]; then
echo "Push to main branch detected, generating apk..."
# Rename apks with dev prefixes
mv app-debug.apk app-dev-debug.apk
- mv app-release-unsigned.apk app-dev-release.apk
+ rm -rf app-release-unsigned.apk
# Push generated apk files to apk branch
git checkout apk
git add -A
git commit -am "Travis build pushed [Padmal]"
git push origin apk --force --quiet> /dev/null
-fi
\ No newline at end of file
+fi