Last active
August 5, 2019 20:33
-
-
Save ronnieotieno/dee01e3202f49ebdaebc273008b0b19b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.travelmantics; | |
import android.content.Intent; | |
import android.content.res.Resources; | |
import android.net.Uri; | |
//import android.support.annotation.NonNull; | |
//mport android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.util.Log; | |
import android.view.Menu; | |
import android.view.MenuInflater; | |
import android.view.MenuItem; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.EditText; | |
import android.widget.ImageView; | |
import android.widget.Toast; | |
import androidx.annotation.NonNull; | |
import androidx.appcompat.app.AppCompatActivity; | |
import androidx.appcompat.app.AppCompatActivity; | |
import com.google.android.gms.tasks.OnFailureListener; | |
import com.google.android.gms.tasks.OnSuccessListener; | |
import com.google.firebase.database.DatabaseReference; | |
import com.google.firebase.database.FirebaseDatabase; | |
import com.google.firebase.storage.StorageReference; | |
import com.google.firebase.storage.UploadTask; | |
import com.squareup.picasso.Picasso; | |
import static android.app.Activity.RESULT_OK; | |
public class DealActivity extends AppCompatActivity { | |
private FirebaseDatabase mFirebaseDatabase; | |
private DatabaseReference mDatabaseReference; | |
private static final int PICTURE_RESULT = 42; //the answer to everything | |
EditText txtTitle; | |
EditText txtDescription; | |
EditText txtPrice; | |
ImageView imageView; | |
TravelDeal deal; | |
String url; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_deal); | |
mFirebaseDatabase = FirebaseUtil.mFirebaseDatabase; | |
mDatabaseReference = FirebaseUtil.mDatabaseReference; | |
txtTitle = (EditText) findViewById(R.id.txtTitle); | |
txtDescription = (EditText) findViewById(R.id.txtDescription); | |
txtPrice = (EditText) findViewById(R.id.txtPrice); | |
imageView = (ImageView) findViewById(R.id.image); | |
Intent intent = getIntent(); | |
TravelDeal deal = (TravelDeal) intent.getSerializableExtra("Deal"); | |
if (deal==null) { | |
deal = new TravelDeal(); | |
} | |
this.deal = deal; | |
txtTitle.setText(deal.getTitle()); | |
txtDescription.setText(deal.getDescription()); | |
txtPrice.setText(deal.getPrice()); | |
showImage(deal.getImageUrl()); | |
Button btnImage = findViewById(R.id.btnImage); | |
btnImage.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); | |
intent.setType("image/jpeg"); | |
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); | |
startActivityForResult(intent.createChooser(intent, | |
"Insert Picture"), PICTURE_RESULT); | |
} | |
}); | |
} | |
@Override | |
public boolean onOptionsItemSelected(MenuItem item) { | |
switch (item.getItemId()) { | |
case R.id.save_menu: | |
saveDeal(); | |
Toast.makeText(this, "Deal saved", Toast.LENGTH_LONG).show(); | |
clean(); | |
backToList(); | |
return true; | |
case R.id.delete_menu: | |
deleteDeal(); | |
Toast.makeText(this, "Deal Deleted", Toast.LENGTH_LONG).show(); | |
backToList(); | |
return true; | |
default: | |
return super.onOptionsItemSelected(item); | |
} | |
} | |
@Override | |
public boolean onCreateOptionsMenu(Menu menu) { | |
MenuInflater inflater = getMenuInflater(); | |
inflater.inflate(R.menu.save_menu, menu); | |
if (FirebaseUtil.isAdmin) { | |
menu.findItem(R.id.delete_menu).setVisible(true); | |
menu.findItem(R.id.save_menu).setVisible(true); | |
enableEditTexts(true); | |
findViewById(R.id.btnImage).setEnabled(true); | |
} | |
else { | |
menu.findItem(R.id.delete_menu).setVisible(false); | |
menu.findItem(R.id.save_menu).setVisible(false); | |
enableEditTexts(false); | |
findViewById(R.id.btnImage).setEnabled(false); | |
} | |
return true; | |
} | |
@Override | |
protected void onActivityResult(int requestCode, int resultCode, Intent data) { | |
super.onActivityResult(requestCode, resultCode, data); | |
if (requestCode == PICTURE_RESULT && resultCode == RESULT_OK) { | |
Uri imageUri = data.getData(); | |
StorageReference ref = FirebaseUtil.mStorageRef.child(imageUri.getLastPathSegment()); | |
ref.putFile(imageUri).addOnSuccessListener(this, new OnSuccessListener<UploadTask.TaskSnapshot>() { | |
@Override | |
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot){ | |
Task<Uri> urlTask = taskSnapshot.getStorage().getDownloadUrl(); | |
while | |
(!urlTask.isSuccessful()) ; | |
Uri downloadUrl = urlTask.getResult(); | |
url = downloadUrl.toString() ; | |
// deal.setImageUrl(url); | |
Log.d("Url: ", url); | |
Log.d("Name", pictureName); | |
showImage(url); | |
} | |
}); | |
} | |
} | |
private void saveDeal() { | |
deal.setTitle(txtTitle.getText().toString()); | |
deal.setDescription(txtDescription.getText().toString()); | |
deal.setPrice(txtPrice.getText().toString()); | |
deal.setImageurl(url); | |
if(deal.getId()==null) { | |
mDatabaseReference.push().setValue(deal); | |
} | |
else { | |
mDatabaseReference.child(deal.getId()).setValue(deal); | |
} | |
} | |
private void deleteDeal() { | |
if (deal == null) { | |
Toast.makeText(this, "Please save the deal before deleting", Toast.LENGTH_SHORT).show(); | |
return; | |
} | |
mDatabaseReference.child(deal.getId()).removeValue(); | |
Log.d("image name", deal.getImageName()); | |
if(deal.getImageName() != null && deal.getImageName().isEmpty() == false) { | |
StorageReference picRef = FirebaseUtil.mStorage.getReference().child(deal.getImageName()); | |
picRef.delete().addOnSuccessListener(new OnSuccessListener<Void>() { | |
@Override | |
public void onSuccess(Void aVoid) { | |
Log.d("Delete Image", "Image Successfully Deleted"); | |
} | |
}).addOnFailureListener(new OnFailureListener() { | |
@Override | |
public void onFailure(@NonNull Exception e) { | |
Log.d("Delete Image", e.getMessage()); | |
} | |
}); | |
} | |
} | |
private void backToList() { | |
Intent intent = new Intent(this, ListActivity.class); | |
startActivity(intent); | |
} | |
private void clean() { | |
txtTitle.setText(""); | |
txtPrice.setText(""); | |
txtDescription.setText(""); | |
txtTitle.requestFocus(); | |
} | |
private void enableEditTexts(boolean isEnabled) { | |
txtTitle.setEnabled(isEnabled); | |
txtDescription.setEnabled(isEnabled); | |
txtPrice.setEnabled(isEnabled); | |
} | |
private void showImage(String url) { | |
if (url != null && url.isEmpty() == false) { | |
int width = Resources.getSystem().getDisplayMetrics().widthPixels; | |
Picasso.with(this) | |
.load(url) | |
.resize(width, width*2/3) | |
.centerCrop() | |
.into(imageView); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment