Yuvipanda has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/91340


Change subject: Add refresh button only for Campaigns
......................................................................

Add refresh button only for Campaigns

Temp. hack to let people see new images when they come through

Change-Id: I986bc274ccebd53fef75dbaeffcdff891a4f77bf
---
M commons/res/menu/fragment_contributions_list.xml
M commons/res/values-qq/strings.xml
M commons/res/values/strings.xml
M 
commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java
M 
commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java
M 
commons/src/main/java/org/wikimedia/commons/contributions/MediaListAdapter.java
6 files changed, 43 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/commons 
refs/changes/40/91340/1

diff --git a/commons/res/menu/fragment_contributions_list.xml 
b/commons/res/menu/fragment_contributions_list.xml
index b9382fa..14cc732 100644
--- a/commons/res/menu/fragment_contributions_list.xml
+++ b/commons/res/menu/fragment_contributions_list.xml
@@ -26,5 +26,9 @@
           android:showAsAction="never"
           android:icon="@android:drawable/ic_menu_send"
             />
+    <item android:id="@+id/menu_refresh"
+          android:title="@string/menu_refresh"
+          android:showAsAction="never"
+          />
 
 </menu>
diff --git a/commons/res/values-qq/strings.xml 
b/commons/res/values-qq/strings.xml
index cd783dc..437eb90 100644
--- a/commons/res/values-qq/strings.xml
+++ b/commons/res/values-qq/strings.xml
@@ -3,6 +3,7 @@
   <string name="app_name">The name of the application.
 {{Identical|Wikimedia Commons}}</string>
   <string name="app_name_beta">Name of the beta version of the 
application</string>
+  <string name="menu_refresh">Label for menu item that refreshes current list 
of images.</string>
   <string name="menu_settings">Label for menu item to show settings.
 {{Identical|Settings}}</string>
   <string name="username">{{Identical|Username}}</string>
diff --git a/commons/res/values/strings.xml b/commons/res/values/strings.xml
index 664de85..aedac8d 100644
--- a/commons/res/values/strings.xml
+++ b/commons/res/values/strings.xml
@@ -141,4 +141,5 @@
     <string name="detail_description_empty">No description</string>
     <string name="detail_license_empty">Unknown license</string>
     <string name="provider_campaigns">Campaigns</string>
+    <string name="menu_refresh">Refresh</string>
 </resources>
diff --git 
a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java
 
b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java
index b4236ac..9152cac 100644
--- 
a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java
+++ 
b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java
@@ -29,7 +29,8 @@
                     AdapterView.OnItemClickListener,
                     MediaDetailPagerFragment.MediaDetailProvider,
                     ContributionsListFragment.CurrentCampaignProvider,
-                    FragmentManager.OnBackStackChangedListener {
+                    FragmentManager.OnBackStackChangedListener,
+                    ContributionsListFragment.SourceRefresher {
 
 
     private Cursor allContributions;
@@ -219,7 +220,11 @@
 
             
getSupportActionBar().setSubtitle(getResources().getQuantityString(R.plurals.contributions_subtitle,
 cursor.getCount(), cursor.getCount()));
         } else {
-            contributionsList.setAdapter(new MediaListAdapter(this, 
(ArrayList<Media>) result));
+            if(contributionsList.getAdapter() == null) {
+                contributionsList.setAdapter(new MediaListAdapter(this, 
(ArrayList<Media>) result));
+            } else {
+                
((MediaListAdapter)contributionsList.getAdapter()).updateMediaList((ArrayList<Media>)
 result);
+            }
         }
     }
 
@@ -227,8 +232,7 @@
         if(campaign == null) {
             ((CursorAdapter) contributionsList.getAdapter()).swapCursor(null);
         } else {
-            //((MediaListAdapter) contributionsList.getAdapter()).
-            // DO SOMETHING!
+            contributionsList.setAdapter(null);
         }
     }
 
@@ -262,4 +266,8 @@
     public Campaign getCurrentCampaign() {
         return campaign;
     }
+
+    public void refreshSource() {
+        getSupportLoaderManager().restartLoader(0, null, this);
+    }
 }
diff --git 
a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java
 
b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java
index fea1c7f..b8c8fcb 100644
--- 
a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java
+++ 
b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java
@@ -27,6 +27,10 @@
         Campaign getCurrentCampaign();
     }
 
+    public interface SourceRefresher {
+        void refreshSource();
+    }
+
     private GridView contributionsList;
     private TextView waitingMessage;
     private TextView emptyMessage;
@@ -87,7 +91,9 @@
                 feedbackIntent.putExtra(Intent.EXTRA_SUBJECT, 
String.format(CommonsApplication.FEEDBACK_EMAIL_SUBJECT, 
CommonsApplication.APPLICATION_VERSION));
                 startActivity(feedbackIntent);
                 return true;
-
+            case R.id.menu_refresh:
+                ((SourceRefresher)getActivity()).refreshSource();
+                return true;
             default:
                 return super.onOptionsItemSelected(item);
         }
@@ -102,6 +108,9 @@
         if (!app.deviceHasCamera()) {
             menu.findItem(R.id.menu_from_camera).setEnabled(false);
         }
+        if(campaign == null) {
+            menu.findItem(R.id.menu_refresh).setVisible(false);
+        }
     }
 
     @Override
diff --git 
a/commons/src/main/java/org/wikimedia/commons/contributions/MediaListAdapter.java
 
b/commons/src/main/java/org/wikimedia/commons/contributions/MediaListAdapter.java
index 33f8460..5321202 100644
--- 
a/commons/src/main/java/org/wikimedia/commons/contributions/MediaListAdapter.java
+++ 
b/commons/src/main/java/org/wikimedia/commons/contributions/MediaListAdapter.java
@@ -20,6 +20,21 @@
         this.activity = activity;
     }
 
+    public void updateMediaList(ArrayList<Media> newMediaList) {
+        // FIXME: Hack for now, replace with something more efficient later on
+        for(Media newMedia: newMediaList) {
+            boolean isDuplicate = false;
+            for(Media oldMedia: mediaList ) {
+                if(newMedia.getFilename().equals(oldMedia.getFilename())) {
+                    isDuplicate = true;
+                    break;
+                }
+            }
+            if(!isDuplicate) {
+                mediaList.add(0, newMedia);
+            }
+        }
+    }
     public int getCount() {
         return mediaList.size();
     }

-- 
To view, visit https://gerrit.wikimedia.org/r/91340
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I986bc274ccebd53fef75dbaeffcdff891a4f77bf
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/commons
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <yuvipa...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to