Finalize AQL implementation

Add Image enlarge feature
main
saad.siddiq 2025-03-14 15:22:06 +05:00
parent 15f7a53304
commit 262e578ed8
10 changed files with 193 additions and 55 deletions

View File

@ -48,5 +48,6 @@ dependencies {
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
implementation 'com.journeyapps:zxing-android-embedded:4.1.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
implementation 'com.github.MikeOrtiz:TouchImageView:3.6'
}
}

View File

@ -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;

View File

@ -75,9 +75,11 @@ public class NetworkService extends Service {
private void pushDataToInternet() {
ReportRepository repository = new ReportRepository( this );
List<InspectionReportWrapper> reportWrappers = repository.findAllUnsynced();
Log.e("ReportWrappers-Size: ",""+reportWrappers.size());
InspectionReportService service = InspectionReportService.getInstance();
try {
List<InspectionReport> reports = getReports( reportWrappers );
Log.e("Reports.size(): ",""+reports.size());
int size = reports.size();
if( size > 0 ){
NotificationHelper.showNotification(

View File

@ -9,11 +9,13 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.utopiaindustries.qualitychecker.R;
import com.utopiaindustries.qualitychecker.utils.FullScreenImageDialog;
import java.util.List;
@ -54,6 +56,16 @@ public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHol
.placeholder(R.drawable.img_load)
.apply(new RequestOptions().centerCrop())
.into(holder.imageView);
Bitmap bitmap = BitmapFactory.decodeByteArray(imageList.get(position), 0, imageList.get(position).length);
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FullScreenImageDialog dialog = new FullScreenImageDialog(bitmap);
dialog.show(((AppCompatActivity) v.getContext()).getSupportFragmentManager(), "FullScreenDialog");
}
});
}
@Override

View File

@ -94,8 +94,13 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
List<String> marketplaces = Collections.singletonList("[ Marketplace ]");
String inspectionLevel, qualityLevelMajor, qualityLevelMinor;
List<InspectionLabel> inspectionLabelList = new ArrayList<>();
List<QualityLabel> qualityLabelList = new ArrayList<>();
String[] inspectionLevelArray = {"1", "2", "3"};
String[] inspectionLevelQuality = {"1.0", "1.5", "2.5", "4.0"};
boolean userSpInspection = false;
boolean userSpMajor = false;
boolean userSpMinor = false;
@Nullable
@Override
@ -144,6 +149,8 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
populateSkuCheckpointsParams(store.getReport().getItems().get(0).getSku(),
store.getReport().getItems().get(0).getMarketplace());
}
populateInspectionSpinners();
}
fri.setOnCheckedChangeListener((buttonView, isChecked) -> {
@ -202,10 +209,13 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
store.getReport().getItems().get(0).setInspectionLevel((long) Double.parseDouble(inspectionLevel));
checkedBoxCartonSelected.setText("");
checkedItemPerBoxSelected.setText("");
checkedPiecesSelected.setText("");
aqlSampleSize.setText("");
if (userSpInspection) {
checkedBoxCartonSelected.setText("");
checkedItemPerBoxSelected.setText("");
checkedPiecesSelected.setText("");
aqlSampleSize.setText("");
}
userSpInspection = true;
}
}
@ -221,16 +231,16 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (parent.getItemAtPosition(position) != null) {
qualityLevelMajor = parent.getItemAtPosition(position).toString();
Log.e("Quality-Major: ",""+qualityLevelMajor);
store.getReport().getItems().get(0).setMajorQualityLevel(Double.parseDouble(qualityLevelMajor));
Log.e("Quality-Majorr: ",""+store.getReport().getItems().get(0).getMajorQualityLevel());
checkedBoxCartonSelected.setText("");
checkedItemPerBoxSelected.setText("");
checkedPiecesSelected.setText("");
aqlSampleSize.setText("");
if (userSpMajor) {
checkedBoxCartonSelected.setText("");
checkedItemPerBoxSelected.setText("");
checkedPiecesSelected.setText("");
aqlSampleSize.setText("");
}
userSpMajor = true;
}
}
@ -246,16 +256,16 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (parent.getItemAtPosition(position) != null) {
qualityLevelMinor = parent.getItemAtPosition(position).toString();
Log.e("Quality-Minor: ",""+qualityLevelMinor);
store.getReport().getItems().get(0).setMinorQualityLevel(Double.parseDouble(qualityLevelMinor));
Log.e("Quality-Minorr: ",""+store.getReport().getItems().get(0).getMinorQualityLevel());
checkedBoxCartonSelected.setText("");
checkedItemPerBoxSelected.setText("");
checkedPiecesSelected.setText("");
aqlSampleSize.setText("");
if (userSpMinor) {
checkedBoxCartonSelected.setText("");
checkedItemPerBoxSelected.setText("");
checkedPiecesSelected.setText("");
aqlSampleSize.setText("");
}
userSpMinor = true;
}
}
@ -345,14 +355,18 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
if (itemPerBox.getText().toString().isEmpty() || pieces.getText().toString().isEmpty()) {
Toast.makeText(getContext(), "Enter Item/Pieces Per box", Toast.LENGTH_SHORT).show();
} else {
packsCount = (int) store.getProducts().get(0).getItemPerPack();
piecesCount = (int) store.getProducts().get(0).getItemPerBox();
packsCount = (int) store.getProducts().get(0).getItemPerBox();
piecesCount = (int) store.getProducts().get(0).getItemPerPack();
int totalPacks = boxCount * packsCount;
int totalPieces = totalPacks * piecesCount;
Log.e("totalPacks: ",""+totalPacks);
Log.e("totalPieces: ",""+totalPieces);
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).setCartonsSelected(Long.parseLong(s.toString()));
@ -382,8 +396,8 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
if (itemPerBox.getText().toString().isEmpty() || pieces.getText().toString().isEmpty()) {
Toast.makeText(getContext(), "Enter Item/Pieces Per box", Toast.LENGTH_SHORT).show();
} else {
packsCount = (int) store.getProducts().get(0).getItemPerPack();
piecesCount = (int) store.getProducts().get(0).getItemPerBox();
packsCount = (int) store.getProducts().get(0).getItemPerBox();
piecesCount = (int) store.getProducts().get(0).getItemPerPack();
int totalPacks = boxCount * packsCount;
int totalPieces = totalPacks * piecesCount;
@ -850,7 +864,7 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
}
private void prePopulateData(List<Product> products) {
System.out.println("prePopulateData: " + store.getReport().getItems().get(0).getFnsku());
//System.out.println("prePopulateData: " + store.getReport().getItems().get(0).getFnsku());
fri.setChecked(store.getReport().getFri());
refri.setChecked(!store.getReport().getFri());
// sku
@ -873,6 +887,22 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
title.setSelection(defaultTitleSelectionIndex);
}
populateInspectionSpinners();
}
private void populateInspectionSpinners() {
String defaultInspectionSelection = String.valueOf(store.getReport().getItems().get(0).getInspectionLevel());
int defaultInspectionSelectionIndex = java.util.Arrays.asList(inspectionLevelArray).indexOf(defaultInspectionSelection);
sp_inspectionLevel.setSelection(defaultInspectionSelectionIndex);
String defaultLevelMajorSelection = String.valueOf(store.getReport().getItems().get(0).getMajorQualityLevel());
int defaultLevelMajorSelectionIndex = java.util.Arrays.asList(inspectionLevelQuality).indexOf(defaultLevelMajorSelection);
sp_qLevelMajor.setSelection(defaultLevelMajorSelectionIndex);
String defaultLevelMinorSelection = String.valueOf(store.getReport().getItems().get(0).getMinorQualityLevel());
int defaultLevelMinorSelectionIndex = java.util.Arrays.asList(inspectionLevelQuality).indexOf(defaultLevelMinorSelection);
sp_qLevelMinor.setSelection(defaultLevelMinorSelectionIndex);
}
private void populateItem(List<Product> products, boolean populateMarketplace) {
@ -901,17 +931,13 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
boxCarton.setText(boxCartonText);
packagingDetails.setText(packagingDetailsText);
Log.e("Exception-BOX","***"+store.getReport().getItems().get(0).getCartonsSelected());
Log.e("Exception**ITEM","***"+store.getReport().getItems().get(0).getPacksSelected());
Log.e("Exception**PIECE","**"+store.getReport().getItems().get(0).getPiecesSelected());
boxCartonSelected.setText(String.valueOf(store.getReport().getItems().get(0).getCartonsSelected()));
itemPerBoxSelected.setText(String.valueOf(store.getReport().getItems().get(0).getPacksSelected()));
piecesSelected.setText(String.valueOf(store.getReport().getItems().get(0).getPiecesSelected()));
checkedBoxCartonSelected.setText(String.valueOf(store.getReport().getItems().get(0).getCheckedCartonsSelected()));
checkedItemPerBoxSelected.setText(String.valueOf(store.getReport().getItems().get(0).getCheckedPacksSelected()));
checkedPiecesSelected.setText(String.valueOf(store.getReport().getItems().get(0).getCheckedPiecesSelected()));
//checkedItemPerBoxSelected.setText(String.valueOf(store.getReport().getItems().get(0).getCheckedPacksSelected()));
//checkedPiecesSelected.setText(String.valueOf(store.getReport().getItems().get(0).getCheckedPiecesSelected()));
cartonWeight.setText(String.valueOf(store.getReport().getItems().get(0).getCartonWeight()));
cartonLength.setText(String.valueOf(store.getReport().getItems().get(0).getCartonLength()));
@ -934,7 +960,6 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
}
} catch (Exception e) {
Log.e("Exception************","**********");
itemPerBox.setText("0");
pieces.setText("0");
boxCarton.setText("0");
@ -1014,16 +1039,21 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
store.getReport().getItems().get(0).setMarketplace(marketplaceOption);
}
String[] inspectionLevelArray = {"1", "2", "3"};
String[] inspectionLevelQuality = {"1.0", "1.5", "2.5", "4.0"};
ArrayAdapter<String> adapterInspectionLevel = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, inspectionLevelArray);
sp_inspectionLevel.setAdapter(adapterInspectionLevel);
//if (store.getReport().getItems().get(0).getInspectionLevel() == 0) {
ArrayAdapter<String> adapterInspectionLevel = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, inspectionLevelArray);
sp_inspectionLevel.setAdapter(adapterInspectionLevel);
// }
ArrayAdapter<String> adapterLevelMajor = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, inspectionLevelQuality);
sp_qLevelMajor.setAdapter(adapterLevelMajor);
// if (store.getReport().getItems().get(0).getMajorQualityLevel() == 0) {
ArrayAdapter<String> adapterLevelMajor = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, inspectionLevelQuality);
sp_qLevelMajor.setAdapter(adapterLevelMajor);
// }
// if (store.getReport().getItems().get(0).getMinorQualityLevel() == 0) {
ArrayAdapter<String> adapterLevelMinor = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, inspectionLevelQuality);
sp_qLevelMinor.setAdapter(adapterLevelMinor);
// }
ArrayAdapter<String> adapterLevelMinor = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, inspectionLevelQuality);
sp_qLevelMinor.setAdapter(adapterLevelMinor);
}
@ -1233,4 +1263,13 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener
}*/
}
/*@Override
public void onResume() {
super.onResume();
userSpInspection = true;
userSpMajor = true;
userSpMinor = true;
}*/
}

View File

@ -0,0 +1,47 @@
package com.utopiaindustries.qualitychecker.utils;
import android.app.Dialog;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import com.utopiaindustries.qualitychecker.R;
public class FullScreenImageDialog extends DialogFragment {
private Bitmap imageBitmap;
public FullScreenImageDialog(Bitmap imageBitmap) {
this.imageBitmap = imageBitmap;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
Dialog dialog = new Dialog(requireContext());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog_fullscreen_image);
/*ImageView imageView = dialog.findViewById(R.id.fullscreenImageView);
imageView.setImageBitmap(imageBitmap);*/
//imageView.setOnClickListener(v -> dismiss()); // Close on image click
ImageView imageView = dialog.findViewById(R.id.img_view);
imageView.setImageBitmap(imageBitmap);
ImageView btnClose = dialog.findViewById(R.id.btn_close);
btnClose.setOnClickListener(v -> dismiss());
dialog.getWindow().setLayout(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT
);
return dialog;
}
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="#80000000"/> <!-- Semi-transparent background -->
<size android:width="40dp" android:height="40dp"/>
</shape>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000">
<!--<ImageView
android:id="@+id/fullscreenImageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:contentDescription="Full-screen image" />-->
<com.ortiz.touchview.TouchImageView
android:id="@+id/img_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:id="@+id/btn_close"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_margin="3dp"
android:padding="5dp"
android:scaleType="centerInside"
android:background="@drawable/circle_background"
android:src="@drawable/ic_close"
android:contentDescription="Close"
android:layout_gravity="top|end" />
</FrameLayout>

View File

@ -511,7 +511,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:visibility="visible"
android:visibility="gone"
android:layout_margin="5dp"/>
<LinearLayout

View File

@ -339,7 +339,7 @@
android:id="@+id/result_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="0.8"
android:textSize="16sp"
android:textStyle="bold"
android:hint="Result Status" />
@ -349,14 +349,6 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:prompt="@string/spinner_title" />-->
<TextView
android:id="@+id/minor_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Minor"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/major_count"
@ -367,6 +359,15 @@
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/minor_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Minor"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/critical_count"
android:layout_width="wrap_content"
@ -408,7 +409,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Minor"
android:text="Major"
android:textSize="16sp"
android:textStyle="bold" />
@ -417,7 +418,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Major"
android:text="Minor"
android:textSize="16sp"
android:textStyle="bold" />