Search in sources :

Example 71 with Snackbar

use of com.google.android.material.snackbar.Snackbar in project SeriesGuide by UweTrottmann.

the class BaseTopActivity method onAutoBackupMissingFiles.

@Override
protected void onAutoBackupMissingFiles() {
    if (snackbar != null && snackbar.isShown()) {
        Timber.d("NOT showing backup files warning: existing snackbar.");
        return;
    }
    Snackbar newSnackbar = Snackbar.make(getSnackbarParentView(), R.string.autobackup_files_missing, Snackbar.LENGTH_INDEFINITE);
    // Manually increase max lines.
    TextView textView = newSnackbar.getView().findViewById(com.google.android.material.R.id.snackbar_text);
    textView.setMaxLines(5);
    newSnackbar.setAction(R.string.preferences, v -> startActivity(DataLiberationActivity.intentToShowAutoBackup(this)));
    newSnackbar.show();
    snackbar = newSnackbar;
}
Also used : TextView(android.widget.TextView) Snackbar(com.google.android.material.snackbar.Snackbar)

Example 72 with Snackbar

use of com.google.android.material.snackbar.Snackbar in project android by owncloud.

the class ExpandableUploadListAdapter method getView.

private View getView(OCUpload[] uploadsItems, int position, View convertView, ViewGroup parent) {
    View view = convertView;
    if (view == null) {
        LayoutInflater inflator = (LayoutInflater) mParentActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflator.inflate(R.layout.upload_list_item, parent, false);
        // Allow or disallow touches with other visible windows
        view.setFilterTouchesWhenObscured(PreferenceUtils.shouldDisallowTouchesWithOtherVisibleWindows(mParentActivity));
    }
    if (uploadsItems != null && uploadsItems.length > position) {
        final OCUpload upload = uploadsItems[position];
        // local file name
        TextView fileTextView = view.findViewById(R.id.upload_name);
        File remoteFile = new File(upload.getRemotePath());
        String fileName = remoteFile.getName();
        if (fileName.length() == 0) {
            fileName = File.separator;
        }
        fileTextView.setText(fileName);
        // remote path to parent folder
        TextView pathTextView = view.findViewById(R.id.upload_remote_path);
        pathTextView.setText(PREF__CAMERA_UPLOADS_DEFAULT_PATH);
        String remoteParentPath = upload.getRemotePath();
        remoteParentPath = new File(remoteParentPath).getParent();
        String pathText = mParentActivity.getString(R.string.app_name) + remoteParentPath;
        pathTextView.setText(pathText);
        // file size
        TextView fileSizeTextView = view.findViewById(R.id.upload_file_size);
        String fileSize = DisplayUtils.bytesToHumanReadable(upload.getFileSize(), mParentActivity) + ", ";
        fileSizeTextView.setText(fileSize);
        // * upload date
        TextView uploadDateTextView = view.findViewById(R.id.upload_date);
        long updateTime = upload.getUploadEndTimestamp();
        CharSequence dateString = DisplayUtils.getRelativeDateTimeString(mParentActivity, updateTime, DateUtils.SECOND_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, 0);
        uploadDateTextView.setText(dateString);
        TextView accountNameTextView = view.findViewById(R.id.upload_account);
        try {
            Account account = AccountUtils.getOwnCloudAccountByName(mParentActivity, upload.getAccountName());
            OwnCloudAccount oca = new OwnCloudAccount(account, mParentActivity);
            String accountName = oca.getDisplayName() + " @ " + DisplayUtils.convertIdn(account.name.substring(account.name.lastIndexOf("@") + 1), false);
            accountNameTextView.setText(accountName);
        } catch (Exception e) {
            Timber.w("Couldn't get display name for account, using old style");
            accountNameTextView.setText(upload.getAccountName());
        }
        TextView statusTextView = view.findViewById(R.id.upload_status);
        ProgressBar progressBar = view.findViewById(R.id.upload_progress_bar);
        // / Reset fields visibility
        uploadDateTextView.setVisibility(View.VISIBLE);
        pathTextView.setVisibility(View.VISIBLE);
        fileSizeTextView.setVisibility(View.VISIBLE);
        accountNameTextView.setVisibility(View.VISIBLE);
        statusTextView.setVisibility(View.VISIBLE);
        progressBar.setVisibility(View.GONE);
        // / Update information depending of upload details
        String status = getStatusText(upload);
        switch(upload.getUploadStatus()) {
            case UPLOAD_IN_PROGRESS:
                progressBar.setProgress(0);
                progressBar.setVisibility(View.VISIBLE);
                FileUploader.FileUploaderBinder binder = mParentActivity.getFileUploaderBinder();
                if (binder != null) {
                    if (binder.isUploadingNow(upload)) {
                        // / ... unbind the old progress bar, if any; ...
                        if (mProgressListener != null) {
                            binder.removeDatatransferProgressListener(mProgressListener, // the one that was added
                            mProgressListener.getUpload());
                        }
                        // / ... then, bind the current progress bar to listen for updates
                        mProgressListener = new ProgressListener(upload, progressBar);
                        binder.addDatatransferProgressListener(mProgressListener, upload);
                    } else {
                        // / not really uploading; stop listening progress if view is reused!
                        if (convertView != null && mProgressListener != null && mProgressListener.isWrapping(progressBar)) {
                            binder.removeDatatransferProgressListener(mProgressListener, // the one that was added
                            mProgressListener.getUpload());
                            mProgressListener = null;
                        }
                    }
                } else {
                    Timber.w("FileUploaderBinder not ready yet for upload %s", upload.getRemotePath());
                }
                uploadDateTextView.setVisibility(View.GONE);
                pathTextView.setVisibility(View.GONE);
                progressBar.invalidate();
                break;
            case UPLOAD_FAILED:
                uploadDateTextView.setVisibility(View.GONE);
                break;
            case UPLOAD_SUCCEEDED:
                statusTextView.setVisibility(View.GONE);
                break;
        }
        statusTextView.setText(status);
        // / bind listeners to perform actions
        ImageButton rightButton = view.findViewById(R.id.upload_right_button);
        if (upload.getUploadStatus() == UploadStatus.UPLOAD_IN_PROGRESS) {
            // Cancel
            rightButton.setImageResource(R.drawable.ic_action_cancel_grey);
            rightButton.setVisibility(View.VISIBLE);
            rightButton.setOnClickListener(v -> {
                String localPath = upload.getLocalPath();
                boolean isDocumentUri = DocumentFile.isDocumentUri(parent.getContext(), Uri.parse(localPath));
                if (isDocumentUri) {
                    CancelUploadWithIdUseCase cancelUploadWithIdUseCase = new CancelUploadWithIdUseCase(WorkManager.getInstance(parent.getContext()));
                    cancelUploadWithIdUseCase.execute(new CancelUploadWithIdUseCase.Params(upload));
                } else {
                    FileUploader.FileUploaderBinder uploaderBinder = mParentActivity.getFileUploaderBinder();
                    if (uploaderBinder != null) {
                        uploaderBinder.cancel(upload);
                    }
                }
                refreshView();
            });
        } else if (upload.getUploadStatus() == UploadStatus.UPLOAD_FAILED) {
            // Delete
            rightButton.setImageResource(R.drawable.ic_action_delete_grey);
            rightButton.setVisibility(View.VISIBLE);
            rightButton.setOnClickListener(v -> {
                mUploadsStorageManager.removeUpload(upload);
                refreshView();
            });
        } else {
            // UploadStatus.UPLOAD_SUCCESS
            rightButton.setVisibility(View.INVISIBLE);
        }
        // retry
        if (upload.getUploadStatus() == UploadStatus.UPLOAD_FAILED) {
            if (UploadResult.CREDENTIAL_ERROR.equals(upload.getLastResult())) {
                view.setOnClickListener(v -> mParentActivity.getFileOperationsHelper().checkCurrentCredentials(upload.getAccount(mParentActivity)));
            } else {
                // not a credentials error
                view.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        File file = new File(upload.getLocalPath());
                        if (file.exists()) {
                            TransferRequester requester = new TransferRequester();
                            requester.retry(mParentActivity, upload, false);
                            refreshView();
                        } else if (DocumentFile.isDocumentUri(v.getContext(), Uri.parse(upload.getLocalPath()))) {
                            WorkManager workManager = WorkManager.getInstance(MainApp.Companion.getAppContext());
                            RetryUploadFromContentUriUseCase retryUploadFromContentUriUseCase = new RetryUploadFromContentUriUseCase(workManager);
                            RetryUploadFromContentUriUseCase.Params useCaseParams = new RetryUploadFromContentUriUseCase.Params(upload.getUploadId());
                            retryUploadFromContentUriUseCase.execute(useCaseParams);
                        } else {
                            Snackbar snackbar = Snackbar.make(v.getRootView().findViewById(android.R.id.content), mParentActivity.getString(R.string.local_file_not_found_toast), Snackbar.LENGTH_LONG);
                            snackbar.show();
                        }
                    }
                });
            }
        } else {
            view.setOnClickListener(null);
        }
        // / Set icon or thumbnail
        ImageView fileIcon = view.findViewById(R.id.thumbnail);
        fileIcon.setImageResource(R.drawable.file);
        /* Cancellation needs do be checked and done before changing the drawable in fileIcon, or
             * {@link ThumbnailsCacheManager#cancelPotentialWork} will NEVER cancel any task.
             */
        OCFile fakeFileToCheatThumbnailsCacheManagerInterface = new OCFile(upload.getRemotePath());
        fakeFileToCheatThumbnailsCacheManagerInterface.setStoragePath(upload.getLocalPath());
        fakeFileToCheatThumbnailsCacheManagerInterface.setMimetype(upload.getMimeType());
        boolean allowedToCreateNewThumbnail = (ThumbnailsCacheManager.cancelPotentialThumbnailWork(fakeFileToCheatThumbnailsCacheManagerInterface, fileIcon));
        // TODO this code is duplicated; refactor to a common place
        if ((fakeFileToCheatThumbnailsCacheManagerInterface.isImage() && fakeFileToCheatThumbnailsCacheManagerInterface.getRemoteId() != null && upload.getUploadStatus() == UploadStatus.UPLOAD_SUCCEEDED)) {
            // Thumbnail in Cache?
            Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(String.valueOf(fakeFileToCheatThumbnailsCacheManagerInterface.getRemoteId()));
            if (thumbnail != null && !fakeFileToCheatThumbnailsCacheManagerInterface.needsUpdateThumbnail()) {
                fileIcon.setImageBitmap(thumbnail);
            } else {
                // generate new Thumbnail
                if (allowedToCreateNewThumbnail) {
                    final ThumbnailsCacheManager.ThumbnailGenerationTask task = new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon, mParentActivity.getStorageManager(), mParentActivity.getAccount());
                    if (thumbnail == null) {
                        thumbnail = ThumbnailsCacheManager.mDefaultImg;
                    }
                    final ThumbnailsCacheManager.AsyncThumbnailDrawable asyncDrawable = new ThumbnailsCacheManager.AsyncThumbnailDrawable(mParentActivity.getResources(), thumbnail, task);
                    fileIcon.setImageDrawable(asyncDrawable);
                    task.execute(fakeFileToCheatThumbnailsCacheManagerInterface);
                }
            }
            if ("image/png".equals(upload.getMimeType())) {
                fileIcon.setBackgroundColor(mParentActivity.getResources().getColor(R.color.background_color));
            }
        } else if (fakeFileToCheatThumbnailsCacheManagerInterface.isImage()) {
            File file = new File(upload.getLocalPath());
            // Thumbnail in Cache?
            Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(String.valueOf(file.hashCode()));
            if (thumbnail != null) {
                fileIcon.setImageBitmap(thumbnail);
            } else {
                // generate new Thumbnail
                if (allowedToCreateNewThumbnail) {
                    final ThumbnailsCacheManager.ThumbnailGenerationTask task = new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon);
                    thumbnail = ThumbnailsCacheManager.mDefaultImg;
                    final ThumbnailsCacheManager.AsyncThumbnailDrawable asyncDrawable = new ThumbnailsCacheManager.AsyncThumbnailDrawable(mParentActivity.getResources(), thumbnail, task);
                    fileIcon.setImageDrawable(asyncDrawable);
                    task.execute(file);
                    Timber.v("Executing task to generate a new thumbnail");
                }
            }
            if ("image/png".equalsIgnoreCase(upload.getMimeType())) {
                fileIcon.setBackgroundColor(mParentActivity.getResources().getColor(R.color.background_color));
            }
        } else {
            fileIcon.setImageResource(MimetypeIconUtil.getFileTypeIconId(upload.getMimeType(), fileName));
        }
    }
    return view;
}
Also used : OnDatatransferProgressListener(com.owncloud.android.lib.common.network.OnDatatransferProgressListener) Observer(java.util.Observer) ImageButton(android.widget.ImageButton) ThumbnailsCacheManager(com.owncloud.android.datamodel.ThumbnailsCacheManager) Arrays(java.util.Arrays) DateUtils(android.text.format.DateUtils) ProgressBar(android.widget.ProgressBar) Uri(android.net.Uri) ImageView(android.widget.ImageView) OCFile(com.owncloud.android.datamodel.OCFile) PreferenceUtils(com.owncloud.android.utils.PreferenceUtils) BaseExpandableListAdapter(android.widget.BaseExpandableListAdapter) CancelUploadWithIdUseCase(com.owncloud.android.usecases.CancelUploadWithIdUseCase) View(android.view.View) DisplayUtils(com.owncloud.android.utils.DisplayUtils) PREF__CAMERA_UPLOADS_DEFAULT_PATH(com.owncloud.android.db.PreferenceManager.PREF__CAMERA_UPLOADS_DEFAULT_PATH) DataSetObserver(android.database.DataSetObserver) RetryUploadFromContentUriUseCase(com.owncloud.android.usecases.RetryUploadFromContentUriUseCase) TransferRequester(com.owncloud.android.files.services.TransferRequester) Account(android.accounts.Account) UploadStatus(com.owncloud.android.datamodel.UploadsStorageManager.UploadStatus) AppCompatButton(androidx.appcompat.widget.AppCompatButton) ViewGroup(android.view.ViewGroup) Timber(timber.log.Timber) OCUpload(com.owncloud.android.datamodel.OCUpload) TextView(android.widget.TextView) OwnCloudAccount(com.owncloud.android.lib.common.OwnCloudAccount) MainApp(com.owncloud.android.MainApp) DocumentFile(androidx.documentfile.provider.DocumentFile) UploadResult(com.owncloud.android.db.UploadResult) FileUploader(com.owncloud.android.files.services.FileUploader) Snackbar(com.google.android.material.snackbar.Snackbar) R(com.owncloud.android.R) MimetypeIconUtil(com.owncloud.android.utils.MimetypeIconUtil) Context(android.content.Context) FileActivity(com.owncloud.android.ui.activity.FileActivity) UploadsStorageManager(com.owncloud.android.datamodel.UploadsStorageManager) WorkManager(androidx.work.WorkManager) UploadListFragment(com.owncloud.android.ui.fragment.UploadListFragment) WeakReference(java.lang.ref.WeakReference) LayoutInflater(android.view.LayoutInflater) AccountUtils(com.owncloud.android.authentication.AccountUtils) File(java.io.File) OptionsInUploadListClickListener(com.owncloud.android.ui.fragment.OptionsInUploadListClickListener) Bitmap(android.graphics.Bitmap) ExpandableListView(android.widget.ExpandableListView) Comparator(java.util.Comparator) Observable(java.util.Observable) OnClickListener(android.view.View.OnClickListener) Account(android.accounts.Account) OwnCloudAccount(com.owncloud.android.lib.common.OwnCloudAccount) FileUploader(com.owncloud.android.files.services.FileUploader) OwnCloudAccount(com.owncloud.android.lib.common.OwnCloudAccount) OCFile(com.owncloud.android.datamodel.OCFile) OCUpload(com.owncloud.android.datamodel.OCUpload) ImageButton(android.widget.ImageButton) Bitmap(android.graphics.Bitmap) ThumbnailsCacheManager(com.owncloud.android.datamodel.ThumbnailsCacheManager) WorkManager(androidx.work.WorkManager) TextView(android.widget.TextView) ImageView(android.widget.ImageView) ProgressBar(android.widget.ProgressBar) RetryUploadFromContentUriUseCase(com.owncloud.android.usecases.RetryUploadFromContentUriUseCase) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) ExpandableListView(android.widget.ExpandableListView) CancelUploadWithIdUseCase(com.owncloud.android.usecases.CancelUploadWithIdUseCase) TransferRequester(com.owncloud.android.files.services.TransferRequester) OnDatatransferProgressListener(com.owncloud.android.lib.common.network.OnDatatransferProgressListener) LayoutInflater(android.view.LayoutInflater) OnClickListener(android.view.View.OnClickListener) OCFile(com.owncloud.android.datamodel.OCFile) DocumentFile(androidx.documentfile.provider.DocumentFile) File(java.io.File) Snackbar(com.google.android.material.snackbar.Snackbar)

Example 73 with Snackbar

use of com.google.android.material.snackbar.Snackbar in project kdeconnect-android by KDE.

the class SettingsFragment method onCreatePreferences.

@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
    Context context = getPreferenceManager().getContext();
    PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(context);
    // Rename device
    renameDevice = new EditTextPreference(context);
    renameDevice.setKey(DeviceHelper.KEY_DEVICE_NAME_PREFERENCE);
    renameDevice.setSelectable(true);
    String deviceName = DeviceHelper.getDeviceName(context);
    renameDevice.setTitle(R.string.settings_rename);
    renameDevice.setSummary(deviceName);
    renameDevice.setDialogTitle(R.string.device_rename_title);
    renameDevice.setText(deviceName);
    renameDevice.setPositiveButtonText(R.string.device_rename_confirm);
    renameDevice.setNegativeButtonText(R.string.cancel);
    renameDevice.setOnPreferenceChangeListener((preference, newValue) -> {
        String name = (String) newValue;
        if (TextUtils.isEmpty(name)) {
            if (getView() != null) {
                Snackbar snackbar = Snackbar.make(getView(), R.string.invalid_device_name, Snackbar.LENGTH_LONG);
                int currentTheme = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
                if (currentTheme != Configuration.UI_MODE_NIGHT_YES) {
                    // white color is set to the background of snackbar if dark mode is off
                    snackbar.getView().setBackgroundColor(Color.WHITE);
                }
                snackbar.show();
            }
            return false;
        }
        renameDevice.setSummary((String) newValue);
        return true;
    });
    screen.addPreference(renameDevice);
    // Theme Selector
    ListPreference themeSelector = new ListPreference(context);
    themeSelector.setKey("theme_pref");
    themeSelector.setTitle(R.string.theme_dialog_title);
    themeSelector.setDialogTitle(R.string.theme_dialog_title);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        themeSelector.setEntries(R.array.theme_list_v28);
    } else {
        themeSelector.setEntries(R.array.theme_list);
    }
    themeSelector.setEntryValues(R.array.theme_list_values);
    themeSelector.setDefaultValue(ThemeUtil.DEFAULT_MODE);
    themeSelector.setSummaryProvider(ListPreference.SimpleSummaryProvider.getInstance());
    themeSelector.setOnPreferenceChangeListener((preference, newValue) -> {
        String themeValue = (String) newValue;
        ThemeUtil.applyTheme(themeValue);
        return true;
    });
    screen.addPreference(themeSelector);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        Preference persistentNotif = new Preference(context);
        persistentNotif.setTitle(R.string.setting_persistent_notification_oreo);
        persistentNotif.setSummary(R.string.setting_persistent_notification_description);
        persistentNotif.setOnPreferenceClickListener(preference -> {
            Intent intent = new Intent();
            intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
            intent.putExtra("android.provider.extra.APP_PACKAGE", context.getPackageName());
            context.startActivity(intent);
            return true;
        });
        screen.addPreference(persistentNotif);
    } else {
        // Persistent notification toggle for Android Versions below Oreo
        final TwoStatePreference notificationSwitch = new SwitchPreferenceCompat(context);
        notificationSwitch.setPersistent(false);
        notificationSwitch.setChecked(NotificationHelper.isPersistentNotificationEnabled(context));
        notificationSwitch.setTitle(R.string.setting_persistent_notification);
        notificationSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
            final boolean isChecked = (Boolean) newValue;
            NotificationHelper.setPersistentNotificationEnabled(context, isChecked);
            BackgroundService.RunCommand(context, service -> service.changePersistentNotificationVisibility(isChecked));
            NotificationHelper.setPersistentNotificationEnabled(context, isChecked);
            return true;
        });
        screen.addPreference(notificationSwitch);
    }
    // Trusted Networks
    Preference trustedNetworkPref = new Preference(context);
    trustedNetworkPref.setPersistent(false);
    trustedNetworkPref.setTitle(R.string.trusted_networks);
    trustedNetworkPref.setSummary(R.string.trusted_networks_desc);
    screen.addPreference(trustedNetworkPref);
    trustedNetworkPref.setOnPreferenceClickListener(preference -> {
        startActivity(new Intent(context, TrustedNetworksActivity.class));
        return true;
    });
    // Add device by IP
    Preference devicesByIpPreference = new Preference(context);
    devicesByIpPreference.setPersistent(false);
    devicesByIpPreference.setTitle(R.string.custom_device_list);
    screen.addPreference(devicesByIpPreference);
    devicesByIpPreference.setOnPreferenceClickListener(preference -> {
        startActivity(new Intent(context, CustomDevicesActivity.class));
        return true;
    });
    // More settings text
    Preference moreSettingsText = new Preference(context);
    moreSettingsText.setPersistent(false);
    moreSettingsText.setSelectable(false);
    moreSettingsText.setTitle(R.string.settings_more_settings_title);
    moreSettingsText.setSummary(R.string.settings_more_settings_text);
    screen.addPreference(moreSettingsText);
    setPreferenceScreen(screen);
}
Also used : Context(android.content.Context) TwoStatePreference(androidx.preference.TwoStatePreference) PreferenceScreen(androidx.preference.PreferenceScreen) SwitchPreferenceCompat(androidx.preference.SwitchPreferenceCompat) Intent(android.content.Intent) EditTextPreference(androidx.preference.EditTextPreference) ListPreference(androidx.preference.ListPreference) TwoStatePreference(androidx.preference.TwoStatePreference) Preference(androidx.preference.Preference) ListPreference(androidx.preference.ListPreference) EditTextPreference(androidx.preference.EditTextPreference) Snackbar(com.google.android.material.snackbar.Snackbar)

Example 74 with Snackbar

use of com.google.android.material.snackbar.Snackbar in project Tusky by Vavassor.

the class BaseActivity method showErrorDialog.

protected void showErrorDialog(View anyView, @StringRes int descriptionId, @StringRes int actionId, View.OnClickListener listener) {
    if (anyView != null) {
        Snackbar bar = Snackbar.make(anyView, getString(descriptionId), Snackbar.LENGTH_SHORT);
        bar.setAction(actionId, listener);
        bar.show();
    }
}
Also used : Snackbar(com.google.android.material.snackbar.Snackbar)

Example 75 with Snackbar

use of com.google.android.material.snackbar.Snackbar in project android by nextcloud.

the class DisplayUtils method showSnackMessage.

/**
 * Show a temporary message in a {@link Snackbar} bound to the given view.
 *
 * @param view    The view the {@link Snackbar} is bound to.
 * @param message The message.
 * @return The created {@link Snackbar}
 */
public static Snackbar showSnackMessage(View view, String message) {
    final Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_LONG);
    snackbar.show();
    return snackbar;
}
Also used : Snackbar(com.google.android.material.snackbar.Snackbar)

Aggregations

Snackbar (com.google.android.material.snackbar.Snackbar)110 View (android.view.View)61 Intent (android.content.Intent)46 TextView (android.widget.TextView)41 AlertDialog (androidx.appcompat.app.AlertDialog)29 Context (android.content.Context)28 ImageView (android.widget.ImageView)28 LayoutInflater (android.view.LayoutInflater)24 ArrayList (java.util.ArrayList)23 RecyclerView (androidx.recyclerview.widget.RecyclerView)22 Bundle (android.os.Bundle)20 MaterialDialog (com.afollestad.materialdialogs.MaterialDialog)20 DialogInterface (android.content.DialogInterface)19 List (java.util.List)19 CreateCardView (me.ccrama.redditslide.Views.CreateCardView)18 Submission (net.dean.jraw.models.Submission)18 SubredditView (me.ccrama.redditslide.Activities.SubredditView)17 ApiException (net.dean.jraw.ApiException)17 Activity (android.app.Activity)16 OnSingleClickListener (me.ccrama.redditslide.util.OnSingleClickListener)16