package com.ijoomer.components.jomsocial; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.SeekBar; import android.widget.Spinner; import com.ijoomer.common.classes.IjoomerUtilities; import com.ijoomer.common.classes.IjoomerUtilities.MyCustomAdapter; import com.ijoomer.common.classes.ViewHolder; import com.ijoomer.custom.interfaces.CustomClickListner; import com.ijoomer.customviews.IjoomerButton; import com.ijoomer.customviews.IjoomerCheckBox; import com.ijoomer.customviews.IjoomerEditText; import com.ijoomer.customviews.IjoomerTextView; import com.ijoomer.library.jomsocial.JomPrivacyDataProvider; import com.ijoomer.src.R; import com.ijoomer.weservice.WebCallListener; import com.smart.framework.CustomAlertNeutral; import com.smart.framework.ItemView; import com.smart.framework.SmartListAdapterWithHolder; import com.smart.framework.SmartListItem; import org.json.JSONArray; import java.util.ArrayList; import java.util.HashMap; /** * This Class Contains All Method Related To JomPrivacySettingActivity. * * @author tasol * */ public class JomPrivacySettingActivity extends JomMasterActivity { private ListView lstPreferences; private IjoomerButton btnBack; private IjoomerButton btnEditSave; private SeekBar proSeekBar; private ArrayList<SmartListItem> listData = new ArrayList<SmartListItem>(); ArrayList<HashMap<String, String>> fields; ArrayList<HashMap<String, String>> groups; private SmartListAdapterWithHolder privacyListAdapter; private JomPrivacyDataProvider provider; /** * Overrides methods */ @Override public int setLayoutId() { return R.layout.jom_privacy_dynamic_view; } @Override public void initComponents() { lstPreferences = (ListView) findViewById(R.id.lstPreferences); btnBack = (IjoomerButton) findViewById(R.id.btnBack); btnEditSave = (IjoomerButton) findViewById(R.id.btnEditSave); provider = new JomPrivacyDataProvider(this); btnEditSave.setText(getString(R.string.save)); } @Override public void prepareViews() { lstPreferences.setAdapter(null); getPreferencesSetting(); } @Override public void setActionListeners() { btnBack.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { finish(); } }); btnEditSave.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { hideSoftKeyboard(); savePreferencesSettings(); } }); } @Override protected void onDestroy() { super.onDestroy(); } /** * Class methods */ /** * This method used to get user preferences. */ private void getPreferencesSetting() { proSeekBar = null; if (!provider.isPrivacySettingExists()) { proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_sending_request)); } provider.getPrivacySetting(new WebCallListener() { @Override public void onProgressUpdate(int progressCount) { if (proSeekBar != null) { proSeekBar.setProgress(progressCount); } } @Override public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) { if (responseCode == 200) { prepareList(); privacyListAdapter = getListAdapter(); lstPreferences.setAdapter(privacyListAdapter); } else { responseErrorMessageHandler(responseCode, true); } } }); } /** * This method used to shown response message. * @param responseCode represented response code * @param finishActivityOnConnectionProblem represented finish activity on connection problem */ private void responseErrorMessageHandler(final int responseCode, final boolean finishActivityOnConnectionProblem) { IjoomerUtilities.getCustomOkDialog(getString(R.string.dialog_loading_privacy_setting), getString(getResources().getIdentifier("code" + responseCode, "string", getPackageName())), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { } }); } /** * This method used to save preferences. */ private void savePreferencesSettings() { ArrayList<HashMap<String, String>> submitFields = new ArrayList<HashMap<String, String>>(); int size = listData.size(); for (int i = 0; i < size; i++) { @SuppressWarnings("unchecked") HashMap<String, String> row = (HashMap<String, String>) listData.get(i).getValues().get(0); if (row.size() > 1 && !(row.get("type").equals("label"))) { submitFields.add(row); } } final SeekBar proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_privacy_setting)); provider.submitPrivacySetting(submitFields, new WebCallListener() { @Override public void onProgressUpdate(int progressCount) { proSeekBar.setProgress(progressCount); } @Override public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) { if (responseCode == 200) { } else { responseErrorMessageHandler(responseCode, false); } } }); } /** * List adapter for user preferences. * @return */ private SmartListAdapterWithHolder getListAdapter() { SmartListAdapterWithHolder adapter = new SmartListAdapterWithHolder(this, R.layout.jom_privacy_dynamic_view_item, listData, new ItemView() { @SuppressWarnings("unchecked") @Override public View setItemView(final int position, View v, SmartListItem item, ViewHolder holder) { holder.lnrGgroup = (LinearLayout) v.findViewById(R.id.lnrGgroup); holder.lnrLabel = (LinearLayout) v.findViewById(R.id.lnrLabel); holder.lnrEdit = (LinearLayout) v.findViewById(R.id.lnrEdit); holder.lnrEditArea = (LinearLayout) v.findViewById(R.id.lnrEditArea); holder.lnrEditClickable = (LinearLayout) v.findViewById(R.id.lnrEditClickable); holder.lnrSpin = (LinearLayout) v.findViewById(R.id.lnrSpin); holder.lnrIjoomerCheckBox = (LinearLayout) v.findViewById(R.id.lnrCheckbox); holder.lnrComplex = (LinearLayout) v.findViewById(R.id.lnrComplex); final HashMap<String, String> row = (HashMap<String, String>) item.getValues().get(0); if (row.size() == 1) { holder.lnrGgroup.setVisibility(View.VISIBLE); holder.lnrLabel.setVisibility(View.GONE); holder.lnrEdit.setVisibility(View.GONE); holder.lnrEditArea.setVisibility(View.GONE); holder.lnrEditClickable.setVisibility(View.GONE); holder.lnrSpin.setVisibility(View.GONE); holder.lnrIjoomerCheckBox.setVisibility(View.GONE); holder.lnrComplex.setVisibility(View.GONE); ((IjoomerTextView) holder.lnrGgroup.findViewById(R.id.txtLable)).setText(row.get(GROUP_NAME)); } else if ((getStringArray(row.get("type")) != null)) { holder.lnrComplex.setVisibility(View.VISIBLE); holder.lnrLabel.setVisibility(View.GONE); holder.lnrEdit.setVisibility(View.GONE); holder.lnrEditArea.setVisibility(View.GONE); holder.lnrEditClickable.setVisibility(View.GONE); holder.lnrGgroup.setVisibility(View.GONE); holder.lnrSpin.setVisibility(View.GONE); holder.lnrIjoomerCheckBox.setVisibility(View.GONE); ((IjoomerTextView) holder.lnrComplex.findViewById(R.id.txtLable)).setText(row.get(TITLE)); final IjoomerCheckBox c1 = (IjoomerCheckBox) holder.lnrComplex.findViewById(R.id.chkValue1); final IjoomerCheckBox c2 = (IjoomerCheckBox) holder.lnrComplex.findViewById(R.id.chkValue2); final IjoomerCheckBox c3 = (IjoomerCheckBox) holder.lnrComplex.findViewById(R.id.chkValue3); if (getStringArray(row.get(VALUE))[0].equals("1")) { c1.setChecked(true); } else { c1.setChecked(false); } if (getStringArray(row.get(VALUE))[1].equals("1")) { c2.setChecked(true); } else { c2.setChecked(false); } if (getStringArray(row.get(VALUE))[2].equals("1")) { c3.setChecked(true); } else { c3.setChecked(false); } c1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try { JSONArray arr = new JSONArray(); String[] strVal = getStringArray(row.get(VALUE)); arr.put(1, strVal[1]); arr.put(2, strVal[2]); arr.put(0, c1.isChecked() ? "1" : "0"); row.put(VALUE, arr.toString()); } catch (Exception e) { } } }); c2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try { JSONArray arr = new JSONArray(); String[] strVal = getStringArray(row.get(VALUE)); arr.put(0, strVal[0]); arr.put(2, strVal[2]); arr.put(1, c2.isChecked() ? "1" : "0"); row.put(VALUE, arr.toString()); } catch (Exception e) { } } }); c3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try { JSONArray arr = new JSONArray(); String[] strVal = getStringArray(row.get(VALUE)); arr.put(0, strVal[0]); arr.put(1, strVal[1]); arr.put(2, c3.isChecked() ? "1" : "0"); row.put(VALUE, arr.toString()); } catch (Exception e) { } } }); } else if (row.get("type").equals("label")) { holder.lnrLabel.setVisibility(View.VISIBLE); holder.lnrComplex.setVisibility(View.GONE); holder.lnrEdit.setVisibility(View.GONE); holder.lnrEditArea.setVisibility(View.GONE); holder.lnrEditClickable.setVisibility(View.GONE); holder.lnrGgroup.setVisibility(View.GONE); holder.lnrSpin.setVisibility(View.GONE); holder.lnrIjoomerCheckBox.setVisibility(View.GONE); ((IjoomerTextView) holder.lnrLabel.findViewById(R.id.txtLable)).setText(row.get(TITLE)); } else if (row.get(TYPE).equals(CHECKBOX)) { final IjoomerCheckBox chb; holder.lnrIjoomerCheckBox.setVisibility(View.VISIBLE); holder.lnrComplex.setVisibility(View.GONE); holder.lnrLabel.setVisibility(View.GONE); holder.lnrEdit.setVisibility(View.GONE); holder.lnrEditArea.setVisibility(View.GONE); holder.lnrEditClickable.setVisibility(View.GONE); holder.lnrGgroup.setVisibility(View.GONE); holder.lnrSpin.setVisibility(View.GONE); chb = ((IjoomerCheckBox) holder.lnrIjoomerCheckBox.findViewById(R.id.txtValue)); chb.setTextAppearance(JomPrivacySettingActivity.this, R.style.ijoomer_textview_h2); if (row.get(VALUE).toString().trim().length() > 0) { chb.setChecked(row.get(VALUE).toString().equals("1") ? true : false); } chb.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton ButtonView, boolean isChecked) { try { row.put(VALUE, isChecked ? "1" : "0"); } catch (Exception e) { } } }); ((IjoomerTextView) holder.lnrIjoomerCheckBox.findViewById(R.id.txtLable)).setText(row.get(TITLE)); } else if (row.get(TYPE).equals(TEXT)) { final IjoomerEditText edit; holder.lnrEdit.setVisibility(View.VISIBLE); edit = ((IjoomerEditText) holder.lnrEdit.findViewById(R.id.txtValue)); edit.setText(row.get(VALUE)); } else if (row.get(TYPE).equals(TEXTAREA)) { holder.lnrEditArea.setVisibility(View.VISIBLE); ((IjoomerEditText) holder.lnrEditArea.findViewById(R.id.txtValue)).setText(row.get(VALUE)); } else if (row.get(TYPE).equals(SELECT)) { holder.lnrSpin.setVisibility(View.VISIBLE); holder.lnrComplex.setVisibility(View.GONE); holder.lnrLabel.setVisibility(View.GONE); holder.lnrEdit.setVisibility(View.GONE); holder.lnrEditArea.setVisibility(View.GONE); holder.lnrEditClickable.setVisibility(View.GONE); holder.lnrGgroup.setVisibility(View.GONE); holder.lnrIjoomerCheckBox.setVisibility(View.GONE); ((IjoomerTextView) holder.lnrSpin.findViewById(R.id.txtLable)).setText(row.get(TITLE)); final MyCustomAdapter adapter = IjoomerUtilities.getSpinnerAdapter(row); final Spinner spnr = ((Spinner) holder.lnrSpin.findViewById(R.id.txtValue)); spnr.setAdapter(adapter); spnr.setSelection(adapter.getDefaultPosition()); adapter.notifyDataSetChanged(); spnr.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { final String code = getPrivacyCode(spnr.getItemAtPosition(arg2).toString()); row.put(VALUE, code); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); } else if (row.get(TYPE).equals(DATE)) { final IjoomerEditText edit; holder.lnrEditClickable.setVisibility(View.VISIBLE); edit = ((IjoomerEditText) holder.lnrEditClickable.findViewById(R.id.txtValue)); edit.setText(row.get(VALUE)); edit.setOnClickListener(new OnClickListener() { @Override public void onClick(final View v) { IjoomerUtilities.getDateDialog(((IjoomerEditText) v).getText().toString(), false, new CustomClickListner() { @Override public void onClick(String value) { ((IjoomerEditText) v).setText(value); } }); } }); } else if (row.get(TYPE).equals(MULTIPLESELECT)) { final IjoomerEditText edit; holder.lnrEditClickable.setVisibility(View.VISIBLE); edit = ((IjoomerEditText) holder.lnrEditClickable.findViewById(R.id.txtValue)); edit.setText(row.get(VALUE)); edit.setOnClickListener(new OnClickListener() { @Override public void onClick(final View v) { IjoomerUtilities.getMultiSelectionDialog(row.get(TITLE), row.get(OPTIONS), "", new CustomClickListner() { @Override public void onClick(String value) { ((IjoomerEditText) v).setText(value); } }); } }); } return v; } @Override public View setItemView(int position, View v, SmartListItem item) { return null; } }); return adapter; } /** * This method used to prepare list user preferences. */ public void prepareList() { listData.clear(); groups = provider.getFieldGroups(); int len = groups.size() - 1; for (int i = len; i >= 0; i--) { SmartListItem item = new SmartListItem(); item.setItemLayout(R.layout.jom_privacy_dynamic_view_item); ArrayList<Object> obj = new ArrayList<Object>(); obj.add(groups.get(i)); item.setValues(obj); listData.add(item); fields = provider.getFields(groups.get(i).get(GROUP_NAME)); for (HashMap<String, String> hashMap : fields) { SmartListItem item2 = new SmartListItem(); item2.setItemLayout(R.layout.jom_privacy_dynamic_view_item); ArrayList<Object> obj2 = new ArrayList<Object>(); obj2.add(hashMap); item2.setValues(obj2); listData.add(item2); } } } }