Initial commit

master
saad.siddiq 2024-11-23 09:54:03 +05:00
commit f35e7c534b
154 changed files with 11640 additions and 0 deletions

15
.gitignore vendored Normal file
View File

@ -0,0 +1,15 @@
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties

3
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

1
.idea/.name Normal file
View File

@ -0,0 +1 @@
QualityControl-App

6
.idea/compiler.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="17" />
</component>
</project>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetSelector">
<selectionStates>
<SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" />
</SelectionState>
</selectionStates>
</component>
</project>

19
.idea/gradle.xml Normal file
View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
<option name="resolveExternalAnnotations" value="false" />
</GradleProjectSettings>
</option>
</component>
</project>

10
.idea/migrations.xml Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectMigrations">
<option name="MigrateToGradleLocalJavaHome">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
</component>
</project>

10
.idea/misc.xml Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

1
app/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build

46
app/build.gradle Normal file
View File

@ -0,0 +1,46 @@
plugins {
alias(libs.plugins.android.application)
}
android {
namespace 'com.utopiaindustries.qualitycontrol'
compileSdk 34
defaultConfig {
applicationId "com.utopiaindustries.qualitycontrol"
minSdk 24
targetSdk 34
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation libs.appcompat
implementation libs.material
implementation libs.activity
implementation libs.constraintlayout
testImplementation libs.junit
androidTestImplementation libs.ext.junit
androidTestImplementation libs.espresso.core
implementation libs.retrofit.v290
implementation libs.converter.gson
implementation libs.glide
implementation libs.easypermissions
}

21
app/proguard-rules.pro vendored Normal file
View File

@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@ -0,0 +1,26 @@
package com.utopiaindustries.qualitycontrol;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("com.utopiaindustries.qualitycontrol", appContext.getPackageName());
}
}

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@drawable/search"
android:label="@string/app_name"
android:roundIcon="@drawable/search"
android:supportsRtl="true"
android:theme="@style/Theme.QualityControlApp"
tools:targetApi="31">
<activity
android:name=".activities.SummaryActivity"
android:exported="false" />
<activity
android:name=".activities.SplashActivity"
android:exported="true"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activities.HomeActivity"
android:exported="true"/>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.utopiaindustries.qualitycontrol"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>
</manifest>

View File

@ -0,0 +1,152 @@
package com.utopiaindustries.qualitycontrol.activities;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
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 androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.utopiaindustries.qualitycontrol.R;
import com.utopiaindustries.qualitycontrol.fragments.CheckingFragment;
import com.utopiaindustries.qualitycontrol.fragments.CuttingFragment;
import com.utopiaindustries.qualitycontrol.fragments.HomeFragment;
import com.utopiaindustries.qualitycontrol.fragments.PackingFragment;
import com.utopiaindustries.qualitycontrol.fragments.StitchingFragment;
import com.utopiaindustries.qualitycontrol.fragments.SubStoreFragment;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
public class HomeActivity extends AppCompatActivity {
private int currentFragmentIndex = 0;
private final List<Fragment> fragmentList = new ArrayList<>();
//Button btnNext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_home);
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;
});
//btnNext = findViewById(R.id.btn_next);
// Initialize fragments
/*fragmentList.add(new HomeFragment());
fragmentList.add(new CuttingFragment());
fragmentList.add(new StitchingFragment());
fragmentList.add(new CheckingFragment());
fragmentList.add(new PackingFragment());
fragmentList.add(new SubStoreFragment());*/
// Load the first fragment
//loadFragment(fragmentList.get(currentFragmentIndex));
/*btnNext.setOnClickListener(v -> navigateNext());*/
// Load the first fragment only if there's no saved instance
if (savedInstanceState == null) {
navigateToFragment(new HomeFragment(), false);
}
}
public void navigateToFragment(Fragment fragment, boolean addToBackStack) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction()
.replace(R.id.fragment_container, fragment);
if (addToBackStack) {
transaction.addToBackStack(null); // Add to the back stack
}
transaction.commit();
}
// Method to navigate to a specific fragment
/*public void navigateToFragment(Fragment fragment, boolean addToBackStack) {
androidx.fragment.app.FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, fragment);
if (addToBackStack) {
transaction.addToBackStack(null);
}
transaction.commit();
}*/
/*private void navigateNext() {
if (currentFragmentIndex < fragmentList.size() - 1) {
currentFragmentIndex++;
loadFragment(fragmentList.get(currentFragmentIndex));
// Change button text to "Finish" on the last fragment
if (currentFragmentIndex == fragmentList.size() - 1) {
Button btnNext = findViewById(R.id.btn_next);
btnNext.setText("Finish");
}
} else {
// Navigate to Summary Activity
Intent intent = new Intent(this, SummaryActivity.class);
startActivity(intent);
finish();
}
}*/
private void loadFragment(Fragment fragment) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, fragment)
.addToBackStack(null)
.commit();
}
/*@Override
public void onBackPressed() {
*//*Fragment myFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if (myFragment instanceof CuttingFragment) {
finish();
} else {
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
getSupportFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}*//*
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
Log.i("TAG", "=============onBackPressed - Popping backstack====");
getSupportFragmentManager().popBackStack();
} else {
Log.i("TAG", "=============onBackPressed called because nothing on backstack====");
super.onBackPressed();
}
}*/
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
getSupportFragmentManager().popBackStack(); // Go back to the previous fragment
} else {
super.onBackPressed(); // Exit the activity
}
}
}

View File

@ -0,0 +1,62 @@
package com.utopiaindustries.qualitycontrol.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.qualitycontrol.R;
import com.utopiaindustries.qualitycontrol.helper.Helper;
import com.utopiaindustries.qualitycontrol.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() {
Intent myIntent = new Intent(SplashActivity.this, HomeActivity.class);
startActivity(myIntent);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
finish();
/* if (isLoggedIn) {
Intent myIntent = new Intent(SplashActivity.this, MainActivity.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);
}
}

View File

@ -0,0 +1,26 @@
package com.utopiaindustries.qualitycontrol.activities;
import android.os.Bundle;
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.qualitycontrol.R;
public class SummaryActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_summary);
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;
});
}
}

View File

@ -0,0 +1,70 @@
package com.utopiaindustries.qualitycontrol.adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.utopiaindustries.qualitycontrol.R;
import java.util.List;
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> {
//private byte[] file;
//private List<String> imageList;
List<byte[]> imageList;
private Context context;
public ImageAdapter(List<byte[]> imageList, Context context) {
this.imageList = imageList;
this.context = context;
}
@NonNull
@Override
public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_image, parent, false);
return new ImageViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {
//holder.imageView.setImageBitmap(null);
holder.imageView.setImageResource(R.drawable.img_load);
//Bitmap bitmap = BitmapFactory.decodeByteArray( imageList.get(position), 0 , imageList.get(position).length );
//holder.imageView.setImageBitmap( bitmap );
/*Glide.with(context)
.load(bitmap) // Load the Bitmap directly
.placeholder(R.drawable.img_load)
.apply(new RequestOptions().centerCrop()) // Optional: apply transformations like center crop
.into(holder.imageView);*/
Glide.with(context)
.load(imageList.get(position)) // Glide will handle the decoding and placeholder
.placeholder(R.drawable.img_load)
.apply(new RequestOptions().centerCrop())
.into(holder.imageView);
}
@Override
public int getItemCount() {
return imageList.size();
}
public class ImageViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
public ImageViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.imageView);
}
}
}

View File

@ -0,0 +1,85 @@
package com.utopiaindustries.qualitycontrol.adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.utopiaindustries.qualitycontrol.R;
import com.utopiaindustries.qualitycontrol.models.Item;
import java.util.List;
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemViewHolder> {
private final Context context;
private final List<Item> items;
private final String[] dropdownOptions = {"1", "2", "3", "4", "5"};
public ItemAdapter(Context context, List<Item> items) {
this.context = context;
this.items = items;
}
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item_recycler_view, parent, false);
return new ItemViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
Item currentItem = items.get(position);
holder.tvItemName.setText(currentItem.getName());
ArrayAdapter<String> adapter = new ArrayAdapter<>(context,R.layout.spinner_style,dropdownOptions);
adapter.setDropDownViewResource(R.layout.spinner_style);
// Set up the Spinner (Dropdown)
/*ArrayAdapter<String> adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, dropdownOptions);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);*/
holder.spinnerOptions.setAdapter(adapter);
// Preselect an option if needed
holder.spinnerOptions.setSelection(currentItem.getSelectedOption());
// Save selected option when user selects one
holder.spinnerOptions.setOnItemSelectedListener(new android.widget.AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(android.widget.AdapterView<?> parent, View view, int position, long id) {
currentItem.setSelectedOption(position); // Save the selected option
if (currentItem.getSelectedOption() != position) { // Avoid unnecessary updates
currentItem.setSelectedOption(position); // Save the selected option
}
}
@Override
public void onNothingSelected(android.widget.AdapterView<?> parent) {
// Do nothing
}
});
}
@Override
public int getItemCount() {
return items.size();
}
public static class ItemViewHolder extends RecyclerView.ViewHolder {
TextView tvItemName;
Spinner spinnerOptions;
public ItemViewHolder(@NonNull View itemView) {
super(itemView);
tvItemName = itemView.findViewById(R.id.tv_item_name);
spinnerOptions = itemView.findViewById(R.id.spinner_item_options);
}
}
}

View File

@ -0,0 +1,31 @@
package com.utopiaindustries.qualitycontrol.apiservice;
import com.utopiaindustries.qualitycontrol.models.QualityControlResponse;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface ApiService {
/*@GET("rest/uic/inspection-report")
Call<List<Container>> fetchAllReports(
@Query("username") String username
);*/
@GET("rest/application/authenticate-user")
Call<QualityControlResponse> isUserAuthenticated(
@Query("username") String username,
@Query("password") String password
);
/*@POST("rest/application/save-truck-load")
Call<PickResponse> pickTruckLoad(
@Body PickupRequest request
);*/
}

View File

@ -0,0 +1,17 @@
package com.utopiaindustries.qualitycontrol.apiservice;
import retrofit2.Retrofit;
public class ApiServiceFactory {
private static ApiService apiService;
public synchronized static ApiService getApiService() {
if ( apiService == null ) {
Retrofit retrofit = RetrofitClient.getClient();
apiService = retrofit.create( ApiService.class );
}
return apiService;
}
}

View File

@ -0,0 +1,45 @@
package com.utopiaindustries.qualitycontrol.apiservice;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class RetrofitClient {
private final static String BASE_URL = "http://192.168.90.228:8080/cosmos/";
private static Retrofit retrofit;
public synchronized static Retrofit getClient() {
Gson gson = new GsonBuilder()
//.registerTypeAdapter(Boolean.class, new BooleanTypeAdapter())
.create();
if (retrofit == null) {
try {
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(40, TimeUnit.SECONDS)
.readTimeout(40, TimeUnit.SECONDS)
.writeTimeout(40, TimeUnit.SECONDS)
.build();
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return retrofit;
}
}

View File

@ -0,0 +1,72 @@
package com.utopiaindustries.qualitycontrol.fragments;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.utopiaindustries.qualitycontrol.R;
import com.utopiaindustries.qualitycontrol.activities.HomeActivity;
import com.utopiaindustries.qualitycontrol.adapters.ImageAdapter;
import com.utopiaindustries.qualitycontrol.adapters.ItemAdapter;
import com.utopiaindustries.qualitycontrol.models.Item;
import java.util.ArrayList;
import java.util.List;
public class CheckingFragment extends Fragment {
RecyclerView recyclerView, imageRecyclerView;
ImageAdapter imageAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_checking, container, false);
initializeLayout(view);
List<Item> itemList = new ArrayList<>();
itemList.add(new Item("Sort", 0));
itemList.add(new Item("Set in Order", 0));
itemList.add(new Item("Shine", 0));
itemList.add(new Item("Standardize", 0));
itemList.add(new Item("Sustain", 0));
itemList.add(new Item("Safety", 0));
// Set up RecyclerView
ItemAdapter adapter = new ItemAdapter(getActivity(), itemList);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(adapter);
Button nextButton = view.findViewById(R.id.btn_next);
nextButton.setOnClickListener(v -> {
if (getActivity() instanceof HomeActivity) {
((HomeActivity) getActivity()).navigateToFragment(new PackingFragment(), true);
}
});
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
private void initializeLayout(View view) {
recyclerView = view.findViewById(R.id.recycler_view_checking);
imageRecyclerView = view.findViewById(R.id.imageRecyclerView);
imageRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
}
}

View File

@ -0,0 +1,427 @@
package com.utopiaindustries.qualitycontrol.fragments;
import static android.app.Activity.RESULT_OK;
import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.core.content.FileProvider;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import com.utopiaindustries.qualitycontrol.R;
import com.utopiaindustries.qualitycontrol.activities.HomeActivity;
import com.utopiaindustries.qualitycontrol.adapters.ImageAdapter;
import com.utopiaindustries.qualitycontrol.adapters.ItemAdapter;
import com.utopiaindustries.qualitycontrol.models.Item;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Array;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.function.Consumer;
import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.EasyPermissions;
public class CuttingFragment extends Fragment {
RecyclerView recyclerView, imageRecyclerView;
ImageAdapter imageAdapter;
Button nextButton;
ImageButton imagePicker, deleteImage;
private static final int CAMERA_REQUEST = 100;
private static final int GALLERY_REQUEST = 200;
String filePath = "no_pic";
ArrayList<byte[]> imageList = new ArrayList<>();
// Activity Result Launcher for Gallery
private final ActivityResultLauncher<Intent> imagePickerLauncher =
registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
if (result.getResultCode() == requireActivity().RESULT_OK && result.getData() != null) {
Uri selectedImage = result.getData().getData();
if (selectedImage != null) {
//imageView.setImageURI(selectedImage);
Log.e("Selected-Image: ", "" + selectedImage);
uriToByteArrayAsync(
getContext(),
selectedImage,
100, // Target size in KB
compressedImage -> {
// Handle the compressed image here, e.g., display it
requireActivity().runOnUiThread(() -> {
//store.getReport().getItems().get(0).getCheckPoints().get(requestCode).addImageList(compressedImage);
imageList.add(compressedImage);
imageAdapter.notifyDataSetChanged();
});
},
error -> {
// Handle any errors
requireActivity().runOnUiThread(() -> {
Toast.makeText(getContext(), "Error compressing image: " + error.getMessage(), Toast.LENGTH_SHORT).show();
});
}
);
}
}
});
// Activity Result Launcher for Camera
private final ActivityResultLauncher<Intent> cameraLauncher =
registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
Uri contentUri = Uri.fromFile(new File((filePath)));
uriToByteArrayAsync(
getContext(),
contentUri,
100, // Target size in KB
compressedImage -> {
// Handle the compressed image here, e.g., display it
requireActivity().runOnUiThread(() -> {
//store.getReport().getItems().get(0).getCheckPoints().get(requestCode).addImageList(compressedImage);
imageList.add(compressedImage);
imageAdapter.notifyDataSetChanged();
});
},
error -> {
// Handle any errors
requireActivity().runOnUiThread(() -> {
Toast.makeText(getContext(), "Error compressing image: " + error.getMessage(), Toast.LENGTH_SHORT).show();
});
}
);
Log.e("contentUri: ", "" + contentUri);
if (result.getResultCode() == requireActivity().RESULT_OK && result.getData() != null) {
Uri selectedImage = result.getData().getData();
if (selectedImage != null) {
//imageView.setImageURI(selectedImage);
Log.e("Selected-Image: ", "" + selectedImage);
}
}
});
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_cutting, container, false);
initializeLayout(view);
List<Item> itemList = new ArrayList<>();
itemList.add(new Item("Sort", 0));
itemList.add(new Item("Set in Order", 0));
itemList.add(new Item("Shine", 0));
itemList.add(new Item("Standardize", 0));
itemList.add(new Item("Sustain", 0));
itemList.add(new Item("Safety", 0));
// Set up RecyclerView
ItemAdapter adapter = new ItemAdapter(getActivity(), itemList);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(adapter);
imageAdapter = new ImageAdapter(imageList, getActivity());
imageRecyclerView.setAdapter(imageAdapter);
nextButton.setOnClickListener(v -> {
if (getActivity() instanceof HomeActivity) {
((HomeActivity) getActivity()).navigateToFragment(new StitchingFragment(), true);
}
});
imagePicker.setOnClickListener(v -> {
showAlertDialog(view);
});
deleteImage.setOnClickListener(v -> {
});
return view;
}
private void initializeLayout(View view) {
imagePicker = view.findViewById(R.id.image_picker);
deleteImage = view.findViewById(R.id.delete_image);
nextButton = view.findViewById(R.id.btn_next);
recyclerView = view.findViewById(R.id.recycler_view_cutting);
imageRecyclerView = view.findViewById(R.id.imageRecyclerView);
imageRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
public void showAlertDialog(View view) {
ViewGroup viewGroup = view.findViewById(android.R.id.content);
TextView txt_camera, txt_gallery, txt_cancel;
AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity());
View view1 = LayoutInflater.from(getActivity()).inflate(R.layout.custom_layout, viewGroup, false);
builder.setCancelable(false);
builder.setView(view1);
txt_camera = view1.findViewById(R.id.txt_camera);
txt_gallery = view1.findViewById(R.id.txt_gallery);
txt_cancel = view1.findViewById(R.id.txt_cancel);
AlertDialog alertDialog = builder.create();
Objects.requireNonNull(alertDialog.getWindow()).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
txt_camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
alertDialog.dismiss();
openCamera();
}
});
txt_gallery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
alertDialog.dismiss();
openGallery();
}
});
txt_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
alertDialog.dismiss();
}
});
alertDialog.show();
}
@AfterPermissionGranted(GALLERY_REQUEST)
public void openCamera() {
if (hasCameraPermission()) {
Log.e("hasCameraPermission: ", "true");
// Have permission, do the thing!
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// Ensure that there's a camera activity to handle the intent
if (takePictureIntent.resolveActivity(requireActivity().getPackageManager()) != null) {
// Create the File where the photo should go
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
}
// Continue only if the File was successfully created
if (photoFile != null) {
Uri photoURI = FileProvider.getUriForFile(requireActivity(),
"com.utopiaindustries.qualitycontrol",
photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
//startActivityForResult(takePictureIntent, CAMERA_REQUEST);
cameraLauncher.launch(takePictureIntent);
}
}
} else {
// Ask for one permission
String[] perms = {};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
Log.e("TIRAMISU: ", "***");
perms = new String[]{Manifest.permission.READ_MEDIA_IMAGES, Manifest.permission.CAMERA};
} else {
Log.e("Not-TIRAMISU: ", "***");
perms = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA};
}
//Log.e("perms: ",""+perms.length);
EasyPermissions.requestPermissions(this, getString(R.string.rationale_camera), CAMERA_REQUEST, perms);
}
}
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);
// Start the Intent
//startActivityForResult(galleryIntent, GALLERY_REQUEST);
imagePickerLauncher.launch(galleryIntent);
} else {
// Ask for one permission
String[] perms = {};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
perms = new String[]{Manifest.permission.READ_MEDIA_IMAGES};
} else {
perms = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
}
EasyPermissions.requestPermissions(this, getString(R.string.rationale_camera), GALLERY_REQUEST, perms);
}
}
private boolean hasGalleryPermission() {
String[] perms = {};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
perms = new String[]{Manifest.permission.READ_MEDIA_IMAGES};
} else {
perms = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
}
return EasyPermissions.hasPermissions(requireActivity(), perms);
}
private boolean hasCameraPermission() {
String[] perms = {};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
//Log.e("TIRAMISU: ","***");
perms = new String[]{Manifest.permission.READ_MEDIA_IMAGES, Manifest.permission.CAMERA};
} else {
//Log.e("Not-TIRAMISU: ","***");
perms = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA};
}
//Log.e("perms: ",""+perms);
return EasyPermissions.hasPermissions(requireActivity(), perms);
}
private File createImageFile() throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = requireActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
filePath = image.getAbsolutePath();
return image;
}
/*public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == GALLERY_REQUEST) {
Log.e("=====From Gallery", "=========");
Uri contentUri = data.getData();
//filePath = Helper.getPath(contentUri, this);
*//*try {
//For Cropping purposes
String currentTimeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
File destinationFile = new File(getCacheDir(), "croppedImage.png" + currentTimeStamp);
Uri destinationUri = Uri.fromFile(destinationFile);
} catch (Exception e) {
Log.e("=====From Gallery error", "=========" + e.getMessage());
e.printStackTrace();
}*//*
} else if (requestCode == CAMERA_REQUEST) {
//Log.e("=====From Camera", "=========" + filePath);
// rotatedBitmap = Helper.getBitmap(filePath);
//For Cropping purposes
*//*String currentTimeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
File destinationFile = new File(getCacheDir(), "croppedImage.png" + currentTimeStamp);
Uri destinationUri = Uri.fromFile(destinationFile);
Uri contentUri = Uri.fromFile(new File((filePath)));*//*
}
}
}*/
public void uriToByteArrayAsync(
Context context,
Uri uri,
int targetSizeInKB,
Consumer<byte[]> onSuccess,
Consumer<Exception> onError
) {
new Thread(() -> {
try {
int targetSizeInBytes = targetSizeInKB * 1024;
// Load the image as a Bitmap without scaling
Bitmap bitmap;
try (InputStream inputStream = context.getContentResolver().openInputStream(uri)) {
bitmap = BitmapFactory.decodeStream(inputStream);
}
if (bitmap == null) {
throw new IOException("Failed to decode image from URI.");
}
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int minQuality = 10;
int maxQuality = 100;
int quality = maxQuality;
// Binary search for the best quality that meets the target size
while (minQuality <= maxQuality) {
byteArrayOutputStream.reset();
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, byteArrayOutputStream);
int byteSize = byteArrayOutputStream.size();
if (byteSize > targetSizeInBytes) {
maxQuality = quality - 1;
} else {
minQuality = quality + 1;
}
quality = (minQuality + maxQuality) / 2;
}
onSuccess.accept(byteArrayOutputStream.toByteArray());
} catch (IOException e) {
onError.accept(e);
}
}).start();
}
}

View File

@ -0,0 +1,91 @@
package com.utopiaindustries.qualitycontrol.fragments;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.TextView;
import com.utopiaindustries.qualitycontrol.R;
import com.utopiaindustries.qualitycontrol.activities.HomeActivity;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class HomeFragment extends Fragment {
AutoCompleteTextView locationTextview, departmentTextView, floorTextview;
TextView txtCurrentDate;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
initializeLayout(view);
String date = new SimpleDateFormat("EEEE, MMM d, yyyy", Locale.getDefault()).format(new Date());
txtCurrentDate.setText(date);
locationTextview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
String item = adapterView.getItemAtPosition(position).toString();
Log.e("Item-----------: ", "" + item);
}
});
departmentTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
String item = adapterView.getItemAtPosition(position).toString();
Log.e("Item-----------: ", "" + item);
}
});
floorTextview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
String item = adapterView.getItemAtPosition(position).toString();
Log.e("Item-----------: ", "" + item);
}
});
Button nextButton = view.findViewById(R.id.btn_next);
nextButton.setOnClickListener(v -> {
if (getActivity() instanceof HomeActivity) {
((HomeActivity) getActivity()).navigateToFragment(new CuttingFragment(), true);
}
});
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
public void initializeLayout(View view) {
txtCurrentDate = view.findViewById(R.id.txt_current_date);
locationTextview = view.findViewById(R.id.location_textview);
departmentTextView = view.findViewById(R.id.department_textview);
floorTextview = view.findViewById(R.id.floor_textview);
}
}

View File

@ -0,0 +1,72 @@
package com.utopiaindustries.qualitycontrol.fragments;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.utopiaindustries.qualitycontrol.R;
import com.utopiaindustries.qualitycontrol.activities.HomeActivity;
import com.utopiaindustries.qualitycontrol.adapters.ImageAdapter;
import com.utopiaindustries.qualitycontrol.adapters.ItemAdapter;
import com.utopiaindustries.qualitycontrol.models.Item;
import java.util.ArrayList;
import java.util.List;
public class PackingFragment extends Fragment {
RecyclerView recyclerView, imageRecyclerView;
ImageAdapter imageAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_packing, container, false);
initializeLayout(view);
List<Item> itemList = new ArrayList<>();
itemList.add(new Item("Sort", 0));
itemList.add(new Item("Set in Order", 0));
itemList.add(new Item("Shine", 0));
itemList.add(new Item("Standardize", 0));
itemList.add(new Item("Sustain", 0));
itemList.add(new Item("Safety", 0));
// Set up RecyclerView
ItemAdapter adapter = new ItemAdapter(getActivity(), itemList);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(adapter);
Button nextButton = view.findViewById(R.id.btn_next);
nextButton.setOnClickListener(v -> {
if (getActivity() instanceof HomeActivity) {
((HomeActivity) getActivity()).navigateToFragment(new SubStoreFragment(), true);
}
});
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
private void initializeLayout(View view) {
recyclerView = view.findViewById(R.id.recycler_view_packing);
imageRecyclerView = view.findViewById(R.id.imageRecyclerView);
imageRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
}
}

View File

@ -0,0 +1,72 @@
package com.utopiaindustries.qualitycontrol.fragments;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.utopiaindustries.qualitycontrol.R;
import com.utopiaindustries.qualitycontrol.activities.HomeActivity;
import com.utopiaindustries.qualitycontrol.adapters.ImageAdapter;
import com.utopiaindustries.qualitycontrol.adapters.ItemAdapter;
import com.utopiaindustries.qualitycontrol.models.Item;
import java.util.ArrayList;
import java.util.List;
public class StitchingFragment extends Fragment {
RecyclerView recyclerView, imageRecyclerView;
ImageAdapter imageAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_stitching, container, false);
initializeLayout(view);
List<Item> itemList = new ArrayList<>();
itemList.add(new Item("Sort", 0));
itemList.add(new Item("Set in Order", 0));
itemList.add(new Item("Shine", 0));
itemList.add(new Item("Standardize", 0));
itemList.add(new Item("Sustain", 0));
itemList.add(new Item("Safety", 0));
// Set up RecyclerView
ItemAdapter adapter = new ItemAdapter(getActivity(), itemList);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(adapter);
Button nextButton = view.findViewById(R.id.btn_next);
nextButton.setOnClickListener(v -> {
if (getActivity() instanceof HomeActivity) {
((HomeActivity) getActivity()).navigateToFragment(new CheckingFragment(), true);
}
});
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
private void initializeLayout(View view) {
recyclerView = view.findViewById(R.id.recycler_view_stitching);
imageRecyclerView = view.findViewById(R.id.imageRecyclerView);
imageRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
}
}

View File

@ -0,0 +1,74 @@
package com.utopiaindustries.qualitycontrol.fragments;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.utopiaindustries.qualitycontrol.R;
import com.utopiaindustries.qualitycontrol.activities.HomeActivity;
import com.utopiaindustries.qualitycontrol.activities.SummaryActivity;
import com.utopiaindustries.qualitycontrol.adapters.ImageAdapter;
import com.utopiaindustries.qualitycontrol.adapters.ItemAdapter;
import com.utopiaindustries.qualitycontrol.models.Item;
import java.util.ArrayList;
import java.util.List;
public class SubStoreFragment extends Fragment {
RecyclerView recyclerView, imageRecyclerView;
ImageAdapter imageAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_sub_store, container, false);
initializeLayout(view);
List<Item> itemList = new ArrayList<>();
itemList.add(new Item("Sort", 0));
itemList.add(new Item("Set in Order", 0));
itemList.add(new Item("Shine", 0));
itemList.add(new Item("Standardize", 0));
itemList.add(new Item("Sustain", 0));
itemList.add(new Item("Safety", 0));
// Set up RecyclerView
ItemAdapter adapter = new ItemAdapter(getActivity(), itemList);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(adapter);
Button nextButton = view.findViewById(R.id.btn_next);
nextButton.setOnClickListener(v -> {
Intent intent = new Intent(getActivity(), SummaryActivity.class);
startActivity(intent);
getActivity().finish();
});
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
private void initializeLayout(View view) {
recyclerView = view.findViewById(R.id.recycler_view_substore);
imageRecyclerView = view.findViewById(R.id.imageRecyclerView);
imageRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
}
}

View File

@ -0,0 +1,25 @@
package com.utopiaindustries.qualitycontrol.helper;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.preference.PreferenceManager;
import android.text.TextUtils;
import com.google.gson.Gson;
public class Helper {
public static final String project_file = "Quality-Control";
public static boolean isValidEmail(CharSequence target) {
return !TextUtils.isEmpty(target) && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}
public static boolean isNetworkConnected(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo();
return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
}
}

View File

@ -0,0 +1,77 @@
package com.utopiaindustries.qualitycontrol.helper;
import android.content.Context;
import android.content.SharedPreferences;
public class Preference {
private static final int PREFERENCE_MODE_PRIVATE = 0;
private static String MY_STRING_PREF = "mystringpref";
public static String LOGIN_FILE = "login_prefs";
public static String TEMP_FILE = "temp_prefs";
public static String KEY_PIN_CODE = "pin_code";
public static String KEY_CUSTOMER_ID = "cus_id";
public static String KEY_CUSTOMER_NAME = "cus_name";
public static String KEY_USER_IS_MASTER = "user_is_master";
public static SharedPreferences getPrefs(String nameOfFile, Context context) {
return context.getSharedPreferences(nameOfFile, Context.MODE_PRIVATE);
}
public static boolean containsKey(String fileName, String key, Context context) {
return getPrefs(fileName, context).contains(key);
}
public static String getMyStringPref(String fileName, String key, Context context) {
return getPrefs(fileName,context).getString(key, "default");
}
public static boolean getMyBooleanPref(String fileName, String key, Context context) {
return getPrefs(fileName,context).getBoolean(key,false);
}
public static int getMyIntPref(String fileName, String key, Context context) {
return getPrefs(fileName,context).getInt(key, 0);
}
public static long getMyLongPref(String fileName, String key, Context context) {
return getPrefs(fileName,context).getLong(key, 0);
}
public static void setMyLongPref(String fileName, String key, Context context, long value) {
// perform validation etc..
getPrefs(fileName,context).edit().putLong(key, value).apply();
}
public static void setMyStringPref(String fileName, String key, Context context, String value) {
// perform validation etc..
getPrefs(fileName,context).edit().putString(key, value).apply();
}
public static void setMyBooleanPref(String fileName, String key, Context context, boolean value) {
// perform validation etc..
getPrefs(fileName,context).edit().putBoolean(key, value).apply();
}
public static void setMyIntPref(String fileName, String key, Context context, int value) {
// perform validation etc..
getPrefs(fileName,context).edit().putInt(key, value).apply();
}
public static void remove(String fileName, String key, Context context) {
// perform validation etc..
getPrefs(fileName,context).edit().remove(key).apply();
}
public static void removeAll(String fileName, Context context) {
// perform validation etc..
getPrefs(fileName,context).edit().clear().apply();
}
}

View File

@ -0,0 +1,24 @@
package com.utopiaindustries.qualitycontrol.models;
public class Item {
private final String name;
private int selectedOption; // Index of the selected dropdown option
public Item(String name, int selectedOption) {
this.name = name;
this.selectedOption = selectedOption;
}
public String getName() {
return name;
}
public int getSelectedOption() {
return selectedOption;
}
public void setSelectedOption(int selectedOption) {
this.selectedOption = selectedOption;
}
}

View File

@ -0,0 +1,4 @@
package com.utopiaindustries.qualitycontrol.models;
public class QualityControlResponse {
}

View File

@ -0,0 +1,467 @@
package com.utopiaindustries.qualitycontrol.utils;
import androidx.lifecycle.ViewModel;
import java.util.ArrayList;
public class SharedViewModel extends ViewModel {
private String currentDate;
private String location;
private String department;
private String floor;
//Cutting
private String cuttingSort;
private String cuttingSetInOrder;
private String cuttingShine;
private String cuttingStandardize;
private String cuttingSustain;
private String cuttingSafety;
private String cuttingPercentage;
private String cuttingRemarks;
private ArrayList<byte[]> cuttingImageList;
//Stitching
private String stitchingSort;
private String stitchingSetInOrder;
private String stitchingShine;
private String stitchingStandardize;
private String stitchingSustain;
private String stitchingSafety;
private String stitchingPercentage;
private String stitchingRemarks;
private ArrayList<byte[]> stitchingImageList;
//Checking
private String checkingSort;
private String checkingSetInOrder;
private String checkingShine;
private String checkingStandardize;
private String checkingSustain;
private String checkingSafety;
private String checkingPercentage;
private String checkingRemarks;
private ArrayList<byte[]> checkingImageList;
//Packing
private String packingSort;
private String packingSetInOrder;
private String packingShine;
private String packingStandardize;
private String packingSustain;
private String packingSafety;
private String packingPercentage;
private String packingRemarks;
private ArrayList<byte[]> packingImageList;
//Sub Store
private String subStoreSort;
private String subStoreSetInOrder;
private String subStoreShine;
private String subStoreStandardize;
private String subStoreSustain;
private String subStoreSafety;
private String subStorePercentage;
private String subStoreRemarks;
private ArrayList<byte[]> subStoreImageList;
public SharedViewModel() {
cuttingImageList = new ArrayList<>();
stitchingImageList = new ArrayList<>();
checkingImageList = new ArrayList<>();
packingImageList = new ArrayList<>();
subStoreImageList = new ArrayList<>();
}
public String getCurrentDate() {
return currentDate;
}
public void setCurrentDate(String currentDate) {
this.currentDate = currentDate;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public String getFloor() {
return floor;
}
public void setFloor(String floor) {
this.floor = floor;
}
public String getCuttingSort() {
return cuttingSort;
}
public void setCuttingSort(String cuttingSort) {
this.cuttingSort = cuttingSort;
}
public String getCuttingSetInOrder() {
return cuttingSetInOrder;
}
public void setCuttingSetInOrder(String cuttingSetInOrder) {
this.cuttingSetInOrder = cuttingSetInOrder;
}
public String getCuttingShine() {
return cuttingShine;
}
public void setCuttingShine(String cuttingShine) {
this.cuttingShine = cuttingShine;
}
public String getCuttingStandardize() {
return cuttingStandardize;
}
public void setCuttingStandardize(String cuttingStandardize) {
this.cuttingStandardize = cuttingStandardize;
}
public String getCuttingSustain() {
return cuttingSustain;
}
public void setCuttingSustain(String cuttingSustain) {
this.cuttingSustain = cuttingSustain;
}
public String getCuttingSafety() {
return cuttingSafety;
}
public void setCuttingSafety(String cuttingSafety) {
this.cuttingSafety = cuttingSafety;
}
public String getCuttingPercentage() {
return cuttingPercentage;
}
public void setCuttingPercentage(String cuttingPercentage) {
this.cuttingPercentage = cuttingPercentage;
}
public String getCuttingRemarks() {
return cuttingRemarks;
}
public void setCuttingRemarks(String cuttingRemarks) {
this.cuttingRemarks = cuttingRemarks;
}
public ArrayList<byte[]> getCuttingImageList() {
return cuttingImageList;
}
public void setCuttingImageList(ArrayList<byte[]> cuttingImageList) {
this.cuttingImageList = cuttingImageList;
}
public String getStitchingSort() {
return stitchingSort;
}
public void setStitchingSort(String stitchingSort) {
this.stitchingSort = stitchingSort;
}
public String getStitchingSetInOrder() {
return stitchingSetInOrder;
}
public void setStitchingSetInOrder(String stitchingSetInOrder) {
this.stitchingSetInOrder = stitchingSetInOrder;
}
public String getStitchingShine() {
return stitchingShine;
}
public void setStitchingShine(String stitchingShine) {
this.stitchingShine = stitchingShine;
}
public String getStitchingStandardize() {
return stitchingStandardize;
}
public void setStitchingStandardize(String stitchingStandardize) {
this.stitchingStandardize = stitchingStandardize;
}
public String getStitchingSustain() {
return stitchingSustain;
}
public void setStitchingSustain(String stitchingSustain) {
this.stitchingSustain = stitchingSustain;
}
public String getStitchingSafety() {
return stitchingSafety;
}
public void setStitchingSafety(String stitchingSafety) {
this.stitchingSafety = stitchingSafety;
}
public String getStitchingPercentage() {
return stitchingPercentage;
}
public void setStitchingPercentage(String stitchingPercentage) {
this.stitchingPercentage = stitchingPercentage;
}
public String getStitchingRemarks() {
return stitchingRemarks;
}
public void setStitchingRemarks(String stitchingRemarks) {
this.stitchingRemarks = stitchingRemarks;
}
public ArrayList<byte[]> getStitchingImageList() {
return stitchingImageList;
}
public void setStitchingImageList(ArrayList<byte[]> stitchingImageList) {
this.stitchingImageList = stitchingImageList;
}
public String getCheckingSort() {
return checkingSort;
}
public void setCheckingSort(String checkingSort) {
this.checkingSort = checkingSort;
}
public String getCheckingSetInOrder() {
return checkingSetInOrder;
}
public void setCheckingSetInOrder(String checkingSetInOrder) {
this.checkingSetInOrder = checkingSetInOrder;
}
public String getCheckingShine() {
return checkingShine;
}
public void setCheckingShine(String checkingShine) {
this.checkingShine = checkingShine;
}
public String getCheckingStandardize() {
return checkingStandardize;
}
public void setCheckingStandardize(String checkingStandardize) {
this.checkingStandardize = checkingStandardize;
}
public String getCheckingSustain() {
return checkingSustain;
}
public void setCheckingSustain(String checkingSustain) {
this.checkingSustain = checkingSustain;
}
public String getCheckingSafety() {
return checkingSafety;
}
public void setCheckingSafety(String checkingSafety) {
this.checkingSafety = checkingSafety;
}
public String getCheckingPercentage() {
return checkingPercentage;
}
public void setCheckingPercentage(String checkingPercentage) {
this.checkingPercentage = checkingPercentage;
}
public String getCheckingRemarks() {
return checkingRemarks;
}
public void setCheckingRemarks(String checkingRemarks) {
this.checkingRemarks = checkingRemarks;
}
public ArrayList<byte[]> getCheckingImageList() {
return checkingImageList;
}
public void setCheckingImageList(ArrayList<byte[]> checkingImageList) {
this.checkingImageList = checkingImageList;
}
public String getPackingSort() {
return packingSort;
}
public void setPackingSort(String packingSort) {
this.packingSort = packingSort;
}
public String getPackingSetInOrder() {
return packingSetInOrder;
}
public void setPackingSetInOrder(String packingSetInOrder) {
this.packingSetInOrder = packingSetInOrder;
}
public String getPackingShine() {
return packingShine;
}
public void setPackingShine(String packingShine) {
this.packingShine = packingShine;
}
public String getPackingStandardize() {
return packingStandardize;
}
public void setPackingStandardize(String packingStandardize) {
this.packingStandardize = packingStandardize;
}
public String getPackingSustain() {
return packingSustain;
}
public void setPackingSustain(String packingSustain) {
this.packingSustain = packingSustain;
}
public String getPackingSafety() {
return packingSafety;
}
public void setPackingSafety(String packingSafety) {
this.packingSafety = packingSafety;
}
public String getPackingPercentage() {
return packingPercentage;
}
public void setPackingPercentage(String packingPercentage) {
this.packingPercentage = packingPercentage;
}
public String getPackingRemarks() {
return packingRemarks;
}
public void setPackingRemarks(String packingRemarks) {
this.packingRemarks = packingRemarks;
}
public ArrayList<byte[]> getPackingImageList() {
return packingImageList;
}
public void setPackingImageList(ArrayList<byte[]> packingImageList) {
this.packingImageList = packingImageList;
}
public String getSubStoreSort() {
return subStoreSort;
}
public void setSubStoreSort(String subStoreSort) {
this.subStoreSort = subStoreSort;
}
public String getSubStoreSetInOrder() {
return subStoreSetInOrder;
}
public void setSubStoreSetInOrder(String subStoreSetInOrder) {
this.subStoreSetInOrder = subStoreSetInOrder;
}
public String getSubStoreShine() {
return subStoreShine;
}
public void setSubStoreShine(String subStoreShine) {
this.subStoreShine = subStoreShine;
}
public String getSubStoreStandardize() {
return subStoreStandardize;
}
public void setSubStoreStandardize(String subStoreStandardize) {
this.subStoreStandardize = subStoreStandardize;
}
public String getSubStoreSustain() {
return subStoreSustain;
}
public void setSubStoreSustain(String subStoreSustain) {
this.subStoreSustain = subStoreSustain;
}
public String getSubStoreSafety() {
return subStoreSafety;
}
public void setSubStoreSafety(String subStoreSafety) {
this.subStoreSafety = subStoreSafety;
}
public String getSubStorePercentage() {
return subStorePercentage;
}
public void setSubStorePercentage(String subStorePercentage) {
this.subStorePercentage = subStorePercentage;
}
public String getSubStoreRemarks() {
return subStoreRemarks;
}
public void setSubStoreRemarks(String subStoreRemarks) {
this.subStoreRemarks = subStoreRemarks;
}
public ArrayList<byte[]> getSubStoreImageList() {
return subStoreImageList;
}
public void setSubStoreImageList(ArrayList<byte[]> subStoreImageList) {
this.subStoreImageList = subStoreImageList;
}
}

View File

@ -0,0 +1,70 @@
package com.utopiaindustries.qualitycontrol.viewmodels;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import com.utopiaindustries.qualitycontrol.apiservice.ApiService;
import com.utopiaindustries.qualitycontrol.apiservice.ApiServiceFactory;
import com.utopiaindustries.qualitycontrol.models.QualityControlResponse;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class LoginViewModel extends ViewModel {
private MutableLiveData<QualityControlResponse> userLiveData;
private MutableLiveData<String> errorLiveData;
private MutableLiveData<Boolean> isLoading;
private ApiService apiService;
public LoginViewModel() {
apiService = ApiServiceFactory.getApiService();
userLiveData = new MutableLiveData<>();
errorLiveData = new MutableLiveData<>();
isLoading = new MutableLiveData<>();
}
public LiveData<QualityControlResponse> getUserLiveData() {
return userLiveData;
}
public LiveData<Boolean> getLoadingState() {
return isLoading;
}
public LiveData<String> getErrorMessage() {
return errorLiveData;
}
public void authenticateUser(String user, String password) {
isLoading.setValue(true);
apiService.isUserAuthenticated(user, password).enqueue(new Callback<QualityControlResponse>() {
@Override
public void onResponse(Call<QualityControlResponse> call, Response<QualityControlResponse> response) {
isLoading.setValue(false);
if (response.isSuccessful() && response.body() != null) {
userLiveData.setValue(response.body());
} else {
errorLiveData.setValue(response.message());
}
}
@Override
public void onFailure(Call<QualityControlResponse> call, Throwable t) {
isLoading.setValue(false);
errorLiveData.setValue(t.getMessage());
}
});
}
public LiveData<QualityControlResponse> getUser() {
return userLiveData;
}
public LiveData<String> getError() {
return errorLiveData;
}
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="10%"
android:animation="@android:anim/slide_in_left"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >
<alpha
android:duration="50"
android:fromAlpha="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="1.0" />
</set>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >
<alpha
android:duration="1000"
android:fromAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="0.0" />
</set>

View File

@ -0,0 +1,14 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="0"
android:toXScale="1"
android:fromYScale="0"
android:toYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:duration="400"
android:fillAfter="true">
</scale>
</set>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="1"
android:toXScale="0"
android:fromYScale="1"
android:toYScale="0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="400"
android:fillAfter="true">
</scale>
</set>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="0"
android:toYDelta="100%p"
android:duration="300"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
</set>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="100%p"
android:toYDelta="0"
android:duration="300"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
</set>

View File

@ -0,0 +1,3 @@
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:fromYDelta="-1000" android:duration="2000"/>
</set>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="700"
android:fromYDelta="100%"
android:toYDelta="0%"/>
</set>

View File

@ -0,0 +1,11 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="500"
android:fromXDelta="-100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%"/>
</set>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="1000"
android:fromXDelta="-100.0%p"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="0.0" />
</set>

View File

@ -0,0 +1,11 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="100"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%"/>
</set>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="3000"
android:fromXDelta="100.0%p"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="0.0%p" />
</set>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="700"
android:fromYDelta="-100%"
android:toYDelta="0%"/>
</set>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="700"
android:fromYDelta="0%"
android:toYDelta="100%"/>
</set>

View File

@ -0,0 +1,11 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="500"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="-100%"
android:toYDelta="0%"/>
</set>

View File

@ -0,0 +1,11 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="500"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="100%"
android:toYDelta="0%"/>
</set>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="700"
android:fromYDelta="0%"
android:toYDelta="-100%"/>
</set>

View File

@ -0,0 +1,5 @@
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:fromYDelta="0"
android:toYDelta="-2000"
android:duration="1000"/>
</set>

View File

@ -0,0 +1,5 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<path android:fillColor="@android:color/white" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
</vector>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"
android:topLeftRadius="10dp"
android:topRightRadius="10dp" />
<padding
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp" />
<stroke
android:width="0.5dp"
android:color="@color/grey_200" />
<solid android:color="@color/white" />
</shape>

View File

@ -0,0 +1,8 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="0.7dp"
android:color="@color/grey_400" />
<corners
android:radius="5dp"/>
</shape>

View File

@ -0,0 +1,5 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<path android:fillColor="@android:color/white" android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
</vector>

View File

@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View File

@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

View File

@ -0,0 +1,5 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<path android:fillColor="@android:color/white" android:pathData="M21,19V5c0,-1.1 -0.9,-2 -2,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2zM8.5,13.5l2.5,3.01L14.5,12l4.5,6H5l3.5,-4.5z"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#000000"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M18.32,4.26C16.84,3.05 15.01,2.25 13,2.05v2.02c1.46,0.18 2.79,0.76 3.9,1.62L18.32,4.26zM19.93,11h2.02c-0.2,-2.01 -1,-3.84 -2.21,-5.32L18.31,7.1C19.17,8.21 19.75,9.54 19.93,11zM18.31,16.9l1.43,1.43c1.21,-1.48 2.01,-3.32 2.21,-5.32h-2.02C19.75,14.46 19.17,15.79 18.31,16.9zM13,19.93v2.02c2.01,-0.2 3.84,-1 5.32,-2.21l-1.43,-1.43C15.79,19.17 14.46,19.75 13,19.93zM13,12V7h-2v5H7l5,5l5,-5H13zM11,19.93v2.02c-5.05,-0.5 -9,-4.76 -9,-9.95s3.95,-9.45 9,-9.95v2.02C7.05,4.56 4,7.92 4,12S7.05,19.44 11,19.93z" />
</vector>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="10dp"
android:shape="rectangle">
<solid android:color="@color/grey_50" />
<corners android:radius="0dp" />
<stroke android:color="@color/black" android:width="0.3dp" />
</shape>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="10dp"
android:shape="rectangle">
<solid android:color="@color/blue_500" /> <!-- this one is ths color of the Rounded Button -->
<corners android:radius="0dp" />
</shape>

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="1440dp"
android:height="320dp"
android:viewportWidth="1440"
android:viewportHeight="320">
<path
android:pathData="M0,96L1440,288L1440,320L0,320Z"
android:fillColor="#9E9E9E"/>
</vector>

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.HomeActivity">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/theme_color"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Quality Control"
android:textColor="@color/white"
android:textSize="@dimen/_15sdp"
app:layout_constraintBottom_toBottomOf="@+id/toolbar"
app:layout_constraintEnd_toEndOf="@+id/toolbar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/toolbar" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginStart="1dp"
android:layout_marginTop="1dp"
android:layout_marginEnd="1dp"
android:layout_marginBottom="1dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolbar">
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<!--<Button
android:id="@+id/btn_next"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="5dp"
android:background="@drawable/rounded_btn_login"
android:text="Next" />-->
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.SplashActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="300dp"
android:layout_height="180dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/search" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:scaleType="center"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/wave_4_" />
<TextView
android:id="@+id/txt_version"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="15dp"
android:gravity="end"
android:padding="5dp"
android:textColor="@color/white"
android:textSize="@dimen/_16sdp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Quality Control"
android:padding="5dp"
android:textColor="@color/theme_color"
android:textStyle="bold"
android:textSize="@dimen/_30sdp"
app:layout_constraintBottom_toTopOf="@+id/imageView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.SummaryActivity">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/theme_color"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Summary"
android:textColor="@color/white"
android:textSize="@dimen/_15sdp"
app:layout_constraintBottom_toBottomOf="@+id/toolbar"
app:layout_constraintEnd_toEndOf="@+id/toolbar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/toolbar" />
<ImageView
android:id="@+id/img_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_marginStart="10dp"
app:layout_constraintBottom_toBottomOf="@+id/toolbar"
app:layout_constraintStart_toStartOf="@+id/toolbar"
app:layout_constraintTop_toTopOf="@+id/toolbar"
app:srcCompat="@drawable/arrow_back" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginRight="25dp"
android:layout_marginLeft="25dp"
android:background="@drawable/curved_layout"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="5dp"
android:text="Choose Options"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="@color/grey_400" />
<TextView
android:id="@+id/txt_camera"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="5dp"
android:text="Take Photo"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:textColor="@color/theme_color"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="@color/grey_400" />
<TextView
android:id="@+id/txt_gallery"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="5dp"
android:text="Photo Library"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:textColor="@color/theme_color"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="@color/grey_400" />
<TextView
android:id="@+id/txt_cancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="5dp"
android:text="Cancel"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:textColor="@color/theme_color"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.CheckingFragment">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:scrollbarFadeDuration="0"
android:fadeScrollbars="false"
android:layout_marginBottom="60dp"
android:background="@drawable/rounded_border"
android:scrollbarThumbVertical="@android:color/darker_gray"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Checking Process"
android:textSize="@dimen/_20sdp"
android:textStyle="bold" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view_checking"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.3"
android:text="Percentage: "
android:textSize="@dimen/_14sdp" />
<EditText
android:id="@+id/et_percentage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@drawable/et_border"
android:padding="5dp"
android:layout_weight="0.7"
android:enabled="false" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Remarks: "
android:textSize="@dimen/_14sdp" />
<EditText
android:id="@+id/et_remarks"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:enabled="false"
android:layout_marginTop="5dp"
android:background="@drawable/et_border"
android:maxLines="3"
android:minLines="3" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp">
<TextView
android:id="@+id/txtHeading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentStart="true"
android:text="Pictures: "
android:textSize="@dimen/_14sdp" />
<ImageButton
android:id="@+id/image_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_toEndOf="@+id/txtHeading"
android:contentDescription="select"
android:src="@drawable/image_picker"
android:background="@null"
android:padding="8dp"/>
<ImageButton
android:id="@+id/delete_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_toEndOf="@+id/image_picker"
android:contentDescription="delete"
android:src="@drawable/ic_delete"
android:background="@null"
android:padding="8dp"/>
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/imageRecyclerView"
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal"
android:layout_margin="5dp"/>
</LinearLayout>
</ScrollView>
<Button
android:id="@+id/btn_next"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="5dp"
android:layout_gravity="bottom"
android:background="@drawable/rounded_btn_login"
android:text="Next"/>
</FrameLayout>

View File

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.CuttingFragment">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:scrollbarFadeDuration="0"
android:fadeScrollbars="false"
android:layout_marginBottom="60dp"
android:background="@drawable/rounded_border"
android:scrollbarThumbVertical="@android:color/darker_gray"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cutting Process"
android:textSize="@dimen/_20sdp"
android:textStyle="bold" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view_cutting"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.3"
android:text="Percentage: "
android:textSize="@dimen/_14sdp" />
<EditText
android:id="@+id/et_percentage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:padding="5dp"
android:background="@drawable/et_border"
android:enabled="false" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Remarks: "
android:textSize="@dimen/_14sdp" />
<EditText
android:id="@+id/et_remarks"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:enabled="false"
android:padding="5dp"
android:layout_marginTop="5dp"
android:background="@drawable/et_border"
android:maxLines="3"
android:minLines="3" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp">
<TextView
android:id="@+id/txtHeading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentStart="true"
android:text="Pictures: "
android:textSize="@dimen/_14sdp" />
<ImageButton
android:id="@+id/image_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_toEndOf="@+id/txtHeading"
android:contentDescription="select"
android:src="@drawable/image_picker"
android:background="@null"
android:padding="8dp"/>
<ImageButton
android:id="@+id/delete_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_toEndOf="@+id/image_picker"
android:contentDescription="delete"
android:src="@drawable/ic_delete"
android:background="@null"
android:padding="8dp"/>
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/imageRecyclerView"
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal"
android:layout_margin="5dp"/>
</LinearLayout>
</ScrollView>
<Button
android:id="@+id/btn_next"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="5dp"
android:layout_gravity="bottom"
android:background="@drawable/rounded_btn_login"
android:text="Next"/>
</FrameLayout>

View File

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.HomeFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:id="@+id/txt_current_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/_16sdp"
android:layout_margin="5dp"
android:padding="5dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:padding="5dp"
android:text="Location: "
android:textColor="@color/black"
android:textSize="@dimen/_16sdp"
android:textStyle="bold" />
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:hint="@string/select_location"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txt_driver_name">
<AutoCompleteTextView
android:id="@+id/location_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="none"
android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:padding="5dp"
android:text="Department: "
android:textColor="@color/black"
android:textSize="@dimen/_16sdp"
android:textStyle="bold" />
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:hint="@string/select_department"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txt_driver_name">
<AutoCompleteTextView
android:id="@+id/department_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="none"
android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:padding="5dp"
android:text="Floor: "
android:textColor="@color/black"
android:textSize="@dimen/_16sdp"
android:textStyle="bold" />
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:hint="@string/select_floor"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txt_driver_name">
<AutoCompleteTextView
android:id="@+id/floor_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="none"
android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<Button
android:id="@+id/btn_next"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="5dp"
android:layout_gravity="bottom"
android:background="@drawable/rounded_btn_login"
android:text="Next"/>
</FrameLayout>

View File

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.PackingFragment">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:scrollbarFadeDuration="0"
android:fadeScrollbars="false"
android:layout_marginBottom="60dp"
android:background="@drawable/rounded_border"
android:scrollbarThumbVertical="@android:color/darker_gray"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Packing Process"
android:textSize="@dimen/_20sdp"
android:textStyle="bold" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view_packing"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.3"
android:text="Percentage: "
android:textSize="@dimen/_14sdp" />
<EditText
android:id="@+id/et_percentage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@drawable/et_border"
android:padding="5dp"
android:layout_weight="0.7"
android:enabled="false" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Remarks: "
android:textSize="@dimen/_14sdp" />
<EditText
android:id="@+id/et_remarks"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:enabled="false"
android:layout_marginTop="5dp"
android:background="@drawable/et_border"
android:maxLines="3"
android:minLines="3" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp">
<TextView
android:id="@+id/txtHeading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentStart="true"
android:text="Pictures: "
android:textSize="@dimen/_14sdp" />
<ImageButton
android:id="@+id/image_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_toEndOf="@+id/txtHeading"
android:contentDescription="select"
android:src="@drawable/image_picker"
android:background="@null"
android:padding="8dp"/>
<ImageButton
android:id="@+id/delete_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_toEndOf="@+id/image_picker"
android:contentDescription="delete"
android:src="@drawable/ic_delete"
android:background="@null"
android:padding="8dp"/>
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/imageRecyclerView"
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal"
android:layout_margin="5dp"/>
</LinearLayout>
</ScrollView>
<Button
android:id="@+id/btn_next"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="5dp"
android:layout_gravity="bottom"
android:background="@drawable/rounded_btn_login"
android:text="Next"/>
</FrameLayout>

View File

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.StitchingFragment">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:scrollbarFadeDuration="0"
android:fadeScrollbars="false"
android:layout_marginBottom="60dp"
android:background="@drawable/rounded_border"
android:scrollbarThumbVertical="@android:color/darker_gray"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Stitching Process"
android:textSize="@dimen/_20sdp"
android:textStyle="bold" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view_stitching"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.3"
android:text="Percentage: "
android:textSize="@dimen/_14sdp" />
<EditText
android:id="@+id/et_percentage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:background="@drawable/et_border"
android:padding="5dp"
android:enabled="false" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Remarks: "
android:textSize="@dimen/_14sdp" />
<EditText
android:id="@+id/et_remarks"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:enabled="false"
android:layout_marginTop="5dp"
android:background="@drawable/et_border"
android:maxLines="3"
android:minLines="3" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp">
<TextView
android:id="@+id/txtHeading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentStart="true"
android:text="Pictures: "
android:textSize="@dimen/_14sdp" />
<ImageButton
android:id="@+id/image_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_toEndOf="@+id/txtHeading"
android:contentDescription="select"
android:src="@drawable/image_picker"
android:background="@null"
android:padding="8dp"/>
<ImageButton
android:id="@+id/delete_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_toEndOf="@+id/image_picker"
android:contentDescription="delete"
android:src="@drawable/ic_delete"
android:background="@null"
android:padding="8dp"/>
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/imageRecyclerView"
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal"
android:layout_margin="5dp"/>
</LinearLayout>
</ScrollView>
<Button
android:id="@+id/btn_next"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="5dp"
android:layout_gravity="bottom"
android:background="@drawable/rounded_btn_login"
android:text="Next"/>
</FrameLayout>

View File

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.SubStoreFragment">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:scrollbarFadeDuration="0"
android:fadeScrollbars="false"
android:layout_marginBottom="60dp"
android:background="@drawable/rounded_border"
android:scrollbarThumbVertical="@android:color/darker_gray"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Substore Process"
android:textSize="@dimen/_20sdp"
android:textStyle="bold" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view_substore"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.3"
android:text="Percentage: "
android:textSize="@dimen/_14sdp" />
<EditText
android:id="@+id/et_percentage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:background="@drawable/et_border"
android:padding="5dp"
android:enabled="false" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Remarks: "
android:textSize="@dimen/_14sdp" />
<EditText
android:id="@+id/et_remarks"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:enabled="false"
android:layout_marginTop="5dp"
android:background="@drawable/et_border"
android:maxLines="3"
android:minLines="3" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp">
<TextView
android:id="@+id/txtHeading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentStart="true"
android:text="Pictures: "
android:textSize="@dimen/_14sdp" />
<ImageButton
android:id="@+id/image_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_toEndOf="@+id/txtHeading"
android:contentDescription="select"
android:src="@drawable/image_picker"
android:background="@null"
android:padding="8dp"/>
<ImageButton
android:id="@+id/delete_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_toEndOf="@+id/image_picker"
android:contentDescription="delete"
android:src="@drawable/ic_delete"
android:background="@null"
android:padding="8dp"/>
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/imageRecyclerView"
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal"
android:layout_margin="5dp"/>
</LinearLayout>
</ScrollView>
<Button
android:id="@+id/btn_next"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="5dp"
android:layout_gravity="bottom"
android:background="@drawable/rounded_btn_login"
android:text="Finish"/>
</FrameLayout>

View File

@ -0,0 +1,13 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="8dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_height="100dp"
android:scaleType="centerCrop" />
</LinearLayout>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1"
android:padding="8dp">
<TextView
android:id="@+id/tv_item_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:text="Item Name"
android:textSize="@dimen/_14sdp"
android:padding="8dp" />
<Spinner
android:id="@+id/spinner_item_options"
android:layout_width="0dp"
android:layout_weight="0.3"
android:padding="8dp"
android:layout_height="wrap_content"
android:spinnerMode="dropdown" />
</LinearLayout>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/spinnerItemStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:padding="5dp"
android:singleLine="true"
android:textAlignment="inherit"
android:textColor="#000000"
android:textSize="@dimen/_12sdp" />

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 982 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="dimension">values-hdpi</string>
</resources>

View File

@ -0,0 +1,303 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="_1sdp">1.00dp</dimen>
<dimen name="_2sdp">2.00dp</dimen>
<dimen name="_3sdp">3.00dp</dimen>
<dimen name="_4sdp">4.00dp</dimen>
<dimen name="_5sdp">5.00dp</dimen>
<dimen name="_6sdp">6.00dp</dimen>
<dimen name="_7sdp">7.00dp</dimen>
<dimen name="_8sdp">8.00dp</dimen>
<dimen name="_9sdp">9.00dp</dimen>
<dimen name="_10sdp">10.00dp</dimen>
<dimen name="_11sdp">11.00dp</dimen>
<dimen name="_12sdp">12.00dp</dimen>
<dimen name="_13sdp">13.00dp</dimen>
<dimen name="_14sdp">14.00dp</dimen>
<dimen name="_15sdp">15.00dp</dimen>
<dimen name="_16sdp">16.00dp</dimen>
<dimen name="_17sdp">17.00dp</dimen>
<dimen name="_18sdp">18.00dp</dimen>
<dimen name="_19sdp">19.00dp</dimen>
<dimen name="_20sdp">20.00dp</dimen>
<dimen name="_21sdp">21.00dp</dimen>
<dimen name="_22sdp">22.00dp</dimen>
<dimen name="_23sdp">23.00dp</dimen>
<dimen name="_24sdp">24.00dp</dimen>
<dimen name="_25sdp">25.00dp</dimen>
<dimen name="_26sdp">26.00dp</dimen>
<dimen name="_27sdp">27.00dp</dimen>
<dimen name="_28sdp">28.00dp</dimen>
<dimen name="_29sdp">29.00dp</dimen>
<dimen name="_30sdp">30.00dp</dimen>
<dimen name="_31sdp">31.00dp</dimen>
<dimen name="_32sdp">32.00dp</dimen>
<dimen name="_33sdp">33.00dp</dimen>
<dimen name="_34sdp">34.00dp</dimen>
<dimen name="_35sdp">35.00dp</dimen>
<dimen name="_36sdp">36.00dp</dimen>
<dimen name="_37sdp">37.00dp</dimen>
<dimen name="_38sdp">38.00dp</dimen>
<dimen name="_39sdp">39.00dp</dimen>
<dimen name="_40sdp">40.00dp</dimen>
<dimen name="_41sdp">41.00dp</dimen>
<dimen name="_42sdp">42.00dp</dimen>
<dimen name="_43sdp">43.00dp</dimen>
<dimen name="_44sdp">44.00dp</dimen>
<dimen name="_45sdp">45.00dp</dimen>
<dimen name="_46sdp">46.00dp</dimen>
<dimen name="_47sdp">47.00dp</dimen>
<dimen name="_48sdp">48.00dp</dimen>
<dimen name="_49sdp">49.00dp</dimen>
<dimen name="_50sdp">50.00dp</dimen>
<dimen name="_51sdp">51.00dp</dimen>
<dimen name="_52sdp">52.00dp</dimen>
<dimen name="_53sdp">53.00dp</dimen>
<dimen name="_54sdp">54.00dp</dimen>
<dimen name="_55sdp">55.00dp</dimen>
<dimen name="_56sdp">56.00dp</dimen>
<dimen name="_57sdp">57.00dp</dimen>
<dimen name="_58sdp">58.00dp</dimen>
<dimen name="_59sdp">59.00dp</dimen>
<dimen name="_60sdp">60.00dp</dimen>
<dimen name="_61sdp">61.00dp</dimen>
<dimen name="_62sdp">62.00dp</dimen>
<dimen name="_63sdp">63.00dp</dimen>
<dimen name="_64sdp">64.00dp</dimen>
<dimen name="_65sdp">65.00dp</dimen>
<dimen name="_66sdp">66.00dp</dimen>
<dimen name="_67sdp">67.00dp</dimen>
<dimen name="_68sdp">68.00dp</dimen>
<dimen name="_69sdp">69.00dp</dimen>
<dimen name="_70sdp">70.00dp</dimen>
<dimen name="_71sdp">71.00dp</dimen>
<dimen name="_72sdp">72.00dp</dimen>
<dimen name="_73sdp">73.00dp</dimen>
<dimen name="_74sdp">74.00dp</dimen>
<dimen name="_75sdp">75.00dp</dimen>
<dimen name="_76sdp">76.00dp</dimen>
<dimen name="_77sdp">77.00dp</dimen>
<dimen name="_78sdp">78.00dp</dimen>
<dimen name="_79sdp">79.00dp</dimen>
<dimen name="_80sdp">80.00dp</dimen>
<dimen name="_81sdp">81.00dp</dimen>
<dimen name="_82sdp">82.00dp</dimen>
<dimen name="_83sdp">83.00dp</dimen>
<dimen name="_84sdp">84.00dp</dimen>
<dimen name="_85sdp">85.00dp</dimen>
<dimen name="_86sdp">86.00dp</dimen>
<dimen name="_87sdp">87.00dp</dimen>
<dimen name="_88sdp">88.00dp</dimen>
<dimen name="_89sdp">89.00dp</dimen>
<dimen name="_90sdp">90.00dp</dimen>
<dimen name="_91sdp">91.00dp</dimen>
<dimen name="_92sdp">92.00dp</dimen>
<dimen name="_93sdp">93.00dp</dimen>
<dimen name="_94sdp">94.00dp</dimen>
<dimen name="_95sdp">95.00dp</dimen>
<dimen name="_96sdp">96.00dp</dimen>
<dimen name="_97sdp">97.00dp</dimen>
<dimen name="_98sdp">98.00dp</dimen>
<dimen name="_99sdp">99.00dp</dimen>
<dimen name="_100sdp">100.00dp</dimen>
<dimen name="_101sdp">101.00dp</dimen>
<dimen name="_102sdp">102.00dp</dimen>
<dimen name="_103sdp">103.00dp</dimen>
<dimen name="_104sdp">104.00dp</dimen>
<dimen name="_105sdp">105.00dp</dimen>
<dimen name="_106sdp">106.00dp</dimen>
<dimen name="_107sdp">107.00dp</dimen>
<dimen name="_108sdp">108.00dp</dimen>
<dimen name="_109sdp">109.00dp</dimen>
<dimen name="_110sdp">110.00dp</dimen>
<dimen name="_111sdp">111.00dp</dimen>
<dimen name="_112sdp">112.00dp</dimen>
<dimen name="_113sdp">113.00dp</dimen>
<dimen name="_114sdp">114.00dp</dimen>
<dimen name="_115sdp">115.00dp</dimen>
<dimen name="_116sdp">116.00dp</dimen>
<dimen name="_117sdp">117.00dp</dimen>
<dimen name="_118sdp">118.00dp</dimen>
<dimen name="_119sdp">119.00dp</dimen>
<dimen name="_120sdp">120.00dp</dimen>
<dimen name="_121sdp">121.00dp</dimen>
<dimen name="_122sdp">122.00dp</dimen>
<dimen name="_123sdp">123.00dp</dimen>
<dimen name="_124sdp">124.00dp</dimen>
<dimen name="_125sdp">125.00dp</dimen>
<dimen name="_126sdp">126.00dp</dimen>
<dimen name="_127sdp">127.00dp</dimen>
<dimen name="_128sdp">128.00dp</dimen>
<dimen name="_129sdp">129.00dp</dimen>
<dimen name="_130sdp">130.00dp</dimen>
<dimen name="_131sdp">131.00dp</dimen>
<dimen name="_132sdp">132.00dp</dimen>
<dimen name="_133sdp">133.00dp</dimen>
<dimen name="_134sdp">134.00dp</dimen>
<dimen name="_135sdp">135.00dp</dimen>
<dimen name="_136sdp">136.00dp</dimen>
<dimen name="_137sdp">137.00dp</dimen>
<dimen name="_138sdp">138.00dp</dimen>
<dimen name="_139sdp">139.00dp</dimen>
<dimen name="_140sdp">140.00dp</dimen>
<dimen name="_141sdp">141.00dp</dimen>
<dimen name="_142sdp">142.00dp</dimen>
<dimen name="_143sdp">143.00dp</dimen>
<dimen name="_144sdp">144.00dp</dimen>
<dimen name="_145sdp">145.00dp</dimen>
<dimen name="_146sdp">146.00dp</dimen>
<dimen name="_147sdp">147.00dp</dimen>
<dimen name="_148sdp">148.00dp</dimen>
<dimen name="_149sdp">149.00dp</dimen>
<dimen name="_150sdp">150.00dp</dimen>
<dimen name="_151sdp">151.00dp</dimen>
<dimen name="_152sdp">152.00dp</dimen>
<dimen name="_153sdp">153.00dp</dimen>
<dimen name="_154sdp">154.00dp</dimen>
<dimen name="_155sdp">155.00dp</dimen>
<dimen name="_156sdp">156.00dp</dimen>
<dimen name="_157sdp">157.00dp</dimen>
<dimen name="_158sdp">158.00dp</dimen>
<dimen name="_159sdp">159.00dp</dimen>
<dimen name="_160sdp">160.00dp</dimen>
<dimen name="_161sdp">161.00dp</dimen>
<dimen name="_162sdp">162.00dp</dimen>
<dimen name="_163sdp">163.00dp</dimen>
<dimen name="_164sdp">164.00dp</dimen>
<dimen name="_165sdp">165.00dp</dimen>
<dimen name="_166sdp">166.00dp</dimen>
<dimen name="_167sdp">167.00dp</dimen>
<dimen name="_168sdp">168.00dp</dimen>
<dimen name="_169sdp">169.00dp</dimen>
<dimen name="_170sdp">170.00dp</dimen>
<dimen name="_171sdp">171.00dp</dimen>
<dimen name="_172sdp">172.00dp</dimen>
<dimen name="_173sdp">173.00dp</dimen>
<dimen name="_174sdp">174.00dp</dimen>
<dimen name="_175sdp">175.00dp</dimen>
<dimen name="_176sdp">176.00dp</dimen>
<dimen name="_177sdp">177.00dp</dimen>
<dimen name="_178sdp">178.00dp</dimen>
<dimen name="_179sdp">179.00dp</dimen>
<dimen name="_180sdp">180.00dp</dimen>
<dimen name="_181sdp">181.00dp</dimen>
<dimen name="_182sdp">182.00dp</dimen>
<dimen name="_183sdp">183.00dp</dimen>
<dimen name="_184sdp">184.00dp</dimen>
<dimen name="_185sdp">185.00dp</dimen>
<dimen name="_186sdp">186.00dp</dimen>
<dimen name="_187sdp">187.00dp</dimen>
<dimen name="_188sdp">188.00dp</dimen>
<dimen name="_189sdp">189.00dp</dimen>
<dimen name="_190sdp">190.00dp</dimen>
<dimen name="_191sdp">191.00dp</dimen>
<dimen name="_192sdp">192.00dp</dimen>
<dimen name="_193sdp">193.00dp</dimen>
<dimen name="_194sdp">194.00dp</dimen>
<dimen name="_195sdp">195.00dp</dimen>
<dimen name="_196sdp">196.00dp</dimen>
<dimen name="_197sdp">197.00dp</dimen>
<dimen name="_198sdp">198.00dp</dimen>
<dimen name="_199sdp">199.00dp</dimen>
<dimen name="_200sdp">200.00dp</dimen>
<dimen name="_201sdp">201.00dp</dimen>
<dimen name="_202sdp">202.00dp</dimen>
<dimen name="_203sdp">203.00dp</dimen>
<dimen name="_204sdp">204.00dp</dimen>
<dimen name="_205sdp">205.00dp</dimen>
<dimen name="_206sdp">206.00dp</dimen>
<dimen name="_207sdp">207.00dp</dimen>
<dimen name="_208sdp">208.00dp</dimen>
<dimen name="_209sdp">209.00dp</dimen>
<dimen name="_210sdp">210.00dp</dimen>
<dimen name="_211sdp">211.00dp</dimen>
<dimen name="_212sdp">212.00dp</dimen>
<dimen name="_213sdp">213.00dp</dimen>
<dimen name="_214sdp">214.00dp</dimen>
<dimen name="_215sdp">215.00dp</dimen>
<dimen name="_216sdp">216.00dp</dimen>
<dimen name="_217sdp">217.00dp</dimen>
<dimen name="_218sdp">218.00dp</dimen>
<dimen name="_219sdp">219.00dp</dimen>
<dimen name="_220sdp">220.00dp</dimen>
<dimen name="_221sdp">221.00dp</dimen>
<dimen name="_222sdp">222.00dp</dimen>
<dimen name="_223sdp">223.00dp</dimen>
<dimen name="_224sdp">224.00dp</dimen>
<dimen name="_225sdp">225.00dp</dimen>
<dimen name="_226sdp">226.00dp</dimen>
<dimen name="_227sdp">227.00dp</dimen>
<dimen name="_228sdp">228.00dp</dimen>
<dimen name="_229sdp">229.00dp</dimen>
<dimen name="_230sdp">230.00dp</dimen>
<dimen name="_231sdp">231.00dp</dimen>
<dimen name="_232sdp">232.00dp</dimen>
<dimen name="_233sdp">233.00dp</dimen>
<dimen name="_234sdp">234.00dp</dimen>
<dimen name="_235sdp">235.00dp</dimen>
<dimen name="_236sdp">236.00dp</dimen>
<dimen name="_237sdp">237.00dp</dimen>
<dimen name="_238sdp">238.00dp</dimen>
<dimen name="_239sdp">239.00dp</dimen>
<dimen name="_240sdp">240.00dp</dimen>
<dimen name="_241sdp">241.00dp</dimen>
<dimen name="_242sdp">242.00dp</dimen>
<dimen name="_243sdp">243.00dp</dimen>
<dimen name="_244sdp">244.00dp</dimen>
<dimen name="_245sdp">245.00dp</dimen>
<dimen name="_246sdp">246.00dp</dimen>
<dimen name="_247sdp">247.00dp</dimen>
<dimen name="_248sdp">248.00dp</dimen>
<dimen name="_249sdp">249.00dp</dimen>
<dimen name="_250sdp">250.00dp</dimen>
<dimen name="_251sdp">251.00dp</dimen>
<dimen name="_252sdp">252.00dp</dimen>
<dimen name="_253sdp">253.00dp</dimen>
<dimen name="_254sdp">254.00dp</dimen>
<dimen name="_255sdp">255.00dp</dimen>
<dimen name="_256sdp">256.00dp</dimen>
<dimen name="_257sdp">257.00dp</dimen>
<dimen name="_258sdp">258.00dp</dimen>
<dimen name="_259sdp">259.00dp</dimen>
<dimen name="_260sdp">260.00dp</dimen>
<dimen name="_261sdp">261.00dp</dimen>
<dimen name="_262sdp">262.00dp</dimen>
<dimen name="_263sdp">263.00dp</dimen>
<dimen name="_264sdp">264.00dp</dimen>
<dimen name="_265sdp">265.00dp</dimen>
<dimen name="_266sdp">266.00dp</dimen>
<dimen name="_267sdp">267.00dp</dimen>
<dimen name="_268sdp">268.00dp</dimen>
<dimen name="_269sdp">269.00dp</dimen>
<dimen name="_270sdp">270.00dp</dimen>
<dimen name="_271sdp">271.00dp</dimen>
<dimen name="_272sdp">272.00dp</dimen>
<dimen name="_273sdp">273.00dp</dimen>
<dimen name="_274sdp">274.00dp</dimen>
<dimen name="_275sdp">275.00dp</dimen>
<dimen name="_276sdp">276.00dp</dimen>
<dimen name="_277sdp">277.00dp</dimen>
<dimen name="_278sdp">278.00dp</dimen>
<dimen name="_279sdp">279.00dp</dimen>
<dimen name="_280sdp">280.00dp</dimen>
<dimen name="_281sdp">281.00dp</dimen>
<dimen name="_282sdp">282.00dp</dimen>
<dimen name="_283sdp">283.00dp</dimen>
<dimen name="_284sdp">284.00dp</dimen>
<dimen name="_285sdp">285.00dp</dimen>
<dimen name="_286sdp">286.00dp</dimen>
<dimen name="_287sdp">287.00dp</dimen>
<dimen name="_288sdp">288.00dp</dimen>
<dimen name="_289sdp">289.00dp</dimen>
<dimen name="_290sdp">290.00dp</dimen>
<dimen name="_291sdp">291.00dp</dimen>
<dimen name="_292sdp">292.00dp</dimen>
<dimen name="_293sdp">293.00dp</dimen>
<dimen name="_294sdp">294.00dp</dimen>
<dimen name="_295sdp">295.00dp</dimen>
<dimen name="_296sdp">296.00dp</dimen>
<dimen name="_297sdp">297.00dp</dimen>
<dimen name="_298sdp">298.00dp</dimen>
<dimen name="_299sdp">299.00dp</dimen>
<dimen name="_300sdp">300.00dp</dimen>
</resources>

View File

@ -0,0 +1,3 @@
<resources>
<dimen name="fab_margin">48dp</dimen>
</resources>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="dimension">values-mdpi</string>
</resources>

View File

@ -0,0 +1,303 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="_1sdp">1.00dp</dimen>
<dimen name="_2sdp">2.00dp</dimen>
<dimen name="_3sdp">3.00dp</dimen>
<dimen name="_4sdp">4.00dp</dimen>
<dimen name="_5sdp">5.00dp</dimen>
<dimen name="_6sdp">6.00dp</dimen>
<dimen name="_7sdp">7.00dp</dimen>
<dimen name="_8sdp">8.00dp</dimen>
<dimen name="_9sdp">9.00dp</dimen>
<dimen name="_10sdp">10.00dp</dimen>
<dimen name="_11sdp">11.00dp</dimen>
<dimen name="_12sdp">12.00dp</dimen>
<dimen name="_13sdp">13.00dp</dimen>
<dimen name="_14sdp">14.00dp</dimen>
<dimen name="_15sdp">15.00dp</dimen>
<dimen name="_16sdp">16.00dp</dimen>
<dimen name="_17sdp">17.00dp</dimen>
<dimen name="_18sdp">18.00dp</dimen>
<dimen name="_19sdp">19.00dp</dimen>
<dimen name="_20sdp">20.00dp</dimen>
<dimen name="_21sdp">21.00dp</dimen>
<dimen name="_22sdp">22.00dp</dimen>
<dimen name="_23sdp">23.00dp</dimen>
<dimen name="_24sdp">24.00dp</dimen>
<dimen name="_25sdp">25.00dp</dimen>
<dimen name="_26sdp">26.00dp</dimen>
<dimen name="_27sdp">27.00dp</dimen>
<dimen name="_28sdp">28.00dp</dimen>
<dimen name="_29sdp">29.00dp</dimen>
<dimen name="_30sdp">30.00dp</dimen>
<dimen name="_31sdp">31.00dp</dimen>
<dimen name="_32sdp">32.00dp</dimen>
<dimen name="_33sdp">33.00dp</dimen>
<dimen name="_34sdp">34.00dp</dimen>
<dimen name="_35sdp">35.00dp</dimen>
<dimen name="_36sdp">36.00dp</dimen>
<dimen name="_37sdp">37.00dp</dimen>
<dimen name="_38sdp">38.00dp</dimen>
<dimen name="_39sdp">39.00dp</dimen>
<dimen name="_40sdp">40.00dp</dimen>
<dimen name="_41sdp">41.00dp</dimen>
<dimen name="_42sdp">42.00dp</dimen>
<dimen name="_43sdp">43.00dp</dimen>
<dimen name="_44sdp">44.00dp</dimen>
<dimen name="_45sdp">45.00dp</dimen>
<dimen name="_46sdp">46.00dp</dimen>
<dimen name="_47sdp">47.00dp</dimen>
<dimen name="_48sdp">48.00dp</dimen>
<dimen name="_49sdp">49.00dp</dimen>
<dimen name="_50sdp">50.00dp</dimen>
<dimen name="_51sdp">51.00dp</dimen>
<dimen name="_52sdp">52.00dp</dimen>
<dimen name="_53sdp">53.00dp</dimen>
<dimen name="_54sdp">54.00dp</dimen>
<dimen name="_55sdp">55.00dp</dimen>
<dimen name="_56sdp">56.00dp</dimen>
<dimen name="_57sdp">57.00dp</dimen>
<dimen name="_58sdp">58.00dp</dimen>
<dimen name="_59sdp">59.00dp</dimen>
<dimen name="_60sdp">60.00dp</dimen>
<dimen name="_61sdp">61.00dp</dimen>
<dimen name="_62sdp">62.00dp</dimen>
<dimen name="_63sdp">63.00dp</dimen>
<dimen name="_64sdp">64.00dp</dimen>
<dimen name="_65sdp">65.00dp</dimen>
<dimen name="_66sdp">66.00dp</dimen>
<dimen name="_67sdp">67.00dp</dimen>
<dimen name="_68sdp">68.00dp</dimen>
<dimen name="_69sdp">69.00dp</dimen>
<dimen name="_70sdp">70.00dp</dimen>
<dimen name="_71sdp">71.00dp</dimen>
<dimen name="_72sdp">72.00dp</dimen>
<dimen name="_73sdp">73.00dp</dimen>
<dimen name="_74sdp">74.00dp</dimen>
<dimen name="_75sdp">75.00dp</dimen>
<dimen name="_76sdp">76.00dp</dimen>
<dimen name="_77sdp">77.00dp</dimen>
<dimen name="_78sdp">78.00dp</dimen>
<dimen name="_79sdp">79.00dp</dimen>
<dimen name="_80sdp">80.00dp</dimen>
<dimen name="_81sdp">81.00dp</dimen>
<dimen name="_82sdp">82.00dp</dimen>
<dimen name="_83sdp">83.00dp</dimen>
<dimen name="_84sdp">84.00dp</dimen>
<dimen name="_85sdp">85.00dp</dimen>
<dimen name="_86sdp">86.00dp</dimen>
<dimen name="_87sdp">87.00dp</dimen>
<dimen name="_88sdp">88.00dp</dimen>
<dimen name="_89sdp">89.00dp</dimen>
<dimen name="_90sdp">90.00dp</dimen>
<dimen name="_91sdp">91.00dp</dimen>
<dimen name="_92sdp">92.00dp</dimen>
<dimen name="_93sdp">93.00dp</dimen>
<dimen name="_94sdp">94.00dp</dimen>
<dimen name="_95sdp">95.00dp</dimen>
<dimen name="_96sdp">96.00dp</dimen>
<dimen name="_97sdp">97.00dp</dimen>
<dimen name="_98sdp">98.00dp</dimen>
<dimen name="_99sdp">99.00dp</dimen>
<dimen name="_100sdp">100.00dp</dimen>
<dimen name="_101sdp">101.00dp</dimen>
<dimen name="_102sdp">102.00dp</dimen>
<dimen name="_103sdp">103.00dp</dimen>
<dimen name="_104sdp">104.00dp</dimen>
<dimen name="_105sdp">105.00dp</dimen>
<dimen name="_106sdp">106.00dp</dimen>
<dimen name="_107sdp">107.00dp</dimen>
<dimen name="_108sdp">108.00dp</dimen>
<dimen name="_109sdp">109.00dp</dimen>
<dimen name="_110sdp">110.00dp</dimen>
<dimen name="_111sdp">111.00dp</dimen>
<dimen name="_112sdp">112.00dp</dimen>
<dimen name="_113sdp">113.00dp</dimen>
<dimen name="_114sdp">114.00dp</dimen>
<dimen name="_115sdp">115.00dp</dimen>
<dimen name="_116sdp">116.00dp</dimen>
<dimen name="_117sdp">117.00dp</dimen>
<dimen name="_118sdp">118.00dp</dimen>
<dimen name="_119sdp">119.00dp</dimen>
<dimen name="_120sdp">120.00dp</dimen>
<dimen name="_121sdp">121.00dp</dimen>
<dimen name="_122sdp">122.00dp</dimen>
<dimen name="_123sdp">123.00dp</dimen>
<dimen name="_124sdp">124.00dp</dimen>
<dimen name="_125sdp">125.00dp</dimen>
<dimen name="_126sdp">126.00dp</dimen>
<dimen name="_127sdp">127.00dp</dimen>
<dimen name="_128sdp">128.00dp</dimen>
<dimen name="_129sdp">129.00dp</dimen>
<dimen name="_130sdp">130.00dp</dimen>
<dimen name="_131sdp">131.00dp</dimen>
<dimen name="_132sdp">132.00dp</dimen>
<dimen name="_133sdp">133.00dp</dimen>
<dimen name="_134sdp">134.00dp</dimen>
<dimen name="_135sdp">135.00dp</dimen>
<dimen name="_136sdp">136.00dp</dimen>
<dimen name="_137sdp">137.00dp</dimen>
<dimen name="_138sdp">138.00dp</dimen>
<dimen name="_139sdp">139.00dp</dimen>
<dimen name="_140sdp">140.00dp</dimen>
<dimen name="_141sdp">141.00dp</dimen>
<dimen name="_142sdp">142.00dp</dimen>
<dimen name="_143sdp">143.00dp</dimen>
<dimen name="_144sdp">144.00dp</dimen>
<dimen name="_145sdp">145.00dp</dimen>
<dimen name="_146sdp">146.00dp</dimen>
<dimen name="_147sdp">147.00dp</dimen>
<dimen name="_148sdp">148.00dp</dimen>
<dimen name="_149sdp">149.00dp</dimen>
<dimen name="_150sdp">150.00dp</dimen>
<dimen name="_151sdp">151.00dp</dimen>
<dimen name="_152sdp">152.00dp</dimen>
<dimen name="_153sdp">153.00dp</dimen>
<dimen name="_154sdp">154.00dp</dimen>
<dimen name="_155sdp">155.00dp</dimen>
<dimen name="_156sdp">156.00dp</dimen>
<dimen name="_157sdp">157.00dp</dimen>
<dimen name="_158sdp">158.00dp</dimen>
<dimen name="_159sdp">159.00dp</dimen>
<dimen name="_160sdp">160.00dp</dimen>
<dimen name="_161sdp">161.00dp</dimen>
<dimen name="_162sdp">162.00dp</dimen>
<dimen name="_163sdp">163.00dp</dimen>
<dimen name="_164sdp">164.00dp</dimen>
<dimen name="_165sdp">165.00dp</dimen>
<dimen name="_166sdp">166.00dp</dimen>
<dimen name="_167sdp">167.00dp</dimen>
<dimen name="_168sdp">168.00dp</dimen>
<dimen name="_169sdp">169.00dp</dimen>
<dimen name="_170sdp">170.00dp</dimen>
<dimen name="_171sdp">171.00dp</dimen>
<dimen name="_172sdp">172.00dp</dimen>
<dimen name="_173sdp">173.00dp</dimen>
<dimen name="_174sdp">174.00dp</dimen>
<dimen name="_175sdp">175.00dp</dimen>
<dimen name="_176sdp">176.00dp</dimen>
<dimen name="_177sdp">177.00dp</dimen>
<dimen name="_178sdp">178.00dp</dimen>
<dimen name="_179sdp">179.00dp</dimen>
<dimen name="_180sdp">180.00dp</dimen>
<dimen name="_181sdp">181.00dp</dimen>
<dimen name="_182sdp">182.00dp</dimen>
<dimen name="_183sdp">183.00dp</dimen>
<dimen name="_184sdp">184.00dp</dimen>
<dimen name="_185sdp">185.00dp</dimen>
<dimen name="_186sdp">186.00dp</dimen>
<dimen name="_187sdp">187.00dp</dimen>
<dimen name="_188sdp">188.00dp</dimen>
<dimen name="_189sdp">189.00dp</dimen>
<dimen name="_190sdp">190.00dp</dimen>
<dimen name="_191sdp">191.00dp</dimen>
<dimen name="_192sdp">192.00dp</dimen>
<dimen name="_193sdp">193.00dp</dimen>
<dimen name="_194sdp">194.00dp</dimen>
<dimen name="_195sdp">195.00dp</dimen>
<dimen name="_196sdp">196.00dp</dimen>
<dimen name="_197sdp">197.00dp</dimen>
<dimen name="_198sdp">198.00dp</dimen>
<dimen name="_199sdp">199.00dp</dimen>
<dimen name="_200sdp">200.00dp</dimen>
<dimen name="_201sdp">201.00dp</dimen>
<dimen name="_202sdp">202.00dp</dimen>
<dimen name="_203sdp">203.00dp</dimen>
<dimen name="_204sdp">204.00dp</dimen>
<dimen name="_205sdp">205.00dp</dimen>
<dimen name="_206sdp">206.00dp</dimen>
<dimen name="_207sdp">207.00dp</dimen>
<dimen name="_208sdp">208.00dp</dimen>
<dimen name="_209sdp">209.00dp</dimen>
<dimen name="_210sdp">210.00dp</dimen>
<dimen name="_211sdp">211.00dp</dimen>
<dimen name="_212sdp">212.00dp</dimen>
<dimen name="_213sdp">213.00dp</dimen>
<dimen name="_214sdp">214.00dp</dimen>
<dimen name="_215sdp">215.00dp</dimen>
<dimen name="_216sdp">216.00dp</dimen>
<dimen name="_217sdp">217.00dp</dimen>
<dimen name="_218sdp">218.00dp</dimen>
<dimen name="_219sdp">219.00dp</dimen>
<dimen name="_220sdp">220.00dp</dimen>
<dimen name="_221sdp">221.00dp</dimen>
<dimen name="_222sdp">222.00dp</dimen>
<dimen name="_223sdp">223.00dp</dimen>
<dimen name="_224sdp">224.00dp</dimen>
<dimen name="_225sdp">225.00dp</dimen>
<dimen name="_226sdp">226.00dp</dimen>
<dimen name="_227sdp">227.00dp</dimen>
<dimen name="_228sdp">228.00dp</dimen>
<dimen name="_229sdp">229.00dp</dimen>
<dimen name="_230sdp">230.00dp</dimen>
<dimen name="_231sdp">231.00dp</dimen>
<dimen name="_232sdp">232.00dp</dimen>
<dimen name="_233sdp">233.00dp</dimen>
<dimen name="_234sdp">234.00dp</dimen>
<dimen name="_235sdp">235.00dp</dimen>
<dimen name="_236sdp">236.00dp</dimen>
<dimen name="_237sdp">237.00dp</dimen>
<dimen name="_238sdp">238.00dp</dimen>
<dimen name="_239sdp">239.00dp</dimen>
<dimen name="_240sdp">240.00dp</dimen>
<dimen name="_241sdp">241.00dp</dimen>
<dimen name="_242sdp">242.00dp</dimen>
<dimen name="_243sdp">243.00dp</dimen>
<dimen name="_244sdp">244.00dp</dimen>
<dimen name="_245sdp">245.00dp</dimen>
<dimen name="_246sdp">246.00dp</dimen>
<dimen name="_247sdp">247.00dp</dimen>
<dimen name="_248sdp">248.00dp</dimen>
<dimen name="_249sdp">249.00dp</dimen>
<dimen name="_250sdp">250.00dp</dimen>
<dimen name="_251sdp">251.00dp</dimen>
<dimen name="_252sdp">252.00dp</dimen>
<dimen name="_253sdp">253.00dp</dimen>
<dimen name="_254sdp">254.00dp</dimen>
<dimen name="_255sdp">255.00dp</dimen>
<dimen name="_256sdp">256.00dp</dimen>
<dimen name="_257sdp">257.00dp</dimen>
<dimen name="_258sdp">258.00dp</dimen>
<dimen name="_259sdp">259.00dp</dimen>
<dimen name="_260sdp">260.00dp</dimen>
<dimen name="_261sdp">261.00dp</dimen>
<dimen name="_262sdp">262.00dp</dimen>
<dimen name="_263sdp">263.00dp</dimen>
<dimen name="_264sdp">264.00dp</dimen>
<dimen name="_265sdp">265.00dp</dimen>
<dimen name="_266sdp">266.00dp</dimen>
<dimen name="_267sdp">267.00dp</dimen>
<dimen name="_268sdp">268.00dp</dimen>
<dimen name="_269sdp">269.00dp</dimen>
<dimen name="_270sdp">270.00dp</dimen>
<dimen name="_271sdp">271.00dp</dimen>
<dimen name="_272sdp">272.00dp</dimen>
<dimen name="_273sdp">273.00dp</dimen>
<dimen name="_274sdp">274.00dp</dimen>
<dimen name="_275sdp">275.00dp</dimen>
<dimen name="_276sdp">276.00dp</dimen>
<dimen name="_277sdp">277.00dp</dimen>
<dimen name="_278sdp">278.00dp</dimen>
<dimen name="_279sdp">279.00dp</dimen>
<dimen name="_280sdp">280.00dp</dimen>
<dimen name="_281sdp">281.00dp</dimen>
<dimen name="_282sdp">282.00dp</dimen>
<dimen name="_283sdp">283.00dp</dimen>
<dimen name="_284sdp">284.00dp</dimen>
<dimen name="_285sdp">285.00dp</dimen>
<dimen name="_286sdp">286.00dp</dimen>
<dimen name="_287sdp">287.00dp</dimen>
<dimen name="_288sdp">288.00dp</dimen>
<dimen name="_289sdp">289.00dp</dimen>
<dimen name="_290sdp">290.00dp</dimen>
<dimen name="_291sdp">291.00dp</dimen>
<dimen name="_292sdp">292.00dp</dimen>
<dimen name="_293sdp">293.00dp</dimen>
<dimen name="_294sdp">294.00dp</dimen>
<dimen name="_295sdp">295.00dp</dimen>
<dimen name="_296sdp">296.00dp</dimen>
<dimen name="_297sdp">297.00dp</dimen>
<dimen name="_298sdp">298.00dp</dimen>
<dimen name="_299sdp">299.00dp</dimen>
<dimen name="_300sdp">300.00dp</dimen>
</resources>

View File

@ -0,0 +1,7 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Base.Theme.QualityControlApp" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Customize your dark theme here. -->
<!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
</style>
</resources>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="dimension">values-sw300dp</string>
</resources>

View File

@ -0,0 +1,303 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="_1sdp">1.00dp</dimen>
<dimen name="_2sdp">2.00dp</dimen>
<dimen name="_3sdp">3.00dp</dimen>
<dimen name="_4sdp">4.00dp</dimen>
<dimen name="_5sdp">5.00dp</dimen>
<dimen name="_6sdp">6.00dp</dimen>
<dimen name="_7sdp">7.00dp</dimen>
<dimen name="_8sdp">8.00dp</dimen>
<dimen name="_9sdp">9.00dp</dimen>
<dimen name="_10sdp">10.00dp</dimen>
<dimen name="_11sdp">11.00dp</dimen>
<dimen name="_12sdp">12.00dp</dimen>
<dimen name="_13sdp">13.00dp</dimen>
<dimen name="_14sdp">14.00dp</dimen>
<dimen name="_15sdp">15.00dp</dimen>
<dimen name="_16sdp">16.00dp</dimen>
<dimen name="_17sdp">17.00dp</dimen>
<dimen name="_18sdp">18.00dp</dimen>
<dimen name="_19sdp">19.00dp</dimen>
<dimen name="_20sdp">20.00dp</dimen>
<dimen name="_21sdp">21.00dp</dimen>
<dimen name="_22sdp">22.00dp</dimen>
<dimen name="_23sdp">23.00dp</dimen>
<dimen name="_24sdp">24.00dp</dimen>
<dimen name="_25sdp">25.00dp</dimen>
<dimen name="_26sdp">26.00dp</dimen>
<dimen name="_27sdp">27.00dp</dimen>
<dimen name="_28sdp">28.00dp</dimen>
<dimen name="_29sdp">29.00dp</dimen>
<dimen name="_30sdp">30.00dp</dimen>
<dimen name="_31sdp">31.00dp</dimen>
<dimen name="_32sdp">32.00dp</dimen>
<dimen name="_33sdp">33.00dp</dimen>
<dimen name="_34sdp">34.00dp</dimen>
<dimen name="_35sdp">35.00dp</dimen>
<dimen name="_36sdp">36.00dp</dimen>
<dimen name="_37sdp">37.00dp</dimen>
<dimen name="_38sdp">38.00dp</dimen>
<dimen name="_39sdp">39.00dp</dimen>
<dimen name="_40sdp">40.00dp</dimen>
<dimen name="_41sdp">41.00dp</dimen>
<dimen name="_42sdp">42.00dp</dimen>
<dimen name="_43sdp">43.00dp</dimen>
<dimen name="_44sdp">44.00dp</dimen>
<dimen name="_45sdp">45.00dp</dimen>
<dimen name="_46sdp">46.00dp</dimen>
<dimen name="_47sdp">47.00dp</dimen>
<dimen name="_48sdp">48.00dp</dimen>
<dimen name="_49sdp">49.00dp</dimen>
<dimen name="_50sdp">50.00dp</dimen>
<dimen name="_51sdp">51.00dp</dimen>
<dimen name="_52sdp">52.00dp</dimen>
<dimen name="_53sdp">53.00dp</dimen>
<dimen name="_54sdp">54.00dp</dimen>
<dimen name="_55sdp">55.00dp</dimen>
<dimen name="_56sdp">56.00dp</dimen>
<dimen name="_57sdp">57.00dp</dimen>
<dimen name="_58sdp">58.00dp</dimen>
<dimen name="_59sdp">59.00dp</dimen>
<dimen name="_60sdp">60.00dp</dimen>
<dimen name="_61sdp">61.00dp</dimen>
<dimen name="_62sdp">62.00dp</dimen>
<dimen name="_63sdp">63.00dp</dimen>
<dimen name="_64sdp">64.00dp</dimen>
<dimen name="_65sdp">65.00dp</dimen>
<dimen name="_66sdp">66.00dp</dimen>
<dimen name="_67sdp">67.00dp</dimen>
<dimen name="_68sdp">68.00dp</dimen>
<dimen name="_69sdp">69.00dp</dimen>
<dimen name="_70sdp">70.00dp</dimen>
<dimen name="_71sdp">71.00dp</dimen>
<dimen name="_72sdp">72.00dp</dimen>
<dimen name="_73sdp">73.00dp</dimen>
<dimen name="_74sdp">74.00dp</dimen>
<dimen name="_75sdp">75.00dp</dimen>
<dimen name="_76sdp">76.00dp</dimen>
<dimen name="_77sdp">77.00dp</dimen>
<dimen name="_78sdp">78.00dp</dimen>
<dimen name="_79sdp">79.00dp</dimen>
<dimen name="_80sdp">80.00dp</dimen>
<dimen name="_81sdp">81.00dp</dimen>
<dimen name="_82sdp">82.00dp</dimen>
<dimen name="_83sdp">83.00dp</dimen>
<dimen name="_84sdp">84.00dp</dimen>
<dimen name="_85sdp">85.00dp</dimen>
<dimen name="_86sdp">86.00dp</dimen>
<dimen name="_87sdp">87.00dp</dimen>
<dimen name="_88sdp">88.00dp</dimen>
<dimen name="_89sdp">89.00dp</dimen>
<dimen name="_90sdp">90.00dp</dimen>
<dimen name="_91sdp">91.00dp</dimen>
<dimen name="_92sdp">92.00dp</dimen>
<dimen name="_93sdp">93.00dp</dimen>
<dimen name="_94sdp">94.00dp</dimen>
<dimen name="_95sdp">95.00dp</dimen>
<dimen name="_96sdp">96.00dp</dimen>
<dimen name="_97sdp">97.00dp</dimen>
<dimen name="_98sdp">98.00dp</dimen>
<dimen name="_99sdp">99.00dp</dimen>
<dimen name="_100sdp">100.00dp</dimen>
<dimen name="_101sdp">101.00dp</dimen>
<dimen name="_102sdp">102.00dp</dimen>
<dimen name="_103sdp">103.00dp</dimen>
<dimen name="_104sdp">104.00dp</dimen>
<dimen name="_105sdp">105.00dp</dimen>
<dimen name="_106sdp">106.00dp</dimen>
<dimen name="_107sdp">107.00dp</dimen>
<dimen name="_108sdp">108.00dp</dimen>
<dimen name="_109sdp">109.00dp</dimen>
<dimen name="_110sdp">110.00dp</dimen>
<dimen name="_111sdp">111.00dp</dimen>
<dimen name="_112sdp">112.00dp</dimen>
<dimen name="_113sdp">113.00dp</dimen>
<dimen name="_114sdp">114.00dp</dimen>
<dimen name="_115sdp">115.00dp</dimen>
<dimen name="_116sdp">116.00dp</dimen>
<dimen name="_117sdp">117.00dp</dimen>
<dimen name="_118sdp">118.00dp</dimen>
<dimen name="_119sdp">119.00dp</dimen>
<dimen name="_120sdp">120.00dp</dimen>
<dimen name="_121sdp">121.00dp</dimen>
<dimen name="_122sdp">122.00dp</dimen>
<dimen name="_123sdp">123.00dp</dimen>
<dimen name="_124sdp">124.00dp</dimen>
<dimen name="_125sdp">125.00dp</dimen>
<dimen name="_126sdp">126.00dp</dimen>
<dimen name="_127sdp">127.00dp</dimen>
<dimen name="_128sdp">128.00dp</dimen>
<dimen name="_129sdp">129.00dp</dimen>
<dimen name="_130sdp">130.00dp</dimen>
<dimen name="_131sdp">131.00dp</dimen>
<dimen name="_132sdp">132.00dp</dimen>
<dimen name="_133sdp">133.00dp</dimen>
<dimen name="_134sdp">134.00dp</dimen>
<dimen name="_135sdp">135.00dp</dimen>
<dimen name="_136sdp">136.00dp</dimen>
<dimen name="_137sdp">137.00dp</dimen>
<dimen name="_138sdp">138.00dp</dimen>
<dimen name="_139sdp">139.00dp</dimen>
<dimen name="_140sdp">140.00dp</dimen>
<dimen name="_141sdp">141.00dp</dimen>
<dimen name="_142sdp">142.00dp</dimen>
<dimen name="_143sdp">143.00dp</dimen>
<dimen name="_144sdp">144.00dp</dimen>
<dimen name="_145sdp">145.00dp</dimen>
<dimen name="_146sdp">146.00dp</dimen>
<dimen name="_147sdp">147.00dp</dimen>
<dimen name="_148sdp">148.00dp</dimen>
<dimen name="_149sdp">149.00dp</dimen>
<dimen name="_150sdp">150.00dp</dimen>
<dimen name="_151sdp">151.00dp</dimen>
<dimen name="_152sdp">152.00dp</dimen>
<dimen name="_153sdp">153.00dp</dimen>
<dimen name="_154sdp">154.00dp</dimen>
<dimen name="_155sdp">155.00dp</dimen>
<dimen name="_156sdp">156.00dp</dimen>
<dimen name="_157sdp">157.00dp</dimen>
<dimen name="_158sdp">158.00dp</dimen>
<dimen name="_159sdp">159.00dp</dimen>
<dimen name="_160sdp">160.00dp</dimen>
<dimen name="_161sdp">161.00dp</dimen>
<dimen name="_162sdp">162.00dp</dimen>
<dimen name="_163sdp">163.00dp</dimen>
<dimen name="_164sdp">164.00dp</dimen>
<dimen name="_165sdp">165.00dp</dimen>
<dimen name="_166sdp">166.00dp</dimen>
<dimen name="_167sdp">167.00dp</dimen>
<dimen name="_168sdp">168.00dp</dimen>
<dimen name="_169sdp">169.00dp</dimen>
<dimen name="_170sdp">170.00dp</dimen>
<dimen name="_171sdp">171.00dp</dimen>
<dimen name="_172sdp">172.00dp</dimen>
<dimen name="_173sdp">173.00dp</dimen>
<dimen name="_174sdp">174.00dp</dimen>
<dimen name="_175sdp">175.00dp</dimen>
<dimen name="_176sdp">176.00dp</dimen>
<dimen name="_177sdp">177.00dp</dimen>
<dimen name="_178sdp">178.00dp</dimen>
<dimen name="_179sdp">179.00dp</dimen>
<dimen name="_180sdp">180.00dp</dimen>
<dimen name="_181sdp">181.00dp</dimen>
<dimen name="_182sdp">182.00dp</dimen>
<dimen name="_183sdp">183.00dp</dimen>
<dimen name="_184sdp">184.00dp</dimen>
<dimen name="_185sdp">185.00dp</dimen>
<dimen name="_186sdp">186.00dp</dimen>
<dimen name="_187sdp">187.00dp</dimen>
<dimen name="_188sdp">188.00dp</dimen>
<dimen name="_189sdp">189.00dp</dimen>
<dimen name="_190sdp">190.00dp</dimen>
<dimen name="_191sdp">191.00dp</dimen>
<dimen name="_192sdp">192.00dp</dimen>
<dimen name="_193sdp">193.00dp</dimen>
<dimen name="_194sdp">194.00dp</dimen>
<dimen name="_195sdp">195.00dp</dimen>
<dimen name="_196sdp">196.00dp</dimen>
<dimen name="_197sdp">197.00dp</dimen>
<dimen name="_198sdp">198.00dp</dimen>
<dimen name="_199sdp">199.00dp</dimen>
<dimen name="_200sdp">200.00dp</dimen>
<dimen name="_201sdp">201.00dp</dimen>
<dimen name="_202sdp">202.00dp</dimen>
<dimen name="_203sdp">203.00dp</dimen>
<dimen name="_204sdp">204.00dp</dimen>
<dimen name="_205sdp">205.00dp</dimen>
<dimen name="_206sdp">206.00dp</dimen>
<dimen name="_207sdp">207.00dp</dimen>
<dimen name="_208sdp">208.00dp</dimen>
<dimen name="_209sdp">209.00dp</dimen>
<dimen name="_210sdp">210.00dp</dimen>
<dimen name="_211sdp">211.00dp</dimen>
<dimen name="_212sdp">212.00dp</dimen>
<dimen name="_213sdp">213.00dp</dimen>
<dimen name="_214sdp">214.00dp</dimen>
<dimen name="_215sdp">215.00dp</dimen>
<dimen name="_216sdp">216.00dp</dimen>
<dimen name="_217sdp">217.00dp</dimen>
<dimen name="_218sdp">218.00dp</dimen>
<dimen name="_219sdp">219.00dp</dimen>
<dimen name="_220sdp">220.00dp</dimen>
<dimen name="_221sdp">221.00dp</dimen>
<dimen name="_222sdp">222.00dp</dimen>
<dimen name="_223sdp">223.00dp</dimen>
<dimen name="_224sdp">224.00dp</dimen>
<dimen name="_225sdp">225.00dp</dimen>
<dimen name="_226sdp">226.00dp</dimen>
<dimen name="_227sdp">227.00dp</dimen>
<dimen name="_228sdp">228.00dp</dimen>
<dimen name="_229sdp">229.00dp</dimen>
<dimen name="_230sdp">230.00dp</dimen>
<dimen name="_231sdp">231.00dp</dimen>
<dimen name="_232sdp">232.00dp</dimen>
<dimen name="_233sdp">233.00dp</dimen>
<dimen name="_234sdp">234.00dp</dimen>
<dimen name="_235sdp">235.00dp</dimen>
<dimen name="_236sdp">236.00dp</dimen>
<dimen name="_237sdp">237.00dp</dimen>
<dimen name="_238sdp">238.00dp</dimen>
<dimen name="_239sdp">239.00dp</dimen>
<dimen name="_240sdp">240.00dp</dimen>
<dimen name="_241sdp">241.00dp</dimen>
<dimen name="_242sdp">242.00dp</dimen>
<dimen name="_243sdp">243.00dp</dimen>
<dimen name="_244sdp">244.00dp</dimen>
<dimen name="_245sdp">245.00dp</dimen>
<dimen name="_246sdp">246.00dp</dimen>
<dimen name="_247sdp">247.00dp</dimen>
<dimen name="_248sdp">248.00dp</dimen>
<dimen name="_249sdp">249.00dp</dimen>
<dimen name="_250sdp">250.00dp</dimen>
<dimen name="_251sdp">251.00dp</dimen>
<dimen name="_252sdp">252.00dp</dimen>
<dimen name="_253sdp">253.00dp</dimen>
<dimen name="_254sdp">254.00dp</dimen>
<dimen name="_255sdp">255.00dp</dimen>
<dimen name="_256sdp">256.00dp</dimen>
<dimen name="_257sdp">257.00dp</dimen>
<dimen name="_258sdp">258.00dp</dimen>
<dimen name="_259sdp">259.00dp</dimen>
<dimen name="_260sdp">260.00dp</dimen>
<dimen name="_261sdp">261.00dp</dimen>
<dimen name="_262sdp">262.00dp</dimen>
<dimen name="_263sdp">263.00dp</dimen>
<dimen name="_264sdp">264.00dp</dimen>
<dimen name="_265sdp">265.00dp</dimen>
<dimen name="_266sdp">266.00dp</dimen>
<dimen name="_267sdp">267.00dp</dimen>
<dimen name="_268sdp">268.00dp</dimen>
<dimen name="_269sdp">269.00dp</dimen>
<dimen name="_270sdp">270.00dp</dimen>
<dimen name="_271sdp">271.00dp</dimen>
<dimen name="_272sdp">272.00dp</dimen>
<dimen name="_273sdp">273.00dp</dimen>
<dimen name="_274sdp">274.00dp</dimen>
<dimen name="_275sdp">275.00dp</dimen>
<dimen name="_276sdp">276.00dp</dimen>
<dimen name="_277sdp">277.00dp</dimen>
<dimen name="_278sdp">278.00dp</dimen>
<dimen name="_279sdp">279.00dp</dimen>
<dimen name="_280sdp">280.00dp</dimen>
<dimen name="_281sdp">281.00dp</dimen>
<dimen name="_282sdp">282.00dp</dimen>
<dimen name="_283sdp">283.00dp</dimen>
<dimen name="_284sdp">284.00dp</dimen>
<dimen name="_285sdp">285.00dp</dimen>
<dimen name="_286sdp">286.00dp</dimen>
<dimen name="_287sdp">287.00dp</dimen>
<dimen name="_288sdp">288.00dp</dimen>
<dimen name="_289sdp">289.00dp</dimen>
<dimen name="_290sdp">290.00dp</dimen>
<dimen name="_291sdp">291.00dp</dimen>
<dimen name="_292sdp">292.00dp</dimen>
<dimen name="_293sdp">293.00dp</dimen>
<dimen name="_294sdp">294.00dp</dimen>
<dimen name="_295sdp">295.00dp</dimen>
<dimen name="_296sdp">296.00dp</dimen>
<dimen name="_297sdp">297.00dp</dimen>
<dimen name="_298sdp">298.00dp</dimen>
<dimen name="_299sdp">299.00dp</dimen>
<dimen name="_300sdp">300.00dp</dimen>
</resources>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="dimension">values-sw330dp</string>
</resources>

View File

@ -0,0 +1,303 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="_1sdp">1.10dp</dimen>
<dimen name="_2sdp">2.20dp</dimen>
<dimen name="_3sdp">3.30dp</dimen>
<dimen name="_4sdp">4.40dp</dimen>
<dimen name="_5sdp">5.50dp</dimen>
<dimen name="_6sdp">6.60dp</dimen>
<dimen name="_7sdp">7.70dp</dimen>
<dimen name="_8sdp">8.80dp</dimen>
<dimen name="_9sdp">9.90dp</dimen>
<dimen name="_10sdp">11.00dp</dimen>
<dimen name="_11sdp">12.10dp</dimen>
<dimen name="_12sdp">13.20dp</dimen>
<dimen name="_13sdp">14.30dp</dimen>
<dimen name="_14sdp">15.40dp</dimen>
<dimen name="_15sdp">16.50dp</dimen>
<dimen name="_16sdp">17.60dp</dimen>
<dimen name="_17sdp">18.70dp</dimen>
<dimen name="_18sdp">19.80dp</dimen>
<dimen name="_19sdp">20.90dp</dimen>
<dimen name="_20sdp">22.00dp</dimen>
<dimen name="_21sdp">23.10dp</dimen>
<dimen name="_22sdp">24.20dp</dimen>
<dimen name="_23sdp">25.30dp</dimen>
<dimen name="_24sdp">26.40dp</dimen>
<dimen name="_25sdp">27.50dp</dimen>
<dimen name="_26sdp">28.60dp</dimen>
<dimen name="_27sdp">29.70dp</dimen>
<dimen name="_28sdp">30.80dp</dimen>
<dimen name="_29sdp">31.90dp</dimen>
<dimen name="_30sdp">33.00dp</dimen>
<dimen name="_31sdp">34.10dp</dimen>
<dimen name="_32sdp">35.20dp</dimen>
<dimen name="_33sdp">36.30dp</dimen>
<dimen name="_34sdp">37.40dp</dimen>
<dimen name="_35sdp">38.50dp</dimen>
<dimen name="_36sdp">39.60dp</dimen>
<dimen name="_37sdp">40.70dp</dimen>
<dimen name="_38sdp">41.80dp</dimen>
<dimen name="_39sdp">42.90dp</dimen>
<dimen name="_40sdp">44.00dp</dimen>
<dimen name="_41sdp">45.10dp</dimen>
<dimen name="_42sdp">46.20dp</dimen>
<dimen name="_43sdp">47.30dp</dimen>
<dimen name="_44sdp">48.40dp</dimen>
<dimen name="_45sdp">49.50dp</dimen>
<dimen name="_46sdp">50.60dp</dimen>
<dimen name="_47sdp">51.70dp</dimen>
<dimen name="_48sdp">52.80dp</dimen>
<dimen name="_49sdp">53.90dp</dimen>
<dimen name="_50sdp">55.00dp</dimen>
<dimen name="_51sdp">56.10dp</dimen>
<dimen name="_52sdp">57.20dp</dimen>
<dimen name="_53sdp">58.30dp</dimen>
<dimen name="_54sdp">59.40dp</dimen>
<dimen name="_55sdp">60.50dp</dimen>
<dimen name="_56sdp">61.60dp</dimen>
<dimen name="_57sdp">62.70dp</dimen>
<dimen name="_58sdp">63.80dp</dimen>
<dimen name="_59sdp">64.90dp</dimen>
<dimen name="_60sdp">66.00dp</dimen>
<dimen name="_61sdp">67.10dp</dimen>
<dimen name="_62sdp">68.20dp</dimen>
<dimen name="_63sdp">69.30dp</dimen>
<dimen name="_64sdp">70.40dp</dimen>
<dimen name="_65sdp">71.50dp</dimen>
<dimen name="_66sdp">72.60dp</dimen>
<dimen name="_67sdp">73.70dp</dimen>
<dimen name="_68sdp">74.80dp</dimen>
<dimen name="_69sdp">75.90dp</dimen>
<dimen name="_70sdp">77.00dp</dimen>
<dimen name="_71sdp">78.10dp</dimen>
<dimen name="_72sdp">79.20dp</dimen>
<dimen name="_73sdp">80.30dp</dimen>
<dimen name="_74sdp">81.40dp</dimen>
<dimen name="_75sdp">82.50dp</dimen>
<dimen name="_76sdp">83.60dp</dimen>
<dimen name="_77sdp">84.70dp</dimen>
<dimen name="_78sdp">85.80dp</dimen>
<dimen name="_79sdp">86.90dp</dimen>
<dimen name="_80sdp">88.00dp</dimen>
<dimen name="_81sdp">89.10dp</dimen>
<dimen name="_82sdp">90.20dp</dimen>
<dimen name="_83sdp">91.30dp</dimen>
<dimen name="_84sdp">92.40dp</dimen>
<dimen name="_85sdp">93.50dp</dimen>
<dimen name="_86sdp">94.60dp</dimen>
<dimen name="_87sdp">95.70dp</dimen>
<dimen name="_88sdp">96.80dp</dimen>
<dimen name="_89sdp">97.90dp</dimen>
<dimen name="_90sdp">99.00dp</dimen>
<dimen name="_91sdp">100.10dp</dimen>
<dimen name="_92sdp">101.20dp</dimen>
<dimen name="_93sdp">102.30dp</dimen>
<dimen name="_94sdp">103.40dp</dimen>
<dimen name="_95sdp">104.50dp</dimen>
<dimen name="_96sdp">105.60dp</dimen>
<dimen name="_97sdp">106.70dp</dimen>
<dimen name="_98sdp">107.80dp</dimen>
<dimen name="_99sdp">108.90dp</dimen>
<dimen name="_100sdp">110.00dp</dimen>
<dimen name="_101sdp">111.10dp</dimen>
<dimen name="_102sdp">112.20dp</dimen>
<dimen name="_103sdp">113.30dp</dimen>
<dimen name="_104sdp">114.40dp</dimen>
<dimen name="_105sdp">115.50dp</dimen>
<dimen name="_106sdp">116.60dp</dimen>
<dimen name="_107sdp">117.70dp</dimen>
<dimen name="_108sdp">118.80dp</dimen>
<dimen name="_109sdp">119.90dp</dimen>
<dimen name="_110sdp">121.00dp</dimen>
<dimen name="_111sdp">122.10dp</dimen>
<dimen name="_112sdp">123.20dp</dimen>
<dimen name="_113sdp">124.30dp</dimen>
<dimen name="_114sdp">125.40dp</dimen>
<dimen name="_115sdp">126.50dp</dimen>
<dimen name="_116sdp">127.60dp</dimen>
<dimen name="_117sdp">128.70dp</dimen>
<dimen name="_118sdp">129.80dp</dimen>
<dimen name="_119sdp">130.90dp</dimen>
<dimen name="_120sdp">132.00dp</dimen>
<dimen name="_121sdp">133.10dp</dimen>
<dimen name="_122sdp">134.20dp</dimen>
<dimen name="_123sdp">135.30dp</dimen>
<dimen name="_124sdp">136.40dp</dimen>
<dimen name="_125sdp">137.50dp</dimen>
<dimen name="_126sdp">138.60dp</dimen>
<dimen name="_127sdp">139.70dp</dimen>
<dimen name="_128sdp">140.80dp</dimen>
<dimen name="_129sdp">141.90dp</dimen>
<dimen name="_130sdp">143.00dp</dimen>
<dimen name="_131sdp">144.10dp</dimen>
<dimen name="_132sdp">145.20dp</dimen>
<dimen name="_133sdp">146.30dp</dimen>
<dimen name="_134sdp">147.40dp</dimen>
<dimen name="_135sdp">148.50dp</dimen>
<dimen name="_136sdp">149.60dp</dimen>
<dimen name="_137sdp">150.70dp</dimen>
<dimen name="_138sdp">151.80dp</dimen>
<dimen name="_139sdp">152.90dp</dimen>
<dimen name="_140sdp">154.00dp</dimen>
<dimen name="_141sdp">155.10dp</dimen>
<dimen name="_142sdp">156.20dp</dimen>
<dimen name="_143sdp">157.30dp</dimen>
<dimen name="_144sdp">158.40dp</dimen>
<dimen name="_145sdp">159.50dp</dimen>
<dimen name="_146sdp">160.60dp</dimen>
<dimen name="_147sdp">161.70dp</dimen>
<dimen name="_148sdp">162.80dp</dimen>
<dimen name="_149sdp">163.90dp</dimen>
<dimen name="_150sdp">165.00dp</dimen>
<dimen name="_151sdp">166.10dp</dimen>
<dimen name="_152sdp">167.20dp</dimen>
<dimen name="_153sdp">168.30dp</dimen>
<dimen name="_154sdp">169.40dp</dimen>
<dimen name="_155sdp">170.50dp</dimen>
<dimen name="_156sdp">171.60dp</dimen>
<dimen name="_157sdp">172.70dp</dimen>
<dimen name="_158sdp">173.80dp</dimen>
<dimen name="_159sdp">174.90dp</dimen>
<dimen name="_160sdp">176.00dp</dimen>
<dimen name="_161sdp">177.10dp</dimen>
<dimen name="_162sdp">178.20dp</dimen>
<dimen name="_163sdp">179.30dp</dimen>
<dimen name="_164sdp">180.40dp</dimen>
<dimen name="_165sdp">181.50dp</dimen>
<dimen name="_166sdp">182.60dp</dimen>
<dimen name="_167sdp">183.70dp</dimen>
<dimen name="_168sdp">184.80dp</dimen>
<dimen name="_169sdp">185.90dp</dimen>
<dimen name="_170sdp">187.00dp</dimen>
<dimen name="_171sdp">188.10dp</dimen>
<dimen name="_172sdp">189.20dp</dimen>
<dimen name="_173sdp">190.30dp</dimen>
<dimen name="_174sdp">191.40dp</dimen>
<dimen name="_175sdp">192.50dp</dimen>
<dimen name="_176sdp">193.60dp</dimen>
<dimen name="_177sdp">194.70dp</dimen>
<dimen name="_178sdp">195.80dp</dimen>
<dimen name="_179sdp">196.90dp</dimen>
<dimen name="_180sdp">198.00dp</dimen>
<dimen name="_181sdp">199.10dp</dimen>
<dimen name="_182sdp">200.20dp</dimen>
<dimen name="_183sdp">201.30dp</dimen>
<dimen name="_184sdp">202.40dp</dimen>
<dimen name="_185sdp">203.50dp</dimen>
<dimen name="_186sdp">204.60dp</dimen>
<dimen name="_187sdp">205.70dp</dimen>
<dimen name="_188sdp">206.80dp</dimen>
<dimen name="_189sdp">207.90dp</dimen>
<dimen name="_190sdp">209.00dp</dimen>
<dimen name="_191sdp">210.10dp</dimen>
<dimen name="_192sdp">211.20dp</dimen>
<dimen name="_193sdp">212.30dp</dimen>
<dimen name="_194sdp">213.40dp</dimen>
<dimen name="_195sdp">214.50dp</dimen>
<dimen name="_196sdp">215.60dp</dimen>
<dimen name="_197sdp">216.70dp</dimen>
<dimen name="_198sdp">217.80dp</dimen>
<dimen name="_199sdp">218.90dp</dimen>
<dimen name="_200sdp">220.00dp</dimen>
<dimen name="_201sdp">221.10dp</dimen>
<dimen name="_202sdp">222.20dp</dimen>
<dimen name="_203sdp">223.30dp</dimen>
<dimen name="_204sdp">224.40dp</dimen>
<dimen name="_205sdp">225.50dp</dimen>
<dimen name="_206sdp">226.60dp</dimen>
<dimen name="_207sdp">227.70dp</dimen>
<dimen name="_208sdp">228.80dp</dimen>
<dimen name="_209sdp">229.90dp</dimen>
<dimen name="_210sdp">231.00dp</dimen>
<dimen name="_211sdp">232.10dp</dimen>
<dimen name="_212sdp">233.20dp</dimen>
<dimen name="_213sdp">234.30dp</dimen>
<dimen name="_214sdp">235.40dp</dimen>
<dimen name="_215sdp">236.50dp</dimen>
<dimen name="_216sdp">237.60dp</dimen>
<dimen name="_217sdp">238.70dp</dimen>
<dimen name="_218sdp">239.80dp</dimen>
<dimen name="_219sdp">240.90dp</dimen>
<dimen name="_220sdp">242.00dp</dimen>
<dimen name="_221sdp">243.10dp</dimen>
<dimen name="_222sdp">244.20dp</dimen>
<dimen name="_223sdp">245.30dp</dimen>
<dimen name="_224sdp">246.40dp</dimen>
<dimen name="_225sdp">247.50dp</dimen>
<dimen name="_226sdp">248.60dp</dimen>
<dimen name="_227sdp">249.70dp</dimen>
<dimen name="_228sdp">250.80dp</dimen>
<dimen name="_229sdp">251.90dp</dimen>
<dimen name="_230sdp">253.00dp</dimen>
<dimen name="_231sdp">254.10dp</dimen>
<dimen name="_232sdp">255.20dp</dimen>
<dimen name="_233sdp">256.30dp</dimen>
<dimen name="_234sdp">257.40dp</dimen>
<dimen name="_235sdp">258.50dp</dimen>
<dimen name="_236sdp">259.60dp</dimen>
<dimen name="_237sdp">260.70dp</dimen>
<dimen name="_238sdp">261.80dp</dimen>
<dimen name="_239sdp">262.90dp</dimen>
<dimen name="_240sdp">264.00dp</dimen>
<dimen name="_241sdp">265.10dp</dimen>
<dimen name="_242sdp">266.20dp</dimen>
<dimen name="_243sdp">267.30dp</dimen>
<dimen name="_244sdp">268.40dp</dimen>
<dimen name="_245sdp">269.50dp</dimen>
<dimen name="_246sdp">270.60dp</dimen>
<dimen name="_247sdp">271.70dp</dimen>
<dimen name="_248sdp">272.80dp</dimen>
<dimen name="_249sdp">273.90dp</dimen>
<dimen name="_250sdp">275.00dp</dimen>
<dimen name="_251sdp">276.10dp</dimen>
<dimen name="_252sdp">277.20dp</dimen>
<dimen name="_253sdp">278.30dp</dimen>
<dimen name="_254sdp">279.40dp</dimen>
<dimen name="_255sdp">280.50dp</dimen>
<dimen name="_256sdp">281.60dp</dimen>
<dimen name="_257sdp">282.70dp</dimen>
<dimen name="_258sdp">283.80dp</dimen>
<dimen name="_259sdp">284.90dp</dimen>
<dimen name="_260sdp">286.00dp</dimen>
<dimen name="_261sdp">287.10dp</dimen>
<dimen name="_262sdp">288.20dp</dimen>
<dimen name="_263sdp">289.30dp</dimen>
<dimen name="_264sdp">290.40dp</dimen>
<dimen name="_265sdp">291.50dp</dimen>
<dimen name="_266sdp">292.60dp</dimen>
<dimen name="_267sdp">293.70dp</dimen>
<dimen name="_268sdp">294.80dp</dimen>
<dimen name="_269sdp">295.90dp</dimen>
<dimen name="_270sdp">297.00dp</dimen>
<dimen name="_271sdp">298.10dp</dimen>
<dimen name="_272sdp">299.20dp</dimen>
<dimen name="_273sdp">300.30dp</dimen>
<dimen name="_274sdp">301.40dp</dimen>
<dimen name="_275sdp">302.50dp</dimen>
<dimen name="_276sdp">303.60dp</dimen>
<dimen name="_277sdp">304.70dp</dimen>
<dimen name="_278sdp">305.80dp</dimen>
<dimen name="_279sdp">306.90dp</dimen>
<dimen name="_280sdp">308.00dp</dimen>
<dimen name="_281sdp">309.10dp</dimen>
<dimen name="_282sdp">310.20dp</dimen>
<dimen name="_283sdp">311.30dp</dimen>
<dimen name="_284sdp">312.40dp</dimen>
<dimen name="_285sdp">313.50dp</dimen>
<dimen name="_286sdp">314.60dp</dimen>
<dimen name="_287sdp">315.70dp</dimen>
<dimen name="_288sdp">316.80dp</dimen>
<dimen name="_289sdp">317.90dp</dimen>
<dimen name="_290sdp">319.00dp</dimen>
<dimen name="_291sdp">320.10dp</dimen>
<dimen name="_292sdp">321.20dp</dimen>
<dimen name="_293sdp">322.30dp</dimen>
<dimen name="_294sdp">323.40dp</dimen>
<dimen name="_295sdp">324.50dp</dimen>
<dimen name="_296sdp">325.60dp</dimen>
<dimen name="_297sdp">326.70dp</dimen>
<dimen name="_298sdp">327.80dp</dimen>
<dimen name="_299sdp">328.90dp</dimen>
<dimen name="_300sdp">330.00dp</dimen>
</resources>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="dimension">values-sw360dp</string>
</resources>

Some files were not shown because too many files have changed in this diff Show More