v1.0.2-alpha

- Wrapped changelog text in a scroll view
- CodeEditor and SymbolInputView are now created dynamically at view creation
This commit is contained in:
Akash Yadav
2021-08-08 07:19:01 +05:30
parent feffb8a3c7
commit 637c39059d
19 changed files with 331 additions and 243 deletions
@@ -1,19 +1,25 @@
package com.itsaky.androidide;
import android.os.Bundle;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.view.View;
import androidx.appcompat.widget.TooltipCompat;
import com.itsaky.androidide.app.StudioActivity;
import com.itsaky.androidide.databinding.ActivityAboutBinding;
import com.itsaky.androidide.fragments.sheets.OptionsListFragment;
import com.itsaky.androidide.databinding.LayoutAboutItemsBinding;
import com.itsaky.androidide.models.License;
import com.itsaky.androidide.tasks.TaskExecutor;
import com.itsaky.androidide.tasks.callables.LicenseReader;
import java.util.List;
import java.util.ArrayList;
public class AboutActivity extends StudioActivity {
private ActivityAboutBinding binding;
public static final String JDK_SOURCE = "https://github.com/AdoptOpenJDK/openjdk-jdk11u";
@Override
protected View bindLayout() {
binding = ActivityAboutBinding.inflate(getLayoutInflater());
@@ -29,23 +35,49 @@ public class AboutActivity extends StudioActivity {
new TaskExecutor().executeAsync(new LicenseReader(this), __ -> {
setupLicenses(__);
});
LayoutAboutItemsBinding items = binding.items;
TooltipCompat.setTooltipText(items.discuss, getString(R.string.discussions_on_telegram));
TooltipCompat.setTooltipText(items.issueTracker, getString(R.string.user_suggestions));
TooltipCompat.setTooltipText(items.email, getString(R.string.about_option_email));
TooltipCompat.setTooltipText(items.website, getString(R.string.about_option_website));
items.issueTracker.setOnClickListener(v -> {
getApp().openIssueTracker();
});
items.discuss.setOnClickListener(v -> {
getApp().openTelegramGroup();
});
items.email.setOnClickListener(v -> {
getApp().emailUs();
});
items.website.setOnClickListener(v -> {
getApp().openWebsite();
});
}
private void setupLicenses(List<License> licenses) {
if(licenses == null || licenses.size() <= 0) {
binding.items.licenses.setText(getString(R.string.msg_about_no_licenses));
if(licenses == null) {
licenses = new ArrayList<>();
} else {
licenses.add(new License("Gradle Build Tool", "Apache License 2.0", "https://github.com/gradle/gradle"));
StringBuilder sb = new StringBuilder();
for(License license : licenses) {
sb.append("\u2022 ");
sb.append(license.name);
sb.append("\n");
sb.append(getString(R.string.msg_about_licensed_under, license.license));
sb.append("\n");
sb.append(getString(R.string.msg_about_license_source, license.url));
sb.append("\n\n");
sb.append("<br>");
sb.append(getString(R.string.msg_about_licensed_under));
sb.append(license.license);
sb.append("<br><a href=\"");
sb.append(license.url);
sb.append("\">");
sb.append(license.url);
sb.append("</a>");
sb.append("<br><br>");
}
binding.items.licenses.setText(sb);
sb.append(getString(R.string.license_jdk));
sb.append(String.format("<br><a href=\"%1$s\">%1$s</a>", JDK_SOURCE));
binding.items.licenses.setText(Html.fromHtml(sb.toString()));
binding.items.licenses.setMovementMethod(LinkMovementMethod.getInstance());
}
}