Add two more navigation menu entries.
[PrivacyCell.git] / app / src / main / java / com / stoutner / privacycell / activities / PrivacyCell.kt
index 8f482b06a9174581905cdb25248741a69530a180..964854687d7610f47863488a91bab640d40ab5ac 100644 (file)
@@ -38,13 +38,14 @@ import androidx.appcompat.app.AppCompatActivity
 import androidx.appcompat.content.res.AppCompatResources
 import androidx.appcompat.widget.Toolbar
 import androidx.core.app.ActivityCompat
+import androidx.core.view.GravityCompat
 import androidx.drawerlayout.widget.DrawerLayout
-import androidx.fragment.app.DialogFragment
 
 import com.google.android.material.navigation.NavigationView
 
 import com.stoutner.privacycell.R
 import com.stoutner.privacycell.dialogs.PhonePermissionDialog
+import com.stoutner.privacycell.dialogs.WebViewDialog
 
 class PrivacyCell : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener, PhonePermissionDialog.StoragePermissionDialogListener {
     // Declare the class variables.
@@ -53,14 +54,15 @@ class PrivacyCell : AppCompatActivity(), NavigationView.OnNavigationItemSelected
     private lateinit var actionBarDrawerToggle: ActionBarDrawerToggle
 
     // Declare the views.
-    lateinit var secureFromStingrayImageView: ImageView
-    lateinit var secureFromStingrayTextView: TextView
-    lateinit var voiceNetworkTextView: TextView
-    lateinit var voiceNetworkDetailsTextView: TextView
-    lateinit var dataNetworkTextView: TextView
-    lateinit var dataNetworkDetailsTextView: TextView
-    lateinit var additionalNetworkInfoTextView: TextView
-    lateinit var additionalNetworkInfoDetailsTextView: TextView
+    private lateinit var drawerLayout: DrawerLayout
+    private lateinit var secureFromStingrayImageView: ImageView
+    private lateinit var secureFromStingrayTextView: TextView
+    private lateinit var voiceNetworkTextView: TextView
+    private lateinit var voiceNetworkDetailsTextView: TextView
+    private lateinit var dataNetworkTextView: TextView
+    private lateinit var dataNetworkDetailsTextView: TextView
+    private lateinit var additionalNetworkInfoTextView: TextView
+    private lateinit var additionalNetworkInfoDetailsTextView: TextView
 
     override fun onCreate(savedInstanceState: Bundle?) {
         // Run the default commands.
@@ -70,7 +72,7 @@ class PrivacyCell : AppCompatActivity(), NavigationView.OnNavigationItemSelected
         setContentView(R.layout.privacy_cell_drawerlayout)
 
         // Get handles for the views.
-        val drawerLayout = findViewById<DrawerLayout>(R.id.drawerlayout)
+        drawerLayout = findViewById(R.id.drawerlayout)
         val toolbar = findViewById<Toolbar>(R.id.toolbar)
         secureFromStingrayImageView = findViewById(R.id.secure_from_stingray_imageview)
         secureFromStingrayTextView = findViewById(R.id.secure_from_stingray_textview)
@@ -147,7 +149,7 @@ class PrivacyCell : AppCompatActivity(), NavigationView.OnNavigationItemSelected
                 // Check to see if a phone permission dialog is already displayed.  This happens if the app is restarted when the dialog is shown.
                 if (supportFragmentManager.findFragmentByTag(getString(R.string.phone_permission)) == null) {  // No dialog is currently shown.
                     // Instantiate the phone permission dialog fragment.
-                    val phonePermissionDialogFragment: DialogFragment = PhonePermissionDialog()
+                    val phonePermissionDialogFragment = PhonePermissionDialog()
 
                     // Show the phone permission alert dialog.  The permission will be requested when the dialog is closed.
                     phonePermissionDialogFragment.show(supportFragmentManager, getString(R.string.phone_permission))
@@ -159,6 +161,38 @@ class PrivacyCell : AppCompatActivity(), NavigationView.OnNavigationItemSelected
         }
     }
 
+    override fun onNavigationItemSelected(menuItem: MenuItem) : Boolean {
+        // Get the menu item ID.
+        val menuItemId = menuItem.itemId
+
+        // Run the commands that correspond to the selected menu item.
+        if (menuItemId == R.id.permissions) {  // Permissions.
+            // Instantiate the permissions dialog fragment.
+            val permissionsDialogFragment = WebViewDialog().type(WebViewDialog.PERMISSIONS)
+
+            // Show the permissions alert dialog.
+            permissionsDialogFragment.show(supportFragmentManager, getString(R.string.permissions))
+        } else if (menuItemId == R.id.privacy_policy) {  // Privacy Policy.
+            // Instantiate the privacy policy dialog fragment.
+            val privacyPolicyDialogFragment = WebViewDialog().type(WebViewDialog.PRIVACY_POLICY)
+
+            // Show the privacy policy alert dialog.
+            privacyPolicyDialogFragment.show(supportFragmentManager, getString(R.string.privacy_policy))
+        } else if (menuItemId == R.id.changelog) {  // Changelog.
+            // Instantiate the changelog dialog fragment.
+            val changelogDialogFragment = WebViewDialog().type(WebViewDialog.CHANGELOG)
+
+            // Show the changelog alert dialog.
+            changelogDialogFragment.show(supportFragmentManager, getString(R.string.changelog))
+        }
+
+        // Close the navigation drawer.
+        drawerLayout.closeDrawer(GravityCompat.START)
+
+        // Consume the click.
+        return true
+    }
+
     override fun onCloseStoragePermissionDialog() {
         // Request the read phone state permission.  There is only one permission request in the app, so it has a request code of 0.
         ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_PHONE_STATE), 0)
@@ -269,9 +303,4 @@ class PrivacyCell : AppCompatActivity(), NavigationView.OnNavigationItemSelected
             else -> arrayOf(getString(R.string.error), "")
         }
     }
-
-    override fun onNavigationItemSelected(menuItem: MenuItem) : Boolean {
-        // TODO.
-        return true
-    }
 }
\ No newline at end of file