Search in sources :

Example 81 with SwipeRefreshLayout

use of android.support.v4.widget.SwipeRefreshLayout in project SherlockAdapter by EvilBT.

the class BasicActivity method initView.

private void initView() {
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    mFullSpan1 = (CheckBox) findViewById(R.id.cb_head1);
    mFullSpan2 = (CheckBox) findViewById(R.id.cb_head2);
    mSpanSize1 = (EditText) findViewById(R.id.et_span_count1);
    mSpanSize2 = (EditText) findViewById(R.id.et_span_count2);
    mGridLayoutManager = new GridLayoutManager(this, 3);
    mStaggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
    final SwipeRefreshLayout refreshLayout = (SwipeRefreshLayout) findViewById(R.id.refresh);
    mRecyclerView = (RecyclerView) findViewById(R.id.list);
    mRecyclerView.setLayoutManager(mGridLayoutManager);
    mIsGrid = true;
    mAdapter = new MyMultiAdapter();
    mRecyclerView.setAdapter(mAdapter);
    mAdapter.addHeadLayout(R.layout.item_head1, false, 0);
    mAdapter.addHeadLayout(R.layout.item_head2, false, 0);
    // mAdapter.addFootLayout(R.layout.item_head1,false,0);
    // mAdapter.addFootLayout(R.layout.item_head2,false,0);
    mAdapter.setOnItemLongClickListener(new OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(@NonNull View view, final int adapterPosition) {
            new AlertDialog.Builder(BasicActivity.this).setTitle("是否删除第" + adapterPosition + "项").setPositiveButton("确定", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    mAdapter.removeData(adapterPosition);
                }
            }).setNegativeButton("取消", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                }
            }).create().show();
            return true;
        }
    });
    mData = new ArrayList<>();
    initGridData();
    refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {

        @Override
        public void onRefresh() {
            refreshLayout.postDelayed(new Runnable() {

                @Override
                public void run() {
                    mAdapter.setData(mData);
                    refreshLayout.setRefreshing(false);
                }
            }, 500);
        }
    });
    mFullSpan1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            changeHead();
        }
    });
    mFullSpan2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            changeHead();
        }
    });
    mSpanSize1.addTextChangedListener(new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            changeHead();
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });
    mSpanSize2.addTextChangedListener(new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            changeHead();
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });
}
Also used : DialogInterface(android.content.DialogInterface) StaggeredGridLayoutManager(android.support.v7.widget.StaggeredGridLayoutManager) SwipeRefreshLayout(android.support.v4.widget.SwipeRefreshLayout) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) OnItemLongClickListener(xyz.zpayh.adapter.OnItemLongClickListener) GridLayoutManager(android.support.v7.widget.GridLayoutManager) StaggeredGridLayoutManager(android.support.v7.widget.StaggeredGridLayoutManager) MyMultiAdapter(xyz.zpayh.myadapter.adapter.MyMultiAdapter) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) CompoundButton(android.widget.CompoundButton) Toolbar(android.support.v7.widget.Toolbar)

Example 82 with SwipeRefreshLayout

use of android.support.v4.widget.SwipeRefreshLayout in project SherlockAdapter by EvilBT.

the class HeadAndFootActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_head_and_foot);
    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.list);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    mAdapter = new HeadAndFootAdapter(this);
    recyclerView.setAdapter(mAdapter);
    mAdapter.addHeadLayout(R.layout.item_head);
    mAdapter.addFootLayout(R.layout.item_foot);
    mAdapter.addFootLayout(R.layout.item_foot2);
    List<ImageCard> data = new ArrayList<>();
    for (int i = 0; i < mTitles.length; i++) {
        ImageCard card = new ImageCard(mImageResId[i], mTitles[i]);
        data.add(card);
    }
    mAdapter.setData(data);
    final SwipeRefreshLayout refresh = (SwipeRefreshLayout) findViewById(R.id.refresh);
    refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {

        @Override
        public void onRefresh() {
            refresh();
            refresh.setRefreshing(false);
        }
    });
    findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            refresh();
        }
    });
}
Also used : HeadAndFootAdapter(xyz.zpayh.myadapter.adapter.HeadAndFootAdapter) ArrayList(java.util.ArrayList) ImageCard(xyz.zpayh.myadapter.data.ImageCard) RecyclerView(android.support.v7.widget.RecyclerView) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) SwipeRefreshLayout(android.support.v4.widget.SwipeRefreshLayout) RecyclerView(android.support.v7.widget.RecyclerView) View(android.view.View)

Example 83 with SwipeRefreshLayout

use of android.support.v4.widget.SwipeRefreshLayout in project keleFanfou by kelefun.

the class StatusListFragment method initView.

protected void initView(View view) {
    SwipeRefreshLayout mRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.line_swipe_refresh);
    // 禁用下拉刷新
    mRefreshLayout.setEnabled(false);
    mRecyclerView = (RecyclerView) view.findViewById(R.id.line_recycler);
    LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
    mRecyclerView.setLayoutManager(mLayoutManager);
    mAdapter = new StatusAdapter(getActivity(), data);
    mRecyclerView.setAdapter(mAdapter);
    Map<String, String> map = new ArrayMap<>();
    map.put("id", tuserId);
    map.put("page", "1");
    getUserTimeLineStatus(map);
    mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
        }

        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            if (newState == RecyclerView.SCROLL_STATE_IDLE && (mLayoutManager.findLastVisibleItemPosition() + 1 == mLayoutManager.getItemCount()) && !isLoadingMore) {
                isLoadingMore = true;
                if (data.size() > 0) {
                    Map<String, String> loadMoreParam = new ArrayMap<>();
                    loadMoreParam.put("max_id", data.get(data.size() - 1).getId());
                    loadMoreParam.put("count", "20");
                    loadMoreParam.put("id", tuserId);
                    loadMoreHomeLineStatus(loadMoreParam);
                }
            }
        }
    });
}
Also used : StatusAdapter(com.funstill.kelefun.adapter.StatusAdapter) ArrayMap(android.util.ArrayMap) RecyclerView(android.support.v7.widget.RecyclerView) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) SwipeRefreshLayout(android.support.v4.widget.SwipeRefreshLayout) Map(java.util.Map) ArrayMap(android.util.ArrayMap)

Example 84 with SwipeRefreshLayout

use of android.support.v4.widget.SwipeRefreshLayout in project Slide by ccrama.

the class Search method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    overrideSwipeFromAnywhere();
    super.onCreate(savedInstanceState);
    applyColorTheme("");
    setContentView(R.layout.activity_search);
    where = getIntent().getExtras().getString(EXTRA_TERM, "");
    if (getIntent().hasExtra(EXTRA_MULTIREDDIT)) {
        multireddit = true;
        subreddit = getIntent().getExtras().getString(EXTRA_MULTIREDDIT);
    } else {
        if (getIntent().hasExtra(EXTRA_AUTHOR)) {
            where = where + "&author=" + getIntent().getExtras().getString(EXTRA_AUTHOR);
        }
        if (getIntent().hasExtra(EXTRA_NSFW)) {
            where = where + "&nsfw=" + (getIntent().getExtras().getBoolean(EXTRA_NSFW) ? "yes" : "no");
        }
        if (getIntent().hasExtra(EXTRA_SELF)) {
            where = where + "&selftext=" + (getIntent().getExtras().getBoolean(EXTRA_SELF) ? "yes" : "no");
        }
        if (getIntent().hasExtra(EXTRA_SITE)) {
            where = where + "&site=" + getIntent().getExtras().getString(EXTRA_SITE);
        }
        if (getIntent().hasExtra(EXTRA_URL)) {
            where = where + "&url=" + getIntent().getExtras().getString(EXTRA_URL);
        }
        subreddit = getIntent().getExtras().getString(EXTRA_SUBREDDIT, "");
    }
    where = StringEscapeUtils.unescapeHtml4(where);
    setupSubredditAppBar(R.id.toolbar, "Search", true, subreddit.toLowerCase(Locale.ENGLISH));
    time = TimePeriod.ALL;
    getSupportActionBar().setTitle(Html.fromHtml(where));
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    // it won't be, trust me
    assert mToolbar != null;
    mToolbar.setNavigationOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // Simulate a system's "Back" button functionality.
            onBackPressed();
        }
    });
    mToolbar.setPopupTheme(new ColorPreferences(this).getFontStyle().getBaseId());
    // When the .name() is returned for both of the ENUMs, it will be in all caps.
    // So, make it lowercase, then capitalize the first letter of each.
    getSupportActionBar().setSubtitle(StringUtils.capitalize(Reddit.search.name().toLowerCase(Locale.ENGLISH)) + " › " + StringUtils.capitalize(time.name().toLowerCase(Locale.ENGLISH)));
    rv = ((RecyclerView) findViewById(R.id.vertical_content));
    final RecyclerView.LayoutManager mLayoutManager;
    mLayoutManager = createLayoutManager(getNumColumns(getResources().getConfiguration().orientation, Search.this));
    rv.setLayoutManager(mLayoutManager);
    rv.addOnScrollListener(new ToolbarScrollHideHandler(mToolbar, findViewById(R.id.header)) {

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            visibleItemCount = rv.getLayoutManager().getChildCount();
            totalItemCount = rv.getLayoutManager().getItemCount();
            if (rv.getLayoutManager() instanceof PreCachingLayoutManager) {
                pastVisiblesItems = ((PreCachingLayoutManager) rv.getLayoutManager()).findFirstVisibleItemPosition();
            } else {
                int[] firstVisibleItems = null;
                firstVisibleItems = ((CatchStaggeredGridLayoutManager) rv.getLayoutManager()).findFirstVisibleItemPositions(firstVisibleItems);
                if (firstVisibleItems != null && firstVisibleItems.length > 0) {
                    pastVisiblesItems = firstVisibleItems[0];
                }
            }
            if (!posts.loading && (visibleItemCount + pastVisiblesItems) + 5 >= totalItemCount && !posts.nomore) {
                posts.loading = true;
                posts.loadMore(adapter, subreddit, where, false, multireddit, time);
            }
        }
    });
    final SwipeRefreshLayout mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.activity_main_swipe_refresh_layout);
    mSwipeRefreshLayout.setColorSchemeColors(Palette.getColors(subreddit, this));
    // If we use 'findViewById(R.id.header).getMeasuredHeight()', 0 is always returned.
    // So, we estimate the height of the header in dp.
    mSwipeRefreshLayout.setProgressViewOffset(false, Constants.SINGLE_HEADER_VIEW_OFFSET - Constants.PTR_OFFSET_TOP, Constants.SINGLE_HEADER_VIEW_OFFSET + Constants.PTR_OFFSET_BOTTOM);
    mSwipeRefreshLayout.post(new Runnable() {

        @Override
        public void run() {
            mSwipeRefreshLayout.setRefreshing(true);
        }
    });
    posts = new SubredditSearchPosts(subreddit, where.toLowerCase(Locale.ENGLISH), this);
    adapter = new ContributionAdapter(this, posts, rv);
    rv.setAdapter(adapter);
    posts.bindAdapter(adapter, mSwipeRefreshLayout);
    // TODO catch errors
    mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {

        @Override
        public void onRefresh() {
            posts.loadMore(adapter, subreddit, where, true, multireddit, time);
        // TODO catch errors
        }
    });
}
Also used : CatchStaggeredGridLayoutManager(me.ccrama.redditslide.Views.CatchStaggeredGridLayoutManager) ColorPreferences(me.ccrama.redditslide.ColorPreferences) SubredditSearchPosts(me.ccrama.redditslide.Adapters.SubredditSearchPosts) PreCachingLayoutManager(me.ccrama.redditslide.Views.PreCachingLayoutManager) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) SwipeRefreshLayout(android.support.v4.widget.SwipeRefreshLayout) ContributionAdapter(me.ccrama.redditslide.Adapters.ContributionAdapter) RecyclerView(android.support.v7.widget.RecyclerView) ToolbarScrollHideHandler(me.ccrama.redditslide.handler.ToolbarScrollHideHandler)

Example 85 with SwipeRefreshLayout

use of android.support.v4.widget.SwipeRefreshLayout in project Slide by ccrama.

the class CommentPage method onCreateView.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper);
    v = localInflater.inflate(R.layout.fragment_verticalcontenttoolbar, container, false);
    rv = (RecyclerView) v.findViewById(R.id.vertical_content);
    rv.setLayoutManager(mLayoutManager);
    rv.getLayoutManager().scrollToPosition(0);
    toolbar = (Toolbar) v.findViewById(R.id.toolbar);
    toolbar.setPopupTheme(new ColorPreferences(getActivity()).getFontStyle().getBaseId());
    if (!SettingValues.fabComments) {
        v.findViewById(R.id.comment_floating_action_button).setVisibility(View.GONE);
    } else {
        fab = (FloatingActionButton) v.findViewById(R.id.comment_floating_action_button);
        if (SettingValues.fastscroll) {
            FrameLayout.LayoutParams fabs = (FrameLayout.LayoutParams) fab.getLayoutParams();
            fabs.setMargins(fabs.leftMargin, fabs.topMargin, fabs.rightMargin, fabs.bottomMargin * 3);
            fab.setLayoutParams(fabs);
        }
        fab.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                LayoutInflater inflater = getActivity().getLayoutInflater();
                final View dialoglayout = inflater.inflate(R.layout.edit_comment, null);
                final AlertDialogWrapper.Builder builder = new AlertDialogWrapper.Builder(getActivity());
                final EditText e = (EditText) dialoglayout.findViewById(R.id.entry);
                // Tint the replyLine appropriately if the base theme is Light or Sepia
                if (SettingValues.currentTheme == 1 || SettingValues.currentTheme == 5) {
                    final int TINT = ContextCompat.getColor(getContext(), R.color.md_grey_600);
                    e.setHintTextColor(TINT);
                    e.getBackground().setColorFilter(TINT, PorterDuff.Mode.SRC_IN);
                }
                DoEditorActions.doActions(e, dialoglayout, getActivity().getSupportFragmentManager(), getActivity(), adapter.submission.isSelfPost() ? adapter.submission.getSelftext() : null, new String[] { adapter.submission.getAuthor() });
                builder.setCancelable(false).setView(dialoglayout);
                final Dialog d = builder.create();
                d.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
                d.show();
                dialoglayout.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        d.dismiss();
                    }
                });
                dialoglayout.findViewById(R.id.submit).setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        adapter.dataSet.refreshLayout.setRefreshing(true);
                        new ReplyTaskComment(adapter.submission).execute(e.getText().toString());
                        d.dismiss();
                    }
                });
            }
        });
    }
    if (fab != null)
        fab.show();
    resetScroll(false);
    fastScroll = v.findViewById(R.id.commentnav);
    if (!SettingValues.fastscroll) {
        fastScroll.setVisibility(View.GONE);
    } else {
        v.findViewById(R.id.down).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (adapter != null && adapter.keys != null && adapter.keys.size() > 0) {
                    goDown();
                }
            }
        });
        v.findViewById(R.id.up).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (adapter != null && adapter.keys != null && adapter.keys.size() > 0)
                    goUp();
            }
        });
        v.findViewById(R.id.nav).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (adapter != null && adapter.currentComments != null) {
                    int parentCount, opCount, linkCount, gildCount;
                    parentCount = 0;
                    opCount = 0;
                    linkCount = 0;
                    gildCount = 0;
                    String op = adapter.submission.getAuthor();
                    for (CommentObject o : adapter.currentComments) {
                        if (o.comment != null && !(o instanceof MoreChildItem)) {
                            if (o.comment.isTopLevel())
                                parentCount++;
                            if (o.comment.getComment().getTimesGilded() > 0)
                                gildCount++;
                            if (o.comment.getComment().getAuthor() != null && o.comment.getComment().getAuthor().equals(op)) {
                                opCount++;
                            }
                            if (o.comment.getComment().getDataNode().has("body_html") && o.comment.getComment().getDataNode().get("body_html").asText().contains("&lt;/a")) {
                                linkCount++;
                            }
                        }
                    }
                    new AlertDialogWrapper.Builder(getActivity()).setTitle(R.string.set_nav_mode).setSingleChoiceItems(Reddit.stringToArray("Parent comment (" + parentCount + ")" + "," + "Children comment (highlight child comment & navigate)" + "," + "OP (" + opCount + ")" + "," + "Time" + "," + "Link (" + linkCount + ")" + "," + ((Authentication.isLoggedIn) ? "You" + "," : "") + "Gilded (" + gildCount + ")").toArray(new String[Authentication.isLoggedIn ? 6 : 5]), getCurrentSort(), new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            switch(which) {
                                case 0:
                                    currentSort = CommentNavType.PARENTS;
                                    break;
                                case 1:
                                    currentSort = CommentNavType.CHILDREN;
                                    break;
                                case 2:
                                    currentSort = CommentNavType.OP;
                                    break;
                                case 3:
                                    currentSort = CommentNavType.TIME;
                                    LayoutInflater inflater = getActivity().getLayoutInflater();
                                    final View dialoglayout = inflater.inflate(R.layout.commenttime, null);
                                    final AlertDialogWrapper.Builder builder = new AlertDialogWrapper.Builder(getActivity());
                                    final Slider landscape = (Slider) dialoglayout.findViewById(R.id.landscape);
                                    final TextView since = (TextView) dialoglayout.findViewById(R.id.time_string);
                                    landscape.setValueRange(60, 18000, false);
                                    landscape.setOnPositionChangeListener(new Slider.OnPositionChangeListener() {

                                        @Override
                                        public void onPositionChanged(Slider slider, boolean b, float v, float v1, int i, int i1) {
                                            Calendar c = Calendar.getInstance();
                                            sortTime = c.getTimeInMillis() - i1 * 1000;
                                            int commentcount = 0;
                                            for (CommentObject o : adapter.currentComments) {
                                                if (o.comment != null && o.comment.getComment().getDataNode().has("created") && o.comment.getComment().getCreated().getTime() > sortTime) {
                                                    commentcount += 1;
                                                }
                                            }
                                            since.setText(TimeUtils.getTimeAgo(sortTime, getActivity()) + " (" + commentcount + " comments)");
                                        }
                                    });
                                    landscape.setValue(600, false);
                                    builder.setView(dialoglayout);
                                    builder.setPositiveButton(R.string.btn_set, null).show();
                                    break;
                                case 5:
                                    currentSort = CommentNavType.YOU;
                                    break;
                                case 4:
                                    currentSort = CommentNavType.LINK;
                                    break;
                                case 6:
                                    currentSort = CommentNavType.GILDED;
                                    break;
                            }
                        }
                    }).show();
                }
            }
        });
    }
    v.findViewById(R.id.up).setOnLongClickListener(new View.OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            // Scroll to top
            rv.getLayoutManager().scrollToPosition(1);
            return true;
        }
    });
    if (SettingValues.voteGestures) {
        v.findViewById(R.id.up).setOnTouchListener(new OnFlingGestureListener() {

            @Override
            public void onRightToLeft() {
            }

            @Override
            public void onLeftToRight() {
            }

            @Override
            public void onBottomToTop() {
                adapter.submissionViewHolder.upvote.performClick();
                Context context = getContext();
                int duration = Toast.LENGTH_SHORT;
                CharSequence text;
                if (!upvoted) {
                    text = getString(R.string.profile_upvoted);
                    downvoted = false;
                } else {
                    text = getString(R.string.vote_removed);
                }
                upvoted = !upvoted;
                Toast toast = Toast.makeText(context, text, duration);
                toast.show();
            }

            @Override
            public void onTopToBottom() {
            }
        });
    }
    if (SettingValues.voteGestures) {
        v.findViewById(R.id.down).setOnTouchListener(new OnFlingGestureListener() {

            @Override
            public void onRightToLeft() {
            }

            @Override
            public void onLeftToRight() {
            }

            @Override
            public void onBottomToTop() {
                adapter.submissionViewHolder.downvote.performClick();
                Context context = getContext();
                int duration = Toast.LENGTH_SHORT;
                CharSequence text;
                if (!downvoted) {
                    text = getString(R.string.profile_downvoted);
                    upvoted = false;
                } else {
                    text = getString(R.string.vote_removed);
                }
                downvoted = !downvoted;
                Toast toast = Toast.makeText(context, text, duration);
                toast.show();
            }

            @Override
            public void onTopToBottom() {
            }
        });
    }
    toolbar.setBackgroundColor(Palette.getColor(subreddit));
    mSwipeRefreshLayout = (SwipeRefreshLayout) v.findViewById(R.id.activity_main_swipe_refresh_layout);
    mSwipeRefreshLayout.setColorSchemeColors(Palette.getColors(subreddit, getActivity()));
    mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {

        @Override
        public void onRefresh() {
            if (comments != null) {
                comments.loadMore(adapter, subreddit, true);
            } else {
                mSwipeRefreshLayout.setRefreshing(false);
            }
        // TODO catch errors
        }
    });
    toolbar.setTitle(subreddit);
    toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_material);
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            getActivity().onBackPressed();
        }
    });
    toolbar.inflateMenu(R.menu.menu_comment_items);
    toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {

        @Override
        public boolean onMenuItemClick(MenuItem item) {
            switch(item.getItemId()) {
                case R.id.search:
                    {
                        if (comments.comments != null && comments.submission != null) {
                            DataShare.sharedComments = comments.comments;
                            DataShare.subAuthor = comments.submission.getAuthor();
                            Intent i = new Intent(getActivity(), CommentSearch.class);
                            if (getActivity() instanceof MainActivity) {
                                getActivity().startActivityForResult(i, 423);
                            } else {
                                startActivityForResult(i, 423);
                            }
                        }
                    }
                    return true;
                case R.id.sidebar:
                    doSidebarOpen();
                    return true;
                case R.id.related:
                    if (adapter.submission.isSelfPost()) {
                        new AlertDialogWrapper.Builder(getActivity()).setTitle("Selftext posts have no related submissions").setPositiveButton(R.string.btn_ok, null).show();
                    } else {
                        Intent i = new Intent(getActivity(), Related.class);
                        i.putExtra(Related.EXTRA_URL, adapter.submission.getUrl());
                        startActivity(i);
                    }
                    return true;
                case R.id.shadowbox:
                    if (SettingValues.tabletUI) {
                        if (comments.comments != null && comments.submission != null) {
                            ShadowboxComments.comments = new ArrayList<>();
                            for (CommentObject c : comments.comments) {
                                if (c instanceof CommentItem) {
                                    if (c.comment.getComment().getDataNode().get("body_html").asText().contains("&lt;/a")) {
                                        String body = c.comment.getComment().getDataNode().get("body_html").asText();
                                        String url;
                                        String[] split = body.split("&lt;a href=\"");
                                        if (split.length > 1) {
                                            for (String chunk : split) {
                                                url = chunk.substring(0, chunk.indexOf("\"", 1));
                                                ContentType.Type t = ContentType.getContentType(url);
                                                if (ContentType.mediaType(t)) {
                                                    ShadowboxComments.comments.add(new CommentUrlObject(c.comment, url, subreddit));
                                                }
                                            }
                                        } else {
                                            int start = body.indexOf("&lt;a href=\"");
                                            url = body.substring(start, body.indexOf("\"", start + 1));
                                            ContentType.Type t = ContentType.getContentType(url);
                                            if (ContentType.mediaType(t)) {
                                                ShadowboxComments.comments.add(new CommentUrlObject(c.comment, url, subreddit));
                                            }
                                        }
                                    }
                                }
                            }
                            if (!ShadowboxComments.comments.isEmpty()) {
                                Intent i = new Intent(getActivity(), ShadowboxComments.class);
                                startActivity(i);
                            } else {
                                Snackbar.make(mSwipeRefreshLayout, R.string.shadowbox_comments_nolinks, Snackbar.LENGTH_SHORT).show();
                            }
                        }
                    } else {
                        AlertDialogWrapper.Builder b = new AlertDialogWrapper.Builder(getContext()).setTitle(R.string.general_shadowbox_comments_ispro).setMessage(R.string.pro_upgrade_msg).setPositiveButton(R.string.btn_yes_exclaim, new DialogInterface.OnClickListener() {

                            public void onClick(DialogInterface dialog, int whichButton) {
                                try {
                                    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=me.ccrama.slideforreddittabletuiunlock")));
                                } catch (ActivityNotFoundException e) {
                                    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=me.ccrama.slideforreddittabletuiunlock")));
                                }
                            }
                        }).setNegativeButton(R.string.btn_no_danks, new DialogInterface.OnClickListener() {

                            public void onClick(DialogInterface dialog, int whichButton) {
                                dialog.dismiss();
                            }
                        });
                        b.show();
                    }
                    return true;
                case R.id.sort:
                    {
                        openPopup(toolbar);
                        return true;
                    }
                case R.id.content:
                    {
                        if (adapter != null && adapter.submission != null) {
                            if (!PostMatch.openExternal(adapter.submission.getUrl())) {
                                ContentType.Type type = ContentType.getContentType(adapter.submission);
                                switch(type) {
                                    case VID_ME:
                                    case STREAMABLE:
                                        if (SettingValues.video) {
                                            Intent myIntent = new Intent(getActivity(), MediaView.class);
                                            myIntent.putExtra(MediaView.SUBREDDIT, subreddit);
                                            myIntent.putExtra(MediaView.EXTRA_URL, adapter.submission.getUrl());
                                            getActivity().startActivity(myIntent);
                                        } else {
                                            LinkUtil.openExternally(adapter.submission.getUrl(), getActivity());
                                        }
                                        break;
                                    case IMGUR:
                                    case XKCD:
                                        Intent i2 = new Intent(getActivity(), MediaView.class);
                                        i2.putExtra(MediaView.SUBREDDIT, subreddit);
                                        if (adapter.submission.getDataNode().has("preview") && adapter.submission.getDataNode().get("preview").get("images").get(0).get("source").has("height") && type != ContentType.Type.XKCD) {
                                            // Load the preview image which has probably already been cached in memory instead of the direct link
                                            String previewUrl = adapter.submission.getDataNode().get("preview").get("images").get(0).get("source").get("url").asText();
                                            i2.putExtra(MediaView.EXTRA_DISPLAY_URL, previewUrl);
                                        }
                                        i2.putExtra(MediaView.EXTRA_URL, adapter.submission.getUrl());
                                        getActivity().startActivity(i2);
                                        break;
                                    case EMBEDDED:
                                        if (SettingValues.video) {
                                            String data = adapter.submission.getDataNode().get("media_embed").get("content").asText();
                                            {
                                                Intent i = new Intent(getActivity(), FullscreenVideo.class);
                                                i.putExtra(FullscreenVideo.EXTRA_HTML, data);
                                                getActivity().startActivity(i);
                                            }
                                        } else {
                                            LinkUtil.openExternally(adapter.submission.getUrl(), getActivity());
                                        }
                                        break;
                                    case REDDIT:
                                        PopulateSubmissionViewHolder.openRedditContent(adapter.submission.getUrl(), getActivity());
                                        break;
                                    case LINK:
                                        LinkUtil.openUrl(adapter.submission.getUrl(), Palette.getColor(adapter.submission.getSubredditName()), getActivity());
                                        break;
                                    case NONE:
                                    case SELF:
                                        if (adapter.submission.getSelftext().isEmpty()) {
                                            Snackbar s = Snackbar.make(rv, R.string.submission_nocontent, Snackbar.LENGTH_SHORT);
                                            View view = s.getView();
                                            TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
                                            tv.setTextColor(Color.WHITE);
                                            s.show();
                                        } else {
                                            LayoutInflater inflater = getActivity().getLayoutInflater();
                                            final View dialoglayout = inflater.inflate(R.layout.parent_comment_dialog, null);
                                            final AlertDialogWrapper.Builder builder = new AlertDialogWrapper.Builder(getActivity());
                                            adapter.setViews(adapter.submission.getDataNode().get("selftext_html").asText(), adapter.submission.getSubredditName(), (SpoilerRobotoTextView) dialoglayout.findViewById(R.id.firstTextView), (CommentOverflow) dialoglayout.findViewById(R.id.commentOverflow));
                                            builder.setView(dialoglayout);
                                            builder.show();
                                        }
                                        break;
                                    case ALBUM:
                                        if (SettingValues.album) {
                                            if (SettingValues.albumSwipe) {
                                                Intent i = new Intent(getActivity(), AlbumPager.class);
                                                i.putExtra(Album.EXTRA_URL, adapter.submission.getUrl());
                                                i.putExtra(AlbumPager.SUBREDDIT, subreddit);
                                                getActivity().startActivity(i);
                                                getActivity().overridePendingTransition(R.anim.slideright, R.anim.fade_out);
                                            } else {
                                                Intent i = new Intent(getActivity(), Album.class);
                                                i.putExtra(Album.EXTRA_URL, adapter.submission.getUrl());
                                                i.putExtra(Album.SUBREDDIT, subreddit);
                                                getActivity().startActivity(i);
                                                getActivity().overridePendingTransition(R.anim.slideright, R.anim.fade_out);
                                            }
                                        } else {
                                            LinkUtil.openExternally(adapter.submission.getUrl(), getActivity());
                                        }
                                        break;
                                    case TUMBLR:
                                        if (SettingValues.image) {
                                            if (SettingValues.albumSwipe) {
                                                Intent i = new Intent(getActivity(), TumblrPager.class);
                                                i.putExtra(Album.EXTRA_URL, adapter.submission.getUrl());
                                                i.putExtra(TumblrPager.SUBREDDIT, subreddit);
                                                getActivity().startActivity(i);
                                                getActivity().overridePendingTransition(R.anim.slideright, R.anim.fade_out);
                                            } else {
                                                Intent i = new Intent(getActivity(), Tumblr.class);
                                                i.putExtra(Tumblr.SUBREDDIT, subreddit);
                                                i.putExtra(Album.EXTRA_URL, adapter.submission.getUrl());
                                                getActivity().startActivity(i);
                                                getActivity().overridePendingTransition(R.anim.slideright, R.anim.fade_out);
                                            }
                                        } else {
                                            LinkUtil.openExternally(adapter.submission.getUrl(), getActivity());
                                        }
                                        break;
                                    case IMAGE:
                                        PopulateSubmissionViewHolder.openImage(type, getActivity(), adapter.submission, null, -1);
                                        break;
                                    case VREDDIT_REDIRECT:
                                    case VREDDIT_DIRECT:
                                    case GIF:
                                        PopulateSubmissionViewHolder.openGif(getActivity(), adapter.submission, -1);
                                        break;
                                    case VIDEO:
                                        if (Reddit.videoPlugin) {
                                            try {
                                                Intent sharingIntent = new Intent(Intent.ACTION_SEND);
                                                sharingIntent.setClassName("ccrama.me.slideyoutubeplugin", "ccrama.me.slideyoutubeplugin.YouTubeView");
                                                sharingIntent.putExtra("url", adapter.submission.getUrl());
                                                getActivity().startActivity(sharingIntent);
                                            } catch (Exception e) {
                                                LinkUtil.openExternally(adapter.submission.getUrl(), getActivity());
                                            }
                                        } else {
                                            LinkUtil.openExternally(adapter.submission.getUrl(), getActivity());
                                        }
                                }
                            } else {
                                LinkUtil.openExternally(adapter.submission.getUrl(), getActivity());
                            }
                        }
                    }
                    return true;
                case R.id.reload:
                    if (comments != null) {
                        mSwipeRefreshLayout.setRefreshing(true);
                        comments.loadMore(adapter, subreddit);
                    }
                    return true;
                case R.id.collapse:
                    {
                        if (adapter != null) {
                            adapter.collapseAll();
                        }
                    }
                    return true;
                case android.R.id.home:
                    getActivity().onBackPressed();
                    return true;
            }
            return false;
        }
    });
    toolbar.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            ((LinearLayoutManager) rv.getLayoutManager()).scrollToPositionWithOffset(1, headerHeight);
            resetScroll(false);
        }
    });
    addClickFunctionSubName(toolbar);
    doTopBar();
    if (Authentication.didOnline && !NetworkUtil.isConnectedNoOverride(getActivity())) {
        new AlertDialogWrapper.Builder(getActivity()).setTitle(R.string.err_title).setMessage(R.string.err_connection_failed_msg).setNegativeButton(R.string.btn_close, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                if (!(getActivity() instanceof MainActivity)) {
                    getActivity().finish();
                }
            }
        }).setPositiveButton(R.string.btn_offline, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                Reddit.appRestart.edit().putBoolean("forceoffline", true).commit();
                Reddit.forceRestart(getActivity());
            }
        }).show();
    }
    if (!(getActivity() instanceof CommentsScreen) || ((CommentsScreen) getActivity()).currentPage == page) {
        doAdapter(true);
    } else {
        doAdapter(false);
    }
    return v;
}
Also used : ContentType(me.ccrama.redditslide.ContentType) ArrayList(java.util.ArrayList) SwipeRefreshLayout(android.support.v4.widget.SwipeRefreshLayout) AlertDialogWrapper(com.afollestad.materialdialogs.AlertDialogWrapper) Dialog(android.app.Dialog) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) SpoilerRobotoTextView(me.ccrama.redditslide.SpoilerRobotoTextView) TextView(android.widget.TextView) Toolbar(android.support.v7.widget.Toolbar) FullscreenVideo(me.ccrama.redditslide.Activities.FullscreenVideo) EditText(android.widget.EditText) CommentsScreen(me.ccrama.redditslide.Activities.CommentsScreen) CommentObject(me.ccrama.redditslide.Adapters.CommentObject) Related(me.ccrama.redditslide.Activities.Related) CommentItem(me.ccrama.redditslide.Adapters.CommentItem) ActivityNotFoundException(android.content.ActivityNotFoundException) LayoutInflater(android.view.LayoutInflater) CommentUrlObject(me.ccrama.redditslide.Adapters.CommentUrlObject) Snackbar(android.support.design.widget.Snackbar) Slider(com.rey.material.widget.Slider) DialogInterface(android.content.DialogInterface) MainActivity(me.ccrama.redditslide.Activities.MainActivity) Toast(android.widget.Toast) MoreChildItem(me.ccrama.redditslide.Adapters.MoreChildItem) Context(android.content.Context) ColorPreferences(me.ccrama.redditslide.ColorPreferences) Calendar(java.util.Calendar) MenuItem(android.view.MenuItem) Intent(android.content.Intent) MediaView(me.ccrama.redditslide.Activities.MediaView) ImageView(android.widget.ImageView) RecyclerView(android.support.v7.widget.RecyclerView) SpoilerRobotoTextView(me.ccrama.redditslide.SpoilerRobotoTextView) View(android.view.View) TextView(android.widget.TextView) SubredditView(me.ccrama.redditslide.Activities.SubredditView) IOException(java.io.IOException) ApiException(net.dean.jraw.ApiException) ActivityNotFoundException(android.content.ActivityNotFoundException) NetworkException(net.dean.jraw.http.NetworkException) ContentType(me.ccrama.redditslide.ContentType) CommentNavType(me.ccrama.redditslide.Adapters.CommentNavType) ShadowboxComments(me.ccrama.redditslide.Activities.ShadowboxComments) FrameLayout(android.widget.FrameLayout)

Aggregations

SwipeRefreshLayout (android.support.v4.widget.SwipeRefreshLayout)115 View (android.view.View)65 RecyclerView (android.support.v7.widget.RecyclerView)58 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)43 TextView (android.widget.TextView)30 Bundle (android.os.Bundle)21 Intent (android.content.Intent)20 Handler (android.os.Handler)17 DefaultItemAnimator (android.support.v7.widget.DefaultItemAnimator)16 Toolbar (android.support.v7.widget.Toolbar)16 ArrayList (java.util.ArrayList)16 AdapterView (android.widget.AdapterView)14 ListView (android.widget.ListView)12 ImageView (android.widget.ImageView)11 GridLayoutManager (android.support.v7.widget.GridLayoutManager)10 Context (android.content.Context)9 LayoutInflater (android.view.LayoutInflater)9 ViewGroup (android.view.ViewGroup)9 DialogInterface (android.content.DialogInterface)8 FrameLayout (android.widget.FrameLayout)7