implement home page widgets
This commit is contained in:
27
app/src/main/res/drawable/ic_widget_refresh.xml
Normal file
27
app/src/main/res/drawable/ic_widget_refresh.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M20,12a8,8 0,0 1,-13.7 5.6"
|
||||
android:strokeColor="#FFFFFFFF"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M4,12a8,8 0,0 1,13.7 -5.6"
|
||||
android:strokeColor="#FFFFFFFF"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2" />
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M17,3l3,3l-4,1z" />
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M7,21l-3,-3l4,-1z" />
|
||||
</vector>
|
||||
13
app/src/main/res/drawable/widget_background.xml
Normal file
13
app/src/main/res/drawable/widget_background.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners android:radius="22dp" />
|
||||
<solid android:color="#F0171C23" />
|
||||
<stroke
|
||||
android:width="1dp"
|
||||
android:color="#3335D38B" />
|
||||
<padding
|
||||
android:bottom="12dp"
|
||||
android:left="12dp"
|
||||
android:right="12dp"
|
||||
android:top="12dp" />
|
||||
</shape>
|
||||
8
app/src/main/res/drawable/widget_button.xml
Normal file
8
app/src/main/res/drawable/widget_button.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners android:radius="999dp" />
|
||||
<solid android:color="#2635D38B" />
|
||||
<stroke
|
||||
android:width="1dp"
|
||||
android:color="#6635D38B" />
|
||||
</shape>
|
||||
5
app/src/main/res/drawable/widget_panel.xml
Normal file
5
app/src/main/res/drawable/widget_panel.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners android:radius="14dp" />
|
||||
<solid android:color="#FF202733" />
|
||||
</shape>
|
||||
5
app/src/main/res/drawable/widget_panel_amber.xml
Normal file
5
app/src/main/res/drawable/widget_panel_amber.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners android:radius="14dp" />
|
||||
<solid android:color="#2CFFB84D" />
|
||||
</shape>
|
||||
5
app/src/main/res/drawable/widget_panel_blue.xml
Normal file
5
app/src/main/res/drawable/widget_panel_blue.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners android:radius="14dp" />
|
||||
<solid android:color="#264CC9F0" />
|
||||
</shape>
|
||||
5
app/src/main/res/drawable/widget_panel_green.xml
Normal file
5
app/src/main/res/drawable/widget_panel_green.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners android:radius="14dp" />
|
||||
<solid android:color="#2635D38B" />
|
||||
</shape>
|
||||
5
app/src/main/res/drawable/widget_panel_red.xml
Normal file
5
app/src/main/res/drawable/widget_panel_red.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners android:radius="14dp" />
|
||||
<solid android:color="#2CFF5A52" />
|
||||
</shape>
|
||||
15
app/src/main/res/drawable/widget_preview_fleet.xml
Normal file
15
app/src/main/res/drawable/widget_preview_fleet.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="360dp"
|
||||
android:height="180dp"
|
||||
android:viewportWidth="360"
|
||||
android:viewportHeight="180">
|
||||
<path android:fillColor="#FF171C23" android:pathData="M0,0h360v180h-360z" />
|
||||
<path android:fillColor="#FF26313D" android:pathData="M24,24h198v18h-198z" />
|
||||
<path android:fillColor="#FF35D38B" android:pathData="M24,62h34v34h-34zM64,62h34v34h-34zM104,62h34v34h-34zM144,62h34v34h-34zM184,62h34v34h-34zM224,62h34v34h-34z" />
|
||||
<path android:fillColor="#FFFFB84D" android:pathData="M264,62h34v34h-34z" />
|
||||
<path android:fillColor="#FFFF5A52" android:pathData="M304,62h34v34h-34z" />
|
||||
<path android:fillColor="#2635D38B" android:pathData="M24,118h88v34h-88z" />
|
||||
<path android:fillColor="#26FFB84D" android:pathData="M136,118h88v34h-88z" />
|
||||
<path android:fillColor="#26FF5A52" android:pathData="M248,118h88v34h-88z" />
|
||||
</vector>
|
||||
30
app/src/main/res/drawable/widget_preview_graph.xml
Normal file
30
app/src/main/res/drawable/widget_preview_graph.xml
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="360dp"
|
||||
android:height="180dp"
|
||||
android:viewportWidth="360"
|
||||
android:viewportHeight="180">
|
||||
<path android:fillColor="#FF171C23" android:pathData="M0,0h360v180h-360z" />
|
||||
<path android:fillColor="#FF27313D" android:pathData="M24,48h312v2h-312zM24,84h312v2h-312zM24,120h312v2h-312zM24,156h312v2h-312z" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M24,138 C72,118 96,130 132,96 C172,58 214,82 248,54 C284,24 304,46 336,32"
|
||||
android:strokeColor="#FF35D38B"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="6" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M24,118 C72,98 102,112 142,84 C182,60 212,92 250,76 C292,58 310,82 336,68"
|
||||
android:strokeColor="#FF4CC9F0"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="6" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M24,152 C66,138 98,144 136,126 C178,108 210,116 250,98 C288,82 312,104 336,92"
|
||||
android:strokeColor="#FFFFB84D"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="6" />
|
||||
</vector>
|
||||
14
app/src/main/res/drawable/widget_preview_incidents.xml
Normal file
14
app/src/main/res/drawable/widget_preview_incidents.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="360dp"
|
||||
android:height="180dp"
|
||||
android:viewportWidth="360"
|
||||
android:viewportHeight="180">
|
||||
<path android:fillColor="#FF171C23" android:pathData="M0,0h360v180h-360z" />
|
||||
<path android:fillColor="#26FF5A52" android:pathData="M24,48h82v104h-82z" />
|
||||
<path android:fillColor="#FFFF5A52" android:pathData="M46,72h38v50h-38z" />
|
||||
<path android:fillColor="#FF202733" android:pathData="M126,48h210v28h-210zM126,88h210v28h-210zM126,128h210v28h-210z" />
|
||||
<path android:fillColor="#FFFF5A52" android:pathData="M138,58h22v8h-22z" />
|
||||
<path android:fillColor="#FFFFB84D" android:pathData="M138,98h22v8h-22z" />
|
||||
<path android:fillColor="#FF35D38B" android:pathData="M138,138h22v8h-22z" />
|
||||
</vector>
|
||||
18
app/src/main/res/drawable/widget_preview_metric.xml
Normal file
18
app/src/main/res/drawable/widget_preview_metric.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="360dp"
|
||||
android:height="180dp"
|
||||
android:viewportWidth="360"
|
||||
android:viewportHeight="180">
|
||||
<path android:fillColor="#FF171C23" android:pathData="M0,0h360v180h-360z" />
|
||||
<path android:fillColor="#FF4CC9F0" android:pathData="M24,28h96v46h-96z" />
|
||||
<path android:fillColor="#FF27313D" android:pathData="M24,102h312v2h-312zM24,132h312v2h-312z" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M24,142 C64,96 92,128 130,88 C166,50 196,82 226,64 C264,40 292,74 336,36"
|
||||
android:strokeColor="#FF4CC9F0"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="8" />
|
||||
<path android:fillColor="#2635D38B" android:pathData="M300,24h36v36h-36z" />
|
||||
</vector>
|
||||
14
app/src/main/res/drawable/widget_preview_server.xml
Normal file
14
app/src/main/res/drawable/widget_preview_server.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="360dp"
|
||||
android:height="180dp"
|
||||
android:viewportWidth="360"
|
||||
android:viewportHeight="180">
|
||||
<path android:fillColor="#FF171C23" android:pathData="M0,0h360v180h-360z" />
|
||||
<path android:fillColor="#FF35D38B" android:pathData="M24,24h150v24h-150z" />
|
||||
<path android:fillColor="#FF27313D" android:pathData="M24,68h250v18h-250zM24,100h250v18h-250zM24,132h250v18h-250z" />
|
||||
<path android:fillColor="#FF35D38B" android:pathData="M24,68h176v18h-176z" />
|
||||
<path android:fillColor="#FF4CC9F0" android:pathData="M24,100h214v18h-214z" />
|
||||
<path android:fillColor="#FFFFB84D" android:pathData="M24,132h142v18h-142z" />
|
||||
<path android:fillColor="#2635D38B" android:pathData="M300,24h36v36h-36z" />
|
||||
</vector>
|
||||
17
app/src/main/res/drawable/widget_progress_amber.xml
Normal file
17
app/src/main/res/drawable/widget_progress_amber.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@android:id/background">
|
||||
<shape>
|
||||
<corners android:radius="999dp" />
|
||||
<solid android:color="#FF27313D" />
|
||||
</shape>
|
||||
</item>
|
||||
<item android:id="@android:id/progress">
|
||||
<clip>
|
||||
<shape>
|
||||
<corners android:radius="999dp" />
|
||||
<solid android:color="#FFFFB84D" />
|
||||
</shape>
|
||||
</clip>
|
||||
</item>
|
||||
</layer-list>
|
||||
17
app/src/main/res/drawable/widget_progress_cyan.xml
Normal file
17
app/src/main/res/drawable/widget_progress_cyan.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@android:id/background">
|
||||
<shape>
|
||||
<corners android:radius="999dp" />
|
||||
<solid android:color="#FF27313D" />
|
||||
</shape>
|
||||
</item>
|
||||
<item android:id="@android:id/progress">
|
||||
<clip>
|
||||
<shape>
|
||||
<corners android:radius="999dp" />
|
||||
<solid android:color="#FF4CC9F0" />
|
||||
</shape>
|
||||
</clip>
|
||||
</item>
|
||||
</layer-list>
|
||||
17
app/src/main/res/drawable/widget_progress_green.xml
Normal file
17
app/src/main/res/drawable/widget_progress_green.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@android:id/background">
|
||||
<shape>
|
||||
<corners android:radius="999dp" />
|
||||
<solid android:color="#FF27313D" />
|
||||
</shape>
|
||||
</item>
|
||||
<item android:id="@android:id/progress">
|
||||
<clip>
|
||||
<shape>
|
||||
<corners android:radius="999dp" />
|
||||
<solid android:color="#FF35D38B" />
|
||||
</shape>
|
||||
</clip>
|
||||
</item>
|
||||
</layer-list>
|
||||
129
app/src/main/res/layout/widget_fleet.xml
Normal file
129
app/src/main/res/layout/widget_fleet.xml
Normal file
@@ -0,0 +1,129 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/widget_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/widget_background"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="Fleet Pulse"
|
||||
android:textColor="#FFEAF0F7"
|
||||
android:textSize="17sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_subtitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="Waiting for samples"
|
||||
android:textColor="#FF9AA6B6"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/widget_refresh"
|
||||
android:layout_width="38dp"
|
||||
android:layout_height="38dp"
|
||||
android:background="@drawable/widget_button"
|
||||
android:contentDescription="@string/widget_refresh"
|
||||
android:padding="9dp"
|
||||
android:src="@drawable/ic_widget_refresh"
|
||||
android:tint="#FF35D38B" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_status"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="All clear"
|
||||
android:textColor="#FF35D38B"
|
||||
android:textSize="24sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/widget_graph"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="42dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:contentDescription="@string/widget_fleet_graph"
|
||||
android:scaleType="fitXY" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_online"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="34dp"
|
||||
android:layout_marginEnd="6dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/widget_panel_green"
|
||||
android:gravity="center"
|
||||
android:text="0 OK"
|
||||
android:textColor="#FF35D38B"
|
||||
android:textSize="13sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_watch"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="34dp"
|
||||
android:layout_marginEnd="6dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/widget_panel_amber"
|
||||
android:gravity="center"
|
||||
android:text="0 WATCH"
|
||||
android:textColor="#FFFFB84D"
|
||||
android:textSize="13sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_down"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="34dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/widget_panel_red"
|
||||
android:gravity="center"
|
||||
android:text="0 DOWN"
|
||||
android:textColor="#FFFF5A52"
|
||||
android:textSize="13sp"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_priority"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="2"
|
||||
android:text="No priority servers"
|
||||
android:textColor="#FFEAF0F7"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
107
app/src/main/res/layout/widget_graph.xml
Normal file
107
app/src/main/res/layout/widget_graph.xml
Normal file
@@ -0,0 +1,107 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/widget_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/widget_background"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="Telemetry Flow"
|
||||
android:textColor="#FFEAF0F7"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_status"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="CPU / MEM / STORAGE"
|
||||
android:textColor="#FF9AA6B6"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/widget_refresh"
|
||||
android:layout_width="38dp"
|
||||
android:layout_height="38dp"
|
||||
android:background="@drawable/widget_button"
|
||||
android:contentDescription="@string/widget_refresh"
|
||||
android:padding="9dp"
|
||||
android:src="@drawable/ic_widget_refresh"
|
||||
android:tint="#FF35D38B" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/widget_graph"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_weight="1"
|
||||
android:contentDescription="@string/widget_graph_chart"
|
||||
android:scaleType="fitXY" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginTop="6dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_cpu"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="6dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/widget_panel_green"
|
||||
android:gravity="center"
|
||||
android:text="CPU"
|
||||
android:textColor="#FF35D38B"
|
||||
android:textSize="10sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_memory"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="6dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/widget_panel_blue"
|
||||
android:gravity="center"
|
||||
android:text="MEM"
|
||||
android:textColor="#FF4CC9F0"
|
||||
android:textSize="10sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_disk"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/widget_panel_amber"
|
||||
android:gravity="center"
|
||||
android:text="STORAGE"
|
||||
android:textColor="#FFFFB84D"
|
||||
android:textSize="10sp"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
145
app/src/main/res/layout/widget_incidents.xml
Normal file
145
app/src/main/res/layout/widget_incidents.xml
Normal file
@@ -0,0 +1,145 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/widget_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/widget_background"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="Incident Watch"
|
||||
android:textColor="#FFEAF0F7"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_subtitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="Highest priority first"
|
||||
android:textColor="#FF9AA6B6"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/widget_refresh"
|
||||
android:layout_width="38dp"
|
||||
android:layout_height="38dp"
|
||||
android:background="@drawable/widget_button"
|
||||
android:contentDescription="@string/widget_refresh"
|
||||
android:padding="9dp"
|
||||
android:src="@drawable/ic_widget_refresh"
|
||||
android:tint="#FF35D38B" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="9dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="86dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:background="@drawable/widget_panel"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_issue_count"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="0"
|
||||
android:textColor="#FFFF5A52"
|
||||
android:textSize="32sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_issue_label"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="ISSUES"
|
||||
android:textColor="#FFFFB5B1"
|
||||
android:textSize="10sp"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_issue_one"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/widget_panel"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:paddingLeft="9dp"
|
||||
android:paddingRight="9dp"
|
||||
android:text="No active incidents"
|
||||
android:textColor="#FFEAF0F7"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_issue_two"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/widget_panel"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:paddingLeft="9dp"
|
||||
android:paddingRight="9dp"
|
||||
android:text="Routes are healthy"
|
||||
android:textColor="#FF9AA6B6"
|
||||
android:textSize="12sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_issue_three"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/widget_panel"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:paddingLeft="9dp"
|
||||
android:paddingRight="9dp"
|
||||
android:text="Last update --"
|
||||
android:textColor="#FF9AA6B6"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
70
app/src/main/res/layout/widget_metric.xml
Normal file
70
app/src/main/res/layout/widget_metric.xml
Normal file
@@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/widget_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/widget_background"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="Metric"
|
||||
android:textColor="#FFEAF0F7"
|
||||
android:textSize="15sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/widget_refresh"
|
||||
android:layout_width="38dp"
|
||||
android:layout_height="38dp"
|
||||
android:background="@drawable/widget_button"
|
||||
android:contentDescription="@string/widget_refresh"
|
||||
android:padding="9dp"
|
||||
android:src="@drawable/ic_widget_refresh"
|
||||
android:tint="#FF35D38B" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_value"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:ellipsize="end"
|
||||
android:gravity="start"
|
||||
android:maxLines="1"
|
||||
android:text="--"
|
||||
android:textColor="#FF4CC9F0"
|
||||
android:textSize="36sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/widget_graph"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_weight="1"
|
||||
android:contentDescription="@string/widget_metric_graph"
|
||||
android:scaleType="fitXY" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_status"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="2"
|
||||
android:text="Waiting"
|
||||
android:textColor="#FF9AA6B6"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
227
app/src/main/res/layout/widget_server.xml
Normal file
227
app/src/main/res/layout/widget_server.xml
Normal file
@@ -0,0 +1,227 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/widget_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/widget_background"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="Server"
|
||||
android:textColor="#FFEAF0F7"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_status"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="Waiting"
|
||||
android:textColor="#FF9AA6B6"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/widget_refresh"
|
||||
android:layout_width="38dp"
|
||||
android:layout_height="38dp"
|
||||
android:background="@drawable/widget_button"
|
||||
android:contentDescription="@string/widget_refresh"
|
||||
android:padding="9dp"
|
||||
android:src="@drawable/ic_widget_refresh"
|
||||
android:tint="#FF35D38B" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_health"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="9dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="ONLINE"
|
||||
android:textColor="#FF35D38B"
|
||||
android:textSize="25sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="6dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="6dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_cpu_label"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="22dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="CPU"
|
||||
android:textColor="#FF9AA6B6"
|
||||
android:textSize="11sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/widget_cpu_bar"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_weight="1"
|
||||
android:max="100"
|
||||
android:progress="0"
|
||||
android:progressDrawable="@drawable/widget_progress_green" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_cpu_value"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="22dp"
|
||||
android:gravity="end|center_vertical"
|
||||
android:text="--"
|
||||
android:textColor="#FFEAF0F7"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="6dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_memory_label"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="22dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="MEM"
|
||||
android:textColor="#FF9AA6B6"
|
||||
android:textSize="11sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/widget_memory_bar"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_weight="1"
|
||||
android:max="100"
|
||||
android:progress="0"
|
||||
android:progressDrawable="@drawable/widget_progress_cyan" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_memory_value"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="22dp"
|
||||
android:gravity="end|center_vertical"
|
||||
android:text="--"
|
||||
android:textColor="#FFEAF0F7"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_disk_label"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="22dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="STORAGE"
|
||||
android:textColor="#FF9AA6B6"
|
||||
android:textSize="11sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/widget_disk_bar"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_weight="1"
|
||||
android:max="100"
|
||||
android:progress="0"
|
||||
android:progressDrawable="@drawable/widget_progress_amber" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_disk_value"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="22dp"
|
||||
android:gravity="end|center_vertical"
|
||||
android:text="--"
|
||||
android:textColor="#FFEAF0F7"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="34dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_rps"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="6dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/widget_panel"
|
||||
android:gravity="center"
|
||||
android:text="RPS --"
|
||||
android:textColor="#FFEAF0F7"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_p95"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="6dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/widget_panel"
|
||||
android:gravity="center"
|
||||
android:text="P95 --"
|
||||
android:textColor="#FFEAF0F7"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_5xx"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/widget_panel_red"
|
||||
android:gravity="center"
|
||||
android:text="5XX --"
|
||||
android:textColor="#FFFF5A52"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
@@ -1,3 +1,17 @@
|
||||
<resources>
|
||||
<string name="app_name">NGX Monitor</string>
|
||||
<string name="widget_fleet_label">NGX Fleet Pulse</string>
|
||||
<string name="widget_server_label">NGX Server Bars</string>
|
||||
<string name="widget_metric_label">NGX Metric Sparkline</string>
|
||||
<string name="widget_graph_label">NGX Telemetry Graph</string>
|
||||
<string name="widget_incidents_label">NGX Incident Watch</string>
|
||||
<string name="widget_fleet_description">Visual all-server status strip with online, watch, and down groups.</string>
|
||||
<string name="widget_server_description">One selected server with large health state and CPU, memory, and storage bars.</string>
|
||||
<string name="widget_metric_description">One focused metric with a large value and history sparkline.</string>
|
||||
<string name="widget_graph_description">One selected server with CPU, memory, and storage trend lines.</string>
|
||||
<string name="widget_incidents_description">Fleet incident queue with the highest-priority unreachable or degraded servers.</string>
|
||||
<string name="widget_refresh">Refresh widget</string>
|
||||
<string name="widget_fleet_graph">Fleet status strip</string>
|
||||
<string name="widget_metric_graph">Metric history graph</string>
|
||||
<string name="widget_graph_chart">Telemetry trend graph</string>
|
||||
</resources>
|
||||
|
||||
@@ -15,4 +15,15 @@
|
||||
<item name="android:windowBackground">@drawable/splash_screen</item>
|
||||
<item name="android:windowDisablePreview">false</item>
|
||||
</style>
|
||||
|
||||
<style name="WidgetMetricCell">
|
||||
<item name="android:layout_width">0dp</item>
|
||||
<item name="android:layout_height">match_parent</item>
|
||||
<item name="android:layout_weight">1</item>
|
||||
<item name="android:background">@drawable/widget_panel</item>
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:textColor">#FFEAF0F7</item>
|
||||
<item name="android:textSize">12sp</item>
|
||||
<item name="android:textStyle">bold</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
12
app/src/main/res/xml/widget_fleet_info.xml
Normal file
12
app/src/main/res/xml/widget_fleet_info.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:description="@string/widget_fleet_description"
|
||||
android:initialLayout="@layout/widget_fleet"
|
||||
android:minWidth="250dp"
|
||||
android:minHeight="140dp"
|
||||
android:previewImage="@drawable/widget_preview_fleet"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
android:targetCellWidth="4"
|
||||
android:targetCellHeight="2"
|
||||
android:updatePeriodMillis="1800000"
|
||||
android:widgetCategory="home_screen" />
|
||||
13
app/src/main/res/xml/widget_graph_info.xml
Normal file
13
app/src/main/res/xml/widget_graph_info.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:configure="net.rodakot.ngxhttpmonitoringclient.widget.GraphWidgetConfigureActivity"
|
||||
android:description="@string/widget_graph_description"
|
||||
android:initialLayout="@layout/widget_graph"
|
||||
android:minWidth="250dp"
|
||||
android:minHeight="140dp"
|
||||
android:previewImage="@drawable/widget_preview_graph"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
android:targetCellWidth="4"
|
||||
android:targetCellHeight="2"
|
||||
android:updatePeriodMillis="1800000"
|
||||
android:widgetCategory="home_screen" />
|
||||
12
app/src/main/res/xml/widget_incidents_info.xml
Normal file
12
app/src/main/res/xml/widget_incidents_info.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:description="@string/widget_incidents_description"
|
||||
android:initialLayout="@layout/widget_incidents"
|
||||
android:minWidth="250dp"
|
||||
android:minHeight="140dp"
|
||||
android:previewImage="@drawable/widget_preview_incidents"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
android:targetCellWidth="4"
|
||||
android:targetCellHeight="2"
|
||||
android:updatePeriodMillis="1800000"
|
||||
android:widgetCategory="home_screen" />
|
||||
13
app/src/main/res/xml/widget_metric_info.xml
Normal file
13
app/src/main/res/xml/widget_metric_info.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:configure="net.rodakot.ngxhttpmonitoringclient.widget.MetricWidgetConfigureActivity"
|
||||
android:description="@string/widget_metric_description"
|
||||
android:initialLayout="@layout/widget_metric"
|
||||
android:minWidth="120dp"
|
||||
android:minHeight="120dp"
|
||||
android:previewImage="@drawable/widget_preview_metric"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
android:targetCellWidth="2"
|
||||
android:targetCellHeight="2"
|
||||
android:updatePeriodMillis="1800000"
|
||||
android:widgetCategory="home_screen" />
|
||||
13
app/src/main/res/xml/widget_server_info.xml
Normal file
13
app/src/main/res/xml/widget_server_info.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:configure="net.rodakot.ngxhttpmonitoringclient.widget.ServerWidgetConfigureActivity"
|
||||
android:description="@string/widget_server_description"
|
||||
android:initialLayout="@layout/widget_server"
|
||||
android:minWidth="250dp"
|
||||
android:minHeight="140dp"
|
||||
android:previewImage="@drawable/widget_preview_server"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
android:targetCellWidth="4"
|
||||
android:targetCellHeight="2"
|
||||
android:updatePeriodMillis="1800000"
|
||||
android:widgetCategory="home_screen" />
|
||||
Reference in New Issue
Block a user