move key health into its own view, make key status card view standalone

This commit is contained in:
Vincent Breitmoser
2017-05-26 19:17:42 +02:00
parent 6459deb6b8
commit 005d3039b5
4 changed files with 176 additions and 164 deletions

View File

@@ -45,13 +45,13 @@ import org.sufficientlysecure.keychain.ui.EditIdentitiesActivity;
import org.sufficientlysecure.keychain.ui.adapter.UserIdsAdapter; import org.sufficientlysecure.keychain.ui.adapter.UserIdsAdapter;
import org.sufficientlysecure.keychain.ui.base.LoaderFragment; import org.sufficientlysecure.keychain.ui.base.LoaderFragment;
import org.sufficientlysecure.keychain.ui.dialog.UserIdInfoDialogFragment; import org.sufficientlysecure.keychain.ui.dialog.UserIdInfoDialogFragment;
import org.sufficientlysecure.keychain.ui.keyview.view.KeyHealthCardView;
import org.sufficientlysecure.keychain.ui.keyview.presenter.KeyHealthPresenter; import org.sufficientlysecure.keychain.ui.keyview.presenter.KeyHealthPresenter;
import org.sufficientlysecure.keychain.ui.keyview.view.LinkedIdentitiesCardView;
import org.sufficientlysecure.keychain.ui.keyview.presenter.LinkedIdentitiesPresenter; import org.sufficientlysecure.keychain.ui.keyview.presenter.LinkedIdentitiesPresenter;
import org.sufficientlysecure.keychain.ui.keyview.presenter.LinkedIdentitiesPresenter.LinkedIdsFragMvpView; import org.sufficientlysecure.keychain.ui.keyview.presenter.LinkedIdentitiesPresenter.LinkedIdsFragMvpView;
import org.sufficientlysecure.keychain.ui.keyview.view.SystemContactCardView;
import org.sufficientlysecure.keychain.ui.keyview.presenter.SystemContactPresenter; import org.sufficientlysecure.keychain.ui.keyview.presenter.SystemContactPresenter;
import org.sufficientlysecure.keychain.ui.keyview.view.KeyHealthView;
import org.sufficientlysecure.keychain.ui.keyview.view.LinkedIdentitiesCardView;
import org.sufficientlysecure.keychain.ui.keyview.view.SystemContactCardView;
import org.sufficientlysecure.keychain.util.Preferences; import org.sufficientlysecure.keychain.util.Preferences;
@@ -80,7 +80,8 @@ public class ViewKeyFragment extends LoaderFragment implements LoaderManager.Loa
SystemContactCardView mSystemContactCard; SystemContactCardView mSystemContactCard;
SystemContactPresenter mSystemContactPresenter; SystemContactPresenter mSystemContactPresenter;
KeyHealthCardView mKeyHealthCard; KeyHealthView mKeyStatusHealth;
KeyHealthPresenter mKeyHealthPresenter; KeyHealthPresenter mKeyHealthPresenter;
private long mMasterKeyId; private long mMasterKeyId;
@@ -123,7 +124,7 @@ public class ViewKeyFragment extends LoaderFragment implements LoaderManager.Loa
}); });
mSystemContactCard = (SystemContactCardView) view.findViewById(R.id.linked_system_contact_card); mSystemContactCard = (SystemContactCardView) view.findViewById(R.id.linked_system_contact_card);
mKeyHealthCard = (KeyHealthCardView) view.findViewById(R.id.subkey_status_card); mKeyStatusHealth = (KeyHealthView) view.findViewById(R.id.key_status_health);
return root; return root;
} }
@@ -161,7 +162,7 @@ public class ViewKeyFragment extends LoaderFragment implements LoaderManager.Loa
mSystemContactPresenter.startLoader(getLoaderManager()); mSystemContactPresenter.startLoader(getLoaderManager());
mKeyHealthPresenter = new KeyHealthPresenter( mKeyHealthPresenter = new KeyHealthPresenter(
getContext(), mKeyHealthCard, LOADER_ID_SUBKEY_STATUS, mMasterKeyId, mIsSecret); getContext(), mKeyStatusHealth, LOADER_ID_SUBKEY_STATUS, mMasterKeyId, mIsSecret);
mKeyHealthPresenter.startLoader(getLoaderManager()); mKeyHealthPresenter.startLoader(getLoaderManager());
} }

View File

@@ -25,13 +25,13 @@ import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes; import android.support.annotation.DrawableRes;
import android.support.annotation.StringRes; import android.support.annotation.StringRes;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.support.v7.widget.CardView;
import android.text.format.DateFormat; import android.text.format.DateFormat;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.R;
@@ -46,7 +46,7 @@ import org.sufficientlysecure.keychain.ui.keyview.view.KeyStatusList.KeyDisplayS
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
public class KeyHealthCardView extends CardView implements KeyHealthMvpView, OnClickListener { public class KeyHealthView extends LinearLayout implements KeyHealthMvpView, OnClickListener {
private final View vLayout; private final View vLayout;
private final TextView vTitle, vSubtitle; private final TextView vTitle, vSubtitle;
private final ImageView vIcon; private final ImageView vIcon;
@@ -61,9 +61,11 @@ public class KeyHealthCardView extends CardView implements KeyHealthMvpView, OnC
private KeyHealthClickListener keyHealthClickListener; private KeyHealthClickListener keyHealthClickListener;
public KeyHealthCardView(Context context, AttributeSet attrs) { public KeyHealthView(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
setOrientation(VERTICAL);
View view = LayoutInflater.from(context).inflate(R.layout.key_health_card_content, this, true); View view = LayoutInflater.from(context).inflate(R.layout.key_health_card_content, this, true);
vLayout = view.findViewById(R.id.key_health_layout); vLayout = view.findViewById(R.id.key_health_layout);

View File

@@ -1,164 +1,155 @@
<merge <merge
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools"
tools:layout_width="match_parent"
tools:layout_height="wrap_content"
tools:parentTag="LinearLayout"
tools:orientation="vertical">
<LinearLayout <LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:id="@+id/key_health_layout"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:background="?selectableItemBackground"
>
<TextView <ImageView
style="@style/CardViewHeader"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Key Status" /> android:layout_gravity="center_vertical"
android:id="@+id/key_health_icon"
<LinearLayout tools:src="@drawable/ic_check_white_24dp"
android:orientation="horizontal" tools:tint="@color/android_green_light"
android:layout_width="match_parent" android:layout_marginLeft="12dp"
android:layout_height="wrap_content" android:layout_marginRight="12dp"
android:id="@+id/key_health_layout" />
android:paddingTop="12dp"
android:paddingBottom="12dp" <LinearLayout
android:paddingLeft="8dp" android:orientation="vertical"
android:paddingRight="8dp" android:layout_width="0dp"
android:background="?selectableItemBackground" android:layout_height="wrap_content"
> android:layout_weight="1">
<ImageView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:id="@+id/key_health_icon" android:id="@+id/key_health_title"
tools:src="@drawable/ic_check_white_24dp" android:textAppearance="?android:attr/textAppearanceMedium"
tools:tint="@color/android_green_light" tools:text="Healthy" />
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp" <TextView
/> android:layout_width="wrap_content"
android:layout_height="wrap_content"
<LinearLayout android:layout_gravity="center_vertical"
android:orientation="vertical" android:id="@+id/key_health_subtitle"
android:layout_width="0dp" tools:text="No key issues found." />
android:layout_height="wrap_content"
android:layout_weight="1"> </LinearLayout>
<TextView <ImageView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:id="@+id/key_health_title" android:id="@+id/key_health_expander"
android:textAppearance="?android:attr/textAppearanceMedium" android:src="@drawable/ic_expand_more_black_24dp"
tools:text="Healthy" /> android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
<TextView android:visibility="gone"
android:layout_width="wrap_content" tools:visibility="visible"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/key_health_subtitle"
tools:text="No key issues found." />
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/key_health_expander"
android:src="@drawable/ic_expand_more_black_24dp"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:visibility="gone"
tools:visibility="visible"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dip"
android:id="@+id/key_health_divider"
android:background="?android:attr/listDivider" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:id="@+id/key_insecure_layout"
android:visibility="gone"
tools:visibility="gone">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="Security Problem"
android:textAppearance="@style/SectionHeader"
android:layout_marginBottom="4dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/key_insecure_problem"
tools:text="@string/key_insecure_bitstrength_2048_problem" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="Suggested Solution"
android:textAppearance="@style/SectionHeader"
android:layout_marginTop="8dp"
android:layout_marginBottom="4dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/key_insecure_solution"
tools:text="@string/key_insecure_bitstrength_2048_solution" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:id="@+id/key_expiry_layout"
android:visibility="gone"
tools:visibility="visible">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/key_expiry_text"
android:textAppearance="?android:textAppearanceSmall"
tools:text="@string/key_expiry_text"
/>
</LinearLayout>
<org.sufficientlysecure.keychain.ui.keyview.view.KeyStatusList
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/key_health_status_list"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:visibility="gone"
/> />
<!--tools:visibility="visible"-->
</LinearLayout> </LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dip"
android:id="@+id/key_health_divider"
android:background="?android:attr/listDivider" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:id="@+id/key_insecure_layout"
android:visibility="gone"
tools:visibility="visible">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="Security Problem"
android:textAppearance="@style/SectionHeader"
android:layout_marginBottom="4dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/key_insecure_problem"
tools:text="@string/key_insecure_bitstrength_2048_problem" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="Suggested Solution"
android:textAppearance="@style/SectionHeader"
android:layout_marginTop="8dp"
android:layout_marginBottom="4dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/key_insecure_solution"
tools:text="@string/key_insecure_bitstrength_2048_solution" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:id="@+id/key_expiry_layout"
android:visibility="gone"
tools:visibility="visible">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/key_expiry_text"
android:textAppearance="?android:textAppearanceSmall"
tools:text="@string/key_expiry_text"
/>
</LinearLayout>
<org.sufficientlysecure.keychain.ui.keyview.view.KeyStatusList
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/key_health_status_list"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:visibility="gone"
/>
<!--tools:visibility="visible"-->
</merge> </merge>

View File

@@ -9,18 +9,36 @@
android:paddingRight="16dp" android:paddingRight="16dp"
android:paddingTop="16dp"> android:paddingTop="16dp">
<org.sufficientlysecure.keychain.ui.keyview.view.KeyHealthCardView <android.support.v7.widget.CardView
android:id="@+id/subkey_status_card" android:id="@+id/subkey_status_card"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:visibility="gone"
tools:visibility="visible"
card_view:cardBackgroundColor="?attr/colorCardViewBackground" card_view:cardBackgroundColor="?attr/colorCardViewBackground"
card_view:cardElevation="2dp" card_view:cardElevation="2dp"
card_view:cardUseCompatPadding="true" card_view:cardUseCompatPadding="true"
card_view:cardCornerRadius="4dp" card_view:cardCornerRadius="4dp">
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
style="@style/CardViewHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Key Status" />
<org.sufficientlysecure.keychain.ui.keyview.view.KeyHealthView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/key_status_health"
/>
</LinearLayout>
</android.support.v7.widget.CardView>
<org.sufficientlysecure.keychain.ui.keyview.view.LinkedIdentitiesCardView <org.sufficientlysecure.keychain.ui.keyview.view.LinkedIdentitiesCardView
android:id="@+id/card_linked_ids" android:id="@+id/card_linked_ids"