implement workaround to make list items somewhat clickable in combined

mode, make title a link
This commit is contained in:
Andrew Dolgov 2011-11-30 21:44:36 +03:00
parent f16095ce53
commit f242dcde6a
4 changed files with 43 additions and 8 deletions

View File

@ -15,4 +15,20 @@
android:showAsAction=""
android:title="@string/context_selection_toggle_published"/>
<group android:id="@+id/menu_group_single_article">
<item
android:id="@+id/share_article"
android:showAsAction=""
android:title="@string/share_article"/>
<item
android:id="@+id/set_unread"
android:showAsAction=""
android:title="@string/article_set_unread"/>
</group>
</menu>

View File

@ -117,7 +117,7 @@ public class ArticleFragment extends Fragment implements OnClickListener {
"<meta name=\"viewport\" content=\"target-densitydpi=device-dpi\" />" +
"<style type=\"text/css\">" +
cssOverride +
"img { max-width : 90%; }" +
//"img { max-width : 90%; }" +
"body { text-align : justify; }" +
"</style>" +
"</head>" +

View File

@ -19,9 +19,11 @@ import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
@ -77,10 +79,12 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener,
if (m_selectedArticles.size() > 0) {
menu.setHeaderTitle(R.string.headline_context_multiple);
menu.setGroupVisible(R.id.menu_group_single_article, false);
} else {
AdapterContextMenuInfo info = (AdapterContextMenuInfo)menuInfo;
Article article = getArticleAtPosition(info.position);
menu.setHeaderTitle(article.title);
menu.setGroupVisible(R.id.menu_group_single_article, true);
}
super.onCreateContextMenu(menu, v, menuInfo);
@ -131,11 +135,18 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener,
public void onItemClick(AdapterView<?> av, View view, int position, long id) {
ListView list = (ListView)av;
if (list != null && !m_combinedMode) {
Log.d(TAG, "onItemClick=" + position);
if (list != null) {
Article article = (Article)list.getItemAtPosition(position);
if (article.id >= 0) {
m_articleOps.openArticle(article, 0);
if (m_combinedMode) {
article.unread = false;
m_articleOps.saveArticleUnread(article);
} else {
m_articleOps.openArticle(article, 0);
}
m_activeArticleId = article.id;
m_adapter.notifyDataSetChanged();
}
@ -337,12 +348,20 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener,
LayoutInflater vi = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(layoutId, null);
// http://code.google.com/p/android/issues/detail?id=3414
((ViewGroup)v).setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
}
TextView tt = (TextView)v.findViewById(R.id.title);
if (tt != null) {
tt.setText(Html.fromHtml(article.title));
if (m_combinedMode) {
tt.setMovementMethod(LinkMovementMethod.getInstance());
tt.setText(Html.fromHtml("<a href=\""+article.link.replace("\"", "\\\"")+"\">" + article.title + "</a>"));
} else {
tt.setText(Html.fromHtml(article.title));
}
}
ImageView marked = (ImageView)v.findViewById(R.id.marked);
@ -416,13 +435,14 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener,
"<meta name=\"viewport\" content=\"target-densitydpi=device-dpi\" />" +
"<style type=\"text/css\">" +
cssOverride +
"img { max-width : 90%; }" +
//"img { max-width : 90%; }" +
"body { text-align : justify; }" +
"</style>" +
"</head>" +
"<body>" + article.content + "</body></html>";
web.loadDataWithBaseURL(null, content, "text/html", "utf-8", null);
//web.setOnTouchListener(new WebViewClickListener(web, parent, position));
} else {
web.setVisibility(View.GONE);
}

View File

@ -952,7 +952,6 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe
req.execute(map);
setLoadingStatus(R.string.loading_message, true);
loginSuccess();
return;
@ -966,7 +965,7 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe
m_sessionId = null;
setLoadingStatus(getErrorMessage(), false);
m_menu.findItem(R.id.login).setVisible(true);
//m_menu.findItem(R.id.login).setVisible(true);
}
}