Skip to content

Commit e083f23

Browse files
committed
Add checkbox for SIM cards
1 parent 2c195a1 commit e083f23

File tree

7 files changed

+53
-88
lines changed

7 files changed

+53
-88
lines changed

android/app/src/main/java/com/httpsms/MainActivity.kt

Lines changed: 6 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import android.app.NotificationChannel
66
import android.app.NotificationManager
77
import android.content.Context
88
import android.content.Intent
9-
import android.content.pm.PackageManager
109
import android.net.Uri
1110
import android.os.Build
1211
import android.os.Bundle
@@ -19,7 +18,6 @@ import android.widget.TextView
1918
import android.widget.Toast
2019
import androidx.activity.result.contract.ActivityResultContracts
2120
import androidx.appcompat.app.AppCompatActivity
22-
import androidx.core.app.ActivityCompat
2321
import androidx.lifecycle.MutableLiveData
2422
import androidx.work.Constraints
2523
import androidx.work.ExistingPeriodicWorkPolicy
@@ -29,7 +27,6 @@ import androidx.work.WorkManager
2927
import com.google.android.material.button.MaterialButton
3028
import com.google.android.material.card.MaterialCardView
3129
import com.google.android.material.progressindicator.LinearProgressIndicator
32-
import com.google.android.material.switchmaterial.SwitchMaterial
3330
import com.httpsms.services.StickyNotificationService
3431
import com.httpsms.worker.HeartbeatWorker
3532
import okhttp3.internal.format
@@ -56,7 +53,6 @@ class MainActivity : AppCompatActivity() {
5653
createChannel()
5754

5855
setCardContent(this)
59-
setActiveStatus(this)
6056
registerListeners()
6157
refreshToken(this)
6258

@@ -89,9 +85,15 @@ class MainActivity : AppCompatActivity() {
8985
private fun setCardContent(context: Context) {
9086
val titleText = findViewById<TextView>(R.id.cardPhoneNumber)
9187
titleText.text = PhoneNumberUtils.formatNumber(Settings.getSIM1PhoneNumber(this), Locale.getDefault().country)
88+
if(!Settings.getActiveStatus(context, Constants.SIM1)) {
89+
titleText.setCompoundDrawables(null, null, null, null)
90+
}
9291

9392
val titleTextSIM2 = findViewById<TextView>(R.id.cardPhoneNumberSIM2)
9493
titleTextSIM2.text = PhoneNumberUtils.formatNumber(Settings.getSIM2PhoneNumber(this), Locale.getDefault().country)
94+
if(!Settings.getActiveStatus(context, Constants.SIM2)) {
95+
titleTextSIM2.setCompoundDrawables(null, null, null, null)
96+
}
9597

9698
setLastHeartbeatTimestamp(context)
9799

@@ -238,69 +240,6 @@ class MainActivity : AppCompatActivity() {
238240
return true
239241
}
240242

241-
private fun setActiveStatus(context: Context) {
242-
val switch = findViewById<SwitchMaterial>(R.id.cardSwitch)
243-
switch.isChecked = Settings.getActiveStatus(context, Constants.SIM1)
244-
switch.setOnCheckedChangeListener{
245-
_, isChecked ->
246-
run {
247-
if (isChecked && !hasAllPermissions(context)) {
248-
Toast.makeText(context, "PERMISSIONS_NOT_GRANTED", Toast.LENGTH_SHORT).show()
249-
} else {
250-
Settings.setActiveStatusAsync(context, isChecked, Constants.SIM1)
251-
}
252-
if (isChecked) {
253-
Settings.setIncomingActiveSIM1(context, true)
254-
startStickyNotification(context)
255-
}
256-
}
257-
}
258-
259-
if (!Settings.isDualSIM(context)) {
260-
return
261-
}
262-
263-
val switchSIM2 = findViewById<SwitchMaterial>(R.id.cardSwitchSIM2)
264-
switchSIM2.isChecked = Settings.getActiveStatus(context, Constants.SIM2)
265-
switchSIM2.setOnCheckedChangeListener{
266-
_, isChecked ->
267-
run {
268-
if (isChecked && !hasAllPermissions(context)) {
269-
Toast.makeText(context, "PERMISSIONS_NOT_GRANTED", Toast.LENGTH_SHORT).show()
270-
} else {
271-
Settings.setActiveStatusAsync(context, isChecked, Constants.SIM2)
272-
}
273-
if (isChecked) {
274-
Settings.setIncomingActiveSIM2(context, true)
275-
startStickyNotification(context)
276-
}
277-
}
278-
}
279-
}
280-
281-
private fun hasAllPermissions(context: Context): Boolean {
282-
if (ActivityCompat.checkSelfPermission(
283-
context,
284-
Manifest.permission.SEND_SMS
285-
) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
286-
context,
287-
Manifest.permission.READ_PHONE_NUMBERS
288-
) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
289-
context,
290-
Manifest.permission.RECEIVE_SMS
291-
) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
292-
context,
293-
Manifest.permission.READ_PHONE_STATE
294-
) == PackageManager.PERMISSION_GRANTED && (Build.VERSION.SDK_INT < 33 || ActivityCompat.checkSelfPermission(
295-
context,
296-
Manifest.permission.POST_NOTIFICATIONS
297-
) == PackageManager.PERMISSION_GRANTED)
298-
) {
299-
return true
300-
}
301-
return false
302-
}
303-
304243
private fun setLastHeartbeatTimestamp(context: Context) {
305244
val refreshTimestampView = findViewById<TextView>(R.id.cardRefreshTime)
306245
val timestamp = Settings.getHeartbeatTimestamp(context)

android/app/src/main/java/com/httpsms/Settings.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,10 @@ import java.net.URI
88
object Settings {
99
private const val SETTINGS_SIM1_PHONE_NUMBER = "SETTINGS_SIM1_PHONE_NUMBER"
1010
private const val SETTINGS_SIM2_PHONE_NUMBER = "SETTINGS_SIM2_PHONE_NUMBER"
11-
private const val SETTINGS_ACTIVE = "SETTINGS_ACTIVE_STATUS"
1211
private const val SETTINGS_SIM1_ACTIVE = "SETTINGS_SIM1_ACTIVE_STATUS"
1312
private const val SETTINGS_SIM2_ACTIVE = "SETTINGS_SIM2_ACTIVE_STATUS"
1413
private const val SETTINGS_SIM1_INCOMING_ACTIVE = "SETTINGS_SIM1_INCOMING_ACTIVE"
15-
private const val SETTINGS_SIM2_INCOMING_ACTIVE = "SETTINGS_SIM1_INCOMING_ACTIVE"
14+
private const val SETTINGS_SIM2_INCOMING_ACTIVE = "SETTINGS_SIM2_INCOMING_ACTIVE"
1615
private const val SETTINGS_API_KEY = "SETTINGS_API_KEY"
1716
private const val SETTINGS_SERVER_URL = "SETTINGS_SERVER_URL"
1817
private const val SETTINGS_FCM_TOKEN = "SETTINGS_FCM_TOKEN"
@@ -43,7 +42,7 @@ object Settings {
4342
.getString(this.SETTINGS_SIM2_PHONE_NUMBER, null)
4443

4544
if (owner == null) {
46-
Timber.e("cannot get owner from preference [${this.SETTINGS_SIM2_PHONE_NUMBER}]")
45+
Timber.d("cannot get owner from preference [${this.SETTINGS_SIM2_PHONE_NUMBER}]")
4746
return ""
4847
}
4948

android/app/src/main/java/com/httpsms/SettingsActivity.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,24 +30,31 @@ class SettingsActivity : AppCompatActivity() {
3030

3131
sim1IncomingMessages.setOnCheckedChangeListener{ _, isChecked -> run { Settings.setIncomingActiveSIM1(context, isChecked) } }
3232

33+
val sim1OutgoingMessages = findViewById<SwitchMaterial>(R.id.settings_sim1_outgoing_messages)
34+
sim1OutgoingMessages.isChecked = Settings.getActiveStatus(context, Constants.SIM1)
35+
sim1OutgoingMessages.setOnCheckedChangeListener{ _, isChecked -> run { Settings.setActiveStatusAsync(context, isChecked, Constants.SIM1) } }
36+
3337
if (!Settings.isDualSIM(context)) {
3438
val layout = findViewById<TextInputLayout>(R.id.settingsSIM2Layout)
3539
layout.visibility = TextInputLayout.GONE
3640
val sim2Switch = findViewById<SwitchMaterial>(R.id.settings_sim2_incoming_messages)
3741
sim2Switch.visibility = SwitchMaterial.GONE
42+
val outgoingSwitch = findViewById<SwitchMaterial>(R.id.settings_sim2_outgoing_messages)
43+
outgoingSwitch.visibility = SwitchMaterial.GONE
3844
return
3945
}
4046

41-
Timber.e("Settings.isDualSIM(context) = ${Settings.isDualSIM(context)}")
42-
4347
val phoneNumberSIM2 = findViewById<TextInputEditText>(R.id.settingsSIM2InputEdit)
4448
phoneNumberSIM2.setText(Settings.getSIM2PhoneNumber(context))
4549
phoneNumberSIM2.isEnabled = false
4650

4751
val sim2IncomingMessages = findViewById<SwitchMaterial>(R.id.settings_sim2_incoming_messages)
4852
sim2IncomingMessages.isChecked = Settings.isIncomingMessageEnabled(context, Constants.SIM2)
49-
5053
sim2IncomingMessages.setOnCheckedChangeListener{ _, isChecked -> run { Settings.setIncomingActiveSIM2(context, isChecked) } }
54+
55+
val sim2OutgoingMessages = findViewById<SwitchMaterial>(R.id.settings_sim2_outgoing_messages)
56+
sim2OutgoingMessages.isChecked = Settings.getActiveStatus(context, Constants.SIM2)
57+
sim2OutgoingMessages.setOnCheckedChangeListener{ _, isChecked -> run { Settings.setActiveStatusAsync(context, isChecked, Constants.SIM2) } }
5158
}
5259

5360
private fun registerListeners() {
@@ -56,7 +63,7 @@ class SettingsActivity : AppCompatActivity() {
5663
}
5764

5865
private fun onBackClicked() {
59-
Timber.e("back button clicked")
66+
Timber.d("back button clicked")
6067
redirectToMain()
6168
}
6269

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<vector android:height="24dp" android:tint="#E91E63"
2+
android:viewportHeight="24" android:viewportWidth="24"
3+
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
4+
<path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/>
5+
</vector>

android/app/src/main/res/layout/activity_main.xml

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,12 @@
5858
android:layout_width="wrap_content"
5959
android:layout_height="match_parent"
6060
android:text="@string/phone_number"
61+
android:drawablePadding="5dp"
6162
android:textAppearance="?attr/textAppearanceTitleMedium"
6263
android:textColor="?android:attr/textColorPrimary"
64+
app:drawableTint="#70ab5c"
65+
app:drawableEndCompat="@drawable/baseline_check_circle_24"
6366
android:textSize="28sp" />
64-
65-
<com.google.android.material.switchmaterial.SwitchMaterial
66-
android:id="@+id/cardSwitch"
67-
android:layout_width="match_parent"
68-
android:layout_height="wrap_content"
69-
android:minHeight="48dp"
70-
tools:ignore="TouchTargetSizeCheck" />
7167
</LinearLayout>
7268

7369

@@ -111,17 +107,14 @@
111107
android:id="@+id/cardPhoneNumberSIM2"
112108
android:layout_width="wrap_content"
113109
android:layout_height="match_parent"
110+
android:drawablePadding="5dp"
114111
android:text="@string/phone_number"
115112
android:textAppearance="?attr/textAppearanceTitleMedium"
116113
android:textColor="?android:attr/textColorPrimary"
114+
app:drawableTint="#70ab5c"
115+
app:drawableEndCompat="@drawable/baseline_check_circle_24"
117116
android:textSize="28sp" />
118117

119-
<com.google.android.material.switchmaterial.SwitchMaterial
120-
android:id="@+id/cardSwitchSIM2"
121-
android:layout_width="match_parent"
122-
android:layout_height="wrap_content"
123-
android:minHeight="48dp"
124-
tools:ignore="TouchTargetSizeCheck" />
125118
</LinearLayout>
126119

127120

android/app/src/main/res/layout/activity_settings.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,16 @@
5454

5555
</com.google.android.material.textfield.TextInputLayout>
5656

57+
<com.google.android.material.switchmaterial.SwitchMaterial
58+
android:id="@+id/settings_sim1_outgoing_messages"
59+
android:layout_width="match_parent"
60+
android:layout_height="wrap_content"
61+
android:textSize="18sp"
62+
android:layout_marginBottom="16dp"
63+
android:text="@string/settings_outgoing_messages_sim1"
64+
android:minHeight="48dp"
65+
tools:ignore="TouchTargetSizeCheck" />
66+
5767
<com.google.android.material.switchmaterial.SwitchMaterial
5868
android:id="@+id/settings_sim1_incoming_messages"
5969
android:layout_width="match_parent"
@@ -83,6 +93,16 @@
8393

8494
</com.google.android.material.textfield.TextInputLayout>
8595

96+
<com.google.android.material.switchmaterial.SwitchMaterial
97+
android:id="@+id/settings_sim2_outgoing_messages"
98+
android:layout_width="match_parent"
99+
android:layout_height="wrap_content"
100+
android:textSize="18sp"
101+
android:text="@string/settings_outgoing_messages_sim2"
102+
android:minHeight="48dp"
103+
android:layout_marginBottom="16dp"
104+
tools:ignore="TouchTargetSizeCheck" />
105+
86106
<com.google.android.material.switchmaterial.SwitchMaterial
87107
android:id="@+id/settings_sim2_incoming_messages"
88108
android:layout_width="match_parent"

android/app/src/main/res/values/strings.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@
2020
<string name="main_app_settings">App Settings</string>
2121
<string name="settings_sim1">SIM1</string>
2222
<string name="settings_sim_2">SIM2</string>
23-
<string name="settings_incoming_messages_sim1">EnableIncoming Messages (SIM1)</string>
23+
<string name="settings_outgoing_messages_sim1">Enable Outgoing Messages (SIM1)</string>
24+
<string name="settings_incoming_messages_sim1">Enable Incoming Messages (SIM1)</string>
2425
<string name="settings_incoming_messages_sim2">Enable Incoming Messages (SIM2)</string>
26+
<string name="settings_outgoing_messages_sim2">Enable Outgoing Messages (SIM2)</string>
2527
<string name="login_phone_number_sim1">Phone Number (SIM1)</string>
2628
<string name="login_phone_number_sim2">Phone Number (SIM2)</string>
2729
</resources>

0 commit comments

Comments
 (0)