Search in sources :

Example 6 with PopupMenu

use of androidx.appcompat.widget.PopupMenu in project Slide by ccrama.

the class MultiredditOverview method openPopupTime.

public void openPopupTime() {
    PopupMenu popup = new PopupMenu(MultiredditOverview.this, findViewById(R.id.anchor), Gravity.RIGHT);
    String id = ((MultiredditView) (((MultiredditOverviewPagerAdapter) pager.getAdapter()).getCurrentFragment())).posts.multiReddit.getDisplayName().toLowerCase(Locale.ENGLISH);
    final Spannable[] base = SortingUtil.getSortingTimesSpannables("multi" + id);
    for (Spannable s : base) {
        MenuItem m = popup.getMenu().add(s);
    }
    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

        public boolean onMenuItemClick(MenuItem item) {
            int i = 0;
            for (Spannable s : base) {
                if (s.equals(item.getTitle())) {
                    break;
                }
                i++;
            }
            LogUtil.v("Chosen is " + i);
            if (pager.getAdapter() != null) {
                switch(i) {
                    case 0:
                        SortingUtil.setTime("multi" + ((MultiredditView) (((MultiredditOverviewPagerAdapter) pager.getAdapter()).getCurrentFragment())).posts.multiReddit.getDisplayName().toLowerCase(Locale.ENGLISH), TimePeriod.HOUR);
                        reloadSubs();
                        break;
                    case 1:
                        SortingUtil.setTime("multi" + ((MultiredditView) (((MultiredditOverviewPagerAdapter) pager.getAdapter()).getCurrentFragment())).posts.multiReddit.getDisplayName().toLowerCase(Locale.ENGLISH), TimePeriod.DAY);
                        reloadSubs();
                        break;
                    case 2:
                        SortingUtil.setTime("multi" + ((MultiredditView) (((MultiredditOverviewPagerAdapter) pager.getAdapter()).getCurrentFragment())).posts.multiReddit.getDisplayName().toLowerCase(Locale.ENGLISH), TimePeriod.WEEK);
                        reloadSubs();
                        break;
                    case 3:
                        SortingUtil.setTime("multi" + ((MultiredditView) (((MultiredditOverviewPagerAdapter) pager.getAdapter()).getCurrentFragment())).posts.multiReddit.getDisplayName().toLowerCase(Locale.ENGLISH), TimePeriod.MONTH);
                        reloadSubs();
                        break;
                    case 4:
                        SortingUtil.setTime("multi" + ((MultiredditView) (((MultiredditOverviewPagerAdapter) pager.getAdapter()).getCurrentFragment())).posts.multiReddit.getDisplayName().toLowerCase(Locale.ENGLISH), TimePeriod.YEAR);
                        reloadSubs();
                        break;
                    case 5:
                        SortingUtil.setTime("multi" + ((MultiredditView) (((MultiredditOverviewPagerAdapter) pager.getAdapter()).getCurrentFragment())).posts.multiReddit.getDisplayName().toLowerCase(Locale.ENGLISH), TimePeriod.ALL);
                        reloadSubs();
                        break;
                }
            }
            return true;
        }
    });
    popup.show();
}
Also used : MenuItem(android.view.MenuItem) MultiredditView(me.ccrama.redditslide.Fragments.MultiredditView) Spannable(android.text.Spannable) PopupMenu(androidx.appcompat.widget.PopupMenu)

Example 7 with PopupMenu

use of androidx.appcompat.widget.PopupMenu in project Slide by ccrama.

the class MultiredditOverview method openPopup.

public void openPopup() {
    PopupMenu popup = new PopupMenu(MultiredditOverview.this, findViewById(R.id.anchor), Gravity.RIGHT);
    String id = ((MultiredditView) (((MultiredditOverviewPagerAdapter) pager.getAdapter()).getCurrentFragment())).posts.multiReddit.getDisplayName().toLowerCase(Locale.ENGLISH);
    final Spannable[] base = SortingUtil.getSortingSpannables("multi" + id);
    for (Spannable s : base) {
        // Do not add option for "Best" in any subreddit except for the frontpage.
        if (s.toString().equals(getString(R.string.sorting_best))) {
            continue;
        }
        MenuItem m = popup.getMenu().add(s);
    }
    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

        public boolean onMenuItemClick(MenuItem item) {
            int i = 0;
            for (Spannable s : base) {
                if (s.equals(item.getTitle())) {
                    break;
                }
                i++;
            }
            LogUtil.v("Chosen is " + i);
            if (pager.getAdapter() != null) {
                switch(i) {
                    case 0:
                        SortingUtil.setSorting("multi" + ((MultiredditView) (((MultiredditOverviewPagerAdapter) pager.getAdapter()).getCurrentFragment())).posts.multiReddit.getDisplayName().toLowerCase(Locale.ENGLISH), Sorting.HOT);
                        reloadSubs();
                        break;
                    case 1:
                        SortingUtil.setSorting("multi" + ((MultiredditView) (((MultiredditOverviewPagerAdapter) pager.getAdapter()).getCurrentFragment())).posts.multiReddit.getDisplayName().toLowerCase(Locale.ENGLISH), Sorting.NEW);
                        reloadSubs();
                        break;
                    case 2:
                        SortingUtil.setSorting("multi" + ((MultiredditView) (((MultiredditOverviewPagerAdapter) pager.getAdapter()).getCurrentFragment())).posts.multiReddit.getDisplayName().toLowerCase(Locale.ENGLISH), Sorting.RISING);
                        reloadSubs();
                        break;
                    case 3:
                        SortingUtil.setSorting("multi" + ((MultiredditView) (((MultiredditOverviewPagerAdapter) pager.getAdapter()).getCurrentFragment())).posts.multiReddit.getDisplayName().toLowerCase(Locale.ENGLISH), Sorting.TOP);
                        openPopupTime();
                        break;
                    case 4:
                        SortingUtil.setSorting("multi" + ((MultiredditView) (((MultiredditOverviewPagerAdapter) pager.getAdapter()).getCurrentFragment())).posts.multiReddit.getDisplayName().toLowerCase(Locale.ENGLISH), Sorting.CONTROVERSIAL);
                        openPopupTime();
                        break;
                }
            }
            return true;
        }
    });
    popup.show();
}
Also used : MenuItem(android.view.MenuItem) MultiredditView(me.ccrama.redditslide.Fragments.MultiredditView) Spannable(android.text.Spannable) PopupMenu(androidx.appcompat.widget.PopupMenu)

Example 8 with PopupMenu

use of androidx.appcompat.widget.PopupMenu in project Slide by ccrama.

the class SettingsGeneralFragment method Bind.

/* Allow SettingsGeneral and Settings Activity classes to use the same XML functionality */
public void Bind() {
    final RelativeLayout notifLayout = context.findViewById(R.id.settings_general_notifications);
    final TextView notifCurrentView = context.findViewById(R.id.settings_general_notifications_current);
    final RelativeLayout subNotifLayout = context.findViewById(R.id.settings_general_sub_notifications);
    final TextView defaultSortingCurrentView = context.findViewById(R.id.settings_general_sorting_current);
    context.findViewById(R.id.settings_general_drawer_items).setOnClickListener(v -> new DrawerItemsDialog(new MaterialDialog.Builder(context)).show());
    {
        SwitchCompat immersiveModeSwitch = context.findViewById(R.id.settings_general_immersivemode);
        if (immersiveModeSwitch != null) {
            immersiveModeSwitch.setChecked(SettingValues.immersiveMode);
            immersiveModeSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
                SettingsThemeFragment.changed = true;
                SettingValues.immersiveMode = isChecked;
                SettingValues.prefs.edit().putBoolean(SettingValues.PREF_IMMERSIVE_MODE, isChecked).apply();
            });
        }
    }
    {
        SwitchCompat highClrSpaceSwitch = context.findViewById(R.id.settings_general_high_colorspace);
        if (highClrSpaceSwitch != null) {
            highClrSpaceSwitch.setChecked(SettingValues.highColorspaceImages);
            highClrSpaceSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
                SettingsThemeFragment.changed = true;
                SettingValues.highColorspaceImages = isChecked;
                Reddit application = (Reddit) context.getApplication();
                ImageLoaderUtils.initImageLoader(application.getApplicationContext());
                application.defaultImageLoader = ImageLoaderUtils.imageLoader;
                SettingValues.prefs.edit().putBoolean(SettingValues.PREF_HIGH_COLORSPACE_IMAGES, isChecked).apply();
            });
        }
    }
    {
        SwitchCompat forceLangSwitch = context.findViewById(R.id.settings_general_forcelanguage);
        if (forceLangSwitch != null) {
            forceLangSwitch.setChecked(SettingValues.overrideLanguage);
            forceLangSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    SettingsThemeFragment.changed = true;
                    SettingValues.overrideLanguage = isChecked;
                    SettingValues.prefs.edit().putBoolean(SettingValues.PREF_OVERRIDE_LANGUAGE, isChecked).apply();
                }
            });
        }
    }
    // hide fab while scrolling
    {
        SwitchCompat alwaysShowFabSwitch = context.findViewById(R.id.settings_general_always_show_fab);
        if (alwaysShowFabSwitch != null) {
            alwaysShowFabSwitch.setChecked(SettingValues.alwaysShowFAB);
            alwaysShowFabSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    SettingsThemeFragment.changed = true;
                    SettingValues.alwaysShowFAB = isChecked;
                    SettingValues.prefs.edit().putBoolean(SettingValues.PREF_ALWAYS_SHOW_FAB, isChecked).apply();
                }
            });
        }
    }
    // Show image download button
    {
        SwitchCompat showDownloadBtnSwitch = context.findViewById(R.id.settings_general_show_download_button);
        if (showDownloadBtnSwitch != null) {
            showDownloadBtnSwitch.setChecked(SettingValues.imageDownloadButton);
            showDownloadBtnSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    SettingValues.imageDownloadButton = isChecked;
                    SettingValues.prefs.edit().putBoolean(SettingValues.PREF_IMAGE_DOWNLOAD_BUTTON, isChecked).apply();
                }
            });
        }
    }
    {
        SwitchCompat subfolderSwitch = context.findViewById(R.id.settings_general_subfolder);
        if (subfolderSwitch != null) {
            subfolderSwitch.setChecked(SettingValues.imageSubfolders);
            subfolderSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    SettingValues.imageSubfolders = isChecked;
                    SettingValues.prefs.edit().putBoolean(SettingValues.PREF_IMAGE_SUBFOLDERS, isChecked).apply();
                }
            });
        }
    }
    final RelativeLayout setSaveLocationLayout = context.findViewById(R.id.settings_general_set_save_location);
    if (setSaveLocationLayout != null) {
        setSaveLocationLayout.setOnClickListener(v -> DialogUtil.showFolderChooserDialog(context));
    }
    TextView setSaveLocationView = context.findViewById(R.id.settings_general_set_save_location_view);
    if (setSaveLocationView != null) {
        String loc = Reddit.appRestart.getString("imagelocation", context.getString(R.string.settings_image_location_unset));
        setSaveLocationView.setText(loc);
    }
    final SwitchCompat expandedMenuSwitch = context.findViewById(R.id.settings_general_expandedmenu);
    if (expandedMenuSwitch != null) {
        expandedMenuSwitch.setChecked(SettingValues.expandedToolbar);
        expandedMenuSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
            SettingValues.expandedToolbar = isChecked;
            SettingValues.prefs.edit().putBoolean(SettingValues.PREF_EXPANDED_TOOLBAR, isChecked).apply();
        });
    }
    final RelativeLayout viewTypeLayout = context.findViewById(R.id.settings_general_viewtype);
    if (viewTypeLayout != null) {
        viewTypeLayout.setOnClickListener(new OnSingleClickListener() {

            @Override
            public void onSingleClick(View v) {
                Intent i = new Intent(context, SettingsViewType.class);
                context.startActivity(i);
            }
        });
    }
    // FAB multi choice//
    final RelativeLayout fabLayout = context.findViewById(R.id.settings_general_fab);
    final TextView currentFabView = context.findViewById(R.id.settings_general_fab_current);
    if (currentFabView != null && fabLayout != null) {
        currentFabView.setText(SettingValues.fab ? SettingValues.fabType == FAB_DISMISS ? context.getString(R.string.fab_hide) : context.getString(R.string.fab_create) : context.getString(R.string.fab_disabled));
        fabLayout.setOnClickListener(v -> {
            PopupMenu popup = new PopupMenu(context, v);
            popup.getMenuInflater().inflate(R.menu.fab_settings, popup.getMenu());
            popup.setOnMenuItemClickListener(item -> {
                switch(item.getItemId()) {
                    case R.id.disabled:
                        SettingValues.fab = false;
                        SettingValues.prefs.edit().putBoolean(SettingValues.PREF_FAB, false).apply();
                        break;
                    case R.id.hide:
                        SettingValues.fab = true;
                        SettingValues.fabType = FAB_DISMISS;
                        SettingValues.prefs.edit().putInt(SettingValues.PREF_FAB_TYPE, FAB_DISMISS).apply();
                        SettingValues.prefs.edit().putBoolean(SettingValues.PREF_FAB, true).apply();
                        break;
                    case R.id.create:
                        SettingValues.fab = true;
                        SettingValues.fabType = FAB_POST;
                        SettingValues.prefs.edit().putInt(SettingValues.PREF_FAB_TYPE, FAB_POST).apply();
                        SettingValues.prefs.edit().putBoolean(SettingValues.PREF_FAB, true).apply();
                        break;
                    case R.id.search:
                        SettingValues.fab = true;
                        SettingValues.fabType = FAB_SEARCH;
                        SettingValues.prefs.edit().putInt(SettingValues.PREF_FAB_TYPE, FAB_SEARCH).apply();
                        SettingValues.prefs.edit().putBoolean(SettingValues.PREF_FAB, true).apply();
                        break;
                }
                if (SettingValues.fab) {
                    if (SettingValues.fabType == FAB_DISMISS) {
                        currentFabView.setText(R.string.fab_hide);
                    } else if (SettingValues.fabType == FAB_POST) {
                        currentFabView.setText(R.string.fab_create);
                    } else {
                        currentFabView.setText(R.string.fab_search);
                    }
                } else {
                    currentFabView.setText(R.string.fab_disabled);
                }
                return true;
            });
            popup.show();
        });
    }
    // SettingValues.subredditSearchMethod == 1 for drawer, 2 for toolbar, 3 for both
    final TextView currentMethodTitle = context.findViewById(R.id.settings_general_subreddit_search_method_current);
    if (currentMethodTitle != null) {
        switch(SettingValues.subredditSearchMethod) {
            case SUBREDDIT_SEARCH_METHOD_DRAWER:
                currentMethodTitle.setText(context.getString(R.string.subreddit_search_method_drawer));
                break;
            case SUBREDDIT_SEARCH_METHOD_TOOLBAR:
                currentMethodTitle.setText(context.getString(R.string.subreddit_search_method_toolbar));
                break;
            case SUBREDDIT_SEARCH_METHOD_BOTH:
                currentMethodTitle.setText(context.getString(R.string.subreddit_search_method_both));
                break;
        }
    }
    final RelativeLayout currentMethodLayout = context.findViewById(R.id.settings_general_subreddit_search_method);
    if (currentMethodLayout != null) {
        currentMethodLayout.setOnClickListener(v -> {
            final PopupMenu popup = new PopupMenu(SettingsGeneralFragment.this.context, v);
            popup.getMenuInflater().inflate(R.menu.subreddit_search_settings, popup.getMenu());
            popup.setOnMenuItemClickListener(item -> {
                switch(item.getItemId()) {
                    case R.id.subreddit_search_drawer:
                        SettingValues.subredditSearchMethod = SUBREDDIT_SEARCH_METHOD_DRAWER;
                        SettingValues.prefs.edit().putInt(SettingValues.PREF_SUBREDDIT_SEARCH_METHOD, SUBREDDIT_SEARCH_METHOD_DRAWER).apply();
                        searchChanged = true;
                        break;
                    case R.id.subreddit_search_toolbar:
                        SettingValues.subredditSearchMethod = SUBREDDIT_SEARCH_METHOD_TOOLBAR;
                        SettingValues.prefs.edit().putInt(SettingValues.PREF_SUBREDDIT_SEARCH_METHOD, SUBREDDIT_SEARCH_METHOD_TOOLBAR).apply();
                        searchChanged = true;
                        break;
                    case R.id.subreddit_search_both:
                        SettingValues.subredditSearchMethod = SUBREDDIT_SEARCH_METHOD_BOTH;
                        SettingValues.prefs.edit().putInt(SettingValues.PREF_SUBREDDIT_SEARCH_METHOD, SUBREDDIT_SEARCH_METHOD_BOTH).apply();
                        searchChanged = true;
                        break;
                }
                switch(SettingValues.subredditSearchMethod) {
                    case SUBREDDIT_SEARCH_METHOD_DRAWER:
                        currentMethodTitle.setText(context.getString(R.string.subreddit_search_method_drawer));
                        break;
                    case SUBREDDIT_SEARCH_METHOD_TOOLBAR:
                        currentMethodTitle.setText(context.getString(R.string.subreddit_search_method_toolbar));
                        break;
                    case SUBREDDIT_SEARCH_METHOD_BOTH:
                        currentMethodTitle.setText(context.getString(R.string.subreddit_search_method_both));
                        break;
                }
                return true;
            });
            popup.show();
        });
    }
    final TextView currentBackButtonTitle = context.findViewById(R.id.settings_general_back_button_behavior_current);
    if (SettingValues.backButtonBehavior == BackButtonBehaviorOptions.ConfirmExit.getValue()) {
        currentBackButtonTitle.setText(context.getString(R.string.back_button_behavior_confirm_exit));
    } else if (SettingValues.backButtonBehavior == BackButtonBehaviorOptions.OpenDrawer.getValue()) {
        currentBackButtonTitle.setText(context.getString(R.string.back_button_behavior_drawer));
    } else if (SettingValues.backButtonBehavior == BackButtonBehaviorOptions.GotoFirst.getValue()) {
        currentBackButtonTitle.setText(context.getString(R.string.back_button_behavior_goto_first));
    } else {
        currentBackButtonTitle.setText(context.getString(R.string.back_button_behavior_default));
    }
    final RelativeLayout currentBackButtonLayout = context.findViewById(R.id.settings_general_back_button_behavior);
    currentBackButtonLayout.setOnClickListener(v -> {
        final PopupMenu popup = new PopupMenu(context, v);
        popup.getMenuInflater().inflate(R.menu.back_button_behavior_settings, popup.getMenu());
        popup.setOnMenuItemClickListener(item -> {
            switch(item.getItemId()) {
                case R.id.back_button_behavior_default:
                    SettingValues.backButtonBehavior = BackButtonBehaviorOptions.Default.getValue();
                    SettingValues.prefs.edit().putInt(SettingValues.PREF_BACK_BUTTON_BEHAVIOR, BackButtonBehaviorOptions.Default.getValue()).apply();
                    break;
                case R.id.back_button_behavior_confirm_exit:
                    SettingValues.backButtonBehavior = BackButtonBehaviorOptions.ConfirmExit.getValue();
                    SettingValues.prefs.edit().putInt(SettingValues.PREF_BACK_BUTTON_BEHAVIOR, BackButtonBehaviorOptions.ConfirmExit.getValue()).apply();
                    break;
                case R.id.back_button_behavior_open_drawer:
                    SettingValues.backButtonBehavior = BackButtonBehaviorOptions.OpenDrawer.getValue();
                    SettingValues.prefs.edit().putInt(SettingValues.PREF_BACK_BUTTON_BEHAVIOR, BackButtonBehaviorOptions.OpenDrawer.getValue()).apply();
                    break;
                case R.id.back_button_behavior_goto_first:
                    SettingValues.backButtonBehavior = BackButtonBehaviorOptions.GotoFirst.getValue();
                    SettingValues.prefs.edit().putInt(SettingValues.PREF_BACK_BUTTON_BEHAVIOR, BackButtonBehaviorOptions.GotoFirst.getValue()).apply();
                    break;
            }
            if (SettingValues.backButtonBehavior == BackButtonBehaviorOptions.ConfirmExit.getValue()) {
                currentBackButtonTitle.setText(context.getString(R.string.back_button_behavior_confirm_exit));
            } else if (SettingValues.backButtonBehavior == BackButtonBehaviorOptions.OpenDrawer.getValue()) {
                currentBackButtonTitle.setText(context.getString(R.string.back_button_behavior_drawer));
            } else if (SettingValues.backButtonBehavior == BackButtonBehaviorOptions.GotoFirst.getValue()) {
                currentBackButtonTitle.setText(context.getString(R.string.back_button_behavior_goto_first));
            } else {
                currentBackButtonTitle.setText(context.getString(R.string.back_button_behavior_default));
            }
            return true;
        });
        popup.show();
    });
    if (notifCurrentView != null && context.findViewById(R.id.settings_general_sub_notifs_current) != null) {
        if (Reddit.notificationTime > 0) {
            notifCurrentView.setText(context.getString(R.string.settings_notification_short, TimeUtils.getTimeInHoursAndMins(Reddit.notificationTime, context.getBaseContext())));
            setSubText();
        } else {
            notifCurrentView.setText(R.string.settings_notifdisabled);
            ((TextView) context.findViewById(R.id.settings_general_sub_notifs_current)).setText(R.string.settings_enable_notifs);
        }
    }
    if (Authentication.isLoggedIn) {
        if (notifLayout != null) {
            notifLayout.setOnClickListener(v -> {
                final LayoutInflater inflater = context.getLayoutInflater();
                final View dialoglayout = inflater.inflate(R.layout.inboxfrequency, null);
                setupNotificationSettings(dialoglayout, SettingsGeneralFragment.this.context);
            });
        }
        if (subNotifLayout != null) {
            subNotifLayout.setOnClickListener(v -> showSelectDialog());
        }
    } else {
        if (notifLayout != null) {
            notifLayout.setEnabled(false);
            notifLayout.setAlpha(0.25f);
        }
        if (subNotifLayout != null) {
            subNotifLayout.setEnabled(false);
            subNotifLayout.setAlpha(0.25f);
        }
    }
    if (defaultSortingCurrentView != null) {
        defaultSortingCurrentView.setText(SortingUtil.getSortingStrings()[SortingUtil.getSortingId("")]);
    }
    {
        if (context.findViewById(R.id.settings_general_sorting) != null) {
            context.findViewById(R.id.settings_general_sorting).setOnClickListener(v -> {
                final DialogInterface.OnClickListener l2 = (dialogInterface, i) -> {
                    switch(i) {
                        case 0:
                            SortingUtil.defaultSorting = Sorting.HOT;
                            break;
                        case 1:
                            SortingUtil.defaultSorting = Sorting.NEW;
                            break;
                        case 2:
                            SortingUtil.defaultSorting = Sorting.RISING;
                            break;
                        case 3:
                            SortingUtil.defaultSorting = Sorting.TOP;
                            askTimePeriod();
                            return;
                        case 4:
                            SortingUtil.defaultSorting = Sorting.CONTROVERSIAL;
                            askTimePeriod();
                            return;
                    }
                    SettingValues.prefs.edit().putString("defaultSorting", SortingUtil.defaultSorting.name()).apply();
                    SettingValues.defaultSorting = SortingUtil.defaultSorting;
                    if (defaultSortingCurrentView != null) {
                        defaultSortingCurrentView.setText(SortingUtil.getSortingStrings()[SortingUtil.getSortingId("")]);
                    }
                };
                // Remove the "Best" sorting option from settings because it is only supported on the frontpage.
                int skip = -1;
                List<String> sortingStrings = new ArrayList<>(Arrays.asList(SortingUtil.getSortingStrings()));
                for (int i = 0; i < sortingStrings.size(); i++) {
                    if (sortingStrings.get(i).equals(context.getString(R.string.sorting_best))) {
                        skip = i;
                        break;
                    }
                }
                if (skip != -1) {
                    sortingStrings.remove(skip);
                }
                new AlertDialog.Builder(SettingsGeneralFragment.this.context).setTitle(R.string.sorting_choose).setSingleChoiceItems(sortingStrings.toArray(new String[0]), SortingUtil.getSortingId(""), l2).show();
            });
        }
    }
    doNotifText(context);
    {
        final int i2 = SettingValues.defaultCommentSorting == CommentSort.CONFIDENCE ? 0 : SettingValues.defaultCommentSorting == CommentSort.TOP ? 1 : SettingValues.defaultCommentSorting == CommentSort.NEW ? 2 : SettingValues.defaultCommentSorting == CommentSort.CONTROVERSIAL ? 3 : SettingValues.defaultCommentSorting == CommentSort.OLD ? 4 : SettingValues.defaultCommentSorting == CommentSort.QA ? 5 : 0;
        final TextView sortingCurrentCommentView = context.findViewById(R.id.settings_general_sorting_current_comment);
        if (sortingCurrentCommentView != null) {
            sortingCurrentCommentView.setText(SortingUtil.getSortingCommentsStrings()[i2]);
        }
        if (context.findViewById(R.id.settings_general_sorting_comment) != null) {
            context.findViewById(R.id.settings_general_sorting_comment).setOnClickListener(v -> {
                final DialogInterface.OnClickListener l2 = (dialogInterface, i) -> {
                    CommentSort commentSorting = SettingValues.defaultCommentSorting;
                    switch(i) {
                        case 0:
                            commentSorting = CommentSort.CONFIDENCE;
                            break;
                        case 1:
                            commentSorting = CommentSort.TOP;
                            break;
                        case 2:
                            commentSorting = CommentSort.NEW;
                            break;
                        case 3:
                            commentSorting = CommentSort.CONTROVERSIAL;
                            break;
                        case 4:
                            commentSorting = CommentSort.OLD;
                            break;
                        case 5:
                            commentSorting = CommentSort.QA;
                            break;
                    }
                    SettingValues.prefs.edit().putString("defaultCommentSortingNew", commentSorting.name()).apply();
                    SettingValues.defaultCommentSorting = commentSorting;
                    if (sortingCurrentCommentView != null) {
                        sortingCurrentCommentView.setText(SortingUtil.getSortingCommentsStrings()[i]);
                    }
                };
                Resources res = context.getBaseContext().getResources();
                new AlertDialog.Builder(SettingsGeneralFragment.this.context).setTitle(R.string.sorting_choose).setSingleChoiceItems(new String[] { res.getString(R.string.sorting_best), res.getString(R.string.sorting_top), res.getString(R.string.sorting_new), res.getString(R.string.sorting_controversial), res.getString(R.string.sorting_old), res.getString(R.string.sorting_ama) }, i2, l2).show();
            });
        }
    }
}
Also used : Arrays(java.util.Arrays) R(me.ccrama.redditslide.R) TimeUtils(me.ccrama.redditslide.util.TimeUtils) NonNull(androidx.annotation.NonNull) FolderChooserDialogCreate(me.ccrama.redditslide.Fragments.FolderChooserDialogCreate) AppCompatActivity(androidx.appcompat.app.AppCompatActivity) OnSingleClickListener(me.ccrama.redditslide.util.OnSingleClickListener) FAB_SEARCH(me.ccrama.redditslide.Constants.FAB_SEARCH) ImageLoaderUtils(me.ccrama.redditslide.util.ImageLoaderUtils) CheckBox(android.widget.CheckBox) Locale(java.util.Locale) View(android.view.View) Sorting(net.dean.jraw.paginators.Sorting) CaseInsensitiveArrayList(me.ccrama.redditslide.CaseInsensitiveArrayList) CommentSort(net.dean.jraw.models.CommentSort) CheckForMail(me.ccrama.redditslide.Notifications.CheckForMail) AsyncTask(android.os.AsyncTask) Authentication(me.ccrama.redditslide.Authentication) Slider(com.rey.material.widget.Slider) NotificationJobScheduler(me.ccrama.redditslide.Notifications.NotificationJobScheduler) Palette(me.ccrama.redditslide.Visuals.Palette) BackButtonBehaviorOptions(me.ccrama.redditslide.Constants.BackButtonBehaviorOptions) List(java.util.List) TextView(android.widget.TextView) SUBREDDIT_SEARCH_METHOD_DRAWER(me.ccrama.redditslide.Constants.SUBREDDIT_SEARCH_METHOD_DRAWER) SortingUtil(me.ccrama.redditslide.util.SortingUtil) DrawerItemsDialog(me.ccrama.redditslide.Fragments.DrawerItemsDialog) RelativeLayout(android.widget.RelativeLayout) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) Snackbar(com.google.android.material.snackbar.Snackbar) SUBREDDIT_SEARCH_METHOD_BOTH(me.ccrama.redditslide.Constants.SUBREDDIT_SEARCH_METHOD_BOTH) SettingValues(me.ccrama.redditslide.SettingValues) AlertDialog(androidx.appcompat.app.AlertDialog) Dialog(android.app.Dialog) Intent(android.content.Intent) HashMap(java.util.HashMap) FAB_DISMISS(me.ccrama.redditslide.Constants.FAB_DISMISS) ArrayList(java.util.ArrayList) Toast(android.widget.Toast) UserSubscriptions(me.ccrama.redditslide.UserSubscriptions) Build(android.os.Build) DialogInterface(android.content.DialogInterface) TimePeriod(net.dean.jraw.paginators.TimePeriod) StringUtil(me.ccrama.redditslide.util.StringUtil) SUBREDDIT_SEARCH_METHOD_TOOLBAR(me.ccrama.redditslide.Constants.SUBREDDIT_SEARCH_METHOD_TOOLBAR) SwitchCompat(androidx.appcompat.widget.SwitchCompat) CompoundButton(android.widget.CompoundButton) DialogUtil(me.ccrama.redditslide.util.DialogUtil) LayoutInflater(android.view.LayoutInflater) Reddit(me.ccrama.redditslide.Reddit) DialogAction(com.afollestad.materialdialogs.DialogAction) File(java.io.File) FAB_POST(me.ccrama.redditslide.Constants.FAB_POST) PopupMenu(androidx.appcompat.widget.PopupMenu) Subreddit(net.dean.jraw.models.Subreddit) Activity(android.app.Activity) FolderCallback(me.ccrama.redditslide.Fragments.FolderChooserDialogCreate.FolderCallback) Resources(android.content.res.Resources) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) OnSingleClickListener(me.ccrama.redditslide.util.OnSingleClickListener) Intent(android.content.Intent) View(android.view.View) TextView(android.widget.TextView) DrawerItemsDialog(me.ccrama.redditslide.Fragments.DrawerItemsDialog) Reddit(me.ccrama.redditslide.Reddit) LayoutInflater(android.view.LayoutInflater) CommentSort(net.dean.jraw.models.CommentSort) RelativeLayout(android.widget.RelativeLayout) TextView(android.widget.TextView) CaseInsensitiveArrayList(me.ccrama.redditslide.CaseInsensitiveArrayList) List(java.util.List) ArrayList(java.util.ArrayList) Resources(android.content.res.Resources) CompoundButton(android.widget.CompoundButton) SwitchCompat(androidx.appcompat.widget.SwitchCompat) PopupMenu(androidx.appcompat.widget.PopupMenu)

Example 9 with PopupMenu

use of androidx.appcompat.widget.PopupMenu in project Slide by ccrama.

the class SettingsHandlingFragment method setUpBrowserLinkHandling.

private void setUpBrowserLinkHandling() {
    final RadioGroup browserTypeRadioGroup = context.findViewById(R.id.settings_handling_select_browser_type);
    final RelativeLayout selectBrowserLayout = context.findViewById(R.id.settings_handling_select_browser_layout);
    final TextView webBrowserView = context.findViewById(R.id.settings_handling_browser);
    browserTypeRadioGroup.check(LinkHandlingMode.idResFromValue(SettingValues.linkHandlingMode));
    browserTypeRadioGroup.setOnCheckedChangeListener((group, checkedId) -> {
        SettingValues.linkHandlingMode = LinkHandlingMode.valueFromIdRes(checkedId);
        SettingValues.prefs.edit().putInt(SettingValues.PREF_LINK_HANDLING_MODE, SettingValues.linkHandlingMode).apply();
    });
    final HashMap<String, String> installedBrowsers = Reddit.getInstalledBrowsers();
    if (!installedBrowsers.containsKey(SettingValues.selectedBrowser)) {
        SettingValues.selectedBrowser = "";
        SettingValues.prefs.edit().putString(SettingValues.PREF_SELECTED_BROWSER, SettingValues.selectedBrowser).apply();
    }
    webBrowserView.setText(installedBrowsers.get(SettingValues.selectedBrowser));
    if (installedBrowsers.size() <= 1) {
        selectBrowserLayout.setVisibility(View.GONE);
    } else {
        selectBrowserLayout.setVisibility(View.VISIBLE);
        selectBrowserLayout.setOnClickListener(v -> {
            final PopupMenu popupMenu = new PopupMenu(context, v);
            final HashMap<MenuItem, String> packageNames = new HashMap<>();
            for (Map.Entry<String, String> entry : installedBrowsers.entrySet()) {
                final MenuItem menuItem = popupMenu.getMenu().add(entry.getValue());
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                    menuItem.setTooltipText(entry.getKey());
                }
                packageNames.put(menuItem, entry.getKey());
            }
            popupMenu.setOnMenuItemClickListener(item -> {
                SettingValues.selectedBrowser = packageNames.get(item);
                SettingValues.prefs.edit().putString(SettingValues.PREF_SELECTED_BROWSER, SettingValues.selectedBrowser).apply();
                webBrowserView.setText(item.getTitle());
                return true;
            });
            popupMenu.show();
        });
    }
}
Also used : RadioGroup(android.widget.RadioGroup) HashMap(java.util.HashMap) RelativeLayout(android.widget.RelativeLayout) TextView(android.widget.TextView) MenuItem(android.view.MenuItem) BiMap(com.google.common.collect.BiMap) HashMap(java.util.HashMap) HashBiMap(com.google.common.collect.HashBiMap) Map(java.util.Map) PopupMenu(androidx.appcompat.widget.PopupMenu)

Example 10 with PopupMenu

use of androidx.appcompat.widget.PopupMenu in project Signal-Android by signalapp.

the class PopupMenuView method init.

private void init(@Nullable AttributeSet attrs) {
    setBackgroundResource(R.drawable.ic_more_vert_24);
    if (attrs != null) {
        TypedArray typedArray = getContext().getTheme().obtainStyledAttributes(attrs, R.styleable.PopupMenuView, 0, 0);
        int tint = typedArray.getColor(R.styleable.PopupMenuView_background_tint, Color.BLACK);
        Drawable drawable = ContextCompat.getDrawable(getContext(), R.drawable.ic_more_vert_24);
        DrawableCompat.setTint(Objects.requireNonNull(drawable), tint);
        setBackground(drawable);
        typedArray.recycle();
    }
    setOnClickListener(v -> {
        if (callback != null) {
            PopupMenu popup = new PopupMenu(getContext(), v);
            MenuInflater inflater = popup.getMenuInflater();
            inflater.inflate(menu, popup.getMenu());
            if (prepareOptionsMenuItemCallback != null) {
                Menu menu = popup.getMenu();
                for (int i = menu.size() - 1; i >= 0; i--) {
                    MenuItem item = menu.getItem(i);
                    if (!prepareOptionsMenuItemCallback.onPrepareOptionsMenuItem(item)) {
                        menu.removeItem(item.getItemId());
                    }
                }
            }
            popup.setOnMenuItemClickListener(item -> callback.onItemClick(item.getItemId()));
            popup.show();
        }
    });
}
Also used : MenuInflater(android.view.MenuInflater) TypedArray(android.content.res.TypedArray) Drawable(android.graphics.drawable.Drawable) MenuItem(android.view.MenuItem) PopupMenu(androidx.appcompat.widget.PopupMenu) Menu(android.view.Menu) PopupMenu(androidx.appcompat.widget.PopupMenu)

Aggregations

PopupMenu (androidx.appcompat.widget.PopupMenu)34 MenuItem (android.view.MenuItem)20 TextView (android.widget.TextView)12 Spannable (android.text.Spannable)8 View (android.view.View)8 Menu (android.view.Menu)7 SwitchCompat (androidx.appcompat.widget.SwitchCompat)5 MenuInflater (android.view.MenuInflater)4 LinearLayout (android.widget.LinearLayout)4 RelativeLayout (android.widget.RelativeLayout)4 Intent (android.content.Intent)3 AdapterView (android.widget.AdapterView)3 ListView (android.widget.ListView)3 SuppressLint (android.annotation.SuppressLint)2 Activity (android.app.Activity)2 Resources (android.content.res.Resources)2 TypedArray (android.content.res.TypedArray)2 Drawable (android.graphics.drawable.Drawable)2 CompoundButton (android.widget.CompoundButton)2 SearchView (androidx.appcompat.widget.SearchView)2