diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/org/fox/ttrss/ArticleFragment.java | 38 | ||||
| -rw-r--r-- | src/org/fox/ttrss/ArticlePager.java | 17 | ||||
| -rw-r--r-- | src/org/fox/ttrss/CommonActivity.java | 41 | ||||
| -rw-r--r-- | src/org/fox/ttrss/FeedsActivity.java | 6 | ||||
| -rw-r--r-- | src/org/fox/ttrss/GlobalState.java | 2 | ||||
| -rw-r--r-- | src/org/fox/ttrss/HeadlinesActivity.java | 6 | ||||
| -rw-r--r-- | src/org/fox/ttrss/HeadlinesFragment.java | 14 | ||||
| -rw-r--r-- | src/org/fox/ttrss/OnlineActivity.java | 146 | ||||
| -rw-r--r-- | src/org/fox/ttrss/offline/OfflineActivity.java | 58 | ||||
| -rw-r--r-- | src/org/fox/ttrss/offline/OfflineArticlePager.java | 12 | ||||
| -rw-r--r-- | src/org/fox/ttrss/offline/OfflineFeedsActivity.java | 8 | ||||
| -rw-r--r-- | src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java | 6 |
12 files changed, 254 insertions, 100 deletions
diff --git a/src/org/fox/ttrss/ArticleFragment.java b/src/org/fox/ttrss/ArticleFragment.java index cb2c94f4..1fa76bcc 100644 --- a/src/org/fox/ttrss/ArticleFragment.java +++ b/src/org/fox/ttrss/ArticleFragment.java @@ -16,16 +16,19 @@ import android.annotation.SuppressLint; import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.graphics.Typeface;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.text.Html;
+import android.util.Log;
import android.util.TypedValue;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.GestureDetector;
import android.view.LayoutInflater;
+import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
@@ -34,7 +37,9 @@ import android.webkit.WebChromeClient; import android.webkit.WebSettings;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.webkit.WebView;
+import android.webkit.WebView.HitTestResult;
import android.widget.TextView;
+import android.widget.AdapterView.AdapterContextMenuInfo;
public class ArticleFragment extends Fragment implements GestureDetector.OnDoubleTapListener {
private final String TAG = this.getClass().getSimpleName();
@@ -59,9 +64,26 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl @Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
-
- getActivity().getMenuInflater().inflate(R.menu.article_link_context_menu, menu);
- menu.setHeaderTitle(m_article.title);
+
+ if (v.getId() == R.id.content) {
+ HitTestResult result = ((WebView)v).getHitTestResult();
+
+ if (result != null && (result.getType() == HitTestResult.IMAGE_TYPE || result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE)) {
+ menu.setHeaderTitle(result.getExtra());
+ getActivity().getMenuInflater().inflate(R.menu.article_content_img_context_menu, menu);
+
+ /* FIXME I have no idea how to do this correctly ;( */
+
+ m_activity.setLastContentImageHitTestUrl(result.getExtra());
+
+ } else {
+ menu.setHeaderTitle(m_article.title);
+ getActivity().getMenuInflater().inflate(R.menu.article_link_context_menu, menu);
+ }
+ } else {
+ menu.setHeaderTitle(m_article.title);
+ getActivity().getMenuInflater().inflate(R.menu.article_link_context_menu, menu);
+ }
super.onCreateContextMenu(menu, v, menuInfo);
@@ -88,10 +110,12 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl String titleStr;
if (m_article.title.length() > 200)
- titleStr = m_article.title.substring(0, 200) + "�";
+ titleStr = m_article.title.substring(0, 200) + "...";
else
titleStr = m_article.title;
+
+ title.setTypeface(null, m_article.unread ? Typeface.BOLD : Typeface.NORMAL);
title.setText(Html.fromHtml(titleStr));
//title.setPaintFlags(title.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
title.setOnClickListener(new OnClickListener() {
@@ -143,6 +167,8 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl WebView web = (WebView)view.findViewById(R.id.content);
if (web != null) {
+ registerForContextMenu(web);
+
web.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int progress) {
@@ -319,7 +345,6 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl out.putParcelable("article", m_article);
}
-
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
@@ -350,8 +375,7 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl @Override
public void onLongPress(MotionEvent e) {
- // TODO Auto-generated method stub
-
+ m_activity.openContextMenu(getView());
}
@Override
diff --git a/src/org/fox/ttrss/ArticlePager.java b/src/org/fox/ttrss/ArticlePager.java index fdf64191..258c41b8 100644 --- a/src/org/fox/ttrss/ArticlePager.java +++ b/src/org/fox/ttrss/ArticlePager.java @@ -24,6 +24,8 @@ import android.view.ViewGroup; import android.view.WindowManager;
import com.google.gson.JsonElement;
+import com.viewpagerindicator.TitlePageIndicator;
+import com.viewpagerindicator.UnderlinePageIndicator;
public class ArticlePager extends Fragment {
@@ -93,7 +95,7 @@ public class ArticlePager extends Fragment { m_adapter = new PagerAdapter(getActivity().getSupportFragmentManager());
ViewPager pager = (ViewPager) view.findViewById(R.id.article_pager);
-
+
int position = m_articles.indexOf(m_article);
m_listener.onArticleSelected(m_article, false);
@@ -101,8 +103,13 @@ public class ArticlePager extends Fragment { m_activity.setProgressBarVisibility(true);
pager.setAdapter(m_adapter);
+
+ UnderlinePageIndicator indicator = (UnderlinePageIndicator)view.findViewById(R.id.article_titles);
+ indicator.setViewPager(pager);
+
pager.setCurrentItem(position);
- pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+
+ indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {
@@ -194,7 +201,6 @@ public class ArticlePager extends Fragment { final Feed feed = m_feed;
final String sessionId = m_activity.getSessionId();
- final boolean showUnread = m_activity.getUnreadArticlesOnly();
int skip = 0;
if (append) {
@@ -221,6 +227,7 @@ public class ArticlePager extends Fragment { put("view_mode", m_activity.getViewMode());
put("skip", String.valueOf(fskip));
put("include_nested", "true");
+ put("order_by", m_prefs.getBoolean("oldest_first", false) ? "date_reverse" : "");
if (feed.is_cat) put("is_cat", "true");
@@ -316,4 +323,8 @@ public class ArticlePager extends Fragment { }
}
}
+
+ public void notifyUpdated() {
+ m_adapter.notifyDataSetChanged();
+ }
}
diff --git a/src/org/fox/ttrss/CommonActivity.java b/src/org/fox/ttrss/CommonActivity.java index 5c18f383..3db70fdf 100644 --- a/src/org/fox/ttrss/CommonActivity.java +++ b/src/org/fox/ttrss/CommonActivity.java @@ -3,8 +3,10 @@ package org.fox.ttrss; import org.fox.ttrss.util.DatabaseHelper;
import android.annotation.SuppressLint;
+import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
+import android.preference.PreferenceManager;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Display;
@@ -26,27 +28,23 @@ public class CommonActivity extends FragmentActivity { private boolean m_smallScreenMode = true;
private boolean m_compatMode = false;
+ protected SharedPreferences m_prefs;
+
protected void setSmallScreen(boolean smallScreen) {
Log.d(TAG, "m_smallScreenMode=" + smallScreen);
m_smallScreenMode = smallScreen;
}
- public boolean getUnreadArticlesOnly() {
- return GlobalState.getInstance().m_unreadArticlesOnly;
- }
-
public boolean getUnreadOnly() {
- return GlobalState.getInstance().m_unreadOnly;
+ return m_prefs.getBoolean("show_unread_only", true);
}
public void setUnreadOnly(boolean unread) {
- GlobalState.getInstance().m_unreadOnly = unread;
+ SharedPreferences.Editor editor = m_prefs.edit();
+ editor.putBoolean("show_unread_only", unread);
+ editor.commit();
}
- public void setUnreadArticlesOnly(boolean unread) {
- GlobalState.getInstance().m_unreadArticlesOnly = unread;
- }
-
public void setLoadingStatus(int status, boolean showProgress) {
TextView tv = (TextView) findViewById(R.id.loading_message);
@@ -94,6 +92,9 @@ public class CommonActivity extends FragmentActivity { @Override
public void onCreate(Bundle savedInstanceState) {
+ m_prefs = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext());
+
initDatabase();
m_compatMode = android.os.Build.VERSION.SDK_INT <= 10;
@@ -136,4 +137,24 @@ public class CommonActivity extends FragmentActivity { toast.show();
}
+ protected void setAppTheme(SharedPreferences prefs) {
+ String defaultTheme = "THEME_DARK";
+
+ if (prefs.getString("theme", defaultTheme).equals("THEME_DARK")) {
+ setTheme(R.style.DarkTheme);
+ } else if (prefs.getString("theme", defaultTheme).equals("THEME_SEPIA")) {
+ setTheme(R.style.SepiaTheme);
+ } else if (prefs.getString("theme", defaultTheme).equals("THEME_DARK_GRAY")) {
+ setTheme(R.style.DarkGrayTheme);
+ } else {
+ // LightTheme is not supported on honeycomb
+
+ if (android.os.Build.VERSION.SDK_INT >= 11 && android.os.Build.VERSION.SDK_INT < 14) {
+ toast(R.string.light_theme_is_not_supported_on_honeycomb);
+ setTheme(R.style.DarkTheme);
+ } else {
+ setTheme(R.style.LightTheme);
+ }
+ }
+ }
}
diff --git a/src/org/fox/ttrss/FeedsActivity.java b/src/org/fox/ttrss/FeedsActivity.java index 6e725e99..8904d4cb 100644 --- a/src/org/fox/ttrss/FeedsActivity.java +++ b/src/org/fox/ttrss/FeedsActivity.java @@ -40,11 +40,7 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK")) {
- setTheme(R.style.DarkTheme);
- } else {
- setTheme(R.style.LightTheme);
- }
+ setAppTheme(m_prefs);
super.onCreate(savedInstanceState);
diff --git a/src/org/fox/ttrss/GlobalState.java b/src/org/fox/ttrss/GlobalState.java index 5080e449..d997cdc5 100644 --- a/src/org/fox/ttrss/GlobalState.java +++ b/src/org/fox/ttrss/GlobalState.java @@ -17,8 +17,6 @@ public class GlobalState extends Application { public Feed m_activeFeed;
public Article m_activeArticle;
public int m_selectedArticleId;
- public boolean m_unreadOnly = true;
- public boolean m_unreadArticlesOnly = true;
public String m_sessionId;
public int m_apiLevel;
public boolean m_canUseProgress;
diff --git a/src/org/fox/ttrss/HeadlinesActivity.java b/src/org/fox/ttrss/HeadlinesActivity.java index 5c4e5e3e..bccc9e79 100644 --- a/src/org/fox/ttrss/HeadlinesActivity.java +++ b/src/org/fox/ttrss/HeadlinesActivity.java @@ -26,11 +26,7 @@ public class HeadlinesActivity extends OnlineActivity implements HeadlinesEventL m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK")) {
- setTheme(R.style.DarkTheme);
- } else {
- setTheme(R.style.LightTheme);
- }
+ setAppTheme(m_prefs);
super.onCreate(savedInstanceState);
diff --git a/src/org/fox/ttrss/HeadlinesFragment.java b/src/org/fox/ttrss/HeadlinesFragment.java index cc5e3638..bc31f0d8 100644 --- a/src/org/fox/ttrss/HeadlinesFragment.java +++ b/src/org/fox/ttrss/HeadlinesFragment.java @@ -418,6 +418,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, put("offset", String.valueOf(0));
put("skip", String.valueOf(fskip));
put("include_nested", "true");
+ put("order_by", m_prefs.getBoolean("oldest_first", false) ? "date_reverse" : "");
if (isCat) put("is_cat", "true");
@@ -800,13 +801,12 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, if (m_prefs.getBoolean("headlines_mark_read_scroll", false) && firstVisibleItem > 0) {
Article a = m_articles.get(firstVisibleItem - 1);
- if (a != null) {
- if (a.unread) {
- a.unread = false;
- m_readArticles.add(a);
- m_feed.unread--;
- }
- }
+
+ if (a != null && a.unread) {
+ a.unread = false;
+ m_readArticles.add(a);
+ m_feed.unread--;
+ }
}
}
diff --git a/src/org/fox/ttrss/OnlineActivity.java b/src/org/fox/ttrss/OnlineActivity.java index 7530ff1e..da1a6f17 100644 --- a/src/org/fox/ttrss/OnlineActivity.java +++ b/src/org/fox/ttrss/OnlineActivity.java @@ -39,15 +39,24 @@ import android.view.MenuInflater; import android.view.MenuItem;
import android.view.View;
import android.view.Window;
+import android.webkit.WebView;
+import android.webkit.WebView.HitTestResult;
import android.widget.EditText;
import android.widget.SearchView;
import android.widget.ShareActionProvider;
+import android.widget.TextView;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
+
+
public class OnlineActivity extends CommonActivity {
private final String TAG = this.getClass().getSimpleName();
@@ -61,6 +70,8 @@ public class OnlineActivity extends CommonActivity { private ActionMode m_headlinesActionMode;
private HeadlinesActionModeCallback m_headlinesActionModeCallback;
+ private String m_lastImageHitTestUrl;
+
private BroadcastReceiver m_broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context content, Intent intent) {
@@ -129,20 +140,13 @@ public class OnlineActivity extends CommonActivity { @Override
public void onCreate(Bundle savedInstanceState) {
+ ApiRequest.disableConnectionReuseIfNecessary();
+
+ // we use that before parent onCreate so let's init locally
m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- ApiRequest.disableConnectionReuseIfNecessary();
-
- if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK")) {
- setTheme(R.style.DarkTheme);
- } else if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_SEPIA")) {
- setTheme(R.style.SepiaTheme);
- } else if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK_GRAY")) {
- setTheme(R.style.DarkGrayTheme);
- } else {
- setTheme(R.style.LightTheme);
- }
+ setAppTheme(m_prefs);
super.onCreate(savedInstanceState);
@@ -536,6 +540,66 @@ public class OnlineActivity extends CommonActivity { final ArticlePager ap = (ArticlePager)getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
switch (item.getItemId()) {
+ case R.id.article_img_open:
+ if (getLastContentImageHitTestUrl() != null) {
+ try {
+ Intent intent = new Intent(Intent.ACTION_VIEW,
+ Uri.parse(getLastContentImageHitTestUrl()));
+ startActivity(intent);
+ } catch (Exception e) {
+ e.printStackTrace();
+ toast(R.string.error_other_error);
+ }
+ }
+ return true;
+ case R.id.article_img_share:
+ if (getLastContentImageHitTestUrl() != null) {
+ Intent intent = new Intent(Intent.ACTION_SEND);
+
+ intent.setType("image/png");
+ intent.putExtra(Intent.EXTRA_SUBJECT, getLastContentImageHitTestUrl());
+ intent.putExtra(Intent.EXTRA_TEXT, getLastContentImageHitTestUrl());
+
+ startActivity(Intent.createChooser(intent, getLastContentImageHitTestUrl()));
+ }
+ return true;
+ case R.id.article_img_view_caption:
+ if (getLastContentImageHitTestUrl() != null) {
+
+ // Android doesn't give us an easy way to access title tags;
+ // we'll use Jsoup on the body text to grab the title text
+ // from the first image tag with this url. This will show
+ // the wrong text if an image is used multiple times.
+ Document doc = Jsoup.parse(ap.getSelectedArticle().content);
+ Elements es = doc.getElementsByAttributeValue("src", getLastContentImageHitTestUrl());
+ if (es.size() > 0){
+ if (es.get(0).hasAttr("title")){
+ Dialog dia = new Dialog(this);
+ if (es.get(0).hasAttr("alt")){
+ dia.setTitle(es.get(0).attr("alt"));
+ } else {
+ dia.setTitle(es.get(0).attr("title"));
+ }
+ TextView titleText = new TextView(this);
+
+ if (android.os.Build.VERSION.SDK_INT >= 16) {
+ titleText.setPaddingRelative(24, 24, 24, 24);
+ } else {
+ titleText.setPadding(24, 24, 24, 24);
+ }
+
+ titleText.setTextSize(16);
+ titleText.setText(es.get(0).attr("title"));
+ dia.setContentView(titleText);
+ dia.show();
+ } else {
+ toast(R.string.no_caption_to_display);
+ }
+ } else {
+ toast(R.string.no_caption_to_display);
+ }
+ }
+ return true;
case R.id.article_link_share:
if (ap != null && ap.getSelectedArticle() != null) {
shareArticle(ap.getSelectedArticle());
@@ -584,6 +648,7 @@ public class OnlineActivity extends CommonActivity { 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) {
@@ -807,11 +872,11 @@ public class OnlineActivity extends CommonActivity { }
return true;
case R.id.share_article:
- if (android.os.Build.VERSION.SDK_INT < 14) {
+ //if (android.os.Build.VERSION.SDK_INT < 14) {
if (ap != null) {
shareArticle(ap.getSelectedArticle());
}
- }
+ //}
return true;
case R.id.toggle_marked:
if (ap != null & ap.getSelectedArticle() != null) {
@@ -841,6 +906,7 @@ public class OnlineActivity extends CommonActivity { toggleArticlesUnread(selected);
hf.notifyUpdated();
+ initMenu();
}
}
return true;
@@ -854,6 +920,7 @@ public class OnlineActivity extends CommonActivity { toggleArticlesMarked(selected);
hf.notifyUpdated();
+ initMenu();
}
}
return true;
@@ -867,6 +934,7 @@ public class OnlineActivity extends CommonActivity { toggleArticlesPublished(selected);
hf.notifyUpdated();
+ initMenu();
}
}
return true;
@@ -894,6 +962,7 @@ public class OnlineActivity extends CommonActivity { if (tmp.size() > 0) {
toggleArticlesUnread(tmp);
hf.notifyUpdated();
+ initMenu();
}
}
}
@@ -901,8 +970,12 @@ public class OnlineActivity extends CommonActivity { case R.id.set_unread:
if (ap != null && ap.getSelectedArticle() != null) {
Article a = ap.getSelectedArticle();
- a.unread = true;
- saveArticleUnread(a);
+
+ if (a != null) {
+ a.unread = !a.unread;
+ saveArticleUnread(a);
+ }
+
if (hf != null) hf.notifyUpdated();
}
return true;
@@ -1126,7 +1199,12 @@ public class OnlineActivity extends CommonActivity { @SuppressWarnings({ "unchecked", "serial" })
public void saveArticleUnread(final Article article) {
- ApiRequest req = new ApiRequest(getApplicationContext());
+ ApiRequest req = new ApiRequest(getApplicationContext()) {
+ protected void onPostExecute(JsonElement result) {
+ //toast(R.string.article_set_unread);
+ initMenu();
+ }
+ };
HashMap<String, String> map = new HashMap<String, String>() {
{
@@ -1145,7 +1223,8 @@ public class OnlineActivity extends CommonActivity { public void saveArticleMarked(final Article article) {
ApiRequest req = new ApiRequest(getApplicationContext()) {
protected void onPostExecute(JsonElement result) {
- toast(article.marked ? R.string.notify_article_marked : R.string.notify_article_unmarked);
+ //toast(article.marked ? R.string.notify_article_marked : R.string.notify_article_unmarked);
+ initMenu();
}
};
@@ -1167,7 +1246,8 @@ public class OnlineActivity extends CommonActivity { ApiRequest req = new ApiRequest(getApplicationContext()) {
protected void onPostExecute(JsonElement result) {
- toast(article.published ? R.string.notify_article_published : R.string.notify_article_unpublished);
+ //toast(article.published ? R.string.notify_article_published : R.string.notify_article_unpublished);
+ initMenu();
}
};
@@ -1382,7 +1462,24 @@ public class OnlineActivity extends CommonActivity { MenuItem search = m_menu.findItem(R.id.search);
search.setEnabled(getApiLevel() >= 2);
- if (android.os.Build.VERSION.SDK_INT >= 14) {
+ ArticlePager ap = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
+
+ if (ap != null) {
+ Article article = ap.getSelectedArticle();
+
+ if (article != null) {
+ m_menu.findItem(R.id.toggle_marked).setIcon(article.marked ? R.drawable.ic_important_light :
+ R.drawable.ic_unimportant_light);
+
+ m_menu.findItem(R.id.toggle_published).setIcon(article.published ? R.drawable.ic_menu_published_light :
+ R.drawable.ic_menu_unpublished_light);
+
+ m_menu.findItem(R.id.set_unread).setIcon(article.unread ? R.drawable.ic_unread_light :
+ R.drawable.ic_read_light);
+ }
+ }
+
+ /* if (android.os.Build.VERSION.SDK_INT >= 14) {
ShareActionProvider shareProvider = (ShareActionProvider) m_menu.findItem(R.id.share_article).getActionProvider();
ArticlePager af = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
@@ -1394,7 +1491,7 @@ public class OnlineActivity extends CommonActivity { m_menu.findItem(R.id.share_article).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
}
- }
+ } */
if (!isCompatMode()) {
HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
@@ -1570,4 +1667,13 @@ public class OnlineActivity extends CommonActivity { public String getViewMode() {
return m_prefs.getString("view_mode", "adaptive");
}
+
+ public void setLastContentImageHitTestUrl(String url) {
+ m_lastImageHitTestUrl = url;
+ }
+
+ public String getLastContentImageHitTestUrl() {
+ return m_lastImageHitTestUrl;
+ }
+
}
diff --git a/src/org/fox/ttrss/offline/OfflineActivity.java b/src/org/fox/ttrss/offline/OfflineActivity.java index 78102c1a..bca949de 100644 --- a/src/org/fox/ttrss/offline/OfflineActivity.java +++ b/src/org/fox/ttrss/offline/OfflineActivity.java @@ -27,7 +27,6 @@ import android.view.View; import android.view.Window;
import android.widget.EditText;
import android.widget.SearchView;
-import android.widget.ShareActionProvider;
public class OfflineActivity extends CommonActivity {
private final String TAG = this.getClass().getSimpleName();
@@ -74,15 +73,7 @@ public class OfflineActivity extends CommonActivity { m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK")) {
- setTheme(R.style.DarkTheme);
- } else if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_SEPIA")) {
- setTheme(R.style.SepiaTheme);
- } else if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK_GRAY")) {
- setTheme(R.style.DarkGrayTheme);
- } else {
- setTheme(R.style.LightTheme);
- }
+ setAppTheme(m_prefs);
super.onCreate(savedInstanceState);
@@ -277,7 +268,7 @@ public class OfflineActivity extends CommonActivity { }
return true;
case R.id.share_article:
- if (android.os.Build.VERSION.SDK_INT < 14 && oap != null && android.os.Build.VERSION.SDK_INT < 14) {
+ if (true) {
int articleId = oap.getSelectedArticleId();
shareArticle(articleId);
@@ -416,20 +407,6 @@ public class OfflineActivity extends CommonActivity { m_menu.setGroupVisible(R.id.menu_group_article, false);
m_menu.setGroupVisible(R.id.menu_group_feeds, false);
- if (android.os.Build.VERSION.SDK_INT >= 14) {
- ShareActionProvider shareProvider = (ShareActionProvider) m_menu.findItem(R.id.share_article).getActionProvider();
-
- OfflineArticlePager af = (OfflineArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
-
- if (af != null && af.getSelectedArticleId() > 0) {
- shareProvider.setShareIntent(getShareIntent(getArticleById(af.getSelectedArticleId())));
-
- if (!isSmallScreen()) {
- m_menu.findItem(R.id.share_article).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
- }
- }
- }
-
if (!isCompatMode()) {
MenuItem search = m_menu.findItem(R.id.search);
@@ -443,6 +420,31 @@ public class OfflineActivity extends CommonActivity { }
}
+ OfflineArticlePager ap = (OfflineArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
+
+ if (ap != null) {
+ int articleId = ap.getSelectedArticleId();
+
+ Cursor article = getArticleById(articleId);
+
+ if (article != null) {
+ boolean unread = article.getInt(article.getColumnIndex("unread")) == 1;
+ boolean marked = article.getInt(article.getColumnIndex("marked")) == 1;
+ boolean published = article.getInt(article.getColumnIndex("published")) == 1;
+
+ m_menu.findItem(R.id.toggle_marked).setIcon(marked ? R.drawable.ic_important_light :
+ R.drawable.ic_unimportant_light);
+
+ m_menu.findItem(R.id.toggle_published).setIcon(published ? R.drawable.ic_menu_published_light :
+ R.drawable.ic_menu_unpublished_light);
+
+ m_menu.findItem(R.id.set_unread).setIcon(unread ? R.drawable.ic_unread_light :
+ R.drawable.ic_read_light);
+
+ article.close();
+ }
+ }
+
SearchView searchView = (SearchView) search.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
private String query = "";
@@ -626,8 +628,10 @@ public class OfflineActivity extends CommonActivity { .findFragmentByTag(FRAG_HEADLINES);
if (ohf != null) {
- ohf.refresh();
- }
+ ohf.refresh();
+ }
+
+ initMenu();
}
}
diff --git a/src/org/fox/ttrss/offline/OfflineArticlePager.java b/src/org/fox/ttrss/offline/OfflineArticlePager.java index f4c22138..48742c12 100644 --- a/src/org/fox/ttrss/offline/OfflineArticlePager.java +++ b/src/org/fox/ttrss/offline/OfflineArticlePager.java @@ -2,6 +2,8 @@ package org.fox.ttrss.offline; import org.fox.ttrss.R;
+import com.viewpagerindicator.UnderlinePageIndicator;
+
import android.app.Activity;
import android.content.SharedPreferences;
import android.database.Cursor;
@@ -171,8 +173,12 @@ public class OfflineArticlePager extends Fragment { ViewPager pager = (ViewPager) view.findViewById(R.id.article_pager);
pager.setAdapter(m_adapter);
+
+ UnderlinePageIndicator indicator = (UnderlinePageIndicator)view.findViewById(R.id.article_titles);
+ indicator.setViewPager(pager);
+
pager.setCurrentItem(position);
- pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+ indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {
@@ -186,11 +192,9 @@ public class OfflineArticlePager extends Fragment { public void onPageSelected(int position) {
if (m_cursor.moveToPosition(position)) {
int articleId = m_cursor.getInt(m_cursor.getColumnIndex(BaseColumns._ID));
-
- m_listener.onArticleSelected(articleId, false);
m_articleId = articleId;
-
+ m_listener.onArticleSelected(articleId, false);
}
}
});
diff --git a/src/org/fox/ttrss/offline/OfflineFeedsActivity.java b/src/org/fox/ttrss/offline/OfflineFeedsActivity.java index 002d74e4..920d2865 100644 --- a/src/org/fox/ttrss/offline/OfflineFeedsActivity.java +++ b/src/org/fox/ttrss/offline/OfflineFeedsActivity.java @@ -30,11 +30,7 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK")) {
- setTheme(R.style.DarkTheme);
- } else {
- setTheme(R.style.LightTheme);
- }
+ setAppTheme(m_prefs);
super.onCreate(savedInstanceState);
@@ -276,6 +272,8 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead stmt.execute();
stmt.close();
+ initMenu();
+
if (open) {
if (isSmallScreen()) {
diff --git a/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java b/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java index f4352158..6faa292b 100644 --- a/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java +++ b/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java @@ -27,11 +27,7 @@ public class OfflineHeadlinesActivity extends OfflineActivity implements Offline m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK")) {
- setTheme(R.style.DarkTheme);
- } else {
- setTheme(R.style.LightTheme);
- }
+ setAppTheme(m_prefs);
super.onCreate(savedInstanceState);
|