From 15ae8cd2e85b294af386935b68a0e965723b713d Mon Sep 17 00:00:00 2001 From: Ludovic Goix Date: Thu, 18 Jun 2020 23:05:33 -0400 Subject: [PATCH] Show app version in the app #5 --- .../java/com/geeksville/mesh/MainActivity.kt | 46 ++++++++++-- app/src/main/res/layout/activity_main.xml | 70 +++++++++---------- app/src/main/res/menu/menu_main.xml | 18 +++-- app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 12 ++-- 5 files changed, 93 insertions(+), 54 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/MainActivity.kt b/app/src/main/java/com/geeksville/mesh/MainActivity.kt index ca75c97fc..e64fb64cc 100644 --- a/app/src/main/java/com/geeksville/mesh/MainActivity.kt +++ b/app/src/main/java/com/geeksville/mesh/MainActivity.kt @@ -1,6 +1,5 @@ package com.geeksville.mesh -// import kotlinx.android.synthetic.main.tabs.* import android.Manifest import android.annotation.SuppressLint import android.app.Activity @@ -12,6 +11,7 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter +import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.hardware.usb.UsbDevice import android.hardware.usb.UsbManager @@ -22,10 +22,11 @@ import android.os.RemoteException import android.view.Menu import android.view.MenuItem import android.view.MotionEvent +import android.view.View import android.widget.Toast import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.widget.TooltipCompat +import androidx.appcompat.widget.Toolbar import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment @@ -121,6 +122,8 @@ class MainActivity : AppCompatActivity(), Logging, bluetoothManager.adapter } + private var actionBarMenu: Menu? = null + val model: UIViewModel by viewModels() data class TabInfo(val text: String, val icon: Int, val content: Fragment) @@ -390,6 +393,8 @@ class MainActivity : AppCompatActivity(), Logging, } */ setContentView(R.layout.activity_main) + initToolbar() + pager.adapter = tabsAdapter pager.isUserInputEnabled = false // Gestures for screen switching doesn't work so good with the map view @@ -409,8 +414,18 @@ class MainActivity : AppCompatActivity(), Logging, askToRate() } + private fun initToolbar() { + val toolbar = + findViewById(R.id.toolbar) as Toolbar + setSupportActionBar(toolbar) + supportActionBar?.setDisplayShowTitleEnabled(false) + } + private fun updateConnectionStatusImage(connected: MeshService.ConnectionState) { + if (actionBarMenu==null) + return + val (image, tooltip) = when (connected) { MeshService.ConnectionState.CONNECTED -> Pair(R.drawable.cloud_on, R.string.connected) MeshService.ConnectionState.DEVICE_SLEEP -> Pair( @@ -424,8 +439,11 @@ class MainActivity : AppCompatActivity(), Logging, else -> Pair(R.drawable.cloud_off, R.string.disconnected) } - connectStatusImage.setImageResource(image) - TooltipCompat.setTooltipText(connectStatusImage, getString(tooltip)) + val item = actionBarMenu?.findItem(R.id.connectStatusImage) + if (item != null) { + item.setIcon(image) + item.setTitle(tooltip) + } } @@ -804,6 +822,7 @@ class MainActivity : AppCompatActivity(), Logging, override fun onCreateOptionsMenu(menu: Menu): Boolean { // Inflate the menu; this adds items to the action bar if it is present. menuInflater.inflate(R.menu.menu_main, menu) + actionBarMenu = menu return true } @@ -812,10 +831,27 @@ class MainActivity : AppCompatActivity(), Logging, // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. return when (item.itemId) { - R.id.action_settings -> true + R.id.about -> { + getVersionInfo() + return true + } + R.id.connectStatusImage -> { + Toast.makeText(this, item.title, Toast.LENGTH_SHORT).show() + return true + } else -> super.onOptionsItemSelected(item) } } + + private fun getVersionInfo() { + try { + val packageInfo: PackageInfo = packageManager.getPackageInfo(packageName, 0) + val versionName = packageInfo.versionName + Toast.makeText(this, versionName, Toast.LENGTH_LONG).show() + } catch (e: PackageManager.NameNotFoundException) { + errormsg("Can not find the version: ${e.message}") + } + } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index faade1452..62f4e2fdf 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -7,6 +7,7 @@ tools:context=".MainActivity"> @@ -15,48 +16,41 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - - - - - - app:layout_constraintHeight_percent=".5" - app:layout_constraintTop_toTopOf="parent" - app:srcCompat="@drawable/cloud_off" /> + + + + + + xmlns:app="http://schemas.android.com/apk/res-auto"> + android:id="@+id/connectStatusImage" + android:contentDescription="@string/connection_status" + android:icon="@drawable/cloud_off" + android:tint="#FFFFFF" + android:title="@string/disconnected" + app:showAsAction="ifRoom" /> + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 918497e42..fe6ec0143 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -70,4 +70,5 @@ UNRECOGNIZED Meshtastic Service Notifications You must turn on location services in Android Settings + About diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 3431ac63d..326945483 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -5,17 +5,21 @@ @color/colorPrimary @color/colorPrimaryDark - @color/colorAccent + #FFFFFF + + - +