Skip to content

Instantly share code, notes, and snippets.

View fmedlin's full-sized avatar

Fred Medlin fmedlin

View GitHub Profile
@fmedlin
fmedlin / Toolbar.kotlin
Created February 16, 2018 02:36
The many ways to navigate back with a Toolbar
// (1) Defer to the support actionbar
// Set the toolbar to be the support actionbar of an AppCompatActivity
// ...
setSupportActionBar(find(R.id.toolbar))
with(supportActionBar!!) {
setDisplayHomeAsUpEnabled(true)
setDisplayShowHomeEnabled(true)
}
// ...
package com.automattic.simplenote;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.text.Html;
import android.text.method.LinkMovementMethod;
private void handleViewClicks(View view) {
ClickHandler.handleClick(view.findViewById(R.id.about_blog), v ->
browseOrToastOnError(view.getContext(), SIMPLENOTE_BLOG_URL));
ClickHandler.handleClick(view.findViewById(R.id.about_help), v ->
browseOrToastOnError(view.getContext(), SIMPLENOTE_HELP_URL));
ClickHandler.handleClick(view.findViewById(R.id.about_contribute), v ->
browseOrToastOnError(view.getContext(), URL_CONTRIBUTE));
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_about, container, false);
return setupViews(view);
}
private View setupViews(View view) {
setVersionAndCopyrightText(view);
handleViewClicks(view);
ClickHandler.handleClick(
view.findViewById(R.id.about_privacy),
Html.fromHtml(String.format(
getResources().getString(R.string.link_privacy),
"<u><span style=\"color:#",
colorLink,
"\">",
"</span></u>")),
v -> browseOrToastOnError(view.getContext(), URL_PRIVACY)
);
interface ClickHandler {
static void handleClick(@NonNull View view, View.OnClickListener listener) {
view.setOnClickListener(listener);
}
static void handleClick(@NonNull TextView view, CharSequence text, View.OnClickListener listener) {
view.setText(text);
view.setOnClickListener(listener);
}
}
ClickHandler.handleClick(view.findViewById(R.id.about_blog), v ->
browseOrToastOnError(view.getContext(), SIMPLENOTE_BLOG_URL));
private void browseOrToastOnError(Context context, String url) {
browseOrToastOnError(context, url, R.string.no_browser_available);
}
private void browseOrToastOnError(Context context, String url, @StringRes int stringRes) {
try {
BrowserUtils.launchBrowserOrShowError(requireContext(), url);
ClickHandler.handleClick(view.findViewById(R.id.about_blog), v -> {
try {
BrowserUtils.launchBrowserOrShowError(requireContext(), SIMPLENOTE_BLOG_URL);
} catch (Exception e) {
Toast.makeText(getActivity(), R.string.no_browser_available, Toast.LENGTH_LONG).show();
}
});
interface ClickHandler {
static void handleClick(@NonNull View view, View.OnClickListener listener) {
view.setOnClickListener(listener);
}
}
@Override
public void track(AnalyticsTracker.Stat stat, String category, String label, Map<String, ?> properties) {
if (mNosaraClient == null) {
return;
}
String eventName = stat.name().toLowerCase();
final String user;
final TracksClient.NosaraUserType userType;