/** AirCasting - Share your Air! Copyright (C) 2011-2012 HabitatMap, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. You can contact the authors by email at <info@habitatmap.org> */ package pl.llp.aircasting.activity; import pl.llp.aircasting.Intents; import pl.llp.aircasting.R; import pl.llp.aircasting.activity.task.SimpleProgressTask; import pl.llp.aircasting.api.UsersDriver; import pl.llp.aircasting.api.data.UserInfo; import pl.llp.aircasting.helper.SettingsHelper; import pl.llp.aircasting.util.http.HttpResult; import android.app.Application; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.google.inject.Inject; import roboguice.inject.InjectView; import static pl.llp.aircasting.util.http.Status.SUCCESS; public class SignInActivity extends DialogActivity implements View.OnClickListener { @InjectView(R.id.ok) Button ok; @InjectView(R.id.login) EditText loginField; @InjectView(R.id.password) EditText passwordField; @Inject UsersDriver userDriver; @Inject SettingsHelper settingsHelper; @Inject Application context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sign_in); ok.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.ok: if(validateInput()) { signIn(); } break; } } private boolean validateInput() { if (getLogin().isEmpty() || getPassword().isEmpty()) { if (getLogin().isEmpty()) { Toast.makeText(context, R.string.profile_name_or_email_field_blank, Toast.LENGTH_LONG).show(); } if (getPassword().isEmpty()) { Toast.makeText(context, R.string.password_blank, Toast.LENGTH_LONG).show(); } return(false); } return(true); } private void signIn() { //noinspection unchecked new SimpleProgressTask<Void, Void, HttpResult<UserInfo>>(this) { @Override protected HttpResult<UserInfo> doInBackground(Void... voids) { HttpResult<UserInfo> result = userDriver.connect(getLogin(), getPassword()); if (result.getStatus() == SUCCESS) { settingsHelper.setAuthToken(result.getContent().getAuthentication_token()); settingsHelper.setUserLogin(result.getContent().getUsername()); } return result; } @Override protected void onPostExecute(HttpResult<UserInfo> result) { super.onPostExecute(result); switch (result.getStatus()) { case ERROR: Toast.makeText(context, R.string.unknown_error, Toast.LENGTH_LONG).show(); break; case FAILURE: Toast.makeText(context, R.string.login_error, Toast.LENGTH_LONG).show(); break; default: syncInBackground(); break; } } private void syncInBackground() { Intents.triggerSync(context); finish(); } }.execute(); } private String getLogin() { return loginField.getText().toString(); } public String getPassword() { return passwordField.getText().toString(); } }