Redesign login screen

This commit is contained in:
Phillip Thelen 2015-11-08 16:27:08 +01:00
parent 18a808adc9
commit 97554d5cfd
37 changed files with 255 additions and 441 deletions

View file

@ -120,8 +120,8 @@
<orderEntry type="library" exported="" name="crashlytics-core-2.3.0" level="project" />
<orderEntry type="library" exported="" name="recyclerview-v7-23.1.0" level="project" />
<orderEntry type="library" exported="" name="aboutlibraries-5.0.5" level="project" />
<orderEntry type="library" exported="" name="antlr4-runtime-4.5" level="project" />
<orderEntry type="library" exported="" name="antlr4-annotations-4.5" level="project" />
<orderEntry type="library" exported="" name="antlr4-runtime-4.5" level="project" />
<orderEntry type="library" exported="" name="library-1.0-rc1" level="project" />
<orderEntry type="library" exported="" name="library-1.1.4" level="project" />
<orderEntry type="library" exported="" name="org.abego.treelayout.core-1.0.1" level="project" />
@ -129,8 +129,8 @@
<orderEntry type="library" exported="" name="materialdrawer-4.3.8" level="project" />
<orderEntry type="library" exported="" name="appcompat-v7-23.1.0" level="project" />
<orderEntry type="library" exported="" name="checkout-0.7.4" level="project" />
<orderEntry type="library" exported="" name="compilerCommon-1.0-rc1" level="project" />
<orderEntry type="library" exported="" name="support-annotations-23.1.0" level="project" />
<orderEntry type="library" exported="" name="compilerCommon-1.0-rc1" level="project" />
<orderEntry type="library" exported="" name="compiler-1.0-rc1" level="project" />
<orderEntry type="library" exported="" name="library-2.4.0" level="project" />
<orderEntry type="library" exported="" name="mimecraft-1.1.1" level="project" />
@ -146,8 +146,8 @@
<orderEntry type="library" exported="" name="paperboy-2.1.0" level="project" />
<orderEntry type="library" exported="" name="javawriter-2.5.0" level="project" />
<orderEntry type="library" exported="" name="commons-codec-1.10" level="project" />
<orderEntry type="library" exported="" name="commons-lang3-3.3.2" level="project" />
<orderEntry type="library" exported="" name="kotlin-stdlib-0.12.613" level="project" />
<orderEntry type="library" exported="" name="commons-lang3-3.3.2" level="project" />
<orderEntry type="library" exported="" name="fab-1.6.1" level="project" />
<orderEntry type="library" exported="" name="instabugcore-1.8-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="cardview-v7-22.2.0" level="project" />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 940 B

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 811 B

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

@ -1,170 +1,174 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:id="@+id/login.linear.layout">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/login_barcode"
android:clickable="true"
android:scaleType="fitCenter"
android:background="@drawable/selectable_background_cardbank"
android:src="@drawable/ic_action_barcode_dark"/>
<LinearLayout
android:id="@+id/login_tokens_layout"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone">
<EditText
android:id="@+id/userId"
android:layout_width="150dip"
android:layout_height="wrap_content"
android:singleLine="true"
android:imeOptions="actionNext"
android:hint="@string/userToken"
/>
<EditText
android:id="@+id/apiToken"
android:layout_width="150dip"
android:layout_height="match_parent">
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/login.linear.layout"
android:gravity="center"
android:paddingTop="40dp"
android:paddingBottom="40dp"
android:orientation="vertical"
android:shrinkColumns="0"
android:layout_gravity="center_horizontal">
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:layout_gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_gravity="center_horizontal"
android:contentDescription="@string/gryphon"
android:src="@drawable/ic_gryphon"
android:layout_span="2" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView2"
android:src="@drawable/ic_habitica"
android:layout_span="2" />
</TableRow>
<TableRow
android:id="@+id/username_row"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">
<ImageView
android:layout_width="17dp"
android:layout_height="17dp"
android:id="@+id/imageView4"
android:src="@drawable/ic_username"
android:layout_gravity="center"
android:layout_marginRight="4dp" />
<EditText
android:id="@+id/username"
android:layout_width="@dimen/login_field_width"
android:layout_height="wrap_content"
android:singleLine="true"
android:imeOptions="actionNext"
android:hint="@string/username"
/>
</TableRow>
<TableRow
android:id="@+id/email_row"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<ImageView
android:layout_width="17dp"
android:layout_height="17dp"
android:id="@+id/imageView5"
android:src="@drawable/ic_email"
android:layout_gravity="center"
android:layout_marginRight="4dp" />
<EditText
android:id="@+id/email"
android:layout_width="@dimen/login_field_width"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:singleLine="true"
android:imeOptions="actionNext"
android:hint="@string/emailAddress" />
</TableRow>
<TableRow
android:id="@+id/password_row"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="17dp"
android:layout_height="17dp"
android:id="@+id/imageView6"
android:src="@drawable/ic_password"
android:layout_gravity="center"
android:layout_marginRight="4dp" />
<EditText
android:id="@+id/password"
android:layout_width="@dimen/login_field_width"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:singleLine="true"
android:imeOptions="actionDone"
android:layout_height="wrap_content"
android:hint="@string/apiToken"
android:hint="@string/password"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/login_normal_layout"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone">
<TextView
android:id="@+id/fb_message"
android:text="@string/fb_login_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
<EditText
android:id="@+id/username"
android:layout_width="150dip"
</TableRow>
<TableRow
android:id="@+id/confirm_password_row"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<ImageView
android:layout_width="17dp"
android:layout_height="17dp"
android:id="@+id/imageView7"
android:src="@drawable/ic_password"
android:layout_gravity="center"
android:layout_marginRight="4dp" />
<EditText
android:id="@+id/confirm_password"
android:layout_width="@dimen/login_field_width"
android:layout_height="wrap_content"
android:singleLine="true"
android:imeOptions="actionNext"
android:hint="@string/username"
/>
<EditText
android:id="@+id/password"
android:layout_width="150dip"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:singleLine="true"
android:imeOptions="actionDone"
android:hint="@string/password"
/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/register_layout"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/login_btn_container">
<EditText
android:id="@+id/reg_username"
android:layout_width="150dip"
android:layout_height="wrap_content"
android:singleLine="true"
android:imeOptions="actionNext"
android:hint="@string/username"
/>
<EditText
android:id="@+id/reg_email"
android:layout_width="150dip"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:singleLine="true"
android:imeOptions="actionNext"
android:hint="@string/emailAddress"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<EditText
android:id="@+id/reg_password"
android:layout_width="150dip"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:singleLine="true"
android:imeOptions="actionNext"
android:hint="@string/password"
/>
<EditText
android:id="@+id/reg_confirm_password"
android:layout_width="150dip"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:singleLine="true"
android:imeOptions="actionDone"
android:hint="@string/confirmpassword"
/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:id="@+id/buttons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center">
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<Button
android:id="@+id/login_normal_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/login_btn"
/>
<Button
android:id="@+id/login_tokens_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/login_tokens_btn"
/>
</LinearLayout>
<Button
android:id="@+id/register_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/register_btn"
/>
</LinearLayout>
<ProgressBar
android:id="@+id/PB_AsyncTask"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.ProgressBar.Horizontal"
android:indeterminate="true"
android:visibility="gone"
android:layout_gravity="bottom"
android:layout_marginBottom="@dimen/PB_marginBottom"
/>
</LinearLayout>
android:inputType="textPassword"
android:singleLine="true"
android:imeOptions="actionDone"
android:hint="@string/confirmpassword" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_span="2"
android:layout_gravity="center">
<Button
android:id="@+id/login_btn"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:text="@string/login_btn"
android:layout_gravity="center_horizontal" />
<ProgressBar
android:id="@+id/PB_AsyncTask"
android:indeterminate="true"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</TableRow>
</TableLayout>
</ScrollView>

View file

@ -4,11 +4,10 @@
xmlns:abc="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/tools">
<item
android:id="@+id/action_info"
android:icon="@drawable/ic_menu_info"
android:id="@+id/action_toggleRegistering"
android:orderInCategory="1"
app:showAsAction="always"
android:title="@string/action_info"
abc:showAsAction="always"/>
app:showAsAction="ifRoom"
android:title="@string/register_btn"
abc:showAsAction="ifRoom"/>
</menu>

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="login_field_width">300dp</dimen>
</resources>

View file

@ -39,4 +39,6 @@
<dimen name="checklist_divider_width">14dp</dimen>
<dimen name="checklist_wrapper_width">36dp</dimen>
<dimen name="checklist_item_min_height">50dp</dimen>
<dimen name="login_field_width">350dp</dimen>
</resources>

View file

@ -59,11 +59,11 @@
<string name="drawer_close">close drawer</string>
<string name="missing_tags"></string>
<string name="tags_section_title">Tags</string>
<string name="QRCode">To simplify everything you can scan the QRCode to connect to HabitRPG. To
<string name="QRCode">To simplify everything you can scan the QRCode to connect to Habitica. To
start the scanning mode, use the button in the menu.
</string>
<string name="SP_acknowledge_qrcode">acknowledge_qrcode_omg</string>
<string name="new_todo">New todo</string>
<string name="SP_acknowledge_qrcode">acknowledge_qrcode_omg</string>
<string name="new_reward">New reward</string>
<string name="new_daily">New daily</string>
<string name="new_habit">New habit</string>
@ -76,20 +76,17 @@
<string name="item_bought">You just bought a shinny new %s!</string>
<string name="userToken">User Token</string>
<string name="apiToken">API Token</string>
<string name="login_btn">Login (normal)</string>
<string name="login_btn">Login</string>
<string name="register_btn">Register</string>
<string name="username">Username</string>
<string name="password">Password</string>
<string name="emailAddress">Email address</string>
<string name="confirmpassword">Confirm password</string>
<string name="login_tokens_btn">Login (via tokens)</string>
<string name="fb_login_message">If you registered via facebook, please use the QRCode, or login
using your API/USER tokens
</string>
<string name="ERR_pb_accountCreation">An error happened. Please try to connect</string>
<string name="ERR_pb_connection">Error: your credentials couldn\'t be saved!</string>
<string name="logout">Logout</string>
<string name="LoginActivityName">Login</string>
<string name="LoginActivityName">Welcome</string>
<string name="helpString">To use this application, you need to have an account on http://habitrpg.com. You can register using the register button in this application.\n\n
If you already have an account, use the connect buttons, or the QRCode scanner. If you created your account using Facebook on the website, you will need to use the QRcode scanner or connect using your API and User token that you can find on http://habitrpg.com.</string>
<string name="action_info">Help</string>
@ -157,4 +154,5 @@
<string name="title_activity_tavern">Tavern</string>
<string name="title_activity_party">Party</string>
<string name="title_activity_gem_purchase">Purchase Gems</string>
<string name="gryphon">Gryphon</string>
</resources>

View file

@ -24,11 +24,13 @@ import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TableRow;
import android.widget.TextView;
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
@ -54,47 +56,36 @@ public class LoginActivity extends AppCompatActivity
private final static String TAG_USERID="user";
private final static String TAG_APIKEY="key";
private Button mRegisterBtn, mLoginNormalBtn, mLoginTokensBtn;
private ImageView mLoginBarcode;
private LinearLayout mLoginNormalLayout, mLoginTokensLayout, mRegisterLayout, mLoginBtnContainer;
private EditText mUserTokenET,mApiTokenET, mUsernameET, mPasswordET,mRegUsername,mRegEmail,mRegPassword,mRegConfirmPassword;
private Button mLoginNormalBtn;
private EditText mUsernameET, mPasswordET,mEmail,mConfirmPassword;
private TableRow mEmailRow, mConfirmPasswordRow;
private APIHelper mApiHelper;
private Handler mMainHandler;
private ProgressBar mProgressBar;
public String mTmpUserToken;
public String mTmpApiToken;
public Boolean isRegistering;
private Menu menu;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_screen);
mRegisterBtn = (Button) this.findViewById(R.id.register_btn);
mLoginNormalBtn = (Button) this.findViewById(R.id.login_normal_btn);
mLoginTokensBtn = (Button) this.findViewById(R.id.login_tokens_btn);
mLoginBarcode = (ImageView) this.findViewById(R.id.login_barcode);
mProgressBar = (ProgressBar) this.findViewById(R.id.PB_AsyncTask);
mLoginNormalBtn = (Button) this.findViewById(R.id.login_btn);
mProgressBar = (ProgressBar) this.findViewById(R.id.PB_AsyncTask);
mLoginNormalLayout = (LinearLayout) this.findViewById(R.id.login_normal_layout);
mLoginTokensLayout = (LinearLayout) this.findViewById(R.id.login_tokens_layout);
mRegisterLayout = (LinearLayout) this.findViewById(R.id.register_layout);
mLoginBtnContainer = (LinearLayout) this.findViewById(R.id.login_btn_container);
mUserTokenET = (EditText) this.findViewById(R.id.userId);
mApiTokenET = (EditText) this.findViewById(R.id.apiToken);
mUsernameET = (EditText) this.findViewById(R.id.username);
mPasswordET = (EditText) this.findViewById(R.id.password);
mRegUsername = (EditText) this.findViewById(R.id.reg_username);
mRegEmail = (EditText) this.findViewById(R.id.reg_email);
mRegPassword = (EditText) this.findViewById(R.id.reg_password);
mRegConfirmPassword = (EditText) this.findViewById(R.id.reg_confirm_password);
mRegisterBtn.setOnClickListener(mRegisterClick);
mEmail = (EditText) this.findViewById(R.id.email);
mConfirmPassword = (EditText) this.findViewById(R.id.confirm_password);
mEmailRow = (TableRow) this.findViewById(R.id.email_row);
mConfirmPasswordRow = (TableRow) this.findViewById(R.id.confirm_password_row);
mLoginNormalBtn.setOnClickListener(mLoginNormalClick);
mLoginTokensBtn.setOnClickListener(mLoginTokensClick);
mLoginBarcode.setOnClickListener(mBarcodeClick);
HostConfig hc= PrefsActivity.fromContext(this);
if(hc ==null) {
@ -102,24 +93,26 @@ public class LoginActivity extends AppCompatActivity
}
mApiHelper = new APIHelper(this,hc);
this.isRegistering = false;
}
private void resetLayout() {
//expand(mLoginBarcode);
if(mRegisterBtn.getVisibility() == View.GONE)
expand(mRegisterBtn);
if(mLoginTokensBtn.getVisibility() == View.GONE)
expand(mLoginTokensBtn);
if(mLoginNormalBtn.getVisibility() == View.GONE)
expand(mLoginNormalBtn);
if(mLoginBarcode.getVisibility()==View.GONE)
expand(mLoginBarcode);
if(mLoginBtnContainer.getVisibility()==View.GONE)
expand(mLoginBtnContainer);
collapse(mLoginNormalLayout);
collapse(mLoginTokensLayout);
collapse(mRegisterLayout);
if (this.isRegistering) {
if (this.mEmailRow.getVisibility() == View.GONE) {
expand(this.mEmailRow);
}
if (this.mConfirmPasswordRow.getVisibility() == View.GONE) {
expand(this.mConfirmPasswordRow);
}
} else {
if (this.mEmailRow.getVisibility() == View.VISIBLE) {
collapse(this.mEmailRow);
}
if (this.mConfirmPasswordRow.getVisibility() == View.VISIBLE) {
collapse(this.mConfirmPasswordRow);
}
}
}
private View.OnClickListener mBarcodeClick = new View.OnClickListener() {
@ -132,134 +125,38 @@ public class LoginActivity extends AppCompatActivity
private View.OnClickListener mRegisterClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mLoginTokensBtn.getVisibility()==View.GONE && mLoginNormalBtn.getVisibility()==View.GONE) {
String username, email,password,cpassword;
username = String.valueOf(mRegUsername.getText());
email = String.valueOf(mRegEmail.getText());
password = String.valueOf(mRegPassword.getText());
cpassword = String.valueOf(mRegConfirmPassword.getText());
mApiHelper.registerUser(v,username,email,password,cpassword);
}else {
expand(mRegisterLayout);//.setVisibility(View.VISIBLE);
collapse(mLoginNormalBtn);//.setVisibility(View.GONE);
collapse(mLoginTokensBtn);//.setVisibility(View.GONE);
}
}
};
private View.OnClickListener mLoginNormalClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mRegisterBtn.getVisibility()==View.GONE && mLoginTokensBtn.getVisibility()==View.GONE) {
String username,password;
username = String.valueOf(mUsernameET.getText());
password = String.valueOf(mPasswordET.getText());
mApiHelper.connectUser(username,password, LoginActivity.this);
} else {
expand(mLoginNormalLayout);//.setVisibility(View.VISIBLE);
collapse(mRegisterBtn);//.setVisibility(View.GONE);
collapse(mLoginTokensBtn);//.setVisibility(View.GONE);
}
}
};
private View.OnClickListener mLoginTokensClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mRegisterBtn.getVisibility() == View.GONE && mLoginNormalBtn.getVisibility() == View.GONE) {
mTmpUserToken = String.valueOf(mUserTokenET.getText());
mTmpApiToken = String.valueOf(mApiTokenET.getText());
HostConfig config = PrefsActivity.fromContext(LoginActivity.this);
if(config==null) {
config = new HostConfig(getString(R.string.SP_address_default), "80", mTmpApiToken, mTmpUserToken);
} else {
config.setApi(mTmpApiToken);
config.setUser(mTmpUserToken);
}
APIHelper secApiHelper = new APIHelper(LoginActivity.this, config);
secApiHelper.retrieveUser(new HabitRPGUserCallback(LoginActivity.this));
} else {
expand(mLoginTokensLayout);
collapse(mLoginNormalBtn);
collapse(mRegisterBtn);
}
mProgressBar.setVisibility(View.VISIBLE);
if (isRegistering) {
String username, email,password,cpassword;
username = String.valueOf(mUsernameET.getText());
email = String.valueOf(mEmail.getText());
password = String.valueOf(mPasswordET.getText());
cpassword = String.valueOf(mConfirmPassword.getText());
mApiHelper.registerUser(v,username,email,password,cpassword);
} else {
String username,password;
username = String.valueOf(mUsernameET.getText());
password = String.valueOf(mPasswordET.getText());
mApiHelper.connectUser(username,password, LoginActivity.this);
}
}
};
private boolean layoutHasChanged() {
return mRegisterBtn.getVisibility() == View.GONE || mLoginNormalBtn.getVisibility() == View.GONE ||mLoginTokensBtn.getVisibility() == View.GONE;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && layoutHasChanged()) {
resetLayout();
return true;
}
return super.onKeyDown(keyCode, event);
}
public static void expand(final View v) {
v.measure(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
final int targtetHeight = v.getMeasuredHeight();
final int targtetWidth = v.getMeasuredWidth();
Log.v("expanding ", "w:" + targtetWidth + " h:"+targtetHeight);
//v.getLayoutParams().height = 0;
//v.getLayoutParams().width=0;
v.setVisibility(View.VISIBLE);//works when the setVisibility is outside the animationlistener.
Animation a = new Animation()
{
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
v.getLayoutParams().height = interpolatedTime == 1
? ViewGroup.LayoutParams.WRAP_CONTENT
: (int)(targtetHeight * interpolatedTime);
v.getLayoutParams().width = interpolatedTime == 1
? ViewGroup.LayoutParams.WRAP_CONTENT
: (int)(targtetWidth * interpolatedTime);
v.requestLayout();
}
@Override
public boolean willChangeBounds() {
return true;
}
};
// 1dp/ms
a.setDuration(500);
v.startAnimation(a);
v.setVisibility(View.VISIBLE);
}
//
public static void collapse(final View v) {
final int initialHeight = v.getMeasuredHeight();
final int initialWidth = v.getMeasuredWidth();
Animation a = new Animation()
{
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
if(interpolatedTime == 1){
v.setVisibility(View.GONE);
}else{
v.getLayoutParams().height = initialHeight - (int)(initialHeight * interpolatedTime);
v.getLayoutParams().width = initialWidth - (int) (initialWidth*interpolatedTime);
v.requestLayout();
}
}
@Override
public boolean willChangeBounds() {
return true;
}
};
// 1dp/ms
a.setDuration(500);//targtetHeight / (v.getContext().getResources().getDisplayMetrics().density)));
v.startAnimation(a);
}
v.setVisibility(View.GONE);
}
private void startMainActivity() {
startActivity(new Intent(LoginActivity.this, MainActivity.class));
@ -269,7 +166,6 @@ public class LoginActivity extends AppCompatActivity
private void saveTokens(String api, String user) throws Exception {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this);
SharedPreferences.Editor editor = prefs.edit();
Log.v("login", "saving tokens");
boolean ans = editor.putString(getString(R.string.SP_APIToken), api)
.putString(getString(R.string.SP_userID), user)
.putString(getString(R.string.SP_address),getString(R.string.SP_address_default))
@ -279,23 +175,19 @@ public class LoginActivity extends AppCompatActivity
}
}
private void showHelpMMessage() {
final SpannableString mess = new SpannableString(getString(R.string.helpString));
Linkify.addLinks(mess, Linkify.ALL);
AlertDialog d =new AlertDialog.Builder(this)
.setTitle(R.string.pref_dialog_title)
.setMessage(mess).setCancelable(false)
.setPositiveButton(R.string.string_pref_dialog_positive, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).create();
d.show();
((TextView)d.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
((TextView)d.findViewById(android.R.id.message)).setTextSize(13);
private void toggleRegistering() {
this.isRegistering = !this.isRegistering;
MenuItem menuItem = menu.findItem(R.id.action_toggleRegistering);
if (this.isRegistering) {
this.mLoginNormalBtn.setText(getString(R.string.register_btn));
menuItem.setTitle(getString(R.string.login_btn));
mPasswordET.setImeOptions(EditorInfo.IME_ACTION_NEXT);
} else {
this.mLoginNormalBtn.setText(getString(R.string.login_btn));
menuItem.setTitle(getString(R.string.register_btn));
mPasswordET.setImeOptions(EditorInfo.IME_ACTION_DONE);
}
this.resetLayout();
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
@ -353,106 +245,20 @@ public class LoginActivity extends AppCompatActivity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.login, menu);
this.menu = menu;
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_info:
showHelpMMessage();
case R.id.action_toggleRegistering:
toggleRegistering();
break;
}
return super.onOptionsItemSelected(item);
}
/* @Override
public void onNewUser(String apiToken, String apiUser) {
final String api = apiToken;
final String user = apiUser;
mMainHandler = new Handler(getMainLooper());
Runnable myRunnable = new Runnable(){
public void run() {
afterResults();
try {
saveTokens(api,user);
startMainActivity();
finish();
} catch (Exception e) {
if("PB_string_commit".equals(e.getMessage()))
Crouton.makeText(LoginActivity.this, getString(R.string.ERR_pb_accountCreation), Style.ALERT).show();
}
}
};
mMainHandler.post(myRunnable);
}
@Override
public void onUserConnected(String api_t, String user_t) {
final String api = api_t;
final String user = user_t;
mMainHandler = new Handler(getMainLooper());
Log.v("user connected", "api:" +api_t+ " us" + user_t);
Runnable myRunnable = new Runnable(){
public void run() {
afterResults();
try {
saveTokens(api,user);
startMainActivity();
} catch (Exception e) {
if("PB_string_commit".equals(e.getMessage()))
Crouton.makeText(LoginActivity.this, getString(R.string.ERR_pb_connection), Style.ALERT).show();
}
}
};
mMainHandler.post(myRunnable);
}
@Override
public void onUserReceived(User user) {
try {
saveTokens(mTmpApiToken,mTmpUserToken);
startMainActivity();
finish();
} catch(Exception e) {
if("PB_string_commit".equals(e.getMessage()))
Crouton.makeText(LoginActivity.this, getString(R.string.ERR_pb_connection), Style.ALERT).show();
}
}
@Override
public void onUserItemsReceived(UserLook.UserItems userLook, Reward.SpecialReward itemBought) {
}
@Override
public void onPostResult(double xp, double hp, double gold, double lvl, double delta) {
}
@Override
public void onPreResult() {
mProgressBar.setVisibility(View.VISIBLE);
}
@Override
public void onError(HabitRPGException error) {
final HabitRPGException err = error;
mMainHandler = new Handler(getMainLooper());
Runnable myRunnable = new Runnable(){
public void run() {
afterResults();
String myMessage=err!=null ? err.getMessage() : null;
if(myMessage == null)
myMessage= getString(R.string.unknown_error);
Crouton.makeText(LoginActivity.this, myMessage, Style.ALERT).show();
}
};
mMainHandler.post(myRunnable);
}*/
private void afterResults() {
mProgressBar.setVisibility(View.INVISIBLE);
}
@ -469,7 +275,7 @@ public class LoginActivity extends AppCompatActivity
@Override
public void failure(RetrofitError error) {
Log.d("OMG", "omg" + error.getMessage() + " " + error.getUrl());
mProgressBar.setVisibility(View.GONE);
}
@Override
@ -484,6 +290,7 @@ public class LoginActivity extends AppCompatActivity
@Override
public void onUserFail() {
showSnackbar(getString(R.string.unknown_error));
mProgressBar.setVisibility(View.GONE);
showSnackbar(getString(R.string.unknown_error));
}
}