@@ -15,14 +15,16 @@ import io.treehouses.remote.Constants
15
15
import io.treehouses.remote.R
16
16
import io.treehouses.remote.Tutorials
17
17
import 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
18
21
import io.treehouses.remote.pojo.enum.Status
19
22
import 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.*
23
23
24
24
class SSHTunnelFragment : BaseSSHTunnelFragment () {
25
-
25
+ lateinit var dialogSshTunnelPortsBinding: DialogSshtunnelPortsBinding
26
+ lateinit var dialogSshTunnelKeyBinding: DialogSshtunnelKeyBinding
27
+ lateinit var dialogSshTunnelHostsBinding: DialogSshtunnelHostsBinding
26
28
27
29
@RequiresApi(Build .VERSION_CODES .N )
28
30
override fun onCreateView (inflater : LayoutInflater , container : ViewGroup ? , savedInstanceState : Bundle ? ): View ? {
@@ -45,7 +47,7 @@ class SSHTunnelFragment : BaseSSHTunnelFragment() {
45
47
handlePhoneKeySave(it.data)
46
48
if (it.data!! .showHandlePiKeySaveDialog)
47
49
handlePiKeySave(it.data.profile, it.data.storedPublicKey, it.data.storedPrivateKey)
48
- }
50
+ } else -> {}
49
51
}
50
52
})
51
53
}
@@ -76,32 +78,32 @@ class SSHTunnelFragment : BaseSSHTunnelFragment() {
76
78
val dialog = builder.create();
77
79
dialog.window!! .setBackgroundDrawableResource(android.R .color.transparent); dialog.show();
78
80
}
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()
83
85
viewModel.addingHostButton(m1, m2)
84
86
dialogHosts.dismiss()
85
87
}
86
88
}
87
89
88
90
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)
92
94
dialogPort.dismiss()
93
95
}
94
96
}
95
97
96
98
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 {
100
102
viewModel.keyClickListener(profile); viewModel.handleShowKeys(profile)
101
103
}
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() }
105
107
bind.sshPorts.onItemClickListener = AdapterView .OnItemClickListener { _: AdapterView <* >? , _: View ? , position: Int , _: Long ->
106
108
handleDeletePort(position)
107
109
}
@@ -133,32 +135,41 @@ class SSHTunnelFragment : BaseSSHTunnelFragment() {
133
135
bind.switchNotification.isEnabled = it.data.enableSwitchNotification; bind.btnAddHosts.text = it.data.addHostText
134
136
bind.btnAddPort.text = it.data.addPortText; bind.btnAddPort.isEnabled = it.data.enableAddPort
135
137
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
138
140
portsName = it.data.portNames; hostsName = it.data.hostNames
139
141
adapter = TunnelUtils .getPortAdapter(requireContext(), portsName)
140
142
bind.sshPorts.adapter = adapter
141
143
adapter2 = ArrayAdapter (requireContext(), R .layout.support_simple_spinner_dropdown_item, hostsName!! )
142
- dialogPort .hosts.adapter = adapter2
144
+ dialogSshTunnelPortsBinding .hosts.adapter = adapter2
143
145
}
144
146
Status .LOADING -> {
145
147
if (it == null ) return @Observer
146
- dialogKeys.progress_bar .visibility = View .VISIBLE
147
- }
148
+ dialogSshTunnelKeyBinding.progressBar .visibility = View .VISIBLE
149
+ } else -> {}
148
150
}
149
151
})
150
152
}
151
153
152
154
@RequiresApi(Build .VERSION_CODES .N )
153
155
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 )
162
173
viewModel.initializeArrays()
163
174
val window = dialogPort.window;
164
175
val windowHost = dialogHosts.window
@@ -176,17 +187,17 @@ class SSHTunnelFragment : BaseSSHTunnelFragment() {
176
187
// }
177
188
178
189
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
183
194
184
195
}
185
196
186
197
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
190
201
}
191
202
192
203
/*
@@ -198,10 +209,10 @@ class SSHTunnelFragment : BaseSSHTunnelFragment() {
198
209
override fun afterTextChanged (s : Editable ? ) {
199
210
textInputLayout.isErrorEnabled = true
200
211
if (s!! .isEmpty()) {
201
- dialogHosts.btn_adding_host .isEnabled = false
212
+ dialogSshTunnelHostsBinding.btnAddingHost .isEnabled = false
202
213
} else {
203
214
if (! s!! .toString().matches(regex.toRegex())) {
204
- dialogHosts.btn_adding_host .isEnabled = false
215
+ dialogSshTunnelHostsBinding.btnAddingHost .isEnabled = false
205
216
textInputLayout.error = error
206
217
} else {
207
218
textInputLayout.isErrorEnabled = false
@@ -220,14 +231,14 @@ class SSHTunnelFragment : BaseSSHTunnelFragment() {
220
231
override fun afterTextChanged (s : Editable ? ) {
221
232
textInputLayout.isErrorEnabled = true
222
233
if (s!! .isEmpty()) {
223
- dialogPort.btn_adding_port .isEnabled = false
234
+ dialogSshTunnelPortsBinding.btnAddingPort .isEnabled = false
224
235
} else {
225
236
if (! s!! .toString().matches(Constants .portRegex.toRegex())) {
226
- dialogPort.btn_adding_port .isEnabled = false
237
+ dialogSshTunnelPortsBinding.btnAddingPort .isEnabled = false
227
238
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"
231
242
} else {
232
243
textInputLayout.isErrorEnabled = false
233
244
checkAddingPortButtonEnable()
0 commit comments