aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java196
1 files changed, 72 insertions, 124 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java
index 9736b5765..4224fb9a2 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java
@@ -18,10 +18,7 @@
package org.sufficientlysecure.keychain.ui.util;
import android.app.Activity;
-import android.content.res.Resources;
import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.app.FragmentManager;
import android.view.View;
import android.view.ViewGroup;
@@ -40,135 +37,49 @@ import org.sufficientlysecure.keychain.util.FabContainer;
*/
public class Notify {
- public static enum Style {OK, WARN, INFO, ERROR}
+ public static enum Style {OK, WARN, ERROR}
public static final int LENGTH_INDEFINITE = 0;
public static final int LENGTH_LONG = 3500;
- /**
- * Shows a simple in-layout notification with the CharSequence given as parameter
- * @param text Text to show
- * @param style Notification styling
- */
- public static void showNotify(final Activity activity, CharSequence text, Style style) {
-
- Snackbar bar = getSnackbar(activity)
+ public static Showable create(final Activity activity, String text, int duration, Style style,
+ final ActionListener actionListener, int actionResId) {
+ final Snackbar snackbar = Snackbar.with(activity)
+ .type(SnackbarType.MULTI_LINE)
.text(text);
- switch (style) {
- case OK:
- break;
- case WARN:
- bar.textColor(activity.getResources().getColor(R.color.android_orange_light));
- break;
- case ERROR:
- bar.textColor(activity.getResources().getColor(R.color.android_red_light));
- break;
- }
-
- showSnackbar(activity, bar);
-
- }
-
- public static Showable createNotify (final Activity activity, int resId, int duration, Style style) {
- final Snackbar bar = getSnackbar(activity)
- .text(resId);
-
if (duration == LENGTH_INDEFINITE) {
- bar.duration(SnackbarDuration.LENGTH_INDEFINITE);
+ snackbar.duration(SnackbarDuration.LENGTH_INDEFINITE);
} else {
- bar.duration(duration);
+ snackbar.duration(duration);
}
switch (style) {
case OK:
- bar.actionColor(activity.getResources().getColor(R.color.android_green_light));
+ snackbar.actionColorResource(R.color.android_green_light);
break;
- case WARN:
- bar.textColor(activity.getResources().getColor(R.color.android_orange_light));
- break;
- case ERROR:
- bar.textColor(activity.getResources().getColor(R.color.android_red_light));
- break;
- }
-
- return new Showable () {
- @Override
- public void show() {
- showSnackbar(activity, bar);
- }
- };
- }
-
- public static Showable createNotify(Activity activity, int resId, int duration, Style style,
- final ActionListener listener, int resIdAction) {
- return createNotify(activity, activity.getString(resId), duration, style, listener, resIdAction);
- }
-
- public static Showable createNotify(Activity activity, String msg, int duration, Style style) {
- return createNotify(activity, msg, duration, style, null, 0);
- }
-
- public static Showable createNotify(final Activity activity, String msg, int duration, Style style,
- final ActionListener listener, int resIdAction) {
-
- final Snackbar bar = getSnackbar(activity)
- .text(msg);
-
- if (listener != null) {
- bar.actionLabel(resIdAction);
- bar.actionListener(new ActionClickListener() {
- @Override
- public void onActionClicked(Snackbar snackbar) {
- listener.onAction();
- }
- });
- }
-
- if (duration == LENGTH_INDEFINITE) {
- bar.duration(SnackbarDuration.LENGTH_INDEFINITE);
- } else {
- bar.duration(duration);
- }
- switch (style) {
- case OK:
- bar.actionColor(activity.getResources().getColor(R.color.android_green_light));
- break;
case WARN:
- bar.textColor(activity.getResources().getColor(R.color.android_orange_light));
+ snackbar.textColorResource(R.color.android_orange_light);
break;
+
case ERROR:
- bar.textColor(activity.getResources().getColor(R.color.android_red_light));
+ snackbar.textColorResource(R.color.android_red_light);
break;
}
- return new Showable () {
- @Override
- public void show() {
- showSnackbar(activity, bar);
- }
- };
-
- }
-
- /**
- * Shows a simple in-layout notification with the resource text from given id
- * @param resId ResourceId of notification text
- * @param style Notification styling
- * @throws Resources.NotFoundException
- */
- public static void showNotify(Activity activity, int resId, Style style) throws Resources.NotFoundException {
- showNotify(activity, activity.getResources().getText(resId), style);
- }
-
- private static Snackbar getSnackbar(final Activity activity) {
- Snackbar bar = Snackbar.with(activity)
- .type(SnackbarType.MULTI_LINE)
- .duration(SnackbarDuration.LENGTH_LONG);
+ if (actionListener != null) {
+ snackbar.actionLabel(actionResId)
+ .actionListener(new ActionClickListener() {
+ @Override
+ public void onActionClicked(Snackbar snackbar) {
+ actionListener.onAction();
+ }
+ });
+ }
if (activity instanceof FabContainer) {
- bar.eventListener(new EventListenerAdapter() {
+ snackbar.eventListener(new EventListenerAdapter() {
@Override
public void onShow(Snackbar snackbar) {
((FabContainer) activity).fabMoveUp(snackbar.getHeight());
@@ -180,37 +91,74 @@ public class Notify {
}
});
}
- return bar;
- }
- private static void showSnackbar(Activity activity, Snackbar snackbar) {
- if (activity instanceof FragmentActivity) {
- FragmentManager fragmentManager = ((FragmentActivity) activity).getSupportFragmentManager();
+ return new Showable() {
+ @Override
+ public void show() {
+ SnackbarManager.show(snackbar, activity);
+ }
- int count = fragmentManager.getBackStackEntryCount();
- Fragment fragment = fragmentManager.getFragments().get(count > 0 ? count - 1 : 0);
+ @Override
+ public void show(Fragment fragment) {
+ if (fragment != null) {
+ View view = fragment.getView();
+
+ if (view != null && view instanceof ViewGroup) {
+ SnackbarManager.show(snackbar, (ViewGroup) view);
+ return;
+ }
+ }
- if (fragment != null) {
- View view = fragment.getView();
+ show();
+ }
- if (view != null) {
- SnackbarManager.show(snackbar, (ViewGroup) view);
+ @Override
+ public void show(ViewGroup viewGroup) {
+ if (viewGroup != null) {
+ SnackbarManager.show(snackbar, viewGroup);
return;
}
+
+ show();
}
- }
+ };
+ }
+
+ public static Showable create(Activity activity, String text, int duration, Style style) {
+ return create(activity, text, duration, style, null, -1);
+ }
- SnackbarManager.show(snackbar);
+ public static Showable create(Activity activity, String text, Style style) {
+ return create(activity, text, LENGTH_LONG, style);
+ }
+
+ public static Showable create(Activity activity, int textResId, int duration, Style style,
+ ActionListener actionListener, int actionResId) {
+ return create(activity, activity.getString(textResId), duration, style, actionListener, actionResId);
+ }
+
+ public static Showable create(Activity activity, int textResId, int duration, Style style) {
+ return create(activity, activity.getString(textResId), duration, style);
+ }
+
+ public static Showable create(Activity activity, int textResId, Style style) {
+ return create(activity, activity.getString(textResId), style);
}
public interface Showable {
+
public void show();
+ public void show(Fragment fragment);
+
+ public void show(ViewGroup viewGroup);
+
}
public interface ActionListener {
+
public void onAction();
}
-} \ No newline at end of file
+}