From 25ae3fd11b0a564dc495f1c158fd2b4ee3d125e2 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 3 Dec 2015 21:28:03 +0300 Subject: enable ripple for comic overflow --- .../java/org/fox/ttcomics2/ComicListFragment.java | 103 +++++++++++++-------- .../src/main/res/layout/comics_grid_row.xml | 23 +++-- 2 files changed, 79 insertions(+), 47 deletions(-) mode change 100644 => 100755 org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java (limited to 'org.fox.ttcomics') diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java old mode 100644 new mode 100755 index bec7a6f..63ede5a --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java @@ -15,6 +15,7 @@ import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; +import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -23,6 +24,7 @@ import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; import android.widget.ImageView; +import android.widget.PopupMenu; import android.widget.ProgressBar; import android.widget.TextView; @@ -142,12 +144,12 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { Cursor c = (Cursor) getItem(position); - String filePath = c.getString(c.getColumnIndex("path")); - String fileBaseName = c.getString(c.getColumnIndex("filename")); - String firstChild = c.getString(c.getColumnIndex("firstchild")); + final String filePath = c.getString(c.getColumnIndex("path")); + final String fileBaseName = c.getString(c.getColumnIndex("filename")); + final String firstChild = c.getString(c.getColumnIndex("firstchild")); int lastPos = c.getInt(c.getColumnIndex("position")); - int size = c.getInt(c.getColumnIndex("size")); + final int size = c.getInt(c.getColumnIndex("size")); final ComicsViewHolder holder; @@ -205,15 +207,36 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { } else { holder.overflow.setImageResource(R.drawable.ic_dots_vertical); + } - holder.overflow.setOnClickListener(new View.OnClickListener() { + holder.overflow.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - getActivity().openContextMenu(v); + @Override + public void onClick(View v) { + PopupMenu popup = new PopupMenu(getActivity(), v); + MenuInflater inflater = popup.getMenuInflater(); + inflater.inflate(R.menu.context_comic_archive, popup.getMenu()); + + if (size == SIZE_DIR) { + popup.getMenu().findItem(R.id.menu_mark_as_read).setVisible(false); + popup.getMenu().findItem(R.id.menu_reset_progress).setVisible(false); } - }); - } + + if (!m_activity.m_syncClient.hasOwner()) { + popup.getMenu().findItem(R.id.menu_reset_progress).setVisible(false); + } + + popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + return onComicMenuItemSelected(item, filePath + "/" + fileBaseName); + } + }); + + popup.show(); + } + }); + } File thumbnailFile = new File(CommonActivity.getCacheFileName(m_activity, firstChild != null ? firstChild : filePath + "/" + fileBaseName)); @@ -322,14 +345,41 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { int size = c.getInt(c.getColumnIndex("size")); if (size == SIZE_DIR) { - menu.findItem(R.id.menu_mark_as_read).setEnabled(false); - menu.findItem(R.id.menu_reset_progress).setEnabled(false); + menu.findItem(R.id.menu_mark_as_read).setVisible(false); + menu.findItem(R.id.menu_reset_progress).setVisible(false); + } + + if (!m_activity.m_syncClient.hasOwner()) { + menu.findItem(R.id.menu_reset_progress).setVisible(false); } } super.onCreateContextMenu(menu, v, menuInfo); } - + + protected boolean onComicMenuItemSelected(MenuItem item, String fileName) { + if (fileName == null) { + return false; + } + + switch (item.getItemId()) { + case R.id.menu_open: + m_activity.onComicArchiveSelected(fileName); + return true; + case R.id.menu_reset_progress: + m_activity.resetProgress(fileName); + return true; + case R.id.menu_mark_as_read: + m_activity.m_databaseHelper.setLastPosition(fileName, + m_activity.m_databaseHelper.getSize(fileName) - 1); + + updateWithoutRescan(); + return true; + default: + return false; + } + } + @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item @@ -338,32 +388,7 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { Cursor c = (Cursor) m_adapter.getItem(info.position); String fileName = c.getString(c.getColumnIndex("path")) + "/" + c.getString(c.getColumnIndex("filename")); - switch (item.getItemId()) { - case R.id.menu_open: - if (fileName != null) { - m_activity.onComicArchiveSelected(fileName); - } - return true; - case R.id.menu_reset_progress: - if (fileName != null) { - m_activity.resetProgress(fileName); - } - return true; - case R.id.menu_mark_as_read: - - if (fileName != null) { - - m_activity.m_databaseHelper.setLastPosition(fileName, - m_activity.m_databaseHelper.getSize(fileName) - 1); - - updateWithoutRescan(); - } - - return true; - default: - Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); - return super.onContextItemSelected(item); - } + return onComicMenuItemSelected(item, fileName); } private Cursor createCursor() { diff --git a/org.fox.ttcomics/src/main/res/layout/comics_grid_row.xml b/org.fox.ttcomics/src/main/res/layout/comics_grid_row.xml index 5d9335e..9c7c06e 100755 --- a/org.fox.ttcomics/src/main/res/layout/comics_grid_row.xml +++ b/org.fox.ttcomics/src/main/res/layout/comics_grid_row.xml @@ -66,14 +66,21 @@ android:textSize="12sp" /> - + + + + \ No newline at end of file -- cgit v1.2.3