package com.V4Creations.vtulife.view.fragments; import java.util.ArrayList; import java.util.Collections; import java.util.List; import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import com.V4Creations.vtulife.R; import com.V4Creations.vtulife.afilechooser.utils.FileUtils; import com.V4Creations.vtulife.controller.adapters.VTULifeFragmentAdapter.FragmentInfo; import com.V4Creations.vtulife.model.ActionBarStatus; import com.V4Creations.vtulife.util.VTULifeConstance; import com.V4Creations.vtulife.view.activity.VTULifeMainActivity; import de.keyboardsurfer.android.widget.crouton.Style; public class UploadFileFragment extends Fragment implements TextWatcher, FragmentInfo { String TAG = "UploadFileFragment"; private VTULifeMainActivity activity; private EditText descriptionEditText, departmentEditText, subjectEditText; private TextView fileTextView; private Button browseFileButton; private Button sendButton; private String filePathString; private final int BROUSER_FILE = 1, SEND_EMAIL = 2; private final String[] allowedFileTypeStrings = { "pdf", "doc", "docx", "ppt", "pptx", "zip", "rar", "txt" }; private ActionBarStatus mActionBarStatus; public UploadFileFragment() { mActionBarStatus = new ActionBarStatus(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { activity = (VTULifeMainActivity) getActivity(); return inflater.inflate(R.layout.fragment_upload_file, null); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initView(); filePathString = ""; } private void initView() { browseFileButton = (Button) getView().findViewById( R.id.browseFileButton); sendButton = (Button) getView().findViewById(R.id.sendButton); fileTextView = (TextView) getView().findViewById(R.id.fileTextView); subjectEditText = (EditText) getView().findViewById( R.id.subjectEditText); departmentEditText = (EditText) getView().findViewById( R.id.departmentEditText); descriptionEditText = (EditText) getView().findViewById( R.id.descriptionEditText); subjectEditText.addTextChangedListener(this); departmentEditText.addTextChangedListener(this); descriptionEditText.addTextChangedListener(this); browseFileButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getFile(); } }); sendButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { send(); } }); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK) switch (requestCode) { case BROUSER_FILE: filePathString = data.getData().getPath(); fileTextView.setText(filePathString); break; } } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.clear_menu, menu); super.onCreateOptionsMenu(menu, inflater); } @Override public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); switch (item.getItemId()) { case R.id.menu_clear: clearAllData(); return true; } return false; } private void clearAllData() { filePathString = ""; fileTextView.setText(R.string.select_a_file); subjectEditText.setText(""); departmentEditText.setText(""); descriptionEditText.setText(""); } public boolean isEditTextEmpty(EditText editText) { if (editText.getText().toString().trim().equals("")) return true; return false; } public void sendMail() { Uri uri = Uri.parse("file://" + filePathString); Intent i = new Intent(Intent.ACTION_SEND); i.setType("message/rfc822"); i.putExtra(Intent.EXTRA_EMAIL, new String[] { "someone@vtulife.com" }); i.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_notes_mail_subject)); String subjectString = subjectEditText.getText().toString(); String departmentString = departmentEditText.getText().toString(); String descriptionString = descriptionEditText.getText().toString(); String message = String.format( getString(R.string.share_notes_mail_body), subjectString, departmentString, descriptionString); i.putExtra(Intent.EXTRA_TEXT, message); i.putExtra(Intent.EXTRA_STREAM, uri); try { startActivityForResult( Intent.createChooser(i, getString(R.string.send_email)), SEND_EMAIL); } catch (android.content.ActivityNotFoundException ex) { activity.showCrouton(R.string.email_client_missing, Style.INFO, true); } } public void getFile() { Intent target = FileUtils.createGetContentIntent(); target.setPackage(VTULifeConstance.PACKAGE); List<String> extent = new ArrayList<String>(); Collections.addAll(extent, allowedFileTypeStrings); target.putStringArrayListExtra("ext", (ArrayList<String>) extent); Intent intent = Intent.createChooser(target, getString(R.string.select_a_file)); try { startActivityForResult(intent, BROUSER_FILE); } catch (ActivityNotFoundException e) { activity.showCrouton(R.string.file_browser_not_found, Style.INFO, true); } } public void send() { if (!filePathString.equals("") && !isEditTextEmpty(departmentEditText) && !isEditTextEmpty(descriptionEditText) && !isEditTextEmpty(subjectEditText)) sendMail(); else { activity.showCrouton(R.string.provide_all_details, Style.CONFIRM, true); setErrorOnEditText(true); } } private void setErrorOnEditText(boolean isErrorShow) { if (isErrorShow) { if (isEditTextEmpty(departmentEditText)) departmentEditText .setError(getString(R.string.department_required)); if (isEditTextEmpty(descriptionEditText)) descriptionEditText .setError(getString(R.string.description_required)); if (isEditTextEmpty(subjectEditText)) subjectEditText.setError(getString(R.string.subject_required)); } else { departmentEditText.setError(null); descriptionEditText.setError(null); subjectEditText.setError(null); } } @Override public void afterTextChanged(Editable s) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { setErrorOnEditText(false); } @Override public String getTitle(Context context) { return UploadFileFragment.getFeatureName(context); } @Override public ActionBarStatus getActionBarStatus() { return mActionBarStatus; } public static String getFeatureName(Context context) { return context.getString(R.string.share_notes); } }