From 1700496008bc74eb063201b0c5476881c322cc0d Mon Sep 17 00:00:00 2001 From: pk-218 <2182001pk@gmail.com> Date: Fri, 25 Mar 2022 20:29:15 +0530 Subject: [PATCH 1/5] fix: update ConnectionDetailsFragment --- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 4 + .../kotlinx/knox/ConnectionDetailsFragment.kt | 96 +++++++++++++++++++ .../java/tech/kotlinx/knox/SecondFragment.kt | 44 --------- ...nd.xml => fragment_connection_details.xml} | 53 ++++------ app/src/main/res/navigation/nav_graph.xml | 6 +- app/src/main/res/values/strings.xml | 6 +- 7 files changed, 127 insertions(+), 83 deletions(-) create mode 100644 app/src/main/java/tech/kotlinx/knox/ConnectionDetailsFragment.kt delete mode 100644 app/src/main/java/tech/kotlinx/knox/SecondFragment.kt rename app/src/main/res/layout/{fragment_second.xml => fragment_connection_details.xml} (61%) diff --git a/app/build.gradle b/app/build.gradle index 0f0e60d..7b7a7fc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -42,6 +42,7 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'androidx.navigation:navigation-fragment-ktx:2.4.1' implementation 'androidx.navigation:navigation-ui-ktx:2.4.1' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f2b7fd3..55ba6d5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,10 @@ + + + + userIpAddress = getWifiIpAddress() + ConnectivityManager.TYPE_MOBILE -> userIpAddress = getMobileDataIpAddress() + } + binding.senderIpAddressField.setText(userIpAddress) + + binding.enterChatButton.setOnClickListener { + findNavController().navigate(R.id.action_SecondFragment_to_FirstFragment) + } + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } + + @Suppress("DEPRECATION") + private fun getWifiIpAddress(): String? { + val wifiMgr = context?.getSystemService(WIFI_SERVICE) as WifiManager? + val wifiInfo = wifiMgr!!.connectionInfo + val ip = wifiInfo.ipAddress + return Formatter.formatIpAddress(ip) + } + + private fun getMobileDataIpAddress(): String { + try { + val interfaces = Collections.list(NetworkInterface.getNetworkInterfaces()) + for (networkInterface in interfaces) { + val addresses = Collections.list(networkInterface.inetAddresses) + for (address in addresses) { + if (!address.isLoopbackAddress) { + val result = address.hostAddress!! + val isIPv4 = result.indexOf(':') < 0 + return if (isIPv4) + result + else { + val delimiter: Int = result.indexOf('%') + if (delimiter < 0) + result.uppercase(Locale.getDefault()) + else + result.substring(0, delimiter).uppercase(Locale.getDefault()); + } + } + } + } + } catch (e: Exception) { + Log.d("MobileIPError", e.toString()) + } + return "0.0.0.0" + } +} \ No newline at end of file diff --git a/app/src/main/java/tech/kotlinx/knox/SecondFragment.kt b/app/src/main/java/tech/kotlinx/knox/SecondFragment.kt deleted file mode 100644 index 32c399c..0000000 --- a/app/src/main/java/tech/kotlinx/knox/SecondFragment.kt +++ /dev/null @@ -1,44 +0,0 @@ -package tech.kotlinx.knox - -import android.os.Bundle -import androidx.fragment.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.navigation.fragment.findNavController -import tech.kotlinx.knox.databinding.FragmentSecondBinding - -/** - * A simple [Fragment] subclass as the second destination in the navigation. - */ -class SecondFragment : Fragment() { - - private var _binding: FragmentSecondBinding? = null - - // This property is only valid between onCreateView and - // onDestroyView. - private val binding get() = _binding!! - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - - _binding = FragmentSecondBinding.inflate(inflater, container, false) - return binding.root - - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - -// binding.buttonSecond.setOnClickListener { -// findNavController().navigate(R.id.action_SecondFragment_to_FirstFragment) -// } - } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } -} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_second.xml b/app/src/main/res/layout/fragment_connection_details.xml similarity index 61% rename from app/src/main/res/layout/fragment_second.xml rename to app/src/main/res/layout/fragment_connection_details.xml index c7a3514..1cf97c0 100644 --- a/app/src/main/res/layout/fragment_second.xml +++ b/app/src/main/res/layout/fragment_connection_details.xml @@ -1,10 +1,10 @@ + tools:context=".ConnectionDetailsFragment"> - + android:layout_marginHorizontal="40dp" + android:layout_marginVertical="20dp" + android:hint="@string/your_ip_address" + app:placeholderText="@string/default_ip"> - + + + android:layout_marginVertical="20dp" + android:hint="@string/enter_receiver_ip_address"> + android:layout_height="wrap_content" /> - - - - - - \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 97f9f1b..f823046 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -17,9 +17,9 @@ + android:name="tech.kotlinx.knox.ConnectionDetailsFragment" + android:label="@string/connection_details_fragment_label" + tools:layout="@layout/fragment_connection_details"> - knox + Knox Settings First Fragment - Second Fragment + Connection Details Next Let\'s Chat @@ -11,6 +11,6 @@ Hello second fragment. Arg: %1$s Your IP Address 0.0.0.0 - Enter Receiver\'s IP address + Enter Receiver\'s IP address Let\'s Chat \ No newline at end of file From f15783cac59157c81dff71aecf9b63224ca14696 Mon Sep 17 00:00:00 2001 From: theshivv Date: Fri, 25 Mar 2022 21:21:03 +0530 Subject: [PATCH 2/5] feat : Welcome to Knox page UI added --- .../res/drawable-v24/anonymous_chatting.png | Bin 0 -> 21867 bytes app/src/main/res/drawable/round_border.xml | 8 ++- app/src/main/res/layout/fragment_first.xml | 63 +++++++++++++++--- app/src/main/res/layout/fragment_second.xml | 9 ++- app/src/main/res/values/colors.xml | 3 + app/src/main/res/values/strings.xml | 2 +- 6 files changed, 69 insertions(+), 16 deletions(-) create mode 100644 app/src/main/res/drawable-v24/anonymous_chatting.png diff --git a/app/src/main/res/drawable-v24/anonymous_chatting.png b/app/src/main/res/drawable-v24/anonymous_chatting.png new file mode 100644 index 0000000000000000000000000000000000000000..61d3dbeeb49d6390b31476a6b34ae05b13c1a555 GIT binary patch literal 21867 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/round_border.xml b/app/src/main/res/drawable/round_border.xml index 5634a03..b2302c4 100644 --- a/app/src/main/res/drawable/round_border.xml +++ b/app/src/main/res/drawable/round_border.xml @@ -1,8 +1,9 @@ - + + android:color="@color/white" + /> @@ -10,7 +11,8 @@ android:left="1dp" android:right="1dp" android:bottom="1dp" - android:top="1dp" /> + android:top="1dp" + /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_first.xml b/app/src/main/res/layout/fragment_first.xml index fb44a3d..0eb4488 100644 --- a/app/src/main/res/layout/fragment_first.xml +++ b/app/src/main/res/layout/fragment_first.xml @@ -6,23 +6,68 @@ android:layout_height="match_parent" tools:context=".FirstFragment"> - + android:layout_margin="40dp" + app:layout_constraintTop_toBottomOf="@id/guideline3" + app:layout_constraintBottom_toTopOf="@id/guideline4" + > + + + +