Android Open Source - android-flash-cards Setup Fragment






From Project

Back to project page android-flash-cards.

License

The source code is released under:

Apache License

If you think the Android project android-flash-cards listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2011, 2012 Thomas Amsler//from   ww  w.j  ava  2 s  . c om
 *
 * 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 org.thomasamsler.android.flashcards.fragment;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import org.thomasamsler.android.flashcards.AppConstants;
import org.thomasamsler.android.flashcards.MainApplication;
import org.thomasamsler.android.flashcards.R;
import org.thomasamsler.android.flashcards.activity.MainActivity;
import org.thomasamsler.android.flashcards.external.FlashCardExchangeData;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ProgressBar;
import android.widget.Spinner;
import android.widget.Toast;

public class SetupFragment extends Fragment implements AppConstants, FlashCardExchangeData {

  private ProgressBar mProgressBar;
  
  private SharedPreferences mPreferences;
  
  private EditText mEditTextUserName;
  private String mPreferenceUserName;
  
  private CheckBox mCheckBoxShowSample;
  private boolean mPreferenceShowSample;
  
  private Spinner mSpinner;
  private ArrayAdapter<CharSequence> mSpinnerAdapter;
  private int mPreferenceFontSize;
  
  private boolean mIsSpinnerReady;
  private int mSpinnerPosition;
  
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
    
    return inflater.inflate(R.layout.setup_fragment, container, false);
  }

  @Override
  public void onActivityCreated(Bundle savedInstanceState) {
  
    super.onCreate(savedInstanceState);
    
    mIsSpinnerReady = false;
    
    mPreferences = getActivity().getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
    mPreferenceUserName = mPreferences.getString(PREFERENCE_FCEX_USER_NAME, "");
    
    mProgressBar = (ProgressBar)getActivity().findViewById(R.id.progressBar);
    
    mEditTextUserName = (EditText)getActivity().findViewById(R.id.editTextSetupUserName);
    mEditTextUserName.setText(mPreferenceUserName);
    
    ImageButton imageButtonSave = (ImageButton)getActivity().findViewById(R.id.imageButtonSetupSave);
    imageButtonSave.setOnClickListener(new OnClickListener() {
      
      public void onClick(View v) {
        
        mProgressBar.setVisibility(ProgressBar.VISIBLE);
        
        String userName = mEditTextUserName.getText().toString();
        
        if(null != userName && !"".equals(userName) && !mPreferenceUserName.equals(userName)) {
          
          if(hasConnectivity()) {
          
            new GetExternalCardSetsTask().execute(userName);
          }
          else {
            
            mProgressBar.setVisibility(ProgressBar.GONE);
            Toast.makeText(getActivity().getApplicationContext(), R.string.util_connectivity_error, Toast.LENGTH_SHORT).show();
          }
        }
        else {
          
          mProgressBar.setVisibility(ProgressBar.GONE);
        }
      }
    });
    
    ImageButton imageButtonCancel = (ImageButton)getActivity().findViewById(R.id.imageButtonSetupCancel);
    imageButtonCancel.setOnClickListener(new OnClickListener() {
      
      public void onClick(View v) {
        
        ((MainApplication)getActivity().getApplication()).doAction(ACTION_SHOW_CARD_SETS, Boolean.TRUE);
      }
    });
    
    mCheckBoxShowSample = (CheckBox)getActivity().findViewById(R.id.checkBoxSetupShowSample);
    mCheckBoxShowSample.setOnCheckedChangeListener(new OnCheckedChangeListener() {
      
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        
        SharedPreferences.Editor editor = mPreferences.edit();
        editor.putBoolean(PREFERENCE_SHOW_SAMPLE, isChecked);
        editor.commit();
      }
    });
    
    mPreferenceShowSample = mPreferences.getBoolean(PREFERENCE_SHOW_SAMPLE, PREFERENCE_SHOW_SAMPLE_DEFAULT);
    mCheckBoxShowSample.setChecked(mPreferenceShowSample);
    
    
    mPreferenceFontSize = mPreferences.getInt(PREFERENCE_FONT_SIZE, PREFERENCE_NORMAL_FONT_SIZE);
    mSpinner = (Spinner) getActivity().findViewById(R.id.spinnerFontSize);
    mSpinnerAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.font_size_array, android.R.layout.simple_spinner_item);
    mSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mSpinner.setAdapter(mSpinnerAdapter);
    mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

      public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        
        SharedPreferences.Editor editor = mPreferences.edit();
        editor.putInt(PREFERENCE_FONT_SIZE, pos);
        editor.commit();
        
        // We don't want to show the message when the spinner is initialize via setSelection() below.
        if(mIsSpinnerReady && mSpinnerPosition != pos) {
          
          Toast.makeText(getActivity().getApplicationContext(), R.string.setup_changed_font_size, Toast.LENGTH_SHORT).show();
        }
        else {
          
          mIsSpinnerReady = true;
        }
        
        ((MainApplication)getActivity().getApplication()).doAction(ACTION_FONT_SIZE_CHANGE, Integer.valueOf(pos));
        
        mSpinnerPosition = pos;
      }

      public void onNothingSelected(AdapterView<?> arg0) { /* Nothing to do */}
    });
    
    switch(mPreferenceFontSize) {
    
    case PREFERENCE_SMALL_FONT_SIZE:
      mSpinner.setSelection(PREFERENCE_SMALL_FONT_SIZE);
      break;
    case PREFERENCE_NORMAL_FONT_SIZE:
      mSpinner.setSelection(PREFERENCE_NORMAL_FONT_SIZE);
      break;
    case PREFERENCE_LARGE_FONT_SIZE:
      mSpinner.setSelection(PREFERENCE_LARGE_FONT_SIZE);
      break;
    }
  }
  
  @Override
  public void onResume() {
    super.onResume();
    
    ((MainApplication)getActivity().getApplication()).doAction(ACTION_SET_HELP_CONTEXT, HELP_CONTEXT_SETUP);
  }
  
  /*
     * Helper method to check if there is network connectivity
     */
  private boolean hasConnectivity() {
    
    return ((MainActivity)getActivity()).hasConnectivity();
  }
  
  private class GetExternalCardSetsTask extends AsyncTask<String, Void, JSONObject> {

    @Override
    protected JSONObject doInBackground(String... params) {
      
      String userName = params[0].trim();
      
      StringBuilder uriBuilder = new StringBuilder();
      uriBuilder.append(API_GET_USER).append(userName).append(API_KEY);
      
      HttpClient httpclient = new DefaultHttpClient();
      HttpGet httpGet = null;
      
      try {
      
        httpGet = new HttpGet(uriBuilder.toString());
      }
      catch(IllegalArgumentException e) {
      
        Log.e(LOG_TAG, "IllegalArgumentException", e);
      }
      
      HttpResponse response;

      JSONObject jsonObject = null;
      
      if(null == httpGet) {
        
        return jsonObject;
      }
      
      try {
        
        response = httpclient.execute(httpGet);
        HttpEntity entity = response.getEntity();

        if (entity != null) {

          InputStream inputStream = entity.getContent();
          BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
          StringBuilder content = new StringBuilder();

          String line = null;

          try {

            while((line = reader.readLine()) != null) {

              content.append(line);
            }
          }
          catch(IOException e) {

            Log.e(LOG_TAG, "IOException", e);
          }
          finally {

            try {

              if(null != reader) {
              
                reader.close();
              }

            }
            catch(IOException e) {

              Log.e(LOG_TAG, "IOException", e);
            }
          }

          jsonObject = new JSONObject(content.toString());
          jsonObject.put(FIELD_FC_ARG, userName);
        }
      }
      catch(ClientProtocolException e) {

        Log.e(LOG_TAG, "ClientProtocolException", e);
      }
      catch(IOException e) {

        Log.e(LOG_TAG, "IOException", e);
      }
      catch(Exception e) {

        Log.e(LOG_TAG, "General Exception", e);
      }

      return jsonObject;
    }

    @Override
    protected void onPostExecute(JSONObject jsonObject) {

      try {
        
        mProgressBar.setVisibility(ProgressBar.GONE);

        if(null == jsonObject) {

          Toast.makeText(getActivity().getApplicationContext(), R.string.view_cards_fetch_remote_error, Toast.LENGTH_LONG).show();
          return;
        }

        try {

          String responseType = jsonObject.getString(FIELD_RESPONSE_TYPE);

          if(null != responseType && RESPONSE_OK.equals(responseType)) {

            Toast.makeText(getActivity().getApplicationContext(), R.string.setup_save_user_name_success, Toast.LENGTH_SHORT).show();
            SharedPreferences sharedPreferences = getActivity().getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sharedPreferences.edit();
            editor.putString(PREFERENCE_FCEX_USER_NAME, jsonObject.getString(FIELD_FC_ARG));
            editor.commit();

            ((MainApplication)getActivity().getApplication()).doAction(ACTION_SHOW_CARD_SETS, Boolean.TRUE);
          }
          else if(null != responseType && RESPONSE_ERROR.equals(responseType)) {

            Toast.makeText(getActivity().getApplicationContext(), R.string.setup_save_user_name_error, Toast.LENGTH_LONG).show();
          }
          else {

            Toast.makeText(getActivity().getApplicationContext(), R.string.setup_save_user_name_failure, Toast.LENGTH_LONG).show();
          }
        }
        catch(JSONException e) {

          Log.e(LOG_TAG, "JSONException", e);
        }
      }
      catch(Exception e) {
        
        Log.e(LOG_TAG, "General Exception", e);
      }
    }
  }
}




Java Source Code List

org.thomasamsler.android.flashcards.ActionBusListener.java
org.thomasamsler.android.flashcards.AppConstants.java
org.thomasamsler.android.flashcards.MainApplication.java
org.thomasamsler.android.flashcards.activity.MainActivity.java
org.thomasamsler.android.flashcards.conversion.FileToDbConversion.java
org.thomasamsler.android.flashcards.db.DataSource.java
org.thomasamsler.android.flashcards.db.DatabaseHelper.java
org.thomasamsler.android.flashcards.dialog.HelpDialog.java
org.thomasamsler.android.flashcards.external.FlashCardExchangeData.java
org.thomasamsler.android.flashcards.fragment.AboutFragment.java
org.thomasamsler.android.flashcards.fragment.ActionbarFragment.java
org.thomasamsler.android.flashcards.fragment.AddCardFragment.java
org.thomasamsler.android.flashcards.fragment.CardFragment.java
org.thomasamsler.android.flashcards.fragment.CardSetsFragment.java
org.thomasamsler.android.flashcards.fragment.SetupFragment.java
org.thomasamsler.android.flashcards.model.CardSet.java
org.thomasamsler.android.flashcards.model.Card.java
org.thomasamsler.android.flashcards.pager.CardsPager.java
org.thomasamsler.android.flashcards.sample.WordSets.java