Search in sources :

Example 1 with TabClickEvent

use of com.battlelancer.seriesguide.util.TabClickEvent in project SeriesGuide by UweTrottmann.

the class ShowsActivity method setupViews.

private void setupViews() {
    // setup floating action button for adding shows
    FloatingActionButton buttonAddShow = ButterKnife.findById(this, R.id.buttonShowsAdd);
    buttonAddShow.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            startActivity(new Intent(ShowsActivity.this, SearchActivity.class).putExtra(SearchActivity.EXTRA_DEFAULT_TAB, SearchActivity.TAB_POSITION_SEARCH));
        }
    });
    viewPager = (ViewPager) findViewById(R.id.viewPagerTabs);
    SlidingTabLayout tabs = (SlidingTabLayout) findViewById(R.id.tabLayoutTabs);
    tabs.setOnTabClickListener(new SlidingTabLayout.OnTabClickListener() {

        @Override
        public void onTabClick(int position) {
            if (viewPager.getCurrentItem() == position) {
                EventBus.getDefault().post(new TabClickEvent(position));
            }
        }
    });
    tabsAdapter = new ShowsTabPageAdapter(getSupportFragmentManager(), this, viewPager, tabs, buttonAddShow);
    // shows tab
    tabsAdapter.addTab(R.string.shows, ShowsFragment.class, null);
    // now tab
    tabsAdapter.addTab(R.string.now_tab, ShowsNowFragment.class, null);
    // upcoming tab
    final Bundle argsUpcoming = new Bundle();
    argsUpcoming.putString(CalendarFragment.InitBundle.TYPE, CalendarFragment.CalendarType.UPCOMING);
    argsUpcoming.putString(CalendarFragment.InitBundle.ANALYTICS_TAG, "Upcoming");
    argsUpcoming.putInt(CalendarFragment.InitBundle.LOADER_ID, UPCOMING_LOADER_ID);
    argsUpcoming.putInt(CalendarFragment.InitBundle.EMPTY_STRING_ID, R.string.noupcoming);
    tabsAdapter.addTab(R.string.upcoming, CalendarFragment.class, argsUpcoming);
    // recent tab
    final Bundle argsRecent = new Bundle();
    argsRecent.putString(CalendarFragment.InitBundle.TYPE, CalendarFragment.CalendarType.RECENT);
    argsRecent.putString(CalendarFragment.InitBundle.ANALYTICS_TAG, "Recent");
    argsRecent.putInt(CalendarFragment.InitBundle.LOADER_ID, RECENT_LOADER_ID);
    argsRecent.putInt(CalendarFragment.InitBundle.EMPTY_STRING_ID, R.string.norecent);
    tabsAdapter.addTab(R.string.recent, CalendarFragment.class, argsRecent);
    // display new tabs
    tabsAdapter.notifyTabsChanged();
}
Also used : Bundle(android.os.Bundle) TabClickEvent(com.battlelancer.seriesguide.util.TabClickEvent) SlidingTabLayout(com.battlelancer.seriesguide.widgets.SlidingTabLayout) FloatingActionButton(android.support.design.widget.FloatingActionButton) Intent(android.content.Intent) View(android.view.View)

Example 2 with TabClickEvent

use of com.battlelancer.seriesguide.util.TabClickEvent in project SeriesGuide by UweTrottmann.

the class SearchActivity method setupViews.

private void setupViews(boolean mayShowKeyboard) {
    ButterKnife.bind(this);
    clearButton.setVisibility(View.GONE);
    clearButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            searchView.setText(null);
            searchView.requestFocus();
        }
    });
    searchView.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) {
            boolean isEmptyText = TextUtils.isEmpty(s);
            triggerLocalSearch(isEmptyText ? "" : s.toString());
            clearButton.setVisibility(isEmptyText ? View.GONE : View.VISIBLE);
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });
    searchView.setOnEditorActionListener(new TextView.OnEditorActionListener() {

        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_SEARCH || (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
                triggerTvdbSearch();
                return true;
            }
            return false;
        }
    });
    // manually retrieve the auto complete view popup background to override the theme
    TypedValue outValue = new TypedValue();
    getTheme().resolveAttribute(android.R.attr.autoCompleteTextViewStyle, outValue, true);
    int[] attributes = new int[] { android.R.attr.popupBackground };
    TypedArray a = getTheme().obtainStyledAttributes(outValue.data, attributes);
    if (a.hasValue(0)) {
        searchView.setDropDownBackgroundDrawable(a.getDrawable(0));
    }
    a.recycle();
    // setup search history (only used by TVDb search)
    searchHistory = new SearchHistory(this, SearchSettings.KEY_SUFFIX_THETVDB);
    searchHistoryAdapter = new ArrayAdapter<>(this, SeriesGuidePreferences.THEME == R.style.Theme_SeriesGuide_Light ? R.layout.item_dropdown_light : R.layout.item_dropdown, searchHistory.getSearchHistory());
    searchView.setThreshold(1);
    searchView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            ((AutoCompleteTextView) v).showDropDown();
        }
    });
    searchView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            triggerTvdbSearch();
        }
    });
    // set in code as XML is overridden
    searchView.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
    searchView.setInputType(EditorInfo.TYPE_CLASS_TEXT);
    // drop-down is auto-shown on config change, ensure it is hidden when recreating views
    searchView.dismissDropDown();
    TabStripAdapter tabsAdapter = new TabStripAdapter(getSupportFragmentManager(), this, viewPager, tabs);
    tabs.setOnPageChangeListener(pageChangeListener);
    tabs.setOnTabClickListener(new SlidingTabLayout.OnTabClickListener() {

        @Override
        public void onTabClick(int position) {
            if (viewPager.getCurrentItem() == position) {
                EventBus.getDefault().post(new TabClickEvent(position));
            }
        }
    });
    tabsAdapter.addTab(R.string.shows, ShowSearchFragment.class, null);
    tabsAdapter.addTab(R.string.episodes, EpisodeSearchFragment.class, null);
    tabsAdapter.addTab(R.string.action_shows_add, TvdbAddFragment.class, null);
    if (TraktCredentials.get(this).hasCredentials()) {
        addTraktTab(tabsAdapter, R.string.recommended, TraktAddFragment.TYPE_RECOMMENDED);
        addTraktTab(tabsAdapter, R.string.watched_shows, TraktAddFragment.TYPE_WATCHED);
        addTraktTab(tabsAdapter, R.string.shows_collection, TraktAddFragment.TYPE_COLLECTION);
        addTraktTab(tabsAdapter, R.string.watchlist, TraktAddFragment.TYPE_WATCHLIST);
    }
    tabsAdapter.notifyTabsChanged();
    // set default tab
    if (getIntent() != null && getIntent().getExtras() != null) {
        int defaultTab = getIntent().getExtras().getInt(EXTRA_DEFAULT_TAB);
        if (defaultTab < tabsAdapter.getCount()) {
            viewPager.setCurrentItem(defaultTab);
        }
        if (mayShowKeyboard && (defaultTab == TAB_POSITION_SHOWS || defaultTab == TAB_POSITION_EPISODES)) {
            Utils.showSoftKeyboardOnSearchView(this, searchView);
        }
    } else if (mayShowKeyboard) {
        // also show keyboard when showing first tab (added tab)
        Utils.showSoftKeyboardOnSearchView(this, searchView);
    }
}
Also used : SlidingTabLayout(com.battlelancer.seriesguide.widgets.SlidingTabLayout) BindView(butterknife.BindView) View(android.view.View) AdapterView(android.widget.AdapterView) AutoCompleteTextView(android.widget.AutoCompleteTextView) TextView(android.widget.TextView) KeyEvent(android.view.KeyEvent) TabStripAdapter(com.battlelancer.seriesguide.adapters.TabStripAdapter) TypedArray(android.content.res.TypedArray) TabClickEvent(com.battlelancer.seriesguide.util.TabClickEvent) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) AutoCompleteTextView(android.widget.AutoCompleteTextView) TextView(android.widget.TextView) AdapterView(android.widget.AdapterView) SearchHistory(com.battlelancer.seriesguide.util.SearchHistory) TypedValue(android.util.TypedValue)

Aggregations

View (android.view.View)2 TabClickEvent (com.battlelancer.seriesguide.util.TabClickEvent)2 SlidingTabLayout (com.battlelancer.seriesguide.widgets.SlidingTabLayout)2 Intent (android.content.Intent)1 TypedArray (android.content.res.TypedArray)1 Bundle (android.os.Bundle)1 FloatingActionButton (android.support.design.widget.FloatingActionButton)1 Editable (android.text.Editable)1 TextWatcher (android.text.TextWatcher)1 TypedValue (android.util.TypedValue)1 KeyEvent (android.view.KeyEvent)1 AdapterView (android.widget.AdapterView)1 AutoCompleteTextView (android.widget.AutoCompleteTextView)1 TextView (android.widget.TextView)1 BindView (butterknife.BindView)1 TabStripAdapter (com.battlelancer.seriesguide.adapters.TabStripAdapter)1 SearchHistory (com.battlelancer.seriesguide.util.SearchHistory)1