use of net.dean.jraw.managers.ModerationManager in project Slide by ccrama.
the class MainActivity method doSubSidebar.
public void doSubSidebar(final String subreddit) {
if (mAsyncGetSubreddit != null) {
mAsyncGetSubreddit.cancel(true);
}
findViewById(R.id.loader).setVisibility(View.VISIBLE);
invalidateOptionsMenu();
if (!subreddit.equalsIgnoreCase("all") && !subreddit.equalsIgnoreCase("frontpage") && !subreddit.equalsIgnoreCase("friends") && !subreddit.equalsIgnoreCase("mod") && !subreddit.contains("+") && !subreddit.contains(".") && !subreddit.contains("/m/")) {
if (drawerLayout != null) {
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.END);
}
mAsyncGetSubreddit = new AsyncGetSubreddit();
mAsyncGetSubreddit.execute(subreddit);
final View dialoglayout = findViewById(R.id.sidebarsub);
{
View submit = (dialoglayout.findViewById(R.id.submit));
if (!Authentication.isLoggedIn || !Authentication.didOnline) {
submit.setVisibility(View.GONE);
}
if (SettingValues.fab && SettingValues.fabType == Constants.FAB_POST) {
submit.setVisibility(View.GONE);
}
submit.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View view) {
Intent inte = new Intent(MainActivity.this, Submit.class);
if (!subreddit.contains("/m/") && canSubmit) {
inte.putExtra(Submit.EXTRA_SUBREDDIT, subreddit);
}
MainActivity.this.startActivity(inte);
}
});
}
dialoglayout.findViewById(R.id.wiki).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, Wiki.class);
i.putExtra(Wiki.EXTRA_SUBREDDIT, subreddit);
startActivity(i);
}
});
dialoglayout.findViewById(R.id.syncflair).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageFlairs.syncFlairs(MainActivity.this, subreddit);
}
});
dialoglayout.findViewById(R.id.submit).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, Submit.class);
if ((!subreddit.contains("/m/") || !subreddit.contains(".")) && canSubmit) {
i.putExtra(Submit.EXTRA_SUBREDDIT, subreddit);
}
startActivity(i);
}
});
final TextView sort = dialoglayout.findViewById(R.id.sort);
Sorting sortingis = Sorting.HOT;
if (SettingValues.hasSort(subreddit)) {
sortingis = SettingValues.getBaseSubmissionSort(subreddit);
sort.setText(sortingis.name() + ((sortingis == Sorting.CONTROVERSIAL || sortingis == Sorting.TOP) ? " of " + SettingValues.getBaseTimePeriod(subreddit).name() : ""));
} else {
sort.setText("Set default sorting");
}
final int sortid = Reddit.getSortingId(sortingis);
dialoglayout.findViewById(R.id.sorting).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final DialogInterface.OnClickListener l2 = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
switch(i) {
case 0:
sorts = Sorting.HOT;
break;
case 1:
sorts = Sorting.NEW;
break;
case 2:
sorts = Sorting.RISING;
break;
case 3:
sorts = Sorting.TOP;
askTimePeriod(sorts, subreddit, dialoglayout);
return;
case 4:
sorts = Sorting.CONTROVERSIAL;
askTimePeriod(sorts, subreddit, dialoglayout);
return;
}
SettingValues.setSubSorting(sorts, time, subreddit);
Sorting sortingis = SettingValues.getBaseSubmissionSort(subreddit);
sort.setText(sortingis.name() + ((sortingis == Sorting.CONTROVERSIAL || sortingis == Sorting.TOP) ? " of " + SettingValues.getBaseTimePeriod(subreddit).name() : ""));
reloadSubs();
}
};
AlertDialogWrapper.Builder builder = new AlertDialogWrapper.Builder(MainActivity.this);
builder.setTitle(R.string.sorting_choose);
builder.setSingleChoiceItems(Reddit.getSortingStrings(getBaseContext()), sortid, l2);
builder.setNegativeButton("Reset default sorting", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
SettingValues.prefs.edit().remove("defaultSort" + subreddit.toLowerCase(Locale.ENGLISH)).apply();
SettingValues.prefs.edit().remove("defaultTime" + subreddit.toLowerCase(Locale.ENGLISH)).apply();
final TextView sort = dialoglayout.findViewById(R.id.sort);
if (SettingValues.hasSort(subreddit)) {
Sorting sortingis = SettingValues.getBaseSubmissionSort(subreddit);
sort.setText(sortingis.name() + ((sortingis == Sorting.CONTROVERSIAL || sortingis == Sorting.TOP) ? " of " + SettingValues.getBaseTimePeriod(subreddit).name() : ""));
} else {
sort.setText("Set default sorting");
}
reloadSubs();
}
});
builder.show();
}
});
dialoglayout.findViewById(R.id.theme).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int style = new ColorPreferences(MainActivity.this).getThemeSubreddit(subreddit);
final Context contextThemeWrapper = new ContextThemeWrapper(MainActivity.this, style);
LayoutInflater localInflater = getLayoutInflater().cloneInContext(contextThemeWrapper);
final View dialoglayout = localInflater.inflate(R.layout.colorsub, null);
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add(subreddit);
SettingsSubAdapter.showSubThemeEditor(arrayList, MainActivity.this, dialoglayout);
}
});
dialoglayout.findViewById(R.id.mods).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog d = new MaterialDialog.Builder(MainActivity.this).title(R.string.sidebar_findingmods).cancelable(true).content(R.string.misc_please_wait).progress(true, 100).show();
new AsyncTask<Void, Void, Void>() {
ArrayList<UserRecord> mods;
@Override
protected Void doInBackground(Void... params) {
mods = new ArrayList<>();
UserRecordPaginator paginator = new UserRecordPaginator(Authentication.reddit, subreddit, "moderators");
paginator.setSorting(Sorting.HOT);
paginator.setTimePeriod(TimePeriod.ALL);
while (paginator.hasNext()) {
mods.addAll(paginator.next());
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
final ArrayList<String> names = new ArrayList<>();
for (UserRecord rec : mods) {
names.add(rec.getFullName());
}
d.dismiss();
new MaterialDialog.Builder(MainActivity.this).title(getString(R.string.sidebar_submods, subreddit)).items(names).itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
Intent i = new Intent(MainActivity.this, Profile.class);
i.putExtra(Profile.EXTRA_PROFILE, names.get(which));
startActivity(i);
}
}).positiveText(R.string.btn_message).onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
Intent i = new Intent(MainActivity.this, SendMessage.class);
i.putExtra(SendMessage.EXTRA_NAME, "/r/" + subreddit);
startActivity(i);
}
}).show();
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
});
dialoglayout.findViewById(R.id.flair).setVisibility(View.GONE);
if (Authentication.didOnline && Authentication.isLoggedIn) {
if (currentFlair != null)
currentFlair.cancel(true);
currentFlair = new AsyncTask<View, Void, View>() {
List<FlairTemplate> flairs;
ArrayList<String> flairText;
String current;
AccountManager m;
@Override
protected View doInBackground(View... params) {
try {
m = new AccountManager(Authentication.reddit);
JsonNode node = m.getFlairChoicesRootNode(subreddit, null);
flairs = m.getFlairChoices(subreddit, node);
FlairTemplate currentF = m.getCurrentFlair(subreddit, node);
if (currentF != null) {
if (currentF.getText().isEmpty()) {
current = ("[" + currentF.getCssClass() + "]");
} else {
current = (currentF.getText());
}
}
flairText = new ArrayList<>();
for (FlairTemplate temp : flairs) {
if (temp.getText().isEmpty()) {
flairText.add("[" + temp.getCssClass() + "]");
} else {
flairText.add(temp.getText());
}
}
} catch (Exception e1) {
e1.printStackTrace();
}
return params[0];
}
@Override
protected void onPostExecute(View flair) {
if (flairs != null && !flairs.isEmpty() && flairText != null && !flairText.isEmpty()) {
flair.setVisibility(View.VISIBLE);
if (current != null) {
((TextView) dialoglayout.findViewById(R.id.flair_text)).setText(getString(R.string.sidebar_flair, current));
}
flair.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new MaterialDialog.Builder(MainActivity.this).items(flairText).title(R.string.sidebar_select_flair).itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
final FlairTemplate t = flairs.get(which);
if (t.isTextEditable()) {
new MaterialDialog.Builder(MainActivity.this).title(R.string.sidebar_select_flair_text).input(getString(R.string.mod_flair_hint), t.getText(), true, new MaterialDialog.InputCallback() {
@Override
public void onInput(MaterialDialog dialog, CharSequence input) {
}
}).positiveText(R.string.btn_set).onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(MaterialDialog dialog, DialogAction which) {
final String flair = dialog.getInputEditText().getText().toString();
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
try {
new ModerationManager(Authentication.reddit).setFlair(subreddit, t, flair, Authentication.name);
FlairTemplate currentF = m.getCurrentFlair(subreddit);
if (currentF.getText().isEmpty()) {
current = ("[" + currentF.getCssClass() + "]");
} else {
current = (currentF.getText());
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean done) {
Snackbar s;
if (done) {
if (current != null) {
((TextView) dialoglayout.findViewById(R.id.flair_text)).setText(getString(R.string.sidebar_flair, current));
}
s = Snackbar.make(mToolbar, R.string.snackbar_flair_success, Snackbar.LENGTH_SHORT);
} else {
s = Snackbar.make(mToolbar, R.string.snackbar_flair_error, Snackbar.LENGTH_SHORT);
}
if (s != null) {
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}).negativeText(R.string.btn_cancel).show();
} else {
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
try {
new ModerationManager(Authentication.reddit).setFlair(subreddit, t, null, Authentication.name);
FlairTemplate currentF = m.getCurrentFlair(subreddit);
if (currentF.getText().isEmpty()) {
current = ("[" + currentF.getCssClass() + "]");
} else {
current = (currentF.getText());
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean done) {
Snackbar s;
if (done) {
if (current != null) {
((TextView) dialoglayout.findViewById(R.id.flair_text)).setText(getString(R.string.sidebar_flair, current));
}
s = Snackbar.make(mToolbar, R.string.snackbar_flair_success, Snackbar.LENGTH_SHORT);
} else {
s = Snackbar.make(mToolbar, R.string.snackbar_flair_error, Snackbar.LENGTH_SHORT);
}
if (s != null) {
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
}).show();
}
});
}
}
};
currentFlair.execute(dialoglayout.findViewById(R.id.flair));
}
} else {
if (drawerLayout != null) {
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
}
}
}
use of net.dean.jraw.managers.ModerationManager in project Slide by ccrama.
the class CommentAdapterHelper method showBan.
public static void showBan(final Context mContext, final View mToolbar, final Comment submission, String rs, String nt, String msg, String t) {
LinearLayout l = new LinearLayout(mContext);
l.setOrientation(LinearLayout.VERTICAL);
int sixteen = Reddit.dpToPxVertical(16);
l.setPadding(sixteen, 0, sixteen, 0);
final EditText reason = new EditText(mContext);
reason.setHint(R.string.mod_ban_reason);
reason.setText(rs);
reason.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
l.addView(reason);
final EditText note = new EditText(mContext);
note.setHint(R.string.mod_ban_note_mod);
note.setText(nt);
note.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
l.addView(note);
final EditText message = new EditText(mContext);
message.setHint(R.string.mod_ban_note_user);
message.setText(msg);
message.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
l.addView(message);
final EditText time = new EditText(mContext);
time.setHint(R.string.mod_ban_time);
time.setText(t);
time.setInputType(InputType.TYPE_CLASS_NUMBER);
l.addView(time);
AlertDialogWrapper.Builder builder = new AlertDialogWrapper.Builder(mContext);
builder.setView(l).setTitle(mContext.getString(R.string.mod_ban_title, submission.getAuthor())).setCancelable(true).setPositiveButton(R.string.mod_btn_ban, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// to ban
if (reason.getText().toString().isEmpty() || time.getText().toString().isEmpty()) {
new AlertDialogWrapper.Builder(mContext).setTitle(R.string.mod_ban_requirements).setMessage(R.string.misc_please_try_again).setPositiveButton(R.string.btn_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showBan(mContext, mToolbar, submission, reason.getText().toString(), note.getText().toString(), message.getText().toString(), time.getText().toString());
}
}).setCancelable(false).show();
} else {
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
try {
String n = note.getText().toString();
String m = message.getText().toString();
if (n.isEmpty()) {
n = null;
}
if (m.isEmpty()) {
m = null;
}
new ModerationManager(Authentication.reddit).banUser(submission.getSubredditName(), submission.getAuthor(), reason.getText().toString(), n, m, Integer.valueOf(time.getText().toString()));
return true;
} catch (Exception e) {
if (e instanceof InvalidScopeException) {
scope = true;
}
e.printStackTrace();
return false;
}
}
boolean scope;
@Override
protected void onPostExecute(Boolean done) {
Snackbar s;
if (done) {
s = Snackbar.make(mToolbar, R.string.mod_ban_success, Snackbar.LENGTH_SHORT);
} else {
if (scope) {
new AlertDialogWrapper.Builder(mContext).setTitle(R.string.mod_ban_reauth).setMessage(R.string.mod_ban_reauth_question).setPositiveButton(R.string.btn_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent i = new Intent(mContext, Reauthenticate.class);
mContext.startActivity(i);
}
}).setNegativeButton(R.string.misc_maybe_later, null).setCancelable(false).show();
}
s = Snackbar.make(mToolbar, R.string.mod_ban_fail, Snackbar.LENGTH_INDEFINITE).setAction(R.string.misc_try_again, new View.OnClickListener() {
@Override
public void onClick(View v) {
showBan(mContext, mToolbar, submission, reason.getText().toString(), note.getText().toString(), message.getText().toString(), time.getText().toString());
}
});
}
if (s != null) {
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}
}.execute();
}
}
}).setNegativeButton(R.string.btn_cancel, null).show();
}
use of net.dean.jraw.managers.ModerationManager in project Slide by ccrama.
the class PopulateSubmissionViewHolder method showBan.
public void showBan(final Context mContext, final View mToolbar, final Submission submission, String rs, String nt, String msg, String t) {
LinearLayout l = new LinearLayout(mContext);
l.setOrientation(LinearLayout.VERTICAL);
int sixteen = Reddit.dpToPxVertical(16);
l.setPadding(sixteen, 0, sixteen, 0);
final EditText reason = new EditText(mContext);
reason.setHint(R.string.mod_ban_reason);
reason.setText(rs);
reason.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
l.addView(reason);
final EditText note = new EditText(mContext);
note.setHint(R.string.mod_ban_note_mod);
note.setText(nt);
note.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
l.addView(note);
final EditText message = new EditText(mContext);
message.setHint(R.string.mod_ban_note_user);
message.setText(msg);
message.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
l.addView(message);
final EditText time = new EditText(mContext);
time.setHint(R.string.mod_ban_time);
time.setText(t);
time.setInputType(InputType.TYPE_CLASS_NUMBER);
l.addView(time);
AlertDialogWrapper.Builder builder = new AlertDialogWrapper.Builder(mContext);
builder.setView(l).setTitle(mContext.getString(R.string.mod_ban_title, submission.getAuthor())).setCancelable(true).setPositiveButton(R.string.mod_btn_ban, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// to ban
if (reason.getText().toString().isEmpty()) {
new AlertDialogWrapper.Builder(mContext).setTitle(R.string.mod_ban_reason_required).setMessage(R.string.misc_please_try_again).setPositiveButton(R.string.btn_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showBan(mContext, mToolbar, submission, reason.getText().toString(), note.getText().toString(), message.getText().toString(), time.getText().toString());
}
}).setCancelable(false).show();
} else {
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
try {
String n = note.getText().toString();
String m = message.getText().toString();
if (n.isEmpty()) {
n = null;
}
if (m.isEmpty()) {
m = null;
}
if (time.getText().toString().isEmpty()) {
new ModerationManager(Authentication.reddit).banUserPermanently(submission.getSubredditName(), submission.getAuthor(), reason.getText().toString(), n, m);
} else {
new ModerationManager(Authentication.reddit).banUser(submission.getSubredditName(), submission.getAuthor(), reason.getText().toString(), n, m, Integer.valueOf(time.getText().toString()));
}
return true;
} catch (Exception e) {
if (e instanceof InvalidScopeException) {
scope = true;
}
e.printStackTrace();
return false;
}
}
boolean scope;
@Override
protected void onPostExecute(Boolean done) {
Snackbar s;
if (done) {
s = Snackbar.make(mToolbar, R.string.mod_ban_success, Snackbar.LENGTH_SHORT);
} else {
if (scope) {
new AlertDialogWrapper.Builder(mContext).setTitle(R.string.mod_ban_reauth).setMessage(R.string.mod_ban_reauth_question).setPositiveButton(R.string.btn_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent i = new Intent(mContext, Reauthenticate.class);
mContext.startActivity(i);
}
}).setNegativeButton(R.string.misc_maybe_later, null).setCancelable(false).show();
}
s = Snackbar.make(mToolbar, R.string.mod_ban_fail, Snackbar.LENGTH_INDEFINITE).setAction(R.string.misc_try_again, new View.OnClickListener() {
@Override
public void onClick(View v) {
showBan(mContext, mToolbar, submission, reason.getText().toString(), note.getText().toString(), message.getText().toString(), time.getText().toString());
}
});
}
if (s != null) {
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
}).setNegativeButton(R.string.btn_cancel, null).show();
}
use of net.dean.jraw.managers.ModerationManager in project Slide by ccrama.
the class SubredditView method doSubSidebar.
public void doSubSidebar(final String subOverride) {
findViewById(R.id.loader).setVisibility(View.VISIBLE);
invalidateOptionsMenu();
if (!subOverride.equalsIgnoreCase("all") && !subOverride.equalsIgnoreCase("frontpage") && !subOverride.equalsIgnoreCase("random") && !subOverride.equalsIgnoreCase("popular") && !subOverride.equalsIgnoreCase("myrandom") && !subOverride.equalsIgnoreCase("randnsfw") && !subOverride.equalsIgnoreCase("friends") && !subOverride.equalsIgnoreCase("mod") && !subOverride.contains("+") && !subOverride.contains(".") && !subOverride.contains("/m/")) {
if (drawerLayout != null) {
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.END);
}
loaded = true;
final View dialoglayout = findViewById(R.id.sidebarsub);
{
View submit = (dialoglayout.findViewById(R.id.submit));
if (!Authentication.isLoggedIn || !Authentication.didOnline) {
submit.setVisibility(View.GONE);
}
if (SettingValues.fab && SettingValues.fabType == Constants.FAB_POST) {
submit.setVisibility(View.GONE);
}
submit.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View view) {
Intent inte = new Intent(SubredditView.this, Submit.class);
if (!subOverride.contains("/m/") && canSubmit) {
inte.putExtra(Submit.EXTRA_SUBREDDIT, subOverride);
}
SubredditView.this.startActivity(inte);
}
});
}
dialoglayout.findViewById(R.id.wiki).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(SubredditView.this, Wiki.class);
i.putExtra(Wiki.EXTRA_SUBREDDIT, subOverride);
startActivity(i);
}
});
dialoglayout.findViewById(R.id.syncflair).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageFlairs.syncFlairs(SubredditView.this, subreddit);
}
});
dialoglayout.findViewById(R.id.submit).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(SubredditView.this, Submit.class);
if ((!subOverride.contains("/m/") || !subOverride.contains(".")) && canSubmit) {
i.putExtra(Submit.EXTRA_SUBREDDIT, subOverride);
}
startActivity(i);
}
});
final TextView sort = (TextView) dialoglayout.findViewById(R.id.sort);
Sorting sortingis = Sorting.HOT;
if (SettingValues.hasSort(subreddit)) {
sortingis = SettingValues.getBaseSubmissionSort(subreddit);
sort.setText(sortingis.name() + ((sortingis == Sorting.CONTROVERSIAL || sortingis == Sorting.TOP) ? " of " + SettingValues.getBaseTimePeriod(subreddit).name() : ""));
} else {
sort.setText("Set default sorting");
}
final int sortid = Reddit.getSortingId(sortingis);
dialoglayout.findViewById(R.id.sorting).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final DialogInterface.OnClickListener l2 = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
switch(i) {
case 0:
sorts = Sorting.HOT;
break;
case 1:
sorts = Sorting.NEW;
break;
case 2:
sorts = Sorting.RISING;
break;
case 3:
sorts = Sorting.TOP;
askTimePeriod(sorts, subreddit, dialoglayout);
return;
case 4:
sorts = Sorting.CONTROVERSIAL;
askTimePeriod(sorts, subreddit, dialoglayout);
return;
}
SettingValues.setSubSorting(sorts, time, subreddit);
Sorting sortingis = SettingValues.getBaseSubmissionSort(subreddit);
sort.setText(sortingis.name() + ((sortingis == Sorting.CONTROVERSIAL || sortingis == Sorting.TOP) ? " of " + SettingValues.getBaseTimePeriod(subreddit).name() : ""));
reloadSubs();
}
};
AlertDialogWrapper.Builder builder = new AlertDialogWrapper.Builder(SubredditView.this);
builder.setTitle(R.string.sorting_choose);
builder.setSingleChoiceItems(Reddit.getSortingStrings(getBaseContext()), sortid, l2);
builder.setNegativeButton("Reset default sorting", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
SettingValues.prefs.edit().remove("defaultSort" + subreddit.toLowerCase(Locale.ENGLISH)).apply();
SettingValues.prefs.edit().remove("defaultTime" + subreddit.toLowerCase(Locale.ENGLISH)).apply();
final TextView sort = (TextView) dialoglayout.findViewById(R.id.sort);
if (SettingValues.hasSort(subreddit)) {
Sorting sortingis = SettingValues.getBaseSubmissionSort(subreddit);
sort.setText(sortingis.name() + ((sortingis == Sorting.CONTROVERSIAL || sortingis == Sorting.TOP) ? " of " + SettingValues.getBaseTimePeriod(subreddit).name() : ""));
} else {
sort.setText("Set default sorting");
}
reloadSubs();
}
});
builder.show();
}
});
dialoglayout.findViewById(R.id.theme).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int style = new ColorPreferences(SubredditView.this).getThemeSubreddit(subOverride);
final Context contextThemeWrapper = new ContextThemeWrapper(SubredditView.this, style);
LayoutInflater localInflater = getLayoutInflater().cloneInContext(contextThemeWrapper);
final View dialoglayout = localInflater.inflate(R.layout.colorsub, null);
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add(subOverride);
SettingsSubAdapter.showSubThemeEditor(arrayList, SubredditView.this, dialoglayout);
}
});
dialoglayout.findViewById(R.id.mods).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog d = new MaterialDialog.Builder(SubredditView.this).title(R.string.sidebar_findingmods).cancelable(true).content(R.string.misc_please_wait).progress(true, 100).show();
new AsyncTask<Void, Void, Void>() {
ArrayList<UserRecord> mods;
@Override
protected Void doInBackground(Void... params) {
mods = new ArrayList<>();
UserRecordPaginator paginator = new UserRecordPaginator(Authentication.reddit, subOverride, "moderators");
paginator.setSorting(Sorting.HOT);
paginator.setTimePeriod(TimePeriod.ALL);
while (paginator.hasNext()) {
mods.addAll(paginator.next());
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
final ArrayList<String> names = new ArrayList<>();
for (UserRecord rec : mods) {
names.add(rec.getFullName());
}
d.dismiss();
new MaterialDialog.Builder(SubredditView.this).title(getString(R.string.sidebar_submods, subreddit)).items(names).itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
Intent i = new Intent(SubredditView.this, Profile.class);
i.putExtra(Profile.EXTRA_PROFILE, names.get(which));
startActivity(i);
}
}).positiveText(R.string.btn_message).onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
Intent i = new Intent(SubredditView.this, SendMessage.class);
i.putExtra(SendMessage.EXTRA_NAME, "/r/" + subOverride);
startActivity(i);
}
}).show();
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
});
dialoglayout.findViewById(R.id.flair).setVisibility(View.GONE);
if (Authentication.didOnline && Authentication.isLoggedIn) {
new AsyncTask<View, Void, View>() {
List<FlairTemplate> flairs;
ArrayList<String> flairText;
String current;
AccountManager m;
@Override
protected View doInBackground(View... params) {
try {
m = new AccountManager(Authentication.reddit);
JsonNode node = m.getFlairChoicesRootNode(subOverride, null);
flairs = m.getFlairChoices(subOverride, node);
FlairTemplate currentF = m.getCurrentFlair(subOverride, node);
if (currentF != null) {
if (currentF.getText().isEmpty()) {
current = ("[" + currentF.getCssClass() + "]");
} else {
current = (currentF.getText());
}
}
flairText = new ArrayList<>();
for (FlairTemplate temp : flairs) {
if (temp.getText().isEmpty()) {
flairText.add("[" + temp.getCssClass() + "]");
} else {
flairText.add(temp.getText());
}
}
} catch (Exception e1) {
e1.printStackTrace();
}
return params[0];
}
@Override
protected void onPostExecute(View flair) {
if (flairs != null && !flairs.isEmpty() && flairText != null && !flairText.isEmpty()) {
flair.setVisibility(View.VISIBLE);
if (current != null) {
((TextView) dialoglayout.findViewById(R.id.flair_text)).setText(getString(R.string.sidebar_flair, current));
}
flair.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new MaterialDialog.Builder(SubredditView.this).items(flairText).title(R.string.sidebar_select_flair).itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
final FlairTemplate t = flairs.get(which);
if (t.isTextEditable()) {
new MaterialDialog.Builder(SubredditView.this).title(R.string.sidebar_select_flair_text).input(getString(R.string.mod_flair_hint), t.getText(), true, new MaterialDialog.InputCallback() {
@Override
public void onInput(MaterialDialog dialog, CharSequence input) {
}
}).positiveText(R.string.btn_set).onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(MaterialDialog dialog, DialogAction which) {
final String flair = dialog.getInputEditText().getText().toString();
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
try {
new ModerationManager(Authentication.reddit).setFlair(subOverride, t, flair, Authentication.name);
FlairTemplate currentF = m.getCurrentFlair(subOverride);
if (currentF.getText().isEmpty()) {
current = ("[" + currentF.getCssClass() + "]");
} else {
current = (currentF.getText());
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean done) {
Snackbar s;
if (done) {
if (current != null) {
((TextView) dialoglayout.findViewById(R.id.flair_text)).setText(getString(R.string.sidebar_flair, current));
}
s = Snackbar.make(mToolbar, R.string.snackbar_flair_success, Snackbar.LENGTH_SHORT);
} else {
s = Snackbar.make(mToolbar, R.string.snackbar_flair_error, Snackbar.LENGTH_SHORT);
}
if (s != null) {
View view = s.getView();
TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}).negativeText(R.string.btn_cancel).show();
} else {
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
try {
new ModerationManager(Authentication.reddit).setFlair(subOverride, t, null, Authentication.name);
FlairTemplate currentF = m.getCurrentFlair(subOverride);
if (currentF.getText().isEmpty()) {
current = ("[" + currentF.getCssClass() + "]");
} else {
current = (currentF.getText());
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean done) {
Snackbar s;
if (done) {
if (current != null) {
((TextView) dialoglayout.findViewById(R.id.flair_text)).setText(getString(R.string.sidebar_flair, current));
}
s = Snackbar.make(mToolbar, R.string.snackbar_flair_success, Snackbar.LENGTH_SHORT);
} else {
s = Snackbar.make(mToolbar, R.string.snackbar_flair_error, Snackbar.LENGTH_SHORT);
}
if (s != null) {
View view = s.getView();
TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
}).show();
}
});
}
}
}.execute(dialoglayout.findViewById(R.id.flair));
}
} else {
if (drawerLayout != null) {
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
}
}
}
use of net.dean.jraw.managers.ModerationManager in project Slide by ccrama.
the class PopulateSubmissionViewHolder method populateSubmissionViewHolder.
public <T extends Contribution> void populateSubmissionViewHolder(final SubmissionViewHolder holder, final Submission submission, final Activity mContext, boolean fullscreen, final boolean full, final List<T> posts, final RecyclerView recyclerview, final boolean same, final boolean offline, final String baseSub, @Nullable final CommentAdapter adapter) {
holder.itemView.findViewById(R.id.vote).setVisibility(View.GONE);
if (!offline && UserSubscriptions.modOf != null && submission.getSubredditName() != null && UserSubscriptions.modOf.contains(submission.getSubredditName().toLowerCase(Locale.ENGLISH))) {
holder.mod.setVisibility(View.VISIBLE);
final Map<String, Integer> reports = submission.getUserReports();
final Map<String, String> reports2 = submission.getModeratorReports();
if (reports.size() + reports2.size() > 0) {
((ImageView) holder.mod).setColorFilter(ContextCompat.getColor(mContext, R.color.md_red_300), PorterDuff.Mode.SRC_ATOP);
} else {
((ImageView) holder.mod).setColorFilter((((holder.itemView.getTag(holder.itemView.getId())) != null && holder.itemView.getTag(holder.itemView.getId()).equals("none") || full)) ? getCurrentTintColor(mContext) : getWhiteTintColor(), PorterDuff.Mode.SRC_ATOP);
}
holder.mod.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showModBottomSheet(mContext, submission, posts, holder, recyclerview, reports, reports2);
}
});
} else {
holder.mod.setVisibility(View.GONE);
}
holder.menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showBottomSheet(mContext, submission, holder, posts, baseSub, recyclerview, full);
}
});
// Use this to offset the submission score
int submissionScore = submission.getScore();
final int commentCount = submission.getCommentCount();
final int more = LastComments.commentsSince(submission);
holder.comments.setText(String.format(Locale.getDefault(), "%d %s", commentCount, ((more > 0 && SettingValues.commentLastVisit) ? "(+" + more + ")" : "")));
String scoreRatio = (SettingValues.upvotePercentage && full && submission.getUpvoteRatio() != null) ? "(" + (int) (submission.getUpvoteRatio() * 100) + "%)" : "";
if (!scoreRatio.isEmpty()) {
TextView percent = holder.itemView.findViewById(R.id.percent);
percent.setVisibility(View.VISIBLE);
percent.setText(scoreRatio);
final double numb = (submission.getUpvoteRatio());
if (numb <= .5) {
if (numb <= .1) {
percent.setTextColor(ContextCompat.getColor(mContext, R.color.md_blue_500));
} else if (numb <= .3) {
percent.setTextColor(ContextCompat.getColor(mContext, R.color.md_blue_400));
} else {
percent.setTextColor(ContextCompat.getColor(mContext, R.color.md_blue_300));
}
} else {
if (numb >= .9) {
percent.setTextColor(ContextCompat.getColor(mContext, R.color.md_orange_500));
} else if (numb >= .7) {
percent.setTextColor(ContextCompat.getColor(mContext, R.color.md_orange_400));
} else {
percent.setTextColor(ContextCompat.getColor(mContext, R.color.md_orange_300));
}
}
}
final ImageView downvotebutton = (ImageView) holder.downvote;
final ImageView upvotebutton = (ImageView) holder.upvote;
if (submission.isArchived()) {
downvotebutton.setVisibility(View.GONE);
upvotebutton.setVisibility(View.GONE);
} else if (Authentication.isLoggedIn && Authentication.didOnline) {
if (SettingValues.actionbarVisible && downvotebutton.getVisibility() != View.VISIBLE) {
downvotebutton.setVisibility(View.VISIBLE);
upvotebutton.setVisibility(View.VISIBLE);
}
}
// Set the colors and styles for the score text depending on what state it is in
switch(ActionStates.getVoteDirection(submission)) {
case UPVOTE:
{
holder.score.setTextColor(ContextCompat.getColor(mContext, R.color.md_orange_500));
upvotebutton.setColorFilter(ContextCompat.getColor(mContext, R.color.md_orange_500), PorterDuff.Mode.SRC_ATOP);
holder.score.setTypeface(null, Typeface.BOLD);
downvotebutton.setColorFilter((((holder.itemView.getTag(holder.itemView.getId())) != null && holder.itemView.getTag(holder.itemView.getId()).equals("none") || full)) ? getCurrentTintColor(mContext) : getWhiteTintColor(), PorterDuff.Mode.SRC_ATOP);
if (submission.getVote() != VoteDirection.UPVOTE) {
if (submission.getVote() == VoteDirection.DOWNVOTE)
++submissionScore;
// offset the score by +1
++submissionScore;
}
break;
}
case DOWNVOTE:
{
holder.score.setTextColor(ContextCompat.getColor(mContext, R.color.md_blue_500));
downvotebutton.setColorFilter(ContextCompat.getColor(mContext, R.color.md_blue_500), PorterDuff.Mode.SRC_ATOP);
holder.score.setTypeface(null, Typeface.BOLD);
upvotebutton.setColorFilter((((holder.itemView.getTag(holder.itemView.getId())) != null && holder.itemView.getTag(holder.itemView.getId()).equals("none") || full)) ? getCurrentTintColor(mContext) : getWhiteTintColor(), PorterDuff.Mode.SRC_ATOP);
if (submission.getVote() != VoteDirection.DOWNVOTE) {
if (submission.getVote() == VoteDirection.UPVOTE)
--submissionScore;
// offset the score by +1
--submissionScore;
}
break;
}
case NO_VOTE:
{
holder.score.setTextColor(holder.comments.getCurrentTextColor());
holder.score.setTypeface(null, Typeface.NORMAL);
downvotebutton.setColorFilter((((holder.itemView.getTag(holder.itemView.getId())) != null && holder.itemView.getTag(holder.itemView.getId()).equals("none") || full)) ? getCurrentTintColor(mContext) : getWhiteTintColor(), PorterDuff.Mode.SRC_ATOP);
upvotebutton.setColorFilter((((holder.itemView.getTag(holder.itemView.getId())) != null && holder.itemView.getTag(holder.itemView.getId()).equals("none") || full)) ? getCurrentTintColor(mContext) : getWhiteTintColor(), PorterDuff.Mode.SRC_ATOP);
break;
}
}
// if the submission is already at 0pts, keep it at 0pts
submissionScore = ((submissionScore < 0) ? 0 : submissionScore);
if (submissionScore >= 10000 && SettingValues.abbreviateScores) {
holder.score.setText(String.format(Locale.getDefault(), "%.1fk", (((double) submissionScore) / 1000)));
} else {
holder.score.setText(String.format(Locale.getDefault(), "%d", submissionScore));
}
// Save the score so we can use it in the OnClickListeners for the vote buttons
final int SUBMISSION_SCORE = submissionScore;
final ImageView hideButton = (ImageView) holder.hide;
if (hideButton != null) {
if (SettingValues.hideButton && Authentication.isLoggedIn) {
hideButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hideSubmission(submission, posts, baseSub, recyclerview, mContext);
}
});
} else {
hideButton.setVisibility(View.GONE);
}
}
if (Authentication.isLoggedIn && Authentication.didOnline) {
if (ActionStates.isSaved(submission)) {
((ImageView) holder.save).setColorFilter(ContextCompat.getColor(mContext, R.color.md_amber_500), PorterDuff.Mode.SRC_ATOP);
} else {
((ImageView) holder.save).setColorFilter((((holder.itemView.getTag(holder.itemView.getId())) != null && holder.itemView.getTag(holder.itemView.getId()).equals("none") || full)) ? getCurrentTintColor(mContext) : getWhiteTintColor(), PorterDuff.Mode.SRC_ATOP);
}
holder.save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveSubmission(submission, mContext, holder, full);
}
});
}
if (!SettingValues.saveButton && !full || !Authentication.isLoggedIn || !Authentication.didOnline) {
holder.save.setVisibility(View.GONE);
}
ImageView thumbImage2 = ((ImageView) holder.thumbimage);
if (holder.leadImage.thumbImage2 == null) {
holder.leadImage.setThumbnail(thumbImage2);
}
final ContentType.Type type = ContentType.getContentType(submission);
addClickFunctions(holder.leadImage, type, mContext, submission, holder, full);
if (thumbImage2 != null) {
addClickFunctions(thumbImage2, type, mContext, submission, holder, full);
}
if (full) {
addClickFunctions(holder.itemView.findViewById(R.id.wraparea), type, mContext, submission, holder, full);
}
if (full) {
holder.leadImage.setWrapArea(holder.itemView.findViewById(R.id.wraparea));
}
boolean crosspost = submission.getDataNode().has("crosspost_parent_list");
if (full && crosspost) {
holder.itemView.findViewById(R.id.crosspost).setVisibility(View.VISIBLE);
((TextView) holder.itemView.findViewById(R.id.crossinfo)).setText(SubmissionCache.getCrosspostLine(submission, mContext));
((Reddit) mContext.getApplicationContext()).getImageLoader().displayImage(submission.getDataNode().get("crosspost_parent_list").get(0).get("thumbnail").asText(), ((ImageView) holder.itemView.findViewById(R.id.crossthumb)));
holder.itemView.findViewById(R.id.crosspost).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
OpenRedditLink.openUrl(mContext, submission.getDataNode().get("crosspost_parent_list").get(0).get("permalink").asText(), true);
}
});
}
holder.leadImage.setSubmission(submission, full, baseSub, type);
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (offline) {
Snackbar s = Snackbar.make(holder.itemView, mContext.getString(R.string.offline_msg), Snackbar.LENGTH_SHORT);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
} else {
if (SettingValues.actionbarTap && !full) {
CreateCardView.toggleActionbar(holder.itemView);
} else {
holder.itemView.findViewById(R.id.menu).callOnClick();
}
}
return true;
}
});
doText(holder, submission, mContext, baseSub, full);
if (!full && SettingValues.isSelftextEnabled(baseSub) && submission.isSelfPost() && !submission.getSelftext().isEmpty() && !submission.isNsfw() && !submission.getDataNode().get("spoiler").asBoolean() && !submission.getDataNode().get("selftext_html").asText().trim().isEmpty()) {
holder.body.setVisibility(View.VISIBLE);
String text = submission.getDataNode().get("selftext_html").asText();
int typef = new FontPreferences(mContext).getFontTypeComment().getTypeface();
Typeface typeface;
if (typef >= 0) {
typeface = RobotoTypefaces.obtainTypeface(mContext, typef);
} else {
typeface = Typeface.DEFAULT;
}
holder.body.setTypeface(typeface);
holder.body.setTextHtml(Html.fromHtml(text.substring(0, text.contains("\n") ? text.indexOf("\n") : text.length())).toString().replace("<sup>", "<sup><small>").replace("</sup>", "</small></sup>"), "none ");
holder.body.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.itemView.callOnClick();
}
});
holder.body.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
holder.menu.callOnClick();
return true;
}
});
} else if (!full) {
holder.body.setVisibility(View.GONE);
}
if (full) {
if (!submission.getSelftext().isEmpty()) {
int typef = new FontPreferences(mContext).getFontTypeComment().getTypeface();
Typeface typeface;
if (typef >= 0) {
typeface = RobotoTypefaces.obtainTypeface(mContext, typef);
} else {
typeface = Typeface.DEFAULT;
}
holder.firstTextView.setTypeface(typeface);
setViews(submission.getDataNode().get("selftext_html").asText(), submission.getSubredditName() == null ? "all" : submission.getSubredditName(), holder);
holder.itemView.findViewById(R.id.body_area).setVisibility(View.VISIBLE);
} else {
holder.itemView.findViewById(R.id.body_area).setVisibility(View.GONE);
}
}
try {
final TextView points = holder.score;
final TextView comments = holder.comments;
if (Authentication.isLoggedIn && !offline && Authentication.didOnline) {
{
downvotebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (SettingValues.storeHistory && !full) {
if (!submission.isNsfw() || SettingValues.storeNSFWHistory) {
HasSeen.addSeen(submission.getFullName());
if (mContext instanceof MainActivity) {
holder.title.setAlpha(0.54f);
holder.body.setAlpha(0.54f);
}
}
}
if (ActionStates.getVoteDirection(submission) != VoteDirection.DOWNVOTE) {
// has not been downvoted
points.setTextColor(ContextCompat.getColor(mContext, R.color.md_blue_500));
downvotebutton.setColorFilter(ContextCompat.getColor(mContext, R.color.md_blue_500), PorterDuff.Mode.SRC_ATOP);
upvotebutton.setColorFilter((((holder.itemView.getTag(holder.itemView.getId())) != null && holder.itemView.getTag(holder.itemView.getId()).equals("none") || full)) ? getCurrentTintColor(mContext) : getWhiteTintColor(), PorterDuff.Mode.SRC_ATOP);
AnimateHelper.setFlashAnimation(holder.itemView, downvotebutton, ContextCompat.getColor(mContext, R.color.md_blue_500));
holder.score.setTypeface(null, Typeface.BOLD);
final int DOWNVOTE_SCORE = (SUBMISSION_SCORE == 0) ? 0 : SUBMISSION_SCORE - // if a post is at 0 votes, keep it at 0 when downvoting
1;
new Vote(false, points, mContext).execute(submission);
ActionStates.setVoteDirection(submission, VoteDirection.DOWNVOTE);
setSubmissionScoreText(submission, holder);
} else {
// un-downvoted a post
points.setTextColor(comments.getCurrentTextColor());
new Vote(points, mContext).execute(submission);
holder.score.setTypeface(null, Typeface.NORMAL);
ActionStates.setVoteDirection(submission, VoteDirection.NO_VOTE);
downvotebutton.setColorFilter((((holder.itemView.getTag(holder.itemView.getId())) != null && holder.itemView.getTag(holder.itemView.getId()).equals("none") || full)) ? getCurrentTintColor(mContext) : getWhiteTintColor(), PorterDuff.Mode.SRC_ATOP);
setSubmissionScoreText(submission, holder);
}
if (!full && !SettingValues.actionbarVisible && SettingValues.defaultCardView != CreateCardView.CardEnum.DESKTOP) {
CreateCardView.toggleActionbar(holder.itemView);
}
}
});
}
{
upvotebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (SettingValues.storeHistory && !full) {
if (!submission.isNsfw() || SettingValues.storeNSFWHistory) {
HasSeen.addSeen(submission.getFullName());
if (mContext instanceof MainActivity) {
holder.title.setAlpha(0.54f);
holder.body.setAlpha(0.54f);
}
}
}
if (ActionStates.getVoteDirection(submission) != VoteDirection.UPVOTE) {
// has not been upvoted
points.setTextColor(ContextCompat.getColor(mContext, R.color.md_orange_500));
upvotebutton.setColorFilter(ContextCompat.getColor(mContext, R.color.md_orange_500), PorterDuff.Mode.SRC_ATOP);
downvotebutton.setColorFilter((((holder.itemView.getTag(holder.itemView.getId())) != null && holder.itemView.getTag(holder.itemView.getId()).equals("none") || full)) ? getCurrentTintColor(mContext) : getWhiteTintColor(), PorterDuff.Mode.SRC_ATOP);
AnimateHelper.setFlashAnimation(holder.itemView, upvotebutton, ContextCompat.getColor(mContext, R.color.md_orange_500));
holder.score.setTypeface(null, Typeface.BOLD);
new Vote(true, points, mContext).execute(submission);
ActionStates.setVoteDirection(submission, VoteDirection.UPVOTE);
setSubmissionScoreText(submission, holder);
} else {
// un-upvoted a post
points.setTextColor(comments.getCurrentTextColor());
new Vote(points, mContext).execute(submission);
holder.score.setTypeface(null, Typeface.NORMAL);
ActionStates.setVoteDirection(submission, VoteDirection.NO_VOTE);
upvotebutton.setColorFilter((((holder.itemView.getTag(holder.itemView.getId())) != null && holder.itemView.getTag(holder.itemView.getId()).equals("none") || full)) ? getCurrentTintColor(mContext) : getWhiteTintColor(), PorterDuff.Mode.SRC_ATOP);
setSubmissionScoreText(submission, holder);
}
if (!full && !SettingValues.actionbarVisible && SettingValues.defaultCardView != CreateCardView.CardEnum.DESKTOP) {
CreateCardView.toggleActionbar(holder.itemView);
}
}
});
}
} else {
upvotebutton.setVisibility(View.GONE);
downvotebutton.setVisibility(View.GONE);
}
} catch (Exception ignored) {
ignored.printStackTrace();
}
final View edit = holder.edit;
if (Authentication.name != null && Authentication.name.toLowerCase(Locale.ENGLISH).equals(submission.getAuthor().toLowerCase(Locale.ENGLISH)) && Authentication.didOnline) {
edit.setVisibility(View.VISIBLE);
edit.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
new AsyncTask<Void, Void, ArrayList<String>>() {
List<FlairTemplate> flairlist;
@Override
protected ArrayList<String> doInBackground(Void... params) {
FlairReference allFlairs = new FluentRedditClient(Authentication.reddit).subreddit(submission.getSubredditName()).flair();
try {
flairlist = allFlairs.options(submission);
final ArrayList<String> finalFlairs = new ArrayList<>();
for (FlairTemplate temp : flairlist) {
finalFlairs.add(temp.getText());
}
return finalFlairs;
} catch (Exception e) {
e.printStackTrace();
// sub probably has no flairs?
}
return null;
}
@Override
public void onPostExecute(final ArrayList<String> data) {
final boolean flair = (data != null && !data.isEmpty());
int[] attrs = new int[] { R.attr.tintColor };
TypedArray ta = mContext.obtainStyledAttributes(attrs);
final int color2 = ta.getColor(0, Color.WHITE);
Drawable edit_drawable = mContext.getResources().getDrawable(R.drawable.edit);
Drawable nsfw_drawable = mContext.getResources().getDrawable(R.drawable.hide);
Drawable delete_drawable = mContext.getResources().getDrawable(R.drawable.delete);
Drawable flair_drawable = mContext.getResources().getDrawable(R.drawable.fontsizedarker);
edit_drawable.setColorFilter(color2, PorterDuff.Mode.SRC_ATOP);
nsfw_drawable.setColorFilter(color2, PorterDuff.Mode.SRC_ATOP);
delete_drawable.setColorFilter(color2, PorterDuff.Mode.SRC_ATOP);
flair_drawable.setColorFilter(color2, PorterDuff.Mode.SRC_ATOP);
ta.recycle();
BottomSheet.Builder b = new BottomSheet.Builder(mContext).title(Html.fromHtml(submission.getTitle()));
if (submission.isSelfPost()) {
b.sheet(1, edit_drawable, mContext.getString(R.string.edit_selftext));
}
if (submission.isNsfw()) {
b.sheet(4, nsfw_drawable, mContext.getString(R.string.mod_btn_unmark_nsfw));
} else {
b.sheet(4, nsfw_drawable, mContext.getString(R.string.mod_btn_mark_nsfw));
}
b.sheet(2, delete_drawable, mContext.getString(R.string.delete_submission));
if (flair) {
b.sheet(3, flair_drawable, mContext.getString(R.string.set_submission_flair));
}
b.listener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch(which) {
case 1:
{
LayoutInflater inflater = mContext.getLayoutInflater();
final View dialoglayout = inflater.inflate(R.layout.edit_comment, null);
final AlertDialogWrapper.Builder builder = new AlertDialogWrapper.Builder(mContext);
final EditText e = dialoglayout.findViewById(R.id.entry);
e.setText(StringEscapeUtils.unescapeHtml4(submission.getSelftext()));
DoEditorActions.doActions(e, dialoglayout, ((AppCompatActivity) mContext).getSupportFragmentManager(), mContext, null, null);
builder.setCancelable(false).setView(dialoglayout);
final Dialog d = builder.create();
d.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
d.show();
dialoglayout.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
d.dismiss();
}
});
dialoglayout.findViewById(R.id.submit).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String text = e.getText().toString();
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
new AccountManager(Authentication.reddit).updateContribution(submission, text);
if (adapter != null) {
adapter.dataSet.reloadSubmission(adapter);
}
d.dismiss();
} catch (Exception e) {
(mContext).runOnUiThread(new Runnable() {
@Override
public void run() {
new AlertDialogWrapper.Builder(mContext).setTitle(R.string.comment_delete_err).setMessage(R.string.comment_delete_err_msg).setPositiveButton(R.string.btn_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
doInBackground();
}
}).setNegativeButton(R.string.btn_no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
}
});
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
if (adapter != null) {
adapter.notifyItemChanged(1);
}
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
});
}
break;
case 2:
{
new AlertDialogWrapper.Builder(mContext).setTitle(R.string.really_delete_submission).setPositiveButton(R.string.btn_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
new ModerationManager(Authentication.reddit).delete(submission);
} catch (ApiException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
(mContext).runOnUiThread(new Runnable() {
@Override
public void run() {
(holder.title).setTextHtml(mContext.getString(R.string.content_deleted));
if (holder.firstTextView != null) {
holder.firstTextView.setText(R.string.content_deleted);
holder.commentOverflow.setVisibility(View.GONE);
} else {
if (holder.itemView.findViewById(R.id.body) != null) {
((TextView) holder.itemView.findViewById(R.id.body)).setText(R.string.content_deleted);
}
}
}
});
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}).setNegativeButton(R.string.btn_cancel, null).show();
}
break;
case 3:
{
new MaterialDialog.Builder(mContext).items(data).title(R.string.sidebar_select_flair).itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
final FlairTemplate t = flairlist.get(which);
if (t.isTextEditable()) {
new MaterialDialog.Builder(mContext).title(R.string.mod_btn_submission_flair_text).input(mContext.getString(R.string.mod_flair_hint), t.getText(), true, new MaterialDialog.InputCallback() {
@Override
public void onInput(MaterialDialog dialog, CharSequence input) {
}
}).positiveText(R.string.btn_set).onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(MaterialDialog dialog, DialogAction which) {
final String flair = dialog.getInputEditText().getText().toString();
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
try {
new ModerationManager(Authentication.reddit).setFlair(submission.getSubredditName(), t, flair, submission);
return true;
} catch (ApiException e) {
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean done) {
Snackbar s = null;
if (done) {
if (holder.itemView != null) {
s = Snackbar.make(holder.itemView, R.string.snackbar_flair_success, Snackbar.LENGTH_SHORT);
SubmissionCache.updateTitleFlair(submission, flair, mContext);
holder.title.setText(SubmissionCache.getTitleLine(submission, mContext));
}
} else {
if (holder.itemView != null) {
s = Snackbar.make(holder.itemView, R.string.snackbar_flair_error, Snackbar.LENGTH_SHORT);
}
}
if (s != null) {
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}).negativeText(R.string.btn_cancel).show();
} else {
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
try {
new ModerationManager(Authentication.reddit).setFlair(submission.getSubredditName(), t, null, submission);
return true;
} catch (ApiException e) {
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean done) {
Snackbar s = null;
if (done) {
if (holder.itemView != null) {
s = Snackbar.make(holder.itemView, R.string.snackbar_flair_success, Snackbar.LENGTH_SHORT);
SubmissionCache.updateTitleFlair(submission, t.getCssClass(), mContext);
holder.title.setText(SubmissionCache.getTitleLine(submission, mContext));
}
} else {
if (holder.itemView != null) {
s = Snackbar.make(holder.itemView, R.string.snackbar_flair_error, Snackbar.LENGTH_SHORT);
}
}
if (s != null) {
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
}).show();
}
break;
case 4:
if (submission.isNsfw()) {
unNsfwSubmission(mContext, submission, holder);
} else {
setPostNsfw(mContext, submission, holder);
}
break;
}
}
}).show();
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
});
} else {
edit.setVisibility(View.GONE);
}
if (HasSeen.getSeen(submission) && !full) {
holder.title.setAlpha(0.54f);
holder.body.setAlpha(0.54f);
} else {
holder.title.setAlpha(1f);
if (!full) {
holder.body.setAlpha(1f);
}
}
}
Aggregations