From 2056bcc720c0c2c462190bc96b7592e5b8ae92b7 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 13 Mar 2014 03:49:19 +0000 Subject: [PATCH] Added view of identity --- AndroidManifest.xml | 5 +- res/drawable-hdpi/ic_content_edit.png | Bin 0 -> 1875 bytes res/drawable-mdpi/ic_content_edit.png | Bin 0 -> 1490 bytes res/drawable-xhdpi/ic_content_edit.png | Bin 0 -> 2382 bytes res/layout/fragment_view_identity.xml | 47 ++++++++ res/menu/view_identity.xml | 11 ++ res/values/strings.xml | 1 + src/i2p/bote/config/SettingsActivity.java | 6 +- src/i2p/bote/config/ViewIdentityActivity.java | 24 ++++ src/i2p/bote/config/ViewIdentityFragment.java | 107 ++++++++++++++++++ 10 files changed, 197 insertions(+), 4 deletions(-) create mode 100644 res/drawable-hdpi/ic_content_edit.png create mode 100644 res/drawable-mdpi/ic_content_edit.png create mode 100644 res/drawable-xhdpi/ic_content_edit.png create mode 100644 res/layout/fragment_view_identity.xml create mode 100644 res/menu/view_identity.xml create mode 100644 src/i2p/bote/config/ViewIdentityActivity.java create mode 100644 src/i2p/bote/config/ViewIdentityFragment.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 6207aa4..621cf75 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -36,8 +36,11 @@ android:name="i2p.bote.config.SetPasswordActivity" android:parentActivityName="i2p.bote.config.SettingsActivity" /> + diff --git a/res/drawable-hdpi/ic_content_edit.png b/res/drawable-hdpi/ic_content_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb5190fb44de54efc5a1675090aeedb25b1d0c6 GIT binary patch literal 1875 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 literal 0 HcmV?d00001 diff --git a/res/drawable-xhdpi/ic_content_edit.png b/res/drawable-xhdpi/ic_content_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..4215579aedd5edf6f5314de15e7b9175eb5acff2 GIT binary patch literal 2382 zcmaJ@c{r478y_msW+`JSOd}taSAy59GBp8L9gzx#JT_wSE4)5mM)+EvD@ zKp@as4|kHEa&=a{ni|UQ6$W=mxflt^!2*AFj39~113)g(>?i=@!KBgwKY$u7;&uQI zAkeZcjDTQ4Fl9HM#%98)svNkG$x)&~AO|NQhf0eB1du3z&R`Ls@>@+%2qT&R-Gikd zDI6jY%WzNT0shHe0kq^e8ZH{@UPyp`;l(TWsxSfy`H~`t zBS8Na6-@Dg5ZOEcf`ubtG^8yGVvB*JFi0E*XAMCkQAh*|jX>JLP)I!14v$1ZzCKW8 zHC}WK-jC$=wU+WkfW`_096SP%l#~QdvVpUCbOZ{A!y%Ap1R4!fX2AF&mVhdRvH0do z3?zV0<1sh_2Ac&@F;b)02?7FCsr2s_n4E94EdJMPQeGHBNaY|AmRWBKY-6p;L((Wi!oP~;^2uqfGS|~0@&>MrCaogWeeE+ST+Yj z^vA+c5DJyXV5uTs5EKgDgT)t6Sv0_dM1U$e;0#7Io=mhSy4Yh;SXZPQ3PncYFen@u z<4SaK!=mgkuBas}iA_sj0xZE2Hu@hd`ny<_8JHYpWfH(+Bm&WHJT?>ZrD;6lyIL@A z-{t#?jsCtC2wEr6QQb_3^)%Kflm4|QE2UtqK^OVL0Z+vkT1X|JTL2?NY z_D>Y1h;xAr8N)9I6Q2k22W`809*31bozx2g`|212&|dw9P~YC8+14&r16Ak-9a3!K zRHb;b3UD({7$K_c<%-J&b;lG@>gtOJ zHRZ?IogwL5DVLl7r@{T-!p*OcOC?s%#3j7-Wq}SJlDXH4wm=IvvDZyk!P�U!}aM zpJH3)cgNL8Ec0$){VJ~LO*V=I$L2#8+qAcg z^}}xly-e@jseAX?GAVAhE^{VZcvkElhQ)Xcx_BQN6X#2PU58rIj?3=R{WRz!BAZXd zAJWWlt=WV1(g^RzHRF}y*)q$!eUrlN8YC-`S+!jI7|JkpgysSA%FQE)@)K?!V}@NTGjQD*T2GPGc%y~=Rf(%BKOSsoI-AOYnnc=Y zRTNi+?418>X*-X-)1&^xXAC@|aL?9wF#Ffh+?t>Yxn-Z3^9>`?$?HjNy4f^h&&JJ_ zGIK^ao$Bb(_z=uF(GavbT_ieZ=&AneaN4epHGk~xxh1nPDh)R7YEEHfn!KG#(Cobz z?o{Y_&hoPEtLHPBzZ;kLX?;E&mU6h20_(~dsd=6=-W90N?Oq7U8$^KZrm9B|uFDSF z&}wUwbt5yIolP=wLVxU? z@hm!N>CoP(7L@&N3yN$NvP`7YGOnQ7IGX7q3tEqN$u9AjdY5Y5PZ3JB)x64KAD)f> z&`=9J8n$UXBv+(r^|X{pE!RQs+h>G&v(CS@!*zU!$@kt5%avsmEQ`0o6;_Kc}%S+GpxDk$Hc}F0p29y7D~}=8KoxZL=!rCWAcp(?!{(X1f1rkO&7z z3+Y8Vn%%O;E3F^!jA@nC)Qg0P8pWV(d1UG8p6Tt)M)27QLQ%WyS(W^LpLABEYd(JY z4f&g_j-IFO-RcQ7ZDZV&;3;y!6<5!79{_oi99`7M{qdwbM0Yt z?N+Mkt4>O~zZG@F{-I>O#M{2+eLXtljRrJmjyXn;K*Z7KeG|7AgA87$E#N!V_FTL= qU3zhwdcg9_nm)R(gyEl8BSBe5&$GOXn2%I{I38p#QiW^eq5lF9AN}zF literal 0 HcmV?d00001 diff --git a/res/layout/fragment_view_identity.xml b/res/layout/fragment_view_identity.xml new file mode 100644 index 0000000..d046272 --- /dev/null +++ b/res/layout/fragment_view_identity.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/menu/view_identity.xml b/res/menu/view_identity.xml new file mode 100644 index 0000000..eaae870 --- /dev/null +++ b/res/menu/view_identity.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 9f3a2a3..5d7575e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -62,6 +62,7 @@ Identities New identity + Edit identity Public name Description Default identity diff --git a/src/i2p/bote/config/SettingsActivity.java b/src/i2p/bote/config/SettingsActivity.java index 5f034cd..9cadee3 100644 --- a/src/i2p/bote/config/SettingsActivity.java +++ b/src/i2p/bote/config/SettingsActivity.java @@ -162,7 +162,7 @@ public class SettingsActivity extends PreferenceActivity { Header header = mIdentityListHeaders[index]; if (header != null && header.id != HEADER_ID_UNDEFINED) { String key = header.extras.getString( - EditIdentityFragment.IDENTITY_KEY); + ViewIdentityFragment.IDENTITY_KEY); if (key != mDeletingIdentityKey) { target.add(header); if (key == mRequestedIdentityKey) { @@ -276,9 +276,9 @@ public class SettingsActivity extends PreferenceActivity { final String desc = identity.getDescription(); final String key = identity.getKey(); final Intent intent = new Intent( - getApplicationContext(), EditIdentityActivity.class); + getApplicationContext(), ViewIdentityActivity.class); final Bundle args = new Bundle(); - args.putString(EditIdentityFragment.IDENTITY_KEY, key); + args.putString(ViewIdentityFragment.IDENTITY_KEY, key); intent.putExtras(args); final Header newHeader = new Header(); newHeader.id = id; diff --git a/src/i2p/bote/config/ViewIdentityActivity.java b/src/i2p/bote/config/ViewIdentityActivity.java new file mode 100644 index 0000000..bfdf871 --- /dev/null +++ b/src/i2p/bote/config/ViewIdentityActivity.java @@ -0,0 +1,24 @@ +package i2p.bote.config; + +import android.os.Bundle; +import android.support.v7.app.ActionBarActivity; + +public class ViewIdentityActivity extends ActionBarActivity { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Enable ActionBar app icon to behave as action to go back + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + + if (savedInstanceState == null) { + String key = null; + Bundle args = getIntent().getExtras(); + if (args != null) + key = args.getString(ViewIdentityFragment.IDENTITY_KEY); + ViewIdentityFragment f = ViewIdentityFragment.newInstance(key); + getSupportFragmentManager().beginTransaction() + .add(android.R.id.content, f).commit(); + } + } +} diff --git a/src/i2p/bote/config/ViewIdentityFragment.java b/src/i2p/bote/config/ViewIdentityFragment.java new file mode 100644 index 0000000..cfa484d --- /dev/null +++ b/src/i2p/bote/config/ViewIdentityFragment.java @@ -0,0 +1,107 @@ +package i2p.bote.config; + +import java.io.IOException; +import java.security.GeneralSecurityException; + +import i2p.bote.R; +import i2p.bote.email.EmailIdentity; +import i2p.bote.fileencryption.PasswordException; +import i2p.bote.util.BoteHelper; +import android.content.Intent; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +public class ViewIdentityFragment extends Fragment { + public static final String IDENTITY_KEY = "identity_key"; + + private String mKey; + private EmailIdentity mIdentity; + + TextView mNameField; + TextView mDescField; + TextView mCryptoField; + TextView mKeyField; + + public static ViewIdentityFragment newInstance(String key) { + ViewIdentityFragment f = new ViewIdentityFragment(); + Bundle args = new Bundle(); + args.putString(IDENTITY_KEY, key); + f.setArguments(args); + return f; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_view_identity, container, false); + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + mKey = getArguments().getString(IDENTITY_KEY); + if (mKey != null) { + try { + mIdentity = BoteHelper.getIdentity(mKey); + mNameField = (TextView) view.findViewById(R.id.public_name); + mDescField = (TextView) view.findViewById(R.id.description); + mCryptoField = (TextView) view.findViewById(R.id.crypto_impl); + mKeyField = (TextView) view.findViewById(R.id.key); + } catch (PasswordException e) { + // TODO Handle + e.printStackTrace(); + } catch (IOException e) { + // TODO Handle + e.printStackTrace(); + } catch (GeneralSecurityException e) { + // TODO Handle + e.printStackTrace(); + } + } + } + + @Override + public void onResume() { + super.onResume(); + + if (mIdentity != null) { + mNameField.setText(mIdentity.getPublicName()); + mDescField.setText(mIdentity.getDescription()); + mCryptoField.setText(mIdentity.getCryptoImpl().getName()); + mKeyField.setText(mKey); + } + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + inflater.inflate(R.menu.view_identity, menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.action_edit_identity: + Intent ei = new Intent(getActivity(), EditIdentityActivity.class); + ei.putExtra(EditIdentityFragment.IDENTITY_KEY, mKey); + startActivity(ei); + return true; + + default: + return super.onOptionsItemSelected(item); + } + } +}