package com.goshenapps.clipboard.BottomSheets;
import android.app.SearchManager;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.BottomSheetBehavior;
import android.support.design.widget.BottomSheetDialogFragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import com.google.i18n.phonenumbers.PhoneNumberMatch;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.goshenapps.clipboard.MFM.Fire;
import com.goshenapps.clipboard.MFM.FireHolder;
import com.goshenapps.clipboard.MainActivity;
import com.goshenapps.clipboard.QRCodes.QRDialogFragment;
import com.goshenapps.clipboard.R;
import com.goshenapps.clipboard.Siri.SiriDialogFragment;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static com.twitter.sdk.android.core.TwitterCore.TAG;
public class MyBottomSheetDialogFragment extends BottomSheetDialogFragment {
String mString;
ImageView call,email,sms,web;
ImageView shared,qr,searched,speaker,camera,copy,delete;
boolean isCall = false;
boolean isEmail = false;
boolean isWeb = false;
String callValue;
String emailValue;
String webValue;
FirebaseRecyclerAdapter adapter;
public static MyBottomSheetDialogFragment newInstance(String string) {
MyBottomSheetDialogFragment f = new MyBottomSheetDialogFragment();
Bundle args = new Bundle();
args.putString("string", string);
f.setArguments(args);
return f;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mString = getArguments().getString("string");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.bottom_sheet, container, false);
call = (ImageView) v.findViewById(R.id.call);
sms = (ImageView) v.findViewById(R.id.sms);
web = (ImageView) v.findViewById(R.id.web);
email = (ImageView) v.findViewById(R.id.email);
shared = (ImageView) v.findViewById(R.id.shared);
qr = (ImageView) v.findViewById(R.id.qr);
searched = (ImageView) v.findViewById(R.id.searched);
speaker = (ImageView) v.findViewById(R.id.speaker);
camera = (ImageView) v.findViewById(R.id.camera);
delete = (ImageView) v.findViewById(R.id.delete);
copy = (ImageView) v.findViewById(R.id.copy);
call.setColorFilter(Color.GRAY);
sms.setColorFilter(Color.GRAY);
web.setColorFilter(Color.GRAY);
email.setColorFilter(Color.GRAY);
Opera(mString);
call.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isCall)
{
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:"+callValue));
startActivity(intent);
}else {
}
}
});
sms.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isCall)
{
Uri uri = Uri.parse("smsto:"+callValue);
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
it.putExtra("sms_body", mString);
startActivity(it);
}else {
}
}
});
email.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isEmail)
{
String[] bull = {emailValue};
composeEmail(bull,mString);
}else {
}
}
});
web.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isWeb){
Intent intent= new Intent(Intent.ACTION_VIEW,Uri.parse(webValue));
startActivity(intent);
}else {
}
}
});
shared.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, ""+mString);
startActivity(shareIntent);
}
});
searched.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri uri = Uri.parse("http://www.google.com/#q="+mString);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
});
qr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
QRDialogFragment qrDialogFragment = QRDialogFragment.newInstance(mString);
qrDialogFragment.show(getActivity().getSupportFragmentManager(),qrDialogFragment.getTag());
dismiss();
}
});
speaker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SiriDialogFragment sirDialog = SiriDialogFragment.newInstance(mString);
sirDialog.show(getActivity().getSupportFragmentManager(), sirDialog.getTag());
dismiss();
}
});
copy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ClipboardManager clipboard = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("labels", mString);
clipboard.setPrimaryClip(clip);
dismiss();
}
});
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
BurnFire(mString);
}
});
return v;
}
public void Opera(String aString)
{
if(aString != null) {
Iterator<PhoneNumberMatch> existsPhone = PhoneNumberUtil.getInstance().findNumbers(aString, "IN").iterator();
if (existsPhone.hasNext()) {
long ayo = existsPhone.next().number().getNationalNumber();
callValue = String.valueOf(ayo);
call.setColorFilter(null);
sms.setColorFilter(null);
isCall = true;
}else {
}
}
if (aString.contains("http://") || aString.contains("https://") || aString.contains("www."))
{
webValue = pullLinks(aString).get(0);
web.setColorFilter(null);
isWeb = true;
}
if (aString.contains("@")){
Pattern p = Pattern.compile("\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b",
Pattern.CASE_INSENSITIVE);
Matcher matcher = p.matcher(aString);
while(matcher.find()) {
emailValue = matcher.group();
email.setColorFilter(null);
isEmail = true;
}
}
}
public ArrayList<String> pullLinks(String text)
{
ArrayList<String> links = new ArrayList<String>();
//String regex = "\\(?\\b(http://|www[.])[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]";
String regex = "\\(?\\b(https?://|www[.]|ftp://)[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(text);
while(m.find())
{
String urlStr = m.group();
if (urlStr.startsWith("(") && urlStr.endsWith(")"))
{
urlStr = urlStr.substring(1, urlStr.length() - 1);
}
links.add(urlStr);
}
return links;
}
public void composeEmail(String[] addresses, String subject) {
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:")); // only email apps should handle this
intent.putExtra(Intent.EXTRA_EMAIL, addresses);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivity(intent);
}
}
public void BurnFire(String lock)
{
if (lock.length() <= 30) {
lock.replaceAll("([^a-zA-Z]|\\s)+", "");
}else{
lock = lock.substring(0, 30).replaceAll("([^a-zA-Z]|\\s)+", "");
}
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
String possy = sharedPref.getString("posit","");
((MainActivity) getContext()).Remover(Integer.parseInt(possy));
dismiss();
}
}