Created
August 3, 2019 17:53
-
-
Save ronnieotieno/74e2677234e2017377b0799f8fc38446 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.Context; | |
import android.content.Intent; | |
import android.content.res.Resources; | |
import android.graphics.Bitmap; | |
import android.net.Uri; | |
import android.os.Build; | |
import android.os.Bundle; | |
import android.provider.MediaStore; | |
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.ProgressBar; | |
import android.widget.Toast; | |
import androidx.annotation.NonNull; | |
import androidx.appcompat.app.AppCompatActivity; | |
import com.google.android.gms.tasks.OnFailureListener; | |
import com.google.android.gms.tasks.OnSuccessListener; | |
import com.google.android.gms.tasks.Task; | |
import com.google.firebase.database.DatabaseReference; | |
import com.google.firebase.database.FirebaseDatabase; | |
import com.google.firebase.database.annotations.Nullable; | |
import com.google.firebase.storage.FirebaseStorage; | |
import com.google.firebase.storage.StorageReference; | |
import com.google.firebase.storage.UploadTask; | |
import com.squareup.picasso.Picasso; | |
import java.io.IOException; | |
public class DealActivity extends AppCompatActivity { | |
private FirebaseDatabase mFirebaseDatabase; | |
private DatabaseReference mDAtabaseReference; | |
private final static int PICTURE_RESULT = 42; | |
EditText txtTitle; | |
EditText txtDescription; | |
EditText txtPrice; | |
TravelDeal deal; | |
ImageView imageView; | |
ProgressBar progressBar; | |
Uri imageUri; | |
String profileImageUrl; | |
Context context; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_deal); | |
mFirebaseDatabase = FireBaseUtil.mFirebaseDatabase; | |
mDAtabaseReference = FireBaseUtil.mDatabaseReference; | |
txtTitle = findViewById(R.id.txtname); | |
txtDescription = findViewById(R.id.txtdescription); | |
txtPrice = findViewById(R.id.txtprice); | |
imageView = findViewById(R.id.detail_image); | |
Intent intent = getIntent(); | |
//creating a new deal | |
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.btn_image); | |
btnImage.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); | |
intent.setType("image/jpeg"); | |
//pick images that are only stored in the device | |
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(); | |
//return back to ListActivity After saving | |
backToList(); | |
return true; | |
case R.id.delete_menu: | |
deleteDeal(); | |
Toast.makeText(this, "Deal Deleted", Toast.LENGTH_LONG).show(); | |
//return back to ListActivity After deleting | |
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); | |
enableEditText(true); | |
} else { | |
menu.findItem(R.id.delete_menu).setVisible(false); | |
menu.findItem(R.id.save_menu).setVisible(false); | |
enableEditText(false); | |
} | |
return true; | |
} | |
@Override | |
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { | |
super.onActivityResult(requestCode, resultCode, data); | |
if (requestCode == PICTURE_RESULT && resultCode == RESULT_OK && data != null && data.getData() != null) { | |
final Uri imageUri = data.getData(); | |
StorageReference ref = FireBaseUtil.mStorageRef.child(((Uri) 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(); | |
profileImageUrl = downloadUrl.toString(); | |
showImage(profileImageUrl); | |
} | |
}); | |
}} | |
private void SaveDeal() { | |
deal.setTitle(txtTitle.getText().toString()); | |
deal.setDescription(txtDescription.getText().toString()); | |
deal.setPrice(txtPrice.getText().toString()); | |
deal.setImageUrl(profileImageUrl); | |
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_LONG).show(); | |
return; | |
} | |
mDAtabaseReference.child(deal.getId()).removeValue(); | |
} | |
//back to listActivity after saving | |
private void backToList() { | |
Intent intent = new Intent(this, ListActivity.class); | |
startActivity(intent); | |
} | |
private void clean() { | |
txtTitle.setText(""); | |
txtDescription.setText(""); | |
txtPrice.setText(""); | |
txtTitle.requestFocus(); | |
} | |
private void enableEditText(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.get().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