mirror of https://codeberg.org/tom79/Fedilab
parent
e50c0fa9fe
commit
5b4f7d70b6
@ -1,118 +0,0 @@
|
||||
package app.fedilab.android.activities;
|
||||
/* Copyright 2022 Thomas Schneider
|
||||
*
|
||||
* This file is a part of Fedilab
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under the terms of the
|
||||
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* Fedilab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
* Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
import android.text.style.UnderlineSpan;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
|
||||
import app.fedilab.android.BaseMainActivity;
|
||||
import app.fedilab.android.R;
|
||||
import app.fedilab.android.client.entities.app.InstanceSocial;
|
||||
import app.fedilab.android.databinding.ActivityInstanceSocialBinding;
|
||||
import app.fedilab.android.helper.Helper;
|
||||
import app.fedilab.android.helper.ThemeHelper;
|
||||
import app.fedilab.android.viewmodel.mastodon.InstanceSocialVM;
|
||||
|
||||
|
||||
public class InstanceHealthActivity extends BaseAlertDialogActivity {
|
||||
|
||||
private ActivityInstanceSocialBinding binding;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
binding = ActivityInstanceSocialBinding.inflate(getLayoutInflater());
|
||||
|
||||
setContentView(binding.getRoot());
|
||||
getWindow().setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
if (getSupportActionBar() != null)
|
||||
getSupportActionBar().hide();
|
||||
|
||||
binding.close.setOnClickListener(view -> finish());
|
||||
|
||||
SpannableString content = new SpannableString(binding.refInstance.getText().toString());
|
||||
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
|
||||
binding.refInstance.setText(content);
|
||||
binding.refInstance.setOnClickListener(view -> {
|
||||
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://instances.social"));
|
||||
startActivity(browserIntent);
|
||||
});
|
||||
|
||||
checkInstance();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
if (item.getItemId() == android.R.id.home) {
|
||||
finish();
|
||||
return true;
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
|
||||
private void checkInstance() {
|
||||
|
||||
|
||||
InstanceSocialVM instanceSocialVM = new ViewModelProvider(InstanceHealthActivity.this).get(InstanceSocialVM.class);
|
||||
instanceSocialVM.getInstances(BaseMainActivity.currentInstance.trim()).observe(InstanceHealthActivity.this, instanceSocialList -> {
|
||||
if (instanceSocialList != null && instanceSocialList.instances.size() > 0) {
|
||||
InstanceSocial.Instance instanceSocial = instanceSocialList.instances.get(0);
|
||||
for (InstanceSocial.Instance instance : instanceSocialList.instances) {
|
||||
if (instance.name.equalsIgnoreCase(BaseMainActivity.currentInstance.trim())) {
|
||||
instanceSocial = instance;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (instanceSocial.thumbnail != null && !instanceSocial.thumbnail.equals("null"))
|
||||
Glide.with(InstanceHealthActivity.this)
|
||||
.asBitmap()
|
||||
.load(instanceSocial.thumbnail)
|
||||
.into(binding.backGroundImage);
|
||||
binding.name.setText(instanceSocial.name);
|
||||
if (instanceSocial.up) {
|
||||
binding.up.setText(R.string.is_up);
|
||||
binding.up.setTextColor(ThemeHelper.getAttColor(this, R.attr.colorPrimary));
|
||||
} else {
|
||||
binding.up.setText(R.string.is_down);
|
||||
binding.up.setTextColor(ThemeHelper.getAttColor(this, R.attr.colorError));
|
||||
}
|
||||
binding.uptime.setText(getString(R.string.instance_health_uptime, (instanceSocial.uptime * 100)));
|
||||
if (instanceSocial.checked_at != null)
|
||||
binding.checkedAt.setText(getString(R.string.instance_health_checkedat, Helper.dateToString(instanceSocial.checked_at)));
|
||||
binding.values.setText(getString(R.string.instance_health_indication, instanceSocial.version, Helper.withSuffix(instanceSocial.active_users), Helper.withSuffix(instanceSocial.statuses)));
|
||||
binding.instanceContainer.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
binding.instanceContainer.setVisibility(View.VISIBLE);
|
||||
binding.mainContainer.setVisibility(View.GONE);
|
||||
binding.noInstance.setVisibility(View.VISIBLE);
|
||||
}
|
||||
binding.loader.setVisibility(View.GONE);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,106 @@
|
||||
package app.fedilab.android.activities
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.text.SpannableString
|
||||
import android.text.style.UnderlineSpan
|
||||
import android.view.Window
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import app.fedilab.android.BaseMainActivity
|
||||
import app.fedilab.android.R
|
||||
import app.fedilab.android.client.entities.app.InstanceSocial
|
||||
import app.fedilab.android.databinding.ActivityInstanceSocialBinding
|
||||
import app.fedilab.android.helper.Helper
|
||||
import app.fedilab.android.helper.ThemeHelper
|
||||
import app.fedilab.android.viewmodel.mastodon.InstanceSocialVM
|
||||
import com.bumptech.glide.Glide
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
|
||||
/* Copyright 2022 Thomas Schneider
|
||||
*
|
||||
* This file is a part of Fedilab
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under the terms of the
|
||||
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* Fedilab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
* Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
class InstanceHealthActivity : DialogFragment() {
|
||||
private var _binding: ActivityInstanceSocialBinding? = null
|
||||
private val binding: ActivityInstanceSocialBinding get() = _binding!!
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
_binding = ActivityInstanceSocialBinding.inflate(layoutInflater)
|
||||
binding.close.setOnClickListener { dialog?.dismiss() }
|
||||
val content = SpannableString(binding.refInstance.text.toString())
|
||||
content.setSpan(UnderlineSpan(), 0, content.length, 0)
|
||||
binding.refInstance.text = content
|
||||
binding.refInstance.setOnClickListener {
|
||||
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://instances.social")))
|
||||
}
|
||||
|
||||
val materialAlertDialogBuilder = MaterialAlertDialogBuilder(requireContext())
|
||||
materialAlertDialogBuilder.setView(binding.root)
|
||||
|
||||
val dialog = materialAlertDialogBuilder.create()
|
||||
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
|
||||
dialog.setOnShowListener { checkInstance() }
|
||||
|
||||
return dialog
|
||||
}
|
||||
|
||||
private fun checkInstance() {
|
||||
val instanceSocialVM = ViewModelProvider(this@InstanceHealthActivity)[InstanceSocialVM::class.java]
|
||||
instanceSocialVM.getInstances(BaseMainActivity.currentInstance.trim { it <= ' ' })
|
||||
.observe(this@InstanceHealthActivity) { instanceSocialList: InstanceSocial? ->
|
||||
val instance = instanceSocialList?.instances?.firstOrNull { instance ->
|
||||
instance.name.equals(BaseMainActivity.currentInstance.trim { it <= ' ' }, ignoreCase = true)
|
||||
}
|
||||
if (instance != null) {
|
||||
instance.thumbnail?.takeIf { it != "null" }?.let { thumbnail ->
|
||||
Glide.with(this@InstanceHealthActivity)
|
||||
.asBitmap()
|
||||
.placeholder(R.drawable.default_banner)
|
||||
.load(thumbnail)
|
||||
.into(binding.backgroundImage)
|
||||
}
|
||||
binding.name.text = instance.name
|
||||
if (instance.up) {
|
||||
binding.up.setText(app.fedilab.android.R.string.is_up)
|
||||
binding.up.setTextColor(ThemeHelper.getAttColor(requireContext(), app.fedilab.android.R.attr.colorPrimary))
|
||||
} else {
|
||||
binding.up.setText(app.fedilab.android.R.string.is_down)
|
||||
binding.up.setTextColor(ThemeHelper.getAttColor(requireContext(), app.fedilab.android.R.attr.colorError))
|
||||
}
|
||||
binding.uptime.text = getString(app.fedilab.android.R.string.instance_health_uptime, instance.uptime * 100)
|
||||
if (instance.checked_at != null)
|
||||
binding.checkedAt.text =
|
||||
getString(app.fedilab.android.R.string.instance_health_checkedat, Helper.dateToString(instance.checked_at))
|
||||
binding.values.text = getString(
|
||||
app.fedilab.android.R.string.instance_health_indication,
|
||||
instance.version,
|
||||
Helper.withSuffix(instance.active_users.toLong()),
|
||||
Helper.withSuffix(instance.statuses.toLong())
|
||||
)
|
||||
} else {
|
||||
binding.instanceData.isVisible = false
|
||||
binding.noInstance.isVisible = true
|
||||
}
|
||||
binding.loader.isVisible = false
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
_binding = null
|
||||
}
|
||||
}
|
@ -1,198 +1,111 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="450dp"
|
||||
android:layout_margin="@dimen/fab_margin"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:context=".activities.InstanceProfileActivity">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/back_ground_image"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:alpha="0.2"
|
||||
android:contentDescription="@string/logo_of_the_instance"
|
||||
android:scaleType="centerCrop" />
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/instance_container"
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/fab_margin"
|
||||
android:layout_marginEnd="@dimen/fab_margin"
|
||||
android:visibility="gone">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="10dp"
|
||||
android:background="@drawable/blue_border"
|
||||
android:gravity="center"
|
||||
android:textColor="?colorPrimary"
|
||||
android:textSize="20sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/description"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginStart="5dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:autoLink="web"
|
||||
android:gravity="center"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/name" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/user_count_label"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:text="@string/user_count"
|
||||
android:textAlignment="center"
|
||||
app:layout_constraintEnd_toStartOf="@id/status_count_label"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/description" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/status_count_label"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:text="@string/status_count"
|
||||
android:textAlignment="center"
|
||||
app:layout_constraintEnd_toStartOf="@id/instance_count_label"
|
||||
app:layout_constraintStart_toEndOf="@id/user_count_label"
|
||||
app:layout_constraintTop_toBottomOf="@id/description" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/instance_count_label"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:text="@string/instance_count"
|
||||
android:textAlignment="center"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/status_count_label"
|
||||
app:layout_constraintTop_toBottomOf="@id/description" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/user_count"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="center"
|
||||
app:layout_constraintEnd_toEndOf="@id/user_count_label"
|
||||
app:layout_constraintStart_toStartOf="@id/user_count_label"
|
||||
app:layout_constraintTop_toBottomOf="@id/user_count_label" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/status_count"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="center"
|
||||
app:layout_constraintEnd_toEndOf="@id/status_count_label"
|
||||
app:layout_constraintStart_toStartOf="@id/status_count_label"
|
||||
app:layout_constraintTop_toBottomOf="@id/status_count_label" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/instance_count"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="center"
|
||||
app:layout_constraintEnd_toEndOf="@id/instance_count_label"
|
||||
app:layout_constraintStart_toStartOf="@id/instance_count_label"
|
||||
app:layout_constraintTop_toBottomOf="@id/instance_count_label" />
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
android:id="@+id/barrier_counters_bottom"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:barrierDirection="bottom"
|
||||
app:constraint_referenced_ids="user_count,status_count,instance_count" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/software"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="italic"
|
||||
app:layout_constraintEnd_toStartOf="@id/version"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/barrier_counters_bottom" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/version"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="italic"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/software"
|
||||
app:layout_constraintTop_toBottomOf="@id/barrier_counters_bottom" />
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
android:id="@+id/barrier_software_version_bottom"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:barrierDirection="bottom"
|
||||
app:constraint_referenced_ids="software,version" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/lv_accounts"
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="5dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:divider="@null"
|
||||
android:scrollbars="none"
|
||||
app:layout_constraintTop_toBottomOf="@id/barrier_software_version_bottom" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/close"
|
||||
style="@style/Widget.Material3.Button.OutlinedButton"
|
||||
android:layout_centerInParent="true"
|
||||
android:orientation="vertical"
|
||||
android:padding="12dp">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="6dp"
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="@style/TextAppearance.Material3.TitleLarge"
|
||||
tools:text="Instance" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/version"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="6dp"
|
||||
android:layout_marginTop="6dp"
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="@style/TextAppearance.Material3.LabelMedium"
|
||||
tools:text="4.0" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/software"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="6dp"
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="@style/TextAppearance.Material3.LabelMedium"
|
||||
tools:text="Mastodon" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/user_count_label"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:text="@string/user_count"
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="@style/TextAppearance.Material3.LabelMedium" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/user_count"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="@style/TextAppearance.Material3.BodyLarge"
|
||||
tools:text="500" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/status_count_label"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:text="@string/status_count"
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="@style/TextAppearance.Material3.LabelMedium" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/status_count"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="@style/TextAppearance.Material3.BodyLarge"
|
||||
tools:text="500" />
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
android:id="@+id/loader"
|
||||
style="@style/Widget.Material3.LinearProgressIndicator"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="20dp"
|
||||
android:text="@string/close"
|
||||
android:textAllCaps="false"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/lv_accounts" />
|
||||
|
||||
android:layout_centerInParent="true"
|
||||
android:indeterminate="true"
|
||||
android:indeterminateOnly="true" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/loader"
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/close"
|
||||
style="@style/Widget.Material3.Button.OutlinedButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:text="@string/close" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
@ -1,130 +1,112 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/container"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="300dp"
|
||||
android:layout_margin="@dimen/fab_margin"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:context=".activities.InstanceHealthActivity">
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<RelativeLayout
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/background_image"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="300dp"
|
||||
android:alpha="0.2">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/back_ground_image"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="300dp"
|
||||
android:contentDescription="@string/logo_of_the_instance"
|
||||
android:scaleType="centerCrop" />
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/instance_container"
|
||||
android:layout_height="0dp"
|
||||
android:alpha="0.2"
|
||||
android:contentDescription="@string/logo_of_the_instance"
|
||||
android:scaleType="centerCrop"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:src="@tools:sample/backgrounds/scenic" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/fab_margin"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/main_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:textSize="20sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/values"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="10dp"
|
||||
android:gravity="center" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/checked_at"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="10dp" />
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="@style/TextAppearance.Material3.TitleLarge"
|
||||
tools:text="instance.test" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/up"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="10dp"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/uptime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="10dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/ref_instance"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_gravity="end|center_vertical"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:layout_weight="1"
|
||||
android:text="via instances.social"
|
||||
tools:ignore="HardcodedText" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/no_instance"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="50dp"
|
||||
android:layout_marginBottom="50dp"
|
||||
android:autoLink="web"
|
||||
android:gravity="center"
|
||||
android:text="@string/no_instance_reccord"
|
||||
android:textSize="16sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/close"
|
||||
style="@style/Widget.Material3.Button.OutlinedButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="20dp"
|
||||
android:text="@string/close"
|
||||
android:textAllCaps="false" />
|
||||
</LinearLayout>
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/values"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="@style/TextAppearance.Material3.LabelMedium"
|
||||
tools:text="version: 4.0\n100 users - 10 k statuses" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/checked_at"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="@style/TextAppearance.Material3.LabelMedium"
|
||||
tools:text="Checked at: 2023-01-01 00:00:00" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/loader"
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/up"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center">
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="@style/TextAppearance.Material3.LabelLarge"
|
||||
tools:text="Is up!" />
|
||||
|
||||
<ProgressBar
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true" />
|
||||
</RelativeLayout>
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/uptime"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="@style/TextAppearance.Material3.LabelMedium"
|
||||
tools:text="Uptime: 100.00 %" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/ref_instance"
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="via instances.social"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
<androidx.constraintlayout.helper.widget.Flow
|
||||
android:id="@+id/instance_data"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
app:constraint_referenced_ids="name,values,checked_at,up,uptime,ref_instance"
|
||||
app:flow_verticalGap="12dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/close"
|
||||
app:layout_constraintTop_toTopOf="@id/background_image" />
|
||||
|
||||
</RelativeLayout>
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/no_instance"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:autoLink="web"
|
||||
android:text="@string/no_instance_reccord"
|
||||
android:textAlignment="center"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@id/close"
|
||||
app:layout_constraintTop_toTopOf="@id/background_image" />
|
||||
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
android:id="@+id/loader"
|
||||
style="@style/Widget.Material3.LinearProgressIndicator"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
android:indeterminateOnly="true"
|
||||
app:layout_constraintBottom_toBottomOf="@id/background_image"
|
||||
app:layout_constraintEnd_toEndOf="@id/background_image"
|
||||
app:layout_constraintStart_toStartOf="@id/background_image"
|
||||
app:layout_constraintTop_toTopOf="@id/background_image" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/close"
|
||||
style="@style/Widget.Material3.Button.OutlinedButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="12dp"
|
||||
android:text="@string/close"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/background_image" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
Loading…
Reference in new issue