diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser index eb35c4a..23e45fb 100644 Binary files a/.idea/caches/gradle_models.ser and b/.idea/caches/gradle_models.ser differ diff --git a/app/build.gradle b/app/build.gradle index 9bf284c..65dd78c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ android { compileSdkVersion 28 defaultConfig { applicationId "at.smartshopper.smartshopper" - minSdkVersion 19 + minSdkVersion 26 targetSdkVersion 28 versionCode 1 versionName "1.0" @@ -30,10 +30,10 @@ dependencies { implementation 'com.google.firebase:firebase-auth:16.1.0' implementation 'com.google.firebase:firebase-messaging:17.3.4' implementation 'com.google.firebase:firebase-core:16.0.6' + implementation 'com.google.firebase:firebase-storage:16.0.5' implementation 'com.firebase:firebase-jobdispatcher:0.8.5' implementation 'com.google.android.gms:play-services-auth:16.0.1' implementation 'com.firebaseui:firebase-ui-auth:4.1.0' - // http://mvnrepository.com/artifact/postgresql/postgresql implementation group: 'postgresql', name: 'postgresql', version: '9.1-901.jdbc4' implementation 'com.squareup.picasso:picasso:2.71828' implementation 'com.android.support:swiperefreshlayout:28.0.0-alpha1' @@ -42,5 +42,4 @@ dependencies { implementation 'com.android.support:recyclerview-v7:28.0.0' implementation 'com.android.support:support-v4:28.0.0' implementation 'cz.msebera.android:httpclient:4.4.1.2' - } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3666b54..516d74d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,7 +12,10 @@ android:supportsRtl="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true"> - + + diff --git a/app/src/main/java/at/smartshopper/smartshopper/activitys/Dash.java b/app/src/main/java/at/smartshopper/smartshopper/activitys/Dash.java index 59967f0..392a1c4 100644 --- a/app/src/main/java/at/smartshopper/smartshopper/activitys/Dash.java +++ b/app/src/main/java/at/smartshopper/smartshopper/activitys/Dash.java @@ -607,6 +607,10 @@ public class Dash extends AppCompatActivity implements ShoppinglistAdapter.OnIte Intent intent = new Intent(Dash.this, DoneItemActivity.class); startActivity(intent); return true; + case R.id.editUser: + Intent intent2 = new Intent(Dash.this, EditUser.class); + startActivity(intent2); + return true; default: // If we got here, the user's action was not recognized. // Invoke the superclass to handle it. diff --git a/app/src/main/java/at/smartshopper/smartshopper/activitys/EditUser.java b/app/src/main/java/at/smartshopper/smartshopper/activitys/EditUser.java new file mode 100644 index 0000000..d4dd0c6 --- /dev/null +++ b/app/src/main/java/at/smartshopper/smartshopper/activitys/EditUser.java @@ -0,0 +1,128 @@ +package at.smartshopper.smartshopper.activitys; + +import android.app.Activity; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; + +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; +import com.google.firebase.auth.UserProfileChangeRequest; + +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.net.URL; + + +import at.smartshopper.smartshopper.R; +import at.smartshopper.smartshopper.storage.ImgSaver; + +public class EditUser extends Activity { + + private EditText editname; + private ImageView userbild; + private Button finish, chooseImg; + private Bitmap userBitmap; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_edit_user); + userbild = (ImageView) findViewById(R.id.userImage); + editname = (EditText) findViewById(R.id.editName); + finish = (Button) findViewById(R.id.editFinish); + chooseImg = (Button)findViewById(R.id.chooseImg); + + final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); + if (user != null) { + // Name, email address, and profile photo Url + String name = user.getDisplayName(); + Uri photoUrl = user.getPhotoUrl(); + + userbild.setImageDrawable(LoadImageFromWebOperations(photoUrl.toString())); + + editname.setText(name); + + + } + + chooseImg.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent getIntent = new Intent(Intent.ACTION_GET_CONTENT); + getIntent.setType("image/*"); + + Intent pickIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); + pickIntent.setType("image/*"); + + Intent chooserIntent = Intent.createChooser(getIntent, "Select Image"); + chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] {pickIntent}); + + startActivityForResult(chooserIntent, 1); + } + }); + + finish.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Uri uri = ImgSaver.uploadImg(userBitmap, FirebaseAuth.getInstance().getUid()); + Log.d("SmartShopper", "https://lh3.googleusercontent.com/-ZBYkQh5lTyA/AAAAAAAAAAI/AAAAAAAAEas/zCXYWfty-FE/photo.jpg"); + UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder() + .setDisplayName(editname.getText().toString()) + .setPhotoUri(uri) + .build(); + + user.updateProfile(profileUpdates) + .addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + Log.d("SmartShopper", "User profile updated."); + finish(); + } + } + }); + } + }); + } + + + + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) + { + if (requestCode == 1) { + try { + final Uri imageUri = data.getData(); + final InputStream imageStream = getContentResolver().openInputStream(imageUri); + final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream); + userBitmap = selectedImage; + userbild.setImageBitmap(selectedImage); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } + } + + private Drawable LoadImageFromWebOperations(String url) { + try { + InputStream is = (InputStream) new URL(url).getContent(); + Drawable d = Drawable.createFromStream(is, "src name"); + return d; + } catch (Exception e) { + return null; + } + } +} diff --git a/app/src/main/java/at/smartshopper/smartshopper/storage/ImgSaver.java b/app/src/main/java/at/smartshopper/smartshopper/storage/ImgSaver.java new file mode 100644 index 0000000..b64a531 --- /dev/null +++ b/app/src/main/java/at/smartshopper/smartshopper/storage/ImgSaver.java @@ -0,0 +1,65 @@ +package at.smartshopper.smartshopper.storage; + +import android.graphics.Bitmap; +import android.net.Uri; +import android.support.annotation.NonNull; +import android.util.Log; +import android.widget.Toast; + +import com.google.android.gms.tasks.Continuation; +import com.google.android.gms.tasks.OnCompleteListener; +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.storage.FirebaseStorage; +import com.google.firebase.storage.StorageReference; +import com.google.firebase.storage.UploadTask; + +import java.io.ByteArrayOutputStream; + +public class ImgSaver { + + private static FirebaseStorage storage = FirebaseStorage.getInstance(); + private static Uri downloadUriFinal = null; + + public static Uri uploadImg(Bitmap bitmap, String uid){ + final StorageReference storageRef = storage.getReference("/" + uid); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); + byte[] data = baos.toByteArray(); + + final UploadTask uploadTask = storageRef.putBytes(data); + uploadTask.addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception exception) { + // Handle unsuccessful uploads + Log.d("SmartShopper", exception.getMessage()); + } + }).addOnSuccessListener(new OnSuccessListener() { + @Override + public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { + // taskSnapshot.getMetadata() contains file metadata such as size, content-type, etc. + // ... + + + } + }); + + storage.getReference().child("/" + uid).getDownloadUrl().addOnSuccessListener(new OnSuccessListener() { + @Override + public void onSuccess(Uri uri) { + Log.d("SmartShopper", uri.toString()); + + } + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception exception) { + // Handle any errors + } + }); + + + return downloadUriFinal; + } +} diff --git a/app/src/main/res/layout/activity_edit_user.xml b/app/src/main/res/layout/activity_edit_user.xml new file mode 100644 index 0000000..f5095e8 --- /dev/null +++ b/app/src/main/res/layout/activity_edit_user.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +