NekoX/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java

252 lines
8.5 KiB
Java
Raw Normal View History

2013-10-25 17:19:00 +02:00
/*
2013-12-20 20:25:49 +01:00
* This is the source code of Telegram for Android v. 1.3.2.
2013-10-25 17:19:00 +02:00
* It is licensed under GNU GPL v. 2 or later.
* You should have received a copy of the license in this archive (see LICENSE).
*
* Copyright Nikolai Kudashov, 2013.
*/
package org.telegram.ui;
2013-12-20 20:25:49 +01:00
import android.animation.Animator;
2013-10-25 17:19:00 +02:00
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
2013-12-20 20:25:49 +01:00
import android.graphics.PixelFormat;
import android.graphics.Point;
2013-10-25 17:19:00 +02:00
import android.os.Bundle;
2013-12-20 20:25:49 +01:00
import android.support.v4.internal.view.SupportMenuItem;
import android.support.v7.app.ActionBarActivity;
import android.view.Display;
import android.view.Menu;
2013-10-25 17:19:00 +02:00
import android.view.View;
2013-12-20 20:25:49 +01:00
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.ImageView;
2013-10-25 17:19:00 +02:00
import android.widget.TextView;
import org.telegram.messenger.LocaleController;
2013-10-25 17:19:00 +02:00
import org.telegram.messenger.R;
import org.telegram.messenger.Utilities;
2013-12-20 20:25:49 +01:00
import org.telegram.ui.Views.SlideView;
public class LoginActivity extends ActionBarActivity implements SlideView.SlideViewDelegate {
private int currentViewNum = 0;
private SlideView[] views = new SlideView[3];
2013-10-25 17:19:00 +02:00
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
2013-12-20 20:25:49 +01:00
if (currentViewNum == 0) {
if (resultCode == RESULT_OK) {
((LoginActivityPhoneView)views[0]).selectCountry(data.getStringExtra("country"));
}
2013-10-25 17:19:00 +02:00
}
2013-12-20 20:25:49 +01:00
// if (views[currentViewNum] instanceof LoginActivityRegisterView) {
// ((LoginActivityRegisterView)views[currentViewNum]).avatarUpdater.onActivityResult(requestCode, resultCode, data);
// }
2013-10-25 17:19:00 +02:00
}
@Override
protected void onResume() {
super.onResume();
2013-12-20 20:25:49 +01:00
ApplicationLoader.resetLastPauseTime();
2013-10-25 17:19:00 +02:00
}
@Override
protected void onPause() {
super.onPause();
ApplicationLoader.lastPauseTime = System.currentTimeMillis();
}
public void ShowAlertDialog(final Activity activity, final String message) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
if (!isFinishing()) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
2013-10-25 17:19:00 +02:00
builder.setMessage(message);
builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
2013-10-25 17:19:00 +02:00
builder.show().setCanceledOnTouchOutside(true);
}
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_layout);
2013-11-04 13:31:01 +01:00
ApplicationLoader.applicationContext = this.getApplicationContext();
2013-10-25 17:19:00 +02:00
2013-12-20 20:25:49 +01:00
getSupportActionBar().setLogo(R.drawable.ab_icon_fixed2);
getSupportActionBar().show();
2013-12-26 17:46:13 +01:00
2013-12-20 20:25:49 +01:00
ImageView view = (ImageView)findViewById(16908332);
if (view == null) {
view = (ImageView)findViewById(R.id.home);
}
if (view != null) {
2013-12-26 17:46:13 +01:00
view.setPadding(Utilities.dp(6), 0, Utilities.dp(6), 0);
2013-12-20 20:25:49 +01:00
}
views[0] = (SlideView)findViewById(R.id.login_page1);
views[1] = (SlideView)findViewById(R.id.login_page2);
views[2] = (SlideView)findViewById(R.id.login_page3);
2013-10-25 17:19:00 +02:00
2013-12-20 20:25:49 +01:00
getSupportActionBar().setTitle(views[0].getHeaderName());
2013-10-25 17:19:00 +02:00
2013-12-20 20:25:49 +01:00
if (savedInstanceState != null) {
currentViewNum = savedInstanceState.getInt("currentViewNum", 0);
}
for (int a = 0; a < views.length; a++) {
SlideView v = views[a];
if (v != null) {
v.delegate = this;
v.setVisibility(currentViewNum == a ? View.VISIBLE : View.GONE);
2013-10-25 17:19:00 +02:00
}
2013-12-20 20:25:49 +01:00
}
2013-10-25 17:19:00 +02:00
2013-12-20 20:25:49 +01:00
getWindow().setBackgroundDrawableResource(R.drawable.transparent);
getWindow().setFormat(PixelFormat.RGB_565);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SupportMenuItem doneItem = (SupportMenuItem)menu.add(Menu.NONE, 0, Menu.NONE, null);
doneItem.setShowAsAction(SupportMenuItem.SHOW_AS_ACTION_ALWAYS);
doneItem.setActionView(R.layout.group_create_done_layout);
2013-12-20 20:25:49 +01:00
TextView doneTextView = (TextView)doneItem.getActionView().findViewById(R.id.done_button);
doneTextView.setText(LocaleController.getString("Done", R.string.Done));
2013-12-20 20:25:49 +01:00
doneTextView.setOnClickListener(new View.OnClickListener() {
2013-10-25 17:19:00 +02:00
@Override
public void onClick(View view) {
2013-12-20 20:25:49 +01:00
onNextAction();
2013-10-25 17:19:00 +02:00
}
});
2013-12-20 20:25:49 +01:00
return super.onCreateOptionsMenu(menu);
2013-10-25 17:19:00 +02:00
}
@Override
public void onBackPressed() {
2013-12-20 20:25:49 +01:00
if (currentViewNum == 0) {
for (SlideView v : views) {
if (v != null) {
v.onDestroyActivity();
}
2013-10-25 17:19:00 +02:00
}
2013-12-20 20:25:49 +01:00
super.onBackPressed();
} else if (currentViewNum != 1 && currentViewNum != 2) {
setPage(0, true, null, true);
2013-10-25 17:19:00 +02:00
}
}
@Override
2013-12-20 20:25:49 +01:00
public void needShowAlert(String text) {
2014-03-10 10:27:49 +01:00
if (text == null) {
return;
}
2013-12-20 20:25:49 +01:00
ShowAlertDialog(LoginActivity.this, text);
2013-10-25 17:19:00 +02:00
}
2013-12-20 20:25:49 +01:00
@Override
public void needShowProgress() {
Utilities.ShowProgressDialog(this, getResources().getString(R.string.Loading));
2013-10-25 17:19:00 +02:00
}
@Override
2013-12-20 20:25:49 +01:00
public void needHideProgress() {
Utilities.HideProgressDialog(this);
2013-10-25 17:19:00 +02:00
}
2013-12-20 20:25:49 +01:00
public void setPage(int page, boolean animated, Bundle params, boolean back) {
2013-12-23 00:47:35 +01:00
if(android.os.Build.VERSION.SDK_INT > 13) {
2013-12-20 20:25:49 +01:00
Point displaySize = new Point();
Display display = getWindowManager().getDefaultDisplay();
2013-12-23 00:47:35 +01:00
display.getSize(displaySize);
2013-12-20 20:25:49 +01:00
final SlideView outView = views[currentViewNum];
final SlideView newView = views[page];
currentViewNum = page;
newView.setParams(params);
getSupportActionBar().setTitle(newView.getHeaderName());
newView.onShow();
newView.setX(back ? -displaySize.x : displaySize.x);
outView.animate().setInterpolator(new AccelerateDecelerateInterpolator()).setListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
outView.setVisibility(View.GONE);
outView.setX(0);
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
}).setDuration(300).translationX(back ? displaySize.x : -displaySize.x).start();
newView.animate().setInterpolator(new AccelerateDecelerateInterpolator()).setListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
newView.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animator animator) {
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
}).setDuration(300).translationX(0).start();
} else {
views[currentViewNum].setVisibility(View.GONE);
currentViewNum = page;
views[page].setParams(params);
views[page].setVisibility(View.VISIBLE);
getSupportActionBar().setTitle(views[page].getHeaderName());
views[page].onShow();
}
2013-10-25 17:19:00 +02:00
}
@Override
2013-12-20 20:25:49 +01:00
public void onNextAction() {
views[currentViewNum].onNextPressed();
2013-10-25 17:19:00 +02:00
}
@Override
2013-12-20 20:25:49 +01:00
protected void onDestroy() {
super.onDestroy();
for (SlideView v : views) {
if (v != null) {
v.onDestroyActivity();
}
}
2013-10-25 17:19:00 +02:00
Utilities.HideProgressDialog(this);
}
@Override
2013-12-20 20:25:49 +01:00
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("currentViewNum", currentViewNum);
2013-10-25 17:19:00 +02:00
}
@Override
public void needFinishActivity() {
Intent intent2 = new Intent(this, LaunchActivity.class);
2013-10-25 17:19:00 +02:00
startActivity(intent2);
finish();
}
}