From feb2a1203e78363a4ed8f12835bb28aac034e80b Mon Sep 17 00:00:00 2001 From: Nikola Yanakiev Date: Fri, 24 Jul 2015 02:12:56 +0300 Subject: [PATCH] Add 'Open in browser' for posts and threads --- .../chan/core/presenter/ThreadPresenter.java | 9 +++++++++ .../chan/ui/controller/ViewThreadController.java | 16 +++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java b/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java index ed0e7bd5..6191bc1e 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java +++ b/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java @@ -68,6 +68,7 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt private static final int POST_OPTION_SHARE = 10; private static final int POST_OPTION_HIGHLIGHT_TRIPCODE = 11; private static final int POST_OPTION_HIDE = 12; + private static final int POST_OPTION_OPEN = 13; private WatchManager watchManager; private DatabaseManager databaseManager; @@ -359,6 +360,7 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt menu.add(new FloatingMenuItem(POST_OPTION_INFO, R.string.post_info)); menu.add(new FloatingMenuItem(POST_OPTION_LINKS, R.string.post_show_links)); + menu.add(new FloatingMenuItem(POST_OPTION_OPEN, R.string.action_open_browser)); menu.add(new FloatingMenuItem(POST_OPTION_SHARE, R.string.post_share)); menu.add(new FloatingMenuItem(POST_OPTION_COPY_TEXT, R.string.post_copy_text)); menu.add(new FloatingMenuItem(POST_OPTION_REPORT, R.string.post_report)); @@ -423,6 +425,13 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt case POST_OPTION_PIN: watchManager.addPin(post); break; + case POST_OPTION_OPEN: + AndroidUtils.openLink( + post.isOP ? + ChanUrls.getThreadUrlDesktop(post.board, post.no) : + ChanUrls.getThreadUrlDesktop(post.board, loadable.no, post.no) + ); + break; case POST_OPTION_SHARE: AndroidUtils.shareLink( post.isOP ? diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java index e6e08f7a..ce8e87f7 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java @@ -45,6 +45,7 @@ public class ViewThreadController extends ThreadController implements ThreadLayo private static final int SHARE_ID = 103; private static final int UP_ID = 104; private static final int DOWN_ID = 105; + private static final int OPEN_ID = 106; private ToolbarMenuItem pinItem; private Loadable loadable; @@ -72,6 +73,7 @@ public class ViewThreadController extends ThreadController implements ThreadLayo navigationItem.createOverflow(context, this, Arrays.asList( new FloatingMenuItem(REFRESH_ID, context.getString(R.string.action_reload)), new FloatingMenuItem(SEARCH_ID, context.getString(R.string.action_search)), + new FloatingMenuItem(OPEN_ID, context.getString(R.string.action_open_browser)), new FloatingMenuItem(SHARE_ID, context.getString(R.string.action_share)), new FloatingMenuItem(UP_ID, context.getString(R.string.action_up)), new FloatingMenuItem(DOWN_ID, context.getString(R.string.action_down)) @@ -163,7 +165,9 @@ public class ViewThreadController extends ThreadController implements ThreadLayo @Override public void onSubMenuItemClicked(ToolbarMenuItem parent, FloatingMenuItem item) { - switch ((Integer) item.getId()) { + Integer id = (Integer) item.getId(); + + switch (id) { case REFRESH_ID: threadLayout.getPresenter().requestData(); break; @@ -171,13 +175,19 @@ public class ViewThreadController extends ThreadController implements ThreadLayo navigationController.showSearch(); break; case SHARE_ID: + case OPEN_ID: Loadable loadable = threadLayout.getPresenter().getLoadable(); String link = ChanUrls.getThreadUrlDesktop(loadable.board, loadable.no); - AndroidUtils.shareLink(link); + + if(id == SHARE_ID) + AndroidUtils.shareLink(link); + else + AndroidUtils.openLink(link); + break; case UP_ID: case DOWN_ID: - boolean up = ((Integer)item.getId()) == UP_ID; + boolean up = id == UP_ID; threadLayout.getPresenter().scrollTo(up ? 0 : -1, false); break; }