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