diff --git a/LocationRinger/src/com/TwentyCodes/android/LocationRinger/ui/RingerInformationActivity.java b/LocationRinger/src/com/TwentyCodes/android/LocationRinger/ui/RingerInformationActivity.java index 8660154..717bb8f 100644 --- a/LocationRinger/src/com/TwentyCodes/android/LocationRinger/ui/RingerInformationActivity.java +++ b/LocationRinger/src/com/TwentyCodes/android/LocationRinger/ui/RingerInformationActivity.java @@ -120,21 +120,39 @@ public class RingerInformationActivity extends FragmentActivity implements OnCon * update interval */ ArrayList what = new ArrayList(); + ArrayList added = new ArrayList(); - if(this.mInfo.containsKey(RingerDatabase.KEY_RINGTONE) || this.mInfo.containsKey(RingerDatabase.KEY_RINGTONE_IS_SILENT) || this.mInfo.containsKey(RingerDatabase.KEY_RINGTONE_VOLUME)) + if(this.mInfo.containsKey(RingerDatabase.KEY_RINGTONE) || this.mInfo.containsKey(RingerDatabase.KEY_RINGTONE_IS_SILENT) || this.mInfo.containsKey(RingerDatabase.KEY_RINGTONE_VOLUME)){ what.add(new RingtoneFragment(this.mInfo, this, AudioManager.STREAM_RING)); - if(this.mInfo.containsKey(RingerDatabase.KEY_NOTIFICATION_RINGTONE) || this.mInfo.containsKey(RingerDatabase.KEY_NOTIFICATION_IS_SILENT) || this.mInfo.containsKey(RingerDatabase.KEY_NOTIFICATION_RINGTONE_VOLUME)) + added.add(0); + } + + if(this.mInfo.containsKey(RingerDatabase.KEY_NOTIFICATION_RINGTONE) || this.mInfo.containsKey(RingerDatabase.KEY_NOTIFICATION_IS_SILENT) || this.mInfo.containsKey(RingerDatabase.KEY_NOTIFICATION_RINGTONE_VOLUME)){ what.add(new RingtoneFragment(this.mInfo, this, AudioManager.STREAM_NOTIFICATION)); - if(this.mInfo.containsKey(RingerDatabase.KEY_ALARM_VOLUME)) + added.add(1); + } + + if(this.mInfo.containsKey(RingerDatabase.KEY_ALARM_VOLUME)){ what.add(new VolumeFragment(this.mInfo, this, this, AudioManager.STREAM_ALARM)); - if(this.mInfo.containsKey(RingerDatabase.KEY_MUSIC_VOLUME)) + added.add(2); + } + + if(this.mInfo.containsKey(RingerDatabase.KEY_MUSIC_VOLUME)){ what.add(new VolumeFragment(this.mInfo, this, this, AudioManager.STREAM_MUSIC)); - if(this.mInfo.containsKey(RingerDatabase.KEY_WIFI)) - what.add(new ToggleButtonFragment(this.getString(R.string.wifi), RingerDatabase.KEY_WIFI, this.mInfo, this)); - if(this.mInfo.containsKey(RingerDatabase.KEY_BT)) + added.add(3); + } + + if(this.mInfo.containsKey(RingerDatabase.KEY_BT)){ what.add(new ToggleButtonFragment(this.getString(R.string.bluetooth), RingerDatabase.KEY_BT, this.mInfo, this)); + added.add(4); + } + + if(this.mInfo.containsKey(RingerDatabase.KEY_WIFI)){ + what.add(new ToggleButtonFragment(this.getString(R.string.wifi), RingerDatabase.KEY_WIFI, this.mInfo, this)); + added.add(5); + } - fragments.add(new FeatureListFragment(this.mInfo, this, what)); + fragments.add(new FeatureListFragment(this.mInfo, this, what, added)); //Populate the pager this.mPager = (ViewPager)findViewById(R.id.pager); diff --git a/LocationRinger/src/com/TwentyCodes/android/LocationRinger/ui/fragments/FeatureListFragment.java b/LocationRinger/src/com/TwentyCodes/android/LocationRinger/ui/fragments/FeatureListFragment.java index 632df79..e620493 100644 --- a/LocationRinger/src/com/TwentyCodes/android/LocationRinger/ui/fragments/FeatureListFragment.java +++ b/LocationRinger/src/com/TwentyCodes/android/LocationRinger/ui/fragments/FeatureListFragment.java @@ -22,6 +22,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; +import android.widget.ArrayAdapter; import com.TwentyCodes.android.LocationRinger.OnContentChangedListener; import com.TwentyCodes.android.LocationRinger.R; @@ -41,6 +42,7 @@ public class FeatureListFragment extends Fragment implements OnClickListener, an private final ArrayList mFragments; private final ContentValues mInfo; private final OnContentChangedListener mListener; + private final ArrayList mAdded; /** * Creates a new FeatureListFragment @@ -49,11 +51,12 @@ public class FeatureListFragment extends Fragment implements OnClickListener, an * @param fragments * @author ricky barrette */ - public FeatureListFragment(ContentValues info, OnContentChangedListener listener, ArrayList fragments) { + public FeatureListFragment(ContentValues info, OnContentChangedListener listener, ArrayList fragments, ArrayList added) { super(); mFragments = fragments; mInfo = info; mListener = listener; + mAdded = added; } /** @@ -90,6 +93,84 @@ public class FeatureListFragment extends Fragment implements OnClickListener, an super.onActivityResult(arg0, arg1, arg2); } + /** + * Called when an item is picked from the add featue list + * (non-Javadoc) + * @see android.content.DialogInterface.OnClickListener#onClick(android.content.DialogInterface, int) + */ + @Override + public void onClick(DialogInterface dialog, int which) { + Fragment f = null; + switch(which){ + case 0: + f= new RingtoneFragment(this.mInfo, this.mListener, AudioManager.STREAM_RING); + mAdded.add(0); + break; + case 1: + f = new RingtoneFragment(this.mInfo, this.mListener, AudioManager.STREAM_NOTIFICATION); + mAdded.add(1); + break; + case 2: + f = new VolumeFragment(this.mInfo, this.getActivity(), this.mListener, AudioManager.STREAM_ALARM); + mAdded.add(2); + break; + case 3: + f = new VolumeFragment(this.mInfo, this.getActivity(), this.mListener, AudioManager.STREAM_MUSIC); + mAdded.add(3); + break; + case 4: + f = new ToggleButtonFragment(this.getString(R.string.bluetooth), RingerDatabase.KEY_BT, this.mInfo, this.mListener); + mAdded.add(4); + break; + case 5: + f = new ToggleButtonFragment(this.getString(R.string.wifi), RingerDatabase.KEY_WIFI, this.mInfo, this.mListener); + mAdded.add(5); + break; +// case 6: +// f = +// break; + } + + if(f != null) + add(f); + } + + /** + * Called when the add feature button is clicked + * (non-Javadoc) + * @see android.view.View.OnClickListener#onClick(android.view.View) + */ + @Override + public void onClick(View v) { + new AlertDialog.Builder(this.getActivity()) + .setTitle(R.string.add_a_feature) +// .setItems(R.array.features, this) + .setAdapter( + new ArrayAdapter(this.getActivity(), android.R.layout.simple_list_item_1, this.getResources().getStringArray(R.array.features)){ + /** + * we override this, because we want to filter which items are enabled + * (non-Javadoc) + * @see android.widget.BaseAdapter#areAllItemsEnabled() + */ + @Override + public boolean areAllItemsEnabled(){ + return false; + } + + /** + * here we can notify the adaptor if an item should be enabled or not + * (non-Javadoc) + * @see android.widget.BaseAdapter#isEnabled(int) + */ + @Override + public boolean isEnabled(int position){ + return ! mAdded.contains(position); + } + }, this) + .create() + .show(); + } + /** * (non-Javadoc) * @see android.support.v4.app.ListFragment#onCreateView(android.view.LayoutInflater, @@ -101,7 +182,7 @@ public class FeatureListFragment extends Fragment implements OnClickListener, an v.findViewById(R.id.add_feature_button).setOnClickListener(this); return v; } - + /** * (non-Javadoc) * @see android.support.v4.app.Fragment#onPause() @@ -117,7 +198,7 @@ public class FeatureListFragment extends Fragment implements OnClickListener, an Collections.reverse(this.mFragments); super.onPause(); } - + /** * (non-Javadoc) * @see android.support.v4.app.Fragment#onResume() @@ -129,7 +210,7 @@ public class FeatureListFragment extends Fragment implements OnClickListener, an loadFragments(); super.onResume(); } - + /** * Removes a fragment from the list * @param fragment @@ -141,7 +222,7 @@ public class FeatureListFragment extends Fragment implements OnClickListener, an transaction.remove(fragment); transaction.commit(); } - + /** * Removes all fragments from the the view * @throws IllegalStateException @@ -154,54 +235,4 @@ public class FeatureListFragment extends Fragment implements OnClickListener, an } transaction.commit(); } - - /** - * Called when the add feature button is clicked - * (non-Javadoc) - * @see android.view.View.OnClickListener#onClick(android.view.View) - */ - @Override - public void onClick(View v) { - new AlertDialog.Builder(this.getActivity()) - .setTitle(R.string.add_a_feature) - .setItems(R.array.features, this) - .create() - .show(); - } - - /** - * Called when an item is picked from the add featue list - * (non-Javadoc) - * @see android.content.DialogInterface.OnClickListener#onClick(android.content.DialogInterface, int) - */ - @Override - public void onClick(DialogInterface dialog, int which) { - Fragment f = null; - switch(which){ - case 0: - f= new RingtoneFragment(this.mInfo, this.mListener, AudioManager.STREAM_RING); - break; - case 1: - f = new RingtoneFragment(this.mInfo, this.mListener, AudioManager.STREAM_NOTIFICATION); - break; - case 2: - f = new VolumeFragment(this.mInfo, this.getActivity(), this.mListener, AudioManager.STREAM_ALARM); - break; - case 3: - f = new VolumeFragment(this.mInfo, this.getActivity(), this.mListener, AudioManager.STREAM_MUSIC); - break; - case 4: - f = new ToggleButtonFragment(this.getString(R.string.bluetooth), RingerDatabase.KEY_BT, this.mInfo, this.mListener); - break; - case 5: - f = new ToggleButtonFragment(this.getString(R.string.wifi), RingerDatabase.KEY_WIFI, this.mInfo, this.mListener); - break; -// case 6: -// f = -// break; - } - - if(f != null) - add(f); - } } \ No newline at end of file