Skip to content

Instantly share code, notes, and snippets.

@ronnieotieno
Created August 3, 2019 17:53
Show Gist options
  • Save ronnieotieno/74e2677234e2017377b0799f8fc38446 to your computer and use it in GitHub Desktop.
Save ronnieotieno/74e2677234e2017377b0799f8fc38446 to your computer and use it in GitHub Desktop.
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