summaryrefslogtreecommitdiff
path: root/org.fox.ttrss/src/main
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2018-03-15 13:31:14 +0300
committerAndrew Dolgov <[email protected]>2018-03-15 13:31:14 +0300
commitc9372162fb437d903fa12639dec7104faa1b8137 (patch)
treef339f7ba3c36e99a3686a8e343e887c8bf7f0fcd /org.fox.ttrss/src/main
parente88de0842e6523f1548cc54d965182b693bc9dbf (diff)
add attachments button for headlines fragment
also added dark variant for ic_attachment
Diffstat (limited to 'org.fox.ttrss/src/main')
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java13
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java102
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java54
-rwxr-xr-xorg.fox.ttrss/src/main/res/drawable-hdpi/ic_attachment_dark.pngbin0 -> 1165 bytes
-rwxr-xr-xorg.fox.ttrss/src/main/res/drawable-xhdpi/ic_attachment_dark.pngbin0 -> 1574 bytes
-rwxr-xr-xorg.fox.ttrss/src/main/res/drawable-xxhdpi/ic_attachment_dark.pngbin0 -> 2202 bytes
-rwxr-xr-xorg.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_attachment_dark.pngbin0 -> 2894 bytes
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/headlines_row.xml11
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/headlines_row_unread.xml11
-rwxr-xr-xorg.fox.ttrss/src/main/res/values/attrs.xml1
-rwxr-xr-xorg.fox.ttrss/src/main/res/values/style.xml2
11 files changed, 120 insertions, 74 deletions
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<String, GlideDrawable> 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<GlideDrawable> 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
--- /dev/null
+++ b/org.fox.ttrss/src/main/res/drawable-hdpi/ic_attachment_dark.png
Binary files 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
--- /dev/null
+++ b/org.fox.ttrss/src/main/res/drawable-xhdpi/ic_attachment_dark.png
Binary files 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
--- /dev/null
+++ b/org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_attachment_dark.png
Binary files 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
--- /dev/null
+++ b/org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_attachment_dark.png
Binary files 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
@@ -223,6 +223,17 @@
android:textStyle="italic" />
<ImageView
+ android:id="@+id/attachments"
+ android:layout_width="wrap_content"
+ android:layout_height="24dp"
+ android:layout_weight="0"
+ android:background="@drawable/ripple"
+ android:clickable="true"
+ android:paddingLeft="4dp"
+ android:paddingRight="4dp"
+ android:src="?ic_attachment" />
+
+ <ImageView
android:id="@+id/marked"
android:layout_width="wrap_content"
android:layout_height="24dp"
diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml b/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml
index 8c09cc2a..773929d6 100755
--- a/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml
+++ b/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml
@@ -222,6 +222,17 @@
android:textStyle="italic" />
<ImageView
+ android:id="@+id/attachments"
+ android:layout_width="wrap_content"
+ android:layout_height="24dp"
+ android:layout_weight="0"
+ android:background="@drawable/ripple"
+ android:clickable="true"
+ android:paddingLeft="4dp"
+ android:paddingRight="4dp"
+ android:src="?ic_attachment" />
+
+ <ImageView
android:id="@+id/marked"
android:layout_width="wrap_content"
android:layout_height="24dp"
diff --git a/org.fox.ttrss/src/main/res/values/attrs.xml b/org.fox.ttrss/src/main/res/values/attrs.xml
index e0bfb02c..86b9541b 100755
--- a/org.fox.ttrss/src/main/res/values/attrs.xml
+++ b/org.fox.ttrss/src/main/res/values/attrs.xml
@@ -45,6 +45,7 @@
<attr name="ic_coffee" format="reference" />
<attr name="ic_folder_outline" format="reference" />
<attr name="ic_dots_vertical" format="reference" />
+ <attr name="ic_attachment" format="reference" />
<declare-styleable name="ScrimInsetsView">
<attr format="reference|color" name="insetForeground">
</attr></declare-styleable>
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 @@
<item name="ic_coffee">@drawable/ic_coffee_dark</item>
<item name="ic_folder_outline">@drawable/ic_folder_outline_dark</item>
<item name="ic_dots_vertical">@drawable/ic_dots_vertical_dark</item>
+ <item name="ic_attachment">@drawable/ic_attachment_dark</item>
<item name="drawer_header">@drawable/drawer_header</item>
</style>
@@ -119,6 +120,7 @@
<item name="ic_coffee">@drawable/ic_coffee</item>
<item name="ic_folder_outline">@drawable/ic_folder_outline</item>
<item name="ic_dots_vertical">@drawable/ic_dots_vertical</item>
+ <item name="ic_attachment">@drawable/ic_attachment</item>
<item name="drawer_header">@drawable/drawer_header_dark</item>
</style>