New push with junit espresso tests

This commit is contained in:
2019-03-11 22:05:02 +11:00
parent 087c3e991c
commit 987b25af31
119 changed files with 6864 additions and 1553 deletions

View File

@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="WizardSettings">
<option name="children">
<map>
<entry key="imageWizard">
<value>
<PersistentState />
</value>
</entry>
</map>
</option>
</component>
</project>

2
.idea/misc.xml generated
View File

@@ -29,7 +29,7 @@
</value>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@@ -1,4 +1,5 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 28
@@ -6,8 +7,8 @@ android {
applicationId "h_mal.appttude.com.driver"
minSdkVersion 24
targetSdkVersion 28
versionCode 1
versionName "1.0"
versionCode 5
versionName "1.5"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
@@ -22,17 +23,24 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:cardview-v7:26.1.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.google.android.gms:play-services-auth:15.0.1'
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-auth:16.0.1'
implementation 'com.google.firebase:firebase-storage:16.0.1'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.github.chrisbanes:PhotoView:2.1.0'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.google.code.gson:gson:2.3.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
}
apply plugin: 'com.google.gms.google-services'
repositories {
mavenCentral()
}

View File

@@ -3,7 +3,10 @@ package h_mal.appttude.com.driver;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import android.view.View;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -23,4 +26,5 @@ public class ExampleInstrumentedTest {
assertEquals("h_mal.appttude.com.driver", appContext.getPackageName());
}
}

View File

@@ -9,7 +9,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.CAMERA" />
<application
android:allowBackup="true"
@@ -19,13 +19,12 @@
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".LoginActivity"
android:name=".User.LoginActivity"
android:label="@string/app_name"
android:theme="@style/Theme.Design.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
@@ -36,9 +35,10 @@
android:theme="@style/AppTheme.NoActionBar">
</activity>
<activity android:name=".RegisterActivity">
<activity android:name=".User.RegisterActivity">
</activity>
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="h_mal.appttude.com.driver"
@@ -46,8 +46,10 @@
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
android:resource="@xml/file_paths" />
</provider>
<activity android:name=".User.forgotPasswordActivity"></activity>
</application>
</manifest>

View File

@@ -0,0 +1,293 @@
package h_mal.appttude.com.driver.Archive;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import h_mal.appttude.com.driver.Global.ImageSwiperClass;
import h_mal.appttude.com.driver.Objects.ArchiveObject;
import h_mal.appttude.com.driver.Objects.DriverProfileObject;
import h_mal.appttude.com.driver.Objects.DriversLicenseObject;
import h_mal.appttude.com.driver.Objects.InsuranceObject;
import h_mal.appttude.com.driver.Objects.LogbookObject;
import h_mal.appttude.com.driver.Objects.MotObject;
import h_mal.appttude.com.driver.Objects.PrivateHireObject;
import h_mal.appttude.com.driver.Objects.PrivateHireVehicleObject;
import h_mal.appttude.com.driver.Objects.VehicleProfileObject;
import h_mal.appttude.com.driver.Objects.WholeObject.VehicleProfile;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.FirebaseClass.*;
import static h_mal.appttude.com.driver.MainActivity.loadImage;
import static h_mal.appttude.com.driver.MainActivity.printObjectAsJson;
import static h_mal.appttude.com.driver.MainActivity.setAsDateTime;
public class ArchiveObjectListAdapter extends BaseAdapter {
private static String TAG = "ArchiveObjectListAdapte";
ArchiveObject archiveObject;
Context context;
String archiveString;
int size;
String[] mKeys;
private TextView dateArchivedText;
public ArchiveObjectListAdapter(ArchiveObject archiveObject, Context context, String archiveString) {
this.archiveObject = archiveObject;
this.context = context;
this.archiveString = archiveString;
switch (archiveString){
case PRIVATE_HIRE_FIREBASE:
size = archiveObject.getPrivate_hire().size();
mKeys = archiveObject.getPrivate_hire().keySet().toArray(new String[archiveObject.getPrivate_hire().size()]);
break;
case DRIVERS_LICENSE_FIREBASE:
size = archiveObject.getDriver_license().size();
mKeys = archiveObject.getDriver_license().keySet().toArray(new String[archiveObject.getDriver_license().size()]);
break;
case VEHICLE_DETAILS_FIREBASE:
size = archiveObject.getVehicle_details().size();
mKeys = archiveObject.getVehicle_details().keySet().toArray(new String[archiveObject.getVehicle_details().size()]);
break;
case MOT_FIREBASE:
size = archiveObject.getMot_details().size();
mKeys = archiveObject.getMot_details().keySet().toArray(new String[archiveObject.getMot_details().size()]);
break;
case INSURANCE_FIREBASE:
size = archiveObject.getInsurance_details().size();
mKeys = archiveObject.getInsurance_details().keySet().toArray(new String[archiveObject.getInsurance_details().size()]);
break;
case LOG_BOOK_FIREBASE:
size = archiveObject.getLog_book().size();
mKeys = archiveObject.getLog_book().keySet().toArray(new String[archiveObject.getLog_book().size()]);
break;
case PRIVATE_HIRE_VEHICLE_LICENSE:
size = archiveObject.getPh_car().size();
mKeys = archiveObject.getPh_car().keySet().toArray(new String[archiveObject.getPh_car().size()]);
break;
}
}
@Override
public int getCount() {
return size;
}
@Override
public Object getItem(int position) {
switch (archiveString){
case PRIVATE_HIRE_FIREBASE:
return archiveObject.getPrivate_hire().get(mKeys[position]);
case DRIVERS_LICENSE_FIREBASE:
return archiveObject.getDriver_license().get(mKeys[position]);
case VEHICLE_DETAILS_FIREBASE:
return archiveObject.getVehicle_details().get(mKeys[position]);
case MOT_FIREBASE:
return archiveObject.getMot_details().get(mKeys[position]);
case INSURANCE_FIREBASE:
return archiveObject.getInsurance_details().get(mKeys[position]);
case LOG_BOOK_FIREBASE:
return archiveObject.getLog_book().get(mKeys[position]);
case PRIVATE_HIRE_VEHICLE_LICENSE:
return archiveObject.getPh_car().get(mKeys[position]);
default:
return mKeys[position];
}
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null) {
if (archiveString.equals(PRIVATE_HIRE_FIREBASE) ||
archiveString.equals(DRIVERS_LICENSE_FIREBASE) ||
archiveString.equals(MOT_FIREBASE) ||
archiveString.equals(LOG_BOOK_FIREBASE) ||
archiveString.equals(PRIVATE_HIRE_VEHICLE_LICENSE)){
listItemView = LayoutInflater.from(context).inflate(
R.layout.archive_license_item, parent, false);
ImageView imageView = listItemView.findViewById(R.id.image_archive);
ProgressBar progressBar = listItemView.findViewById(R.id.prog_archive);
dateArchivedText = listItemView.findViewById(R.id.date_archived);
LinearLayout expiryHolder = listItemView.findViewById(R.id.expiry_view);
LinearLayout fieldTwo = listItemView.findViewById(R.id.field_two_view);
TextView expiryText = listItemView.findViewById(R.id.exp_text);
TextView fiewTwoLable = listItemView.findViewById(R.id.field_two);
TextView fieldTwoText = listItemView.findViewById(R.id.field_two_text);
switch (archiveString){
case PRIVATE_HIRE_FIREBASE:
expiryHolder.setVisibility(View.VISIBLE);
fieldTwo.setVisibility(View.VISIBLE);
PrivateHireObject privateHireObject = (PrivateHireObject) getItem(position);
Picasso.get().load(privateHireObject.getPhImageString())
.into(loadImage(progressBar,imageView));
dateString(position);
expiryText.setText(privateHireObject.getPhExpiry());
fiewTwoLable.setText("Private Hire License No.:");
fieldTwoText.setText(privateHireObject.getPhNumber());
break;
case DRIVERS_LICENSE_FIREBASE:
expiryHolder.setVisibility(View.VISIBLE);
fieldTwo.setVisibility(View.VISIBLE);
DriversLicenseObject driversLicenseObject = (DriversLicenseObject) getItem(position);
Picasso.get().load(driversLicenseObject.getLicenseImageString())
.into(loadImage(progressBar,imageView));
dateString(position);
expiryText.setText(driversLicenseObject.getLicenseExpiry());
fiewTwoLable.setText("License No.:");
fieldTwoText.setText(driversLicenseObject.getLicenseNumber());
break;
case MOT_FIREBASE:
Log.i(TAG, "getView: MOT OBJECT");
expiryHolder.setVisibility(View.VISIBLE);
fieldTwo.setVisibility(View.GONE);
MotObject motObject = (MotObject) getItem(position);
Picasso.get().load(motObject.getMotImageString())
.into(loadImage(progressBar,imageView));
dateString(position);
expiryText.setText(motObject.getMotExpiry());
break;
case LOG_BOOK_FIREBASE:
expiryHolder.setVisibility(View.GONE);
fieldTwo.setVisibility(View.VISIBLE);
LogbookObject logbookObject = (LogbookObject) getItem(position);
Picasso.get().load(logbookObject.getPhotoString())
.into(loadImage(progressBar,imageView));
dateString(position);
fiewTwoLable.setText("V5C No.:");
fieldTwoText.setText(logbookObject.getV5cnumber());
break;
case PRIVATE_HIRE_VEHICLE_LICENSE:
expiryHolder.setVisibility(View.VISIBLE);
fieldTwo.setVisibility(View.VISIBLE);
PrivateHireVehicleObject privateHireVehicleObject = (PrivateHireVehicleObject) getItem(position);
Picasso.get().load(privateHireVehicleObject.getPhCarImageString())
.into(loadImage(progressBar,imageView));
dateString(position);
expiryText.setText(privateHireVehicleObject.getPhCarExpiry());
fiewTwoLable.setText("Private Hire Vehicle License No.:");
fieldTwoText.setText(privateHireVehicleObject.getPhCarNumber());
break;
}
}else if (archiveString.equals(INSURANCE_FIREBASE)){
listItemView = LayoutInflater.from(context).inflate(
R.layout.archive_insurance_item, parent, false);
View holder = listItemView.findViewById(R.id.image_pager);
ImageSwiperClass swiperClass = new ImageSwiperClass(context,holder);
// swiperClass.hideDelete();
listItemView.findViewById(R.id.delete).setVisibility(View.GONE);
// holder.findViewById(R.id.delete).setVisibility(View.INVISIBLE);
dateArchivedText = listItemView.findViewById(R.id.date_archived);
dateString(position);
TextView expiryText = listItemView.findViewById(R.id.exp_text);
TextView fieldTwoText = listItemView.findViewById(R.id.archive_insurer);
InsuranceObject insuranceObject = (InsuranceObject) getItem(position);
swiperClass.reinstantiateList(insuranceObject.getPhotoStrings());
expiryText.setText(insuranceObject.getExpiryDate());
fieldTwoText.setText(insuranceObject.getInsurerName());
}else if(archiveString.equals(VEHICLE_DETAILS_FIREBASE)){
listItemView = LayoutInflater.from(context).inflate(
R.layout.archive_vehicle_item, parent, false);
dateArchivedText = listItemView.findViewById(R.id.date_archived);
dateString(position);
TextView numberPlate = listItemView.findViewById(R.id.number_plate);
TextView keeperName = listItemView.findViewById(R.id.keeper_name);
TextView keeperAddress = listItemView.findViewById(R.id.keeper_address);
TextView carText = listItemView.findViewById(R.id.car_text_arch);
TextView carColour = listItemView.findViewById(R.id.car_colour);
TextView carSeized = listItemView.findViewById(R.id.seized);
TextView startDate = listItemView.findViewById(R.id.first_date);
VehicleProfileObject vehicleProfileObject = (VehicleProfileObject) getItem(position);
numberPlate.setText(vehicleProfileObject.getReg());
keeperName.setText(vehicleProfileObject.getKeeperName());
keeperAddress.setText(vehicleProfileObject.getKeeperAddress() + "\n" +vehicleProfileObject.getKeeperPostCode());
carText.setText(vehicleProfileObject.getMake() + " " + vehicleProfileObject.getModel());
carColour.setText(vehicleProfileObject.getColour());
String s;
if (vehicleProfileObject.isSeized()){
s = "Yes";
}else {
s = "No";
}
carSeized.setText(s);
startDate.setText(vehicleProfileObject.getStartDate());
}
}
return listItemView;
}
private void dateString(int position){
boolean success = true;
try {
dateArchivedText.setText(setAsDateTime(mKeys[position]));
} catch (ParseException e) {
e.printStackTrace();
success = false;
}finally {
if (!success){
dateArchivedText.setText(mKeys[position].substring(0,8));
}
}
}
}

View File

@@ -1,9 +1,10 @@
package h_mal.appttude.com.driver;
package h_mal.appttude.com.driver.Driver;
import android.content.Context;
import android.app.DatePickerDialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
@@ -15,6 +16,7 @@ import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
@@ -26,25 +28,39 @@ import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
import h_mal.appttude.com.driver.Objects.DriversLicenseObject;
import h_mal.appttude.com.driver.Objects.PrivateHireObject;
import java.util.Calendar;
import static h_mal.appttude.com.driver.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
import static h_mal.appttude.com.driver.FirebaseClass.DRIVER_FIREBASE;
import static h_mal.appttude.com.driver.FirebaseClass.PRIVATE_HIRE_FIREBASE;
import static h_mal.appttude.com.driver.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.ImageSelectorDialog.CAMERA_REQUEST;
import static h_mal.appttude.com.driver.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
import h_mal.appttude.com.driver.Global.DateDialog;
import h_mal.appttude.com.driver.Global.FirebaseClass;
import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
import h_mal.appttude.com.driver.Global.ImageSelectorResults;
import h_mal.appttude.com.driver.Objects.DriversLicenseObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_CONSTANT;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVER_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.PRIVATE_HIRE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.archiveClass;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
import static h_mal.appttude.com.driver.MainActivity.loadImage;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
import static h_mal.appttude.com.driver.MainActivity.viewController;
public class DriverLicenseFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
private ImageView imageView;
private ProgressBar progressBar;
EditText licenseNo;
EditText expiry;
@@ -55,10 +71,33 @@ public class DriverLicenseFragment extends Fragment {
String li_numberString;
String li_exprString;
DatabaseReference reference;
DriversLicenseObject driversLicenseObject;
Boolean uploadNew;
String UID;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
uploadNew = false;
if (getArguments() != null){
Log.i(TAG, "onCreate: args = args exist");
if (getArguments().containsKey("user_id")){
UID = getArguments().getString("user_id");
}else {
UID = auth.getCurrentUser().getUid();
}
if (getArguments().containsKey(UPLOAD_NEW)){
uploadNew = true;
}
}else{
UID = auth.getCurrentUser().getUid();
}
reference = mDatabase.child(USER_FIREBASE).child(UID)
.child(DRIVER_FIREBASE).child(DRIVERS_LICENSE_FIREBASE);
}
@Override
@@ -68,10 +107,9 @@ public class DriverLicenseFragment extends Fragment {
View view = inflater.inflate(R.layout.fragment_driver_license, container, false);
imageView = view.findViewById(R.id.driversli_img);
progressBar = view.findViewById(R.id.pb_dl);
DatabaseReference reference = mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid())
.child(DRIVER_FIREBASE).child(DRIVERS_LICENSE_FIREBASE);
viewController.progress(View.VISIBLE);
reference.addListenerForSingleValueEvent(valueEventListener);
TextView uploadLic = view.findViewById(R.id.upload_lic);
@@ -82,8 +120,10 @@ public class DriverLicenseFragment extends Fragment {
expiry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DateDialog dateDialog = new DateDialog(getContext());
dateDialog.init(expiry);
DateDialog dateDialog = new DateDialog(getContext());
dateDialog.init(expiry);
}
});
@@ -110,25 +150,37 @@ public class DriverLicenseFragment extends Fragment {
if (!TextUtils.isEmpty(li_numberString) &&
!TextUtils.isEmpty(li_exprString)){
if (filePath != null){
Log.i(TAG, "onClick: new Image uploaded");
new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
@Override
public void processFinish(Uri output) {
Log.i(TAG, "processFinish: ");
if (output != null){
picUri = output;
publishObject();
fragmentManager.popBackStack();
}
viewController.progress(View.VISIBLE);
}
}).uploadImage(DRIVERS_LICENSE_FIREBASE,DRIVERS_LICENSE_FIREBASE + getDateStamp());
}else{
Log.i(TAG, "onClick: pushing with same image");
publishObject();
if (filePath == null && picUri == null){
Toast.makeText(getContext(), "No Driver image", Toast.LENGTH_SHORT).show();
viewController.progress(View.GONE);
}else {
if (filePath != null){
Log.i(TAG, "onClick: new Image uploaded");
new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
@Override
public void processFinish(Uri output) {
Log.i(TAG, "processFinish: ");
if (output != null){
picUri = output;
publishObject();
}else {
Toast.makeText(getContext(), getString(R.string.failed_upload), Toast.LENGTH_SHORT).show();
viewController.progress(View.GONE);
}
}
}).uploadImage(DRIVERS_LICENSE_FIREBASE,DRIVERS_LICENSE_FIREBASE + getDateStamp());
}else{
Log.i(TAG, "onClick: pushing with same image");
publishObject();
}
}
}else {
if (TextUtils.isEmpty(li_numberString)){
licenseNo.setError("Field required");
@@ -136,7 +188,7 @@ public class DriverLicenseFragment extends Fragment {
if (TextUtils.isEmpty(li_exprString)){
expiry.setError("Field required");
}
if (picUri == null){
if (picUri == null && filePath == null){
Toast.makeText(getContext(), getString(R.string.image_required), Toast.LENGTH_SHORT).show();
}
}
@@ -148,7 +200,7 @@ public class DriverLicenseFragment extends Fragment {
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
DriversLicenseObject driversLicenseObject = null;
viewController.progress(View.GONE);
try{
driversLicenseObject = dataSnapshot.getValue(DriversLicenseObject.class);
}catch (Exception e){
@@ -159,34 +211,50 @@ public class DriverLicenseFragment extends Fragment {
li_numberString = driversLicenseObject.getLicenseNumber();
li_exprString = driversLicenseObject.getLicenseExpiry();
licenseNo.setText(li_numberString);
expiry.setText(li_exprString);
Picasso.get()
.load(picUri)
.placeholder(R.mipmap.ic_launcher_round)
.into(imageView);
if(!uploadNew){
licenseNo.setText(li_numberString);
expiry.setText(li_exprString);
Picasso.get()
.load(picUri)
.into(loadImage(progressBar,imageView));
}
}else{
Toast.makeText(getContext(), getString(R.string.failed_retrieve), Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
viewController.progress(View.GONE);
Toast.makeText(getContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
Log.e(TAG, "onCancelled: " + databaseError.getMessage());
}
};
private void publishObject(){
DriversLicenseObject driversLicenseObject = new DriversLicenseObject(picUri.toString(),li_numberString,li_exprString);
if (uploadNew){
archiveClass.archiveRecord(UID,DRIVERS_LICENSE_FIREBASE,driversLicenseObject);
}
mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid()).child(DRIVER_FIREBASE).child(DRIVERS_LICENSE_FIREBASE)
.setValue(driversLicenseObject).addOnCompleteListener(new OnCompleteListener<Void>() {
DriversLicenseObject driversLicenseObjectNew = new DriversLicenseObject(picUri.toString(),li_numberString,li_exprString);
reference.setValue(driversLicenseObjectNew).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Log.i(TAG, "onComplete: publish = " + task.isSuccessful());
approvalsClass.setStatusCode(UID,DRIVERS_LICENSE_FIREBASE+APPROVAL_CONSTANT,APPROVAL_PENDING);
fragmentManager.popBackStack();
}else {
Toast.makeText(getContext(),R.string.unsuccessful, Toast.LENGTH_SHORT).show();
}
Log.i(TAG, "onComplete: publish = " + task.isSuccessful());
viewController.progress(View.GONE);
}
});
}
@Override
@@ -209,13 +277,13 @@ public class DriverLicenseFragment extends Fragment {
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
new ImageSelectorResults(new ImageSelectorResults.FilepathResponse() {
@Override
public void processFinish(Uri output) {
filePath = output;
}
}).Results(getActivity(),requestCode, resultCode, data,
filePath,imageView);
new ImageSelectorResults().Results(getActivity(),requestCode, resultCode, data,
filePath,imageView,new ImageSelectorResults.FilepathResponse() {
@Override
public void processFinish(Uri output) {
filePath = output;
}
});
}

View File

@@ -0,0 +1,147 @@
package h_mal.appttude.com.driver.Driver;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v7.widget.CardView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import h_mal.appttude.com.driver.Objects.ApprovalsObject;
import h_mal.appttude.com.driver.Objects.WholeDriverObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.archiveClass;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
import static h_mal.appttude.com.driver.MainActivity.viewController;
public class DriverOverallFragment extends Fragment {
CardView driverProfile;
CardView privateHire;
CardView driversLicense;
ImageView driverApr;
ImageView privateApr ;
ImageView driversLiApr;
TextView privExp;
TextView drivLiExp;
DatabaseReference reference;
WholeDriverObject driverProfileObject;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
reference = mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid());
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_driver_overall, container, false);
driverProfile = view.findViewById(R.id.driver_prof);
privateHire = view.findViewById(R.id.private_hire);
driversLicense = view.findViewById(R.id.drivers_license);
driverApr = view.findViewById(R.id.approval_dp);
privateApr = view.findViewById(R.id.approval_ph);
driversLiApr = view.findViewById(R.id.approval_dl);
privExp = view.findViewById(R.id.ph_button_exp);
drivLiExp = view.findViewById(R.id.dl_button_exp);
privExp.setVisibility(View.GONE);
drivLiExp.setVisibility(View.GONE);
viewController.progress(View.VISIBLE);
reference.addListenerForSingleValueEvent(valueEventListener);
return view;
}
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
driverProfileObject = dataSnapshot.getValue(WholeDriverObject.class);
if (driverProfileObject.approvalsObject != null){
ApprovalsObject approvalsObject = driverProfileObject.getApprovalsObject();
driverApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getDriver_details_approval()));
privateApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getPrivate_hire_approval()));
driversLiApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getDriver_license_approval()));
}
if (driverProfileObject.driver_profile != null){
if (driverProfileObject.getDriver_profile().private_hire != null){
privExp.setVisibility(View.VISIBLE);
privExp.setText("Expiry: " + driverProfileObject.getDriver_profile().getPrivate_hire().getPhExpiry());
}
if (driverProfileObject.getDriver_profile().driver_license != null){
drivLiExp.setVisibility(View.VISIBLE);
drivLiExp.setText("Expiry: " + driverProfileObject.getDriver_profile().getDriver_license().getLicenseExpiry());
}
}
driverProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
executeFragment(new DriverProfileFragment());
}
});
privateHire.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (driverProfileObject.driver_profile == null){
executeFragment(new PrivateHireLicenseFragment());
}else {
archiveClass.openDialogArchive(getContext(),driverProfileObject.getDriver_profile().getPrivate_hire()
,new PrivateHireLicenseFragment());
}
}
});
driversLicense.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (driverProfileObject.driver_profile == null){
executeFragment(new DriverLicenseFragment());
}else {
archiveClass.openDialogArchive(getContext(),driverProfileObject.getDriver_profile().getDriver_license()
,new DriverLicenseFragment());
}
}
});
viewController.progress(View.GONE);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
viewController.progress(View.GONE);
}
};
}

View File

@@ -1,4 +1,4 @@
package h_mal.appttude.com.driver;
package h_mal.appttude.com.driver.Driver;
import android.content.Intent;
import android.net.Uri;
@@ -13,60 +13,76 @@ import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.UserProfileChangeRequest;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
import h_mal.appttude.com.driver.Global.DateDialog;
import h_mal.appttude.com.driver.Global.FirebaseClass;
import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
import h_mal.appttude.com.driver.Global.ImageSelectorResults;
import h_mal.appttude.com.driver.Global.ViewController;
import h_mal.appttude.com.driver.Objects.DriverProfileObject;
import h_mal.appttude.com.driver.Objects.DriversLicenseObject;
import h_mal.appttude.com.driver.Objects.PrivateHireObject;
import h_mal.appttude.com.driver.Objects.UserObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.FirebaseClass.*;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
import static h_mal.appttude.com.driver.Global.FirebaseClass.*;
import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.executeFragment;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
import static h_mal.appttude.com.driver.MainActivity.loadImage;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
import static h_mal.appttude.com.driver.MainActivity.viewController;
public class driverProfileFragment extends Fragment {
public class DriverProfileFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
ImageView driverPic;
ProgressBar pb;
TextView addPic;
EditText forenames;
EditText address;
EditText postcode;
EditText dob;
EditText ni;
TextView privateHire;
TextView retrievedPH;
EditText dateFirst;
TextView driverLi;
TextView retrievedDl;
Button submit_driver;
Uri filePath;
Uri picUri;
DatabaseReference driverProfileReference;
PrivateHireObject privateHireObject;
String UID;
DriverProfileObject driverProfileObject;
DriversLicenseObject driversLicenseObject;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
driverProfileReference = mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid())
if (getArguments() != null){
UID = getArguments().getString("user_id");
}else{
UID = auth.getCurrentUser().getUid();
}
driverProfileReference = mDatabase.child(USER_FIREBASE).child(UID)
.child(DRIVER_FIREBASE);
}
@@ -78,21 +94,17 @@ public class driverProfileFragment extends Fragment {
View view = inflater.inflate(R.layout.fragment_driver_profile, container, false);
driverPic = view.findViewById(R.id.driver_pic);
pb = view.findViewById(R.id.pb_dp);
addPic = view.findViewById(R.id.add_driver_pic);
forenames = view.findViewById(R.id.names);
address = view.findViewById(R.id.address);
postcode = view.findViewById(R.id.postcode);
dob = view.findViewById(R.id.dob);
ni = view.findViewById(R.id.ni_number);
privateHire = view.findViewById(R.id.private_hire);
retrievedPH = view.findViewById(R.id.retrievedPH);
dateFirst = view.findViewById(R.id.date_first);
driverLi = view.findViewById(R.id.drivers_li);
retrievedDl = view.findViewById(R.id.retrieved_dl);
submit_driver = view.findViewById(R.id.submit_driver);
driverPic.setVisibility(View.GONE);
viewController.progress(View.VISIBLE);
driverProfileReference.addListenerForSingleValueEvent(valueEventListener);
addPic.setOnClickListener(new View.OnClickListener() {
@@ -104,20 +116,6 @@ public class driverProfileFragment extends Fragment {
}
});
privateHire.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
executeFragment(new PrivateHireLicenseFragment());
}
});
driverLi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
executeFragment(new DriverLicenseFragment());
}
});
dob.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -144,17 +142,7 @@ public class driverProfileFragment extends Fragment {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
try{
privateHireObject = dataSnapshot.child(PRIVATE_HIRE_FIREBASE).getValue(PrivateHireObject.class);
}catch (Exception e){
Log.e(TAG, "onDataChange: ", e);
}finally {
if (privateHireObject != null){
retrievedPH.setText("Private Hire License no.: " +privateHireObject.getPhNumber()
+"\nPrivate Hire License expiry: " + privateHireObject.getPhExpiry());
}
}
viewController.progress(View.GONE);
try {
driverProfileObject = dataSnapshot.child(DRIVER_DETAILS_FIREBASE).getValue(DriverProfileObject.class);
@@ -168,36 +156,26 @@ public class driverProfileFragment extends Fragment {
dob.setText(driverProfileObject.getDob());
dateFirst.setText(driverProfileObject.getDateFirst());
ni.setText(driverProfileObject.getNi());
driverPic.setVisibility(View.VISIBLE);
Picasso.get().load(driverProfileObject.getDriverPic()).into(driverPic);
Picasso.get().load(driverProfileObject.getDriverPic())
.into(loadImage(pb,driverPic));
picUri = Uri.parse(driverProfileObject.getDriverPic());
}else {
driverPic.setVisibility(View.GONE);
}
}
try{
driversLicenseObject = dataSnapshot.child(DRIVERS_LICENSE_FIREBASE).getValue(DriversLicenseObject.class);
}catch (Exception e){
Log.e(TAG, "onDataChange: ", e);
}finally {
if (driversLicenseObject != null){
retrievedDl.setText("Driving License no.: " +driversLicenseObject.getLicenseNumber()
+"\nDriving License expiry: " + driversLicenseObject.getLicenseExpiry());
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
viewController.progress(View.GONE);
}
};
View.OnClickListener submitOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
String driverForename = forenames.getText().toString().trim();
String AddressString = address.getText().toString().trim();
String postCodeString = postcode.getText().toString().trim();
@@ -211,23 +189,32 @@ public class driverProfileFragment extends Fragment {
!TextUtils.isEmpty(dobString) &&
!TextUtils.isEmpty(niString) &&
!TextUtils.isEmpty(dateFirstString)){
if (filePath != null){
Log.i(TAG, "onClick: new Image uploaded");
new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
@Override
public void processFinish(Uri output) {
Log.i(TAG, "processFinish: ");
if (output != null){
picUri = output;
writeDriverToDb();
fragmentManager.popBackStack();
}
}
}).uploadImage(DRIVERS_LICENSE_FIREBASE,DRIVERS_LICENSE_FIREBASE + getDateStamp());
}else{
Log.i(TAG, "onClick: pushing with same image");
writeDriverToDb();
if (filePath == null && picUri == null){
Toast.makeText(getContext(), "No Driver image", Toast.LENGTH_SHORT).show();
viewController.progress(View.GONE);
}else {
viewController.progress(View.VISIBLE);
if (filePath != null){
new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
@Override
public void processFinish(Uri output) {
Log.i(TAG, "processFinish: ");
if (output != null){
picUri = output;
writeDriverToDb();
}else {
viewController.progress(View.GONE);
}
}
}).uploadImage(DRIVERS_LICENSE_FIREBASE,DRIVERS_LICENSE_FIREBASE + getDateStamp());
}else{
Log.i(TAG, "onClick: pushing with same image");
writeDriverToDb();
}
}
}else {
@@ -249,9 +236,6 @@ public class driverProfileFragment extends Fragment {
if (TextUtils.isEmpty(dateFirstString)){
dateFirst.setError("Field required");
}
if (picUri == null){
Toast.makeText(getContext(), getString(R.string.image_required), Toast.LENGTH_SHORT).show();
}
}
}
@@ -262,14 +246,14 @@ public class driverProfileFragment extends Fragment {
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
new ImageSelectorResults(new ImageSelectorResults.FilepathResponse() {
@Override
public void processFinish(Uri output) {
filePath = output;
}
}).Results(getActivity(),requestCode, resultCode, data,
filePath,driverPic);
driverPic.setVisibility(View.VISIBLE);
new ImageSelectorResults().Results(getActivity(),requestCode, resultCode, data,
filePath,driverPic,new ImageSelectorResults.FilepathResponse() {
@Override
public void processFinish(Uri output) {
filePath = output;
}
});
}
@@ -285,6 +269,42 @@ public class driverProfileFragment extends Fragment {
DriverProfileObject driverProfileObject = new DriverProfileObject(picUri.toString(),forenameText,
addressText,postcodeText,dobText,niText,datefirstText);
driverProfileReference.child(DRIVER_DETAILS_FIREBASE).setValue(driverProfileObject);
if (UID.equals(auth.getCurrentUser().getUid())){
UserProfileChangeRequest.Builder profileUpdatesBuilder = new UserProfileChangeRequest.Builder();
profileUpdatesBuilder.setPhotoUri(picUri);
UserProfileChangeRequest profileUpdates = profileUpdatesBuilder.build();
auth.getCurrentUser().updateProfile(profileUpdates)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "User profile updated.");
viewController.reloadDrawer();
mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid()).child("user_details")
.setValue(new UserObject(auth.getCurrentUser().getDisplayName(),auth.getCurrentUser().getEmail(),picUri.toString()));
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(TAG, "onFailure: ", e);
}
});
}
driverProfileReference.child(DRIVER_DETAILS_FIREBASE).setValue(driverProfileObject)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
approvalsClass.setStatusCode(UID,DRIVER_DETAILS_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
}
viewController.progress(View.GONE);
fragmentManager.popBackStack();
}
});
}
}

View File

@@ -0,0 +1,300 @@
package h_mal.appttude.com.driver.Driver;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.text.Layout;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.List;
import h_mal.appttude.com.driver.Global.DateDialog;
import h_mal.appttude.com.driver.Global.FirebaseClass;
import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
import h_mal.appttude.com.driver.Global.ImageSelectorResults;
import h_mal.appttude.com.driver.Global.ImageSwiperClass;
import h_mal.appttude.com.driver.Objects.InsuranceObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_CONSTANT;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.INSURANCE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.MOT_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_FIREBASE;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.archiveClass;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
import static h_mal.appttude.com.driver.MainActivity.printObjectAsJson;
import static h_mal.appttude.com.driver.MainActivity.viewController;
public class InsuranceFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
DatabaseReference reference;
TextView uploadIns;
EditText insName;
EditText insExpiry;
View holder;
public Uri filePath;
public Uri picUri;
public List<String> photoStrings;
String insNameString;
String insExpiryString;
InsuranceObject insuranceObject;
ImageSwiperClass swiperClass;
Boolean uploadNew;
String UID;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
uploadNew = false;
photoStrings = new ArrayList<>();
if (getArguments() != null){
Log.i(TAG, "onCreate: args = args exist");
if (getArguments().containsKey("user_id")){
UID = getArguments().getString("user_id");
}else {
UID = auth.getCurrentUser().getUid();
}
if (getArguments().containsKey(UPLOAD_NEW)){
uploadNew = true;
}
}else{
UID = auth.getCurrentUser().getUid();
}
reference = mDatabase.child(USER_FIREBASE).child(UID).child(VEHICLE_FIREBASE).child(INSURANCE_FIREBASE);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_insurance, container, false);
uploadIns = view.findViewById(R.id.uploadInsurance);
insName = view.findViewById(R.id.insurer);
insExpiry = view.findViewById(R.id.insurance_exp);
Button submit = view.findViewById(R.id.submit_ins);
holder = view.findViewById(R.id.image_pager);
swiperClass = new ImageSwiperClass(getContext(),holder);
viewController.progress(View.VISIBLE);
reference.addListenerForSingleValueEvent(valueEventListener);
uploadIns.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(getContext());
imageSelectorDialog.setImageName("insurance"+getDateStamp());
imageSelectorDialog.show();
}
});
insExpiry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DateDialog dateDialog = new DateDialog(getContext());
dateDialog.init(insExpiry);
}
});
submit.setOnClickListener(submitOnClickListener);
return view;
}
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
viewController.progress(View.GONE);
try{
insuranceObject = dataSnapshot.getValue(InsuranceObject.class);
}catch (Exception e){
Log.e(TAG, "onDataChange: ", e);
}finally {
if (insuranceObject != null){
if (!uploadNew){
photoStrings = insuranceObject.getPhotoStrings();
swiperClass.reinstantiateList(photoStrings);
if (insuranceObject.insurerName != null){
insNameString = insuranceObject.getInsurerName();
insName.setText(insNameString);
}
if (insuranceObject.expiryDate != null){
insExpiryString = insuranceObject.getExpiryDate();
insExpiry.setText(insExpiryString);
}
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
viewController.progress(View.GONE);
}
};
View.OnClickListener submitOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
insNameString = insName.getText().toString().trim();
insExpiryString = insExpiry.getText().toString().trim();
if (!TextUtils.isEmpty(insNameString)
&& !TextUtils.isEmpty(insExpiryString)){
viewController.progress(View.VISIBLE);
if (filePath == null && picUri == null){
Toast.makeText(getContext(), "No Driver image", Toast.LENGTH_SHORT).show();
viewController.progress(View.GONE);
}else {
if (filePath != null){
Log.i(TAG, "onClick: new Image uploaded");
new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
@Override
public void processFinish(Uri output) {
Log.i(TAG, "processFinish: ");
if (output != null){
picUri = output;
publishObject();
}else {
Toast.makeText(getContext(), "Could not upload", Toast.LENGTH_SHORT).show();
viewController.progress(View.GONE);
}
}
}).uploadImage(INSURANCE_FIREBASE,INSURANCE_FIREBASE + getDateStamp());
}else{
Log.i(TAG, "onClick: pushing with same image");
publishObject();
}
}
}else {
if (TextUtils.isEmpty(insNameString)){
insName.setError("Field required");
}
if (TextUtils.isEmpty(insExpiryString)){
insExpiry.setError("Field required");
}
if (picUri == null){
Toast.makeText(getContext(), getString(R.string.image_required), Toast.LENGTH_SHORT).show();
}
}
}
};
private void publishObject(){
if (uploadNew){
archiveClass.archiveRecord(UID,INSURANCE_FIREBASE,insuranceObject);
}
photoStrings = swiperClass.getImageStrings();
InsuranceObject insuranceObject = new InsuranceObject(photoStrings, insNameString, insExpiryString);
reference.setValue(insuranceObject).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
approvalsClass.setStatusCode(UID,INSURANCE_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
fragmentManager.popBackStack();
}else{
Toast.makeText(getContext(), "Upload Unsuccessful", Toast.LENGTH_SHORT).show();
}
viewController.progress(View.GONE);
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == MY_CAMERA_PERMISSION_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getContext(), "camera permission granted", Toast.LENGTH_LONG).show();
Intent cameraIntent = new
Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
} else {
Toast.makeText(getContext(), "camera permission denied", Toast.LENGTH_LONG).show();
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
new ImageSelectorResults().Results(getActivity(),requestCode, resultCode, data,
filePath,new ImageSelectorResults.FilepathResponse() {
@Override
public void processFinish(Uri output) {
filePath = output;
new FirebaseClass(getContext(), output, new FirebaseClass.Response() {
@Override
public void processFinish(Uri output) {
if (output != null){
photoStrings.add(output.toString());
swiperClass.addPhotoString(output.toString());
//notify data change
reference.setValue(new InsuranceObject(photoStrings,null,null));
}
}
}).uploadImage(INSURANCE_FIREBASE,INSURANCE_FIREBASE + getDateStamp());
}
});
}
@Override
public void onResume() {
super.onResume();
printObjectAsJson(TAG,photoStrings);
}
}

View File

@@ -0,0 +1,262 @@
package h_mal.appttude.com.driver.Driver;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
import h_mal.appttude.com.driver.Global.DateDialog;
import h_mal.appttude.com.driver.Global.FirebaseClass;
import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
import h_mal.appttude.com.driver.Global.ImageSelectorResults;
import h_mal.appttude.com.driver.Objects.MotObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_CONSTANT;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.LOG_BOOK_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.MOT_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_FIREBASE;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.archiveClass;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
import static h_mal.appttude.com.driver.MainActivity.loadImage;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
import static h_mal.appttude.com.driver.MainActivity.viewController;
public class MotFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
DatabaseReference reference;
TextView uploadMot;
ImageView motImage;
ProgressBar progressBar;
EditText motExpiryEditText;
public Uri filePath;
public Uri picUri;
MotObject motObject;
String motExpText;
Boolean uploadNew;
String UID;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
uploadNew = false;
if (getArguments() != null){
Log.i(TAG, "onCreate: args = args exist");
if (getArguments().containsKey("user_id")){
UID = getArguments().getString("user_id");
}else {
UID = auth.getCurrentUser().getUid();
}
if (getArguments().containsKey(UPLOAD_NEW)){
uploadNew = true;
}
}else{
UID = auth.getCurrentUser().getUid();
}
reference = mDatabase.child(USER_FIREBASE).child(UID)
.child(VEHICLE_FIREBASE).child(MOT_FIREBASE);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_mot, container, false);
motImage = view.findViewById(R.id.mot_img);
progressBar = view.findViewById(R.id.pb_mot);
uploadMot = view.findViewById(R.id.uploadmot);
motExpiryEditText = view.findViewById(R.id.mot_expiry);
Button submit = view.findViewById(R.id.submit_mot);
viewController.progress(View.VISIBLE);
reference.addListenerForSingleValueEvent(valueEventListener);
uploadMot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(getContext());
imageSelectorDialog.setImageName("mot_certificate");
imageSelectorDialog.show();
}
});
motExpiryEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DateDialog dateDialog = new DateDialog(getContext());
dateDialog.init(motExpiryEditText);
}
});
submit.setOnClickListener(submitOnClickListener);
return view;
}
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
viewController.progress(View.GONE);
try{
motObject = dataSnapshot.getValue(MotObject.class);
}catch (Exception e){
Log.e(TAG, "onDataChange: ", e);
}finally {
if (motObject != null){
if (!uploadNew){
picUri = Uri.parse(motObject.getMotImageString());
motExpText = motObject.getMotExpiry();
motExpiryEditText.setText(motExpText);
Picasso.get()
.load(picUri)
.into(loadImage(progressBar,motImage));
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
viewController.progress(View.GONE);
}
};
View.OnClickListener submitOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
motExpText = motExpiryEditText.getText().toString().trim();
if (!TextUtils.isEmpty(motExpText)){
viewController.progress(View.VISIBLE);
if (filePath == null && picUri == null){
Toast.makeText(getContext(), "No Driver image", Toast.LENGTH_SHORT).show();
viewController.progress(View.GONE);
}else {
if (filePath != null){
Log.i(TAG, "onClick: new Image uploaded");
new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
@Override
public void processFinish(Uri output) {
Log.i(TAG, "processFinish: ");
if (output != null){
picUri = output;
publishObject();
}else {
Toast.makeText(getContext(), R.string.unsuccessful, Toast.LENGTH_SHORT).show();
}
}
}).uploadImage(MOT_FIREBASE,MOT_FIREBASE + getDateStamp());
}else{
Log.i(TAG, "onClick: pushing with same image");
publishObject();
}
}
}else {
if (TextUtils.isEmpty(motExpText)){
motExpiryEditText.setError("Field required");
}
if (picUri == null){
Toast.makeText(getContext(), getString(R.string.image_required), Toast.LENGTH_SHORT).show();
}
}
}
};
private void publishObject(){
if (uploadNew){
archiveClass.archiveRecord(UID,MOT_FIREBASE,motObject);
}
MotObject motObject = new MotObject(picUri.toString(), motExpText);
reference.setValue(motObject).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Log.i(TAG, "onComplete: publish = " + task.isSuccessful());
approvalsClass.setStatusCode(UID,MOT_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
fragmentManager.popBackStack();
}else {
Toast.makeText(getContext(), "Unable to upload", Toast.LENGTH_SHORT).show();
}
viewController.progress(View.GONE);
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == MY_CAMERA_PERMISSION_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getContext(), "camera permission granted", Toast.LENGTH_LONG).show();
Intent cameraIntent = new
Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
} else {
Toast.makeText(getContext(), "camera permission denied", Toast.LENGTH_LONG).show();
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
new ImageSelectorResults().Results(getActivity(),requestCode, resultCode, data,
filePath,motImage,new ImageSelectorResults.FilepathResponse() {
@Override
public void processFinish(Uri output) {
filePath = output;
}
});
}
}

View File

@@ -1,50 +1,61 @@
package h_mal.appttude.com.driver;
package h_mal.appttude.com.driver.Driver;
import android.Manifest;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.FirebaseError;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
import h_mal.appttude.com.driver.Objects.PrivateHireObject;
import java.util.UUID;
import static h_mal.appttude.com.driver.FirebaseClass.*;
import static h_mal.appttude.com.driver.ImageSelectorDialog.CAMERA_REQUEST;
import static h_mal.appttude.com.driver.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
import h_mal.appttude.com.driver.Global.DateDialog;
import h_mal.appttude.com.driver.Global.FirebaseClass;
import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
import h_mal.appttude.com.driver.Global.ImageSelectorResults;
import h_mal.appttude.com.driver.Objects.PrivateHireObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
import static h_mal.appttude.com.driver.Global.FirebaseClass.*;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.archiveClass;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
import static h_mal.appttude.com.driver.MainActivity.loadImage;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.viewController;
public class PrivateHireLicenseFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
private ImageView imageView;
String fname;
ProgressBar pb;
EditText phNo;
EditText phExpiry;
@@ -55,11 +66,33 @@ public class PrivateHireLicenseFragment extends Fragment {
String Ph_numberString;
String Ph_exprString;
DatabaseReference reference;
PrivateHireObject privateHireObject;
Boolean uploadNew;
String UID;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
uploadNew = false;
if (getArguments() != null){
Log.i(TAG, "onCreate: args = args exist");
if (getArguments().containsKey("user_id")){
UID = getArguments().getString("user_id");
}else {
UID = auth.getCurrentUser().getUid();
}
if (getArguments().containsKey(UPLOAD_NEW)){
uploadNew = true;
}
}else{
UID = auth.getCurrentUser().getUid();
}
reference = mDatabase.child(USER_FIREBASE).child(UID)
.child(DRIVER_FIREBASE).child(PRIVATE_HIRE_FIREBASE);
}
@Override
@@ -68,13 +101,12 @@ public class PrivateHireLicenseFragment extends Fragment {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_private_hire_license, container, false);
DatabaseReference reference = mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid())
.child(DRIVER_FIREBASE).child(PRIVATE_HIRE_FIREBASE);
viewController.progress(View.VISIBLE);
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
PrivateHireObject privateHireObject = null;
viewController.progress(View.GONE);
try{
privateHireObject = dataSnapshot.getValue(PrivateHireObject.class);
}catch (Exception e){
@@ -85,12 +117,14 @@ public class PrivateHireLicenseFragment extends Fragment {
Ph_numberString = privateHireObject.getPhNumber();
Ph_exprString = privateHireObject.getPhExpiry();
phNo.setText(Ph_numberString);
phExpiry.setText(Ph_exprString);
Picasso.get()
.load(picUri)
.placeholder(R.mipmap.ic_launcher_round)
.into(imageView);
Log.i(TAG, "onDataChange: uploadNew = " + uploadNew);
if (!uploadNew){
phNo.setText(Ph_numberString);
phExpiry.setText(Ph_exprString);
Picasso.get()
.load(picUri)
.into(loadImage(pb,imageView));
}
}
}
@@ -98,12 +132,13 @@ public class PrivateHireLicenseFragment extends Fragment {
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
viewController.progress(View.GONE);
}
});
TextView uploadPH = view.findViewById(R.id.uploadphlic);
imageView = view.findViewById(R.id.imageView2);
pb = view.findViewById(R.id.pb_priv);
phNo = view.findViewById(R.id.ph_no);
phExpiry = view.findViewById(R.id.ph_expiry);
@@ -113,6 +148,7 @@ public class PrivateHireLicenseFragment extends Fragment {
public void onClick(View v) {
DateDialog dateDialog = new DateDialog(getContext());
dateDialog.init(phExpiry);
dateDialog.show();
}
});
@@ -138,25 +174,33 @@ public class PrivateHireLicenseFragment extends Fragment {
if (!TextUtils.isEmpty(Ph_numberString) &&
!TextUtils.isEmpty(Ph_exprString)){
if (filePath != null){
Log.i(TAG, "onClick: new Image uploaded");
new FirebaseClass(getContext(),filePath,new Response(){
@Override
public void processFinish(Uri output) {
Log.i(TAG, "processFinish: ");
if (output != null){
picUri = output;
publishObject();
fragmentManager.popBackStack();
viewController.progress(View.VISIBLE);
if (filePath == null && picUri == null){
Toast.makeText(getContext(), "No Driver image", Toast.LENGTH_SHORT).show();
viewController.progress(View.GONE);
}else {
if (filePath != null){
Log.i(TAG, "onClick: new Image uploaded");
new FirebaseClass(getContext(),filePath,new Response(){
@Override
public void processFinish(Uri output) {
Log.i(TAG, "processFinish: ");
if (output != null){
picUri = output;
publishObject();
}else {
Toast.makeText(getContext(), R.string.unsuccessful, Toast.LENGTH_SHORT).show();
viewController.progress(View.GONE);
}
}
}
}).uploadImage(PRIVATE_HIRE_FIREBASE,PRIVATE_HIRE_FIREBASE + getDateStamp());
}else{
Log.i(TAG, "onClick: pushing with same image");
publishObject();
}).uploadImage(PRIVATE_HIRE_FIREBASE,PRIVATE_HIRE_FIREBASE + getDateStamp());
}else{
Log.i(TAG, "onClick: pushing with same image");
publishObject();
}
}
}else {
if (TextUtils.isEmpty(Ph_numberString)){
phNo.setError("Field required");
@@ -177,16 +221,28 @@ public class PrivateHireLicenseFragment extends Fragment {
private void publishObject(){
PrivateHireObject privateHireObject = new PrivateHireObject(picUri.toString(),Ph_numberString,Ph_exprString);
if (uploadNew){
archiveClass.archiveRecord(UID,PRIVATE_HIRE_FIREBASE,privateHireObject);
}
mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid()).child(DRIVER_FIREBASE).child(PRIVATE_HIRE_FIREBASE)
.setValue(privateHireObject).addOnCompleteListener(new OnCompleteListener<Void>() {
PrivateHireObject privateHireObjectNew = new PrivateHireObject(picUri.toString(),Ph_numberString,Ph_exprString);
mDatabase.child(USER_FIREBASE).child(UID).child(DRIVER_FIREBASE).child(PRIVATE_HIRE_FIREBASE)
.setValue(privateHireObjectNew).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Log.i(TAG, "onComplete: publish = " + task.isSuccessful());
approvalsClass.setStatusCode(UID,PRIVATE_HIRE_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
fragmentManager.popBackStack();
}else {
Toast.makeText(getContext(), R.string.unsuccessful, Toast.LENGTH_SHORT).show();
}
viewController.progress(View.GONE);
Log.i(TAG, "onComplete: publish = " + task.isSuccessful());
}
});
}
@Override
@@ -209,13 +265,13 @@ public class PrivateHireLicenseFragment extends Fragment {
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
new ImageSelectorResults(new ImageSelectorResults.FilepathResponse() {
@Override
public void processFinish(Uri output) {
filePath = output;
}
}).Results(getActivity(),requestCode, resultCode, data,
filePath,imageView);
new ImageSelectorResults().Results(getActivity(),requestCode, resultCode, data,
filePath,imageView,new ImageSelectorResults.FilepathResponse() {
@Override
public void processFinish(Uri output) {
filePath = output;
}
});
}

View File

@@ -0,0 +1,285 @@
package h_mal.appttude.com.driver.Driver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
import h_mal.appttude.com.driver.Global.DateDialog;
import h_mal.appttude.com.driver.Global.FirebaseClass;
import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
import h_mal.appttude.com.driver.Global.ImageSelectorResults;
import h_mal.appttude.com.driver.Objects.PrivateHireObject;
import h_mal.appttude.com.driver.Objects.PrivateHireVehicleObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_CONSTANT;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVER_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.PRIVATE_HIRE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_FIREBASE;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.archiveClass;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
import static h_mal.appttude.com.driver.MainActivity.loadImage;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
import static h_mal.appttude.com.driver.MainActivity.viewController;
public class PrivateHireVehicleFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
private ImageView imageView;
ProgressBar pb;
EditText phNo;
EditText phExpiry;
public Uri filePath;
public Uri picUri;
String Ph_numberString;
String Ph_exprString;
DatabaseReference reference;
PrivateHireVehicleObject privateHireObject;
Boolean uploadNew;
String UID;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
uploadNew = false;
if (getArguments() != null){
Log.i(TAG, "onCreate: args = args exist");
if (getArguments().containsKey("user_id")){
UID = getArguments().getString("user_id");
}else {
UID = auth.getCurrentUser().getUid();
}
if (getArguments().containsKey(UPLOAD_NEW)){
uploadNew = true;
}
}else{
UID = auth.getCurrentUser().getUid();
}
reference = mDatabase.child(USER_FIREBASE).child(UID)
.child(VEHICLE_FIREBASE).child(PRIVATE_HIRE_VEHICLE_LICENSE);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_private_hire_vehicle, container, false);
viewController.progress(View.VISIBLE);
reference.addListenerForSingleValueEvent(valueEventListener);
TextView uploadPH = view.findViewById(R.id.uploadphlic);
imageView = view.findViewById(R.id.imageView2);
pb = view.findViewById(R.id.pb_priv);
phNo = view.findViewById(R.id.ph_no);
phExpiry = view.findViewById(R.id.ph_expiry);
phExpiry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DateDialog dateDialog = new DateDialog(getContext());
dateDialog.init(phExpiry);
dateDialog.show();
}
});
Button submit = view.findViewById(R.id.submit);
submit.setOnClickListener(submitClick);
uploadPH.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(getContext());
imageSelectorDialog.setImageName("private_hire");
imageSelectorDialog.show();
}
});
return view;
}
private View.OnClickListener submitClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
Ph_numberString = phNo.getText().toString().trim();
Ph_exprString = phExpiry.getText().toString().trim();
//validation for data then submit
if (!TextUtils.isEmpty(Ph_numberString) &&
!TextUtils.isEmpty(Ph_exprString)){
viewController.progress(View.VISIBLE);
if (filePath == null && picUri == null){
Toast.makeText(getContext(), "No Driver image", Toast.LENGTH_SHORT).show();
viewController.progress(View.GONE);
}else {
if (filePath != null){
Log.i(TAG, "onClick: new Image uploaded");
new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
@Override
public void processFinish(Uri output) {
Log.i(TAG, "processFinish: ");
if (output != null){
picUri = output;
publishObject();
}else {
Toast.makeText(getContext(), R.string.unsuccessful, Toast.LENGTH_SHORT).show();
viewController.progress(View.GONE);
}
}
}).uploadImage(PRIVATE_HIRE_FIREBASE,PRIVATE_HIRE_FIREBASE + getDateStamp());
}else{
Log.i(TAG, "onClick: pushing with same image");
publishObject();
}
}
}else {
if (TextUtils.isEmpty(Ph_numberString)){
phNo.setError("Field required");
}
if (TextUtils.isEmpty(Ph_exprString)){
phExpiry.setError("Field required");
}
if (picUri == null){
Toast.makeText(getContext(), getString(R.string.image_required), Toast.LENGTH_SHORT).show();
}
}
}
};
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
viewController.progress(View.GONE);
try{
privateHireObject = dataSnapshot.getValue(PrivateHireVehicleObject.class);
}catch (Exception e){
Log.e(TAG, "onDataChange: ", e);
}finally {
if (privateHireObject != null){
picUri = Uri.parse(privateHireObject.getPhCarImageString());
Ph_numberString = privateHireObject.getPhCarNumber();
Ph_exprString = privateHireObject.getPhCarExpiry();
Log.i(TAG, "onDataChange: uploadNew = " + uploadNew);
if (!uploadNew){
phNo.setText(Ph_numberString);
phExpiry.setText(Ph_exprString);
Picasso.get()
.load(picUri)
.into(loadImage(pb,imageView));
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
viewController.progress(View.GONE);
}
};
private void publishObject(){
if (uploadNew){
archiveClass.archiveRecord(UID,PRIVATE_HIRE_VEHICLE_LICENSE,privateHireObject);
}
PrivateHireVehicleObject privateHireObjectNew = new PrivateHireVehicleObject(picUri.toString(),Ph_numberString,Ph_exprString);
reference.setValue(privateHireObjectNew).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Log.i(TAG, "onComplete: publish = " + task.isSuccessful());
approvalsClass.setStatusCode(UID,PRIVATE_HIRE_VEHICLE_LICENSE + APPROVAL_CONSTANT,APPROVAL_PENDING);
fragmentManager.popBackStack();
}else {
Toast.makeText(getContext(), R.string.unsuccessful, Toast.LENGTH_SHORT).show();
}
viewController.progress(View.GONE);
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == MY_CAMERA_PERMISSION_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getContext(), "camera permission granted", Toast.LENGTH_LONG).show();
Intent cameraIntent = new
Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
} else {
Toast.makeText(getContext(), "camera permission denied", Toast.LENGTH_LONG).show();
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
new ImageSelectorResults().Results(getActivity(), requestCode, resultCode, data,
filePath, imageView, new ImageSelectorResults.FilepathResponse() {
@Override
public void processFinish(Uri output) {
filePath = output;
}
});
}
}

View File

@@ -0,0 +1,188 @@
package h_mal.appttude.com.driver.Driver;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v7.widget.CardView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import h_mal.appttude.com.driver.Objects.ApprovalsObject;
import h_mal.appttude.com.driver.Objects.WholeDriverObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.archiveClass;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
import static h_mal.appttude.com.driver.MainActivity.viewController;
public class VehicleOverallFragment extends Fragment {
ImageView vehicleApr;
ImageView insuranceApr;
ImageView motApr;
ImageView logbookApr;
private ImageView privateHireCarApr;
TextView insuranceExp;
TextView motExp;
private TextView privateHireExp;
private CardView vehicleProfile;
private CardView insurance;
private CardView mot;
private CardView logbook;
private CardView privateHireCar;
private DatabaseReference reference;
private WholeDriverObject wholeDriverObject;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
reference = mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid());
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_vehicle_overall, container, false);
vehicleProfile = view.findViewById(R.id.vehicle_prof);
insurance = view.findViewById(R.id.insurance);
mot = view.findViewById(R.id.mot);
logbook = view.findViewById(R.id.logbook);
privateHireCar = view.findViewById(R.id.private_hire_vehicle_license);
vehicleApr = view.findViewById(R.id.approval_vehicle);
insuranceApr = view.findViewById(R.id.approval_insurance);
motApr = view.findViewById(R.id.approval_mot);
logbookApr = view.findViewById(R.id.approval_lb);
privateHireCarApr = view.findViewById(R.id.approval_ph_car);
insuranceExp = view.findViewById(R.id.ins_exp);
motExp = view.findViewById(R.id.mot_exp);
privateHireExp = view.findViewById(R.id.ph_car_exp);
insuranceExp.setVisibility(View.GONE);
motExp.setVisibility(View.GONE);
privateHireExp.setVisibility(View.GONE);
viewController.progress(View.VISIBLE);
reference.addListenerForSingleValueEvent(valueEventListener);
return view;
}
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
wholeDriverObject = dataSnapshot.getValue(WholeDriverObject.class);
if (wholeDriverObject.approvalsObject != null) {
ApprovalsObject approvalsObject = wholeDriverObject.getApprovalsObject();
vehicleApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getVehicle_details_approval()));
insuranceApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getInsurance_details_approval()));
motApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getMot_details_approval()));
logbookApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getLog_book_approval()));
privateHireCarApr.setImageResource(approvalsClass.setImageResource(approvalsObject.getPh_car_approval()));
}
if (wholeDriverObject.vehicle_profile != null){
if (wholeDriverObject.getVehicle_profile().insurance_details != null){
insuranceExp.setVisibility(View.VISIBLE);
insuranceExp.setText("Expiry: " + wholeDriverObject.getVehicle_profile().getInsurance_details().getExpiryDate());
}
if (wholeDriverObject.getVehicle_profile().mot_details != null){
motExp.setVisibility(View.VISIBLE);
motExp.setText("Expiry: " + wholeDriverObject.getVehicle_profile().getMot_details().getMotExpiry());
}
if (wholeDriverObject.getVehicle_profile().private_hire_vehicle != null){
privateHireExp.setVisibility(View.VISIBLE);
privateHireExp.setText("Expiry: " + wholeDriverObject.getVehicle_profile().getPrivateHireVehicleObject().getPhCarExpiry());
}
}
vehicleProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (wholeDriverObject.vehicle_profile == null){
executeFragment(new VehicleSetupFragment());
}else {
archiveClass.openDialogArchive(getContext(),wholeDriverObject.getVehicle_profile().getVehicle_details()
,new VehicleSetupFragment());
}
}
});
insurance.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (wholeDriverObject.vehicle_profile == null){
executeFragment(new InsuranceFragment());
}else {
archiveClass.openDialogArchive(getContext(),wholeDriverObject.getVehicle_profile().getInsurance_details()
,new InsuranceFragment());
}
}
});
mot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (wholeDriverObject.vehicle_profile == null){
executeFragment(new MotFragment());
}else {
archiveClass.openDialogArchive(getContext(),wholeDriverObject.getVehicle_profile().getMot_details()
,new MotFragment());
}
}
});
logbook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (wholeDriverObject.vehicle_profile == null){
executeFragment(new logbookFragment());
}else {
archiveClass.openDialogArchive(getContext(),wholeDriverObject.getVehicle_profile().getLog_book()
,new logbookFragment());
}
}
});
privateHireCar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (wholeDriverObject.vehicle_profile == null){
executeFragment(new PrivateHireVehicleFragment());
}else {
archiveClass.openDialogArchive(getContext(),wholeDriverObject.getVehicle_profile().getPrivateHireVehicleObject()
,new PrivateHireVehicleFragment());
}
}
});
viewController.progress(View.GONE);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
viewController.progress(View.GONE);
}
};
}

View File

@@ -0,0 +1,223 @@
package h_mal.appttude.com.driver.Driver;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import h_mal.appttude.com.driver.Global.DateDialog;
import h_mal.appttude.com.driver.Objects.DriversLicenseObject;
import h_mal.appttude.com.driver.Objects.InsuranceObject;
import h_mal.appttude.com.driver.Objects.LogbookObject;
import h_mal.appttude.com.driver.Objects.MotObject;
import h_mal.appttude.com.driver.Objects.VehicleProfileObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_CONSTANT;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.INSURANCE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.LOG_BOOK_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.MOT_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_DETAILS_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_FIREBASE;
import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.archiveClass;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
import static h_mal.appttude.com.driver.MainActivity.viewController;
public class VehicleSetupFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
EditText reg;
EditText make;
EditText model;
EditText color;
EditText keeperName;
EditText address;
EditText postcode;
EditText startDate;
CheckBox seized;
Button Submit;
DatabaseReference ref;
VehicleProfileObject vehicleProfileObject;
Boolean uploadNew;
String UID;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
uploadNew = false;
if (getArguments() != null){
Log.i(TAG, "onCreate: args = args exist");
if (getArguments().containsKey("user_id")){
UID = getArguments().getString("user_id");
}else {
UID = auth.getCurrentUser().getUid();
}
if (getArguments().containsKey(UPLOAD_NEW)){
uploadNew = true;
}
}else{
UID = auth.getCurrentUser().getUid();
}
ref = mDatabase.child(USER_FIREBASE).child(UID).child(VEHICLE_FIREBASE);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_vehicle_setup, container, false);
reg = view.findViewById(R.id.reg);
make = view.findViewById(R.id.make);
model = view.findViewById(R.id.model);
color = view.findViewById(R.id.colour);
keeperName = view.findViewById(R.id.keeper_name);
address = view.findViewById(R.id.address);
postcode = view.findViewById(R.id.postcode);
startDate = view.findViewById(R.id.start_date);
seized = view.findViewById(R.id.seized);
Submit = view.findViewById(R.id.submit_vehicle);
startDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DateDialog dateDialog = new DateDialog(getContext());
dateDialog.init(startDate);
}
});
viewController.progress(View.VISIBLE);
ref.addListenerForSingleValueEvent(valueEventListener);
Submit.setOnClickListener(submitOnClickListener);
return view;
}
ValueEventListener valueEventListener = new ValueEventListener(){
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
viewController.progress(View.GONE);
try{
vehicleProfileObject = dataSnapshot.child(VEHICLE_DETAILS_FIREBASE).getValue(VehicleProfileObject.class);
}catch (Exception e){
Log.e(TAG, "onDataChange: ", e);
}finally {
if (vehicleProfileObject != null){
if(!uploadNew) {
reg.setText(vehicleProfileObject.getReg());
make.setText(vehicleProfileObject.getMake());
model.setText(vehicleProfileObject.getModel());
color.setText(vehicleProfileObject.getColour());
keeperName.setText(vehicleProfileObject.getKeeperName());
address.setText(vehicleProfileObject.getKeeperAddress());
postcode.setText(vehicleProfileObject.getKeeperPostCode());
startDate.setText(vehicleProfileObject.getStartDate());
seized.setChecked(vehicleProfileObject.isSeized());
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
viewController.progress(View.GONE);
}
};
View.OnClickListener submitOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
String regString = reg.getText().toString().trim();
String makeString = make.getText().toString().trim();
String modelString = model.getText().toString().trim();
String colourString = color.getText().toString().trim();
String keeperNameStrin = keeperName.getText().toString().trim();
String addressString = address.getText().toString().trim();
String postcodeString = postcode.getText().toString().trim();
String driverForename = startDate.getText().toString().trim();
if (!TextUtils.isEmpty(regString)
&&!TextUtils.isEmpty(makeString)
&&!TextUtils.isEmpty(modelString)
&&!TextUtils.isEmpty(colourString)
&&!TextUtils.isEmpty(keeperNameStrin)
&&!TextUtils.isEmpty(addressString)
&&!TextUtils.isEmpty(postcodeString)
&&!TextUtils.isEmpty(driverForename)) {
if (uploadNew){
archiveClass.archiveRecord(UID,VEHICLE_DETAILS_FIREBASE,vehicleProfileObject);
}
VehicleProfileObject vehicleProfileObject = new VehicleProfileObject(
regString ,makeString ,modelString ,colourString ,keeperNameStrin ,addressString ,postcodeString ,driverForename,
seized.isChecked()
);
viewController.progress(View.VISIBLE);
ref.child(VEHICLE_DETAILS_FIREBASE).setValue(vehicleProfileObject).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
approvalsClass.setStatusCode(UID,VEHICLE_DETAILS_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
approvalsClass.setStatusCode(UID,MOT_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
approvalsClass.setStatusCode(UID,INSURANCE_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
approvalsClass.setStatusCode(UID,LOG_BOOK_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
fragmentManager.popBackStack();
}else{
Toast.makeText(getContext(), "Upload Unsuccessful", Toast.LENGTH_SHORT).show();
}
viewController.progress(View.GONE);
}
});
}else {
if (TextUtils.isEmpty(regString)){reg.setError("Field required");}
if (TextUtils.isEmpty(makeString)){make.setError("Field required");}
if (TextUtils.isEmpty(modelString)){model.setError("Field required");}
if (TextUtils.isEmpty(colourString)){color.setError("Field required");}
if (TextUtils.isEmpty(keeperNameStrin)){keeperName.setError("Field required");}
if (TextUtils.isEmpty(addressString)){address.setError("Field required");}
if (TextUtils.isEmpty(postcodeString)){postcode.setError("Field required");}
if (TextUtils.isEmpty(driverForename)){startDate.setError("Field required");}
}
}
};
}

View File

@@ -1,22 +1,20 @@
package h_mal.appttude.com.driver;
package h_mal.appttude.com.driver.Driver;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.CardView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.executeFragment;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import h_mal.appttude.com.driver.Global.ExecuteFragment;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
public class homeFragment extends Fragment {
public class homeDriverFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -35,7 +33,7 @@ public class homeFragment extends Fragment {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
executeFragment(new driverProfileFragment());
executeFragment(new DriverOverallFragment());
}
});
@@ -43,7 +41,7 @@ public class homeFragment extends Fragment {
second.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
executeFragment(new VehicleSetupFragment());
executeFragment(new VehicleOverallFragment());
}
});

View File

@@ -0,0 +1,255 @@
package h_mal.appttude.com.driver.Driver;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
import h_mal.appttude.com.driver.Global.FirebaseClass;
import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
import h_mal.appttude.com.driver.Global.ImageSelectorResults;
import h_mal.appttude.com.driver.Objects.LogbookObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_CONSTANT;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.INSURANCE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.LOG_BOOK_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_FIREBASE;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.archiveClass;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
import static h_mal.appttude.com.driver.MainActivity.loadImage;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
import static h_mal.appttude.com.driver.MainActivity.viewController;
public class logbookFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
DatabaseReference reference;
TextView uploadlb;
ImageView lbImage;
ProgressBar progressBar;
EditText v5cNumber;
public Uri filePath;
public Uri picUri;
String v5cString;
LogbookObject logbookObject;
Boolean uploadNew;
String UID;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
uploadNew = false;
if (getArguments() != null){
Log.i(TAG, "onCreate: args = args exist");
if (getArguments().containsKey("user_id")){
UID = getArguments().getString("user_id");
}else {
UID = auth.getCurrentUser().getUid();
}
if (getArguments().containsKey(UPLOAD_NEW)){
uploadNew = true;
}
}else{
UID = auth.getCurrentUser().getUid();
}
reference = mDatabase.child(USER_FIREBASE).child(UID).child(VEHICLE_FIREBASE).child(LOG_BOOK_FIREBASE);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_logbook, container, false);
uploadlb = view.findViewById(R.id.upload_lb);
lbImage = view.findViewById(R.id.log_book_img);
progressBar = view.findViewById(R.id.pb_lb);
v5cNumber = view.findViewById(R.id.v5c_no);
Button submit = view.findViewById(R.id.submit_lb);
viewController.progress(View.VISIBLE);
reference.addListenerForSingleValueEvent(valueEventListener);
uploadlb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(getContext());
imageSelectorDialog.setImageName("logbook_pic"+getDateStamp());
imageSelectorDialog.show();
}
});
submit.setOnClickListener(submitOnClickListener);
return view;
}
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
viewController.progress(View.GONE);
try{
logbookObject = dataSnapshot.getValue(LogbookObject.class);
}catch (Exception e){
Log.e(TAG, "onDataChange: ", e);
}finally {
if (logbookObject != null){
picUri = Uri.parse(logbookObject.getPhotoString());
v5cString = logbookObject.getV5cnumber();
if(!uploadNew) {
v5cNumber.setText(v5cString);
Picasso.get()
.load(picUri)
.into(loadImage(progressBar, lbImage));
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
viewController.progress(View.GONE);
}
};
View.OnClickListener submitOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
v5cString = v5cNumber.getText().toString().trim();
if (!TextUtils.isEmpty(v5cString)){
viewController.progress(View.VISIBLE);
if (filePath == null && picUri == null){
Toast.makeText(getContext(), "No Driver image", Toast.LENGTH_SHORT).show();
viewController.progress(View.GONE);
}else {
if (filePath != null){
Log.i(TAG, "onClick: new Image uploaded");
new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
@Override
public void processFinish(Uri output) {
Log.i(TAG, "processFinish: ");
if (output != null){
picUri = output;
publishObject();
}else {
Toast.makeText(getContext(), R.string.unsuccessful, Toast.LENGTH_SHORT).show();
viewController.progress(View.GONE);
}
}
}).uploadImage(LOG_BOOK_FIREBASE,LOG_BOOK_FIREBASE + getDateStamp());
}else{
Log.i(TAG, "onClick: pushing with same image");
publishObject();
}
}
}else {
if (TextUtils.isEmpty(v5cString)){
v5cNumber.setError("Field required");
}
if (picUri == null){
Toast.makeText(getContext(), getString(R.string.image_required), Toast.LENGTH_SHORT).show();
}
}
}
};
private void publishObject(){
if (uploadNew){
archiveClass.archiveRecord(UID,LOG_BOOK_FIREBASE,logbookObject);
}
LogbookObject logbookObjectNew = new LogbookObject(picUri.toString(), v5cString);
reference.setValue(logbookObjectNew).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
approvalsClass.setStatusCode(UID,LOG_BOOK_FIREBASE + APPROVAL_CONSTANT,APPROVAL_PENDING);
fragmentManager.popBackStack();
}else{
Toast.makeText(getContext(), "Upload Unsuccessful", Toast.LENGTH_SHORT).show();
}
viewController.progress(View.VISIBLE);
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == MY_CAMERA_PERMISSION_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getContext(), "camera permission granted", Toast.LENGTH_LONG).show();
Intent cameraIntent = new
Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
} else {
Toast.makeText(getContext(), "camera permission denied", Toast.LENGTH_LONG).show();
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
new ImageSelectorResults().Results(getActivity(),requestCode, resultCode, data,
filePath,lbImage,new ImageSelectorResults.FilepathResponse() {
@Override
public void processFinish(Uri output) {
filePath = output;
}
});
}
}

View File

@@ -1,56 +0,0 @@
package h_mal.appttude.com.driver;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
public class FindAddressFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_find_address, container, false);
TextView findAddress = view.findViewById(R.id.findaddress);
Button sumbit = view.findViewById(R.id.submit);
LinearLayout linearLayout = view.findViewById(R.id.lin_lay);
EditText address = view.findViewById(R.id.address);
EditText postcode = view.findViewById(R.id.postcode);
findAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageSelectorDialog dialogAddress = new ImageSelectorDialog(getContext());
dialogAddress.show();
}
});
sumbit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
return view;
}
}

View File

@@ -0,0 +1,123 @@
package h_mal.appttude.com.driver.Global;
import android.support.annotation.NonNull;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import h_mal.appttude.com.driver.Objects.ApprovalsObject;
import h_mal.appttude.com.driver.Objects.WholeDriverObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_DENIED;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVED;
import static h_mal.appttude.com.driver.Global.FirebaseClass.NO_DATE_PRESENT;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_APPROVALS;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
import static h_mal.appttude.com.driver.MainActivity.printObjectAsJson;
public class ApprovalsClass {
public ApprovalsClass() {
}
public static int mode(int[] array) {
printObjectAsJson("modeArrays",array);
int mode = array[0];
int maxCount = 0;
if (matchedArray(array,3)){
return 3;
}else if (matchedArray(array,0)){
return 0;
}else {
for (int i = 0; i < array.length; i++) {
int value = array[i];
int count = 1;
for (int j = 0; j < array.length; j++) {
if (array[j] == value) count++;
if (count > maxCount) {
mode = value;
maxCount = count;
}
}
}
if (mode == 3){
return 1;
}
}
return mode;
}
private static boolean matchedArray (int [] array, int match){
for (int i : array){
if (i != match){
return false;
}
}
return true;
}
public int getOverApprovalStatusCode(WholeDriverObject wholeDriverObject){
if (wholeDriverObject.approvalsObject != null){
ApprovalsObject approvalsObject = wholeDriverObject.getApprovalsObject();
int[] ints = new int[]{approvalsObject.getDriver_details_approval(),
approvalsObject.getDriver_license_approval(),
approvalsObject.getPrivate_hire_approval(),
approvalsObject.getVehicle_details_approval(),
approvalsObject.getInsurance_details_approval(),
approvalsObject.getMot_details_approval(),
approvalsObject.getLog_book_approval(),
approvalsObject.getPh_car_approval()};
return setImageResource(mode(ints));
}
return setImageResource(NO_DATE_PRESENT);
}
public void setStatusCode(String userId,String approvalNameString,int status){
if (!approvalNameString.equals("")) {
mDatabase.child(USER_FIREBASE).child(userId).child(USER_APPROVALS).child(approvalNameString)
.setValue(status).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
} else {
}
}
});
}
}
public int setImageResource(int statusCode){
int imageResource;
switch (statusCode){
case APPROVAL_PENDING:
imageResource = R.drawable.pending;
break;
case APPROVAL_DENIED:
imageResource = R.drawable.denied;
break;
case APPROVED:
imageResource = R.drawable.approved;
break;
default:
imageResource = R.drawable.zero;
break;
}
return imageResource;
}
}

View File

@@ -0,0 +1,99 @@
package h_mal.appttude.com.driver.Global;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.util.Log;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DatabaseReference;
import java.util.UUID;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.UPLOAD_NEW;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
import static h_mal.appttude.com.driver.Global.FirebaseClass.ARCHIVE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.MainActivity.getDateTimeStamp;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
public class ArchiveClass {
private static final String TAG = "ArchiveClass";
public ArchiveClass() {
}
public void archiveRecord(String UID, String item, Object object) {
final DatabaseReference toPath = mDatabase.child(USER_FIREBASE).child(UID)
.child(ARCHIVE_FIREBASE).child(item);
toPath.child(getDateTimeStamp()).setValue(object).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Log.i(TAG, "onComplete: archive successful");
}else {
Log.i(TAG, "onComplete: archive unsuccessful");
}
}
});
}
public void openDialogArchive(Context context,Object object, final Fragment fragment){
if (object == null){
executeFragment(fragment);
}else {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Do you want to View/Edit or Upload new?")
.setPositiveButton("View/Edit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
executeFragment(fragment);
}
})
.setNegativeButton("Upload New", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Bundle bundle = new Bundle();
bundle.putString(UPLOAD_NEW,"Yes");
fragment.setArguments(bundle);
executeFragment(fragment);
}
})
.create().show();
}
}
public void openDialogArchive(Context context,Object object, String user,final Fragment fragment){
final Bundle bundle = new Bundle();
bundle.putString("user_id",user);
fragment.setArguments(bundle);
if (object == null){
executeFragment(fragment);
}else {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Do you want to View/Edit or Upload new?")
.setPositiveButton("View/Edit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
executeFragment(fragment);
}
})
.setNegativeButton("Upload New", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
bundle.putString(UPLOAD_NEW,"Yes");
executeFragment(fragment);
}
})
.create().show();
}
}
}

View File

@@ -1,10 +1,12 @@
package h_mal.appttude.com.driver;
package h_mal.appttude.com.driver.Global;
import android.app.DatePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.text.TextUtils;
import android.util.Log;
import android.widget.DatePicker;
@@ -16,6 +18,8 @@ import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import h_mal.appttude.com.driver.R;
public class DateDialog extends DatePickerDialog {
int mYear;
@@ -24,10 +28,12 @@ public class DateDialog extends DatePickerDialog {
EditText editText;
@RequiresApi(api = Build.VERSION_CODES.N)
public DateDialog(@NonNull Context context) {
super(context);
}
@RequiresApi(api = Build.VERSION_CODES.N)
public DateDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
}
@@ -70,16 +76,16 @@ public class DateDialog extends DatePickerDialog {
mDay = calendar.get(Calendar.DAY_OF_MONTH);
}else {
try {
SimpleDateFormat sdfrmt = new SimpleDateFormat("dd-MM-yyyy");
SimpleDateFormat sdfrmt = new SimpleDateFormat("dd/MM/yyyy");
sdfrmt.setLenient(false);
javaDate = sdfrmt.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}finally {
if (javaDate != null) {
mYear = Integer.parseInt(dateString.substring(6, 9));
mMonth = Integer.parseInt(dateString.substring(4, 5));
mDay = Integer.parseInt(dateString.substring(1, 2));
mYear = Integer.parseInt(dateString.substring(6, dateString.length()));
mMonth = Integer.parseInt(dateString.substring(3, 5))-1;
mDay = Integer.parseInt(dateString.substring(0, 2));
}else {
Calendar calendar = Calendar.getInstance();
mYear = calendar.get(Calendar.YEAR);
@@ -110,8 +116,8 @@ public class DateDialog extends DatePickerDialog {
mMonth = month + 1;
mDay = dayOfMonth;
editText.setText(String.format("%02d", mDay) + "-" +
String.format("%02d", (mMonth)) +"-" +
editText.setText(String.format("%02d", mDay) + "/" +
String.format("%02d", (mMonth)) +"/" +
mYear
);

View File

@@ -0,0 +1,65 @@
package h_mal.appttude.com.driver.Global;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
public class ExecuteFragment {
public static final String UPLOAD_NEW = "upload_new";
public static void executeFragment(Fragment fragment, Bundle bundle) {
executeFragmentMethod(fragment,bundle);
}
public static void executeFragment(Fragment fragment) {
executeFragmentMethod(fragment);
}
public static void executeFragment(Fragment fragment, String userId) {
executeFragmentMethod(fragment,userId);
}
public static void executeFragment(Fragment fragment, String userId, String archive) {
executeFragmentMethod(fragment,userId,archive);
}
private static void executeFragmentMethod(Fragment f){
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container,f).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack(f.getClass().getSimpleName()).commit();
}
private static void executeFragmentMethod(Fragment f,String user_id){
Bundle bundle = new Bundle();
bundle.putString("user_id",user_id);
f.setArguments(bundle);
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container,f).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack(f.getClass().getSimpleName()).commit();
}
private static void executeFragmentMethod(Fragment f,String user_id,String archive){
Bundle bundle = new Bundle();
bundle.putString("user_id",user_id);
bundle.putString("archive",archive);
f.setArguments(bundle);
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container,f).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack(f.getClass().getSimpleName()).commit();
}
private static void executeFragmentMethod(Fragment f, Bundle b){
if (b != null){
f.setArguments(b);
}
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container,f).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack(f.getClass().getSimpleName()).commit();
}
}

View File

@@ -1,9 +1,8 @@
package h_mal.appttude.com.driver;
package h_mal.appttude.com.driver.Global;
import android.app.ProgressDialog;
import android.content.Context;
import android.net.Uri;
import android.os.AsyncTask;
import android.support.annotation.NonNull;
import android.util.Log;
import android.widget.Toast;
@@ -26,11 +25,24 @@ public class FirebaseClass {
public static final String PRIVATE_HIRE_FIREBASE = "private_hire";
public static final String DRIVERS_LICENSE_FIREBASE = "driver_license";
public static final String USER_APPROVALS = "approvalsObject";
public static final String APPROVAL_CONSTANT = "_approval";
public static final String ARCHIVE_FIREBASE = "archive";
public static final String DRIVER_NUMBER = "driver_number";
public static final String VEHICLE_FIREBASE = "vehicle_profile";
public static final String MOT_FIREBASE = "mot_details";
public static final String VEHICLE_DETAILS_FIREBASE = "vehicle_details";
public static final String INSURANCE_FIREBASE = "insurance_details";
public static final String LOG_BOOK_FIREBASE = "log_book";
public static final String PRIVATE_HIRE_VEHICLE_LICENSE = "private_hire_vehicle";
public static final int NO_DATE_PRESENT = 0;
public static final int APPROVAL_PENDING = 1;
public static final int APPROVAL_DENIED = 2;
public static final int APPROVED = 3;
Context context;
Uri filePath;
@@ -49,8 +61,7 @@ public class FirebaseClass {
public void uploadImage(String path, String name) {
if(filePath != null)
{
if(filePath != null) {
final ProgressDialog progressDialog = new ProgressDialog(context);
progressDialog.setTitle("Uploading...");
progressDialog.show();

View File

@@ -1,4 +1,4 @@
package h_mal.appttude.com.driver;
package h_mal.appttude.com.driver.Global;
import android.Manifest;
import android.app.Activity;
@@ -17,6 +17,7 @@ import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v4.content.FileProvider;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
@@ -33,6 +34,9 @@ import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import h_mal.appttude.com.driver.R;
import static android.support.v4.app.ActivityCompat.getPermissionCompatDelegate;
import static android.support.v4.app.ActivityCompat.requestPermissions;
import static android.support.v4.app.ActivityCompat.startActivityForResult;
import static android.support.v4.content.PermissionChecker.checkSelfPermission;
@@ -45,6 +49,7 @@ public class ImageSelectorDialog extends Dialog{
public static final int PICK_IMAGE_REQUEST = 71;
public static final int CAMERA_REQUEST = 1888;
public static final int MY_CAMERA_PERMISSION_CODE = 100;
public static final int STORAGE_PERMISSION_CODE = 101;
private String saveFileName;
public static Uri photoURI;
@@ -73,11 +78,8 @@ public class ImageSelectorDialog extends Dialog{
setContentView(R.layout.address_dialog);
//check if we have we have storage rights
int permission = ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getContext(), "Storage permissions not granted", Toast.LENGTH_SHORT).show();
}else {
final int permissionPic = ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE);
final int permissionCam = ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.CAMERA);
fragment = fragmentManager.getFragments().get(0);
@@ -87,7 +89,14 @@ public class ImageSelectorDialog extends Dialog{
upload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chooseImage();
if (permissionPic == PackageManager.PERMISSION_GRANTED){
chooseImage();
}else {
Toast.makeText(getContext(), "Storage permissions required", Toast.LENGTH_SHORT).show();
requestPermissions(fragment.getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
STORAGE_PERMISSION_CODE);
}
dismiss();
}
});
@@ -95,13 +104,7 @@ public class ImageSelectorDialog extends Dialog{
takePic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (
checkSelfPermission(fragment.getActivity(), Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
requestPermissions(fragment.getActivity(), new String[]{Manifest.permission.CAMERA},
MY_CAMERA_PERMISSION_CODE);
} else {
if (permissionCam == PackageManager.PERMISSION_GRANTED){
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File file = createFile();
photoURI = Uri.fromFile(file);
@@ -111,13 +114,14 @@ public class ImageSelectorDialog extends Dialog{
file);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
fragment.startActivityForResult(cameraIntent, CAMERA_REQUEST);
}else {
Toast.makeText(getContext(), "Camera Permissions required", Toast.LENGTH_SHORT).show();
requestPermissions(fragment.getActivity(), new String[]{Manifest.permission.CAMERA},
MY_CAMERA_PERMISSION_CODE);
}
dismiss();
}
});
}
}

View File

@@ -1,18 +1,14 @@
package h_mal.appttude.com.driver;
package h_mal.appttude.com.driver.Global;
import android.Manifest;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Picture;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
@@ -21,16 +17,12 @@ import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import h_mal.appttude.com.driver.Objects.PrivateHireObject;
import static android.app.Activity.RESULT_OK;
import static android.os.Environment.DIRECTORY_PICTURES;
import static h_mal.appttude.com.driver.ImageSelectorDialog.CAMERA_REQUEST;
import static h_mal.appttude.com.driver.ImageSelectorDialog.PICK_IMAGE_REQUEST;
import static h_mal.appttude.com.driver.ImageSelectorDialog.photoURI;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.PICK_IMAGE_REQUEST;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.photoURI;
import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
public class ImageSelectorResults {
@@ -41,14 +33,13 @@ public class ImageSelectorResults {
void processFinish(Uri output);
}
public FilepathResponse delegate;
// public FilepathResponse delegate;
public ImageSelectorResults(FilepathResponse delegate) {
this.delegate = delegate;
public ImageSelectorResults() {
}
public void Results(Activity activity, int requestCode, int resultCode, Intent data, Uri filePath,
ImageView imageView){
ImageView imageView,FilepathResponse delegate){
this.activity = activity;
@@ -70,9 +61,12 @@ public class ImageSelectorResults {
}
finally {
if (bitmap != null){
//
delegate.processFinish(filePath);
Log.i(getClass().getSimpleName(), "Results: " + filePath);
}
}
}
if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
@@ -108,10 +102,73 @@ public class ImageSelectorResults {
}
delegate.processFinish(filePath);
Log.i(getClass().getSimpleName(), "Results: " + filePath);
}
}
public void Results(Activity activity, int requestCode, int resultCode, Intent data, Uri filePath,FilepathResponse delegate){
this.activity = activity;
if(requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
&& data != null && data.getData() != null )
{
filePath = data.getData();
Bitmap bitmap = null;
try {
bitmap = MediaStore.Images.Media.getBitmap(activity.getContentResolver(), filePath);
}
catch (IOException e)
{
e.printStackTrace();
}
finally {
if (bitmap != null){
delegate.processFinish(filePath);
Log.i(getClass().getSimpleName(), "Results: " + filePath);
}
}
}
delegate.processFinish(filePath);
Log.i(getClass().getSimpleName(), "Results: " + filePath);
if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
//check if we have we have storage rights
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(activity, "Storage permissions not granted", Toast.LENGTH_SHORT).show();
return;
}else {
try {
File f = Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES);
String fname = "driver"+ getDateStamp() + ".jpg";
File image = new File(f,fname);
FileOutputStream fileOutputStream = new FileOutputStream(image);
filePath = photoURI;
Bitmap bitmap = MediaStore.Images.Media
.getBitmap(activity.getContentResolver(), photoURI);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90,fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
galleryAddPic();
} catch (Exception e) {
e.printStackTrace();
}
}
delegate.processFinish(filePath);
Log.i(getClass().getSimpleName(), "Results: " + filePath);
}
}
private void galleryAddPic() {

View File

@@ -0,0 +1,245 @@
package h_mal.appttude.com.driver.Global;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.provider.ContactsContract;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
import android.widget.ImageView;
import android.widget.ProgressBar;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
import java.util.ArrayList;
import java.util.List;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.MainActivity.imageViewClass;
import static h_mal.appttude.com.driver.MainActivity.loadImage;
public class ImageSwiperClass{
private static final String TAG = "ImageSwiperClass";
private ImageView left;
private ImageView mainImage;
private ImageView right;
private List<String> imageStrings;
private Context context;
private SlidingImageViewAdapter adapter;
ViewPager viewPager;
public ImageView delete;
public ImageSwiperClass(Context context, View wholeView) {
this.context = context;
left = wholeView.findViewById(R.id.left);
right = wholeView.findViewById(R.id.right);
left.setOnClickListener(leftClick);
right.setOnClickListener(rightClick);
viewPager = wholeView.findViewById(R.id.view_pager);
delete = wholeView.findViewById(R.id.delete);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
AlphaAnimation animation1 = new AlphaAnimation(0.2f, 1.0f);
animation1.setDuration(200);
animation1.setFillAfter(true);
delete.startAnimation(animation1);
}
@Override
public void onPageSelected(final int i) {
Log.i(TAG, "onPageSelected: position = " + i);
setArrows();
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
deleteDialog(i);
}
});
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
Log.i(TAG, "ImageSwiperClass: viewpager = " + viewPager.getId());
}
public List<String> getImageStrings() {
return imageStrings;
}
public void addPhotoString(String s){
if (imageStrings == null){
imageStrings = new ArrayList<>();
}
imageStrings.add(s);
adapter = new SlidingImageViewAdapter();
viewPager.setAdapter(adapter);
}
public void reinstantiateList(List<String> imageStrings){
this.imageStrings = imageStrings;
adapter = new SlidingImageViewAdapter();
viewPager.setAdapter(adapter);
setArrows();
}
public void hideDelete(){
delete.setVisibility(View.INVISIBLE);
Log.i(TAG, "hideDelete: hides deleete?");
}
private View.OnClickListener leftClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
setArrows();
}
};
private View.OnClickListener rightClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
viewPager.setCurrentItem(viewPager.getCurrentItem() +1);
setArrows();
}
};
private void deleteDialog(final int position){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Are you sure you want to delete?")
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
imageStrings.remove(position);
viewPager.setAdapter(adapter);
// adapter.notifyDataSetChanged();
}
})
.setNegativeButton(android.R.string.cancel, null)
.create()
.show();
}
private void setArrows(){
if (imageStrings != null && imageStrings.size() > 0){
//left arrow
if (viewPager.getCurrentItem() > 0){
setAnimation(left,true);
}else{
setAnimation(left,false);
}
//right
if (viewPager.getCurrentItem() == imageStrings.size() -1){
setAnimation(right,false);
}else{
setAnimation(right,true);
}
}
if (imageStrings == null){
setAnimation(left,false);
setAnimation(right,false);
}
}
private void setAnimation(ImageView view,boolean up){
float start;
float finish;
if(up){
start = 0.2f;
finish = 1.0f;
}else {
start = 1.0f;
finish = 0.2f;
}
// if (view.getAlpha() != start){
AlphaAnimation animation1 = new AlphaAnimation(start, finish);
animation1.setDuration(500);
animation1.setFillAfter(true);
// view.startAnimation(animation1);
view.setAlpha(finish);
// }
}
class SlidingImageViewAdapter extends PagerAdapter{
@Override
public int getCount() {
if (imageStrings == null || imageStrings.size() < 1){
delete.setVisibility(View.GONE);
return 0;
}else {
delete.setVisibility(View.VISIBLE);
return imageStrings.size();
}
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position,Object object) {
if (object != null){
container.removeView((View) object);
}else {
container.removeViewAt(position);
}
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view.equals(o);
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, final int position) {
View pagerPic = LayoutInflater.from(context).inflate(R.layout.insurance_item,container,false);
setArrows();
if(imageStrings != null && imageStrings.size() >0){
mainImage = pagerPic.getRootView().findViewById(R.id.main_image);
final ProgressBar pb = pagerPic.findViewById(R.id.pb_ins);
Picasso.get().load(imageStrings.get(position)).into(loadImage(pb,mainImage));
}
container.addView(pagerPic, 0);
return pagerPic;
}
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
}
}
}

View File

@@ -0,0 +1,121 @@
package h_mal.appttude.com.driver.Global;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import com.github.chrisbanes.photoview.PhotoView;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import h_mal.appttude.com.driver.R;
import static android.os.Environment.DIRECTORY_PICTURES;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.photoURI;
import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
public class ImageViewClass {
public static final String IMAGE_VALUE = "image";
private static Bitmap bitmap;
public ImageViewClass() {
}
public void open(Bitmap bitmap){
ImageViewClass.bitmap = bitmap;
executeFragment(new ImageViewerFragment());
}
public static class ImageViewerFragment extends Fragment {
private View view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_image_viewer, container, false);
FloatingActionButton fab = view.findViewById(R.id.download_pic);
if (bitmap != null){
PhotoView photoView = view.findViewById(R.id.photo_view);
photoView.setImageBitmap(bitmap);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
downloadPic();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
});
}
return view;
}
@Override
public void onResume() {
super.onResume();
((AppCompatActivity)getActivity()).getSupportActionBar().hide();
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
@Override
public void onStop() {
super.onStop();
((AppCompatActivity)getActivity()).getSupportActionBar().show();
getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
private void downloadPic() throws FileNotFoundException {
File f = Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES);
String fname = "driver"+ getDateStamp() + ".jpg";
File image = new File(f,fname);
FileOutputStream fileOutputStream = new FileOutputStream(image);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100,fileOutputStream);
try {
fileOutputStream.flush();
fileOutputStream.close();
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri contentUri = Uri.fromFile(image);
mediaScanIntent.setData(contentUri);
getActivity().sendBroadcast(mediaScanIntent);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

View File

@@ -0,0 +1,155 @@
package h_mal.appttude.com.driver.Global;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.annotation.NonNull;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_CONSTANT;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_DENIED;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVAL_PENDING;
import static h_mal.appttude.com.driver.Global.FirebaseClass.APPROVED;
import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVER_DETAILS_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.INSURANCE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.LOG_BOOK_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.MOT_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.PRIVATE_HIRE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_APPROVALS;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_DETAILS_FIREBASE;
import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
import static h_mal.appttude.com.driver.MainActivity.viewController;
public class SetApprovalDialog{
private final String[] groupNames = {"Pending","Denied","Approved"};
private String approvalNameString;
public int statusCode;
private Activity activity;
private String userId;
private ImageView imageView;
public SetApprovalDialog(int statusCode, Activity activity, String userId, int position, ImageView imageView) {
this.statusCode = statusCode;
this.activity = activity;
this.userId = userId;
this.imageView = imageView;
this.approvalNameString = getElement(position);
init();
}
public void init(){
int checkedItem;
switch (statusCode){
case APPROVAL_PENDING:
checkedItem = 0;
break;
case APPROVAL_DENIED:
checkedItem = 1;
break;
case APPROVED:
checkedItem = 2;
break;
default:
checkedItem = -1;
break;
}
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(activity);
alertBuilder.setSingleChoiceItems(groupNames, checkedItem, singleChoiceListener);
// .setPositiveButton(android.R.string.ok, submit);
alertBuilder.create().getOwnerActivity();
alertBuilder.show();
}
DialogInterface.OnClickListener singleChoiceListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
statusCode = APPROVAL_PENDING;
publishStatuscode(statusCode, dialog);
return;
case 1:
statusCode = APPROVAL_DENIED;
publishStatuscode(statusCode, dialog);
return;
case 2:
statusCode = APPROVED;
publishStatuscode(statusCode, dialog);
return;
}
}
};
private void publishStatuscode(final int status, final DialogInterface dialog){
viewController.progress(View.VISIBLE);
if (!approvalNameString.equals("")){
mDatabase.child(USER_FIREBASE).child(userId).child(USER_APPROVALS).child(approvalNameString)
.setValue(status).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Toast.makeText(activity, "Status change successful", Toast.LENGTH_SHORT).show();
imageView.setImageResource(approvalsClass.setImageResource(status));
dialog.dismiss();
}else{
Toast.makeText(activity, "Status change unsuccessful", Toast.LENGTH_SHORT).show();
}
viewController.progress(View.GONE);
}
});
}else {
Toast.makeText(activity, "Could not push status", Toast.LENGTH_SHORT).show();
}
}
private String getElement(int i){
String element = "";
switch (i){
case 0:
element = DRIVER_DETAILS_FIREBASE + APPROVAL_CONSTANT;
break;
case 1:
element = DRIVERS_LICENSE_FIREBASE + APPROVAL_CONSTANT;
break;
case 2:
element = PRIVATE_HIRE_FIREBASE + APPROVAL_CONSTANT;
break;
case 3:
element = VEHICLE_DETAILS_FIREBASE + APPROVAL_CONSTANT;
break;
case 4:
element = INSURANCE_FIREBASE + APPROVAL_CONSTANT;
break;
case 5:
element = MOT_FIREBASE + APPROVAL_CONSTANT;
break;
case 6:
element = LOG_BOOK_FIREBASE + APPROVAL_CONSTANT;
break;
case 7:
element = PRIVATE_HIRE_VEHICLE_LICENSE + APPROVAL_CONSTANT;
}
return element;
}
}

View File

@@ -0,0 +1,32 @@
package h_mal.appttude.com.driver.Global;
import android.app.Activity;
import android.view.View;
public class ViewController {
private Activity activity;
public ViewController(Activity activity) {
this.activity = activity;
}
public void progress(int vis){
if (activity instanceof ViewControllerInterface){
((ViewControllerInterface) activity).progressVisibility(vis);
}
}
public void reloadDrawer(){
if (activity instanceof ViewControllerInterface){
((ViewControllerInterface) activity).updateDrawer();
}
}
public interface ViewControllerInterface {
void progressVisibility(int vis);
void updateDrawer();
}
}

View File

@@ -1,43 +0,0 @@
package h_mal.appttude.com.driver;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class InsuranceFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_insurance, container, false);
TextView uploadInsurance = view.findViewById(R.id.uploadInsurance);
uploadInsurance.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
return view;
}
}

View File

@@ -2,17 +2,16 @@ package h_mal.appttude.com.driver;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.view.View;
@@ -24,23 +23,49 @@ import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import h_mal.appttude.com.driver.Driver.DriverOverallFragment;
import h_mal.appttude.com.driver.Driver.VehicleOverallFragment;
import h_mal.appttude.com.driver.Driver.VehicleSetupFragment;
import h_mal.appttude.com.driver.Driver.DriverProfileFragment;
import h_mal.appttude.com.driver.Driver.homeDriverFragment;
import h_mal.appttude.com.driver.Global.ApprovalsClass;
import h_mal.appttude.com.driver.Global.ArchiveClass;
import h_mal.appttude.com.driver.Global.ImageViewClass;
import h_mal.appttude.com.driver.Global.ViewController;
import h_mal.appttude.com.driver.SuperUser.homeSuperUserFragment;
import h_mal.appttude.com.driver.User.LoginActivity;
import h_mal.appttude.com.driver.User.profileFragment;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
implements NavigationView.OnNavigationItemSelectedListener, ViewController.ViewControllerInterface {
private static String TAG = MainActivity.class.getSimpleName();
@@ -50,7 +75,14 @@ public class MainActivity extends AppCompatActivity
public static StorageReference storageReference;
public static DatabaseReference mDatabase;
public static NavigationView navigationView;
public NavigationView navigationView;
ProgressBar progressBar;
public Toolbar toolbar;
public static ViewController viewController;
public static ImageViewClass imageViewClass;
public static ApprovalsClass approvalsClass;
public static ArchiveClass archiveClass;
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
@@ -63,12 +95,22 @@ public class MainActivity extends AppCompatActivity
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewController = new ViewController(this);
imageViewClass = new ImageViewClass();
approvalsClass = new ApprovalsClass();
archiveClass = new ArchiveClass();
auth = FirebaseAuth.getInstance();
storage = FirebaseStorage.getInstance();
storageReference = storage.getReference();
mDatabase = FirebaseDatabase.getInstance().getReference();
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
DatabaseReference ref = mDatabase.child(USER_FIREBASE)
.child(auth.getCurrentUser().getUid())
.child("role");
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
@@ -79,20 +121,91 @@ public class MainActivity extends AppCompatActivity
navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
fragmentManager = getSupportFragmentManager();
executeFragment(new homeFragment());
setupDrawer();
fragmentManager = getSupportFragmentManager();
fragmentManager.addOnBackStackChangedListener(backStackChangedListener);
progressBar = findViewById(R.id.progress_bar);
progressBar.setVisibility(View.VISIBLE);
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String role = (String) dataSnapshot.getValue();
Log.i(TAG, "onDataChange: " + role);
if (role.equals("driver")){
executeFragment(new homeDriverFragment());
}else if(role.equals("super_user")){
executeFragment(new homeSuperUserFragment());
}
drawerMenuItems(role);
progressBar.setVisibility(View.GONE);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
progressBar.setVisibility(View.GONE);
}
});
}
public static void executeFragment(Fragment f){
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container,f).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack(f.getClass().getSimpleName()).commit();
public FragmentManager.OnBackStackChangedListener backStackChangedListener= new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
String fragmentString = fragmentManager.getFragments().get(0).getClass().getSimpleName();
String title;
switch (fragmentString){
case "DriverProfileFragment":
title = "Driver Profile";
break;
case "DriverLicenseFragment":
title = "Drivers License";
break;
case "InsuranceFragment":
title = "Insurance";
break;
case "logbookFragment":
title = "Logbook";
break;
case "MotFragment":
title = "M.O.T";
break;
case "PrivateHireLicenseFragment":
title = "Private Hire License";
break;
case "VehicleSetupFragment":
title = "Vehicle Profile";
break;
case "UserMainFragment":
return;
case "ArchiveFragment":
return;
default:
title = getResources().getString(R.string.app_name);
}
setTitle(title);
}
};
@Override
public void setTitle(CharSequence title) {
// super.setTitle(title);
toolbar.setTitle(title);
}
public static void setupDrawer(){
public void drawerMenuItems(String s){
if (s.equals("super_user")){
Menu menu = navigationView.getMenu();
menu.removeGroup(R.id.menu_group);
}
}
public void setupDrawer(){
View header = navigationView.getHeaderView(0);
TextView driverEmail = header.findViewById(R.id.driver_email);
@@ -108,14 +221,22 @@ public class MainActivity extends AppCompatActivity
driverName.setText(user.getDisplayName());
}
Log.i(TAG, "setupDrawer: "+ storageReference.child("images/"+auth.getCurrentUser().getEmail()+"/profile_pic").getDownloadUrl());
Picasso.get()
.load(user.getPhotoUrl())
.placeholder(R.mipmap.ic_launcher_round)
.placeholder(R.drawable.choice_img_round)
.into(driverImage);
}
TextView textView = findViewById(R.id.logout);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
auth.signOut();
Intent intent = new Intent(getApplicationContext(),LoginActivity.class);
startActivity(intent);
finish();
}
});
}
@@ -126,9 +247,23 @@ public class MainActivity extends AppCompatActivity
drawer.closeDrawer(GravityCompat.START);
} else {
if (fragmentManager.getBackStackEntryCount() > 1) {
fragmentManager.popBackStack();
if (fragmentManager.getFragments().get(0).getClass()
.getSimpleName().equals("InsuranceFragment")){
new AlertDialog.Builder(this)
.setTitle("Return to previous?")
.setMessage("Progress unsaved. Are you sure?")
.setNegativeButton(android.R.string.no, null)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
fragmentManager.popBackStack();
}
}).create().show();
}else{
fragmentManager.popBackStack();
}
}else{
new AlertDialog.Builder(this,R.style.Theme_AppCompat_Dialog_Alert)
new AlertDialog.Builder(this)
.setTitle("Leave?")
.setMessage("Are you sure you want to exit?")
.setNegativeButton(android.R.string.no, null)
@@ -142,13 +277,6 @@ public class MainActivity extends AppCompatActivity
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
@@ -174,9 +302,9 @@ public class MainActivity extends AppCompatActivity
// Handle the camera action
executeFragment(new profileFragment());
} else if (id == R.id.nav_gallery) {
executeFragment(new driverProfileFragment());
executeFragment(new DriverOverallFragment());
} else if (id == R.id.nav_slideshow) {
executeFragment(new VehicleSetupFragment());
executeFragment(new VehicleOverallFragment());
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
@@ -198,8 +326,72 @@ public class MainActivity extends AppCompatActivity
}
}
public static Target loadImage (final ProgressBar pb, final ImageView mainImage){
Target target = new Target() {
@Override
public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) {
pb.setVisibility(View.GONE);
mainImage.setImageBitmap(bitmap);
mainImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imageViewClass.open(bitmap);
}
});
}
@Override
public void onBitmapFailed(Exception e, Drawable errorDrawable) {
pb.setVisibility(View.GONE);
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
pb.setVisibility(View.VISIBLE);
}
};
mainImage.setTag(target);
return target;
}
public static String getDateStamp(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmm");
return sdf.format(new Date());
}
public static String getDateTimeStamp(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
return sdf.format(new Date());
}
public static String setAsDateTime(String strCurrentDate) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd_HHmmss");
Date newDate = format.parse(strCurrentDate);
format = new SimpleDateFormat("dd/MM/yyyy");
return format.format(newDate);
}
public static void printObjectAsJson(String TAG, Object o){
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(new Gson().toJson(o));
String prettyJsonString = gson.toJson(je);
Log.i(TAG, "onBindViewHolder: object" + prettyJsonString);
}
@Override
public void progressVisibility(int vis) {
progressBar.setVisibility(vis);
}
@Override
public void updateDrawer() {
setupDrawer();
}
}

View File

@@ -1,43 +0,0 @@
package h_mal.appttude.com.driver;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class MotFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_mot, container, false);
TextView uploadMot = view.findViewById(R.id.uploadmot);
uploadMot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
return view;
}
}

View File

@@ -0,0 +1,59 @@
package h_mal.appttude.com.driver.Objects;
public class ApprovalsObject {
public int driver_details_approval;
public int driver_license_approval;
public int private_hire_approval;
public int vehicle_details_approval;
public int mot_details_approval;
public int insurance_details_approval;
public int log_book_approval;
public int private_hire_vehicle_approval;
public ApprovalsObject() {
}
public ApprovalsObject(int driver_details_approval, int driver_license_approval, int private_hire_approval, int vehicle_details_approval, int mot_details_approval, int insurance_details_approval, int log_book_approval, int private_hire_vehicle_approval) {
this.driver_details_approval = driver_details_approval;
this.driver_license_approval = driver_license_approval;
this.private_hire_approval = private_hire_approval;
this.vehicle_details_approval = vehicle_details_approval;
this.mot_details_approval = mot_details_approval;
this.insurance_details_approval = insurance_details_approval;
this.log_book_approval = log_book_approval;
this.private_hire_vehicle_approval = private_hire_vehicle_approval;
}
public int getPh_car_approval() {
return private_hire_vehicle_approval;
}
public int getDriver_details_approval() {
return driver_details_approval;
}
public int getDriver_license_approval() {
return driver_license_approval;
}
public int getPrivate_hire_approval() {
return private_hire_approval;
}
public int getVehicle_details_approval() {
return vehicle_details_approval;
}
public int getMot_details_approval() {
return mot_details_approval;
}
public int getInsurance_details_approval() {
return insurance_details_approval;
}
public int getLog_book_approval() {
return log_book_approval;
}
}

View File

@@ -0,0 +1,56 @@
package h_mal.appttude.com.driver.Objects;
import java.util.HashMap;
import java.util.List;
public class ArchiveObject {
public HashMap<String,DriversLicenseObject> driver_license;
public HashMap<String,PrivateHireObject> private_hire;
public HashMap<String,VehicleProfileObject> vehicle_details;
public HashMap<String,InsuranceObject> insurance_details;
public HashMap<String,MotObject> mot_details;
public HashMap<String,LogbookObject> log_book;
public HashMap<String,PrivateHireVehicleObject> private_hire_vehicle;
public ArchiveObject() {
}
public ArchiveObject(HashMap<String, DriversLicenseObject> driver_license, HashMap<String, PrivateHireObject> private_hire, HashMap<String, VehicleProfileObject> vehicle_details, HashMap<String, InsuranceObject> insurance_details, HashMap<String, MotObject> mot_details, HashMap<String, LogbookObject> log_book, HashMap<String, PrivateHireVehicleObject> private_hire_vehicle) {
this.driver_license = driver_license;
this.private_hire = private_hire;
this.vehicle_details = vehicle_details;
this.insurance_details = insurance_details;
this.mot_details = mot_details;
this.log_book = log_book;
this.private_hire_vehicle = private_hire_vehicle;
}
public HashMap<String, PrivateHireVehicleObject> getPh_car() {
return private_hire_vehicle;
}
public HashMap<String, DriversLicenseObject> getDriver_license() {
return driver_license;
}
public HashMap<String, PrivateHireObject> getPrivate_hire() {
return private_hire;
}
public HashMap<String, VehicleProfileObject> getVehicle_details() {
return vehicle_details;
}
public HashMap<String, InsuranceObject> getInsurance_details() {
return insurance_details;
}
public HashMap<String, MotObject> getMot_details() {
return mot_details;
}
public HashMap<String, LogbookObject> getLog_book() {
return log_book;
}
}

View File

@@ -1,4 +1,31 @@
package h_mal.appttude.com.driver.Objects;
class InsuranceObject {
import java.util.List;
public class InsuranceObject {
public List<String> photoStrings;
public String insurerName;
public String expiryDate;
public InsuranceObject() {
}
public InsuranceObject(List<String> photoStrings, String insurerName, String expiryDate) {
this.photoStrings = photoStrings;
this.insurerName = insurerName;
this.expiryDate = expiryDate;
}
public List<String> getPhotoStrings() {
return photoStrings;
}
public String getInsurerName() {
return insurerName;
}
public String getExpiryDate() {
return expiryDate;
}
}

View File

@@ -1,4 +1,23 @@
package h_mal.appttude.com.driver.Objects;
class LogbookObject {
public class LogbookObject {
public String photoString;
public String v5cnumber;
public LogbookObject(String photoString, String v5cnumber) {
this.photoString = photoString;
this.v5cnumber = v5cnumber;
}
public LogbookObject() {
}
public String getPhotoString() {
return photoString;
}
public String getV5cnumber() {
return v5cnumber;
}
}

View File

@@ -1,4 +1,23 @@
package h_mal.appttude.com.driver.Objects;
public class MotObject {
public String motImageString;
public String motExpiry;
public MotObject() {
}
public MotObject(String motImageString, String motExpiry) {
this.motImageString = motImageString;
this.motExpiry = motExpiry;
}
public String getMotImageString() {
return motImageString;
}
public String getMotExpiry() {
return motExpiry;
}
}

View File

@@ -0,0 +1,29 @@
package h_mal.appttude.com.driver.Objects;
public class PrivateHireVehicleObject {
public String phCarImageString;
public String phCarNumber;
public String phCarExpiry;
public PrivateHireVehicleObject(String phCarImageString, String phCarNumber, String phCarExpiry) {
this.phCarImageString = phCarImageString;
this.phCarNumber = phCarNumber;
this.phCarExpiry = phCarExpiry;
}
public PrivateHireVehicleObject() {
}
public String getPhCarImageString() {
return phCarImageString;
}
public String getPhCarNumber() {
return phCarNumber;
}
public String getPhCarExpiry() {
return phCarExpiry;
}
}

View File

@@ -0,0 +1,29 @@
package h_mal.appttude.com.driver.Objects;
public class UserObject {
public String profileName;
public String profileEmail;
public String profilePicString;
public UserObject() {
}
public UserObject(String profileName, String profileEmail, String profilePicString) {
this.profileName = profileName;
this.profileEmail = profileEmail;
this.profilePicString = profilePicString;
}
public String getProfileName() {
return profileName;
}
public String getProfileEmail() {
return profileEmail;
}
public String getProfilePicString() {
return profilePicString;
}
}

View File

@@ -11,13 +11,23 @@ public class VehicleProfileObject {
public String keeperPostCode;
public String startDate;
public boolean seized;
public MotObject motObject;
public InsuranceObject insuranceObject;
public LogbookObject logbookObject;
public VehicleProfileObject() {
}
public VehicleProfileObject(String reg, String make, String model, String colour, String keeperName,
String keeperAddress, String keeperPostCode, String startDate, boolean seized) {
this.reg = reg;
this.make = make;
this.model = model;
this.colour = colour;
this.keeperName = keeperName;
this.keeperAddress = keeperAddress;
this.keeperPostCode = keeperPostCode;
this.startDate = startDate;
this.seized = seized;
}
public String getReg() {
return reg;
}
@@ -54,15 +64,4 @@ public class VehicleProfileObject {
return seized;
}
public MotObject getMotObject() {
return motObject;
}
public InsuranceObject getInsuranceObject() {
return insuranceObject;
}
public LogbookObject getLogbookObject() {
return logbookObject;
}
}

View File

@@ -0,0 +1,59 @@
package h_mal.appttude.com.driver.Objects;
import h_mal.appttude.com.driver.Objects.ApprovalsObject;
import h_mal.appttude.com.driver.Objects.ArchiveObject;
import h_mal.appttude.com.driver.Objects.UserObject;
import h_mal.appttude.com.driver.Objects.WholeObject.DriverProfile;
import h_mal.appttude.com.driver.Objects.WholeObject.VehicleProfile;
public class WholeDriverObject {
public DriverProfile driver_profile;
public String role;
public ArchiveObject archive;
public UserObject user_details;
public VehicleProfile vehicle_profile;
public ApprovalsObject approvalsObject;
public String driver_number;
public WholeDriverObject(DriverProfile driver_profile, String role, ArchiveObject archive, UserObject user_details, VehicleProfile vehicle_profile, ApprovalsObject approvalsObject, String driver_number) {
this.driver_profile = driver_profile;
this.role = role;
this.archive = archive;
this.user_details = user_details;
this.vehicle_profile = vehicle_profile;
this.approvalsObject = approvalsObject;
this.driver_number = driver_number;
}
public WholeDriverObject() {
}
public String getDriver_number() {
return driver_number;
}
public ArchiveObject getArchive() {
return archive;
}
public DriverProfile getDriver_profile() {
return driver_profile;
}
public String getRole() {
return role;
}
public UserObject getUser_details() {
return user_details;
}
public VehicleProfile getVehicle_profile() {
return vehicle_profile;
}
public ApprovalsObject getApprovalsObject() {
return approvalsObject;
}
}

View File

@@ -0,0 +1,33 @@
package h_mal.appttude.com.driver.Objects.WholeObject;
import h_mal.appttude.com.driver.Objects.DriverProfileObject;
import h_mal.appttude.com.driver.Objects.DriversLicenseObject;
import h_mal.appttude.com.driver.Objects.PrivateHireObject;
public class DriverProfile {
public DriverProfileObject driver_profile;
public DriversLicenseObject driver_license;
public PrivateHireObject private_hire;
public DriverProfile(DriverProfileObject driver_profile, DriversLicenseObject driver_license, PrivateHireObject private_hire) {
this.driver_profile = driver_profile;
this.driver_license = driver_license;
this.private_hire = private_hire;
}
public DriverProfile() {
}
public DriverProfileObject getDriver_profile() {
return driver_profile;
}
public DriversLicenseObject getDriver_license() {
return driver_license;
}
public PrivateHireObject getPrivate_hire() {
return private_hire;
}
}

View File

@@ -0,0 +1,56 @@
package h_mal.appttude.com.driver.Objects.WholeObject;
import android.os.Parcel;
import android.os.Parcelable;
import h_mal.appttude.com.driver.Objects.WholeDriverObject;
public class MappedObject implements Parcelable {
public String userId;
public WholeDriverObject wholeDriverObject;
public MappedObject(String userId, WholeDriverObject wholeDriverObject) {
this.userId = userId;
this.wholeDriverObject = wholeDriverObject;
}
public MappedObject() {
}
protected MappedObject(Parcel in) {
userId = in.readString();
}
public static final Creator<MappedObject> CREATOR = new Creator<MappedObject>() {
@Override
public MappedObject createFromParcel(Parcel in) {
return new MappedObject(in);
}
@Override
public MappedObject[] newArray(int size) {
return new MappedObject[size];
}
};
public String getUserId() {
return userId;
}
public WholeDriverObject getWholeDriverObject() {
return wholeDriverObject;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(userId);
}
}

View File

@@ -0,0 +1,55 @@
package h_mal.appttude.com.driver.Objects.WholeObject;
import h_mal.appttude.com.driver.Objects.InsuranceObject;
import h_mal.appttude.com.driver.Objects.LogbookObject;
import h_mal.appttude.com.driver.Objects.MotObject;
import h_mal.appttude.com.driver.Objects.PrivateHireVehicleObject;
import h_mal.appttude.com.driver.Objects.VehicleProfileObject;
public class VehicleProfile {
public InsuranceObject insurance_details;
public LogbookObject log_book;
public MotObject mot_details;
public VehicleProfileObject vehicle_details;
public PrivateHireVehicleObject private_hire_vehicle;
public VehicleProfile() {
}
// public VehicleProfile(InsuranceObject insurance_details, LogbookObject log_book, MotObject mot_details, VehicleProfileObject vehicle_details) {
// this.insurance_details = insurance_details;
// this.log_book = log_book;
// this.mot_details = mot_details;
// this.vehicle_details = vehicle_details;
// }
public VehicleProfile(InsuranceObject insurance_details, LogbookObject log_book, MotObject mot_details, VehicleProfileObject vehicle_details, PrivateHireVehicleObject private_hire_vehicle) {
this.insurance_details = insurance_details;
this.log_book = log_book;
this.mot_details = mot_details;
this.vehicle_details = vehicle_details;
this.private_hire_vehicle = private_hire_vehicle;
}
public PrivateHireVehicleObject getPrivateHireVehicleObject() {
return private_hire_vehicle;
}
public InsuranceObject getInsurance_details() {
return insurance_details;
}
public LogbookObject getLog_book() {
return log_book;
}
public MotObject getMot_details() {
return mot_details;
}
public VehicleProfileObject getVehicle_details() {
return vehicle_details;
}
}

View File

@@ -1,89 +0,0 @@
package h_mal.appttude.com.driver;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
public class RegisterActivity extends AppCompatActivity {
private FirebaseAuth auth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
auth = FirebaseAuth.getInstance();
final EditText email = findViewById(R.id.email_register);
final EditText passwordTop = findViewById(R.id.password_top);
final EditText passwordBottom = findViewById(R.id.password_bottom);
final ProgressBar progressBar = findViewById(R.id.pb);
Button submit = findViewById(R.id.email_sign_up);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String emailText = email.getText().toString().trim();
String passwordText = passwordTop.getText().toString().trim();
String passwordTextBottom = passwordBottom.getText().toString().trim();
if (TextUtils.isEmpty(emailText)) {
Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show();
email.setError(getString(R.string.error_field_required));
return;
}
if (TextUtils.isEmpty(passwordText)) {
Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show();
passwordTop.setError(getString(R.string.error_field_required));
return;
}
if (TextUtils.isEmpty(passwordTextBottom)) {
Toast.makeText(getApplicationContext(), "Enter password again!", Toast.LENGTH_SHORT).show();
passwordBottom.setError(getString(R.string.error_field_required));
return;
}
if (passwordText.length() < 6) {
passwordTop.setError(getString(R.string.error_invalid_password));
return;
}
progressBar.setVisibility(View.VISIBLE);
//create user
auth.createUserWithEmailAndPassword(emailText, passwordText)
.addOnCompleteListener(RegisterActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Toast.makeText(RegisterActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
if (!task.isSuccessful()) {
Toast.makeText(RegisterActivity.this, "Authentication failed." + task.getException(),
Toast.LENGTH_SHORT).show();
} else {
finish();
}
}
});
}
});
}
}

View File

@@ -0,0 +1,305 @@
package h_mal.appttude.com.driver.SuperUser;
import android.app.Activity;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import h_mal.appttude.com.driver.Archive.ArchiveFragment;
import h_mal.appttude.com.driver.Driver.DriverLicenseFragment;
import h_mal.appttude.com.driver.Driver.InsuranceFragment;
import h_mal.appttude.com.driver.Driver.MotFragment;
import h_mal.appttude.com.driver.Driver.PrivateHireLicenseFragment;
import h_mal.appttude.com.driver.Driver.PrivateHireVehicleFragment;
import h_mal.appttude.com.driver.Driver.VehicleSetupFragment;
import h_mal.appttude.com.driver.Driver.DriverProfileFragment;
import h_mal.appttude.com.driver.Driver.logbookFragment;
import h_mal.appttude.com.driver.Global.SetApprovalDialog;
import h_mal.appttude.com.driver.Objects.ApprovalsObject;
import h_mal.appttude.com.driver.Objects.ArchiveObject;
import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject;
import h_mal.appttude.com.driver.Objects.WholeDriverObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.INSURANCE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.LOG_BOOK_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.MOT_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.NO_DATE_PRESENT;
import static h_mal.appttude.com.driver.Global.FirebaseClass.PRIVATE_HIRE_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.VEHICLE_DETAILS_FIREBASE;
import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.archiveClass;
public class ApprovalListAdapter extends ArrayAdapter<MappedObject> {
private String TAG = "ApprovalListAdapter";
String [] names = {"Driver Profile","Driver License","Private Hire","Vehicle Profile","Insurance","MOT","Logbook","P/H Vehicle"};
MappedObject mappedObject;
Activity activity;
int approvalCode;
public ApprovalListAdapter(@NonNull Activity activity, @NonNull MappedObject[] objects) {
super(activity, 0, objects);
this.mappedObject = objects[0];
this.activity = activity;
}
@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null) {
listItemView = LayoutInflater.from(activity).inflate(
R.layout.approval_list_grid_item, parent, false);
}
approvalCode = getApprovalStatusCode(position);
TextView textView = listItemView.findViewById(R.id.approval_text);
textView.setText(names[position]);
final ImageView imageView = listItemView.findViewById(R.id.approval_iv);
imageView.setImageResource(approvalsClass.setImageResource(approvalCode));
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new SetApprovalDialog(approvalCode,activity,mappedObject.getUserId(),position,imageView);
}
});
ImageView archiveImage = listItemView.findViewById(R.id.archive_icon);
if (mappedObject.getWholeDriverObject().archive != null){
Log.i(TAG, "getView: archive = " + getArchive(position,mappedObject.getWholeDriverObject().getArchive()));
archiveImage.setVisibility(getArchive(position,mappedObject.getWholeDriverObject().getArchive()));
archiveImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = null;
switch (position){
case 1:
s = DRIVERS_LICENSE_FIREBASE;
break;
case 2:
s = PRIVATE_HIRE_FIREBASE;
break;
case 3:
s = VEHICLE_DETAILS_FIREBASE;
break;
case 4:
s = INSURANCE_FIREBASE;
break;
case 5:
s = MOT_FIREBASE;
break;
case 6:
s = LOG_BOOK_FIREBASE;
break;
case 7:
s = PRIVATE_HIRE_VEHICLE_LICENSE;
break;
}
executeFragment(new ArchiveFragment(),mappedObject.getUserId(),s);
}
});
}
listItemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getFragment(position);
}
});
listItemView.setMinimumHeight(parent.getHeight()/4);
listItemView.setPadding((int)convertDpToPixel(9,getContext()),
(int)convertDpToPixel(9,getContext()),
(int)convertDpToPixel(9,getContext()),
(int)convertDpToPixel(9,getContext()));
return listItemView;
}
@Override
public int getCount() {
return 8;
}
private int getArchive(int i, ArchiveObject archiveObject){
Object o = null;
int visible;
switch (i){
case 0:
break;
case 1:
o = archiveObject.driver_license;
break;
case 2:
o = archiveObject.private_hire;
break;
case 3:
o = archiveObject.vehicle_details;
break;
case 4:
o = archiveObject.insurance_details;
break;
case 5:
o = archiveObject.mot_details;
break;
case 6:
o = archiveObject.log_book;
break;
case 7:
o = archiveObject.private_hire_vehicle;
}
if (o != null){
visible = View.VISIBLE;
}else{
visible = View.GONE;
}
return visible;
}
private void getFragment(int i){
Fragment f = null;
WholeDriverObject wholeDriverObject = mappedObject.getWholeDriverObject();
Object o = null;
switch (i) {
case 0:
f = new DriverProfileFragment();
if (wholeDriverObject.driver_profile != null && wholeDriverObject.getDriver_profile().driver_profile != null) {
o = wholeDriverObject.getDriver_profile().getDriver_profile();
}
break;
case 1:
f = new DriverLicenseFragment();
if (wholeDriverObject.driver_profile != null && wholeDriverObject.getDriver_profile().driver_license != null) {
o = wholeDriverObject.getDriver_profile().getDriver_license();
}
break;
case 2:
f = new PrivateHireLicenseFragment();
if (wholeDriverObject.driver_profile != null && wholeDriverObject.getDriver_profile().private_hire != null) {
o = wholeDriverObject.getDriver_profile().getPrivate_hire();
}
break;
case 3:
f = new VehicleSetupFragment();
if (wholeDriverObject.vehicle_profile != null && wholeDriverObject.getVehicle_profile().vehicle_details != null){
o = wholeDriverObject.getVehicle_profile().getVehicle_details();
}
break;
case 4:
f = new InsuranceFragment();
if (wholeDriverObject.vehicle_profile != null && wholeDriverObject.getVehicle_profile().insurance_details != null){
o = wholeDriverObject.getVehicle_profile().getInsurance_details();
}
break;
case 5:
f = new MotFragment();
if (wholeDriverObject.vehicle_profile != null && wholeDriverObject.getVehicle_profile().mot_details != null){
o = wholeDriverObject.getVehicle_profile().getMot_details();
}
break;
case 6:
f = new logbookFragment();
if (wholeDriverObject.vehicle_profile != null && wholeDriverObject.getVehicle_profile().log_book != null){
o = wholeDriverObject.getVehicle_profile().getLog_book();
}
break;
case 7:
f = new PrivateHireVehicleFragment();
if (wholeDriverObject.vehicle_profile != null && wholeDriverObject.getVehicle_profile().private_hire_vehicle != null){
o = wholeDriverObject.getVehicle_profile().getPrivateHireVehicleObject();
}
break;
}
if (o == null){
executeFragment(f,mappedObject.getUserId());
}else {
archiveClass.openDialogArchive(getContext(),o
,mappedObject.getUserId(),f);
}
}
private int getApprovalStatusCode(int i){
int statusCode = NO_DATE_PRESENT;
if (mappedObject.getWholeDriverObject().approvalsObject != null){
ApprovalsObject approvalsObject = mappedObject.getWholeDriverObject().getApprovalsObject();
switch (i) {
case 0:
if (approvalsObject.driver_details_approval != 0) {
statusCode = approvalsObject.getDriver_details_approval();
}
break;
case 1:
if (approvalsObject.driver_license_approval != 0) {
statusCode = approvalsObject.getDriver_license_approval();
}
break;
case 2:
if (approvalsObject.private_hire_approval != 0) {
statusCode = approvalsObject.getPrivate_hire_approval();
}
break;
case 3:
if (approvalsObject.vehicle_details_approval != 0) {
statusCode = approvalsObject.getVehicle_details_approval();
}
break;
case 4:
if (approvalsObject.insurance_details_approval != 0) {
statusCode = approvalsObject.getInsurance_details_approval();
}
break;
case 5:
if (approvalsObject.mot_details_approval != 0) {
statusCode = approvalsObject.getMot_details_approval();
}
break;
case 6:
if (approvalsObject.log_book_approval != 0) {
statusCode = approvalsObject.getLog_book_approval();
}
break;
case 7:
if (approvalsObject.private_hire_vehicle_approval != 0) {
statusCode = approvalsObject.getPh_car_approval();
}
break;
}
}
return statusCode;
}
public static float convertDpToPixel(float dp, Context context){
return dp * ((float) context.getResources().getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT);
}
}

View File

@@ -0,0 +1,182 @@
package h_mal.appttude.com.driver.SuperUser;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DatabaseReference;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.util.List;
import h_mal.appttude.com.driver.Objects.UserObject;
import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.ExecuteFragment.executeFragment;
import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVER_NUMBER;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.imageViewClass;
import static h_mal.appttude.com.driver.MainActivity.loadImage;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
public class ListViewSuperAdapter extends ArrayAdapter<MappedObject> {
public ListViewSuperAdapter(@NonNull Context context, @NonNull List<MappedObject> objects) {
super(context, 0, objects);
}
@NonNull
@Override
public View getView(int i, @Nullable View convertView, @NonNull ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.list_item_layout, parent, false);
}
Log.i("getviewposition", "getView: pos = " + i);
final ImageView profilePicImage = listItemView.findViewById(R.id.driverPic);
final ProgressBar progressBar = listItemView.findViewById(R.id.pb_su_list);
TextView userNameTextView = listItemView.findViewById(R.id.username_text);
TextView userEmailTextView = listItemView.findViewById(R.id.emailaddress_text);
ImageView profileApprovalImage = listItemView.findViewById(R.id.approval_iv);
final TextView driverNo = listItemView.findViewById(R.id.driver_no);
final MappedObject mappedObject = getItem(i);
final UserObject object = mappedObject.getWholeDriverObject().getUser_details();
if (object.profilePicString != null){
Picasso.get()
.load(object.getProfilePicString())
.resize(128,128)
.placeholder(R.drawable.choice_img_round)
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
progressBar.setVisibility(View.GONE);
profilePicImage.setImageBitmap(bitmap);
}
@Override
public void onBitmapFailed(Exception e, Drawable errorDrawable) {
progressBar.setVisibility(View.GONE);
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
progressBar.setVisibility(View.VISIBLE);
}
});
}else {
profilePicImage.setImageResource(R.drawable.choice_img_round);
}
userNameTextView.setText(object.getProfileName());
userEmailTextView.setText(object.getProfileEmail());
if (mappedObject.getWholeDriverObject().driver_number == null){
driverNo.setText("0");
}else {
String s = String.valueOf(mappedObject.getWholeDriverObject().getDriver_number());
driverNo.setText(s);
}
driverNo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
final EditText input = new EditText(getContext());
LinearLayout layout = new LinearLayout(getContext());
layout.setOrientation(LinearLayout.VERTICAL);
layout.setPadding(28,0,56,0);
input.setText(driverNo.getText().toString());
input.setSelectAllOnFocus(true);
layout.addView(input);
builder.setTitle("Change Driver Number")
.setView(layout)
.setPositiveButton("Submit", new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, int which) {
DatabaseReference reference = mDatabase.child(USER_FIREBASE).child(mappedObject.getUserId())
.child(DRIVER_NUMBER);
Log.i("Dialog Driver no", "onClick: " + reference.toString());
reference.setValue(input.getText().toString()).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Toast.makeText(getContext(), "Driver Number Changed", Toast.LENGTH_SHORT).show();
dialog.dismiss();
notifyDataSetChanged();
Log.i("Dialog Driver no", "onComplete: " + task.getResult());
}else {
Log.e("Dialog Driver no", "onComplete: ", task.getException());
}
}
});
}
}
).create()
.show();
}
});
profileApprovalImage.setImageResource(
approvalsClass.getOverApprovalStatusCode(mappedObject.getWholeDriverObject()));
listItemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle bundle = new Bundle();
bundle.putParcelable("mapped",mappedObject);
executeFragment(new UserMainFragment(),bundle);
}
});
return listItemView;
}
private boolean hasImage(@NonNull ImageView view) {
Drawable drawable = view.getDrawable();
boolean hasImage = (drawable != null);
if (hasImage && (drawable instanceof BitmapDrawable)) {
hasImage = ((BitmapDrawable)drawable).getBitmap() != null;
}
return hasImage;
}
}

View File

@@ -0,0 +1,49 @@
package h_mal.appttude.com.driver.SuperUser;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.ListView;
import h_mal.appttude.com.driver.Archive.ArchiveFragment;
import h_mal.appttude.com.driver.Global.ExecuteFragment;
import h_mal.appttude.com.driver.MainActivity;
import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject;
import h_mal.appttude.com.driver.R;
public class UserMainFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_user_main, container, false);
Log.i("UserMain", "onCreateView: height = " + view.getHeight());
MappedObject mappedObject = getArguments().getParcelable("mapped");
getActivity().setTitle(mappedObject.getWholeDriverObject().getUser_details().getProfileName());
// ListView listView = view.findViewById(R.id.approvals_list);
GridView listView = view.findViewById(R.id.approvals_list);
listView.setAdapter(new ApprovalListAdapter(getActivity(), new MappedObject[]{mappedObject}));
return view;
}
}

View File

@@ -0,0 +1,186 @@
package h_mal.appttude.com.driver.SuperUser;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject;
import h_mal.appttude.com.driver.Objects.WholeDriverObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.MainActivity.approvalsClass;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
import static h_mal.appttude.com.driver.MainActivity.printObjectAsJson;
import static h_mal.appttude.com.driver.MainActivity.viewController;
public class homeSuperUserFragment extends Fragment {
DatabaseReference users;
ListViewSuperAdapter listViewSuperAdapter;
List<MappedObject> mappedObjectList;
private SharedPreferences sharedPreferences;
private int sortOrder;
private boolean sortDesc;
private static final String SORT = "SORT";
private static final String REVERSED = "REVERSED";
private static final String TAG = "homeSuperUserFragment";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
users = mDatabase.child(USER_FIREBASE);
mappedObjectList = new ArrayList<>();
viewController.progress(View.VISIBLE);
users.addValueEventListener(valueEventListener);
sharedPreferences = getActivity().getSharedPreferences("PREFS", 0);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_home_super_user, container, false);
final ListView list = view.findViewById(R.id.list_view_super);
listViewSuperAdapter = new ListViewSuperAdapter(getContext(),mappedObjectList);
list.setAdapter(listViewSuperAdapter);
return view;
}
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
mappedObjectList.clear();
Log.i("Count " ,""+snapshot.getChildrenCount());
for (DataSnapshot postSnapshot: snapshot.getChildren()) {
if (postSnapshot.child("role").getValue().toString().equals("driver")){
printObjectAsJson("object",postSnapshot.toString());
mappedObjectList.add(new MappedObject(postSnapshot.getKey(),postSnapshot.getValue(WholeDriverObject.class)));
}
}
sortDate(sortOrder,sortDesc);
viewController.progress(View.GONE);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
viewController.progress(View.GONE);
}
};
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_calls_fragment, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.archive){
final String[] grpname = {"Driver Name","Driver Number","Approval"};
sortOrder = sharedPreferences.getInt(SORT,0);
int checkedItem = sortOrder;
final int[] compareInt = {0};
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle("Sort by:")
.setSingleChoiceItems(grpname, checkedItem, new DialogInterface
.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
switch (item) {
case 0:
compareInt[0] = 0;
return;
case 1:
compareInt[0] = 1;
return;
case 2:
compareInt[0] = 2;
}
}
}).setPositiveButton("Ascending", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
sortDate(compareInt[0],false);
dialog.dismiss();
}
}).setNegativeButton("Descending", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
sortDate(compareInt[0],true);
dialog.dismiss();
}
})
.create().show();
}
return super.onOptionsItemSelected(item);
}
private void sortDate(final int compareInt, boolean reversed){
Log.i(TAG, "sortDate: " + compareInt + " - " + reversed);
Comparator<MappedObject> comparator = new Comparator<MappedObject>() {
@Override
public int compare(MappedObject o1, MappedObject o2) {
switch (compareInt){
case 0:
return o1.getWholeDriverObject().getUser_details().getProfileName().compareTo(
o2.getWholeDriverObject().getUser_details().getProfileName());
case 1:
return o1.getWholeDriverObject().getDriver_number()
.compareTo(o2.getWholeDriverObject().getDriver_number());
case 2:
return approvalsClass.getOverApprovalStatusCode(o1.wholeDriverObject) -
approvalsClass.getOverApprovalStatusCode(o2.wholeDriverObject);
default:
return approvalsClass.getOverApprovalStatusCode(o1.wholeDriverObject) -
approvalsClass.getOverApprovalStatusCode(o2.wholeDriverObject);
}
}
};
sharedPreferences.edit().putInt(SORT,compareInt).apply();
sharedPreferences.edit().putBoolean(REVERSED,reversed).apply();
if (reversed){
Collections.sort(mappedObjectList,comparator.reversed());
}else {
Collections.sort(mappedObjectList,comparator);
}
listViewSuperAdapter.notifyDataSetChanged();
}
}

View File

@@ -1,31 +1,19 @@
package h_mal.appttude.com.driver;
package h_mal.appttude.com.driver.User;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.annotation.TargetApi;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.CursorLoader;
import android.content.Loader;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.EditorInfo;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
@@ -37,22 +25,17 @@ import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import java.util.ArrayList;
import java.util.List;
import static android.Manifest.permission.READ_CONTACTS;
import h_mal.appttude.com.driver.MainActivity;
import h_mal.appttude.com.driver.R;
/**
* A login screen that offers login via email/password.
*/
public class LoginActivity extends AppCompatActivity{
private String TAG = "LoginActivity";
private FirebaseAuth auth;
private static final String[] DUMMY_CREDENTIALS = new String[]{
"driver@example.com:hello", "bar@example.com:world"
};
// UI references.
private EditText mEmailView;
private EditText mPasswordView;
@@ -65,6 +48,7 @@ public class LoginActivity extends AppCompatActivity{
setContentView(R.layout.activity_login);
auth = FirebaseAuth.getInstance();
// Set up the login form.
mEmailView = findViewById(R.id.email);
@@ -92,7 +76,7 @@ public class LoginActivity extends AppCompatActivity{
mProgressView = findViewById(R.id.login_progress);
mLoginView = findViewById(R.id.email_login_form);
TextView register = findViewById(R.id.register);
TextView register = findViewById(R.id.register_button);
register.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@@ -100,11 +84,17 @@ public class LoginActivity extends AppCompatActivity{
startActivity(intent);
}
});
TextView forgotPw = findViewById(R.id.forgot);
forgotPw.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplication(),forgotPasswordActivity.class);
startActivity(intent);
}
});
}
/**
* Attempts to sign in or register the account specified by the login form.
* If there are form errors (invalid email, missing fields, etc.), the
@@ -159,23 +149,17 @@ public class LoginActivity extends AppCompatActivity{
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
showProgress(false);
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent);
finish();
if (task.isSuccessful()){
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent);
finish();
}else {
Toast.makeText(LoginActivity.this, getString(R.string.login_failed), Toast.LENGTH_SHORT).show();
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(LoginActivity.this, getString(R.string.login_failed), Toast.LENGTH_SHORT).show();
showProgress(false);
}
});
}
);
}
}
@@ -197,7 +181,7 @@ public class LoginActivity extends AppCompatActivity{
// On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow
// for very easy animations. If available, use these APIs to fade-in
// the progress spinner.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime);
mLoginView.setVisibility(show ? View.GONE : View.VISIBLE);
@@ -217,12 +201,6 @@ public class LoginActivity extends AppCompatActivity{
mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
}
});
} else {
// The ViewPropertyAnimator APIs are not available, so simply show
// and hide the relevant UI components.
mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
mLoginView.setVisibility(show ? View.GONE : View.VISIBLE);
}
}

View File

@@ -0,0 +1,161 @@
package h_mal.appttude.com.driver.User;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.UserProfileChangeRequest;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import h_mal.appttude.com.driver.MainActivity;
import h_mal.appttude.com.driver.Objects.UserObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
public class RegisterActivity extends AppCompatActivity {
private FirebaseAuth auth;
private EditText name;
private EditText email;
private EditText passwordTop;
private EditText passwordBottom;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
auth = FirebaseAuth.getInstance();
name = findViewById(R.id.name_register);
email = findViewById(R.id.email_register);
passwordTop = findViewById(R.id.password_top);
passwordBottom = findViewById(R.id.password_bottom);
progressBar = findViewById(R.id.pb);
Button submit = findViewById(R.id.email_sign_up);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String nameString = name.getText().toString().trim();
String emailText = email.getText().toString().trim();
String passwordText = passwordTop.getText().toString().trim();
String passwordTextBottom = passwordBottom.getText().toString().trim();
boolean cancel = false;
View focusView = null;
if (TextUtils.isEmpty(nameString)) {
name.setError(getString(R.string.error_field_required));
focusView = name;
cancel = true;
}
if (TextUtils.isEmpty(emailText)) {
email.setError(getString(R.string.error_field_required));
focusView = email;
cancel = true;
}
if (TextUtils.isEmpty(passwordText)) {
passwordTop.setError(getString(R.string.error_field_required));
focusView = passwordTop;
cancel = true;
}
if (TextUtils.isEmpty(passwordTextBottom)) {
passwordBottom.setError(getString(R.string.error_field_required));
focusView = passwordBottom;
cancel = true;
}
if (!TextUtils.isEmpty(passwordText) && !isPasswordValid(passwordText)) {
passwordTop.setError(getString(R.string.error_invalid_password));
focusView = passwordTop;
cancel = true;
}
if (!passwordText.equals(passwordTextBottom)){
passwordBottom.setError(getString(R.string.no_match_password));
focusView = passwordBottom;
cancel = true;
}
if (cancel) {
// There was an error; don't attempt login and focus the first
// form field with an error.
focusView.requestFocus();
} else {
progressBar.setVisibility(View.VISIBLE);
//create user
auth.createUserWithEmailAndPassword(emailText, passwordText)
.addOnCompleteListener(RegisterActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
progressBar.setVisibility(View.GONE);
if (!task.isSuccessful()) {
Toast.makeText(RegisterActivity.this, "Authentication failed." + task.getException(),
Toast.LENGTH_SHORT).show();
} else {
UserProfileChangeRequest.Builder profileUpdatesBuilder = new UserProfileChangeRequest.Builder();
if (!TextUtils.isEmpty(nameString)){
profileUpdatesBuilder.setDisplayName(nameString);
}
UserProfileChangeRequest profileUpdates = profileUpdatesBuilder.build();
auth.getCurrentUser().updateProfile(profileUpdates).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Log.i("RegisterActivity", "onComplete: " + task.isSuccessful());
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid()).child("role")
.setValue("driver");
mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid()).child("user_details")
.setValue(new UserObject(auth.getCurrentUser().getDisplayName(),auth.getCurrentUser().getEmail(),null));
Intent intent = new Intent(RegisterActivity.this,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
}
});
}
}
});
}
}
});
}
private boolean isPasswordValid(String password) {
//TODO: Replace this with your own logic
return password.length() > 6;
}
}

View File

@@ -0,0 +1,59 @@
package h_mal.appttude.com.driver.User;
import android.support.annotation.NonNull;
import android.support.v4.app.NavUtils;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import h_mal.appttude.com.driver.R;
public class forgotPasswordActivity extends AppCompatActivity {
String TAG = "forgotPasswordActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_forgot_password);
final EditText editText = findViewById(R.id.reset_pw);
final Button resetPw = findViewById(R.id.reset_pw_sign_up);
resetPw.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resetPassword(editText.getText().toString().trim());
}
});
}
private void resetPassword(String emailAddress){
FirebaseAuth auth = FirebaseAuth.getInstance();
auth.sendPasswordResetEmail(emailAddress)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "Email sent.");
NavUtils.navigateUpFromSameTask(forgotPasswordActivity.this);
finish();
}else {
Toast.makeText(forgotPasswordActivity.this, "Could not reset Password", Toast.LENGTH_SHORT).show();
}
}
});
}
}

View File

@@ -0,0 +1,251 @@
package h_mal.appttude.com.driver.User;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.text.InputType;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.EmailAuthProvider;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.UserProfileChangeRequest;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.squareup.picasso.Picasso;
import h_mal.appttude.com.driver.Global.ImageSelectorDialog;
import h_mal.appttude.com.driver.Global.ImageSelectorResults;
import h_mal.appttude.com.driver.Global.ViewController;
import h_mal.appttude.com.driver.Objects.UserObject;
import h_mal.appttude.com.driver.R;
import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVER_DETAILS_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.DRIVER_FIREBASE;
import static h_mal.appttude.com.driver.Global.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.CAMERA_REQUEST;
import static h_mal.appttude.com.driver.Global.ImageSelectorDialog.MY_CAMERA_PERMISSION_CODE;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
public class profileFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
private TextView email;
private TextView name;
private TextView changePw;
private FirebaseUser user;
private DatabaseReference databaseReference;
private static final String EMAIL_CONSTANT = "Email Address";
private static final String PW_CONSTANT = "Password";
ViewController viewController;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewController = new ViewController(getActivity());
user = auth.getCurrentUser();
databaseReference = mDatabase.child(USER_FIREBASE).child(user.getUid())
.child(DRIVER_FIREBASE).child(DRIVER_DETAILS_FIREBASE)
.child("driverPic");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_profile, container, false);
email = view.findViewById(R.id.change_email);
name = view.findViewById(R.id.change_profile_name);
changePw = view.findViewById(R.id.change_pw);
Button button = view.findViewById(R.id.submit_profile);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fragmentManager.popBackStack();
}
});
name.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
dialog.setTitle("Update Username");
final EditText titleBox = new EditText(getContext());
titleBox.setText(user.getDisplayName());
dialog.setView(titleBox);
dialog.setPositiveButton("Update", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
updateProfile(titleBox.getText().toString().trim());
}
});
dialog.show();
}
});
email.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(EMAIL_CONSTANT);
}
});
changePw.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(PW_CONSTANT);
}
});
return view;
}
private void updateProfile(String profileName){
UserProfileChangeRequest.Builder profileUpdatesBuilder = new UserProfileChangeRequest.Builder();
if (!TextUtils.isEmpty(profileName)){
profileUpdatesBuilder.setDisplayName(profileName);
}
UserProfileChangeRequest profileUpdates = profileUpdatesBuilder.build();
user.updateProfile(profileUpdates)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "User profile updated.");
viewController.reloadDrawer();
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getContext(), "Update Failed", Toast.LENGTH_SHORT).show();
}
});
}
private void changeCredentials(String email, String password, final String changeText, final String selector){
// Get auth credentials from the user for re-authentication
AuthCredential credential = EmailAuthProvider
.getCredential(email, password); // Current Login Credentials \\
// Prompt the user to re-provide their sign-in credentials
user.reauthenticate(credential)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.d(TAG, "User re-authenticated.");
user = FirebaseAuth.getInstance().getCurrentUser();
if (selector.equals(EMAIL_CONSTANT)){
user.updateEmail(changeText)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "User email address updated.");
Toast.makeText(getContext(), "Update Successful", Toast.LENGTH_SHORT).show();
viewController.reloadDrawer();
}
}
});
}
if (selector.equals(PW_CONSTANT)){
user.updatePassword(changeText)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "User email address updated.");
Toast.makeText(getContext(), "Update Successful", Toast.LENGTH_SHORT).show();
}
}
});
}
}
});
}
private void showDialog(final String update){
//Make new Dialog
AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
dialog.setTitle("Update " + update);
LinearLayout layout = new LinearLayout(getContext());
layout.setOrientation(LinearLayout.VERTICAL);
layout.setPadding(28,0,56,0);
final EditText box1 = new EditText(getContext());
box1.setHint("Current Email Address");
box1.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
layout.addView(box1); // Notice this is an add method
final EditText box2 = new EditText(getContext());
box2.setHint("Current Password");
box2.setInputType(InputType.TYPE_CLASS_TEXT |
InputType.TYPE_TEXT_VARIATION_PASSWORD);
layout.addView(box2); // Another add method
final EditText box3 = new EditText(getContext());
if (update.equals(PW_CONSTANT)){
box3.setInputType(InputType.TYPE_CLASS_TEXT |
InputType.TYPE_TEXT_VARIATION_PASSWORD);
}else {
box3.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
}
box3.setHint("New " + update);
layout.addView(box3); // Another add method
dialog.setView(layout);
dialog.setPositiveButton("Update", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String email = box1.getText().toString().trim();
String password = box2.getText().toString().trim();
String textThree = box3.getText().toString().trim();
changeCredentials(email,password,textThree,update);
}
});
dialog.show();
}
}

View File

@@ -1,194 +0,0 @@
package h_mal.appttude.com.driver;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import h_mal.appttude.com.driver.Objects.PrivateHireObject;
import static h_mal.appttude.com.driver.FirebaseClass.DRIVERS_LICENSE_FIREBASE;
import static h_mal.appttude.com.driver.FirebaseClass.DRIVER_FIREBASE;
import static h_mal.appttude.com.driver.FirebaseClass.PRIVATE_HIRE_FIREBASE;
import static h_mal.appttude.com.driver.FirebaseClass.USER_FIREBASE;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.executeFragment;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import static h_mal.appttude.com.driver.MainActivity.getDateStamp;
import static h_mal.appttude.com.driver.MainActivity.mDatabase;
public class VehicleSetupFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
EditText reg;
EditText make;
EditText model;
EditText color;
EditText keeperName;
EditText address;
EditText postcode;
EditText startDate;
CheckBox seized;
TextView mot;
TextView retrievedmot;
TextView insurance;
TextView retrievedIns;
TextView logbook;
TextView logbook_retrieved;
Button Submit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_vehicle_setup, container, false);
reg = view.findViewById(R.id.reg);
make = view.findViewById(R.id.make);
model = view.findViewById(R.id.model);
color = view.findViewById(R.id.colour);
keeperName = view.findViewById(R.id.keeper_name);
address = view.findViewById(R.id.address);
postcode = view.findViewById(R.id.postcode);
startDate = view.findViewById(R.id.start_date);
seized = view.findViewById(R.id.seized);
mot = view.findViewById(R.id.mot);
retrievedmot = view.findViewById(R.id.retrievedmot);
insurance = view.findViewById(R.id.insurance);
retrievedIns = view.findViewById(R.id.insurance_retrieved);
logbook = view.findViewById(R.id.log_book);
logbook_retrieved = view.findViewById(R.id.log_book_retrieved);
Submit = view.findViewById(R.id.submit_vehicle);
initiateViewsFromFb();
mot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
executeFragment(new MotFragment());
}
});
insurance.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
executeFragment(new InsuranceFragment());
}
});
logbook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
executeFragment(new logbookFragment());
}
});
Submit.setOnClickListener(submitOnClickListener);
return view;
}
private void initiateViewsFromFb() {
//todo: retrieve object and set data in fields
}
View.OnClickListener submitOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
//TODO: get strings from views
String regString = reg.getText().toString().trim();
String makeString = make.getText().toString().trim();
String modelString = model.getText().toString().trim();
String colourString = color.getText().toString().trim();
String keeperNameStrin = keeperName.getText().toString().trim();
String addressString = address.getText().toString().trim();
String postcodeString = postcode.getText().toString().trim();
String driverForename = startDate.getText().toString().trim();
//TODO: validate the strings
// if ( !TextUtils.isEmpty(driverForename) &&
// !TextUtils.isEmpty(AddressString) &&
// !TextUtils.isEmpty(postCodeString) &&
// !TextUtils.isEmpty(dobString) &&
// !TextUtils.isEmpty(niString) &&
// !TextUtils.isEmpty(dateFirstString)){
// Log.i(TAG, "onClick: new Image uploaded");
// new FirebaseClass(getContext(),filePath,new FirebaseClass.Response(){
// @Override
// public void processFinish(Uri output) {
// Log.i(TAG, "processFinish: ");
// if (output != null){
// picUri = output;
// writeDriverToDb();
// fragmentManager.popBackStack();
// }
//
// }
// }).uploadImage(DRIVERS_LICENSE_FIREBASE,DRIVERS_LICENSE_FIREBASE + getDateStamp());
// Log.i(TAG, "onClick: pushing with same image");
// writeDriverToDb();
//todo: set error if invalid
// }else {
// if (TextUtils.isEmpty(driverForename)){
// forenames.setError("Field required");
// }
// if (TextUtils.isEmpty(AddressString)){
// address.setError("Field required");
// }
// if (TextUtils.isEmpty(postCodeString)){
// postcode.setError("Field required");
// }
// if (TextUtils.isEmpty(dobString)){
// dob.setError("Field required");
// }
// if (TextUtils.isEmpty(niString)){
// ni.setError("Field required");
// }
// if (TextUtils.isEmpty(dateFirstString)){
// dateFirst.setError("Field required");
// }
// }
}
};
private void publishObject(){
//TODO: publish vehicle object
// PrivateHireObject privateHireObject = new PrivateHireObject(picUri.toString(),Ph_numberString,Ph_exprString);
//
// mDatabase.child(USER_FIREBASE).child(auth.getCurrentUser().getUid()).child(DRIVER_FIREBASE).child(PRIVATE_HIRE_FIREBASE)
// .setValue(privateHireObject).addOnCompleteListener(new OnCompleteListener<Void>() {
// @Override
// public void onComplete(@NonNull Task<Void> task) {
//
// Log.i(TAG, "onComplete: publish = " + task.isSuccessful());
// }
// });
}
}

View File

@@ -1,31 +0,0 @@
package h_mal.appttude.com.driver;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class logbookFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_logbook, container, false);
return view;
}
}

View File

@@ -1,257 +0,0 @@
package h_mal.appttude.com.driver;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.Continuation;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.UserProfileChangeRequest;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.squareup.picasso.Picasso;
import java.io.IOException;
import java.util.UUID;
import static android.app.Activity.RESULT_OK;
import static h_mal.appttude.com.driver.MainActivity.auth;
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
import static h_mal.appttude.com.driver.MainActivity.setupDrawer;
public class profileFragment extends Fragment {
private String TAG = this.getClass().getSimpleName();
private final int PICK_IMAGE_REQUEST = 70;
private ImageView imageView;
private EditText email;
private EditText name;
FirebaseStorage storage;
StorageReference storageReference;
private FirebaseUser user;
private Uri filePath;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
user = auth.getCurrentUser();
storage = FirebaseStorage.getInstance();
storageReference = storage.getReference();
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_profile, container, false);
imageView = view.findViewById(R.id.profile_pic);
email = view.findViewById(R.id.profile_email);
name = view.findViewById(R.id.profile_name);
TextView upload = view.findViewById(R.id.uploadprofilepic);
upload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chooseImage();
}
});
retrieveProfile();
Button button = view.findViewById(R.id.submit_profile);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateProfile();
}
});
return view;
}
public void retrieveProfile(){
email.setText(user.getEmail());
if (user.getDisplayName() != null){
name.setText(user.getDisplayName());
}
if(imageView != null){
Picasso.get()
.load(user.getPhotoUrl())
.placeholder(R.mipmap.ic_launcher_round)
.into(imageView);
}
}
private void updateProfile(){
UserProfileChangeRequest.Builder profileUpdatesBuilder = new UserProfileChangeRequest.Builder();
String profileName = name.getText().toString().trim();
if (!TextUtils.isEmpty(profileName)){
profileUpdatesBuilder.setDisplayName(profileName);
}
if (filePath != null ||
imageView.getDrawable().getConstantState() != getResources().getDrawable( R.mipmap.ic_launcher_round).getConstantState()){
profileUpdatesBuilder.setPhotoUri(filePath);
}
UserProfileChangeRequest profileUpdates = profileUpdatesBuilder.build();
user.updateProfile(profileUpdates)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "User profile updated.");
setupDrawer();
fragmentManager.popBackStack();
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getContext(), "Update Failed", Toast.LENGTH_SHORT).show();
}
});
}
private void uploadImage() {
if(filePath != null)
{
final ProgressDialog progressDialog = new ProgressDialog(getContext());
progressDialog.setTitle("Uploading...");
progressDialog.show();
final StorageReference ref = storageReference.child("images/"+ user.getUid() + "/profile_pic");
UploadTask uploadTask = ref.putFile(filePath);
uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0*taskSnapshot.getBytesTransferred()/taskSnapshot
.getTotalByteCount());
progressDialog.setMessage("Uploaded "+(int)progress+"%");
}
}).continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
// Continue with the task to get the download URL
return ref.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
filePath = task.getResult();
progressDialog.dismiss();
Toast.makeText(getContext(), "Uploaded Successfully", Toast.LENGTH_SHORT).show();
Log.i(TAG, "onComplete: uploaded Successful uri: " + task.getResult());
} else {
progressDialog.dismiss();
Toast.makeText(getContext(), "Failed to upload", Toast.LENGTH_SHORT).show();
Log.i(TAG, "onComplete: failed to get url");
}
}
});
// uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
// @Override
// public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//
// }
// })
// .addOnFailureListener(new OnFailureListener() {
// @Override
// public void onFailure(@NonNull Exception e) {
//
// }
// })
// .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
// @Override
// public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
// double progress = (100.0*taskSnapshot.getBytesTransferred()/taskSnapshot
// .getTotalByteCount());
// progressDialog.setMessage("Uploaded "+(int)progress+"%");
// }
// });
}
}
private void chooseImage() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
&& data != null && data.getData() != null )
{
filePath = data.getData();
Bitmap bitmap = null;
try {
bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), filePath);
imageView.setImageBitmap(bitmap);
}
catch (IOException e)
{
e.printStackTrace();
}
finally {
if (bitmap != null){
uploadImage();
}
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FFffffff"
android:pathData="M20.54,5.23l-1.39,-1.68C18.88,3.21 18.47,3 18,3H6c-0.47,0 -0.88,0.21 -1.16,0.55L3.46,5.23C3.17,5.57 3,6.02 3,6.5V19c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V6.5c0,-0.48 -0.17,-0.93 -0.46,-1.27zM12,17.5L6.5,12H10v-2h4v2h3.5L12,17.5zM5.12,5l0.81,-1h12l0.94,1H5.12z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#ffffff"
android:pathData="M19,9h-4V3H9v6H5l7,7 7,-7zM5,18v2h14v-2H5z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M18.92,6.01C18.72,5.42 18.16,5 17.5,5L15,5L15,3L9,3v2L6.5,5c-0.66,0 -1.21,0.42 -1.42,1.01L3,12v8c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-1h12v1c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-8l-2.08,-5.99zM6.5,16c-0.83,0 -1.5,-0.67 -1.5,-1.5S5.67,13 6.5,13s1.5,0.67 1.5,1.5S7.33,16 6.5,16zM17.5,16c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5 1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5zM5,11l1.5,-4.5h11L19,11L5,11z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M12,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM12,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M19.43,12.98c0.04,-0.32 0.07,-0.64 0.07,-0.98s-0.03,-0.66 -0.07,-0.98l2.11,-1.65c0.19,-0.15 0.24,-0.42 0.12,-0.64l-2,-3.46c-0.12,-0.22 -0.39,-0.3 -0.61,-0.22l-2.49,1c-0.52,-0.4 -1.08,-0.73 -1.69,-0.98l-0.38,-2.65C14.46,2.18 14.25,2 14,2h-4c-0.25,0 -0.46,0.18 -0.49,0.42l-0.38,2.65c-0.61,0.25 -1.17,0.59 -1.69,0.98l-2.49,-1c-0.23,-0.09 -0.49,0 -0.61,0.22l-2,3.46c-0.13,0.22 -0.07,0.49 0.12,0.64l2.11,1.65c-0.04,0.32 -0.07,0.65 -0.07,0.98s0.03,0.66 0.07,0.98l-2.11,1.65c-0.19,0.15 -0.24,0.42 -0.12,0.64l2,3.46c0.12,0.22 0.39,0.3 0.61,0.22l2.49,-1c0.52,0.4 1.08,0.73 1.69,0.98l0.38,2.65c0.03,0.24 0.24,0.42 0.49,0.42h4c0.25,0 0.46,-0.18 0.49,-0.42l0.38,-2.65c0.61,-0.25 1.17,-0.59 1.69,-0.98l2.49,1c0.23,0.09 0.49,0 0.61,-0.22l2,-3.46c0.12,-0.22 0.07,-0.49 -0.12,-0.64l-2.11,-1.65zM12,15.5c-1.93,0 -3.5,-1.57 -3.5,-3.5s1.57,-3.5 3.5,-3.5 3.5,1.57 3.5,3.5 -1.57,3.5 -3.5,3.5z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#ffffff"
android:pathData="M3,18h6v-2L3,16v2zM3,6v2h18L21,6L3,6zM3,13h12v-2L3,11v2z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -3,7 +3,7 @@
<gradient
android:angle="135"
android:centerColor="@color/colorAccent"
android:endColor="#00695C"
android:startColor="@color/colorAccent"
android:endColor="@color/colour_four"
android:startColor="@color/colour_siz"
android:type="linear" />
</shape>

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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=".User.RegisterActivity">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/pb"
android:visibility="gone"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="12dp"
android:layout_centerInParent="true">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/reset_pw"
style="@style/edittexttheme"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:hint="Enter Emil Address"
android:inputType="textEmailAddress"
android:maxLines="1" />
</android.support.design.widget.TextInputLayout>
</LinearLayout>
<Button
android:id="@+id/reset_pw_sign_up"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_margin="12dp"
android:background="@drawable/cardviewoutline"
android:text="Sign Up"
android:textColor="#91ddff"
android:textStyle="bold" />
</RelativeLayout>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ImageSelectorActivity">
</android.support.constraint.ConstraintLayout>

View File

@@ -10,7 +10,8 @@
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:background="@drawable/cars"
tools:context=".LoginActivity">
android:importantForAutofill="yes"
tools:context=".User.LoginActivity">
<!-- Login progress -->
@@ -41,6 +42,7 @@
android:layout_height="wrap_content"
android:layout_marginLeft="18dp"
android:layout_marginRight="18dp"
android:importantForAutofill="yes"
android:autofilledHighlight="@android:color/transparent"
android:ems="10"
android:hint="@string/prompt_email"
@@ -69,6 +71,7 @@
android:layout_height="wrap_content"
android:layout_marginLeft="18dp"
android:layout_marginRight="18dp"
android:importantForAutofill="yes"
android:autofilledHighlight="@android:color/transparent"
android:ems="10"
android:hint="@string/prompt_password"
@@ -84,17 +87,45 @@
<!--</android.support.design.widget.TextInputLayout>-->
</android.support.v7.widget.CardView>
<TextView
<LinearLayout
android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginTop="12dp"
android:layout_marginRight="18dp"
android:text="Sign up"
android:textColor="#03a9f4"
android:textSize="18sp"
android:textStyle="bold" />
android:layout_marginLeft="18dp">
<TextView
android:id="@+id/forgot"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_weight="1"
android:shadowColor="@color/colour_five"
android:shadowDx="1"
android:shadowDy="1"
android:shadowRadius="1"
android:text="Forgot Password"
android:textColor="@color/colour_seven"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/register_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:paddingRight="2dp"
android:shadowColor="@color/colour_five"
android:shadowDx="1"
android:shadowDy="1"
android:shadowRadius="1"
android:text="Sign up"
android:textColor="@color/colour_seven"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>

View File

@@ -20,6 +20,24 @@
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
app:menu="@menu/activity_main_drawer" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:clickable="true"
android:orientation="vertical">
<TextView
android:id="@+id/logout"
android:layout_width="match_parent"
android:layout_height="48dp"
android:gravity="center"
android:text="Logout"
android:textColor="@color/colorPrimary"
android:textStyle="bold" />
</LinearLayout>
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>

View File

@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".RegisterActivity">
tools:context=".User.RegisterActivity">
<ProgressBar
android:layout_width="wrap_content"
@@ -19,6 +19,23 @@
android:padding="12dp"
android:layout_centerInParent="true">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/name_register"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:hint="Enter Full Name"
android:inputType="textEmailAddress"
android:maxLines="1"
style="@style/edittexttheme" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

View File

@@ -26,6 +26,11 @@
android:layout_height="match_parent"
android:id="@+id/container">
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</FrameLayout>
</LinearLayout>

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<FrameLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:id="@+id/approval_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center"
android:textSize="22sp"
android:textStyle="bold"
tools:text="Private Hire License" />
</FrameLayout>
<ImageView
android:id="@+id/approval_iv"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_marginLeft="12dp"
android:layout_marginRight="6dp"
android:padding="6dp"
tools:src="@drawable/pending" />
<ImageView
android:id="@+id/archive_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="6dp"
android:tint="@color/colour_three"
android:src="@drawable/ic_archive_black_24dp" />
</LinearLayout>

View File

@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="6dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:background="@color/colour_siz"
android:orientation="vertical">
<TextView
android:id="@+id/date_archived"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginTop="12dp"
android:layout_marginRight="12dp"
android:textColor="@color/colour_two"
android:textStyle="bold"
tools:text="12/12/2019" />
<include
android:id="@+id/image_pager"
layout="@layout/multi_image_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:layout_marginTop="12dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="12dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="12dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Expiry"
android:textColor="@color/colour_four"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/exp_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="12/12/2019" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Insurer"
android:textColor="@color/colour_four"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/archive_insurer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Admiral" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>

View File

@@ -0,0 +1,221 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="4dp"
android:paddingBottom="4dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colour_siz"
android:paddingBottom="12dp">
<LinearLayout
android:id="@+id/view_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_margin="12dp">
<TextView
android:id="@+id/number_plate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_weight="1"
android:textColor="@color/colour_one"
android:textStyle="bold"
tools:text="PR11 CKK" />
<TextView
android:id="@+id/date_archived"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:textColor="@color/colour_one"
android:textStyle="bold"
tools:text="12/04/2019" />
</LinearLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/view_1">
<LinearLayout
android:id="@+id/car_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginRight="6dp"
android:layout_toLeftOf="@id/divider"
android:gravity="right"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:gravity="right"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Make/Model"
android:textColor="@color/colour_four"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/car_text_arch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Honda Jazz" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:gravity="right"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Colour"
android:textColor="@color/colour_four"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/car_colour"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="right"
tools:text="Blue" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:gravity="right"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Seized"
android:textColor="@color/colour_four"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/seized"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
tools:text="No" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginRight="3dp"
android:layout_weight="1"
android:gravity="right"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Date Started"
android:textColor="@color/colour_four"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/first_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="06/06/2017" />
</LinearLayout>
</LinearLayout>
<View
android:id="@+id/divider"
android:layout_width="2dp"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/car_holder"
android:layout_centerHorizontal="true"
android:background="@color/colour_one" />
<LinearLayout
android:id="@+id/right"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="6dp"
android:layout_marginRight="12dp"
android:layout_toRightOf="@id/divider"
android:gravity="left"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:gravity="left"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Keepers Name"
android:textColor="@color/colour_two"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/keeper_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="First Lastname" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:gravity="left"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Keepers Address"
android:textColor="@color/colour_two"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/keeper_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
tools:text="first line of address \nSecond line of address\nArea name\nSS11 4DD" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".MainActivity"
tools:showIn="@layout/app_bar_main">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

View File

@@ -0,0 +1,16 @@
<?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=".Archive.ArchiveFragment">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@android:color/transparent"
android:id="@+id/archive_listview">
</ListView>
</FrameLayout>

View File

@@ -3,34 +3,50 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DriverLicenseFragment">
<ImageView
android:id="@+id/driversli_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/dl_view"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="12dp"
android:layout_marginBottom="12dp"
android:scaleType="centerInside"
android:adjustViewBounds="true"
tools:src="@drawable/bg" />
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".Driver.DriverLicenseFragment">
<LinearLayout
android:id="@+id/dl_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:orientation="vertical"
android:padding="12dp"
android:id="@+id/dl_view"
android:layout_centerInParent="true">
android:paddingLeft="12dp"
android:paddingTop="12dp"
android:paddingRight="12dp">
<android.support.v7.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="12dp"
app:cardCornerRadius="28dp"
app:cardElevation="0dp">
<ImageView
android:id="@+id/driversli_img"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_alignParentLeft="true"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
tools:src="@drawable/choice_img_round" />
<ProgressBar
android:id="@+id/pb_dl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone" />
</android.support.v7.widget.CardView>
<TextView
android:id="@+id/upload_lic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/lin_lay"
android:layout_alignParentLeft="true"
android:layout_marginBottom="12dp"
android:background="@drawable/round_edit_text"
@@ -48,14 +64,14 @@
<EditText
android:id="@+id/lic_no"
style="@style/edittexttheme"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:hint="Drivers License no."
android:inputType="none"
android:maxLines="1"
style="@style/edittexttheme" />
android:maxLines="1" />
</android.support.design.widget.TextInputLayout>
@@ -65,16 +81,19 @@
<EditText
android:id="@+id/lic_expiry"
style="@style/edittexttheme"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:focusable="false"
android:hint="Drivers License Expiry"
android:inputType="date"
android:maxLines="1"
style="@style/edittexttheme"/>
android:maxLines="1" />
</android.support.design.widget.TextInputLayout>
</LinearLayout>

View File

@@ -0,0 +1,154 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".Driver.homeDriverFragment"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:id="@+id/driver_prof"
style="@style/cardview_theme"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_margin="16dp">
<ImageView
android:src="@drawable/cardviewoutline"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:orientation="horizontal">
<ImageView
android:id="@+id/approval_dp"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="right|center"
android:layout_marginLeft="16dp"
android:layout_marginRight="8dp"
android:padding="6dp"
tools:src="@android:drawable/presence_online" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Driver Profile"
android:textSize="26sp" />
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/private_hire"
style="@style/cardview_theme"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_margin="16dp"
app:cardBackgroundColor="@android:color/transparent">
<ImageView
android:src="@drawable/cardviewoutline"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center|left">
<ImageView
android:id="@+id/approval_ph"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="right|center"
android:layout_marginLeft="16dp"
android:layout_marginRight="8dp"
android:padding="6dp"
tools:src="@android:drawable/presence_online" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="6dp"
android:text="Private Hire License"
android:textSize="22sp" />
<TextView
android:id="@+id/ph_button_exp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Expires: 20/12/2019"/>
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/drivers_license"
style="@style/cardview_theme"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_margin="16dp"
app:cardBackgroundColor="@android:color/transparent">
<ImageView
android:src="@drawable/cardviewoutline"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center|left">
<ImageView
android:id="@+id/approval_dl"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="right|center"
android:layout_marginLeft="16dp"
android:layout_marginRight="8dp"
android:padding="6dp"
tools:src="@android:drawable/presence_online" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Drivers License"
android:textSize="22sp" />
<TextView
android:id="@+id/dl_button_exp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
tools:text="Expires: 20/12/2019"/>
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>

View File

@@ -3,8 +3,9 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
tools:context=".driverProfileFragment">
tools:context=".Driver.DriverProfileFragment">
<LinearLayout
android:layout_width="match_parent"
@@ -12,13 +13,30 @@
android:orientation="vertical"
android:padding="12dp">
<ImageView
android:id="@+id/driver_pic"
android:layout_width="100dp"
android:layout_height="100dp"
<android.support.v7.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="12dp"
tools:src="@mipmap/ic_launcher_round" />
app:cardCornerRadius="28dp"
app:cardElevation="0dp">
<ImageView
android:id="@+id/driver_pic"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_alignParentLeft="true"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
tools:src="@drawable/choice_img_round" />
<ProgressBar
android:id="@+id/pb_dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_gravity="center" />
</android.support.v7.widget.CardView>
<TextView
android:id="@+id/add_driver_pic"
@@ -29,6 +47,7 @@
android:ems="10"
android:padding="12dp"
android:selectAllOnFocus="true"
android:gravity="center"
android:singleLine="true"
android:text="Add Driver photo"
android:textColorHighlight="#608d91" />
@@ -146,50 +165,6 @@
</android.support.design.widget.TextInputLayout>
<TextView
android:id="@+id/private_hire"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:background="@drawable/round_edit_text"
android:ems="10"
android:padding="12dp"
android:selectAllOnFocus="true"
android:singleLine="true"
android:text="Add Private Hire License"
android:textColorHighlight="#608d91" />
<TextView
android:id="@+id/retrievedPH"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:text="Private hire number : 254215751 \nExpiry Date: 22/10/2019" />
<TextView
android:id="@+id/drivers_li"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:background="@drawable/round_edit_text"
android:ems="10"
android:padding="12dp"
android:selectAllOnFocus="true"
android:singleLine="true"
android:text="Add Drivers License"
android:textColorHighlight="#608d91" />
<TextView
android:id="@+id/retrieved_dl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:text="Drivers license number : AGSCE83858HP4DB \nExpiry Date: 22/10/2019" />
<Button
android:id="@+id/submit_driver"
style="?android:attr/borderlessButtonStyle"

View File

@@ -1,140 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
android:orientation="vertical"
android:layout_margin="12dp"
tools:context=".FindAddressFragment">
<TextView
android:id="@+id/findaddress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/lin_lay"
android:layout_alignParentLeft="true"
android:background="@drawable/round_edit_text"
android:ems="10"
android:gravity="center"
android:padding="12dp"
android:layout_marginBottom="12dp"
android:selectAllOnFocus="true"
android:singleLine="true"
android:text="Find Address"
android:textColorHighlight="#608d91" />
<Button
android:id="@+id/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_margin="12dp"
android:background="@drawable/cardviewoutline"
android:text="@string/submit"
android:textColor="@android:color/black"
android:textStyle="bold"
style="?android:attr/borderlessButtonStyle" />
<!--<RelativeLayout-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content">-->
<!--<view-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="1dp"-->
<!--android:layout_alignParentLeft="true"-->
<!--android:layout_centerVertical="true"-->
<!--android:layout_toLeftOf="@id/or"-->
<!--android:background="#000000" />-->
<!--<TextView-->
<!--android:id="@+id/or"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_centerHorizontal="true"-->
<!--android:layout_centerVertical="true"-->
<!--android:layout_margin="4dp"-->
<!--android:textColor="#000000"-->
<!--android:textStyle="bold"-->
<!--android:text="OR" />-->
<!--<view-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="1dp"-->
<!--android:layout_alignParentRight="true"-->
<!--android:layout_centerVertical="true"-->
<!--android:layout_toRightOf="@id/or"-->
<!--android:background="#000000" />-->
<!--</RelativeLayout>-->
<!--<TextView-->
<!--android:id="@+id/entermanually"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:background="@drawable/round_edit_text"-->
<!--android:ems="10"-->
<!--android:gravity="center"-->
<!--android:padding="12dp"-->
<!--android:selectAllOnFocus="true"-->
<!--android:singleLine="true"-->
<!--android:text="Enter Address Manually"-->
<!--android:textColorHighlight="#608d91" />-->
<LinearLayout
android:id="@+id/lin_lay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:orientation="vertical">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/address"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:gravity="top|left"
android:hint="Address"
android:inputType="textMultiLine"
android:lines="4"
android:maxLines="7"
android:minLines="4"
android:selectAllOnFocus="true"
android:singleLine="true"
android:textColorHighlight="#608d91" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/postcode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:hint="Postcode"
android:inputType="none"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:textColorHighlight="#608d91" />
</android.support.design.widget.TextInputLayout>
</LinearLayout>
</RelativeLayout>

View File

@@ -4,27 +4,9 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".homeFragment"
tools:context=".Driver.homeDriverFragment"
android:orientation="vertical">
<!--<android.support.v7.widget.CardView-->
<!--android:id="@+id/driver"-->
<!--style="@style/cardview_theme"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="0dp"-->
<!--android:layout_margin="16dp"-->
<!--android:layout_weight="1"-->
<!--app:background="@drawable/cardviewoutline">-->
<!--<TextView-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_gravity="center"-->
<!--android:text="Driver Profile"-->
<!--android:textSize="22sp" />-->
<!--</android.support.v7.widget.CardView>-->
<Button
android:layout_width="match_parent"
android:layout_height="0dp"

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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=".SuperUser.homeSuperUserFragment">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/list_view_super"
tools:listitem="@layout/list_item_layout">
</ListView>
</RelativeLayout>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
android:background="#ffffff">
<com.github.chrisbanes.photoview.PhotoView
android:id="@+id/photo_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
tools:src="@drawable/cars"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/download_pic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:src="@drawable/ic_file_download_black_24dp" />
</RelativeLayout>

View File

@@ -1,22 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
android:orientation="vertical">
<LinearLayout
android:id="@+id/ins_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="12dp"
android:layout_centerInParent="true">
android:paddingLeft="12dp"
android:paddingTop="12dp"
android:paddingRight="12dp">
<include
android:id="@+id/image_pager"
layout="@layout/multi_image_selector"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_above="@+id/ins_view"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:layout_marginTop="12dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="12dp" />
<TextView
android:id="@+id/uploadInsurance"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/lin_lay"
android:layout_alignParentLeft="true"
android:layout_marginBottom="12dp"
android:background="@drawable/round_edit_text"
@@ -47,25 +63,6 @@
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/ins_no"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:hint="Insurance No.:"
android:inputType="date"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:textColorHighlight="#608d91" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
@@ -74,8 +71,8 @@
android:id="@+id/insurance_exp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:focusable="false"
android:hint="Insurance expiry:"
android:inputType="date"
android:maxLines="1"
@@ -88,7 +85,8 @@
<Button
android:id="@+id/submit"
android:id="@+id/submit_ins"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
@@ -98,8 +96,9 @@
android:background="@drawable/cardviewoutline"
android:text="@string/submit"
android:textColor="@android:color/black"
android:textStyle="bold"
style="?android:attr/borderlessButtonStyle" />
android:textStyle="bold" />
</RelativeLayout>

View File

@@ -1,9 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout 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=".logbookFragment">
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".Driver.logbookFragment">
<LinearLayout
android:id="@+id/lb_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="12dp"
android:layout_alignParentTop="true">
<android.support.v7.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="12dp"
app:cardCornerRadius="28dp"
app:cardElevation="0dp">
<ImageView
android:id="@+id/log_book_img"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_alignParentLeft="true"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
tools:src="@drawable/choice_img_round" />
<ProgressBar
android:id="@+id/pb_lb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_gravity="center" />
</android.support.v7.widget.CardView>
<TextView
android:id="@+id/upload_lb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/lin_lay"
android:layout_alignParentLeft="true"
android:layout_marginBottom="12dp"
android:background="@drawable/round_edit_text"
android:ems="10"
android:gravity="center"
android:padding="12dp"
android:selectAllOnFocus="true"
android:singleLine="true"
android:text="Upload logbook"
android:textColorHighlight="#608d91" />
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/v5c_no"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:hint="V5C number"
android:inputType="none"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:textColorHighlight="#608d91" />
</android.support.design.widget.TextInputLayout>
</LinearLayout>
</FrameLayout>
<Button
android:id="@+id/submit_lb"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_margin="12dp"
android:background="@drawable/cardviewoutline"
android:text="@string/submit"
android:textColor="@android:color/black"
android:textStyle="bold" />
</RelativeLayout>

View File

@@ -3,50 +3,59 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
tools:context=".PrivateHireLicenseFragment">
tools:context=".Driver.PrivateHireLicenseFragment">
<LinearLayout
android:id="@+id/mot_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="12dp"
android:layout_centerInParent="true">
android:layout_alignParentTop="true">
<android.support.v7.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="12dp"
app:cardCornerRadius="28dp"
app:cardElevation="0dp">
<ImageView
android:id="@+id/mot_img"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_alignParentLeft="true"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
tools:src="@drawable/choice_img_round" />
<ProgressBar
android:id="@+id/pb_mot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_gravity="center" />
</android.support.v7.widget.CardView>
<TextView
android:id="@+id/uploadmot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/lin_lay"
android:layout_alignParentLeft="true"
android:layout_marginBottom="12dp"
android:background="@drawable/round_edit_text"
android:ems="10"
android:gravity="center"
android:padding="12dp"
android:layout_marginBottom="12dp"
android:selectAllOnFocus="true"
android:singleLine="true"
android:text="Upload M.O.T"
android:textColorHighlight="#608d91" />
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/mot_no"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:hint="MOT Number"
android:inputType="none"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:textColorHighlight="#608d91" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
@@ -57,6 +66,7 @@
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:focusable="false"
android:hint="MOT Expiry"
android:inputType="date"
android:maxLines="1"
@@ -69,7 +79,8 @@
<Button
android:id="@+id/submit"
android:id="@+id/submit_mot"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
@@ -79,8 +90,7 @@
android:background="@drawable/cardviewoutline"
android:text="@string/submit"
android:textColor="@android:color/black"
android:textStyle="bold"
style="?android:attr/borderlessButtonStyle" />
android:textStyle="bold" />
</RelativeLayout>

View File

@@ -5,26 +5,54 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".PrivateHireLicenseFragment">
tools:context=".Driver.PrivateHireLicenseFragment">
<LinearLayout
android:id="@+id/ph_view_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:orientation="vertical"
android:padding="12dp"
android:layout_centerInParent="true">
android:paddingLeft="12dp"
android:paddingTop="12dp"
android:paddingRight="12dp">
<android.support.v7.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="12dp"
app:cardCornerRadius="28dp"
app:cardElevation="0dp">
<ImageView
android:id="@+id/imageView2"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_alignParentLeft="true"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
tools:src="@drawable/choice_img_round" />
<ProgressBar
android:id="@+id/pb_priv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone" />
</android.support.v7.widget.CardView>
<TextView
android:id="@+id/uploadphlic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/lin_lay"
android:layout_alignParentLeft="true"
android:layout_marginBottom="12dp"
android:background="@drawable/round_edit_text"
android:ems="10"
android:gravity="center"
android:padding="12dp"
android:layout_marginBottom="12dp"
android:selectAllOnFocus="true"
android:singleLine="true"
android:text="Upload Private hire photo"
@@ -57,8 +85,8 @@
android:id="@+id/ph_expiry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:focusable="false"
android:hint="Private Hire License Expiry"
android:inputType="date"
android:maxLines="1"
@@ -84,18 +112,7 @@
android:textStyle="bold"
style="?android:attr/borderlessButtonStyle" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/ph_view_holder"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="12dp"
android:layout_marginBottom="12dp"
android:scaleType="centerInside"
android:adjustViewBounds="true"
tools:src="@drawable/bg" />
</RelativeLayout>

View File

@@ -0,0 +1,118 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
android:orientation="vertical"
tools:context=".Driver.PrivateHireLicenseFragment">
<LinearLayout
android:id="@+id/ph_view_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:orientation="vertical"
android:paddingLeft="12dp"
android:paddingTop="12dp"
android:paddingRight="12dp">
<android.support.v7.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="12dp"
app:cardCornerRadius="28dp"
app:cardElevation="0dp">
<ImageView
android:id="@+id/imageView2"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_alignParentLeft="true"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
tools:src="@drawable/choice_img_round" />
<ProgressBar
android:id="@+id/pb_priv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone" />
</android.support.v7.widget.CardView>
<TextView
android:id="@+id/uploadphlic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/lin_lay"
android:layout_alignParentLeft="true"
android:layout_marginBottom="12dp"
android:background="@drawable/round_edit_text"
android:ems="10"
android:gravity="center"
android:padding="12dp"
android:selectAllOnFocus="true"
android:singleLine="true"
android:text="Upload Private hire photo"
android:textColorHighlight="#608d91" />
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/ph_no"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:hint="Private Hire Vehicle License no."
android:inputType="none"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:textColorHighlight="#608d91" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/ph_expiry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:focusable="false"
android:hint="Private Hire License Expiry"
android:inputType="date"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:textColorHighlight="#608d91" />
</android.support.design.widget.TextInputLayout>
</LinearLayout>
<Button
android:id="@+id/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_margin="12dp"
android:background="@drawable/cardviewoutline"
android:text="@string/submit"
android:textColor="@android:color/black"
android:textStyle="bold"
style="?android:attr/borderlessButtonStyle" />
</RelativeLayout>

View File

@@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".PrivateHireLicenseFragment">
tools:context=".Driver.PrivateHireLicenseFragment">
<LinearLayout
android:id="@+id/ph_view_holder"
@@ -16,11 +16,9 @@
android:layout_centerInParent="true">
<TextView
android:id="@+id/uploadprofilepic"
android:id="@+id/change_profile_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/lin_lay"
android:layout_alignParentLeft="true"
android:layout_marginBottom="12dp"
android:background="@drawable/round_edit_text"
android:ems="10"
@@ -28,44 +26,36 @@
android:padding="12dp"
android:selectAllOnFocus="true"
android:singleLine="true"
android:text="Upload new profile picture"
android:text="Change Profile Name"
android:textColorHighlight="#608d91" />
<android.support.design.widget.TextInputLayout
<TextView
android:id="@+id/change_email"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:background="@drawable/round_edit_text"
android:ems="10"
android:gravity="center"
android:padding="12dp"
android:selectAllOnFocus="true"
android:singleLine="true"
android:text="Change Email Address"
android:textColorHighlight="#608d91" />
<EditText
android:id="@+id/profile_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:hint="Profile Name"
android:inputType="textPersonName"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:textColorHighlight="#608d91" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
<TextView
android:id="@+id/change_pw"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/profile_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:ems="10"
android:hint="Profile Email"
android:inputType="textEmailAddress"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:textColorHighlight="#608d91" />
</android.support.design.widget.TextInputLayout>
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:background="@drawable/round_edit_text"
android:ems="10"
android:gravity="center"
android:padding="12dp"
android:selectAllOnFocus="true"
android:singleLine="true"
android:text="Change Password"
android:textColorHighlight="#608d91" />
</LinearLayout>
@@ -88,17 +78,5 @@
android:textColor="@android:color/black"
android:textStyle="bold" />
<ImageView
android:id="@+id/profile_pic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/ph_view_holder"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="12dp"
android:layout_marginBottom="12dp"
android:adjustViewBounds="true"
android:src="@mipmap/ic_launcher" />
</RelativeLayout>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
android:id="@+id/rel"
tools:context=".SuperUser.UserMainFragment">
<!--<ListView-->
<!--android:id="@+id/approvals_list"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_alignParentStart="true"-->
<!--android:layout_alignParentTop="true"-->
<!--android:orientation="vertical"-->
<!--android:padding="20dp"-->
<!--tools:listitem="@layout/approval_list_item">-->
<!--</ListView>-->
<GridView
android:id="@+id/approvals_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="2"
android:rowCount="4"
android:stretchMode="columnWidth"
tools:listitem="@layout/approval_list_grid_item">
</GridView>
</RelativeLayout>

View File

@@ -0,0 +1,253 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:id="@+id/vehicle_prof"
style="@style/cardview_theme"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_margin="16dp">
<ImageView
android:src="@drawable/cardviewoutline"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:orientation="horizontal">
<ImageView
android:id="@+id/approval_vehicle"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="right|center"
android:layout_marginLeft="16dp"
android:layout_marginRight="8dp"
android:padding="6dp"
tools:src="@android:drawable/presence_online" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Vehicle Profile"
android:textSize="26sp" />
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/insurance"
style="@style/cardview_theme"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_margin="16dp"
app:cardBackgroundColor="@android:color/transparent">
<ImageView
android:src="@drawable/cardviewoutline"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:orientation="horizontal">
<ImageView
android:id="@+id/approval_insurance"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="right|center"
android:layout_marginLeft="16dp"
android:layout_marginRight="8dp"
android:padding="6dp"
tools:src="@drawable/approved" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Insurance"
android:textSize="22sp" />
<TextView
android:id="@+id/ins_exp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Expires: 20/12/2019" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/mot"
style="@style/cardview_theme"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_margin="16dp"
app:cardBackgroundColor="@android:color/transparent">
<ImageView
android:src="@drawable/cardviewoutline"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="left|center"
android:orientation="horizontal">
<ImageView
android:id="@+id/approval_mot"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="right|center"
android:layout_marginLeft="16dp"
android:layout_marginRight="8dp"
android:padding="6dp"
tools:src="@android:drawable/presence_online" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="right"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="M.O.T"
android:textSize="22sp" />
<TextView
android:id="@+id/mot_exp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="Expires: 20/12/2019" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/logbook"
style="@style/cardview_theme"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_margin="16dp"
app:cardBackgroundColor="@android:color/transparent">
<ImageView
android:src="@drawable/cardviewoutline"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:orientation="horizontal">
<ImageView
android:id="@+id/approval_lb"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="right|center"
android:layout_marginLeft="16dp"
android:layout_marginRight="8dp"
android:padding="6dp"
tools:src="@android:drawable/presence_online" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="Logbook"
android:textSize="22sp" />
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/private_hire_vehicle_license"
style="@style/cardview_theme"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="16dp"
android:layout_weight="1"
app:cardBackgroundColor="@android:color/transparent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/cardviewoutline" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:orientation="horizontal">
<ImageView
android:id="@+id/approval_ph_car"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="right|center"
android:layout_marginLeft="16dp"
android:layout_marginRight="8dp"
android:padding="6dp"
tools:src="@android:drawable/presence_online" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="P/H Vehicle License"
android:textSize="22sp" />
<TextView
android:id="@+id/ph_car_exp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
tools:text="Expires: 20/12/2019" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>

View File

@@ -22,7 +22,7 @@
android:layout_marginBottom="12dp"
android:ems="10"
android:hint="Car reg"
android:inputType="none"
android:inputType="textCapCharacters"
android:maxLines="1"
style="@style/edittexttheme" />
@@ -131,7 +131,7 @@
android:layout_marginBottom="12dp"
android:ems="10"
android:hint="Postcode of Keeper"
android:inputType="none"
android:inputType="none|textCapCharacters"
android:maxLines="1"
android:padding="12dp"
android:selectAllOnFocus="true"
@@ -150,6 +150,7 @@
android:layout_marginBottom="12dp"
android:ems="10"
android:hint="Start date"
android:focusable="false"
android:inputType="date"
android:maxLines="1"
style="@style/edittexttheme" />
@@ -165,77 +166,14 @@
android:padding="12dp"
android:textSize="18sp"/>
<TextView
android:id="@+id/mot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:background="@drawable/round_edit_text"
android:ems="10"
android:padding="12dp"
android:selectAllOnFocus="true"
android:singleLine="true"
android:text="Add MOT details"
android:textColorHighlight="#608d91" />
<TextView
android:id="@+id/retrievedmot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:padding="12dp"
android:text="MOT number : 254215751 \nExpiry Date: 22/10/2019" />
<TextView
android:id="@+id/insurance"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:background="@drawable/round_edit_text"
android:ems="10"
android:padding="12dp"
android:selectAllOnFocus="true"
android:singleLine="true"
android:text="Add insurance details"
android:textColorHighlight="#608d91" />
<TextView
android:id="@+id/insurance_retrieved"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:padding="12dp"
android:text="Insurer : Admiral \nInsurance No.: 483sdf4623\nExpiry Date: 22/10/2019"/>
<TextView
android:id="@+id/log_book"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:background="@drawable/round_edit_text"
android:ems="10"
android:padding="12dp"
android:selectAllOnFocus="true"
android:singleLine="true"
android:text="Add Log Book"
android:textColorHighlight="#608d91" />
<TextView
android:id="@+id/log_book_retrieved"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:padding="12dp"
android:text="V5C number: 483sdf4623"/>
<Button
android:id="@+id/submit_vehicle"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="22dp"
android:layout_gravity="right"
android:layout_marginBottom="12dp"
android:background="@drawable/cardviewoutline"
android:text="@string/submit"
android:textColor="#91ddff"

View File

@@ -0,0 +1,41 @@
<?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="wrap_content"
android:layout_height="match_parent"
tools:layout_height="200dp">
<FrameLayout
android:id="@+id/frame_lay"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:adjustViewBounds="true">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardCornerRadius="28dp"
app:cardElevation="0dp">
<ImageView
android:id="@+id/main_image"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_alignParentLeft="true"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
tools:src="@drawable/choice_img_round" />
<ProgressBar
android:id="@+id/pb_ins"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_gravity="center" />
</android.support.v7.widget.CardView>
</FrameLayout>
</FrameLayout>

View File

@@ -0,0 +1,113 @@
<?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="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="102dp"
android:layout_margin="6dp">
<FrameLayout
android:id="@+id/round_card_holder"
android:layout_width="102dp"
android:layout_height="102dp"
android:layout_above="@id/id_holder"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true">
<android.support.v7.widget.CardView
android:id="@+id/roundCard"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_above="@id/id_holder"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_gravity="center"
android:padding="3dp"
app:cardCornerRadius="50dp">
<ImageView
android:id="@+id/driverPic"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:contentDescription="@string/list_item_image"
android:scaleType="centerCrop"
tools:srcCompat="@mipmap/ic_launcher_round" />
<ProgressBar
android:id="@+id/pb_su_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone" />
</android.support.v7.widget.CardView>
</FrameLayout>
<LinearLayout
android:id="@+id/textholder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="6dp"
android:layout_toLeftOf="@id/driver_no"
android:layout_toRightOf="@id/round_card_holder"
android:orientation="vertical">
<TextView
android:id="@+id/username_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/roundCard"
android:textSize="18sp"
android:textStyle="bold"
tools:text="Haider Malik" />
<TextView
android:id="@+id/emailaddress_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@id/roundCard"
android:textSize="14sp"
tools:text="h.malik144.au@gmail.com" />
</LinearLayout>
<TextView
android:id="@+id/driver_no"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:gravity="center"
android:includeFontPadding="false"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:textColor="@color/colour_four"
android:textSize="20dp"
android:textStyle="bold"
app:autoSizeMaxTextSize="22dp"
app:autoSizeMinTextSize="16dp"
tools:text="T22" />
<ImageView
android:id="@+id/approval_iv"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginLeft="6dp"
android:adjustViewBounds="true"
tools:src="@android:drawable/presence_online" />
</RelativeLayout>
</FrameLayout>

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:rotation="180"
app:srcCompat="@android:drawable/ic_media_play" />
<FrameLayout
android:layout_width="200dp"
android:layout_height="200dp"
android:adjustViewBounds="true">
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</android.support.v4.view.ViewPager>
<ImageView
android:id="@+id/delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
app:srcCompat="@android:drawable/ic_delete" />
</FrameLayout>
<ImageView
android:id="@+id/right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
app:srcCompat="@android:drawable/ic_media_play" />
</LinearLayout>

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