From 737e8628c254f46e38350f6649d28501861d9833 Mon Sep 17 00:00:00 2001 From: Emmanuel Alfaro Date: Fri, 17 Nov 2017 14:08:13 -0600 Subject: [PATCH 01/56] Activities ButtonsPresets, AvailableLayouts and ServerSettings added --- app/src/main/AndroidManifest.xml | 18 +++ .../osmtracker/activity/AvailableLayouts.java | 18 +++ .../osmtracker/activity/ButtonsPresets.java | 103 ++++++++++++++++++ .../osmtracker/activity/ServerSettings.java | 18 +++ app/src/main/res/xml/available_layouts.xml | 19 ++++ app/src/main/res/xml/buttons_presets.xml | 19 ++++ app/src/main/res/xml/preferences.xml | 3 + app/src/main/res/xml/server_settings.xml | 19 ++++ 8 files changed, 217 insertions(+) create mode 100644 app/src/main/java/me/guillaumin/android/osmtracker/activity/AvailableLayouts.java create mode 100644 app/src/main/java/me/guillaumin/android/osmtracker/activity/ButtonsPresets.java create mode 100644 app/src/main/java/me/guillaumin/android/osmtracker/activity/ServerSettings.java create mode 100644 app/src/main/res/xml/available_layouts.xml create mode 100644 app/src/main/res/xml/buttons_presets.xml create mode 100644 app/src/main/res/xml/server_settings.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d4fa6380..8acfc9216 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -31,6 +31,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/me/guillaumin/android/osmtracker/activity/AvailableLayouts.java b/app/src/main/java/me/guillaumin/android/osmtracker/activity/AvailableLayouts.java new file mode 100644 index 000000000..a0001e39b --- /dev/null +++ b/app/src/main/java/me/guillaumin/android/osmtracker/activity/AvailableLayouts.java @@ -0,0 +1,18 @@ +package me.guillaumin.android.osmtracker.activity; + +import android.os.Bundle; +import android.preference.PreferenceActivity; + +import me.guillaumin.android.osmtracker.R; + +/** + * Created by emmanuel on 10/11/17. + */ + +public class AvailableLayouts extends PreferenceActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.available_layouts); + } +} diff --git a/app/src/main/java/me/guillaumin/android/osmtracker/activity/ButtonsPresets.java b/app/src/main/java/me/guillaumin/android/osmtracker/activity/ButtonsPresets.java new file mode 100644 index 000000000..af2b6df24 --- /dev/null +++ b/app/src/main/java/me/guillaumin/android/osmtracker/activity/ButtonsPresets.java @@ -0,0 +1,103 @@ +package me.guillaumin.android.osmtracker.activity; + +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.os.Environment; +import android.preference.CheckBoxPreference; +import android.preference.Preference; +import android.preference.PreferenceActivity; +import android.preference.PreferenceCategory; +import android.preference.PreferenceManager; +import android.util.Log; +import android.widget.CheckBox; +import android.widget.Toast; + +import java.io.File; +import java.io.FilenameFilter; +import java.util.ArrayList; + +import me.guillaumin.android.osmtracker.OSMTracker; +import me.guillaumin.android.osmtracker.R; + +/** + * Created by emmanuel on 20/10/17. + */ + +public class ButtonsPresets extends PreferenceActivity { + + CheckBoxChangedListener listener = new CheckBoxChangedListener(); + String DEFAULT_CHECKBOX_KEY = "default"; + public ArrayList checkBoxNames = new ArrayList(); + SharedPreferences prefs; + + @Override + public void onCreate(Bundle savedInstanceState){ + super.onCreate(savedInstanceState); + Log.e(">","bien"); + addPreferencesFromResource(R.xml.buttons_presets); + prefs = PreferenceManager.getDefaultSharedPreferences(this); + String storageDir = "/osmtracker"; + File layoutsDir = new File(Environment.getExternalStorageDirectory(), storageDir + File.separator + Preferences.LAYOUTS_SUBDIR + File.separator); + if (layoutsDir.exists() && layoutsDir.canRead()) { + String[] layoutFiles = layoutsDir.list(new FilenameFilter() { + @Override + public boolean accept(File dir, String filename) { + return filename.endsWith(".xml");//Preferences.LAYOUT_FILE_EXTENSION); + } + }); + PreferenceCategory seccion = (PreferenceCategory)findPreference("lista"); + for(String name : layoutFiles){ + checkBoxNames.add(name); + } + for(String name : checkBoxNames){ + CheckBoxPreference c = new CheckBoxPreference(this); + c.setTitle(name.substring(0,name.indexOf("."))); + c.setKey(name); + c.setOnPreferenceChangeListener(listener); + c.setChecked(false); + seccion.addPreference(c); + } + checkBoxNames.add(DEFAULT_CHECKBOX_KEY); + ((CheckBoxPreference)findPreference(DEFAULT_CHECKBOX_KEY)).setOnPreferenceChangeListener(listener); + + } + } + + //Class that manages the changes on the selected layout + private class CheckBoxChangedListener implements Preference.OnPreferenceChangeListener { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + if(preference.getKey().equals(DEFAULT_CHECKBOX_KEY)){ +// notify("cancelado"); + changeNotDefaultCheckBoxesState( ! (Boolean)newValue ); + } + else{ + for(String name : checkBoxNames){ + CheckBoxPreference currentCheckBox = (CheckBoxPreference) findPreference(name); + currentCheckBox.setChecked( currentCheckBox.getKey().equals(preference.getKey()) ); + } + } +// prefs.edit().putString(OSMTracker.Preferences.KEY_UI_BUTTONS_LAYOUT,""+preference.getTitle()); +// OSMTracker.Preferences.KEY_UI_BUTTONS_LAYOUT; + return true; + } + + //For disabling the downloaded layouts when the default one is selected + private void changeNotDefaultCheckBoxesState(boolean newState){ + for(String name : checkBoxNames) { + if(! name.equals(DEFAULT_CHECKBOX_KEY)) { + CheckBoxPreference currentCheckBox = (CheckBoxPreference) findPreference(name); + currentCheckBox.setEnabled(newState); + currentCheckBox.setChecked(false); + } + } + } + + //Utility function for showing messages through a Toast + void notify(String message){ + Toast toast = Toast.makeText(getApplicationContext(), message , Toast.LENGTH_SHORT); + toast.show(); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/me/guillaumin/android/osmtracker/activity/ServerSettings.java b/app/src/main/java/me/guillaumin/android/osmtracker/activity/ServerSettings.java new file mode 100644 index 000000000..a780ae117 --- /dev/null +++ b/app/src/main/java/me/guillaumin/android/osmtracker/activity/ServerSettings.java @@ -0,0 +1,18 @@ +package me.guillaumin.android.osmtracker.activity; + +import android.os.Bundle; +import android.preference.PreferenceActivity; + +import me.guillaumin.android.osmtracker.R; + +/** + * Created by emmanuel on 10/11/17. + */ + +public class ServerSettings extends PreferenceActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.server_settings); + } +} diff --git a/app/src/main/res/xml/available_layouts.xml b/app/src/main/res/xml/available_layouts.xml new file mode 100644 index 000000000..f2de592af --- /dev/null +++ b/app/src/main/res/xml/available_layouts.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/buttons_presets.xml b/app/src/main/res/xml/buttons_presets.xml new file mode 100644 index 000000000..473181968 --- /dev/null +++ b/app/src/main/res/xml/buttons_presets.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 6d3e2a608..f2c4276df 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -49,6 +49,9 @@ + + + + + + + + + + + + \ No newline at end of file From 5b30e263cd45dcb4a1948c06a2a629122dfa23f8 Mon Sep 17 00:00:00 2001 From: Emmanuel Alfaro Date: Fri, 17 Nov 2017 14:25:31 -0600 Subject: [PATCH 02/56] layout synchronization done --- .../android/osmtracker/activity/ButtonsPresets.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/me/guillaumin/android/osmtracker/activity/ButtonsPresets.java b/app/src/main/java/me/guillaumin/android/osmtracker/activity/ButtonsPresets.java index af2b6df24..f17df8186 100644 --- a/app/src/main/java/me/guillaumin/android/osmtracker/activity/ButtonsPresets.java +++ b/app/src/main/java/me/guillaumin/android/osmtracker/activity/ButtonsPresets.java @@ -78,8 +78,8 @@ public boolean onPreferenceChange(Preference preference, Object newValue) { currentCheckBox.setChecked( currentCheckBox.getKey().equals(preference.getKey()) ); } } -// prefs.edit().putString(OSMTracker.Preferences.KEY_UI_BUTTONS_LAYOUT,""+preference.getTitle()); -// OSMTracker.Preferences.KEY_UI_BUTTONS_LAYOUT; + prefs.edit().putString(OSMTracker.Preferences.KEY_UI_BUTTONS_LAYOUT, + ""+preference.getKey()).commit(); return true; } From a3e645e4728aad439e91ac46e1a0492fc05779f5 Mon Sep 17 00:00:00 2001 From: EmmanuelAlfaro Date: Fri, 24 Nov 2017 11:47:43 -0600 Subject: [PATCH 03/56] migrated to activities --- app/src/main/AndroidManifest.xml | 8 -- .../osmtracker/activity/AvailableLayouts.java | 50 ++++++- .../osmtracker/activity/ButtonsPresets.java | 125 ++++++++++-------- .../osmtracker/activity/ServerSettings.java | 58 +++++++- app/src/main/res/layout/available_layouts.xml | 13 ++ app/src/main/res/layout/buttons_presets.xml | 15 +++ app/src/main/res/layout/server_settings.xml | 34 +++++ app/src/main/res/menu/layout_options.xml | 7 + app/src/main/res/xml/available_layouts.xml | 19 --- app/src/main/res/xml/buttons_presets.xml | 19 --- app/src/main/res/xml/server_settings.xml | 19 --- 11 files changed, 243 insertions(+), 124 deletions(-) create mode 100644 app/src/main/res/layout/available_layouts.xml create mode 100644 app/src/main/res/layout/buttons_presets.xml create mode 100644 app/src/main/res/layout/server_settings.xml create mode 100644 app/src/main/res/menu/layout_options.xml delete mode 100644 app/src/main/res/xml/available_layouts.xml delete mode 100644 app/src/main/res/xml/buttons_presets.xml delete mode 100644 app/src/main/res/xml/server_settings.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8acfc9216..c76a5f0ab 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,16 +38,8 @@ - - - - - - - - diff --git a/app/src/main/java/me/guillaumin/android/osmtracker/activity/AvailableLayouts.java b/app/src/main/java/me/guillaumin/android/osmtracker/activity/AvailableLayouts.java index a0001e39b..42066dc2f 100644 --- a/app/src/main/java/me/guillaumin/android/osmtracker/activity/AvailableLayouts.java +++ b/app/src/main/java/me/guillaumin/android/osmtracker/activity/AvailableLayouts.java @@ -1,7 +1,16 @@ package me.guillaumin.android.osmtracker.activity; +import android.app.ActionBar; +import android.app.Activity; +import android.content.Intent; import android.os.Bundle; import android.preference.PreferenceActivity; +import android.util.Log; +import android.view.ContextMenu; +import android.view.MenuItem; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; import me.guillaumin.android.osmtracker.R; @@ -9,10 +18,47 @@ * Created by emmanuel on 10/11/17. */ -public class AvailableLayouts extends PreferenceActivity { +public class AvailableLayouts extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.available_layouts); + setTitle("Available Layouts"); + setContentView(R.layout.available_layouts); + LinearLayout ly = (LinearLayout)findViewById(R.id.root_layout); + String[] options = {"Hydrants","Public Transport","Accesibility"}; + int AT_START = 0; //the position to insert the view at + for(String option : options){ + TextView c = new TextView(this); + c.setHeight(200); + c.setText(option +"(hold me)"); + c.setTextSize((float)30); + registerForContextMenu(c); + c.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View view) { + String name = ""+((TextView)view).getText(); + Log.e("#","Layout "+name+" held"); + return false; + } + }); + ly.addView(c,AT_START); + } + } + + @Override + public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { + super.onCreateContextMenu(menu, v, menuInfo); + getMenuInflater().inflate(R.menu.layout_options, menu); + } + + @Override + public boolean onContextItemSelected(MenuItem item) { + Log.e("#","Option <"+item.getTitle()+"> pressed"); + return super.onContextItemSelected(item); + + } + + public void launch_server_settings(View v){ + startActivity(new Intent(this, ServerSettings.class)); } } diff --git a/app/src/main/java/me/guillaumin/android/osmtracker/activity/ButtonsPresets.java b/app/src/main/java/me/guillaumin/android/osmtracker/activity/ButtonsPresets.java index f17df8186..ca971a0b8 100644 --- a/app/src/main/java/me/guillaumin/android/osmtracker/activity/ButtonsPresets.java +++ b/app/src/main/java/me/guillaumin/android/osmtracker/activity/ButtonsPresets.java @@ -1,5 +1,6 @@ package me.guillaumin.android.osmtracker.activity; +import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; @@ -10,7 +11,9 @@ import android.preference.PreferenceCategory; import android.preference.PreferenceManager; import android.util.Log; +import android.view.View; import android.widget.CheckBox; +import android.widget.LinearLayout; import android.widget.Toast; import java.io.File; @@ -24,80 +27,92 @@ * Created by emmanuel on 20/10/17. */ -public class ButtonsPresets extends PreferenceActivity { +public class ButtonsPresets extends Activity { - CheckBoxChangedListener listener = new CheckBoxChangedListener(); - String DEFAULT_CHECKBOX_KEY = "default"; - public ArrayList checkBoxNames = new ArrayList(); + CheckBoxChangedListener listener; + String DEFAULT_CHECKBOX_NAME; + public CheckBox selected; SharedPreferences prefs; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); - Log.e(">","bien"); - addPreferencesFromResource(R.xml.buttons_presets); + initializeAttributes(); + LinearLayout rootLayout = (LinearLayout)findViewById(R.id.buttons_presets); + listLayouts(rootLayout); + checkCurrentLayout(rootLayout); + + } + private void checkCurrentLayout(LinearLayout rootLayout){ + String activeLayoutName = prefs.getString(OSMTracker.Preferences.KEY_UI_BUTTONS_LAYOUT, OSMTracker.Preferences.VAL_UI_BUTTONS_LAYOUT); + for(int i=0 ; i1 + ; } } diff --git a/app/src/main/res/layout/available_layouts.xml b/app/src/main/res/layout/available_layouts.xml new file mode 100644 index 000000000..a09bfa1ff --- /dev/null +++ b/app/src/main/res/layout/available_layouts.xml @@ -0,0 +1,13 @@ + + + +