diff --git a/src/androidTest/java/com/pulipakaa24/budgeteer/ExampleInstrumentedTest.java b/src/androidTest/java/com/pulipakaa24/budgeteer/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..498e535
--- /dev/null
+++ b/src/androidTest/java/com/pulipakaa24/budgeteer/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.pulipakaa24.budgeteer;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.pulipakaa24.budgeteer", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..184ba58
--- /dev/null
+++ b/src/main/AndroidManifest.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/pulipakaa24/budgeteer/BudgetActivity.java b/src/main/java/com/pulipakaa24/budgeteer/BudgetActivity.java
new file mode 100644
index 0000000..7f1a34d
--- /dev/null
+++ b/src/main/java/com/pulipakaa24/budgeteer/BudgetActivity.java
@@ -0,0 +1,130 @@
+package com.pulipakaa24.budgeteer;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+
+import java.util.List;
+
+import static com.pulipakaa24.budgeteer.MainActivity.database;
+import static com.pulipakaa24.budgeteer.MainActivity.shared_prefs;
+import static com.pulipakaa24.budgeteer.TransactionActivity.decimalFormat;
+
+public class BudgetActivity extends AppCompatActivity {
+ public static BudgetAdapter adapter;
+ public static String category;
+ Context context;
+ private List transactions;
+ private TextView categoryTotal;
+ private TextView budgetAmount;
+ private float total;
+
+
+ @SuppressLint("SetTextI18n")
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_budget);
+
+ TextView categoryName = findViewById(R.id.category_name);
+ categoryTotal = findViewById(R.id.category_amount);
+ RecyclerView recyclerView = findViewById(R.id.category_recyclerView);
+ budgetAmount = findViewById(R.id.budget_amount);
+
+ context = this;
+
+ Intent intent = getIntent();
+ category = intent.getStringExtra("category");
+ categoryName.setText(category);
+
+ transactions = database.transactionDao().getAll(category);
+ total = 0;
+
+ for (int i = 0; i < transactions.size(); i++) {
+ total += transactions.get(i).amount;
+ }
+
+ categoryTotal.setText("$" + decimalFormat.format(total));
+ budgetButton();
+
+ adapter = new BudgetAdapter();
+ RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
+ recyclerView.setLayoutManager(layoutManager);
+ recyclerView.setAdapter(adapter);
+
+ FloatingActionButton addTransac = findViewById(R.id.add_transac_button);
+ addTransac.setOnClickListener(v -> {
+ int id = (int) database.transactionDao().create(intent.getStringExtra("category"));
+ adapter.reload();
+
+ Context context = v.getContext();
+ Intent intent1 = new Intent(context, TransactionActivity.class);
+ intent1.putExtra("id", id);
+ context.startActivity(intent1);
+ });
+ }
+
+ @SuppressLint("SetTextI18n")
+ private void budgetButton () {
+ SharedPreferences sharedPreferences = getSharedPreferences(shared_prefs, MODE_PRIVATE);
+ float f = sharedPreferences.getFloat(category, 0.00f);
+ if (f != 0) {
+ budgetAmount.setText("Budget $" + decimalFormat.format(f));
+ if (total > f) {
+ categoryTotal.setTextColor(Color.RED);
+ }
+
+ else {
+ categoryTotal.setTextColor(Color.GREEN);
+ }
+ }
+
+ else {
+ budgetAmount.setText("Add Budget");
+ categoryTotal.setTextColor(Color.GREEN);
+ }
+
+ budgetAmount.setOnClickListener(v -> {
+ Context context = v.getContext();
+ Intent intent1 = new Intent(context, BudgetcreateActivity.class);
+ intent1.putExtra("category", category);
+ intent1.putExtra("amount", f);
+ context.startActivity(intent1);
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ adapter.reload();
+
+ transactions = database.transactionDao().getAll(category);
+ total = 0;
+
+ for (int i = 0; i < transactions.size(); i++) {
+ total += transactions.get(i).amount;
+ }
+
+ final String total1 = "$" + decimalFormat.format(total);
+
+ categoryTotal.setText(total1);
+
+ budgetButton();
+ }
+
+ public void back(View view) {
+ finish();
+ }
+}
diff --git a/src/main/java/com/pulipakaa24/budgeteer/BudgetAdapter.java b/src/main/java/com/pulipakaa24/budgeteer/BudgetAdapter.java
new file mode 100644
index 0000000..9b90a96
--- /dev/null
+++ b/src/main/java/com/pulipakaa24/budgeteer/BudgetAdapter.java
@@ -0,0 +1,79 @@
+package com.pulipakaa24.budgeteer;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static com.pulipakaa24.budgeteer.BudgetActivity.category;
+import static com.pulipakaa24.budgeteer.MainActivity.database;
+import static com.pulipakaa24.budgeteer.TransactionActivity.decimalFormat;
+
+public class BudgetAdapter extends RecyclerView.Adapter {
+
+ public static class TransactionViewHolder extends RecyclerView.ViewHolder {
+ public RelativeLayout containerView;
+ public TextView transacNameView;
+ public TextView transacAmountView;
+
+ public TransactionViewHolder(@NonNull View view) {
+ super(view);
+ this.containerView = view.findViewById(R.id.transaction_row);
+ this.transacAmountView = view.findViewById(R.id.transacAmountView);
+ this.transacNameView = view.findViewById(R.id.transacNameView);
+
+ this.containerView.setOnClickListener(v -> {
+ Context context = v.getContext();
+ Transaction transaction = (Transaction) containerView.getTag();
+ Intent intent = new Intent(v.getContext(), TransactionActivity.class);
+ intent.putExtra("id", transaction.id);
+ intent.putExtra("name", transaction.transacName);
+ intent.putExtra("amount", transaction.amount);
+
+ context.startActivity(intent);
+ });
+ }
+ }
+
+ public static List transactions = new ArrayList<>();
+
+ @NonNull
+ @Override
+ public TransactionViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.transaction_row, parent, false);
+
+ return new TransactionViewHolder(view);
+ }
+
+ @SuppressLint("SetTextI18n")
+ @Override
+ public void onBindViewHolder(@NonNull BudgetAdapter.TransactionViewHolder holder, int position) {
+ Transaction current = transactions.get(position);
+ holder.containerView.setTag(current);
+ holder.transacNameView.setText(current.transacName);
+ holder.transacAmountView.setText("$" + decimalFormat.format(current.amount));
+ }
+
+ @Override
+ public int getItemCount() {
+ return transactions.size();
+ }
+
+ public void reload() {
+ notifyDataSetChanged();
+ transactions = database.transactionDao().getAll(category);
+ notifyDataSetChanged();
+ }
+
+}
diff --git a/src/main/java/com/pulipakaa24/budgeteer/BudgetcreateActivity.java b/src/main/java/com/pulipakaa24/budgeteer/BudgetcreateActivity.java
new file mode 100644
index 0000000..0b4c3b4
--- /dev/null
+++ b/src/main/java/com/pulipakaa24/budgeteer/BudgetcreateActivity.java
@@ -0,0 +1,54 @@
+package com.pulipakaa24.budgeteer;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.EditText;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import static com.pulipakaa24.budgeteer.MainActivity.shared_prefs;
+import static com.pulipakaa24.budgeteer.TransactionActivity.decimalFormat;
+
+public class BudgetcreateActivity extends AppCompatActivity {
+ private EditText budgetEdit;
+ private View v;
+ private String category;
+ @SuppressLint("SetTextI18n")
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_budgetcreate);
+ budgetEdit = findViewById(R.id.budgetEdit);
+
+ Intent intent = getIntent();
+ category = intent.getStringExtra("category");
+ float f = intent.getFloatExtra("amount", 0.00f);
+ if (f != 0) {
+ budgetEdit.setText(decimalFormat.format(f));
+ }
+ }
+
+ public void back(View view) {
+ v = view;
+ SharedPreferences sharedPreferences = getSharedPreferences(shared_prefs, MODE_PRIVATE);
+ SharedPreferences.Editor editor = sharedPreferences.edit();
+ if (!budgetEdit.getText().toString().equals("")) {
+ editor.putFloat(category, Float.parseFloat(budgetEdit.getText().toString().replaceAll("\\$", "")));
+ }
+ else {
+ editor.putFloat(category, 0.00f);
+ }
+ editor.apply();
+ finish();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ back(v);
+ }
+}
diff --git a/src/main/java/com/pulipakaa24/budgeteer/MainActivity.java b/src/main/java/com/pulipakaa24/budgeteer/MainActivity.java
new file mode 100644
index 0000000..a74f4c8
--- /dev/null
+++ b/src/main/java/com/pulipakaa24/budgeteer/MainActivity.java
@@ -0,0 +1,192 @@
+package com.pulipakaa24.budgeteer;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.room.Room;
+
+import java.util.List;
+
+import static com.pulipakaa24.budgeteer.TransactionActivity.decimalFormat;
+
+public class MainActivity extends AppCompatActivity {
+ public static TransactionDatabase database;
+ public static final String shared_prefs = "SHARED_PREFS";
+ public static final String total_budget = "TOTAL_BUDGET";
+ public static final String fbudget = "Food and Drink";
+ public static final String gbudget = "Grocery";
+ public static final String ebudget = "Entertainment";
+ public static final String tbudget = "Travel";
+ public static final String hebudget = "Health";
+ public static final String cbudget = "Clothing";
+ public static final String ubudget = "Utilities";
+ public static final String hobudget = "Home";
+ public static final String obudget = "Other";
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+
+
+ database = Room
+ .databaseBuilder(getApplicationContext(), TransactionDatabase.class, "transactions")
+ .allowMainThreadQueries()
+ .build();
+
+ init();
+ budgetButton();
+ }
+
+ @SuppressLint("SetTextI18n")
+ private void budgetButton() {
+ SharedPreferences sharedPreferences = getSharedPreferences(shared_prefs, MODE_PRIVATE);
+ TextView totalBudget = findViewById(R.id.budgetText);
+
+ if (sharedPreferences.getFloat(total_budget, 0.00f) == 0.0) {
+ totalBudget.setText("Add Total Budget");
+ }
+
+ else {
+ totalBudget.setText("Budget $" + decimalFormat.format(
+ sharedPreferences.getFloat(total_budget, 0.00f)));
+ }
+
+ totalBudget.setOnClickListener(v -> {
+ Context context = v.getContext();
+ Intent intent = new Intent(context, BudgetcreateActivity.class);
+ intent.putExtra("category", total_budget);
+ intent.putExtra("amount", sharedPreferences.getFloat(total_budget, 0.00f));
+ context.startActivity(intent);
+ });
+ }
+
+ private void init () {
+ List transactions = database.transactionDao().getEverything();
+ TextView totalView = findViewById(R.id.totalAmountText);
+ SharedPreferences sharedPreferences = getSharedPreferences(shared_prefs, MODE_PRIVATE);
+ float f = sharedPreferences.getFloat(total_budget, 0.00f);
+ checkBudget(totalView, setTotalString(transactions, totalView), f);
+ TextView food = findViewById(R.id.foodAmountView);
+ TextView entert = findViewById(R.id.entertAmountView);
+ TextView trav = findViewById(R.id.TravelAmountView);
+ TextView health = findViewById(R.id.HealthAmountView);
+ TextView cloth = findViewById(R.id.clothingAmountView);
+ TextView util = findViewById(R.id.utilAmountView);
+ TextView home = findViewById(R.id.homeAmountView);
+ TextView other = findViewById(R.id.otherAmountView);
+ TextView groc = findViewById(R.id.GroceriesAmountView);
+
+ float foodDrink = sharedPreferences.getFloat(fbudget, 0.00f);
+ float entertBud = sharedPreferences.getFloat(ebudget, 0.00f);
+ float travelBud = sharedPreferences.getFloat(tbudget, 0.00f);
+ float healthBud = sharedPreferences.getFloat(hebudget, 0.00f);
+ float clothBud = sharedPreferences.getFloat(cbudget, 0.00f);
+ float utilBud = sharedPreferences.getFloat(ubudget, 0.00f);
+ float homeBud = sharedPreferences.getFloat(hobudget, 0.00f);
+ float otherBud = sharedPreferences.getFloat(obudget, 0.00f);
+ float grocBud = sharedPreferences.getFloat(gbudget, 0.00f);
+
+ List foodDrinkTransac = database.transactionDao().getAll("Food and Drink");
+ checkBudget(food, setTotalString(foodDrinkTransac, food), foodDrink);
+ List entertTransac = database.transactionDao().getAll("Entertainment");
+ checkBudget(entert, setTotalString(entertTransac, entert), entertBud);
+ List travelTransac = database.transactionDao().getAll("Travel");
+ checkBudget(trav, setTotalString(travelTransac, trav), travelBud);
+ List healthTransac = database.transactionDao().getAll("Health");
+ checkBudget(health, setTotalString(healthTransac, health), healthBud);
+ List clothingTransac = database.transactionDao().getAll("Clothing");
+ checkBudget(cloth, setTotalString(clothingTransac, cloth), clothBud);
+ List utilityTransac = database.transactionDao().getAll("Utilities");
+ checkBudget(util, setTotalString(utilityTransac, util), utilBud);
+ List homeTransac = database.transactionDao().getAll("Home");
+ checkBudget(home, setTotalString(homeTransac, home), homeBud);
+ List otherTransac = database.transactionDao().getAll("Other");
+ checkBudget(other, setTotalString(otherTransac, other), otherBud);
+ List groceryTransac = database.transactionDao().getAll("Grocery");
+ checkBudget(groc, setTotalString(groceryTransac, groc), grocBud);
+ }
+
+ public static void checkBudget (TextView t, float f, float y) {
+ if (f > y & y != 0) {
+ t.setTextColor(Color.RED);
+ }
+
+ else {
+ t.setTextColor(Color.GREEN);
+ }
+ }
+
+ @SuppressLint("SetTextI18n")
+ private float setTotalString (List transactions, TextView textView) {
+ float total = 0;
+ for (int i = 0; i < transactions.size(); i++) {
+ total += transactions.get(i).amount;
+ }
+ textView.setText("$" + decimalFormat.format(total));
+ return total;
+ }
+
+ @SuppressLint("SetTextI18n")
+ @Override
+ protected void onResume() {
+ super.onResume();
+ init();
+ budgetButton();
+ }
+
+ private void open(Context context, String category) {
+ Intent intent = new Intent(context, BudgetActivity.class);
+ intent.putExtra("category", category);
+ context.startActivity(intent);
+ }
+
+ public void openFoodDrink(View view) {
+ open(view.getContext(), fbudget);
+ }
+
+ public void openEntertainment(View view) {
+ open(view.getContext(), ebudget);
+ }
+
+ public void openGrocery(View view) {
+ open(view.getContext(), gbudget);
+ }
+
+ public void openTravel(View view) {
+ open(view.getContext(), tbudget);
+ }
+
+ public void openHealth(View view) {
+ open(view.getContext(), hebudget);
+ }
+
+ public void openClothing(View view) {
+ open(view.getContext(), cbudget);
+ }
+
+ public void openUtilities(View view) {
+ open(view.getContext(), ubudget);
+ }
+
+ public void openHome(View view) {
+ open(view.getContext(), hobudget);
+ }
+
+ public void openOther(View view) {
+ open(view.getContext(), obudget);
+ }
+
+ public void openReset(View view) {
+ Context context = view.getContext();
+ context.startActivity(new Intent(context, ResetConfirmActivity.class));
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/pulipakaa24/budgeteer/ResetConfirmActivity.java b/src/main/java/com/pulipakaa24/budgeteer/ResetConfirmActivity.java
new file mode 100644
index 0000000..69d7abd
--- /dev/null
+++ b/src/main/java/com/pulipakaa24/budgeteer/ResetConfirmActivity.java
@@ -0,0 +1,30 @@
+package com.pulipakaa24.budgeteer;
+
+import android.graphics.Color;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import static com.pulipakaa24.budgeteer.MainActivity.database;
+
+public class ResetConfirmActivity extends AppCompatActivity {
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_resetconfirm);
+ TextView sure = findViewById(R.id.sure);
+ sure.setTextColor(Color.RED);
+ }
+
+ public void yes(View view) {
+ database.transactionDao().deleteAll();
+ finish();
+ }
+
+ public void no(View view) {
+ finish();
+ }
+}
diff --git a/src/main/java/com/pulipakaa24/budgeteer/Transaction.java b/src/main/java/com/pulipakaa24/budgeteer/Transaction.java
new file mode 100644
index 0000000..a67111b
--- /dev/null
+++ b/src/main/java/com/pulipakaa24/budgeteer/Transaction.java
@@ -0,0 +1,20 @@
+package com.pulipakaa24.budgeteer;
+
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+@Entity(tableName = "transactions")
+public class Transaction {
+ @PrimaryKey
+ public int id;
+
+ @ColumnInfo(name = "category")
+ public String category;
+
+ @ColumnInfo(name = "transacName")
+ public String transacName;
+
+ @ColumnInfo(name = "amount")
+ public float amount;
+}
diff --git a/src/main/java/com/pulipakaa24/budgeteer/TransactionActivity.java b/src/main/java/com/pulipakaa24/budgeteer/TransactionActivity.java
new file mode 100644
index 0000000..e3477ad
--- /dev/null
+++ b/src/main/java/com/pulipakaa24/budgeteer/TransactionActivity.java
@@ -0,0 +1,67 @@
+package com.pulipakaa24.budgeteer;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.EditText;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import java.text.DecimalFormat;
+
+import static com.pulipakaa24.budgeteer.BudgetActivity.adapter;
+import static com.pulipakaa24.budgeteer.MainActivity.database;
+
+public class TransactionActivity extends AppCompatActivity {
+ private EditText nameEdit;
+ private EditText amountEdit;
+ public static DecimalFormat decimalFormat = new DecimalFormat("0.00");
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_transaction);
+ nameEdit = findViewById(R.id.transacNameEdit);
+ amountEdit = findViewById(R.id.transacAmountEdit);
+
+ Intent intent = getIntent();
+ nameEdit.setText(intent.getStringExtra("name"));
+ float amount = intent.getFloatExtra("amount", 0.00f);
+ if (amount != 0) {
+ amountEdit.setText(decimalFormat.format(amount));
+ }
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+
+ Intent intent = getIntent();
+ int id = intent.getIntExtra("id", 0);
+
+ String s = amountEdit.getText().toString();
+ float f;
+
+ if (!s.equals("")) {
+ f = Float.parseFloat(s);
+ }
+
+ else {
+ f = 0.00f;
+ }
+
+ database.transactionDao().save(nameEdit.getText().toString(), f, id);
+ adapter.reload();
+ }
+
+ public void delete(View view) {
+ database.transactionDao().delete(getIntent().getIntExtra("id", 0));
+ finish();
+ }
+
+ public void back(View view) {
+ onPause();
+ finish();
+ }
+}
diff --git a/src/main/java/com/pulipakaa24/budgeteer/TransactionDao.java b/src/main/java/com/pulipakaa24/budgeteer/TransactionDao.java
new file mode 100644
index 0000000..9ad8a37
--- /dev/null
+++ b/src/main/java/com/pulipakaa24/budgeteer/TransactionDao.java
@@ -0,0 +1,27 @@
+package com.pulipakaa24.budgeteer;
+
+import androidx.room.Dao;
+import androidx.room.Query;
+
+import java.util.List;
+
+@Dao
+public interface TransactionDao {
+ @Query("Insert into transactions (category, transacName, amount) values (:category, '', 0)")
+ long create(String category);
+
+ @Query("select * from transactions where category = :category")
+ List getAll(String category);
+
+ @Query("update transactions set transacName = :transacName, amount = :amount where id = :id")
+ void save(String transacName, float amount, int id);
+
+ @Query("delete from transactions where id = :id")
+ void delete(int id);
+
+ @Query("select * from transactions")
+ List getEverything();
+
+ @Query("delete from transactions")
+ void deleteAll();
+}
diff --git a/src/main/java/com/pulipakaa24/budgeteer/TransactionDatabase.java b/src/main/java/com/pulipakaa24/budgeteer/TransactionDatabase.java
new file mode 100644
index 0000000..d3c8848
--- /dev/null
+++ b/src/main/java/com/pulipakaa24/budgeteer/TransactionDatabase.java
@@ -0,0 +1,10 @@
+package com.pulipakaa24.budgeteer;
+
+
+import androidx.room.Database;
+import androidx.room.RoomDatabase;
+
+@Database(entities = {Transaction.class}, version = 1)
+public abstract class TransactionDatabase extends RoomDatabase {
+ public abstract TransactionDao transactionDao();
+}
diff --git a/src/main/res/drawable-v24/ic_launcher_foreground.xml b/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..cc14f03
--- /dev/null
+++ b/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/drawable/border.xml b/src/main/res/drawable/border.xml
new file mode 100644
index 0000000..fa9ab05
--- /dev/null
+++ b/src/main/res/drawable/border.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/drawable/ic_launcher_background.xml b/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..a4f78de
--- /dev/null
+++ b/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/res/layout/activity_budget.xml b/src/main/res/layout/activity_budget.xml
new file mode 100644
index 0000000..2073a61
--- /dev/null
+++ b/src/main/res/layout/activity_budget.xml
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/layout/activity_budgetcreate.xml b/src/main/res/layout/activity_budgetcreate.xml
new file mode 100644
index 0000000..1d631f4
--- /dev/null
+++ b/src/main/res/layout/activity_budgetcreate.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/layout/activity_main.xml b/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..56fe2a1
--- /dev/null
+++ b/src/main/res/layout/activity_main.xml
@@ -0,0 +1,327 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/layout/activity_resetconfirm.xml b/src/main/res/layout/activity_resetconfirm.xml
new file mode 100644
index 0000000..b3508cc
--- /dev/null
+++ b/src/main/res/layout/activity_resetconfirm.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/layout/activity_transaction.xml b/src/main/res/layout/activity_transaction.xml
new file mode 100644
index 0000000..5b7e133
--- /dev/null
+++ b/src/main/res/layout/activity_transaction.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/layout/transaction_row.xml b/src/main/res/layout/transaction_row.xml
new file mode 100644
index 0000000..4a8946f
--- /dev/null
+++ b/src/main/res/layout/transaction_row.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
diff --git a/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..a26f6fb
--- /dev/null
+++ b/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..a26f6fb
--- /dev/null
+++ b/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/mipmap-hdpi/ic_launcher.png b/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..a571e60
Binary files /dev/null and b/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/src/main/res/mipmap-hdpi/ic_launcher_round.png b/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..61da551
Binary files /dev/null and b/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/src/main/res/mipmap-mdpi/ic_launcher.png b/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..c41dd28
Binary files /dev/null and b/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/src/main/res/mipmap-mdpi/ic_launcher_round.png b/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..db5080a
Binary files /dev/null and b/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/src/main/res/mipmap-xhdpi/ic_launcher.png b/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..6dba46d
Binary files /dev/null and b/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..da31a87
Binary files /dev/null and b/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/src/main/res/mipmap-xxhdpi/ic_launcher.png b/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..15ac681
Binary files /dev/null and b/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..b216f2d
Binary files /dev/null and b/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..f25a419
Binary files /dev/null and b/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..e96783c
Binary files /dev/null and b/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/src/main/res/values-night/themes.xml b/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..856c5f4
--- /dev/null
+++ b/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/main/res/values/colors.xml b/src/main/res/values/colors.xml
new file mode 100644
index 0000000..823492c
--- /dev/null
+++ b/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
new file mode 100644
index 0000000..b327ebe
--- /dev/null
+++ b/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ Budgeteer
+
\ No newline at end of file
diff --git a/src/main/res/values/themes.xml b/src/main/res/values/themes.xml
new file mode 100644
index 0000000..0704367
--- /dev/null
+++ b/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/test/java/com/pulipakaa24/budgeteer/ExampleUnitTest.java b/src/test/java/com/pulipakaa24/budgeteer/ExampleUnitTest.java
new file mode 100644
index 0000000..a5fa1cc
--- /dev/null
+++ b/src/test/java/com/pulipakaa24/budgeteer/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.pulipakaa24.budgeteer;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file