mirror of
https://github.com/hmalik144/Driver.git
synced 2026-01-31 02:41:46 +00:00
2
.gitignore
vendored
2
.gitignore
vendored
@@ -3,8 +3,10 @@
|
||||
/local.properties
|
||||
/.idea/caches/build_file_checksums.ser
|
||||
/.idea/libraries
|
||||
/.idea/dictionaries
|
||||
/.idea/modules.xml
|
||||
/.idea/workspace.xml
|
||||
/.idea/navEditor.xml
|
||||
.DS_Store
|
||||
/build
|
||||
/captures
|
||||
|
||||
159
.idea/codeStyles/Project.xml
generated
159
.idea/codeStyles/Project.xml
generated
@@ -1,29 +1,138 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<Objective-C-extensions>
|
||||
<file>
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
|
||||
</file>
|
||||
<class>
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
|
||||
</class>
|
||||
<extensions>
|
||||
<pair source="cpp" header="h" fileNamingConvention="NONE" />
|
||||
<pair source="c" header="h" fileNamingConvention="NONE" />
|
||||
</extensions>
|
||||
</Objective-C-extensions>
|
||||
<JetCodeStyleSettings>
|
||||
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
|
||||
<value>
|
||||
<package name="java.util" alias="false" withSubpackages="false" />
|
||||
<package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
|
||||
<package name="io.ktor" alias="false" withSubpackages="true" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="PACKAGES_IMPORT_LAYOUT">
|
||||
<value>
|
||||
<package name="" alias="false" withSubpackages="true" />
|
||||
<package name="java" alias="false" withSubpackages="true" />
|
||||
<package name="javax" alias="false" withSubpackages="true" />
|
||||
<package name="kotlin" alias="false" withSubpackages="true" />
|
||||
<package name="" alias="true" withSubpackages="true" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
</JetCodeStyleSettings>
|
||||
<codeStyleSettings language="XML">
|
||||
<indentOptions>
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||
</indentOptions>
|
||||
<arrangement>
|
||||
<rules>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>xmlns:android</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>xmlns:.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:id</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:name</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>name</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>style</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>ANDROID_ATTRIBUTE_ORDER</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>.*</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
</rules>
|
||||
</arrangement>
|
||||
</codeStyleSettings>
|
||||
<codeStyleSettings language="kotlin">
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
</codeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
||||
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
@@ -0,0 +1,5 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
||||
</state>
|
||||
</component>
|
||||
2
.idea/gradle.xml
generated
2
.idea/gradle.xml
generated
@@ -1,8 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
<option name="testRunner" value="PLATFORM" />
|
||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="modules">
|
||||
|
||||
50
.idea/jarRepositories.xml
generated
Normal file
50
.idea/jarRepositories.xml
generated
Normal file
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RemoteRepositoriesConfiguration">
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Maven Central repository" />
|
||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="jboss.community" />
|
||||
<option name="name" value="JBoss Community repository" />
|
||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="BintrayJCenter" />
|
||||
<option name="name" value="BintrayJCenter" />
|
||||
<option name="url" value="https://jcenter.bintray.com/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="maven" />
|
||||
<option name="name" value="maven" />
|
||||
<option name="url" value="https://jitpack.io" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="Google" />
|
||||
<option name="name" value="Google" />
|
||||
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="MavenRepo" />
|
||||
<option name="name" value="MavenRepo" />
|
||||
<option name="url" value="https://repo.maven.apache.org/maven2/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="C:\Users\h_mal\AppData\Local\Android\Sdk\extras\android\m2repository" />
|
||||
<option name="name" value="C:\Users\h_mal\AppData\Local\Android\Sdk\extras\android\m2repository" />
|
||||
<option name="url" value="file:/$USER_HOME$/AppData/Local/Android/Sdk/extras/android/m2repository/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="C:\Users\h_mal\AppData\Local\Android\Sdk\extras\google\m2repository" />
|
||||
<option name="name" value="C:\Users\h_mal\AppData\Local\Android\Sdk\extras\google\m2repository" />
|
||||
<option name="url" value="file:/$USER_HOME$/AppData/Local/Android/Sdk/extras/google/m2repository/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="C:\Users\h_mal\AppData\Local\Android\Sdk\extras\m2repository" />
|
||||
<option name="name" value="C:\Users\h_mal\AppData\Local\Android\Sdk\extras\m2repository" />
|
||||
<option name="url" value="file:/$USER_HOME$/AppData/Local/Android/Sdk/extras/m2repository/" />
|
||||
</remote-repository>
|
||||
</component>
|
||||
</project>
|
||||
16
.idea/misc.xml
generated
16
.idea/misc.xml
generated
@@ -5,7 +5,7 @@
|
||||
<option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
|
||||
<option name="myNullables">
|
||||
<value>
|
||||
<list size="7">
|
||||
<list size="12">
|
||||
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
|
||||
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
|
||||
<item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
|
||||
@@ -13,23 +13,33 @@
|
||||
<item index="4" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
|
||||
<item index="5" class="java.lang.String" itemvalue="androidx.annotation.Nullable" />
|
||||
<item index="6" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" />
|
||||
<item index="7" class="java.lang.String" itemvalue="android.annotation.Nullable" />
|
||||
<item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
|
||||
<item index="9" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableDecl" />
|
||||
<item index="10" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
|
||||
<item index="11" class="java.lang.String" itemvalue="com.android.annotations.Nullable" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
<option name="myNotNulls">
|
||||
<value>
|
||||
<list size="6">
|
||||
<list size="11">
|
||||
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
|
||||
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
|
||||
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
|
||||
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
|
||||
<item index="4" class="java.lang.String" itemvalue="androidx.annotation.NonNull" />
|
||||
<item index="5" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" />
|
||||
<item index="6" class="java.lang.String" itemvalue="android.annotation.NonNull" />
|
||||
<item index="7" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
|
||||
<item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullDecl" />
|
||||
<item index="9" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullType" />
|
||||
<item index="10" class="java.lang.String" itemvalue="com.android.annotations.NonNull" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
||||
2
app/.gitignore
vendored
2
app/.gitignore
vendored
@@ -1 +1,3 @@
|
||||
/build
|
||||
/release
|
||||
google-services.json
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
|
||||
// kotlin kapt
|
||||
apply plugin: 'kotlin-kapt'
|
||||
// Android navigation
|
||||
apply plugin: 'androidx.navigation.safeargs'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 28
|
||||
@@ -7,9 +19,9 @@ android {
|
||||
applicationId "h_mal.appttude.com.driver"
|
||||
minSdkVersion 24
|
||||
targetSdkVersion 28
|
||||
versionCode 5
|
||||
versionName "1.5"
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
versionCode 6
|
||||
versionName "1.6"
|
||||
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
@@ -17,30 +29,64 @@ android {
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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: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'
|
||||
}
|
||||
implementation "androidx.appcompat:appcompat:1.0.0"
|
||||
implementation "com.google.android.material:material:1.0.0"
|
||||
implementation "androidx.cardview:cardview:1.0.0"
|
||||
implementation "androidx.legacy:legacy-support-v4:1.0.0"
|
||||
implementation "androidx.exifinterface:exifinterface:1.0.0"
|
||||
implementation "androidx.constraintlayout:constraintlayout:1.1.3"
|
||||
implementation "androidx.fragment:fragment-ktx:1.2.5"
|
||||
implementation "androidx.activity:activity-ktx:1.2.0"
|
||||
implementation "androidx.recyclerview:recyclerview:1.1.0"
|
||||
implementation "androidx.navigation:navigation-fragment-ktx:2.3.3"
|
||||
implementation "androidx.navigation:navigation-ui-ktx:2.3.3"
|
||||
implementation "androidx.drawerlayout:drawerlayout:1.1.1"
|
||||
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
|
||||
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0"
|
||||
implementation 'androidx.viewpager:viewpager:1.0.0'
|
||||
testImplementation "junit:junit:4.12"
|
||||
androidTestImplementation "androidx.test.ext:junit:1.1.1"
|
||||
androidTestImplementation "androidx.test.espresso:espresso-core:3.1.0"
|
||||
androidTestImplementation "androidx.test:rules:1.1.1"
|
||||
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
repositories {
|
||||
mavenCentral()
|
||||
implementation "androidx.legacy:legacy-support-v4:1.0.0"
|
||||
// Google play services
|
||||
implementation "com.google.android.gms:play-services-auth:15.0.1"
|
||||
// Google firebase
|
||||
def firebaseVer = "16.0.1"
|
||||
implementation "com.google.firebase:firebase-core:$firebaseVer"
|
||||
implementation "com.google.firebase:firebase-auth:$firebaseVer"
|
||||
implementation "com.google.firebase:firebase-storage:$firebaseVer"
|
||||
implementation "com.google.firebase:firebase-database:$firebaseVer"
|
||||
// Photoviewer
|
||||
implementation "com.github.chrisbanes:PhotoView:2.1.0"
|
||||
/* Picasso photo loader */
|
||||
implementation "com.squareup.picasso:picasso:2.71828"
|
||||
/* Gson */
|
||||
implementation "com.google.code.gson:gson:2.3.1"
|
||||
/* coroutines support for firebase operations */
|
||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.1.1"
|
||||
|
||||
// Circle Image View
|
||||
implementation "com.mikhaellopez:circularimageview:4.2.0"
|
||||
|
||||
//Kodein Dependency Injection
|
||||
def kodein_version = "6.2.1"
|
||||
implementation "org.kodein.di:kodein-di-generic-jvm:$kodein_version"
|
||||
implementation "org.kodein.di:kodein-di-framework-android-x:$kodein_version"
|
||||
|
||||
/* Image Carousal */
|
||||
implementation 'com.synnapps:carouselview:0.1.5'
|
||||
}
|
||||
|
||||
@@ -3,14 +3,11 @@ 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;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
/**
|
||||
* Instrumented test, which will execute on an Android device.
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package h_mal.appttude.com.driver;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
import androidx.test.rule.ActivityTestRule;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
|
||||
import h_mal.appttude.com.driver.ui.driver.HomeFragment;
|
||||
import h_mal.appttude.com.driver.ui.driver.MainActivity;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
public class MainActivityTest {
|
||||
|
||||
@Rule
|
||||
public ActivityTestRule<MainActivity> activityActivityTestRule = new ActivityTestRule<MainActivity>(MainActivity.class);
|
||||
|
||||
|
||||
private MainActivity mainActivity = null;
|
||||
private HomeFragment hdf;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
mainActivity = activityActivityTestRule.getActivity();
|
||||
|
||||
hdf = new HomeFragment();
|
||||
mainActivity.getSupportFragmentManager().beginTransaction().replace(R.id.container, hdf).commit();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testViews(){
|
||||
View view = hdf.getView().findViewById(R.id.driver);
|
||||
|
||||
assertNotNull(view);
|
||||
|
||||
// Bundle bundle = new Bundle();
|
||||
// bundle.putInt("selectedListItem", 0);
|
||||
// FragmentFactory factory = new FragmentFactory();
|
||||
// homeDriverFragment hdf = new homeDriverFragment();
|
||||
//
|
||||
// launchInContainer(hdf.getClass(), bundle, factory);
|
||||
// Espresso.onView(ViewMatchers.withId(2131231038)).check(ViewAssertions.matches(ViewMatchers.withText("Hello World!")));
|
||||
}
|
||||
|
||||
@After
|
||||
public void TearDown() throws Exception{
|
||||
mainActivity = null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package h_mal.appttude.com.driver.base
|
||||
|
||||
import org.junit.Assert.*
|
||||
|
||||
class BaseActivityTest{
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,199 @@
|
||||
package h_mal.appttude.com.driver.user;
|
||||
|
||||
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewParent;
|
||||
|
||||
import androidx.test.espresso.ViewInteraction;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import androidx.test.filters.LargeTest;
|
||||
import androidx.test.rule.ActivityTestRule;
|
||||
|
||||
import org.hamcrest.Description;
|
||||
import org.hamcrest.Matcher;
|
||||
import org.hamcrest.TypeSafeMatcher;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import h_mal.appttude.com.driver.R;
|
||||
import h_mal.appttude.com.driver.ui.user.LoginActivity;
|
||||
|
||||
import static androidx.test.espresso.Espresso.onView;
|
||||
import static androidx.test.espresso.action.ViewActions.*;
|
||||
import static androidx.test.espresso.assertion.ViewAssertions.matches;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.*;
|
||||
import static org.hamcrest.Matchers.allOf;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
|
||||
@LargeTest
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class EspressoTestTwo {
|
||||
|
||||
@Rule
|
||||
public ActivityTestRule<LoginActivity> mActivityTestRule = new ActivityTestRule<>(LoginActivity.class);
|
||||
|
||||
@Test
|
||||
public void espressoTestTwo() {
|
||||
// Added a sleep statement to match the app's execution delay.
|
||||
// The recommended way to handle such scenarios is to use Espresso idling resources:
|
||||
// https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
|
||||
try {
|
||||
Thread.sleep(7000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
ViewInteraction appCompatEditText = onView(
|
||||
allOf(withId(R.id.email),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
withId(R.id.fields_holder),
|
||||
0),
|
||||
0),
|
||||
isDisplayed()));
|
||||
appCompatEditText.perform(replaceText("h.malik144.au@gmail.com"), closeSoftKeyboard());
|
||||
|
||||
ViewInteraction appCompatEditText2 = onView(
|
||||
allOf(withId(R.id.password),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
withId(R.id.fields_holder),
|
||||
1),
|
||||
0),
|
||||
isDisplayed()));
|
||||
appCompatEditText2.perform(replaceText("crack167"), closeSoftKeyboard());
|
||||
|
||||
ViewInteraction appCompatEditText3 = onView(
|
||||
allOf(withId(R.id.password), withText("crack167"),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
withId(R.id.fields_holder),
|
||||
1),
|
||||
0),
|
||||
isDisplayed()));
|
||||
appCompatEditText3.perform(pressImeActionButton());
|
||||
|
||||
// Added a sleep statement to match the app's execution delay.
|
||||
// The recommended way to handle such scenarios is to use Espresso idling resources:
|
||||
// https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
|
||||
try {
|
||||
Thread.sleep(7000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
ViewInteraction button = onView(
|
||||
allOf(withId(R.id.driver),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
withId(R.id.container),
|
||||
0),
|
||||
0),
|
||||
isDisplayed()));
|
||||
button.check(matches(isDisplayed()));
|
||||
|
||||
// Added a sleep statement to match the app's execution delay.
|
||||
// The recommended way to handle such scenarios is to use Espresso idling resources:
|
||||
// https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
|
||||
try {
|
||||
Thread.sleep(7000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
ViewInteraction appCompatImageButton = onView(
|
||||
allOf(withContentDescription("Open navigation drawer"),
|
||||
childAtPosition(
|
||||
allOf(withId(R.id.toolbar),
|
||||
childAtPosition(
|
||||
withClassName(is("android.support.design.widget.AppBarLayout")),
|
||||
0)),
|
||||
1),
|
||||
isDisplayed()));
|
||||
appCompatImageButton.perform(click());
|
||||
|
||||
ViewInteraction cardView = onView(
|
||||
allOf(withId(R.id.car),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
withId(R.id.container),
|
||||
1),
|
||||
1),
|
||||
isDisplayed()));
|
||||
cardView.perform(click());
|
||||
|
||||
ViewInteraction cardView2 = onView(
|
||||
allOf(withId(R.id.vehicle_prof),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
withId(R.id.container),
|
||||
1),
|
||||
0),
|
||||
isDisplayed()));
|
||||
cardView2.perform(click());
|
||||
|
||||
pressBack();
|
||||
|
||||
ViewInteraction appCompatButton = onView(
|
||||
allOf(withId(R.id.driver), withText("Driver Profile"),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
withId(R.id.container),
|
||||
1),
|
||||
0),
|
||||
isDisplayed()));
|
||||
appCompatButton.perform(click());
|
||||
|
||||
ViewInteraction cardView3 = onView(
|
||||
allOf(withId(R.id.driver_prof),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
withId(R.id.container),
|
||||
1),
|
||||
0),
|
||||
isDisplayed()));
|
||||
cardView3.perform(click());
|
||||
|
||||
pressBack();
|
||||
|
||||
ViewInteraction cardView4 = onView(
|
||||
allOf(withId(R.id.private_hire),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
withId(R.id.container),
|
||||
1),
|
||||
1),
|
||||
isDisplayed()));
|
||||
cardView4.perform(click());
|
||||
|
||||
ViewInteraction appCompatButton2 = onView(
|
||||
allOf(withId(android.R.id.button1), withText("View/Edit"),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
withClassName(is("android.widget.ScrollView")),
|
||||
0),
|
||||
3)));
|
||||
appCompatButton2.perform(scrollTo(), click());
|
||||
}
|
||||
|
||||
private static Matcher<View> childAtPosition(
|
||||
final Matcher<View> parentMatcher, final int position) {
|
||||
|
||||
return new TypeSafeMatcher<View>() {
|
||||
@Override
|
||||
public void describeTo(Description description) {
|
||||
description.appendText("Child at position " + position + " in parent ");
|
||||
parentMatcher.describeTo(description);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matchesSafely(View view) {
|
||||
ViewParent parent = view.getParent();
|
||||
return parent instanceof ViewGroup && parentMatcher.matches(parent)
|
||||
&& view.equals(((ViewGroup) parent).getChildAt(position));
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,147 @@
|
||||
package h_mal.appttude.com.driver.user;
|
||||
|
||||
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewParent;
|
||||
|
||||
import androidx.test.espresso.ViewInteraction;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import androidx.test.filters.LargeTest;
|
||||
import androidx.test.rule.ActivityTestRule;
|
||||
|
||||
import org.hamcrest.Description;
|
||||
import org.hamcrest.Matcher;
|
||||
import org.hamcrest.TypeSafeMatcher;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import h_mal.appttude.com.driver.R;
|
||||
import h_mal.appttude.com.driver.ui.user.LoginActivity;
|
||||
|
||||
import static androidx.test.espresso.Espresso.onView;
|
||||
import static androidx.test.espresso.action.ViewActions.*;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.*;
|
||||
import static org.hamcrest.Matchers.allOf;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
|
||||
@LargeTest
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class LoginActivityTest {
|
||||
|
||||
@Rule
|
||||
public ActivityTestRule<LoginActivity> mActivityTestRule = new ActivityTestRule<>(LoginActivity.class);
|
||||
|
||||
@Test
|
||||
public void loginActivityTest() {
|
||||
// Added a sleep statement to match the app's execution delay.
|
||||
// The recommended way to handle such scenarios is to use Espresso idling resources:
|
||||
// https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
|
||||
try {
|
||||
Thread.sleep(7000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
ViewInteraction appCompatEditText = onView(
|
||||
allOf(withId(R.id.email),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
withId(R.id.fields_holder),
|
||||
0),
|
||||
0),
|
||||
isDisplayed()));
|
||||
appCompatEditText.perform(replaceText("h.malik144.au@gmail.com"), closeSoftKeyboard());
|
||||
|
||||
// Added a sleep statement to match the app's execution delay.
|
||||
// The recommended way to handle such scenarios is to use Espresso idling resources:
|
||||
// https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
|
||||
try {
|
||||
Thread.sleep(7000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
ViewInteraction appCompatEditText2 = onView(
|
||||
allOf(withId(R.id.password),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
withId(R.id.fields_holder),
|
||||
1),
|
||||
0),
|
||||
isDisplayed()));
|
||||
appCompatEditText2.perform(replaceText("crack167"), closeSoftKeyboard());
|
||||
|
||||
// ViewInteraction appCompatButton = onView(
|
||||
// allOf(withId(R.id.email_sign_in_button), withText("Sign in"),
|
||||
// childAtPosition(
|
||||
// allOf(withId(R.id.email_login_form),
|
||||
// childAtPosition(
|
||||
// withClassName(is("android.widget.RelativeLayout")),
|
||||
// 0)),
|
||||
// 1),
|
||||
// isDisplayed()));
|
||||
// appCompatButton.perform(click());
|
||||
|
||||
// Added a sleep statement to match the app's execution delay.
|
||||
// The recommended way to handle such scenarios is to use Espresso idling resources:
|
||||
// https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
|
||||
try {
|
||||
Thread.sleep(7000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// ViewInteraction textView = onView(
|
||||
// allOf(withText("Choice Minicabs"),
|
||||
// childAtPosition(
|
||||
// allOf(withId(R.id.toolbar),
|
||||
// childAtPosition(
|
||||
// IsInstanceOf.<View>instanceOf(android.widget.LinearLayout.class),
|
||||
// 0)),
|
||||
// 1),
|
||||
// isDisplayed()));
|
||||
// textView.check(matches(isDisplayed()));
|
||||
|
||||
// Added a sleep statement to match the app's execution delay.
|
||||
// The recommended way to handle such scenarios is to use Espresso idling resources:
|
||||
// https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
|
||||
try {
|
||||
Thread.sleep(7000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
ViewInteraction appCompatButton2 = onView(
|
||||
allOf(withId(R.id.driver), withText("Driver Profile"),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
withId(R.id.container),
|
||||
1),
|
||||
0),
|
||||
isDisplayed()));
|
||||
appCompatButton2.perform(click());
|
||||
}
|
||||
|
||||
private static Matcher<View> childAtPosition(
|
||||
final Matcher<View> parentMatcher, final int position) {
|
||||
|
||||
return new TypeSafeMatcher<View>() {
|
||||
@Override
|
||||
public void describeTo(Description description) {
|
||||
description.appendText("Child at position " + position + " in parent ");
|
||||
parentMatcher.describeTo(description);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matchesSafely(View view) {
|
||||
ViewParent parent = view.getParent();
|
||||
return parent instanceof ViewGroup && parentMatcher.matches(parent)
|
||||
&& view.equals(((ViewGroup) parent).getChildAt(position));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="h_mal.appttude.com.driver">
|
||||
|
||||
<!-- To auto-complete the email text field in the login form with the user's emails -->
|
||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||
<uses-permission android:name="android.permission.READ_PROFILE" />
|
||||
@@ -12,35 +11,33 @@
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
|
||||
<application
|
||||
android:name=".application.DriverApplication"
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity android:name=".update.UpdateActivity" />
|
||||
<activity
|
||||
android:name=".User.LoginActivity"
|
||||
android:name=".ui.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>
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:name=".ui.driver.MainActivity"
|
||||
android:configChanges="orientation|screenSize"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
|
||||
</activity>
|
||||
<activity android:name=".User.RegisterActivity">
|
||||
|
||||
</activity>
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
|
||||
<provider
|
||||
android:name="android.support.v4.content.FileProvider"
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="h_mal.appttude.com.driver"
|
||||
android:exported="false"
|
||||
android:grantUriPermissions="true">
|
||||
@@ -48,8 +45,6 @@
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/file_paths" />
|
||||
</provider>
|
||||
|
||||
<activity android:name=".User.forgotPasswordActivity"></activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -0,0 +1,63 @@
|
||||
package h_mal.appttude.com.driver.Archive
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ListView
|
||||
import androidx.fragment.app.Fragment
|
||||
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.FirebaseClass
|
||||
import h_mal.appttude.com.driver.Objects.ArchiveObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
class ArchiveFragment : Fragment() {
|
||||
var archive: ArchiveObject? = null
|
||||
private var reference: DatabaseReference? = null
|
||||
private var listView: ListView? = null
|
||||
var archiveString: String? = null
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
// reference =
|
||||
// MainActivity.mDatabase!!.child(FirebaseClass.USER_FIREBASE).child(
|
||||
// requireArguments().getString("user_id")
|
||||
// )
|
||||
// .child(FirebaseClass.ARCHIVE_FIREBASE)
|
||||
|
||||
archiveString = requireArguments().getString("archive")
|
||||
var s: String = ""
|
||||
when (archiveString) {
|
||||
FirebaseClass.PRIVATE_HIRE_FIREBASE -> s = "Private Hire"
|
||||
FirebaseClass.DRIVERS_LICENSE_FIREBASE -> s = "License"
|
||||
FirebaseClass.VEHICLE_DETAILS_FIREBASE -> s = "Vehicle"
|
||||
FirebaseClass.MOT_FIREBASE -> s = "M.O.T"
|
||||
FirebaseClass.INSURANCE_FIREBASE -> s = "Insurance"
|
||||
FirebaseClass.LOG_BOOK_FIREBASE -> s = "Logbook"
|
||||
FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> s = "Private Hire Vehicle"
|
||||
}
|
||||
requireActivity().title = s + " Archive"
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
// Inflate the layout for this fragment
|
||||
val view: View = inflater.inflate(R.layout.fragment_archive, container, false)
|
||||
listView = view.findViewById(R.id.archive_listview)
|
||||
// reference!!.addListenerForSingleValueEvent(valueEventListener)
|
||||
return view
|
||||
}
|
||||
|
||||
var valueEventListener: ValueEventListener = object : ValueEventListener {
|
||||
override fun onDataChange(dataSnapshot: DataSnapshot) {
|
||||
archive = dataSnapshot.getValue(ArchiveObject::class.java)
|
||||
listView!!.adapter = ArchiveObjectListAdapter(archive, requireContext(), archiveString)
|
||||
}
|
||||
|
||||
override fun onCancelled(databaseError: DatabaseError) {}
|
||||
}
|
||||
}
|
||||
@@ -1,293 +0,0 @@
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,227 @@
|
||||
package h_mal.appttude.com.driver.Archive
|
||||
|
||||
import android.content.Context
|
||||
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.TextView
|
||||
import com.squareup.picasso.Picasso
|
||||
import h_mal.appttude.com.driver.Global.FirebaseClass
|
||||
import h_mal.appttude.com.driver.Global.ImageSwiperClass
|
||||
import h_mal.appttude.com.driver.ui.driver.MainActivity
|
||||
import h_mal.appttude.com.driver.Objects.ArchiveObject
|
||||
import h_mal.appttude.com.driver.Objects.InsuranceObject
|
||||
import h_mal.appttude.com.driver.Objects.LogbookObject
|
||||
import h_mal.appttude.com.driver.Objects.PrivateHireVehicleObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.model.DriversLicenseObject
|
||||
import h_mal.appttude.com.driver.model.MotObject
|
||||
import h_mal.appttude.com.driver.model.PrivateHireObject
|
||||
import h_mal.appttude.com.driver.model.VehicleProfileObject
|
||||
import h_mal.appttude.com.driver.utils.DateUtils.convertDateStringDatePattern
|
||||
import java.text.ParseException
|
||||
|
||||
class ArchiveObjectListAdapter(
|
||||
var archiveObject: ArchiveObject?,
|
||||
var context: Context?,
|
||||
var archiveString: String?
|
||||
) : BaseAdapter() {
|
||||
var size: Int = 0
|
||||
lateinit var mKeys: Array<String>
|
||||
private var dateArchivedText: TextView? = null
|
||||
override fun getCount(): Int {
|
||||
return size
|
||||
}
|
||||
|
||||
override fun getItem(position: Int): Any? {
|
||||
when (archiveString) {
|
||||
FirebaseClass.PRIVATE_HIRE_FIREBASE -> return archiveObject?.private_hire
|
||||
?.get(mKeys[position])
|
||||
FirebaseClass.DRIVERS_LICENSE_FIREBASE -> return archiveObject?.driver_license
|
||||
?.get(mKeys[position])
|
||||
FirebaseClass.VEHICLE_DETAILS_FIREBASE -> return archiveObject?.vehicle_details
|
||||
?.get(mKeys[position])
|
||||
FirebaseClass.MOT_FIREBASE -> return archiveObject?.mot_details?.get(mKeys[position])
|
||||
FirebaseClass.INSURANCE_FIREBASE -> return archiveObject?.insurance_details?.get(
|
||||
mKeys[position]
|
||||
)
|
||||
FirebaseClass.LOG_BOOK_FIREBASE -> return archiveObject?.log_book
|
||||
?.get(mKeys.get(position))
|
||||
FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> return archiveObject?.ph_car?.get(mKeys[position])
|
||||
else -> return mKeys[position]
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemId(position: Int): Long {
|
||||
return position.toLong()
|
||||
}
|
||||
|
||||
override fun getView(position: Int, convertView: View, parent: ViewGroup): View {
|
||||
var listItemView: View = convertView
|
||||
if (listItemView == null) {
|
||||
if (((archiveString == FirebaseClass.PRIVATE_HIRE_FIREBASE) || (archiveString == FirebaseClass.DRIVERS_LICENSE_FIREBASE) || (archiveString == FirebaseClass.MOT_FIREBASE) || (archiveString == FirebaseClass.LOG_BOOK_FIREBASE) || (archiveString == FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE))) {
|
||||
listItemView = LayoutInflater.from(context).inflate(
|
||||
R.layout.archive_license_item, parent, false
|
||||
)
|
||||
val imageView: ImageView = listItemView.findViewById(R.id.image_archive)
|
||||
dateArchivedText = listItemView.findViewById(R.id.date_archived)
|
||||
val expiryHolder: LinearLayout = listItemView.findViewById(R.id.expiry_view)
|
||||
val fieldTwo: LinearLayout = listItemView.findViewById(R.id.field_two_view)
|
||||
val expiryText: TextView = listItemView.findViewById(R.id.exp_text)
|
||||
val fiewTwoLable: TextView = listItemView.findViewById(R.id.field_two)
|
||||
val fieldTwoText: TextView = listItemView.findViewById(R.id.field_two_text)
|
||||
when (archiveString) {
|
||||
// FirebaseClass.PRIVATE_HIRE_FIREBASE -> {
|
||||
// expiryHolder.visibility = View.VISIBLE
|
||||
// fieldTwo.visibility = View.VISIBLE
|
||||
// val privateHireObject: PrivateHireObject =
|
||||
// getItem(position) as PrivateHireObject
|
||||
// Picasso.get().load(privateHireObject.phImageString)
|
||||
// .placeholder(R.drawable.choice_img)
|
||||
// .into(imageView)
|
||||
// dateString(position)
|
||||
// expiryText.text = privateHireObject.phExpiry
|
||||
// fiewTwoLable.text = "Private Hire License No.:"
|
||||
// fieldTwoText.text = privateHireObject.phNumber
|
||||
// }
|
||||
// FirebaseClass.DRIVERS_LICENSE_FIREBASE -> {
|
||||
// expiryHolder.visibility = View.VISIBLE
|
||||
// fieldTwo.visibility = View.VISIBLE
|
||||
// val driversLicenseObject: DriversLicenseObject =
|
||||
// getItem(position) as DriversLicenseObject
|
||||
// Picasso.get().load(driversLicenseObject.licenseImageString)
|
||||
// .placeholder(R.drawable.choice_img)
|
||||
// .into(imageView)
|
||||
// dateString(position)
|
||||
// expiryText.text = driversLicenseObject.licenseExpiry
|
||||
// fiewTwoLable.text = "License No.:"
|
||||
// fieldTwoText.text = driversLicenseObject.licenseNumber
|
||||
// }
|
||||
// FirebaseClass.MOT_FIREBASE -> {
|
||||
// expiryHolder.visibility = View.VISIBLE
|
||||
// fieldTwo.visibility = View.GONE
|
||||
// val motObject: MotObject = getItem(position) as MotObject
|
||||
// Picasso.get().load(motObject.motImageString)
|
||||
// .placeholder(R.drawable.choice_img)
|
||||
// .into(imageView)
|
||||
// dateString(position)
|
||||
// expiryText.text = motObject.motExpiry
|
||||
// }
|
||||
// FirebaseClass.LOG_BOOK_FIREBASE -> {
|
||||
// expiryHolder.visibility = View.GONE
|
||||
// fieldTwo.visibility = View.VISIBLE
|
||||
// val logbookObject: LogbookObject = getItem(position) as LogbookObject
|
||||
// Picasso.get().load(logbookObject.photoString)
|
||||
// .into(MainActivity.loadImage(imageView))
|
||||
// dateString(position)
|
||||
// fiewTwoLable.text = "V5C No.:"
|
||||
// fieldTwoText.text = logbookObject.v5cnumber
|
||||
// }
|
||||
// FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> {
|
||||
// expiryHolder.visibility = View.VISIBLE
|
||||
// fieldTwo.visibility = View.VISIBLE
|
||||
// val privateHireVehicleObject: PrivateHireVehicleObject =
|
||||
// getItem(position) as PrivateHireVehicleObject
|
||||
// Picasso.get().load(privateHireVehicleObject.phCarImageString)
|
||||
// .into(MainActivity.loadImage(imageView))
|
||||
// dateString(position)
|
||||
// expiryText.text = privateHireVehicleObject.phCarExpiry
|
||||
// fiewTwoLable.text = "Private Hire Vehicle License No.:"
|
||||
// fieldTwoText.text = privateHireVehicleObject.phCarNumber
|
||||
// }
|
||||
}
|
||||
} else if ((archiveString == FirebaseClass.INSURANCE_FIREBASE)) {
|
||||
listItemView = LayoutInflater.from(context).inflate(
|
||||
R.layout.archive_insurance_item, parent, false
|
||||
)
|
||||
val holder: View = listItemView.findViewById(R.id.image_pager)
|
||||
val swiperClass: ImageSwiperClass = ImageSwiperClass(context, holder)
|
||||
// swiperClass.hideDelete();
|
||||
listItemView.findViewById<View>(R.id.delete).visibility = View.GONE
|
||||
// holder.findViewById(R.id.delete).setVisibility(View.INVISIBLE);
|
||||
dateArchivedText = listItemView.findViewById(R.id.date_archived)
|
||||
dateString(position)
|
||||
val expiryText: TextView = listItemView.findViewById(R.id.exp_text)
|
||||
val fieldTwoText: TextView = listItemView.findViewById(R.id.archive_insurer)
|
||||
val insuranceObject: InsuranceObject = getItem(position) as InsuranceObject
|
||||
// swiperClass.reinstantiateList(insuranceObject.photoStrings)
|
||||
expiryText.text = insuranceObject.expiryDate
|
||||
fieldTwoText.text = insuranceObject.insurerName
|
||||
} else if ((archiveString == FirebaseClass.VEHICLE_DETAILS_FIREBASE)) {
|
||||
listItemView = LayoutInflater.from(context).inflate(
|
||||
R.layout.archive_vehicle_item, parent, false
|
||||
)
|
||||
dateArchivedText = listItemView.findViewById(R.id.date_archived)
|
||||
dateString(position)
|
||||
val numberPlate: TextView = listItemView.findViewById(R.id.number_plate)
|
||||
val keeperName: TextView = listItemView.findViewById(R.id.keeper_name)
|
||||
val keeperAddress: TextView = listItemView.findViewById(R.id.keeper_address)
|
||||
val carText: TextView = listItemView.findViewById(R.id.car_text_arch)
|
||||
val carColour: TextView = listItemView.findViewById(R.id.car_colour)
|
||||
val carSeized: TextView = listItemView.findViewById(R.id.seized_checkbox)
|
||||
val startDate: TextView = listItemView.findViewById(R.id.first_date)
|
||||
val vehicleProfileObject: VehicleProfileObject =
|
||||
getItem(position) as VehicleProfileObject
|
||||
numberPlate.text = vehicleProfileObject.reg
|
||||
keeperName.text = vehicleProfileObject.keeperName
|
||||
keeperAddress.text = vehicleProfileObject.keeperAddress + "\n" + vehicleProfileObject.keeperPostCode
|
||||
carText.text = vehicleProfileObject.make + " " + vehicleProfileObject.model
|
||||
carColour.text = vehicleProfileObject.colour
|
||||
val s: String
|
||||
if (vehicleProfileObject.isSeized) {
|
||||
s = "Yes"
|
||||
} else {
|
||||
s = "No"
|
||||
}
|
||||
carSeized.text = s
|
||||
startDate.text = vehicleProfileObject.startDate
|
||||
}
|
||||
}
|
||||
return listItemView
|
||||
}
|
||||
|
||||
private fun dateString(position: Int) {
|
||||
var success: Boolean = true
|
||||
try {
|
||||
dateArchivedText!!.text = mKeys[position].convertDateStringDatePattern("yyyyMMdd_HHmmss", "dd/MM/yyyy")
|
||||
} catch (e: ParseException) {
|
||||
e.printStackTrace()
|
||||
success = false
|
||||
} finally {
|
||||
if (!success) {
|
||||
dateArchivedText!!.text = mKeys.get(position).substring(0, 8)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val TAG: String = "ArchiveObjectListAdapte"
|
||||
}
|
||||
|
||||
init {
|
||||
archiveObject?.apply {
|
||||
val map = when (archiveString) {
|
||||
FirebaseClass.PRIVATE_HIRE_FIREBASE -> private_hire
|
||||
FirebaseClass.DRIVERS_LICENSE_FIREBASE -> driver_license
|
||||
FirebaseClass.VEHICLE_DETAILS_FIREBASE -> vehicle_details
|
||||
FirebaseClass.MOT_FIREBASE -> mot_details
|
||||
FirebaseClass.INSURANCE_FIREBASE -> insurance_details
|
||||
FirebaseClass.LOG_BOOK_FIREBASE -> log_book
|
||||
FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE -> ph_car
|
||||
else -> null
|
||||
}
|
||||
setUp(map)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun setUp(map: HashMap<String,*>?){
|
||||
size = map?.size ?: 0
|
||||
map?.keys?.toTypedArray()?.let{
|
||||
mKeys = it
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,290 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Driver;
|
||||
|
||||
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;
|
||||
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 java.util.Calendar;
|
||||
|
||||
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;
|
||||
|
||||
public Uri filePath;
|
||||
public Uri picUri;
|
||||
|
||||
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
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this 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);
|
||||
|
||||
viewController.progress(View.VISIBLE);
|
||||
reference.addListenerForSingleValueEvent(valueEventListener);
|
||||
|
||||
TextView uploadLic = view.findViewById(R.id.upload_lic);
|
||||
|
||||
licenseNo = view.findViewById(R.id.lic_no);
|
||||
expiry = view.findViewById(R.id.lic_expiry);
|
||||
|
||||
expiry.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
||||
DateDialog dateDialog = new DateDialog(getContext());
|
||||
dateDialog.init(expiry);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
Button submit = view.findViewById(R.id.submit);
|
||||
submit.setOnClickListener(submitOnClickListener);
|
||||
|
||||
uploadLic.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(getContext());
|
||||
imageSelectorDialog.setImageName("drivers_license");
|
||||
imageSelectorDialog.show();
|
||||
}
|
||||
});
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
View.OnClickListener submitOnClickListener = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
li_numberString = licenseNo.getText().toString().trim();
|
||||
li_exprString = expiry.getText().toString().trim();
|
||||
|
||||
if (!TextUtils.isEmpty(li_numberString) &&
|
||||
!TextUtils.isEmpty(li_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(), 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");
|
||||
}
|
||||
if (TextUtils.isEmpty(li_exprString)){
|
||||
expiry.setError("Field required");
|
||||
}
|
||||
if (picUri == null && filePath == 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{
|
||||
driversLicenseObject = dataSnapshot.getValue(DriversLicenseObject.class);
|
||||
}catch (Exception e){
|
||||
Log.e(TAG, "onDataChange: ", e);
|
||||
}finally {
|
||||
if (driversLicenseObject != null){
|
||||
picUri = Uri.parse(driversLicenseObject.getLicenseImageString());
|
||||
li_numberString = driversLicenseObject.getLicenseNumber();
|
||||
li_exprString = driversLicenseObject.getLicenseExpiry();
|
||||
|
||||
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(){
|
||||
|
||||
if (uploadNew){
|
||||
archiveClass.archiveRecord(UID,DRIVERS_LICENSE_FIREBASE,driversLicenseObject);
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,147 +0,0 @@
|
||||
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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,310 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Driver;
|
||||
|
||||
import android.content.Intent;
|
||||
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.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.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.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 {
|
||||
|
||||
private String TAG = this.getClass().getSimpleName();
|
||||
|
||||
ImageView driverPic;
|
||||
ProgressBar pb;
|
||||
TextView addPic;
|
||||
EditText forenames;
|
||||
EditText address;
|
||||
EditText postcode;
|
||||
EditText dob;
|
||||
EditText ni;
|
||||
EditText dateFirst;
|
||||
Button submit_driver;
|
||||
|
||||
Uri filePath;
|
||||
Uri picUri;
|
||||
|
||||
DatabaseReference driverProfileReference;
|
||||
String UID;
|
||||
DriverProfileObject driverProfileObject;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
|
||||
if (getArguments() != null){
|
||||
UID = getArguments().getString("user_id");
|
||||
}else{
|
||||
UID = auth.getCurrentUser().getUid();
|
||||
}
|
||||
|
||||
driverProfileReference = mDatabase.child(USER_FIREBASE).child(UID)
|
||||
.child(DRIVER_FIREBASE);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this 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);
|
||||
dateFirst = view.findViewById(R.id.date_first);
|
||||
submit_driver = view.findViewById(R.id.submit_driver);
|
||||
|
||||
viewController.progress(View.VISIBLE);
|
||||
driverProfileReference.addListenerForSingleValueEvent(valueEventListener);
|
||||
|
||||
addPic.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(getContext());
|
||||
imageSelectorDialog.setImageName("driver_pic"+getDateStamp());
|
||||
imageSelectorDialog.show();
|
||||
}
|
||||
});
|
||||
|
||||
dob.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
DateDialog dateDialog = new DateDialog(getContext());
|
||||
dateDialog.init(dob);
|
||||
}
|
||||
});
|
||||
|
||||
dateFirst.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
DateDialog dateDialog = new DateDialog(getContext());
|
||||
dateDialog.init(dateFirst);
|
||||
}
|
||||
});
|
||||
|
||||
submit_driver.setOnClickListener(submitOnClickListener);
|
||||
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
ValueEventListener valueEventListener = new ValueEventListener(){
|
||||
|
||||
@Override
|
||||
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
|
||||
viewController.progress(View.GONE);
|
||||
|
||||
try {
|
||||
driverProfileObject = dataSnapshot.child(DRIVER_DETAILS_FIREBASE).getValue(DriverProfileObject.class);
|
||||
}catch (Exception e){
|
||||
Log.e(TAG, "onDataChange: ", e);
|
||||
}finally {
|
||||
if (driverProfileObject != null){
|
||||
forenames.setText(driverProfileObject.getForenames());
|
||||
address.setText(driverProfileObject.getAddress());
|
||||
postcode.setText(driverProfileObject.getPostcode());
|
||||
dob.setText(driverProfileObject.getDob());
|
||||
dateFirst.setText(driverProfileObject.getDateFirst());
|
||||
ni.setText(driverProfileObject.getNi());
|
||||
|
||||
|
||||
Picasso.get().load(driverProfileObject.getDriverPic())
|
||||
.into(loadImage(pb,driverPic));
|
||||
picUri = Uri.parse(driverProfileObject.getDriverPic());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@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();
|
||||
String dobString = dob.getText().toString().trim();
|
||||
String niString = ni.getText().toString().trim();
|
||||
String dateFirstString = dateFirst.getText().toString().trim();
|
||||
|
||||
if ( !TextUtils.isEmpty(driverForename) &&
|
||||
!TextUtils.isEmpty(AddressString) &&
|
||||
!TextUtils.isEmpty(postCodeString) &&
|
||||
!TextUtils.isEmpty(dobString) &&
|
||||
!TextUtils.isEmpty(niString) &&
|
||||
!TextUtils.isEmpty(dateFirstString)){
|
||||
|
||||
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 {
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
|
||||
new ImageSelectorResults().Results(getActivity(),requestCode, resultCode, data,
|
||||
filePath,driverPic,new ImageSelectorResults.FilepathResponse() {
|
||||
@Override
|
||||
public void processFinish(Uri output) {
|
||||
filePath = output;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void writeDriverToDb(){
|
||||
|
||||
String forenameText = forenames.getText().toString().trim();
|
||||
String addressText = address.getText().toString().trim();
|
||||
String postcodeText = postcode.getText().toString().trim();
|
||||
String dobText = dob.getText().toString().trim();
|
||||
String niText = ni.getText().toString().trim();
|
||||
String datefirstText = dateFirst.getText().toString().trim();
|
||||
|
||||
DriverProfileObject driverProfileObject = new DriverProfileObject(picUri.toString(),forenameText,
|
||||
addressText,postcodeText,dobText,niText,datefirstText);
|
||||
|
||||
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();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,300 +0,0 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -1,262 +0,0 @@
|
||||
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;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,278 +0,0 @@
|
||||
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.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.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 java.util.UUID;
|
||||
|
||||
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;
|
||||
ProgressBar pb;
|
||||
|
||||
EditText phNo;
|
||||
EditText phExpiry;
|
||||
|
||||
public Uri filePath;
|
||||
|
||||
public Uri picUri;
|
||||
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
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
View view = inflater.inflate(R.layout.fragment_private_hire_license, container, false);
|
||||
|
||||
viewController.progress(View.VISIBLE);
|
||||
reference.addListenerForSingleValueEvent(new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
|
||||
viewController.progress(View.GONE);
|
||||
|
||||
try{
|
||||
privateHireObject = dataSnapshot.getValue(PrivateHireObject.class);
|
||||
}catch (Exception e){
|
||||
Log.e(TAG, "onDataChange: ", e);
|
||||
}finally {
|
||||
if (privateHireObject != null){
|
||||
picUri = Uri.parse(privateHireObject.getPhImageString());
|
||||
Ph_numberString = privateHireObject.getPhNumber();
|
||||
Ph_exprString = privateHireObject.getPhExpiry();
|
||||
|
||||
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);
|
||||
}
|
||||
});
|
||||
|
||||
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);
|
||||
|
||||
uploadPH.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(getContext());
|
||||
imageSelectorDialog.setImageName("private_hire");
|
||||
imageSelectorDialog.show();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
submit.setOnClickListener(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 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
private void publishObject(){
|
||||
|
||||
if (uploadNew){
|
||||
archiveClass.archiveRecord(UID,PRIVATE_HIRE_FIREBASE,privateHireObject);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,285 +0,0 @@
|
||||
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;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,188 +0,0 @@
|
||||
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);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
@@ -1,223 +0,0 @@
|
||||
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");}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Driver;
|
||||
|
||||
import android.os.Bundle;
|
||||
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.Button;
|
||||
|
||||
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 homeDriverFragment 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_home, container, false);
|
||||
|
||||
Button button = view.findViewById(R.id.driver);
|
||||
button.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
executeFragment(new DriverOverallFragment());
|
||||
}
|
||||
});
|
||||
|
||||
CardView second= view.findViewById(R.id.car);
|
||||
second.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
executeFragment(new VehicleOverallFragment());
|
||||
}
|
||||
});
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,255 +0,0 @@
|
||||
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;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import h_mal.appttude.com.driver.Objects.ApprovalsObject
|
||||
import h_mal.appttude.com.driver.Objects.WholeDriverObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
|
||||
class ApprovalsClass {
|
||||
fun getOverApprovalStatusCode(wholeDriverObject: WholeDriverObject?): Int {
|
||||
if (wholeDriverObject!!.approvalsObject != null) {
|
||||
val approvalsObject: ApprovalsObject = wholeDriverObject!!.approvalsObject!!
|
||||
val ints: IntArray = intArrayOf(
|
||||
approvalsObject.driver_details_approval,
|
||||
approvalsObject.driver_license_approval,
|
||||
approvalsObject.private_hire_approval,
|
||||
approvalsObject.vehicle_details_approval,
|
||||
approvalsObject.insurance_details_approval,
|
||||
approvalsObject.mot_details_approval,
|
||||
approvalsObject.log_book_approval,
|
||||
approvalsObject.ph_car_approval
|
||||
)
|
||||
return setImageResource(mode(ints))
|
||||
}
|
||||
return setImageResource(FirebaseClass.NO_DATE_PRESENT)
|
||||
}
|
||||
|
||||
fun setStatusCode(userId: String?, approvalNameString: String, status: Int) {
|
||||
// if (!(approvalNameString == "")) {
|
||||
// MainActivity.mDatabase!!.child(FirebaseClass.USER_FIREBASE)
|
||||
// .child((userId)!!).child(FirebaseClass.USER_APPROVALS)
|
||||
// .child(approvalNameString)
|
||||
// .setValue(status).addOnCompleteListener { task ->
|
||||
// if (task.isSuccessful) {
|
||||
// } else {
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
fun setImageResource(statusCode: Int): Int {
|
||||
val imageResource: Int
|
||||
when (statusCode) {
|
||||
FirebaseClass.APPROVAL_PENDING -> imageResource = R.drawable.pending
|
||||
FirebaseClass.APPROVAL_DENIED -> imageResource = R.drawable.denied
|
||||
FirebaseClass.APPROVED -> imageResource = R.drawable.approved
|
||||
else -> imageResource = R.drawable.zero
|
||||
}
|
||||
return imageResource
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun mode(array: IntArray): Int {
|
||||
var mode: Int = array.get(0)
|
||||
var maxCount: Int = 0
|
||||
if (matchedArray(array, 3)) {
|
||||
return 3
|
||||
} else if (matchedArray(array, 0)) {
|
||||
return 0
|
||||
} else {
|
||||
for (i in array.indices) {
|
||||
val value: Int = array.get(i)
|
||||
var count: Int = 1
|
||||
for (j in array.indices) {
|
||||
if (array.get(j) == value) count++
|
||||
if (count > maxCount) {
|
||||
mode = value
|
||||
maxCount = count
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mode == 3) {
|
||||
return 1
|
||||
}
|
||||
}
|
||||
return mode
|
||||
}
|
||||
|
||||
private fun matchedArray(array: IntArray, match: Int): Boolean {
|
||||
for (i: Int in array) {
|
||||
if (i != match) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
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();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import h_mal.appttude.com.driver.utils.UPLOAD_NEW
|
||||
|
||||
|
||||
class ArchiveClass {
|
||||
fun archiveRecord(UID: String?, item: String?, `object`: Any?) {
|
||||
// val toPath: DatabaseReference =
|
||||
// MainActivity.mDatabase!!.child(FirebaseClass.USER_FIREBASE).child(
|
||||
// (UID)!!
|
||||
// )
|
||||
// .child(FirebaseClass.ARCHIVE_FIREBASE).child((item)!!)
|
||||
// toPath.child(MainActivity.dateTimeStamp).setValue(`object`)
|
||||
// .addOnCompleteListener { task ->
|
||||
// if (task.isSuccessful) {
|
||||
// Log.i(TAG, "onComplete: archive successful")
|
||||
// } else {
|
||||
// Log.i(TAG, "onComplete: archive unsuccessful")
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
fun openDialogArchive(context: Context?, `object`: Any?, fragment: Fragment) {
|
||||
if (`object` == null) {
|
||||
// executeFragment(fragment)
|
||||
} else {
|
||||
val builder: AlertDialog.Builder = AlertDialog.Builder(context)
|
||||
builder.setMessage("Do you want to View/Edit or Upload new?")
|
||||
.setPositiveButton("View/Edit"
|
||||
) { _, _ ->
|
||||
// executeFragment(fragment)
|
||||
}
|
||||
.setNegativeButton("Upload New"
|
||||
) { _, _ ->
|
||||
val bundle = Bundle()
|
||||
bundle.putString(UPLOAD_NEW, "Yes")
|
||||
fragment.arguments = bundle
|
||||
// executeFragment(fragment)
|
||||
}
|
||||
.create().show()
|
||||
}
|
||||
}
|
||||
|
||||
fun openDialogArchive(context: Context?, `object`: Any?, user: String?, fragment: Fragment?) {
|
||||
val bundle: Bundle = Bundle()
|
||||
bundle.putString("user_id", user)
|
||||
fragment!!.arguments = bundle
|
||||
if (`object` == null) {
|
||||
// executeFragment(fragment)
|
||||
} else {
|
||||
val builder: AlertDialog.Builder = AlertDialog.Builder(context)
|
||||
builder.setMessage("Do you want to View/Edit or Upload new?")
|
||||
.setPositiveButton("View/Edit"
|
||||
) { _, _ ->
|
||||
// executeFragment(fragment)
|
||||
}
|
||||
.setNegativeButton("Upload New"
|
||||
) { _, _ ->
|
||||
bundle.putString(UPLOAD_NEW, "Yes")
|
||||
// executeFragment(fragment)
|
||||
}
|
||||
.create().show()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,127 +0,0 @@
|
||||
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;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.text.ParseException;
|
||||
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;
|
||||
int mMonth;
|
||||
int mDay;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
public DateDialog(@NonNull Context context,
|
||||
@Nullable DatePickerDialog.OnDateSetListener listener,
|
||||
int year, int month, int dayOfMonth) {
|
||||
super(context, listener, year, month, dayOfMonth);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public DateDialog(@NonNull Context context, int themeResId, @Nullable DatePickerDialog.OnDateSetListener listener, int year, int monthOfYear, int dayOfMonth) {
|
||||
super(context, themeResId, listener, year, monthOfYear, dayOfMonth);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTitle(CharSequence title) {
|
||||
super.setTitle(title);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnDateSetListener(@Nullable DatePickerDialog.OnDateSetListener listener) {
|
||||
super.setOnDateSetListener(dateSetListener);
|
||||
}
|
||||
|
||||
public void init(EditText editText){
|
||||
this.editText = editText;
|
||||
|
||||
String dateString = editText.getText().toString();
|
||||
|
||||
Date javaDate = null;
|
||||
|
||||
if(TextUtils.isEmpty(dateString)){
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
mYear = calendar.get(Calendar.YEAR);
|
||||
mMonth = calendar.get(Calendar.MONTH);
|
||||
mDay = calendar.get(Calendar.DAY_OF_MONTH);
|
||||
}else {
|
||||
try {
|
||||
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, 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);
|
||||
mMonth = calendar.get(Calendar.MONTH);
|
||||
mDay = calendar.get(Calendar.DAY_OF_MONTH);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Log.i(this.getClass().getSimpleName(), "init: year =" + mYear +
|
||||
"month = " + mMonth +
|
||||
"day = " + mDay);
|
||||
|
||||
|
||||
updateDate(mYear,mMonth,mDay);
|
||||
|
||||
setOnDateSetListener(null);
|
||||
|
||||
this.setTitle(getContext().getString(R.string.set_date));
|
||||
this.show();
|
||||
}
|
||||
|
||||
DatePickerDialog.OnDateSetListener dateSetListener = new OnDateSetListener() {
|
||||
@Override
|
||||
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
|
||||
mYear = year;
|
||||
mMonth = month + 1;
|
||||
mDay = dayOfMonth;
|
||||
|
||||
editText.setText(String.format("%02d", mDay) + "/" +
|
||||
String.format("%02d", (mMonth)) +"/" +
|
||||
mYear
|
||||
);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.app.DatePickerDialog
|
||||
import android.app.DatePickerDialog.OnDateSetListener
|
||||
import android.content.Context
|
||||
import android.icu.util.Calendar
|
||||
import android.os.Build
|
||||
import android.widget.EditText
|
||||
import androidx.annotation.RequiresApi
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.utils.DateUtils
|
||||
|
||||
|
||||
private const val DATE_FORMAT = "dd/MM/yyyy"
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
class DateDialog(
|
||||
private val editText: EditText
|
||||
) : DatePickerDialog(editText.context, AlertDialog.THEME_HOLO_LIGHT) {
|
||||
|
||||
var dateSetListener: OnDateSetListener =
|
||||
OnDateSetListener { _, year, month, dayOfMonth ->
|
||||
val cal = Calendar.getInstance()
|
||||
cal.set(year, month + 1, dayOfMonth)
|
||||
|
||||
editText.setText(DateUtils.parseCalenderIntoDateString(cal, DATE_FORMAT))
|
||||
}
|
||||
|
||||
init {
|
||||
val dateString = editText.text?.toString()
|
||||
val date = if (dateString.isNullOrBlank()){
|
||||
// Set time to now
|
||||
Calendar.getInstance()
|
||||
}else{
|
||||
// Parse current edit text string and set value
|
||||
DateUtils.parseDateStringIntoCalender(dateString, DATE_FORMAT)
|
||||
?: Calendar.getInstance()
|
||||
}
|
||||
setDateFromCalender(date)
|
||||
setOnDateSetListener(dateSetListener)
|
||||
setTitle(context.getString(R.string.set_date))
|
||||
show()
|
||||
}
|
||||
|
||||
private fun setDateFromCalender(calendar: Calendar){
|
||||
val mYear = calendar.get(Calendar.YEAR)
|
||||
val mMonth = calendar.get(Calendar.MONTH)
|
||||
val mDay = calendar.get(Calendar.DAY_OF_MONTH)
|
||||
|
||||
updateDate(mYear, mMonth, mDay)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,65 +0,0 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -1,111 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Global;
|
||||
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.google.android.gms.tasks.Continuation;
|
||||
import com.google.android.gms.tasks.OnCompleteListener;
|
||||
import com.google.android.gms.tasks.Task;
|
||||
import com.google.firebase.storage.OnProgressListener;
|
||||
import com.google.firebase.storage.StorageReference;
|
||||
import com.google.firebase.storage.UploadTask;
|
||||
|
||||
import static h_mal.appttude.com.driver.MainActivity.auth;
|
||||
import static h_mal.appttude.com.driver.MainActivity.storageReference;
|
||||
|
||||
public class FirebaseClass {
|
||||
|
||||
public static final String USER_FIREBASE = "user";
|
||||
public static final String DRIVER_FIREBASE = "driver_profile";
|
||||
public static final String DRIVER_DETAILS_FIREBASE = "driver_details";
|
||||
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;
|
||||
|
||||
public interface Response {
|
||||
void processFinish(Uri output);
|
||||
}
|
||||
|
||||
public Response delegate;
|
||||
|
||||
public FirebaseClass(Context context, Uri filePath, Response delegate) {
|
||||
this.context = context;
|
||||
this.filePath = filePath;
|
||||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
public void uploadImage(String path, String name) {
|
||||
|
||||
if(filePath != null) {
|
||||
final ProgressDialog progressDialog = new ProgressDialog(context);
|
||||
progressDialog.setTitle("Uploading...");
|
||||
progressDialog.show();
|
||||
|
||||
final StorageReference ref = storageReference.child("images/"+ auth.getCurrentUser().getUid() + "/" + path
|
||||
+ "/" + name);
|
||||
|
||||
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()) {
|
||||
delegate.processFinish(task.getResult());
|
||||
progressDialog.dismiss();
|
||||
Toast.makeText(context, "Uploaded Successfully", Toast.LENGTH_SHORT).show();
|
||||
Log.i(context.getClass().getSimpleName(), "onComplete: uploaded Successful uri: " + task.getResult());
|
||||
} else {
|
||||
delegate.processFinish(null);
|
||||
progressDialog.dismiss();
|
||||
Toast.makeText(context, "Failed to upload", Toast.LENGTH_SHORT).show();
|
||||
Log.i(context.getClass().getSimpleName(), "onComplete: failed to get url");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
|
||||
class FirebaseClass constructor(var context: Context?, var filePath: Uri?, var delegate: Response) {
|
||||
open interface Response {
|
||||
fun processFinish(output: Uri?)
|
||||
}
|
||||
|
||||
fun uploadImage(path: String, name: String) {
|
||||
// if (filePath != null) {
|
||||
// val progressDialog: ProgressDialog = ProgressDialog(context)
|
||||
// progressDialog.setTitle("Uploading...")
|
||||
// progressDialog.show()
|
||||
// val ref: StorageReference = MainActivity.storageReference!!.child(
|
||||
// ("images/" + MainActivity.auth!!.currentUser!!
|
||||
// .uid + "/" + path
|
||||
// + "/" + name)
|
||||
// )
|
||||
// val uploadTask: UploadTask = ref.putFile(filePath!!)
|
||||
// uploadTask.addOnProgressListener { taskSnapshot ->
|
||||
// val progress: Double =
|
||||
// (100.0 * taskSnapshot.bytesTransferred / taskSnapshot
|
||||
// .totalByteCount)
|
||||
// progressDialog.setMessage("Uploaded " + progress.toInt() + "%")
|
||||
// }.continueWithTask { task ->
|
||||
// if (!task.isSuccessful) {
|
||||
// throw (task.exception)!!
|
||||
// }
|
||||
//
|
||||
// // Continue with the task to get the download URL
|
||||
// ref.downloadUrl
|
||||
// }.addOnCompleteListener { task ->
|
||||
// if (task.isSuccessful) {
|
||||
// delegate.processFinish(task.result)
|
||||
// progressDialog.dismiss()
|
||||
// context?.displayToast("Uploaded Successfully")
|
||||
// println("onComplete: uploaded Successful uri: " + task.result)
|
||||
// } else {
|
||||
// delegate.processFinish(null)
|
||||
// progressDialog.dismiss()
|
||||
// context?.displayToast("Uploaded Successfully")
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
companion object {
|
||||
val USER_FIREBASE: String = "user"
|
||||
val DRIVER_FIREBASE: String = "driver_profile"
|
||||
val DRIVER_DETAILS_FIREBASE: String = "driver_details"
|
||||
val PRIVATE_HIRE_FIREBASE: String = "private_hire"
|
||||
val DRIVERS_LICENSE_FIREBASE: String = "driver_license"
|
||||
val DRIVER_STATUS: String = "driver_status"
|
||||
val USER_APPROVALS: String = "approvalsObject"
|
||||
val APPROVAL_CONSTANT: String = "_approval"
|
||||
val ARCHIVE_FIREBASE: String = "archive"
|
||||
val DRIVER_NUMBER: String = "driver_number"
|
||||
val VEHICLE_FIREBASE: String = "vehicle_profile"
|
||||
val MOT_FIREBASE: String = "mot_details"
|
||||
val VEHICLE_DETAILS_FIREBASE: String = "vehicle_details"
|
||||
val INSURANCE_FIREBASE: String = "insurance_details"
|
||||
val LOG_BOOK_FIREBASE: String = "log_book"
|
||||
val PRIVATE_HIRE_VEHICLE_LICENSE: String = "private_hire_vehicle"
|
||||
val NO_DATE_PRESENT: Int = 0
|
||||
val APPROVAL_PENDING: Int = 1
|
||||
val APPROVAL_DENIED: Int = 2
|
||||
val APPROVED: Int = 3
|
||||
}
|
||||
}
|
||||
@@ -1,154 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Global;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Bitmap;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.provider.MediaStore;
|
||||
import android.support.annotation.NonNull;
|
||||
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;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.google.firebase.storage.FirebaseStorage;
|
||||
import com.google.firebase.storage.StorageReference;
|
||||
|
||||
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.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;
|
||||
import static h_mal.appttude.com.driver.MainActivity.fragmentManager;
|
||||
import static h_mal.appttude.com.driver.MainActivity.verifyStoragePermissions;
|
||||
|
||||
public class ImageSelectorDialog extends Dialog{
|
||||
|
||||
private String TAG = this.getClass().getSimpleName();
|
||||
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;
|
||||
|
||||
Fragment fragment;
|
||||
|
||||
public ImageSelectorDialog(@NonNull Context context) {
|
||||
super(context);
|
||||
|
||||
this.saveFileName = "default_name";
|
||||
}
|
||||
|
||||
public ImageSelectorDialog(@NonNull Context context, int themeResId) {
|
||||
super(context, themeResId);
|
||||
this.saveFileName = "default_name";
|
||||
}
|
||||
|
||||
protected ImageSelectorDialog(@NonNull Context context, boolean cancelable, @Nullable DialogInterface.OnCancelListener cancelListener) {
|
||||
super(context, cancelable, cancelListener);
|
||||
this.saveFileName = "default_name";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.address_dialog);
|
||||
|
||||
//check if we have we have storage rights
|
||||
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);
|
||||
|
||||
Button upload = findViewById(R.id.upload);
|
||||
Button takePic = findViewById(R.id.take_pic);
|
||||
|
||||
upload.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
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();
|
||||
}
|
||||
});
|
||||
|
||||
takePic.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (permissionCam == PackageManager.PERMISSION_GRANTED){
|
||||
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
|
||||
File file = createFile();
|
||||
photoURI = Uri.fromFile(file);
|
||||
Uri imageUri = FileProvider.getUriForFile(
|
||||
getContext(),
|
||||
"h_mal.appttude.com.driver",
|
||||
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();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void setImageName(String saveFileName){
|
||||
this.saveFileName = saveFileName;
|
||||
}
|
||||
|
||||
private File createFile(){
|
||||
//create directory
|
||||
File root = getContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
|
||||
//create file
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmm");
|
||||
String currentDateandTime = sdf.format(new Date());
|
||||
String fname = saveFileName+ currentDateandTime;
|
||||
File image = new File(root,fname);
|
||||
|
||||
return image;
|
||||
|
||||
}
|
||||
|
||||
private void chooseImage() {
|
||||
Intent intent = new Intent();
|
||||
intent.setType("image/*");
|
||||
intent.setAction(Intent.ACTION_GET_CONTENT);
|
||||
|
||||
fragment.startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import android.Manifest
|
||||
import android.app.Dialog
|
||||
import android.content.Context
|
||||
import android.content.DialogInterface
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.icu.text.SimpleDateFormat
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.Environment
|
||||
import android.provider.MediaStore
|
||||
import android.widget.Button
|
||||
import android.widget.Toast
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.fragment.app.Fragment
|
||||
import h_mal.appttude.com.driver.R
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
|
||||
class ImageSelectorDialog : Dialog {
|
||||
private val TAG: String = this.javaClass.simpleName
|
||||
private var saveFileName: String
|
||||
var fragment: Fragment? = null
|
||||
|
||||
constructor(context: Context) : super(context) {
|
||||
saveFileName = "default_name"
|
||||
}
|
||||
|
||||
constructor(context: Context, themeResId: Int) : super(context, themeResId) {
|
||||
saveFileName = "default_name"
|
||||
}
|
||||
|
||||
protected constructor(
|
||||
context: Context,
|
||||
cancelable: Boolean,
|
||||
cancelListener: DialogInterface.OnCancelListener?
|
||||
) : super(context, cancelable, cancelListener) {
|
||||
saveFileName = "default_name"
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.address_dialog)
|
||||
|
||||
//check if we have we have storage rights
|
||||
val permissionPic: Int = ActivityCompat.checkSelfPermission(
|
||||
context,
|
||||
Manifest.permission.WRITE_EXTERNAL_STORAGE
|
||||
)
|
||||
val permissionCam: Int =
|
||||
ActivityCompat.checkSelfPermission(context, Manifest.permission.CAMERA)
|
||||
// fragment = MainActivity.mainFragmentManager.fragments[0]
|
||||
val upload: Button = findViewById(R.id.upload)
|
||||
val takePic: Button = findViewById(R.id.take_pic)
|
||||
upload.setOnClickListener {
|
||||
if (permissionPic == PackageManager.PERMISSION_GRANTED) {
|
||||
chooseImage()
|
||||
} else {
|
||||
Toast.makeText(context, "Storage permissions required", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
ActivityCompat.requestPermissions(
|
||||
(fragment!!.requireActivity()),
|
||||
arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),
|
||||
STORAGE_PERMISSION_CODE
|
||||
)
|
||||
}
|
||||
dismiss()
|
||||
}
|
||||
takePic.setOnClickListener {
|
||||
if (permissionCam == PackageManager.PERMISSION_GRANTED) {
|
||||
val cameraIntent: Intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
|
||||
val file: File = createFile()
|
||||
photoURI = Uri.fromFile(file)
|
||||
val imageUri: Uri = FileProvider.getUriForFile(
|
||||
context,
|
||||
"h_mal.appttude.com.driver",
|
||||
file
|
||||
)
|
||||
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri)
|
||||
fragment!!.startActivityForResult(cameraIntent, CAMERA_REQUEST)
|
||||
} else {
|
||||
Toast.makeText(context, "Camera Permissions required", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
ActivityCompat.requestPermissions(
|
||||
(fragment!!.requireActivity()), arrayOf(Manifest.permission.CAMERA),
|
||||
MY_CAMERA_PERMISSION_CODE
|
||||
)
|
||||
}
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
fun setImageName(saveFileName: String) {
|
||||
this.saveFileName = saveFileName
|
||||
}
|
||||
|
||||
private fun createFile(): File {
|
||||
//create directory
|
||||
val root: File = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
|
||||
//create file
|
||||
val sdf: SimpleDateFormat = SimpleDateFormat("yyyyMMdd_HHmm")
|
||||
val currentDateandTime: String = sdf.format(Date())
|
||||
val fname: String = saveFileName + currentDateandTime
|
||||
val image: File = File(root, fname)
|
||||
return image
|
||||
}
|
||||
|
||||
private fun chooseImage() {
|
||||
val intent: Intent = Intent()
|
||||
intent.type = "image/*"
|
||||
intent.action = Intent.ACTION_GET_CONTENT
|
||||
fragment!!.startActivityForResult(
|
||||
Intent.createChooser(intent, "Select Picture"),
|
||||
PICK_IMAGE_REQUEST
|
||||
)
|
||||
}
|
||||
|
||||
companion object {
|
||||
val PICK_IMAGE_REQUEST: Int = 71
|
||||
val CAMERA_REQUEST: Int = 1888
|
||||
val MY_CAMERA_PERMISSION_CODE: Int = 100
|
||||
val STORAGE_PERMISSION_CODE: Int = 101
|
||||
var photoURI: Uri? = null
|
||||
}
|
||||
}
|
||||
@@ -1,182 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Global;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Bitmap;
|
||||
import android.net.Uri;
|
||||
import android.os.Environment;
|
||||
import android.provider.MediaStore;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
import static android.app.Activity.RESULT_OK;
|
||||
import static android.os.Environment.DIRECTORY_PICTURES;
|
||||
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 {
|
||||
|
||||
Activity activity;
|
||||
|
||||
public interface FilepathResponse {
|
||||
void processFinish(Uri output);
|
||||
}
|
||||
|
||||
// public FilepathResponse delegate;
|
||||
|
||||
public ImageSelectorResults() {
|
||||
}
|
||||
|
||||
public void Results(Activity activity, int requestCode, int resultCode, Intent data, Uri filePath,
|
||||
ImageView imageView,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);
|
||||
if (imageView.getVisibility() != View.VISIBLE) {
|
||||
imageView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
imageView.setImageBitmap(bitmap);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
finally {
|
||||
if (bitmap != null){
|
||||
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);
|
||||
|
||||
imageView.setImageBitmap(bitmap);
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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() {
|
||||
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
|
||||
File f = new File(photoURI.getPath());
|
||||
Uri contentUri = Uri.fromFile(f);
|
||||
mediaScanIntent.setData(contentUri);
|
||||
activity.sendBroadcast(mediaScanIntent);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import android.Manifest
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.graphics.Bitmap
|
||||
import android.net.Uri
|
||||
import android.os.Environment
|
||||
import android.provider.MediaStore
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.Toast
|
||||
import androidx.core.app.ActivityCompat
|
||||
import h_mal.appttude.com.driver.utils.DateUtils.getDateStamp
|
||||
import h_mal.appttude.com.driver.utils.DateUtils.getDateTimeStamp
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.io.IOException
|
||||
|
||||
class ImageSelectorResults // public FilepathResponse delegate;
|
||||
{
|
||||
lateinit var activity: Activity
|
||||
|
||||
interface FilepathResponse {
|
||||
fun processFinish(output: Uri?)
|
||||
}
|
||||
|
||||
fun Results(
|
||||
activity: Activity, requestCode: Int, resultCode: Int, data: Intent?, filePath: Uri?,
|
||||
imageView: ImageView?, delegate: FilepathResponse
|
||||
) {
|
||||
var filePath: Uri? = filePath
|
||||
this.activity = activity
|
||||
if ((requestCode == ImageSelectorDialog.PICK_IMAGE_REQUEST) && (resultCode == Activity.RESULT_OK
|
||||
) && (data != null) && (data.data != null)
|
||||
) {
|
||||
val uri = data.data
|
||||
var bitmap: Bitmap? = null
|
||||
try {
|
||||
bitmap =
|
||||
MediaStore.Images.Media.getBitmap(activity.contentResolver, uri)
|
||||
if (imageView!!.visibility != View.VISIBLE) {
|
||||
imageView.visibility = View.VISIBLE
|
||||
}
|
||||
imageView.setImageBitmap(bitmap)
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
} finally {
|
||||
if (bitmap != null) {
|
||||
delegate.processFinish(uri)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (requestCode == ImageSelectorDialog.CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
|
||||
//check if we have we have storage rights
|
||||
val permission: Int = 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 {
|
||||
val f: File =
|
||||
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
|
||||
val fname: String = "driver" + getDateStamp() + ".jpg"
|
||||
val image = File(f, fname)
|
||||
val fileOutputStream = FileOutputStream(image)
|
||||
filePath = ImageSelectorDialog.photoURI
|
||||
val bitmap: Bitmap = MediaStore.Images.Media
|
||||
.getBitmap(
|
||||
activity.contentResolver,
|
||||
ImageSelectorDialog.photoURI
|
||||
)
|
||||
imageView!!.setImageBitmap(bitmap)
|
||||
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fileOutputStream)
|
||||
fileOutputStream.flush()
|
||||
fileOutputStream.close()
|
||||
galleryAddPic()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
delegate.processFinish(filePath)
|
||||
}
|
||||
}
|
||||
|
||||
fun Results(
|
||||
activity: Activity,
|
||||
requestCode: Int,
|
||||
resultCode: Int,
|
||||
data: Intent?,
|
||||
filePath: Uri?,
|
||||
delegate: FilepathResponse
|
||||
) {
|
||||
var filePath: Uri? = filePath
|
||||
this.activity = activity
|
||||
if ((requestCode == ImageSelectorDialog.PICK_IMAGE_REQUEST) && (resultCode == Activity.RESULT_OK
|
||||
) && (data != null) && (data.data != null)
|
||||
) {
|
||||
filePath = data.data
|
||||
var bitmap: Bitmap? = null
|
||||
try {
|
||||
bitmap =
|
||||
MediaStore.Images.Media.getBitmap(activity.contentResolver, filePath)
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
} finally {
|
||||
if (bitmap != null) {
|
||||
delegate.processFinish(filePath)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (requestCode == ImageSelectorDialog.CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
|
||||
//check if we have we have storage rights
|
||||
val permission: Int = 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 {
|
||||
val f: File =
|
||||
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
|
||||
val fname: String = "driver" + getDateTimeStamp() + ".jpg"
|
||||
val image: File = File(f, fname)
|
||||
val fileOutputStream: FileOutputStream = FileOutputStream(image)
|
||||
filePath = ImageSelectorDialog.photoURI
|
||||
val bitmap: Bitmap = MediaStore.Images.Media
|
||||
.getBitmap(
|
||||
activity.contentResolver,
|
||||
ImageSelectorDialog.photoURI
|
||||
)
|
||||
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fileOutputStream)
|
||||
fileOutputStream.flush()
|
||||
fileOutputStream.close()
|
||||
galleryAddPic()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
delegate.processFinish(filePath)
|
||||
}
|
||||
}
|
||||
|
||||
private fun galleryAddPic() {
|
||||
val mediaScanIntent: Intent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)
|
||||
val f: File = File(ImageSelectorDialog.photoURI!!.path)
|
||||
val contentUri: Uri = Uri.fromFile(f)
|
||||
mediaScanIntent.data = contentUri
|
||||
activity.sendBroadcast(mediaScanIntent)
|
||||
}
|
||||
}
|
||||
@@ -1,245 +0,0 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import android.content.Context
|
||||
import android.content.ContextWrapper
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
|
||||
class ImageSwiperClass(
|
||||
private val context: Context?,
|
||||
wholeView: View
|
||||
) : ContextWrapper(context) {
|
||||
private var left: ImageView = wholeView.findViewById(R.id.left)
|
||||
private var right: ImageView = wholeView.findViewById(R.id.right)
|
||||
|
||||
var list: List<Any>? = null
|
||||
|
||||
// fun addLocalString(uris: List<Uri>) {
|
||||
// list = uris
|
||||
// }
|
||||
//
|
||||
// fun addFirebaseStrings(uris: List<String>) {
|
||||
// list = uris
|
||||
// }
|
||||
//
|
||||
// private var adapter: SlidingImageViewAdapter? = null
|
||||
// lateinit var viewPager: ViewPager
|
||||
//
|
||||
//
|
||||
// fun reinstantiateList(imageStrings: MutableList<String?>?) {
|
||||
// this.imageStrings = imageStrings
|
||||
// adapter = SlidingImageViewAdapter()
|
||||
// viewPager.adapter = adapter
|
||||
// setArrows()
|
||||
// }
|
||||
//
|
||||
// fun hideDelete() {
|
||||
// delete.hide()
|
||||
// }
|
||||
//
|
||||
// private val leftClick: View.OnClickListener = View.OnClickListener {
|
||||
// viewPager.currentItem = viewPager.currentItem - 1
|
||||
// setArrows()
|
||||
// }
|
||||
// private val rightClick: View.OnClickListener = View.OnClickListener {
|
||||
// viewPager.currentItem = viewPager.currentItem + 1
|
||||
// setArrows()
|
||||
// }
|
||||
//
|
||||
// private fun deleteDialog(position: Int) {
|
||||
// val builder: AlertDialog.Builder = AlertDialog.Builder(context)
|
||||
// builder.setMessage("Are you sure you want to delete?")
|
||||
// .setPositiveButton(
|
||||
// android.R.string.ok
|
||||
// ) { _, _ ->
|
||||
// imageStrings!!.removeAt(position)
|
||||
// viewPager.adapter = adapter
|
||||
// // adapter.notifyDataSetChanged();
|
||||
// }
|
||||
// .setNegativeButton(android.R.string.cancel, null)
|
||||
// .create()
|
||||
// .show()
|
||||
// }
|
||||
//
|
||||
// private fun setArrows() {
|
||||
// with(list) {
|
||||
// when (list) {
|
||||
// isNullOrEmpty() -> { }
|
||||
// isNotEmpty() -> { }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (list?.isNotEmpty()) {
|
||||
// //left arrow
|
||||
// if (viewPager.currentItem > 0) {
|
||||
// setAnimation(left, true)
|
||||
// } else {
|
||||
// setAnimation(left, false)
|
||||
// }
|
||||
//
|
||||
// //right
|
||||
// if (viewPager.currentItem == imageStrings!!.size - 1) {
|
||||
// setAnimation(right, false)
|
||||
// } else {
|
||||
// setAnimation(right, true)
|
||||
// }
|
||||
// }
|
||||
// if (imageStrings == null) {
|
||||
// setAnimation(left, false)
|
||||
// setAnimation(right, false)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private fun setAnimation(view: ImageView, up: Boolean) {
|
||||
// val start: Float
|
||||
// val finish: Float
|
||||
// if (up) {
|
||||
// start = 0.2f
|
||||
// finish = 1.0f
|
||||
// } else {
|
||||
// start = 1.0f
|
||||
// finish = 0.2f
|
||||
// }
|
||||
// val animation1 = AlphaAnimation(start, finish)
|
||||
// animation1.duration = 500
|
||||
// animation1.fillAfter = true
|
||||
// view.alpha = finish
|
||||
// }
|
||||
//
|
||||
// internal inner class SlidingImageViewAdapter : PagerAdapter() {
|
||||
//
|
||||
// override fun getCount(): Int = list?.size ?: 0
|
||||
//
|
||||
// override fun destroyItem(container: ViewGroup, position: Int, item: Any) {
|
||||
// container.removeView(item as View?)
|
||||
// }
|
||||
//
|
||||
// override fun isViewFromObject(view: View, o: Any): Boolean = view == o
|
||||
//
|
||||
// override fun instantiateItem(container: ViewGroup, position: Int): Any {
|
||||
// val pagerPic: View =
|
||||
// LayoutInflater.from(context).inflate(R.layout.insurance_item, container, false)
|
||||
// setArrows()
|
||||
// if (imageStrings != null && imageStrings!!.size > 0) {
|
||||
// mainImage = pagerPic.rootView.findViewById(R.id.main_image)
|
||||
// Picasso.get().load(imageStrings!!.get(position))
|
||||
// .placeholder(R.drawable.choice_img)
|
||||
// .into(MainActivity.loadImage(mainImage))
|
||||
// }
|
||||
// container.addView(pagerPic, 0)
|
||||
// return pagerPic
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// init {
|
||||
// left.setOnClickListener(leftClick)
|
||||
// right.setOnClickListener(rightClick)
|
||||
// viewPager = wholeView.findViewById(R.id.view_pager)
|
||||
// delete = wholeView.findViewById(R.id.delete)
|
||||
// viewPager.addOnPageChangeListener(object : OnPageChangeListener {
|
||||
// override fun onPageScrolled(i: Int, v: Float, i1: Int) {
|
||||
// val animation1: AlphaAnimation = AlphaAnimation(0.2f, 1.0f)
|
||||
// animation1.duration = 200
|
||||
// animation1.fillAfter = true
|
||||
// delete.startAnimation(animation1)
|
||||
// }
|
||||
//
|
||||
// override fun onPageSelected(i: Int) {
|
||||
// setArrows()
|
||||
// delete.setOnClickListener { deleteDialog(i) }
|
||||
// }
|
||||
//
|
||||
// override fun onPageScrollStateChanged(i: Int) {}
|
||||
// })
|
||||
// }
|
||||
}
|
||||
@@ -1,121 +0,0 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import android.content.Intent
|
||||
import android.graphics.Bitmap
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.Environment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.WindowManager
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.github.chrisbanes.photoview.PhotoView
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.utils.DateUtils
|
||||
import java.io.File
|
||||
import java.io.FileNotFoundException
|
||||
import java.io.FileOutputStream
|
||||
import java.io.IOException
|
||||
|
||||
|
||||
class ImageViewClass {
|
||||
fun open(bitmap: Bitmap?) {
|
||||
Companion.bitmap = bitmap
|
||||
// executeFragment(ImageViewerFragment())
|
||||
}
|
||||
|
||||
class ImageViewerFragment : Fragment() {
|
||||
private lateinit var viewer: View
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
// Inflate the layout for this fragment
|
||||
viewer = inflater.inflate(R.layout.fragment_image_viewer, container, false)
|
||||
val fab: FloatingActionButton = viewer.findViewById(R.id.download_pic)
|
||||
if (bitmap != null) {
|
||||
val photoView: PhotoView = viewer.findViewById(R.id.photo_view)
|
||||
photoView.setImageBitmap(bitmap)
|
||||
fab.setOnClickListener(object : View.OnClickListener {
|
||||
override fun onClick(v: View) {
|
||||
try {
|
||||
downloadPic()
|
||||
} catch (e: FileNotFoundException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
return viewer
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
(activity as AppCompatActivity?)!!.supportActionBar!!.hide()
|
||||
requireActivity().window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
super.onStop()
|
||||
(activity as AppCompatActivity?)!!.supportActionBar!!.show()
|
||||
requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
||||
}
|
||||
|
||||
@Throws(FileNotFoundException::class)
|
||||
private fun downloadPic() {
|
||||
val f: File =
|
||||
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
|
||||
val fname: String = "driver" + DateUtils.getDateTimeStamp() + ".jpg"
|
||||
val image: File = File(f, fname)
|
||||
val fileOutputStream: FileOutputStream = FileOutputStream(image)
|
||||
bitmap!!.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream)
|
||||
try {
|
||||
fileOutputStream.flush()
|
||||
fileOutputStream.close()
|
||||
val mediaScanIntent: Intent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)
|
||||
val contentUri: Uri = Uri.fromFile(image)
|
||||
mediaScanIntent.data = contentUri
|
||||
requireActivity().sendBroadcast(mediaScanIntent)
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
val IMAGE_VALUE: String = "image"
|
||||
private var bitmap: Bitmap? = null
|
||||
}
|
||||
}
|
||||
@@ -1,155 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
package h_mal.appttude.com.driver.Global
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.AlertDialog
|
||||
import android.content.DialogInterface
|
||||
import android.widget.ImageView
|
||||
|
||||
|
||||
class SetApprovalDialog constructor(
|
||||
var statusCode: Int,
|
||||
private val activity: Activity,
|
||||
private val userId: String?,
|
||||
position: Int,
|
||||
private val imageView: ImageView
|
||||
) {
|
||||
private val groupNames: Array<String> = arrayOf("Pending", "Denied", "Approved")
|
||||
private val approvalNameString: String
|
||||
fun init() {
|
||||
val checkedItem: Int
|
||||
when (statusCode) {
|
||||
FirebaseClass.APPROVAL_PENDING -> checkedItem = 0
|
||||
FirebaseClass.APPROVAL_DENIED -> checkedItem = 1
|
||||
FirebaseClass.APPROVED -> checkedItem = 2
|
||||
else -> checkedItem = -1
|
||||
}
|
||||
val alertBuilder: AlertDialog.Builder = AlertDialog.Builder(
|
||||
activity
|
||||
)
|
||||
alertBuilder.setSingleChoiceItems(groupNames, checkedItem, singleChoiceListener)
|
||||
// .setPositiveButton(android.R.string.ok, submit);
|
||||
alertBuilder.create().ownerActivity
|
||||
alertBuilder.show()
|
||||
}
|
||||
|
||||
var singleChoiceListener: DialogInterface.OnClickListener =
|
||||
object : DialogInterface.OnClickListener {
|
||||
override fun onClick(dialog: DialogInterface, which: Int) {
|
||||
when (which) {
|
||||
0 -> {
|
||||
statusCode = FirebaseClass.APPROVAL_PENDING
|
||||
publishStatuscode(statusCode, dialog)
|
||||
return
|
||||
}
|
||||
1 -> {
|
||||
statusCode = FirebaseClass.APPROVAL_DENIED
|
||||
publishStatuscode(statusCode, dialog)
|
||||
return
|
||||
}
|
||||
2 -> {
|
||||
statusCode = FirebaseClass.APPROVED
|
||||
publishStatuscode(statusCode, dialog)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun publishStatuscode(status: Int, dialog: DialogInterface) {
|
||||
|
||||
// if (!(approvalNameString == "")) {
|
||||
// MainActivity.mDatabase!!.child(FirebaseClass.USER_FIREBASE).child(
|
||||
// (userId)!!
|
||||
// ).child(FirebaseClass.USER_APPROVALS).child(approvalNameString)
|
||||
// .setValue(status).addOnCompleteListener { task ->
|
||||
// if (task.isSuccessful) {
|
||||
// Toast.makeText(activity, "Status change successful", Toast.LENGTH_SHORT)
|
||||
// .show()
|
||||
// imageView.setImageResource(
|
||||
// MainActivity.approvalsClass!!.setImageResource(
|
||||
// status
|
||||
// )
|
||||
// )
|
||||
// dialog.dismiss()
|
||||
// } else {
|
||||
// Toast.makeText(
|
||||
// activity,
|
||||
// "Status change unsuccessful",
|
||||
// Toast.LENGTH_SHORT
|
||||
// ).show()
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// } else {
|
||||
// Toast.makeText(activity, "Could not push status", Toast.LENGTH_SHORT).show()
|
||||
// }
|
||||
}
|
||||
|
||||
private fun getElement(i: Int): String {
|
||||
var element: String = ""
|
||||
when (i) {
|
||||
0 -> element =
|
||||
FirebaseClass.DRIVER_DETAILS_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
|
||||
1 -> element =
|
||||
FirebaseClass.DRIVERS_LICENSE_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
|
||||
2 -> element =
|
||||
FirebaseClass.PRIVATE_HIRE_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
|
||||
3 -> element =
|
||||
FirebaseClass.VEHICLE_DETAILS_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
|
||||
4 -> element =
|
||||
FirebaseClass.INSURANCE_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
|
||||
5 -> element =
|
||||
FirebaseClass.MOT_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
|
||||
6 -> element =
|
||||
FirebaseClass.LOG_BOOK_FIREBASE + FirebaseClass.APPROVAL_CONSTANT
|
||||
7 -> element =
|
||||
FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE + FirebaseClass.APPROVAL_CONSTANT
|
||||
}
|
||||
return element
|
||||
}
|
||||
|
||||
init {
|
||||
approvalNameString = getElement(position)
|
||||
init()
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -1,397 +0,0 @@
|
||||
package h_mal.appttude.com.driver;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Activity;
|
||||
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.annotation.NonNull;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.support.design.widget.NavigationView;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.app.ActionBarDrawerToggle;
|
||||
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 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, ViewController.ViewControllerInterface {
|
||||
|
||||
private static String TAG = MainActivity.class.getSimpleName();
|
||||
|
||||
public static FragmentManager fragmentManager;
|
||||
public static FirebaseAuth auth;
|
||||
public static FirebaseStorage storage;
|
||||
public static StorageReference storageReference;
|
||||
public static DatabaseReference mDatabase;
|
||||
|
||||
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 = {
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE,
|
||||
Manifest.permission.WRITE_EXTERNAL_STORAGE
|
||||
};
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
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();
|
||||
|
||||
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);
|
||||
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
|
||||
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
|
||||
drawer.addDrawerListener(toggle);
|
||||
toggle.syncState();
|
||||
|
||||
navigationView = (NavigationView) findViewById(R.id.nav_view);
|
||||
navigationView.setNavigationItemSelectedListener(this);
|
||||
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 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 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);
|
||||
TextView driverName = header.findViewById(R.id.driver_name);
|
||||
ImageView driverImage = header.findViewById(R.id.profileImage);
|
||||
|
||||
if (auth != null){
|
||||
FirebaseUser user = auth.getCurrentUser();
|
||||
if (user.getEmail() != null){
|
||||
driverEmail.setText(user.getEmail());
|
||||
}
|
||||
if (user.getDisplayName() != null){
|
||||
driverName.setText(user.getDisplayName());
|
||||
}
|
||||
|
||||
Picasso.get()
|
||||
.load(user.getPhotoUrl())
|
||||
.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();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
if (drawer.isDrawerOpen(GravityCompat.START)) {
|
||||
drawer.closeDrawer(GravityCompat.START);
|
||||
} else {
|
||||
if (fragmentManager.getBackStackEntryCount() > 1) {
|
||||
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)
|
||||
.setTitle("Leave?")
|
||||
.setMessage("Are you sure you want to exit?")
|
||||
.setNegativeButton(android.R.string.no, null)
|
||||
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface arg0, int arg1) {
|
||||
finish();
|
||||
System.exit(0);
|
||||
}
|
||||
}).create().show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
// Handle action bar item clicks here. The action bar will
|
||||
// automatically handle clicks on the Home/Up button, so long
|
||||
// as you specify a parent activity in AndroidManifest.xml.
|
||||
int id = item.getItemId();
|
||||
|
||||
//noinspection SimplifiableIfStatement
|
||||
if (id == R.id.action_settings) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
@SuppressWarnings("StatementWithEmptyBody")
|
||||
@Override
|
||||
public boolean onNavigationItemSelected(MenuItem item) {
|
||||
// Handle navigation view item clicks here.
|
||||
int id = item.getItemId();
|
||||
|
||||
if (id == R.id.nav_camera) {
|
||||
// Handle the camera action
|
||||
executeFragment(new profileFragment());
|
||||
} else if (id == R.id.nav_gallery) {
|
||||
executeFragment(new DriverOverallFragment());
|
||||
} else if (id == R.id.nav_slideshow) {
|
||||
executeFragment(new VehicleOverallFragment());
|
||||
}
|
||||
|
||||
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
drawer.closeDrawer(GravityCompat.START);
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void verifyStoragePermissions(Activity activity) {
|
||||
// Check if we have write permission
|
||||
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
|
||||
if (permission != PackageManager.PERMISSION_GRANTED) {
|
||||
// We don't have permission so prompt the user
|
||||
ActivityCompat.requestPermissions(
|
||||
activity,
|
||||
PERMISSIONS_STORAGE,
|
||||
REQUEST_EXTERNAL_STORAGE
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package h_mal.appttude.com.driver.Objects
|
||||
|
||||
|
||||
|
||||
class ApprovalsObject {
|
||||
var driver_details_approval: Int = 0
|
||||
var driver_license_approval: Int = 0
|
||||
var private_hire_approval: Int = 0
|
||||
var vehicle_details_approval: Int = 0
|
||||
var mot_details_approval: Int = 0
|
||||
var insurance_details_approval: Int = 0
|
||||
var log_book_approval: Int = 0
|
||||
var ph_car_approval: Int = 0
|
||||
|
||||
constructor()
|
||||
constructor(
|
||||
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: Int
|
||||
) {
|
||||
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
|
||||
ph_car_approval = private_hire_vehicle_approval
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package h_mal.appttude.com.driver.Objects
|
||||
|
||||
import h_mal.appttude.com.driver.model.DriversLicenseObject
|
||||
import h_mal.appttude.com.driver.model.MotObject
|
||||
import h_mal.appttude.com.driver.model.PrivateHireObject
|
||||
import h_mal.appttude.com.driver.model.VehicleProfileObject
|
||||
import java.util.*
|
||||
|
||||
class ArchiveObject {
|
||||
var driver_license: HashMap<String, DriversLicenseObject>? = null
|
||||
var private_hire: HashMap<String, PrivateHireObject>? = null
|
||||
var vehicle_details: HashMap<String, VehicleProfileObject>? = null
|
||||
var insurance_details: HashMap<String, InsuranceObject>? = null
|
||||
var mot_details: HashMap<String, MotObject>? = null
|
||||
var log_book: HashMap<String, LogbookObject>? = null
|
||||
var ph_car: HashMap<String, PrivateHireVehicleObject>? = null
|
||||
|
||||
constructor()
|
||||
constructor(
|
||||
driver_license: HashMap<String, DriversLicenseObject>?,
|
||||
private_hire: HashMap<String, PrivateHireObject>?,
|
||||
vehicle_details: HashMap<String, VehicleProfileObject>?,
|
||||
insurance_details: HashMap<String, InsuranceObject>?,
|
||||
mot_details: HashMap<String, MotObject>?,
|
||||
log_book: HashMap<String, LogbookObject>?,
|
||||
private_hire_vehicle: HashMap<String, PrivateHireVehicleObject>?
|
||||
) {
|
||||
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.ph_car = private_hire_vehicle
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Objects;
|
||||
|
||||
public class DriverProfileObject {
|
||||
|
||||
public String driverPic;
|
||||
public String forenames;
|
||||
public String address;
|
||||
public String postcode;
|
||||
public String dob;
|
||||
public String ni;
|
||||
public String dateFirst;
|
||||
|
||||
public DriverProfileObject() {
|
||||
}
|
||||
|
||||
public DriverProfileObject(String driverPic, String forenames, String address,
|
||||
String postcode, String dob, String ni, String dateFirst) {
|
||||
this.driverPic = driverPic;
|
||||
this.forenames = forenames;
|
||||
this.address = address;
|
||||
this.postcode = postcode;
|
||||
this.dob = dob;
|
||||
this.ni = ni;
|
||||
this.dateFirst = dateFirst;
|
||||
}
|
||||
|
||||
public String getDriverPic() {
|
||||
return driverPic;
|
||||
}
|
||||
|
||||
public String getForenames() {
|
||||
return forenames;
|
||||
}
|
||||
|
||||
public String getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public String getPostcode() {
|
||||
return postcode;
|
||||
}
|
||||
|
||||
public String getDob() {
|
||||
return dob;
|
||||
}
|
||||
|
||||
public String getNi() {
|
||||
return ni;
|
||||
}
|
||||
|
||||
public String getDateFirst() {
|
||||
return dateFirst;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Objects;
|
||||
|
||||
public class DriversLicenseObject {
|
||||
|
||||
public String licenseImageString;
|
||||
public String licenseNumber;
|
||||
public String licenseExpiry;
|
||||
|
||||
public DriversLicenseObject() {
|
||||
}
|
||||
|
||||
public DriversLicenseObject(String licenseImageString, String licenseNumber, String licenseExpiry) {
|
||||
this.licenseImageString = licenseImageString;
|
||||
this.licenseNumber = licenseNumber;
|
||||
this.licenseExpiry = licenseExpiry;
|
||||
}
|
||||
|
||||
public String getLicenseImageString() {
|
||||
return licenseImageString;
|
||||
}
|
||||
|
||||
public String getLicenseNumber() {
|
||||
return licenseNumber;
|
||||
}
|
||||
|
||||
public String getLicenseExpiry() {
|
||||
return licenseExpiry;
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Objects;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package h_mal.appttude.com.driver.Objects
|
||||
|
||||
|
||||
|
||||
data class InsuranceObject (
|
||||
var photoStrings: MutableList<String?>? = null,
|
||||
var insurerName: String? = null,
|
||||
var expiryDate: String? = null
|
||||
)
|
||||
@@ -1,23 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Objects;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package h_mal.appttude.com.driver.Objects
|
||||
|
||||
|
||||
|
||||
class LogbookObject {
|
||||
var photoString: String? = null
|
||||
var v5cnumber: String? = null
|
||||
|
||||
constructor(photoString: String?, v5cnumber: String?) {
|
||||
this.photoString = photoString
|
||||
this.v5cnumber = v5cnumber
|
||||
}
|
||||
|
||||
constructor()
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Objects;
|
||||
|
||||
public class PrivateHireObject {
|
||||
|
||||
public String phImageString;
|
||||
public String phNumber;
|
||||
public String phExpiry;
|
||||
|
||||
public PrivateHireObject() {
|
||||
}
|
||||
|
||||
public PrivateHireObject(String phImageString, String phNumber, String phExpiry) {
|
||||
this.phImageString = phImageString;
|
||||
this.phNumber = phNumber;
|
||||
this.phExpiry = phExpiry;
|
||||
}
|
||||
|
||||
public String getPhImageString() {
|
||||
return phImageString;
|
||||
}
|
||||
|
||||
public String getPhNumber() {
|
||||
return phNumber;
|
||||
}
|
||||
|
||||
public String getPhExpiry() {
|
||||
return phExpiry;
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package h_mal.appttude.com.driver.Objects
|
||||
|
||||
|
||||
|
||||
class PrivateHireVehicleObject(
|
||||
var phCarImageString: String? = null,
|
||||
var phCarNumber: String? = null,
|
||||
var phCarExpiry: String? = null
|
||||
)
|
||||
@@ -1,29 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package h_mal.appttude.com.driver.Objects
|
||||
|
||||
|
||||
|
||||
class UserObject {
|
||||
var profileName: String? = null
|
||||
var profileEmail: String? = null
|
||||
var profilePicString: String? = null
|
||||
|
||||
constructor()
|
||||
constructor(profileName: String?, profileEmail: String?, profilePicString: String?) {
|
||||
this.profileName = profileName
|
||||
this.profileEmail = profileEmail
|
||||
this.profilePicString = profilePicString
|
||||
}
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
package h_mal.appttude.com.driver.Objects;
|
||||
|
||||
public class VehicleProfileObject {
|
||||
|
||||
public String reg;
|
||||
public String make;
|
||||
public String model;
|
||||
public String colour;
|
||||
public String keeperName;
|
||||
public String keeperAddress;
|
||||
public String keeperPostCode;
|
||||
public String startDate;
|
||||
public boolean seized;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public String getMake() {
|
||||
return make;
|
||||
}
|
||||
|
||||
public String getModel() {
|
||||
return model;
|
||||
}
|
||||
|
||||
public String getColour() {
|
||||
return colour;
|
||||
}
|
||||
|
||||
public String getKeeperName() {
|
||||
return keeperName;
|
||||
}
|
||||
|
||||
public String getKeeperAddress() {
|
||||
return keeperAddress;
|
||||
}
|
||||
|
||||
public String getKeeperPostCode() {
|
||||
return keeperPostCode;
|
||||
}
|
||||
|
||||
public String getStartDate() {
|
||||
return startDate;
|
||||
}
|
||||
|
||||
public boolean isSeized() {
|
||||
return seized;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package h_mal.appttude.com.driver.Objects
|
||||
|
||||
import h_mal.appttude.com.driver.Objects.WholeObject.DriverProfile
|
||||
import h_mal.appttude.com.driver.Objects.WholeObject.VehicleProfile
|
||||
|
||||
|
||||
class WholeDriverObject {
|
||||
var driver_profile: DriverProfile? = null
|
||||
var role: String? = null
|
||||
var archive: ArchiveObject? = null
|
||||
var user_details: UserObject? = null
|
||||
var vehicle_profile: VehicleProfile? = null
|
||||
var approvalsObject: ApprovalsObject? = null
|
||||
var driver_number: String? = null
|
||||
|
||||
constructor(
|
||||
driver_profile: DriverProfile?,
|
||||
role: String?,
|
||||
archive: ArchiveObject?,
|
||||
user_details: UserObject?,
|
||||
vehicle_profile: VehicleProfile?,
|
||||
approvalsObject: ApprovalsObject?,
|
||||
driver_number: String?
|
||||
) {
|
||||
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
|
||||
}
|
||||
|
||||
constructor()
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package h_mal.appttude.com.driver.Objects.WholeObject
|
||||
|
||||
import h_mal.appttude.com.driver.model.DriverProfileObject
|
||||
import h_mal.appttude.com.driver.model.DriversLicenseObject
|
||||
import h_mal.appttude.com.driver.model.PrivateHireObject
|
||||
|
||||
|
||||
class DriverProfile {
|
||||
var driver_profile: DriverProfileObject? = null
|
||||
var driver_license: DriversLicenseObject? = null
|
||||
var private_hire: PrivateHireObject? = null
|
||||
|
||||
constructor(
|
||||
driver_profile: DriverProfileObject?,
|
||||
driver_license: DriversLicenseObject?,
|
||||
private_hire: PrivateHireObject?
|
||||
) {
|
||||
this.driver_profile = driver_profile
|
||||
this.driver_license = driver_license
|
||||
this.private_hire = private_hire
|
||||
}
|
||||
|
||||
constructor()
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package h_mal.appttude.com.driver.Objects.WholeObject
|
||||
|
||||
import android.os.Parcel
|
||||
import android.os.Parcelable
|
||||
import h_mal.appttude.com.driver.Objects.WholeDriverObject
|
||||
|
||||
|
||||
class MappedObject : Parcelable {
|
||||
var userId: String? = null
|
||||
var wholeDriverObject: WholeDriverObject? = null
|
||||
|
||||
constructor(userId: String?, wholeDriverObject: WholeDriverObject?) {
|
||||
this.userId = userId
|
||||
this.wholeDriverObject = wholeDriverObject
|
||||
}
|
||||
|
||||
constructor()
|
||||
protected constructor(`in`: Parcel) {
|
||||
userId = `in`.readString()
|
||||
}
|
||||
|
||||
override fun describeContents(): Int {
|
||||
return 0
|
||||
}
|
||||
|
||||
override fun writeToParcel(dest: Parcel, flags: Int) {
|
||||
dest.writeString(userId)
|
||||
}
|
||||
|
||||
companion object {
|
||||
val CREATOR: Parcelable.Creator<MappedObject?> = object : Parcelable.Creator<MappedObject?> {
|
||||
override fun createFromParcel(`in`: Parcel): MappedObject? {
|
||||
return MappedObject(`in`)
|
||||
}
|
||||
|
||||
override fun newArray(size: Int): Array<MappedObject?> {
|
||||
return arrayOfNulls(size)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
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.PrivateHireVehicleObject
|
||||
import h_mal.appttude.com.driver.model.MotObject
|
||||
import h_mal.appttude.com.driver.model.VehicleProfileObject
|
||||
|
||||
|
||||
class VehicleProfile {
|
||||
var insurance_details: InsuranceObject? = null
|
||||
var log_book: LogbookObject? = null
|
||||
var mot_details: MotObject? = null
|
||||
var vehicle_details: VehicleProfileObject? = null
|
||||
var privateHireVehicleObject: PrivateHireVehicleObject? = null
|
||||
|
||||
constructor()
|
||||
|
||||
// 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;
|
||||
// }
|
||||
constructor(
|
||||
insurance_details: InsuranceObject?,
|
||||
log_book: LogbookObject?,
|
||||
mot_details: MotObject?,
|
||||
vehicle_details: VehicleProfileObject?,
|
||||
private_hire_vehicle: PrivateHireVehicleObject?
|
||||
) {
|
||||
this.insurance_details = insurance_details
|
||||
this.log_book = log_book
|
||||
this.mot_details = mot_details
|
||||
this.vehicle_details = vehicle_details
|
||||
privateHireVehicleObject = private_hire_vehicle
|
||||
}
|
||||
}
|
||||
@@ -1,305 +0,0 @@
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
package h_mal.appttude.com.driver.SuperUser
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.util.DisplayMetrics
|
||||
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 androidx.fragment.app.Fragment
|
||||
import h_mal.appttude.com.driver.Global.FirebaseClass
|
||||
import h_mal.appttude.com.driver.Global.SetApprovalDialog
|
||||
import h_mal.appttude.com.driver.ui.driver.MainActivity
|
||||
import h_mal.appttude.com.driver.Objects.ArchiveObject
|
||||
import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.ui.driver.vehicleprofile.InsuranceFragment
|
||||
import h_mal.appttude.com.driver.ui.driver.driverprofile.DriverLicenseFragment
|
||||
import h_mal.appttude.com.driver.ui.driver.driverprofile.DriverProfileFragment
|
||||
import h_mal.appttude.com.driver.ui.driver.driverprofile.PrivateHireLicenseFragment
|
||||
import h_mal.appttude.com.driver.ui.driver.vehicleprofile.LogbookFragment
|
||||
import h_mal.appttude.com.driver.ui.driver.vehicleprofile.MotFragment
|
||||
import h_mal.appttude.com.driver.ui.driver.vehicleprofile.PrivateHireVehicleFragment
|
||||
import h_mal.appttude.com.driver.ui.driver.vehicleprofile.VehicleProfileFragment
|
||||
|
||||
|
||||
class ApprovalListAdapter(
|
||||
val activity: Activity,
|
||||
objects: Array<MappedObject>
|
||||
): ArrayAdapter<MappedObject?>(activity, 0, objects) {
|
||||
|
||||
var mappedObject: MappedObject = objects[0]
|
||||
|
||||
var names: Array<String> = arrayOf(
|
||||
"Driver Profile",
|
||||
"Driver License",
|
||||
"Private Hire",
|
||||
"Vehicle Profile",
|
||||
"Insurance",
|
||||
"MOT",
|
||||
"Logbook",
|
||||
"P/H Vehicle"
|
||||
)
|
||||
|
||||
|
||||
var approvalCode: Int = 0
|
||||
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
|
||||
var listItemView: View? = convertView
|
||||
if (listItemView == null) {
|
||||
listItemView = LayoutInflater.from(activity).inflate(
|
||||
R.layout.approval_list_grid_item, parent, false
|
||||
)
|
||||
}
|
||||
// approvalCode = getApprovalStatusCode(position)
|
||||
// val textView: TextView = listItemView!!.findViewById(R.id.approval_text)
|
||||
// textView.text = names.get(position)
|
||||
// val imageView: ImageView = listItemView.findViewById(R.id.approval_iv)
|
||||
// imageView.setImageResource(
|
||||
// MainActivity.approvalsClass!!.setImageResource(
|
||||
// approvalCode
|
||||
// )
|
||||
// )
|
||||
// imageView.setOnClickListener {
|
||||
// SetApprovalDialog(
|
||||
// approvalCode,
|
||||
// activity,
|
||||
// mappedObject.userId,
|
||||
// position,
|
||||
// imageView
|
||||
// )
|
||||
// }
|
||||
// val archiveImage: ImageView = listItemView.findViewById(R.id.archive_icon)
|
||||
// mappedObject.wholeDriverObject?.archive?.let {
|
||||
//
|
||||
//
|
||||
// archiveImage.visibility = getArchive(
|
||||
// position,
|
||||
// it
|
||||
// )
|
||||
// archiveImage.setOnClickListener {
|
||||
// var s: String? = null
|
||||
// when (position) {
|
||||
// 1 -> s = FirebaseClass.DRIVERS_LICENSE_FIREBASE
|
||||
// 2 -> s = FirebaseClass.PRIVATE_HIRE_FIREBASE
|
||||
// 3 -> s = FirebaseClass.VEHICLE_DETAILS_FIREBASE
|
||||
// 4 -> s = FirebaseClass.INSURANCE_FIREBASE
|
||||
// 5 -> s = FirebaseClass.MOT_FIREBASE
|
||||
// 6 -> s = FirebaseClass.LOG_BOOK_FIREBASE
|
||||
// 7 -> s = FirebaseClass.PRIVATE_HIRE_VEHICLE_LICENSE
|
||||
// }
|
||||
//// executeFragment(ArchiveFragment(), mappedObject.userId, s)
|
||||
// }
|
||||
// }
|
||||
// listItemView.setOnClickListener(View.OnClickListener { getFragment(position) })
|
||||
// listItemView.minimumHeight = parent.height / 4
|
||||
// listItemView.setPadding(
|
||||
// convertDpToPixel(9f, context).toInt(),
|
||||
// convertDpToPixel(9f, context).toInt(),
|
||||
// convertDpToPixel(9f, context).toInt(),
|
||||
// convertDpToPixel(9f, context).toInt()
|
||||
// )
|
||||
return (listItemView)!!
|
||||
}
|
||||
|
||||
// override fun getCount(): Int {
|
||||
// return 8
|
||||
// }
|
||||
//
|
||||
// private fun getArchive(i: Int, archiveObject: ArchiveObject?): Int {
|
||||
// var o: Any? = null
|
||||
// val visible: Int
|
||||
// when (i) {
|
||||
// 0 -> { }
|
||||
// 1 -> o = archiveObject!!.driver_license
|
||||
// 2 -> o = archiveObject!!.private_hire
|
||||
// 3 -> o = archiveObject!!.vehicle_details
|
||||
// 4 -> o = archiveObject!!.insurance_details
|
||||
// 5 -> o = archiveObject!!.mot_details
|
||||
// 6 -> o = archiveObject!!.log_book
|
||||
// 7 -> o = archiveObject!!.ph_car
|
||||
// }
|
||||
// if (o != null) {
|
||||
// visible = View.VISIBLE
|
||||
// } else {
|
||||
// visible = View.GONE
|
||||
// }
|
||||
// return visible
|
||||
// }
|
||||
//
|
||||
// private fun getFragment(i: Int) {
|
||||
// lateinit var f: Fragment
|
||||
// val driverProfile by lazy { mappedObject.wholeDriverObject?.driver_profile }
|
||||
// val vehicleProfile by lazy { mappedObject.wholeDriverObject?.vehicle_profile }
|
||||
// val o: Any? = when (i) {
|
||||
// 0 -> {
|
||||
// f = DriverProfileFragment()
|
||||
// driverProfile?.driver_profile
|
||||
// }
|
||||
// 1 -> {
|
||||
// f = DriverLicenseFragment()
|
||||
// driverProfile?.driver_license
|
||||
// }
|
||||
// 2 -> {
|
||||
// f = PrivateHireLicenseFragment()
|
||||
// driverProfile?.private_hire
|
||||
// }
|
||||
// 3 -> {
|
||||
// f = VehicleProfileFragment()
|
||||
// vehicleProfile?.vehicle_details
|
||||
// }
|
||||
// 4 -> {
|
||||
// f = InsuranceFragment()
|
||||
// vehicleProfile?.insurance_details
|
||||
// }
|
||||
// 5 -> {
|
||||
// f = MotFragment()
|
||||
// vehicleProfile?.insurance_details
|
||||
// }
|
||||
// 6 -> {
|
||||
// f = LogbookFragment()
|
||||
// vehicleProfile?.log_book
|
||||
// }
|
||||
// 7 -> {
|
||||
// f = PrivateHireVehicleFragment()
|
||||
// vehicleProfile?.privateHireVehicleObject
|
||||
// }
|
||||
// else -> null
|
||||
// }
|
||||
// if (o == null) {
|
||||
//// executeFragment(f, mappedObject.userId)
|
||||
// } else {
|
||||
// MainActivity.archiveClass.openDialogArchive(
|
||||
// context, o, mappedObject.userId, f
|
||||
// )
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private fun getApprovalStatusCode(i: Int): Int {
|
||||
// val statusCode = mappedObject.wholeDriverObject?.approvalsObject?.let{
|
||||
// when (i) {
|
||||
// 0 -> it.driver_details_approval
|
||||
// 1 -> it.driver_license_approval
|
||||
// 2 -> it.private_hire_approval
|
||||
// 3 -> it.vehicle_details_approval
|
||||
// 4 -> it.insurance_details_approval
|
||||
// 5 -> it.mot_details_approval
|
||||
// 6 -> it.log_book_approval
|
||||
// 7 -> it.ph_car_approval
|
||||
// else -> FirebaseClass.NO_DATE_PRESENT
|
||||
// }
|
||||
// }
|
||||
// return statusCode ?: FirebaseClass.NO_DATE_PRESENT
|
||||
// }
|
||||
//
|
||||
// companion object {
|
||||
// fun convertDpToPixel(dp: Float, context: Context): Float {
|
||||
// return dp * (context.resources
|
||||
// .displayMetrics.densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT)
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
package h_mal.appttude.com.driver.SuperUser
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import androidx.cardview.widget.CardView
|
||||
|
||||
|
||||
class DriverStatusClass : View.OnClickListener {
|
||||
var userId: String? = null
|
||||
var cardView: CardView? = null
|
||||
var context: Context? = null
|
||||
var currentSelection: Boolean = false
|
||||
override fun onClick(v: View) {
|
||||
val choices: Array<String> = arrayOf("Active", "Inactive")
|
||||
val alertDialog: AlertDialog.Builder = AlertDialog.Builder(context)
|
||||
var selection: Int = -1
|
||||
if (currentSelection) {
|
||||
selection = 0
|
||||
} else if (!currentSelection) {
|
||||
selection = 1
|
||||
}
|
||||
alertDialog.setSingleChoiceItems(
|
||||
choices,
|
||||
selection
|
||||
) { dialog, which -> }
|
||||
alertDialog.create().show()
|
||||
}
|
||||
|
||||
private fun SetStatus(status: Boolean) {
|
||||
// MainActivity.mDatabase!!.child(FirebaseClass.USER_FIREBASE)
|
||||
// .child((userId)!!).child(FirebaseClass.DRIVER_STATUS).setValue(status)
|
||||
// .addOnCompleteListener { task ->
|
||||
// if (task.isSuccessful) {
|
||||
// cardView!!.setBackgroundColor(setStatusColour(status))
|
||||
// } else {
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
private fun setStatusColour(b: Boolean): Int {
|
||||
if (b) {
|
||||
return android.R.color.holo_green_dark
|
||||
} else {
|
||||
return android.R.color.holo_red_dark
|
||||
}
|
||||
} // public int getOverApprovalStatusCode(WholeDriverObject wholeDriverObject){
|
||||
//
|
||||
// if (wholeDriverObject.approvalsObject != null){
|
||||
// ApprovalsObject approvalsObject = wholeDriverObject.approvalsObject;
|
||||
//
|
||||
// int[] ints = new int[]{approvalsObject.getDriver_details_approval(),
|
||||
// approvalsObject.driver_license_approval,
|
||||
// approvalsObject.private_hire_approval,
|
||||
// approvalsObject.vehicle_details_approval,
|
||||
// approvalsObject.insurance_details_approval,
|
||||
// approvalsObject.mot_details_approval,
|
||||
// approvalsObject.log_book_approval,
|
||||
// approvalsObject.ph_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;
|
||||
// }
|
||||
}
|
||||
@@ -1,182 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
package h_mal.appttude.com.driver.SuperUser
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.EditText
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.squareup.picasso.Picasso
|
||||
import h_mal.appttude.com.driver.ui.driver.MainActivity
|
||||
import h_mal.appttude.com.driver.Objects.UserObject
|
||||
import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
|
||||
class RecyclerViewAdapter constructor(var context: Context?, var objects: List<MappedObject>?) :
|
||||
RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||
override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): RecyclerView.ViewHolder {
|
||||
val viewCurrent: View =
|
||||
LayoutInflater.from(context).inflate(R.layout.list_item_layout, viewGroup, false)
|
||||
return ViewHolderMain(viewCurrent)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(viewHolder: RecyclerView.ViewHolder, i: Int) {
|
||||
val viewHolderCurrent: ViewHolderMain = viewHolder as ViewHolderMain
|
||||
val mappedObject: MappedObject = objects!!.get(i)
|
||||
val `object`: UserObject? = mappedObject.wholeDriverObject?.user_details
|
||||
if (`object`!!.profilePicString != null) {
|
||||
Picasso.get()
|
||||
.load(`object`.profilePicString)
|
||||
.resize(128, 128)
|
||||
.placeholder(R.drawable.choice_img_round)
|
||||
.into(viewHolderCurrent.profilePicImage)
|
||||
} else {
|
||||
viewHolderCurrent.profilePicImage.setImageResource(R.drawable.choice_img_round)
|
||||
}
|
||||
viewHolderCurrent.userNameTextView.setText(`object`.profileName)
|
||||
viewHolderCurrent.userEmailTextView.setText(`object`.profileEmail)
|
||||
if (mappedObject.wholeDriverObject?.driver_number == null) {
|
||||
viewHolderCurrent.driverNo.text = "0"
|
||||
} else {
|
||||
val s: String = mappedObject.wholeDriverObject?.driver_number.toString()
|
||||
viewHolderCurrent.driverNo.text = s
|
||||
}
|
||||
viewHolderCurrent.driverNo.setOnClickListener {
|
||||
val builder: AlertDialog.Builder = AlertDialog.Builder(
|
||||
context
|
||||
)
|
||||
val input: EditText = EditText(context)
|
||||
val layout: LinearLayout = LinearLayout(context)
|
||||
layout.orientation = LinearLayout.VERTICAL
|
||||
layout.setPadding(28, 0, 56, 0)
|
||||
input.setText(viewHolderCurrent.driverNo.text.toString())
|
||||
input.setSelectAllOnFocus(true)
|
||||
layout.addView(input)
|
||||
builder.setTitle("Change Driver Number")
|
||||
.setView(layout)
|
||||
.setPositiveButton(
|
||||
"Submit"
|
||||
) { dialog, which ->
|
||||
|
||||
}.create()
|
||||
.show()
|
||||
}
|
||||
// viewHolderCurrent.profileApprovalImage.setImageResource(
|
||||
// MainActivity.approvalsClass!!.getOverApprovalStatusCode(mappedObject.wholeDriverObject)
|
||||
// )
|
||||
viewHolderCurrent.itemView.setOnClickListener {
|
||||
val bundle: Bundle = Bundle()
|
||||
bundle.putParcelable("mapped", mappedObject)
|
||||
// executeFragment(UserMainFragment(), bundle)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return objects!!.size
|
||||
}
|
||||
|
||||
internal inner class ViewHolderMain constructor(listItemView: View) :
|
||||
RecyclerView.ViewHolder(listItemView) {
|
||||
var profilePicImage: ImageView
|
||||
var userNameTextView: TextView
|
||||
var userEmailTextView: TextView
|
||||
|
||||
// CardView statusCard;
|
||||
var profileApprovalImage: ImageView
|
||||
var driverNo: TextView
|
||||
|
||||
init {
|
||||
profilePicImage = listItemView.findViewById(R.id.driverPic)
|
||||
userNameTextView = listItemView.findViewById(R.id.username_text)
|
||||
// statusCard = listItemView.findViewById(R.id.status_icon);
|
||||
userEmailTextView = listItemView.findViewById(R.id.emailaddress_text)
|
||||
profileApprovalImage = listItemView.findViewById(R.id.approval_iv)
|
||||
driverNo = listItemView.findViewById(R.id.driver_no)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package h_mal.appttude.com.driver.SuperUser
|
||||
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.GridView
|
||||
import androidx.fragment.app.Fragment
|
||||
import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
|
||||
|
||||
class UserMainFragment : Fragment() {
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
// Inflate the layout for this fragment
|
||||
val view: View = inflater.inflate(R.layout.fragment_user_main, container, false)
|
||||
Log.i("UserMain", "onCreateView: height = " + view.height)
|
||||
val mappedObject: MappedObject = requireArguments().getParcelable<MappedObject>("mapped")
|
||||
activity?.title = mappedObject.wholeDriverObject?.user_details?.profileName
|
||||
|
||||
val listView: GridView = view.findViewById(R.id.approvals_list)
|
||||
listView.adapter = ApprovalListAdapter(requireActivity(), arrayOf(mappedObject))
|
||||
return view
|
||||
}
|
||||
}
|
||||
@@ -1,186 +0,0 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
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.util.Log
|
||||
import android.view.*
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
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.ui.driver.MainActivity
|
||||
import h_mal.appttude.com.driver.Objects.WholeDriverObject
|
||||
import h_mal.appttude.com.driver.Objects.WholeObject.MappedObject
|
||||
import h_mal.appttude.com.driver.R
|
||||
import kotlinx.android.synthetic.main.fragment_home_super_user.*
|
||||
import java.io.IOException
|
||||
import java.util.*
|
||||
|
||||
|
||||
class homeSuperUserFragment : Fragment() {
|
||||
var users: DatabaseReference? = null
|
||||
var mappedObjectList: MutableList<MappedObject>? = null
|
||||
private var sharedPreferences: SharedPreferences? = null
|
||||
private var sortOrder: Int = 0
|
||||
private val sortDesc: Boolean = false
|
||||
private var recyclerViewAdapter: RecyclerViewAdapter? = null
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
mappedObjectList = ArrayList()
|
||||
users!!.addValueEventListener(valueEventListener)
|
||||
sharedPreferences = requireActivity().getSharedPreferences("PREFS", 0)
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
// Inflate the layout for this fragment
|
||||
val view: View = inflater.inflate(R.layout.fragment_home_super_user, container, false)
|
||||
|
||||
recycler_view.apply {
|
||||
layoutManager = LinearLayoutManager(context)
|
||||
recyclerViewAdapter = RecyclerViewAdapter(context, mappedObjectList)
|
||||
adapter = recyclerViewAdapter
|
||||
}
|
||||
|
||||
return view
|
||||
}
|
||||
|
||||
var valueEventListener: ValueEventListener = object : ValueEventListener {
|
||||
override fun onDataChange(snapshot: DataSnapshot) {
|
||||
mappedObjectList!!.clear()
|
||||
Log.i("Count ", "" + snapshot.childrenCount)
|
||||
for (postSnapshot: DataSnapshot in snapshot.children) {
|
||||
if ((postSnapshot.child("role").value.toString() == "driver")) {
|
||||
mappedObjectList!!.add(
|
||||
MappedObject(
|
||||
postSnapshot.key, postSnapshot.getValue(
|
||||
WholeDriverObject::class.java
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
sortDate(sortOrder, sortDesc)
|
||||
|
||||
}
|
||||
|
||||
override fun onCancelled(databaseError: DatabaseError) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.menu_calls_fragment, menu)
|
||||
super.onCreateOptionsMenu(menu, inflater)
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
if (item.itemId == R.id.archive) {
|
||||
val grpname: Array<String> = arrayOf("Driver Name", "Driver Number", "Approval")
|
||||
sortOrder = sharedPreferences!!.getInt(SORT, 0)
|
||||
val checkedItem: Int = sortOrder
|
||||
var compareInt = 0
|
||||
val click = DialogInterface.OnClickListener { dialog, _ ->
|
||||
sortDate(compareInt, false)
|
||||
dialog.dismiss()
|
||||
}
|
||||
val builder: AlertDialog.Builder = AlertDialog.Builder(context)
|
||||
builder.setTitle("Sort by:")
|
||||
.setSingleChoiceItems(
|
||||
grpname,
|
||||
checkedItem
|
||||
) { _, pos -> compareInt = pos }
|
||||
.setPositiveButton("Ascending", click)
|
||||
.setNegativeButton("Descending", click)
|
||||
.create().show()
|
||||
}
|
||||
return super.onOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
private fun sortDate(compareInt: Int, reversed: Boolean) {
|
||||
val comparator: Comparator<MappedObject> = object : Comparator<MappedObject> {
|
||||
override fun compare(o1: MappedObject, o2: MappedObject): Int {
|
||||
when (compareInt) {
|
||||
0 -> return o1.wholeDriverObject?.user_details?.profileName!!.compareTo(
|
||||
o2.wholeDriverObject?.user_details?.profileName!!
|
||||
)
|
||||
1 -> {
|
||||
var s1: String? = o1.wholeDriverObject?.driver_number
|
||||
var s2: String? = o2.wholeDriverObject?.driver_number
|
||||
if (o1.wholeDriverObject?.driver_number == null || (o1.wholeDriverObject!!
|
||||
.driver_number == "0")
|
||||
) {
|
||||
s1 = ";"
|
||||
}
|
||||
if (o2.wholeDriverObject?.driver_number == null || (o2.wholeDriverObject!!
|
||||
.driver_number == "0")
|
||||
) {
|
||||
s2 = ";"
|
||||
}
|
||||
return s1!!.compareTo((s2)!!)
|
||||
}
|
||||
else -> { throw IOException("dfdfs") }
|
||||
// 2 -> return MainActivity.approvalsClass.getOverApprovalStatusCode(o1.wholeDriverObject) -
|
||||
// MainActivity.approvalsClass.getOverApprovalStatusCode(o2.wholeDriverObject)
|
||||
// else -> return MainActivity.approvalsClass.getOverApprovalStatusCode(
|
||||
// o1.wholeDriverObject
|
||||
// ) - MainActivity.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)
|
||||
}
|
||||
recyclerViewAdapter!!.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val SORT: String = "SORT"
|
||||
private val REVERSED: String = "REVERSED"
|
||||
}
|
||||
}
|
||||
@@ -1,208 +0,0 @@
|
||||
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.support.annotation.NonNull;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
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.Button;
|
||||
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.OnFailureListener;
|
||||
import com.google.android.gms.tasks.Task;
|
||||
import com.google.firebase.auth.AuthResult;
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
|
||||
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;
|
||||
|
||||
// UI references.
|
||||
private EditText mEmailView;
|
||||
private EditText mPasswordView;
|
||||
private View mProgressView;
|
||||
private View mLoginView;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_login);
|
||||
|
||||
auth = FirebaseAuth.getInstance();
|
||||
|
||||
// Set up the login form.
|
||||
mEmailView = findViewById(R.id.email);
|
||||
|
||||
mPasswordView = (EditText) findViewById(R.id.password);
|
||||
mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
||||
@Override
|
||||
public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
|
||||
if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) {
|
||||
attemptLogin();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button);
|
||||
mEmailSignInButton.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
attemptLogin();
|
||||
}
|
||||
});
|
||||
|
||||
mProgressView = findViewById(R.id.login_progress);
|
||||
mLoginView = findViewById(R.id.email_login_form);
|
||||
|
||||
TextView register = findViewById(R.id.register_button);
|
||||
register.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(getApplication(),RegisterActivity.class);
|
||||
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
|
||||
* errors are presented and no actual login attempt is made.
|
||||
*/
|
||||
private void attemptLogin() {
|
||||
if (auth == null) {
|
||||
Toast.makeText(this, "Login invalid", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
// Reset errors.
|
||||
mEmailView.setError(null);
|
||||
mPasswordView.setError(null);
|
||||
|
||||
// Store values at the time of the login attempt.
|
||||
String email = mEmailView.getText().toString();
|
||||
String password = mPasswordView.getText().toString();
|
||||
|
||||
boolean cancel = false;
|
||||
View focusView = null;
|
||||
|
||||
// Check for a valid password, if the user entered one.
|
||||
if (!TextUtils.isEmpty(password) && !isPasswordValid(password)) {
|
||||
mPasswordView.setError(getString(R.string.error_invalid_password));
|
||||
focusView = mPasswordView;
|
||||
cancel = true;
|
||||
}
|
||||
|
||||
// Check for a valid email address.
|
||||
if (TextUtils.isEmpty(email)) {
|
||||
mEmailView.setError(getString(R.string.error_field_required));
|
||||
focusView = mEmailView;
|
||||
cancel = true;
|
||||
} else if (!isEmailValid(email)) {
|
||||
mEmailView.setError(getString(R.string.error_invalid_email));
|
||||
focusView = mEmailView;
|
||||
cancel = true;
|
||||
}
|
||||
|
||||
if (cancel) {
|
||||
// There was an error; don't attempt login and focus the first
|
||||
// form field with an error.
|
||||
focusView.requestFocus();
|
||||
} else {
|
||||
// Show a progress spinner, and kick off a background task to
|
||||
// perform the user login attempt.
|
||||
|
||||
showProgress(true);
|
||||
auth.signInWithEmailAndPassword(email,password)
|
||||
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
|
||||
@Override
|
||||
public void onComplete(@NonNull Task<AuthResult> task) {
|
||||
showProgress(false);
|
||||
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();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isEmailValid(String email) {
|
||||
//TODO: Replace this with your own logic
|
||||
return email.contains("@");
|
||||
}
|
||||
|
||||
private boolean isPasswordValid(String password) {
|
||||
//TODO: Replace this with your own logic
|
||||
return password.length() > 6;
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows the progress UI and hides the login form.
|
||||
*/
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
|
||||
private void showProgress(final boolean show) {
|
||||
// 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.
|
||||
|
||||
int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime);
|
||||
|
||||
mLoginView.setVisibility(show ? View.GONE : View.VISIBLE);
|
||||
mLoginView.animate().setDuration(shortAnimTime).alpha(
|
||||
show ? 0 : 1).setListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mLoginView.setVisibility(show ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
});
|
||||
|
||||
mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
|
||||
mProgressView.animate().setDuration(shortAnimTime).alpha(
|
||||
show ? 1 : 0).setListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,161 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,251 +0,0 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package h_mal.appttude.com.driver.application
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.viewmodels.*
|
||||
|
||||
class ApplicationViewModelFactory(
|
||||
private val auth: FirebaseAuthSource,
|
||||
private val database: FirebaseDatabaseSource,
|
||||
private val storage: FirebaseStorageSource
|
||||
) : ViewModelProvider.Factory {
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <T : ViewModel> create(modelClass: Class<T>): T {
|
||||
with(modelClass){
|
||||
return when{
|
||||
isAssignableFrom(UserViewModel::class.java) -> UserViewModel(auth)
|
||||
isAssignableFrom(MainViewModel::class.java) -> MainViewModel(auth, database)
|
||||
isAssignableFrom(UpdateUserViewModel::class.java) -> UpdateUserViewModel(auth, storage)
|
||||
isAssignableFrom(DriverLicenseViewModel::class.java) -> DriverLicenseViewModel(auth, database, storage)
|
||||
isAssignableFrom(DriverProfileViewModel::class.java) -> DriverProfileViewModel(auth, database, storage)
|
||||
isAssignableFrom(PrivateHireLicenseViewModel::class.java) -> PrivateHireLicenseViewModel(auth, database, storage)
|
||||
isAssignableFrom(VehicleProfileViewModel::class.java) -> VehicleProfileViewModel(auth, database, storage)
|
||||
isAssignableFrom(InsuranceViewModel::class.java) -> InsuranceViewModel(auth, database, storage)
|
||||
isAssignableFrom(MotViewModel::class.java) -> MotViewModel(auth, database, storage)
|
||||
isAssignableFrom(LogbookViewModel::class.java) -> LogbookViewModel(auth, database, storage)
|
||||
isAssignableFrom(PrivateHireVehicleViewModel::class.java) -> PrivateHireVehicleViewModel(auth, database, storage)
|
||||
else -> throw IllegalArgumentException("Unknown ViewModel class")
|
||||
} as T
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package h_mal.appttude.com.driver.application
|
||||
|
||||
import android.app.Application
|
||||
import h_mal.appttude.com.driver.data.FirebaseAuthSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import org.kodein.di.Kodein
|
||||
import org.kodein.di.KodeinAware
|
||||
import org.kodein.di.android.x.androidXModule
|
||||
import org.kodein.di.generic.bind
|
||||
import org.kodein.di.generic.instance
|
||||
import org.kodein.di.generic.provider
|
||||
import org.kodein.di.generic.singleton
|
||||
|
||||
class DriverApplication : Application(), KodeinAware{
|
||||
|
||||
// Kodein aware to initialise the classes used for DI
|
||||
override val kodein = Kodein.lazy {
|
||||
import(androidXModule(this@DriverApplication))
|
||||
bind() from singleton { FirebaseAuthSource() }
|
||||
bind() from singleton { FirebaseDatabaseSource() }
|
||||
bind() from singleton { FirebaseStorageSource() }
|
||||
bind() from provider { ApplicationViewModelFactory(instance(), instance(), instance()) }
|
||||
}
|
||||
}
|
||||
123
app/src/main/java/h_mal/appttude/com/driver/base/BaseActivity.kt
Normal file
123
app/src/main/java/h_mal/appttude/com/driver/base/BaseActivity.kt
Normal file
@@ -0,0 +1,123 @@
|
||||
package h_mal.appttude.com.driver.base
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.ViewGroup.LayoutParams
|
||||
import android.view.ViewGroup.LayoutParams.*
|
||||
import androidx.activity.viewModels
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import h_mal.appttude.com.driver.R
|
||||
import h_mal.appttude.com.driver.application.ApplicationViewModelFactory
|
||||
import h_mal.appttude.com.driver.data.ViewState
|
||||
import h_mal.appttude.com.driver.utils.displayToast
|
||||
import h_mal.appttude.com.driver.utils.hide
|
||||
import h_mal.appttude.com.driver.utils.show
|
||||
import h_mal.appttude.com.driver.utils.triggerAnimation
|
||||
import org.kodein.di.KodeinAware
|
||||
import org.kodein.di.android.kodein
|
||||
import org.kodein.di.generic.instance
|
||||
|
||||
|
||||
abstract class BaseActivity<V : BaseViewModel> : AppCompatActivity(), KodeinAware {
|
||||
|
||||
private lateinit var loadingView: View
|
||||
|
||||
abstract fun getViewModel(): V?
|
||||
abstract val layoutId: Int
|
||||
|
||||
override val kodein by kodein()
|
||||
val factory by instance<ApplicationViewModelFactory>()
|
||||
|
||||
inline fun <reified VM : ViewModel> createLazyViewModel(): Lazy<VM> = viewModels { factory }
|
||||
inline fun <reified VM : ViewModel> createViewModel(): VM =
|
||||
ViewModelProvider(viewModelStore, factory).get(VM::class.java)
|
||||
|
||||
|
||||
private var loading: Boolean = false
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
configureObserver()
|
||||
setContentView(layoutId)
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a loading view which to be shown during async operations
|
||||
*
|
||||
* #setOnClickListener(null) is an ugly work around to prevent under being clicked during
|
||||
* loading
|
||||
*/
|
||||
private fun instantiateLoadingView(){
|
||||
loadingView = layoutInflater.inflate(R.layout.progress_layout, null)
|
||||
loadingView.setOnClickListener(null)
|
||||
addContentView(loadingView, LayoutParams(MATCH_PARENT, MATCH_PARENT))
|
||||
|
||||
loadingView.hide()
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
instantiateLoadingView()
|
||||
}
|
||||
|
||||
fun <A : AppCompatActivity> startActivity(activity: Class<A>) {
|
||||
val intent = Intent(this, activity)
|
||||
startActivity(intent)
|
||||
}
|
||||
|
||||
/**
|
||||
* Called in case of success or some data emitted from the liveData in viewModel
|
||||
*/
|
||||
open fun onStarted() {
|
||||
loadingView.fadeIn()
|
||||
loading = true
|
||||
}
|
||||
|
||||
/**
|
||||
* Called in case of success or some data emitted from the liveData in viewModel
|
||||
*/
|
||||
open fun onSuccess(data: Any?) {
|
||||
loadingView.fadeOut()
|
||||
loading = false
|
||||
}
|
||||
|
||||
/**
|
||||
* Called in case of failure or some error emitted from the liveData in viewModel
|
||||
*/
|
||||
open fun onFailure(error: String?) {
|
||||
error?.let { displayToast(it) }
|
||||
loadingView.fadeOut()
|
||||
loading = false
|
||||
}
|
||||
|
||||
private fun configureObserver() {
|
||||
getViewModel()?.uiState?.observe(this, Observer {
|
||||
when (it) {
|
||||
is ViewState.HasStarted -> onStarted()
|
||||
is ViewState.HasData<*> -> onSuccess(it.data.getContentIfNotHandled())
|
||||
is ViewState.HasError -> onFailure(it.error.getContentIfNotHandled())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun View.fadeIn() = apply {
|
||||
show()
|
||||
triggerAnimation(R.anim.nav_default_enter_anim) {}
|
||||
}
|
||||
|
||||
private fun View.fadeOut() = apply {
|
||||
hide()
|
||||
triggerAnimation(R.anim.nav_default_exit_anim) {}
|
||||
}
|
||||
|
||||
|
||||
override fun onBackPressed() {
|
||||
if (!loading) super.onBackPressed()
|
||||
}
|
||||
|
||||
}
|
||||
145
app/src/main/java/h_mal/appttude/com/driver/base/BaseFragment.kt
Normal file
145
app/src/main/java/h_mal/appttude/com/driver/base/BaseFragment.kt
Normal file
@@ -0,0 +1,145 @@
|
||||
package h_mal.appttude.com.driver.base
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.ClipData
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.lifecycle.ViewModel
|
||||
import h_mal.appttude.com.driver.application.ApplicationViewModelFactory
|
||||
import h_mal.appttude.com.driver.data.ViewState
|
||||
import h_mal.appttude.com.driver.utils.PermissionsUtils
|
||||
import org.kodein.di.KodeinAware
|
||||
import org.kodein.di.android.x.kodein
|
||||
import org.kodein.di.generic.instance
|
||||
|
||||
const val IMAGE_SELECT_REQUEST_CODE = 401
|
||||
abstract class BaseFragment<V : BaseViewModel> : Fragment(), KodeinAware {
|
||||
|
||||
var mActivity: BaseActivity<V>? = null
|
||||
abstract fun getViewModel(): V
|
||||
abstract fun getLayoutId(): Int
|
||||
|
||||
private var multipleImage: Boolean = false
|
||||
|
||||
fun setImageSelectionAsMultiple(){
|
||||
multipleImage = true
|
||||
}
|
||||
|
||||
override val kodein by kodein()
|
||||
val factory by instance<ApplicationViewModelFactory>()
|
||||
|
||||
inline fun <reified VM : ViewModel> getFragmentViewModel(): Lazy<VM> = viewModels { factory }
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? = inflater.inflate(getLayoutId(), container, false)
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
super.onActivityCreated(savedInstanceState)
|
||||
mActivity = activity as BaseActivity<V>
|
||||
configureObserver()
|
||||
}
|
||||
|
||||
/**
|
||||
* Called in case of starting operation liveData in viewModel
|
||||
*/
|
||||
open fun onStarted() {
|
||||
mActivity?.onStarted()
|
||||
}
|
||||
|
||||
/**
|
||||
* Called in case of success or some data emitted from the liveData in viewModel
|
||||
*/
|
||||
open fun onSuccess(data: Any?) {
|
||||
mActivity?.onSuccess(data)
|
||||
}
|
||||
|
||||
/**
|
||||
* Called in case of failure or some error emitted from the liveData in viewModel
|
||||
*/
|
||||
open fun onFailure(error: String?) {
|
||||
mActivity?.onFailure(error)
|
||||
}
|
||||
|
||||
private fun configureObserver() {
|
||||
getViewModel().uiState.observe(viewLifecycleOwner, Observer {
|
||||
when (it) {
|
||||
is ViewState.HasStarted -> onStarted()
|
||||
is ViewState.HasData<*> -> onSuccess(it.data.getContentIfNotHandled())
|
||||
is ViewState.HasError -> onFailure(it.error.getContentIfNotHandled())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
if (resultCode == Activity.RESULT_OK){
|
||||
when(requestCode){
|
||||
IMAGE_SELECT_REQUEST_CODE -> {
|
||||
data?.clipData?.convertToList()?.let { clip ->
|
||||
val list = clip.takeIf { it.size > 10 }?.let{
|
||||
clip.subList(0, 9)
|
||||
} ?: clip
|
||||
onImageGalleryResult(list)
|
||||
return
|
||||
}
|
||||
onImageGalleryResult(data?.data)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private fun ClipData.convertToList(): List<Uri> {
|
||||
val list = mutableListOf<Uri>()
|
||||
for (i in 0 until itemCount) {
|
||||
val item: ClipData.Item = getItemAt(i)
|
||||
val uri = item.uri
|
||||
list.add(uri)
|
||||
}
|
||||
return list.toList()
|
||||
}
|
||||
|
||||
/**
|
||||
* Pair with {@link #Fragment.onRequestPermissionsResult}
|
||||
* @param ourRequestCode
|
||||
* @param requestCode
|
||||
* checks that ourRequestCode was granted
|
||||
* sends callback with
|
||||
* @param permissionGranted
|
||||
*/
|
||||
fun onPermissionRequest(
|
||||
requestCode: Int, ourRequestCode: Int, grantResults: IntArray,
|
||||
permissionGranted: () -> Unit
|
||||
){
|
||||
when (requestCode) {
|
||||
ourRequestCode -> {
|
||||
if (PermissionsUtils.isGranted(grantResults)) {
|
||||
permissionGranted.invoke()
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open fun onImageGalleryResult(imageUri: Uri?){ }
|
||||
open fun onImageGalleryResult(imageUris: List<Uri>?){ }
|
||||
|
||||
fun openGalleryForImage() {
|
||||
val intent = Intent(Intent.ACTION_PICK)
|
||||
intent.type = "image/*"
|
||||
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, multipleImage);
|
||||
startActivityForResult(intent, IMAGE_SELECT_REQUEST_CODE)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package h_mal.appttude.com.driver.base
|
||||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import h_mal.appttude.com.driver.data.ViewState
|
||||
import h_mal.appttude.com.driver.utils.Event
|
||||
|
||||
abstract class BaseViewModel: ViewModel(){
|
||||
open val uiState: MutableLiveData<ViewState> = MutableLiveData()
|
||||
|
||||
fun onStart() {
|
||||
uiState.postValue(ViewState.HasStarted)
|
||||
}
|
||||
|
||||
fun <T : Any> onSuccess(result: T) {
|
||||
uiState.postValue(ViewState.HasData(Event(result)))
|
||||
}
|
||||
|
||||
protected fun onError(error: String) {
|
||||
uiState.postValue(ViewState.HasError(Event(error)))
|
||||
}
|
||||
|
||||
suspend fun doTryOperation(
|
||||
defaultErrorMessage: String?,
|
||||
operation: suspend () -> Unit
|
||||
){
|
||||
try {
|
||||
onStart()
|
||||
operation()
|
||||
}catch (e: Exception){
|
||||
e.printStackTrace()
|
||||
e.message?.let {
|
||||
onError(it)
|
||||
return
|
||||
}
|
||||
defaultErrorMessage?.let {
|
||||
onError(it)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package h_mal.appttude.com.driver.base
|
||||
|
||||
import android.Manifest
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.EditText
|
||||
import androidx.core.widget.doAfterTextChanged
|
||||
import h_mal.appttude.com.driver.utils.PermissionsUtils.askForPermissions
|
||||
import h_mal.appttude.com.driver.utils.TextValidationUtils.validateEditText
|
||||
|
||||
private const val IMAGE_PERMISSION_RESULT = 402
|
||||
abstract class DataSubmissionBaseFragment<V : DataSubmissionBaseViewModel<T>, T: Any> : BaseFragment<BaseViewModel>(){
|
||||
|
||||
var picUri: Uri? = null
|
||||
|
||||
abstract override fun getViewModel(): V
|
||||
abstract var model: T
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
getViewModel().getDataFromDatabase()
|
||||
}
|
||||
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun onSuccess(data: Any?) {
|
||||
super.onSuccess(data)
|
||||
|
||||
data?.let {
|
||||
if (it::class.java == model::class.java)
|
||||
setFields(data as T)
|
||||
}
|
||||
}
|
||||
|
||||
open fun setFields(data: T){
|
||||
model = data
|
||||
}
|
||||
|
||||
open fun submit(){
|
||||
|
||||
}
|
||||
|
||||
fun openGalleryWithPermissionRequest(){
|
||||
if (askForPermissions(Manifest.permission.READ_EXTERNAL_STORAGE, IMAGE_PERMISSION_RESULT)) {
|
||||
openGalleryForImage()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onRequestPermissionsResult(
|
||||
requestCode: Int,
|
||||
permissions: Array<String>,
|
||||
grantResults: IntArray
|
||||
) = onPermissionRequest(requestCode, IMAGE_PERMISSION_RESULT, grantResults) {
|
||||
openGalleryForImage()
|
||||
}
|
||||
|
||||
fun validateEditTexts(vararg editTexts: EditText): Boolean{
|
||||
editTexts.forEach {
|
||||
if (it.text.isNullOrBlank()){
|
||||
it.validateEditText()
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
fun EditText.setTextOnChange(output: (m: String) -> Unit){
|
||||
doAfterTextChanged {
|
||||
output(text.toString())
|
||||
}
|
||||
}
|
||||
|
||||
override fun onImageGalleryResult(imageUri: Uri?){
|
||||
super.onImageGalleryResult(imageUri)
|
||||
picUri = imageUri
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package h_mal.appttude.com.driver.base
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.storage.StorageReference
|
||||
import h_mal.appttude.com.driver.data.FirebaseCompletion
|
||||
import h_mal.appttude.com.driver.data.FirebaseDatabaseSource
|
||||
import h_mal.appttude.com.driver.data.FirebaseStorageSource
|
||||
import h_mal.appttude.com.driver.utils.Coroutines.io
|
||||
import h_mal.appttude.com.driver.utils.DateUtils.getDateTimeStamp
|
||||
import h_mal.appttude.com.driver.utils.getDataFromDatabaseRef
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
import java.io.IOException
|
||||
|
||||
abstract class DataSubmissionBaseViewModel<T : Any>(
|
||||
private val database: FirebaseDatabaseSource,
|
||||
private val storage: FirebaseStorageSource?
|
||||
) : BaseViewModel() {
|
||||
|
||||
abstract val databaseRef: DatabaseReference
|
||||
abstract val storageRef: StorageReference?
|
||||
abstract val objectName: String
|
||||
|
||||
abstract fun getDataFromDatabase(): Job
|
||||
open fun setDataInDatabase(data: T, localImageUri: Uri?): Job = Job()
|
||||
open fun setDataInDatabase(data: T, localImageUris: List<Uri?>?): Job = Job()
|
||||
open fun setDataInDatabase(data: T) { }
|
||||
|
||||
inline fun <reified T : Any> getDataClass() = io {
|
||||
doTryOperation("Failed to retrieve $objectName") {
|
||||
val data = databaseRef.getDataFromDatabaseRef<T>()
|
||||
onSuccess(data ?: FirebaseCompletion.Default)
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun <T : Any> postDataToDatabase(data: T) {
|
||||
val driversLicense = database.postToDatabaseRed(databaseRef, data)
|
||||
onSuccess(driversLicense)
|
||||
}
|
||||
|
||||
private suspend fun uploadImage(localImageUri: Uri?): String? {
|
||||
val imageString = StringBuilder()
|
||||
.append(getDateTimeStamp())
|
||||
.append("_")
|
||||
.append(objectName.replace(" ", "_"))
|
||||
.toString()
|
||||
|
||||
return localImageUri?.let { uri ->
|
||||
storageRef?.let {
|
||||
val image = storage?.uploadImage(uri, it, imageString)
|
||||
image.toString()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun getImageUrl(localImageUri: Uri?, imageUrl: String?): String {
|
||||
if (localImageUri == null && imageUrl.isNullOrBlank()){
|
||||
throw IOException("No image is selected")
|
||||
}
|
||||
|
||||
return uploadImage(localImageUri) ?: imageUrl!!
|
||||
}
|
||||
|
||||
suspend fun getImageUrls(localImageUris: List<Uri?>?): List<String?> {
|
||||
if (localImageUris.isNullOrEmpty()){
|
||||
throw IOException("No images is selected")
|
||||
}
|
||||
val listOfUrls = mutableListOf<String>()
|
||||
localImageUris.forEach { uri ->
|
||||
uploadImage(uri)?.let {
|
||||
listOfUrls.add(it)
|
||||
}
|
||||
}
|
||||
|
||||
return listOfUrls
|
||||
}
|
||||
|
||||
suspend fun <T, R> Iterable<T>.mapSuspend(transform: suspend (T) -> R): List<R> =
|
||||
coroutineScope { map { t: T -> async { transform(t) } }.map { it.await() } }
|
||||
|
||||
|
||||
suspend fun <T, R> Iterable<T>.mapIndexSuspend(transform: suspend (index: Int, T) -> R) =
|
||||
coroutineScope { mapIndexed { index: Int, t: T -> async { transform(index, t) } }.map { it.await() } }
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
sealed class DataFieldState {
|
||||
object DefaultState : DataFieldState()
|
||||
object NonUserStateUpdated: DataFieldState()
|
||||
object UserUpdateState: DataFieldState()
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
import com.google.firebase.database.DataSnapshot
|
||||
import com.google.firebase.database.DatabaseError
|
||||
|
||||
sealed class EventResponse {
|
||||
data class Changed(val snapshot: DataSnapshot): EventResponse()
|
||||
data class Cancelled(val error: DatabaseError): EventResponse()
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.android.gms.tasks.Task
|
||||
import com.google.firebase.auth.*
|
||||
|
||||
class FirebaseAuthSource: FirebaseAuthentication{
|
||||
private val auth = FirebaseAuth.getInstance()
|
||||
|
||||
override fun getUid(): String? = auth.uid
|
||||
|
||||
override fun getUser(): FirebaseUser? = auth.currentUser
|
||||
|
||||
override fun signIn(email: String, password: String): Task<AuthResult> =
|
||||
auth.signInWithEmailAndPassword(email, password)
|
||||
|
||||
override fun registerUser(email: String, password: String): Task<AuthResult> =
|
||||
auth.createUserWithEmailAndPassword(email, password)
|
||||
|
||||
override fun logOut() = auth.signOut()
|
||||
|
||||
override fun forgotPassword(email: String): Task<Void> = auth.sendPasswordResetEmail(email)
|
||||
|
||||
override fun updateProfile(
|
||||
name: String?,
|
||||
profilePic: Uri?
|
||||
): Task<Void>? {
|
||||
val profileUpdates = UserProfileChangeRequest.Builder().apply {
|
||||
name?.let { setDisplayName(it) }
|
||||
profilePic?.let { setPhotoUri(it) }
|
||||
}.build()
|
||||
|
||||
return getUser()?.updateProfile(profileUpdates)
|
||||
}
|
||||
|
||||
override fun reauthenticate(
|
||||
email: String,
|
||||
password: String
|
||||
): Task<Void>? {
|
||||
val credential = EmailAuthProvider.getCredential(email, password)
|
||||
|
||||
return getUser()?.reauthenticate(credential)
|
||||
}
|
||||
|
||||
override fun updateEmail(email: String): Task<Void>? = getUser()?.updateEmail(email)
|
||||
override fun updatePassword(password: String): Task<Void>? = getUser()?.updatePassword(password)
|
||||
override fun deleteProfile() = getUser()?.delete()
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.android.gms.tasks.Task
|
||||
import com.google.firebase.auth.AuthResult
|
||||
import com.google.firebase.auth.FirebaseUser
|
||||
|
||||
interface FirebaseAuthentication{
|
||||
fun getUid(): String?
|
||||
fun getUser(): FirebaseUser?
|
||||
fun signIn(email: String, password: String): Task<AuthResult>
|
||||
fun registerUser(email: String, password: String): Task<AuthResult>
|
||||
fun logOut()
|
||||
fun forgotPassword(email: String): Task<Void>
|
||||
fun updateProfile(
|
||||
name: String?,
|
||||
profilePic: Uri?
|
||||
): Task<Void>?
|
||||
fun reauthenticate(
|
||||
email: String,
|
||||
password: String
|
||||
): Task<Void>?
|
||||
fun updateEmail(email: String): Task<Void>?
|
||||
fun updatePassword(password: String): Task<Void>?
|
||||
fun deleteProfile(): Task<Void>?
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
sealed class FirebaseCompletion{
|
||||
object Default: FirebaseCompletion()
|
||||
data class Changed(val message: String): FirebaseCompletion()
|
||||
data class ProfileDeleted(val message: String): FirebaseCompletion()
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package h_mal.appttude.com.driver.data
|
||||
|
||||
import com.google.firebase.database.DatabaseReference
|
||||
import com.google.firebase.database.FirebaseDatabase
|
||||
import kotlinx.coroutines.tasks.await
|
||||
|
||||
const val USER_CONST = "user"
|
||||
const val PROFILE_ROLE ="role"
|
||||
const val DRIVER_NUMBER = "driver_number"
|
||||
const val USER_DETAILS = "user_details"
|
||||
const val VEHICLE_PROFILE = "vehicle_profile"
|
||||
const val DRIVER_PROFILE = "driver_profile"
|
||||
const val APPROVALS = "approvalsObject"
|
||||
const val DRIVER_DETAILS = "driver_details"
|
||||
const val DRIVER_LICENSE = "driver_license"
|
||||
const val PRIVATE_HIRE = "private_hire"
|
||||
const val INSURANCE_DETAILS = "insurance_details"
|
||||
const val LOG_BOOK = "log_book"
|
||||
const val MOT = "mot_details"
|
||||
const val PRIVATE_HIRE_VEHICLE = "private_hire_vehicle"
|
||||
const val VEHICLE_DETAILS = "vehicle_details"
|
||||
const val ARCHIVE = "archive"
|
||||
class FirebaseDatabaseSource {
|
||||
private val database = FirebaseDatabase.getInstance()
|
||||
|
||||
suspend fun <T: Any> postToDatabaseRed(ref: DatabaseReference, data: T) : T{
|
||||
ref.setValue(data).await()
|
||||
return data
|
||||
}
|
||||
|
||||
fun getUserRef(uid: String) = database.getReference(USER_CONST).child(uid)
|
||||
fun getUserDetailsRef(uid: String) = getUserRef(uid).child(USER_DETAILS)
|
||||
fun getVehicleRef(uid: String) = getUserRef(uid).child(VEHICLE_PROFILE)
|
||||
fun getDriverRef(uid: String) = getUserRef(uid).child(DRIVER_PROFILE)
|
||||
fun getApprovalsRef(uid: String) = getUserRef(uid).child(APPROVALS)
|
||||
fun getArchiveRef(uid: String) = getUserRef(uid).child(ARCHIVE)
|
||||
fun getUserRoleRef(uid: String) = getUserRef(uid).child(PROFILE_ROLE)
|
||||
fun getDriverNumberRef(uid: String) = getUserRef(uid).child(DRIVER_NUMBER)
|
||||
|
||||
fun getDriverDetailsRef(uid: String) = getDriverRef(uid).child(DRIVER_DETAILS)
|
||||
fun getDriverLicenseRef(uid: String) = getDriverRef(uid).child(DRIVER_LICENSE)
|
||||
fun getPrivateHireRef(uid: String) = getDriverRef(uid).child(PRIVATE_HIRE)
|
||||
|
||||
fun getInsuranceDetailsRef(uid: String) = getVehicleRef(uid).child(INSURANCE_DETAILS)
|
||||
fun getLogbookRef(uid: String) = getVehicleRef(uid).child(LOG_BOOK)
|
||||
fun getMotDetailsRef(uid: String) = getVehicleRef(uid).child(MOT)
|
||||
fun getPrivateHireVehicleRef(uid: String) = getVehicleRef(uid).child(PRIVATE_HIRE_VEHICLE)
|
||||
fun getVehicleDetailsRef(uid: String) = getVehicleRef(uid).child(VEHICLE_DETAILS)
|
||||
|
||||
fun getDriverLicenseArchiveRef(uid: String) = getArchiveRef(uid).child(DRIVER_LICENSE)
|
||||
fun getArchiveInsuranceDetailsRef(uid: String) = getArchiveRef(uid).child(INSURANCE_DETAILS)
|
||||
fun getArchiveLogbookRef(uid: String) = getArchiveRef(uid).child(LOG_BOOK)
|
||||
fun getArchiveMotDetailsRef(uid: String) = getArchiveRef(uid).child(MOT)
|
||||
fun getArchivePrivateHireLicenseRef(uid: String) = getArchiveRef(uid).child(PRIVATE_HIRE)
|
||||
fun getArchivePrivateHireVehicleRef(uid: String) = getArchiveRef(uid).child(PRIVATE_HIRE_VEHICLE)
|
||||
fun getArchiveVehicleDetailsRef(uid: String) = getArchiveRef(uid).child(VEHICLE_DETAILS)
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user