diff --git a/app/src/main/java/ru/yourok/torrserve/ui/activities/main/MainActivity.kt b/app/src/main/java/ru/yourok/torrserve/ui/activities/main/MainActivity.kt index 299f2f0c..cc25702e 100644 --- a/app/src/main/java/ru/yourok/torrserve/ui/activities/main/MainActivity.kt +++ b/app/src/main/java/ru/yourok/torrserve/ui/activities/main/MainActivity.kt @@ -6,6 +6,8 @@ import android.content.res.ColorStateList import android.content.res.Configuration import android.net.Uri import android.os.Bundle +import android.text.SpannableString +import android.text.Spanned import android.util.Log import android.view.KeyEvent import android.view.View @@ -44,9 +46,11 @@ import ru.yourok.torrserve.ui.fragments.main.update.apk.ApkUpdateFragment import ru.yourok.torrserve.ui.fragments.main.update.apk.UpdaterApk import ru.yourok.torrserve.ui.fragments.main.update.server.ServerUpdateFragment import ru.yourok.torrserve.ui.fragments.main.update.server.UpdaterServer +import ru.yourok.torrserve.utils.CImageSpan import ru.yourok.torrserve.utils.Format.dp2px import ru.yourok.torrserve.utils.Net import ru.yourok.torrserve.utils.Permission +import ru.yourok.torrserve.utils.SpanFormat import ru.yourok.torrserve.utils.ThemeUtil import kotlin.system.exitProcess @@ -161,7 +165,14 @@ class MainActivity : AppCompatActivity() { val hostView = findViewById(R.id.tvCurrentHost) val hostColor = ThemeUtil.getColorFromAttr(this, R.attr.colorHost) host.observe(this) { - hostView?.text = it.removePrefix("http://") + hostView?.text = if (it.startsWith("https", true)) { + val sIcon = SpannableString(" ") + AppCompatResources.getDrawable(this, R.drawable.ssl)?.let { icon -> + icon.setBounds(0, 0, icon.intrinsicWidth, icon.intrinsicHeight) + sIcon.setSpan(CImageSpan(icon), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + } + SpanFormat.format("%s ${it.removePrefix("https://")}", sIcon) + } else it.removePrefix("http://") } val data = viewModel.get() data.observe(this) { diff --git a/app/src/main/java/ru/yourok/torrserve/ui/fragments/main/servfinder/HostAdapter.kt b/app/src/main/java/ru/yourok/torrserve/ui/fragments/main/servfinder/HostAdapter.kt index 1f130717..90263a3e 100644 --- a/app/src/main/java/ru/yourok/torrserve/ui/fragments/main/servfinder/HostAdapter.kt +++ b/app/src/main/java/ru/yourok/torrserve/ui/fragments/main/servfinder/HostAdapter.kt @@ -1,18 +1,22 @@ package ru.yourok.torrserve.ui.fragments.main.servfinder import android.content.res.ColorStateList +import android.text.SpannableString +import android.text.Spanned import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.ImageView import android.widget.TextView +import androidx.appcompat.content.res.AppCompatResources import androidx.recyclerview.widget.RecyclerView import com.google.android.material.shape.CornerFamily import com.google.android.material.shape.MaterialShapeDrawable import com.google.android.material.shape.ShapeAppearanceModel import ru.yourok.torrserve.R import ru.yourok.torrserve.settings.Settings +import ru.yourok.torrserve.utils.CImageSpan import ru.yourok.torrserve.utils.Format +import ru.yourok.torrserve.utils.SpanFormat import ru.yourok.torrserve.utils.ThemeUtil class HostAdapter : RecyclerView.Adapter() { @@ -84,21 +88,38 @@ class HostAdapter : RecyclerView.Adapter() { val hostView = holder.view.findViewById(R.id.tvHost) hostView.apply { - text = hosts[position].host.removePrefix("http://") + text = if (hosts[position].host.startsWith("https", true)) { // show https badge + val sIcon = SpannableString(" ") + AppCompatResources.getDrawable(holder.view.context, R.drawable.ssl)?.let { icon -> + icon.setBounds(0, 0, icon.intrinsicWidth, icon.intrinsicHeight) + sIcon.setSpan(CImageSpan(icon), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + } + SpanFormat.format("${hosts[position].host.removePrefix("https://")} %s", sIcon) + } else hosts[position].host.removePrefix("http://") val shapeDrawable = MaterialShapeDrawable(shapeAppearanceModel) shapeDrawable.fillColor = hostColor.withAlpha(10) shapeDrawable.setStroke(2.0f, hostColor.withAlpha(240)) background = shapeDrawable setTextColor(hostColor) - } // TODO: http|https badge + } val version = hosts[position].version - // set online badge by added version - //if (version.contains("·", true) || version.startsWith("1.2.") || version.startsWith("MatriX")) - if (version.isNotBlank() && (version.startsWith("1.2.") || version.startsWith("MatriX"))) - holder.view.findViewById(R.id.ivOnline)?.visibility = View.VISIBLE - else { - holder.view.findViewById(R.id.ivOnline)?.visibility = View.INVISIBLE + val onlineView = holder.view.findViewById(R.id.tvOnline) + val onlineColor = AppCompatResources.getColorStateList(holder.view.context, R.color.green) + // set online and dim by added version + if (version.isNotBlank() && (version.startsWith("1.2.") || version.startsWith("MatriX"))) { + onlineView?.apply { + visibility = View.VISIBLE + hostView.alpha = 1.0f + val shapeDrawable = MaterialShapeDrawable(shapeAppearanceModel) + shapeDrawable.fillColor = onlineColor.withAlpha(10) + shapeDrawable.setStroke(2.0f, onlineColor) + background = shapeDrawable + setTextColor(onlineColor) + text = holder.view.context.getString(R.string.online).lowercase() + } + } else { + onlineView?.visibility = View.INVISIBLE hostView.alpha = 0.6f } val status = hosts[position].status diff --git a/app/src/main/java/ru/yourok/torrserve/ui/fragments/main/servfinder/ServerFinderFragment.kt b/app/src/main/java/ru/yourok/torrserve/ui/fragments/main/servfinder/ServerFinderFragment.kt index f992fd95..600df3fc 100644 --- a/app/src/main/java/ru/yourok/torrserve/ui/fragments/main/servfinder/ServerFinderFragment.kt +++ b/app/src/main/java/ru/yourok/torrserve/ui/fragments/main/servfinder/ServerFinderFragment.kt @@ -71,7 +71,6 @@ class ServerFinderFragment : TSFragment() { setHost() } - //vi.findViewById(R.id.tvConnectedHost)?.text = Settings.getHost().removePrefix("http://") vi.findViewById(R.id.etHost)?.setText(Settings.getHost().removePrefix("http://")) return vi } @@ -166,11 +165,11 @@ class ServerFinderFragment : TSFragment() { if (TorrService.isLocal()) status += " · ${App.context.getString(R.string.connected_host)}" val localVersion: String = withContext(Dispatchers.IO) { - Api.remoteEcho(localhost).also { - if (it.isNotEmpty()) { - status += " · ${App.context.getString(R.string.online)}" - } - } + Api.remoteEcho(localhost) // .also { +// if (it.isNotEmpty()) { +// status += " · ${App.context.getString(R.string.online)}" +// } +// } } hostAdapter.add(ServerIp(localhost, localVersion, status)) // add saved @@ -179,11 +178,11 @@ class ServerFinderFragment : TSFragment() { if (host == Settings.getHost()) status = App.context.getString(R.string.connected_host) val remoteVersion: String = withContext(Dispatchers.IO) { - Api.remoteEcho(host).also { - if (it.isNotEmpty()) { - status += " · ${App.context.getString(R.string.online)}" - } - } + Api.remoteEcho(host) // .also { +// if (it.isNotEmpty()) { +// status += " · ${App.context.getString(R.string.online)}" +// } +// } } hostAdapter.add(ServerIp(host, remoteVersion, status)) } diff --git a/app/src/main/java/ru/yourok/torrserve/ui/fragments/main/servfinder/ServerFinderViewModel.kt b/app/src/main/java/ru/yourok/torrserve/ui/fragments/main/servfinder/ServerFinderViewModel.kt index a105b827..0e11775c 100644 --- a/app/src/main/java/ru/yourok/torrserve/ui/fragments/main/servfinder/ServerFinderViewModel.kt +++ b/app/src/main/java/ru/yourok/torrserve/ui/fragments/main/servfinder/ServerFinderViewModel.kt @@ -105,7 +105,7 @@ class ServerFinderViewModel : ViewModel() { App.context.getString(R.string.new_server) else "" if (version.isNotEmpty() && (version.startsWith("1.2.") || version.startsWith("MatriX"))) { - status += " · ${App.context.getString(R.string.online)}" +// status += " · ${App.context.getString(R.string.online)}" withContext(Dispatchers.Main) { servers?.value = ServerIp(checkHost, version, status) } diff --git a/app/src/main/res/drawable/ic_circle_online.xml b/app/src/main/res/drawable/ic_circle_online.xml deleted file mode 100644 index 8820f834..00000000 --- a/app/src/main/res/drawable/ic_circle_online.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ssl.xml b/app/src/main/res/drawable/ssl.xml new file mode 100644 index 00000000..6c7b486f --- /dev/null +++ b/app/src/main/res/drawable/ssl.xml @@ -0,0 +1,37 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/twotone_lock_16.xml b/app/src/main/res/drawable/twotone_lock_16.xml new file mode 100644 index 00000000..59ec4e38 --- /dev/null +++ b/app/src/main/res/drawable/twotone_lock_16.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/app/src/main/res/layout/host_item.xml b/app/src/main/res/layout/host_item.xml index fc61668d..a95bd815 100644 --- a/app/src/main/res/layout/host_item.xml +++ b/app/src/main/res/layout/host_item.xml @@ -70,8 +70,8 @@ - - + android:includeFontPadding="false" + android:paddingStart="4dp" + android:paddingLeft="4dp" + android:paddingEnd="4dp" + android:paddingRight="4dp" + android:singleLine="true" + android:visibility="invisible" + tools:text="@string/online" + tools:visibility="visible" />