Dbrant has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/367894 )

Change subject: Initiate download of compilation via overflow menu.
......................................................................

Initiate download of compilation via overflow menu.

Bug: T164764
Change-Id: I2741c14894d990c59c30bd685546c2dd61c5cab3
---
M app/src/main/java/org/wikipedia/gallery/MediaDownloadReceiver.java
M app/src/main/java/org/wikipedia/history/HistoryFragment.java
M app/src/main/java/org/wikipedia/offline/LocalCompilationsFragment.java
M app/src/main/java/org/wikipedia/offline/RemoteCompilationsFragment.java
M app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java
M app/src/main/java/org/wikipedia/views/PageItemView.java
A app/src/main/res/menu/menu_remote_compilation_item.xml
M app/src/main/res/values-qq/strings.xml
M app/src/main/res/values/strings.xml
9 files changed, 97 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/94/367894/1

diff --git a/app/src/main/java/org/wikipedia/gallery/MediaDownloadReceiver.java 
b/app/src/main/java/org/wikipedia/gallery/MediaDownloadReceiver.java
index bc4ae04..ec25e91 100644
--- a/app/src/main/java/org/wikipedia/gallery/MediaDownloadReceiver.java
+++ b/app/src/main/java/org/wikipedia/gallery/MediaDownloadReceiver.java
@@ -15,6 +15,7 @@
 import org.wikipedia.R;
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.feed.image.FeaturedImage;
+import org.wikipedia.offline.Compilation;
 import org.wikipedia.util.FileUtil;
 
 import java.io.File;
@@ -32,6 +33,12 @@
         this.callback = callback;
     }
 
+    public void download(@NonNull Context context, @NonNull Compilation 
compilation) {
+        String filename = 
FileUtil.sanitizeFileName(compilation.uri().getLastPathSegment());
+        String targetDirectory = Environment.DIRECTORY_DOWNLOADS;
+        performDownloadRequest(context, compilation.uri(), targetDirectory, 
filename, null);
+    }
+
     public void download(@NonNull Context context, @NonNull FeaturedImage 
featuredImage) {
         String filename = FileUtil.sanitizeFileName(featuredImage.title());
         String targetDirectory = Environment.DIRECTORY_PICTURES;
diff --git a/app/src/main/java/org/wikipedia/history/HistoryFragment.java 
b/app/src/main/java/org/wikipedia/history/HistoryFragment.java
index 625957b..8d2fd26 100644
--- a/app/src/main/java/org/wikipedia/history/HistoryFragment.java
+++ b/app/src/main/java/org/wikipedia/history/HistoryFragment.java
@@ -469,10 +469,10 @@
         }
 
         @Override
-        public void onActionClick(@Nullable IndexedHistoryEntry entry, 
@NonNull PageItemView view) {
+        public void onActionClick(@Nullable IndexedHistoryEntry entry, 
@NonNull View view) {
         }
         @Override
-        public void onSecondaryActionClick(@Nullable IndexedHistoryEntry 
entry, @NonNull PageItemView view) {
+        public void onSecondaryActionClick(@Nullable IndexedHistoryEntry 
entry, @NonNull View view) {
         }
     }
 
diff --git 
a/app/src/main/java/org/wikipedia/offline/LocalCompilationsFragment.java 
b/app/src/main/java/org/wikipedia/offline/LocalCompilationsFragment.java
index cc7116e..fe720bb 100644
--- a/app/src/main/java/org/wikipedia/offline/LocalCompilationsFragment.java
+++ b/app/src/main/java/org/wikipedia/offline/LocalCompilationsFragment.java
@@ -269,11 +269,11 @@
         }
 
         @Override
-        public void onActionClick(@Nullable Compilation item, @NonNull 
PageItemView view) {
+        public void onActionClick(@Nullable Compilation item, @NonNull View 
view) {
         }
 
         @Override
-        public void onSecondaryActionClick(@Nullable Compilation item, 
@NonNull PageItemView view) {
+        public void onSecondaryActionClick(@Nullable Compilation item, 
@NonNull View view) {
         }
     }
 
diff --git 
a/app/src/main/java/org/wikipedia/offline/RemoteCompilationsFragment.java 
b/app/src/main/java/org/wikipedia/offline/RemoteCompilationsFragment.java
index 60120aa..8f6b63b 100644
--- a/app/src/main/java/org/wikipedia/offline/RemoteCompilationsFragment.java
+++ b/app/src/main/java/org/wikipedia/offline/RemoteCompilationsFragment.java
@@ -1,5 +1,9 @@
 package org.wikipedia.offline;
 
+import android.app.DownloadManager;
+import android.content.Context;
+import android.content.IntentFilter;
+import android.database.Cursor;
 import android.graphics.Color;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
@@ -10,6 +14,7 @@
 import android.support.v7.app.AppCompatActivity;
 import android.support.v7.view.ActionMode;
 import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.PopupMenu;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.Toolbar;
 import android.text.TextUtils;
@@ -23,8 +28,10 @@
 
 import org.wikipedia.R;
 import org.wikipedia.WikipediaApp;
+import org.wikipedia.gallery.MediaDownloadReceiver;
 import org.wikipedia.history.SearchActionModeCallback;
 import org.wikipedia.util.ResourceUtil;
+import org.wikipedia.util.log.L;
 import org.wikipedia.views.DefaultViewHolder;
 import org.wikipedia.views.DrawableItemDecoration;
 import org.wikipedia.views.PageItemView;
@@ -58,6 +65,8 @@
     @NonNull private List<Compilation> allItems = new ArrayList<>();
     @NonNull private List<Compilation> displayedItems = new ArrayList<>();
     private String currentSearchQuery;
+
+    private MediaDownloadReceiver downloadReceiver = new 
MediaDownloadReceiver();
 
     @NonNull
     public static RemoteCompilationsFragment newInstance() {
@@ -98,8 +107,15 @@
             }
         });
 
-        beginUpdate();
+        getContext().registerReceiver(downloadReceiver,
+                new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
+        downloadReceiver.setCallback(new MediaDownloadReceiver.Callback() {
+            @Override
+            public void onSuccess() {
+            }
+        });
 
+        beginUpdate();
         return view;
     }
 
@@ -111,6 +127,7 @@
 
     @Override
     public void onDestroyView() {
+        downloadReceiver.setCallback(null);
         unbinder.unbind();
         unbinder = null;
         super.onDestroyView();
@@ -237,15 +254,48 @@
 
         @Override
         public void onThumbClick(@Nullable Compilation item) {
-            onClick(item);
+
+
+
+
+
+
+
+            DownloadManager.Query query = new DownloadManager.Query();
+            final DownloadManager manager = (DownloadManager) 
getContext().getSystemService(Context.DOWNLOAD_SERVICE);
+
+            Cursor cursor = manager.query(query);
+            while (cursor.moveToNext()) {
+
+                String uri = 
cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
+
+                L.d(">>>>>> downloading: " + uri);
+
+                int bytesDownloaded = 
cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
+                int bytesTotal = 
cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
+
+            }
+
+
+
+
+
+
+
+
+
+            //onClick(item);
         }
 
         @Override
-        public void onActionClick(@Nullable Compilation item, @NonNull 
PageItemView view) {
+        public void onActionClick(@Nullable Compilation item, @NonNull View 
view) {
+            if (item != null) {
+                showCompilationOverflowMenu(item, view);
+            }
         }
 
         @Override
-        public void onSecondaryActionClick(@Nullable Compilation item, 
@NonNull PageItemView view) {
+        public void onSecondaryActionClick(@Nullable Compilation item, 
@NonNull View view) {
         }
     }
 
@@ -290,6 +340,24 @@
         }
     }
 
+    private void showCompilationOverflowMenu(@NonNull final Compilation 
compilation, @NonNull View anchorView) {
+        PopupMenu menu = new PopupMenu(anchorView.getContext(), anchorView);
+        menu.getMenuInflater().inflate(R.menu.menu_remote_compilation_item, 
menu.getMenu());
+        menu.setOnMenuItemClickListener(new 
PopupMenu.OnMenuItemClickListener() {
+            @Override
+            public boolean onMenuItemClick(MenuItem menuItem) {
+                switch (menuItem.getItemId()) {
+                    case R.id.menu_compilation_download:
+                        downloadReceiver.download(getContext(), compilation);
+                        return false;
+                    default:
+                        return false;
+                }
+            }
+        });
+        menu.show();
+    }
+
     private AppCompatActivity getAppCompatActivity() {
         return (AppCompatActivity) getActivity();
     }
diff --git 
a/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java 
b/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java
index 4140b7f..4b2723a 100644
--- a/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java
+++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java
@@ -708,7 +708,7 @@
         }
 
         @Override
-        public void onActionClick(@Nullable ReadingListPage page, @NonNull 
PageItemView view) {
+        public void onActionClick(@Nullable ReadingListPage page, @NonNull 
View view) {
             if (page == null || readingList == null) {
                 return;
             }
@@ -717,7 +717,7 @@
         }
 
         @Override
-        public void onSecondaryActionClick(@Nullable ReadingListPage page, 
@NonNull PageItemView view) {
+        public void onSecondaryActionClick(@Nullable ReadingListPage page, 
@NonNull View view) {
             if (page != null) {
                 if (page.isSaving()) {
                     Toast.makeText(getContext(), 
R.string.reading_list_article_save_in_progress, Toast.LENGTH_LONG).show();
diff --git a/app/src/main/java/org/wikipedia/views/PageItemView.java 
b/app/src/main/java/org/wikipedia/views/PageItemView.java
index 1b76a42..bab8ddf 100644
--- a/app/src/main/java/org/wikipedia/views/PageItemView.java
+++ b/app/src/main/java/org/wikipedia/views/PageItemView.java
@@ -32,8 +32,8 @@
         void onClick(@Nullable T item);
         boolean onLongClick(@Nullable T item);
         void onThumbClick(@Nullable T item);
-        void onActionClick(@Nullable T item, @NonNull PageItemView view);
-        void onSecondaryActionClick(@Nullable T item, @NonNull PageItemView 
view);
+        void onActionClick(@Nullable T item, @NonNull View view);
+        void onSecondaryActionClick(@Nullable T item, @NonNull View view);
     }
 
     @BindView(R.id.page_list_item_title) TextView titleView;
@@ -123,9 +123,9 @@
         }
     }
 
-    @OnClick(R.id.page_list_item_action_primary) void onActionClick() {
+    @OnClick(R.id.page_list_item_action_primary) void onActionClick(View v) {
         if (callback != null) {
-            callback.onActionClick(item, this);
+            callback.onActionClick(item, v);
         }
     }
 
diff --git a/app/src/main/res/menu/menu_remote_compilation_item.xml 
b/app/src/main/res/menu/menu_remote_compilation_item.xml
new file mode 100644
index 0000000..c1d932d
--- /dev/null
+++ b/app/src/main/res/menu/menu_remote_compilation_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android";>
+    <item android:id="@+id/menu_compilation_download"
+        android:title="@string/remote_compilation_download"/>
+</menu>
diff --git a/app/src/main/res/values-qq/strings.xml 
b/app/src/main/res/values-qq/strings.xml
index 066d05a..f613941 100644
--- a/app/src/main/res/values-qq/strings.xml
+++ b/app/src/main/res/values-qq/strings.xml
@@ -424,6 +424,7 @@
   <string name="offline_compilations_add">Button text for adding an offline 
compilation.</string>
   <string name="remote_compilations_title">Title shown on the toolbar of the 
activity that shows all downloadable compilations.</string>
   <string name="remote_compilations_description">Short description about 
compilations and their benefits.</string>
+  <string name="remote_compilation_download">Menu label for downloading a 
selected compilation.</string>
   <string name="storage_size_format">Format specifier where %.2f represents a 
decimal number with two significant figures to the right of the decimal 
point.</string>
   <string name="storage_size_gb">Abbreviated form for the unit of a 
gigabyte.</string>
   <string name="storage_size_free">Label that says how much free space is 
available on the device. The %.2f symbol is replaced with the number in 
gigabytes.</string>
diff --git a/app/src/main/res/values/strings.xml 
b/app/src/main/res/values/strings.xml
index 6830b46..646788e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -478,6 +478,7 @@
     <string name="offline_compilations_add">Add offline compilation</string>
     <string name="remote_compilations_title">All compilations</string>
     <string name="remote_compilations_description">Offline Compilations are 
large bundles of articles that can be downloaded as one file to your device, so 
you can continue browsing while offline.</string>
+    <string name="remote_compilation_download">Download</string>
     <string name="storage_size_format">%.2f</string>
     <string name="storage_size_gb">GB</string>
     <string name="storage_size_free">%.2f GB free</string>

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2741c14894d990c59c30bd685546c2dd61c5cab3
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dbrant <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to