/* * Copyright (c) 2015 Ushahidi. * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program in the file LICENSE-AGPL. If not, see * https://www.gnu.org/licenses/agpl-3.0.html */ package com.ushahidi.platform.mobile.app.presentation.view.ui.fragment; import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; import android.text.TextUtils; import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.TextView; import com.addhen.android.raiburari.presentation.ui.fragment.BaseFragment; import com.ushahidi.platform.mobile.app.R; import com.ushahidi.platform.mobile.app.presentation.di.components.deployment.AddDeploymentComponent; import com.ushahidi.platform.mobile.app.presentation.model.DeploymentModel; import com.ushahidi.platform.mobile.app.presentation.presenter.deployment.AddDeploymentPresenter; import com.ushahidi.platform.mobile.app.presentation.validator.UrlValidator; import com.ushahidi.platform.mobile.app.presentation.view.deployment.AddDeploymentView; import com.ushahidi.platform.mobile.app.presentation.view.ui.navigation.Launcher; import javax.inject.Inject; import butterknife.Bind; import butterknife.OnClick; import butterknife.OnEditorAction; /** * Fragment for adding a new deployment * * @author Ushahidi Team <team@ushahidi.com> */ public class AddDeploymentFragment extends BaseFragment implements AddDeploymentView { @Bind(R.id.add_deployment_url) EditText url; @Bind(R.id.add_deployment_progress_bar) ProgressBar mProgressBar; @Bind(R.id.add_deployment_add) Button mAddButton; @Bind(R.id.add_deployment_cancel) Button mCancelButton; @Inject AddDeploymentPresenter mAddDeploymentPresenter; @Inject Launcher mLauncher; /** * Add Deployment Fragment */ public AddDeploymentFragment() { super(R.layout.fragment_add_deployment, R.menu.add_deployment); } public static AddDeploymentFragment newInstance() { AddDeploymentFragment addDeploymentFragment = new AddDeploymentFragment(); return addDeploymentFragment; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initialize(); url.setOnTouchListener((view, event) -> setHttpProtocol()); } private boolean setHttpProtocol() { if (TextUtils.isEmpty(url.getText().toString())) { url.setText("http://"); } return false; } @Override public void onResume() { super.onResume(); mAddDeploymentPresenter.resume(); } @Override public void onPause() { super.onPause(); mAddDeploymentPresenter.pause(); } @Override public void onDestroy() { super.onDestroy(); mAddDeploymentPresenter.destroy(); } private void initialize() { getComponent(AddDeploymentComponent.class).inject(this); mAddDeploymentPresenter.setView(this); } @Override public Context getAppContext() { return getActivity().getApplication(); } @Override public void showError(String message) { showToast(message); } @OnClick(R.id.add_deployment_add) public void onClickValidate() { submit(); } @OnEditorAction(R.id.add_deployment_url) boolean onEditorAction(TextView textView, int actionId) { if (textView == url) { switch (actionId) { case EditorInfo.IME_ACTION_DONE: submit(); return true; default: return false; } } return false; } private void submit() { url.setError(null); if (!(new UrlValidator().isValid(url.getText().toString()))) { url.setError(getString(R.string.validation_message_invalid_url)); return; } mAddDeploymentPresenter.submitUrl(url.getText().toString()); } @OnClick(R.id.add_deployment_cancel) public void onClickCancel() { getActivity().finish(); } @OnClick(R.id.qr_code_scanner) public void onQrCodeScannerClick() { mLauncher.launchQrcodeReader(); } public void setDeployment(@NonNull DeploymentModel deploymentModel) { url.setText(deploymentModel.getUrl()); } @Override public void onDeploymentSuccessfullyAdded(Long row) { getActivity().finish(); } @Override public void showLoading() { mAddButton.setVisibility(View.INVISIBLE); mCancelButton.setVisibility(View.INVISIBLE); mProgressBar.setVisibility(View.VISIBLE); } @Override public void hideLoading() { mProgressBar.setVisibility(View.GONE); mAddButton.setVisibility(View.VISIBLE); mCancelButton.setVisibility(View.VISIBLE); } @Override public void showRetry() { // Do nothing } @Override public void hideRetry() { // Do nothing } }