From 8e393dc2bf61d57d47322dcc5cebaba9f4abe4ab Mon Sep 17 00:00:00 2001 From: Vladislav Khorev Date: Thu, 25 Jun 2015 20:15:00 +0000 Subject: [PATCH] Prepare to do search --- .../fishrungames/bashgid/ArticleFragment.java | 68 ++++----- .../fishrungames/bashgid/MainActivity.java | 28 +++- .../bashgid/OsmMapHolderFragment.java | 134 ++++++++++++++++-- .../bashgid/core/DatabaseGetArticleTask.java | 39 +++++ 4 files changed, 220 insertions(+), 49 deletions(-) create mode 100644 android/src/fishrungames/bashgid/core/DatabaseGetArticleTask.java diff --git a/android/src/fishrungames/bashgid/ArticleFragment.java b/android/src/fishrungames/bashgid/ArticleFragment.java index c174455..04d1c10 100644 --- a/android/src/fishrungames/bashgid/ArticleFragment.java +++ b/android/src/fishrungames/bashgid/ArticleFragment.java @@ -15,6 +15,7 @@ import org.osmdroid.views.MapView; import fishrungames.bashgid.OsmMapHolderFragment.CustomItemizedOverlay; import fishrungames.bashgid.OsmMapHolderFragment.NoInteractionOverlay; import fishrungames.bashgid.core.DatabaseGetAlbumTask; +import fishrungames.bashgid.core.DatabaseGetArticleTask; import fishrungames.bashgid.core.LocationHolder; import fishrungames.bashgid.core.AlbumManager.AlbumFullData; import fishrungames.bashgid.core.AlbumManager.AlbumShortData; @@ -24,6 +25,7 @@ import fishrungames.networkutils.ImageManager; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; +import android.graphics.Canvas; import android.graphics.Typeface; import android.net.Uri; import android.os.AsyncTask; @@ -33,6 +35,7 @@ import android.os.Message; import android.support.v4.app.Fragment; import android.view.Gravity; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; 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; @@ -221,38 +249,6 @@ public class ArticleFragment extends Fragment return rootView; } - public class DatabaseGetArticleTask extends AsyncTask - { - - 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 { private Context mContext; @@ -367,7 +363,7 @@ public class ArticleFragment extends Fragment mapView.setMinZoomLevel(4); //mapView.setBuiltInZoomControls(true); - mapView.setMultiTouchControls(true); + //mapView.setMultiTouchControls(true); IMapController mapController = mapView.getController(); @@ -386,6 +382,12 @@ public class ArticleFragment extends Fragment mapView.getOverlays().add(itemizedOverlay); + + MapOverlay mapOverlay = new MapOverlay(getActivity()); + + mapView.getOverlays().add(mapOverlay); + + } else if (getItemViewType(position) == 4) { diff --git a/android/src/fishrungames/bashgid/MainActivity.java b/android/src/fishrungames/bashgid/MainActivity.java index 3d9033a..888d411 100644 --- a/android/src/fishrungames/bashgid/MainActivity.java +++ b/android/src/fishrungames/bashgid/MainActivity.java @@ -479,6 +479,11 @@ public class MainActivity extends ActionBarActivity implements NavigationDrawerF { newsRecordFragment.SetArticle(article); } + + if (mapHolderFragment != null) + { + mapHolderFragment.SetArticle(article); + } } public void UpdateOnAlbumListLoaded(ArrayList albumList) @@ -689,7 +694,28 @@ public class MainActivity extends ActionBarActivity implements NavigationDrawerF { 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(); mNavigationDrawerFragment.EnableDrawer(); diff --git a/android/src/fishrungames/bashgid/OsmMapHolderFragment.java b/android/src/fishrungames/bashgid/OsmMapHolderFragment.java index 818c820..c4d3181 100644 --- a/android/src/fishrungames/bashgid/OsmMapHolderFragment.java +++ b/android/src/fishrungames/bashgid/OsmMapHolderFragment.java @@ -30,7 +30,9 @@ import org.osmdroid.views.overlay.ItemizedOverlay; import org.osmdroid.views.overlay.OverlayItem; import org.osmdroid.views.overlay.OverlayItem.HotspotPlace; +import fishrungames.bashgid.core.ArticleManager.ArticleFullData; import fishrungames.bashgid.core.ArticleManager.ArticleRecordData; +import fishrungames.bashgid.core.DatabaseGetArticleTask; import fishrungames.bashgid.core.DatabaseGetJournalTask; import fishrungames.bashgid.core.JournalManager; import fishrungames.bashgid.core.LocationHolder; @@ -162,32 +164,54 @@ public class OsmMapHolderFragment extends Fragment { return false; } + } CustomItemizedOverlay itemizedOverlay; - String journalName; + String filter; JournalSemiFullData journal; + ArticleFullData article; + + int filterType; public OsmMapHolderFragment() { journal = null; - journalName = ""; + article = null; + filter = ""; + filterType = 0; } - public OsmMapHolderFragment(String journalName) + public OsmMapHolderFragment(int filterType, String filter) { - this.journalName = journalName; - RestoreJournal(); + this.journal = null; + 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 public void onSaveInstanceState(final Bundle 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) { if (savedInstanceState != null) { - journalName = savedInstanceState.getString("journalName"); - RestoreJournal(); + filter = savedInstanceState.getString("filter"); + filterType = savedInstanceState.getInt("filterType"); + + RestoreJournalOrArticle(); } View rootView = inflater.inflate(R.layout.fragment_osm_map_page, container, false); 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); @@ -229,11 +262,24 @@ public class OsmMapHolderFragment extends Fragment return rootView; } + + + void RestoreJournalOrArticle() + { + if (filterType == 0) + { + RestoreJournal(); + } + else + { + RestoreArticle(); + } + } void RestoreJournal() { - journal = JournalManager.CreateEmptyJournal(); + //journal = JournalManager.CreateEmptyJournal(); DatabaseGetJournalTask task = new DatabaseGetJournalTask(); @@ -241,15 +287,27 @@ public class OsmMapHolderFragment extends Fragment Bundle bundle = new Bundle(); - bundle.putString("journalName", journalName); + bundle.putString("journalName", filter); task.execute(bundle); + } + + void RestoreArticle() + { + + DatabaseGetArticleTask task = new DatabaseGetArticleTask(); + + task.mHandler = MainActivity.getInstance().mHandler; + + task.execute(filter); } public void SetJournal(JournalSemiFullData journal) { + filterType = 0; + textView.setText("Map is loaded"); this.journal = journal; @@ -257,14 +315,31 @@ public class OsmMapHolderFragment extends Fragment RefreshView(); } + + public void SetArticle(ArticleFullData article) + { + filterType = 1; + + textView.setText("Map is loaded"); + + this.article = article; + + RefreshView(); + + } public void RefreshView() { - if (journal != null) - { + 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++) { ArticleRecordData article = journal.articleArr.get(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().add(itemizedOverlay); @@ -284,6 +388,6 @@ public class OsmMapHolderFragment extends Fragment mapView.invalidate(); } - } + } diff --git a/android/src/fishrungames/bashgid/core/DatabaseGetArticleTask.java b/android/src/fishrungames/bashgid/core/DatabaseGetArticleTask.java new file mode 100644 index 0000000..e63d948 --- /dev/null +++ b/android/src/fishrungames/bashgid/core/DatabaseGetArticleTask.java @@ -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 +{ + + 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(); + } +} \ No newline at end of file