diff options
author | steckbrief <steckbrief@chefmail.de> | 2017-01-11 15:50:13 +0100 |
---|---|---|
committer | steckbrief <steckbrief@chefmail.de> | 2017-01-11 15:50:13 +0100 |
commit | 44d01d933c0434b0e9b6ce7a1ff888f1b0f2ef3d (patch) | |
tree | 1f0ebdcab4824b53a7f0507d69088efd9456db84 /src/main/java/de/thedevstack/conversationsplus/utils | |
parent | c76d0968b8874c0e4466b4e315688a7d003d52f6 (diff) | |
parent | cd633f13b8d7327e47994bb5a000f0c0b7089e7f (diff) |
Merge branch 'trz/rename' into trz/rebase
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/utils')
4 files changed, 177 insertions, 2 deletions
diff --git a/src/main/java/de/thedevstack/conversationsplus/utils/AccountUtil.java b/src/main/java/de/thedevstack/conversationsplus/utils/AccountUtil.java new file mode 100644 index 00000000..06c6b6ab --- /dev/null +++ b/src/main/java/de/thedevstack/conversationsplus/utils/AccountUtil.java @@ -0,0 +1,34 @@ +package de.thedevstack.conversationsplus.utils; + +import eu.siacs.conversations.entities.Account; + +/** + * Utility class to work with accounts. + */ +public final class AccountUtil { + + public static boolean isHttpUploadAvailable(Account account, long filesize) { + return null != account + && null != account.getXmppConnection() + && null != account.getXmppConnection().getFeatures() + && account.getXmppConnection().getFeatures().httpUpload(filesize); + } + + public static boolean isHttpUploadAvailable(Account account) { + return null != account + && null != account.getXmppConnection() + && null != account.getXmppConnection().getFeatures() + && account.getXmppConnection().getFeatures().httpUpload(0); + } + + public static boolean isFileTransferHttpAvailable(Account account) { + return null != account + && null != account.getXmppConnection() + && null != account.getXmppConnection().getFeatures() + && account.getXmppConnection().getFeatures().hasFeatureFileTransferHttp(0); + } + + private AccountUtil() { + // avoid instantiation of utility class + } +} diff --git a/src/main/java/de/thedevstack/conversationsplus/utils/ui/ConversationsPlusToast.java b/src/main/java/de/thedevstack/conversationsplus/utils/ui/ConversationsPlusToast.java new file mode 100644 index 00000000..3ebb8602 --- /dev/null +++ b/src/main/java/de/thedevstack/conversationsplus/utils/ui/ConversationsPlusToast.java @@ -0,0 +1,102 @@ +package de.thedevstack.conversationsplus.utils.ui; + +import android.content.Context; +import android.os.Handler; +import android.os.Looper; +import android.support.annotation.StringRes; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; +import android.widget.Toast; + +import de.thedevstack.conversationsplus.ConversationsPlusApplication; + +import eu.siacs.conversations.R; + +/** + * Wrapper for custom styled Toasts for Conversations+. + */ +public final class ConversationsPlusToast { + + /** + * Creates an error toast with text and duration + * @param text + * @param duration + */ + public static void makeErrorToast(final CharSequence text, final int duration) { + Handler toastHandler = new Handler(Looper.getMainLooper()); + toastHandler.post(new ConversationsPlusToast.ToastRunnable(text, duration, true)); + } + + /** + * Creates an error toast with text from resource and duration + * @param resId + * @param duration + */ + public static void makeErrorToast(@StringRes int resId, int duration) { + makeErrorToast(ConversationsPlusApplication.getAppContext().getString(resId), duration); + } + + /** + * Creates an toast with text and duration + * @param text + * @param duration + */ + public static void makeToast(final CharSequence text, final int duration) { + Handler toastHandler = new Handler(Looper.getMainLooper()); + toastHandler.post(new ConversationsPlusToast.ToastRunnable(text, duration)); + } + + /** + * Creates an toast with text from resource and duration + * @param resId + * @param duration + */ + public static void makeToast(@StringRes int resId, int duration) { + makeToast(ConversationsPlusApplication.getAppContext().getString(resId), duration); + } + + private ConversationsPlusToast() { + // avoid instantiation - helper class + } + + /** + * Runnable to show the toast in an UI thread. + */ + static class ToastRunnable implements Runnable { + private boolean showErrorToast = false; + private CharSequence text; + private int duration; + + public ToastRunnable(CharSequence text, int duration, boolean isError) { + this.showErrorToast = isError; + this.text = text; + this.duration = duration; + } + + public ToastRunnable(CharSequence text, int duration) { + this.text = text; + this.duration = duration; + } + + @Override + public void run() { + Context applicationContext = ConversationsPlusApplication.getAppContext(); + LayoutInflater inflater = LayoutInflater.from(applicationContext); + View layout = inflater.inflate(R.layout.cplus_toast_container, null); + + TextViewUtil.setText(layout, R.id.cplus_toast_txt, text); + + if (this.showErrorToast) { + // Set image view to error icon + ImageView iv = (ImageView) layout.findViewById(R.id.cplus_toast_icon); + iv.setImageResource(R.drawable.ic_toast_error); + } + + Toast toast = new Toast(applicationContext); + toast.setDuration(duration); + toast.setView(layout); + toast.show(); + } + } +} diff --git a/src/main/java/de/thedevstack/conversationsplus/utils/ui/TextViewUtil.java b/src/main/java/de/thedevstack/conversationsplus/utils/ui/TextViewUtil.java index a775dad6..27a269f2 100644 --- a/src/main/java/de/thedevstack/conversationsplus/utils/ui/TextViewUtil.java +++ b/src/main/java/de/thedevstack/conversationsplus/utils/ui/TextViewUtil.java @@ -5,9 +5,9 @@ import android.view.View; import android.widget.TextView; /** - * Created by steckbrief on 29.03.2016. + * */ -public final class TextViewUtil { +public final class TextViewUtil extends ViewUtil { public static void setText(View parentView, int textViewId, CharSequence text) { TextView tv = (TextView) parentView.findViewById(textViewId); diff --git a/src/main/java/de/thedevstack/conversationsplus/utils/ui/ViewUtil.java b/src/main/java/de/thedevstack/conversationsplus/utils/ui/ViewUtil.java new file mode 100644 index 00000000..77422587 --- /dev/null +++ b/src/main/java/de/thedevstack/conversationsplus/utils/ui/ViewUtil.java @@ -0,0 +1,39 @@ +package de.thedevstack.conversationsplus.utils.ui; + +import android.support.annotation.IdRes; +import android.view.View; + +/** + * Created by steckbrief on 11.01.2017. + */ + +public class ViewUtil { + + public static <T extends View> T visible(View parentView, @IdRes int textViewId) { + T tv = (T) parentView.findViewById(textViewId); + if (null != tv) { + tv.setVisibility(View.VISIBLE); + } + + return tv; + } + + public static <T extends View> T invisible(View parentView, @IdRes int textViewId) { + T tv = (T) parentView.findViewById(textViewId); + if (null != tv) { + tv.setVisibility(View.INVISIBLE); + } + + return tv; + } + + public static <T extends View> T gone(View parentView, @IdRes int textViewId) { + T tv = (T) parentView.findViewById(textViewId); + if (null != tv) { + tv.setVisibility(View.GONE); + } + + return tv; + } + +} |