From 8fd48d4d8de71958924895569bd161ec55a18eb0 Mon Sep 17 00:00:00 2001 From: cyberarm Date: Thu, 20 Aug 2020 16:01:36 -0500 Subject: [PATCH] Stubbed fragments for groups, actions, and variables. --- app/src/main/AndroidManifest.xml | 9 -- .../backend/Backend.java | 10 +- .../backend/Config.java | 71 +++++++++++++- .../ui/editor/ActionsFragment.java | 98 +++++++++++++++++++ .../ui/editor/EditorFragment.java | 65 ++++++++++-- .../ui/editor/VariablesFragment.java | 68 +++++++++++++ .../ui/settings/SettingsFragment.java | 10 +- .../ConfigurationsActivity.java | 24 ----- .../ConfigurationsFragment.java | 30 ++++++ .../ui/settings/presets/PresetsActivity.java | 6 -- .../ui/settings/presets/PresetsFragment.java | 6 ++ .../ui/tacnet/TACNETFragment.java | 1 + app/src/main/res/layout/fragment_actions.xml | 20 ++++ .../res/layout/fragment_configuration.xml | 37 ++----- app/src/main/res/layout/fragment_editor.xml | 20 ++-- .../main/res/layout/fragment_part_actions.xml | 61 ++++++++++++ .../layout/fragment_part_configuration.xml | 40 ++++++++ .../main/res/layout/fragment_part_groups.xml | 37 +++++++ .../res/layout/fragment_part_variables.xml | 56 +++++++++++ .../main/res/layout/fragment_variables.xml | 20 ++++ .../main/res/navigation/mobile_navigation.xml | 35 ++++++- app/src/main/res/values/colors.xml | 2 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 1 + 24 files changed, 627 insertions(+), 101 deletions(-) create mode 100644 app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/ActionsFragment.java create mode 100644 app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/VariablesFragment.java delete mode 100644 app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/configurations/ConfigurationsActivity.java create mode 100644 app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/configurations/ConfigurationsFragment.java delete mode 100644 app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/presets/PresetsActivity.java create mode 100644 app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/presets/PresetsFragment.java create mode 100644 app/src/main/res/layout/fragment_actions.xml create mode 100644 app/src/main/res/layout/fragment_part_actions.xml create mode 100644 app/src/main/res/layout/fragment_part_configuration.xml create mode 100644 app/src/main/res/layout/fragment_part_groups.xml create mode 100644 app/src/main/res/layout/fragment_part_variables.xml create mode 100644 app/src/main/res/layout/fragment_variables.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2b5066d..ba8499e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,15 +23,6 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/backend/Backend.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/backend/Backend.java index 2e623bc..cdccf8f 100644 --- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/backend/Backend.java +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/backend/Backend.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.ArrayList; import java.util.Date; import java.util.LinkedHashMap; import java.util.Map; @@ -37,6 +38,8 @@ public class Backend { loadSettings(); if (!settings.config.isEmpty()) { loadConfig(settings.config); + } else { + config = new Config(); } tacnet = new TACNET(); @@ -69,10 +72,11 @@ public class Backend { public boolean isConfigChanged() { return configChanged; } public void loadConfig(String name) { - File file = new File("" + TAC.CONFIGS_PATH + File.separator + name); + String path = "" + TAC.CONFIGS_PATH + File.separator + name; + File file = new File(path); if (file.exists() && file.isFile()) { - // TODO: Load configuration + config = new Config(name, path); } } @@ -140,7 +144,7 @@ public class Backend { .create(); } - private String readFromFile(String path) { + protected String readFromFile(String path) { StringBuilder text = new StringBuilder(); try { diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/backend/Config.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/backend/Config.java index 5431300..02d8524 100644 --- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/backend/Config.java +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/backend/Config.java @@ -2,17 +2,69 @@ package org.timecrafters.TimeCraftersConfigurationTool.backend; import com.google.gson.Gson; +import java.io.Reader; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Date; public class Config { + private String name; private Configuration configuration; private ArrayList groups; private ArrayList presets; - public Config(String name) { - // Do things - parse(name); + // DELETE ME + public Config() { + this.name = "DEBUG ONLY"; + this.configuration = new Configuration(new Date(), new Date(), 0, 32); + groups = new ArrayList<>(); + presets = new ArrayList<>(); + + ArrayList actions = new ArrayList<>(); + ArrayList variables = new ArrayList<>(); + variables.add(new Variable("VarName", "Dx90.45")); + variables.add(new Variable("VarName2", "FxFx90.45")); + variables.add(new Variable("VarName3", "Dx90.45")); + variables.add(new Variable("distance", "Ix90")); + variables.add(new Variable("variable", "Dx90.45")); + variables.add(new Variable("tea_time", "SxThe Tea Party was quite enjoyable.")); + + actions.add(new Action("DriverOne", "This is a comment", true, variables)); + actions.add(new Action("DriverTwo", "", true, variables)); + actions.add(new Action("DriverAlt", "This is also is a comment", true, variables)); + actions.add(new Action("DriverOne", "This is a comment", true, variables)); + actions.add(new Action("DriverTwo", "", true, variables)); + actions.add(new Action("DriverAlt", "This is also is a comment", true, variables)); + actions.add(new Action("DriverOne", "This is a comment", true, variables)); + actions.add(new Action("DriverTwo", "", true, variables)); + actions.add(new Action("DriverAlt", "This is also is a comment", true, variables)); + actions.add(new Action("DriverOne", "This is a comment", true, variables)); + actions.add(new Action("DriverTwo", "", true, variables)); + actions.add(new Action("DriverAlt", "This is also is a comment", true, variables)); + + groups.add(new Group("TeleOp", actions)); + groups.add(new Group("BlueLeftA", actions)); + groups.add(new Group("TeleOp", actions)); + groups.add(new Group("BlueLeftA", actions)); + groups.add(new Group("TeleOp", actions)); + groups.add(new Group("BlueLeftA", actions)); + groups.add(new Group("TeleOp", actions)); + groups.add(new Group("BlueLeftA", actions)); + groups.add(new Group("TeleOp", actions)); + groups.add(new Group("BlueLeftA", actions)); + groups.add(new Group("TeleOp", actions)); + groups.add(new Group("BlueLeftA", actions)); + groups.add(new Group("TeleOp", actions)); + groups.add(new Group("BlueLeftA", actions)); + groups.add(new Group("TeleOp", actions)); + groups.add(new Group("BlueLeftA", actions)); + } + + + public Config(String name, String path) { + this.name = name; + parse(path); } public Config(Configuration configuration, ArrayList groups, ArrayList presets) { @@ -21,6 +73,8 @@ public class Config { this.presets = presets; } + public String getName() { return name; } + public Configuration getConfiguration() { return configuration; } @@ -33,9 +87,14 @@ public class Config { return groups; } - private void parse(String name) { + private void parse(String path) { Gson gson = new Gson(); - gson.fromJson("", Config.class); + String json = Backend.instance().readFromFile(path); + Config config = gson.fromJson(json, Config.class); + + this.configuration = config.configuration; + this.groups = config.groups; + this.presets = config.presets; } public class Configuration { @@ -88,6 +147,8 @@ public class Config { this.enabled = enabled; this.variables = variables; } + + public ArrayList getVariables() { return variables; } } public class Variable { diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/ActionsFragment.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/ActionsFragment.java new file mode 100644 index 0000000..cfe4109 --- /dev/null +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/ActionsFragment.java @@ -0,0 +1,98 @@ +package org.timecrafters.TimeCraftersConfigurationTool.ui.editor; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.CompoundButton; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.Switch; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.navigation.Navigation; + +import org.timecrafters.TimeCraftersConfigurationTool.R; +import org.timecrafters.TimeCraftersConfigurationTool.backend.Backend; +import org.timecrafters.TimeCraftersConfigurationTool.backend.Config; + +public class ActionsFragment extends Fragment { + private Config config; + private Config.Group group; + private LinearLayout container; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + final View root = inflater.inflate(R.layout.fragment_actions, container, false); + this.container = root.findViewById(R.id.container); + + this.config = Backend.instance().getConfig(); + this.group = config.getGroups().get(0); + if (config != null) { + ((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Group: " + group.name); + + populateActions(); + } + return root; + } + + private void populateActions() { + int i = 0; + for (final Config.Action action : group.getActions()) { + View view = View.inflate(getContext(), R.layout.fragment_part_actions, null); + Switch name = view.findViewById(R.id.name); + ImageButton edit = view.findViewById(R.id.edit); + ImageButton rename = view.findViewById(R.id.rename); + ImageButton delete = view.findViewById(R.id.delete); + TextView comment = view.findViewById(R.id.comment); + + if (i % 2 == 0) { // even + view.setBackgroundColor(getResources().getColor(R.color.list_even)); + } else { + view.setBackgroundColor(getResources().getColor(R.color.list_odd)); + } + + name.setText(action.name); + name.setChecked(action.enabled); + styleSwitch(name, action.enabled); + name.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + action.enabled = isChecked; + + styleSwitch(buttonView, isChecked); + } + }); + + edit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Navigation.findNavController(v).navigate(R.id.variablesFragment); + } + }); + + if (action.comment.length() > 0) { + comment.setText(action.comment); + } else { + comment.setVisibility(View.GONE); + } + + i++; + container.addView(view); + } + } + + private void styleSwitch(CompoundButton buttonView, boolean isChecked) { + if (isChecked) { + buttonView.setBackground(getResources().getDrawable(R.drawable.button)); + } else { + buttonView.setBackground(getResources().getDrawable(R.drawable.dangerous_button)); + } + } +} diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/EditorFragment.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/EditorFragment.java index 6dcf113..63add74 100644 --- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/EditorFragment.java +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/EditorFragment.java @@ -1,35 +1,80 @@ package org.timecrafters.TimeCraftersConfigurationTool.ui.editor; import android.os.Bundle; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ImageButton; +import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; -import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders; +import androidx.navigation.Navigation; import org.timecrafters.TimeCraftersConfigurationTool.R; +import org.timecrafters.TimeCraftersConfigurationTool.backend.Backend; +import org.timecrafters.TimeCraftersConfigurationTool.backend.Config; +import org.timecrafters.TimeCraftersConfigurationTool.backend.Config.Group; public class EditorFragment extends Fragment { + final private String TAG = "EditorFragment"; + private EditorViewModel editorViewModel; + private Config config; + private TextView configName; + private LinearLayout container; public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { editorViewModel = ViewModelProviders.of(this).get(EditorViewModel.class); - View root = inflater.inflate(R.layout.fragment_editor, container, false); - final TextView textView = root.findViewById(R.id.text_editor); - editorViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { - @Override - public void onChanged(@Nullable String s) { - textView.setText(s); - } - }); + final View root = inflater.inflate(R.layout.fragment_editor, container, false); + this.configName = root.findViewById(R.id.configuration_name); + this.container = root.findViewById(R.id.container); + + this.config = Backend.instance().getConfig(); + if (config != null) { + configName.setVisibility(View.GONE); + ((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Config: " + config.getName()); + + populateGroups(); + } else { + Log.d(TAG, "config not set"); + } + return root; } + + private void populateGroups() { + int i = 0; + for (Group group : config.getGroups()) { + View view = View.inflate(getContext(), R.layout.fragment_part_groups, null); + Button name = view.findViewById(R.id.name); + ImageButton rename = view.findViewById(R.id.rename); + ImageButton delete = view.findViewById(R.id.delete); + + if (i % 2 == 0) { // even + view.setBackgroundColor(getResources().getColor(R.color.list_even)); + } else { + view.setBackgroundColor(getResources().getColor(R.color.list_odd)); + } + + name.setText(group.name); + name.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Navigation.findNavController(v).navigate(R.id.actionsFragment); + } + }); + + i++; + container.addView(view); + } + } } \ No newline at end of file diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/VariablesFragment.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/VariablesFragment.java new file mode 100644 index 0000000..d612144 --- /dev/null +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/editor/VariablesFragment.java @@ -0,0 +1,68 @@ +package org.timecrafters.TimeCraftersConfigurationTool.ui.editor; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.navigation.NavAction; +import androidx.navigation.Navigation; +import androidx.navigation.ui.NavigationUI; + +import org.timecrafters.TimeCraftersConfigurationTool.R; +import org.timecrafters.TimeCraftersConfigurationTool.backend.Backend; +import org.timecrafters.TimeCraftersConfigurationTool.backend.Config; + +public class VariablesFragment extends Fragment { + private Config config; + private LinearLayout container; + private Config.Group group; + private Config.Action action; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + final View root = inflater.inflate(R.layout.fragment_variables, container, false); + this.container = root.findViewById(R.id.container); + + this.config = Backend.instance().getConfig(); + this.group = config.getGroups().get(0); + this.action = group.getActions().get(0); + if (config != null) { + ((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Action: " + action.name); + + populateVariables(); + } + + return root; + } + + private void populateVariables() { + int i = 0; + for (Config.Variable variable : action.getVariables()) { + View view = View.inflate(getContext(), R.layout.fragment_part_variables, null); + TextView name = view.findViewById(R.id.name); + TextView value = view.findViewById(R.id.value); + ImageButton rename = view.findViewById(R.id.rename); + ImageButton delete = view.findViewById(R.id.delete); + + if (i % 2 == 0) { // even + view.setBackgroundColor(getResources().getColor(R.color.list_even)); + } else { + view.setBackgroundColor(getResources().getColor(R.color.list_odd)); + } + + name.setText(variable.name); + value.setText("" + variable.value()); + + i++; + container.addView(view); + } + } +} diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/SettingsFragment.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/SettingsFragment.java index 6a62cd5..04b3f62 100644 --- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/SettingsFragment.java +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/SettingsFragment.java @@ -6,17 +6,15 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders; +import androidx.navigation.Navigation; import org.timecrafters.TimeCraftersConfigurationTool.R; -import org.timecrafters.TimeCraftersConfigurationTool.ui.settings.configurations.ConfigurationsActivity; -import org.timecrafters.TimeCraftersConfigurationTool.ui.settings.presets.PresetsActivity; public class SettingsFragment extends Fragment { @@ -26,21 +24,21 @@ public class SettingsFragment extends Fragment { ViewGroup container, Bundle savedInstanceState) { settingsViewModel = ViewModelProviders.of(this).get(SettingsViewModel.class); - View root = inflater.inflate(R.layout.fragment_settings, container, false); + final View root = inflater.inflate(R.layout.fragment_settings, container, false); final Button managePresets = root.findViewById(R.id.manage_presets); final Button manageConfigurations = root.findViewById(R.id.manage_configurations); managePresets.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - startActivity(new Intent(getContext(), PresetsActivity.class)); + Navigation.findNavController(root).navigate(R.id.presetsFragment); } }); manageConfigurations.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - startActivity(new Intent(getContext(), ConfigurationsActivity.class)); + Navigation.findNavController(root).navigate(R.id.configurationsFragment); } }); diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/configurations/ConfigurationsActivity.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/configurations/ConfigurationsActivity.java deleted file mode 100644 index 953729e..0000000 --- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/configurations/ConfigurationsActivity.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.timecrafters.TimeCraftersConfigurationTool.ui.settings.configurations; - -import android.os.Bundle; -import android.view.View; -import android.widget.LinearLayout; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import org.timecrafters.TimeCraftersConfigurationTool.R; - -public class ConfigurationsActivity extends AppCompatActivity { - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - setContentView(R.layout.activity_manage_configurations); - LinearLayout v = findViewById(R.id.configurations); - v.setBackgroundColor(getResources().getColor(R.color.list_even)); - - View vv = v.inflate(getApplicationContext(), R.layout.fragment_configuration, null); - v.addView(vv); - } -} diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/configurations/ConfigurationsFragment.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/configurations/ConfigurationsFragment.java new file mode 100644 index 0000000..c4aa1c6 --- /dev/null +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/configurations/ConfigurationsFragment.java @@ -0,0 +1,30 @@ +package org.timecrafters.TimeCraftersConfigurationTool.ui.settings.configurations; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; + +import org.timecrafters.TimeCraftersConfigurationTool.R; + +public class ConfigurationsFragment extends Fragment { + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + final View root = inflater.inflate(R.layout.activity_manage_configurations, container, false); + + + LinearLayout v = root.findViewById(R.id.configurations); + v.setBackgroundColor(getResources().getColor(R.color.list_even)); + + View vv = v.inflate(getContext(), R.layout.fragment_configuration, null); + v.addView(vv); + + return root; + } +} diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/presets/PresetsActivity.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/presets/PresetsActivity.java deleted file mode 100644 index 27ac045..0000000 --- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/presets/PresetsActivity.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.timecrafters.TimeCraftersConfigurationTool.ui.settings.presets; - -import androidx.appcompat.app.AppCompatActivity; - -public class PresetsActivity extends AppCompatActivity { -} diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/presets/PresetsFragment.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/presets/PresetsFragment.java new file mode 100644 index 0000000..96a51b1 --- /dev/null +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/settings/presets/PresetsFragment.java @@ -0,0 +1,6 @@ +package org.timecrafters.TimeCraftersConfigurationTool.ui.settings.presets; + +import androidx.fragment.app.Fragment; + +public class PresetsFragment extends Fragment { +} diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/tacnet/TACNETFragment.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/tacnet/TACNETFragment.java index 8bf12ea..c2af837 100644 --- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/tacnet/TACNETFragment.java +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/ui/tacnet/TACNETFragment.java @@ -71,6 +71,7 @@ public class TACNETFragment extends Fragment { public void onClick(View v) { VariableDialog dialog = new VariableDialog(); dialog.show(getFragmentManager(), null); + Backend.instance().saveSettings(); } }); diff --git a/app/src/main/res/layout/fragment_actions.xml b/app/src/main/res/layout/fragment_actions.xml new file mode 100644 index 0000000..6d63fc7 --- /dev/null +++ b/app/src/main/res/layout/fragment_actions.xml @@ -0,0 +1,20 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_configuration.xml b/app/src/main/res/layout/fragment_configuration.xml index e3036ad..769ac8f 100644 --- a/app/src/main/res/layout/fragment_configuration.xml +++ b/app/src/main/res/layout/fragment_configuration.xml @@ -2,37 +2,20 @@ + android:layout_height="wrap_content" + android:orientation="vertical"> -