diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java index b74360ba..190810b9 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java @@ -409,6 +409,7 @@ public class ChanActivity extends BaseActivity implements AdapterView.OnItemSele setMenuItemEnabled(menu.findItem(R.id.action_reload_tablet), !slidable); setMenuItemEnabled(menu.findItem(R.id.action_pin), !slidable || !open); + setMenuItemEnabled(menu.findItem(R.id.action_download_album), !slidable || !open); setMenuItemEnabled(menu.findItem(R.id.action_reply), slidable); setMenuItemEnabled(menu.findItem(R.id.action_reply_tablet), !slidable); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java index 975a5c2a..00c7f01e 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java @@ -24,6 +24,7 @@ import android.os.Bundle; import android.util.AttributeSet; import android.view.Gravity; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; @@ -44,6 +45,7 @@ import com.android.volley.ServerError; import com.android.volley.VolleyError; import org.floens.chan.R; +import org.floens.chan.core.ChanPreferences; import org.floens.chan.core.loader.EndOfLineException; import org.floens.chan.core.loader.Loader; import org.floens.chan.core.manager.ThreadManager; @@ -54,9 +56,13 @@ import org.floens.chan.ui.activity.BaseActivity; import org.floens.chan.ui.activity.ImageViewActivity; import org.floens.chan.ui.adapter.PostAdapter; import org.floens.chan.ui.view.LoadView; +import org.floens.chan.utils.ImageSaver; import org.floens.chan.utils.ThemeHelper; import org.floens.chan.utils.Utils; +import java.util.ArrayList; +import java.util.List; + import javax.net.ssl.SSLException; public class ThreadFragment extends Fragment implements ThreadManager.ThreadManagerListener, PostAdapter.PostAdapterListener { @@ -147,6 +153,13 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana loadable = null; } + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setHasOptionsMenu(true); + } + @Override public void onStart() { super.onStart(); @@ -185,6 +198,39 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana } } + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (loadable.isThreadMode()) { + switch (item.getItemId()) { + case R.id.action_download_album: + // Get the posts with images + ArrayList imagePosts = new ArrayList<>(); + for (Post post : postAdapter.getList()) { + if (post.hasImage) { + imagePosts.add(post); + } + } + if (imagePosts.size() > 0) { + List list = new ArrayList<>(); + + String folderName = Post.generateTitle(imagePosts.get(0), 10); + + String filename; + for (Post post : imagePosts) { + filename = (ChanPreferences.getImageSaveOriginalFilename() ? post.tim : post.filename) + "." + post.ext; + list.add(new ImageSaver.DownloadPair(post.imageUrl, filename)); + } + + ImageSaver.getInstance().saveAll(getActivity(), folderName, list); + } + + return true; + } + } + + return super.onOptionsItemSelected(item); + } + @Override public void onThumbnailClicked(Post source) { if (postAdapter != null) { diff --git a/Clover/app/src/main/res/menu/base.xml b/Clover/app/src/main/res/menu/base.xml index f05d05dc..b1a80875 100644 --- a/Clover/app/src/main/res/menu/base.xml +++ b/Clover/app/src/main/res/menu/base.xml @@ -106,14 +106,20 @@ along with this program. If not, see . android:title="@string/action_share" /> + +