Java tutorial
// Copyright 2013 Geoffrey Buttercrumbs // // 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 com.geoffreybuttercrumbs.arewethereyet; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.location.Location; import android.media.RingtoneManager; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.*; import com.slidingmenu.lib.app.SlidingFragmentActivity; public class DrawerFragment extends Fragment implements View.OnClickListener, CompoundButton.OnCheckedChangeListener { //--Variables for fragment--// private View V; //--Variables for sharedprefs--// private static final String POINT_LATITUDE_KEY = "POINT_LATITUDE_KEY"; private static final String POINT_LONGITUDE_KEY = "POINT_LONGITUDE_KEY"; private static final String POINT_RADIUS_KEY = "POINT_RADIUS_KEY"; private static final String POINT_ADDRESS_KEY = "POINT_ADDRESS_KEY"; private static final String POINT_SAVED_INDEX = "POINT_SAVED_INDEX"; private static final String SAVED_LATITUDE_KEY = "SAVED_LATITUDE_KEY"; private static final String SAVED_LONGITUDE_KEY = "SAVED_LONGITUDE_KEY"; private static final String SAVED_RADIUS_KEY = "SAVED_RADIUS_KEY"; private static final String SAVED_ADDRESS_KEY = "SAVED_ADDRESS_KEY"; private static final String RADIUS = "radius"; private static final String LOC = "loc"; //--Variables for setting ring tone--// private int Set_Ringtone = 0; private Uri uri; //--Variable for donations--// Object donater; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { V = inflater.inflate(R.layout.drawer, null); V.findViewById(R.id.row_title_ringtone).setOnClickListener(ringtoneListener); V.findViewById(R.id.row_title_donate).setOnClickListener(donateListener); // donater = new Donate(this.getActivity()); return V; } @Override public void onResume() { super.onResume(); saved(); recent(); } @Override public void onPause() { clear(); super.onPause(); } ////////R-E-C-E-N-T/////////// private void recent() { LayoutInflater inflater = getActivity().getLayoutInflater(); SharedPreferences prefs = getActivity().getSharedPreferences("AreWeThereYet", Context.MODE_WORLD_WRITEABLE); for (int i = 1; i <= 5; i++) { Location location = new Location("POINT_LOCATION"); String address = prefs.getString(POINT_ADDRESS_KEY + i, ""); location.setLatitude(0); location.setLongitude(0); if (prefs.contains(POINT_LATITUDE_KEY + i)) { location.setLatitude(prefs.getFloat(POINT_LATITUDE_KEY + i, 0)); } if (prefs.contains(POINT_LONGITUDE_KEY + i)) { location.setLongitude(prefs.getFloat(POINT_LONGITUDE_KEY + i, 0)); } LinearLayout RecentParent = (LinearLayout) V.findViewById(R.id.group_recent); View Recent = inflater.inflate(R.layout.saved_item, null); Recent.setOnClickListener(this); CharSequence name; if (!address.equals("")) { name = address; ((TextView) Recent.findViewById(R.id.savedLabel)).setTextColor(0xDDFFFFFF); ((CompoundButton) Recent.findViewById(R.id.saveCB)).setOnCheckedChangeListener(this); } else { name = "No Recent Alarms"; ((TextView) Recent.findViewById(R.id.savedLabel)).setTextColor(0xDD999999); Recent.findViewById(R.id.saveCB).setEnabled(false); } ((TextView) Recent.findViewById(R.id.savedLabel)).setText(name); ((TextView) Recent.findViewById(R.id.savedLabel)).setTextSize(14); Recent.findViewById(R.id.saveCB).setTag(i); Recent.setId(i); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); RecentParent.setLayoutParams(params); RecentParent.addView(Recent); } } private void saved() { ////////S-A-V-E-D/////////// LinearLayout SavedParent = (LinearLayout) V.findViewById(R.id.group_pinned); LayoutInflater inflater = getActivity().getLayoutInflater(); //If there are no pinned alarms if (touchSaveIndex(0) < 1) { View Saved = inflater.inflate(R.layout.saved_item, null); Saved.setOnClickListener(this); ((TextView) Saved.findViewById(R.id.savedLabel)).setText("No Pinned Alarms"); ((TextView) Saved.findViewById(R.id.savedLabel)).setTextColor(0xDD999999); ((CheckBox) Saved.findViewById(R.id.saveCB)).setChecked(true); Saved.findViewById(R.id.saveCB).setEnabled(false); ((CompoundButton) Saved.findViewById(R.id.saveCB)).setOnCheckedChangeListener(this); LinearLayout.LayoutParams sparams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); SavedParent.setLayoutParams(sparams); SavedParent.addView(Saved); } else { for (int i = 1; i <= touchSaveIndex(0); i++) { // View Saved = new View(getApplicationContext()); View Saved = inflater.inflate(R.layout.saved_item, null); Saved.setOnClickListener(this); SharedPreferences prefs = getActivity().getSharedPreferences("AreWeThereYet", Context.MODE_WORLD_WRITEABLE); Location location = new Location("POINT_LOCATION"); location.setLatitude(0); location.setLongitude(0); String address = "No Pinned Alarms"; if (prefs.contains(SAVED_LATITUDE_KEY + i)) { location.setLatitude(prefs.getFloat(SAVED_LATITUDE_KEY + i, 0)); } if (prefs.contains(SAVED_LONGITUDE_KEY + i)) { location.setLongitude(prefs.getFloat(SAVED_LONGITUDE_KEY + i, 0)); } if (prefs.contains(SAVED_ADDRESS_KEY + i)) { address = (prefs.getString(SAVED_ADDRESS_KEY + i, "")); } CharSequence name; if (!address.equals("")) { name = address; ((TextView) Saved.findViewById(R.id.savedLabel)).setTextColor(0xDDFFFFFF); ((CheckBox) Saved.findViewById(R.id.saveCB)).setChecked(true); Saved.findViewById(R.id.saveCB).setTag(i); ((CompoundButton) Saved.findViewById(R.id.saveCB)).setOnCheckedChangeListener(this); } else { name = "Error"; ((TextView) Saved.findViewById(R.id.savedLabel)).setTextColor(0xDD999999); ((CheckBox) Saved.findViewById(R.id.saveCB)).setChecked(true); Saved.findViewById(R.id.saveCB).setEnabled(false); } ((CompoundButton) Saved.findViewById(R.id.saveCB)).setOnCheckedChangeListener(this); ((TextView) Saved.findViewById(R.id.savedLabel)).setText(name); ((TextView) Saved.findViewById(R.id.savedLabel)).setTextSize(14); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); SavedParent.setLayoutParams(params); SavedParent.addView(Saved); } } } //Store Saved item private void setSaved(int index) { SharedPreferences prefs = getActivity().getSharedPreferences("AreWeThereYet", Context.MODE_WORLD_WRITEABLE); SharedPreferences.Editor prefsEditor = prefs.edit(); Location location = new Location("POINT_LOCATION"); location.setLatitude(0); location.setLongitude(0); int setRad = 0; String setAddress = ""; if (prefs.contains(POINT_LATITUDE_KEY + index)) { location.setLatitude(prefs.getFloat(POINT_LATITUDE_KEY + index, 0)); } if (prefs.contains(POINT_LONGITUDE_KEY + index)) { location.setLongitude(prefs.getFloat(POINT_LONGITUDE_KEY + index, 0)); } if (prefs.contains(POINT_RADIUS_KEY + index)) { setRad = prefs.getInt(POINT_RADIUS_KEY + index, 0); } if (prefs.contains(POINT_ADDRESS_KEY + index)) { setAddress = prefs.getString(POINT_ADDRESS_KEY + index, ""); } touchSaveIndex(1); float setLat = (float) location.getLatitude(); float setLong = (float) location.getLongitude(); prefsEditor.putFloat(SAVED_LATITUDE_KEY + touchSaveIndex(0), setLat); prefsEditor.putFloat(SAVED_LONGITUDE_KEY + touchSaveIndex(0), setLong); prefsEditor.putInt(SAVED_RADIUS_KEY + touchSaveIndex(0), setRad); prefsEditor.putString(SAVED_ADDRESS_KEY + touchSaveIndex(0), setAddress); prefsEditor.commit(); } private int touchSaveIndex(int mod) { SharedPreferences prefs = getActivity().getSharedPreferences("AreWeThereYet", Context.MODE_WORLD_WRITEABLE); SharedPreferences.Editor prefsEditor = prefs.edit(); prefsEditor.putInt(POINT_SAVED_INDEX, (prefs.getInt(POINT_SAVED_INDEX, 0) + mod)); prefsEditor.commit(); return prefs.getInt(POINT_SAVED_INDEX, 0); } private View.OnClickListener ringtoneListener = new View.OnClickListener() { public void onClick(View v) { initTone(); ringtonepicker(); } }; //Set Default Ringtone protected void initTone() { Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); if (alert == null) { alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); if (alert == null) { alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); } } uri = alert; } protected void ringtonepicker() { Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALARM); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone"); if (uri != null) { intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, uri); } else { intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) null); } startActivityForResult(intent, Set_Ringtone); SlidingFragmentActivity sfa = (SlidingFragmentActivity) getActivity(); sfa.showContent(); } private View.OnClickListener donateListener = new View.OnClickListener() { public void onClick(View v) { V.findViewById(R.id.row_title_donate).setClickable(false); // ((Donate) donater).donate(); } }; @Override public void onClick(View v) { SharedPreferences prefs = getActivity().getSharedPreferences("AreWeThereYet", Context.MODE_WORLD_WRITEABLE); Intent intent = getActivity().getIntent(); intent.setClass(getActivity(), ZonePicker.class); ZonePicker sfa = (ZonePicker) getActivity(); switch (((View) v.getParent()).getId()) { case R.id.group_pinned: intent.putExtra(RADIUS, prefs.getInt(SAVED_RADIUS_KEY + v.findViewById(R.id.saveCB).getTag(), 2000)); intent.putExtra(LOC, retrieveSaved((Integer) v.findViewById(R.id.saveCB).getTag())); getActivity().setResult(Activity.RESULT_OK, intent); sfa.setNewAlarmZone(intent.getExtras()); sfa.showContent(); break; case R.id.group_recent: intent.putExtra(RADIUS, prefs.getInt(POINT_RADIUS_KEY + v.findViewById(R.id.saveCB).getTag(), 2000)); intent.putExtra(LOC, retrieveRecent((Integer) v.findViewById(R.id.saveCB).getTag())); getActivity().setResult(Activity.RESULT_OK, intent); sfa.setNewAlarmZone(intent.getExtras()); sfa.showContent(); break; } } private Location retrieveRecent(int index) { SharedPreferences prefs = getActivity().getSharedPreferences("AreWeThereYet", Context.MODE_WORLD_WRITEABLE); Location location = new Location("POINT_LOCATION"); location.setLatitude(0); location.setLongitude(0); if (prefs.contains(POINT_LATITUDE_KEY + index)) { location.setLatitude(prefs.getFloat(POINT_LATITUDE_KEY + index, 0)); } if (prefs.contains(POINT_LONGITUDE_KEY + index)) { location.setLongitude(prefs.getFloat(POINT_LONGITUDE_KEY + index, 0)); } return location; } private Location retrieveSaved(int index) { SharedPreferences prefs = getActivity().getSharedPreferences("AreWeThereYet", Context.MODE_WORLD_WRITEABLE); Location location = new Location("POINT_LOCATION"); location.setLatitude(0); location.setLongitude(0); if (prefs.contains(SAVED_LATITUDE_KEY + index)) { location.setLatitude(prefs.getFloat(SAVED_LATITUDE_KEY + index, 0)); } if (prefs.contains(SAVED_LONGITUDE_KEY + index)) { location.setLongitude(prefs.getFloat(SAVED_LONGITUDE_KEY + index, 0)); } return location; } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { View recentV = (View) buttonView.getParent(); setSaved(recentV.getId()); } else { cleanup((Integer) buttonView.getTag()); touchSaveIndex(-1); } clear(); saved(); recent(); LinearLayout SavedParent = (LinearLayout) V.findViewById(R.id.group_pinned); LinearLayout RecentParent = (LinearLayout) V.findViewById(R.id.group_recent); SavedParent.invalidate(); RecentParent.invalidate(); } private void clear() { LinearLayout SavedParent = (LinearLayout) V.findViewById(R.id.group_pinned); LinearLayout RecentParent = (LinearLayout) V.findViewById(R.id.group_recent); SavedParent.removeAllViews(); RecentParent.removeAllViews(); } private void cleanup(int tag) { SharedPreferences prefs = getActivity().getSharedPreferences("AreWeThereYet", Context.MODE_WORLD_WRITEABLE); SharedPreferences.Editor prefsEditor = prefs.edit(); prefsEditor.remove(SAVED_LATITUDE_KEY + tag); prefsEditor.remove(SAVED_LONGITUDE_KEY + tag); prefsEditor.remove(SAVED_RADIUS_KEY + tag); prefsEditor.remove(SAVED_ADDRESS_KEY + tag); for (int i = tag; i < touchSaveIndex(0); i++) { prefsEditor.putFloat(SAVED_LATITUDE_KEY + i, prefs.getFloat(SAVED_LATITUDE_KEY + (i + 1), 0)); prefsEditor.putFloat(SAVED_LONGITUDE_KEY + i, prefs.getFloat(SAVED_LONGITUDE_KEY + (i + 1), 0)); prefsEditor.putString(SAVED_ADDRESS_KEY + i, prefs.getString(SAVED_ADDRESS_KEY + (i + 1), "")); } prefsEditor.remove(SAVED_LATITUDE_KEY + touchSaveIndex(0)); prefsEditor.remove(SAVED_LONGITUDE_KEY + touchSaveIndex(0)); prefsEditor.remove(SAVED_ADDRESS_KEY + touchSaveIndex(0)); prefsEditor.commit(); } @Override public void onDestroy() { // ((Donate) donater).shutdown(); super.onDestroy(); } }