From 2d551b6650c08e331191f7c3a0bcbbea701a0c19 Mon Sep 17 00:00:00 2001 From: drizea Date: Thu, 16 Aug 2012 19:10:52 +0300 Subject: [PATCH] added functionality load more records on item details swipe --- .../searchCatalog/SampleUnderlinesNoFade.java | 100 +++++++++++++++++++-- .../android/searchCatalog/SearchCatalog.java | 4 + .../searchCatalog/SearchCatalogListView.java | 40 ++++----- 3 files changed, 119 insertions(+), 25 deletions(-) diff --git a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SampleUnderlinesNoFade.java b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SampleUnderlinesNoFade.java index ba5cac91ef..917c438836 100644 --- a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SampleUnderlinesNoFade.java +++ b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SampleUnderlinesNoFade.java @@ -19,47 +19,70 @@ */ package org.evergreen.android.searchCatalog; +import java.util.ArrayList; import java.util.List; import org.evergreen.android.R; +import org.evergreen.android.globals.NoAccessToServer; +import org.evergreen.android.globals.NoNetworkAccessException; +import org.evergreen.android.globals.Utils; import org.evergreen.android.utils.ui.BaseSampleActivity; import org.evergreen.android.utils.ui.BasicDetailsFragment; import org.evergreen.android.utils.ui.TestFragmentAdapter; import org.evergreen.android.utils.ui.UnderlinePageIndicator; import org.evergreen.android.views.AccountScreenDashboard; +import android.app.ProgressDialog; +import android.content.Context; import android.content.Intent; +import android.net.ConnectivityManager; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.view.ViewPager; +import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; -import android.widget.ImageButton; import android.widget.TextView; public class SampleUnderlinesNoFade extends BaseSampleActivity { - private List records; + private ArrayList records; private Button myAccountButton; private Button homeButton; private TextView headerTitle; - + + private SearchCatalog search; + + private ArrayList searchRecords; + + private Context context; + + private ProgressDialog progressDialog; + + private Runnable searchRunnableWithOffset; + + public static final int RETURN_DATA = 5; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_underlines); - records = (List) getIntent().getSerializableExtra( + search = SearchCatalog.getInstance((ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE)); + + records = (ArrayList) getIntent().getSerializableExtra( "recordList"); if (records.get(records.size() - 1).dummy == true) records.remove(records.size() - 1); + context = this; + // header portion actions homeButton = (Button) findViewById(R.id.library_logo); myAccountButton = (Button) findViewById(R.id.my_account_button); @@ -97,9 +120,70 @@ public class SampleUnderlinesNoFade extends BaseSampleActivity { indicator.setViewPager(mPager); indicator.setFades(false); mIndicator = indicator; + searchRunnableWithOffset = new Runnable() { + + @Override + public void run() { + + runOnUiThread(new Runnable() { + + @Override + public void run() { + progressDialog = ProgressDialog.show(context,null ,getResources().getText(R.string.dialog_load_more_message)); + } + }); + + try { + searchRecords = search.getSearchResults(search.searchText, + records.size()); + } catch (NoNetworkAccessException e) { + runOnUiThread(Utils + .showNetworkNotAvailableDialog(context)); + } catch (NoAccessToServer e) { + runOnUiThread(Utils + .showServerNotAvailableDialog(context)); + } + + runOnUiThread(new Runnable() { + + @Override + public void run() { + + // don't clear record list + // recordList.clear(); + if (searchRecords.size() > 0) { + + for (int j = 0; j < searchRecords + .size(); j++) + records.add(searchRecords.get(j)); + + // add extra record to display more + // option button + + } + progressDialog.dismiss(); + } + }); + + } + }; } + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + Intent intent = new Intent(); + intent.putExtra("recordList", records); + setResult(RETURN_DATA, intent); + finish(); + + return true; + } + return super.onKeyDown(keyCode, event); + } + + class SearchFragmentAdapter extends TestFragmentAdapter { public SearchFragmentAdapter(FragmentManager fm) { super(fm); @@ -108,8 +192,14 @@ public class SampleUnderlinesNoFade extends BaseSampleActivity { @Override public Fragment getItem(int position) { // position +1 for 1 - size values + + if(position == records.size() - 1 && records.size() < search.visible){ + Thread getSearchResults = new Thread(searchRunnableWithOffset); + getSearchResults.start(); + } return BasicDetailsFragment.newInstance(records.get(position), - position + 1, records.size()); + position + 1, search.visible); + } @Override diff --git a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalog.java b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalog.java index 0b2f22bd97..1722ce238c 100644 --- a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalog.java +++ b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalog.java @@ -114,6 +114,8 @@ public class SearchCatalog { public Integer visible; public Integer searchLimit = 10; + + public String searchText = null; private ConnectivityManager cm; @@ -168,6 +170,8 @@ public class SearchCatalog { public ArrayList getSearchResults(String searchWords, Integer offset) throws NoNetworkAccessException, NoAccessToServer { + searchText = searchWords; + ArrayList resultsRecordInfo = new ArrayList(); Method method = new Method(METHOD_MULTICASS_SEARCH); diff --git a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalogListView.java b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalogListView.java index 6d279deaca..73a2dcb8b9 100644 --- a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalogListView.java +++ b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalogListView.java @@ -332,7 +332,7 @@ public class SearchCatalogListView extends Activity { try { searchResults = search.getSearchResults(text, - recordList.size() - 1); + recordList.size()); } catch (NoNetworkAccessException e) { runOnUiThread(Utils .showNetworkNotAvailableDialog(context)); @@ -399,7 +399,7 @@ public class SearchCatalogListView extends Activity { intent.putExtra("recordList", recordList); intent.putExtra("recordPosition", position); - startActivity(intent); + startActivityForResult(intent, 10); } } }); @@ -566,24 +566,6 @@ public class SearchCatalogListView extends Activity { } @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater menuInflater = getMenuInflater(); - menuInflater.inflate(R.menu.search_menu, menu); - return super.onCreateOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - Toast.makeText(this, "Tapped home", Toast.LENGTH_SHORT).show(); - break; - - } - return super.onOptionsItemSelected(item); - } - - @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { @@ -732,6 +714,24 @@ public class SearchCatalogListView extends Activity { switch (resultCode) { + case SampleUnderlinesNoFade.RETURN_DATA : { + + ArrayList records = (ArrayList)data.getSerializableExtra("recordList"); + + recordList.clear(); + for(int i=0;i