aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java
diff options
context:
space:
mode:
authorManoj Khanna <manojkhannakm@gmail.com>2015-03-19 19:58:24 +0530
committerManoj Khanna <manojkhannakm@gmail.com>2015-03-19 19:58:24 +0530
commit6120365ee1e425acbc270b17c5cad621710777a9 (patch)
tree0618e0a98a53238d75cb8e0fc3103e1001dc3e7b /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java
parentd122d27ebadbc883ba85e2256f1a0a29f791ee60 (diff)
downloadopen-keychain-6120365ee1e425acbc270b17c5cad621710777a9.tar.gz
open-keychain-6120365ee1e425acbc270b17c5cad621710777a9.tar.bz2
open-keychain-6120365ee1e425acbc270b17c5cad621710777a9.zip
Fix for Issue #1114
Displays the snackbar above the keyboard on all activities.
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.java35
1 files changed, 30 insertions, 5 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 3bc29edb6..9736b5765 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
@@ -19,6 +19,11 @@ 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;
import com.nispok.snackbar.Snackbar;
import com.nispok.snackbar.Snackbar.SnackbarDuration;
@@ -61,11 +66,11 @@ public class Notify {
break;
}
- SnackbarManager.show(bar);
+ showSnackbar(activity, bar);
}
- public static Showable createNotify (Activity activity, int resId, int duration, Style style) {
+ public static Showable createNotify (final Activity activity, int resId, int duration, Style style) {
final Snackbar bar = getSnackbar(activity)
.text(resId);
@@ -90,7 +95,7 @@ public class Notify {
return new Showable () {
@Override
public void show() {
- SnackbarManager.show(bar);
+ showSnackbar(activity, bar);
}
};
}
@@ -104,7 +109,7 @@ public class Notify {
return createNotify(activity, msg, duration, style, null, 0);
}
- public static Showable createNotify(Activity activity, String msg, int duration, Style style,
+ public static Showable createNotify(final Activity activity, String msg, int duration, Style style,
final ActionListener listener, int resIdAction) {
final Snackbar bar = getSnackbar(activity)
@@ -141,7 +146,7 @@ public class Notify {
return new Showable () {
@Override
public void show() {
- SnackbarManager.show(bar);
+ showSnackbar(activity, bar);
}
};
@@ -178,6 +183,26 @@ public class Notify {
return bar;
}
+ private static void showSnackbar(Activity activity, Snackbar snackbar) {
+ if (activity instanceof FragmentActivity) {
+ FragmentManager fragmentManager = ((FragmentActivity) activity).getSupportFragmentManager();
+
+ int count = fragmentManager.getBackStackEntryCount();
+ Fragment fragment = fragmentManager.getFragments().get(count > 0 ? count - 1 : 0);
+
+ if (fragment != null) {
+ View view = fragment.getView();
+
+ if (view != null) {
+ SnackbarManager.show(snackbar, (ViewGroup) view);
+ return;
+ }
+ }
+ }
+
+ SnackbarManager.show(snackbar);
+ }
+
public interface Showable {
public void show();