diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5d437cc..0947cea 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,19 +9,26 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.StormWaterUtilityAndroid"> - + + + - - - - + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/notifications/NotificationsFragment.java b/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionFormFragment.java similarity index 57% rename from app/src/main/java/com/sf/stormwaterutilityandroid/notifications/NotificationsFragment.java rename to app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionFormFragment.java index 2795ade..bb325fa 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/notifications/NotificationsFragment.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionFormFragment.java @@ -1,28 +1,25 @@ -package com.sf.stormwaterutilityandroid.notifications; +package com.sf.stormwaterutilityandroid.Construction; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; import com.sf.stormwaterutilityandroid.R; - -public class NotificationsFragment extends Fragment { +public class ConstructionFormFragment extends Fragment { public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View root = inflater.inflate(R.layout.fragment_notifications, container, false); - final TextView textView = root.findViewById(R.id.text_notifications); - - + View root = inflater.inflate(R.layout.fragment_home, container, false); return root; + } } \ No newline at end of file diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionNav.java b/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionNav.java new file mode 100644 index 0000000..c04de13 --- /dev/null +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionNav.java @@ -0,0 +1,164 @@ +package com.sf.stormwaterutilityandroid.Construction; + +import android.os.Bundle; +import android.view.MenuItem; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; + +import com.google.android.material.bottomnavigation.BottomNavigationView; +import com.google.firebase.auth.FirebaseAuth; +import com.sf.stormwaterutilityandroid.R; +import com.sf.stormwaterutilityandroid.WaterWay.WaterWayFormFragment; +import com.sf.stormwaterutilityandroid.WaterWay.WaterWayReportFragment; + +public class ConstructionNav extends AppCompatActivity { + private TextView mTextMessage; + private FirebaseAuth auth; + final Fragment fragment1 = new ConstructionFormFragment(); + final Fragment fragment2 = new ConstructionReportsFragment(); + + // final Fragment fragment4 = new Admin_fragment(); + // final Fragment fragment5 = new HR_fragment(); + final FragmentManager fm = getSupportFragmentManager(); + Fragment active = fragment1; + private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener + = new BottomNavigationView.OnNavigationItemSelectedListener() { + + @Override + public boolean onNavigationItemSelected(@NonNull MenuItem item) { + switch (item.getItemId()) { + case R.id.constructionHome: + // mTextMessage.setText(R.string.title_home); + fm.beginTransaction().hide(active).show(fragment1).commit(); + + active = fragment1; + fm.popBackStack(); + return true; + case R.id.constructionReports: + // mTextMessage.setText(R.string.title_dashboard); + fm.beginTransaction().hide(active).show(fragment2).commit(); + active = fragment2; + fm.popBackStack(); + return true; + + + } + return false; + } + }; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_construction); + + // Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + //setSupportActionBar(toolbar); + + + BottomNavigationView navigation = findViewById(R.id.navigationConstruction); + navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); + // fm.beginTransaction().add(R.id.main_container, fragment5, "5").hide(fragment5).commit(); + // fm.beginTransaction().add(R.id.main_container, fragment4, "4").hide(fragment4).commit(); + + fm.beginTransaction().add(R.id.main_containerConstruction, fragment2, "2").hide(fragment2).commit(); + fm.beginTransaction().add(R.id.main_containerConstruction, fragment1, "1").commit(); + + } + + /* @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + signout2 = (Button) findViewById(R.id.sign_out); + + signout2.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + FirebaseAuth.getInstance().signOut(); + startActivity(new Intent(com.samuelford48gmail.thsconnect.teacher.MainActivity.this, LoginActivity.class)); + finish(); + } + }); + + + mTextMessage = (TextView) findViewById(R.id.message); + BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation); + navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); + + } + + FirebaseAuth.AuthStateListener authListener = new FirebaseAuth.AuthStateListener() { + @SuppressLint("SetTextI18n") + @Override + public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { + FirebaseUser user = firebaseAuth.getCurrentUser(); + if (user == null) { + // user auth state is changed - user is null + // launch login activity + startActivity(new Intent(com.samuelford48gmail.thsconnect.teacher.MainActivity.this, LoginActivity.class)); + finish(); + } + } + + + }; + // public void signout (View v){ + // signOut(); + //} +/* + public void signOut() { + auth.signOut(); + + +// this listener will be called when there is change in firebase user session + FirebaseAuth.AuthStateListener authListener = new FirebaseAuth.AuthStateListener() { + @Override + public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { + FirebaseUser user = firebaseAuth.getCurrentUser(); + if (user == null) { + // user auth state is changed - user is null + // launch login activity + startActivity(new Intent(com.samuelford48gmail.thsconnect.teacher.MainActivity.this, LoginActivity.class)); + finish(); + } + } + }; + + } + + + @Override + public void onStart() { + super.onStart(); + auth.addAuthStateListener(authListener); + } + + @Override + public void onStop() { + super.onStop(); + if (authListener != null) { + auth.removeAuthStateListener(authListener); + } + */ + /*@Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu., menu); + return super.onCreateOptionsMenu(menu); + } + @Override + public boolean onOptionsItemSelected(MenuItem item) { + int id = item.getItemId(); + + if (id == R.id.action_settings) { + startActivity(new Intent(com.samuelford48gmail.thsconnect.teacher.MainActivity.this, SettingsActivity.class)); + return true; + } + + return super.onOptionsItemSelected(item); + } +*/ +} diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionReportsFragment.java b/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionReportsFragment.java new file mode 100644 index 0000000..c24b425 --- /dev/null +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionReportsFragment.java @@ -0,0 +1,25 @@ +package com.sf.stormwaterutilityandroid.Construction; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.sf.stormwaterutilityandroid.R; + +public class ConstructionReportsFragment extends Fragment { + + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + View root = inflater.inflate(R.layout.fragment_dashboard, container, false); + final TextView textView = root.findViewById(R.id.text_dashboard); + return root; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java b/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java index c276c5a..e2fc838 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java @@ -4,7 +4,6 @@ import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; @@ -19,6 +18,7 @@ import com.google.android.gms.tasks.Task; import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.FirebaseAuth; +import com.sf.stormwaterutilityandroid.WaterWay.WaterWayNav; public class Login extends AppCompatActivity { @@ -38,8 +38,9 @@ protected void onCreate(Bundle savedInstanceState) { mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { + if (firebaseAuth.getCurrentUser() != null && auth.getCurrentUser().isEmailVerified()) { - startActivity(new Intent(Login.this, MainActivity.class)); + startActivity(new Intent(Login.this, WaterWayNav.class)); finish(); } if (firebaseAuth.getCurrentUser() == null) { @@ -112,7 +113,7 @@ public void onComplete(@NonNull Task task) { } } else { if (auth.getCurrentUser().isEmailVerified()) { - Intent intent = new Intent(Login.this, MainActivity.class); + Intent intent = new Intent(Login.this, WaterWayNav.class); startActivity(intent); progressBar.setVisibility(View.INVISIBLE); finish(); diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java b/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java new file mode 100644 index 0000000..6dd4920 --- /dev/null +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java @@ -0,0 +1,48 @@ +package com.sf.stormwaterutilityandroid; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; + +import com.sf.stormwaterutilityandroid.Construction.ConstructionNav; +import com.sf.stormwaterutilityandroid.WaterWay.WaterWayNav; + +public class MainMenu extends AppCompatActivity { +Button launchWWF,launchCF, launchSettings; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main_menu); + launchWWF = findViewById(R.id.wwf); + launchCF = findViewById(R.id.cf); + launchSettings = findViewById(R.id.settings); + launchSettings.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(MainMenu.this, Settings.class); + startActivity(intent); + + } + }); + launchCF.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(MainMenu.this, ConstructionNav.class); + startActivity(intent); + + + } + }); + launchWWF.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(MainMenu.this, WaterWayNav.class); + startActivity(intent); + + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/SampleFordm.java b/app/src/main/java/com/sf/stormwaterutilityandroid/SampleFordm.java index 2dfcc46..a386112 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/SampleFordm.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/SampleFordm.java @@ -27,6 +27,7 @@ public class SampleFordm extends AppCompatActivity { private FormBuilder formBuilder; private RecyclerView recyclerView; FormElementTextEmail element11; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -50,6 +51,7 @@ private void setupForm() { FormElementTextNumber element23 = FormElementTextNumber.createInstance().setTitle("Zip Code").setValue("1000"); FormHeader header3 = FormHeader.createInstance("Schedule"); + FormElementPickerDate element31 = FormElementPickerDate.createInstance().setTitle("Date").setDateFormat("MMM dd, yyyy"); FormElementPickerTime element32 = FormElementPickerTime.createInstance().setTitle("Time").setTimeFormat("KK hh"); FormElementTextPassword element33 = FormElementTextPassword.createInstance().setTitle("Password").setValue("abcd1234"); @@ -60,6 +62,7 @@ private void setupForm() { fruits.add("Orange"); fruits.add("Mango"); fruits.add("Guava"); + FormElementPickerSingle element41 = FormElementPickerSingle.createInstance().setTitle("Single Item").setOptions(fruits).setPickerTitle("Pick any item"); FormElementPickerMulti element42 = FormElementPickerMulti.createInstance().setTitle("Multi Items").setOptions(fruits).setPickerTitle("Pick one or more").setNegativeText("reset"); FormElementSwitch element43 = FormElementSwitch.createInstance().setTitle("Frozen?").setSwitchTexts("Yes", "No"); diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/Settings.java b/app/src/main/java/com/sf/stormwaterutilityandroid/Settings.java new file mode 100644 index 0000000..8eca92d --- /dev/null +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/Settings.java @@ -0,0 +1,14 @@ +package com.sf.stormwaterutilityandroid; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; + +public class Settings extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_settings); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/home/HomeFragment.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java similarity index 92% rename from app/src/main/java/com/sf/stormwaterutilityandroid/home/HomeFragment.java rename to app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java index 7809a22..6663fd4 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/home/HomeFragment.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java @@ -1,4 +1,4 @@ -package com.sf.stormwaterutilityandroid.home; +package com.sf.stormwaterutilityandroid.WaterWay; import android.content.Intent; import android.os.Bundle; @@ -14,7 +14,7 @@ import com.sf.stormwaterutilityandroid.SampleFordm; -public class HomeFragment extends Fragment { +public class WaterWayFormFragment extends Fragment { diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/MainActivity.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayNav.java similarity index 80% rename from app/src/main/java/com/sf/stormwaterutilityandroid/MainActivity.java rename to app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayNav.java index 28caf6b..fbfc264 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/MainActivity.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayNav.java @@ -1,4 +1,4 @@ -package com.sf.stormwaterutilityandroid; +package com.sf.stormwaterutilityandroid.WaterWay; import android.os.Bundle; import android.view.MenuItem; @@ -12,17 +12,18 @@ import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.firebase.auth.FirebaseAuth; -import com.sf.stormwaterutilityandroid.dashboard.DashboardFragment; -import com.sf.stormwaterutilityandroid.home.HomeFragment; -import com.sf.stormwaterutilityandroid.notifications.NotificationsFragment; +import com.sf.stormwaterutilityandroid.R; +import com.sf.stormwaterutilityandroid.WaterWay.WaterWayReportFragment; +import com.sf.stormwaterutilityandroid.WaterWay.WaterWayFormFragment; -public class MainActivity extends AppCompatActivity { + +public class WaterWayNav extends AppCompatActivity { private Button signout2; private TextView mTextMessage; private FirebaseAuth auth; - final Fragment fragment1 = new HomeFragment(); - final Fragment fragment2 = new DashboardFragment(); - final Fragment fragment3 = new NotificationsFragment(); + final Fragment fragment1 = new WaterWayFormFragment(); + final Fragment fragment2 = new WaterWayReportFragment(); + // final Fragment fragment4 = new Admin_fragment(); // final Fragment fragment5 = new HR_fragment(); final FragmentManager fm = getSupportFragmentManager(); @@ -46,22 +47,8 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) { active = fragment2; fm.popBackStack(); return true; - case R.id.navigation_notifications: - //mTextMessage.setText(R.string.title_notifications); - fm.beginTransaction().hide(active).show(fragment3).commit(); - active = fragment3; - fm.popBackStack(); - return true; - /* case R.id.admin: - fm.beginTransaction().hide(active).show(fragment4).commit(); - active = fragment4; - fm.popBackStack(); - return true; - case R.id.Homeroom: - fm.beginTransaction().hide(active).show(fragment5).commit(); - active = fragment5; - fm.popBackStack(); - return true;*/ + + } return false; } @@ -80,7 +67,7 @@ protected void onCreate(Bundle savedInstanceState) { navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); // fm.beginTransaction().add(R.id.main_container, fragment5, "5").hide(fragment5).commit(); // fm.beginTransaction().add(R.id.main_container, fragment4, "4").hide(fragment4).commit(); - fm.beginTransaction().add(R.id.main_container, fragment3, "3").hide(fragment3).commit(); + fm.beginTransaction().add(R.id.main_container, fragment2, "2").hide(fragment2).commit(); fm.beginTransaction().add(R.id.main_container, fragment1, "1").commit(); diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/dashboard/DashboardFragment.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReportFragment.java similarity index 59% rename from app/src/main/java/com/sf/stormwaterutilityandroid/dashboard/DashboardFragment.java rename to app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReportFragment.java index b69c9a5..150a98d 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/dashboard/DashboardFragment.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReportFragment.java @@ -1,4 +1,4 @@ -package com.sf.stormwaterutilityandroid.dashboard; +package com.sf.stormwaterutilityandroid.WaterWay; import android.os.Bundle; import android.view.LayoutInflater; @@ -15,22 +15,14 @@ import com.sf.stormwaterutilityandroid.R; -public class DashboardFragment extends Fragment { - - private DashboardViewModel dashboardViewModel; +public class WaterWayReportFragment extends Fragment { public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - dashboardViewModel = - ViewModelProviders.of(this).get(DashboardViewModel.class); + View root = inflater.inflate(R.layout.fragment_dashboard, container, false); final TextView textView = root.findViewById(R.id.text_dashboard); - dashboardViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { - @Override - public void onChanged(@Nullable String s) { - textView.setText(s); - } - }); + return root; } } \ No newline at end of file diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/dashboard/DashboardViewModel.java b/app/src/main/java/com/sf/stormwaterutilityandroid/dashboard/DashboardViewModel.java deleted file mode 100644 index 1fa1663..0000000 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/dashboard/DashboardViewModel.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.sf.stormwaterutilityandroid.dashboard; - -import androidx.lifecycle.LiveData; -import androidx.lifecycle.MutableLiveData; -import androidx.lifecycle.ViewModel; - -public class DashboardViewModel extends ViewModel { - - private MutableLiveData mText; - - public DashboardViewModel() { - mText = new MutableLiveData<>(); - mText.setValue("This is dashboard fragment"); - } - - public LiveData getText() { - return mText; - } -} \ No newline at end of file diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/home/HomeViewModel.java b/app/src/main/java/com/sf/stormwaterutilityandroid/home/HomeViewModel.java deleted file mode 100644 index 5db7db0..0000000 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/home/HomeViewModel.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.sf.stormwaterutilityandroid.home; - -import androidx.lifecycle.LiveData; -import androidx.lifecycle.MutableLiveData; -import androidx.lifecycle.ViewModel; - -public class HomeViewModel extends ViewModel { - - private MutableLiveData mText; - - public HomeViewModel() { - mText = new MutableLiveData<>(); - mText.setValue("This is home fragment"); - } - - public LiveData getText() { - return mText; - } -} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_construction.xml b/app/src/main/res/layout/activity_construction.xml new file mode 100644 index 0000000..11a7b2d --- /dev/null +++ b/app/src/main/res/layout/activity_construction.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main_menu.xml b/app/src/main/res/layout/activity_main_menu.xml new file mode 100644 index 0000000..215f990 --- /dev/null +++ b/app/src/main/res/layout/activity_main_menu.xml @@ -0,0 +1,40 @@ + + + +