diff --git a/app/build.gradle b/app/build.gradle
index 6d2780d..a4f4c64 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -51,9 +51,9 @@ check {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
- compile 'com.android.support:appcompat-v7:25.0.0'
- compile 'com.android.support:recyclerview-v7:25.0.0'
- compile 'com.android.support:design:25.0.0'
+ compile 'com.android.support:appcompat-v7:25.0.1'
+ compile 'com.android.support:recyclerview-v7:25.0.1'
+ compile 'com.android.support:design:25.0.1'
compile 'com.jakewharton:butterknife:8.1.0'
apt 'com.jakewharton:butterknife-compiler:8.1.0'
compile 'com.google.guava:guava:19.0'
@@ -64,4 +64,7 @@ dependencies {
compile 'com.melnykov:floatingactionbutton:1.3.0'
compile 'net.sf.opencsv:opencsv:2.3'
compile 'com.github.PhilJay:MPAndroidChart:v2.2.5'
+
+ compile 'com.android.support:support-v4:25.0.1'
+ compile 'com.android.support:support-annotations:25.0.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1d2192d..cb577d3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -36,6 +36,15 @@
android:enabled="true"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE" />
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/udacity/stockhawk/ui/HistoryActivity.java b/app/src/main/java/com/udacity/stockhawk/ui/HistoryActivity.java
new file mode 100644
index 0000000..67f5370
--- /dev/null
+++ b/app/src/main/java/com/udacity/stockhawk/ui/HistoryActivity.java
@@ -0,0 +1,31 @@
+package com.udacity.stockhawk.ui;
+
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+
+import com.udacity.stockhawk.R;
+
+import static com.udacity.stockhawk.ui.HistoryFragment.SYMBOL_URI;
+
+public class HistoryActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_history);
+ /*Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ setSupportActionBar(toolbar);
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);*/
+ if (savedInstanceState == null) {
+ Bundle args = new Bundle();
+ args.putParcelable(SYMBOL_URI, getIntent().getData());
+ HistoryFragment historyFragment = new HistoryFragment();
+ historyFragment.setArguments(args);
+ getSupportFragmentManager().beginTransaction()
+ .add(R.id.hystory_fragment, historyFragment)
+ .commit();
+
+ }
+ }
+
+}
diff --git a/app/src/main/java/com/udacity/stockhawk/ui/HistoryFragment.java b/app/src/main/java/com/udacity/stockhawk/ui/HistoryFragment.java
new file mode 100644
index 0000000..97ddb23
--- /dev/null
+++ b/app/src/main/java/com/udacity/stockhawk/ui/HistoryFragment.java
@@ -0,0 +1,105 @@
+package com.udacity.stockhawk.ui;
+
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.LoaderManager;
+import android.support.v4.content.CursorLoader;
+import android.support.v4.content.Loader;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.github.mikephil.charting.charts.LineChart;
+import com.github.mikephil.charting.data.Entry;
+import com.github.mikephil.charting.data.LineData;
+import com.github.mikephil.charting.data.LineDataSet;
+import com.udacity.stockhawk.R;
+import com.udacity.stockhawk.data.Contract;
+
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+
+public class HistoryFragment extends Fragment implements LoaderManager.LoaderCallbacks {
+ public static final String SYMBOL_URI = "URI";
+ private static final int STOCK_LOADER = 1;
+ private Uri mSymbolUri;
+
+ LineChart mChart;
+
+
+ private static final String[] HISTORY_COLUMNS ={
+ Contract.Quote.COLUMN_SYMBOL,
+ Contract.Quote.COLUMN_HISTORY
+ };
+ static final int COL_SYMBOL_ID = 0;
+ static final int COL_HISTORY_ID = 1;
+
+ public HistoryFragment() {
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ Bundle args = getArguments();
+ mSymbolUri = args.getParcelable(SYMBOL_URI);
+ View rootView = inflater.inflate(R.layout.fragment_history, container, false);
+ mChart = (LineChart) rootView.findViewById(R.id.chart);
+ mChart.setDescription(getString(R.string.chart_description));
+
+ return rootView;
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ getLoaderManager().initLoader(STOCK_LOADER, null, this);
+ super.onActivityCreated(savedInstanceState);
+ }
+
+ @Override
+ public Loader onCreateLoader(int id, Bundle args) {
+ if (mSymbolUri != null) {
+ return new CursorLoader(getActivity(), mSymbolUri, HISTORY_COLUMNS, null, null, null);
+ }
+ return null;
+ }
+
+ @Override
+ public void onLoadFinished(Loader loader, Cursor data) {
+
+ if (data.moveToFirst()) {
+ ArrayList entries = new ArrayList<>();
+ ArrayList xValues = new ArrayList<>();
+ String history = data.getString(COL_HISTORY_ID);
+ String value;
+ StringTokenizer tokenizer = new StringTokenizer(history, "\n");
+ int x = 0;
+ int count = tokenizer.countTokens() - 1;
+ while (tokenizer.hasMoreTokens()){
+ xValues.add(""+(count-x));
+ value = tokenizer.nextToken();
+ value = value.split(",")[1];
+ entries.add(new Entry(Float.parseFloat(value), x));
+ x++;
+ }
+ LineDataSet dataSet = new LineDataSet(entries, Contract.Quote.getStockFromUri(mSymbolUri));
+ dataSet.setColors(new int[]{R.color.white}, getContext());
+ dataSet.setValueTextColor(R.color.white);
+
+ LineData lineData = new LineData(xValues, dataSet);
+
+ mChart.setData(lineData);
+
+
+
+ }
+ }
+
+ @Override
+ public void onLoaderReset(Loader loader) {
+
+ }
+}
diff --git a/app/src/main/java/com/udacity/stockhawk/ui/MainActivity.java b/app/src/main/java/com/udacity/stockhawk/ui/MainActivity.java
index 3a53096..d18efb8 100644
--- a/app/src/main/java/com/udacity/stockhawk/ui/MainActivity.java
+++ b/app/src/main/java/com/udacity/stockhawk/ui/MainActivity.java
@@ -1,11 +1,14 @@
package com.udacity.stockhawk.ui;
import android.content.Context;
+import android.content.Intent;
import android.database.Cursor;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
+import android.net.Uri;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
+import android.support.v4.app.ActivityCompat;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
@@ -47,6 +50,12 @@ public class MainActivity extends AppCompatActivity implements LoaderManager.Loa
@Override
public void onClick(String symbol) {
Timber.d("Symbol clicked: %s", symbol);
+ Uri symbolUri = Contract.Quote.makeUriForStock(symbol);
+ Intent intent =
+ new Intent(this, HistoryActivity.class).setData(symbolUri);
+ ActivityCompat.startActivity(this, intent, null);
+
+
}
@Override
@@ -84,7 +93,7 @@ public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
}
- private boolean networkUp() {
+ public boolean networkUp() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
diff --git a/app/src/main/res/layout/activity_history.xml b/app/src/main/res/layout/activity_history.xml
new file mode 100644
index 0000000..d3223a0
--- /dev/null
+++ b/app/src/main/res/layout/activity_history.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 40f6e87..f8ac3a5 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -7,25 +7,44 @@
android:orientation="vertical"
tools:context="com.udacity.stockhawk.ui.MainActivity">
-
-
+ android:layout_height="match_parent">
+
+
+
+
+
+
+
-
+ app:pressedTranslationZ="12dp"
+ android:contentDescription="@string/add_a_stock"/>
+
-
diff --git a/app/src/main/res/layout/fragment_history.xml b/app/src/main/res/layout/fragment_history.xml
new file mode 100644
index 0000000..123f0e2
--- /dev/null
+++ b/app/src/main/res/layout/fragment_history.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/list_item_quote.xml b/app/src/main/res/layout/list_item_quote.xml
index 91c5d51..f19c1c6 100644
--- a/app/src/main/res/layout/list_item_quote.xml
+++ b/app/src/main/res/layout/list_item_quote.xml
@@ -13,21 +13,21 @@
style="@style/StockSymbolTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:gravity="left|center_vertical"
+ android:gravity="start|center_vertical"
tools:text="GOOG" />
+ android:gravity="end">
+ app:showAsAction="always" />
diff --git a/app/src/main/res/menu/menu_history.xml b/app/src/main/res/menu/menu_history.xml
new file mode 100644
index 0000000..e3989ad
--- /dev/null
+++ b/app/src/main/res/menu/menu_history.xml
@@ -0,0 +1,10 @@
+
diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml
new file mode 100644
index 0000000..63fc816
--- /dev/null
+++ b/app/src/main/res/values-w820dp/dimens.xml
@@ -0,0 +1,6 @@
+
+
+ 64dp
+
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 756a300..b8552d4 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -9,5 +9,6 @@
#2196F3
#D50000
#00C853
+ #FFFFFF
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 910735b..780fbaa 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,39 +1,61 @@
- Stock Hawk
- initialized
+ Stock Hawk
+
+
+ History
+
+
+ Settings
- stocks
+ initialized
- No data
+ stocks
+ No data
+
Display Mode
- displayMode
- @string/pref_display_mode_percentage_key
+ displayMode
+ @string/pref_display_mode_percentage_key
- absolute
- percentage
+ absolute
+ percentage
- YHOO
- AAPL
- MSFT
- FB
+
+ YHOO
+ AAPL
+ MSFT
+ FB
- @string/pref_display_mode_key
+ @string/pref_display_mode_key
+
Add Stock
+
Symbol (e.g. GOOG)
+
Cancel
+
Add
+
Symbol %s is invalid!
+
No network connectivity! Will load stock cursor when the network is available.
+
No stocks added! Hit the floating action button to add one.
+
Symbol %s added. Will refresh when network available.
+
Will refresh when network available.
+
+ Add a stock
+
+
+ Days ago x USD
diff --git a/build.gradle b/build.gradle
index 6ed72f0..9035a56 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.2.2'
+ classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.12.0'
classpath 'com.noveogroup.android:check:1.2.3'
@@ -15,6 +15,7 @@ buildscript {
allprojects {
repositories {
jcenter()
+ maven { url "https://jitpack.io" }
}
}