diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 28636d7..083b9a0 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -57,15 +57,6 @@
android:value="com.monitorabrasil.participacidadao.view.MainActivity" />
-
-
-
@@ -86,7 +77,7 @@
android:value="com.monitorabrasil.participacidadao.view.MainActivity" />
4;
- }
-
-
-
- private void updateUI() {
- showProgress(false, mLoginFormView);
- verificaLogin();
- }
-
-
- private void addEmailsToAutoComplete(List emailAddressCollection) {
- //Create adapter to tell the AutoCompleteTextView what to show in its dropdown list.
- ArrayAdapter adapter =
- new ArrayAdapter(Login2Activity.this,
- android.R.layout.simple_dropdown_item_1line, emailAddressCollection);
-
- mEmailView.setAdapter(adapter);
- }
-
-
-}
-
diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/view/LoginActivity.java b/app/src/main/java/com/monitorabrasil/participacidadao/view/LoginActivity.java
new file mode 100644
index 0000000..7ccc9f5
--- /dev/null
+++ b/app/src/main/java/com/monitorabrasil/participacidadao/view/LoginActivity.java
@@ -0,0 +1,504 @@
+package com.monitorabrasil.participacidadao.view;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.BitmapDrawable;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.design.widget.Snackbar;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.text.TextUtils;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.inputmethod.EditorInfo;
+import android.widget.AutoCompleteTextView;
+import android.widget.Button;
+import android.widget.CompoundButton;
+import android.widget.EditText;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.Switch;
+import android.widget.TextView;
+
+import com.monitorabrasil.participacidadao.R;
+import com.monitorabrasil.participacidadao.actions.ActionsCreator;
+import com.monitorabrasil.participacidadao.actions.UserActions;
+import com.monitorabrasil.participacidadao.dispatcher.Dispatcher;
+import com.monitorabrasil.participacidadao.stores.UserStore;
+import com.parse.ParseException;
+import com.parse.ParseFile;
+import com.parse.ParseTwitterUtils;
+import com.parse.ParseUser;
+import com.parse.SaveCallback;
+import com.squareup.otto.Bus;
+import com.squareup.otto.Subscribe;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+
+
+
+/**
+ * Tela de login
+ */
+public class LoginActivity extends AppCompatActivity {
+
+ private LinearLayout llTwitter;
+
+ private AutoCompleteTextView mEmailView;
+ private EditText mPasswordView;
+ private EditText mNome;
+ private View mProgressView;
+ private Button btnFazerCadastro;
+ private Button btnLogar;
+ private Button btnLogout;
+ private Button btnSalvar;
+ private Switch mSwitchTwitter;
+ private ImageView foto;
+ private ParseUser currentUser;
+ private ImageButton btnFoto;
+
+ private Dispatcher dispatcher;
+ private ActionsCreator actionsCreator;
+ private UserStore userStore;
+
+ private LinearLayout form;
+
+
+ private final int PICK_IMAGE=2;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_login);
+ initDependencies();
+ setupView();
+ }
+
+ private void initDependencies() {
+ dispatcher = Dispatcher.get(new Bus());
+ actionsCreator = ActionsCreator.get(dispatcher);
+ userStore = UserStore.get(dispatcher);
+ }
+
+ private void setupView() {
+ setupActionBar();
+
+ llTwitter = (LinearLayout) findViewById(R.id.llTwitter);
+ form = (LinearLayout) findViewById(R.id.email_login_form);
+
+ mSwitchTwitter = (Switch) findViewById(R.id.swTwitter);
+
+ //progressView
+ mProgressView = findViewById(R.id.login_progress);
+
+ //botoes
+ btnSalvar = (Button) findViewById(R.id.btnSalvar);
+ btnFoto = (ImageButton) findViewById(R.id.btnFoto);
+ btnLogar = (Button) findViewById(R.id.email_sign_in_button);
+ btnLogout = (Button) findViewById(R.id.btnLogout);
+
+ //usuario atual
+ currentUser = ParseUser.getCurrentUser();
+
+ //verifica se esta logado
+ if (currentUser != null) {
+ montaFormLogout();
+ } else {
+ montaFormLogin();
+ }
+
+ //evento: logar
+ btnLogar.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ showProgress(true);
+ logar();
+ }
+ });
+
+ //evento: logout
+ btnLogout.setOnClickListener(new OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ showProgress(true);
+ logout();
+
+
+ }
+ });
+
+ //Botao para fazer o cadastro
+ btnFazerCadastro = (Button) findViewById(R.id.fazer_cadastro);
+ btnFazerCadastro.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (btnFazerCadastro.getText().toString().equals("Fazer Cadastro")) {
+ mNome.setVisibility(View.VISIBLE);
+ btnLogar.setVisibility(View.GONE);
+ llTwitter.setVisibility(View.GONE);
+ btnFazerCadastro.setText("Cadastrar");
+ View view = mNome;
+ view.requestFocus();
+ } else {
+ if (validaCampos()) {
+ realizarCadastro();
+ }
+
+ }
+
+ }
+ });
+
+ //evento: Busca foto para colocar no perfil
+ btnFoto.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent getIntent = new Intent(Intent.ACTION_GET_CONTENT);
+ getIntent.setType("image/*");
+
+ Intent pickIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
+ pickIntent.setType("image/*");
+
+ Intent chooserIntent = Intent.createChooser(getIntent, "Selecione uma foto");
+ chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{pickIntent});
+
+ startActivityForResult(chooserIntent, PICK_IMAGE);
+ }
+ });
+
+
+
+ mSwitchTwitter.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
+ final ParseUser user = ParseUser.getCurrentUser();
+ if (b) {
+ if (!ParseTwitterUtils.isLinked(user)) {
+ ParseTwitterUtils.link(user, getApplicationContext(), new SaveCallback() {
+ @Override
+ public void done(ParseException ex) {
+ if (ParseTwitterUtils.isLinked(user)) {
+ Snackbar.make(form, "Woohoo!! Conta adicionada!", Snackbar.LENGTH_LONG)
+ .setAction("Action", null).show();
+ }
+ }
+ });
+ }
+ } else {
+ ParseTwitterUtils.unlinkInBackground(user, new SaveCallback() {
+ @Override
+ public void done(ParseException ex) {
+ if (ex == null) {
+ if (ParseTwitterUtils.isLinked(user)) {
+ Snackbar.make(form, "Conta do Twitter removida", Snackbar.LENGTH_LONG)
+ .setAction("Action", null).show();
+ }
+ }
+ }
+ });
+ }
+ }
+ });
+
+
+ //EditTextViews
+ mNome = (EditText) findViewById(R.id.txtNome);
+ mNome.setVisibility(View.GONE);
+
+ mEmailView = (AutoCompleteTextView) findViewById(R.id.email);
+
+ mPasswordView = (EditText) findViewById(R.id.password);
+ mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+ @Override
+ public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
+ if (id == R.id.login || id == EditorInfo.IME_NULL) {
+ attemptLogin();
+ return true;
+ }
+ return false;
+ }
+ });
+ }
+
+ /**
+ * Verifica se esta logado
+ */
+ private void verificaLogin() {
+ if(ParseUser.getCurrentUser()!=null){
+ montaFormLogout();
+ }else{
+ montaFormLogin();
+ }
+ }
+
+
+ /**
+ * Realiza o logout
+ */
+ private void logout() {
+
+ actionsCreator.logout();
+ }
+
+ /**
+ * Monta o form de login
+ */
+ private void montaFormLogin() {
+
+ mEmailView.setVisibility(View.VISIBLE);
+ mPasswordView.setVisibility(View.VISIBLE);
+ btnLogar.setVisibility(View.VISIBLE);
+ btnFazerCadastro.setVisibility(View.VISIBLE);
+
+ mNome.setVisibility(View.GONE);
+ llTwitter.setVisibility(View.GONE);
+ btnFoto.setVisibility(View.INVISIBLE);
+ btnSalvar.setVisibility(View.GONE);
+ btnLogout.setVisibility(View.GONE);
+ }
+
+ /**
+ * Monta o form para logout
+ */
+ private void montaFormLogout() {
+
+ mPasswordView.setVisibility(View.GONE);
+ btnLogar.setVisibility(View.GONE);
+ btnFazerCadastro.setVisibility(View.GONE);
+
+ mEmailView.setVisibility(View.VISIBLE);
+ mNome.setVisibility(View.VISIBLE);
+ llTwitter.setVisibility(View.VISIBLE);
+ btnFoto.setVisibility(View.VISIBLE);
+ btnSalvar.setVisibility(View.VISIBLE);
+ btnLogout.setVisibility(View.VISIBLE);
+ showProgress(false);
+
+
+ }
+
+ /**
+ * Realiza o login
+ */
+ private void logar() {
+ if(validaCampos()){
+ actionsCreator.logar(getInputUsuario(), getInputSenha());
+ }
+ }
+
+ private String getInputUsuario() {
+ return mEmailView.getText().toString();
+ }
+
+ private String getInputSenha() {
+ return mPasswordView.getText().toString();
+ }
+
+ /**
+ * Valida os campos do formulario (login e cadastro)
+ * @return
+ */
+ private boolean validaCampos() {
+ // Reset errors.
+ mEmailView.setError(null);
+ mPasswordView.setError(null);
+ mNome.setError(null);
+
+ boolean valido = true;
+ View focusView = null;
+ String email = mEmailView.getText().toString();
+ String password = mPasswordView.getText().toString();
+ String nome =mNome.getText().toString();
+
+ if (mNome.getVisibility() == View.VISIBLE){
+ if (TextUtils.isEmpty(nome)) {
+ mNome.setError(getString(R.string.error_field_required));
+ focusView = mNome;
+ valido = false;
+ }
+ }
+
+
+ // Checar senha foi preenchida
+ if (!TextUtils.isEmpty(password) && !isPasswordValid(password)) {
+ mPasswordView.setError(getString(R.string.error_invalid_password));
+ focusView = mPasswordView;
+ valido = false;
+ }
+
+ // checar se email eh valido
+ if (TextUtils.isEmpty(email)) {
+ mEmailView.setError(getString(R.string.error_field_required));
+ focusView = mEmailView;
+ valido = false;
+ } else if (!isEmailValid(email)) {
+ mEmailView.setError(getString(R.string.error_invalid_email));
+ focusView = mEmailView;
+ valido = false;
+ }
+ if(!valido){
+ focusView.requestFocus();
+ }
+
+ return valido;
+ }
+
+
+ /**
+ * Atualiza a UI depois de uma action
+ * @param event
+ */
+ @Subscribe
+ public void onTodoStoreChange(UserStore.UserStoreChangeEvent event) {
+ switch (event.getEvento()) {
+ case UserActions.USER_CADASTRO:
+ if(event.getStatus().equals("erro")){
+ showProgress(false);
+ Snackbar.make(form, "Houve um erro ao fazer seu cadastro ", Snackbar.LENGTH_LONG)
+ .setAction("Action", null).show();
+ }
+ break;
+ case UserActions.USER_LOGAR:
+ if(event.getStatus().equals("erro")){
+ showProgress(false);
+ Snackbar.make(form, "Houve um erro ao fazer o login", Snackbar.LENGTH_LONG)
+ .setAction("Action", null).show();
+ }
+ break;
+ }
+ updateUI();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ dispatcher.register(this);
+ dispatcher.register(userStore);
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ dispatcher.unregister(this);
+ dispatcher.unregister(userStore);
+ }
+
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if (requestCode == PICK_IMAGE && resultCode == Activity.RESULT_OK) {
+ if (data == null) {
+ //Display an error
+ return;
+ }
+ try {
+ Uri selectedImage = data.getData();
+ InputStream imageStream = getContentResolver().openInputStream(selectedImage);
+ Bitmap mImage = BitmapFactory.decodeStream(imageStream);
+ btnFoto.setImageBitmap(Bitmap.createScaledBitmap(mImage, 50, 50, false));
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ private void showProgress(boolean b) {
+ if(b){
+ mProgressView.setVisibility(View.VISIBLE);
+
+ }else{
+ mProgressView.setVisibility(View.GONE);
+ }
+ }
+
+
+
+
+ private void realizarCadastro() {
+ String email = mEmailView.getText().toString();
+ String password = mPasswordView.getText().toString();
+ String nome =mNome.getText().toString();
+ //foto
+ Bitmap bitmap = ((BitmapDrawable)foto.getDrawable()).getBitmap();
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
+ byte[] byteArray = stream.toByteArray();
+
+ //ParseFile
+ ParseFile mParseFile = new ParseFile("foto.png",byteArray);
+
+ showProgress(true);
+ actionsCreator.cadastrar(nome, password, email,mParseFile);
+ }
+
+
+
+ /**
+ * Set up the {@link android.app.ActionBar}, if the API is available.
+ */
+// @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+ private void setupActionBar() {
+ Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+
+ // toolbar.setNavigationIcon(R.drawable.ic_good);
+ toolbar.setTitle("Login");
+
+ toolbar.setTitleTextColor(getResources().getColor(R.color.md_white_1000));
+ toolbar.setSubtitleTextColor(getResources().getColor(R.color.md_white_1000));
+ setSupportActionBar(toolbar);
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ }
+
+ /**
+ * Realiza o login
+ */
+ public void attemptLogin() {
+ showProgress(true);
+ logar();
+ }
+
+
+ /**
+ * Verifica se o email eh valido
+ * @param email
+ * @return
+ */
+ private boolean isEmailValid(String email) {
+ String ePattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$";
+ java.util.regex.Pattern p = java.util.regex.Pattern.compile(ePattern);
+ java.util.regex.Matcher m = p.matcher(email);
+ return m.matches();
+ }
+
+ /**
+ * verifica se a senha eh valida
+ * @param password
+ * @return
+ */
+ private boolean isPasswordValid(String password) {
+ return password.length() > 4;
+ }
+
+
+ /**
+ * Atualiza a UI
+ */
+ private void updateUI() {
+ showProgress(false);
+ verificaLogin();
+ }
+
+
+
+
+}
+
diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/view/MainActivity.java b/app/src/main/java/com/monitorabrasil/participacidadao/view/MainActivity.java
index 411b3f1..9018d79 100644
--- a/app/src/main/java/com/monitorabrasil/participacidadao/view/MainActivity.java
+++ b/app/src/main/java/com/monitorabrasil/participacidadao/view/MainActivity.java
@@ -75,7 +75,7 @@ public class MainActivity extends AppCompatActivity implements HomeFragment.OnFr
.withOnAccountHeaderListener(new AccountHeader.OnAccountHeaderListener() {
@Override
public boolean onProfileChanged(View view, IProfile profile, boolean currentProfile) {
- startActivity(new Intent(getApplicationContext(), Login2Activity.class));
+ startActivity(new Intent(getApplicationContext(), LoginActivity.class));
return false;
}
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 7e65ac8..83afdd7 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -1,7 +1,6 @@
-
-
-
-
+
+
+
+
+ android:id="@+id/btnFoto"
+ android:layout_marginTop="10dp" />
+
+
@@ -48,85 +61,97 @@
android:id="@+id/txtNome" />
+
-
-
+
+
+
+
-
+
-
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_login2.xml b/app/src/main/res/layout/activity_login2.xml
index 3e1e2f8..315f5b3 100644
--- a/app/src/main/res/layout/activity_login2.xml
+++ b/app/src/main/res/layout/activity_login2.xml
@@ -6,7 +6,7 @@
android:layout_height="match_parent"
android:background="@color/grey"
android:orientation="vertical"
- tools:context="com.monitorabrasil.participacidadao.view.Login2Activity"
+ tools:context="com.monitorabrasil.participacidadao.view.LoginActivity"
android:paddingTop="8dp">
+ tools:context="com.monitorabrasil.participacidadao.view.LoginActivity">
--
libgit2 0.21.2