diff --git a/core/src/main/java/com/omega_r/libs/omegaintentbuilder/OmegaIntentBuilder.kt b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/OmegaIntentBuilder.kt index 80f4f13..aa6c813 100644 --- a/core/src/main/java/com/omega_r/libs/omegaintentbuilder/OmegaIntentBuilder.kt +++ b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/OmegaIntentBuilder.kt @@ -17,12 +17,12 @@ import android.net.Uri import android.os.Build import androidx.annotation.RequiresApi import com.omega_r.libs.omegaintentbuilder.builders.* +import com.omega_r.libs.omegaintentbuilder.builders.alarm.AlarmBuilder import com.omega_r.libs.omegaintentbuilder.builders.pick.PickBuilder import com.omega_r.libs.omegaintentbuilder.builders.share.EmailIntentBuilder import com.omega_r.libs.omegaintentbuilder.builders.share.ShareIntentBuilder import com.omega_r.libs.omegaintentbuilder.types.CalendarActionTypes import com.omega_r.libs.omegaintentbuilder.types.MapTypes -import com.omega_r.libs.omegaintentbuilder.types.ShowType /** * OmegaIntentBuilder class for creating supports createdIntent builders. @@ -158,28 +158,14 @@ object OmegaIntentBuilder { fun searchWeb() = SearchWebIntentBuilder() /** - * @return AlarmIntentBuilder - */ - @JvmStatic - @RequiresApi(Build.VERSION_CODES.KITKAT) - fun createAlarm() = AlarmIntentBuilder() - - /** - * @return ShowAlarmsTimersIntentBuilder - */ - @JvmStatic - fun showTimers() = ShowAlarmsTimersIntentBuilder(ShowType.TIMERS) - - /** - * @return ShowAlarmsTimersIntentBuilder + * @return VideoRecordBuilder */ @JvmStatic - fun showAlarms() = ShowAlarmsTimersIntentBuilder(ShowType.ALARMS) + fun recordVideo() = VideoRecordBuilder() /** * @return VideoRecordBuilder */ @JvmStatic - fun recordVideo() = VideoRecordBuilder() - + fun alarm() = AlarmBuilder } \ No newline at end of file diff --git a/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/ShowAlarmsTimersIntentBuilder.kt b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/ShowAlarmsTimersIntentBuilder.kt deleted file mode 100644 index 9b5c00a..0000000 --- a/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/ShowAlarmsTimersIntentBuilder.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.omega_r.libs.omegaintentbuilder.builders - -import android.content.Context -import android.content.Intent -import com.omega_r.libs.omegaintentbuilder.types.ShowType - -class ShowAlarmsTimersIntentBuilder(private val showType: ShowType) : BaseActivityBuilder() { - - override fun createIntent(context: Context): Intent { - return Intent(showType.actionType) - } - -} \ No newline at end of file diff --git a/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/alarm/AlarmBuilder.kt b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/alarm/AlarmBuilder.kt new file mode 100644 index 0000000..bcc323c --- /dev/null +++ b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/alarm/AlarmBuilder.kt @@ -0,0 +1,24 @@ +package com.omega_r.libs.omegaintentbuilder.builders.alarm + +import android.os.Build +import androidx.annotation.RequiresApi + +object AlarmBuilder { + /** + * @return CreateAlarmIntentBuilder for creating intent to set alarm + */ + @RequiresApi(Build.VERSION_CODES.KITKAT) + fun create() = CreateAlarmIntentBuilder() + + /** + * @return DismissAlarmIntentBuilder for creating intent to dismiss alarm + */ + @RequiresApi(Build.VERSION_CODES.M) + fun dismiss() = DismissAlarmIntentBuilder() + + /** + * @return ShowAlarmsIntentBuilder for creating intent to show alarm + */ + @RequiresApi(Build.VERSION_CODES.KITKAT) + fun show() = ShowAlarmsIntentBuilder() +} \ No newline at end of file diff --git a/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/AlarmIntentBuilder.kt b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/alarm/CreateAlarmIntentBuilder.kt similarity index 83% rename from core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/AlarmIntentBuilder.kt rename to core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/alarm/CreateAlarmIntentBuilder.kt index 441aa34..3d165b7 100644 --- a/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/AlarmIntentBuilder.kt +++ b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/alarm/CreateAlarmIntentBuilder.kt @@ -1,10 +1,13 @@ -package com.omega_r.libs.omegaintentbuilder.builders +package com.omega_r.libs.omegaintentbuilder.builders.alarm import android.content.Context import android.content.Intent +import android.os.Build import android.provider.AlarmClock.* +import androidx.annotation.RequiresApi +import com.omega_r.libs.omegaintentbuilder.builders.BaseActivityBuilder -class AlarmIntentBuilder : BaseActivityBuilder() { +class CreateAlarmIntentBuilder : BaseActivityBuilder() { private var message: String? = null private var hour: Int? = null private var minutes: Int? = null @@ -22,7 +25,7 @@ class AlarmIntentBuilder : BaseActivityBuilder() { * @param message String * @return This AlarmIntentBuilder for method chaining */ - fun message(message: String): AlarmIntentBuilder { + fun message(message: String): CreateAlarmIntentBuilder { this.message = message return this } @@ -36,7 +39,7 @@ class AlarmIntentBuilder : BaseActivityBuilder() { * @param hour String * @return This AlarmIntentBuilder for method chaining */ - fun hour(hour: Int): AlarmIntentBuilder { + fun hour(hour: Int): CreateAlarmIntentBuilder { this.hour = hour return this } @@ -47,7 +50,7 @@ class AlarmIntentBuilder : BaseActivityBuilder() { * @param minutes String * @return This AlarmIntentBuilder for method chaining */ - fun minutes(minutes: Int): AlarmIntentBuilder { + fun minutes(minutes: Int): CreateAlarmIntentBuilder { this.minutes = minutes return this } @@ -62,7 +65,7 @@ class AlarmIntentBuilder : BaseActivityBuilder() { * @param ringtone String * @return This AlarmIntentBuilder for method chaining */ - fun ringtone(ringtone: String): AlarmIntentBuilder { + fun ringtone(ringtone: String): CreateAlarmIntentBuilder { this.ringtone = ringtone return this } @@ -73,7 +76,7 @@ class AlarmIntentBuilder : BaseActivityBuilder() { * * @return This AlarmIntentBuilder for method chaining */ - fun skipUI(): AlarmIntentBuilder { + fun skipUI(): CreateAlarmIntentBuilder { skipUI = true return this } @@ -86,7 +89,7 @@ class AlarmIntentBuilder : BaseActivityBuilder() { * @return This AlarmIntentBuilder for method chaining */ @JvmOverloads - fun vibrate(vibrate: Boolean = true): AlarmIntentBuilder { + fun vibrate(vibrate: Boolean = true): CreateAlarmIntentBuilder { this.vibrate = vibrate return this } @@ -96,7 +99,7 @@ class AlarmIntentBuilder : BaseActivityBuilder() { * * @return This AlarmIntentBuilder for method chaining */ - fun ringtoneSilent(): AlarmIntentBuilder { + fun ringtoneSilent(): CreateAlarmIntentBuilder { ringtoneSilent = true return this } diff --git a/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/alarm/DismissAlarmIntentBuilder.kt b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/alarm/DismissAlarmIntentBuilder.kt new file mode 100644 index 0000000..a6c59a7 --- /dev/null +++ b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/alarm/DismissAlarmIntentBuilder.kt @@ -0,0 +1,121 @@ +package com.omega_r.libs.omegaintentbuilder.builders.alarm + +import android.content.Context +import android.content.Intent +import android.provider.AlarmClock.* +import com.omega_r.libs.omegaintentbuilder.builders.BaseActivityBuilder + +class DismissAlarmIntentBuilder : BaseActivityBuilder() { + + private var hour: Int? = null + private var minute: Int? = null + private var isPM: Boolean? = null + private var label: String? = null + private var next: Boolean? = null + + /** + *

+ * The value is an {@link Integer} and ranges from 0 to 23. + *

+ * + * @param hour Integer + * @return This DismissAlarmIntentBuilder for method chaining + */ + fun hour(hour: Int): DismissAlarmIntentBuilder { + label = null + next = null + this.hour = hour + return this + } + + /** + *

+ * The value is an {@link Integer} and ranges from 0 to 59. If not provided, it defaults to 0. + *

+ * + * @param minute Integer + * @return This DismissAlarmIntentBuilder for method chaining + */ + fun minute(minute: Int): DismissAlarmIntentBuilder { + label = null + next = null + this.minute = minute + return this + } + + /** + *

+ * The value is an {@link Integer} and ranges from 0 to 59. If not provided, it defaults to 0. + *

+ * + * @param isPM Integer + * @return This DismissAlarmIntentBuilder for method chaining + */ + fun isPM(isPM: Boolean): DismissAlarmIntentBuilder { + label = null + next = null + this.isPM = isPM + return this + } + + /** + * Search alarm by label + * + * @param label String + * @return This DismissAlarmIntentBuilder for method chaining + */ + fun label(label: String): DismissAlarmIntentBuilder { + hour = null + minute = null + isPM = null + next = null + this.label = label + return this + } + + /** + * For activate search mode NEXT + * Search next alarm + * + * @return This DismissAlarmIntentBuilder for method chaining + */ + fun next(): DismissAlarmIntentBuilder { + next = true + return this + } + + /** + *
  • If exactly one active alarm exists, it is dismissed. + *
  • If more than one active alarm exists, the user is prompted to choose the alarm to + * dismiss. + */ + override fun createIntent(context: Context): Intent { + return Intent(ACTION_DISMISS_ALARM).apply { + if (hour != null && minute != null && isPM != null) { + putExtra(EXTRA_ALARM_SEARCH_MODE, ALARM_SEARCH_MODE_TIME) + + hour?.let { + putExtra(EXTRA_HOUR, it) + } + + minute?.let { + putExtra(EXTRA_MINUTES, it) + } + + isPM?.let { + putExtra(EXTRA_IS_PM, it) + } + } else if (label != null) { + putExtra(EXTRA_ALARM_SEARCH_MODE, ALARM_SEARCH_MODE_LABEL) + putExtra(EXTRA_MESSAGE, label) + } else if (next != null) { + putExtra(EXTRA_ALARM_SEARCH_MODE, ALARM_SEARCH_MODE_NEXT) + } else { + putExtra(EXTRA_ALARM_SEARCH_MODE, ALARM_SEARCH_MODE_ALL) + } + + + } + } + +} \ No newline at end of file diff --git a/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/alarm/ShowAlarmsIntentBuilder.kt b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/alarm/ShowAlarmsIntentBuilder.kt new file mode 100644 index 0000000..2be20b3 --- /dev/null +++ b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/alarm/ShowAlarmsIntentBuilder.kt @@ -0,0 +1,14 @@ +package com.omega_r.libs.omegaintentbuilder.builders.alarm + +import android.content.Context +import android.content.Intent +import android.provider.AlarmClock +import com.omega_r.libs.omegaintentbuilder.builders.BaseActivityBuilder + +class ShowAlarmsIntentBuilder() : BaseActivityBuilder() { + + override fun createIntent(context: Context): Intent { + return Intent(AlarmClock.ACTION_SHOW_ALARMS) + } + +} \ No newline at end of file diff --git a/examples/src/main/java/com/omega_r/omegaintentbuilder/MainActivity.java b/examples/src/main/java/com/omega_r/omegaintentbuilder/MainActivity.java index 8a4c1a4..a5655c0 100644 --- a/examples/src/main/java/com/omega_r/omegaintentbuilder/MainActivity.java +++ b/examples/src/main/java/com/omega_r/omegaintentbuilder/MainActivity.java @@ -47,6 +47,7 @@ protected void onCreate(Bundle savedInstanceState) { findViewById(R.id.button_show_timers).setOnClickListener(this); findViewById(R.id.button_show_alarms).setOnClickListener(this); findViewById(R.id.button_record_video).setOnClickListener(this); + findViewById(R.id.button_dismiss_alarm).setOnClickListener(this); } @Override @@ -121,6 +122,9 @@ public void onClick(View v) { case R.id.button_record_video: onRecordVideoClicked(); break; + case R.id.button_dismiss_alarm: + onDismissAlarmClicked(); + break; } } @@ -272,7 +276,8 @@ private void onExtrasToFragmentClicked() { private void onCreateAlarmClicked() { OmegaIntentBuilder - .createAlarm() + .alarm() + .create() .message("It's your alarm") .hour(15) .vibrate() @@ -326,14 +331,15 @@ private void onCreateTimerClicked() { } private void onShowTimersClicked() { - OmegaIntentBuilder + /* OmegaIntentBuilder .showTimers() - .startActivity(this); + .startActivity(this);*/ } private void onShowAlarmsClicked() { OmegaIntentBuilder - .showAlarms() + .alarm() + .show() .startActivity(this); } @@ -343,4 +349,20 @@ private void onRecordVideoClicked() { .startActivity(this); } + private void onDismissAlarmClicked() { + OmegaIntentBuilder + .alarm() + .dismiss() + //BY LABEL + //.label("It's your alarm") + //or BY TIME + //.hour(0) + //.minute(0) + //.isPM(true) + //or DISMISS NEXT + //.next() + //or SEARCH ALL + .startActivity(this); + } + } diff --git a/examples/src/main/res/layout/activity_main.xml b/examples/src/main/res/layout/activity_main.xml index 608721b..e8c71c0 100644 --- a/examples/src/main/res/layout/activity_main.xml +++ b/examples/src/main/res/layout/activity_main.xml @@ -187,6 +187,13 @@ android:theme="@style/ButtonStyle" android:text="@string/record_video"/> +