feat(gateway): show app version in header + copy/share debug log

- Version label (e.g. v2.0.0 (6)) displayed in the app header
- Copy and Share buttons appear when debug panel is open
- Copy puts full log in clipboard, Share opens Android share sheet
This commit is contained in:
dadaloop82
2026-04-15 16:07:22 +00:00
parent d839a7e267
commit b606e2b361
2 changed files with 87 additions and 13 deletions
@@ -11,6 +11,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
@@ -90,8 +91,31 @@ class MainActivity : AppCompatActivity(), BleScaleListener, ServerEventListener
binding.btnDebug.setOnClickListener {
debugVisible = !debugVisible
binding.svDebugLog.visibility = if (debugVisible) View.VISIBLE else View.GONE
binding.btnDebug.text = if (debugVisible) "🐛 Nascondi Debug" else "🐛 Debug"
binding.btnCopyLog.visibility = if (debugVisible) View.VISIBLE else View.GONE
binding.btnShareLog.visibility = if (debugVisible) View.VISIBLE else View.GONE
binding.btnDebug.text = if (debugVisible) "\uD83D\uDC1B Nascondi Debug" else "\uD83D\uDC1B Debug"
}
binding.btnCopyLog.setOnClickListener {
val log = debugLines.joinToString("\n")
val cm = getSystemService(CLIPBOARD_SERVICE) as android.content.ClipboardManager
cm.setPrimaryClip(android.content.ClipData.newPlainText("EverShelf Scale Log", log))
Toast.makeText(this, "Log copiato negli appunti", Toast.LENGTH_SHORT).show()
}
binding.btnShareLog.setOnClickListener {
val log = debugLines.joinToString("\n")
val intent = Intent(Intent.ACTION_SEND).apply {
type = "text/plain"
putExtra(Intent.EXTRA_SUBJECT, "EverShelf Scale Gateway - Debug Log")
putExtra(Intent.EXTRA_TEXT, log)
}
startActivity(Intent.createChooser(intent, "Condividi log"))
}
// Show app version
try {
val pInfo = packageManager.getPackageInfo(packageName, 0)
binding.tvVersion.text = "v${pInfo.versionName} (${pInfo.longVersionCode})"
} catch (_: Exception) { }
updateGatewayUrl()
checkPermissionsAndStart()
@@ -21,13 +21,31 @@
android:textColor="#1E293B"
android:paddingBottom="4dp" />
<TextView
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="16dp">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Collega la tua bilancia smart a EverShelf via Bluetooth"
android:textSize="13sp"
android:textColor="#64748B"
android:paddingBottom="16dp" />
android:textColor="#64748B" />
<TextView
android:id="@+id/tv_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="v?.?.?"
android:textSize="11sp"
android:textColor="#94A3B8"
android:fontFamily="monospace"
android:gravity="end" />
</LinearLayout>
<!-- ── Gateway URL card ───────────────────────────────────────────── -->
<androidx.cardview.widget.CardView
@@ -186,16 +204,48 @@
android:layout_marginBottom="8dp"
style="@style/Widget.MaterialComponents.Button" />
<Button
android:id="@+id/btn_debug"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="🐛 Debug"
android:orientation="horizontal"
android:layout_marginBottom="8dp">
<Button
android:id="@+id/btn_debug"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="\uD83D\uDC1B Debug"
android:backgroundTint="#374151"
android:textColor="#FFFFFF"
android:layout_marginBottom="8dp"
android:layout_marginEnd="4dp"
style="@style/Widget.MaterialComponents.Button" />
<Button
android:id="@+id/btn_copy_log"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\uD83D\uDCCB"
android:backgroundTint="#374151"
android:textColor="#FFFFFF"
android:minWidth="48dp"
android:layout_marginEnd="4dp"
android:visibility="gone"
style="@style/Widget.MaterialComponents.Button" />
<Button
android:id="@+id/btn_share_log"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\uD83D\uDCE4"
android:backgroundTint="#374151"
android:textColor="#FFFFFF"
android:minWidth="48dp"
android:visibility="gone"
style="@style/Widget.MaterialComponents.Button" />
</LinearLayout>
<ScrollView
android:id="@+id/sv_debug_log"
android:layout_width="match_parent"