aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LoaderFragment.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-05-08 13:39:59 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2014-05-08 13:43:59 +0200
commit596478a21297888c561276b081eb70fbd29e66ab (patch)
tree9645c7ca42411e18647b315e69c34dfa1fb4e21d /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LoaderFragment.java
parent5c747a747f20fbbfeb31b60ed4d45ea96fa04f41 (diff)
downloadopen-keychain-596478a21297888c561276b081eb70fbd29e66ab.tar.gz
open-keychain-596478a21297888c561276b081eb70fbd29e66ab.tar.bz2
open-keychain-596478a21297888c561276b081eb70fbd29e66ab.zip
extract generic LoaderFragment superclass from KeyList
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LoaderFragment.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LoaderFragment.java78
1 files changed, 78 insertions, 0 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LoaderFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LoaderFragment.java
new file mode 100644
index 000000000..87ab1bb8c
--- /dev/null
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LoaderFragment.java
@@ -0,0 +1,78 @@
+package org.sufficientlysecure.keychain.ui;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.AnimationUtils;
+
+import org.sufficientlysecure.keychain.R;
+
+/** This is a fragment helper class, which implements a generic
+ * progressbar/container view.
+ *
+ * To use it in a fragment, simply subclass, use onCreateView to create the
+ * layout's root view, and ues getContainer() as root view of your subclass.
+ * The layout shows a progress bar by default, and can be switched to the
+ * actual contents by calling setContentShown().
+ *
+ */
+public class LoaderFragment extends Fragment {
+ private boolean mContentShown;
+ private View mProgressContainer;
+ private ViewGroup mContainer;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ View root = inflater.inflate(R.layout.loader_layout, container, false);
+
+ mContentShown = true;
+ mContainer = (ViewGroup) root.findViewById(R.id.loader_container);
+ mProgressContainer = root.findViewById(R.id.loader_progress);
+
+ // content is not shown (by visibility statuses in the layout files)
+ mContentShown = false;
+
+ return root;
+
+ }
+
+ protected ViewGroup getContainer() {
+ return mContainer;
+ }
+
+ public void setContentShown(boolean shown, boolean animate) {
+ if (mContentShown == shown) {
+ return;
+ }
+ mContentShown = shown;
+ if (shown) {
+ if (animate) {
+ mProgressContainer.startAnimation(AnimationUtils.loadAnimation(
+ getActivity(), android.R.anim.fade_out));
+ mContainer.startAnimation(AnimationUtils.loadAnimation(
+ getActivity(), android.R.anim.fade_in));
+ }
+ mProgressContainer.setVisibility(View.GONE);
+ mContainer.setVisibility(View.VISIBLE);
+ } else {
+ if (animate) {
+ mProgressContainer.startAnimation(AnimationUtils.loadAnimation(
+ getActivity(), android.R.anim.fade_in));
+ mContainer.startAnimation(AnimationUtils.loadAnimation(
+ getActivity(), android.R.anim.fade_out));
+ }
+ mProgressContainer.setVisibility(View.VISIBLE);
+ mContainer.setVisibility(View.INVISIBLE);
+ }
+ }
+
+ public void setContentShown(boolean shown) {
+ setContentShown(shown, true);
+ }
+
+ public void setContentShownNoAnimation(boolean shown) {
+ setContentShown(shown, false);
+ }
+}