@@ -15,14 +15,16 @@ import io.treehouses.remote.Constants
1515import io.treehouses.remote.R
1616import io.treehouses.remote.Tutorials
1717import io.treehouses.remote.databinding.ActivityTunnelSshFragmentBinding
18+ import io.treehouses.remote.databinding.DialogSshtunnelHostsBinding
19+ import io.treehouses.remote.databinding.DialogSshtunnelKeyBinding
20+ import io.treehouses.remote.databinding.DialogSshtunnelPortsBinding
1821import io.treehouses.remote.pojo.enum.Status
1922import io.treehouses.remote.utils.*
20- import kotlinx.android.synthetic.main.dialog_sshtunnel_hosts.*
21- import kotlinx.android.synthetic.main.dialog_sshtunnel_key.*
22- import kotlinx.android.synthetic.main.dialog_sshtunnel_ports.*
2323
2424class SSHTunnelFragment : BaseSSHTunnelFragment () {
25-
25+ lateinit var dialogSshTunnelPortsBinding: DialogSshtunnelPortsBinding
26+ lateinit var dialogSshTunnelKeyBinding: DialogSshtunnelKeyBinding
27+ lateinit var dialogSshTunnelHostsBinding: DialogSshtunnelHostsBinding
2628
2729 @RequiresApi(Build .VERSION_CODES .N )
2830 override fun onCreateView (inflater : LayoutInflater , container : ViewGroup ? , savedInstanceState : Bundle ? ): View ? {
@@ -45,7 +47,7 @@ class SSHTunnelFragment : BaseSSHTunnelFragment() {
4547 handlePhoneKeySave(it.data)
4648 if (it.data!! .showHandlePiKeySaveDialog)
4749 handlePiKeySave(it.data.profile, it.data.storedPublicKey, it.data.storedPrivateKey)
48- }
50+ } else -> {}
4951 }
5052 })
5153 }
@@ -76,32 +78,32 @@ class SSHTunnelFragment : BaseSSHTunnelFragment() {
7678 val dialog = builder.create();
7779 dialog.window!! .setBackgroundDrawableResource(android.R .color.transparent); dialog.show();
7880 }
79- dialogPort.btn_adding_port .setOnClickListener { handleAddPort() }
80- dialogHosts.btn_adding_host .setOnClickListener {
81- val m1 = dialogHosts .PortNumberInput .text.toString()
82- val m2 = dialogHosts .UserNameInput .text.toString() + " @" + dialogHosts .DomainIPInput .text.toString()
81+ dialogSshTunnelPortsBinding.btnAddingPort .setOnClickListener { handleAddPort() }
82+ dialogSshTunnelHostsBinding.btnAddingHost .setOnClickListener {
83+ val m1 = dialogSshTunnelHostsBinding .PortNumberInput .text.toString()
84+ val m2 = dialogSshTunnelHostsBinding .UserNameInput .text.toString() + " @" + dialogSshTunnelHostsBinding .DomainIPInput .text.toString()
8385 viewModel.addingHostButton(m1, m2)
8486 dialogHosts.dismiss()
8587 }
8688 }
8789
8890 private fun handleAddPort () {
89- if (dialogPort .ExternalTextInput .text!! .isNotEmpty() && dialogPort .InternalTextInput .text!! .isNotEmpty()) {
90- val parts = dialogPort .hosts?.selectedItem.toString().split(" :" )[0 ]
91- viewModel.addingPortButton(dialogPort .InternalTextInput .text.toString(), dialogPort .ExternalTextInput .text.toString(), parts)
91+ if (dialogSshTunnelPortsBinding .ExternalTextInput .text!! .isNotEmpty() && dialogSshTunnelPortsBinding .InternalTextInput .text!! .isNotEmpty()) {
92+ val parts = dialogSshTunnelPortsBinding .hosts?.selectedItem.toString().split(" :" )[0 ]
93+ viewModel.addingPortButton(dialogSshTunnelPortsBinding .InternalTextInput .text.toString(), dialogSshTunnelPortsBinding .ExternalTextInput .text.toString(), parts)
9294 dialogPort.dismiss()
9395 }
9496 }
9597
9698 private fun addListeners2 () {
97- var profile = dialogKeys.findViewById<EditText >(R .id.sshtunnel_profile).text.toString()
98- dialogKeys.btn_save_keys .setOnClickListener { viewModel.keyClickListener(profile); }
99- dialogKeys.btn_show_keys .setOnClickListener {
99+ val profile = dialogKeys.findViewById<EditText >(R .id.sshtunnel_profile).text.toString()
100+ dialogSshTunnelKeyBinding.btnSaveKeys .setOnClickListener { viewModel.keyClickListener(profile); }
101+ dialogSshTunnelKeyBinding.btnShowKeys .setOnClickListener {
100102 viewModel.keyClickListener(profile); viewModel.handleShowKeys(profile)
101103 }
102- dialogPort .addPortCloseButton.setOnClickListener { dialogPort.dismiss() }
103- dialogHosts .addHostCloseButton.setOnClickListener { dialogHosts.dismiss() }
104- dialogKeys .addKeyCloseButton.setOnClickListener { dialogKeys.dismiss() }
104+ dialogSshTunnelPortsBinding .addPortCloseButton.setOnClickListener { dialogPort.dismiss() }
105+ dialogSshTunnelHostsBinding .addHostCloseButton.setOnClickListener { dialogHosts.dismiss() }
106+ dialogSshTunnelKeyBinding .addKeyCloseButton.setOnClickListener { dialogKeys.dismiss() }
105107 bind.sshPorts.onItemClickListener = AdapterView .OnItemClickListener { _: AdapterView <* >? , _: View ? , position: Int , _: Long ->
106108 handleDeletePort(position)
107109 }
@@ -133,32 +135,41 @@ class SSHTunnelFragment : BaseSSHTunnelFragment() {
133135 bind.switchNotification.isEnabled = it.data.enableSwitchNotification; bind.btnAddHosts.text = it.data.addHostText
134136 bind.btnAddPort.text = it.data.addPortText; bind.btnAddPort.isEnabled = it.data.enableAddPort
135137 bind.btnAddHosts.isEnabled = it.data.enableAddHost; bind.sshPorts.isEnabled = it.data.enableSSHPort
136- dialogKeys.public_key .text = it.data.publicKey; dialogKeys.private_key .text = it.data.privateKey
137- dialogKeys.progress_bar .visibility = View .GONE
138+ dialogSshTunnelKeyBinding.publicKey .text = it.data.publicKey; dialogSshTunnelKeyBinding.privateKey .text = it.data.privateKey
139+ dialogSshTunnelKeyBinding.progressBar .visibility = View .GONE
138140 portsName = it.data.portNames; hostsName = it.data.hostNames
139141 adapter = TunnelUtils .getPortAdapter(requireContext(), portsName)
140142 bind.sshPorts.adapter = adapter
141143 adapter2 = ArrayAdapter (requireContext(), R .layout.support_simple_spinner_dropdown_item, hostsName!! )
142- dialogPort .hosts.adapter = adapter2
144+ dialogSshTunnelPortsBinding .hosts.adapter = adapter2
143145 }
144146 Status .LOADING -> {
145147 if (it == null ) return @Observer
146- dialogKeys.progress_bar .visibility = View .VISIBLE
147- }
148+ dialogSshTunnelKeyBinding.progressBar .visibility = View .VISIBLE
149+ } else -> {}
148150 }
149151 })
150152 }
151153
152154 @RequiresApi(Build .VERSION_CODES .N )
153155 private fun initializeDialog () {
154- dialogPort = Dialog (requireContext()); dialogHosts = Dialog (requireContext()); dialogKeys = Dialog (requireContext())
155- dialogPort.setContentView(R .layout.dialog_sshtunnel_ports); dialogHosts.setContentView(R .layout.dialog_sshtunnel_hosts)
156- dialogKeys.setContentView(R .layout.dialog_sshtunnel_key)
157- addHostSyntaxCheck(dialogHosts.UserNameInput , dialogHosts.TLusername , Constants .userRegex, Constants .hostError)
158- addHostSyntaxCheck(dialogHosts.DomainIPInput , dialogHosts.TLdomain , Constants .domainRegex + " |" + Constants .ipRegex, Constants .domainIPError)
159- addHostSyntaxCheck(dialogHosts.PortNumberInput , dialogHosts.TLportname , Constants .portRegex, Constants .portError)
160- addPortSyntaxCheck(dialogPort.ExternalTextInput , dialogPort.TLexternal )
161- addPortSyntaxCheck(dialogPort.InternalTextInput , dialogPort.TLinternal )
156+ dialogPort = Dialog (requireContext())
157+ dialogSshTunnelPortsBinding = DialogSshtunnelPortsBinding .inflate(layoutInflater)
158+ dialogPort.setContentView(dialogSshTunnelPortsBinding.root)
159+
160+ dialogHosts = Dialog (requireContext())
161+ dialogSshTunnelHostsBinding = DialogSshtunnelHostsBinding .inflate(layoutInflater)
162+ dialogHosts.setContentView(dialogSshTunnelHostsBinding.root)
163+
164+ dialogKeys = Dialog (requireContext())
165+ dialogSshTunnelKeyBinding = DialogSshtunnelKeyBinding .inflate(layoutInflater)
166+ dialogKeys.setContentView(dialogSshTunnelKeyBinding.root)
167+
168+ addHostSyntaxCheck(dialogSshTunnelHostsBinding.UserNameInput , dialogSshTunnelHostsBinding.TLusername , Constants .userRegex, Constants .hostError)
169+ addHostSyntaxCheck(dialogSshTunnelHostsBinding.DomainIPInput , dialogSshTunnelHostsBinding.TLdomain , Constants .domainRegex + " |" + Constants .ipRegex, Constants .domainIPError)
170+ addHostSyntaxCheck(dialogSshTunnelHostsBinding.PortNumberInput , dialogSshTunnelHostsBinding.TLportname , Constants .portRegex, Constants .portError)
171+ addPortSyntaxCheck(dialogSshTunnelPortsBinding.ExternalTextInput , dialogSshTunnelPortsBinding.TLexternal )
172+ addPortSyntaxCheck(dialogSshTunnelPortsBinding.InternalTextInput , dialogSshTunnelPortsBinding.TLinternal )
162173 viewModel.initializeArrays()
163174 val window = dialogPort.window;
164175 val windowHost = dialogHosts.window
@@ -176,17 +187,17 @@ class SSHTunnelFragment : BaseSSHTunnelFragment() {
176187// }
177188
178189 fun checkAddingHostButtonEnable () {
179- if (dialogHosts .UserNameInput .editableText.isNotEmpty() && dialogHosts .DomainIPInput .editableText.isNotEmpty()
180- && dialogHosts .PortNumberInput .editableText.isNotEmpty())
181- if (! dialogHosts .TLusername .isErrorEnabled && ! dialogHosts .TLdomain .isErrorEnabled && ! dialogHosts .TLportname .isErrorEnabled)
182- dialogHosts.btn_adding_host .isEnabled = true
190+ if (dialogSshTunnelHostsBinding .UserNameInput .editableText.isNotEmpty() && dialogSshTunnelHostsBinding .DomainIPInput .editableText.isNotEmpty()
191+ && dialogSshTunnelHostsBinding .PortNumberInput .editableText.isNotEmpty())
192+ if (! dialogSshTunnelHostsBinding .TLusername .isErrorEnabled && ! dialogSshTunnelHostsBinding .TLdomain .isErrorEnabled && ! dialogSshTunnelHostsBinding .TLportname .isErrorEnabled)
193+ dialogSshTunnelHostsBinding.btnAddingHost .isEnabled = true
183194
184195 }
185196
186197 fun checkAddingPortButtonEnable () {
187- if (dialogPort .ExternalTextInput .editableText.isNotEmpty() && dialogPort .InternalTextInput .editableText.isNotEmpty())
188- if (! dialogPort .TLexternal .isErrorEnabled && ! dialogPort .TLinternal .isErrorEnabled)
189- dialogPort.btn_adding_port .isEnabled = true
198+ if (dialogSshTunnelPortsBinding .ExternalTextInput .editableText.isNotEmpty() && dialogSshTunnelPortsBinding .InternalTextInput .editableText.isNotEmpty())
199+ if (! dialogSshTunnelPortsBinding .TLexternal .isErrorEnabled && ! dialogSshTunnelPortsBinding .TLinternal .isErrorEnabled)
200+ dialogSshTunnelPortsBinding.btnAddingPort .isEnabled = true
190201 }
191202
192203 /*
@@ -198,10 +209,10 @@ class SSHTunnelFragment : BaseSSHTunnelFragment() {
198209 override fun afterTextChanged (s : Editable ? ) {
199210 textInputLayout.isErrorEnabled = true
200211 if (s!! .isEmpty()) {
201- dialogHosts.btn_adding_host .isEnabled = false
212+ dialogSshTunnelHostsBinding.btnAddingHost .isEnabled = false
202213 } else {
203214 if (! s!! .toString().matches(regex.toRegex())) {
204- dialogHosts.btn_adding_host .isEnabled = false
215+ dialogSshTunnelHostsBinding.btnAddingHost .isEnabled = false
205216 textInputLayout.error = error
206217 } else {
207218 textInputLayout.isErrorEnabled = false
@@ -220,14 +231,14 @@ class SSHTunnelFragment : BaseSSHTunnelFragment() {
220231 override fun afterTextChanged (s : Editable ? ) {
221232 textInputLayout.isErrorEnabled = true
222233 if (s!! .isEmpty()) {
223- dialogPort.btn_adding_port .isEnabled = false
234+ dialogSshTunnelPortsBinding.btnAddingPort .isEnabled = false
224235 } else {
225236 if (! s!! .toString().matches(Constants .portRegex.toRegex())) {
226- dialogPort.btn_adding_port .isEnabled = false
237+ dialogSshTunnelPortsBinding.btnAddingPort .isEnabled = false
227238 textInputLayout.error = Constants .portError
228- } else if (textInputEditText == dialogPort .ExternalTextInput && viewModel.searchArray(portsName, s!! .toString())) {
229- dialogPort.btn_adding_port .isEnabled = false
230- dialogPort .TLexternal .error = " Port number already exists"
239+ } else if (textInputEditText == dialogSshTunnelPortsBinding .ExternalTextInput && viewModel.searchArray(portsName, s!! .toString())) {
240+ dialogSshTunnelPortsBinding.btnAddingPort .isEnabled = false
241+ dialogSshTunnelPortsBinding .TLexternal .error = " Port number already exists"
231242 } else {
232243 textInputLayout.isErrorEnabled = false
233244 checkAddingPortButtonEnable()
0 commit comments