diff --git a/.gitignore b/.gitignore
index ccf2efe..01afe3d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,12 @@
+<<<<<<< HEAD
+.gradle
+/local.properties
+/.idea/workspace.xml
+/.idea/libraries
+.DS_Store
+/build
+/captures
+=======
# Built application files
*.apk
*.ap_
@@ -25,3 +34,4 @@ proguard/
# Log Files
*.log
+>>>>>>> ac8e0a393d1ea8a8d5f7401afa3b0f8ca0829d02
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..d388799
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+robinhood_hackathon
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..9a8b7e5
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
new file mode 100644
index 0000000..e7bedf3
--- /dev/null
+++ b/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..1bbc21d
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..5689cf8
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.7
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..4ff6821
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Fe_NYC.iml b/Fe_NYC.iml
new file mode 100644
index 0000000..754edab
--- /dev/null
+++ b/Fe_NYC.iml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/.gitignore b/app/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/app/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/app/app.iml b/app/app.iml
new file mode 100644
index 0000000..4b437f6
--- /dev/null
+++ b/app/app.iml
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644
index 0000000..573fb1e
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,29 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 22
+ buildToolsVersion "22.0.1"
+
+ defaultConfig {
+ applicationId "abassawo.c4q.nyc.fe_nyc"
+ minSdkVersion 15
+ targetSdkVersion 22
+ versionCode 1
+ versionName "1.0"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+}
+
+dependencies {
+ compile fileTree(dir: 'libs', include: ['*.jar'])
+ compile 'com.android.support:appcompat-v7:22.2.1'
+ compile 'com.android.support:design:22.2.0'
+ compile 'com.jakewharton:butterknife:7.0.1'
+ compile 'com.android.support:support-v4:22.2.1'
+ compile 'com.google.android.gms:play-services:7.5.0'
+}
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
new file mode 100644
index 0000000..dcb04d2
--- /dev/null
+++ b/app/proguard-rules.pro
@@ -0,0 +1,17 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in /Users/c4q-Abass/Library/Android/sdk/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
diff --git a/app/src/androidTest/java/abassawo/c4q/nyc/fe_nyc/ApplicationTest.java b/app/src/androidTest/java/abassawo/c4q/nyc/fe_nyc/ApplicationTest.java
new file mode 100644
index 0000000..7b0c3e1
--- /dev/null
+++ b/app/src/androidTest/java/abassawo/c4q/nyc/fe_nyc/ApplicationTest.java
@@ -0,0 +1,13 @@
+package abassawo.c4q.nyc.fe_nyc;
+
+import android.app.Application;
+import android.test.ApplicationTestCase;
+
+/**
+ * Testing Fundamentals
+ */
+public class ApplicationTest extends ApplicationTestCase {
+ public ApplicationTest() {
+ super(Application.class);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..d92c3c7
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,47 @@
+
+
+ android:theme="@style/Theme.DesignDemo" >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/abassawo/c4q/nyc/fe_nyc/BudgetCalculator.java b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/BudgetCalculator.java
new file mode 100644
index 0000000..0f9699d
--- /dev/null
+++ b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/BudgetCalculator.java
@@ -0,0 +1,15 @@
+package abassawo.c4q.nyc.fe_nyc;
+
+/**
+ * Created by c4q-Abass on 8/1/15.
+ */
+public class BudgetCalculator {
+ private int savingGoal;
+ private int spendable;
+ private int currentSavings;
+ private int income;
+
+ public BudgetCalculator(double income){
+
+ }
+}
diff --git a/app/src/main/java/abassawo/c4q/nyc/fe_nyc/BudgetViewFragment.java b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/BudgetViewFragment.java
new file mode 100644
index 0000000..afa5a98
--- /dev/null
+++ b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/BudgetViewFragment.java
@@ -0,0 +1,93 @@
+
+package abassawo.c4q.nyc.fe_nyc;
+
+import android.app.Activity;
+import android.net.Uri;
+import android.os.Bundle;
+
+
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Activities that contain this fragment must implement the
+ * {@link BudgetViewFragment.OnFragmentInteractionListener} interface
+ * to handle interaction events.
+ * Use the {@link BudgetViewFragment#newInstance} factory method to
+ * create an instance of this fragment.
+ */
+
+import android.app.Activity;
+import android.net.Uri;
+import android.os.Bundle;
+
+
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+
+
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Activities that contain this fragment must implement the
+ * {@link BudgetViewFragment.OnFragmentInteractionListener} interface
+ * to handle interaction events.
+ * Use the {@link BudgetViewFragment#newInstance} factory method to
+ * create an instance of this fragment.
+ */
+public class BudgetViewFragment extends Fragment {
+ private String mParam1;
+ private String mParam2;
+ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+
+
+ // TODO: Rename and change types of parameters
+
+ final View myInflatedView = inflater.inflate(R.layout.fragment_wallet, container, false);
+
+ return myInflatedView;
+ }
+
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment BudgetViewFragment.
+ */
+ // TODO: Rename and change types and number of parameters
+ public static BudgetViewFragment newInstance(String param1, String param2) {
+ BudgetViewFragment fragment = new BudgetViewFragment();
+// Bundle args = new Bundle();
+// fragment.setArguments(args);
+ return fragment;
+ }
+
+
+ public BudgetViewFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+
+ }
+
+
+
+}
+
+
diff --git a/app/src/main/java/abassawo/c4q/nyc/fe_nyc/CreateAccount.java b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/CreateAccount.java
new file mode 100644
index 0000000..a53b239
--- /dev/null
+++ b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/CreateAccount.java
@@ -0,0 +1,59 @@
+package abassawo.c4q.nyc.fe_nyc;
+
+import android.content.Context;
+import android.content.Intent;
+import android.support.v7.app.ActionBarActivity;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import butterknife.Bind;
+import butterknife.ButterKnife;
+
+
+public class CreateAccount extends ActionBarActivity {
+
+ String clientname, username, userpass, confpass;
+ Context mContext = this;
+ @Bind(R.id.clientName) EditText mClientName;
+ @Bind(R.id.userName) EditText mUserName;
+ @Bind(R.id.password) EditText mPassword;
+ @Bind(R.id.confirmPassword) EditText mConfirmPass;
+ @Bind(R.id.register) Button mRegister;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_create_account);
+ ButterKnife.bind(this);
+
+ mRegister.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ clientname = mClientName.getText().toString();
+ username = mUserName.getText().toString();
+ userpass = mPassword.getText().toString();
+ confpass = mConfirmPass.getText().toString();
+
+ if(!(userpass.equals(confpass))){
+ Toast.makeText(getBaseContext(), getString(R.string.pwnotmatch), Toast.LENGTH_SHORT).show();
+ mClientName.setText("");
+ mUserName.setText("");
+ mPassword.setText("");
+ mConfirmPass.setText("");}
+ else{
+ UserSetUpData DB = new UserSetUpData(mContext);
+ DB.insertInfo(DB, clientname, username, userpass);
+ //Intent myIntent = new Intent(getApplicationContext(), IncomeGoalForm.class);
+ //CreateAccount.this.startActivity(myIntent);
+ Toast.makeText(getBaseContext(), getString(R.string.success), Toast.LENGTH_SHORT).show();
+ finish();
+ }
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/abassawo/c4q/nyc/fe_nyc/ExpenseFragment.java b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/ExpenseFragment.java
new file mode 100644
index 0000000..9841033
--- /dev/null
+++ b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/ExpenseFragment.java
@@ -0,0 +1,78 @@
+
+package abassawo.c4q.nyc.fe_nyc;
+
+import android.app.Activity;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Activities that contain this fragment must implement the
+ * {@link ExpenseFragment.OnFragmentInteractionListener} interface
+ * to handle interaction events.
+ * Use the {@link ExpenseFragment#newInstance} factory method to
+ * create an instance of this fragment.
+ */
+public class ExpenseFragment extends Fragment {
+ // TODO: Rename parameter arguments, choose names that match
+ // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+ private static final String ARG_PARAM1 = "param1";
+ private static final String ARG_PARAM2 = "param2";
+
+
+ // TODO: Rename and change types of parameters
+ private String mParam1;
+ private String mParam2;
+
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment ExpenseFragment.
+ */
+ // TODO: Rename and change types and number of parameters
+ public static ExpenseFragment newInstance(String param1, String param2) {
+ ExpenseFragment fragment = new ExpenseFragment();
+ Bundle args = new Bundle();
+ args.putString(ARG_PARAM1, param1);
+ args.putString(ARG_PARAM2, param2);
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+
+ public ExpenseFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (getArguments() != null) {
+ mParam1 = getArguments().getString(ARG_PARAM1);
+ mParam2 = getArguments().getString(ARG_PARAM2);
+ }
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_expense, container, false);
+ }
+
+
+
+
+
+
+}
diff --git a/app/src/main/java/abassawo/c4q/nyc/fe_nyc/LandingPageActivity.java b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/LandingPageActivity.java
new file mode 100644
index 0000000..ea568f5
--- /dev/null
+++ b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/LandingPageActivity.java
@@ -0,0 +1,22 @@
+package abassawo.c4q.nyc.fe_nyc;
+
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.support.v4.app.FragmentManager;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+/**
+ * Created by c4q-Abass on 8/1/15.
+ */
+public class LandingPageActivity extends Activity {
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_landing_page);
+ }
+}
diff --git a/app/src/main/java/abassawo/c4q/nyc/fe_nyc/LoginFragment.java b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/LoginFragment.java
new file mode 100644
index 0000000..b7c5c96
--- /dev/null
+++ b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/LoginFragment.java
@@ -0,0 +1,166 @@
+package abassawo.c4q.nyc.fe_nyc;
+
+import android.support.v4.app.Fragment;
+
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.annotation.TargetApi;
+
+
+import android.app.LoaderManager.LoaderCallbacks;
+import android.content.ContentResolver;
+import android.content.CursorLoader;
+import android.content.Loader;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.AsyncTask;
+
+import android.os.Bundle;
+
+import android.support.v4.app.FragmentManager;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import android.support.annotation.Nullable;
+
+import android.support.v4.app.Fragment;
+import android.text.TextUtils;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.view.inputmethod.EditorInfo;
+import android.widget.ArrayAdapter;
+import android.widget.AutoCompleteTextView;
+import android.widget.Button;
+import android.widget.EditText;
+
+import com.google.android.gms.common.SignInButton;
+
+import java.util.List;
+
+import butterknife.Bind;
+import butterknife.ButterKnife;
+
+
+/**
+ * A login screen that offers login via email/password and via Google+ sign in.
+ *
+ * ************ IMPORTANT SETUP NOTES: ************
+ * In order for Google+ sign in to work with your app, you must first go to:
+ * https://developers.google.com/+/mobile/android/getting-started#step_1_enable_the_google_api
+ * and follow the steps in "Step 1" to create an OAuth 2.0 client for your package.
+ */
+
+
+public class LoginFragment extends Fragment {
+
+ @Bind(R.id.email_sign_in_button)
+ Button signInBtn;
+ /**
+ * A dummy authentication store containing known user names and passwords.
+ * TODO: remove after connecting to a real authentication system.
+ */
+
+ public LoginFragment(){
+
+ }
+
+ private static final String[] DUMMY_CREDENTIALS = new String[]{
+ "foo@example.com:hello", "bar@example.com:world"
+ };
+ /**
+ * Keep track of the login task to ensure we can cancel it if requested.
+ */
+ private UserLoginTask mAuthTask = null;
+
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.fragment_login, container, false);
+ ButterKnife.bind(this, view);
+ signInBtn.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
+ fragmentManager.beginTransaction()
+ .replace(R.id.main_container, new ExpenseFragment())
+ .addToBackStack(null) //allows user to press back button and return to previous fragment
+ .commit();
+
+ }
+ });
+ return view;
+ }
+
+
+
+ private boolean isEmailValid(String email) {
+ //TODO: Replace this with your own logic
+ return email.contains("@");
+ }
+
+ private boolean isPasswordValid(String password) {
+ //TODO: Replace this with your own logic
+ return password.length() > 4;
+ }
+
+ /**
+ * Shows the progress UI and hides the login form.
+ */
+
+
+
+ private void addEmailsToAutoComplete(List emailAddressCollection) {
+ //Create adapter to tell the AutoCompleteTextView what to show in its dropdown list.
+ // ArrayAdapter adapter =
+// new ArrayAdapter(LoginActivity.this,
+// android.R.layout.simple_dropdown_item_1line, emailAddressCollection);
+
+ // mEmailView.setAdapter(adapter);
+ }
+
+ /**
+ * Represents an asynchronous login/registration task used to authenticate
+ * the user.
+ */
+ public class UserLoginTask extends AsyncTask {
+
+ private final String mEmail;
+ private final String mPassword;
+
+ UserLoginTask(String email, String password) {
+ mEmail = email;
+ mPassword = password;
+ }
+
+ @Override
+ protected Boolean doInBackground(Void... params) {
+ // TODO: attempt authentication against a network service.
+
+ try {
+ // Simulate network access.
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ return false;
+ }
+
+ for (String credential : DUMMY_CREDENTIALS) {
+ String[] pieces = credential.split(":");
+ if (pieces[0].equals(mEmail)) {
+ // Account exists, return true if the password matches.
+ return pieces[1].equals(mPassword);
+ }
+ }
+
+ // TODO: register the new account here.
+ return true;
+ }
+
+ }
+}
diff --git a/app/src/main/java/abassawo/c4q/nyc/fe_nyc/MainActivity.java b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/MainActivity.java
new file mode 100644
index 0000000..a92d860
--- /dev/null
+++ b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/MainActivity.java
@@ -0,0 +1,258 @@
+package abassawo.c4q.nyc.fe_nyc;
+
+import android.support.v7.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.support.design.widget.NavigationView;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.widget.DrawerLayout;
+import android.support.v7.app.ActionBar;
+import android.os.Bundle;
+import android.support.v7.widget.Toolbar;
+import android.view.Menu;
+import android.view.MenuItem;
+
+
+
+
+
+
+import android.app.Activity;
+import android.content.Intent;
+import android.support.design.widget.NavigationView;
+import android.support.v7.app.ActionBarActivity;
+import android.support.v7.app.ActionBar;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.content.Context;
+import android.os.Build;
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.support.v4.widget.DrawerLayout;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.TextView;
+
+
+import butterknife.Bind;
+import butterknife.ButterKnife;
+
+
+
+public class MainActivity extends AppCompatActivity {
+ @Bind(R.id.drawer_layout) DrawerLayout mDrawerLayout;
+ @Bind(R.id.submit) Button mSubmit;
+
+
+
+ private CharSequence mTitle;
+ NavigationView navigationView;
+
+ private FragmentManager fragmentManager;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ ButterKnife.bind(this);
+
+ mSubmit.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent myIntent = new Intent(getApplicationContext(), CreateAccount.class);
+ MainActivity.this.startActivity(myIntent);
+ }
+ });
+
+
+
+// mTitle = getTitle();
+ navigationView = (NavigationView) findViewById(R.id.nav_view);
+ if (navigationView != null) {
+ setupDrawerContent(navigationView);
+ }
+//
+// mToolbar = (Toolbar) findViewById(R.id.toolbar);
+// setSupportActionBar(mToolbar);
+ final ActionBar actionBar = getSupportActionBar();
+
+
+ actionBar.isHideOnContentScrollEnabled();
+
+ actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);
+ actionBar.setTitle(getString(R.string.app_name));
+ actionBar.setLogo(R.drawable.fe_nyc_logo);
+ actionBar.setDisplayHomeAsUpEnabled(true);
+
+
+// FragmentManager fragmentManager = getSupportFragmentManager();
+// fragmentManager.beginTransaction()
+// .add(R.id.main_container, new LoginFragment())
+// .addToBackStack(null) //allows user to press back button and return to previous fragment
+// .commit();
+
+ }
+
+
+
+ public void onNavigationDrawerItemSelected(int position) {
+
+ Fragment fragment = null;
+
+ switch (position) {
+ case 0:
+ fragment = new WalletFragment();
+ break;
+ case 1:
+ fragment = new ResourcesFragment();
+ break;
+ case 2:
+ fragment = new BudgetViewFragment();
+ break;
+
+ }
+ // update the main content by replacing fragments
+ //fragmentManager = getSupportFragmentManager();
+ //fragmentManager.beginTransaction()
+ // .replace(R.id.main_container, fragment)
+ // .addToBackStack(null) //allows user to press back button and return to previous fragment
+ // .commit();
+ }
+
+
+ private void setupDrawerContent(NavigationView navigationView) {
+ fragmentManager = getSupportFragmentManager();
+ navigationView.setNavigationItemSelectedListener(
+ new NavigationView.OnNavigationItemSelectedListener() {
+ @Override
+ public boolean onNavigationItemSelected(MenuItem menuItem) {
+ menuItem.setChecked(true);
+ if (menuItem.getItemId() == R.id.nav_budget){
+ fragmentManager.beginTransaction()
+ .replace(R.id.main_container, new BudgetViewFragment())//allows user to press back button and return to previous fragment
+ .commit();
+ } else if(menuItem.getItemId() == R.id.nav_expense){
+ fragmentManager.beginTransaction()
+ .replace(R.id.main_container, new WalletFragment())
+ //allows user to press back button and return to previous fragment
+
+ .commit();
+ } else if(menuItem.getItemId() == R.id.nav_resurces){
+ fragmentManager.beginTransaction()
+ .replace(R.id.main_container, new ResourcesFragment())//allows user to press back button and return to previous fragment
+ .commit();
+ } else if((menuItem.getItemId() == R.id.nav_settings)){
+ Intent intent = new Intent(getApplicationContext(), SettingsActivity.class);
+ startActivity(intent);
+ }
+ mDrawerLayout.closeDrawers();
+ return true;
+ }
+ });
+ }
+
+
+ public void onSectionAttached(int number) {
+ switch (number) {
+ case 4:
+ mTitle = ("Expenses");
+ break;
+ case 2:
+ mTitle = ("Budget");
+ break;
+ case 3:
+ mTitle = ("Settings");
+ break;
+ case 1:
+ mTitle = ("Resources");
+ break;
+ }
+ }
+
+
+ public void restoreActionBar() {
+ ActionBar actionBar = getSupportActionBar();
+ actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+ actionBar.setDisplayShowTitleEnabled(true);
+ actionBar.setTitle(mTitle);
+ }
+
+
+
+
+
+ public boolean onCreateOptionsMenu(Menu menu) {
+
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.menu_main, menu);
+ return super.onCreateOptionsMenu(menu);
+
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ int id = item.getItemId();
+
+ //noinspection SimplifiableIfStatement
+ if (id == R.id.action_settings) {
+ return true;
+ } else if (id == R.id.nav_expense){
+ fragmentManager.beginTransaction()
+ .add(R.id.main_container, new LoginFragment())
+ .addToBackStack(null) //allows user to press back button and return to previous fragment
+ .commit();
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ /**
+ * A placeholder fragment containing a simple view.
+ */
+ public static class PlaceholderFragment extends Fragment {
+ /**
+ * The fragment argument representing the section number for this
+ * fragment.
+ */
+ private static final String ARG_SECTION_NUMBER = "section_number";
+
+ /**
+ * Returns a new instance of this fragment for the given section
+ * number.
+ */
+ public static PlaceholderFragment newInstance(int sectionNumber) {
+ PlaceholderFragment fragment = new PlaceholderFragment();
+ Bundle args = new Bundle();
+ args.putInt(ARG_SECTION_NUMBER, sectionNumber);
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ public PlaceholderFragment() {
+ }
+
+
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ ((MainActivity) activity).onSectionAttached(
+ getArguments().getInt(ARG_SECTION_NUMBER));
+ }
+ }
+
+}
+
+
+
diff --git a/app/src/main/java/abassawo/c4q/nyc/fe_nyc/ResourcesFragment.java b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/ResourcesFragment.java
new file mode 100644
index 0000000..b9d3861
--- /dev/null
+++ b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/ResourcesFragment.java
@@ -0,0 +1,79 @@
+package abassawo.c4q.nyc.fe_nyc;
+
+
+import android.app.Activity;
+import android.net.Uri;
+import android.os.Bundle;
+
+
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+
+
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Activities that contain this fragment must implement the
+ * {@link ResourcesFragment.OnFragmentInteractionListener} interface
+ * to handle interaction events.
+ * Use the {@link ResourcesFragment#newInstance} factory method to
+ * create an instance of this fragment.
+ */
+public class ResourcesFragment extends Fragment {
+ // TODO: Rename parameter arguments, choose names that match
+ // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+ private static final String ARG_PARAM1 = "param1";
+ private static final String ARG_PARAM2 = "param2";
+
+
+ // TODO: Rename and change types of parameters
+ private String mParam1;
+ private String mParam2;
+
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment ResourcesFragment.
+ */
+ // TODO: Rename and change types and number of parameters
+ public static ResourcesFragment newInstance(String param1, String param2) {
+ ResourcesFragment fragment = new ResourcesFragment();
+ Bundle args = new Bundle();
+ args.putString(ARG_PARAM1, param1);
+ args.putString(ARG_PARAM2, param2);
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+
+ public ResourcesFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (getArguments() != null) {
+ mParam1 = getArguments().getString(ARG_PARAM1);
+ mParam2 = getArguments().getString(ARG_PARAM2);
+ }
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_resources, container, false);
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/abassawo/c4q/nyc/fe_nyc/SettingsActivity.java b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/SettingsActivity.java
new file mode 100644
index 0000000..f981d6a
--- /dev/null
+++ b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/SettingsActivity.java
@@ -0,0 +1,259 @@
+package abassawo.c4q.nyc.fe_nyc;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.res.Configuration;
+import android.media.Ringtone;
+import android.media.RingtoneManager;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceCategory;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceManager;
+import android.preference.RingtonePreference;
+import android.text.TextUtils;
+
+
+import java.util.List;
+
+/**
+ * A {@link PreferenceActivity} that presents a set of application settings. On
+ * handset devices, settings are presented as a single list. On tablets,
+ * settings are split by category, with category headers shown to the left of
+ * the list of settings.
+ *
+ * See
+ * Android Design: Settings for design guidelines and the Settings
+ * API Guide for more information on developing a Settings UI.
+ */
+public class SettingsActivity extends PreferenceActivity {
+ /**
+ * Determines whether to always show the simplified settings UI, where
+ * settings are presented in a single list. When false, settings are shown
+ * as a master/detail two-pane view on tablets. When true, a single pane is
+ * shown on tablets.
+ */
+ private static final boolean ALWAYS_SIMPLE_PREFS = false;
+
+
+ @Override
+ protected void onPostCreate(Bundle savedInstanceState) {
+ super.onPostCreate(savedInstanceState);
+
+ setupSimplePreferencesScreen();
+ }
+
+ /**
+ * Shows the simplified settings UI if the device configuration if the
+ * device configuration dictates that a simplified, single-pane UI should be
+ * shown.
+ */
+ private void setupSimplePreferencesScreen() {
+ if (!isSimplePreferences(this)) {
+ return;
+ }
+
+ // In the simplified UI, fragments are not used at all and we instead
+ // use the older PreferenceActivity APIs.
+
+ // Add 'general' preferences.
+ addPreferencesFromResource(R.xml.pref_general);
+
+ // Add 'notifications' preferences, and a corresponding header.
+ PreferenceCategory fakeHeader = new PreferenceCategory(this);
+ fakeHeader.setTitle(R.string.pref_header_notifications);
+ getPreferenceScreen().addPreference(fakeHeader);
+ addPreferencesFromResource(R.xml.pref_notification);
+
+ // Add 'data and sync' preferences, and a corresponding header.
+ fakeHeader = new PreferenceCategory(this);
+ fakeHeader.setTitle(R.string.pref_header_data_sync);
+ getPreferenceScreen().addPreference(fakeHeader);
+ addPreferencesFromResource(R.xml.pref_data_sync);
+
+ // Bind the summaries of EditText/List/Dialog/Ringtone preferences to
+ // their values. When their values change, their summaries are updated
+ // to reflect the new value, per the Android Design guidelines.
+ bindPreferenceSummaryToValue(findPreference("example_text"));
+ bindPreferenceSummaryToValue(findPreference("example_list"));
+ bindPreferenceSummaryToValue(findPreference("notifications_new_message_ringtone"));
+ bindPreferenceSummaryToValue(findPreference("sync_frequency"));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean onIsMultiPane() {
+ return isXLargeTablet(this) && !isSimplePreferences(this);
+ }
+
+ /**
+ * Helper method to determine if the device has an extra-large screen. For
+ * example, 10" tablets are extra-large.
+ */
+ private static boolean isXLargeTablet(Context context) {
+ return (context.getResources().getConfiguration().screenLayout
+ & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
+ }
+
+ /**
+ * Determines whether the simplified settings UI should be shown. This is
+ * true if this is forced via {@link #ALWAYS_SIMPLE_PREFS}, or the device
+ * doesn't have newer APIs like {@link PreferenceFragment}, or the device
+ * doesn't have an extra-large screen. In these cases, a single-pane
+ * "simplified" settings UI should be shown.
+ */
+ private static boolean isSimplePreferences(Context context) {
+ return ALWAYS_SIMPLE_PREFS
+ || Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB
+ || !isXLargeTablet(context);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+ public void onBuildHeaders(List target) {
+ if (!isSimplePreferences(this)) {
+ loadHeadersFromResource(R.xml.pref_headers, target);
+ }
+ }
+
+ /**
+ * A preference value change listener that updates the preference's summary
+ * to reflect its new value.
+ */
+ private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object value) {
+ String stringValue = value.toString();
+
+ if (preference instanceof ListPreference) {
+ // For list preferences, look up the correct display value in
+ // the preference's 'entries' list.
+ ListPreference listPreference = (ListPreference) preference;
+ int index = listPreference.findIndexOfValue(stringValue);
+
+ // Set the summary to reflect the new value.
+ preference.setSummary(
+ index >= 0
+ ? listPreference.getEntries()[index]
+ : null);
+
+ } else if (preference instanceof RingtonePreference) {
+ // For ringtone preferences, look up the correct display value
+ // using RingtoneManager.
+ if (TextUtils.isEmpty(stringValue)) {
+ // Empty values correspond to 'silent' (no ringtone).
+ preference.setSummary(R.string.pref_ringtone_silent);
+
+ } else {
+ Ringtone ringtone = RingtoneManager.getRingtone(
+ preference.getContext(), Uri.parse(stringValue));
+
+ if (ringtone == null) {
+ // Clear the summary if there was a lookup error.
+ preference.setSummary(null);
+ } else {
+ // Set the summary to reflect the new ringtone display
+ // name.
+ String name = ringtone.getTitle(preference.getContext());
+ preference.setSummary(name);
+ }
+ }
+
+ } else {
+ // For all other preferences, set the summary to the value's
+ // simple string representation.
+ preference.setSummary(stringValue);
+ }
+ return true;
+ }
+ };
+
+ /**
+ * Binds a preference's summary to its value. More specifically, when the
+ * preference's value is changed, its summary (line of text below the
+ * preference title) is updated to reflect the value. The summary is also
+ * immediately updated upon calling this method. The exact display format is
+ * dependent on the type of preference.
+ *
+ * @see #sBindPreferenceSummaryToValueListener
+ */
+ private static void bindPreferenceSummaryToValue(Preference preference) {
+ // Set the listener to watch for value changes.
+ preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);
+
+ // Trigger the listener immediately with the preference's
+ // current value.
+ sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
+ PreferenceManager
+ .getDefaultSharedPreferences(preference.getContext())
+ .getString(preference.getKey(), ""));
+ }
+
+ /**
+ * This fragment shows general preferences only. It is used when the
+ * activity is showing a two-pane settings UI.
+ */
+ @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+ public static class GeneralPreferenceFragment extends PreferenceFragment {
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.pref_general);
+
+ // Bind the summaries of EditText/List/Dialog/Ringtone preferences
+ // to their values. When their values change, their summaries are
+ // updated to reflect the new value, per the Android Design
+ // guidelines.
+ bindPreferenceSummaryToValue(findPreference("example_text"));
+ bindPreferenceSummaryToValue(findPreference("example_list"));
+ }
+ }
+
+ /**
+ * This fragment shows notification preferences only. It is used when the
+ * activity is showing a two-pane settings UI.
+ */
+ @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+ public static class NotificationPreferenceFragment extends PreferenceFragment {
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.pref_notification);
+
+ // Bind the summaries of EditText/List/Dialog/Ringtone preferences
+ // to their values. When their values change, their summaries are
+ // updated to reflect the new value, per the Android Design
+ // guidelines.
+ bindPreferenceSummaryToValue(findPreference("notifications_new_message_ringtone"));
+ }
+ }
+
+ /**
+ * This fragment shows data and sync preferences only. It is used when the
+ * activity is showing a two-pane settings UI.
+ */
+ @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+ public static class DataSyncPreferenceFragment extends PreferenceFragment {
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.pref_data_sync);
+
+ // Bind the summaries of EditText/List/Dialog/Ringtone preferences
+ // to their values. When their values change, their summaries are
+ // updated to reflect the new value, per the Android Design
+ // guidelines.
+ bindPreferenceSummaryToValue(findPreference("sync_frequency"));
+ }
+ }
+}
diff --git a/app/src/main/java/abassawo/c4q/nyc/fe_nyc/TableData.java b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/TableData.java
new file mode 100644
index 0000000..d2e7e0b
--- /dev/null
+++ b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/TableData.java
@@ -0,0 +1,21 @@
+package abassawo.c4q.nyc.fe_nyc;
+
+import android.provider.BaseColumns;
+
+/**
+ * Created by c4q-vanice on 8/1/15.
+ */
+public class TableData {
+
+ public TableData(){ }
+
+ public static abstract class TableInfo implements BaseColumns {
+
+ public static final String userName = "Username";
+ public static final String clientName = "ClientName";
+ public static final String userPassword = "UserPassword";
+ public static final String databaseName = "UserInfo";
+ public static final String tableUserInfo = "Registration";
+
+ }
+}
diff --git a/app/src/main/java/abassawo/c4q/nyc/fe_nyc/UserSetUpData.java b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/UserSetUpData.java
new file mode 100644
index 0000000..ad11a91
--- /dev/null
+++ b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/UserSetUpData.java
@@ -0,0 +1,55 @@
+package abassawo.c4q.nyc.fe_nyc;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+import android.util.Log;
+
+/**
+ * Created by c4q-vanice on 8/1/15.
+ */
+public class UserSetUpData extends SQLiteOpenHelper {
+
+ public final String TAG = "Database Operations";
+ public static final int databaseVersion = 1;
+ public String query = "Create Table" + TableData.TableInfo.tableUserInfo +
+ "(" + TableData.TableInfo.userName +
+ " Text," + TableData.TableInfo.userPassword + " Text);";
+
+ // For this practice I only need the context. This creates the database.
+ public UserSetUpData(Context context) {
+ super(context, TableData.TableInfo.databaseName, null, databaseVersion);
+ Log.d(TAG, "Created Database");
+ }
+
+ // This creates the table.
+ @Override
+ public void onCreate(SQLiteDatabase sqLiteDatabase) {
+ sqLiteDatabase.execSQL(query);
+ Log.d(TAG, "Created Table");
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
+
+ }
+ // This creates an object of SQLite.
+ public void insertInfo(UserSetUpData dataOps, String clientname, String name, String password){
+ SQLiteDatabase SQ = dataOps.getWritableDatabase();
+ ContentValues CV = new ContentValues();
+ CV.put(TableData.TableInfo.clientName, clientname);
+ CV.put(TableData.TableInfo.userName, name);
+ CV.put(TableData.TableInfo.userPassword, password);
+ long K = SQ.insert(TableData.TableInfo.tableUserInfo, null, CV);
+ Log.d(TAG, "One raw inserted");
+ }
+
+ public Cursor getInfo(UserSetUpData dop){
+ SQLiteDatabase SQ = dop.getReadableDatabase();
+ String [] columns = {TableData.TableInfo.userName, TableData.TableInfo.userPassword};
+ Cursor CR = SQ.query(TableData.TableInfo.tableUserInfo, columns, null, null, null, null, null);
+ return CR;
+ }
+}
diff --git a/app/src/main/java/abassawo/c4q/nyc/fe_nyc/WalletFragment.java b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/WalletFragment.java
new file mode 100644
index 0000000..0a6cf84
--- /dev/null
+++ b/app/src/main/java/abassawo/c4q/nyc/fe_nyc/WalletFragment.java
@@ -0,0 +1,106 @@
+package abassawo.c4q.nyc.fe_nyc;
+
+import android.os.Bundle;
+
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+
+public class WalletFragment extends Fragment {
+ String strCash;
+ boolean addCash;
+ double cashInWallet, transactionCash, savings, monthlyWallet = 300;
+ Button add, minus, calculate;
+ ImageView tree;
+ TextView cashDisplay, warning;
+ EditText enterAmount;
+
+ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+
+ final View myInflatedView = inflater.inflate(R.layout.fragment_wallet, container, false);
+
+ add = (Button) myInflatedView.findViewById(R.id.add_button);
+ minus = (Button) myInflatedView.findViewById(R.id.minus_button);
+ calculate = (Button) myInflatedView.findViewById(R.id.calculate);
+ tree = (ImageView) myInflatedView.findViewById(R.id.tree);
+ cashDisplay = (TextView) myInflatedView.findViewById(R.id.wallet_money);
+ warning = (TextView) myInflatedView.findViewById(R.id.warning);
+ enterAmount = (EditText) myInflatedView.findViewById(R.id.enter_amount);
+
+ //TODO get cash amount from shared preferences
+
+ cashDisplay.setText(String.valueOf(cashInWallet));
+
+ minus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ enterAmount.setVisibility(View.VISIBLE);
+ calculate.setVisibility(View.VISIBLE);
+ addCash = false;
+ }
+ });
+
+ add.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ enterAmount.setVisibility(View.VISIBLE);
+ calculate.setVisibility(View.VISIBLE);
+ addCash = true;
+ }
+ });
+
+ calculate.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ transactionCash = Double.parseDouble(enterAmount.getText().toString());
+
+ if (addCash) {
+ cashInWallet = cashInWallet + transactionCash;
+ } else {
+ cashInWallet = cashInWallet - transactionCash;
+ if (cashInWallet < 0) {
+ cashInWallet = 0.0;
+ }
+ }
+ cashDisplay.setText(String.valueOf(cashInWallet));
+ enterAmount.setText("");
+ enterAmount.setVisibility(View.GONE);
+ calculate.setVisibility(View.GONE);
+
+ double cashPercentage = (cashInWallet / monthlyWallet) * 100;
+
+ if (cashPercentage > 80) {
+ tree.setBackgroundResource(R.drawable.tree_full);
+ warning.setVisibility(View.GONE);
+ } else if (cashPercentage > 60) {
+ tree.setBackgroundResource(R.drawable.tree_60);
+ warning.setVisibility(View.GONE);
+ } else if (cashPercentage > 40) {
+ tree.setBackgroundResource(R.drawable.tree_40);
+ warning.setVisibility(View.GONE);
+ } else if (cashPercentage > 20) {
+ tree.setBackgroundResource(R.drawable.tree_20);
+ warning.setVisibility(View.GONE);
+ } else {
+ tree.setBackgroundResource(R.drawable.tree_empty);
+ warning.setVisibility(View.VISIBLE);
+
+ }
+ }
+ });
+
+ return myInflatedView;
+ }
+
+
+}
+
+
+
diff --git a/app/src/main/res/drawable/button.xml b/app/src/main/res/drawable/button.xml
new file mode 100644
index 0000000..88ba846
--- /dev/null
+++ b/app/src/main/res/drawable/button.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_normal.jpg b/app/src/main/res/drawable/button_normal.jpg
new file mode 100644
index 0000000..364ca23
Binary files /dev/null and b/app/src/main/res/drawable/button_normal.jpg differ
diff --git a/app/src/main/res/drawable/button_pressed.jpg b/app/src/main/res/drawable/button_pressed.jpg
new file mode 100644
index 0000000..c5e4cf5
Binary files /dev/null and b/app/src/main/res/drawable/button_pressed.jpg differ
diff --git a/app/src/main/res/drawable/custom_button.xml b/app/src/main/res/drawable/custom_button.xml
new file mode 100644
index 0000000..b5d20ca
--- /dev/null
+++ b/app/src/main/res/drawable/custom_button.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/fe_nyc_logo.png b/app/src/main/res/drawable/fe_nyc_logo.png
new file mode 100644
index 0000000..13bab65
Binary files /dev/null and b/app/src/main/res/drawable/fe_nyc_logo.png differ
diff --git a/app/src/main/res/drawable/fenyclogo.png b/app/src/main/res/drawable/fenyclogo.png
new file mode 100644
index 0000000..13bab65
Binary files /dev/null and b/app/src/main/res/drawable/fenyclogo.png differ
diff --git a/app/src/main/res/drawable/ic_menu.png b/app/src/main/res/drawable/ic_menu.png
new file mode 100644
index 0000000..c62db8c
Binary files /dev/null and b/app/src/main/res/drawable/ic_menu.png differ
diff --git a/app/src/main/res/drawable/moneytrees.jpg b/app/src/main/res/drawable/moneytrees.jpg
new file mode 100644
index 0000000..b7a7159
Binary files /dev/null and b/app/src/main/res/drawable/moneytrees.jpg differ
diff --git a/app/src/main/res/drawable/tree_20.jpg b/app/src/main/res/drawable/tree_20.jpg
new file mode 100644
index 0000000..06fa7b9
Binary files /dev/null and b/app/src/main/res/drawable/tree_20.jpg differ
diff --git a/app/src/main/res/drawable/tree_40.jpg b/app/src/main/res/drawable/tree_40.jpg
new file mode 100644
index 0000000..bf78cf0
Binary files /dev/null and b/app/src/main/res/drawable/tree_40.jpg differ
diff --git a/app/src/main/res/drawable/tree_60.jpg b/app/src/main/res/drawable/tree_60.jpg
new file mode 100644
index 0000000..86e8a5a
Binary files /dev/null and b/app/src/main/res/drawable/tree_60.jpg differ
diff --git a/app/src/main/res/drawable/tree_80.jpg b/app/src/main/res/drawable/tree_80.jpg
new file mode 100644
index 0000000..c67f576
Binary files /dev/null and b/app/src/main/res/drawable/tree_80.jpg differ
diff --git a/app/src/main/res/drawable/tree_empty.jpg b/app/src/main/res/drawable/tree_empty.jpg
new file mode 100644
index 0000000..cc3ba76
Binary files /dev/null and b/app/src/main/res/drawable/tree_empty.jpg differ
diff --git a/app/src/main/res/drawable/tree_full.jpg b/app/src/main/res/drawable/tree_full.jpg
new file mode 100644
index 0000000..f4389c2
Binary files /dev/null and b/app/src/main/res/drawable/tree_full.jpg differ
diff --git a/app/src/main/res/layout/activity_create_account.xml b/app/src/main/res/layout/activity_create_account.xml
new file mode 100644
index 0000000..f2e97e0
--- /dev/null
+++ b/app/src/main/res/layout/activity_create_account.xml
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_landing_page.xml b/app/src/main/res/layout/activity_landing_page.xml
new file mode 100644
index 0000000..dccd9fd
--- /dev/null
+++ b/app/src/main/res/layout/activity_landing_page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..809b3c2
--- /dev/null
+++ b/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_budget_view.xml b/app/src/main/res/layout/fragment_budget_view.xml
new file mode 100644
index 0000000..27c976c
--- /dev/null
+++ b/app/src/main/res/layout/fragment_budget_view.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ android:text="BUDGET FRAGMENT" />
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_expense.xml b/app/src/main/res/layout/fragment_expense.xml
new file mode 100644
index 0000000..456ed7b
--- /dev/null
+++ b/app/src/main/res/layout/fragment_expense.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ android:text="EXPENSE FRAGMENT" />
+
+
+
diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml
new file mode 100644
index 0000000..7948e73
--- /dev/null
+++ b/app/src/main/res/layout/fragment_login.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_resources.xml b/app/src/main/res/layout/fragment_resources.xml
new file mode 100644
index 0000000..e9ef75b
--- /dev/null
+++ b/app/src/main/res/layout/fragment_resources.xml
@@ -0,0 +1,13 @@
+
+
+
+
+=======
+ android:text="Resource Fragment" />
+
+
+
diff --git a/app/src/main/res/layout/fragment_wallet.xml b/app/src/main/res/layout/fragment_wallet.xml
new file mode 100644
index 0000000..97dcf22
--- /dev/null
+++ b/app/src/main/res/layout/fragment_wallet.xml
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/nav_header.xml b/app/src/main/res/layout/nav_header.xml
new file mode 100644
index 0000000..e538a25
--- /dev/null
+++ b/app/src/main/res/layout/nav_header.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/toolbarlayout.xml b/app/src/main/res/layout/toolbarlayout.xml
new file mode 100644
index 0000000..da2caa6
--- /dev/null
+++ b/app/src/main/res/layout/toolbarlayout.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/drawer_view.xml b/app/src/main/res/menu/drawer_view.xml
new file mode 100644
index 0000000..bde6d2c
--- /dev/null
+++ b/app/src/main/res/menu/drawer_view.xml
@@ -0,0 +1,41 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu_create_account.xml b/app/src/main/res/menu/menu_create_account.xml
new file mode 100644
index 0000000..bd56890
--- /dev/null
+++ b/app/src/main/res/menu/menu_create_account.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
new file mode 100644
index 0000000..b1cb908
--- /dev/null
+++ b/app/src/main/res/menu/menu_main.xml
@@ -0,0 +1,6 @@
+
+
+
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..cde69bc
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..c133a0c
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..bfa42f0
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..324e72c
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
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/dimens.xml b/app/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..47c8224
--- /dev/null
+++ b/app/src/main/res/values/dimens.xml
@@ -0,0 +1,5 @@
+
+
+ 16dp
+ 16dp
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..2def3ca
--- /dev/null
+++ b/app/src/main/res/values/strings.xml
@@ -0,0 +1,49 @@
+
+
+ Settings
+ Please Select Language
+ Select Language
+ Submit
+
+
+ - English
+ - Español
+ - 中文
+
+ CreateAccount
+
+ Username
+ Name
+ Success!
+ Password does not match.
+ Enter Password
+ Confirm Password
+ Fe NYC
+
+ Hello world!
+ Sally
+
+
+ Hello blank fragment
+
+ Sign in
+
+
+ Email
+ Password (optional)
+ Sign in or register
+ Sign in
+ Switch Google+ account
+ Disconnect from Google+
+ This email address is invalid
+ This password is too short
+ This password is incorrect
+ This field is required
+
+
+ Your spending cash is low, click on resources tab to learn money saving opportunities
+ Monthly Wallet
+ $175
+ Subtract from Wallet
+ Add to Wallet
+
diff --git a/app/src/main/res/values/strings_activity_settings.xml b/app/src/main/res/values/strings_activity_settings.xml
new file mode 100644
index 0000000..cb3f8ea
--- /dev/null
+++ b/app/src/main/res/values/strings_activity_settings.xml
@@ -0,0 +1,61 @@
+
+ Settings
+
+
+
+
+ General
+
+ Enable social recommendations
+ Recommendations for people to contact
+ based on your message history
+
+
+ Display name
+ Sally
+
+ Add friends to messages
+
+ - Always
+ - When possible
+ - Never
+
+
+ - 1
+ - 0
+ - -1
+
+
+
+ Data & sync
+
+ Sync frequency
+
+ - 15 minutes
+ - 30 minutes
+ - 1 hour
+ - 3 hours
+ - 6 hours
+ - Never
+
+
+ - 15
+ - 30
+ - 60
+ - 180
+ - 360
+ - -1
+
+
+ System sync settings
+
+
+ Notifications
+
+ New message notifications
+
+ Ringtone
+ Silent
+
+ Vibrate
+
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..a74913f
--- /dev/null
+++ b/app/src/main/res/values/styles.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/pref_data_sync.xml b/app/src/main/res/xml/pref_data_sync.xml
new file mode 100644
index 0000000..ffda831
--- /dev/null
+++ b/app/src/main/res/xml/pref_data_sync.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml
new file mode 100644
index 0000000..eeee65a
--- /dev/null
+++ b/app/src/main/res/xml/pref_general.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/xml/pref_headers.xml b/app/src/main/res/xml/pref_headers.xml
new file mode 100644
index 0000000..cfe4de0
--- /dev/null
+++ b/app/src/main/res/xml/pref_headers.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/xml/pref_notification.xml b/app/src/main/res/xml/pref_notification.xml
new file mode 100644
index 0000000..b4b8cae
--- /dev/null
+++ b/app/src/main/res/xml/pref_notification.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..9405f3f
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,19 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+ repositories {
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:1.2.3'
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ jcenter()
+ }
+}
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..1d3591c
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,18 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..8c0fb64
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..0c71e76
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Apr 10 15:27:10 PDT 2013
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
diff --git a/gradlew b/gradlew
new file mode 100755
index 0000000..91a7e26
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..8a0b282
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/robinhood_hackathon.iml b/robinhood_hackathon.iml
new file mode 100644
index 0000000..27857e4
--- /dev/null
+++ b/robinhood_hackathon.iml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..e7b4def
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1 @@
+include ':app'