UI: double line ExtraKeysView.

This commit is contained in:
Lody
2017-06-17 14:58:17 +08:00
parent 999de06a62
commit baa9fba58c
2 changed files with 32 additions and 19 deletions

View File

@ -9,7 +9,6 @@ import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.HorizontalScrollView; import android.widget.HorizontalScrollView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.ToggleButton; import android.widget.ToggleButton;
import java.io.File; import java.io.File;
@ -32,7 +31,7 @@ import static io.neoterm.view.eks.ExtraButton.KEY_TAB;
* A view showing extra keys (such as Escape, Ctrl, Alt) not normally available on an Android soft * A view showing extra keys (such as Escape, Ctrl, Alt) not normally available on an Android soft
* keyboard. * keyboard.
*/ */
public final class ExtraKeysView extends HorizontalScrollView { public final class ExtraKeysView extends LinearLayout {
public static final ControlButton ESC = new ControlButton(KEY_ESC); public static final ControlButton ESC = new ControlButton(KEY_ESC);
public static final ControlButton TAB = new ControlButton(KEY_TAB); public static final ControlButton TAB = new ControlButton(KEY_TAB);
@ -55,24 +54,35 @@ public final class ExtraKeysView extends HorizontalScrollView {
private List<ExtraButton> builtinExtraKeys; private List<ExtraButton> builtinExtraKeys;
private List<ExtraButton> userDefinedExtraKeys; private List<ExtraButton> userDefinedExtraKeys;
private LinearLayout contentView; private LinearLayout lineOne;
private LinearLayout lineTwo;
public ExtraKeysView(Context context, AttributeSet attrs) { public ExtraKeysView(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
setFillViewport(true); setGravity(Gravity.TOP);
contentView = new LinearLayout(context); setOrientation(VERTICAL);
contentView.setGravity(Gravity.CENTER); HorizontalScrollView scrollOne = new HorizontalScrollView(context);
contentView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); HorizontalScrollView scrollTwo = new HorizontalScrollView(context);
contentView.setOrientation(LinearLayout.HORIZONTAL);
contentView.setGravity(Gravity.LEFT);
addView(contentView);
builtinExtraKeys = new ArrayList<>(7);
userDefinedExtraKeys = new ArrayList<>(7);
loadDefaultBuiltinExtraKeys(); loadDefaultBuiltinExtraKeys();
loadDefaultUserDefinedExtraKeys(); loadDefaultUserDefinedExtraKeys();
lineOne = initLine(scrollOne);
lineTwo = initLine(scrollTwo);
addView(scrollOne);
addView(scrollTwo);
updateButtons(); updateButtons();
} }
private LinearLayout initLine(HorizontalScrollView scroll) {
scroll.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, 1f));
scroll.setFillViewport(true);
LinearLayout line = new LinearLayout(getContext());
line.setGravity(Gravity.START);
line.setOrientation(LinearLayout.HORIZONTAL);
scroll.addView(line);
return line;
}
public boolean readControlButton() { public boolean readControlButton() {
return CTRL.readState(); return CTRL.readState();
@ -91,6 +101,7 @@ public final class ExtraKeysView extends HorizontalScrollView {
} }
public void loadDefaultUserDefinedExtraKeys() { public void loadDefaultUserDefinedExtraKeys() {
userDefinedExtraKeys = new ArrayList<>(7);
File defaultFile = new File(NeoTermPath.EKS_DEFAULT_FILE); File defaultFile = new File(NeoTermPath.EKS_DEFAULT_FILE);
if (!defaultFile.exists()) { if (!defaultFile.exists()) {
generateDefaultFile(defaultFile); generateDefaultFile(defaultFile);
@ -102,7 +113,8 @@ public final class ExtraKeysView extends HorizontalScrollView {
parser.setInput(defaultFile); parser.setInput(defaultFile);
ShortcutConfig config = parser.parse(); ShortcutConfig config = parser.parse();
userDefinedExtraKeys.addAll(config.getShortcutKeys()); userDefinedExtraKeys.addAll(config.getShortcutKeys());
} catch (Exception ignore) { } catch (Exception e) {
e.printStackTrace();
} }
} }
@ -111,6 +123,7 @@ public final class ExtraKeysView extends HorizontalScrollView {
} }
void loadDefaultBuiltinExtraKeys() { void loadDefaultBuiltinExtraKeys() {
builtinExtraKeys = new ArrayList<>(7);
builtinExtraKeys.clear(); builtinExtraKeys.clear();
builtinExtraKeys.add(ESC); builtinExtraKeys.add(ESC);
builtinExtraKeys.add(CTRL); builtinExtraKeys.add(CTRL);
@ -122,16 +135,16 @@ public final class ExtraKeysView extends HorizontalScrollView {
} }
public void updateButtons() { public void updateButtons() {
for (final ExtraButton extraButton : builtinExtraKeys) {
addExtraButton(extraButton);
}
for (final ExtraButton extraButton : userDefinedExtraKeys) { for (final ExtraButton extraButton : userDefinedExtraKeys) {
addExtraButton(extraButton); addExtraButton(lineOne, extraButton);
}
for (final ExtraButton extraButton : builtinExtraKeys) {
addExtraButton(lineTwo, extraButton);
} }
} }
private void addExtraButton(final ExtraButton extraButton) { private void addExtraButton(LinearLayout contentView, final ExtraButton extraButton) {
final Button button; final Button button;
if (extraButton instanceof StatedControlButton) { if (extraButton instanceof StatedControlButton) {
StatedControlButton btn = ((StatedControlButton) extraButton); StatedControlButton btn = ((StatedControlButton) extraButton);

View File

@ -17,7 +17,7 @@
android:id="@+id/extra_keys" android:id="@+id/extra_keys"
style="?android:buttonBarStyle" style="?android:buttonBarStyle"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/eks_height_one_line" android:layout_height="@dimen/eks_height_two_line"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:background="@color/terminal_background" android:background="@color/terminal_background"
android:orientation="horizontal" /> android:orientation="horizontal" />