package com.auth0.sharelock.fragment; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; import com.auth0.sharelock.R; import com.auth0.sharelock.Secret; import com.auth0.sharelock.event.NewLinkEvent; import com.auth0.sharelock.event.RequestLinkEvent; import com.auth0.sharelock.event.RequestNewSecretEvent; import com.auth0.sharelock.event.SharelockAPIErrorEvent; import com.auth0.sharelock.widget.ShareEditText; import com.nispok.snackbar.Snackbar; import com.nispok.snackbar.SnackbarManager; import de.greenrobot.event.EventBus; public class LinkFragment extends Fragment { public static final String LINK_FRAGMENT_SECRET_ARGUMENT = "LINK_FRAGMENT_SECRET_ARGUMENT"; Secret secret; EventBus bus; Uri link; TextView linkText; ProgressBar progressBar; Button retryButton; ImageButton shareButton; ImageButton newButton; ViewGroup buttons; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Bundle arguments = getArguments(); if (arguments != null) { secret = arguments.getParcelable(LINK_FRAGMENT_SECRET_ARGUMENT); } bus = EventBus.getDefault(); } @Override public void onStart() { super.onStart(); bus.registerSticky(this); } @Override public void onStop() { super.onStop(); bus.unregister(this); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_link, container, false); } @Override public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); final EventBus bus = this.bus; TextView secretText = (TextView) view.findViewById(R.id.link_secret_text); secretText.setText(secret.getSecret()); ShareEditText shareEditText = (ShareEditText) view.findViewById(R.id.link_share_list); shareEditText.setFocusable(false); shareEditText.allowDuplicates(false); for (String viewer: secret.getAllowedViewers()) { shareEditText.addObject(viewer); } linkText = (TextView) view.findViewById(R.id.link_text); progressBar = (ProgressBar) view.findViewById(R.id.link_progress); retryButton = (Button) view.findViewById(R.id.link_retry_button); shareButton = (ImageButton) view.findViewById(R.id.link_share_button); newButton = (ImageButton) view.findViewById(R.id.link_new_button); buttons = (ViewGroup) view.findViewById(R.id.link_buttons); retryButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { bus.post(new RequestLinkEvent(secret)); } }); shareButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, link.toString()); sendIntent.setType("text/plain"); startActivity(Intent.createChooser(sendIntent, getString(R.string.share_link_chooser_title))); } }); newButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog dialog = new AlertDialog.Builder(getActivity()) .setTitle(R.string.new_link_prompt_title) .setMessage(R.string.new_link_prompt_message) .setCancelable(true) .setPositiveButton(R.string.ok_button, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { bus.post(new RequestNewSecretEvent()); } }) .setNegativeButton(R.string.cancel_button, null) .create(); dialog.show(); } }); ImageView craftedBy = (ImageView) view.findViewById(R.id.crafted_by); craftedBy.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(getString(R.string.crafted_by_url))); startActivity(intent); } }); } public void onEventMainThread(NewLinkEvent event) { progressBar.setVisibility(View.GONE); buttons.setVisibility(View.VISIBLE); link = event.getLink(); linkText.setText(link.toString()); } public void onEventMainThread(SharelockAPIErrorEvent event) { linkText.setText(R.string.link_generation_failed_message); progressBar.setVisibility(View.GONE); retryButton.setVisibility(View.VISIBLE); buttons.setVisibility(View.GONE); } public void onEventMainThread(RequestLinkEvent event) { retryButton.setVisibility(View.GONE); progressBar.setVisibility(View.VISIBLE); linkText.setText(R.string.link_in_progress); buttons.setVisibility(View.GONE); } }