From a347b6790757174acd5a0bd57bdc9e03adff93f7 Mon Sep 17 00:00:00 2001 From: nuclearfog Date: Thu, 30 Apr 2020 11:50:17 +0200 Subject: [PATCH] bug fix, layout fix --- .../twidda/activity/MediaViewer.java | 34 +++--- .../twidda/activity/MessagePopup.java | 14 +-- .../twidda/activity/ProfileEditor.java | 19 ++-- .../twidda/activity/TweetDetail.java | 9 -- .../twidda/backend/ImageLoader.java | 15 +-- app/src/main/res/layout/item_dm.xml | 4 +- app/src/main/res/layout/page_editprofile.xml | 4 +- app/src/main/res/layout/page_profile.xml | 103 ++++++++++-------- app/src/main/res/values-de-rDE/strings.xml | 1 + app/src/main/res/values/dimens.xml | 3 +- app/src/main/res/values/strings.xml | 1 + 11 files changed, 102 insertions(+), 105 deletions(-) diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/MediaViewer.java b/app/src/main/java/org/nuclearfog/twidda/activity/MediaViewer.java index 4576303b..46bfee0e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/MediaViewer.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/MediaViewer.java @@ -17,7 +17,7 @@ import android.widget.ProgressBar; import android.widget.Toast; import android.widget.VideoView; -import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -33,7 +33,7 @@ import java.util.Date; import java.util.Locale; import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE; -import static android.content.pm.PackageManager.PERMISSION_GRANTED; +import static android.content.pm.PackageManager.PERMISSION_DENIED; import static android.media.MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; @@ -176,21 +176,22 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen @Override public void onImageClick(Bitmap image) { - setImage(image); + changeImage(image); } @Override public void onImageTouch(Bitmap image) { + boolean accessGranted = true; if (type == MEDIAVIEWER_IMAGE) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int check = checkSelfPermission(WRITE_EXTERNAL_STORAGE); - if (check == PERMISSION_GRANTED) { - storeImage(image); - } else { + if (check == PERMISSION_DENIED) { requestPermissions(REQ_WRITE_SD, REQCODE_SD); + accessGranted = false; } - } else { + } + if (accessGranted) { storeImage(image); } } @@ -225,17 +226,20 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen } - public ImageAdapter getAdapter() { - return adapter; + public void setImage(@Nullable Bitmap image) { + if (image != null) { + if (adapter.isEmpty()) { + changeImage(image); + image_progress.setVisibility(View.INVISIBLE); + } + adapter.addLast(image); + } else { + adapter.disableLoading(); + } } - public void disableProgressbar() { - image_progress.setVisibility(View.INVISIBLE); - } - - - public void setImage(@NonNull Bitmap image) { + private void changeImage(Bitmap image) { float ratio = image.getWidth() / (float) width; int destHeight = (int) (image.getHeight() / ratio); image = Bitmap.createScaledBitmap(image, width, destHeight, false); diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/MessagePopup.java b/app/src/main/java/org/nuclearfog/twidda/activity/MessagePopup.java index 855d29ea..31410445 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/MessagePopup.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/MessagePopup.java @@ -24,6 +24,7 @@ import org.nuclearfog.twidda.database.GlobalSettings; import static android.Manifest.permission.READ_EXTERNAL_STORAGE; import static android.content.Intent.ACTION_PICK; +import static android.content.pm.PackageManager.PERMISSION_DENIED; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.AsyncTask.Status.RUNNING; import static android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI; @@ -147,18 +148,15 @@ public class MessagePopup extends AppCompatActivity implements OnClickListener { private void getMedia() { + boolean accessGranted = true; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int check = checkSelfPermission(READ_EXTERNAL_STORAGE); - if (check == PERMISSION_GRANTED) { - Intent galleryIntent = new Intent(ACTION_PICK, EXTERNAL_CONTENT_URI); - if (galleryIntent.resolveActivity(getPackageManager()) != null) - startActivityForResult(galleryIntent, REQ_PERM_READ); - else - Toast.makeText(getApplicationContext(), R.string.error_no_media_app, LENGTH_SHORT).show(); - } else { + if (check == PERMISSION_DENIED) { requestPermissions(PERM_READ, REQ_PERM_READ); + accessGranted = false; } - } else { + } + if (accessGranted) { Intent galleryIntent = new Intent(ACTION_PICK, EXTERNAL_CONTENT_URI); if (galleryIntent.resolveActivity(getPackageManager()) != null) startActivityForResult(galleryIntent, REQ_PERM_READ); diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/ProfileEditor.java b/app/src/main/java/org/nuclearfog/twidda/activity/ProfileEditor.java index f85e5d8e..a8e3592e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/ProfileEditor.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/ProfileEditor.java @@ -130,7 +130,11 @@ public class ProfileEditor extends AppCompatActivity implements OnClickListener String userLoc = loc.getText().toString(); String userBio = bio.getText().toString(); if (username.trim().isEmpty()) { - Toast.makeText(this, R.string.error_empty_name, LENGTH_SHORT).show(); + String errMsg = getString(R.string.error_empty_name); + name.setError(errMsg); + } else if (!userLink.isEmpty() && userLink.contains(" ")) { + String errMsg = getString(R.string.error_invalid_link); + link.setError(errMsg); } else { UserHolder userHolder = new UserHolder(username, userLink, userLoc, userBio, profileLink, bannerLink); editorAsync = new ProfileUpdater(this, userHolder); @@ -208,18 +212,15 @@ public class ProfileEditor extends AppCompatActivity implements OnClickListener private void getMedia(int request) { + boolean accessGranted = true; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int check = checkSelfPermission(READ_EXTERNAL_STORAGE); - if (check == PackageManager.PERMISSION_GRANTED) { - Intent media = new Intent(ACTION_PICK, EXTERNAL_CONTENT_URI); - if (media.resolveActivity(getPackageManager()) != null) - startActivityForResult(media, request); - else - Toast.makeText(getApplicationContext(), R.string.error_no_media_app, LENGTH_SHORT).show(); - } else { + if (check == PackageManager.PERMISSION_DENIED) { requestPermissions(PERM_READ, REQ_PERM); + accessGranted = false; } - } else { + } + if (accessGranted) { Intent media = new Intent(ACTION_PICK, EXTERNAL_CONTENT_URI); if (media.resolveActivity(getPackageManager()) != null) startActivityForResult(media, request); diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/TweetDetail.java b/app/src/main/java/org/nuclearfog/twidda/activity/TweetDetail.java index 42601b8d..e9ef27a8 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/TweetDetail.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/TweetDetail.java @@ -63,7 +63,6 @@ import static org.nuclearfog.twidda.activity.TweetPopup.KEY_TWEETPOPUP_REPLYID; import static org.nuclearfog.twidda.activity.UserDetail.KEY_USERDETAIL_ID; import static org.nuclearfog.twidda.activity.UserDetail.KEY_USERDETAIL_MODE; import static org.nuclearfog.twidda.activity.UserDetail.USERLIST_RETWEETS; -import static org.nuclearfog.twidda.activity.UserDetail.USERLSIT_FAVORITS; public class TweetDetail extends AppCompatActivity implements OnClickListener, OnTouchListener, @@ -136,7 +135,6 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, O replyName.setOnClickListener(this); ansButton.setOnClickListener(this); rtwButton.setOnClickListener(this); - favButton.setOnClickListener(this); rtwButton.setOnLongClickListener(this); favButton.setOnLongClickListener(this); profile_img.setOnClickListener(this); @@ -241,13 +239,6 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, O startActivity(userList); break; - case R.id.tweet_favorit: - userList = new Intent(this, UserDetail.class); - userList.putExtra(KEY_USERDETAIL_ID, tweetID); - userList.putExtra(KEY_USERDETAIL_MODE, USERLSIT_FAVORITS); - startActivity(userList); - break; - case R.id.profileimage_detail: if (tweet != null) { Intent profile = new Intent(getApplicationContext(), UserProfile.class); diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/ImageLoader.java b/app/src/main/java/org/nuclearfog/twidda/backend/ImageLoader.java index 4f69da6a..a5dd5be0 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/ImageLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/ImageLoader.java @@ -9,7 +9,6 @@ import androidx.annotation.NonNull; import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.activity.MediaViewer; -import org.nuclearfog.twidda.adapter.ImageAdapter; import java.io.InputStream; import java.lang.ref.WeakReference; @@ -26,7 +25,6 @@ public class ImageLoader extends AsyncTask { } private WeakReference ui; - private ImageAdapter imageAdapter; private Action action; @@ -38,7 +36,6 @@ public class ImageLoader extends AsyncTask { */ public ImageLoader(@NonNull MediaViewer context, Action action) { ui = new WeakReference<>(context); - imageAdapter = context.getAdapter(); this.action = action; } @@ -75,14 +72,8 @@ public class ImageLoader extends AsyncTask { @Override protected void onProgressUpdate(Bitmap[] btm) { - Bitmap image = btm[0]; - if (ui.get() != null) { - if (imageAdapter.isEmpty()) { - ui.get().setImage(image); - ui.get().disableProgressbar(); - } - imageAdapter.addLast(btm[0]); - } + if (ui.get() != null) + ui.get().setImage(btm[0]); } @@ -90,7 +81,7 @@ public class ImageLoader extends AsyncTask { protected void onPostExecute(Boolean success) { if (ui.get() != null) { if (success) { - imageAdapter.disableLoading(); + ui.get().setImage(null); } else { Toast.makeText(ui.get(), R.string.error_image_download, Toast.LENGTH_SHORT).show(); ui.get().finish(); diff --git a/app/src/main/res/layout/item_dm.xml b/app/src/main/res/layout/item_dm.xml index d3e1f4b6..ff8dde75 100644 --- a/app/src/main/res/layout/item_dm.xml +++ b/app/src/main/res/layout/item_dm.xml @@ -112,8 +112,8 @@ style="@style/Widget.AppCompat.Button.Borderless" android:layout_width="wrap_content" android:layout_height="@dimen/dm_item_button_height" - android:layout_marginEnd="@dimen/padding_side" - android:layout_marginRight="@dimen/padding_side" + android:layout_marginEnd="@dimen/margin_side" + android:layout_marginRight="@dimen/margin_side" android:background="@drawable/button" android:text="@string/dm_answer" android:textSize="@dimen/textsize_button" /> diff --git a/app/src/main/res/layout/page_editprofile.xml b/app/src/main/res/layout/page_editprofile.xml index dd77ff43..95fe6e43 100644 --- a/app/src/main/res/layout/page_editprofile.xml +++ b/app/src/main/res/layout/page_editprofile.xml @@ -55,8 +55,8 @@ android:layout_width="@dimen/profile_image" android:layout_height="@dimen/profile_image" android:layout_gravity="bottom" - android:layout_marginStart="@dimen/padding_side" - android:layout_marginLeft="@dimen/padding_side" + android:layout_marginStart="@dimen/margin_side" + android:layout_marginLeft="@dimen/margin_side" android:adjustViewBounds="true" android:contentDescription="@string/image_preview" /> diff --git a/app/src/main/res/layout/page_profile.xml b/app/src/main/res/layout/page_profile.xml index ad077c35..1aba5b2f 100644 --- a/app/src/main/res/layout/page_profile.xml +++ b/app/src/main/res/layout/page_profile.xml @@ -152,59 +152,68 @@ + - + android:layout_height="wrap_content" + android:layout_marginLeft="@dimen/margin_side" + android:layout_marginStart="@dimen/margin_side" + android:layout_marginRight="@dimen/margin_side" + android:layout_marginEnd="@dimen/margin_side" + android:layout_marginTop="@dimen/profile_tv_margin" + android:fadeScrollbars="false" + android:linksClickable="true" + android:maxLines="@integer/text_bio_lines" + android:scrollbars="vertical" /> - + - + - - - - + diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index f99b3a87..266bf380 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -148,4 +148,5 @@ Nutzernamen eingeben Profilbanner Profilbanner hinzufügen + Ungültiger Link! \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index d3853db6..2d607250 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -13,10 +13,11 @@ 5dp 2dp 20dp + 10dp - 10dp 20dp 5dp + 10dp 5dp 150dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9cc43e35..5859e261 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -149,4 +149,5 @@ Enter username Profile banner image add banner + invalid link! \ No newline at end of file