aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-11-03 00:30:12 +0100
committerDominik Schürmann <dominik@dominikschuermann.de>2015-12-27 14:59:50 +0100
commitfd119bda00bac1cfe6dbcafa2736c65e3624c083 (patch)
tree93de2784b69864a7445d9e068994106f0e6d202d
parent54cc08c2917e2872cb79e56410b7c305dcebfef6 (diff)
downloadopen-keychain-fd119bda00bac1cfe6dbcafa2736c65e3624c083.tar.gz
open-keychain-fd119bda00bac1cfe6dbcafa2736c65e3624c083.tar.bz2
open-keychain-fd119bda00bac1cfe6dbcafa2736c65e3624c083.zip
extend-uid: use FAB instead of extra list item
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvUserIdsFragment.java20
-rw-r--r--OpenKeychain/src/main/res/anim/fab_slide_down.xml6
-rw-r--r--OpenKeychain/src/main/res/anim/fab_slide_in.xml7
-rw-r--r--OpenKeychain/src/main/res/layout/view_key_adv_main_fragment.xml122
5 files changed, 100 insertions, 57 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java
index 3db6bf4ae..01dc10d28 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java
@@ -29,6 +29,7 @@ import android.support.v4.content.Loader;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.SimpleOnPageChangeListener;
import android.view.ActionMode;
+import android.view.Menu;
import android.view.View;
import android.widget.Toast;
@@ -260,4 +261,5 @@ public class ViewKeyAdvActivity extends BaseActivity implements
super.onActionModeFinished(mode);
mSlidingTabLayout.setOnPageChangeListener(null);
}
+
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvUserIdsFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvUserIdsFragment.java
index 6186e1440..e98970754 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvUserIdsFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvUserIdsFragment.java
@@ -39,6 +39,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
+import android.widget.ViewAnimator;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
@@ -64,6 +65,7 @@ public class ViewKeyAdvUserIdsFragment extends LoaderFragment implements
private ListView mUserIds;
private ListView mUserIdsAddedList;
private View mUserIdsAddedLayout;
+ private ViewAnimator mUserIdAddFabLayout;
private UserIdsAdapter mUserIdsAdapter;
private UserIdsAddedAdapter mUserIdsAddedAdapter;
@@ -88,7 +90,19 @@ public class ViewKeyAdvUserIdsFragment extends LoaderFragment implements
}
});
- view.findViewById(R.id.view_key_action_add_user_id).setOnClickListener(new View.OnClickListener() {
+ View footer = new View(getActivity());
+ int spacing = (int) android.util.TypedValue.applyDimension(
+ android.util.TypedValue.COMPLEX_UNIT_DIP, 72, getResources().getDisplayMetrics()
+ );
+ android.widget.AbsListView.LayoutParams params = new android.widget.AbsListView.LayoutParams(
+ android.widget.AbsListView.LayoutParams.MATCH_PARENT,
+ spacing
+ );
+ footer.setLayoutParams(params);
+ mUserIdsAddedList.addFooterView(footer, null, false);
+
+ mUserIdAddFabLayout = (ViewAnimator) view.findViewById(R.id.view_key_user_id_fab_layout);
+ view.findViewById(R.id.view_key_user_id_fab).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addUserId();
@@ -271,7 +285,7 @@ public class ViewKeyAdvUserIdsFragment extends LoaderFragment implements
vEditUserIds.setVisible(mHasSecret);
}
- public void enterEditMode() {
+ private void enterEditMode() {
FragmentActivity activity = getActivity();
activity.startActionMode(new Callback() {
@Override
@@ -283,6 +297,7 @@ public class ViewKeyAdvUserIdsFragment extends LoaderFragment implements
new UserIdsAddedAdapter(getActivity(), mEditModeSaveKeyringParcel.mAddUserIds, false);
mUserIdsAddedList.setAdapter(mUserIdsAddedAdapter);
mUserIdsAddedLayout.setVisibility(View.VISIBLE);
+ mUserIdAddFabLayout.setDisplayedChild(1);
mUserIdsAdapter.setEditMode(mEditModeSaveKeyringParcel);
getLoaderManager().restartLoader(LOADER_ID_USER_IDS, null, ViewKeyAdvUserIdsFragment.this);
@@ -309,6 +324,7 @@ public class ViewKeyAdvUserIdsFragment extends LoaderFragment implements
mEditModeSaveKeyringParcel = null;
mUserIdsAdapter.setEditMode(null);
mUserIdsAddedLayout.setVisibility(View.GONE);
+ mUserIdAddFabLayout.setDisplayedChild(0);
getLoaderManager().restartLoader(LOADER_ID_USER_IDS, null, ViewKeyAdvUserIdsFragment.this);
}
});
diff --git a/OpenKeychain/src/main/res/anim/fab_slide_down.xml b/OpenKeychain/src/main/res/anim/fab_slide_down.xml
new file mode 100644
index 000000000..e51ac0cb9
--- /dev/null
+++ b/OpenKeychain/src/main/res/anim/fab_slide_down.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<translate xmlns:android="http://schemas.android.com/apk/res/android"
+ android:fromYDelta="0" android:toYDelta="300"
+ android:interpolator="@android:anim/anticipate_interpolator"
+ android:duration="250"
+/>
diff --git a/OpenKeychain/src/main/res/anim/fab_slide_in.xml b/OpenKeychain/src/main/res/anim/fab_slide_in.xml
new file mode 100644
index 000000000..cb38f81e8
--- /dev/null
+++ b/OpenKeychain/src/main/res/anim/fab_slide_in.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<translate xmlns:android="http://schemas.android.com/apk/res/android"
+ android:fromYDelta="300" android:toYDelta="0"
+ android:interpolator="@android:anim/overshoot_interpolator"
+ android:duration="250"
+ android:startOffset="100"
+/> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/layout/view_key_adv_main_fragment.xml b/OpenKeychain/src/main/res/layout/view_key_adv_main_fragment.xml
index d36c09ea1..ab0c59865 100644
--- a/OpenKeychain/src/main/res/layout/view_key_adv_main_fragment.xml
+++ b/OpenKeychain/src/main/res/layout/view_key_adv_main_fragment.xml
@@ -1,74 +1,86 @@
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools">
- <!-- focusable and related properties to workaround http://stackoverflow.com/q/16182331-->
- <LinearLayout
+ <ScrollView
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:descendantFocusability="beforeDescendants"
- android:orientation="vertical"
- android:paddingLeft="16dp"
- android:paddingRight="16dp">
-
- <TextView
- style="@style/SectionHeader"
- android:layout_width="wrap_content"
- android:layout_height="0dp"
- android:layout_marginTop="8dp"
- android:text="@string/section_user_ids"
- android:layout_weight="1" />
-
- <org.sufficientlysecure.keychain.ui.widget.FixedListView
- android:id="@+id/view_key_user_ids"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_marginBottom="4dp"
- android:layout_weight="1" />
+ android:layout_height="match_parent">
+ <!-- focusable and related properties to workaround http://stackoverflow.com/q/16182331-->
<LinearLayout
- android:layout_width="wrap_content"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:focusable="true"
+ android:focusableInTouchMode="true"
+ android:descendantFocusability="beforeDescendants"
android:orientation="vertical"
- android:id="@+id/view_key_user_ids_add_layout"
- android:visibility="gone"
- tools:visibility="visible">
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp">
- <View
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:background="?android:attr/listDivider" />
+ <TextView
+ style="@style/SectionHeader"
+ android:layout_width="wrap_content"
+ android:layout_height="0dp"
+ android:layout_marginTop="8dp"
+ android:text="@string/section_user_ids"
+ android:layout_weight="1" />
<org.sufficientlysecure.keychain.ui.widget.FixedListView
- android:id="@+id/view_key_user_ids_added"
+ android:id="@+id/view_key_user_ids"
android:layout_width="match_parent"
- android:layout_height="wrap_content" />
+ android:layout_height="0dp"
+ android:layout_marginBottom="4dp"
+ android:layout_weight="1" />
- <View
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:background="?android:attr/listDivider" />
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:id="@+id/view_key_user_ids_add_layout"
+ android:visibility="gone"
+ tools:visibility="visible">
- <TextView
- android:id="@+id/view_key_action_add_user_id"
- android:paddingLeft="8dp"
- android:paddingRight="8dp"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:text="@string/edit_key_action_add_identity"
- android:minHeight="?android:attr/listPreferredItemHeight"
- android:drawableRight="@drawable/ic_person_add_grey_24dp"
- android:drawablePadding="8dp"
- android:gravity="center_vertical"
- android:clickable="true"
- style="?android:attr/borderlessButtonStyle" />
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="1dip"
+ android:background="?android:attr/listDivider" />
+
+ <org.sufficientlysecure.keychain.ui.widget.FixedListView
+ android:id="@+id/view_key_user_ids_added"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
+ </LinearLayout>
</LinearLayout>
- </LinearLayout>
+ </ScrollView>
+
+ <ViewAnimator
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentEnd="true"
+ android:layout_alignParentBottom="true"
+ android:id="@+id/view_key_user_id_fab_layout"
+ android:inAnimation="@anim/fab_slide_in"
+ android:outAnimation="@anim/fab_slide_down">
+
+ <Space
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+
+ <android.support.design.widget.FloatingActionButton
+ android:id="@+id/view_key_user_id_fab"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_margin="24dp"
+ android:src="@drawable/ic_person_add_grey_24dp"
+ android:visibility="invisible"
+ android:layout_gravity="bottom"
+ tools:visibility="visible" />
+
+ </ViewAnimator>
-</ScrollView>
+</RelativeLayout>