Add Fav edits

This commit is contained in:
Victor Shcherb 2014-06-20 18:37:06 +02:00
parent 60f3dae306
commit 99f6c9fab3
4 changed files with 176 additions and 125 deletions

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res/net.osmand.plus"
android:layout_width="fill_parent" android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center_horizontal">
<net.osmand.view.ExpandableLinearLayout custom:maxVisibleWidth="800dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" >
<TextView android:id="@+id/TextView" android:textSize="16sp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_marginTop="4dp" android:layout_marginBottom="4dp" android:text="@string/navigate_point_top_text"></TextView>
<TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="1">
<TableRow android:layout_width="fill_parent" >
<TextView android:textSize="20sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:text="@string/navigate_point_latitude"></TextView>
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/LatitudeEdit" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:inputType="phone"></EditText>
</TableRow>
<TableRow android:layout_width="fill_parent" >
<TextView android:textSize="20sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:text="@string/navigate_point_longitude"></TextView>
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/LongitudeEdit" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:inputType="phone"></EditText>
</TableRow>
<TableRow android:layout_width="fill_parent" >
<TextView android:textSize="20sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:text="@string/navigate_point_format"></TextView>
<Spinner android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/Format" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" ></Spinner>
</TableRow>
<TextView android:id="@+id/ValidateTextView" android:textSize="16sp" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:gravity="center" android:textColor="@color/color_invalid"></TextView>
</TableLayout>
</net.osmand.view.ExpandableLinearLayout>
</LinearLayout>
</ScrollView>

View file

@ -1,5 +1,7 @@
package net.osmand.plus.activities;
import gnu.trove.list.array.TIntArrayList;
import java.io.File;
import java.text.MessageFormat;
import java.util.ArrayList;
@ -24,6 +26,7 @@ import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.TargetPointsHelper;
import net.osmand.plus.base.FavoriteImageDrawable;
import net.osmand.plus.helpers.ColorDialogs;
import net.osmand.util.MapUtils;
import android.app.Activity;
import android.app.AlertDialog;
@ -39,6 +42,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.CheckBox;
@ -47,8 +51,10 @@ import android.widget.ExpandableListView;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.ActionMode.Callback;
@ -79,7 +85,6 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
private ActionMode actionMode;
private SearchView searchView;
protected boolean hideActionBar;
private int defColor;
@Override
public void onAttach(Activity activity) {
@ -87,7 +92,6 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
helper = getMyApplication().getFavorites();
favouritesAdapter = new FavouritesAdapter();
defColor = getResources().getColor(R.color.color_favorite);
favouritesAdapter.synchronizeGroups();
setAdapter(favouritesAdapter);
}
@ -451,8 +455,26 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
}
protected void openChangeGroupDialog() {
// TODO Auto-generated method stub
protected void openChangeGroupDialog(FavoriteGroup group) {
Builder bld = new AlertDialog.Builder(getActivity());
View favEdit = getActivity().getLayoutInflater().inflate(R.layout.fav_group_edit, null);
final Spinner colorSpinner = (Spinner) favEdit.findViewById(R.id.ColorSpinner);
final TIntArrayList list = new TIntArrayList();
ColorDialogs.setupColorSpinner(getActivity(), group.color, colorSpinner, list);
CheckBox checkBox = (CheckBox) favEdit.findViewById(R.id.Visibility);
checkBox.setChecked(group.visible);
bld.setView(favEdit);
bld.setNegativeButton(R.string.default_buttons_cancel, null);
bld.setPositiveButton(R.string.default_buttons_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
list.get(colorSpinner.getSelectedItemPosition());
}
});
bld.show();
}
@ -475,41 +497,6 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
}
}
private void importFile() {
final File tosave = getMyApplication().getAppPath(FavouritesDbHelper.FILE_TO_SAVE);
if (!tosave.exists()) {
AccessibleToast.makeText(getActivity(),
MessageFormat.format(getString(R.string.fav_file_to_load_not_found), tosave.getAbsolutePath()),
Toast.LENGTH_LONG).show();
} else {
new AsyncTask<Void, FavouritePoint, String>() {
@Override
protected String doInBackground(Void... params) {
// helper.loadGPXFile(getMyApplication(), tosave, this);
return null ;
}
@Override
protected void onPreExecute() {
showProgressBar();
};
@Override
protected void onPostExecute(String warning) {
hideProgressBar();
if (warning == null) {
AccessibleToast.makeText(getActivity(), R.string.fav_imported_sucessfully, Toast.LENGTH_SHORT)
.show();
} else {
AccessibleToast.makeText(getActivity(), warning, Toast.LENGTH_LONG).show();
}
favouritesAdapter.synchronizeGroups();
};
}.execute();
}
}
private void shareFavourites() {
if (favouritesAdapter.isEmpty()) {
@ -542,7 +529,7 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
}
}
private void export() {
protected void export() {
final File tosave = getMyApplication().getAppPath(FavouritesDbHelper.FILE_TO_SAVE);
if (favouritesAdapter.isEmpty()) {
AccessibleToast.makeText(getActivity(), R.string.no_fav_to_save, Toast.LENGTH_LONG).show();
@ -726,7 +713,7 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
ch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openChangeGroupDialog();
openChangeGroupDialog(model);
}
});

View file

@ -0,0 +1,104 @@
package net.osmand.plus.helpers;
import gnu.trove.list.array.TIntArrayList;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import net.osmand.plus.R;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
public class ColorDialogs {
public static int[] paletteColors = new int[] {
R.string.color_red,
R.string.color_pink,
R.string.color_orange,
R.string.color_brown,
R.string.color_yellow,
R.string.color_lightblue,
R.string.color_blue,
R.string.color_green
};
public static int[] pallette = new int[] {
0xffd00d0d,
0xffe044bb,
0xffff5020,
0xff8e2512,
0xffeeee10,
0xff10c0f0,
0xff1010a0,
0xff88e030
};
public static void setupColorSpinner(Context ctx, int selectedColor, final Spinner colorSpinner,
final TIntArrayList colors) {
OnItemSelectedListener listener = new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
View v = parent.getChildAt(0);
if(v instanceof TextView) {
((TextView) v).setTextColor(colors.get(position));
}
colorSpinner.invalidate();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
};
colors.add(pallette);
List<String> colorNames= new ArrayList<String>();
int selection = -1;
for(int i = 0; i < pallette.length; i++) {
colorNames.add(ctx.getString(paletteColors[i]));
colors.add(pallette[i]);
if(selectedColor == pallette[i]) {
selection = i;
}
}
if(selection == -1) {
colors.insert(0, selectedColor);
colorNames.add(0, colorToString(selectedColor));
selection = 0;
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ctx, android.R.layout.simple_spinner_item, colorNames) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
if(v instanceof TextView) {
((TextView) v).setTextColor(colors.get(position));
}
return v;
}
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
colorSpinner.setAdapter(adapter);
colorSpinner.setOnItemSelectedListener(listener);
colorSpinner.setSelection(selection);
}
public static int getRandomColor() {
return pallette[new Random().nextInt(pallette.length)];
}
public static String colorToString(int color) {
if ((0xFF000000 & color) == 0xFF000000) {
return "#" + Integer.toHexString(color & 0x00FFFFFF); //$NON-NLS-1$
} else {
return "#" + Integer.toHexString(color); //$NON-NLS-1$
}
}
}

View file

@ -32,6 +32,7 @@ import net.osmand.plus.activities.OsmandBaseExpandableListAdapter;
import net.osmand.plus.activities.OsmandExpandableListActivity;
import net.osmand.plus.activities.actions.ShareDialog;
import net.osmand.plus.base.MapViewTrackingUtilities;
import net.osmand.plus.helpers.ColorDialogs;
import net.osmand.plus.osmo.OsMoGroups.OsMoGroupsUIListener;
import net.osmand.plus.osmo.OsMoGroupsStorage.OsMoDevice;
import net.osmand.plus.osmo.OsMoGroupsStorage.OsMoGroup;
@ -123,27 +124,6 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
private String operation;
private Paint white;
private int[] paletteColors = new int[] {
R.string.color_red,
R.string.color_pink,
R.string.color_orange,
R.string.color_brown,
R.string.color_yellow,
R.string.color_lightblue,
R.string.color_blue,
R.string.color_green
};
private int[] pallette = new int[] {
0xffd00d0d,
0xffe044bb,
0xffff5020,
0xff8e2512,
0xffeeee10,
0xff10c0f0,
0xff1010a0,
0xff88e030
};
@Override
public void onCreate(Bundle icicle) {
@ -697,7 +677,8 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
final String id = tracker.getText().toString();
final String nick = nickname.getText().toString();
if(device.isChecked()) {
OsMoDevice dev = osMoPlugin.getGroups().addConnectedDevice(id, nameUser, getRandomColor());
OsMoDevice dev = osMoPlugin.getGroups().addConnectedDevice(id, nameUser,
ColorDialogs.getRandomColor());
adapter.update(dev.group);
adapter.notifyDataSetChanged();
} else {
@ -972,7 +953,7 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
int color = getResources().getColor(R.color.color_unknown);
int activeColor = model.getColor();
if (activeColor == 0) {
activeColor = getRandomColor();
activeColor = ColorDialogs.getRandomColor();
osMoPlugin.getGroups().setGenColor(model, activeColor);
}
//Location location = tracker.getLastLocation(model.trackerId);
@ -1053,9 +1034,7 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
}
}
private int getRandomColor() {
return pallette[new Random().nextInt(pallette.length)];
}
@Override
public void updateCompassValue(float value) {
@ -1087,13 +1066,6 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
refreshList();
}
public static String colorToString(int color) {
if ((0xFF000000 & color) == 0xFF000000) {
return "#" + Integer.toHexString(color & 0x00FFFFFF); //$NON-NLS-1$
} else {
return "#" + Integer.toHexString(color); //$NON-NLS-1$
}
}
private void showSettingsDialog(final OsMoDevice device) {
Builder bld = new AlertDialog.Builder(OsMoGroupsActivity.this);
@ -1101,61 +1073,18 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
final LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.osmo_edit_device, null);
final EditText name = (EditText) view.findViewById(R.id.Name);
final Spinner colorSpinner = (Spinner) view.findViewById(R.id.ColorSpinner);
bld.setView(view);
name.setText(device.getVisibleName());
final TIntArrayList list = new TIntArrayList(pallette);
List<String> colorNames= new ArrayList<String>();
int selection = -1;
if(device.getColor() == 0) {
osMoPlugin.getGroups().setDeviceProperties(device, device.getVisibleName(), getRandomColor());
osMoPlugin.getGroups().setDeviceProperties(device, device.getVisibleName(),
ColorDialogs.getRandomColor());
}
int devColor = device.getColor();
bld.setView(view);
name.setText(device.getVisibleName());
final Spinner colorSpinner = (Spinner) view.findViewById(R.id.ColorSpinner);
final TIntArrayList list = new TIntArrayList();
ColorDialogs.setupColorSpinner(this, devColor, colorSpinner, list);
for(int i = 0; i < pallette.length; i++) {
colorNames.add(getString(paletteColors[i]));
list.add(pallette[i]);
if(devColor == pallette[i]) {
selection = i;
}
}
if(selection == -1) {
list.insert(0, devColor);
colorNames.add(0, colorToString(devColor));
selection = 0;
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, colorNames) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
if(v instanceof TextView) {
((TextView) v).setTextColor(list.get(position));
}
return v;
}
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
colorSpinner.setAdapter(adapter);
colorSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
View v = parent.getChildAt(0);
if(v instanceof TextView) {
((TextView) v).setTextColor(list.get(position));
}
colorSpinner.invalidate();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
colorSpinner.setSelection(selection);
bld.setPositiveButton(R.string .default_buttons_yes, new DialogInterface.OnClickListener() {
@Override
@ -1168,6 +1097,8 @@ public class OsMoGroupsActivity extends OsmandExpandableListActivity implements
bld.show();
}
class NonDirectionDrawable extends Drawable {
Paint paintRouteDirection;