Skip to content
Snippets Groups Projects
Commit e3c730d9 authored by Michi302's avatar Michi302
Browse files

Merge branch 'master' into fdroid

# Conflicts:
#	README.md
#	app/build.gradle
#	app/src/main/java/com/commit451/gitlab/LabCoatApp.java
parents 28c09fb7 e73b1aab
No related branches found
No related tags found
No related merge requests found
Pipeline #
Showing
with 260 additions and 125 deletions
package com.commit451.gitlab.transformation;
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Paint;
import com.squareup.picasso.Transformation;
/**
* https://gist.github.com/julianshen/5829333
*/
public class CircleTransformation implements Transformation {
@Override
public Bitmap transform(Bitmap source) {
int size = Math.min(source.getWidth(), source.getHeight());
int x = (source.getWidth() - size) / 2;
int y = (source.getHeight() - size) / 2;
Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size);
if (squaredBitmap != source) {
source.recycle();
}
Bitmap bitmap = Bitmap.createBitmap(size, size, source.getConfig());
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
BitmapShader shader = new BitmapShader(squaredBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
paint.setShader(shader);
paint.setAntiAlias(true);
float r = size/2f;
canvas.drawCircle(r, r, r, paint);
squaredBitmap.recycle();
return bitmap;
}
@Override
public String key() {
return "circle";
}
}
\ No newline at end of file
package com.commit451.gitlab.transformation;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.support.annotation.NonNull;
import android.support.v7.graphics.Palette;
import android.widget.ImageView;
import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
import com.squareup.picasso.Transformation;
import java.lang.ref.WeakReference;
import java.util.Map;
import java.util.WeakHashMap;
/**
* Applies palette and stuff
*/
public final class PaletteTransformation implements Transformation {
private static final PaletteTransformation INSTANCE = new PaletteTransformation();
private static final Map<Bitmap, Palette> CACHE = new WeakHashMap<>();
/**
* A {@link Target} that receives {@link Palette} information in its callback.
* @see Target
*/
public static abstract class PaletteTarget implements Target {
/**
* Callback when an image has been successfully loaded.
* Note: You must not recycle the bitmap.
* @param palette The extracted {@linkplain Palette}
*/
protected abstract void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from, Palette palette);
@Override
public final void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
final Palette palette = getPalette(bitmap);
onBitmapLoaded(bitmap, from, palette);
}
}
public static Palette getPalette(Bitmap bitmap) {
return CACHE.get(bitmap);
}
/**
* A {@link Callback} that receives {@link Palette} information in its callback.
* @see Callback
*/
public static abstract class PaletteCallback implements Callback {
private WeakReference<ImageView> mImageView;
public PaletteCallback(@NonNull ImageView imageView) {
mImageView = new WeakReference<>(imageView);
}
protected abstract void onSuccess(Palette palette);
@Override public final void onSuccess() {
if (getImageView() == null) {
return;
}
final Bitmap bitmap = ((BitmapDrawable) getImageView().getDrawable()).getBitmap(); // Ew!
final Palette palette = getPalette(bitmap);
onSuccess(palette);
}
private ImageView getImageView() {
return mImageView.get();
}
}
/**
* Obtains a {@link PaletteTransformation} to extract {@link Palette} information.
* @return A {@link PaletteTransformation}
*/
public static PaletteTransformation instance() {
return INSTANCE;
}
//# Transformation Contract
@Override public final Bitmap transform(Bitmap source) {
final Palette palette = Palette.from(source).generate();
CACHE.put(source, palette);
return source;
}
@Override public String key() {
return ""; // Stable key for all requests. An unfortunate requirement.
}
private PaletteTransformation() { }
}
package com.commit451.gitlab.util;
 
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.support.customtabs.CustomTabsIntent;
import android.support.design.widget.Snackbar;
import android.text.TextUtils;
import android.view.View;
 
import com.commit451.easel.Easel;
import com.commit451.gitlab.R;
import com.commit451.gitlab.customtabs.BrowserFallback;
import com.commit451.gitlab.customtabs.CustomTabsActivityHelper;
 
/**
* All the things to do with intents
Loading
Loading
@@ -14,19 +20,16 @@ import com.commit451.gitlab.R;
*/
public class IntentUtil {
 
public static void openPage(View root, Uri url) {
if (url == null || url.equals(Uri.EMPTY)) {
public static void openPage(Activity activity, String url) {
if (TextUtils.isEmpty(url)) {
return;
}
 
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(url);
try {
root.getContext().startActivity(i);
} catch (ActivityNotFoundException e) {
Snackbar.make(root, R.string.error_no_browser, Snackbar.LENGTH_SHORT)
.show();
}
CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder();
intentBuilder.setToolbarColor(Easel.getThemeAttrColor(activity, R.attr.colorPrimary));
intentBuilder.setStartAnimations(activity, R.anim.fade_in, R.anim.do_nothing);
intentBuilder.setExitAnimations(activity, R.anim.do_nothing, R.anim.fade_out);
CustomTabsActivityHelper.openCustomTab(activity, intentBuilder.build(), Uri.parse(url), new BrowserFallback());
}
 
public static void share(View root, Uri url) {
Loading
Loading
Loading
Loading
@@ -19,4 +19,11 @@ public class KeyboardUtil {
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
public static void showKeyboard(Activity activity, View view) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
}
}
}
Loading
Loading
@@ -45,6 +45,10 @@ public class NavigationManager {
activity.startActivity(ProjectActivity.newInstance(activity, project));
}
 
public static void navigateToProject(Activity activity, long projectId) {
activity.startActivity(ProjectActivity.newInstance(activity, projectId));
}
public static void navigateToProjects(Activity activity) {
activity.startActivity(ProjectsActivity.newInstance(activity));
}
Loading
Loading
@@ -61,9 +65,13 @@ public class NavigationManager {
activity.startActivity(SearchActivity.newInstance(activity));
}
 
public static void navigateToUser(Activity activity, UserBasic user) {
navigateToUser(activity, null, user);
}
public static void navigateToUser(Activity activity, ImageView profileImage, UserBasic user) {
Intent intent = UserActivity.newInstance(activity, user);
if (Build.VERSION.SDK_INT >= 21) {
if (Build.VERSION.SDK_INT >= 21 && profileImage != null) {
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(activity, profileImage, activity.getString(R.string.transition_user));
activity.startActivity(intent, options.toBundle());
Loading
Loading
@@ -105,12 +113,13 @@ public class NavigationManager {
}
 
public static void navigateToAddProjectMember(Activity activity, View fab, long projectId) {
Intent intent = AddUserActivity.newInstance(activity, projectId);
Intent intent = AddUserActivity.newIntent(activity, projectId);
startMorphActivity(activity, fab, intent);
}
 
public static void navigateToAddGroupMember(Activity activity, Group group) {
activity.startActivity(AddUserActivity.newIntent(activity, group));
public static void navigateToAddGroupMember(Activity activity, View fab, Group group) {
Intent intent = AddUserActivity.newIntent(activity, group);
startMorphActivity(activity, fab, intent);
}
 
public static void navigateToEditIssue(Activity activity, View fab, Project project, Issue issue) {
Loading
Loading
package com.commit451.gitlab.util;
 
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
Loading
Loading
@@ -13,18 +12,18 @@ import com.squareup.picasso.Picasso;
import in.uncod.android.bypass.Bypass;
import timber.log.Timber;
 
// credits: http://stackoverflow.com/a/25530488/504611
/**
* Original credits: http://stackoverflow.com/a/25530488/504611
*/
public class PicassoImageGetter implements Bypass.ImageGetter {
 
private final Resources resources;
private final Picasso pablo;
private final TextView textView;
private final Picasso mPicasso;
private final TextView mTextView;
private int maxWidth = -1;
 
public PicassoImageGetter(final TextView textView, final Resources resources, final Picasso pablo) {
this.textView = textView;
this.resources = resources;
this.pablo = pablo;
public PicassoImageGetter(final TextView textView, final Picasso picasso) {
mTextView = textView;
mPicasso = picasso;
}
 
@Override
Loading
Loading
@@ -38,7 +37,7 @@ public class PicassoImageGetter implements Bypass.ImageGetter {
@Override
protected Bitmap doInBackground(final Void... meh) {
try {
return pablo.load(finalSource).get();
return mPicasso.load(finalSource).get();
} catch (Exception e) {
return null;
}
Loading
Loading
@@ -48,14 +47,14 @@ public class PicassoImageGetter implements Bypass.ImageGetter {
protected void onPostExecute(final Bitmap bitmap) {
try {
if (maxWidth == -1) {
int horizontalPadding = textView.getPaddingLeft() + textView.getPaddingRight();
maxWidth = textView.getMeasuredWidth() - horizontalPadding;
int horizontalPadding = mTextView.getPaddingLeft() + mTextView.getPaddingRight();
maxWidth = mTextView.getMeasuredWidth() - horizontalPadding;
if (maxWidth == 0) {
maxWidth = Integer.MAX_VALUE;
}
}
 
final BitmapDrawable drawable = new BitmapDrawable(resources, bitmap);
final BitmapDrawable drawable = new BitmapDrawable(mTextView.getResources(), bitmap);
final double aspectRatio = 1.0 * drawable.getIntrinsicWidth() / drawable.getIntrinsicHeight();
final int width = Math.min(maxWidth, drawable.getIntrinsicWidth());
final int height = (int) (width / aspectRatio);
Loading
Loading
@@ -65,7 +64,7 @@ public class PicassoImageGetter implements Bypass.ImageGetter {
result.setDrawable(drawable);
result.setBounds(0, 0, width, height);
 
textView.setText(textView.getText()); // invalidate() doesn't work correctly...
mTextView.setText(mTextView.getText()); // invalidate() doesn't work correctly...
} catch (Exception e) {
Timber.e(e, null);
}
Loading
Loading
@@ -76,7 +75,7 @@ public class PicassoImageGetter implements Bypass.ImageGetter {
return result;
}
 
static class BitmapDrawablePlaceHolder extends BitmapDrawable {
private static class BitmapDrawablePlaceHolder extends BitmapDrawable {
 
protected Drawable drawable;
 
Loading
Loading
Loading
Loading
@@ -4,7 +4,6 @@ import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.support.design.widget.NavigationView;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
Loading
Loading
@@ -14,7 +13,8 @@ import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
 
import com.commit451.gitlab.GitLabApp;
import com.commit451.easel.Easel;
import com.commit451.gitlab.LabCoatApp;
import com.commit451.gitlab.R;
import com.commit451.gitlab.activity.GroupsActivity;
import com.commit451.gitlab.activity.ProjectsActivity;
Loading
Loading
@@ -26,6 +26,7 @@ import com.commit451.gitlab.event.LoginEvent;
import com.commit451.gitlab.event.ReloadDataEvent;
import com.commit451.gitlab.model.Account;
import com.commit451.gitlab.model.api.UserFull;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.ImageUtil;
import com.commit451.gitlab.util.NavigationManager;
import com.squareup.otto.Subscribe;
Loading
Loading
@@ -69,7 +70,7 @@ public class GitLabNavigationView extends NavigationView {
((Activity) getContext()).finish();
((Activity)getContext()).overridePendingTransition(R.anim.fade_in, R.anim.do_nothing);
}
GitLabApp.bus().post(new CloseDrawerEvent());
LabCoatApp.bus().post(new CloseDrawerEvent());
return true;
case R.id.nav_groups:
if (getContext() instanceof GroupsActivity) {
Loading
Loading
@@ -79,10 +80,10 @@ public class GitLabNavigationView extends NavigationView {
((Activity) getContext()).finish();
((Activity)getContext()).overridePendingTransition(R.anim.fade_in, R.anim.do_nothing);
}
GitLabApp.bus().post(new CloseDrawerEvent());
LabCoatApp.bus().post(new CloseDrawerEvent());
return true;
case R.id.nav_about:
GitLabApp.bus().post(new CloseDrawerEvent());
LabCoatApp.bus().post(new CloseDrawerEvent());
NavigationManager.navigateToAbout((Activity) getContext());
return true;
}
Loading
Loading
@@ -100,7 +101,7 @@ public class GitLabNavigationView extends NavigationView {
public void onAddAccountClicked() {
NavigationManager.navigateToLogin((Activity) getContext());
toggleAccounts();
GitLabApp.bus().post(new CloseDrawerEvent());
LabCoatApp.bus().post(new CloseDrawerEvent());
}
 
@Override
Loading
Loading
@@ -140,6 +141,11 @@ public class GitLabNavigationView extends NavigationView {
}
};
 
@OnClick(R.id.profile_image)
public void onUserImageClick(ImageView imageView) {
NavigationManager.navigateToUser((Activity) getContext(), imageView, GitLabClient.getAccount().getUser());
}
@OnClick(R.id.drawer_header)
public void onHeaderClick() {
toggleAccounts();
Loading
Loading
@@ -162,11 +168,12 @@ public class GitLabNavigationView extends NavigationView {
 
private void init() {
mEventReceiver = new EventReceiver();
GitLabApp.bus().register(mEventReceiver);
LabCoatApp.bus().register(mEventReceiver);
int colorPrimary = Easel.getThemeAttrColor(getContext(), R.attr.colorPrimary);
 
setNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
inflateMenu(R.menu.navigation);
setBackgroundColor(ContextCompat.getColor(getContext(), R.color.window_background_color));
setBackgroundColor(colorPrimary);
View header = inflateHeaderView(R.layout.header_nav_drawer);
ButterKnife.bind(this, header);
 
Loading
Loading
@@ -175,7 +182,7 @@ public class GitLabNavigationView extends NavigationView {
addView(mAccountList);
LayoutParams params = (FrameLayout.LayoutParams) mAccountList.getLayoutParams();
params.setMargins(0, getResources().getDimensionPixelSize(R.dimen.navigation_drawer_header_height), 0, 0);
mAccountList.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.window_background_color));
mAccountList.setBackgroundColor(colorPrimary);
mAccountList.setVisibility(View.GONE);
mAccountAdapter = new AccountsAdapter(getContext(), mAccountsAdapterListener);
mAccountList.setAdapter(mAccountAdapter);
Loading
Loading
@@ -186,7 +193,7 @@ public class GitLabNavigationView extends NavigationView {
 
@Override
protected void onDetachedFromWindow() {
GitLabApp.bus().unregister(mEventReceiver);
LabCoatApp.bus().unregister(mEventReceiver);
super.onDetachedFromWindow();
}
 
Loading
Loading
@@ -230,6 +237,7 @@ public class GitLabNavigationView extends NavigationView {
Uri url = ImageUtil.getAvatarUrl(user, getResources().getDimensionPixelSize(R.dimen.larger_image_size));
GitLabClient.getPicasso()
.load(url)
.transform(new CircleTransformation())
.into(mProfileImage);
}
 
Loading
Loading
@@ -262,8 +270,8 @@ public class GitLabNavigationView extends NavigationView {
Prefs.updateAccount(getContext(), account);
bindUser(account.getUser());
toggleAccounts();
GitLabApp.bus().post(new ReloadDataEvent());
GitLabApp.bus().post(new CloseDrawerEvent());
LabCoatApp.bus().post(new ReloadDataEvent());
LabCoatApp.bus().post(new CloseDrawerEvent());
// Trigger a reload in the adapter so that we will place the accounts
// in the correct order from most recently used
mAccountAdapter.notifyDataSetChanged();
Loading
Loading
Loading
Loading
@@ -11,6 +11,7 @@ import android.widget.TextView;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.Account;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.ImageUtil;
 
import butterknife.Bind;
Loading
Loading
@@ -61,6 +62,7 @@ public class AccountViewHolder extends RecyclerView.ViewHolder{
 
GitLabClient.getPicasso()
.load(ImageUtil.getAvatarUrl(account.getUser(), itemView.getResources().getDimensionPixelSize(R.dimen.user_list_image_size)))
.transform(new CircleTransformation())
.into(mImageView);
}
}
Loading
Loading
@@ -11,6 +11,7 @@ import android.widget.TextView;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.Member;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.ImageUtil;
 
import butterknife.Bind;
Loading
Loading
@@ -45,6 +46,7 @@ public class AssigneeSpinnerViewHolder extends RecyclerView.ViewHolder {
mUsernameView.setText(user.getUsername());
GitLabClient.getPicasso()
.load(ImageUtil.getAvatarUrl(user, itemView.getResources().getDimensionPixelSize(R.dimen.user_list_image_size)))
.transform(new CircleTransformation())
.into(mImageView);
}
}
Loading
Loading
package com.commit451.gitlab.viewHolder;
import android.graphics.drawable.ColorDrawable;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.UserBasic;
import com.commit451.gitlab.util.ImageUtil;
import butterknife.Bind;
import butterknife.ButterKnife;
/**
* Shows an assignee
*/
public class AssigneeViewHolder extends RecyclerView.ViewHolder {
public static AssigneeViewHolder inflate(ViewGroup parent) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_assignee, parent, false);
return new AssigneeViewHolder(view);
}
@Bind(R.id.user_image) ImageView mImageView;
@Bind(R.id.user_username) TextView mUsernameView;
public AssigneeViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
public void bind(@Nullable UserBasic user, int colorSelected, boolean isSelected) {
if (user == null) {
mUsernameView.setText(R.string.no_assignee);
mImageView.setImageResource(R.drawable.ic_assign_24dp);
} else {
mUsernameView.setText(user.getUsername());
GitLabClient.getPicasso()
.load(ImageUtil.getAvatarUrl(user, itemView.getResources().getDimensionPixelSize(R.dimen.user_list_image_size)))
.into(mImageView);
}
((FrameLayout) itemView).setForeground(isSelected ? new ColorDrawable(colorSelected) : null);
}
}
Loading
Loading
@@ -10,6 +10,7 @@ import android.widget.TextView;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.RepositoryCommit;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.DateUtils;
import com.commit451.gitlab.util.ImageUtil;
 
Loading
Loading
@@ -40,6 +41,7 @@ public class CommitViewHolder extends RecyclerView.ViewHolder {
public void bind(RepositoryCommit commit) {
GitLabClient.getPicasso()
.load(ImageUtil.getAvatarUrl(commit.getAuthorEmail(), itemView.getResources().getDimensionPixelSize(R.dimen.image_size)))
.transform(new CircleTransformation())
.into(mImageView);
 
mMessageView.setText(commit.getTitle());
Loading
Loading
Loading
Loading
@@ -11,6 +11,7 @@ import android.widget.TextView;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.rss.Entry;
import com.commit451.gitlab.transformation.CircleTransformation;
 
import butterknife.Bind;
import butterknife.ButterKnife;
Loading
Loading
@@ -26,9 +27,9 @@ public class FeedEntryViewHolder extends RecyclerView.ViewHolder {
return new FeedEntryViewHolder(view);
}
 
@Bind(R.id.entry_image) ImageView mImageView;
@Bind(R.id.entry_title) TextView mTitleView;
@Bind(R.id.entry_summary) TextView mSummaryView;
@Bind(R.id.image) ImageView mImageView;
@Bind(R.id.title) TextView mTitleView;
@Bind(R.id.description) TextView mSummaryView;
 
public FeedEntryViewHolder(View view) {
super(view);
Loading
Loading
@@ -38,6 +39,7 @@ public class FeedEntryViewHolder extends RecyclerView.ViewHolder {
public void bind(Entry entry) {
GitLabClient.getPicasso()
.load(entry.getThumbnail().getUrl())
.transform(new CircleTransformation())
.into(mImageView);
 
mTitleView.setText(Html.fromHtml(entry.getTitle()));
Loading
Loading
Loading
Loading
@@ -12,6 +12,7 @@ import android.widget.TextView;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.Issue;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.DateUtils;
import com.commit451.gitlab.util.ImageUtil;
 
Loading
Loading
@@ -33,6 +34,8 @@ public class IssueHeaderViewHolder extends RecyclerView.ViewHolder {
@Bind(R.id.description) TextView mDescriptionView;
@Bind(R.id.author_image) ImageView mAuthorImageView;
@Bind(R.id.author) TextView mAuthorView;
@Bind(R.id.milestone_root) ViewGroup mMilestoneRoot;
@Bind(R.id.milestone_text) TextView mMilestoneText;
 
private final Bypass mBypass;
 
Loading
Loading
@@ -53,6 +56,7 @@ public class IssueHeaderViewHolder extends RecyclerView.ViewHolder {
 
GitLabClient.getPicasso()
.load(ImageUtil.getAvatarUrl(issue.getAuthor(), itemView.getResources().getDimensionPixelSize(R.dimen.image_size)))
.transform(new CircleTransformation())
.into(mAuthorImageView);
 
String author = "";
Loading
Loading
@@ -64,5 +68,11 @@ public class IssueHeaderViewHolder extends RecyclerView.ViewHolder {
author = author + " " + DateUtils.getRelativeTimeSpanString(itemView.getContext(), issue.getCreatedAt());
}
mAuthorView.setText(author);
if (issue.getMilestone() != null) {
mMilestoneRoot.setVisibility(View.VISIBLE);
mMilestoneText.setText(issue.getMilestone().getTitle());
} else {
mMilestoneRoot.setVisibility(View.GONE);
}
}
}
\ No newline at end of file
Loading
Loading
@@ -10,6 +10,7 @@ import android.widget.TextView;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.Issue;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.DateUtils;
import com.commit451.gitlab.util.ImageUtil;
 
Loading
Loading
@@ -37,16 +38,17 @@ public class IssueViewHolder extends RecyclerView.ViewHolder {
}
 
public void bind(Issue issue) {
long tempId = issue.getIid();
if (tempId < 1) {
tempId = issue.getId();
}
 
GitLabClient.getPicasso()
.load(ImageUtil.getAvatarUrl(issue.getAssignee(), itemView.getResources().getDimensionPixelSize(R.dimen.image_size)))
.into(mImageView);
if (issue.getAssignee() != null) {
GitLabClient.getPicasso()
.load(ImageUtil.getAvatarUrl(issue.getAssignee(), itemView.getResources().getDimensionPixelSize(R.dimen.image_size)))
.transform(new CircleTransformation())
.into(mImageView);
} else {
mImageView.setImageBitmap(null);
}
 
mMessageView.setText("#" + tempId + ": " + issue.getTitle());
mMessageView.setText(issue.getTitle());
 
String time = "";
if (issue.getCreatedAt() != null) {
Loading
Loading
@@ -56,7 +58,13 @@ public class IssueViewHolder extends RecyclerView.ViewHolder {
if (issue.getAuthor() != null) {
author += issue.getAuthor().getUsername();
}
String id = "";
long issueId = issue.getIid();
if (issueId < 1) {
issueId = issue.getId();
}
id = "#" + issueId;
 
mCreatorView.setText(String.format(itemView.getContext().getString(R.string.created_time), time, author));
mCreatorView.setText(String.format(itemView.getContext().getString(R.string.opened_time), id, time, author));
}
}
Loading
Loading
@@ -12,8 +12,10 @@ import android.widget.TextView;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.MergeRequest;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.DateUtils;
import com.commit451.gitlab.util.ImageUtil;
import com.commit451.gitlab.util.PicassoImageGetter;
 
import butterknife.Bind;
import butterknife.ButterKnife;
Loading
Loading
@@ -34,25 +36,23 @@ public class MergeRequestHeaderViewHolder extends RecyclerView.ViewHolder {
@Bind(R.id.author_image) ImageView mAuthorImageView;
@Bind(R.id.author) TextView mAuthorView;
 
private final Bypass mBypass;
public MergeRequestHeaderViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
mBypass = new Bypass(view.getContext());
}
 
public void bind(MergeRequest mergeRequest) {
public void bind(MergeRequest mergeRequest, Bypass bypass) {
if (TextUtils.isEmpty(mergeRequest.getDescription())) {
mDescriptionView.setVisibility(View.GONE);
} else {
mDescriptionView.setVisibility(View.VISIBLE);
mDescriptionView.setText(mBypass.markdownToSpannable(mergeRequest.getDescription()));
mDescriptionView.setText(bypass.markdownToSpannable(mergeRequest.getDescription(), new PicassoImageGetter(mDescriptionView, GitLabClient.getPicasso())));
mDescriptionView.setMovementMethod(LinkMovementMethod.getInstance());
}
 
GitLabClient.getPicasso()
.load(ImageUtil.getAvatarUrl(mergeRequest.getAuthor(), itemView.getResources().getDimensionPixelSize(R.dimen.image_size)))
.transform(new CircleTransformation())
.into(mAuthorImageView);
 
String author = "";
Loading
Loading
Loading
Loading
@@ -10,6 +10,7 @@ import android.widget.TextView;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.MergeRequest;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.ImageUtil;
 
import butterknife.Bind;
Loading
Loading
@@ -38,6 +39,7 @@ public class MergeRequestViewHolder extends RecyclerView.ViewHolder {
public void bind(MergeRequest item) {
GitLabClient.getPicasso()
.load(ImageUtil.getAvatarUrl(item.getAuthor(), itemView.getResources().getDimensionPixelSize(R.dimen.image_size)))
.transform(new CircleTransformation())
.into(mImageView);
 
if (item.getAuthor() != null) {
Loading
Loading
Loading
Loading
@@ -11,8 +11,10 @@ import android.widget.TextView;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.Note;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.DateUtils;
import com.commit451.gitlab.util.ImageUtil;
import com.commit451.gitlab.util.PicassoImageGetter;
 
import butterknife.Bind;
import butterknife.ButterKnife;
Loading
Loading
@@ -35,15 +37,12 @@ public class NoteViewHolder extends RecyclerView.ViewHolder {
@Bind(R.id.creation_date) TextView mCreationDateView;
@Bind(R.id.icon) ImageView mIconView;
 
private final Bypass mBypass;
public NoteViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
mBypass = new Bypass(view.getContext());
}
 
public void bind(Note note) {
public void bind(Note note, Bypass bypass) {
if (note.getCreatedAt() != null) {
mCreationDateView.setText(DateUtils.getRelativeTimeSpanString(itemView.getContext(), note.getCreatedAt()));
}
Loading
Loading
@@ -57,11 +56,12 @@ public class NoteViewHolder extends RecyclerView.ViewHolder {
summary = note.getBody();
}
 
mSummaryView.setText(mBypass.markdownToSpannable(summary));
mSummaryView.setText(bypass.markdownToSpannable(summary, new PicassoImageGetter(mSummaryView, GitLabClient.getPicasso())));
mSummaryView.setMovementMethod(LinkMovementMethod.getInstance());
 
GitLabClient.getPicasso()
.load(ImageUtil.getAvatarUrl(note.getAuthor(), itemView.getResources().getDimensionPixelSize(R.dimen.image_size)))
.transform(new CircleTransformation())
.into(mIconView);
}
}
Loading
Loading
@@ -13,6 +13,7 @@ import android.widget.TextView;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.Project;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.github.ivbaranov.mli.MaterialLetterIcon;
 
import butterknife.Bind;
Loading
Loading
@@ -47,6 +48,7 @@ public class ProjectViewHolder extends RecyclerView.ViewHolder {
mImageView.setVisibility(View.VISIBLE);
GitLabClient.getPicasso()
.load(project.getAvatarUrl())
.transform(new CircleTransformation())
.into(mImageView);
} else {
mImageView.setVisibility(View.GONE);
Loading
Loading
app/src/main/res/drawable-xxxhdpi/ic_fork.png

4.85 KiB

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<stroke
android:width="1dip"
android:color="#CCCCCC" />
</shape>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment