diff --git a/Listify/app/src/main/AndroidManifest.xml b/Listify/app/src/main/AndroidManifest.xml index 73d5a0d..980c079 100644 --- a/Listify/app/src/main/AndroidManifest.xml +++ b/Listify/app/src/main/AndroidManifest.xml @@ -40,6 +40,7 @@ + \ No newline at end of file diff --git a/Listify/app/src/main/java/com/example/listify/ListPage.java b/Listify/app/src/main/java/com/example/listify/ListPage.java index baf1914..f81c481 100644 --- a/Listify/app/src/main/java/com/example/listify/ListPage.java +++ b/Listify/app/src/main/java/com/example/listify/ListPage.java @@ -1,34 +1,25 @@ package com.example.listify; import android.content.Context; -import android.content.Intent; import android.os.Bundle; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.ListView; -import android.widget.TextView; - +import android.widget.*; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; import com.example.listify.data.Item; import com.example.listify.data.List; import com.example.listify.data.ListEntry; -import com.example.listify.model.Product; -import static com.example.listify.MainActivity.am; - import org.json.JSONException; import java.io.IOException; import java.util.ArrayList; import java.util.Properties; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; +import static com.example.listify.MainActivity.am; public class ListPage extends AppCompatActivity { ListView listView; @@ -89,7 +80,7 @@ public class ListPage extends AppCompatActivity { pNames.add(item.getDescription()); pStores.add("Kroger"); pPrices.add(item.getPrice().toString()); - pQuantity.add("1"); + pQuantity.add(entry.getQuantity().toString()); pImages.add(R.drawable.placeholder); pListItemPair.add(entry); } @@ -156,30 +147,58 @@ public class ListPage extends AppCompatActivity { public void onClick(View v) { int q = Integer.parseInt(pQuantity.get(position)) - 1; pQuantity.set(position, Integer.toString(q)); + ListEntry le = pListItemPair.remove(position); + le.setQuantity(le.getQuantity() - 1); + pListItemPair.add(position, le); + SynchronousReceiver synchronousenforcer = new SynchronousReceiver<>(); + requestor.deleteObject(le, synchronousenforcer, synchronousenforcer); + try { + synchronousenforcer.await(); + } catch (Exception e) { + e.printStackTrace(); + } + try { + requestor.postObject(le, synchronousenforcer, synchronousenforcer); + synchronousenforcer.await(); + } + catch (Exception e) { + Log.i("Authentication", e.toString()); + } listView.setAdapter(myAdapter); } }); if(Integer.parseInt(pQuantity.get(position)) <= 1) { decrQuan.setEnabled(false); } - if(Integer.parseInt(pQuantity.get(position)) < 10) { - incrQuan.setEnabled(true); - } incrQuan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int q = Integer.parseInt(pQuantity.get(position)) + 1; pQuantity.set(position, Integer.toString(q)); + ListEntry le = pListItemPair.remove(position); + le.setQuantity(le.getQuantity() + 1); + pListItemPair.add(position, le); + SynchronousReceiver synchronousenforcer = new SynchronousReceiver<>(); + requestor.deleteObject(le, synchronousenforcer, synchronousenforcer); + try { + synchronousenforcer.await(); + } catch (Exception e) { + e.printStackTrace(); + } + try { + requestor.postObject(le, synchronousenforcer, synchronousenforcer); + synchronousenforcer.await(); + } + catch (Exception e) { + Log.i("Authentication", e.toString()); + } listView.setAdapter(myAdapter); } }); if(Integer.parseInt(pQuantity.get(position)) > 1) { decrQuan.setEnabled(true); } - if(Integer.parseInt(pQuantity.get(position)) >= 10) { - incrQuan.setEnabled(false); - } removeItem.setOnClickListener(new View.OnClickListener() { @Override @@ -221,7 +240,7 @@ public class ListPage extends AppCompatActivity { int product = entry.getProductID(); ProductReceiver pr = new ProductReceiver<>(); requestor.getObject(Integer.toString(product), Item.class, pr); - pQuantity.add("1"); + pQuantity.add(entry.getQuantity().toString()); pListItemPair.add(entry); } } diff --git a/Listify/app/src/main/java/com/example/listify/MainActivity.java b/Listify/app/src/main/java/com/example/listify/MainActivity.java index 0dfb9cc..0378dc7 100644 --- a/Listify/app/src/main/java/com/example/listify/MainActivity.java +++ b/Listify/app/src/main/java/com/example/listify/MainActivity.java @@ -2,6 +2,7 @@ package com.example.listify; import android.content.Intent; import android.os.Bundle; +import android.os.Handler; import android.util.Log; import android.view.MenuItem; import android.view.View; @@ -30,12 +31,23 @@ import java.util.Random; public class MainActivity extends AppCompatActivity implements CreateListDialogFragment.OnNewListListener { private AppBarConfiguration mAppBarConfiguration; + private static final int SPLASH_SCREEN_TIME = 3000; //in milliseconds + public static AuthManager am = new AuthManager(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + Intent intent = new Intent(MainActivity.this, SplashActivity.class); + startActivity(intent); + finish(); + } + }, SPLASH_SCREEN_TIME); + //------------------------------Auth Testing---------------------------------------------// diff --git a/Listify/app/src/main/java/com/example/listify/Requestor.java b/Listify/app/src/main/java/com/example/listify/Requestor.java index 09e7dad..b2df019 100644 --- a/Listify/app/src/main/java/com/example/listify/Requestor.java +++ b/Listify/app/src/main/java/com/example/listify/Requestor.java @@ -45,9 +45,13 @@ public class Requestor { } public void deleteObject(Object toDelete) { + deleteObject(toDelete, null, null); + } + + public void deleteObject(Object toDelete, Receiver receiver, RequestErrorHandler errorHandler) { String deleteURL = DEV_BASEURL + "/" + toDelete.getClass().getSimpleName(); Request deleteRequest = buildBaseRequest(deleteURL, "DELETE", new Gson().toJson(toDelete)); - launchCall(deleteRequest, null, toDelete.getClass(), null); + launchCall(deleteRequest, receiver, toDelete.getClass(), errorHandler); } public void deleteObject(String id, Class classType, RequestErrorHandler failureHandler) { diff --git a/Listify/app/src/main/java/com/example/listify/SplashActivity.java b/Listify/app/src/main/java/com/example/listify/SplashActivity.java new file mode 100644 index 0000000..793c9eb --- /dev/null +++ b/Listify/app/src/main/java/com/example/listify/SplashActivity.java @@ -0,0 +1,14 @@ +package com.example.listify; + +import android.os.Bundle; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +public class SplashActivity extends AppCompatActivity { + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_splashscreen); + } +} diff --git a/Listify/app/src/main/java/com/example/listify/ui/SignupPage.java b/Listify/app/src/main/java/com/example/listify/ui/SignupPage.java index fe90cfc..c3a691a 100644 --- a/Listify/app/src/main/java/com/example/listify/ui/SignupPage.java +++ b/Listify/app/src/main/java/com/example/listify/ui/SignupPage.java @@ -39,9 +39,17 @@ public class SignupPage extends AppCompatActivity implements CodePage.CodeDialog public void onClick(View v) { EditText emailText = (EditText) findViewById(R.id.editTextTextEmailAddress); EditText passwordText = (EditText) findViewById(R.id.editTextTextPassword); + EditText confirmPasswordText = (EditText) findViewById(R.id.editTextTextPassword2); String email = emailText.getText().toString(); String password = passwordText.getText().toString(); + String confirmPassword = confirmPasswordText.getText().toString(); + + if(!password.equals(confirmPassword)) { + TextView invalidCred = findViewById(R.id.textView3); + invalidCred.setText("\"Confirm Password\" does not match \"Password\"."); + return; + } try { am.startSignUp(email, password); diff --git a/Listify/app/src/main/res/layout/activity_signup.xml b/Listify/app/src/main/res/layout/activity_signup.xml index 9b1bc15..6af1bfd 100644 --- a/Listify/app/src/main/res/layout/activity_signup.xml +++ b/Listify/app/src/main/res/layout/activity_signup.xml @@ -14,7 +14,7 @@ android:text="Sign up" app:layout_constraintEnd_toStartOf="@+id/textView3" app:layout_constraintStart_toStartOf="@+id/textView3" - app:layout_constraintTop_toBottomOf="@+id/editTextTextPassword" /> + app:layout_constraintTop_toBottomOf="@+id/editTextTextPassword2" />