diff --git a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java index cc32f911..f866625f 100644 --- a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java @@ -32,6 +32,7 @@ import org.mian.gitnex.fragments.SettingsFragment; import org.mian.gitnex.fragments.StarredRepositoriesFragment; import org.mian.gitnex.helpers.AlertDialogs; import org.mian.gitnex.helpers.Authorization; +import org.mian.gitnex.helpers.ChangeLog; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.models.GiteaVersion; import org.mian.gitnex.models.UserInfo; @@ -285,6 +286,10 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig } + // Changelog popup + ChangeLog changelogDialog = new ChangeLog(this); + changelogDialog.showDialog(); + } public void setActionBarTitle (@NonNull String title) { diff --git a/app/src/main/java/org/mian/gitnex/helpers/ChangeLog.java b/app/src/main/java/org/mian/gitnex/helpers/ChangeLog.java new file mode 100644 index 00000000..613638fe --- /dev/null +++ b/app/src/main/java/org/mian/gitnex/helpers/ChangeLog.java @@ -0,0 +1,102 @@ +package org.mian.gitnex.helpers; + +import java.io.IOException; +import java.util.Objects; +import org.mian.gitnex.R; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; +import android.app.Activity; +import android.content.pm.PackageManager; +import android.content.res.Resources; +import android.content.res.XmlResourceParser; +import android.text.Html; +import android.util.Log; +import androidx.appcompat.app.AlertDialog; + +/** + * Author M M Arif + */ + +public class ChangeLog { + + static final private String TAG = "ChangeLog"; + static final private String CHANGELOG_XML_NODE = "changelog"; + + private Activity changelogActivity; + + public ChangeLog(Activity context) { + changelogActivity = context; + } + + private String ParseReleaseTag(XmlResourceParser aXml) throws XmlPullParserException, IOException { + + StringBuilder strBuilder = new StringBuilder(aXml.getAttributeValue(null, "version") + "
"); + int eventType = aXml.getEventType(); + + while ((eventType != XmlPullParser.END_TAG) || (aXml.getName().equals("change"))) { + + if ((eventType == XmlPullParser.START_TAG) &&(aXml.getName().equals("change"))) { + eventType = aXml.next(); + strBuilder.append(aXml.getText()).append("
"); + } + eventType = aXml.next(); + + } + strBuilder.append("
"); + + return strBuilder.toString(); + + } + + private String getChangelog(int resId, Resources res) { + + StringBuilder strBuilder = new StringBuilder(); + try (XmlResourceParser xml = res.getXml(resId)) { + + int eventType = xml.getEventType(); + while (eventType != XmlPullParser.END_DOCUMENT) { + + if ((eventType == XmlPullParser.START_TAG) && (xml.getName().equals("release"))) { + strBuilder.append(ParseReleaseTag(xml)); + + } + eventType = xml.next(); + + } + + } + catch (XmlPullParserException | IOException e) { + Log.e(TAG, Objects.requireNonNull(e.getMessage())); + } + + return strBuilder.toString(); + + } + + public void showDialog() { + + String packageName = changelogActivity.getPackageName(); + Resources res = null; + + try { + res = changelogActivity.getPackageManager().getResourcesForApplication(packageName); + } + catch (PackageManager.NameNotFoundException e) { + Log.e(TAG, Objects.requireNonNull(e.getMessage())); + } + + assert res != null; + int resId = res.getIdentifier(CHANGELOG_XML_NODE, "xml", packageName); + + String changelogMessage = getChangelog(resId, res); + + androidx.appcompat.app.AlertDialog.Builder builder = new AlertDialog.Builder(changelogActivity); + builder.setTitle(R.string.changelogTitle); + builder.setMessage(Html.fromHtml("" + changelogMessage + "")); + builder.setNegativeButton(R.string.okButton, (dialog, which) -> dialog.cancel()); + builder.create(); + builder.show(); + + } + +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bba9dfb9..b90740a8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -560,4 +560,7 @@ Share Issue Share Repository Create Repository + + Changelog + diff --git a/app/src/main/res/xml/changelog.xml b/app/src/main/res/xml/changelog.xml new file mode 100644 index 00000000..1ec657c7 --- /dev/null +++ b/app/src/main/res/xml/changelog.xml @@ -0,0 +1,26 @@ + + + + + New: Light theme (choose from settings) + New: Icons + New: Download files in Fileviewer (needs write permission) + New: Custom fonts (choose from settings) + New: PDF support in Fileviewer + New: Night mode for PDF in Fileviewer (choose from settings) + New: Default list of repositories in Explore screen + New: Latvian language support + Improvement: Support more files in file viewer syntax highlighter + Improvement: Exclude BIN files rendering in diff viewer + Improvement: Exclude specific files in Fileviewer like doc, xls etc + Improvement: Single issue id and support copy title and description to clipboard + Improvement: Translation updates + Bugfix: Don’t refresh repositories without action + + + + Bugfix: Slashes in URL(file viewer) + Bugfix: No milestones when creating issue if user has other language selected + + + \ No newline at end of file