summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-01-03 15:09:30 +0400
committerAndrew Dolgov <[email protected]>2013-01-03 15:09:30 +0400
commitf78ad58b79893b3ba236ef47fba40bbc2b588843 (patch)
treea351315ea0e9b5e0bda37dd5b5ba7f9d10c1b23f /src
parent4b92a16f101359cac1df7fd8fded54c0af2d5f20 (diff)
rework attachment UI to use a dialog, update published actionbar icon
Diffstat (limited to 'src')
-rw-r--r--src/org/fox/ttrss/ArticleFragment.java64
-rw-r--r--src/org/fox/ttrss/FeedsActivity.java14
-rw-r--r--src/org/fox/ttrss/HeadlinesActivity.java16
-rw-r--r--src/org/fox/ttrss/OnlineActivity.java57
-rw-r--r--src/org/fox/ttrss/offline/.OfflineActivity.java.swpbin0 -> 16384 bytes
-rw-r--r--src/org/fox/ttrss/offline/OfflineArticleFragment.java2
6 files changed, 87 insertions, 66 deletions
diff --git a/src/org/fox/ttrss/ArticleFragment.java b/src/org/fox/ttrss/ArticleFragment.java
index 0cb36b4d..b2b14f00 100644
--- a/src/org/fox/ttrss/ArticleFragment.java
+++ b/src/org/fox/ttrss/ArticleFragment.java
@@ -256,22 +256,12 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl
"</head>" +
"<body>" + articleContent;
- final Spinner spinner = (Spinner) view.findViewById(R.id.attachments);
-
if (m_article.attachments != null && m_article.attachments.size() != 0) {
- ArrayList<Attachment> spinnerArray = new ArrayList<Attachment>();
-
- ArrayAdapter<Attachment> spinnerArrayAdapter = new ArrayAdapter<Attachment>(
- getActivity(), android.R.layout.simple_spinner_item, spinnerArray);
-
- spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-
String flatContent = articleContent.replaceAll("[\r\n]", "");
boolean hasImages = flatContent.matches(".*?<img[^>+].*?");
for (Attachment a : m_article.attachments) {
- if (a.content_type != null && a.content_url != null) {
-
+ if (a.content_type != null && a.content_url != null) {
try {
if (a.content_type.indexOf("image") != -1 &&
(!hasImages || m_article.always_display_attachments)) {
@@ -287,60 +277,8 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl
} catch (Exception e) {
e.printStackTrace();
}
-
- spinnerArray.add(a);
}
}
-
- spinner.setAdapter(spinnerArrayAdapter);
-
- Button attachmentsView = (Button) view.findViewById(R.id.attachment_view);
-
- attachmentsView.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- Attachment attachment = (Attachment) spinner.getSelectedItem();
-
- Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(attachment.content_url));
- startActivity(browserIntent);
- }
- });
-
- Button attachmentsCopy = (Button) view.findViewById(R.id.attachment_copy);
-
- attachmentsCopy.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- Attachment attachment = (Attachment) spinner.getSelectedItem();
-
- if (attachment != null) {
- m_activity.copyToClipboard(attachment.content_url);
- }
- }
- });
-
- Button attachmentsShare = (Button) view.findViewById(R.id.attachment_share);
-
- if (!m_activity.isPortrait()) {
- attachmentsShare.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- Attachment attachment = (Attachment) spinner.getSelectedItem();
-
- if (attachment != null) {
- m_activity.shareText(attachment.content_url);
- }
- }
- });
- } else {
- attachmentsShare.setVisibility(View.GONE);
- }
-
- } else {
- view.findViewById(R.id.attachments_holder).setVisibility(View.GONE);
}
content += "</body></html>";
diff --git a/src/org/fox/ttrss/FeedsActivity.java b/src/org/fox/ttrss/FeedsActivity.java
index 58f8eda6..bb423285 100644
--- a/src/org/fox/ttrss/FeedsActivity.java
+++ b/src/org/fox/ttrss/FeedsActivity.java
@@ -159,6 +159,20 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe
m_menu.findItem(R.id.update_headlines).setVisible(false);
}
+ if (af != null) {
+ if (af.getSelectedArticle() != null && af.getSelectedArticle().attachments != null && af.getSelectedArticle().attachments.size() > 0) {
+ if (!isCompatMode()) {
+ m_menu.findItem(R.id.toggle_attachments).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+ }
+ m_menu.findItem(R.id.toggle_attachments).setVisible(true);
+ } else {
+ if (!isCompatMode()) {
+ m_menu.findItem(R.id.toggle_attachments).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+ }
+ m_menu.findItem(R.id.toggle_attachments).setVisible(false);
+ }
+ }
+
MenuItem item = m_menu.findItem(R.id.show_feeds);
if (getUnreadOnly()) {
diff --git a/src/org/fox/ttrss/HeadlinesActivity.java b/src/org/fox/ttrss/HeadlinesActivity.java
index 81c4ca8c..68f226e7 100644
--- a/src/org/fox/ttrss/HeadlinesActivity.java
+++ b/src/org/fox/ttrss/HeadlinesActivity.java
@@ -149,10 +149,24 @@ public class HeadlinesActivity extends OnlineActivity implements HeadlinesEventL
m_menu.setGroupVisible(R.id.menu_group_headlines, !isPortrait()&& hf != null && hf.getSelectedArticles().size() == 0);
m_menu.setGroupVisible(R.id.menu_group_headlines_selection, !isPortrait() && hf != null && hf.getSelectedArticles().size() != 0);
- Fragment af = getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
+ ArticlePager af = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
m_menu.setGroupVisible(R.id.menu_group_article, af != null);
+ if (af != null) {
+ if (af.getSelectedArticle() != null && af.getSelectedArticle().attachments != null && af.getSelectedArticle().attachments.size() > 0) {
+ if (!isCompatMode()) {
+ m_menu.findItem(R.id.toggle_attachments).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+ }
+ m_menu.findItem(R.id.toggle_attachments).setVisible(true);
+ } else {
+ if (!isCompatMode()) {
+ m_menu.findItem(R.id.toggle_attachments).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+ }
+ m_menu.findItem(R.id.toggle_attachments).setVisible(false);
+ }
+ }
+
m_menu.findItem(R.id.search).setVisible(false);
}
}
diff --git a/src/org/fox/ttrss/OnlineActivity.java b/src/org/fox/ttrss/OnlineActivity.java
index 004fab6e..99b13a31 100644
--- a/src/org/fox/ttrss/OnlineActivity.java
+++ b/src/org/fox/ttrss/OnlineActivity.java
@@ -1,6 +1,8 @@
package org.fox.ttrss;
import java.lang.reflect.Type;
+import java.net.MalformedURLException;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -9,6 +11,7 @@ import org.fox.ttrss.offline.OfflineDownloadService;
import org.fox.ttrss.offline.OfflineUploadService;
import org.fox.ttrss.types.Article;
import org.fox.ttrss.types.ArticleList;
+import org.fox.ttrss.types.Attachment;
import org.fox.ttrss.types.Feed;
import org.fox.ttrss.types.Label;
@@ -534,6 +537,60 @@ public class OnlineActivity extends CommonActivity {
case android.R.id.home:
finish();
return true;
+ 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)
+ .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();
+
+ Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse((String)itemUrls[selectedPosition]));
+ startActivity(browserIntent);
+
+ dialog.cancel();
+ }
+ }).setNegativeButton(R.string.dialog_cancel, new OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ dialog.cancel();
+ }
+ });
+
+ dialog = builder.create();
+ dialog.show();
+ }
+ }
+ return true;
case R.id.donate:
if (true) {
openUnlockUrl();
diff --git a/src/org/fox/ttrss/offline/.OfflineActivity.java.swp b/src/org/fox/ttrss/offline/.OfflineActivity.java.swp
new file mode 100644
index 00000000..56c1f525
--- /dev/null
+++ b/src/org/fox/ttrss/offline/.OfflineActivity.java.swp
Binary files differ
diff --git a/src/org/fox/ttrss/offline/OfflineArticleFragment.java b/src/org/fox/ttrss/offline/OfflineArticleFragment.java
index 0cf5cc4a..61ea7d39 100644
--- a/src/org/fox/ttrss/offline/OfflineArticleFragment.java
+++ b/src/org/fox/ttrss/offline/OfflineArticleFragment.java
@@ -227,8 +227,6 @@ public class OfflineArticleFragment extends Fragment implements GestureDetector.
articleContent = doc.toString();
}
- view.findViewById(R.id.attachments_holder).setVisibility(View.GONE);
-
String align = m_prefs.getBoolean("justify_article_text", true) ? "text-align : justified" : "";
switch (Integer.parseInt(m_prefs.getString("font_size", "0"))) {