chore: vendor capcom6/android-sms-gateway upstream (Apache-2.0 baseline fork)

This commit is contained in:
2026-04-22 21:35:59 +01:00
commit 71078fda14
349 changed files with 26311 additions and 0 deletions
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- State: Disconnected -->
<item android:color="@android:color/holo_red_light" android:state_enabled="false" />
<!-- State: Connected -->
<item android:color="@android:color/holo_green_light" android:state_enabled="true" />
<!-- Default State -->
<item android:color="@android:color/darker_gray" />
</selector>
Binary file not shown.

After

Width:  |  Height:  |  Size: 921 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

@@ -0,0 +1,9 @@
<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="?attr/colorControlNormal"
android:pathData="M21.81,12.74l-0.82,-0.63v-0.22l0.8,-0.63c0.16,-0.12 0.2,-0.34 0.1,-0.51l-0.85,-1.48c-0.07,-0.13 -0.21,-0.2 -0.35,-0.2 -0.05,0 -0.1,0.01 -0.15,0.03l-0.95,0.38c-0.08,-0.05 -0.11,-0.07 -0.19,-0.11l-0.15,-1.01c-0.03,-0.21 -0.2,-0.36 -0.4,-0.36h-1.71c-0.2,0 -0.37,0.15 -0.4,0.34l-0.14,1.01c-0.03,0.02 -0.07,0.03 -0.1,0.05l-0.09,0.06 -0.95,-0.38c-0.05,-0.02 -0.1,-0.03 -0.15,-0.03 -0.14,0 -0.27,0.07 -0.35,0.2l-0.85,1.48c-0.1,0.17 -0.06,0.39 0.1,0.51l0.8,0.63v0.23l-0.8,0.63c-0.16,0.12 -0.2,0.34 -0.1,0.51l0.85,1.48c0.07,0.13 0.21,0.2 0.35,0.2 0.05,0 0.1,-0.01 0.15,-0.03l0.95,-0.37c0.08,0.05 0.12,0.07 0.2,0.11l0.15,1.01c0.03,0.2 0.2,0.34 0.4,0.34h1.71c0.2,0 0.37,-0.15 0.4,-0.34l0.15,-1.01c0.03,-0.02 0.07,-0.03 0.1,-0.05l0.09,-0.06 0.95,0.38c0.05,0.02 0.1,0.03 0.15,0.03 0.14,0 0.27,-0.07 0.35,-0.2l0.85,-1.48c0.1,-0.17 0.06,-0.39 -0.1,-0.51zM18,13.5c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5 1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5zM17,17h2v4c0,1.1 -0.9,2 -2,2H7c-1.1,0 -2,-0.9 -2,-2V3c0,-1.1 0.9,-2 2,-2h10c1.1,0 2,0.9 2,2v4h-2V6H7v12h10v-1z" />
</vector>
@@ -0,0 +1,9 @@
<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="?attr/colorControlNormal"
android:pathData="M16,4h-2V2h-4v2H8C7.45,4 7,4.45 7,5v16c0,0.55 0.45,1 1,1h8c0.55,0 1,-0.45 1,-1V5C17,4.45 16.55,4 16,4zM15,14h-2v2h-2v-2H9v-2h2v-2h2v2h2V14z" />
</vector>
@@ -0,0 +1,9 @@
<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="?attr/colorControlNormal"
android:pathData="M19.35,10.04C18.67,6.59 15.64,4 12,4 9.11,4 6.6,5.64 5.35,8.04 2.34,8.36 0,10.91 0,14c0,3.31 2.69,6 6,6h13c2.76,0 5,-2.24 5,-5 0,-2.64 -2.05,-4.78 -4.65,-4.96z" />
</vector>
+51
View File
@@ -0,0 +1,51 @@
<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="?attr/colorControlNormal"
android:pathData="M3,11h8V3H3V11zM5,5h4v4H5V5z" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M3,21h8v-8H3V21zM5,15h4v4H5V15z" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M13,3v8h8V3H13zM19,9h-4V5h4V9z" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M19,19h2v2h-2z" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M13,13h2v2h-2z" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M15,15h2v2h-2z" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M13,17h2v2h-2z" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M15,19h2v2h-2z" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M17,17h2v2h-2z" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M17,13h2v2h-2z" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M19,15h2v2h-2z" />
</vector>
@@ -0,0 +1,9 @@
<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="?attr/colorControlNormal"
android:pathData="M13,7h-2v2h2L13,7zM13,11h-2v6h2v-6zM17,1.01L7,1c-1.1,0 -2,0.9 -2,2v18c0,1.1 0.9,2 2,2h10c1.1,0 2,-0.9 2,-2L19,3c0,-1.1 -0.9,-1.99 -2,-1.99zM17,19L7,19L7,5h10v14z" />
</vector>
@@ -0,0 +1,10 @@
<vector android:height="24dp"
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:viewportWidth="24"
android:autoMirrored="true"
android:viewportHeight="24">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM12,17c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2zM15.1,8L8.9,8L8.9,6c0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0 3.1,1.39 3.1,3.1v2z" />
</vector>
+9
View File
@@ -0,0 +1,9 @@
<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="?attr/colorControlNormal"
android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z" />
</vector>
@@ -0,0 +1,11 @@
<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="?attr/colorControlNormal"
android:pathData="M17,1.01L7,1c-1.1,0 -2,0.9 -2,2v18c0,1.1 0.9,2 2,2h10c1.1,0 2,-0.9 2,-2V3c0,-1.1 -0.9,-1.99 -2,-1.99zM17,19H7V5h10v14z" />
</vector>
@@ -0,0 +1,9 @@
<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="?attr/colorControlNormal"
android:pathData="M20,8h-2.81c-0.45,-0.78 -1.07,-1.45 -1.82,-1.96L17,4.41 15.59,3l-2.17,2.17C12.96,5.06 12.49,5 12,5c-0.49,0 -0.96,0.06 -1.41,0.17L8.41,3 7,4.41l1.62,1.63C7.88,6.55 7.26,7.22 6.81,8L4,8v2h2.09c-0.05,0.33 -0.09,0.66 -0.09,1v1L4,12v2h2v1c0,0.34 0.04,0.67 0.09,1L4,16v2h2.81c1.04,1.79 2.97,3 5.19,3s4.15,-1.21 5.19,-3L20,18v-2h-2.09c0.05,-0.33 0.09,-0.66 0.09,-1v-1h2v-2h-2v-1c0,-0.34 -0.04,-0.67 -0.09,-1L20,10L20,8zM14,16h-4v-2h4v2zM14,12h-4v-2h4v2z" />
</vector>
@@ -0,0 +1,9 @@
<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="?attr/colorError"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-2h2v2zM13,13h-2L11,7h2v6z" />
</vector>
@@ -0,0 +1,9 @@
<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="?attr/colorSecondary"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z" />
</vector>
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="512"
android:viewportHeight="512">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M75,75L41,41C25.9,25.9 0,36.6 0,57.9L0,168c0,13.3 10.7,24 24,24L134.1,192c21.4,0 32.1,-25.9 17,-41l-30.8,-30.8C155,85.5 203,64 256,64c106,0 192,86 192,192s-86,192 -192,192c-40.8,0 -78.6,-12.7 -109.7,-34.4c-14.5,-10.1 -34.4,-6.6 -44.6,7.9s-6.6,34.4 7.9,44.6C151.2,495 201.7,512 256,512c141.4,0 256,-114.6 256,-256S397.4,0 256,0C185.3,0 121.3,28.7 75,75zM256,128c-13.3,0 -24,10.7 -24,24L232,256c0,6.4 2.5,12.5 7,17l72,72c9.4,9.4 24.6,9.4 33.9,0s9.4,-24.6 0,-33.9l-65,-65L279.9,152c0,-13.3 -10.7,-24 -24,-24z" />
</vector>
@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="@android:color/holo_orange_dark"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M1,21h22L12,2 1,21zM13,18h-2v-2h2v2zM13,14h-2v-4h2v4z"/>
</vector>
+12
View File
@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:autoMirrored="true"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM18,14L6,14v-2h12v2zM18,11L6,11L6,9h12v2zM18,8L6,8L6,6h12v2z" />
</vector>
@@ -0,0 +1,11 @@
<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="?attr/colorControlNormal"
android:pathData="M24,8.98C20.93,5.9 16.69,4 12,4C7.31,4 3.07,5.9 0,8.98L12,21v-9h8.99L24,8.98zM19.59,14l-2.09,2.09L15.41,14L14,15.41l2.09,2.09L14,19.59L15.41,21l2.09,-2.08L19.59,21L21,19.59l-2.08,-2.09L21,15.41L19.59,14z" />
</vector>
@@ -0,0 +1,9 @@
<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="?attr/colorControlNormal"
android:pathData="M12,22c1.1,0 2,-0.9 2,-2h-4c0,1.1 0.89,2 2,2zM18,16v-5c0,-3.07 -1.64,-5.64 -4.5,-6.32L13.5,4c0,-0.83 -0.67,-1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C7.63,5.36 6,7.92 6,11v5l-2,2v1h16v-1l-2,-2z" />
</vector>
+11
View File
@@ -0,0 +1,11 @@
<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="?attr/colorControlNormal"
android:pathData="M2,17h20v2H2V17zM3.15,12.95L4,11.47l0.85,1.48l1.3,-0.75L5.3,10.72H7v-1.5H5.3l0.85,-1.47L4.85,7L4,8.47L3.15,7l-1.3,0.75L2.7,9.22H1v1.5h1.7L1.85,12.2L3.15,12.95zM9.85,12.2l1.3,0.75L12,11.47l0.85,1.48l1.3,-0.75l-0.85,-1.48H15v-1.5h-1.7l0.85,-1.47L12.85,7L12,8.47L11.15,7l-1.3,0.75l0.85,1.47H9v1.5h1.7L9.85,12.2zM23,9.22h-1.7l0.85,-1.47L20.85,7L20,8.47L19.15,7l-1.3,0.75l0.85,1.47H17v1.5h1.7l-0.85,1.48l1.3,0.75L20,11.47l0.85,1.48l1.3,-0.75l-0.85,-1.48H23V9.22z" />
</vector>
+9
View File
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="21dp"
android:height="24dp"
android:viewportWidth="448"
android:viewportHeight="512">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M128,0c17.7,0 32,14.3 32,32L160,64L288,64L288,32c0,-17.7 14.3,-32 32,-32s32,14.3 32,32L352,64h48c26.5,0 48,21.5 48,48v48L0,160L0,112C0,85.5 21.5,64 48,64L96,64L96,32c0,-17.7 14.3,-32 32,-32zM0,192L448,192L448,464c0,26.5 -21.5,48 -48,48L48,512c-26.5,0 -48,-21.5 -48,-48L0,192zM80,256c-8.8,0 -16,7.2 -16,16v64c0,8.8 7.2,16 16,16L368,352c8.8,0 16,-7.2 16,-16L384,272c0,-8.8 -7.2,-16 -16,-16L80,256z" />
</vector>
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="640"
android:viewportHeight="640">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M130.4,268.2C135.4,280.2 147,288 160,288L480,288C492.9,288 504.6,280.2 509.6,268.2C514.6,256.2 511.8,242.5 502.7,233.3L342.7,73.3C330.2,60.8 309.9,60.8 297.4,73.3L137.4,233.3C128.2,242.5 125.5,256.2 130.5,268.2zM130.4,371.7C125.4,383.7 128.2,397.4 137.3,406.6L297.3,566.6C309.8,579.1 330.1,579.1 342.6,566.6L502.6,406.6C511.8,397.4 514.5,383.7 509.5,371.7C504.5,359.7 492.9,352 480,352L160,352C147.1,352 135.4,359.8 130.4,371.8z" />
</vector>
+12
View File
@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:autoMirrored="true"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M12,7C6.48,7 2,9.24 2,12c0,2.24 2.94,4.13 7,4.77V20l4,-4 -4,-4v2.73c-3.15,-0.56 -5,-1.9 -5,-2.73 0,-1.06 3.04,-3 8,-3s8,1.94 8,3c0,0.73 -1.46,1.89 -4,2.53v2.05c3.53,-0.77 6,-2.53 6,-4.58 0,-2.76 -4.48,-5 -10,-5z" />
</vector>
+9
View File
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="512"
android:viewportHeight="512">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M16.1,260.2c-22.6,12.9 -20.5,47.3 3.6,57.3L160,376L160,479.3c0,18.1 14.6,32.7 32.7,32.7c9.7,0 18.9,-4.3 25.1,-11.8l62,-74.3 123.9,51.6c18.9,7.9 40.8,-4.5 43.9,-24.7l64,-416c1.9,-12.1 -3.4,-24.3 -13.5,-31.2s-23.3,-7.5 -34,-1.4l-448,256zM68.2,285.7L409.7,90.6 190.1,336l1.2,1L68.2,285.7zM403.3,425.4L236.7,355.9 450.8,116.6 403.3,425.4z" />
</vector>
+9
View File
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="512"
android:viewportHeight="512">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M64,32C28.7,32 0,60.7 0,96v64c0,35.3 28.7,64 64,64L448,224c35.3,0 64,-28.7 64,-64L512,96c0,-35.3 -28.7,-64 -64,-64L64,32zM344,104a24,24 0,1 1,0 48,24 24,0 1,1 0,-48zM392,128a24,24 0,1 1,48 0,24 24,0 1,1 -48,0zM64,288c-35.3,0 -64,28.7 -64,64v64c0,35.3 28.7,64 64,64L448,480c35.3,0 64,-28.7 64,-64L512,352c0,-35.3 -28.7,-64 -64,-64L64,288zM344,360a24,24 0,1 1,0 48,24 24,0 1,1 0,-48zM400,384a24,24 0,1 1,48 0,24 24,0 1,1 -48,0z" />
</vector>
@@ -0,0 +1,11 @@
<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="?attr/colorControlNormal"
android:pathData="M21,10h-8.35C11.83,7.67 9.61,6 7,6c-3.31,0 -6,2.69 -6,6s2.69,6 6,6c2.61,0 4.83,-1.67 5.65,-4H13l2,2l2,-2l2,2l4,-4.04L21,10zM7,15c-1.65,0 -3,-1.35 -3,-3c0,-1.65 1.35,-3 3,-3s3,1.35 3,3C10,13.65 8.65,15 7,15z" />
</vector>
@@ -0,0 +1,11 @@
<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="?attr/colorControlNormal"
android:pathData="M19.99,4c0,-1.1 -0.89,-2 -1.99,-2h-8L4,8v12c0,1.1 0.9,2 2,2h12.01c1.1,0 1.99,-0.9 1.99,-2l-0.01,-16zM9,19L7,19v-2h2v2zM17,19h-2v-2h2v2zM9,15L7,15v-4h2v4zM13,19h-2v-4h2v4zM13,13h-2v-2h2v2zM17,15h-2v-4h2v4z" />
</vector>
+10
View File
@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:autoMirrored="true"
android:viewportHeight="24">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM9,11L7,11L7,9h2v2zM13,11h-2L11,9h2v2zM17,11h-2L15,9h2v2z" />
</vector>
+12
View File
@@ -0,0 +1,12 @@
<vector android:height="24dp"
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8z" />
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M12.5,7H11v6l5.25,3.15 0.75,-1.23 -4.5,-2.67z" />
</vector>
+9
View File
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="512"
android:viewportHeight="512">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M336,352c97.2,0 176,-78.8 176,-176S433.2,0 336,0S160,78.8 160,176c0,18.7 2.9,36.8 8.3,53.7L7,391c-4.5,4.5 -7,10.6 -7,17v80c0,13.3 10.7,24 24,24h80c13.3,0 24,-10.7 24,-24V448h40c13.3,0 24,-10.7 24,-24V384h40c6.4,0 12.5,-2.5 17,-7l33.3,-33.3c16.9,5.4 35,8.3 53.7,8.3zM376,96a40,40 0,1 1,0 80,40 40,0 1,1 0,-80z" />
</vector>
+11
View File
@@ -0,0 +1,11 @@
<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="?attr/colorControlNormal"
android:pathData="M12,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM12,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z" />
</vector>
+11
View File
@@ -0,0 +1,11 @@
<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="?attr/colorControlNormal"
android:pathData="M10,15l5.88,0c0.27,-0.31 0.67,-0.5 1.12,-0.5c0.83,0 1.5,0.67 1.5,1.5c0,0.83 -0.67,1.5 -1.5,1.5c-0.44,0 -0.84,-0.19 -1.12,-0.5l-3.98,0c-0.46,2.28 -2.48,4 -4.9,4c-2.76,0 -5,-2.24 -5,-5c0,-2.42 1.72,-4.44 4,-4.9l0,2.07C4.84,13.58 4,14.7 4,16c0,1.65 1.35,3 3,3s3,-1.35 3,-3V15zM12.5,4c1.65,0 3,1.35 3,3h2c0,-2.76 -2.24,-5 -5,-5l0,0c-2.76,0 -5,2.24 -5,5c0,1.43 0.6,2.71 1.55,3.62l-2.35,3.9C6.02,14.66 5.5,15.27 5.5,16c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5c0,-0.16 -0.02,-0.31 -0.07,-0.45l3.38,-5.63C10.49,9.61 9.5,8.42 9.5,7C9.5,5.35 10.85,4 12.5,4zM17,13c-0.64,0 -1.23,0.2 -1.72,0.54l-3.05,-5.07C11.53,8.35 11,7.74 11,7c0,-0.83 0.67,-1.5 1.5,-1.5S14,6.17 14,7c0,0.15 -0.02,0.29 -0.06,0.43l2.19,3.65C16.41,11.03 16.7,11 17,11l0,0c2.76,0 5,2.24 5,5c0,2.76 -2.24,5 -5,5c-1.85,0 -3.47,-1.01 -4.33,-2.5l2.67,0C15.82,18.82 16.39,19 17,19c1.65,0 3,-1.35 3,-3S18.65,13 17,13z" />
</vector>
@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:autoMirrored="true"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M4,10.5c-0.83,0 -1.5,0.67 -1.5,1.5s0.67,1.5 1.5,1.5 1.5,-0.67 1.5,-1.5 -0.67,-1.5 -1.5,-1.5zM4,4.5c-0.83,0 -1.5,0.67 -1.5,1.5S3.17,7.5 4,7.5 5.5,6.83 5.5,6 4.83,4.5 4,4.5zM4,16.5c-0.83,0 -1.5,0.68 -1.5,1.5s0.68,1.5 1.5,1.5 1.5,-0.68 1.5,-1.5 -0.67,-1.5 -1.5,-1.5zM7,19h14v-2L7,17v2zM7,13h14v-2L7,11v2zM7,5v2h14L21,5L7,5z" />
</vector>
+5
View File
@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,14.67L3.41,6.09L2,7.5l8.5,8.5H4v2h16v-2h-6.5l5.15,-5.15C18.91,10.95 19.2,11 19.5,11c1.38,0 2.5,-1.12 2.5,-2.5S20.88,6 19.5,6S17,7.12 17,8.5c0,0.35 0.07,0.67 0.2,0.97L12,14.67z"/>
</vector>
+5
View File
@@ -0,0 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:tint="#FFFFFF" android:viewportHeight="24"
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M2.01,21L23,12 2.01,3 2,10l15,2 -15,2z"/>
</vector>
@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM9,11L7,11L7,9h2v2zM13,11h-2L11,9h2v2zM17,11h-2L15,9h2v2z"/>
</vector>
@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58c0.18,-0.14 0.23,-0.41 0.12,-0.61l-1.92,-3.32c-0.12,-0.22 -0.37,-0.29 -0.59,-0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81c-0.04,-0.24 -0.24,-0.41 -0.48,-0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33c-0.22,-0.08 -0.47,0 -0.59,0.22L2.74,8.87C2.62,9.08 2.66,9.34 2.86,9.48l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58c-0.18,0.14 -0.23,0.41 -0.12,0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6c-1.98,0 -3.6,-1.62 -3.6,-3.6s1.62,-3.6 3.6,-3.6s3.6,1.62 3.6,3.6S13.98,15.6 12,15.6z" />
</vector>
@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M4.5,11h-2L2.5,9L1,9v6h1.5v-2.5h2L4.5,15L6,15L6,9L4.5,9v2zM7,10.5h1.5L8.5,15L10,15v-4.5h1.5L11.5,9L7,9v1.5zM12.5,10.5L14,10.5L14,15h1.5v-4.5L17,10.5L17,9h-4.5v1.5zM21.5,9L18,9v6h1.5v-2h2c0.8,0 1.5,-0.7 1.5,-1.5v-1c0,-0.8 -0.7,-1.5 -1.5,-1.5zM21.5,11.5h-2v-1h2v1z"/>
</vector>
@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M1,21h22L12,2 1,21zM13,18h-2v-2h2v2zM13,14h-2v-4h2v4z" />
</vector>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="8dp" />
<solid android:color="@android:color/white" />
</shape>
+44
View File
@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/progressBarOverlay"
android:clickable="true"
android:focusable="true"
android:visibility="gone"
tools:visibility="visible">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:indeterminate="true" />
</FrameLayout>
</FrameLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
@@ -0,0 +1,156 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context=".ui.dialogs.FirstStartDialogFragment">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.tabs.TabItem
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/sign_up" />
<com.google.android.material.tabs.TabItem
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/sign_in" />
<com.google.android.material.tabs.TabItem
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/by_code" />
</com.google.android.material.tabs.TabLayout>
<TextView
android:id="@+id/layoutSignUp"
tools:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:autoLink="web"
android:gravity="center"
android:text="@string/click_continue_to_create_an_account_no_personal_information_is_required_nby_continuing_you_agree_to_our_privacy_policy_at_https_docs_sms_gate_app_privacy_policy"
android:textAppearance="@android:style/TextAppearance.Medium" />
<LinearLayout
android:id="@+id/layoutSignIn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone"
tools:visibility="gone">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:gravity="center"
android:text="@string/to_add_a_device_to_an_existing_account_please_fill_in_the_credentials_below"
android:textAppearance="@android:style/TextAppearance.Medium" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/editUsernameLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:hint="@string/username"
app:errorEnabled="true">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editUsername"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text|textCapCharacters" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/editPasswordLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:hint="@string/password"
app:endIconMode="password_toggle"
app:errorEnabled="true">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text|textPassword" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/layoutSignInByCode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone"
tools:visibility="visible">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:gravity="center"
android:text="@string/please_enter_one_time_code_displayed_on_already_registered_device"
android:textAppearance="@android:style/TextAppearance.Medium" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/editCodeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:hint="@string/login_code"
app:errorEnabled="true">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editCode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number|numberPassword" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Space
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0.5" />
<Button
android:id="@+id/buttonCancel"
style="?attr/materialButtonOutlinedStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="4dp"
android:layout_weight="1"
android:text="@string/btn_cancel" />
<Button
android:id="@+id/buttonContinue"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="4dp"
android:layout_weight="1"
android:text="@string/btn_continue" />
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.HolderFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="8dp">
<Button
android:id="@+id/buttonOutgoing"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:layout_weight="1"
android:paddingHorizontal="12dp"
android:paddingVertical="8dp"
android:text="@string/outgoing_messages"
android:textAllCaps="true" />
<Button
android:id="@+id/buttonIncoming"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_weight="1"
android:enabled="false"
android:paddingHorizontal="12dp"
android:paddingVertical="8dp"
android:text="@string/incoming_messages"
android:textAllCaps="true" />
</LinearLayout>
<FrameLayout
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
+260
View File
@@ -0,0 +1,260 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
tools:context=".ui.HomeFragment">
<TextView
android:id="@+id/textConnectionStatus"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:background="@drawable/rounded_background"
android:backgroundTint="@color/connection_status_background"
android:enabled="true"
android:gravity="center"
android:padding="8dp"
android:textColor="@android:color/white"
android:visibility="gone"
tools:text="@string/internet_connection_available" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
app:cardCornerRadius="16dp"
app:contentPadding="8dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageLocalServer"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_margin="4dp"
android:src="@drawable/ic_local_server"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/headerLocalServer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:layout_marginStart="8dp"
android:text="@string/settings_local_server"
android:textAppearance="@style/TextAppearance.AppCompat.Headline"
app:layout_constraintBottom_toBottomOf="@id/imageLocalServer"
app:layout_constraintStart_toEndOf="@id/imageLocalServer"
app:layout_constraintEnd_toStartOf="@+id/switchUseLocalServer"
app:layout_constraintTop_toTopOf="@id/imageLocalServer" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/switchUseLocalServer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:layout_constraintBottom_toBottomOf="@id/imageLocalServer"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/imageLocalServer" />
<GridLayout
android:id="@+id/layoutLocalServer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:columnCount="2"
android:visibility="gone"
tools:visibility="visible"
app:layout_constraintEnd_toEndOf="@+id/switchUseLocalServer"
app:layout_constraintStart_toEndOf="@id/imageLocalServer"
app:layout_constraintTop_toBottomOf="@id/headerLocalServer">
<TextView
style="@style/HomeCardLabel"
android:text="@string/local_address" />
<TextView
android:id="@+id/textLocalIP"
style="@style/HomeCardValue"
android:text="@string/dots"
tools:text="127.0.0.1:8080" />
<TextView
style="@style/HomeCardLabel"
android:text="@string/public_address" />
<TextView
android:id="@+id/textPublicIP"
style="@style/HomeCardValue"
android:text="@string/dots"
tools:text="127.0.0.1:8080" />
<TextView
style="@style/HomeCardLabel"
android:text="@string/label_username" />
<TextView
android:id="@+id/textLocalUsername"
style="@style/HomeCardValue"
tools:text="sms" />
<TextView
style="@style/HomeCardLabel"
android:text="@string/label_password" />
<TextView
android:id="@+id/textLocalPassword"
style="@style/HomeCardValue"
tools:text="1q2w3e4r" />
<TextView
style="@style/HomeCardLabel"
android:text="@string/device_id" />
<TextView
android:id="@+id/textLocalDeviceId"
style="@style/HomeCardValue"
tools:text="device-123" />
</GridLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
app:cardCornerRadius="16dp"
app:contentPadding="8dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageRemoteServer"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_margin="4dp"
android:src="@drawable/ic_cloud_server"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/headerRemoteServer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:layout_margin="8dp"
android:text="@string/cloud_server"
android:textAppearance="@style/TextAppearance.AppCompat.Headline"
app:layout_constraintBottom_toBottomOf="@id/imageRemoteServer"
app:layout_constraintStart_toEndOf="@id/imageRemoteServer"
app:layout_constraintEnd_toStartOf="@+id/switchUseRemoteServer"
app:layout_constraintTop_toTopOf="@id/imageRemoteServer" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/switchUseRemoteServer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:layout_constraintBottom_toBottomOf="@id/imageRemoteServer"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/imageRemoteServer" />
<GridLayout
android:id="@+id/layoutRemoteServer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:columnCount="2"
android:visibility="gone"
tools:visibility="visible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/imageRemoteServer"
app:layout_constraintTop_toBottomOf="@id/headerRemoteServer">
<TextView
style="@style/HomeCardLabel"
android:text="@string/server_address" />
<TextView
android:id="@+id/textRemoteAddress"
style="@style/HomeCardValue"
android:autoLink="web"
android:text="@string/dots"
tools:text="@string/settings_address_is_sms_capcom_me" />
<TextView
style="@style/HomeCardLabel"
android:text="@string/label_username" />
<TextView
android:id="@+id/textRemoteUsername"
style="@style/HomeCardValue"
tools:text="1Q2W3E" />
<TextView
style="@style/HomeCardLabel"
android:text="@string/label_password" />
<TextView
android:id="@+id/textRemotePassword"
style="@style/HomeCardValue"
tools:text="1q2w3e4r" />
<TextView
style="@style/HomeCardLabel"
android:text="@string/device_id" />
<TextView
android:id="@+id/textRemoteDeviceId"
style="@style/HomeCardValue"
tools:text="device-456" />
</GridLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
</ScrollView>
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/switchAutostart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:text="@string/settings_start_on_boot" />
<Space
android:layout_width="match_parent"
android:layout_height="8dp" />
<ToggleButton
android:id="@+id/buttonStart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textOff="@string/settings_offline"
android:textOn="@string/settings_online" />
</androidx.appcompat.widget.LinearLayoutCompat>
@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.IncomingMessagesListFragment">
<com.google.android.material.card.MaterialCardView
android:id="@+id/statisticsCard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:cardCornerRadius="12dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:text="@string/incoming_messages_status"
android:textSize="16sp"
android:textStyle="bold" />
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:alignmentMode="alignMargins"
android:columnCount="2"
android:rowOrderPreserved="false"
android:useDefaultMargins="true">
<TextView
android:id="@+id/totalIncomingMessages"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
tools:text="Total: 0" />
<TextView
android:id="@+id/smsIncomingMessages"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
tools:text="SMS: 0" />
<TextView
android:id="@+id/dataIncomingMessages"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
tools:text="Data SMS: 0" />
<TextView
android:id="@+id/mmsIncomingMessages"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
tools:text="MMS: 0" />
</GridLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_incoming_message" />
</LinearLayout>
+13
View File
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView 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/list"
android:name="me.capcom.smsgateway.ui.LogsFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="0dp"
android:background="?android:colorBackground"
app:layoutManager="LinearLayoutManager"
tools:context=".ui.LogsListFragment"
tools:listitem="@layout/item_log_entry" />
@@ -0,0 +1,90 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/relativeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.MessageDetailsFragment">
<!-- Message ID and State -->
<!-- Message ID -->
<TextView
android:id="@+id/textMessageId"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@+id/textMessageState"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Message ID" />
<!-- Message State -->
<TextView
android:id="@+id/textMessageState"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/textMessageId"
app:layout_constraintTop_toTopOf="parent"
tools:text="Message State" />
<!-- Message Text -->
<!-- Recipients List -->
<ScrollView
android:id="@+id/scrollViewMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toTopOf="@+id/recyclerViewRecipients"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_max="128dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textMessageId"
app:layout_constraintVertical_weight="1">
<TextView
android:id="@+id/textMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:text="@tools:sample/lorem/random" />
</ScrollView>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewRecipients"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="8dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/scrollViewMessage"
app:layout_constraintVertical_weight="3"
tools:listitem="@layout/item_message" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.MessagesListFragment">
<!-- Fixed top panel with queue statistics -->
<com.google.android.material.card.MaterialCardView
android:id="@+id/statisticsCard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:cardCornerRadius="12dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="12dp">
<TextView
android:id="@+id/queueTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:text="@string/queue_status"
android:textSize="16sp"
android:textStyle="bold" />
<!-- GridLayout for stats -->
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:alignmentMode="alignMargins"
android:columnCount="3"
android:rowOrderPreserved="false"
android:useDefaultMargins="true">
<TextView
android:id="@+id/totalMessages"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnSpan="2"
android:layout_columnWeight="1"
android:ellipsize="middle"
android:singleLine="true"
tools:text="Total: 0" />
<TextView
android:id="@+id/pendingMessages"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:ellipsize="middle"
android:singleLine="true"
tools:text="Pending: 0" />
<TextView
android:id="@+id/sentMessages"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:ellipsize="middle"
android:singleLine="true"
tools:text="Sent: 0" />
<TextView
android:id="@+id/deliveredMessages"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:ellipsize="middle"
android:singleLine="true"
tools:text="Delivered: 0" />
<TextView
android:id="@+id/failedMessages"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:ellipsize="middle"
android:singleLine="true"
tools:text="Failed: 0" />
</GridLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- RecyclerView for messages -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_message" />
</LinearLayout>
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:background="?android:attr/colorBackground">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/webhookList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:padding="8dp"
tools:listitem="@layout/item_webhook" />
<LinearLayout
android:id="@+id/emptyState"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:visibility="gone"
tools:visibility="visible">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:src="@drawable/ic_webhook" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/no_webhooks_found"
android:textAppearance="?attr/textAppearanceCaption" />
</LinearLayout>
</FrameLayout>
@@ -0,0 +1,52 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:minHeight="?android:attr/listPreferredItemHeight"
android:padding="12dp">
<TextView
android:id="@+id/textViewSender"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@+id/textViewType"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="+123456789" />
<TextView
android:id="@+id/textViewType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="SMS" />
<TextView
android:id="@+id/textViewPreview"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:maxLines="2"
android:ellipsize="end"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textViewSender"
tools:text="Message preview..." />
<TextView
android:id="@+id/textViewDate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:gravity="end"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textViewPreview"
tools:text="Mar 25, 2026 13:20" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,59 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:minHeight="?android:attr/listPreferredItemHeight"
android:paddingEnd="16dp">
<ImageView
android:id="@+id/imageViewPriority"
android:layout_width="?android:attr/listPreferredItemHeight"
android:layout_height="0dp"
android:layout_margin="4dp"
android:scaleType="center"
android:src="@drawable/ic_sms"
app:layout_constraintBottom_toTopOf="@id/textViewModule"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textViewModule"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/imageViewPriority"
app:layout_constraintStart_toStartOf="@id/imageViewPriority"
app:layout_constraintTop_toBottomOf="@id/imageViewPriority"
tools:text="core" />
<TextView
android:id="@+id/textViewMessage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:ellipsize="end"
android:gravity="end"
android:lines="2"
app:layout_constraintBottom_toTopOf="@id/textViewDate"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageViewPriority"
app:layout_constraintTop_toTopOf="parent"
tools:text="Some description" />
<TextView
android:id="@+id/textViewDate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:gravity="end"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageViewPriority"
app:layout_constraintTop_toBottomOf="@id/textViewMessage"
tools:text="2024-08-07 08:52" />
</androidx.constraintlayout.widget.ConstraintLayout>
+57
View File
@@ -0,0 +1,57 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingEnd="16dp"
android:background="?android:attr/selectableItemBackground"
android:minHeight="?android:attr/listPreferredItemHeight">
<ImageView
android:id="@+id/imageViewState"
android:layout_width="?android:attr/listPreferredItemHeight"
android:layout_height="0dp"
android:layout_margin="4dp"
android:scaleType="center"
android:src="@drawable/ic_sms"
app:layout_constraintBottom_toTopOf="@id/textViewState"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textViewState"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/imageViewState"
app:layout_constraintStart_toStartOf="@id/imageViewState"
app:layout_constraintTop_toBottomOf="@id/imageViewState"
tools:text="Sent" />
<TextView
android:id="@+id/textViewId"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:gravity="end"
app:layout_constraintBottom_toTopOf="@id/textViewDate"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageViewState"
app:layout_constraintTop_toTopOf="parent"
tools:text="ID" />
<TextView
android:id="@+id/textViewDate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:gravity="end"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageViewState"
app:layout_constraintTop_toBottomOf="@id/textViewId"
tools:text="Date" />
</androidx.constraintlayout.widget.ConstraintLayout>
+54
View File
@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="8dp">
<TextView
android:id="@+id/urlText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
tools:text="https://example.com" />
<TextView
android:id="@+id/idText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textAppearance="@style/TextAppearance.AppCompat.Caption" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/sourceIcon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="8dp"
android:src="@drawable/ic_local_server" />
<TextView
android:id="@+id/sourceText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginHorizontal="8dp"
android:textAppearance="@style/TextAppearance.AppCompat.Caption"
tools:text="source" />
<TextView
android:id="@+id/eventText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginHorizontal="8dp"
android:textAppearance="@style/TextAppearance.AppCompat.Caption"
tools:text="event" />
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

+36
View File
@@ -0,0 +1,36 @@
-----BEGIN CERTIFICATE-----
MIIGTTCCBDWgAwIBAgIUeF9lEL4+VA2kRUVbXfHENTdSFhMwDQYJKoZIhvcNAQEL
BQAwgbUxCzAJBgNVBAYTAlJVMRswGQYDVQQIDBJLcmFzbm95YXJzayByZWdpb24x
FDASBgNVBAcMC0tyYXNub3lhcnNrMREwDwYDVQQKDAhTTVMgR2F0ZTEXMBUGA1UE
CwwOU01TIEdhdGUgQ2xvdWQxJDAiBgNVBAMMG1NNUyBHYXRlIENsb3VkIFJvb3Qg
Q0EgcHJvZDEhMB8GCSqGSIb3DQEJARYSYWRtaW5Ac21zLWdhdGUuYXBwMB4XDTI1
MDEyOTA3MTQ1NVoXDTM1MDEyNzA3MTQ1NVowgbUxCzAJBgNVBAYTAlJVMRswGQYD
VQQIDBJLcmFzbm95YXJzayByZWdpb24xFDASBgNVBAcMC0tyYXNub3lhcnNrMREw
DwYDVQQKDAhTTVMgR2F0ZTEXMBUGA1UECwwOU01TIEdhdGUgQ2xvdWQxJDAiBgNV
BAMMG1NNUyBHYXRlIENsb3VkIFJvb3QgQ0EgcHJvZDEhMB8GCSqGSIb3DQEJARYS
YWRtaW5Ac21zLWdhdGUuYXBwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC
AgEAxEal8wR2Z0HeWR9wE7O23ELGvj70oa4xYqhcmpoOO9mD8hE0tMSL4N3qfbyo
i2CVASkIukEnWOLiOt/5GTcZv+iDTKJuVC+64Sj50Am5zS7QBZuPDxgu01wSfADC
gaDRMosbzPyDLyKAZnTblPFtEOEu7ZFsfsY9LGTyyOiEVvvl2f5Mq4XVk66iCzva
5VL1rCK9D5uIzPDeZxKsBTsOjG+masDN6ObJrMpsiBp+Dum/EAi4F0OV66oZLENm
yExC+lMREOS6/icdXi8RbvCxGY+xzggxt4t1GWWrIDZLZ/ZS9lyk+JBmLsZ9QjAP
JLNTqQMRHknDP/EMIjhnVOa8ZEG2BpoMj26Zmp5P5WwQGOeaF+KSeM+JwcRNSLZK
96HOj0Kt6fdPekTnffp2/fKU6ogiQMKurq7B7D7c5ogFs37xumJJ1vdD6nRvcXrX
sQFy4RTC8MNI3hTXgx1OvaO5HmwVab0JAfJEo3y5H1Ga16znulOmCJYF3JMy8JLT
pKv317hkisbeIYpILboT5jXPd83DuA6wToXnDJbahAVzGGuXMjD9uH+Cz/Thwsx2
6ANPrhqq4Vl27hp0OrpgLkJWGkc9Xv/XP8QiCAUiCojcaEMU+YWdmK5i53wAlP4x
czGNumY38mpEK5yGCxku5oBZ9LAq2YPd9DJMuMGZRxiGm68CAwEAAaNTMFEwHQYD
VR0OBBYEFMLUPrPdpKYPJPpczKkOgS/BB/QDMB8GA1UdIwQYMBaAFMLUPrPdpKYP
JPpczKkOgS/BB/QDMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIB
ALLLnIdJ6UXRegkBKr4Bhot6e7t/EtotagsHQMSW8/jF4+OrEvE3QlrzQGlEmPrB
ctmPj4M0wQhiRbywTNVpt/o/6AaemcDE5k5+b0qFrOZqF1mQsGLSPbnF/Mi8gMnU
4Yj+e6LnhVPz/LqXIx7Soh0yDjIZugeLOlGoaczQHqaMeNlv8s+8qqYIpweVx0wo
ogtV5IhgD69JRw4+FdOZ+Hg18mMC7o0Etq/C0rNecteTrHQgka+PiWd8OLBDsrex
6iuZFVM1ATcSbdeA6U8vc1yMicx+tN2T/SkJ8C5IsEVmMBmibhadHAEzUhyd9bAn
1y4kbXKMoUZAOlVUN6xd53rSb/SczT6Zc5vtjF8p5gAk5Vsk0jql/acmCvPPHpE7
775DXxmDR790+STnvYqtchUIrA3Vr06txyQxPQLBK5qjeo01etuzniSOWa8xUKWc
NnsA1rY9GSjR7a87T+BuLWVKgem5I1Qz6bURVQP8HAyLqtOcy411PxE1bQQF+lcm
y1BbXVlt905lBZvAQKCNga85vumHi9c631ry/gjOqM8szPbJGN5iMcWGG3fsUJpx
+33Ny8FR2IQCjHMOv5y268V/XpJLqF8ZNScHWIc6pB5z6tlNHGcjcjif/bEc70lG
bs3Jb+ccZJVKVjrQ4TCV+hk9jqbfp9LpG0vyOH8lfebs
-----END CERTIFICATE-----
+16
View File
@@ -0,0 +1,16 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.SmsGateway" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>
+170
View File
@@ -0,0 +1,170 @@
<resources>
<string name="address_is">%1$s</string>
<string name="api_url_private_token_credentials_etc">URL API, приватный токен, учётные данные и
т.д.</string>
<string name="api_url">URL API</string>
<string name="app_version_build">Версия приложения (сборка)</string>
<string name="battery_optimization_already_disabled">Оптимизация батареи уже отключена</string>
<string name="battery_optimization_is_not_supported_on_this_device">Оптимизация батареи не
поддерживается на этом устройстве</string>
<string name="battery_optimization">Оптимизация батареи</string>
<string name="btn_cancel">Отмена</string>
<string name="btn_continue">Продолжить</string>
<string name="by_code">По коду</string>
<string name="can_affect_battery_life">может влиять на время работы батареи</string>
<string
name="click_continue_to_create_an_account_no_personal_information_is_required_nby_continuing_you_agree_to_our_privacy_policy_at_https_docs_sms_gate_app_privacy_policy">Нажмите
\"Продолжить\", чтобы создать аккаунт. Личная информация не требуется.\nПродолжая, вы
соглашаетесь с Политикой конфиденциальности по адресу
https://docs.sms-gate.app/privacy/policy/</string>
<string name="cloud_server_dotdotdot">Облачный сервер…</string>
<string name="cloud_server">Облачный сервер</string>
<string name="cloud">Облако</string>
<string name="copied_to_clipboard">Скопировано</string>
<string name="credentials">Учётные данные</string>
<string name="delays_limits_etc">Задержки, ограничения и т.д.</string>
<string name="delays_seconds">Задержка (секунды)</string>
<string name="delete_after_days">Удалить через (дней)</string>
<string name="device_id">ID устройства</string>
<string name="device">Устройство</string>
<string name="disabled">Отключено</string>
<string name="dots"></string>
<string name="enabled">Включено</string>
<string name="encryption">Шифрование</string>
<string name="failed_to_change_password">Не удалось изменить пароль: %1$s</string>
<string name="failed_to_get_login_code">Не удалось получить код входа: %1$s</string>
<string name="failed_to_register_device">Не удалось зарегистрировать устройство: %1$s</string>
<string name="id_copied">ID вебхука скопирован в буфер обмена</string>
<string name="if_sim_number_is_not_specified_use">Если номер SIM не указан, использовать</string>
<string name="ignored_for_public_server">Игнорируется для публичного сервера</string>
<string name="information">Информация</string>
<string name="internet_connection_available">Интернет-соединение: доступно</string>
<string name="internet_connection_unavailable">Интернет-соединение: недоступно</string>
<string name="interval_seconds">Интервал (секунды)</string>
<string name="invalid_url">Неверный URL</string>
<string name="is_not_a_valid_port_must_be_between_1024_and_65535">%1$s не является допустимым
портом. Должен быть между 1024 и 65535</string>
<string name="label_password">Пароль</string>
<string name="label_username">Имя пользователя</string>
<string name="limits">Ограничения</string>
<string name="list_of_last_50_log_entries">Список последних 50 записей лога</string>
<string name="listening_to_the_server_events">Прослушивание событий сервера…</string>
<string name="local_address">Локальный адрес</string>
<string name="local_server_dotdotdot">Локальный сервер…</string>
<string name="local_sms_gateway_notifications">Уведомления локального SMS шлюза</string>
<string name="local">Локальный</string>
<string name="login_code_expires">Код входа, действует до %1$s</string>
<string name="login_code">Код входа</string>
<string name="logs">Логи</string>
<string name="maximum">Максимум</string>
<string name="messages_count">Количество сообщений</string>
<string name="messages_header">Сообщения</string>
<string name="messages">Сообщения…</string>
<string name="minimum">Минимум</string>
<string name="more_settings">Другие настройки…</string>
<string name="n_a">н/д</string>
<string name="new_sms_received_webhooks_registered">Зарегистрирован новый вебхук для входящих
сообщений</string>
<string name="no_webhooks_found">Вебхуки не настроены</string>
<string name="not_registered">не зарегистрировано</string>
<string name="not_set">Не задано</string>
<string name="notification_title">SMSGate</string>
<string name="notification_channel">Канал уведомлений</string>
<string name="notifications">Уведомления</string>
<string name="online_status_at_the_cost_of_battery_life">Время автономной работы может быть
снижено</string>
<string name="passphrase">Ключ шифрования</string>
<string name="password_changed_successfully">Пароль успешно изменён</string>
<string name="password_must_be_at_least_14_characters">Пароль должен быть не менее 14 символов</string>
<string name="password_must_be_at_least_8_characters">Пароль должен быть не менее 8 символов</string>
<string name="password">Пароль</string>
<string name="period">Период</string>
<string name="ping_service_is_active">Ping-сервис активен</string>
<string name="ping">Ping</string>
<string name="please_enter_one_time_code_displayed_on_already_registered_device">Введите
одноразовый код с уже зарегистрированного устройства</string>
<string name="port_credentials_etc">Порт, учётные данные и т.д.</string>
<string name="port">Порт</string>
<string name="private_token">Приватный токен</string>
<string name="public_address">Публичный адрес</string>
<string name="require_internet_connection">Требуется интернет-соединение</string>
<string name="restart_required_to_apply_changes">Для применения изменений требуется перезапуск</string>
<string name="retries_signing_etc">Повторы, подпись и т.д.</string>
<string name="retry_count">Количество повторов</string>
<string name="send_messages_notification">Отправка сообщений…</string>
<string name="sending_webhook">Отправка вебхука…</string>
<string name="processing_webhook_queue">Обработка очереди вебхуков…</string>
<string name="server_address">Адрес сервера</string>
<string name="server">Сервер</string>
<string name="set_maximum_value_to_activate">Установите максимальное значение для активации</string>
<string name="settings_changed_via_api_restart_the_app_to_apply_changes">Настройки изменены
через API. Перезапустите приложение для применения изменений.</string>
<string name="settings_local_address_not_found">Недоступно</string>
<string name="settings_local_server">Локальный сервер</string>
<string name="settings_offline">Офлайн</string>
<string name="settings_online">Онлайн</string>
<string name="settings_public_address_not_found">Недоступно</string>
<string name="settings_start_on_boot">Автозапуск</string>
<string name="sign_in">Войти</string>
<string name="sign_up">Зарегистрироваться</string>
<string name="signing_key">Ключ подписи</string>
<string name="sms_gateway_is_running_on_port">SMS шлюз работает на порту %1$d</string>
<string name="sms_gateway">SMSGate</string>
<string name="success_long_press_to_copy">Успешно, нажмите и удерживайте для копирования</string>
<string name="system">Система</string>
<string name="tab_text_home">Главная</string>
<string name="tab_text_messages">СООБЩЕНИЯ</string>
<string name="tab_text_settings">НАСТРОЙКИ</string>
<string name="the_webhook_request_will_wait_for_an_internet_connection">Отправка веб-хуков
только при наличии интернет-соединения</string>
<string name="to_add_a_device_to_an_existing_account_please_fill_in_the_credentials_below">Чтобы
добавить устройство к существующему аккаунту, заполните учётные данные ниже.</string>
<string name="to_apply_the_changes_restart_the_app_using_the_button_below">Чтобы применить
изменения, перезапустите приложение, используя кнопку ниже.</string>
<string name="use_empty_to_disable">Оставьте пустым для отключения</string>
<string name="use_this_code_to_sign_in_on_another_device">Используйте этот код для входа на
другом устройстве</string>
<string name="username_must_be_at_least_3_characters">Имя пользователя должно быть не менее 3
символов</string>
<string name="username">Имя пользователя</string>
<string name="view">Просмотр</string>
<string name="webhook_list_summary">Просмотр зарегистрированных вебхуков</string>
<string name="webhook_list_title">Зарегистрированные вебхуки</string>
<string name="webhooks_dotdotdot">Вебхуки…</string>
<string name="webhooks">Вебхуки</string>
<plurals name="review_incoming_sms_webhooks">
<item quantity="one">У вас зарегистрирован %1$d вебхук для входящих SMS. Просмотрите его,
чтобы избежать рисков безопасности.</item>
<item quantity="few">У вас зарегистрировано %1$d вебхука для входящих SMS. Просмотрите их,
чтобы избежать рисков безопасности.</item>
<item quantity="many">У вас зарегистрировано %1$d вебхуков для входящих SMS. Просмотрите их,
чтобы избежать рисков безопасности.</item>
<item quantity="other">У вас зарегистрировано %1$d вебхуков для входящих SMS. Просмотрите
их, чтобы избежать рисков безопасности.</item>
</plurals>
<string name="processing">Обработка</string>
<string name="processing_order_title">Порядок обработки</string>
<string name="queue_status">📊 Статус очереди</string>
<string name="total_messages">Всего: %1$d</string>
<string name="pending_messages">В ожидании: %1$d</string>
<string name="sent_messages">Отправлено: %1$d</string>
<string name="delivered_messages">Доставлено: %1$d</string>
<string name="failed_messages">Сбоев: %1$d</string>
<string name="jwt">JWT</string>
<string name="jwt_default_ttl_seconds">TTL JWT по умолчанию (в секундах)</string>
<string name="jwt_ttl_must_be_between_1_second_and_365_days">TTL JWT должен быть между 1
секундой и 365 днями</string>
<string name="jwt_regenerate_secret">Перегенерировать секрет JWT</string>
<string name="jwt_regenerate_secret_summary">Все текущие токены станут недействительными</string>
<string name="jwt_secret_regenerated">Секрет JWT перегенерирован</string>
<string name="confirm_regenerate_jwt_secret">Вы уверены, что хотите перегенерировать секрет JWT?
Все текущие токены станут недействительными.</string>
<string name="confirm">Подтвердить</string>
<string name="cancel">Отмена</string>
<string name="incoming_messages">ВХОДЯЩИЕ</string>
<string name="incoming_messages_status">📥 Статус входящих</string>
<string name="incoming_sms_messages">SMS: %1$d</string>
<string name="incoming_data_messages">Данные SMS: %1$d</string>
<string name="incoming_mms_messages">MMS: %1$d</string>
<string name="outgoing_messages">ИСХОДЯЩИЕ</string>
</resources>
+149
View File
@@ -0,0 +1,149 @@
<resources>
<string name="address_is">%1$s</string>
<string name="api_url">API 地址</string>
<string name="api_url_private_token_credentials_etc">API 地址、私有令牌、凭据等</string>
<string name="app_version_build">应用版本(构建号)</string>
<string name="battery_optimization">电池优化</string>
<string name="battery_optimization_already_disabled">电池优化已禁用</string>
<string name="battery_optimization_is_not_supported_on_this_device">此设备不支持电池优化</string>
<string name="btn_cancel">取消</string>
<string name="btn_continue">继续</string>
<string name="by_code">通过验证码</string>
<string name="can_affect_battery_life">可能影响电池寿命</string>
<string
name="click_continue_to_create_an_account_no_personal_information_is_required_nby_continuing_you_agree_to_our_privacy_policy_at_https_docs_sms_gate_app_privacy_policy">点击"继续"创建账户,无需提供个人信息。\n继续即表示您同意我们的隐私政策,详情见
https://docs.sms-gate.app/privacy/policy/</string>
<string name="cloud">云端</string>
<string name="cloud_server">云服务器</string>
<string name="cloud_server_dotdotdot">云服务器…</string>
<string name="copied_to_clipboard">已复制</string>
<string name="credentials">凭据</string>
<string name="delays_limits_etc">延迟、限制等</string>
<string name="delays_seconds">延迟(秒)</string>
<string name="delete_after_days">自动删除(天)</string>
<string name="device">设备</string>
<string name="device_id">设备 ID</string>
<string name="disabled">已禁用</string>
<string name="dots"></string>
<string name="enabled">已启用</string>
<string name="encryption">加密</string>
<string name="failed_to_change_password">修改密码失败:%1$s</string>
<string name="failed_to_get_login_code">获取登录验证码失败:%1$s</string>
<string name="failed_to_register_device">设备注册失败:%1$s</string>
<string name="id_copied">Webhook ID 已复制到剪贴板</string>
<string name="if_sim_number_is_not_specified_use">若未指定 SIM 卡编号,则使用</string>
<string name="ignored_for_public_server">公共服务器忽略此项</string>
<string name="information">信息</string>
<string name="internet_connection_available">网络连接:可用</string>
<string name="internet_connection_unavailable">网络连接:不可用</string>
<string name="interval_seconds">间隔(秒)</string>
<string name="invalid_url">无效的 URL</string>
<string name="is_not_a_valid_port_must_be_between_1024_and_65535">%1$s 不是有效端口。必须在 1024-65535 之间</string>
<string name="label_password">密码</string>
<string name="label_username">用户名</string>
<string name="limits">限制</string>
<string name="list_of_last_50_log_entries">最近 50 条日志记录</string>
<string name="local">本地</string>
<string name="listening_to_the_server_events">正在监听服务器事件…</string>
<string name="local_address">本地地址</string>
<string name="local_server_dotdotdot">本地服务器…</string>
<string name="local_sms_gateway_notifications">本地短信网关通知</string>
<string name="login_code">登录验证码</string>
<string name="login_code_expires">登录验证码,有效期至 %1$s</string>
<string name="logs">日志</string>
<string name="maximum">最大值</string>
<string name="messages">消息…</string>
<string name="messages_count">消息数量</string>
<string name="messages_header">消息</string>
<string name="minimum">最小值</string>
<string name="more_settings">更多设置…</string>
<string name="n_a">无数据</string>
<string name="new_sms_received_webhooks_registered">已注册新短信接收 Webhook</string>
<string name="no_webhooks_found">未配置 Webhook</string>
<string name="not_registered">未注册</string>
<string name="not_set">未设置</string>
<string name="notification_title">短信网关</string>
<string name="notification_channel">通知渠道</string>
<string name="notifications">通知</string>
<string name="online_status_at_the_cost_of_battery_life">保持在线状态(可能消耗更多电量)</string>
<string name="passphrase">密码短语</string>
<string name="password">密码</string>
<string name="password_changed_successfully">密码修改成功</string>
<string name="password_must_be_at_least_14_characters">密码长度至少 14 个字符</string>
<string name="password_must_be_at_least_8_characters">密码长度至少 8 个字符</string>
<string name="period">周期</string>
<string name="ping">心跳检测</string>
<string name="ping_service_is_active">心跳服务已激活</string>
<string name="please_enter_one_time_code_displayed_on_already_registered_device">
请输入已注册设备上显示的一次性验证码</string>
<string name="port">端口</string>
<string name="port_credentials_etc">端口、凭据等</string>
<string name="private_token">私有令牌</string>
<string name="public_address">公共地址</string>
<string name="require_internet_connection">需要网络连接</string>
<string name="restart_required_to_apply_changes">需重启以应用更改</string>
<string name="retries_signing_etc">重试、签名等</string>
<string name="retry_count">重试次数</string>
<string name="send_messages_notification">发送消息中…</string>
<string name="sending_webhook">发送 Webhook 中…</string>
<string name="processing_webhook_queue">处理 Webhook 队列中…</string>
<string name="server">服务器</string>
<string name="server_address">服务器地址</string>
<string name="set_maximum_value_to_activate">设置最大值以激活</string>
<string name="settings_changed_via_api_restart_the_app_to_apply_changes">设置已通过 API 修改,重启应用以生效。</string>
<string name="settings_local_address_not_found">不可用</string>
<string name="settings_local_server">本地服务器</string>
<string name="settings_offline">离线</string>
<string name="settings_online">在线</string>
<string name="settings_public_address_not_found">不可用</string>
<string name="settings_start_on_boot">开机启动</string>
<string name="sign_in">登录</string>
<string name="sign_up">注册</string>
<string name="signing_key">签名密钥</string>
<string name="sms_gateway">短信网关</string>
<string name="sms_gateway_is_running_on_port">短信网关已在端口 %1$d 运行</string>
<string name="success_long_press_to_copy">成功,长按可复制</string>
<string name="system">系统</string>
<string name="tab_text_home">首页</string>
<string name="tab_text_messages">消息</string>
<string name="tab_text_settings">设置</string>
<string name="the_webhook_request_will_wait_for_an_internet_connection">Webhook 请求将等待网络连接</string>
<string name="to_add_a_device_to_an_existing_account_please_fill_in_the_credentials_below">
如需将设备添加到现有账户,请填写以下凭据。</string>
<string name="to_apply_the_changes_restart_the_app_using_the_button_below">如需应用更改,请使用下方按钮重启应用。</string>
<string name="use_empty_to_disable">留空则禁用</string>
<string name="use_this_code_to_sign_in_on_another_device">使用此验证码在其他设备登录</string>
<string name="username">用户名</string>
<string name="username_must_be_at_least_3_characters">用户名长度至少 3 个字符</string>
<string name="view">查看</string>
<string name="webhook_list_summary">查看已注册的 Webhook</string>
<string name="webhook_list_title">已注册的 Webhook</string>
<string name="webhooks">Webhook</string>
<string name="webhooks_dotdotdot">Webhook…</string>
<plurals name="review_incoming_sms_webhooks">
<item quantity="other">您已注册 %1$d 个短信接收 Webhook。请检查以避免安全风险。</item>
</plurals>
<string name="processing">处理中</string>
<string name="processing_order_title">处理顺序</string>
<string name="queue_status">📊 队列状态</string>
<string name="total_messages">总计:%1$d</string>
<string name="pending_messages">待处理:%1$d</string>
<string name="sent_messages">已发送:%1$d</string>
<string name="delivered_messages">已送达:%1$d</string>
<string name="failed_messages">失败:%1$d</string>
<string name="jwt">JWT</string>
<string name="jwt_default_ttl_seconds">JWT 默认 TTL(秒)</string>
<string name="jwt_ttl_must_be_between_1_second_and_365_days">JWT TTL 必须在 1 秒到 365 天之间</string>
<string name="jwt_regenerate_secret">重新生成 JWT 密钥</string>
<string name="jwt_regenerate_secret_summary">立即使所有现有的 JWT 签名无效</string>
<string name="jwt_secret_regenerated">JWT 密钥已重新生成</string>
<string name="confirm_regenerate_jwt_secret">您确定要重新生成 JWT 密钥吗?这将立即使所有现有的 JWT 签名无效。</string>
<string name="confirm">确认</string>
<string name="cancel">取消</string>
<string name="incoming_messages">接收</string>
<string name="incoming_messages_status">📥 接收状态</string>
<string name="incoming_sms_messages">短信:%1$d</string>
<string name="incoming_data_messages">数据短信:%1$d</string>
<string name="incoming_mms_messages">彩信:%1$d</string>
<string name="outgoing_messages">发送</string>
</resources>
+40
View File
@@ -0,0 +1,40 @@
<resources>
<string-array name="limit_periods_titles">
<item>disabled</item>
<item>minute</item>
<item>hour</item>
<item>day</item>
</string-array>
<string-array name="limit_periods_values">
<item>Disabled</item>
<item>PerMinute</item>
<item>PerHour</item>
<item>PerDay</item>
</string-array>
<string-array name="sim_selection_modes_titles">
<item>OS default</item>
<item>Round robin</item>
<item>Random</item>
</string-array>
<string-array name="sim_selection_modes_values">
<item>OSDefault</item>
<item>RoundRobin</item>
<item>Random</item>
</string-array>
<string-array name="processing_order_titles">
<item>LIFO (newer messages first)</item>
<item>FIFO (older messages first)</item>
</string-array>
<string-array name="processing_order_values" translatable="false">
<item>LIFO</item>
<item>FIFO</item>
</string-array>
<string-array name="notification_channels_titles">
<item>Auto</item>
<item>SSE Only</item>
</string-array>
<string-array name="notification_channels_values" translatable="false">
<item>AUTO</item>
<item>SSE_ONLY</item>
</string-array>
</resources>
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="progressBarOverlay">#33FFFFFF</color>
</resources>
+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#AEADAB</color>
</resources>
+172
View File
@@ -0,0 +1,172 @@
<resources>
<string name="address_is">%1$s</string>
<string name="api_url_private_token_credentials_etc">API URL, private token, credentials, etc.</string>
<string name="api_url">API URL</string>
<string name="app_name" translatable="false">SMSGate</string>
<string name="app_version_build">App version (build)</string>
<string name="battery_optimization_already_disabled">Battery optimization already disabled</string>
<string name="battery_optimization_is_not_supported_on_this_device">Battery optimization is not
supported on this device</string>
<string name="battery_optimization">Battery optimization</string>
<string name="btn_cancel">Cancel</string>
<string name="btn_continue">Continue</string>
<string name="by_code">By Code</string>
<string name="can_affect_battery_life">can affect battery life</string>
<string
name="click_continue_to_create_an_account_no_personal_information_is_required_nby_continuing_you_agree_to_our_privacy_policy_at_https_docs_sms_gate_app_privacy_policy">Click
Continue to create an account. No personal information is required.\nBy continuing, you
agree to our Privacy Policy at https://docs.sms-gate.app/privacy/policy/</string>
<string name="cloud_server_dotdotdot">Cloud server…</string>
<string name="cloud_server">Cloud server</string>
<string name="cloud">Cloud</string>
<string name="copied_to_clipboard">Copied</string>
<string name="credentials">Credentials</string>
<string name="delays_limits_etc">Delays, limits, etc.</string>
<string name="delays_seconds">Delays, seconds</string>
<string name="delete_after_days">Delete after, days</string>
<string name="device_id">Device ID</string>
<string name="device">Device</string>
<string name="disabled">Disabled</string>
<string name="dots"></string>
<string name="enabled">Enabled</string>
<string name="encryption">Encryption</string>
<string name="failed_to_change_password">Failed to change password: %1$s</string>
<string name="failed_to_get_login_code">Failed to get login code: %1$s</string>
<string name="failed_to_register_device">Failed to register device: %1$s</string>
<string name="id_copied">Webhook ID copied to clipboard</string>
<string name="if_sim_number_is_not_specified_use">If SIM number is not specified, use</string>
<string name="ignored_for_public_server">Ignored for public server</string>
<string name="information">Information</string>
<string name="internet_connection_available">Internet connection: available</string>
<string name="internet_connection_unavailable">Internet connection: unavailable</string>
<string name="interval_seconds">Interval (seconds)</string>
<string name="invalid_url">Invalid URL</string>
<string name="is_not_a_valid_port_must_be_between_1024_and_65535">%1$s is not a valid port. Must
be between 1024 and 65535.</string>
<string name="label_password">Password</string>
<string name="label_username">Username</string>
<string name="limits">Limits</string>
<string name="list_of_last_50_log_entries">List of last 50 log entries</string>
<string name="listening_to_the_server_events">Listening to server events…</string>
<string name="local_address">Local address</string>
<string name="local_server_dotdotdot">Local Server…</string>
<string name="local_sms_gateway_notifications">Local SMSGate notifications</string>
<string name="local">Local</string>
<string name="login_code_expires">Login Code, expires %1$s</string>
<string name="login_code">Login Code</string>
<string name="logs">Logs</string>
<string name="maximum">Maximum</string>
<string name="messages_count">Messages count</string>
<string name="messages_header">Messages</string>
<string name="messages">Messages…</string>
<string name="minimum">Minimum</string>
<string name="more_settings">More settings…</string>
<string name="n_a">n/a</string>
<string name="new_sms_received_webhooks_registered">New SMS Received Webhooks registered</string>
<string name="no_webhooks_found">No webhooks configured</string>
<string name="not_registered">not registered</string>
<string name="not_set">Not set</string>
<string name="notification_title">SMSGate</string>
<string name="notification_channel">Notification channel</string>
<string name="notifications">Notifications</string>
<string name="online_status_at_the_cost_of_battery_life">Online status at the cost of battery
life</string>
<string name="passphrase">Passphrase</string>
<string name="password_changed_successfully">Password changed successfully</string>
<string name="password_must_be_at_least_14_characters">Password must be at least 14 characters</string>
<string name="password_must_be_at_least_8_characters">Password must be at least 8 characters</string>
<string name="password">Password</string>
<string name="period">Period</string>
<string name="ping_service_is_active">Ping service is active</string>
<string name="ping">Ping</string>
<string name="please_enter_one_time_code_displayed_on_already_registered_device">Please enter
the one-time code displayed on the already-registered device</string>
<string name="port_credentials_etc">Port, credentials, etc.</string>
<string name="port">Port</string>
<string name="private_token">Private Token</string>
<string name="public_address">Public address</string>
<string name="require_internet_connection">Require Internet connection</string>
<string name="restart_required_to_apply_changes">Restart required to apply changes</string>
<string name="retries_signing_etc">Retries, signing, etc.</string>
<string name="retry_count">Retry count</string>
<string name="send_messages_notification">Sending messages…</string>
<string name="sending_webhook">Sending webhook…</string>
<string name="processing_webhook_queue">Processing webhook queue…</string>
<string name="server_address">Server address</string>
<string name="server">Server</string>
<string name="set_maximum_value_to_activate">Set maximum value to activate</string>
<string name="settings_address_is_sms_capcom_me" translatable="false">api.sms-gate.app</string>
<string name="settings_changed_via_api_restart_the_app_to_apply_changes">Settings changed via
API. Restart the app to apply changes.</string>
<string name="settings_local_address_is" translatable="false">&lt;a href>%1$s:%2$d&lt;/a></string>
<string name="settings_local_address_not_found">Not available</string>
<string name="settings_local_server">Local server</string>
<string name="settings_offline">Offline</string>
<string name="settings_online">Online</string>
<string name="settings_public_address_is" translatable="false">&lt;a href>%1$s:%2$d&lt;/a></string>
<string name="settings_public_address_not_found">Not available</string>
<string name="settings_start_on_boot">Start on boot</string>
<string name="sign_in">Sign In</string>
<string name="sign_up">Sign Up</string>
<string name="signing_key">Signing Key</string>
<string name="sms_gateway_is_running_on_port">SMSGate is running on port %1$d</string>
<string name="sms_gateway">SMSGate</string>
<string name="sms" translatable="false">sms</string>
<string name="success_long_press_to_copy">Success, long press to copy</string>
<string name="system">System</string>
<string name="tab_text_home">Home</string>
<string name="tab_text_messages">MESSAGES</string>
<string name="tab_text_settings">SETTINGS</string>
<string name="the_webhook_request_will_wait_for_an_internet_connection">The webhook request will
wait for an internet connection</string>
<string name="to_add_a_device_to_an_existing_account_please_fill_in_the_credentials_below">To
add a device to an existing account, please fill in the credentials below.</string>
<string name="to_apply_the_changes_restart_the_app_using_the_button_below">To apply the changes,
restart the app using the button below.</string>
<string name="use_empty_to_disable">Use empty to disable</string>
<string name="use_this_code_to_sign_in_on_another_device">Use this code to sign in on another
device</string>
<string name="username_must_be_at_least_3_characters">Username must be at least 3 characters</string>
<string name="username">Username</string>
<string name="view">View</string>
<string name="webhook_id_format" translatable="false">ID: %1$s</string>
<string name="webhook_list_summary">View registered webhooks</string>
<string name="webhook_list_title">Registered Webhooks</string>
<string name="webhooks_dotdotdot">Webhooks…</string>
<string name="webhooks">Webhooks</string>
<plurals name="review_incoming_sms_webhooks">
<item quantity="one">You have %1$d incoming SMS webhook registered. Please review it to
avoid any security risks.</item>
<item quantity="other">You have %1$d incoming SMS webhooks registered. Please review them to
avoid any security risks.</item>
</plurals>
<string name="processing">Processing</string>
<string name="processing_order_title">Processing order</string>
<string name="queue_status">📊 Queue Status</string>
<string name="total_messages">Total: %1$d</string>
<string name="pending_messages">Pending: %1$d</string>
<string name="sent_messages">Sent: %1$d</string>
<string name="delivered_messages">Delivered: %1$d</string>
<string name="failed_messages">Failed: %1$d</string>
<string name="incoming_messages">INCOMING</string>
<string name="incoming_messages_status">📥 Incoming Status</string>
<string name="incoming_sms_messages">SMS: %1$d</string>
<string name="incoming_data_messages">Data SMS: %1$d</string>
<string name="incoming_mms_messages">MMS: %1$d</string>
<string name="jwt">JWT</string>
<string name="jwt_default_ttl_seconds">JWT default TTL (seconds)</string>
<string name="jwt_ttl_must_be_between_1_second_and_365_days">JWT TTL must be between 1 second
and 365 days</string>
<string name="jwt_regenerate_secret">Regenerate JWT secret</string>
<string name="jwt_regenerate_secret_summary">Invalidates all existing JWT signatures
immediately.</string>
<string name="jwt_secret_regenerated">JWT secret regenerated</string>
<string name="confirm_regenerate_jwt_secret">Are you sure you want to regenerate the JWT secret?
This will invalidate all existing JWT signatures immediately.</string>
<string name="confirm">Confirm</string>
<string name="cancel">Cancel</string>
<string name="outgoing_messages">OUTGOING</string>
<string name="incoming_type_sms" translatable="false">SMS</string>
<string name="incoming_type_data_sms" translatable="false">Data SMS</string>
<string name="incoming_type_mms" translatable="false">MMS</string>
</resources>
+33
View File
@@ -0,0 +1,33 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.SmsGateway" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<!-- Settings screen styles -->
<style name="HomeCardLabel" parent="Widget.AppCompat.TextView">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">start</item>
<item name="android:layout_margin">4dp</item>
<item name="android:textAppearance">@style/TextAppearance.MaterialComponents.Body2</item>
</style>
<style name="HomeCardValue" parent="Widget.AppCompat.TextView">
<item name="android:lines">1</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">start</item>
<item name="android:layout_margin">4dp</item>
</style>
</resources>
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory app:title="@string/server">
<EditTextPreference
app:enableCopying="true"
app:icon="@drawable/ic_server"
app:key="gateway.cloud_url"
app:title="@string/api_url" />
<EditTextPreference
app:icon="@drawable/ic_token"
app:key="gateway.private_token"
app:summary="@string/ignored_for_public_server"
app:title="@string/private_token" />
<ListPreference
app:icon="@drawable/ic_notifications"
app:key="gateway.notification_channel"
app:defaultValue="AUTO"
app:entries="@array/notification_channels_titles"
app:entryValues="@array/notification_channels_values"
app:title="@string/notification_channel"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/credentials">
<EditTextPreference
app:enableCopying="true"
app:icon="@drawable/ic_username"
app:key="gateway.username"
app:persistent="false"
app:selectable="false"
app:title="@string/username" />
<EditTextPreference
app:enableCopying="true"
app:icon="@drawable/ic_password"
app:key="gateway.password"
app:persistent="false"
app:title="@string/password" />
<Preference
android:icon="@drawable/ic_code"
android:key="gateway.login_code"
android:persistent="false"
android:summary="@string/use_this_code_to_sign_in_on_another_device"
android:title="@string/login_code"
app:enableCopying="true" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/device">
<Preference
android:icon="@drawable/ic_device_id"
android:key="transient.device_id"
android:title="@string/device_id"
app:enableCopying="true"
app:persistent="false" />
</PreferenceCategory>
<Preference app:summary="@string/restart_required_to_apply_changes" />
</PreferenceScreen>
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory app:title="@string/server">
<EditTextPreference
app:defaultValue="8080"
app:icon="@drawable/ic_server"
app:key="localserver.PORT"
app:title="@string/port"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/credentials">
<EditTextPreference
app:enableCopying="true"
app:icon="@drawable/ic_username"
app:key="localserver.USERNAME"
app:title="@string/username"
app:defaultValue="@string/sms"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
app:enableCopying="true"
app:icon="@drawable/ic_password"
app:key="localserver.PASSWORD"
app:title="@string/password"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/jwt">
<EditTextPreference
app:icon="@drawable/ic_timer"
app:key="localserver.JWT_TTL_SECONDS"
app:title="@string/jwt_default_ttl_seconds"
app:defaultValue="86400"
app:useSimpleSummaryProvider="true" />
<Preference
android:icon="@drawable/ic_advanced"
android:key="transient.jwt_regenerate_secret"
android:title="@string/jwt_regenerate_secret"
android:summary="@string/jwt_regenerate_secret_summary"
android:persistent="false" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/device">
<Preference
android:icon="@drawable/ic_device_id"
android:key="transient.device_id"
android:title="@string/device_id"
app:enableCopying="true"
android:persistent="false" />
</PreferenceCategory>
<Preference app:summary="@string/restart_required_to_apply_changes" />
</PreferenceScreen>
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory app:title="@string/messages_header">
<DropDownPreference
android:icon="@drawable/ic_sim_selection"
android:defaultValue="OSDefault"
android:entries="@array/sim_selection_modes_titles"
android:entryValues="@array/sim_selection_modes_values"
android:key="messages.sim_selection_mode"
app:title="@string/if_sim_number_is_not_specified_use"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
app:icon="@drawable/ic_log_lifetime"
app:key="messages.log_lifetime_days"
app:useSimpleSummaryProvider="true"
app:title="@string/delete_after_days" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/processing">
<DropDownPreference
android:defaultValue="LIFO"
android:entries="@array/processing_order_titles"
android:entryValues="@array/processing_order_values"
android:key="messages.processing_order"
app:icon="@drawable/ic_processing_order"
app:title="@string/processing_order_title"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
<PreferenceCategory
app:summary="@string/set_maximum_value_to_activate"
app:title="@string/delays_seconds">
<EditTextPreference
app:key="messages.send_interval_min"
app:title="@string/minimum"
app:icon="@drawable/ic_timer"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
app:icon="@drawable/ic_timer"
app:key="messages.send_interval_max"
app:title="@string/maximum"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/limits">
<DropDownPreference
android:defaultValue="Disabled"
android:entries="@array/limit_periods_titles"
android:entryValues="@array/limit_periods_values"
android:icon="@drawable/ic_period"
android:key="messages.limit_period"
app:title="@string/period"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
android:defaultValue="0"
android:icon="@drawable/ic_send"
android:key="messages.limit_value"
app:title="@string/messages_count"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
</PreferenceScreen>
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<network-security-config>
<base-config cleartextTrafficPermitted="false">
<trust-anchors>
<certificates src="user" />
<certificates src="system" />
<certificates src="@raw/ca" />
</trust-anchors>
</base-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="false">127.0.0.1</domain>
</domain-config>
</network-security-config>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
<certificates src="@raw/ca" />
</trust-anchors>
</base-config>
</network-security-config>
+73
View File
@@ -0,0 +1,73 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<Preference
android:icon="@drawable/ic_local_server"
app:fragment="me.capcom.smsgateway.ui.settings.LocalServerSettingsFragment"
app:summary="@string/port_credentials_etc"
app:title="@string/local_server_dotdotdot" />
<Preference
android:icon="@drawable/ic_cloud_server"
app:fragment="me.capcom.smsgateway.ui.settings.CloudServerSettingsFragment"
app:summary="@string/api_url_private_token_credentials_etc"
app:title="@string/cloud_server_dotdotdot" />
<Preference
android:icon="@drawable/ic_messages"
app:fragment="me.capcom.smsgateway.ui.settings.MessagesSettingsFragment"
app:title="@string/messages"
app:summary="@string/delays_limits_etc" />
<Preference
android:icon="@drawable/ic_webhook"
app:fragment="me.capcom.smsgateway.ui.settings.WebhooksSettingsFragment"
app:summary="@string/retries_signing_etc"
app:title="@string/webhooks_dotdotdot" />
<PreferenceCategory app:title="@string/encryption">
<EditTextPreference
app:icon="@drawable/ic_encryption"
app:key="encryption.passphrase"
app:summary="@string/use_empty_to_disable"
app:title="@string/passphrase" />
</PreferenceCategory>
<PreferenceCategory
android:summary="@string/online_status_at_the_cost_of_battery_life"
app:title="@string/ping">
<EditTextPreference
android:key="ping.interval_seconds"
app:title="@string/interval_seconds"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/logs">
<Preference
app:fragment="me.capcom.smsgateway.ui.LogsListFragment"
app:summary="@string/list_of_last_50_log_entries"
app:title="@string/view" />
<EditTextPreference
app:icon="@drawable/ic_log_lifetime"
app:key="logs.lifetime_days"
app:title="@string/delete_after_days"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
<PreferenceCategory
app:key="system"
app:title="@string/system">
<Preference
android:icon="@drawable/ic_battery_optimizations"
app:key="system.disable_battery_optimizations"
app:summary="@string/can_affect_battery_life"
app:title="@string/battery_optimization" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/information">
<Preference
android:key="transient.app_version"
android:title="@string/app_version_build"
app:persistent="false"
app:selectable="false" />
</PreferenceCategory>
</PreferenceScreen>
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory app:title="@string/webhooks">
<SwitchPreference
android:icon="@drawable/ic_no_internet"
android:defaultValue="true"
android:key="webhooks.internet_required"
app:summary="@string/the_webhook_request_will_wait_for_an_internet_connection"
app:title="@string/require_internet_connection" />
<EditTextPreference
android:icon="@drawable/ic_retry"
android:key="webhooks.retry_count"
app:title="@string/retry_count"
app:defaultValue="15"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
android:icon="@drawable/ic_signing_key"
app:enableCopying="true"
app:key="webhooks.signing_key"
app:title="@string/signing_key"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
<Preference
android:icon="@drawable/ic_webhooks_list"
app:fragment="me.capcom.smsgateway.ui.settings.WebhooksListFragment"
app:summary="@string/webhook_list_summary"
app:title="@string/webhook_list_title" />
</androidx.preference.PreferenceScreen>