diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/dialogs/ConfigurationDialog.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/dialogs/ConfigurationDialog.java index 54adebc..c43a494 100644 --- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/dialogs/ConfigurationDialog.java +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/dialogs/ConfigurationDialog.java @@ -11,9 +11,12 @@ import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; +import com.google.gson.Gson; + import org.timecrafters.TimeCraftersConfigurationTool.R; import org.timecrafters.TimeCraftersConfigurationTool.backend.Backend; import org.timecrafters.TimeCraftersConfigurationTool.library.TimeCraftersDialog; +import org.timecrafters.TimeCraftersConfigurationTool.tacnet.PacketHandler; import org.timecrafters.TimeCraftersConfigurationTool.ui.settings.configurations.ConfigurationsFragment; public class ConfigurationDialog extends TimeCraftersDialog { @@ -82,15 +85,29 @@ public class ConfigurationDialog extends TimeCraftersDialog { if (configName != null) { Backend.instance().moveConfig(configName, newConfigName); + if (Backend.instance().tacnet().isConnected()) { + Backend.instance().tacnet().puts(PacketHandler.packetUpdateConfig(configName, newConfigName).toString() ); + } + // If config being renamed is the active config then update Backend to use // the correct config name/file, and save settings. if (Backend.instance().getSettings().config.equals(configName)) { Backend.instance().loadConfig(newConfigName); Backend.instance().getSettings().config = newConfigName; Backend.instance().saveSettings(); + + if (Backend.instance().tacnet().isConnected()) { + Backend.instance().tacnet().puts(PacketHandler.packetSelectConfig(newConfigName).toString() ); + } } } else { Backend.instance().writeNewConfig(newConfigName); + + if (Backend.instance().tacnet().isConnected()) { + final String json = Backend.instance().gsonForConfig().toJson(Backend.instance().loadConfigWithoutMutatingBackend(newConfigName)); + + Backend.instance().tacnet().puts( PacketHandler.packetUploadConfig(newConfigName, json).toString() ); + } } ConfigurationsFragment fragment = (ConfigurationsFragment) getFragmentManager().getPrimaryNavigationFragment(); diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/tacnet/PacketHandler.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/tacnet/PacketHandler.java index 285b2ed..6caf1b2 100755 --- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/tacnet/PacketHandler.java +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/tacnet/PacketHandler.java @@ -117,7 +117,7 @@ public class PacketHandler { Backend.instance().writeToFile(path, json); - if (Backend.instance().getConfig().getName().equals(configName)) { + if (Backend.instance().getConfig() != null && Backend.instance().getConfig().getName().equals(configName)) { Backend.instance().loadConfig(configName); } } diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/tacnet/TACNETServerService.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/tacnet/TACNETServerService.java index 13ac49e..8f7aa2e 100644 --- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/tacnet/TACNETServerService.java +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/tacnet/TACNETServerService.java @@ -35,6 +35,13 @@ public class TACNETServerService extends Service { public TACNETServerService() { } + @Override + public void onCreate() { + if (Backend.instance() == null) { + new Backend(); + } + } + @Override public IBinder onBind(Intent intent) { return null; 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 index e932344..c63672c 100644 --- 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 @@ -21,6 +21,7 @@ import org.timecrafters.TimeCraftersConfigurationTool.dialogs.ConfirmationDialog import org.timecrafters.TimeCraftersConfigurationTool.library.TimeCraftersDialog; import org.timecrafters.TimeCraftersConfigurationTool.library.TimeCraftersDialogRunnable; import org.timecrafters.TimeCraftersConfigurationTool.library.TimeCraftersFragment; +import org.timecrafters.TimeCraftersConfigurationTool.tacnet.PacketHandler; public class ConfigurationsFragment extends TimeCraftersFragment { final private String deleteActionKey = "delete_configuration"; @@ -71,16 +72,16 @@ public class ConfigurationsFragment extends TimeCraftersFragment { configName.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if (Backend.instance().getSettings().config.equals(configFile)) { - return; - } - Backend.instance().getSettings().config = configFile; Backend.instance().loadConfig(configFile); Backend.instance().saveSettings(); View snackbarHost = getActivity().findViewById(R.id.snackbar_host); Snackbar.make(snackbarHost, "Loaded config: " + configFile, Snackbar.LENGTH_LONG).show(); + + if (Backend.instance().tacnet().isConnected()) { + Backend.instance().tacnet().puts(PacketHandler.packetSelectConfig(configFile).toString() ); + } } }); @@ -121,8 +122,12 @@ public class ConfigurationsFragment extends TimeCraftersFragment { if (fragment != null) { fragment.populateConfigFiles(); } + + if (Backend.instance().tacnet().isConnected()) { + Backend.instance().tacnet().puts(PacketHandler.packetDeleteConfig(configFile).toString() ); + } } - } ; + }; Backend.getStorage().put(deleteActionKey, action); dialog.setArguments(bundle);