Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
54b613b
Issue #1509: Reworked Kindness Mode initial page.
tladesignz Apr 22, 2026
6bfcb7e
Issue #1509: Reworked Kindness Mode main page. Added proxy quality ch…
tladesignz Apr 27, 2026
5ecc9b0
Issue #1509: Reworked Usage Limits bottom sheet.
tladesignz Apr 27, 2026
02581a7
Issue #1509: Added "testing" scene. (not functional, yet.)
tladesignz Apr 27, 2026
15be336
For now, or at least before I get intot tla's large kindness mode rev…
bitmold Apr 29, 2026
9c3f5c6
Merge branch 'staging' into kindness_mode
bitmold Apr 29, 2026
37a8b10
Merge branch 'master' into kindness_mode
bitmold Apr 29, 2026
f57b978
Issue #1509: Removed legacy test.
tladesignz Apr 30, 2026
c42ed21
Issue #1509: Fixed header inset. Use card with rounded corners simila…
tladesignz Apr 30, 2026
e7e5513
Issue #1509: Removed remnant of legacy test.
tladesignz Apr 30, 2026
2354c19
Issue #1509: Added first test mock, which at least implements 24 hour…
tladesignz Apr 30, 2026
5f98239
Issue #1509: Added first test mock, which at least implements 24 hour…
tladesignz Apr 30, 2026
60c793f
Issue #1509: Disabled binding to SnowflakeProxyService for now, since…
tladesignz Apr 30, 2026
c9272b7
Issue #1509: Fixed proxy quality UI initial state.
tladesignz Apr 30, 2026
dab4f52
Issue #1509: Added layout for landscape with different arrangement of…
tladesignz Apr 30, 2026
7f07059
aligned controls on usage limits bottom sheet
bitmold May 4, 2026
88f151b
Issue #1509: Improved "Usage Limits" sheet layout.
tladesignz May 6, 2026
a161ddb
Issue #1509: More improvements to "Usage Limits" sheet layout.
tladesignz May 6, 2026
196096c
Merge branch 'master' into kindness_mode
tladesignz May 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -754,10 +754,6 @@ public void onReceive(Context context, Intent intent) {
// hack for https://github.com/guardianproject/tor-android/issues/73 remove when fixed
var newStatus = intent.getStringExtra(EXTRA_STATUS);

if (STATUS_ON.equals(newStatus) && Prefs.getTransport() == Transport.NONE && !Prefs.getHasDirectConnected()) {
Prefs.setHasDirectConnected(true);
}

if (STATUS_OFF.equals(mCurrentStatus) && STATUS_STOPPING.equals(newStatus))
break;
mCurrentStatus = newStatus;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import android.graphics.Color
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import android.widget.FrameLayout

Expand All @@ -21,7 +22,9 @@ import org.torproject.android.R
Class to set up default bottom sheet behavior for Config Connection, MOAT and any other
bottom sheets to come
*/
open class OrbotBottomSheetDialogFragment : BottomSheetDialogFragment() {
open class OrbotBottomSheetDialogFragment(
val minMode: Boolean = false
) : BottomSheetDialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val dialog = BottomSheetDialog(requireActivity(), theme)
dialog.setOnShowListener {
Expand All @@ -30,25 +33,33 @@ open class OrbotBottomSheetDialogFragment : BottomSheetDialogFragment() {
bottomSheetView?.let {
it.setBackgroundResource(R.drawable.bottom_sheet_rounded)
it.setBackgroundColor(Color.TRANSPARENT)
setHeightResponsive(it)
val behavior = BottomSheetBehavior.from(it)
setHeightResponsive(it, behavior)
behavior.state = BottomSheetBehavior.STATE_EXPANDED
}
}

return dialog
}

private fun setHeightResponsive(bottomSheet: View) {
private fun setHeightResponsive(bottomSheet: View, behavior: BottomSheetBehavior<*>) {
val windowMetrics = WindowMetricsCalculator
.getOrCreate()
.computeCurrentWindowMetrics(requireActivity())

val windowHeight = windowMetrics.bounds.height()
val height = (windowHeight * getHeightRatio()).toInt()

val layoutParams = bottomSheet.layoutParams
layoutParams.height = height

if (minMode) {
behavior.maxHeight = height

layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT
}
else {
layoutParams.height = height
}

bottomSheet.layoutParams = layoutParams
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,45 +4,45 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import androidx.appcompat.widget.SwitchCompat
import androidx.fragment.app.FragmentActivity
import org.torproject.android.R
import org.torproject.android.util.Prefs
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.setFragmentResult
import org.torproject.android.databinding.KindnessConfigBottomSheetBinding
import org.torproject.android.ui.OrbotBottomSheetDialogFragment
import org.torproject.android.util.Prefs

class KindnessConfigBottomSheet : OrbotBottomSheetDialogFragment() {
class KindnessConfigBottomSheet : OrbotBottomSheetDialogFragment(true) {

private lateinit var btnAction: Button
private lateinit var mBinding: KindnessConfigBottomSheetBinding

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View? {
val v = inflater.inflate(R.layout.kindess_config_bottom_sheet, container, false)
v.findViewById<View>(R.id.tvCancel).setOnClickListener { dismiss() }
btnAction = v.findViewById(R.id.btnAction)
): View {
mBinding = KindnessConfigBottomSheetBinding.inflate(inflater, container, false)

mBinding.tvCancel.setOnClickListener { dismiss() }

val configWifi = v.findViewById<SwitchCompat>(R.id.swKindnessConfigWifi)
val configCharging = v.findViewById<SwitchCompat>(R.id.swKindnessConfigCharging)
mBinding.btnAction.setOnClickListener {
Prefs.setBeSnowflakeProxyLimitWifi(mBinding.swKindnessConfigWifi.isChecked)
Prefs.setBeSnowflakeProxyLimitCharging(mBinding.swKindnessConfigCharging.isChecked)

btnAction.setOnClickListener {
Prefs.setBeSnowflakeProxyLimitWifi(configWifi.isChecked)
Prefs.setBeSnowflakeProxyLimitCharging(configCharging.isChecked)
setFragmentResult(KEY_CONFIG_CHANGED, Bundle())
dismiss()
}

configWifi.isChecked = Prefs.limitSnowflakeProxyingWifi()
configCharging.isChecked = Prefs.limitSnowflakeProxyingCharging()
return v
mBinding.swKindnessConfigWifi.isChecked = Prefs.limitSnowflakeProxyingWifi()
mBinding.swKindnessConfigCharging.isChecked = Prefs.limitSnowflakeProxyingCharging()

return mBinding.root
}

companion object {
fun openKindnessSettings(fragmentActivity: FragmentActivity) {
const val KEY_CONFIG_CHANGED = "kindness_config_changed"

fun show(fragmentManager: FragmentManager) {
KindnessConfigBottomSheet().show(
fragmentActivity.supportFragmentManager,
fragmentManager,
"KindnessConfig"
)
}
}

}
}
Loading