work on certification ui
77
Graphics/drawables/status_signature_verified_inner.svg
Normal file
@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="100px"
|
||||
height="100px"
|
||||
viewBox="0 0 100 100"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.48.5 r10040"
|
||||
sodipodi:docname="status_signature_verified_cutout.svg">
|
||||
<metadata
|
||||
id="metadata16">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>signature-verified-cutout</dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="784"
|
||||
id="namedview14"
|
||||
showgrid="false"
|
||||
inkscape:zoom="2.36"
|
||||
inkscape:cx="50"
|
||||
inkscape:cy="50"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="16"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="signature-verified-cutout" />
|
||||
<!-- Generator: Sketch 3.0.4 (8053) - http://www.bohemiancoding.com/sketch -->
|
||||
<title
|
||||
id="title4">signature-verified-cutout</title>
|
||||
<desc
|
||||
id="desc6">Created with Sketch.</desc>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<g
|
||||
id="Page-1"
|
||||
sketch:type="MSPage"
|
||||
stroke-width="1"
|
||||
stroke="none"
|
||||
fill-rule="evenodd"
|
||||
fill="none">
|
||||
<g
|
||||
id="signature-verified-cutout"
|
||||
sketch:type="MSArtboardGroup"
|
||||
transform="translate(0.110156, 0.000000)"
|
||||
fill="#000000">
|
||||
<path
|
||||
d="M 46.273291,77.5085 20,57.830916 27.91844,47.63497 43.309686,59.515226 70.31112,23 80.867825,30.778219 z"
|
||||
sketch:type="MSShapeGroup"
|
||||
id="path12"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
@ -22,7 +22,7 @@ SRC_DIR=./drawables/
|
||||
#inkscape -w 512 -h 512 -e "$PLAY_DIR/$NAME.png" $NAME.svg
|
||||
|
||||
|
||||
for NAME in "ic_cloud_search" "ic_action_encrypt_file" "ic_action_encrypt_text" "ic_action_verified_cutout" "ic_action_encrypt_copy" "ic_action_encrypt_save" "ic_action_encrypt_share" "status_lock_closed" "status_lock_error" "status_lock_open" "status_signature_expired_cutout" "status_signature_invalid_cutout" "status_signature_revoked_cutout" "status_signature_unknown_cutout" "status_signature_unverified_cutout" "status_signature_verified_cutout" "key_flag_authenticate" "key_flag_certify" "key_flag_encrypt" "key_flag_sign"
|
||||
for NAME in "ic_cloud_search" "ic_action_encrypt_file" "ic_action_encrypt_text" "ic_action_verified_cutout" "ic_action_encrypt_copy" "ic_action_encrypt_save" "ic_action_encrypt_share" "status_lock_closed" "status_lock_error" "status_lock_open" "status_signature_expired_cutout" "status_signature_invalid_cutout" "status_signature_revoked_cutout" "status_signature_unknown_cutout" "status_signature_unverified_cutout" "status_signature_verified_cutout" "key_flag_authenticate" "key_flag_certify" "key_flag_encrypt" "key_flag_sign" "status_signature_verified_inner"
|
||||
do
|
||||
echo $NAME
|
||||
inkscape -w 24 -h 24 -e "$MDPI_DIR/${NAME}_24dp.png" "$SRC_DIR/$NAME.svg"
|
||||
@ -32,7 +32,7 @@ inkscape -w 72 -h 72 -e "$XXDPI_DIR/${NAME}_24dp.png" "$SRC_DIR/$NAME.svg"
|
||||
inkscape -w 96 -h 96 -e "$XXXDPI_DIR/${NAME}_24dp.png" "$SRC_DIR/$NAME.svg"
|
||||
done
|
||||
|
||||
for NAME in "status_signature_expired_cutout" "status_signature_invalid_cutout" "status_signature_revoked_cutout" "status_signature_unknown_cutout" "status_signature_unverified_cutout" "status_signature_verified_cutout"
|
||||
for NAME in "status_signature_expired_cutout" "status_signature_invalid_cutout" "status_signature_revoked_cutout" "status_signature_unknown_cutout" "status_signature_unverified_cutout" "status_signature_verified_cutout" "status_signature_verified_inner"
|
||||
do
|
||||
echo $NAME
|
||||
inkscape -w 96 -h 96 -e "$MDPI_DIR/${NAME}_96dp.png" "$SRC_DIR/$NAME.svg"
|
||||
@ -60,4 +60,4 @@ for NAME in "first_time_1"
|
||||
do
|
||||
echo $NAME
|
||||
inkscape -w 512 -h 512 -e "$DRAWABLE_DIR/$NAME.png" "$SRC_DIR/$NAME.svg"
|
||||
done
|
||||
done
|
||||
|
@ -15,6 +15,8 @@ import java.util.regex.Pattern;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.support.annotation.DrawableRes;
|
||||
import android.support.annotation.StringRes;
|
||||
|
||||
|
||||
public abstract class LinkedResource {
|
||||
|
||||
@ -102,6 +104,7 @@ public abstract class LinkedResource {
|
||||
}
|
||||
|
||||
public abstract @DrawableRes int getDisplayIcon();
|
||||
public abstract @StringRes int getVerifiedText();
|
||||
public abstract String getDisplayTitle(Context context);
|
||||
public abstract String getDisplayComment(Context context);
|
||||
public boolean isViewable() {
|
||||
|
@ -2,6 +2,7 @@ package org.sufficientlysecure.keychain.pgp.linked.resources;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.DrawableRes;
|
||||
import android.support.annotation.StringRes;
|
||||
|
||||
import org.sufficientlysecure.keychain.R;
|
||||
import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog;
|
||||
@ -103,6 +104,12 @@ public class DnsResource extends LinkedCookieResource {
|
||||
return magicPattern.matcher(res);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @StringRes
|
||||
int getVerifiedText() {
|
||||
return R.string.linked_verified_dns;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @DrawableRes int getDisplayIcon() {
|
||||
return R.drawable.dns;
|
||||
|
@ -4,6 +4,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.DrawableRes;
|
||||
import android.support.annotation.StringRes;
|
||||
|
||||
import com.textuality.keybase.lib.Search;
|
||||
|
||||
@ -81,6 +82,8 @@ public class GenericHttpsResource extends LinkedCookieResource {
|
||||
log.add(LogType.MSG_LV_FETCH_ERROR_URL, indent);
|
||||
return null;
|
||||
} catch (IOException e) {
|
||||
Log.e(Constants.TAG, "io error", e);
|
||||
e.printStackTrace();
|
||||
log.add(LogType.MSG_LV_FETCH_ERROR_IO, indent);
|
||||
return null;
|
||||
}
|
||||
@ -109,6 +112,12 @@ public class GenericHttpsResource extends LinkedCookieResource {
|
||||
return R.drawable.ssl_lock;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @StringRes
|
||||
int getVerifiedText() {
|
||||
return R.string.linked_verified_https;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayTitle(Context context) {
|
||||
return "Website (HTTPS)";
|
||||
|
@ -4,6 +4,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.DrawableRes;
|
||||
import android.support.annotation.StringRes;
|
||||
import android.util.Log;
|
||||
|
||||
import com.textuality.keybase.lib.JWalk;
|
||||
@ -118,6 +119,12 @@ public class TwitterResource extends LinkedCookieResource {
|
||||
return R.drawable.twitter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @StringRes
|
||||
int getVerifiedText() {
|
||||
return R.string.linked_verified_twitter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayTitle(Context context) {
|
||||
return "Twitter";
|
||||
|
@ -201,7 +201,7 @@ public class LinkedIdsAdapter extends UserAttributesAdapter {
|
||||
final public TextView vComment;
|
||||
|
||||
public ViewHolder(View view) {
|
||||
vVerified = (ImageView) view.findViewById(R.id.user_id_item_certified);
|
||||
vVerified = (ImageView) view.findViewById(R.id.linked_id_certified_icon);
|
||||
vIcon = (ImageView) view.findViewById(R.id.linked_id_type_icon);
|
||||
vTitle = (TextView) view.findViewById(R.id.linked_id_title);
|
||||
vComment = (TextView) view.findViewById(R.id.linked_id_comment);
|
||||
|
@ -7,6 +7,7 @@ import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
@ -23,6 +24,7 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.ViewAnimator;
|
||||
|
||||
@ -240,6 +242,7 @@ public class LinkedIdViewFragment extends Fragment implements
|
||||
static class ViewHolder {
|
||||
private final View vButtonView;
|
||||
private final ViewAnimator vVerifyingContainer;
|
||||
private final ViewAnimator vItemCertified;
|
||||
LinkedIdsAdapter.ViewHolder mLinkedIdHolder;
|
||||
|
||||
private ViewAnimator vButtonSwitcher;
|
||||
@ -267,6 +270,7 @@ public class LinkedIdViewFragment extends Fragment implements
|
||||
vButtonView = root.findViewById(R.id.button_view);
|
||||
|
||||
vVerifyingContainer = (ViewAnimator) root.findViewById(R.id.linked_verify_container);
|
||||
vItemCertified = (ViewAnimator) root.findViewById(R.id.linked_id_certified);
|
||||
|
||||
vProgress = (ViewAnimator) root.findViewById(R.id.linked_cert_progress);
|
||||
vText = (TextView) root.findViewById(R.id.linked_cert_text);
|
||||
@ -285,7 +289,6 @@ public class LinkedIdViewFragment extends Fragment implements
|
||||
break;
|
||||
|
||||
case VERIFY_OK:
|
||||
vText.setText("Ok");
|
||||
vProgress.setDisplayedChild(1);
|
||||
if (!isSecret) {
|
||||
showButton(2);
|
||||
@ -315,7 +318,9 @@ public class LinkedIdViewFragment extends Fragment implements
|
||||
if (vVerifyingContainer.getDisplayedChild() == (show ? 1 : 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
vVerifyingContainer.setDisplayedChild(show ? 1 : 0);
|
||||
vItemCertified.setDisplayedChild(show ? 1 : 0);
|
||||
}
|
||||
|
||||
void showButton(int which) {
|
||||
@ -386,6 +391,15 @@ public class LinkedIdViewFragment extends Fragment implements
|
||||
mViewHolder = new ViewHolder(root);
|
||||
root.setTag(mViewHolder);
|
||||
|
||||
((ImageView) root.findViewById(R.id.status_icon_verified))
|
||||
.setColorFilter(mContext.getResources().getColor(R.color.android_green_light),
|
||||
PorterDuff.Mode.SRC_IN);
|
||||
((ImageView) root.findViewById(R.id.status_icon_invalid))
|
||||
.setColorFilter(mContext.getResources().getColor(R.color.android_red_light),
|
||||
PorterDuff.Mode.SRC_IN);
|
||||
|
||||
|
||||
|
||||
mViewHolder.vButtonBack.setClickable(true);
|
||||
mViewHolder.vButtonBack.findViewById(R.id.back_button).setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
@ -459,9 +473,11 @@ public class LinkedIdViewFragment extends Fragment implements
|
||||
return;
|
||||
}
|
||||
if (result.success()) {
|
||||
mViewHolder.vText.setText(mLinkedResource.getVerifiedText());
|
||||
mViewHolder.setVerifyingState(VerifyState.VERIFY_OK, mIsSecret);
|
||||
} else {
|
||||
mViewHolder.setVerifyingState(VerifyState.VERIFY_ERROR, mIsSecret);
|
||||
result.createNotify(getActivity()).show();
|
||||
}
|
||||
mInProgress = null;
|
||||
}
|
||||
@ -524,7 +540,7 @@ public class LinkedIdViewFragment extends Fragment implements
|
||||
return;
|
||||
}
|
||||
|
||||
mViewHolder.setVerifyingState(VerifyState.CERTIFYING, mIsSecret);
|
||||
mViewHolder.setVerifyingState(VerifyState.CERTIFYING, false);
|
||||
|
||||
Bundle data = new Bundle();
|
||||
{
|
||||
@ -557,19 +573,11 @@ public class LinkedIdViewFragment extends Fragment implements
|
||||
|
||||
Bundle data = message.getData();
|
||||
|
||||
if (message.arg1 == MessageStatus.UPDATE_PROGRESS.ordinal()) {
|
||||
if (data.containsKey(DATA_MESSAGE)) {
|
||||
mViewHolder.vText.setText(data.getString(DATA_MESSAGE));
|
||||
} else if (data.containsKey(DATA_MESSAGE_ID)) {
|
||||
mViewHolder.vText.setText(data.getString(DATA_MESSAGE_ID));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (message.arg1 == MessageStatus.OKAY.ordinal()) {
|
||||
CertifyResult result = data.getParcelable(CertifyResult.EXTRA_RESULT);
|
||||
result.createNotify(getActivity()).show();
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
11
OpenKeychain/src/main/res/anim/fade_in_up.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<translate android:fromYDelta="10" android:toYDelta="0"
|
||||
android:interpolator="@android:anim/decelerate_interpolator"
|
||||
android:duration="200"
|
||||
/>
|
||||
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
|
||||
android:interpolator="@android:anim/accelerate_interpolator"
|
||||
android:duration="200"
|
||||
/>
|
||||
</set>
|
11
OpenKeychain/src/main/res/anim/fade_out_down.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<translate android:fromYDelta="0.0" android:toYDelta="10"
|
||||
android:interpolator="@android:anim/decelerate_interpolator"
|
||||
android:duration="200"
|
||||
/>
|
||||
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
|
||||
android:interpolator="@android:anim/decelerate_interpolator"
|
||||
android:duration="150"
|
||||
/>
|
||||
</set>
|
After Width: | Height: | Size: 544 B |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 429 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 717 B |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 1.4 KiB |
@ -1,10 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="?android:attr/listPreferredItemHeight"
|
||||
android:orientation="horizontal"
|
||||
android:singleLine="true">
|
||||
android:singleLine="true"
|
||||
tools:showIn="@layout/linked_id_view_fragment">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="32dp"
|
||||
@ -43,22 +45,28 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/user_id_item_certified_layout"
|
||||
<ViewAnimator
|
||||
android:id="@+id/linked_id_certified"
|
||||
android:layout_width="22dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:outAnimation="@anim/fade_out_down"
|
||||
android:inAnimation="@anim/fade_in_up"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/user_id_item_certified"
|
||||
android:id="@+id/linked_id_certified_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/status_signature_unknown_cutout_24dp"
|
||||
android:layout_gravity="center_horizontal" />
|
||||
|
||||
</LinearLayout>
|
||||
<Space
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content" />
|
||||
|
||||
</ViewAnimator>
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -38,6 +38,8 @@
|
||||
android:id="@+id/linked_verify_container"
|
||||
android:inAnimation="@anim/fade_in"
|
||||
android:outAnimation="@anim/fade_out"
|
||||
android:layout_marginLeft="12dp"
|
||||
android:layout_marginRight="12dp"
|
||||
>
|
||||
|
||||
<include layout="@layout/cert_list_widget" />
|
||||
@ -49,36 +51,6 @@
|
||||
android:orientation="horizontal"
|
||||
android:singleLine="true">
|
||||
|
||||
<ViewAnimator
|
||||
android:layout_width="22dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_gravity="center"
|
||||
android:id="@+id/linked_cert_progress"
|
||||
android:inAnimation="@anim/fade_in"
|
||||
android:outAnimation="@anim/fade_out">
|
||||
|
||||
<ProgressBar
|
||||
android:layout_width="22dp"
|
||||
android:layout_height="22dp"
|
||||
android:indeterminate="true"
|
||||
/>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="22dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/status_signature_verified_cutout_24dp"
|
||||
/>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="22dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/status_signature_unknown_cutout_24dp"
|
||||
/>
|
||||
|
||||
</ViewAnimator>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_gravity="center_vertical"
|
||||
@ -98,6 +70,38 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ViewAnimator
|
||||
android:layout_width="22dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_gravity="center"
|
||||
android:id="@+id/linked_cert_progress"
|
||||
android:inAnimation="@anim/fade_in"
|
||||
android:outAnimation="@anim/fade_out">
|
||||
|
||||
<ProgressBar
|
||||
android:layout_width="22dp"
|
||||
android:layout_height="22dp"
|
||||
android:indeterminate="true"
|
||||
/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/status_icon_verified"
|
||||
android:layout_width="22dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/status_signature_verified_inner_24dp"
|
||||
/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/status_icon_invalid"
|
||||
android:layout_width="22dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/status_signature_invalid_cutout_24dp"
|
||||
/>
|
||||
|
||||
</ViewAnimator>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ViewAnimator>
|
||||
|
@ -1304,6 +1304,16 @@
|
||||
<string name="linked_create_dns_2_3">"More bla:"</string>
|
||||
<string name="linked_create_dns_2_4">"After successful verification, press the Finish button to add the Linked Identity to your keyring and finish the process."</string>
|
||||
|
||||
<string name="linked_create_verify">"Verify"</string>
|
||||
<string name="linked_text_clipboard">Text has been copied to clipboard</string>
|
||||
<string name="linked_verified_https">"The Website has been fetched and verified."</string>
|
||||
<string name="linked_verified_dns">"The DNS record has been fetched and verified."</string>
|
||||
<string name="linked_verified_twitter">"The Tweet has been fetched and verified."</string>
|
||||
<plurals name="linked_id_expand">
|
||||
<item quantity="one">"There is one more unknown identity type"</item>
|
||||
<item quantity="other">"There are %d more unknown identity types"</item>
|
||||
</plurals>
|
||||
|
||||
<string name="linked_select_1">"A \'linked identity\' connects your pgp key to a resource on the web."</string>
|
||||
<string name="linked_select_2">"Please select a type:"</string>
|
||||
<string name="linked_id_generic_text">"This file claims ownership of the OpenPGP key with long id %2$s.\n\nCookie for proof:\n%1$s"</string>
|
||||
@ -1315,11 +1325,5 @@
|
||||
<string name="menu_linked_add_identity">"Add Linked Identity"</string>
|
||||
<string name="section_linked_identities">"Linked Identities"</string>
|
||||
<string name="btn_finish">"Finish"</string>
|
||||
<string name="linked_create_verify">"Verify"</string>
|
||||
<string name="linked_text_clipboard">Text has been copied to clipboard</string>
|
||||
<plurals name="linked_id_expand">
|
||||
<item quantity="one">"There is one more unknown identity type"</item>
|
||||
<item quantity="other">"There are %d more unknown identity types"</item>
|
||||
</plurals>
|
||||
|
||||
</resources>
|
||||
|