Prepare to do search
This commit is contained in:
parent
c5e5df9e52
commit
8e393dc2bf
@ -15,6 +15,7 @@ import org.osmdroid.views.MapView;
|
|||||||
import fishrungames.bashgid.OsmMapHolderFragment.CustomItemizedOverlay;
|
import fishrungames.bashgid.OsmMapHolderFragment.CustomItemizedOverlay;
|
||||||
import fishrungames.bashgid.OsmMapHolderFragment.NoInteractionOverlay;
|
import fishrungames.bashgid.OsmMapHolderFragment.NoInteractionOverlay;
|
||||||
import fishrungames.bashgid.core.DatabaseGetAlbumTask;
|
import fishrungames.bashgid.core.DatabaseGetAlbumTask;
|
||||||
|
import fishrungames.bashgid.core.DatabaseGetArticleTask;
|
||||||
import fishrungames.bashgid.core.LocationHolder;
|
import fishrungames.bashgid.core.LocationHolder;
|
||||||
import fishrungames.bashgid.core.AlbumManager.AlbumFullData;
|
import fishrungames.bashgid.core.AlbumManager.AlbumFullData;
|
||||||
import fishrungames.bashgid.core.AlbumManager.AlbumShortData;
|
import fishrungames.bashgid.core.AlbumManager.AlbumShortData;
|
||||||
@ -24,6 +25,7 @@ import fishrungames.networkutils.ImageManager;
|
|||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.graphics.Canvas;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
@ -33,6 +35,7 @@ import android.os.Message;
|
|||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -90,6 +93,31 @@ public class ArticleFragment extends Fragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class MapOverlay extends org.osmdroid.views.overlay.Overlay {
|
||||||
|
|
||||||
|
public MapOverlay(Context ctx)
|
||||||
|
{
|
||||||
|
super(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void draw(Canvas arg0, MapView arg1, boolean arg2)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onTouchEvent(final MotionEvent event, final MapView mapView) {
|
||||||
|
if (event.getAction() == MotionEvent.ACTION_UP)
|
||||||
|
{
|
||||||
|
MainActivity.getInstance().OpenMapScreen(article);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ListView listView;
|
ListView listView;
|
||||||
@ -221,38 +249,6 @@ public class ArticleFragment extends Fragment
|
|||||||
return rootView;
|
return rootView;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class DatabaseGetArticleTask extends AsyncTask<String, Integer, Long>
|
|
||||||
{
|
|
||||||
|
|
||||||
ArticleFullData article;
|
|
||||||
|
|
||||||
public Handler mHandler;
|
|
||||||
|
|
||||||
protected Long doInBackground(String... queryArr)
|
|
||||||
{
|
|
||||||
String articleName = queryArr[0];
|
|
||||||
|
|
||||||
article = MainActivity.getInstance().articleDataSource.GetArticleFullData(articleName);
|
|
||||||
|
|
||||||
return (long) 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void onProgressUpdate(Integer... progress)
|
|
||||||
{
|
|
||||||
Message completeMessage = mHandler.obtainMessage(MainActivity.DATABASE_GET_ARTICLE_STATE_UPDATE, article);
|
|
||||||
|
|
||||||
completeMessage.sendToTarget();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void onPostExecute(Long result)
|
|
||||||
{
|
|
||||||
Message completeMessage = mHandler.obtainMessage(MainActivity.DATABASE_GET_ARTICLE_STATE_FINISHED, article);
|
|
||||||
|
|
||||||
completeMessage.sendToTarget();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class ListAdapter extends BaseAdapter {
|
public class ListAdapter extends BaseAdapter {
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
|
||||||
@ -367,7 +363,7 @@ public class ArticleFragment extends Fragment
|
|||||||
mapView.setMinZoomLevel(4);
|
mapView.setMinZoomLevel(4);
|
||||||
|
|
||||||
//mapView.setBuiltInZoomControls(true);
|
//mapView.setBuiltInZoomControls(true);
|
||||||
mapView.setMultiTouchControls(true);
|
//mapView.setMultiTouchControls(true);
|
||||||
|
|
||||||
|
|
||||||
IMapController mapController = mapView.getController();
|
IMapController mapController = mapView.getController();
|
||||||
@ -386,6 +382,12 @@ public class ArticleFragment extends Fragment
|
|||||||
|
|
||||||
mapView.getOverlays().add(itemizedOverlay);
|
mapView.getOverlays().add(itemizedOverlay);
|
||||||
|
|
||||||
|
|
||||||
|
MapOverlay mapOverlay = new MapOverlay(getActivity());
|
||||||
|
|
||||||
|
mapView.getOverlays().add(mapOverlay);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (getItemViewType(position) == 4)
|
else if (getItemViewType(position) == 4)
|
||||||
{
|
{
|
||||||
|
@ -479,6 +479,11 @@ public class MainActivity extends ActionBarActivity implements NavigationDrawerF
|
|||||||
{
|
{
|
||||||
newsRecordFragment.SetArticle(article);
|
newsRecordFragment.SetArticle(article);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mapHolderFragment != null)
|
||||||
|
{
|
||||||
|
mapHolderFragment.SetArticle(article);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateOnAlbumListLoaded(ArrayList<AlbumShortData> albumList)
|
public void UpdateOnAlbumListLoaded(ArrayList<AlbumShortData> albumList)
|
||||||
@ -689,7 +694,28 @@ public class MainActivity extends ActionBarActivity implements NavigationDrawerF
|
|||||||
{
|
{
|
||||||
ClearAllFragmentLinks();
|
ClearAllFragmentLinks();
|
||||||
|
|
||||||
mapHolderFragment = new OsmMapHolderFragment(filter);
|
mapHolderFragment = new OsmMapHolderFragment(0, filter);
|
||||||
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, mapHolderFragment, TAG_TO_MAINFRAGMENT).commit();
|
||||||
|
|
||||||
|
mNavigationDrawerFragment.EnableDrawer();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
public void OpenMapScreenByArticleName(String articleName)
|
||||||
|
{
|
||||||
|
ClearAllFragmentLinks();
|
||||||
|
|
||||||
|
mapHolderFragment = new OsmMapHolderFragment(1, articleName);
|
||||||
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, mapHolderFragment, TAG_TO_MAINFRAGMENT).commit();
|
||||||
|
|
||||||
|
mNavigationDrawerFragment.EnableDrawer();
|
||||||
|
}*/
|
||||||
|
|
||||||
|
public void OpenMapScreen(ArticleFullData articleFullData)
|
||||||
|
{
|
||||||
|
ClearAllFragmentLinks();
|
||||||
|
|
||||||
|
mapHolderFragment = new OsmMapHolderFragment(articleFullData);
|
||||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, mapHolderFragment, TAG_TO_MAINFRAGMENT).commit();
|
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, mapHolderFragment, TAG_TO_MAINFRAGMENT).commit();
|
||||||
|
|
||||||
mNavigationDrawerFragment.EnableDrawer();
|
mNavigationDrawerFragment.EnableDrawer();
|
||||||
|
@ -30,7 +30,9 @@ import org.osmdroid.views.overlay.ItemizedOverlay;
|
|||||||
import org.osmdroid.views.overlay.OverlayItem;
|
import org.osmdroid.views.overlay.OverlayItem;
|
||||||
import org.osmdroid.views.overlay.OverlayItem.HotspotPlace;
|
import org.osmdroid.views.overlay.OverlayItem.HotspotPlace;
|
||||||
|
|
||||||
|
import fishrungames.bashgid.core.ArticleManager.ArticleFullData;
|
||||||
import fishrungames.bashgid.core.ArticleManager.ArticleRecordData;
|
import fishrungames.bashgid.core.ArticleManager.ArticleRecordData;
|
||||||
|
import fishrungames.bashgid.core.DatabaseGetArticleTask;
|
||||||
import fishrungames.bashgid.core.DatabaseGetJournalTask;
|
import fishrungames.bashgid.core.DatabaseGetJournalTask;
|
||||||
import fishrungames.bashgid.core.JournalManager;
|
import fishrungames.bashgid.core.JournalManager;
|
||||||
import fishrungames.bashgid.core.LocationHolder;
|
import fishrungames.bashgid.core.LocationHolder;
|
||||||
@ -162,32 +164,54 @@ public class OsmMapHolderFragment extends Fragment
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CustomItemizedOverlay itemizedOverlay;
|
CustomItemizedOverlay itemizedOverlay;
|
||||||
|
|
||||||
String journalName;
|
String filter;
|
||||||
|
|
||||||
JournalSemiFullData journal;
|
JournalSemiFullData journal;
|
||||||
|
ArticleFullData article;
|
||||||
|
|
||||||
|
int filterType;
|
||||||
|
|
||||||
|
|
||||||
public OsmMapHolderFragment()
|
public OsmMapHolderFragment()
|
||||||
{
|
{
|
||||||
journal = null;
|
journal = null;
|
||||||
journalName = "";
|
article = null;
|
||||||
|
filter = "";
|
||||||
|
filterType = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public OsmMapHolderFragment(String journalName)
|
public OsmMapHolderFragment(int filterType, String filter)
|
||||||
{
|
{
|
||||||
this.journalName = journalName;
|
this.journal = null;
|
||||||
RestoreJournal();
|
this.article = null;
|
||||||
|
this.filter = filter;
|
||||||
|
this.filterType = filterType;
|
||||||
|
|
||||||
|
RestoreJournalOrArticle();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public OsmMapHolderFragment(ArticleFullData article)
|
||||||
|
{
|
||||||
|
this.filter = article.name;
|
||||||
|
this.filterType = 1;
|
||||||
|
|
||||||
|
this.article = article;
|
||||||
|
this.journal = null;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSaveInstanceState(final Bundle outState) {
|
public void onSaveInstanceState(final Bundle outState) {
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
outState.putString("journalName", journalName);
|
outState.putString("filter", filter);
|
||||||
|
outState.putInt("filterType", filterType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -198,15 +222,24 @@ public class OsmMapHolderFragment extends Fragment
|
|||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
|
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
journalName = savedInstanceState.getString("journalName");
|
filter = savedInstanceState.getString("filter");
|
||||||
RestoreJournal();
|
filterType = savedInstanceState.getInt("filterType");
|
||||||
|
|
||||||
|
RestoreJournalOrArticle();
|
||||||
}
|
}
|
||||||
|
|
||||||
View rootView = inflater.inflate(R.layout.fragment_osm_map_page, container, false);
|
View rootView = inflater.inflate(R.layout.fragment_osm_map_page, container, false);
|
||||||
|
|
||||||
textView = (TextView) rootView.findViewById(R.id.textView);
|
textView = (TextView) rootView.findViewById(R.id.textView);
|
||||||
|
|
||||||
textView.setText("Loading map...");
|
if ((filterType == 0 && journal == null) || (filterType == 1 && article == null))
|
||||||
|
{
|
||||||
|
textView.setText("Loading map...");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
textView.setText("Map is loaded");
|
||||||
|
}
|
||||||
|
|
||||||
mapView = (MapView) rootView.findViewById(R.id.mapview);
|
mapView = (MapView) rootView.findViewById(R.id.mapview);
|
||||||
|
|
||||||
@ -231,9 +264,22 @@ public class OsmMapHolderFragment extends Fragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RestoreJournalOrArticle()
|
||||||
|
{
|
||||||
|
if (filterType == 0)
|
||||||
|
{
|
||||||
|
RestoreJournal();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RestoreArticle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void RestoreJournal()
|
void RestoreJournal()
|
||||||
{
|
{
|
||||||
journal = JournalManager.CreateEmptyJournal();
|
//journal = JournalManager.CreateEmptyJournal();
|
||||||
|
|
||||||
DatabaseGetJournalTask task = new DatabaseGetJournalTask();
|
DatabaseGetJournalTask task = new DatabaseGetJournalTask();
|
||||||
|
|
||||||
@ -241,15 +287,27 @@ public class OsmMapHolderFragment extends Fragment
|
|||||||
|
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
|
|
||||||
bundle.putString("journalName", journalName);
|
bundle.putString("journalName", filter);
|
||||||
|
|
||||||
task.execute(bundle);
|
task.execute(bundle);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void RestoreArticle()
|
||||||
|
{
|
||||||
|
|
||||||
|
DatabaseGetArticleTask task = new DatabaseGetArticleTask();
|
||||||
|
|
||||||
|
task.mHandler = MainActivity.getInstance().mHandler;
|
||||||
|
|
||||||
|
task.execute(filter);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetJournal(JournalSemiFullData journal)
|
public void SetJournal(JournalSemiFullData journal)
|
||||||
{
|
{
|
||||||
|
filterType = 0;
|
||||||
|
|
||||||
textView.setText("Map is loaded");
|
textView.setText("Map is loaded");
|
||||||
|
|
||||||
this.journal = journal;
|
this.journal = journal;
|
||||||
@ -258,12 +316,29 @@ public class OsmMapHolderFragment extends Fragment
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetArticle(ArticleFullData article)
|
||||||
|
{
|
||||||
|
filterType = 1;
|
||||||
|
|
||||||
|
textView.setText("Map is loaded");
|
||||||
|
|
||||||
|
this.article = article;
|
||||||
|
|
||||||
|
RefreshView();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void RefreshView()
|
public void RefreshView()
|
||||||
{
|
{
|
||||||
if (journal != null)
|
|
||||||
{
|
|
||||||
ResourceProxy resourceProxy = new DefaultResourceProxyImpl(getActivity());
|
ResourceProxy resourceProxy = new DefaultResourceProxyImpl(getActivity());
|
||||||
itemizedOverlay = new CustomItemizedOverlay(getResources().getDrawable(R.drawable.russia_icon), resourceProxy, journalName);
|
|
||||||
|
itemizedOverlay = new CustomItemizedOverlay(getResources().getDrawable(R.drawable.russia_icon), resourceProxy, filter);
|
||||||
|
|
||||||
|
if (filterType == 0)
|
||||||
|
{
|
||||||
|
if (journal != null)
|
||||||
|
{
|
||||||
|
|
||||||
for (int i = 0; i < journal.articleArr.size(); i++)
|
for (int i = 0; i < journal.articleArr.size(); i++)
|
||||||
{
|
{
|
||||||
@ -277,6 +352,35 @@ public class OsmMapHolderFragment extends Fragment
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (article != null)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
if (article.geoLat != 0 || article.geoLon != 0)
|
||||||
|
{
|
||||||
|
GeoPoint markerPoint = new GeoPoint(article.geoLat, article.geoLon);
|
||||||
|
|
||||||
|
String imageUrl = "R.drawable.no_picture";
|
||||||
|
|
||||||
|
if (article.albumArr.size() > 0)
|
||||||
|
{
|
||||||
|
if (article.albumArr.get(0).photoRecordArr.size() > 0)
|
||||||
|
{
|
||||||
|
imageUrl = article.albumArr.get(0).photoRecordArr.get(0).imageUrl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
itemizedOverlay.addOverlayItem(markerPoint, article.name, article.title, imageUrl);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mapView.getOverlays().clear();
|
mapView.getOverlays().clear();
|
||||||
mapView.getOverlays().add(itemizedOverlay);
|
mapView.getOverlays().add(itemizedOverlay);
|
||||||
@ -284,6 +388,6 @@ public class OsmMapHolderFragment extends Fragment
|
|||||||
mapView.invalidate();
|
mapView.invalidate();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,39 @@
|
|||||||
|
package fishrungames.bashgid.core;
|
||||||
|
|
||||||
|
import android.os.AsyncTask;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.Message;
|
||||||
|
import fishrungames.bashgid.MainActivity;
|
||||||
|
import fishrungames.bashgid.core.ArticleManager.ArticleFullData;
|
||||||
|
|
||||||
|
public class DatabaseGetArticleTask extends AsyncTask<String, Integer, Long>
|
||||||
|
{
|
||||||
|
|
||||||
|
ArticleFullData article;
|
||||||
|
|
||||||
|
public Handler mHandler;
|
||||||
|
|
||||||
|
protected Long doInBackground(String... queryArr)
|
||||||
|
{
|
||||||
|
String articleName = queryArr[0];
|
||||||
|
|
||||||
|
article = MainActivity.getInstance().articleDataSource.GetArticleFullData(articleName);
|
||||||
|
|
||||||
|
return (long) 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void onProgressUpdate(Integer... progress)
|
||||||
|
{
|
||||||
|
Message completeMessage = mHandler.obtainMessage(MainActivity.DATABASE_GET_ARTICLE_STATE_UPDATE, article);
|
||||||
|
|
||||||
|
completeMessage.sendToTarget();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void onPostExecute(Long result)
|
||||||
|
{
|
||||||
|
Message completeMessage = mHandler.obtainMessage(MainActivity.DATABASE_GET_ARTICLE_STATE_FINISHED, article);
|
||||||
|
|
||||||
|
completeMessage.sendToTarget();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user