Search in sources :

Example 26 with AlertDialog

use of android.app.AlertDialog in project materialistic by hidroh.

the class FavoriteActivityTest method testDelete.

@Test
public void testDelete() {
    RecyclerView.ViewHolder holder = shadowAdapter.getViewHolder(0);
    holder.itemView.performLongClick();
    ActionMode actionMode = mock(ActionMode.class);
    activity.actionModeCallback.onActionItemClicked(actionMode, new RoboMenuItem(R.id.menu_clear));
    AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
    dialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick();
    assertEquals(2, adapter.getItemCount());
    activity.actionModeCallback.onActionItemClicked(actionMode, new RoboMenuItem(R.id.menu_clear));
    dialog = ShadowAlertDialog.getLatestAlertDialog();
    dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
    verify(favoriteManager).remove(any(Context.class), selection.capture());
    assertThat(selection.getValue()).contains("1");
    verify(actionMode).finish();
    when(favoriteManager.getSize()).thenReturn(1);
    observerCaptor.getValue().onChanged();
    assertEquals(1, adapter.getItemCount());
}
Also used : ShadowAlertDialog(org.robolectric.shadows.ShadowAlertDialog) AlertDialog(android.app.AlertDialog) Context(android.content.Context) ActionMode(android.support.v7.view.ActionMode) RecyclerView(android.support.v7.widget.RecyclerView) ShadowRecyclerView(io.github.hidroh.materialistic.test.shadow.ShadowRecyclerView) RoboMenuItem(org.robolectric.fakes.RoboMenuItem) SlowTest(io.github.hidroh.materialistic.test.suite.SlowTest) Test(org.junit.Test)

Example 27 with AlertDialog

use of android.app.AlertDialog in project materialistic by hidroh.

the class FavoriteActivityTest method testOptionsMenuClear.

@Test
public void testOptionsMenuClear() {
    assertTrue(shadowOf(activity).getOptionsMenu().findItem(R.id.menu_clear).isVisible());
    shadowOf(activity).clickMenuItem(R.id.menu_clear);
    AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
    dialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick();
    assertEquals(2, adapter.getItemCount());
    shadowOf(activity).clickMenuItem(R.id.menu_clear);
    dialog = ShadowAlertDialog.getLatestAlertDialog();
    dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
    verify(favoriteManager).clear(any(Context.class), any());
    when(favoriteManager.getSize()).thenReturn(0);
    observerCaptor.getValue().onChanged();
    assertEquals(0, adapter.getItemCount());
}
Also used : ShadowAlertDialog(org.robolectric.shadows.ShadowAlertDialog) AlertDialog(android.app.AlertDialog) Context(android.content.Context) SlowTest(io.github.hidroh.materialistic.test.suite.SlowTest) Test(org.junit.Test)

Example 28 with AlertDialog

use of android.app.AlertDialog in project materialistic by hidroh.

the class ComposeActivityTest method testExitSaveDraft.

@Test
public void testExitSaveDraft() {
    ((EditText) activity.findViewById(R.id.edittext_body)).setText("Reply");
    shadowOf(activity).clickMenuItem(android.R.id.home);
    AlertDialog alertDialog = ShadowAlertDialog.getLatestAlertDialog();
    assertNotNull(alertDialog);
    alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
    assertThat(activity).isFinishing();
    assertThat(Preferences.getDraft(activity, "1")).contains("Reply");
}
Also used : EditText(android.widget.EditText) ShadowAlertDialog(org.robolectric.shadows.ShadowAlertDialog) AlertDialog(android.app.AlertDialog) Test(org.junit.Test)

Example 29 with AlertDialog

use of android.app.AlertDialog in project materialistic by hidroh.

the class ComposeActivityTest method testExitDiscardDraft.

@Test
public void testExitDiscardDraft() {
    ((EditText) activity.findViewById(R.id.edittext_body)).setText("Reply");
    shadowOf(activity).clickMenuItem(android.R.id.home);
    AlertDialog alertDialog = ShadowAlertDialog.getLatestAlertDialog();
    assertNotNull(alertDialog);
    alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick();
    assertThat(activity).isFinishing();
    assertThat(Preferences.getDraft(activity, "1")).isNullOrEmpty();
}
Also used : EditText(android.widget.EditText) ShadowAlertDialog(org.robolectric.shadows.ShadowAlertDialog) AlertDialog(android.app.AlertDialog) Test(org.junit.Test)

Example 30 with AlertDialog

use of android.app.AlertDialog in project Talon-for-Twitter by klinker24.

the class ComposeActivity method setUpLayout.

public void setUpLayout() {
    setContentView(R.layout.compose_activity);
    setUpSimilar();
    // number of accounts logged in
    int count = 0;
    if (sharedPrefs.getBoolean("is_logged_in_1", false)) {
        count++;
    }
    if (sharedPrefs.getBoolean("is_logged_in_2", false)) {
        count++;
    }
    if (count == 2) {
        findViewById(R.id.accounts).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                String[] options = new String[3];
                options[0] = "@" + settings.myScreenName;
                options[1] = "@" + settings.secondScreenName;
                options[2] = getString(R.string.both_accounts);
                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                builder.setItems(options, new DialogInterface.OnClickListener() {

                    public void onClick(final DialogInterface dialog, final int item) {
                        NetworkedCacheableImageView pic = (NetworkedCacheableImageView) findViewById(R.id.profile_pic);
                        HoloTextView currentName = (HoloTextView) findViewById(R.id.current_name);
                        switch(item) {
                            case 0:
                                useAccOne = true;
                                useAccTwo = false;
                                if (settings.roundContactImages) {
                                    pic.loadImage(settings.myProfilePicUrl, false, null, NetworkedCacheableImageView.CIRCLE);
                                } else {
                                    pic.loadImage(settings.myProfilePicUrl, false, null);
                                }
                                currentName.setText("@" + settings.myScreenName);
                                break;
                            case 1:
                                useAccOne = false;
                                useAccTwo = true;
                                if (settings.roundContactImages) {
                                    pic.loadImage(settings.secondProfilePicUrl, false, null, NetworkedCacheableImageView.CIRCLE);
                                } else {
                                    pic.loadImage(settings.secondProfilePicUrl, false, null);
                                }
                                currentName.setText("@" + settings.secondScreenName);
                                break;
                            case 2:
                                useAccOne = true;
                                useAccTwo = true;
                                TypedArray a = getTheme().obtainStyledAttributes(new int[] { R.attr.favUser });
                                int resource = a.getResourceId(0, 0);
                                a.recycle();
                                pic.setImageResource(resource);
                                currentName.setText(getString(R.string.both_accounts));
                                break;
                        }
                    }
                });
                AlertDialog alert = builder.create();
                alert.show();
            }
        });
    }
    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x;
    UserAutoCompleteHelper.applyTo(this, reply);
    hashtagAutoComplete = new ListPopupWindow(context);
    hashtagAutoComplete.setAnchorView(reply);
    hashtagAutoComplete.setHeight(toDP(200));
    hashtagAutoComplete.setWidth((int) (width * .75));
    hashtagAutoComplete.setAdapter(new AutoCompleteHashtagAdapter(context, HashtagDataSource.getInstance(context).getCursor(reply.getText().toString()), reply));
    hashtagAutoComplete.setPromptPosition(ListPopupWindow.POSITION_PROMPT_ABOVE);
    hashtagAutoComplete.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            hashtagAutoComplete.dismiss();
        }
    });
    // watcher for the @
    reply.addTextChangedListener(new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
        }

        @Override
        public void afterTextChanged(Editable editable) {
            String searchText = reply.getText().toString();
            try {
                int position = reply.getSelectionStart() - 1;
                if (searchText.charAt(position) == '#') {
                    hashtagAutoComplete.show();
                } else if (searchText.charAt(position) == ' ') {
                    hashtagAutoComplete.dismiss();
                } else if (hashtagAutoComplete.isShowing()) {
                    String adapterText = "";
                    do {
                        adapterText = searchText.charAt(position--) + adapterText;
                    } while (searchText.charAt(position) != '#');
                    adapterText = adapterText.replace("#", "");
                    hashtagAutoComplete.setAdapter(new AutoCompleteHashtagAdapter(context, HashtagDataSource.getInstance(context).getCursor(adapterText), reply));
                }
            } catch (Exception e) {
                // there is no text
                try {
                    hashtagAutoComplete.dismiss();
                } catch (Exception x) {
                // something went really wrong I guess haha
                }
            }
        }
    });
    overflow = (ImageButton) findViewById(R.id.overflow_button);
    overflow.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
        }
    });
    attachButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            attachImage();
        }
    });
    gifButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            findGif();
        }
    });
    ImageButton at = (ImageButton) findViewById(R.id.at_button);
    at.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            int start = reply.getSelectionStart();
            reply.getText().insert(start, "@");
            reply.setSelection(start + 1);
        }
    });
    ImageButton hashtag = (ImageButton) findViewById(R.id.hashtag_button);
    hashtag.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            int start = reply.getSelectionStart();
            reply.getText().insert(start, "#");
            reply.setSelection(start + 1);
        }
    });
    final int SAVE_DRAFT = 0;
    final int VIEW_DRAFTS = 1;
    final int VIEW_QUEUE = 2;
    final int SCHEDULE = 3;
    final ImageButton overflow = (ImageButton) findViewById(R.id.overflow_button);
    overflow.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            final PopupMenu menu = new PopupMenu(context, findViewById(R.id.discard_button));
            menu.getMenu().add(Menu.NONE, SAVE_DRAFT, Menu.NONE, context.getString(R.string.menu_save_draft));
            menu.getMenu().add(Menu.NONE, VIEW_DRAFTS, Menu.NONE, context.getString(R.string.menu_view_drafts));
            menu.getMenu().add(Menu.NONE, VIEW_QUEUE, Menu.NONE, context.getString(R.string.menu_view_queued));
            menu.getMenu().add(Menu.NONE, SCHEDULE, Menu.NONE, context.getString(R.string.menu_schedule_tweet));
            menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

                @Override
                public boolean onMenuItemClick(MenuItem menuItem) {
                    switch(menuItem.getItemId()) {
                        case SAVE_DRAFT:
                            if (reply.getText().length() > 0) {
                                QueuedDataSource.getInstance(context).createDraft(reply.getText().toString(), currentAccount);
                                Toast.makeText(context, getResources().getString(R.string.saved_draft), Toast.LENGTH_SHORT).show();
                                reply.setText("");
                                finish();
                            } else {
                                Toast.makeText(context, getResources().getString(R.string.no_tweet), Toast.LENGTH_SHORT).show();
                            }
                            break;
                        case VIEW_DRAFTS:
                            final String[] drafts = QueuedDataSource.getInstance(context).getDrafts();
                            if (drafts.length > 0) {
                                final String[] draftsAndDelete = new String[drafts.length + 1];
                                draftsAndDelete[0] = getString(R.string.delete_all);
                                for (int i = 1; i < draftsAndDelete.length; i++) {
                                    draftsAndDelete[i] = drafts[i - 1];
                                }
                                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                                builder.setItems(draftsAndDelete, new DialogInterface.OnClickListener() {

                                    public void onClick(final DialogInterface dialog, final int item) {
                                        if (item == 0) {
                                            // clicked the delete all item
                                            new AlertDialog.Builder(context).setMessage(getString(R.string.delete_all) + "?").setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {

                                                @Override
                                                public void onClick(DialogInterface dialogInterface, int i) {
                                                    QueuedDataSource.getInstance(context).deleteAllDrafts();
                                                    dialogInterface.dismiss();
                                                }
                                            }).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {

                                                @Override
                                                public void onClick(DialogInterface dialogInterface, int i) {
                                                    dialogInterface.dismiss();
                                                }
                                            }).create().show();
                                            dialog.dismiss();
                                        } else {
                                            new AlertDialog.Builder(context).setTitle(context.getResources().getString(R.string.apply)).setMessage(draftsAndDelete[item]).setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {

                                                @Override
                                                public void onClick(DialogInterface dialogInterface, int i) {
                                                    reply.setText(draftsAndDelete[item]);
                                                    reply.setSelection(reply.getText().length());
                                                    QueuedDataSource.getInstance(context).deleteDraft(draftsAndDelete[item]);
                                                    dialogInterface.dismiss();
                                                }
                                            }).setNegativeButton(R.string.delete_draft, new DialogInterface.OnClickListener() {

                                                @Override
                                                public void onClick(DialogInterface dialogInterface, int i) {
                                                    QueuedDataSource.getInstance(context).deleteDraft(draftsAndDelete[item]);
                                                    dialogInterface.dismiss();
                                                }
                                            }).create().show();
                                            dialog.dismiss();
                                        }
                                    }
                                });
                                AlertDialog alert = builder.create();
                                alert.show();
                            } else {
                                Toast.makeText(context, R.string.no_drafts, Toast.LENGTH_SHORT).show();
                            }
                            break;
                        case SCHEDULE:
                            Intent schedule = new Intent(context, ViewScheduledTweets.class);
                            if (!reply.getText().toString().isEmpty()) {
                                schedule.putExtra("has_text", true);
                                schedule.putExtra("text", reply.getText().toString());
                            }
                            startActivity(schedule);
                            finish();
                            break;
                        case VIEW_QUEUE:
                            final String[] queued = QueuedDataSource.getInstance(context).getQueuedTweets(currentAccount);
                            if (queued.length > 0) {
                                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                                builder.setItems(queued, new DialogInterface.OnClickListener() {

                                    public void onClick(final DialogInterface dialog, final int item) {
                                        new AlertDialog.Builder(context).setTitle(context.getResources().getString(R.string.keep_queued_tweet)).setMessage(queued[item]).setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {

                                            @Override
                                            public void onClick(DialogInterface dialogInterface, int i) {
                                                dialogInterface.dismiss();
                                            }
                                        }).setNegativeButton(R.string.delete_draft, new DialogInterface.OnClickListener() {

                                            @Override
                                            public void onClick(DialogInterface dialogInterface, int i) {
                                                QueuedDataSource.getInstance(context).deleteQueuedTweet(queued[item]);
                                                dialogInterface.dismiss();
                                            }
                                        }).create().show();
                                        dialog.dismiss();
                                    }
                                });
                                AlertDialog alert = builder.create();
                                alert.show();
                            } else {
                                Toast.makeText(context, R.string.no_queued, Toast.LENGTH_SHORT).show();
                            }
                            break;
                    }
                    return false;
                }
            });
            menu.show();
        }
    });
    final ImageButton location = (ImageButton) findViewById(R.id.location);
    location.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (!addLocation) {
                sharedPrefs.edit().putBoolean("share_location", true).commit();
                addLocation = true;
                if (!settings.addonTheme) {
                    location.setColorFilter(context.getResources().getColor(R.color.app_color));
                } else {
                    location.setColorFilter(settings.accentInt);
                }
            } else {
                sharedPrefs.edit().putBoolean("share_location", false).commit();
                addLocation = false;
                location.clearColorFilter();
            }
        }
    });
    if (sharedPrefs.getBoolean("share_location", false)) {
        location.performClick();
    }
    if (!settings.useEmoji) {
        emojiButton.setVisibility(View.GONE);
    } else {
        emojiKeyboard.setAttached((HoloEditText) reply);
        reply.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                if (emojiKeyboard.isShowing()) {
                    emojiKeyboard.setVisibility(false);
                    TypedArray a = getTheme().obtainStyledAttributes(new int[] { R.attr.emoji_button_changing });
                    int resource = a.getResourceId(0, 0);
                    a.recycle();
                    emojiButton.setImageResource(resource);
                }
            }
        });
        emojiButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                if (emojiKeyboard.isShowing()) {
                    emojiKeyboard.setVisibility(false);
                    new Handler().postDelayed(new Runnable() {

                        @Override
                        public void run() {
                            InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
                            imm.showSoftInput(reply, 0);
                        }
                    }, 250);
                    TypedArray a = getTheme().obtainStyledAttributes(new int[] { R.attr.emoji_button_changing });
                    int resource = a.getResourceId(0, 0);
                    a.recycle();
                    emojiButton.setImageResource(resource);
                } else {
                    InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(reply.getWindowToken(), 0);
                    new Handler().postDelayed(new Runnable() {

                        @Override
                        public void run() {
                            emojiKeyboard.setVisibility(true);
                        }
                    }, 250);
                    TypedArray a = getTheme().obtainStyledAttributes(new int[] { R.attr.keyboard_button_changing });
                    int resource = a.getResourceId(0, 0);
                    a.recycle();
                    emojiButton.setImageResource(resource);
                }
            }
        });
    }
}
Also used : AlertDialog(android.app.AlertDialog) DialogInterface(android.content.DialogInterface) InputMethodManager(android.view.inputmethod.InputMethodManager) AutoCompleteHashtagAdapter(com.klinker.android.twitter.adapters.AutoCompleteHashtagAdapter) TypedArray(android.content.res.TypedArray) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) Handler(android.os.Handler) Intent(android.content.Intent) Point(android.graphics.Point) HoloTextView(com.klinker.android.twitter.views.HoloTextView) NetworkedCacheableImageView(com.klinker.android.twitter.views.NetworkedCacheableImageView) HoloTextView(com.klinker.android.twitter.views.HoloTextView) Point(android.graphics.Point) IOException(java.io.IOException) NetworkedCacheableImageView(com.klinker.android.twitter.views.NetworkedCacheableImageView)

Aggregations

AlertDialog (android.app.AlertDialog)348 DialogInterface (android.content.DialogInterface)236 View (android.view.View)84 Intent (android.content.Intent)63 TextView (android.widget.TextView)63 EditText (android.widget.EditText)50 OnClickListener (android.content.DialogInterface.OnClickListener)34 Test (org.junit.Test)33 Context (android.content.Context)29 ListView (android.widget.ListView)28 ImageView (android.widget.ImageView)26 AdapterView (android.widget.AdapterView)25 LayoutInflater (android.view.LayoutInflater)24 SuppressLint (android.annotation.SuppressLint)23 Button (android.widget.Button)23 Activity (android.app.Activity)21 Paint (android.graphics.Paint)19 KeyEvent (android.view.KeyEvent)16 OnClickListener (android.view.View.OnClickListener)15 ArrayList (java.util.ArrayList)15