use of me.ccrama.redditslide.SpoilerRobotoTextView in project Slide by ccrama.
the class MainActivity method doSubOnlyStuff.
public void doSubOnlyStuff(final Subreddit subreddit) {
findViewById(R.id.loader).setVisibility(View.GONE);
if (subreddit.getSubredditType() != null) {
canSubmit = !subreddit.getSubredditType().equals("RESTRICTED");
} else {
canSubmit = true;
}
if (subreddit.getSidebar() != null && !subreddit.getSidebar().isEmpty()) {
findViewById(R.id.sidebar_text).setVisibility(View.VISIBLE);
final String text = subreddit.getDataNode().get("description_html").asText().trim();
setViews(text, subreddit.getDisplayName(), sidebarBody, sidebarOverflow);
// get all subs that have Notifications enabled
ArrayList<String> rawSubs = Reddit.stringToArray(Reddit.appRestart.getString(CheckForMail.SUBS_TO_GET, ""));
HashMap<String, Integer> subThresholds = new HashMap<>();
for (String s : rawSubs) {
try {
String[] split = s.split(":");
subThresholds.put(split[0].toLowerCase(Locale.ENGLISH), Integer.valueOf(split[1]));
} catch (Exception ignored) {
// do nothing
}
}
// whether or not this subreddit was in the keySet
boolean isNotified = subThresholds.keySet().contains(subreddit.getDisplayName().toLowerCase(Locale.ENGLISH));
((AppCompatCheckBox) findViewById(R.id.notify_posts_state)).setChecked(isNotified);
} else {
findViewById(R.id.sidebar_text).setVisibility(View.GONE);
}
{
View collection = findViewById(R.id.collection);
if (Authentication.isLoggedIn) {
collection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AsyncTask<Void, Void, Void>() {
HashMap<String, MultiReddit> multis = new HashMap<String, MultiReddit>();
@Override
protected Void doInBackground(Void... params) {
if (UserSubscriptions.multireddits == null) {
UserSubscriptions.syncMultiReddits(MainActivity.this);
}
for (MultiReddit r : UserSubscriptions.multireddits) {
multis.put(r.getDisplayName(), r);
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
new MaterialDialog.Builder(MainActivity.this).title(getString(R.string.multi_add_to, subreddit.getDisplayName())).items(multis.keySet()).itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View itemView, final int which, CharSequence text) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
final String multiName = multis.keySet().toArray(new String[multis.size()])[which];
List<String> subs = new ArrayList<String>();
for (MultiSubreddit sub : multis.get(multiName).getSubreddits()) {
subs.add(sub.getDisplayName());
}
subs.add(subreddit.getDisplayName());
new MultiRedditManager(Authentication.reddit).createOrUpdate(new MultiRedditUpdateRequest.Builder(Authentication.name, multiName).subreddits(subs).build());
UserSubscriptions.syncMultiReddits(MainActivity.this);
runOnUiThread(new Runnable() {
@Override
public void run() {
drawerLayout.closeDrawers();
Snackbar s = Snackbar.make(mToolbar, getString(R.string.multi_subreddit_added, multiName), Snackbar.LENGTH_LONG);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
});
} catch (final NetworkException | ApiException e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Snackbar.make(mToolbar, getString(R.string.multi_error), Snackbar.LENGTH_LONG).setAction(R.string.btn_ok, new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}).show();
}
});
}
});
e.printStackTrace();
}
return null;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}).show();
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
});
} else {
collection.setVisibility(View.GONE);
}
}
{
final AppCompatCheckBox notifyStateCheckBox = (AppCompatCheckBox) findViewById(R.id.notify_posts_state);
assert notifyStateCheckBox != null;
notifyStateCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
final String sub = subreddit.getDisplayName();
if (!sub.equalsIgnoreCase("all") && !sub.equalsIgnoreCase("frontpage") && !sub.equalsIgnoreCase("friends") && !sub.equalsIgnoreCase("mod") && !sub.contains("+") && !sub.contains(".") && !sub.contains("/m/")) {
new AlertDialogWrapper.Builder(MainActivity.this).setTitle(getString(R.string.sub_post_notifs_title, sub)).setMessage(R.string.sub_post_notifs_msg).setPositiveButton(R.string.btn_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new MaterialDialog.Builder(MainActivity.this).title(R.string.sub_post_notifs_threshold).items(new String[] { "1", "5", "10", "20", "40", "50" }).alwaysCallSingleChoiceCallback().itemsCallbackSingleChoice(0, new MaterialDialog.ListCallbackSingleChoice() {
@Override
public boolean onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
ArrayList<String> subs = Reddit.stringToArray(Reddit.appRestart.getString(CheckForMail.SUBS_TO_GET, ""));
subs.add(sub + ":" + text);
Reddit.appRestart.edit().putString(CheckForMail.SUBS_TO_GET, Reddit.arrayToString(subs)).commit();
return true;
}
}).cancelable(false).show();
}
}).setNegativeButton(R.string.btn_cancel, null).setNegativeButton(R.string.btn_cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
notifyStateCheckBox.setChecked(false);
}
}).setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
notifyStateCheckBox.setChecked(false);
}
}).show();
} else {
notifyStateCheckBox.setChecked(false);
Toast.makeText(MainActivity.this, R.string.sub_post_notifs_err, Toast.LENGTH_SHORT).show();
}
} else {
Intent cancelIntent = new Intent(MainActivity.this, CancelSubNotifs.class);
cancelIntent.putExtra(CancelSubNotifs.EXTRA_SUB, subreddit.getDisplayName());
startActivity(cancelIntent);
}
}
});
}
{
final TextView subscribe = (TextView) findViewById(R.id.subscribe);
currentlySubbed = (!Authentication.isLoggedIn && usedArray.contains(subreddit.getDisplayName().toLowerCase(Locale.ENGLISH))) || subreddit.isUserSubscriber();
doSubscribeButtonText(currentlySubbed, subscribe);
assert subscribe != null;
subscribe.setOnClickListener(new View.OnClickListener() {
private void doSubscribe() {
if (Authentication.isLoggedIn) {
new AlertDialogWrapper.Builder(MainActivity.this).setTitle(getString(R.string.subscribe_to, subreddit.getDisplayName())).setPositiveButton(R.string.reorder_add_subscribe, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new AsyncTask<Void, Void, Boolean>() {
@Override
public void onPostExecute(Boolean success) {
if (!success) {
// If subreddit was removed from account or not
new AlertDialogWrapper.Builder(MainActivity.this).setTitle(R.string.force_change_subscription).setMessage(R.string.force_change_subscription_desc).setPositiveButton(R.string.btn_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeSubscription(subreddit, // Force add the subscription
true);
Snackbar s = Snackbar.make(mToolbar, getString(R.string.misc_subscribed), Snackbar.LENGTH_LONG);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}).setNegativeButton(R.string.btn_no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setCancelable(false).show();
} else {
changeSubscription(subreddit, true);
}
}
@Override
protected Boolean doInBackground(Void... params) {
try {
new AccountManager(Authentication.reddit).subscribe(subreddit);
} catch (NetworkException e) {
// Either network crashed or trying to unsubscribe to a subreddit that the account isn't subscribed to
return false;
}
return true;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}).setNeutralButton(R.string.btn_add_to_sublist, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeSubscription(subreddit, // Force add the subscription
true);
Snackbar s = Snackbar.make(mToolbar, R.string.sub_added, Snackbar.LENGTH_LONG);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}).setNegativeButton(R.string.btn_cancel, null).show();
} else {
changeSubscription(subreddit, true);
}
}
private void doUnsubscribe() {
if (Authentication.didOnline) {
new AlertDialogWrapper.Builder(MainActivity.this).setTitle(getString(R.string.unsubscribe_from, subreddit.getDisplayName())).setPositiveButton(R.string.reorder_remove_unsubsribe, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new AsyncTask<Void, Void, Boolean>() {
@Override
public void onPostExecute(Boolean success) {
if (!success) {
// If subreddit was removed from account or not
new AlertDialogWrapper.Builder(MainActivity.this).setTitle(R.string.force_change_subscription).setMessage(R.string.force_change_subscription_desc).setPositiveButton(R.string.btn_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeSubscription(subreddit, // Force add the subscription
false);
Snackbar s = Snackbar.make(mToolbar, getString(R.string.misc_unsubscribed), Snackbar.LENGTH_LONG);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}).setNegativeButton(R.string.btn_no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setCancelable(false).show();
} else {
changeSubscription(subreddit, false);
}
}
@Override
protected Boolean doInBackground(Void... params) {
try {
new AccountManager(Authentication.reddit).unsubscribe(subreddit);
} catch (NetworkException e) {
// Either network crashed or trying to unsubscribe to a subreddit that the account isn't subscribed to
return false;
}
return true;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}).setNeutralButton(R.string.just_unsub, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeSubscription(subreddit, // Force add the subscription
false);
Snackbar s = Snackbar.make(mToolbar, R.string.misc_unsubscribed, Snackbar.LENGTH_LONG);
View view = s.getView();
TextView tv = view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
s.show();
}
}).setNegativeButton(R.string.btn_cancel, null).show();
} else {
changeSubscription(subreddit, false);
}
}
@Override
public void onClick(View v) {
if (!currentlySubbed) {
doSubscribe();
doSubscribeButtonText(currentlySubbed, subscribe);
} else {
doUnsubscribe();
doSubscribeButtonText(currentlySubbed, subscribe);
}
}
});
}
if (!subreddit.getPublicDescription().isEmpty()) {
findViewById(R.id.sub_title).setVisibility(View.VISIBLE);
setViews(subreddit.getDataNode().get("public_description_html").asText(), subreddit.getDisplayName().toLowerCase(Locale.ENGLISH), ((SpoilerRobotoTextView) findViewById(R.id.sub_title)), (CommentOverflow) findViewById(R.id.sub_title_overflow));
} else {
findViewById(R.id.sub_title).setVisibility(View.GONE);
}
((ImageView) findViewById(R.id.subimage)).setImageResource(0);
if (subreddit.getDataNode().has("icon_img") && !subreddit.getDataNode().get("icon_img").asText().isEmpty()) {
findViewById(R.id.subimage).setVisibility(View.VISIBLE);
((Reddit) getApplication()).getImageLoader().displayImage(subreddit.getDataNode().get("icon_img").asText(), (ImageView) findViewById(R.id.subimage));
} else {
findViewById(R.id.subimage).setVisibility(View.GONE);
}
((TextView) findViewById(R.id.subscribers)).setText(getString(R.string.subreddit_subscribers_string, subreddit.getLocalizedSubscriberCount()));
findViewById(R.id.subscribers).setVisibility(View.VISIBLE);
((TextView) findViewById(R.id.active_users)).setText(getString(R.string.subreddit_active_users_string_new, subreddit.getLocalizedAccountsActive()));
findViewById(R.id.active_users).setVisibility(View.VISIBLE);
}
use of me.ccrama.redditslide.SpoilerRobotoTextView in project Slide by ccrama.
the class MainActivity method setViews.
private void setViews(String rawHTML, String subredditName, SpoilerRobotoTextView firstTextView, CommentOverflow commentOverflow) {
if (rawHTML.isEmpty()) {
return;
}
List<String> blocks = SubmissionParser.getBlocks(rawHTML);
int startIndex = 0;
// the <div class="md"> case is when the body contains a table or code block first
if (!blocks.get(0).equals("<div class=\"md\">")) {
firstTextView.setVisibility(View.VISIBLE);
firstTextView.setTextHtml(blocks.get(0), subredditName);
firstTextView.setLinkTextColor(new ColorPreferences(this).getColor(subredditName));
startIndex = 1;
} else {
firstTextView.setText("");
firstTextView.setVisibility(View.GONE);
}
if (blocks.size() > 1) {
if (startIndex == 0) {
commentOverflow.setViews(blocks, subredditName);
} else {
commentOverflow.setViews(blocks.subList(startIndex, blocks.size()), subredditName);
}
SidebarLayout sidebar = (SidebarLayout) findViewById(R.id.drawer_layout);
for (int i = 0; i < commentOverflow.getChildCount(); i++) {
View maybeScrollable = commentOverflow.getChildAt(i);
if (maybeScrollable instanceof HorizontalScrollView) {
sidebar.addScrollable(maybeScrollable);
}
}
} else {
commentOverflow.removeAllViews();
}
}
use of me.ccrama.redditslide.SpoilerRobotoTextView in project Slide by ccrama.
the class LiveThread method doLiveSidebar.
public void doLiveSidebar() {
findViewById(R.id.loader).setVisibility(View.GONE);
final View dialoglayout = findViewById(R.id.sidebarsub);
dialoglayout.findViewById(R.id.sub_stuff).setVisibility(View.GONE);
((TextView) dialoglayout.findViewById(R.id.sub_infotitle)).setText((thread.getState() ? "LIVE: " : "") + thread.getTitle());
((TextView) dialoglayout.findViewById(R.id.active_users)).setText(thread.getLocalizedViewerCount() + " viewing");
((TextView) dialoglayout.findViewById(R.id.active_users)).setText(thread.getLocalizedViewerCount());
{
final String text = thread.getDataNode().get("resources_html").asText();
final SpoilerRobotoTextView body = (SpoilerRobotoTextView) findViewById(R.id.sidebar_text);
CommentOverflow overflow = (CommentOverflow) findViewById(R.id.commentOverflow);
setViews(text, "none", body, overflow);
}
{
final String text = thread.getDataNode().get("description_html").asText();
final SpoilerRobotoTextView body = (SpoilerRobotoTextView) findViewById(R.id.sub_title);
CommentOverflow overflow = (CommentOverflow) findViewById(R.id.sub_title_overflow);
setViews(text, "none", body, overflow);
}
}
use of me.ccrama.redditslide.SpoilerRobotoTextView in project Slide by ccrama.
the class Crosspost method onCreate.
public void onCreate(Bundle savedInstanceState) {
disableSwipeBackLayout();
super.onCreate(savedInstanceState);
applyColorTheme();
setContentView(R.layout.activity_crosspost);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = this.getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
}
setupAppBar(R.id.toolbar, R.string.title_crosspost, true, true);
inboxReplies = (SwitchCompat) findViewById(R.id.replies);
final AutoCompleteTextView subredditText = ((AutoCompleteTextView) findViewById(R.id.subreddittext));
((EditText) findViewById(R.id.crossposttext)).setText(toCrosspost.getTitle() + getString(R.string.submission_properties_seperator) + "/u/" + toCrosspost.getAuthor());
findViewById(R.id.crossposttext).setEnabled(false);
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, UserSubscriptions.getAllSubreddits(this));
subredditText.setAdapter(adapter);
subredditText.setThreshold(2);
subredditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (tchange != null) {
tchange.cancel(true);
}
findViewById(R.id.submittext).setVisibility(View.GONE);
}
@Override
public void afterTextChanged(Editable s) {
}
});
subredditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
findViewById(R.id.submittext).setVisibility(View.GONE);
if (!hasFocus) {
tchange = new AsyncTask<Void, Void, Subreddit>() {
@Override
protected Subreddit doInBackground(Void... params) {
try {
return Authentication.reddit.getSubreddit(subredditText.getText().toString());
} catch (Exception ignored) {
}
return null;
}
@Override
protected void onPostExecute(Subreddit s) {
if (s != null) {
String text = s.getDataNode().get("submit_text_html").asText();
if (text != null && !text.isEmpty() && !text.equals("null")) {
findViewById(R.id.submittext).setVisibility(View.VISIBLE);
setViews(text, subredditText.getText().toString(), (SpoilerRobotoTextView) findViewById(R.id.submittext), (CommentOverflow) findViewById(R.id.commentOverflow));
}
if (s.getSubredditType().equals("RESTRICTED")) {
subredditText.setText("");
new AlertDialogWrapper.Builder(Crosspost.this).setTitle(R.string.err_submit_restricted).setMessage(R.string.err_submit_restricted_text).setPositiveButton(R.string.btn_ok, null).show();
}
} else {
findViewById(R.id.submittext).setVisibility(View.GONE);
}
}
};
tchange.execute();
}
}
});
((EditText) findViewById(R.id.titletext)).setText(toCrosspost.getTitle());
findViewById(R.id.suggest).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((EditText) findViewById(R.id.titletext)).setText(toCrosspost.getTitle());
}
});
findViewById(R.id.send).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
((FloatingActionButton) findViewById(R.id.send)).hide();
new AsyncDo().execute();
}
});
}
use of me.ccrama.redditslide.SpoilerRobotoTextView in project Slide by ccrama.
the class Announcement method onCreate.
@Override
public void onCreate(Bundle savedInstance) {
overridePendingTransition(R.anim.fade_in_real, 0);
disableSwipeBackLayout();
applyColorTheme();
setTheme(R.style.popup);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
super.onCreate(savedInstance);
setContentView(R.layout.submission_dialog);
setViews(Reddit.appRestart.getString("page", ""), "NO SUB", (SpoilerRobotoTextView) findViewById(R.id.firstTextView), (CommentOverflow) findViewById(R.id.commentOverflow));
((TitleTextView) findViewById(R.id.title)).setText(Reddit.appRestart.getString("title", ""));
findViewById(R.id.ok).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
findViewById(R.id.comments).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new OpenRedditLink(Announcement.this, Reddit.appRestart.getString("url", ""));
finish();
}
});
}
Aggregations