package com.example.widgetmania;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class HelloWidgetManiaActivity extends Activity {
 
	public static final String PREFS_NAME = "MyPrefsFile";

	TextView edit_name;
	TextView character_name;
	Spinner city_spinner;
	Button start_button;
	Button quit_button;
	boolean spinner_selected = false;
	String city_name_string;
	String character_name_string;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
    	
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        // name (edit & display)
        
        edit_name = (TextView) findViewById(R.id.editText1);
        edit_name.setOnEditorActionListener(new MyOnEditorActionListener());
        character_name = (TextView) findViewById(R.id.textView4);

        // check prefs file for stored name, if any
      	SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
      	character_name_string = settings.getString("characterName", " ");
      	character_name.setText(character_name_string);
      	edit_name.setText(character_name_string);
        
        // city chooser (from hello spinner)
        
        city_spinner = (Spinner) findViewById(R.id.spinner1);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.city_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        city_spinner.setAdapter(adapter);
        city_spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
        
        // start button
        
        start_button = (Button) findViewById(R.id.button1);
        start_button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            	
            	// store chosen name, city to preferences
            	
            	SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
              SharedPreferences.Editor editor = settings.edit();
              editor.putString("characterName", character_name_string);
              editor.putString("cityName", city_name_string);
              editor.commit();

            	// last parameter below is "requestCode"
              startActivityForResult(new Intent(v.getContext(), WidgetManiaGame.class), 0);  
            }
        });
  
        // quit button
        
        quit_button = (Button) findViewById(R.id.button2);
        quit_button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                finish();
            }
        });
    }
    
    // this gets called when the activity we started returns
    // requestCode is the id # we gave to the call, resultCode is 
    // determined "on the other side"
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    	if (resultCode == RESULT_CANCELED)
    		Toast.makeText(getApplicationContext(), "Back from CANCELED sub-activity", Toast.LENGTH_SHORT).show();
    	else
    		Toast.makeText(getApplicationContext(), "Back from sub-activity with value " + data.getStringExtra("SOMETHING"), Toast.LENGTH_LONG).show();
    }
    
    // handle name entry
    
    public class MyOnEditorActionListener implements TextView.OnEditorActionListener {
    	
    	public boolean onEditorAction (TextView v, int actionId, KeyEvent event) {
    		if (actionId == EditorInfo.IME_NULL) {
    			character_name_string = v.getText().toString();
    			Toast.makeText(getApplicationContext(), "You chose " + character_name_string, Toast.LENGTH_SHORT).show();
    			character_name.setText(v.getText());
    		} 
    		else
    			Toast.makeText(getApplicationContext(), "something else entirely " + v.getText(), Toast.LENGTH_SHORT).show();
  			
    		return true;
    	}
    }
        
    // handle city selection from spinner
    
    public class MyOnItemSelectedListener implements OnItemSelectedListener {

      public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
      	city_name_string = parent.getItemAtPosition(pos).toString();
      	if (spinner_selected) // need to do this because an item is initially selected automatically
      		Toast.makeText(parent.getContext(), "You will battle in " + city_name_string, Toast.LENGTH_SHORT).show();
      	spinner_selected = true;
      }

      public void onNothingSelected(AdapterView parent) {
        // Do nothing.
      }
  }
}