diff --git a/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPicker.java b/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPicker.java index ad2a3dcf..0748d125 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPicker.java +++ b/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPicker.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.res.ColorStateList; +import android.content.res.Resources; import android.content.res.TypedArray; import android.os.Bundle; import android.os.Parcel; @@ -40,6 +41,10 @@ public class HmsPicker extends LinearLayout implements Button.OnClickListener, B private int mDeleteDrawableSrcResId; private int mTheme = -1; + private int mSign; + public static final int SIGN_POSITIVE = 0; + public static final int SIGN_NEGATIVE = 1; + /** * Instantiates an HmsPicker object * @@ -53,7 +58,7 @@ public HmsPicker(Context context) { * Instantiates an HmsPicker object * * @param context the Context required for creation - * @param attrs additional attributes that define custom colors, selectors, and backgrounds. + * @param attrs additional attributes that define custom colors, selectors, and backgrounds. */ public HmsPicker(Context context, AttributeSet attrs) { super(context, attrs); @@ -125,6 +130,10 @@ private void restyleViews() { if (mEnteredHms != null) { mEnteredHms.setTheme(mTheme); } + if (mLeft != null) { + mLeft.setTextColor(mTextColor); + mLeft.setBackgroundResource(mKeyBackgroundResId); + } } @Override @@ -155,7 +164,7 @@ protected void onFinishInflate() { mLeft = (Button) v4.findViewById(R.id.key_left); mNumbers[0] = (Button) v4.findViewById(R.id.key_middle); mRight = (Button) v4.findViewById(R.id.key_right); - setLeftRightEnabled(false); + setRightEnabled(false); for (int i = 0; i < 10; i++) { mNumbers[i].setOnClickListener(this); @@ -164,6 +173,10 @@ protected void onFinishInflate() { } updateHms(); + Resources res = mContext.getResources(); + mLeft.setText(res.getString(R.string.number_picker_plus_minus)); + mLeft.setOnClickListener(this); + mHoursLabel = (TextView) findViewById(R.id.hours_label); mMinutesLabel = (TextView) findViewById(R.id.minutes_label); mSecondsLabel = (TextView) findViewById(R.id.seconds_label); @@ -203,10 +216,20 @@ protected void doOnClick(View v) { mInput[mInputPointer] = 0; mInputPointer--; } + } else if (v == mLeft) { + onLeftClicked(); } updateKeypad(); } + private void onLeftClicked() { + if (isNegative()) { + mSign = SIGN_POSITIVE; + } else { + mSign = SIGN_NEGATIVE; + } + } + @Override public boolean onLongClick(View v) { v.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); @@ -243,13 +266,13 @@ private void updateKeypad() { /** * Update the time displayed in the picker: - * + *

* Put "-" in digits that was not entered by passing -1 - * + *

* Hide digit by passing -2 (for highest hours digit only); */ protected void updateHms() { - mEnteredHms.setTime(mInput[4], mInput[3], mInput[2], mInput[1], mInput[0]); + mEnteredHms.setTime(isNegative(), mInput[4], mInput[3], mInput[2], mInput[1], mInput[0]); } private void addClickedNumber(int val) { @@ -317,10 +340,21 @@ public int getSeconds() { return mInput[1] * 10 + mInput[0]; } + /** + * Using View.GONE, View.VISIBILE, or View.INVISIBLE, set the visibility of the plus/minus indicator + * + * @param visibility an int using Android's View.* convention + */ + public void setPlusMinusVisibility(int visibility) { + if (mLeft != null) { + mLeft.setVisibility(visibility); + } + } + /** * Set the current hours, minutes, and seconds on the picker. * - * @param hours the input hours value + * @param hours the input hours value * @param minutes the input minutes value * @param seconds the input seconds value */ @@ -331,7 +365,7 @@ public void setTime(int hours, int minutes, int seconds) { mInput[1] = seconds / 10; mInput[0] = seconds % 10; - for (int i=4; i>=0; i--) { + for (int i = 4; i >= 0; i--) { if (mInput[i] > 0) { mInputPointer = i; break; @@ -342,7 +376,7 @@ public void setTime(int hours, int minutes, int seconds) { } - @Override + @Override public Parcelable onSaveInstanceState() { final Parcelable parcel = super.onSaveInstanceState(); final SavedState state = new SavedState(parcel); @@ -433,12 +467,14 @@ public void restoreEntryState(Bundle inState, String key) { } } - protected void setLeftRightEnabled(boolean enabled) { - mLeft.setEnabled(enabled); + protected void setRightEnabled(boolean enabled) { mRight.setEnabled(enabled); if (!enabled) { - mLeft.setContentDescription(null); mRight.setContentDescription(null); } } + + public boolean isNegative() { + return mSign == SIGN_NEGATIVE; + } } diff --git a/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPickerBuilder.java b/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPickerBuilder.java index 769261f8..1939bcce 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPickerBuilder.java +++ b/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPickerBuilder.java @@ -19,9 +19,26 @@ public class HmsPickerBuilder { private Fragment targetFragment; private int mReference; private Vector mHmsPickerDialogHandlers = new Vector(); + private Vector mHmsPickerDialogHandlerV2s = new Vector(); private int mHours; private int mMinutes; private int mSeconds; + private Integer plusMinusVisibility; + + /** + * Set the visibility of the +/- button. This takes an int corresponding to Android's View.VISIBLE, View.INVISIBLE, + * or View.GONE. When using View.INVISIBLE, the +/- button will still be present in the layout but be + * non-clickable. When set to View.GONE, the +/- button will disappear entirely, and the "0" button will occupy its + * space. + * + * @param plusMinusVisibility an int corresponding to View.VISIBLE, View.INVISIBLE, or View.GONE + * @return the current Builder object + */ + public HmsPickerBuilder setPlusMinusVisibility(int plusMinusVisibility) { + this.plusMinusVisibility = plusMinusVisibility; + return this; + } + /** * Attach a FragmentManager. This is required for creation of the Fragment. @@ -68,6 +85,32 @@ public HmsPickerBuilder setReference(int reference) { return this; } + /** + * @param handler an Object implementing the appropriate Picker Handler + * @return the current Builder object + * @Deprecated : use HmsPickerDialogHandlerV2 that return negative/positive status + *

+ * Attach universal objects as additional handlers for notification when the Picker is set. For most use cases, this + * method is not necessary as attachment to an Activity or Fragment is done automatically. If, however, you would + * like additional objects to subscribe to this Picker being set, attach Handlers here. + */ + public HmsPickerBuilder addHmsPickerDialogHandler(HmsPickerDialogHandler handler) { + this.mHmsPickerDialogHandlers.add(handler); + return this; + } + + /** + * @param handler the Object to remove + * @return the current Builder object + * @Deprecated : use HmsPickerDialogHandlerV2 that return negative/positive status + *

+ * Remove objects previously added as handlers. + */ + public HmsPickerBuilder removeHmsPickerDialogHandler(HmsPickerDialogHandler handler) { + this.mHmsPickerDialogHandlers.remove(handler); + return this; + } + /** * Attach universal objects as additional handlers for notification when the Picker is set. For most use cases, this * method is not necessary as attachment to an Activity or Fragment is done automatically. If, however, you would @@ -76,8 +119,8 @@ public HmsPickerBuilder setReference(int reference) { * @param handler an Object implementing the appropriate Picker Handler * @return the current Builder object */ - public HmsPickerBuilder addHmsPickerDialogHandler(HmsPickerDialogHandler handler) { - this.mHmsPickerDialogHandlers.add(handler); + public HmsPickerBuilder addHmsPickerDialogHandler(HmsPickerDialogFragment.HmsPickerDialogHandlerV2 handler) { + this.mHmsPickerDialogHandlerV2s.add(handler); return this; } @@ -87,15 +130,15 @@ public HmsPickerBuilder addHmsPickerDialogHandler(HmsPickerDialogHandler handler * @param handler the Object to remove * @return the current Builder object */ - public HmsPickerBuilder removeHmsPickerDialogHandler(HmsPickerDialogHandler handler) { - this.mHmsPickerDialogHandlers.remove(handler); + public HmsPickerBuilder removeHmsPickerDialogHandler(HmsPickerDialogFragment.HmsPickerDialogHandlerV2 handler) { + this.mHmsPickerDialogHandlerV2s.remove(handler); return this; } /** * Set some initial values for the picker * - * @param hours the initial hours value + * @param hours the initial hours value * @param minutes the initial minutes value * @param seconds the initial seconds value * @return the current Builder object @@ -147,11 +190,12 @@ public void show() { } ft.addToBackStack(null); - final HmsPickerDialogFragment fragment = HmsPickerDialogFragment.newInstance(mReference, styleResId); + final HmsPickerDialogFragment fragment = HmsPickerDialogFragment.newInstance(mReference, styleResId, plusMinusVisibility); if (targetFragment != null) { fragment.setTargetFragment(targetFragment, 0); } fragment.setHmsPickerDialogHandlers(mHmsPickerDialogHandlers); + fragment.setHmsPickerDialogHandlersV2(mHmsPickerDialogHandlerV2s); if ((mHours | mMinutes | mSeconds) != 0) { fragment.setTime(mHours, mMinutes, mSeconds); diff --git a/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPickerDialogFragment.java b/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPickerDialogFragment.java index c64452d8..17991d30 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPickerDialogFragment.java +++ b/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPickerDialogFragment.java @@ -22,6 +22,7 @@ public class HmsPickerDialogFragment extends DialogFragment { private static final String REFERENCE_KEY = "HmsPickerDialogFragment_ReferenceKey"; private static final String THEME_RES_ID_KEY = "HmsPickerDialogFragment_ThemeResIdKey"; + private static final String PLUS_MINUS_VISIBILITY_KEY = "HmsPickerDialogFragment_PlusMinusVisibilityKey"; private HmsPicker mPicker; @@ -29,10 +30,13 @@ public class HmsPickerDialogFragment extends DialogFragment { private int mTheme = -1; private ColorStateList mTextColor; private int mDialogBackgroundResId; + @Deprecated private Vector mHmsPickerDialogHandlers = new Vector(); + private Vector mHmsPickerDialogHandlerV2s = new Vector(); private int mHours; private int mMinutes; private int mSeconds; + private int mPlusMinusVisibility = View.INVISIBLE; /** * Create an instance of the Picker (used internally) @@ -41,11 +45,14 @@ public class HmsPickerDialogFragment extends DialogFragment { * @param themeResId the style resource ID for theming * @return a Picker! */ - public static HmsPickerDialogFragment newInstance(int reference, int themeResId) { + public static HmsPickerDialogFragment newInstance(int reference, int themeResId, Integer plusMinusVisibility) { final HmsPickerDialogFragment frag = new HmsPickerDialogFragment(); Bundle args = new Bundle(); args.putInt(REFERENCE_KEY, reference); args.putInt(THEME_RES_ID_KEY, themeResId); + if (plusMinusVisibility != null) { + args.putInt(PLUS_MINUS_VISIBILITY_KEY, plusMinusVisibility); + } frag.setArguments(args); return frag; } @@ -66,6 +73,9 @@ public void onCreate(Bundle savedInstanceState) { if (args != null && args.containsKey(THEME_RES_ID_KEY)) { mTheme = args.getInt(THEME_RES_ID_KEY); } + if (args != null && args.containsKey(PLUS_MINUS_VISIBILITY_KEY)) { + mPlusMinusVisibility = args.getInt(PLUS_MINUS_VISIBILITY_KEY); + } setStyle(DialogFragment.STYLE_NO_TITLE, 0); @@ -104,8 +114,13 @@ public void onClick(View view) { for (HmsPickerDialogHandler handler : mHmsPickerDialogHandlers) { handler.onDialogHmsSet(mReference, mPicker.getHours(), mPicker.getMinutes(), mPicker.getSeconds()); } + for (HmsPickerDialogHandlerV2 handler : mHmsPickerDialogHandlerV2s) { + handler.onDialogHmsSet(mReference, mPicker.isNegative(), mPicker.getHours(), mPicker.getMinutes(), mPicker.getSeconds()); + } + final Activity activity = getActivity(); final Fragment fragment = getTargetFragment(); + if (activity instanceof HmsPickerDialogHandler) { final HmsPickerDialogHandler act = (HmsPickerDialogHandler) activity; @@ -115,6 +130,17 @@ public void onClick(View view) { (HmsPickerDialogHandler) fragment; frag.onDialogHmsSet(mReference, mPicker.getHours(), mPicker.getMinutes(), mPicker.getSeconds()); } + + if (activity instanceof HmsPickerDialogHandlerV2) { + final HmsPickerDialogHandlerV2 act = + (HmsPickerDialogHandlerV2) activity; + act.onDialogHmsSet(mReference, mPicker.isNegative(), mPicker.getHours(), mPicker.getMinutes(), mPicker.getSeconds()); + } else if (fragment instanceof HmsPickerDialogHandlerV2) { + final HmsPickerDialogHandlerV2 frag = + (HmsPickerDialogHandlerV2) fragment; + frag.onDialogHmsSet(mReference, mPicker.isNegative(), mPicker.getHours(), mPicker.getMinutes(), mPicker.getSeconds()); + } + dismiss(); } }); @@ -123,29 +149,47 @@ public void onClick(View view) { mPicker.setSetButton(doneButton); mPicker.setTime(mHours, mMinutes, mSeconds); mPicker.setTheme(mTheme); + mPicker.setPlusMinusVisibility(mPlusMinusVisibility); getDialog().getWindow().setBackgroundDrawableResource(mDialogBackgroundResId); return view; } + public interface HmsPickerDialogHandlerV2 { + + void onDialogHmsSet(int reference, boolean isNegative, int hours, int minutes, int seconds); + } + /** + * @Deprecated : use HmsPickerDialogHandlerV2 that return negative/positive status * This interface allows objects to register for the Picker's set action. */ + @Deprecated public interface HmsPickerDialogHandler { + @Deprecated void onDialogHmsSet(int reference, int hours, int minutes, int seconds); } /** - * Attach a Vector of handlers to be notified in addition to the Fragment's Activity and target Fragment. - * * @param handlers a Vector of handlers + * @Deprecated : use HmsPickerDialogHandlerV2 that return negative/positive status + * Attach a Vector of handlers to be notified in addition to the Fragment's Activity and target Fragment. */ + @Deprecated public void setHmsPickerDialogHandlers(Vector handlers) { mHmsPickerDialogHandlers = handlers; } + /** + * @param handlers a Vector of handlers + * Attach a Vector of handlers to be notified in addition to the Fragment's Activity and target Fragment. + */ + public void setHmsPickerDialogHandlersV2(Vector handlers) { + mHmsPickerDialogHandlerV2s = handlers; + } + public void setTime(int hours, int minutes, int seconds) { this.mHours = hours; this.mMinutes = minutes; diff --git a/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsView.java b/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsView.java index bed74f8d..79c652df 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsView.java +++ b/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsView.java @@ -5,6 +5,7 @@ import android.content.res.TypedArray; import android.graphics.Typeface; import android.util.AttributeSet; +import android.view.View; import android.widget.LinearLayout; import com.codetroopers.betterpickers.R; @@ -17,6 +18,7 @@ public class HmsView extends LinearLayout { private ZeroTopPaddingTextView mSecondsOnes, mSecondsTens; private final Typeface mAndroidClockMonoThin; private Typeface mOriginalHoursTypeface; + private ZeroTopPaddingTextView mMinusLabel; private ColorStateList mTextColor; @@ -76,6 +78,9 @@ private void restyleViews() { if (mSecondsTens != null) { mSecondsTens.setTextColor(mTextColor); } + if (mMinusLabel != null) { + mMinusLabel.setTextColor(mTextColor); + } } @Override @@ -87,6 +92,8 @@ protected void onFinishInflate() { mMinutesOnes = (ZeroTopPaddingTextView) findViewById(R.id.minutes_ones); mSecondsTens = (ZeroTopPaddingTextView) findViewById(R.id.seconds_tens); mSecondsOnes = (ZeroTopPaddingTextView) findViewById(R.id.seconds_ones); + mMinusLabel = (ZeroTopPaddingTextView) findViewById(R.id.minus_label); + if (mHoursOnes != null) { mOriginalHoursTypeface = mHoursOnes.getTypeface(); mHoursOnes.updatePaddingForBoldDate(); @@ -118,7 +125,15 @@ protected void onFinishInflate() { * @param secondsOnesDigit the ones digit of the seconds TextView */ public void setTime(int hoursOnesDigit, int minutesTensDigit, int minutesOnesDigit, int secondsTensDigit, + int secondsOnesDigit) { + setTime(false, hoursOnesDigit, minutesTensDigit, minutesOnesDigit, secondsTensDigit, secondsOnesDigit); + } + + public void setTime(boolean isNegative, int hoursOnesDigit, int minutesTensDigit, int minutesOnesDigit, int secondsTensDigit, int secondsOnesDigit) { + + mMinusLabel.setVisibility(isNegative ? View.VISIBLE : View.GONE); + if (mHoursOnes != null) { mHoursOnes.setText(String.format("%d", hoursOnesDigit)); } diff --git a/library/src/main/res/layout/hms_picker_view.xml b/library/src/main/res/layout/hms_picker_view.xml index 0f3afe08..ec4963ea 100644 --- a/library/src/main/res/layout/hms_picker_view.xml +++ b/library/src/main/res/layout/hms_picker_view.xml @@ -81,6 +81,15 @@ style="@style/label" android:gravity="top" android:text="@string/hms_picker_seconds_label"/> + + + + + + + diff --git a/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsBasicUsage.java b/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsBasicUsage.java index acf33dd2..3de5b551 100644 --- a/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsBasicUsage.java +++ b/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsBasicUsage.java @@ -13,7 +13,7 @@ /** * User: derek Date: 3/17/13 Time: 3:59 PM */ -public class SampleHmsBasicUsage extends BaseSampleActivity implements HmsPickerDialogFragment.HmsPickerDialogHandler { +public class SampleHmsBasicUsage extends BaseSampleActivity implements HmsPickerDialogFragment.HmsPickerDialogHandlerV2 { private TextView mResultTextView; @@ -39,7 +39,7 @@ public void onClick(View v) { } @Override - public void onDialogHmsSet(int reference, int hours, int minutes, int seconds) { - mResultTextView.setText(getString(R.string.hms_picker_result_value_multiline, hours, minutes, seconds)); + public void onDialogHmsSet(int reference, boolean isNegative, int hours, int minutes, int seconds) { + mResultTextView.setText(getString(R.string.hms_picker_result_value_multiline, hours, minutes, seconds, isNegative)); } } diff --git a/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsListAdapter.java b/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsListAdapter.java index 38d4a8f6..bc7ab66f 100644 --- a/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsListAdapter.java +++ b/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsListAdapter.java @@ -33,7 +33,7 @@ public void onCreate(Bundle savedInstanceState) { list.setAdapter(new SampleAdapter(this, getSupportFragmentManager())); } - private class SampleAdapter extends BaseAdapter implements HmsPickerDialogFragment.HmsPickerDialogHandler { + private class SampleAdapter extends BaseAdapter implements HmsPickerDialogFragment.HmsPickerDialogHandlerV2 { private ArrayList mHmses; private LayoutInflater mInflater; @@ -115,7 +115,7 @@ public void onClick(View v) { } @Override - public void onDialogHmsSet(int reference, int hours, int minutes, int seconds) { + public void onDialogHmsSet(int reference, boolean isNegative, int hours, int minutes, int seconds) { Hms hms = new Hms(); hms.hours = hours; hms.minutes = minutes; diff --git a/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsMultipleHandlers.java b/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsMultipleHandlers.java index 81e33aa4..0743ad1b 100644 --- a/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsMultipleHandlers.java +++ b/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsMultipleHandlers.java @@ -14,8 +14,7 @@ /** * User: derek Date: 3/17/13 Time: 3:59 PM */ -public class SampleHmsMultipleHandlers extends BaseSampleActivity - implements HmsPickerDialogFragment.HmsPickerDialogHandler { +public class SampleHmsMultipleHandlers extends BaseSampleActivity implements HmsPickerDialogFragment.HmsPickerDialogHandlerV2 { private TextView mResultTextView; @@ -51,7 +50,7 @@ public void onDialogHmsSet(int reference, int hours, int minutes, int seconds) { } @Override - public void onDialogHmsSet(int reference, int hours, int minutes, int seconds) { - mResultTextView.setText(getString(R.string.hms_picker_result_value_multiline, hours, minutes, seconds)); + public void onDialogHmsSet(int reference, boolean isNegative, int hours, int minutes, int seconds) { + mResultTextView.setText(getString(R.string.hms_picker_result_value_multiline, hours, minutes, seconds, isNegative)); } } diff --git a/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsMultipleReferences.java b/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsMultipleReferences.java index 336ced23..3a2071da 100644 --- a/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsMultipleReferences.java +++ b/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsMultipleReferences.java @@ -12,8 +12,7 @@ /** * User: derek Date: 3/17/13 Time: 3:59 PM */ -public class SampleHmsMultipleReferences extends BaseSampleActivity - implements HmsPickerDialogFragment.HmsPickerDialogHandler { +public class SampleHmsMultipleReferences extends BaseSampleActivity implements HmsPickerDialogFragment.HmsPickerDialogHandlerV2 { private static final int BUTTON_ONE_REFERENCE = 0; private static final int BUTTON_TWO_REFERENCE = 1; @@ -82,7 +81,7 @@ public void onClick(View v) { } @Override - public void onDialogHmsSet(int reference, int hours, int minutes, int seconds) { + public void onDialogHmsSet(int reference, boolean isNegative, int hours, int minutes, int seconds) { Button buttonToSet; switch (reference) { case BUTTON_ONE_REFERENCE: diff --git a/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsNegativeDurationUsage.java b/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsNegativeDurationUsage.java new file mode 100644 index 00000000..64b51e23 --- /dev/null +++ b/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsNegativeDurationUsage.java @@ -0,0 +1,47 @@ +package com.codetroopers.betterpickers.sample.activity.hmspicker; + +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; + +import com.codetroopers.betterpickers.hmspicker.HmsPickerBuilder; +import com.codetroopers.betterpickers.hmspicker.HmsPickerDialogFragment; +import com.codetroopers.betterpickers.sample.R; +import com.codetroopers.betterpickers.sample.activity.BaseSampleActivity; + +/** + * User: derek Date: 3/17/13 Time: 3:59 PM + */ +public class SampleHmsNegativeDurationUsage extends BaseSampleActivity implements HmsPickerDialogFragment.HmsPickerDialogHandlerV2 { + + private TextView mResultTextView; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.text_and_button); + + mResultTextView = (TextView) findViewById(R.id.text); + Button button = (Button) findViewById(R.id.button); + + mResultTextView.setText(R.string.no_value); + button.setText(R.string.hms_picker_set); + button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + HmsPickerBuilder hpb = new HmsPickerBuilder() + .setPlusMinusVisibility(View.VISIBLE) + .setFragmentManager(getSupportFragmentManager()) + .setStyleResId(R.style.BetterPickersDialogFragment); + hpb.show(); + } + }); + } + + @Override + public void onDialogHmsSet(int reference, boolean isNegative, int hours, int minutes, int seconds) { + mResultTextView.setText(getString(R.string.hms_picker_result_value_multiline, hours, minutes, seconds, isNegative)); + } + +} diff --git a/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsThemeCustom.java b/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsThemeCustom.java index 98dd1e43..5f054250 100644 --- a/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsThemeCustom.java +++ b/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsThemeCustom.java @@ -13,8 +13,7 @@ /** * User: derek Date: 3/17/13 Time: 3:59 PM */ -public class SampleHmsThemeCustom extends BaseSampleActivity - implements HmsPickerDialogFragment.HmsPickerDialogHandler { +public class SampleHmsThemeCustom extends BaseSampleActivity implements HmsPickerDialogFragment.HmsPickerDialogHandlerV2 { private TextView mResultTextView; @@ -40,7 +39,7 @@ public void onClick(View v) { } @Override - public void onDialogHmsSet(int reference, int hours, int minutes, int seconds) { - mResultTextView.setText(getString(R.string.hms_picker_result_value_multiline, hours, minutes, seconds)); + public void onDialogHmsSet(int reference, boolean isNegative, int hours, int minutes, int seconds) { + mResultTextView.setText(getString(R.string.hms_picker_result_value_multiline, hours, minutes, seconds, isNegative)); } } diff --git a/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsThemeLight.java b/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsThemeLight.java index be050018..68b0ab47 100644 --- a/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsThemeLight.java +++ b/sample/src/main/java/com/codetroopers/betterpickers/sample/activity/hmspicker/SampleHmsThemeLight.java @@ -13,8 +13,7 @@ /** * User: derek Date: 3/17/13 Time: 3:59 PM */ -public class SampleHmsThemeLight extends BaseSampleActivity - implements HmsPickerDialogFragment.HmsPickerDialogHandler { +public class SampleHmsThemeLight extends BaseSampleActivity implements HmsPickerDialogFragment.HmsPickerDialogHandlerV2 { private TextView mResultTextView; @@ -40,7 +39,7 @@ public void onClick(View v) { } @Override - public void onDialogHmsSet(int reference, int hours, int minutes, int seconds) { - mResultTextView.setText(getString(R.string.hms_picker_result_value_multiline, hours, minutes, seconds)); + public void onDialogHmsSet(int reference, boolean isNegative, int hours, int minutes, int seconds) { + mResultTextView.setText(getString(R.string.hms_picker_result_value_multiline, hours, minutes, seconds, isNegative)); } } diff --git a/sample/src/main/java/com/codetroopers/betterpickers/sample/fragment/SampleHmsFragment.java b/sample/src/main/java/com/codetroopers/betterpickers/sample/fragment/SampleHmsFragment.java index 0987c61b..8c593150 100644 --- a/sample/src/main/java/com/codetroopers/betterpickers/sample/fragment/SampleHmsFragment.java +++ b/sample/src/main/java/com/codetroopers/betterpickers/sample/fragment/SampleHmsFragment.java @@ -15,8 +15,7 @@ /** * User: derek Date: 4/30/13 Time: 7:43 PM */ -public class SampleHmsFragment extends Fragment - implements HmsPickerDialogFragment.HmsPickerDialogHandler { +public class SampleHmsFragment extends Fragment implements HmsPickerDialogFragment.HmsPickerDialogHandlerV2 { private TextView mResultTextView; @@ -44,7 +43,7 @@ public void onClick(View v) { } @Override - public void onDialogHmsSet(int reference, int hours, int minutes, int seconds) { - mResultTextView.setText(getString(R.string.hms_picker_result_value_multiline, hours, minutes, seconds)); + public void onDialogHmsSet(int reference, boolean isNegative, int hours, int minutes, int seconds) { + mResultTextView.setText(getString(R.string.hms_picker_result_value_multiline, hours, minutes, seconds, isNegative)); } } diff --git a/sample/src/main/res/values/strings.xml b/sample/src/main/res/values/strings.xml index f23b6455..64940b2d 100644 --- a/sample/src/main/res/values/strings.xml +++ b/sample/src/main/res/values/strings.xml @@ -15,7 +15,7 @@ Set Expiration %1$s/%2$s Set HMS - Hours: %1$s\nMinutes: %2$s\nSeconds: %3$s + Hours: %1$s\nMinutes: %2$s\nSeconds: %3$s\nNegative : %4$b H:%1$s, M:%2$s, S:%3$s Set Time %1$s:%2$s