com.tweetlanes.android.core.view.SearchActivity.java Source code

Java tutorial

Introduction

Here is the source code for com.tweetlanes.android.core.view.SearchActivity.java

Source

/*
 * Copyright (C) 2013 Chris Lacy Licensed under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with the
 * License. You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
 * or agreed to in writing, software distributed under the License is
 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */

package com.tweetlanes.android.core.view;

import android.app.ActionBar;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.view.MenuItem;
import android.widget.ViewSwitcher;

import com.tweetlanes.android.core.R;
import com.tweetlanes.android.core.model.LaneDescriptor;
import com.tweetlanes.android.core.widget.viewpagerindicator.TitleProvider;

public class SearchActivity extends BaseLaneActivity {

    private String mSearchTerm;
    private SearchAdapter mSearchAdapter;
    private ViewSwitcher mViewSwitcher;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        mSearchTerm = getIntent().getStringExtra("query");
        if (mSearchTerm == null) {
            Uri data = getIntent().getData();
            if (data != null) {
                mSearchTerm = data.toString().replace("com.tweetlanes.android.core.search://", "");
            }
        }

        super.onCreate(savedInstanceState);

        // This could be true if loading back into the app from Multitasking
        if (mSearchTerm == null) {
            restartApp();
            return;
        }

        ActionBar actionBar = getActionBar();
        actionBar.setDisplayUseLogoEnabled(true);
        actionBar.setDisplayShowTitleEnabled(true);
        actionBar.setTitle(getString(R.string.action_bar_search_title) + " \"" + mSearchTerm + "\"");
        actionBar.setDisplayHomeAsUpEnabled(true);

        mViewSwitcher = (ViewSwitcher) findViewById(R.id.rootViewSwitcher);
        updateViewVisibility();
    }

    /*
     * (non-Javadoc)
     *
     * @see
     * com.tweetlanes.android.core.view.BaseLaneActivity#getAdapterForViewPager()
     */
    @Override
    protected PagerAdapter getAdapterForViewPager() {

        if (mSearchTerm == null) {
            return null;
        }

        if (mSearchAdapter == null) {
            mSearchAdapter = new SearchAdapter(getSupportFragmentManager());
        }
        return mSearchAdapter;
    }

    /*
     * (non-Javadoc)
     *
     * @see
     * com.tweetlanes.android.core.view.BaseLaneActivity#getFragmentStatePagerAdapter
     * ()
     */
    @Override
    protected FragmentStatePagerAdapter getFragmentStatePagerAdapter() {
        return mSearchAdapter;
    }

    /*
     *
    */
    private void updateViewVisibility() {

        mViewSwitcher.reset();
        mViewSwitcher.setDisplayedChild(1);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if (super.onOptionsItemSelected(item)) {
            return true;
        }

        switch (item.getItemId()) {
        case android.R.id.home:
            // app icon in action bar clicked; go home
            Intent intent = new Intent(this, HomeActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            return true;
        default:
            return false;
        }
    }

    /*
     *
     */
    class SearchAdapter extends FragmentStatePagerAdapter implements TitleProvider {

        public SearchAdapter(FragmentManager supportFragmentManager) {
            super(supportFragmentManager);
        }

        @Override
        public Fragment getItem(int position) {

            Fragment result;
            LaneDescriptor laneDescriptor = getApp().getSearchLaneDescriptor(position);
            switch (laneDescriptor.getLaneType()) {
            case SEARCH_TERM:
                result = TweetFeedFragment.newInstance(position, laneDescriptor.getContentHandleBase(), mSearchTerm,
                        null, getApp().getCurrentAccountKey());
                break;

            case SEARCH_PERSON:
                result = UserFeedFragment.newInstance(position, laneDescriptor.getContentHandleBase(), mSearchTerm,
                        null, getApp().getCurrentAccountKey());
                break;

            default:
                result = PlaceholderPagerFragment.newInstance(position, laneDescriptor.getLaneTitle(), position);
                break;
            }
            return result;
        }

        @Override
        public int getCount() {
            return getApp().getSearchLaneDefinitions().size();
        }

        @Override
        public String getTitle(int position) {
            return getApp().getSearchLaneDescriptor(position).getLaneTitle().toUpperCase();
        }

        @Override
        public int getItemPosition(Object object) {
            return POSITION_NONE;
        }
    }

    /*
     * (non-Javadoc)
     *
     * @see
     * android.widget.SearchView.OnQueryTextListener#onQueryTextSubmit(java.
     * lang.String)
     */
    @Override
    public boolean onQueryTextSubmit(String query) {

        if (query != null) {
            mSearchTerm = query;
            getIntent().putExtra("query", query);
            getActionBar().setTitle(mSearchTerm);
            mSearchAdapter.notifyDataSetChanged();

            return true;
        }
        return false;
    }

}