# HG changeset patch # User Carl Byington # Date 1402940610 25200 # Node ID 4ccfde0bc506dcca3f73a9366409fc4dbaca094b # Parent d8da9f32074c994c640582b2ac1b23bed3e765d6 disable host config items that are not applicable to the host protocol diff -r d8da9f32074c -r 4ccfde0bc506 src/com/five_ten_sg/connectbot/HostEditorActivity.java --- a/src/com/five_ten_sg/connectbot/HostEditorActivity.java Mon Jun 16 09:55:39 2014 -0700 +++ b/src/com/five_ten_sg/connectbot/HostEditorActivity.java Mon Jun 16 10:43:30 2014 -0700 @@ -231,6 +231,10 @@ private ServiceConnection connection; private HostBean host; + private boolean enableSSHFeatures; + private boolean enable5250Features; + private boolean enableAsyncFeatures; + protected TerminalBridge hostBridge; @Override @@ -242,6 +246,9 @@ this.hostdb = new HostDatabase(this); this.pubkeydb = new PubkeyDatabase(this); host = hostdb.findHostById(hostId); + enableSSHFeatures = host.isSSH(); + enable5250Features = host.is5250(); + enableAsyncFeatures = host.isAsync(); connection = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder service) { TerminalManager bound = ((TerminalManager.TerminalBinder) service).getService(); @@ -254,6 +261,20 @@ this.pref = new CursorPreferenceHack(HostDatabase.TABLE_HOSTS, hostId); this.pref.registerOnSharedPreferenceChangeListener(this); this.addPreferencesFromResource(R.xml.host_prefs); + + // disable all preferences that are not applicable to this host + findPreference(HostDatabase.FIELD_HOST_USEKEYS).setEnabled(enableSSHFeatures); + findPreference(HostDatabase.FIELD_HOST_USEAUTHAGENT).setEnabled(enableSSHFeatures); + findPreference(HostDatabase.FIELD_HOST_COMPRESSION).setEnabled(enableSSHFeatures); + findPreference(HostDatabase.FIELD_HOST_HTTPPROXY).setEnabled(enableAsyncFeatures); + findPreference(HostDatabase.FIELD_HOST_WANTSESSION).setEnabled(enableSSHFeatures); + findPreference(HostDatabase.FIELD_HOST_USERNAME).setEnabled(enableSSHFeatures); + findPreference(HostDatabase.FIELD_HOST_EMULATION).setEnabled(!enable5250Features); + findPreference(HostDatabase.FIELD_HOST_ENCRYPTION5250).setEnabled(enable5250Features); + findPreference(HostDatabase.FIELD_HOST_WANTX11FORWARD).setEnabled(enableSSHFeatures); + findPreference(HostDatabase.FIELD_HOST_X11HOST).setEnabled(enableSSHFeatures); + findPreference(HostDatabase.FIELD_HOST_X11PORT).setEnabled(enableSSHFeatures); + // add all existing pubkeys to our listpreference for user to choose from // TODO: may be an issue here when this activity is recycled after adding a new pubkey // TODO: should consider moving into onStart, but we dont have a good way of resetting the listpref after filling once @@ -317,6 +338,7 @@ // for all text preferences, set hint as current database value for (String key : this.pref.values.keySet()) { if (key.equals(HostDatabase.FIELD_HOST_POSTLOGIN)) continue; + if (key.equals(HostDatabase.FIELD_HOST_EMULATION)) continue; Preference pref = this.findPreference(key); diff -r d8da9f32074c -r 4ccfde0bc506 src/com/five_ten_sg/connectbot/bean/HostBean.java --- a/src/com/five_ten_sg/connectbot/bean/HostBean.java Mon Jun 16 09:55:39 2014 -0700 +++ b/src/com/five_ten_sg/connectbot/bean/HostBean.java Mon Jun 16 10:43:30 2014 -0700 @@ -73,6 +73,22 @@ this.port = port; } + public boolean isSSH() { + return (protocol == "ssh"); + } + + public boolean is5250() { + return (protocol == "tn5250"); + } + + public boolean isTelnet() { + return (protocol == "telnet"); + } + + public boolean isAsync() { + return isSSH() || isTelnet(); + } + public void setId(long id) { this.id = id; }