diff --git a/app/src/main/java/org/mian/gitnex/adapters/ClosedIssuesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ClosedIssuesAdapter.java index 8d9cf3fe..19d7a05a 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/ClosedIssuesAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/ClosedIssuesAdapter.java @@ -3,54 +3,31 @@ package org.mian.gitnex.adapters; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -import android.graphics.drawable.Drawable; -import android.net.Uri; -import android.text.Spanned; +import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Filter; import android.widget.Filterable; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; import com.squareup.picasso.Picasso; -import com.vdurmont.emoji.EmojiParser; import org.mian.gitnex.R; import org.mian.gitnex.activities.IssueDetailActivity; import org.mian.gitnex.helpers.ClickListener; import org.mian.gitnex.helpers.RoundedTransformation; import org.mian.gitnex.helpers.TimeHelper; -import org.mian.gitnex.helpers.UserMentions; import org.mian.gitnex.models.Issues; import org.mian.gitnex.util.TinyDB; import org.ocpsoft.prettytime.PrettyTime; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.Locale; -import java.util.Objects; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; -import io.noties.markwon.AbstractMarkwonPlugin; -import io.noties.markwon.Markwon; -import io.noties.markwon.core.CorePlugin; -import io.noties.markwon.core.MarkwonTheme; -import io.noties.markwon.ext.strikethrough.StrikethroughPlugin; -import io.noties.markwon.ext.tables.TablePlugin; -import io.noties.markwon.ext.tasklist.TaskListPlugin; -import io.noties.markwon.html.HtmlPlugin; -import io.noties.markwon.image.AsyncDrawable; -import io.noties.markwon.image.DefaultMediaDecoder; -import io.noties.markwon.image.ImageItem; -import io.noties.markwon.image.ImagesPlugin; -import io.noties.markwon.image.SchemeHandler; -import io.noties.markwon.image.gif.GifMediaDecoder; -import io.noties.markwon.image.svg.SvgMediaDecoder; -import io.noties.markwon.linkify.LinkifyPlugin; /** * Author M M Arif @@ -130,8 +107,6 @@ public class ClosedIssuesAdapter extends RecyclerView.Adapter supportedSchemes() { - return Collections.singleton("drawable"); - } - }); - plugin.addMediaDecoder(GifMediaDecoder.create(false)); - plugin.addMediaDecoder(SvgMediaDecoder.create(context.getResources())); - plugin.addMediaDecoder(SvgMediaDecoder.create()); - plugin.defaultMediaDecoder(DefaultMediaDecoder.create(context.getResources())); - plugin.defaultMediaDecoder(DefaultMediaDecoder.create()); - } - })) - .usePlugin(new AbstractMarkwonPlugin() { - @Override - public void configureTheme(@NonNull MarkwonTheme.Builder builder) { - builder - .codeTextColor(tinyDb.getInt("codeBlockColor")) - .codeBackgroundColor(tinyDb.getInt("codeBlockBackground")) - .linkColor(context.getResources().getColor(R.color.lightBlue)); - } - }) - .usePlugin(ImagesPlugin.create(new ImagesPlugin.ImagesConfigure() { - @Override - public void configureImages(@NonNull ImagesPlugin plugin) { - plugin.placeholderProvider(new ImagesPlugin.PlaceholderProvider() { - @Nullable - @Override - public Drawable providePlaceholder(@NonNull AsyncDrawable drawable) { - return null; - } - }); - } - })) - .usePlugin(TablePlugin.create(context)) - .usePlugin(TaskListPlugin.create(context)) - .usePlugin(HtmlPlugin.create()) - .usePlugin(StrikethroughPlugin.create()) - .usePlugin(LinkifyPlugin.create()) - .build(); - if (!issuesModel.getUser().getFull_name().equals("")) { issueAssigneeAvatar.setOnClickListener(new ClickListener(context.getResources().getString(R.string.issueCreator) + issuesModel.getUser().getFull_name(), context)); } else { @@ -260,9 +172,9 @@ public class ClosedIssuesAdapter extends RecyclerView.Adapter" + context.getResources().getString(R.string.hash) + issuesModel.getNumber() + ""; + issueTitle.setText(Html.fromHtml(issueNumber_ + " " + issuesModel.getTitle())); + issueNumber.setText(String.valueOf(issuesModel.getNumber())); issueCommentsCount.setText(String.valueOf(issuesModel.getComments())); - if (!issuesModel.getBody().equals("")) { - String cleanIssueDescription = issuesModel.getBody().trim(); - issueDescription.setVisibility(View.VISIBLE); - Spanned bodyWithMD = markwon.toMarkdown(EmojiParser.parseToUnicode(cleanIssueDescription)); - markwon.setParsedMarkdown(issueDescription, UserMentions.UserMentionsFunc(context, bodyWithMD, cleanIssueDescription)); - } - else { - issueDescription.setText(""); - issueDescription.setVisibility(View.GONE); - } - /*if (issuesModel.getState().equals("open")) { - issueState.setImageResource(R.drawable.ic_issue_open); - issueState.setOnClickListener(new ClickListener(context.getResources().getString(R.string.issueStatusTextOpen), context)); - } else { - issueState.setImageResource(R.drawable.ic_issue_closed); - issueState.setOnClickListener(new ClickListener(context.getResources().getString(R.string.issueStatusTextClosed), context)); - }*/ - switch (timeFormat) { case "pretty": { PrettyTime prettyTime = new PrettyTime(new Locale(locale)); diff --git a/app/src/main/java/org/mian/gitnex/adapters/IssuesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/IssuesAdapter.java index 5a872ef8..5e6a8960 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/IssuesAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/IssuesAdapter.java @@ -3,54 +3,31 @@ package org.mian.gitnex.adapters; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -import android.graphics.drawable.Drawable; -import android.net.Uri; -import android.text.Spanned; +import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Filter; import android.widget.Filterable; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; import com.squareup.picasso.Picasso; -import com.vdurmont.emoji.EmojiParser; import org.mian.gitnex.R; import org.mian.gitnex.activities.IssueDetailActivity; import org.mian.gitnex.helpers.ClickListener; import org.mian.gitnex.helpers.RoundedTransformation; import org.mian.gitnex.helpers.TimeHelper; -import org.mian.gitnex.helpers.UserMentions; import org.mian.gitnex.models.Issues; import org.mian.gitnex.util.TinyDB; import org.ocpsoft.prettytime.PrettyTime; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.Locale; -import java.util.Objects; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; -import io.noties.markwon.AbstractMarkwonPlugin; -import io.noties.markwon.Markwon; -import io.noties.markwon.core.CorePlugin; -import io.noties.markwon.core.MarkwonTheme; -import io.noties.markwon.ext.strikethrough.StrikethroughPlugin; -import io.noties.markwon.ext.tables.TablePlugin; -import io.noties.markwon.ext.tasklist.TaskListPlugin; -import io.noties.markwon.html.HtmlPlugin; -import io.noties.markwon.image.AsyncDrawable; -import io.noties.markwon.image.DefaultMediaDecoder; -import io.noties.markwon.image.ImageItem; -import io.noties.markwon.image.ImagesPlugin; -import io.noties.markwon.image.SchemeHandler; -import io.noties.markwon.image.gif.GifMediaDecoder; -import io.noties.markwon.image.svg.SvgMediaDecoder; -import io.noties.markwon.linkify.LinkifyPlugin; /** * Author M M Arif @@ -130,8 +107,6 @@ public class IssuesAdapter extends RecyclerView.Adapter private TextView issueNumber; private ImageView issueAssigneeAvatar; private TextView issueTitle; - private TextView issueDescription; - //private ImageView issueState; private TextView issueCreatedTime; private TextView issueCommentsCount; private ImageView issueType; @@ -143,9 +118,8 @@ public class IssuesAdapter extends RecyclerView.Adapter issueNumber = itemView.findViewById(R.id.issueNumber); issueAssigneeAvatar = itemView.findViewById(R.id.assigneeAvatar); issueTitle = itemView.findViewById(R.id.issueTitle); - issueDescription = itemView.findViewById(R.id.issueDescription); issueCommentsCount = itemView.findViewById(R.id.issueCommentsCount); - //issueState = itemView.findViewById(R.id.issueStatus); + LinearLayout frameCommentsCount = itemView.findViewById(R.id.frameCommentsCount); issueCreatedTime = itemView.findViewById(R.id.issueCreatedTime); issueType = itemView.findViewById(R.id.issueType); @@ -165,7 +139,7 @@ public class IssuesAdapter extends RecyclerView.Adapter } }); - issueDescription.setOnClickListener(new View.OnClickListener() { + frameCommentsCount.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -191,68 +165,6 @@ public class IssuesAdapter extends RecyclerView.Adapter final String locale = tinyDb.getString("locale"); final String timeFormat = tinyDb.getString("dateFormat"); - final Markwon markwon = Markwon.builder(Objects.requireNonNull(context)) - .usePlugin(CorePlugin.create()) - .usePlugin(ImagesPlugin.create(new ImagesPlugin.ImagesConfigure() { - @Override - public void configureImages(@NonNull ImagesPlugin plugin) { - plugin.addSchemeHandler(new SchemeHandler() { - @NonNull - @Override - public ImageItem handle(@NonNull String raw, @NonNull Uri uri) { - - final int resourceId = context.getResources().getIdentifier( - raw.substring("drawable://".length()), - "drawable", - context.getPackageName()); - - final Drawable drawable = context.getDrawable(resourceId); - - assert drawable != null; - return ImageItem.withResult(drawable); - } - - @NonNull - @Override - public Collection supportedSchemes() { - return Collections.singleton("drawable"); - } - }); - plugin.addMediaDecoder(GifMediaDecoder.create(false)); - plugin.addMediaDecoder(SvgMediaDecoder.create(context.getResources())); - plugin.addMediaDecoder(SvgMediaDecoder.create()); - plugin.defaultMediaDecoder(DefaultMediaDecoder.create(context.getResources())); - plugin.defaultMediaDecoder(DefaultMediaDecoder.create()); - } - })) - .usePlugin(new AbstractMarkwonPlugin() { - @Override - public void configureTheme(@NonNull MarkwonTheme.Builder builder) { - builder - .codeTextColor(tinyDb.getInt("codeBlockColor")) - .codeBackgroundColor(tinyDb.getInt("codeBlockBackground")) - .linkColor(context.getResources().getColor(R.color.lightBlue)); - } - }) - .usePlugin(ImagesPlugin.create(new ImagesPlugin.ImagesConfigure() { - @Override - public void configureImages(@NonNull ImagesPlugin plugin) { - plugin.placeholderProvider(new ImagesPlugin.PlaceholderProvider() { - @Nullable - @Override - public Drawable providePlaceholder(@NonNull AsyncDrawable drawable) { - return null; - } - }); - } - })) - .usePlugin(TablePlugin.create(context)) - .usePlugin(TaskListPlugin.create(context)) - .usePlugin(HtmlPlugin.create()) - .usePlugin(StrikethroughPlugin.create()) - .usePlugin(LinkifyPlugin.create()) - .build(); - if (!issuesModel.getUser().getFull_name().equals("")) { issueAssigneeAvatar.setOnClickListener(new ClickListener(context.getResources().getString(R.string.issueCreator) + issuesModel.getUser().getFull_name(), context)); } else { @@ -260,9 +172,9 @@ public class IssuesAdapter extends RecyclerView.Adapter } if (issuesModel.getUser().getAvatar_url() != null) { - Picasso.get().load(issuesModel.getUser().getAvatar_url()).transform(new RoundedTransformation(100, 0)).resize(200, 200).centerCrop().into(issueAssigneeAvatar); + Picasso.get().load(issuesModel.getUser().getAvatar_url()).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(issueAssigneeAvatar); } else { - Picasso.get().load(issuesModel.getUser().getAvatar_url()).transform(new RoundedTransformation(100, 0)).resize(200, 200).centerCrop().into(issueAssigneeAvatar); + Picasso.get().load(issuesModel.getUser().getAvatar_url()).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(issueAssigneeAvatar); } if (issuesModel.getPull_request() == null) { @@ -273,28 +185,12 @@ public class IssuesAdapter extends RecyclerView.Adapter issueType.setOnClickListener(new ClickListener(context.getResources().getString(R.string.issueTypePullRequest), context)); } - issueTitle.setText(context.getResources().getString(R.string.hash) + issuesModel.getNumber() + " " + issuesModel.getTitle()); + String issueNumber_ = "" + context.getResources().getString(R.string.hash) + issuesModel.getNumber() + ""; + issueTitle.setText(Html.fromHtml(issueNumber_ + " " + issuesModel.getTitle())); + issueNumber.setText(String.valueOf(issuesModel.getNumber())); issueCommentsCount.setText(String.valueOf(issuesModel.getComments())); - if (!issuesModel.getBody().equals("")) { - String cleanIssueDescription = issuesModel.getBody().trim(); - issueDescription.setVisibility(View.VISIBLE); - Spanned bodyWithMD = markwon.toMarkdown(EmojiParser.parseToUnicode(cleanIssueDescription)); - markwon.setParsedMarkdown(issueDescription, UserMentions.UserMentionsFunc(context, bodyWithMD, cleanIssueDescription)); - } - else { - issueDescription.setText(""); - issueDescription.setVisibility(View.GONE); - } - /*if (issuesModel.getState().equals("open")) { - issueState.setImageResource(R.drawable.ic_issue_open); - issueState.setOnClickListener(new ClickListener(context.getResources().getString(R.string.issueStatusTextOpen), context)); - } else { - issueState.setImageResource(R.drawable.ic_issue_closed); - issueState.setOnClickListener(new ClickListener(context.getResources().getString(R.string.issueStatusTextClosed), context)); - }*/ - switch (timeFormat) { case "pretty": { PrettyTime prettyTime = new PrettyTime(new Locale(locale)); diff --git a/app/src/main/res/drawable/ic_comment_16.xml b/app/src/main/res/drawable/ic_comment_16.xml new file mode 100644 index 00000000..186a57d7 --- /dev/null +++ b/app/src/main/res/drawable/ic_comment_16.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/font/opensanssemibold.ttf b/app/src/main/res/font/opensanssemibold.ttf deleted file mode 100644 index 99db86aa..00000000 Binary files a/app/src/main/res/font/opensanssemibold.ttf and /dev/null differ diff --git a/app/src/main/res/font/roboto.ttf b/app/src/main/res/font/roboto.ttf new file mode 100644 index 00000000..2b6392ff Binary files /dev/null and b/app/src/main/res/font/roboto.ttf differ diff --git a/app/src/main/res/layout/repo_detail_issues_list.xml b/app/src/main/res/layout/repo_detail_issues_list.xml index d5048866..a2687dae 100644 --- a/app/src/main/res/layout/repo_detail_issues_list.xml +++ b/app/src/main/res/layout/repo_detail_issues_list.xml @@ -1,119 +1,109 @@ - + android:layout_margin="15dp" + android:theme="@style/AppTheme" + tools:context=".activities.RepoDetailActivity"> - + + + + - - - - - - + android:layout_height="wrap_content" + android:layout_toEndOf="@+id/assigneeAvatar" + android:orientation="vertical"> + android:layout_marginBottom="10dp" + android:orientation="horizontal"> + + + + + + + + + + - - - - + android:textColor="@color/colorWhite" + android:textSize="12sp" /> - - - - - - - - + android:textSize="12sp" /> - + - + \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index addf9fff..b380981f 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -32,6 +32,7 @@ Favoriten Team erstellen E-Mail Adresse hinzufügen + New File Version\u0020:\u0020 diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 1c445ceb..4865492e 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -33,6 +33,7 @@ Starred Repositories Create Team Add Email Address + New File Version\u0020:\u0020 diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 06ba6e80..bc585d51 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -33,6 +33,7 @@ Избранные репозитории Создать команду Добавить адрес эл. почты + New File Версия\u0020:\u0020 diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml index c1335fe6..3d46f876 100644 --- a/app/src/main/res/values-v21/styles.xml +++ b/app/src/main/res/values-v21/styles.xml @@ -5,7 +5,7 @@ @color/colorPrimary @color/colorPrimary @color/colorPrimary - @font/sourcecodeproregular + @font/roboto @color/colorPrimary diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4e69e917..67651196 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -161,7 +161,7 @@ at # - Created\u0020 + Opened\u0020 Due Date Status: open open @@ -175,7 +175,7 @@ #%1$d %2$s Milestone %1$s Due %1$s - Created %1$s + Opened %1$s Assigned to: %1$s Comment Please write your comment diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index ab9a81e4..2fa70ea1 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -4,7 +4,7 @@ @color/colorPrimary @color/colorPrimaryDark @color/colorAccent - @font/sourcecodeproregular + @font/roboto @style/DrawerIcon #123456