From c9372162fb437d903fa12639dec7104faa1b8137 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 15 Mar 2018 13:31:14 +0300 Subject: add attachments button for headlines fragment also added dark variant for ic_attachment --- .../main/java/org/fox/ttrss/HeadlinesFragment.java | 13 +++ .../main/java/org/fox/ttrss/OnlineActivity.java | 102 +++++++++++---------- .../ttrss/offline/OfflineHeadlinesFragment.java | 54 +++++------ .../main/res/drawable-hdpi/ic_attachment_dark.png | Bin 0 -> 1165 bytes .../main/res/drawable-xhdpi/ic_attachment_dark.png | Bin 0 -> 1574 bytes .../res/drawable-xxhdpi/ic_attachment_dark.png | Bin 0 -> 2202 bytes .../res/drawable-xxxhdpi/ic_attachment_dark.png | Bin 0 -> 2894 bytes .../src/main/res/layout/headlines_row.xml | 11 +++ .../src/main/res/layout/headlines_row_unread.xml | 11 +++ org.fox.ttrss/src/main/res/values/attrs.xml | 1 + org.fox.ttrss/src/main/res/values/style.xml | 2 + 11 files changed, 120 insertions(+), 74 deletions(-) create mode 100755 org.fox.ttrss/src/main/res/drawable-hdpi/ic_attachment_dark.png create mode 100755 org.fox.ttrss/src/main/res/drawable-xhdpi/ic_attachment_dark.png create mode 100755 org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_attachment_dark.png create mode 100755 org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_attachment_dark.png diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java index c5165399..3e7cc24f 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java @@ -760,6 +760,7 @@ public class HeadlinesFragment extends StateSavedFragment { public View headlineHeader; public View flavorImageOverflow; public TextureView flavorVideoView; + public ImageView attachmentsView; //public int position; public boolean flavorImageEmbedded; public ProgressTarget flavorProgressTarget; @@ -802,6 +803,7 @@ public class HeadlinesFragment extends StateSavedFragment { headlineHeader = v.findViewById(R.id.headline_header); flavorImageOverflow = v.findViewById(R.id.gallery_overflow); flavorVideoView = v.findViewById(R.id.flavor_video); + attachmentsView = v.findViewById(R.id.attachments); if (flavorImageView != null && flavorImageLoadingBar != null) { flavorProgressTarget = new FlavorProgressTarget<>(new GlideDrawableImageViewTarget(flavorImageView), flavorImageLoadingBar); @@ -1076,6 +1078,17 @@ public class HeadlinesFragment extends StateSavedFragment { }); } + if (holder.attachmentsView != null) { + holder.attachmentsView.setVisibility(article.attachments != null && article.attachments.size() > 0 ? View.VISIBLE : View.GONE); + + holder.attachmentsView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + m_activity.displayAttachments(article); + } + }); + } + if (holder.excerptView != null) { if (!m_prefs.getBoolean("headlines_show_content", true)) { holder.excerptView.setVisibility(View.GONE); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java index fd22ce10..68104f8b 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java @@ -453,7 +453,58 @@ public class OnlineActivity extends CommonActivity { return super.onContextItemSelected(item); } } - + + public void displayAttachments(Article article) { + if (article != null && article.attachments != null && article.attachments.size() > 0) { + CharSequence[] items = new CharSequence[article.attachments.size()]; + final CharSequence[] itemUrls = new CharSequence[article.attachments.size()]; + + for (int i = 0; i < article.attachments.size(); i++) { + items[i] = article.attachments.get(i).title != null ? article.attachments.get(i).content_url : + article.attachments.get(i).content_url; + + itemUrls[i] = article.attachments.get(i).content_url; + } + + Dialog dialog = new Dialog(OnlineActivity.this); + AlertDialog.Builder builder = new AlertDialog.Builder(OnlineActivity.this) + .setTitle(R.string.attachments_prompt) + .setCancelable(true) + .setSingleChoiceItems(items, 0, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // + } + }).setNeutralButton(R.string.attachment_copy, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition(); + + copyToClipboard((String)itemUrls[selectedPosition]); + } + }).setPositiveButton(R.string.attachment_view, new OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, int id) { + int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition(); + + openUri(Uri.parse((String)itemUrls[selectedPosition])); + + dialog.cancel(); + } + }).setNegativeButton(R.string.dialog_cancel, new OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, int id) { + dialog.cancel(); + } + }); + + dialog = builder.create(); + dialog.show(); + } + } + @Override public boolean onOptionsItemSelected(MenuItem item) { final HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); @@ -467,54 +518,9 @@ public class OnlineActivity extends CommonActivity { case R.id.toggle_attachments: if (true) { Article article = ap.getSelectedArticle(); - - if (article != null && article.attachments != null && article.attachments.size() > 0) { - CharSequence[] items = new CharSequence[article.attachments.size()]; - final CharSequence[] itemUrls = new CharSequence[article.attachments.size()]; - - for (int i = 0; i < article.attachments.size(); i++) { - items[i] = article.attachments.get(i).title != null ? article.attachments.get(i).content_url : - article.attachments.get(i).content_url; - - itemUrls[i] = article.attachments.get(i).content_url; - } - - Dialog dialog = new Dialog(OnlineActivity.this); - AlertDialog.Builder builder = new AlertDialog.Builder(OnlineActivity.this) - .setTitle(R.string.attachments_prompt) - .setCancelable(true) - .setSingleChoiceItems(items, 0, new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - // - } - }).setNeutralButton(R.string.attachment_copy, new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition(); - - copyToClipboard((String)itemUrls[selectedPosition]); - } - }).setPositiveButton(R.string.attachment_view, new OnClickListener() { - - @Override - public void onClick(DialogInterface dialog, int id) { - int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition(); - - openUri(Uri.parse((String)itemUrls[selectedPosition])); - - dialog.cancel(); - } - }).setNegativeButton(R.string.dialog_cancel, new OnClickListener() { - - @Override - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - dialog = builder.create(); - dialog.show(); + if (article != null) { + displayAttachments(article); } } return true; diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java index 13dd3bb1..4f056522 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java @@ -343,7 +343,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis View view = inflater.inflate(R.layout.fragment_headlines_offline, container, false); - m_swipeLayout = (SwipeRefreshLayout) view.findViewById(R.id.headlines_swipe_container); + m_swipeLayout = view.findViewById(R.id.headlines_swipe_container); m_swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override @@ -354,9 +354,9 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis m_cursor = createCursor(); - m_list = (ListView)view.findViewById(R.id.headlines_list); + m_list = view.findViewById(R.id.headlines_list); - FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.headlines_fab); + FloatingActionButton fab = view.findViewById(R.id.headlines_fab); fab.setVisibility(View.GONE); if (m_activity.isSmallScreen()) { @@ -524,6 +524,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis public ImageView flavorVideoKindView; public View flavorImageOverflow; public View headlineHeader; + public ImageView attachmentsView; public ArticleViewHolder(View v) { @@ -548,25 +549,26 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis } }); - titleView = (TextView)v.findViewById(R.id.title); - - feedTitleView = (TextView)v.findViewById(R.id.feed_title); - markedView = (ImageView)v.findViewById(R.id.marked); - publishedView = (ImageView)v.findViewById(R.id.published); - excerptView = (TextView)v.findViewById(R.id.excerpt); - flavorImageView = (ImageView) v.findViewById(R.id.flavor_image); - authorView = (TextView)v.findViewById(R.id.author); - dateView = (TextView) v.findViewById(R.id.date); - selectionBoxView = (CheckBox) v.findViewById(R.id.selected); - menuButtonView = (ImageView) v.findViewById(R.id.article_menu_button); - flavorImageHolder = (ViewGroup) v.findViewById(R.id.flavorImageHolder); - flavorImageLoadingBar = (ProgressBar) v.findViewById(R.id.flavorImageLoadingBar); + titleView = v.findViewById(R.id.title); + + feedTitleView = v.findViewById(R.id.feed_title); + markedView = v.findViewById(R.id.marked); + publishedView = v.findViewById(R.id.published); + excerptView = v.findViewById(R.id.excerpt); + flavorImageView = v.findViewById(R.id.flavor_image); + authorView = v.findViewById(R.id.author); + dateView = v.findViewById(R.id.date); + selectionBoxView = v.findViewById(R.id.selected); + menuButtonView = v.findViewById(R.id.article_menu_button); + flavorImageHolder = v.findViewById(R.id.flavorImageHolder); + flavorImageLoadingBar = v.findViewById(R.id.flavorImageLoadingBar); headlineFooter = v.findViewById(R.id.headline_footer); - textImage = (ImageView) v.findViewById(R.id.text_image); - textChecked = (ImageView) v.findViewById(R.id.text_checked); - flavorVideoKindView = (ImageView) v.findViewById(R.id.flavor_video_kind); + textImage = v.findViewById(R.id.text_image); + textChecked = v.findViewById(R.id.text_checked); + flavorVideoKindView = v.findViewById(R.id.flavor_video_kind); headlineHeader = v.findViewById(R.id.headline_header); flavorImageOverflow = v.findViewById(R.id.gallery_overflow); + attachmentsView = v.findViewById(R.id.attachments); } } @@ -661,12 +663,8 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis @Override public boolean onResourceReady(GlideDrawable resource, String model, Target target, boolean isFromMemoryCache, boolean isFirstResource) { - if (resource.getIntrinsicWidth() < HeadlinesFragment.THUMB_IMG_MIN_SIZE || - resource.getIntrinsicHeight() < HeadlinesFragment.THUMB_IMG_MIN_SIZE) { - return true; - } else { - return false; - } + return resource.getIntrinsicWidth() < HeadlinesFragment.THUMB_IMG_MIN_SIZE || + resource.getIntrinsicHeight() < HeadlinesFragment.THUMB_IMG_MIN_SIZE; } }) .into(holder.textImage); @@ -812,6 +810,10 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis TypedValue tvAccent = new TypedValue(); m_activity.getTheme().resolveAttribute(R.attr.colorAccent, tvAccent, true); + if (holder.attachmentsView != null) { + holder.attachmentsView.setVisibility(View.GONE); + } + if (holder.markedView != null) { TypedValue tv = new TypedValue(); @@ -1237,7 +1239,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis try { m_adapter.notifyDataSetChanged(); - ListView list = (ListView)getView().findViewById(R.id.headlines_list); + ListView list = getView().findViewById(R.id.headlines_list); Log.d(TAG, articleId + " position " + getArticleIdPosition(articleId)); diff --git a/org.fox.ttrss/src/main/res/drawable-hdpi/ic_attachment_dark.png b/org.fox.ttrss/src/main/res/drawable-hdpi/ic_attachment_dark.png new file mode 100755 index 00000000..27a2b703 Binary files /dev/null and b/org.fox.ttrss/src/main/res/drawable-hdpi/ic_attachment_dark.png differ diff --git a/org.fox.ttrss/src/main/res/drawable-xhdpi/ic_attachment_dark.png b/org.fox.ttrss/src/main/res/drawable-xhdpi/ic_attachment_dark.png new file mode 100755 index 00000000..7a1834a4 Binary files /dev/null and b/org.fox.ttrss/src/main/res/drawable-xhdpi/ic_attachment_dark.png differ diff --git a/org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_attachment_dark.png b/org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_attachment_dark.png new file mode 100755 index 00000000..711b41d1 Binary files /dev/null and b/org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_attachment_dark.png differ diff --git a/org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_attachment_dark.png b/org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_attachment_dark.png new file mode 100755 index 00000000..fd4755e5 Binary files /dev/null and b/org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_attachment_dark.png differ diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row.xml b/org.fox.ttrss/src/main/res/layout/headlines_row.xml index a57b6953..29181727 100755 --- a/org.fox.ttrss/src/main/res/layout/headlines_row.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row.xml @@ -222,6 +222,17 @@ android:textSize="12sp" android:textStyle="italic" /> + + + + + diff --git a/org.fox.ttrss/src/main/res/values/style.xml b/org.fox.ttrss/src/main/res/values/style.xml index d7d3154d..388226a6 100755 --- a/org.fox.ttrss/src/main/res/values/style.xml +++ b/org.fox.ttrss/src/main/res/values/style.xml @@ -58,6 +58,7 @@ @drawable/ic_coffee_dark @drawable/ic_folder_outline_dark @drawable/ic_dots_vertical_dark + @drawable/ic_attachment_dark @drawable/drawer_header @@ -119,6 +120,7 @@ @drawable/ic_coffee @drawable/ic_folder_outline @drawable/ic_dots_vertical + @drawable/ic_attachment @drawable/drawer_header_dark -- cgit v1.2.3