diff options
Diffstat (limited to 'src/com/android/dialer/calllog/NewCallLogActivity.java')
-rw-r--r-- | src/com/android/dialer/calllog/NewCallLogActivity.java | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/src/com/android/dialer/calllog/NewCallLogActivity.java b/src/com/android/dialer/calllog/NewCallLogActivity.java new file mode 100644 index 000000000..a3704cc98 --- /dev/null +++ b/src/com/android/dialer/calllog/NewCallLogActivity.java @@ -0,0 +1,189 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * 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.android.dialer.calllog; + +import android.app.ActionBar; +import android.app.Activity; +import android.app.Fragment; +import android.app.FragmentManager; +import android.app.ActionBar.Tab; +import android.app.ActionBar.TabListener; +import android.app.FragmentTransaction; +import android.content.Intent; +import android.os.Bundle; +import android.provider.CallLog.Calls; +import android.support.v13.app.FragmentPagerAdapter; +import android.support.v4.view.PagerTabStrip; +import android.support.v4.view.ViewPager; +import android.support.v4.view.ViewPager.OnPageChangeListener; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; + +import com.android.dialer.NewDialtactsActivity; +import com.android.dialer.R; +import com.android.dialer.calllog.NewCallLogFragment; + +public class NewCallLogActivity extends Activity { + + private ViewPager mViewPager; + private ViewPagerAdapter mViewPagerAdapter; + private NewCallLogFragment mAllCallsFragment; + private NewCallLogFragment mMissedCallsFragment; + private NewCallLogFragment mVoicemailsFragment; + + private static final int TAB_INDEX_ALL = 0; + private static final int TAB_INDEX_MISSED = 1; + private static final int TAB_INDEX_VOICEMAIL = 2; + + private static final int TAB_INDEX_COUNT = 3; + + public class ViewPagerAdapter extends FragmentPagerAdapter { + public ViewPagerAdapter(FragmentManager fm) { + super(fm); + } + + @Override + public Fragment getItem(int position) { + switch (position) { + case TAB_INDEX_ALL: + mAllCallsFragment = new NewCallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL); + return mAllCallsFragment; + case TAB_INDEX_MISSED: + mMissedCallsFragment = new NewCallLogFragment(Calls.MISSED_TYPE); + return mMissedCallsFragment; + case TAB_INDEX_VOICEMAIL: + mVoicemailsFragment = new NewCallLogFragment(Calls.VOICEMAIL_TYPE); + return mVoicemailsFragment; + } + throw new IllegalStateException("No fragment at position " + position); + } + + @Override + public int getCount() { + return TAB_INDEX_COUNT; + } + } + + private final TabListener mTabListener = new TabListener() { + @Override + public void onTabUnselected(Tab tab, FragmentTransaction ft) { + } + + @Override + public void onTabSelected(Tab tab, FragmentTransaction ft) { + if (mViewPager != null && mViewPager.getCurrentItem() != tab.getPosition()) { + mViewPager.setCurrentItem(tab.getPosition(), true); + } + } + + @Override + public void onTabReselected(Tab tab, FragmentTransaction ft) { + } + }; + + private final OnPageChangeListener mOnPageChangeListener = new OnPageChangeListener() { + + @Override + public void onPageScrolled( + int position, float positionOffset, int positionOffsetPixels) {} + + @Override + public void onPageSelected(int position) { + final ActionBar actionBar = getActionBar(); + actionBar.selectTab(actionBar.getTabAt(position)); + } + + @Override + public void onPageScrollStateChanged(int arg0) { + } + }; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.call_log_activity_new); + + final ActionBar actionBar = getActionBar(); + actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); + actionBar.setDisplayShowHomeEnabled(true); + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setDisplayShowTitleEnabled(true); + + final Tab allTab = actionBar.newTab(); + final String allTitle = getString(R.string.call_log_all_title); + allTab.setContentDescription(allTitle); + allTab.setText(allTitle); + allTab.setTabListener(mTabListener); + actionBar.addTab(allTab); + + final Tab missedTab = actionBar.newTab(); + final String missedTitle = getString(R.string.call_log_missed_title); + missedTab.setContentDescription(missedTitle); + missedTab.setText(missedTitle); + missedTab.setTabListener(mTabListener); + actionBar.addTab(missedTab); + + final Tab voicemailTab = actionBar.newTab(); + final String voicemailTitle = getString(R.string.call_log_voicemail_title); + voicemailTab.setContentDescription(voicemailTitle); + voicemailTab.setText(voicemailTitle); + voicemailTab.setTabListener(mTabListener); + actionBar.addTab(voicemailTab); + + mViewPager = (ViewPager) findViewById(R.id.call_log_pager); + mViewPagerAdapter = new ViewPagerAdapter(getFragmentManager()); + mViewPager.setAdapter(mViewPagerAdapter); + mViewPager.setOnPageChangeListener(mOnPageChangeListener); + mViewPager.setOffscreenPageLimit(2); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + final MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.call_log_options_new, menu); + return true; + } + + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + final MenuItem itemDeleteAll = menu.findItem(R.id.delete_all); + + final NewCallLogAdapter adapter = mAllCallsFragment.getAdapter(); + // Check if all the menu items are inflated correctly. As a shortcut, we assume all + // menu items are ready if the first item is non-null. + if (itemDeleteAll != null) { + itemDeleteAll.setEnabled(adapter != null && !adapter.isEmpty()); + } + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + final Intent intent = new Intent(this, NewDialtactsActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(intent); + return true; + case R.id.delete_all: + ClearCallLogDialog.show(getFragmentManager()); + return true; + } + return super.onOptionsItemSelected(item); + } +} |