diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/AppSettings.java b/app/src/main/java/org/nuclearfog/twidda/activity/AppSettings.java index b6bc85a2..0ae41ab8 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/AppSettings.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/AppSettings.java @@ -62,7 +62,8 @@ public class AppSettings extends AppCompatActivity implements OnClickListener, O BACKGROUND, FONTCOLOR, HIGHLIGHT, - POPUPCOLOR + POPUPCOLOR, + NONE } private GlobalSettings settings; @@ -75,8 +76,8 @@ public class AppSettings extends AppCompatActivity implements OnClickListener, O private LocationAdapter locationAdapter; private View root, colorButton1_edge; - private ColorMode mode; - private int color; + private ColorMode mode = ColorMode.NONE; + private int color = 0; @Override protected void onCreate(@Nullable Bundle b) { diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/ListDetail.java b/app/src/main/java/org/nuclearfog/twidda/activity/ListDetail.java index bb242527..8077a3d1 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/ListDetail.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/ListDetail.java @@ -26,7 +26,8 @@ public class ListDetail extends AppCompatActivity implements OnTabSelectedListen private FragmentAdapter adapter; private ViewPager pager; - private int tabIndex; + + private int tabIndex = 0; @Override protected void onCreate(@Nullable Bundle b) { diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/LoginPage.java b/app/src/main/java/org/nuclearfog/twidda/activity/LoginPage.java index 457d183e..d3e55925 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/LoginPage.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/LoginPage.java @@ -36,7 +36,8 @@ public class LoginPage extends AppCompatActivity implements OnClickListener { private Button btnLink, btnVeri; private EditText pin; private View root; - private String link; + private @Nullable + String link; @Override protected void onCreate(@Nullable Bundle b) { diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/MainActivity.java b/app/src/main/java/org/nuclearfog/twidda/activity/MainActivity.java index 2add1054..e712053a 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/MainActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/MainActivity.java @@ -42,6 +42,7 @@ public class MainActivity extends AppCompatActivity implements OnTabSelectedList private ViewPager pager; private View root; private long homeId; + private int tabIndex = 0; static { 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 b09c8345..50ab42c7 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/MediaViewer.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/MediaViewer.java @@ -1,7 +1,6 @@ package org.nuclearfog.twidda.activity; import android.graphics.Bitmap; -import android.graphics.Point; import android.media.MediaPlayer; import android.media.MediaPlayer.OnInfoListener; import android.media.MediaPlayer.OnPreparedListener; @@ -10,7 +9,6 @@ import android.os.AsyncTask.Status; import android.os.Build; import android.os.Bundle; import android.provider.MediaStore; -import android.view.Display; import android.view.View; import android.widget.MediaController; import android.widget.ProgressBar; @@ -68,7 +66,7 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen private ZoomView zoomImage; private String[] link; private int type; - private int width; + private int lastPos = 0; @@ -99,10 +97,6 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen imageWindow.setVisibility(VISIBLE); imageList.setLayoutManager(new LinearLayoutManager(this, HORIZONTAL, false)); imageList.setAdapter(adapter); - Display d = getWindowManager().getDefaultDisplay(); - Point size = new Point(); - d.getSize(size); - width = size.x; break; case MEDIAVIEWER_ANGIF: @@ -246,9 +240,12 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen private void changeImage(Bitmap image) { - float ratio = image.getWidth() / (float) width; - int destHeight = (int) (image.getHeight() / ratio); - image = Bitmap.createScaledBitmap(image, width, destHeight, false); + int width = zoomImage.getMeasuredWidth(); + if (width > 0 && image.getWidth() > width) { + float ratio = image.getWidth() / (float) width; + int destHeight = (int) (image.getHeight() / ratio); + image = Bitmap.createScaledBitmap(image, width, destHeight, false); + } zoomImage.reset(); zoomImage.setImageBitmap(image); } 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 d5ece023..76ecea4d 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/MessagePopup.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/MessagePopup.java @@ -48,9 +48,10 @@ public class MessagePopup extends AppCompatActivity implements OnClickListener, private static final int REQ_PERM_READ = 4; private MessageUploader messageAsync; - private EditText receiver, text; + private EditText receiver, message; private Dialog loadingCircle; - private String mediaPath = ""; + private @Nullable + String mediaPath; @Override @@ -61,15 +62,15 @@ public class MessagePopup extends AppCompatActivity implements OnClickListener, View send = findViewById(R.id.dm_send); View media = findViewById(R.id.dm_media); receiver = findViewById(R.id.dm_receiver); - text = findViewById(R.id.dm_text); + message = findViewById(R.id.dm_text); loadingCircle = new Dialog(this, R.style.LoadingDialog); View load = View.inflate(this, R.layout.item_load, null); View cancelButton = load.findViewById(R.id.kill_button); Bundle param = getIntent().getExtras(); if (param != null && param.containsKey(KEY_DM_PREFIX)) { - String addtion = param.getString(KEY_DM_PREFIX); - receiver.append(addtion); + String prefix = param.getString(KEY_DM_PREFIX); + receiver.append(prefix); } GlobalSettings settings = GlobalSettings.getInstance(this); @@ -89,7 +90,7 @@ public class MessagePopup extends AppCompatActivity implements OnClickListener, @Override public void onBackPressed() { - if (text.getText().toString().isEmpty() && mediaPath.isEmpty()) { + if (receiver.getText().length() == 0 && message.getText().length() == 0 && mediaPath == null) { super.onBackPressed(); } else { Builder closeDialog = new Builder(this, R.style.ConfirmDialog); @@ -142,8 +143,8 @@ public class MessagePopup extends AppCompatActivity implements OnClickListener, switch (v.getId()) { case R.id.dm_send: String username = receiver.getText().toString(); - String message = text.getText().toString(); - if (!username.trim().isEmpty() && (!message.trim().isEmpty() || !mediaPath.isEmpty())) { + String message = this.message.getText().toString(); + if (!username.trim().isEmpty() && (!message.trim().isEmpty() || mediaPath != null)) { MessageHolder messageHolder = new MessageHolder(username, message, mediaPath); messageAsync = new MessageUploader(this, messageHolder); messageAsync.execute(); @@ -153,7 +154,7 @@ public class MessagePopup extends AppCompatActivity implements OnClickListener, break; case R.id.dm_media: - if (mediaPath.trim().isEmpty()) + if (mediaPath == null) getMedia(); else { Intent image = new Intent(this, MediaViewer.class); diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/TweetPopup.java b/app/src/main/java/org/nuclearfog/twidda/activity/TweetPopup.java index 6d712649..f883de95 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/TweetPopup.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/TweetPopup.java @@ -62,7 +62,7 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener, Lo NONE, GIF, IMAGE, - VIDEO, + VIDEO } private static final String[] PERM_STORAGE = {READ_EXTERNAL_STORAGE}; @@ -83,10 +83,9 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener, Lo private Dialog loadingCircle; private TextView imgCount; private EditText tweetText; - private String addition = ""; - private long inReplyId = 0; private MediaType selectedFormat = MediaType.NONE; + private long inReplyId = 0; @Override protected void onCreate(@Nullable Bundle b) { @@ -112,7 +111,10 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener, Lo Bundle param = getIntent().getExtras(); if (param != null) { inReplyId = param.getLong(KEY_TWEETPOPUP_REPLYID, 0); - addition = param.getString(KEY_TWEETPOPUP_PREFIX, "") + " "; + if (param.containsKey(KEY_TWEETPOPUP_PREFIX)) { + String addition = param.getString(KEY_TWEETPOPUP_PREFIX) + " "; + tweetText.append(addition); + } } loadingCircle.requestWindowFeature(FEATURE_NO_TITLE); @@ -120,7 +122,6 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener, Lo loadingCircle.setContentView(load); FontTool.setViewFontAndColor(settings, root); root.setBackgroundColor(settings.getPopupColor()); - tweetText.append(addition); closeButton.setOnClickListener(this); tweetButton.setOnClickListener(this); @@ -363,7 +364,7 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener, Lo * show confirmation dialog when closing edited tweet */ private void showClosingMsg() { - if (!addition.equals(tweetText.getText().toString()) || !mediaPath.isEmpty()) { + if (tweetText.getText().length() > 0 || !mediaPath.isEmpty()) { Builder closeDialog = new Builder(this, R.style.ConfirmDialog); closeDialog.setMessage(R.string.confirm_cancel_tweet); closeDialog.setNegativeButton(R.string.confirm_no, null); diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/TweetUploader.java b/app/src/main/java/org/nuclearfog/twidda/backend/TweetUploader.java index 0f954481..b0f6c9a6 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/TweetUploader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/TweetUploader.java @@ -48,14 +48,13 @@ public class TweetUploader extends AsyncTask { protected Boolean doInBackground(Void[] v) { try { mTwitter.uploadStatus(tweet); + return true; } catch (EngineException twException) { this.twException = twException; - return false; } catch (Exception exception) { exception.printStackTrace(); - return false; } - return true; + return false; } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/engine/TwitterEngine.java b/app/src/main/java/org/nuclearfog/twidda/backend/engine/TwitterEngine.java index c456687f..2b658742 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/engine/TwitterEngine.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/engine/TwitterEngine.java @@ -733,9 +733,8 @@ public class TwitterEngine { try { long id = twitter.showUser(messageHolder.getUsername()).getId(); if (messageHolder.hasMedia()) { - UploadedMedia media = twitter.uploadMedia(new File(messageHolder.getMediaPath())); - long mediaId = media.getMediaId(); - twitter.sendDirectMessage(id, messageHolder.getMessage(), mediaId); + long[] mediaId = uploadImages(messageHolder.getMediaPath()); + twitter.sendDirectMessage(id, messageHolder.getMessage(), mediaId[0]); } else { twitter.sendDirectMessage(id, messageHolder.getMessage()); } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/helper/ErrorHandler.java b/app/src/main/java/org/nuclearfog/twidda/backend/helper/ErrorHandler.java index b4a2523b..44d41506 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/helper/ErrorHandler.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/helper/ErrorHandler.java @@ -76,7 +76,7 @@ public abstract class ErrorHandler { break; case NO_MEDIA_FOUND: - Toast.makeText(context, R.string.error_no_media_app, Toast.LENGTH_SHORT).show(); + Toast.makeText(context, R.string.error_file_not_found, Toast.LENGTH_SHORT).show(); break; case NO_LINK_DEFINED: diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/items/MessageHolder.java b/app/src/main/java/org/nuclearfog/twidda/backend/items/MessageHolder.java index 4a579a76..2c37f0fb 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/items/MessageHolder.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/items/MessageHolder.java @@ -1,6 +1,7 @@ package org.nuclearfog.twidda.backend.items; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; /** * Direct message holder class @@ -9,7 +10,7 @@ public class MessageHolder { private final String username; private final String message; - private final String mediaPath; + private final String[] mediaPath; /** * Direct message constructor @@ -18,13 +19,13 @@ public class MessageHolder { * @param message message text * @param mediaPath local media path */ - public MessageHolder(String username, String message, String mediaPath) { + public MessageHolder(String username, String message, @Nullable String mediaPath) { if (username.startsWith("@")) this.username = username; else this.username = '@' + username; this.message = message; - this.mediaPath = mediaPath; + this.mediaPath = new String[]{mediaPath}; } /** @@ -47,7 +48,7 @@ public class MessageHolder { * get local path of media * @return media path */ - public String getMediaPath() { + public String[] getMediaPath() { return mediaPath; } @@ -56,7 +57,7 @@ public class MessageHolder { * @return if media is set */ public boolean hasMedia() { - return mediaPath != null && !mediaPath.isEmpty(); + return mediaPath[0] != null; } @NonNull diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 2b7c465b..c6102b21 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -146,4 +146,5 @@ Github Seite: Zu viele Anfragen! Bitte 15 Minuten warten! Video konnte nicht hinzugefĆ¼gt werden! + Datei nicht gefunden! \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 93ce5979..f6c75f95 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -149,4 +149,5 @@ Too many requests! Please wait 15 minutes. Can\'t add video! Twitter4J Badge + File not found! \ No newline at end of file