diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/ListEditor.java b/app/src/main/java/org/nuclearfog/twidda/activity/ListEditor.java
index bb966d88..911f27b8 100644
--- a/app/src/main/java/org/nuclearfog/twidda/activity/ListEditor.java
+++ b/app/src/main/java/org/nuclearfog/twidda/activity/ListEditor.java
@@ -1,5 +1,10 @@
package org.nuclearfog.twidda.activity;
+import static android.os.AsyncTask.Status.RUNNING;
+import static org.nuclearfog.twidda.activity.ListDetail.RET_LIST_CHANGED;
+import static org.nuclearfog.twidda.activity.ListDetail.RET_LIST_DATA;
+import static org.nuclearfog.twidda.activity.UserLists.RET_LIST_CREATED;
+
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
@@ -13,7 +18,6 @@ import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import org.nuclearfog.twidda.R;
@@ -30,11 +34,6 @@ import org.nuclearfog.twidda.dialog.ConfirmDialog.OnConfirmListener;
import org.nuclearfog.twidda.dialog.ProgressDialog;
import org.nuclearfog.twidda.dialog.ProgressDialog.OnProgressStopListener;
-import static android.os.AsyncTask.Status.RUNNING;
-import static org.nuclearfog.twidda.activity.ListDetail.RET_LIST_CHANGED;
-import static org.nuclearfog.twidda.activity.ListDetail.RET_LIST_DATA;
-import static org.nuclearfog.twidda.activity.UserLists.RET_LIST_CREATED;
-
/**
* Activity for the list editor
*
@@ -51,7 +50,7 @@ public class ListEditor extends AppCompatActivity implements OnClickListener, On
private EditText titleInput, subTitleInput;
private CompoundButton visibility;
private Dialog leaveDialog, loadingCircle;
- private AlertDialog errorDialog;
+ private ConfirmDialog errorDialog;
@Nullable
private TwitterList userList;
diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/MessageEditor.java b/app/src/main/java/org/nuclearfog/twidda/activity/MessageEditor.java
index 0a04b08c..3a4546ce 100644
--- a/app/src/main/java/org/nuclearfog/twidda/activity/MessageEditor.java
+++ b/app/src/main/java/org/nuclearfog/twidda/activity/MessageEditor.java
@@ -1,5 +1,13 @@
package org.nuclearfog.twidda.activity;
+import static android.os.AsyncTask.Status.RUNNING;
+import static android.view.View.GONE;
+import static android.view.View.VISIBLE;
+import static android.widget.Toast.LENGTH_SHORT;
+import static org.nuclearfog.twidda.activity.MediaViewer.KEY_MEDIA_LINK;
+import static org.nuclearfog.twidda.activity.MediaViewer.KEY_MEDIA_TYPE;
+import static org.nuclearfog.twidda.activity.MediaViewer.MEDIAVIEWER_IMAGE;
+
import android.app.Dialog;
import android.content.Intent;
import android.location.Location;
@@ -13,7 +21,6 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.MessageUpdater;
@@ -27,14 +34,6 @@ import org.nuclearfog.twidda.dialog.ConfirmDialog.OnConfirmListener;
import org.nuclearfog.twidda.dialog.ProgressDialog;
import org.nuclearfog.twidda.dialog.ProgressDialog.OnProgressStopListener;
-import static android.os.AsyncTask.Status.RUNNING;
-import static android.view.View.GONE;
-import static android.view.View.VISIBLE;
-import static android.widget.Toast.LENGTH_SHORT;
-import static org.nuclearfog.twidda.activity.MediaViewer.KEY_MEDIA_LINK;
-import static org.nuclearfog.twidda.activity.MediaViewer.KEY_MEDIA_TYPE;
-import static org.nuclearfog.twidda.activity.MediaViewer.MEDIAVIEWER_IMAGE;
-
/**
* Direct message popup activity
*
@@ -51,8 +50,8 @@ public class MessageEditor extends MediaActivity implements OnClickListener, OnC
private EditText receiver, message;
private ImageButton media, preview;
- private Dialog loadingCircle, leaveDialog;
- private AlertDialog errorDialog;
+ private Dialog loadingCircle;
+ private ConfirmDialog errorDialog, leaveDialog;
@Nullable
private String mediaPath;
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 e52f0d61..69098c01 100644
--- a/app/src/main/java/org/nuclearfog/twidda/activity/ProfileEditor.java
+++ b/app/src/main/java/org/nuclearfog/twidda/activity/ProfileEditor.java
@@ -28,7 +28,6 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.ConstraintSet;
@@ -71,8 +70,8 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP
private ImageView profile_image, profile_banner, toolbar_background, changeBannerBtn;
private EditText name, link, loc, bio;
private Button addBannerBtn;
- private Dialog loadingCircle, closeDialog;
- private AlertDialog errorDialog;
+ private Dialog loadingCircle;
+ private ConfirmDialog errorDialog, closeDialog;
private User user;
private String profileLink, bannerLink;
diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/TweetEditor.java b/app/src/main/java/org/nuclearfog/twidda/activity/TweetEditor.java
index 597cdddd..2aa1efac 100644
--- a/app/src/main/java/org/nuclearfog/twidda/activity/TweetEditor.java
+++ b/app/src/main/java/org/nuclearfog/twidda/activity/TweetEditor.java
@@ -24,7 +24,6 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.TweetUpdater;
@@ -84,8 +83,8 @@ public class TweetEditor extends MediaActivity implements OnClickListener, OnPro
private GlobalSettings settings;
private ImageButton mediaBtn, previewBtn, locationBtn;
- private AlertDialog errorDialog;
- private Dialog loadingCircle, closingDialog;
+ private ConfirmDialog errorDialog, closingDialog;
+ private Dialog loadingCircle;
private EditText tweetText;
private View locationPending;
diff --git a/app/src/main/java/org/nuclearfog/twidda/dialog/ConfirmDialog.java b/app/src/main/java/org/nuclearfog/twidda/dialog/ConfirmDialog.java
index 546a2449..cfc930a8 100644
--- a/app/src/main/java/org/nuclearfog/twidda/dialog/ConfirmDialog.java
+++ b/app/src/main/java/org/nuclearfog/twidda/dialog/ConfirmDialog.java
@@ -1,16 +1,14 @@
package org.nuclearfog.twidda.dialog;
-import static android.util.TypedValue.COMPLEX_UNIT_SP;
-
+import android.app.Dialog;
import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
+import android.view.View;
+import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
-import androidx.appcompat.app.AlertDialog;
-
import org.nuclearfog.twidda.R;
+import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.database.GlobalSettings;
/**
@@ -18,7 +16,7 @@ import org.nuclearfog.twidda.database.GlobalSettings;
*
* @author nuclearfog
*/
-public class ConfirmDialog extends AlertDialog implements OnClickListener {
+public class ConfirmDialog extends Dialog implements OnClickListener {
/**
* types of dialogs, every dialog has its own message and title
@@ -46,6 +44,9 @@ public class ConfirmDialog extends AlertDialog implements OnClickListener {
LIST_EDITOR_ERROR
}
+ private TextView txtTitle, txtMessage;
+ private Button confirm, cancel;
+
private DialogType type;
private OnConfirmListener listener;
@@ -54,7 +55,22 @@ public class ConfirmDialog extends AlertDialog implements OnClickListener {
* @param listener listener for the confirmation button
*/
public ConfirmDialog(Context context, DialogType type, OnConfirmListener listener) {
- super(context);
+ super(context, R.style.ConfirmDialog);
+ setContentView(R.layout.dialog_confirm);
+ View root = findViewById(R.id.confirm_rootview);
+ confirm = findViewById(R.id.confirm_yes);
+ cancel = findViewById(R.id.confirm_no);
+ txtTitle = findViewById(R.id.confirm_title);
+ txtMessage = findViewById(R.id.confirm_message);
+
+ confirm.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0);
+ cancel.setCompoundDrawablesWithIntrinsicBounds(R.drawable.cross, 0, 0, 0);
+ GlobalSettings settings = GlobalSettings.getInstance(context);
+ AppStyles.setTheme(settings, root);
+
+ confirm.setOnClickListener(this);
+ cancel.setOnClickListener(this);
+
this.type = type;
this.listener = listener;
build();
@@ -62,143 +78,120 @@ public class ConfirmDialog extends AlertDialog implements OnClickListener {
@Override
- public void onClick(DialogInterface dialog, int which) {
- if (which == BUTTON_POSITIVE) {
+ public void onClick(View v) {
+ if (v.getId() == R.id.confirm_yes) {
listener.onConfirm(type);
+ dismiss();
+ } else if (v.getId() == R.id.confirm_no) {
+ dismiss();
}
}
-
- @Override
- public void show() {
- super.show();
- setTheme();
+ /**
+ * set message text
+ *
+ * @param message message text
+ */
+ public void setMessage(String message) {
+ txtMessage.setText(message);
}
/**
* creates an alert dialog
*/
private void build() {
- Context c = getContext();
- String posButton = c.getString(R.string.dialog_button_yes);
- String negButton = c.getString(R.string.dialog_button_no);
- String message = "";
- String title = "";
-
switch (type) {
case MESSAGE_DELETE:
- message = c.getString(R.string.confirm_delete_message);
+ txtTitle.setVisibility(View.GONE);
+ txtMessage.setText(R.string.confirm_delete_message);
break;
case WRONG_PROXY:
- title = c.getString(R.string.info_error);
- message = c.getString(R.string.error_wrong_connection_settings);
- posButton = c.getString(R.string.dialog_button_cancel);
- negButton = c.getString(R.string.confirm_back);
+ txtTitle.setText(R.string.info_error);
+ txtMessage.setText(R.string.error_wrong_connection_settings);
+ confirm.setText(R.string.dialog_button_cancel);
+ cancel.setText(R.string.confirm_back);
break;
case DEL_DATABASE:
- message = c.getString(R.string.confirm_delete_database);
+ txtTitle.setVisibility(View.GONE);
+ txtMessage.setText(R.string.confirm_delete_database);
break;
case APP_LOG_OUT:
- message = c.getString(R.string.confirm_log_lout);
+ txtTitle.setVisibility(View.GONE);
+ txtMessage.setText(R.string.confirm_log_lout);
break;
case LIST_EDITOR_LEAVE:
case PROFILE_EDITOR_LEAVE:
- message = c.getString(R.string.confirm_discard);
+ txtTitle.setVisibility(View.GONE);
+ txtMessage.setText(R.string.confirm_discard);
break;
case TWEET_EDITOR_LEAVE:
- message = c.getString(R.string.confirm_cancel_tweet);
+ txtTitle.setVisibility(View.GONE);
+ txtMessage.setText(R.string.confirm_cancel_tweet);
break;
case LIST_EDITOR_ERROR:
case MESSAGE_EDITOR_ERROR:
case TWEET_EDITOR_ERROR:
case PROFILE_EDITOR_ERROR:
- title = c.getString(R.string.info_error);
- posButton = c.getString(R.string.confirm_retry_button);
- negButton = c.getString(R.string.dialog_button_cancel);
+ txtTitle.setText(R.string.info_error);
+ confirm.setText(R.string.confirm_retry_button);
+ cancel.setText(R.string.dialog_button_cancel);
break;
case MESSAGE_EDITOR_LEAVE:
- message = c.getString(R.string.confirm_cancel_message);
+ txtTitle.setVisibility(View.GONE);
+ txtMessage.setText(R.string.confirm_cancel_message);
break;
case TWEET_DELETE:
- message = c.getString(R.string.confirm_delete_tweet);
+ txtTitle.setVisibility(View.GONE);
+ txtMessage.setText(R.string.confirm_delete_tweet);
break;
case PROFILE_UNFOLLOW:
- message = c.getString(R.string.confirm_unfollow);
+ txtTitle.setVisibility(View.GONE);
+ txtMessage.setText(R.string.confirm_unfollow);
break;
case PROFILE_BLOCK:
- message = c.getString(R.string.confirm_block);
+ txtTitle.setVisibility(View.GONE);
+ txtMessage.setText(R.string.confirm_block);
break;
case PROFILE_MUTE:
- message = c.getString(R.string.confirm_mute);
+ txtTitle.setVisibility(View.GONE);
+ txtMessage.setText(R.string.confirm_mute);
break;
case LIST_REMOVE_USER:
- message = c.getString(R.string.confirm_remove_user_from_list);
- posButton = c.getString(R.string.dialog_button_ok);
- negButton = c.getString(R.string.dialog_button_cancel);
+ txtTitle.setVisibility(View.GONE);
+ txtMessage.setText(R.string.confirm_remove_user_from_list);
+ confirm.setText(R.string.dialog_button_ok);
+ cancel.setText(R.string.dialog_button_cancel);
break;
case LIST_UNFOLLOW:
- message = c.getString(R.string.confirm_unfollow_list);
+ txtMessage.setText(R.string.confirm_unfollow_list);
+ txtTitle.setVisibility(View.GONE);
break;
case LIST_DELETE:
- message = c.getString(R.string.confirm_delete_list);
+ txtMessage.setText(R.string.confirm_delete_list);
+ txtTitle.setVisibility(View.GONE);
break;
case REMOVE_ACCOUNT:
- message = c.getString(R.string.confirm_remove_account);
- posButton = c.getString(R.string.dialog_button_ok);
- negButton = c.getString(R.string.dialog_button_cancel);
+ txtMessage.setText(R.string.confirm_remove_account);
+ confirm.setText(R.string.dialog_button_ok);
+ cancel.setText(R.string.dialog_button_cancel);
+ txtTitle.setVisibility(View.GONE);
break;
}
- setTitle(title);
- setMessage(message);
- setButton(BUTTON_NEGATIVE, negButton, this);
- setButton(BUTTON_POSITIVE, posButton, this);
- }
-
- /**
- *
- */
- private void setTheme() {
- GlobalSettings settings = GlobalSettings.getInstance(getContext());
- TextView message = findViewById(android.R.id.message);
- TextView title = findViewById(android.R.id.title);
- Button button1 = findViewById(android.R.id.button1);
- Button button2 = findViewById(android.R.id.button2);
-
- if (getWindow() != null) {
- getWindow().getDecorView().setBackgroundColor(settings.getBackgroundColor());
- }
- if (message != null) {
- message.setTypeface(settings.getTypeFace());
- message.setTextColor(settings.getFontColor());
- message.setTextSize(COMPLEX_UNIT_SP, 20);
- }
- if (title != null) {
- title.setTypeface(settings.getTypeFace());
- title.setTextColor(settings.getFontColor());
- }
- if (button1 != null) {
- button1.setTypeface(settings.getTypeFace());
- button1.setTextColor(settings.getFontColor());
- }
- if (button2 != null) {
- button2.setTypeface(settings.getTypeFace());
- button2.setTextColor(settings.getFontColor());
- }
}
/**
diff --git a/app/src/main/java/org/nuclearfog/twidda/fragment/AccountFragment.java b/app/src/main/java/org/nuclearfog/twidda/fragment/AccountFragment.java
index 8b8d774d..2d883bc7 100644
--- a/app/src/main/java/org/nuclearfog/twidda/fragment/AccountFragment.java
+++ b/app/src/main/java/org/nuclearfog/twidda/fragment/AccountFragment.java
@@ -5,7 +5,6 @@ import static org.nuclearfog.twidda.activity.AccountActivity.RET_ACCOUNT_CHANGE;
import static org.nuclearfog.twidda.dialog.ConfirmDialog.DialogType;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import org.nuclearfog.twidda.adapter.AccountAdapter;
import org.nuclearfog.twidda.adapter.AccountAdapter.OnAccountClickListener;
@@ -30,7 +29,7 @@ public class AccountFragment extends ListFragment implements OnAccountClickListe
private AccountLoader loginTask;
private GlobalSettings settings;
private AccountAdapter adapter;
- private AlertDialog dialog;
+ private ConfirmDialog dialog;
private Account selection;
diff --git a/app/src/main/res/drawable/check.xml b/app/src/main/res/drawable/check.xml
new file mode 100644
index 00000000..73214247
--- /dev/null
+++ b/app/src/main/res/drawable/check.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/dialog_confirm.xml b/app/src/main/res/layout/dialog_confirm.xml
new file mode 100644
index 00000000..d507906e
--- /dev/null
+++ b/app/src/main/res/layout/dialog_confirm.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 625bb4af..22a4461c 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -187,6 +187,14 @@
8sp
+
+ 10dp
+ 14dp
+ 5dp
+ 14sp
+ 18sp
+ 22sp
+
20dp
5dp
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index f4038058..977b4cd7 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -33,6 +33,11 @@
- true
+
+