From 6dc0aa4617a20ab39eab0004803b1c82932c03b4 Mon Sep 17 00:00:00 2001 From: "saad.siddiq" Date: Mon, 28 Apr 2025 18:08:12 +0500 Subject: [PATCH] Permit to work Module Screens design --- app/src/main/AndroidManifest.xml | 117 ++++++----- .../activities/LoginActivity.java | 3 - .../ObservationNearMissActivity.java | 112 ++++++++++ .../ObservationOneActivity.java | 42 +++- .../ObservationTwoActivity.java | 192 ++++++++++++------ .../PermitToWorkForms/PermitOneActivity.java | 4 +- .../PermitToWorkForms/PermitTwoActivity.java | 37 +++- .../activities/SplashActivity.java | 57 ++++++ ...ImageAdapter.java => PTWImageAdapter.java} | 8 +- .../fragments/HomeFragment.java | 98 ++++++--- app/src/main/res/drawable/img_upload.xml | 5 + app/src/main/res/layout/activity_hse_one.xml | 1 + .../layout/activity_observation_near_miss.xml | 137 +++++++++++++ .../res/layout/activity_observation_one.xml | 6 +- .../main/res/layout/activity_permit_one.xml | 9 +- .../main/res/layout/activity_permit_two.xml | 43 ++-- app/src/main/res/layout/activity_splash.xml | 63 ++++++ app/src/main/res/layout/fragment_home.xml | 6 +- app/src/main/res/values/strings.xml | 2 + 19 files changed, 749 insertions(+), 193 deletions(-) create mode 100644 app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationNearMissActivity.java create mode 100644 app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/SplashActivity.java rename app/src/main/java/com/utopiaindustries/hseobservationsapp/adapters/{PaperWorkImageAdapter.java => PTWImageAdapter.java} (95%) create mode 100644 app/src/main/res/drawable/img_upload.xml create mode 100644 app/src/main/res/layout/activity_observation_near_miss.xml create mode 100644 app/src/main/res/layout/activity_splash.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5c287ad..461987f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -32,63 +32,10 @@ android:theme="@style/Theme.HSEObservationsApp" tools:targetApi="31"> - - - - - - - - - - - - - @@ -97,6 +44,66 @@ + + + + + + + + + + + + + + + { diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationNearMissActivity.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationNearMissActivity.java new file mode 100644 index 0000000..5d8e301 --- /dev/null +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationNearMissActivity.java @@ -0,0 +1,112 @@ +package com.utopiaindustries.hseobservationsapp.activities.ObservationForms; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.AdapterView; +import android.widget.AutoCompleteTextView; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.Toast; + +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; + +import com.utopiaindustries.hseobservationsapp.R; +import com.utopiaindustries.hseobservationsapp.adapters.ObservationClassAdapter; +import com.utopiaindustries.hseobservationsapp.adapters.ObservationSubClassAdapter; +import com.utopiaindustries.hseobservationsapp.models.Shift; + +import java.util.ArrayList; + +public class ObservationNearMissActivity extends AppCompatActivity { + + private AutoCompleteTextView observationTextview; + private ObservationClassAdapter observationClassAdapter; + private ArrayList obClassArrayList = new ArrayList<>(); + + private Button btnNext; + ImageView imgBack; + + String observationClass = ""; + EditText etDescription; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_observation_near_miss); + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { + Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); + return insets; + }); + + initializeLayout(); + + imgBack.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + + btnNext.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (isValidate()) { + + } + } + }); + + observationTextview.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + // Perform action when shiftTextview item is clicked + //Toast.makeText(ObservationNearMissActivity.this, "Item clicked: " + obClassArrayList.get(position).getTitle(), Toast.LENGTH_SHORT).show(); + + } + }); + } + + public void initializeLayout() { + observationTextview = findViewById(R.id.observation_near_textview); + btnNext = findViewById(R.id.btn_next); + imgBack = findViewById(R.id.img_back); + etDescription = findViewById(R.id.et_description); + + obClassArrayList.add(new Shift(1, "Option 1")); + obClassArrayList.add(new Shift(2, "Option 2")); + obClassArrayList.add(new Shift(3, "Option 3")); + + observationClassAdapter = new ObservationClassAdapter(this, obClassArrayList); + observationTextview.setAdapter(observationClassAdapter); + + } + + public boolean isValidate() { + boolean returnValue = true; + String message = ""; + + if (etDescription.getText().toString().isEmpty()) { + message = "Please enter description."; + returnValue = false; + } + + if (observationClass.isEmpty()) { + message = "Please select Location."; + returnValue = false; + } + + if (!returnValue) { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); + } + + return returnValue; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationOneActivity.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationOneActivity.java index cc5d7e7..683f053 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationOneActivity.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationOneActivity.java @@ -36,6 +36,8 @@ public class ObservationOneActivity extends AppCompatActivity { private Button btnNext; ImageView imgBack; + String observationClass = "", observationSubClass = ""; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -59,8 +61,17 @@ public class ObservationOneActivity extends AppCompatActivity { btnNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent intent = new Intent(ObservationOneActivity.this, ObservationTwoActivity.class); - startActivity(intent); + // if (isValidate()) { + if (observationClass.equalsIgnoreCase("Near Miss")) { + Intent intent = new Intent(ObservationOneActivity.this, ObservationNearMissActivity.class); + startActivity(intent); + } + else { + Intent intent = new Intent(ObservationOneActivity.this, ObservationTwoActivity.class); + startActivity(intent); + } + + // } } }); @@ -68,8 +79,8 @@ public class ObservationOneActivity extends AppCompatActivity { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { // Perform action when shiftTextview item is clicked - Toast.makeText(ObservationOneActivity.this, "Item clicked: " + obClassArrayList.get(position).getTitle(), Toast.LENGTH_SHORT).show(); - + //Toast.makeText(ObservationOneActivity.this, "Item clicked: " + obClassArrayList.get(position).getTitle(), Toast.LENGTH_SHORT).show(); + observationClass = obClassArrayList.get(position).getTitle(); } }); @@ -77,7 +88,7 @@ public class ObservationOneActivity extends AppCompatActivity { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { // Perform action when shiftTextview item is clicked - Toast.makeText(ObservationOneActivity.this, "Item clicked: " + obSubClassArrayList.get(position).getTitle(), Toast.LENGTH_SHORT).show(); + //Toast.makeText(ObservationOneActivity.this, "Item clicked: " + obSubClassArrayList.get(position).getTitle(), Toast.LENGTH_SHORT).show(); } }); @@ -103,4 +114,25 @@ public class ObservationOneActivity extends AppCompatActivity { observationSubClassAdapter = new ObservationSubClassAdapter(this, obSubClassArrayList); observationSubTextview.setAdapter(observationSubClassAdapter); } + + public boolean isValidate() { + boolean returnValue = true; + String message = ""; + + if (observationSubClass.isEmpty()) { + message = "Please select observation sub class."; + returnValue = false; + } + + if (observationClass.isEmpty()) { + message = "Please select observation class."; + returnValue = false; + } + + if (!returnValue) { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); + } + + return returnValue; + } } \ No newline at end of file diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationTwoActivity.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationTwoActivity.java index 65787ba..7039ecc 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationTwoActivity.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationTwoActivity.java @@ -1,6 +1,9 @@ package com.utopiaindustries.hseobservationsapp.activities.ObservationForms; +import static com.utopiaindustries.hseobservationsapp.R.*; + import android.Manifest; +import android.annotation.SuppressLint; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; @@ -60,7 +63,8 @@ import pub.devrel.easypermissions.AfterPermissionGranted; import pub.devrel.easypermissions.AppSettingsDialog; import pub.devrel.easypermissions.EasyPermissions; -public class ObservationTwoActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks{ +public class ObservationTwoActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks, + EasyPermissions.RationaleCallbacks{ private Button btnNext; ImageView imgBack; @@ -79,39 +83,62 @@ public class ObservationTwoActivity extends AppCompatActivity implements EasyPer String filePathBefore = "no_pic"; String filePathAfter = "no_pic"; + String imgType = ""; + // Activity Result Launcher for Gallery private final ActivityResultLauncher imagePickerLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { if (result.getResultCode() == RESULT_OK && result.getData() != null) { Uri selectedImage = result.getData().getData(); - Glide.with(this) - .load(selectedImage) // Glide will handle the decoding and placeholder - .placeholder(R.drawable.img_load) - .apply(new RequestOptions().centerCrop()) - .into(imgBefore); + if (imgType.equalsIgnoreCase("before")) { - uriToByteArrayAsync( - this, - selectedImage, - 200, // Target size in KB - compressedImage -> { - // Handle the compressed image here, e.g., display it - /*runOnUiThread(() -> { - itemModelList.get(selectedPosition).setImageUri(compressedImage); - List tempList = new ArrayList<>(); - tempList.add(compressedImage); - itemModelList.get(selectedPosition).setImageArrayList(tempList); - adapter.notifyItemChanged(selectedPosition); - });*/ - }, - error -> { - // Handle any errors - runOnUiThread(() -> { - Toast.makeText(this, "Error compressing image: " + error.getMessage(), Toast.LENGTH_SHORT).show(); - }); - } - ); + uriToByteArrayAsync( + this, + selectedImage, + 100, // Target size in KB + compressedImage -> { + // Handle the compressed image here, e.g., display it + runOnUiThread(() -> { + Glide.with(this) + .load(compressedImage) // Glide will handle the decoding and placeholder + .placeholder(R.drawable.img_load) + .apply(new RequestOptions().centerCrop()) + .into(imgBefore); + }); + }, + error -> { + // Handle any errors + runOnUiThread(() -> { + Toast.makeText(this, "Error compressing image: " + error.getMessage(), Toast.LENGTH_SHORT).show(); + }); + } + ); + + } + else { + uriToByteArrayAsync( + this, + selectedImage, + 100, // Target size in KB + compressedImage -> { + // Handle the compressed image here, e.g., display it + runOnUiThread(() -> { + Glide.with(this) + .load(compressedImage) // Glide will handle the decoding and placeholder + .placeholder(R.drawable.img_load) + .apply(new RequestOptions().centerCrop()) + .into(imgAfter); + }); + }, + error -> { + // Handle any errors + runOnUiThread(() -> { + Toast.makeText(this, "Error compressing image: " + error.getMessage(), Toast.LENGTH_SHORT).show(); + }); + } + ); + } } else if (result.getResultCode() == RESULT_CANCELED) { Toast.makeText(this, "Gallery Selection Cancelled!", Toast.LENGTH_SHORT).show(); @@ -126,35 +153,57 @@ public class ObservationTwoActivity extends AppCompatActivity implements EasyPer registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { if (result.getResultCode() == RESULT_OK) { - Uri contentUri = Uri.fromFile(new File((filePathBefore))); - Glide.with(this) - .load(contentUri) // Glide will handle the decoding and placeholder - .placeholder(R.drawable.img_load) - .apply(new RequestOptions().centerCrop()) - .into(imgAfter); + if (imgType.equalsIgnoreCase("before")) { + Uri contentUri = Uri.fromFile(new File((filePathBefore))); - uriToByteArrayAsync( - this, - contentUri, - 200, // Target size in KB - compressedImage -> { - // Handle the compressed image here, e.g., display it - /*runOnUiThread(() -> { - itemModelList.get(selectedPosition).setImageUri(compressedImage); - List tempList = new ArrayList<>(); - tempList.add(compressedImage); - itemModelList.get(selectedPosition).setImageArrayList(tempList); - adapter.notifyItemChanged(selectedPosition); - });*/ - }, - error -> { - // Handle any errors - runOnUiThread(() -> { - Toast.makeText(this, "Error compressing image: " + error.getMessage(), Toast.LENGTH_SHORT).show(); - }); - } - ); + uriToByteArrayAsync( + this, + contentUri, + 100, // Target size in KB + compressedImage -> { + // Handle the compressed image here, e.g., display it + runOnUiThread(() -> { + Glide.with(this) + .load(contentUri) // Glide will handle the decoding and placeholder + .placeholder(R.drawable.img_load) + .apply(new RequestOptions().centerCrop()) + .into(imgBefore); + }); + }, + error -> { + // Handle any errors + runOnUiThread(() -> { + Toast.makeText(this, "Error compressing image: " + error.getMessage(), Toast.LENGTH_SHORT).show(); + }); + } + ); + } + else { + Uri contentUri = Uri.fromFile(new File((filePathAfter))); + + uriToByteArrayAsync( + this, + contentUri, + 100, // Target size in KB + compressedImage -> { + // Handle the compressed image here, e.g., display it + runOnUiThread(() -> { + Glide.with(this) + .load(contentUri) // Glide will handle the decoding and placeholder + .placeholder(R.drawable.img_load) + .apply(new RequestOptions().centerCrop()) + .into(imgAfter); + }); + }, + error -> { + // Handle any errors + runOnUiThread(() -> { + Toast.makeText(this, "Error compressing image: " + error.getMessage(), Toast.LENGTH_SHORT).show(); + }); + } + ); + } } else if (result.getResultCode() == RESULT_CANCELED) { Toast.makeText(this, "Camera capture failed!", Toast.LENGTH_SHORT).show(); @@ -195,28 +244,30 @@ public class ObservationTwoActivity extends AppCompatActivity implements EasyPer imgBefore.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - alertForPictures(ObservationTwoActivity.this, "before"); + imgType = "before"; + alertForPictures(ObservationTwoActivity.this); } }); imgAfter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - alertForPictures(ObservationTwoActivity.this, "after"); + imgType = "after"; + alertForPictures(ObservationTwoActivity.this); } }); beforeCrossButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - + imgBefore.setImageResource(R.drawable.icon_image); } }); afterCrossButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - + imgAfter.setImageResource(R.drawable.icon_image); } }); @@ -256,7 +307,8 @@ public class ObservationTwoActivity extends AppCompatActivity implements EasyPer riskLevelTextview.setAdapter(riskLevelAdapter); } - public void alertForPictures(Context con, String imageType) { + @SuppressLint("MissingInflatedId") + public void alertForPictures(Context con) { ViewGroup viewGroup = findViewById(android.R.id.content); TextView dialogCameraBtn, dialogGalleryBtn; @@ -277,7 +329,7 @@ public class ObservationTwoActivity extends AppCompatActivity implements EasyPer public void onClick(View view) { alertDialog.dismiss(); - openCamera(imageType); + openCamera(); } }); @@ -287,7 +339,7 @@ public class ObservationTwoActivity extends AppCompatActivity implements EasyPer public void onClick(View view) { alertDialog.dismiss(); - openGallery(imageType); + openGallery(); } }); @@ -296,7 +348,7 @@ public class ObservationTwoActivity extends AppCompatActivity implements EasyPer } @AfterPermissionGranted(CAMERA_REQUEST) - public void openCamera(String imgType) { + public void openCamera() { if (hasCameraPermission()) { try { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); @@ -332,7 +384,7 @@ public class ObservationTwoActivity extends AppCompatActivity implements EasyPer } @AfterPermissionGranted(GALLERY_REQUEST) - public void openGallery(String imgType) { + public void openGallery() { if (hasGalleryPermission()) { // Have permission, do the thing! Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); @@ -460,10 +512,22 @@ public class ObservationTwoActivity extends AppCompatActivity implements EasyPer } @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + public void onRequestPermissionsResult(int requestCode, + @NonNull String[] permissions, + @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); // EasyPermissions handles the request result. EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } + + @Override + public void onRationaleAccepted(int requestCode) { + + } + + @Override + public void onRationaleDenied(int requestCode) { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitOneActivity.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitOneActivity.java index 4de81b2..a15bf76 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitOneActivity.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitOneActivity.java @@ -44,8 +44,8 @@ public class PermitOneActivity extends AppCompatActivity { btnNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - /*Intent intent = new Intent(PermitOneActivity.this, ObservationThreeActivity.class); - startActivity(intent);*/ + Intent intent = new Intent(PermitOneActivity.this, PermitTwoActivity.class); + startActivity(intent); } }); diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitTwoActivity.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitTwoActivity.java index 1de335d..1ddb0c7 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitTwoActivity.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitTwoActivity.java @@ -14,6 +14,7 @@ import android.os.Environment; import android.provider.MediaStore; import android.view.View; import android.widget.CheckBox; +import android.widget.ImageView; import android.widget.Toast; import androidx.activity.EdgeToEdge; @@ -25,10 +26,11 @@ import androidx.core.content.FileProvider; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.utopiaindustries.hseobservationsapp.R; -import com.utopiaindustries.hseobservationsapp.adapters.PaperWorkImageAdapter; +import com.utopiaindustries.hseobservationsapp.adapters.PTWImageAdapter; import com.utopiaindustries.hseobservationsapp.models.DocumentTypeImageModel; import java.io.ByteArrayOutputStream; @@ -48,13 +50,14 @@ public class PermitTwoActivity extends AppCompatActivity implements EasyPermissi EasyPermissions.RationaleCallbacks{ private CheckBox checkboxCompany, checkboxContractor; - RecyclerView paperRecyclerView; - PaperWorkImageAdapter imagePaperAdapter; + RecyclerView ptwRecyclerView; + PTWImageAdapter imagePaperAdapter; String paperFilePath = "no_pic"; ArrayList PaperImageList = new ArrayList<>(); String docTypeId = ""; String docTypeTitle = ""; private static final int CAMERA_REQUEST_PAPER = 101; + ImageView imgUpload, imgBack; // Activity Result Launcher for Paper Camera private final ActivityResultLauncher paperCameraLauncher = @@ -71,7 +74,7 @@ public class PermitTwoActivity extends AppCompatActivity implements EasyPermissi bitmapToByteArrayAsync( originalBitmap, - 200, // Target size in KB + 100, // Target size in KB imageBytes -> { this.runOnUiThread(() -> { @@ -136,13 +139,33 @@ public class PermitTwoActivity extends AppCompatActivity implements EasyPermissi } } }); + + imgUpload.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + openPaperCamera(); + } + }); + + imgBack.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } private void initializeLayouts() { checkboxCompany = findViewById(R.id.checkbox_company); checkboxContractor = findViewById(R.id.checkbox_contractor); + imgUpload = findViewById(R.id.img_upload); + imgBack = findViewById(R.id.img_back); - paperRecyclerView = findViewById(R.id.paperRecyclerView); + ptwRecyclerView = findViewById(R.id.ptwRecyclerView); + + imagePaperAdapter = new PTWImageAdapter(PaperImageList, this, ""); + ptwRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); + ptwRecyclerView.setAdapter(imagePaperAdapter); } @@ -153,7 +176,7 @@ public class PermitTwoActivity extends AppCompatActivity implements EasyPermissi Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File photoFile = null; try { - photoFile = createImageFile("Paper"); + photoFile = createImageFile(); } catch (IOException ex) { // Error occurred while creating the File } @@ -284,7 +307,7 @@ public class PermitTwoActivity extends AppCompatActivity implements EasyPermissi return bitmap; } - private File createImageFile(String pathType) throws IOException { + private File createImageFile() throws IOException { // Create an image file name String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = "JPEG_" + timeStamp + "_"; diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/SplashActivity.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/SplashActivity.java new file mode 100644 index 0000000..3551a24 --- /dev/null +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/SplashActivity.java @@ -0,0 +1,57 @@ +package com.utopiaindustries.hseobservationsapp.activities; + +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.widget.TextView; + +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; + +import com.utopiaindustries.hseobservationsapp.R; +import com.utopiaindustries.hseobservationsapp.helper.Helper; +import com.utopiaindustries.hseobservationsapp.helper.Preference; + +public class SplashActivity extends AppCompatActivity { + + private final int TIMER = 1200; + boolean isLoggedIn = false; + TextView txtVersion; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_splash); + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { + Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); + return insets; + }); + + txtVersion = findViewById(R.id.txt_version); + txtVersion.setText(getResources().getString(R.string.app_version)); + + isLoggedIn = Preference.getMyBooleanPref(Helper.project_file, "isLoggedIn", getApplicationContext()); + + new Handler().postDelayed(new Runnable() { + public void run() { + + if (isLoggedIn) { + Intent myIntent = new Intent(SplashActivity.this, DashboardActivity.class); + startActivity(myIntent); + overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); + finish(); + } else { + Intent myIntent = new Intent(SplashActivity.this, LoginActivity.class); + startActivity(myIntent); + overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); + finish(); + } + } + }, TIMER); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/adapters/PaperWorkImageAdapter.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/adapters/PTWImageAdapter.java similarity index 95% rename from app/src/main/java/com/utopiaindustries/hseobservationsapp/adapters/PaperWorkImageAdapter.java rename to app/src/main/java/com/utopiaindustries/hseobservationsapp/adapters/PTWImageAdapter.java index 79206cf..6d3cc6f 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/adapters/PaperWorkImageAdapter.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/adapters/PTWImageAdapter.java @@ -29,13 +29,13 @@ import com.utopiaindustries.hseobservationsapp.utils.FullScreenImageDialog; import java.io.IOException; import java.util.List; -public class PaperWorkImageAdapter extends RecyclerView.Adapter { +public class PTWImageAdapter extends RecyclerView.Adapter { List imageList; private Context context; String classType; - public PaperWorkImageAdapter(List imageList, Context context, String classType) { + public PTWImageAdapter(List imageList, Context context, String classType) { this.imageList = imageList; this.context = context; this.classType = classType; @@ -73,7 +73,7 @@ public class PaperWorkImageAdapter extends RecyclerView.Adapter formArrayList = new ArrayList<>(); - int selectedOption; + int selectedOption = 0; + String userName = ""; + String shiftName = ""; @Override public void onCreate(@Nullable Bundle savedInstanceState) { @@ -62,11 +66,11 @@ public class HomeFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment - View view = inflater.inflate(R.layout.fragment_home , container, false ); + View view = inflater.inflate(R.layout.fragment_home, container, false); initializeLayout(view); - txtUserName.setText("Supervisor Name"); + txtUserName.setText(String.format("Supervisor Name: %s", userName)); imgCalendar.setOnClickListener(new View.OnClickListener() { @Override @@ -79,7 +83,8 @@ public class HomeFragment extends Fragment { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { // Perform action when shiftTextview item is clicked - Toast.makeText(getActivity(), "Item clicked: " + shiftArrayList.get(position).getTitle(), Toast.LENGTH_SHORT).show(); + //Toast.makeText(getActivity(), "Item clicked: " + shiftArrayList.get(position).getTitle(), Toast.LENGTH_SHORT).show(); + shiftName = shiftArrayList.get(position).getTitle(); } }); @@ -88,7 +93,7 @@ public class HomeFragment extends Fragment { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { // Perform action when formTextview item is clicked - Toast.makeText(getActivity(), "Item clicked: " + formArrayList.get(position).getTitle(), Toast.LENGTH_SHORT).show(); + // Toast.makeText(getActivity(), "Item clicked: " + formArrayList.get(position).getTitle(), Toast.LENGTH_SHORT).show(); selectedOption = formArrayList.get(position).getId(); } @@ -97,32 +102,35 @@ public class HomeFragment extends Fragment { btnNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - switch (selectedOption) { - case 1: - startActivity(new Intent(getActivity(), ObservationOneActivity.class)); - break; - case 2: - startActivity(new Intent(getActivity(), PermitOneActivity.class)); - break; - case 3: - startActivity(new Intent(getActivity(), HseOneActivity.class)); - break; - case 4: - startActivity(new Intent(getActivity(), InjuryFormOne.class)); - break; - case 5: - startActivity(new Intent(getActivity(), WeeklyFormOne.class)); - break; - case 6: - startActivity(new Intent(getActivity(), ProgressiveActivity.class)); - break; - case 7: - startActivity(new Intent(getActivity(), OtherHseActivity.class)); - break; - default: - Toast.makeText(getActivity(), "No option selected", Toast.LENGTH_SHORT).show(); - break; - } + // if (isValidate()) { + switch (selectedOption) { + case 1: + startActivity(new Intent(getActivity(), ObservationOneActivity.class)); + break; + case 2: + startActivity(new Intent(getActivity(), PermitOneActivity.class)); + break; + case 3: + startActivity(new Intent(getActivity(), HseOneActivity.class)); + break; + case 4: + startActivity(new Intent(getActivity(), InjuryFormOne.class)); + break; + case 5: + startActivity(new Intent(getActivity(), WeeklyFormOne.class)); + break; + case 6: + startActivity(new Intent(getActivity(), ProgressiveActivity.class)); + break; + case 7: + startActivity(new Intent(getActivity(), OtherHseActivity.class)); + break; + default: + startActivity(new Intent(getActivity(), ObservationOneActivity.class)); + // Toast.makeText(getActivity(), "No option selected", Toast.LENGTH_SHORT).show(); + break; + } + // } } }); @@ -143,6 +151,8 @@ public class HomeFragment extends Fragment { shiftTextview = view.findViewById(R.id.shift_textview); formTextview = view.findViewById(R.id.form_textview); + userName = Preference.getMyStringPref(Helper.project_file, Helper.logInUser, getActivity()); + shiftArrayList.add(new Shift(1, "General Shift(08:00AM - 05:00PM)")); shiftArrayList.add(new Shift(2, "Evening Shift(12:00PM - 09:00PM)")); shiftArrayList.add(new Shift(3, "Night Shift(09:00PM - 06:00AM)")); @@ -180,4 +190,30 @@ public class HomeFragment extends Fragment { ); datePickerDialog.show(); } + + public boolean isValidate() { + boolean returnValue = true; + String message = ""; + + if (selectedOption == 0) { + message = "Please select form type."; + returnValue = false; + } + + if (shiftName.isEmpty()) { + message = "Please select shift."; + returnValue = false; + } + + if (txtDate.getText().toString().isEmpty()) { + message = "Please select date."; + returnValue = false; + } + + if (!returnValue) { + Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show(); + } + + return returnValue; + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/img_upload.xml b/app/src/main/res/drawable/img_upload.xml new file mode 100644 index 0000000..43ea751 --- /dev/null +++ b/app/src/main/res/drawable/img_upload.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/layout/activity_hse_one.xml b/app/src/main/res/layout/activity_hse_one.xml index 3518ea7..7b9a9ec 100644 --- a/app/src/main/res/layout/activity_hse_one.xml +++ b/app/src/main/res/layout/activity_hse_one.xml @@ -53,6 +53,7 @@ + + + + + + + + + + + + + + + + + + + + + + + +