Loading src/com/android/deskclock/DeskClock.java +43 −11 Original line number Diff line number Diff line Loading @@ -20,15 +20,13 @@ import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.drawable.TransitionDrawable; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.preference.PreferenceManager; import android.support.v13.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; Loading @@ -38,10 +36,6 @@ import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.view.animation.TranslateAnimation; import android.widget.PopupMenu; import android.widget.TextView; Loading Loading @@ -134,6 +128,7 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe mStopwatchTab.setContentDescription(R.string.menu_stopwatch); mTabsAdapter.addTab(mStopwatchTab, StopwatchFragment.class,STOPWATCH_TAB_INDEX); mActionBar.setSelectedNavigationItem(selectedIndex); mTabsAdapter.notifySelectedPage(selectedIndex); } } Loading Loading @@ -268,10 +263,19 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe Log.v(LOG_TAG, "Setting home time zone to " + homeTimeZone); } public boolean isClockTab() { return mViewPager.getCurrentItem() == CLOCK_TAB_INDEX; public void registerPageChangedListener(DeskClockFragment frag) { if (mTabsAdapter != null) { mTabsAdapter.registerPageChangedListener(frag); } } public void unregisterPageChangedListener(DeskClockFragment frag) { if (mTabsAdapter != null) { mTabsAdapter.unregisterPageChangedListener(frag); } } /*** * Adapter for wrapping together the ActionBar's tab with the ViewPager */ Loading Loading @@ -300,6 +304,8 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe ActionBar mMainActionBar; Context mContext; ViewPager mPager; // Used for doing callbacks to fragments. ArrayList<String> mFragmentTags = new ArrayList<String>(); public TabsAdapter(Activity activity, ViewPager pager) { super(activity.getFragmentManager()); Loading Loading @@ -340,6 +346,7 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe @Override public void onPageSelected(int position) { mMainActionBar.setSelectedNavigationItem(position); notifyPageChanged(position); } @Override Loading @@ -363,14 +370,39 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe // Do nothing } public void notifySelectedPage(int page) { notifyPageChanged(page); } private void notifyPageChanged(int newPage) { for (String tag : mFragmentTags) { final FragmentManager fm = getFragmentManager(); DeskClockFragment f = (DeskClockFragment) fm.findFragmentByTag(tag); if (f != null) { f.onPageChanged(newPage); } } } public void registerPageChangedListener(DeskClockFragment frag) { mFragmentTags.add(frag.getTag()); // Since registering a listener by the fragment is done sometimes after the page // was already changed, make sure the fragment gets the current page frag.onPageChanged(mMainActionBar.getSelectedNavigationIndex()); } public void unregisterPageChangedListener(DeskClockFragment frag) { mFragmentTags.remove(frag.getTag()); } } public static abstract class OnTapListener implements OnTouchListener { private float mLastTouchX; private float mLastTouchY; private long mLastTouchTime; private TextView mMakePressedTextView; private int mPressedColor, mGrayColor; private final TextView mMakePressedTextView; private final int mPressedColor, mGrayColor; private final float MAX_MOVEMENT_ALLOWED = 20; private final long MAX_TIME_ALLOWED = 500; Loading src/com/android/deskclock/DeskClockFragment.java +2 −11 Original line number Diff line number Diff line Loading @@ -17,19 +17,10 @@ package com.android.deskclock; import android.app.Fragment; import android.content.Context; public class DeskClockFragment extends Fragment { protected Context mContext; private boolean mButtonClicked = false; protected void buttonClicked(boolean state) { mButtonClicked = state; } public boolean isButtonClicked() { boolean res = mButtonClicked; mButtonClicked = false; return res; public void onPageChanged(int page) { // Do nothing here , only in derived classes } } src/com/android/deskclock/stopwatch/StopwatchFragment.java +43 −10 Original line number Diff line number Diff line Loading @@ -9,6 +9,8 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.PowerManager; import android.os.PowerManager.WakeLock; import android.preference.PreferenceManager; import android.view.LayoutInflater; import android.view.View; Loading @@ -17,7 +19,6 @@ import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListPopupWindow; Loading @@ -28,7 +29,6 @@ import android.widget.TextView; import com.android.deskclock.CircleButtonsLinearLayout; import com.android.deskclock.CircleTimerView; import com.android.deskclock.DeskClock; import com.android.deskclock.DeskClock.OnTapListener; import com.android.deskclock.DeskClockFragment; import com.android.deskclock.Log; import com.android.deskclock.R; Loading @@ -38,10 +38,10 @@ import com.android.deskclock.timer.CountingTimerView; import java.util.ArrayList; import java.util.List; /** * TODO: Insert description here. (generated by isaackatz) */ public class StopwatchFragment extends DeskClockFragment implements OnSharedPreferenceChangeListener{ public class StopwatchFragment extends DeskClockFragment implements OnSharedPreferenceChangeListener { private static final String TAG = "StopwatchFragment"; int mState = Stopwatches.STOPWATCH_RESET; // Stopwatch views that are accessed by the activity Loading @@ -52,6 +52,7 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref private ListView mLapsList; private ImageButton mShareButton; private ListPopupWindow mSharePopup; private WakeLock mWakeLock; // Used for calculating the time from the start taking into account the pause times long mStartTime = 0; Loading Loading @@ -185,7 +186,6 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref Intent intent = new Intent(context, StopwatchService.class); intent.putExtra(Stopwatches.MESSAGE_TIME, time); intent.putExtra(Stopwatches.SHOW_NOTIF, false); buttonClicked(true); switch (mState) { case Stopwatches.STOPWATCH_RUNNING: // do stop Loading @@ -194,6 +194,7 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref doStop(); intent.setAction(Stopwatches.STOP_STOPWATCH); context.startService(intent); releaseWakeLock(); break; case Stopwatches.STOPWATCH_RESET: case Stopwatches.STOPWATCH_STOPPED: Loading @@ -201,6 +202,7 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref doStart(time); intent.setAction(Stopwatches.START_STOPWATCH); context.startService(intent); acquireWakeLock(); break; default: Log.wtf("Illegal state " + mState Loading @@ -224,7 +226,6 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref Intent intent = new Intent(context, StopwatchService.class); intent.putExtra(Stopwatches.MESSAGE_TIME, time); intent.putExtra(Stopwatches.SHOW_NOTIF, false); buttonClicked(true); switch (mState) { case Stopwatches.STOPWATCH_RUNNING: // Save lap time Loading @@ -238,6 +239,7 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref doReset(); intent.setAction(Stopwatches.RESET_STOPWATCH); context.startService(intent); releaseWakeLock(); break; default: Log.wtf("Illegal state " + mState Loading Loading @@ -300,12 +302,13 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref setButtons(mState); mTimeText.setTime(mAccumulatedTime, true, true); if (mState == Stopwatches.STOPWATCH_RUNNING) { acquireWakeLock(); startUpdateThread(); } else if (mState == Stopwatches.STOPWATCH_STOPPED && mAccumulatedTime != 0) { mTimeText.blinkTimeStr(true); } showLaps(); ((DeskClock)getActivity()).registerPageChangedListener(this); super.onResume(); } Loading @@ -325,10 +328,20 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref mSharePopup.dismiss(); mSharePopup = null; } ((DeskClock)getActivity()).unregisterPageChangedListener(this); releaseWakeLock(); super.onPause(); } @Override public void onPageChanged(int page) { if (page == DeskClock.STOPWATCH_TAB_INDEX && mState == Stopwatches.STOPWATCH_RUNNING) { acquireWakeLock(); } else { releaseWakeLock(); } } private void doStop() { stopUpdateThread(); mTime.pauseIntervalAnimation(); Loading Loading @@ -743,4 +756,24 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref } } } // Used to keeps screen on when stopwatch is running. private void acquireWakeLock() { if (mWakeLock == null) { final PowerManager pm = (PowerManager) getActivity().getSystemService(Context.POWER_SERVICE); mWakeLock = pm.newWakeLock( PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, TAG); mWakeLock.setReferenceCounted(false); } mWakeLock.acquire(); } private void releaseWakeLock() { if (mWakeLock != null && mWakeLock.isHeld()) { mWakeLock.release(); } } } Loading
src/com/android/deskclock/DeskClock.java +43 −11 Original line number Diff line number Diff line Loading @@ -20,15 +20,13 @@ import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.drawable.TransitionDrawable; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.preference.PreferenceManager; import android.support.v13.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; Loading @@ -38,10 +36,6 @@ import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.view.animation.TranslateAnimation; import android.widget.PopupMenu; import android.widget.TextView; Loading Loading @@ -134,6 +128,7 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe mStopwatchTab.setContentDescription(R.string.menu_stopwatch); mTabsAdapter.addTab(mStopwatchTab, StopwatchFragment.class,STOPWATCH_TAB_INDEX); mActionBar.setSelectedNavigationItem(selectedIndex); mTabsAdapter.notifySelectedPage(selectedIndex); } } Loading Loading @@ -268,10 +263,19 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe Log.v(LOG_TAG, "Setting home time zone to " + homeTimeZone); } public boolean isClockTab() { return mViewPager.getCurrentItem() == CLOCK_TAB_INDEX; public void registerPageChangedListener(DeskClockFragment frag) { if (mTabsAdapter != null) { mTabsAdapter.registerPageChangedListener(frag); } } public void unregisterPageChangedListener(DeskClockFragment frag) { if (mTabsAdapter != null) { mTabsAdapter.unregisterPageChangedListener(frag); } } /*** * Adapter for wrapping together the ActionBar's tab with the ViewPager */ Loading Loading @@ -300,6 +304,8 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe ActionBar mMainActionBar; Context mContext; ViewPager mPager; // Used for doing callbacks to fragments. ArrayList<String> mFragmentTags = new ArrayList<String>(); public TabsAdapter(Activity activity, ViewPager pager) { super(activity.getFragmentManager()); Loading Loading @@ -340,6 +346,7 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe @Override public void onPageSelected(int position) { mMainActionBar.setSelectedNavigationItem(position); notifyPageChanged(position); } @Override Loading @@ -363,14 +370,39 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe // Do nothing } public void notifySelectedPage(int page) { notifyPageChanged(page); } private void notifyPageChanged(int newPage) { for (String tag : mFragmentTags) { final FragmentManager fm = getFragmentManager(); DeskClockFragment f = (DeskClockFragment) fm.findFragmentByTag(tag); if (f != null) { f.onPageChanged(newPage); } } } public void registerPageChangedListener(DeskClockFragment frag) { mFragmentTags.add(frag.getTag()); // Since registering a listener by the fragment is done sometimes after the page // was already changed, make sure the fragment gets the current page frag.onPageChanged(mMainActionBar.getSelectedNavigationIndex()); } public void unregisterPageChangedListener(DeskClockFragment frag) { mFragmentTags.remove(frag.getTag()); } } public static abstract class OnTapListener implements OnTouchListener { private float mLastTouchX; private float mLastTouchY; private long mLastTouchTime; private TextView mMakePressedTextView; private int mPressedColor, mGrayColor; private final TextView mMakePressedTextView; private final int mPressedColor, mGrayColor; private final float MAX_MOVEMENT_ALLOWED = 20; private final long MAX_TIME_ALLOWED = 500; Loading
src/com/android/deskclock/DeskClockFragment.java +2 −11 Original line number Diff line number Diff line Loading @@ -17,19 +17,10 @@ package com.android.deskclock; import android.app.Fragment; import android.content.Context; public class DeskClockFragment extends Fragment { protected Context mContext; private boolean mButtonClicked = false; protected void buttonClicked(boolean state) { mButtonClicked = state; } public boolean isButtonClicked() { boolean res = mButtonClicked; mButtonClicked = false; return res; public void onPageChanged(int page) { // Do nothing here , only in derived classes } }
src/com/android/deskclock/stopwatch/StopwatchFragment.java +43 −10 Original line number Diff line number Diff line Loading @@ -9,6 +9,8 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.PowerManager; import android.os.PowerManager.WakeLock; import android.preference.PreferenceManager; import android.view.LayoutInflater; import android.view.View; Loading @@ -17,7 +19,6 @@ import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListPopupWindow; Loading @@ -28,7 +29,6 @@ import android.widget.TextView; import com.android.deskclock.CircleButtonsLinearLayout; import com.android.deskclock.CircleTimerView; import com.android.deskclock.DeskClock; import com.android.deskclock.DeskClock.OnTapListener; import com.android.deskclock.DeskClockFragment; import com.android.deskclock.Log; import com.android.deskclock.R; Loading @@ -38,10 +38,10 @@ import com.android.deskclock.timer.CountingTimerView; import java.util.ArrayList; import java.util.List; /** * TODO: Insert description here. (generated by isaackatz) */ public class StopwatchFragment extends DeskClockFragment implements OnSharedPreferenceChangeListener{ public class StopwatchFragment extends DeskClockFragment implements OnSharedPreferenceChangeListener { private static final String TAG = "StopwatchFragment"; int mState = Stopwatches.STOPWATCH_RESET; // Stopwatch views that are accessed by the activity Loading @@ -52,6 +52,7 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref private ListView mLapsList; private ImageButton mShareButton; private ListPopupWindow mSharePopup; private WakeLock mWakeLock; // Used for calculating the time from the start taking into account the pause times long mStartTime = 0; Loading Loading @@ -185,7 +186,6 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref Intent intent = new Intent(context, StopwatchService.class); intent.putExtra(Stopwatches.MESSAGE_TIME, time); intent.putExtra(Stopwatches.SHOW_NOTIF, false); buttonClicked(true); switch (mState) { case Stopwatches.STOPWATCH_RUNNING: // do stop Loading @@ -194,6 +194,7 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref doStop(); intent.setAction(Stopwatches.STOP_STOPWATCH); context.startService(intent); releaseWakeLock(); break; case Stopwatches.STOPWATCH_RESET: case Stopwatches.STOPWATCH_STOPPED: Loading @@ -201,6 +202,7 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref doStart(time); intent.setAction(Stopwatches.START_STOPWATCH); context.startService(intent); acquireWakeLock(); break; default: Log.wtf("Illegal state " + mState Loading @@ -224,7 +226,6 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref Intent intent = new Intent(context, StopwatchService.class); intent.putExtra(Stopwatches.MESSAGE_TIME, time); intent.putExtra(Stopwatches.SHOW_NOTIF, false); buttonClicked(true); switch (mState) { case Stopwatches.STOPWATCH_RUNNING: // Save lap time Loading @@ -238,6 +239,7 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref doReset(); intent.setAction(Stopwatches.RESET_STOPWATCH); context.startService(intent); releaseWakeLock(); break; default: Log.wtf("Illegal state " + mState Loading Loading @@ -300,12 +302,13 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref setButtons(mState); mTimeText.setTime(mAccumulatedTime, true, true); if (mState == Stopwatches.STOPWATCH_RUNNING) { acquireWakeLock(); startUpdateThread(); } else if (mState == Stopwatches.STOPWATCH_STOPPED && mAccumulatedTime != 0) { mTimeText.blinkTimeStr(true); } showLaps(); ((DeskClock)getActivity()).registerPageChangedListener(this); super.onResume(); } Loading @@ -325,10 +328,20 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref mSharePopup.dismiss(); mSharePopup = null; } ((DeskClock)getActivity()).unregisterPageChangedListener(this); releaseWakeLock(); super.onPause(); } @Override public void onPageChanged(int page) { if (page == DeskClock.STOPWATCH_TAB_INDEX && mState == Stopwatches.STOPWATCH_RUNNING) { acquireWakeLock(); } else { releaseWakeLock(); } } private void doStop() { stopUpdateThread(); mTime.pauseIntervalAnimation(); Loading Loading @@ -743,4 +756,24 @@ public class StopwatchFragment extends DeskClockFragment implements OnSharedPref } } } // Used to keeps screen on when stopwatch is running. private void acquireWakeLock() { if (mWakeLock == null) { final PowerManager pm = (PowerManager) getActivity().getSystemService(Context.POWER_SERVICE); mWakeLock = pm.newWakeLock( PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, TAG); mWakeLock.setReferenceCounted(false); } mWakeLock.acquire(); } private void releaseWakeLock() { if (mWakeLock != null && mWakeLock.isHeld()) { mWakeLock.release(); } } }