Skip to content
Snippets Groups Projects
Commit 40bbdcba authored by Adrien Béraud's avatar Adrien Béraud Committed by Alexandre Lision
Browse files

ui: add Ring account type

Change-Id: Id1bd9da2e3e7ce07d60d2781869774f8c655cc15
parent a4531bfd
No related branches found
No related tags found
No related merge requests found
...@@ -17,11 +17,14 @@ import android.view.KeyEvent; ...@@ -17,11 +17,14 @@ import android.view.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.EditText; import android.widget.EditText;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener; import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast; import android.widget.Toast;
import android.widget.ViewFlipper;
import cx.ring.views.PasswordEditText; import cx.ring.views.PasswordEditText;
public class AccountCreationFragment extends Fragment { public class AccountCreationFragment extends Fragment {
...@@ -39,6 +42,9 @@ public class AccountCreationFragment extends Fragment { ...@@ -39,6 +42,9 @@ public class AccountCreationFragment extends Fragment {
private EditText mUsernameView; private EditText mUsernameView;
private PasswordEditText mPasswordView; private PasswordEditText mPasswordView;
private Spinner mAccountTypeView; private Spinner mAccountTypeView;
private ViewGroup mFieldFlipper;
private ViewGroup mFieldsSip;
private ViewGroup mFieldsRing;
private Callbacks mCallbacks = sDummyCallbacks; private Callbacks mCallbacks = sDummyCallbacks;
private static Callbacks sDummyCallbacks = new Callbacks() { private static Callbacks sDummyCallbacks = new Callbacks() {
...@@ -64,23 +70,45 @@ public class AccountCreationFragment extends Fragment { ...@@ -64,23 +70,45 @@ public class AccountCreationFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View inflatedView = inflater.inflate(R.layout.frag_account_creation, parent, false); View inflatedView = inflater.inflate(R.layout.frag_account_creation, parent, false);
mFieldFlipper = (ViewGroup) inflatedView.findViewById(R.id.field_flipper);
mFieldsSip = (ViewGroup) inflatedView.findViewById(R.id.sip_fields);
mFieldsRing = (ViewGroup) inflatedView.findViewById(R.id.ring_fields);
mAliasView = (EditText) inflatedView.findViewById(R.id.alias); mAliasView = (EditText) inflatedView.findViewById(R.id.alias);
mHostnameView = (EditText) inflatedView.findViewById(R.id.hostname); mHostnameView = (EditText) inflatedView.findViewById(R.id.hostname);
mUsernameView = (EditText) inflatedView.findViewById(R.id.username); mUsernameView = (EditText) inflatedView.findViewById(R.id.username);
mPasswordView = (PasswordEditText) inflatedView.findViewById(R.id.password); mPasswordView = (PasswordEditText) inflatedView.findViewById(R.id.password);
mAccountTypeView = (Spinner) inflatedView.findViewById(R.id.account_type); mAccountTypeView = (Spinner) inflatedView.findViewById(R.id.account_type);
mAccountTypeView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (parent.getSelectedItem().toString().equals("RING")) {
mFieldsSip.setVisibility(View.GONE);
mFieldsRing.setVisibility(View.VISIBLE);
} else {
mFieldsSip.setVisibility(View.VISIBLE);
mFieldsRing.setVisibility(View.GONE);
}
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
mPasswordView.getEdit_text().setOnEditorActionListener(new OnEditorActionListener() { mPasswordView.getEdit_text().setOnEditorActionListener(new OnEditorActionListener() {
@Override @Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
mAccountType = mAccountTypeView.getSelectedItem().toString();
// if(actionId == EditorInfo.IME_ACTION_GO || event.getAction() == KeyEvent.KEYCODE_ENTER){ // if(actionId == EditorInfo.IME_ACTION_GO || event.getAction() == KeyEvent.KEYCODE_ENTER){
if (mAccountType.equals("RING")) {
initCreation();
} else {
mAlias = mAliasView.getText().toString(); mAlias = mAliasView.getText().toString();
mHostname = mHostnameView.getText().toString(); mHostname = mHostnameView.getText().toString();
mUsername = mUsernameView.getText().toString(); mUsername = mUsernameView.getText().toString();
mPassword = mPasswordView.getText().toString(); mPassword = mPasswordView.getText().toString();
mAccountType = mAccountTypeView.getSelectedItem().toString();
attemptCreation(); attemptCreation();
}
// } // }
return true; return true;
...@@ -89,13 +117,17 @@ public class AccountCreationFragment extends Fragment { ...@@ -89,13 +117,17 @@ public class AccountCreationFragment extends Fragment {
inflatedView.findViewById(R.id.create_button).setOnClickListener(new View.OnClickListener() { inflatedView.findViewById(R.id.create_button).setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
mAccountType = mAccountTypeView.getSelectedItem().toString();
if (mAccountType.equals("RING")) {
initCreation();
} else {
mAlias = mAliasView.getText().toString(); mAlias = mAliasView.getText().toString();
mHostname = mHostnameView.getText().toString(); mHostname = mHostnameView.getText().toString();
mUsername = mUsernameView.getText().toString(); mUsername = mUsernameView.getText().toString();
mPassword = mPasswordView.getText().toString(); mPassword = mPasswordView.getText().toString();
mAccountType = mAccountTypeView.getSelectedItem().toString();
attemptCreation(); attemptCreation();
} }
}
}); });
return inflatedView; return inflatedView;
...@@ -179,12 +211,18 @@ public class AccountCreationFragment extends Fragment { ...@@ -179,12 +211,18 @@ public class AccountCreationFragment extends Fragment {
private void initCreation() { private void initCreation() {
try { try {
HashMap<String, String> accountDetails = (HashMap<String, String>) mCallbacks.getService().getAccountTemplate("SIP");
HashMap<String, String> accountDetails = (HashMap<String, String>) mCallbacks.getService().getAccountTemplate(mAccountType);
accountDetails.put(AccountDetailBasic.CONFIG_ACCOUNT_TYPE, mAccountType);
if (mAccountType.equals("RING")) {
accountDetails.put(AccountDetailBasic.CONFIG_ACCOUNT_ALIAS, "Ring");
accountDetails.put(AccountDetailBasic.CONFIG_ACCOUNT_HOSTNAME, "bootstrap.ring.cx");
} else {
accountDetails.put(AccountDetailBasic.CONFIG_ACCOUNT_ALIAS, mAlias); accountDetails.put(AccountDetailBasic.CONFIG_ACCOUNT_ALIAS, mAlias);
accountDetails.put(AccountDetailBasic.CONFIG_ACCOUNT_HOSTNAME, mHostname); accountDetails.put(AccountDetailBasic.CONFIG_ACCOUNT_HOSTNAME, mHostname);
accountDetails.put(AccountDetailBasic.CONFIG_ACCOUNT_USERNAME, mUsername); accountDetails.put(AccountDetailBasic.CONFIG_ACCOUNT_USERNAME, mUsername);
accountDetails.put(AccountDetailBasic.CONFIG_ACCOUNT_PASSWORD, mPassword); accountDetails.put(AccountDetailBasic.CONFIG_ACCOUNT_PASSWORD, mPassword);
accountDetails.put(AccountDetailBasic.CONFIG_ACCOUNT_TYPE, mAccountType); }
createNewAccount(accountDetails); createNewAccount(accountDetails);
......
...@@ -92,6 +92,10 @@ public class Account extends java.util.Observable implements Parcelable { ...@@ -92,6 +92,10 @@ public class Account extends java.util.Observable implements Parcelable {
return basicDetails.getDetailString(AccountDetailBasic.CONFIG_ACCOUNT_TYPE).equals("SIP"); return basicDetails.getDetailString(AccountDetailBasic.CONFIG_ACCOUNT_TYPE).equals("SIP");
} }
public Boolean isRing() {
return basicDetails.getDetailString(AccountDetailBasic.CONFIG_ACCOUNT_TYPE).equals("RING");
}
public void setAlias(String alias) { public void setAlias(String alias) {
basicDetails.setDetailString(AccountDetailBasic.CONFIG_ACCOUNT_ALIAS, alias); basicDetails.setDetailString(AccountDetailBasic.CONFIG_ACCOUNT_ALIAS, alias);
} }
......
...@@ -2,20 +2,51 @@ ...@@ -2,20 +2,51 @@
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/login_form" android:id="@+id/login_form"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
android:background="@color/light" >
<LinearLayout <LinearLayout
style="@style/AccountFormContainer" style="@style/AccountFormContainer"
android:orientation="vertical" > android:orientation="vertical"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true" >
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/account_type"
android:id="@+id/textView3"
android:layout_marginRight="16dp" />
<Spinner <Spinner
android:id="@+id/account_type" android:id="@+id/account_type"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="52dp"
android:minHeight="52dp"
android:entries="@array/accountType" android:entries="@array/accountType"
android:typeface="monospace" /> android:typeface="monospace" />
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/field_flipper"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/sip_fields"
android:visibility="gone">
<EditText <EditText
android:id="@+id/alias" android:id="@+id/alias"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -23,8 +54,6 @@ ...@@ -23,8 +54,6 @@
android:hint="@string/prompt_alias" android:hint="@string/prompt_alias"
android:singleLine="true" android:singleLine="true"
android:typeface="monospace" > android:typeface="monospace" >
<requestFocus />
</EditText> </EditText>
<EditText <EditText
...@@ -46,7 +75,7 @@ ...@@ -46,7 +75,7 @@
<cx.ring.views.PasswordEditText <cx.ring.views.PasswordEditText
android:id="@+id/password" android:id="@+id/password"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="@string/prompt_password" android:hint="@string/prompt_password"
android:imeActionLabel="@string/action_create_short" android:imeActionLabel="@string/action_create_short"
...@@ -54,6 +83,23 @@ ...@@ -54,6 +83,23 @@
android:inputType="textPassword" android:inputType="textPassword"
android:singleLine="true" android:singleLine="true"
android:typeface="sans" /> android:typeface="sans" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ring_fields">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/help_ring"
android:id="@+id/textView"
android:singleLine="false" />
</LinearLayout>
</FrameLayout>
<Button <Button
android:id="@+id/create_button" android:id="@+id/create_button"
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/container" android:id="@+id/account_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="72dp"
android:padding="4dp" > android:minHeight="72dp">
<ImageView <ImageView
android:id="@+id/drag_handle" android:id="@+id/drag_handle"
...@@ -11,34 +11,36 @@ ...@@ -11,34 +11,36 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_alignParentLeft="true" android:layout_alignParentLeft="true"
android:layout_marginLeft="10dp" android:layout_marginLeft="16dp"
android:src="@drawable/handle"/> android:src="@drawable/handle"/>
<TextView <TextView
android:id="@+id/account_alias" android:id="@+id/account_alias"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_toRightOf="@+id/drag_handle"
android:layout_alignParentTop="true" android:layout_alignParentTop="true"
android:layout_marginBottom="4dp" android:layout_marginLeft="72dp"
android:layout_marginLeft="4dp" android:text="Acount name"
android:textAppearance="?android:attr/textAppearanceLarge" /> android:textAppearance="@style/ListPrimary"
android:layout_alignParentLeft="true"
android:layout_marginTop="16dp" />
<TextView <TextView
android:id="@+id/account_host" android:id="@+id/account_host"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_toRightOf="@+id/drag_handle"
android:layout_below="@+id/account_alias" android:layout_below="@+id/account_alias"
android:layout_marginLeft="4dp" android:layout_marginLeft="72dp"
android:textAppearance="?android:attr/textAppearanceSmall" /> android:textAppearance="@style/ListSecondary"
android:text="hostname"
android:layout_alignParentLeft="true" />
<CheckBox <CheckBox
android:id="@+id/account_checked" android:id="@+id/account_checked"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_marginRight="10dp" android:layout_marginRight="16dp"
android:focusable="false" android:focusable="false"
android:layout_centerVertical="true" /> android:layout_centerVertical="true" />
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?><!--
<!--
Copyright (C) 2004-2014 Savoir-Faire Linux Inc. Copyright (C) 2004-2014 Savoir-Faire Linux Inc.
Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com> Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
...@@ -115,8 +114,12 @@ as that of the covered work. ...@@ -115,8 +114,12 @@ as that of the covered work.
<!-- combobox protocole --> <!-- combobox protocole -->
<string-array name="accountType"> <string-array name="accountType">
<item>RING</item>
<item>SIP</item> <item>SIP</item>
<item>IAX</item> <item>IAX</item>
</string-array> </string-array>
<string name="help_ring">Les comptes Ring vous permettent de discuter de manière sécurisée en connexion directe de pair à pair à l\'aide d\'un réseau distribué.\n\n
En créant un compte Ring, une nouvelle clef RSA de 4096 bits sera générée. L\'identifiant de la clef publique devient alors votre ID Ring.</string>
<string name="account_type">Type de compte</string>
</resources> </resources>
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?><!--
<!--
Copyright (C) 2004-2014 Savoir-Faire Linux Inc. Copyright (C) 2004-2014 Savoir-Faire Linux Inc.
Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com> Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
...@@ -34,7 +33,7 @@ as that of the covered work. ...@@ -34,7 +33,7 @@ as that of the covered work.
<string name="app_name">Ring</string> <string name="app_name">Ring</string>
<!-- SFLPhoneActivity --> <!-- RingActivity -->
<string name="close_msg">Press back again to leave</string> <string name="close_msg">Press back again to leave</string>
<string name="title_section0">Dial</string> <string name="title_section0">Dial</string>
<string name="title_section1">Call</string> <string name="title_section1">Call</string>
...@@ -116,8 +115,13 @@ as that of the covered work. ...@@ -116,8 +115,13 @@ as that of the covered work.
<!-- combobox protocol --> <!-- combobox protocol -->
<string-array name="accountType"> <string-array name="accountType">
<item>RING</item>
<item>SIP</item> <item>SIP</item>
<item>IAX</item> <item>IAX</item>
</string-array> </string-array>
<string name="help_ring">Ring accounts allow you to reach people securely in peer to peer through a fully distributed network.\n\n
When creating a Ring account, a new 4096 bits RSA key pair is generated. The hash of the public key then becomes your Ring ID.
</string>
<string name="account_type">Account type</string>
</resources> </resources>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment