/*
* Copyright 2013 Liquid Labs Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ca.liquidlabs.android.speedtestvisualizer.fragments;
import android.app.DialogFragment;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.WindowManager.LayoutParams;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import ca.liquidlabs.android.speedtestvisualizer.R;
import ca.liquidlabs.android.speedtestvisualizer.util.Tracer;
/**
* Simple input dialog for taking custom input.
*
* @see http://android-developers.blogspot.ca/2012/05/using-dialogfragments.html
* for dialog fragment guidelines.
*/
public class InputDialogFragment extends DialogFragment implements OnEditorActionListener,
OnClickListener {
private static final String LOG_TAG = InputDialogFragment.class.getSimpleName();
public interface InputDialogListener {
void onFinishEditDialog(String inputText);
}
private EditText mEditText;
private Button mDoneButton;
public static InputDialogFragment newInstance() {
return new InputDialogFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dialog_input, container);
mEditText = (EditText) view.findViewById(R.id.txt_input_area);
mDoneButton = (Button) view.findViewById(R.id.btn_process_input_data);
getDialog().setTitle(getText(R.string.lbl_input_heading));
// Show soft keyboard automatically
mEditText.requestFocus();
getDialog().getWindow().setSoftInputMode(
LayoutParams.SOFT_INPUT_STATE_VISIBLE);
mEditText.setOnEditorActionListener(this);
mDoneButton.setOnClickListener(this);
return view;
}
/**
* Notifies parent activity using interface
*
* @param data Data that was input by user
*/
private void notifyInputData(String data) {
InputDialogListener activity = (InputDialogListener) getActivity();
activity.onFinishEditDialog(data);
}
//
// OnEditorActionListener implementation
//
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (EditorInfo.IME_ACTION_DONE == actionId) {
// Return input text to activity
this.notifyInputData(mEditText.getText().toString());
this.dismiss();
return true;
}
return false;
}
//
// View.OnClickListener implementation
//
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_process_input_data:
Tracer.debug(LOG_TAG, "PROCESS BUTTON USED");
this.notifyInputData(mEditText.getText().toString());
this.dismiss();
break;
}
}
}