add edit filter activity draft
git-svn-id: https://osmand.googlecode.com/svn/trunk@191 e29c36b1-1cfa-d876-8d93-3434fc2bb7b8
This commit is contained in:
parent
643d3230e9
commit
864efadc42
7 changed files with 171 additions and 0 deletions
|
@ -25,6 +25,7 @@
|
|||
<activity android:name=".activities.search.SearchStreet2ByNameActivity"></activity>
|
||||
<activity android:name=".activities.search.SearchBuildingByNameActivity"></activity>
|
||||
|
||||
<activity android:name=".activities.EditPOIFilterActivity"></activity>
|
||||
</application>
|
||||
|
||||
|
||||
|
|
12
OsmAnd/res/layout/editing_poi_filter.xml
Normal file
12
OsmAnd/res/layout/editing_poi_filter.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical" android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content">
|
||||
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_weight="1" android:text="@string/filter_current_poiButton" android:id="@+id/filter_currentButton"></Button>
|
||||
<TextView android:layout_width="wrap_content" android:text="" android:id="@+id/SearchAreaText" android:layout_height="wrap_content"/>
|
||||
|
||||
</LinearLayout>
|
||||
<ListView android:id="@android:id/list" android:layout_width="fill_parent" android:choiceMode="multipleChoice"
|
||||
android:layout_height="fill_parent"></ListView>
|
||||
</LinearLayout>
|
15
OsmAnd/res/layout/editing_poi_filter_list.xml
Normal file
15
OsmAnd/res/layout/editing_poi_filter_list.xml
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent" android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
|
||||
<CheckBox android:id="@+id/filter_poi_check"
|
||||
android:layout_width="wrap_content" android:layout_height="wrap_content"
|
||||
android:textSize="25px"></CheckBox>
|
||||
|
||||
|
||||
<TextView android:id="@+id/filter_poi_label"
|
||||
android:layout_width="wrap_content" android:layout_height="wrap_content"
|
||||
android:textSize="25px"></TextView>
|
||||
</LinearLayout>
|
|
@ -211,4 +211,5 @@
|
|||
<string name="poi_context_menu_delete">Удалить</string>
|
||||
<string name="default_buttons_commit">Сохранить</string>
|
||||
<string name="default_buttons_reset">Сброс</string>
|
||||
<string name="filter_current_poiButton">Фильтровать</string>
|
||||
</resources>
|
||||
|
|
|
@ -213,4 +213,5 @@
|
|||
<string name="poi_context_menu_delete">Delete</string>
|
||||
<string name="default_buttons_commit">Commit</string>
|
||||
<string name="default_buttons_reset">Reset</string>
|
||||
<string name="filter_current_poiButton">Filter</string>
|
||||
</resources>
|
||||
|
|
119
OsmAnd/src/com/osmand/activities/EditPOIFilterActivity.java
Normal file
119
OsmAnd/src/com/osmand/activities/EditPOIFilterActivity.java
Normal file
|
@ -0,0 +1,119 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package com.osmand.activities;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.ListActivity;
|
||||
import android.app.AlertDialog.Builder;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.ScrollView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.osmand.PoiFilter;
|
||||
import com.osmand.PoiFiltersHelper;
|
||||
import com.osmand.R;
|
||||
import com.osmand.activities.search.SearchPOIActivity;
|
||||
import com.osmand.data.AmenityType;
|
||||
|
||||
/**
|
||||
* @author Frolov
|
||||
*
|
||||
*/
|
||||
public class EditPOIFilterActivity extends ListActivity {
|
||||
|
||||
private Button filterLevel;
|
||||
private PoiFilter filter;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
setContentView(R.layout.editing_poi_filter);
|
||||
|
||||
filterLevel = (Button) findViewById(R.id.filter_currentButton);
|
||||
filterLevel.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
Bundle bundle = this.getIntent().getExtras();
|
||||
String filterId = bundle.getString(SearchPOIActivity.AMENITY_FILTER);
|
||||
filter = PoiFiltersHelper.getFilterById(this, filterId);
|
||||
|
||||
setListAdapter(new AmenityAdapter(AmenityType.getCategories()));
|
||||
}
|
||||
|
||||
private void showDialog(AmenityType amenity) {
|
||||
Builder builder = new AlertDialog.Builder(this);
|
||||
ScrollView scroll = new ScrollView(this);
|
||||
ListView listView = new ListView(this);
|
||||
scroll.addView(listView);
|
||||
builder.setView(scroll);
|
||||
builder.setNegativeButton("Close", null);
|
||||
builder.setNeutralButton("Select all", null);
|
||||
builder.setMultiChoiceItems(AmenityType.getSubCategories(amenity).toArray(new String[0]), null, null);
|
||||
builder.show();
|
||||
|
||||
}
|
||||
|
||||
|
||||
class AmenityAdapter extends ArrayAdapter<AmenityType> {
|
||||
AmenityAdapter(AmenityType[] amenityTypes) {
|
||||
super(EditPOIFilterActivity.this, R.layout.editing_poi_filter_list, amenityTypes);
|
||||
}
|
||||
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
LayoutInflater inflater = getLayoutInflater();
|
||||
View row = convertView;
|
||||
if (row == null) {
|
||||
row = inflater.inflate(R.layout.editing_poi_filter_list, parent, false);
|
||||
}
|
||||
AmenityType model = getItem(position);
|
||||
|
||||
CheckBox check = (CheckBox) row.findViewById(R.id.filter_poi_check);
|
||||
check.setChecked(filter.isTypeAccepted(model));
|
||||
|
||||
TextView text = (TextView) row.findViewById(R.id.filter_poi_label);
|
||||
text.setText(AmenityType.toPublicString(model));
|
||||
addRowListener(model, text, check);
|
||||
return (row);
|
||||
}
|
||||
|
||||
private void addRowListener(final AmenityType model,final TextView text, final CheckBox check) {
|
||||
text.setOnClickListener(new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
showDialog(model);
|
||||
}
|
||||
});
|
||||
|
||||
check.setOnClickListener(new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if(check.isChecked()) {
|
||||
showDialog(model);
|
||||
} else {
|
||||
filter.setTypeToAccept(model,false);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -13,6 +13,7 @@ import android.os.Bundle;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ListView;
|
||||
|
@ -22,6 +23,7 @@ import com.osmand.OsmandSettings;
|
|||
import com.osmand.PoiFilter;
|
||||
import com.osmand.PoiFiltersHelper;
|
||||
import com.osmand.R;
|
||||
import com.osmand.activities.EditPOIFilterActivity;
|
||||
|
||||
/**
|
||||
* @author Maxim Frolov
|
||||
|
@ -42,6 +44,26 @@ public class SearchPoiFilterActivity extends ListActivity {
|
|||
filters.addAll(PoiFiltersHelper.getOsmDefinedPoiFilters(this));
|
||||
setListAdapter(new AmenityAdapter(filters));
|
||||
typeFace = Typeface.create((String)null, Typeface.ITALIC);
|
||||
|
||||
// ListActivity has a ListView, which you can get with:
|
||||
ListView lv = getListView();
|
||||
|
||||
// Then you can create a listener like so:
|
||||
lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
|
||||
@Override
|
||||
public boolean onItemLongClick(AdapterView<?> av, View v, int pos, long id) {
|
||||
PoiFilter poi = ((AmenityAdapter) getListAdapter()).getItem(pos);
|
||||
if(!poi.isStandardFilter()) {
|
||||
Bundle bundle = new Bundle();
|
||||
Intent newIntent = new Intent(SearchPoiFilterActivity.this, EditPOIFilterActivity.class);
|
||||
// folder selected
|
||||
bundle.putString(SearchPOIActivity.AMENITY_FILTER, poi.getFilterId());
|
||||
newIntent.putExtras(bundle);
|
||||
startActivityForResult(newIntent, 0);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue