added functionality load more records on item details swipe
authordrizea <danielrizea27@gmail.com>
Thu, 16 Aug 2012 16:10:52 +0000 (19:10 +0300)
committerdrizea <danielrizea27@gmail.com>
Thu, 16 Aug 2012 16:10:52 +0000 (19:10 +0300)
Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SampleUnderlinesNoFade.java
Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalog.java
Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalogListView.java

index ba5cac9..917c438 100644 (file)
  */
 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<RecordInfo> records;
+    private ArrayList<RecordInfo> records;
 
     private Button myAccountButton;
 
     private Button homeButton;
 
     private TextView headerTitle;
-
+    
+    private SearchCatalog search;
+    
+    private ArrayList<RecordInfo> 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<RecordInfo>) getIntent().getSerializableExtra(
+        search = SearchCatalog.getInstance((ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE));
+        
+        records = (ArrayList<RecordInfo>) 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
index 0b2f22b..1722ce2 100644 (file)
@@ -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<RecordInfo> getSearchResults(String searchWords,
             Integer offset) throws NoNetworkAccessException, NoAccessToServer {
 
+        searchText = searchWords;
+        
         ArrayList<RecordInfo> resultsRecordInfo = new ArrayList<RecordInfo>();
 
         Method method = new Method(METHOD_MULTICASS_SEARCH);
index 6d279de..73a2dcb 100644 (file)
@@ -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<RecordInfo> records = (ArrayList)data.getSerializableExtra("recordList");
+        
+            recordList.clear();
+            for(int i=0;i<records.size();i++){
+                recordList.add(records.get(i));
+            }
+            adapter.notifyDataSetChanged();
+            
+            searchResultsNumber.setText(adapter
+                    .getCount()
+                    + " out of "
+                    + search.visible);
+            
+        }
+        break;
+        
         case AdvancedSearchActivity.RESULT_ADVANCED_SEARCH: {
             Log.d(TAG,
                     "result text" + data.getStringExtra("advancedSearchText"));