package satyajitnets.thequizapp; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Typeface; import android.media.MediaPlayer; import android.os.AsyncTask; import android.os.Bundle; import android.os.CountDownTimer; import android.text.TextUtils; import android.util.Base64; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URL; import java.util.regex.Matcher; import java.util.regex.Pattern; import dmax.dialog.SpotsDialog; import static android.content.Context.MODE_PRIVATE; class LoginReg extends Dialog implements android.view.View.OnClickListener { public Activity c; public Dialog d; public int type; CountDownTimer ct; Toast toast; LayoutInflater inflater; View layout; String username,password,out; public Button yes, no,cancel; public TextView message; public String msg,title,link,link2; public ImageView Img; public MediaPlayer mp; TextView t1,t2,t3,t4,head,text; EditText b1,b2; AlertDialog dialog; String cor="0"; public LoginReg(Activity a,int type) { super(a); // TODO Auto-generated constructor stub this.c = a; this.type=type; //value is 2 - back is pressed //val } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.login); Typeface fn = Typeface.createFromAsset(c.getApplicationContext().getAssets(), "fonts/fnt.ttf"); b1=findViewById(R.id.userName); b2=findViewById(R.id.paswrd); b1.setTypeface(fn); b2.setTypeface(fn); inflater = getLayoutInflater(); layout = inflater.inflate(R.layout.toast, (ViewGroup) findViewById(R.id.custom_toast_container)); text = (TextView) layout.findViewById(R.id.TMsg); text.setTypeface(fn); toast = new Toast(c); toast.setGravity(Gravity.BOTTOM, 0, 100); toast.setDuration(Toast.LENGTH_SHORT); toast.setView(layout); t1=findViewById(R.id.userName); t2=findViewById(R.id.passText); t4=findViewById(R.id.reg); head=findViewById(R.id.title2); t3=findViewById(R.id.newTit); t1.setTypeface(fn); t2.setTypeface(fn); t4.setTypeface(fn); t3.setTypeface(fn); head.setTypeface(fn); yes = findViewById(R.id.rts); yes.setOnClickListener(this); yes.setTypeface(fn); if(type==0){ head.setText("Sign Up Easy "); yes.setText("Sign Up"); t4.setText("Login"); t4.setTextColor(c.getResources().getColor(R.color.green)); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.rts: { username = String.valueOf(b1.getText()); password = String.valueOf(b2.getText()); if(TextUtils.isEmpty(b1.getText().toString())&&TextUtils.isEmpty(b2.getText().toString())) { msg("Please Fill all the fields!"); return; } else { if(username.contains(" ")) { msg("Username cannot have spaces"); return; } Pattern p = Pattern.compile("[^a-z0-9 ]", Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(username); boolean b = m.find(); if (b) msg("Username cannot contain special characters!"); else { if(username.length()<5) { msg("Username must be atleast of 5 letters long!"); return; } if(password.length()<5) { msg("Password must be atleast of 5 letters long!"); return; } if(username.contains("satyajit")||username.contains("SATYAJIT")||username.toLowerCase().contains("Satyajit")){ msg("Sorry Cannot use that name"); return; } if(password.contains(" ")) { msg("Sorry You cannot use space in password"); return; } if(type!=0) { InputMethodManager imm = (InputMethodManager) c.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getWindow().getCurrentFocus().getWindowToken(), 0); new MyTask().execute("my string parameter"); } else Register(); } } } break; default: break; } //dismiss(); } private class MyTask extends AsyncTask<String, Integer, String> { // private AlertDialog dialog = new SpotsDialog(c,"",true); // Runs in UI before background thread is called @Override protected void onPreExecute() { // Do something like display a progress bar dialog =new SpotsDialog.Builder() .setContext(c) .setTheme(R.style.Custom) .build(); dialog.show(); } // This is run in a background thread @Override protected String doInBackground(String... params) { StringBuffer sb=new StringBuffer(""); link = "http://satyajiit.xyz/quiz/getPts.php?user="+username+"&pass="+password; try { URL url = new URL(link); HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(); request.setURI(new URI(link)); HttpResponse response = client.execute(request); BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); String line = ""; while ((line = in.readLine()) != null) { sb.append(line); break; } in.close(); } catch(Exception e){ sb=new StringBuffer("sads"); } return String.valueOf(sb); } // This is called from background thread but runs in UI @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); // Do things like update the progress bar } // This runs in UI when background thread finishes @Override protected void onPostExecute(String result) { super.onPostExecute(result); if (dialog.isShowing()) { dialog.dismiss(); } if(result.equals("FAIL")) {msg("Invalid UserId or Password"); } else if(result.contains("satya")) { out=result.substring(result.indexOf("comp")+4); msg("Logged In..You have "+out+" points"); save(); Intent intent = c.getIntent(); c.finish(); c.startActivity(intent); } else msg("Network Error or Server Down..please Try Again"); // Do things like hide the progress bar or change a TextView } } void msg(String message){ text.setText(message); toast.show(); } void save(){ //save the the details to the preferances SharedPreferences.Editor editor = c.getSharedPreferences("First_Run", MODE_PRIVATE).edit(); editor.putString("user", enc(enc(username))); //encrypting with base64 editor.putString("ps", enc(enc(enc(password)))); editor.putInt("run", 1); editor.apply(); } void Register(){ //msg(username); new Regis().execute("my string parameter"); } private class Regis extends AsyncTask<String, Integer, String> { // Runs in UI before background thread is called @Override protected void onPreExecute() { dialog =new SpotsDialog.Builder() .setContext(c) .setTheme(R.style.regis) .build(); dialog.show(); } // This is run in a background thread @Override protected String doInBackground(String... params) { StringBuffer sb2=new StringBuffer(""); link2 = "http://satyajiit.xyz/quiz/newUser.php?user="+username+"&pass="+password+"&cor="+cor; try { URL url2 = new URL(link2); HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(); request.setURI(new URI(link2)); HttpResponse response = client.execute(request); BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); String line2 = ""; while ((line2 = in.readLine())!=null) { sb2.append(line2); break; } in.close(); } catch(Exception e){ sb2=new StringBuffer("sads"); } return String.valueOf(sb2); } // This is called from background thread but runs in UI @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); // Do things like update the progress bar } // This runs in UI when background thread finishes @Override protected void onPostExecute(String result2) { super.onPostExecute(result2); if (dialog.isShowing()) dialog.dismiss(); if(result2.contains("Exist")) { msg("UserID already Exist..Please Choose new"); } else if(result2.contains("Success")) { msg("Successfully Created...Welcome!"); save(); Intent intent = c.getIntent(); c.finish(); c.startActivity(intent); } else msg("Network Error or Server Down..please Try Again"); // Do things like hide the progress bar or change a TextView } } String enc(String s){ byte[] data = new byte[0]; try { data = s.getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String base64 = Base64.encodeToString(data, Base64.DEFAULT); return base64; } }