Add manual entry procedure for presented and selected carton, packs and pieces.
parent
79dd070d65
commit
cf3bc2baee
|
@ -10,8 +10,8 @@ android {
|
|||
applicationId "com.utopiaindustries.qualitychecker"
|
||||
minSdk 24
|
||||
targetSdk 34
|
||||
versionCode 5
|
||||
versionName "1.4"
|
||||
versionCode 7
|
||||
versionName "1.6"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
|
|
@ -19,8 +19,8 @@ import retrofit2.Retrofit;
|
|||
import retrofit2.converter.gson.GsonConverterFactory;
|
||||
|
||||
public class RetrofitClient {
|
||||
//private final static String BASE_URL = "https://portal.utopiaindustries.pk/uind/";
|
||||
private final static String BASE_URL = "http://192.168.91.44:8081/uind/";//"http://192.168.91.44:8081/uind/";//"http://192.168.90.27:8080/uind/";//"http://192.168.91.16:8080/uind/";
|
||||
private final static String BASE_URL = "https://portal.utopiaindustries.pk/uind/";
|
||||
//private final static String BASE_URL = "http://192.168.91.44:8081/uind/";//"http://192.168.91.44:8081/uind/";//"http://192.168.90.27:8080/uind/";//"http://192.168.91.16:8080/uind/";
|
||||
|
||||
private static Retrofit retrofit;
|
||||
|
||||
|
|
|
@ -28,9 +28,9 @@ public class InspectionReportItem implements Serializable {
|
|||
private float totalPresentPacks;
|
||||
private float totalPresentCartons;
|
||||
// sqrt( totalPresentCartons )
|
||||
private float cartonsSelected;
|
||||
private float packsSelected;
|
||||
private float piecesSelected;
|
||||
private int cartonsSelected;
|
||||
private int packsSelected;
|
||||
private int piecesSelected;
|
||||
|
||||
private float cartonWeight;
|
||||
private float cartonLength;
|
||||
|
@ -229,19 +229,19 @@ public class InspectionReportItem implements Serializable {
|
|||
this.totalPresentCartons = totalPresentCartons;
|
||||
}
|
||||
|
||||
public float getCartonsSelected() {
|
||||
public int getCartonsSelected() {
|
||||
return cartonsSelected;
|
||||
}
|
||||
|
||||
public void setCartonsSelected(float cartonsSelected) {
|
||||
public void setCartonsSelected(int cartonsSelected) {
|
||||
this.cartonsSelected = cartonsSelected;
|
||||
}
|
||||
|
||||
public float getPacksSelected() {
|
||||
public int getPacksSelected() {
|
||||
return packsSelected;
|
||||
}
|
||||
|
||||
public void setPacksSelected(float packsSelected) {
|
||||
public void setPacksSelected(int packsSelected) {
|
||||
this.packsSelected = packsSelected;
|
||||
}
|
||||
|
||||
|
@ -253,11 +253,11 @@ public class InspectionReportItem implements Serializable {
|
|||
this.packingDetails = packingDetails;
|
||||
}
|
||||
|
||||
public float getPiecesSelected() {
|
||||
public int getPiecesSelected() {
|
||||
return piecesSelected;
|
||||
}
|
||||
|
||||
public void setPiecesSelected(float piecesSelected) {
|
||||
public void setPiecesSelected(int piecesSelected) {
|
||||
this.piecesSelected = piecesSelected;
|
||||
}
|
||||
|
||||
|
|
|
@ -37,6 +37,8 @@ public class Store {
|
|||
private EmployeePhoto employeePhoto;
|
||||
private List<ItemUnit> itemUnits;
|
||||
private List<InspectionCheckpointSku> checkpointSkus;
|
||||
private boolean isNewReportPresented;
|
||||
private boolean isNewReportSelected;
|
||||
|
||||
private Store(){
|
||||
}
|
||||
|
@ -234,6 +236,22 @@ public class Store {
|
|||
this.checkpointSkus = checkpointSkus;
|
||||
}
|
||||
|
||||
public boolean isNewReportPresented() {
|
||||
return isNewReportPresented;
|
||||
}
|
||||
|
||||
public void setNewReportPresented(boolean newReportPresented) {
|
||||
isNewReportPresented = newReportPresented;
|
||||
}
|
||||
|
||||
public boolean isNewReportSelected() {
|
||||
return isNewReportSelected;
|
||||
}
|
||||
|
||||
public void setNewReportSelected(boolean newReportSelected) {
|
||||
isNewReportSelected = newReportSelected;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Store{" +
|
||||
|
|
|
@ -68,7 +68,12 @@ import com.utopiaindustries.qualitychecker.utils.PropertyReader;
|
|||
import com.utopiaindustries.qualitychecker.utils.Release;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
@ -589,7 +594,7 @@ private int generateRandomNumber(int min, int max) {
|
|||
reportsUploadBtn.setEnabled(false);
|
||||
final int[] uploadedCount = {0};
|
||||
|
||||
for ( InspectionReport report : reports ){
|
||||
for ( InspectionReport report : reports ) {
|
||||
service.saveReport(report, new SaveReportCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
|
@ -613,9 +618,10 @@ private int generateRandomNumber(int min, int max) {
|
|||
}
|
||||
@Override
|
||||
public void onFailure(Throwable throwable) {
|
||||
Log.e("Message: ",""+throwable.getMessage());
|
||||
uploadedCount[0]++;
|
||||
// Even on failure, increment the counter to avoid locking the button forever
|
||||
|
||||
//logErrorToFile(throwable);
|
||||
NotificationHelper.showNotification(
|
||||
HomeActivity.this,
|
||||
"Report Uploading",
|
||||
|
@ -648,6 +654,11 @@ private int generateRandomNumber(int min, int max) {
|
|||
try {
|
||||
// get file from path
|
||||
byte[] result = FileUtils.readFile( wrapper.getContent() );
|
||||
/*FileUtils.copyFile(this, wrapper.getContent(), "Reports");
|
||||
Object obj = FileUtils.readSerializedObject(wrapper.getContent());
|
||||
if (obj != null) {
|
||||
FileUtils.writeObjectToReadableFile(this, obj, "report_readable.txt");
|
||||
}*/
|
||||
ByteArrayInputStream byteIn = new ByteArrayInputStream( result );
|
||||
ObjectInputStream in = new ObjectInputStream(byteIn);
|
||||
InspectionReport report = ( InspectionReport ) in.readObject();
|
||||
|
@ -661,4 +672,23 @@ private int generateRandomNumber(int min, int max) {
|
|||
}
|
||||
return reports;
|
||||
}
|
||||
|
||||
private void logErrorToFile(Throwable throwable) {
|
||||
try {
|
||||
File logFile = new File(getExternalFilesDir(null), "upload_error_log.txt");
|
||||
FileWriter writer = new FileWriter(logFile, true); // append mode
|
||||
writer.write("Error: " + throwable.toString() + "\n");
|
||||
if (throwable.getMessage() != null) {
|
||||
writer.write("Message: " + throwable.getMessage() + "\n");
|
||||
}
|
||||
StringWriter sw = new StringWriter();
|
||||
throwable.printStackTrace(new PrintWriter(sw));
|
||||
writer.write(sw.toString());
|
||||
writer.write("\n------------------------\n");
|
||||
writer.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -355,7 +355,7 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
|
|||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
try {
|
||||
int packsCount = 0, piecesCount = 0;
|
||||
int boxCount = (int) Double.parseDouble(s.toString());
|
||||
int boxCount = Integer.parseInt(s.toString());
|
||||
if (itemPerBox.getText().toString().isEmpty() || pieces.getText().toString().isEmpty()) {
|
||||
Toast.makeText(getContext(), "Enter Item/Pieces Per box", Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
|
@ -365,22 +365,33 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
|
|||
int totalPacks = boxCount * packsCount;
|
||||
int totalPieces = totalPacks * piecesCount;
|
||||
|
||||
itemPerBoxSelected.setText(String.valueOf(totalPacks));
|
||||
//store.getReport().getItems().get(0).setPacksSelected(Long.parseLong(String.valueOf(totalPacks)));
|
||||
piecesSelected.setText(String.valueOf(totalPieces));
|
||||
//store.getReport().getItems().get(0).setPiecesSelected(Long.parseLong(String.valueOf(totalPieces)));
|
||||
//store.getReport().getItems().get(0).setPacksSelected(Long.parseLong(s.toString()));
|
||||
if (store.isNewReportSelected()) {
|
||||
//Log.e("Selected: ",""+store.isNewReportSelected());
|
||||
//Log.e("bool-selected-1: ",""+store.isNewReportSelected());
|
||||
//Log.e("bool-selected-2: ","true");
|
||||
itemPerBoxSelected.setText(String.valueOf(totalPacks));
|
||||
piecesSelected.setText(String.valueOf(totalPieces));
|
||||
}
|
||||
else {
|
||||
//Log.e("bool-selected-3: ","false");
|
||||
//Log.e("bool-selected-4: ","false"+String.valueOf(store.getReport().getItems().get(0).getPacksSelected()));
|
||||
//Log.e("bool-selected-5: ","false"+String.valueOf(store.getReport().getItems().get(0).getPiecesSelected()));
|
||||
itemPerBoxSelected.setText(String.valueOf(store.getReport().getItems().get(0).getPacksSelected()));
|
||||
piecesSelected.setText(String.valueOf(store.getReport().getItems().get(0).getPiecesSelected()));
|
||||
}
|
||||
}
|
||||
|
||||
store.getReport().getItems().get(0).setCartonsSelected(Float.parseFloat(s.toString()));
|
||||
store.getReport().getItems().get(0).setCartonsSelected(Integer.parseInt(s.toString()));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
store.getReport().getItems().get(0).setCartonsSelected(0);
|
||||
store.setNewReportSelected(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -388,11 +399,12 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
|
|||
checkedBoxCartonSelected.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
|
||||
//Log.e("beforeTextChanged: ","***");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
//Log.e("onTextChanged: ","***");
|
||||
try {
|
||||
int packsCount = 0, piecesCount = 0;
|
||||
int boxCount = Integer.parseInt(s.toString());
|
||||
|
@ -405,19 +417,30 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
|
|||
int totalPacks = boxCount * packsCount;
|
||||
int totalPieces = totalPacks * piecesCount;
|
||||
|
||||
checkedItemPerBoxSelected.setText(String.valueOf(totalPacks));
|
||||
checkedPiecesSelected.setText(String.valueOf(totalPieces));
|
||||
if (store.isNewReportPresented()) {
|
||||
//Log.e("bool-presented-1: ",""+store.isNewReportPresented());
|
||||
//Log.e("bool-presented-2: ","true");
|
||||
checkedItemPerBoxSelected.setText(String.valueOf(totalPacks));
|
||||
checkedPiecesSelected.setText(String.valueOf(totalPieces));
|
||||
}
|
||||
else {
|
||||
//Log.e("bool-presented-3: ","false");
|
||||
checkedItemPerBoxSelected.setText(String.valueOf(store.getReport().getItems().get(0).getCheckedPacksSelected()));
|
||||
checkedPiecesSelected.setText(String.valueOf(store.getReport().getItems().get(0).getCheckedPiecesSelected()));
|
||||
}
|
||||
}
|
||||
|
||||
store.getReport().getItems().get(0).setCheckedCartonsSelected(Integer.parseInt(s.toString()));
|
||||
} catch (Exception e) {
|
||||
store.getReport().getItems().get(0).setCheckedCartonsSelected(0);
|
||||
store.setNewReportPresented(true);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
|
||||
//Log.e("afterTextChanged: ","***");
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -430,7 +453,8 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
|
|||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
try {
|
||||
store.getReport().getItems().get(0).setPacksSelected(Long.parseLong(s.toString()));
|
||||
//Log.e("bool-selected-onTextChanged: "," itemPerBoxSelected");
|
||||
store.getReport().getItems().get(0).setPacksSelected(Integer.parseInt(s.toString()));
|
||||
} catch (Exception e) {
|
||||
store.getReport().getItems().get(0).setPacksSelected(0);
|
||||
}
|
||||
|
@ -452,6 +476,7 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
|
|||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
try {
|
||||
//Log.e("bool-presented-onTextChanged: "," checkedItemPerBoxSelected");
|
||||
store.getReport().getItems().get(0).setCheckedPacksSelected(Integer.parseInt(s.toString()));
|
||||
} catch (Exception e) {
|
||||
store.getReport().getItems().get(0).setCheckedPacksSelected(0);
|
||||
|
@ -473,7 +498,8 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
|
|||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
try {
|
||||
store.getReport().getItems().get(0).setPiecesSelected(Long.parseLong(s.toString()));
|
||||
//Log.e("bool-selected-onTextChanged: "," piecesSelected");
|
||||
store.getReport().getItems().get(0).setPiecesSelected(Integer.parseInt(s.toString()));
|
||||
} catch (Exception e) {
|
||||
store.getReport().getItems().get(0).setPiecesSelected(0);
|
||||
}
|
||||
|
@ -495,6 +521,7 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
|
|||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
try {
|
||||
//Log.e("bool-presented-onTextChanged: "," checkedPiecesSelected");
|
||||
store.getReport().getItems().get(0).setCheckedPiecesSelected(Integer.parseInt(s.toString()));
|
||||
} catch (Exception e) {
|
||||
store.getReport().getItems().get(0).setCheckedPiecesSelected(0);
|
||||
|
@ -502,8 +529,8 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
|
|||
|
||||
try {
|
||||
//calculate aql sample size
|
||||
Log.e("ItemPresentedDetails-pieces: ", "" + s.toString());
|
||||
Log.e("ItemPresentedDetails-inspectionLevel: ", "" + inspectionLevel);
|
||||
//Log.e("ItemPresentedDetails-pieces: ", "" + s.toString());
|
||||
//Log.e("ItemPresentedDetails-inspectionLevel: ", "" + inspectionLevel);
|
||||
if (!s.toString().isEmpty() && s.toString() != null) {
|
||||
trackSampleCode(Integer.parseInt(s.toString()), (int) Double.parseDouble(inspectionLevel), Double.parseDouble(qualityLevelMajor), Double.parseDouble(qualityLevelMinor));
|
||||
}
|
||||
|
@ -756,6 +783,8 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
|
|||
navController = Navigation.findNavController(requireView());
|
||||
if (v.getId() == R.id.button_draft_first) {
|
||||
|
||||
store.setNewReportPresented(false);
|
||||
store.setNewReportSelected(false);
|
||||
//--Draft Incomplete Report
|
||||
//Log.e("sku: ",""+sku.getText().toString());
|
||||
//Log.e("Market-place: ",""+store.getReport().getItems().get(0).getMarketplace());
|
||||
|
@ -810,6 +839,8 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
|
|||
if (v.getId() == R.id.button_right_frag_1) {
|
||||
if (!sku.getText().toString().isEmpty() && !store.getReport().getItems().get(0).getMarketplace().equalsIgnoreCase("[ Marketplace ]")) {
|
||||
navController.navigate(R.id.action_firstStepFragment_to_secondStepFragment);
|
||||
store.setNewReportPresented(false);
|
||||
store.setNewReportSelected(false);
|
||||
} else {
|
||||
Toast.makeText(getContext(), "Please enter or scan sku details", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
@ -933,7 +964,7 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
|
|||
boxCarton.setText(boxCartonText);
|
||||
packagingDetails.setText(packagingDetailsText);
|
||||
|
||||
Log.e("Carton: ",""+String.valueOf(store.getReport().getItems().get(0).getCartonsSelected()));
|
||||
//Log.e("Carton: ",""+String.valueOf(store.getReport().getItems().get(0).getCartonsSelected()));
|
||||
|
||||
boxCartonSelected.setText(String.valueOf(store.getReport().getItems().get(0).getCartonsSelected()));
|
||||
//itemPerBoxSelected.setText(String.valueOf(store.getReport().getItems().get(0).getPacksSelected()));
|
||||
|
@ -1247,7 +1278,7 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
|
|||
+ "\nSampleSizeMinor: " + sampleSizeMinor;
|
||||
|
||||
txtTesting.setText(testDetails);
|
||||
Log.e("SampleSizeMajor: ",""+sampleSizeMajor);
|
||||
//Log.e("SampleSizeMajor: ",""+sampleSizeMajor);
|
||||
aqlSampleSize.setText(String.valueOf(sampleSizeMajor));
|
||||
|
||||
store.getReport().getItems().get(0).setSampleSize(sampleSizeMajor);
|
||||
|
|
|
@ -442,6 +442,33 @@ public class ThirdStepFragment extends Fragment implements View.OnClickListener
|
|||
}
|
||||
}
|
||||
|
||||
/*private void saveReportDirectlyToServer(Store store) {
|
||||
apiService.saveInspectionReport(store.getReport()).enqueue(new Callback<Map<String, String>>() {
|
||||
@Override
|
||||
public void onResponse(Call<Map<String, String>> call, Response<Map<String, String>> response) {
|
||||
progressBar.setVisibility(View.GONE);
|
||||
if (response.isSuccessful()) {
|
||||
System.out.println(response.body());
|
||||
Log.e("Response-Successful: ",""+response.body());
|
||||
if (response.body().get("result").equalsIgnoreCase("success")) {
|
||||
Toast.makeText(getContext(), "Report saved successfully", Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
Toast.makeText(getContext(), "Error in saving report", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
} else {
|
||||
Toast.makeText(getContext(), "Error in saving report", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<Map<String, String>> call, Throwable t) {
|
||||
progressBar.setVisibility(View.GONE);
|
||||
Log.e("onFailure-message",""+t.getMessage());
|
||||
}
|
||||
}
|
||||
);
|
||||
}*/
|
||||
|
||||
private void saveReportDialog() {
|
||||
LayoutInflater inflater = LayoutInflater.from(getContext());
|
||||
View dialogView = inflater.inflate(R.layout.save_report_dialog, null);
|
||||
|
|
|
@ -9,6 +9,7 @@ import android.net.NetworkInfo;
|
|||
import android.net.Uri;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.ProgressBar;
|
||||
|
@ -27,8 +28,10 @@ import java.io.ByteArrayOutputStream;
|
|||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
|
@ -233,4 +236,70 @@ public class FileUtils {
|
|||
NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo();
|
||||
return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
|
||||
}
|
||||
|
||||
public static boolean copyFile(Context context, String sourcePath, String destFileName) {
|
||||
try {
|
||||
// Read bytes from source file
|
||||
byte[] fileBytes = readFile(sourcePath);
|
||||
|
||||
// Write bytes to new file in external files directory
|
||||
File destFile = new File(context.getExternalFilesDir(null), destFileName);
|
||||
try (FileOutputStream fos = new FileOutputStream(destFile)) {
|
||||
fos.write(fileBytes);
|
||||
fos.flush();
|
||||
}
|
||||
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static void exportFileToExternalStorage(final Context context, String internalFileName) {
|
||||
try {
|
||||
// Source: internal storage file
|
||||
File internalFile = new File(context.getFilesDir(), internalFileName);
|
||||
|
||||
// Destination: external storage file
|
||||
File externalFile = new File(context.getExternalFilesDir(null), internalFileName);
|
||||
|
||||
FileInputStream fis = new FileInputStream(internalFile);
|
||||
FileOutputStream fos = new FileOutputStream(externalFile);
|
||||
|
||||
byte[] buffer = new byte[1024];
|
||||
int length;
|
||||
while ((length = fis.read(buffer)) > 0) {
|
||||
fos.write(buffer, 0, length);
|
||||
}
|
||||
|
||||
fis.close();
|
||||
fos.close();
|
||||
|
||||
//Toast.makeText(this, "Exported to: " + externalFile.getAbsolutePath(), Toast.LENGTH_LONG).show();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static Object readSerializedObject(String filePath) {
|
||||
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filePath))) {
|
||||
return ois.readObject();
|
||||
} catch (IOException | ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static void writeObjectToReadableFile(Context context, Object obj, String outputFileName) {
|
||||
File outputFile = new File(context.getExternalFilesDir(null), outputFileName);
|
||||
try (FileWriter writer = new FileWriter(outputFile)) {
|
||||
writer.write(obj.toString()); // You can also use a JSON library here if needed
|
||||
writer.flush();
|
||||
Log.e("FileUtils", "Object written to: " + outputFile.getAbsolutePath());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -856,4 +856,15 @@
|
|||
android:text="Add Dimensions" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progressBar"
|
||||
style="?android:attr/progressBarStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
Loading…
Reference in New Issue