diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3219dde..d0f8199 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -6,6 +6,7 @@ + diff --git a/app/src/main/java/org/openziti/mobile/ZitiVPNService.kt b/app/src/main/java/org/openziti/mobile/ZitiVPNService.kt index 4628913..fcaf7d9 100644 --- a/app/src/main/java/org/openziti/mobile/ZitiVPNService.kt +++ b/app/src/main/java/org/openziti/mobile/ZitiVPNService.kt @@ -19,10 +19,15 @@ import android.os.IBinder import android.system.OsConstants import android.util.Log import androidx.localbroadcastmanager.content.LocalBroadcastManager -import kotlinx.coroutines.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Job +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.asCoroutineDispatcher +import kotlinx.coroutines.cancel import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.job +import kotlinx.coroutines.launch import org.openziti.android.Ziti import org.openziti.mobile.net.PacketRouter import org.openziti.mobile.net.PacketRouterImpl @@ -33,7 +38,6 @@ import java.io.Writer import java.nio.ByteBuffer import java.time.Duration import java.util.concurrent.Executors -import kotlin.coroutines.CoroutineContext class ZitiVPNService : VpnService(), CoroutineScope { @@ -101,7 +105,7 @@ class ZitiVPNService : VpnService(), CoroutineScope { } private fun setNetworks() { - val nwrks = networks() +// val nwrks = networks() runCatching { // setUnderlyingNetworks(nwrks) }.onFailure { diff --git a/app/src/main/java/org/openziti/mobile/debug/DebugInfoActivity.kt b/app/src/main/java/org/openziti/mobile/debug/DebugInfoActivity.kt index f1d26fd..cecbe1c 100644 --- a/app/src/main/java/org/openziti/mobile/debug/DebugInfoActivity.kt +++ b/app/src/main/java/org/openziti/mobile/debug/DebugInfoActivity.kt @@ -5,19 +5,14 @@ package org.openziti.mobile.debug import android.os.Bundle -import com.google.android.material.floatingactionbutton.FloatingActionButton -import com.google.android.material.snackbar.Snackbar +import androidx.fragment.app.FragmentActivity import com.google.android.material.tabs.TabLayout -import androidx.viewpager.widget.ViewPager -import androidx.appcompat.app.AppCompatActivity -import android.view.Menu -import android.view.MenuItem -import org.openziti.mobile.debug.SectionsPagerAdapter +import com.google.android.material.tabs.TabLayoutMediator import org.openziti.mobile.databinding.ActivityDebugInfoBinding import org.openziti.util.DebugInfoProvider -import java.util.* +import java.util.ServiceLoader -class DebugInfoActivity : AppCompatActivity() { +class DebugInfoActivity : FragmentActivity() { internal val contentMap: List> init { @@ -26,7 +21,6 @@ class DebugInfoActivity : AppCompatActivity() { } private lateinit var binding: ActivityDebugInfoBinding - private lateinit var sectionsPagerAdapter: SectionsPagerAdapter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -34,13 +28,17 @@ class DebugInfoActivity : AppCompatActivity() { binding = ActivityDebugInfoBinding.inflate(layoutInflater) setContentView(binding.root) - val viewPager: ViewPager = binding.viewPager - viewPager.adapter = SectionsPagerAdapter(this, supportFragmentManager).apply { + val viewPager = binding.viewPager + val adapter = SectionsPagerAdapter(this).apply { names = contentMap.map{ it.first }.toList() } + viewPager.adapter = adapter + val tabs: TabLayout = binding.tabs - tabs.setupWithViewPager(viewPager) + TabLayoutMediator(tabs, viewPager) { tab, pos -> + tab.text = adapter.names[pos] + }.attach() } internal fun getSectionProvider(section: String): DebugInfoProvider? { diff --git a/app/src/main/java/org/openziti/mobile/debug/SectionsPagerAdapter.kt b/app/src/main/java/org/openziti/mobile/debug/SectionsPagerAdapter.kt index 3c8e4c3..9d9125d 100644 --- a/app/src/main/java/org/openziti/mobile/debug/SectionsPagerAdapter.kt +++ b/app/src/main/java/org/openziti/mobile/debug/SectionsPagerAdapter.kt @@ -4,25 +4,20 @@ package org.openziti.mobile.debug -import android.content.Context import androidx.fragment.app.Fragment -import androidx.fragment.app.FragmentManager -import androidx.fragment.app.FragmentPagerAdapter +import androidx.fragment.app.FragmentActivity +import androidx.viewpager2.adapter.FragmentStateAdapter /** - * A [FragmentPagerAdapter] that returns a fragment corresponding to + * A [FragmentStateAdapter] that returns a fragment corresponding to * one of the sections/tabs/pages. */ -class SectionsPagerAdapter(private val context: Context, fm: FragmentManager) : - FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { - +class SectionsPagerAdapter(act: FragmentActivity) : FragmentStateAdapter(act) { lateinit var names: List - override fun getItem(position: Int): Fragment { + override fun createFragment(position: Int): Fragment { val name = names[position] return DebugInfoFragment.newInstance(name) } - override fun getPageTitle(position: Int): CharSequence = names[position] - - override fun getCount(): Int = names.size + override fun getItemCount(): Int = names.size } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_debug_info.xml b/app/src/main/res/layout/activity_debug_info.xml index e097f70..f601e5d 100644 --- a/app/src/main/res/layout/activity_debug_info.xml +++ b/app/src/main/res/layout/activity_debug_info.xml @@ -32,7 +32,7 @@ android:layout_height="wrap_content" /> -