Connected config management to TACNET so that selecting, adding, renaming, and deleting configs will now be synced, fixed crash when handling select config packet when now config is currently loaded.

This commit is contained in:
2020-11-10 19:01:00 -06:00
parent 4ecb3f7d70
commit 1e1b6c36df
4 changed files with 35 additions and 6 deletions

View File

@@ -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();

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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);