Ejemplo n.º 1
0
  @Override
  public void onClick(View v) {
    TextView txtManageLabel, txtBrowseLabel, txtRefreshLabel, txtSearchLabel;
    txtManageLabel = (TextView) findViewById(R.id.txt_manage_label);
    txtBrowseLabel = (TextView) findViewById(R.id.txt_browse_label);
    txtRefreshLabel = (TextView) findViewById(R.id.txt_refresh_label);
    txtSearchLabel = (TextView) findViewById(R.id.txt_search_label);
    txtSearch.addTextChangedListener(
        new TextWatcher() {
          @Override
          public void onTextChanged(CharSequence s, int start, int before, int count) {
            new AsyncTask<String, Void, ArrayList<RssItem>>() {
              @Override
              protected ArrayList<RssItem> doInBackground(String... params) {
                return dbQuery.searchRssItem(params[0]);
              }

              @Override
              protected void onPostExecute(ArrayList<RssItem> result) {
                rssList.clear();
                rssList.addAll(result);
                rssAdapter.config().notifyDataSetChanged();
              }
            }.execute(s.toString());
          }

          @Override
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

          @Override
          public void afterTextChanged(Editable s) {}
        });
    txtSearch.setOnKeyListener(
        new OnKeyListener() {
          @Override
          public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_ENTER) return true;
            return false;
          }
        });
    switch (v.getId()) {
      case R.id.btn_manage:
        startActivityForResult(
            new Intent(RssReaderActivity.this, RssManageActivity.class), REQ_RSS_MANAGE);
        break;

      case R.id.btn_browse:
        rssProvider = dbQuery.getRssProviderList(null);
        int length = rssProvider.getProviderNames().length;
        if (length == 0) break;

        String[] providers = new String[length + 1];
        providers[0] = "All";
        for (int i = 0; i < length; i++) providers[i + 1] = rssProvider.getProviderNames()[i];
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder
            .setTitle(R.string.rss_choose_provider)
            .setItems(
                providers,
                new DialogInterface.OnClickListener() {
                  @Override
                  public void onClick(DialogInterface dialog, int item) {
                    if (item == 0) {
                      loadData(null, true, false, false);
                      return;
                    }
                    loadData(rssProvider.getProviderNames()[item - 1], false, false, false);
                    curProvider = item - 1;
                    updateListView();
                  }
                });
        builder.create().show();
        break;

      case R.id.btn_refresh:
        if (curProvider == -1) loadData(null, true, true, true);
        else
          loadData(
              dbQuery.getRssProviderList(null).getProviderNames()[curProvider], false, true, true);
        break;

      case R.id.btn_search:
        if (txtSearchLabel.getText().toString().equals(getString(R.string.btn_search_text))) {
          btnManage.setVisibility(View.GONE);
          txtManageLabel.setVisibility(View.GONE);
          btnBrowse.setVisibility(View.GONE);
          txtBrowseLabel.setVisibility(View.GONE);
          btnRefresh.setVisibility(View.GONE);
          txtRefreshLabel.setVisibility(View.GONE);
          btnSearch.setBackgroundResource(R.drawable.btn_done_background);
          txtSearchLabel.setText(R.string.btn_done_text);
          txtSearch.setVisibility(View.VISIBLE);
          txtSearch.requestFocus();
        } else {
          btnManage.setVisibility(View.VISIBLE);
          txtManageLabel.setVisibility(View.VISIBLE);
          btnBrowse.setVisibility(View.VISIBLE);
          txtBrowseLabel.setVisibility(View.VISIBLE);
          btnRefresh.setVisibility(View.VISIBLE);
          txtRefreshLabel.setVisibility(View.VISIBLE);
          btnSearch.setBackgroundResource(R.drawable.btn_search_background);
          txtSearchLabel.setText(R.string.btn_search_text);
          txtSearch.setVisibility(View.GONE);
          txtSearch.setText("");
          loadData(null, true, false, false);
        }
        break;
      default:
        break;
    }
  }
    @Override
    public View onCreateView(
        LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
      View rootView = inflater.inflate(R.layout.fragment_user_crud, container, false);

      editTextUserName = (EditText) rootView.findViewById(R.id.editTextUserName);
      editTextEmail = (EditText) rootView.findViewById(R.id.editTextEmail);
      editTextLogin = (EditText) rootView.findViewById(R.id.editTextLogin);
      editTextPassword = (EditText) rootView.findViewById(R.id.editTextPassword);
      editTextConfirmPassword = (EditText) rootView.findViewById(R.id.editTextConfirmPassword);
      editTextZipCode = (EditText) rootView.findViewById(R.id.editTextZipCode);
      editTextAddress = (EditText) rootView.findViewById(R.id.editTextAddress);
      editTextNumberAddress = (EditText) rootView.findViewById(R.id.editTextNumberAddress);
      editTextComplement = (EditText) rootView.findViewById(R.id.editTextComplement);
      editTextNeighborhood = (EditText) rootView.findViewById(R.id.editTextNeighborhood);
      editTextCity = (EditText) rootView.findViewById(R.id.editTextCity);
      txtLatitude = (TextView) rootView.findViewById(R.id.txtLatitude);
      txtLongitude = (TextView) rootView.findViewById(R.id.txtLongitude);
      radioGroupGender = (RadioGroup) rootView.findViewById(R.id.radioGender);
      spinnerStates = (Spinner) rootView.findViewById(R.id.spinnerStates);
      btnSearchZipCode = (Button) rootView.findViewById(R.id.btnSearchZipCode);
      btnSaveUser = (Button) rootView.findViewById(R.id.btnSaveUser);

      ArrayAdapter arrayAdapterStates =
          new ArrayAdapter(getActivity(), R.layout.support_simple_spinner_dropdown_item, states);
      spinnerStates.setPrompt("Estados");
      spinnerStates.setAdapter(arrayAdapterStates);
      spinnerStates.setOnItemSelectedListener(
          new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
              if (position > 0) {
                String state = (String) spinnerStates.getItemAtPosition(position);
                spinnerStates.setSelection(states.indexOf(state));
              }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
              Toast.makeText(
                      getActivity(), "É necessário selecionar uma Categoria", Toast.LENGTH_SHORT)
                  .show();
            }
          });

      if (getActivity().getIntent().getSerializableExtra("user") != null) {
        UserBean userBeanLoad = (UserBean) getActivity().getIntent().getSerializableExtra("user");
        editTextUserName.setText(userBeanLoad.getUserName());
        editTextEmail.setText(userBeanLoad.getEmail());
        editTextLogin.setText(userBeanLoad.getLogin());
        editTextPassword.setVisibility(View.INVISIBLE);
        editTextConfirmPassword.setVisibility(View.INVISIBLE);
        editTextZipCode.setText(userBeanLoad.getZipCode());
        editTextAddress.setText(userBeanLoad.getAddress());
        editTextNumberAddress.setText(userBeanLoad.getNumberAddress());
        editTextComplement.setText(userBeanLoad.getComplement());
        editTextNeighborhood.setText(userBeanLoad.getNeighborhood());
        editTextCity.setText(userBeanLoad.getCity());
        if (userBeanLoad.getGender().equals(UserBean.Gender.MALE.getSex())) {
          radioButtonGender = (RadioButton) rootView.findViewById(R.id.radioMale);
          radioButtonGender.setChecked(true);
        } else {
          radioButtonGender = (RadioButton) rootView.findViewById(R.id.radioFemale);
          radioButtonGender.setChecked(true);
        }

        spinnerStates.setSelection(states.indexOf(userBeanLoad.getState()));
        getActivity()
            .getWindow()
            .setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        btnSaveUser.setTag(userBeanLoad);
      }

      btnSaveUser.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              progressDialog =
                  ProgressDialog.show(getActivity(), "Processando", "Salvando usuário...");

              if (view.getTag() != null) {
                userBean = (UserBean) view.getTag();
              } else {
                userBean = new UserBean();
              }

              int selectedId = radioGroupGender.getCheckedRadioButtonId();
              switch (selectedId) {
                case R.id.radioFemale:
                  userBean.setGender(UserBean.Gender.FEMALE.getSex());
                  break;
                case R.id.radioMale:
                  userBean.setGender(UserBean.Gender.MALE.getSex());
                  break;
              }

              userBean.setUserName(editTextUserName.getText().toString());
              userBean.setEmail(editTextEmail.getText().toString());
              userBean.setLogin(editTextLogin.getText().toString());
              userBean.setPassword(editTextPassword.getText().toString());
              userBean.setZipCode(editTextZipCode.getText().toString());
              userBean.setAddress(editTextAddress.getText().toString());
              userBean.setNumberAddress(editTextNumberAddress.getText().toString());
              userBean.setComplement(editTextComplement.getText().toString());
              userBean.setNeighborhood(editTextNeighborhood.getText().toString());
              userBean.setCity(editTextCity.getText().toString());

              userBean.setState(spinnerStates.getSelectedItem().toString());

              AsyncTask<Void, Void, JSONObject> task =
                  new AsyncTask<Void, Void, JSONObject>() {

                    @Override
                    protected JSONObject doInBackground(Void... voids) {
                      Http http = new Http();
                      try {
                        StringBuilder strAddress = new StringBuilder();
                        strAddress.append(editTextAddress.getText().toString()).append(" ");
                        strAddress.append(editTextNumberAddress.getText().toString()).append(" ");
                        strAddress.append(editTextCity.getText().toString()).append(" ");
                        strAddress.append(spinnerStates.getSelectedItem().toString());

                        String result =
                            http.doGet(
                                PAGE_MAPS
                                    + URLEncoder.encode(strAddress.toString(), "UTF-8")
                                    + "&sensor=true");

                        JSONObject jsonObject = new JSONObject(result);

                        if (jsonObject.getString("status").equals("OK")) {
                          JSONArray jsonArrayResults = jsonObject.getJSONArray("results");
                          for (int i = 0; i < jsonArrayResults.length(); i++) {
                            JSONObject jsonObjectResults = jsonArrayResults.getJSONObject(i);
                            if (jsonObjectResults.get("geometry") != null) {
                              JSONObject jsonObjectGeometry =
                                  jsonObjectResults.getJSONObject("geometry");
                              return (JSONObject) jsonObjectGeometry.get("location");
                            }
                          }
                        }

                      } catch (IOException e1) {
                        Log.e(AppHelper.getClassError(UserCrudActivity.class), e1.getMessage());
                      } catch (JSONException e2) {
                        Log.e(AppHelper.getClassError(UserCrudActivity.class), e2.getMessage());
                      }

                      return null;
                    }

                    @Override
                    protected void onPostExecute(JSONObject jsonObject) {
                      super.onPostExecute(jsonObject);

                      boolean cepOK = true;
                      if (jsonObject == null || jsonObject.isNull("lng")) {
                        cepOK = false;
                        Toast.makeText(getActivity(), "CEP inexistente.", Toast.LENGTH_SHORT)
                            .show();
                      } else {
                        try {
                          userBean.setLatitude(jsonObject.get("lat").toString());
                          userBean.setLongitude(jsonObject.get("lng").toString());

                          boolean create = userBean.getId() == null ? true : false;

                          UserDB userDB = new UserDB(getActivity());
                          userBean = userDB.salvar(userBean);

                          if (userBean != null) {
                            Intent it = new Intent();
                            it.putExtra(
                                "msg",
                                create
                                    ? "Usuário salvo com sucesso!"
                                    : "Usuário atualizado com sucesso!");
                            it.putExtra("user", userBean);
                            getActivity().setResult(RESULT_OK, it);
                            getActivity().finish();
                          } else {
                            Intent it = new Intent();
                            it.putExtra(
                                "msg",
                                create
                                    ? "Falha ao cadastrar o Usuário!"
                                    : "Falha ao atualizar Usuário!");
                            getActivity().setResult(RESULT_CANCELED, it);
                            getActivity().finish();
                          }

                        } catch (JSONException e3) {
                          Log.e(AppHelper.getClassError(UserCrudActivity.class), e3.getMessage());
                        }
                      }

                      if (cepOK) {
                        UserDB userDB = new UserDB(getActivity());
                        userBean = userDB.salvar(userBean);
                        if (userBean != null) {
                          Intent it = new Intent();
                          it.putExtra(
                              "msg",
                              userBean.getId() == null
                                  ? "Usuário salvo com sucesso!"
                                  : "Usuário atualizado com sucesso!");
                          it.putExtra("user", userBean);
                          getActivity().setResult(RESULT_OK, it);
                          getActivity().finish();
                        } else {
                          Intent it = new Intent();
                          it.putExtra(
                              "msg",
                              userBean.getId() == null
                                  ? "Falha ao cadastrar o Usuário!"
                                  : "Falha ao atualizar Usuário!");
                          getActivity().setResult(RESULT_CANCELED, it);
                          getActivity().finish();
                        }
                      }
                    }
                  };

              if (validateFields(userBean)) {
                task.execute();
              }

              progressDialog.dismiss();
            }
          });

      btnSearchZipCode.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              progressDialog = ProgressDialog.show(getActivity(), "Pesquisando", "Carregando...");
              AsyncTask<Void, Void, JSONObject> task =
                  new AsyncTask<Void, Void, JSONObject>() {
                    @Override
                    protected JSONObject doInBackground(Void... params) {

                      Http http = new Http();
                      try {
                        String result =
                            http.doGet(PAGE_CORREIOS + editTextZipCode.getText().toString());
                        JSONObject jsonObject = new JSONObject(result);
                        if (!jsonObject.has("message")) {
                          return jsonObject;
                        }

                      } catch (IOException e1) {
                        Log.e(AppHelper.getClassError(UserCrudActivity.class), e1.getMessage());
                      } catch (JSONException e2) {
                        Log.e(AppHelper.getClassError(UserCrudActivity.class), e2.getMessage());
                      }

                      return null;
                    }

                    @Override
                    protected void onPostExecute(JSONObject jsonObject) {
                      if (jsonObject == null) {
                        Toast.makeText(getActivity(), "CEP inexistente.", Toast.LENGTH_SHORT)
                            .show();
                      } else {
                        try {
                          editTextAddress.setText(
                              jsonObject.get("tipoDeLogradouro")
                                  + " "
                                  + jsonObject.get("logradouro"));
                          editTextNeighborhood.setText(jsonObject.get("bairro").toString());
                          editTextCity.setText(jsonObject.get("cidade").toString());
                          spinnerStates.setSelection(
                              states.indexOf(jsonObject.get("estado").toString()));
                        } catch (JSONException e3) {
                          Log.e(AppHelper.getClassError(UserCrudActivity.class), e3.getMessage());
                        }
                      }
                      progressDialog.dismiss();
                    }
                  };
              task.execute();
            }
          });

      return rootView;
    }