mirror of
https://github.com/ClaytonWWilson/Listify.git
synced 2025-12-16 10:48:46 +00:00
Async creating lists and adding items
This commit is contained in:
parent
07d0cd44cb
commit
8604d98e63
@ -1,5 +1,8 @@
|
|||||||
package com.example.listify;
|
package com.example.listify;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import com.amplifyframework.auth.AuthException;
|
import com.amplifyframework.auth.AuthException;
|
||||||
@ -11,6 +14,8 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
|||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.Window;
|
||||||
|
import android.view.WindowManager;
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
@ -71,6 +76,17 @@ public class ItemDetails extends AppCompatActivity implements ListPickerDialogFr
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
closeFABMenu();
|
closeFABMenu();
|
||||||
|
// Create and show a loading dialog
|
||||||
|
Dialog loadingDialog = new Dialog(ItemDetails.this);
|
||||||
|
loadingDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
|
||||||
|
loadingDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||||
|
// layout to display
|
||||||
|
loadingDialog.setContentView(R.layout.dialog_loading);
|
||||||
|
// set color transpartent
|
||||||
|
loadingDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||||
|
loadingDialog.setCancelable(false);
|
||||||
|
loadingDialog.setCanceledOnTouchOutside(false);
|
||||||
|
loadingDialog.show();
|
||||||
|
|
||||||
Properties configs = new Properties();
|
Properties configs = new Properties();
|
||||||
try {
|
try {
|
||||||
@ -82,8 +98,11 @@ public class ItemDetails extends AppCompatActivity implements ListPickerDialogFr
|
|||||||
Requestor requestor = new Requestor(am, configs.getProperty("apiKey"));
|
Requestor requestor = new Requestor(am, configs.getProperty("apiKey"));
|
||||||
SynchronousReceiver<Integer[]> listIdsReceiver = new SynchronousReceiver<>();
|
SynchronousReceiver<Integer[]> listIdsReceiver = new SynchronousReceiver<>();
|
||||||
SynchronousReceiver<List> listReceiver = new SynchronousReceiver<>();
|
SynchronousReceiver<List> listReceiver = new SynchronousReceiver<>();
|
||||||
|
|
||||||
requestor.getListOfIds(List.class, listIdsReceiver, listIdsReceiver);
|
requestor.getListOfIds(List.class, listIdsReceiver, listIdsReceiver);
|
||||||
|
|
||||||
|
Thread t = new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
try {
|
try {
|
||||||
Integer[] listIds = listIdsReceiver.await();
|
Integer[] listIds = listIdsReceiver.await();
|
||||||
for (int i = 0; i < listIds.length; i++) {
|
for (int i = 0; i < listIds.length; i++) {
|
||||||
@ -94,10 +113,14 @@ public class ItemDetails extends AppCompatActivity implements ListPickerDialogFr
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loadingDialog.cancel();
|
||||||
ListPickerDialogFragment listPickerDialog = new ListPickerDialogFragment(shoppingLists);
|
ListPickerDialogFragment listPickerDialog = new ListPickerDialogFragment(shoppingLists);
|
||||||
listPickerDialog.show(getSupportFragmentManager(), "User Lists");
|
listPickerDialog.show(getSupportFragmentManager(), "User Lists");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
t.start();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
linCreateList.setOnClickListener(new View.OnClickListener() {
|
linCreateList.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -184,6 +207,17 @@ public class ItemDetails extends AppCompatActivity implements ListPickerDialogFr
|
|||||||
// Create a new list and add the item to it
|
// Create a new list and add the item to it
|
||||||
@Override
|
@Override
|
||||||
public void sendNewListName(String name, int quantity) {
|
public void sendNewListName(String name, int quantity) {
|
||||||
|
// Create and show a loading dialog
|
||||||
|
Dialog loadingDialog = new Dialog(this);
|
||||||
|
loadingDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
|
||||||
|
loadingDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||||
|
// layout to display
|
||||||
|
loadingDialog.setContentView(R.layout.dialog_loading);
|
||||||
|
// set color transpartent
|
||||||
|
loadingDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||||
|
loadingDialog.setCancelable(false);
|
||||||
|
loadingDialog.setCanceledOnTouchOutside(false);
|
||||||
|
loadingDialog.show();
|
||||||
|
|
||||||
Properties configs = new Properties();
|
Properties configs = new Properties();
|
||||||
try {
|
try {
|
||||||
@ -196,16 +230,34 @@ public class ItemDetails extends AppCompatActivity implements ListPickerDialogFr
|
|||||||
|
|
||||||
com.example.listify.data.List newList = new List(-1, name, "user filled by lambda", Instant.now().toEpochMilli());
|
com.example.listify.data.List newList = new List(-1, name, "user filled by lambda", Instant.now().toEpochMilli());
|
||||||
|
|
||||||
|
Thread t = new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
try {
|
try {
|
||||||
requestor.postObject(newList, idReceiver, idReceiver);
|
requestor.postObject(newList, idReceiver, idReceiver);
|
||||||
int newListId = idReceiver.await();
|
int newListId = idReceiver.await();
|
||||||
ListEntry entry = new ListEntry(newListId, curProduct.getItemId(), quantity, Instant.now().toEpochMilli(),false);
|
ListEntry entry = new ListEntry(newListId, curProduct.getItemId(), quantity, Instant.now().toEpochMilli(),false);
|
||||||
requestor.postObject(entry);
|
requestor.postObject(entry);
|
||||||
|
|
||||||
Toast.makeText(this, String.format("%s created and item added", name), Toast.LENGTH_LONG).show();
|
runOnUiThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Toast.makeText(ItemDetails.this, String.format("%s created and item added", name), Toast.LENGTH_LONG).show();
|
||||||
|
loadingDialog.cancel();
|
||||||
|
}
|
||||||
|
});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Toast.makeText(this, "An error occurred", Toast.LENGTH_LONG).show();
|
runOnUiThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Toast.makeText(ItemDetails.this, "An error occurred", Toast.LENGTH_LONG).show();
|
||||||
|
loadingDialog.cancel();
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
t.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,10 +1,15 @@
|
|||||||
package com.example.listify.ui.lists;
|
package com.example.listify.ui.lists;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.Window;
|
||||||
|
import android.view.WindowManager;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
@ -85,6 +90,17 @@ public class ListsFragment extends Fragment implements CreateListDialogFragment.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendNewListName(String name) {
|
public void sendNewListName(String name) {
|
||||||
|
// Create and show a loading dialog
|
||||||
|
Dialog loadingDialog = new Dialog(getActivity());
|
||||||
|
loadingDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
|
||||||
|
loadingDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||||
|
// layout to display
|
||||||
|
loadingDialog.setContentView(R.layout.dialog_loading);
|
||||||
|
// set color transpartent
|
||||||
|
loadingDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||||
|
loadingDialog.setCancelable(false);
|
||||||
|
loadingDialog.setCanceledOnTouchOutside(false);
|
||||||
|
loadingDialog.show();
|
||||||
|
|
||||||
Properties configs = new Properties();
|
Properties configs = new Properties();
|
||||||
try {
|
try {
|
||||||
@ -99,14 +115,39 @@ public class ListsFragment extends Fragment implements CreateListDialogFragment.
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
requestor.postObject(newList, idReceiver, idReceiver);
|
requestor.postObject(newList, idReceiver, idReceiver);
|
||||||
newList.setItemID(idReceiver.await());
|
|
||||||
shoppingLists.add(newList);
|
|
||||||
displayShoppingListsAdapter.notifyDataSetChanged();
|
|
||||||
Toast.makeText(getContext(), String.format("%s created", name), Toast.LENGTH_LONG).show();
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Toast.makeText(getContext(), "An error occurred", Toast.LENGTH_LONG).show();
|
Toast.makeText(getContext(), "An error occurred", Toast.LENGTH_LONG).show();
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
Thread t = new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
newList.setItemID(idReceiver.await());
|
||||||
|
} catch (Exception e) {
|
||||||
|
getActivity().runOnUiThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Toast.makeText(getContext(), "An error occurred", Toast.LENGTH_LONG).show();
|
||||||
|
loadingDialog.cancel();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
}
|
||||||
|
shoppingLists.add(newList);
|
||||||
|
|
||||||
|
getActivity().runOnUiThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
displayShoppingListsAdapter.notifyDataSetChanged();
|
||||||
|
loadingDialog.cancel();
|
||||||
|
Toast.makeText(getContext(), String.format("%s created", name), Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
t.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
16
Listify/app/src/main/res/layout/dialog_loading.xml
Normal file
16
Listify/app/src/main/res/layout/dialog_loading.xml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@null">
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/progress_loading_lists"
|
||||||
|
style="?android:attr/progressBarStyleLarge"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:indeterminate="true"
|
||||||
|
android:visibility="visible"/>
|
||||||
|
</RelativeLayout>
|
||||||
@ -20,10 +20,10 @@
|
|||||||
android:id="@+id/nav_lists"
|
android:id="@+id/nav_lists"
|
||||||
android:icon="@drawable/ic_baseline_list_alt_28"
|
android:icon="@drawable/ic_baseline_list_alt_28"
|
||||||
android:title="@string/menu_lists" />
|
android:title="@string/menu_lists" />
|
||||||
<item
|
<!-- <item-->
|
||||||
android:id="@+id/nav_create_list"
|
<!-- android:id="@+id/nav_create_list"-->
|
||||||
android:icon="@drawable/ic_baseline_add_28"
|
<!-- android:icon="@drawable/ic_baseline_add_28"-->
|
||||||
android:title="Create New List"
|
<!-- android:title="Create New List"-->
|
||||||
android:onClick="onClickCreateList"/>
|
<!-- android:onClick="onClickCreateList"/>-->
|
||||||
</group>
|
</group>
|
||||||
</menu>
|
</menu>
|
||||||
Loading…
Reference in New Issue
Block a user