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