This commit is contained in:
Lyndon
2018-06-15 18:39:03 +02:00
parent c8e9e934d5
commit 89d32aa759
28 changed files with 206 additions and 262 deletions

View File

@@ -6,6 +6,7 @@ buildscript {
repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
maven { url 'https://maven.google.com' }
}
dependencies {
@@ -81,22 +82,17 @@ dependencies {
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
// Android support libraries
// Butter Knife
// Dagger
// Rx Java
// Retrofit
// OkHttp
// Glide
// Circle ImageView
implementation('com.github.bumptech.glide:glide:4.7.1') {
exclude group: 'com.android.support'
}
implementation('com.crashlytics.sdk.android:crashlytics:2.6.6@aar') {
transitive = true
}
// Secure Preferences
// Firebase
// emojis
// circle progress
// event bus
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.jakewharton:butterknife:8.8.1'
@@ -109,8 +105,8 @@ dependencies {
implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
implementation 'com.squareup.okhttp3:okhttp:3.7.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.4.1'
implementation 'com.github.bumptech.glide:glide:3.7.0'
implementation 'de.hdodenhof:circleimageview:2.1.0'
//implementation 'de.hdodenhof:circleimageview:2.1.0'
implementation 'com.scottyab:secure-preferences-lib:0.1.4'
implementation 'com.google.firebase:firebase-messaging:17.0.0'
implementation 'com.google.firebase:firebase-core:16.0.0'

View File

@@ -5,6 +5,7 @@ import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.spongycastle.asn1.pkcs.RSAPublicKey;
import org.spongycastle.openssl.PEMWriter;
import de.beyondsoft.ownchat.BewoplanerApplication;
@@ -106,7 +107,7 @@ public class ApiModule {
Request request = chain.request();
HttpUrl url = request.url();
Log.d(LOG_TAG_NETWORK_INTERCEPTOR, "Pinning certificate for URL: " + url);
//Log.d(LOG_TAG_NETWORK_INTERCEPTOR, "Pinning certificate for URL: " + url);
List<Certificate> certificates = chain.connection().handshake().peerCertificates();
@@ -117,6 +118,7 @@ public class ApiModule {
X509Certificate x509 = (X509Certificate) cert;
String name = x509.getIssuerX500Principal().getName();
String serialNumber = x509.getSerialNumber().toString();
StringWriter writer = new StringWriter();
@@ -128,14 +130,21 @@ public class ApiModule {
String writerAsString = writer.toString();
String base64EncodedKey = writerAsString.split("-----BEGIN PUBLIC KEY-----")[1].split("-----END PUBLIC KEY-----")[0].replaceAll(System.getProperty("line.separator"), "");
if(name.contains("O=Let's Encrypt")) {
Log.i(LOG_TAG_NETWORK_INTERCEPTOR, "\nSSL certificates:\nName: " + name + "\nSerial number: " + serialNumber + "\nUrl: " + url + "\nPublic key: " + base64EncodedKey);
}
if(name.contains("O=Let's Encrypt") && base64EncodedKey.equals(Constants.PUBLIC_KEY)) {
isVerified = true;
break;
} else {
//Log.e(LOG_TAG_NETWORK_INTERCEPTOR, "\nSSL certificates are invalid:\nName: " + name + "\\nUrl: " + url + "\n Expected public key: " + Constants.PUBLIC_KEY + "\nActual public key: " + base64EncodedKey);
}
}
}
if(!isVerified) {
if(!isVerified && !BuildConfig.DEBUG) {
Log.e(LOG_TAG_NETWORK_INTERCEPTOR, "SSL certificates are invalid!");
throw new SSLHandshakeException("Invalid SSL certificates");
}

View File

@@ -16,7 +16,6 @@ import com.bumptech.glide.RequestManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import de.beyondsoft.ownchat.R;
@@ -27,10 +26,6 @@ import de.beyondsoft.ownchat.filepicker.models.Media;
import de.beyondsoft.ownchat.filepicker.utils.AndroidLifecycleUtils;
import de.beyondsoft.ownchat.filepicker.utils.MediaStoreHelper;
/**
* Created by Lyndon on 27-Oct-2017.
*/
public class MediaDetailsActivity extends BaseFilePickerActivity implements FileAdapterListener {
private static final int SCROLL_THRESHOLD = 30;
private RecyclerView recyclerView;
@@ -129,7 +124,7 @@ public class MediaDetailsActivity extends BaseFilePickerActivity implements File
photoGridAdapter.setData(medias);
photoGridAdapter.notifyDataSetChanged();
} else {
photoGridAdapter = new ImageGridAdapter(this, mGlideRequestManager, medias,PickerManager.getInstance().getSelectedPhotos(),false, this);
photoGridAdapter = new ImageGridAdapter(this, medias,PickerManager.getInstance().getSelectedPhotos(),false, this);
recyclerView.setAdapter(photoGridAdapter);
}

View File

@@ -1,6 +1,7 @@
package de.beyondsoft.ownchat.filepicker.adapters;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
@@ -10,13 +11,6 @@ import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.RequestManager;
import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.load.resource.gif.GifDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import java.io.File;
import java.util.ArrayList;
@@ -24,15 +18,11 @@ import de.beyondsoft.ownchat.R;
import de.beyondsoft.ownchat.filepicker.PickerManager;
import de.beyondsoft.ownchat.filepicker.models.ImageDirectory;
import de.beyondsoft.ownchat.filepicker.utils.AndroidLifecycleUtils;
import de.beyondsoft.ownchat.utils.ui.GlideApp;
/**
* Created by Lyndon on 26-Oct-2017.
*/
public class FolderGridAdapter extends SelectableAdapter<FolderGridAdapter.ImageViewHolder, ImageDirectory> implements RequestListener<File, GlideDrawable> {
public class FolderGridAdapter extends SelectableAdapter<FolderGridAdapter.ImageViewHolder, ImageDirectory> {
private final Context context;
private final RequestManager glide;
private final boolean showCamera;
private int imageSize;
@@ -40,36 +30,21 @@ public class FolderGridAdapter extends SelectableAdapter<FolderGridAdapter.Image
private final static int ITEM_TYPE_PHOTO = 101;
private FolderGridAdapterListener folderGridAdapterListener;
@Override
public boolean onException(Exception e, File model, Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, File model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
if(resource.isAnimated()) {
target.onResourceReady(new GlideBitmapDrawable(null, ((GifDrawable) resource).getFirstFrame()), null);
return true;
}
return false;
}
public interface FolderGridAdapterListener{
void onCameraClicked();
void onFolderClicked(ImageDirectory photoDirectory);
}
public FolderGridAdapter(Context context, RequestManager requestManager, ArrayList<ImageDirectory> photos, ArrayList<String> selectedPaths, boolean showCamera) {
public FolderGridAdapter(Context context, ArrayList<ImageDirectory> photos, ArrayList<String> selectedPaths, boolean showCamera) {
super(photos, selectedPaths);
this.context = context;
this.glide = requestManager;
this.showCamera = showCamera;
setColumnNumber(context,3);
}
@NonNull
@Override
public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(context).inflate(R.layout.item_folder_layout, parent, false);
return new ImageViewHolder(itemView);
@@ -85,15 +60,16 @@ public class FolderGridAdapter extends SelectableAdapter<FolderGridAdapter.Image
}
@Override
public void onBindViewHolder(final ImageViewHolder holder, int position) {
public void onBindViewHolder(@NonNull final ImageViewHolder holder, int position) {
if(getItemViewType(position) == ITEM_TYPE_PHOTO) {
final ImageDirectory photoDirectory = getItems().get(showCamera?position-1:position);
if(AndroidLifecycleUtils.canLoadImage(holder.imageView.getContext())) {
glide.load(new File(photoDirectory.getCoverPath()))
GlideApp.with(holder.imageView.getContext())
.asBitmap()
.load(new File(photoDirectory.getCoverPath()))
.override(imageSize, imageSize)
.thumbnail(0.25f)
.listener(this)
.thumbnail(.25f)
.into(holder.imageView);
}
@@ -123,7 +99,9 @@ public class FolderGridAdapter extends SelectableAdapter<FolderGridAdapter.Image
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics metrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(metrics);
if(wm != null) {
wm.getDefaultDisplay().getMetrics(metrics);
}
int widthPixels = metrics.widthPixels;
imageSize = widthPixels / columnNum;

View File

@@ -1,6 +1,8 @@
package de.beyondsoft.ownchat.filepicker.adapters;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
@@ -10,11 +12,9 @@ import android.view.WindowManager;
import android.widget.CheckBox;
import android.widget.ImageView;
import com.bumptech.glide.RequestManager;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.load.resource.gif.GifDrawable;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
@@ -26,14 +26,10 @@ import de.beyondsoft.ownchat.filepicker.FilePickerConst;
import de.beyondsoft.ownchat.filepicker.PickerManager;
import de.beyondsoft.ownchat.filepicker.models.Media;
import de.beyondsoft.ownchat.filepicker.utils.AndroidLifecycleUtils;
import de.beyondsoft.ownchat.utils.ui.GlideApp;
/**
* Created by Lyndon on 26-Oct-2017.
*/
public class ImageGridAdapter extends SelectableAdapter<ImageGridAdapter.ImageViewHolder, Media> implements RequestListener<File, GlideDrawable> {
public class ImageGridAdapter extends SelectableAdapter<ImageGridAdapter.ImageViewHolder, Media> {
private final Context context;
private final RequestManager glide;
private final boolean showCamera;
private final FileAdapterListener mListener;
private int imageSize;
@@ -42,10 +38,9 @@ public class ImageGridAdapter extends SelectableAdapter<ImageGridAdapter.ImageVi
private final static int ITEM_TYPE_PHOTO = 101;
private View.OnClickListener cameraOnClickListener;
public ImageGridAdapter(Context context, RequestManager requestManager, ArrayList<Media> medias, ArrayList<String> selectedPaths, boolean showCamera, FileAdapterListener photoGridAdapterListener) {
public ImageGridAdapter(Context context, ArrayList<Media> medias, ArrayList<String> selectedPaths, boolean showCamera, FileAdapterListener photoGridAdapterListener) {
super(medias, selectedPaths);
this.context = context;
this.glide = requestManager;
this.showCamera = showCamera;
this.mListener = photoGridAdapterListener;
setColumnNumber(context,4);
@@ -73,10 +68,11 @@ public class ImageGridAdapter extends SelectableAdapter<ImageGridAdapter.ImageVi
final Media media = getItems().get(showCamera ? position - 1 : position);
if(AndroidLifecycleUtils.canLoadImage(holder.imageView.getContext())) {
glide.load(new File(media.getPath()))
GlideApp.with(holder.imageView.getContext())
.asBitmap()
.load(new File(media.getPath()))
.override(imageSize, imageSize)
.thumbnail(0.25f)
.listener(this)
.thumbnail(.25f)
.into(holder.imageView);
}
@@ -157,21 +153,6 @@ public class ImageGridAdapter extends SelectableAdapter<ImageGridAdapter.ImageVi
this.cameraOnClickListener = onClickListener;
}
@Override
public boolean onException(Exception e, File model, Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, File model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
if(resource.isAnimated()) {
target.onResourceReady(new GlideBitmapDrawable(null, ((GifDrawable) resource).getFirstFrame()), null);
return true;
}
return false;
}
static class ImageViewHolder extends RecyclerView.ViewHolder {
CheckBox checkBox;

View File

@@ -171,7 +171,7 @@ public class MediaDetailPickerFragment extends BaseFragment implements FileAdapt
photoGridAdapter.setData(medias);
photoGridAdapter.notifyDataSetChanged();
} else {
photoGridAdapter = new ImageGridAdapter(getActivity(), mGlideRequestManager, medias, PickerManager.getInstance().getSelectedPhotos(),(fileType==FilePickerConst.MEDIA_TYPE_IMAGE) && PickerManager.getInstance().isEnableCamera(), this);
photoGridAdapter = new ImageGridAdapter(getActivity(), medias, PickerManager.getInstance().getSelectedPhotos(),(fileType==FilePickerConst.MEDIA_TYPE_IMAGE) && PickerManager.getInstance().isEnableCamera(), this);
recyclerView.setAdapter(photoGridAdapter);
photoGridAdapter.setCameraListener(v -> {
try {

View File

@@ -183,7 +183,7 @@ public class MediaFolderPickerFragment extends BaseFragment implements FolderGri
photoGridAdapter.setData(dirs);
photoGridAdapter.notifyDataSetChanged();
} else {
photoGridAdapter = new FolderGridAdapter(getActivity(), mGlideRequestManager, (ArrayList<ImageDirectory>) dirs, null, (fileType== FilePickerConst.MEDIA_TYPE_IMAGE) && PickerManager.getInstance().isEnableCamera());
photoGridAdapter = new FolderGridAdapter(getActivity(), (ArrayList<ImageDirectory>) dirs, null, (fileType== FilePickerConst.MEDIA_TYPE_IMAGE) && PickerManager.getInstance().isEnableCamera());
recyclerView.setAdapter(photoGridAdapter);
photoGridAdapter.setFolderGridAdapterListener(this);

View File

@@ -1,16 +1,5 @@
package de.beyondsoft.ownchat.page.chat;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.github.lzyzsd.circleprogress.DonutProgress;
import butterknife.OnItemLongClick;
import butterknife.OnLongClick;
import de.beyondsoft.ownchat.R;
import de.beyondsoft.ownchat.model.Message;
import de.beyondsoft.ownchat.utils.DateUtils;
import de.beyondsoft.ownchat.utils.ui.ViewUtils;
import android.net.Uri;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
@@ -19,9 +8,11 @@ import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.github.lzyzsd.circleprogress.DonutProgress;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -33,11 +24,13 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Optional;
import de.beyondsoft.ownchat.R;
import de.beyondsoft.ownchat.model.Message;
import de.beyondsoft.ownchat.utils.DateUtils;
import de.beyondsoft.ownchat.utils.ui.GlideApp;
import de.beyondsoft.ownchat.utils.ui.ViewUtils;
import hani.momanii.supernova_emoji_library.Helper.EmojiconTextView;
/**
* Created by Rares Teodorescu on 21/02/2017.
*/
abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
final static int DATE_TYPE = 0;
@@ -76,17 +69,17 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
mLastDay = Calendar.getInstance();
mIsRetrying = false;
if (!messages.isEmpty()) {
if(!messages.isEmpty()) {
mPositionOffset.add(0);
mDateList.add(new Date(messages.get(0).createdAt));
}
int messageSize = messages.size();
for (int i = 1; i < messageSize; i++) {
for(int i = 1; i < messageSize; i++) {
mCurrentDay.setTimeInMillis(messages.get(i).createdAt);
mLastDay.setTimeInMillis(messages.get(i - 1).createdAt);
if (mCurrentDay.get(Calendar.DAY_OF_YEAR) != mLastDay.get(Calendar.DAY_OF_YEAR)) {
if(mCurrentDay.get(Calendar.DAY_OF_YEAR) != mLastDay.get(Calendar.DAY_OF_YEAR)) {
mDatePositions.add(i + mLastOffset);
mPositionOffset.add(0);
mDateList.add(mLastDay.getTime());
@@ -102,7 +95,7 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
}
void addMessages(ArrayList<Message> messages) {
if (messages == null || messages.isEmpty() || mMessages.equals(messages)) {
if(messages == null || messages.isEmpty() || mMessages.equals(messages)) {
return;
}
@@ -112,7 +105,7 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(messages.get(0).createdAt);
if (mCurrentDay.get(Calendar.DAY_OF_YEAR) != calendar.get(Calendar.DAY_OF_YEAR)) {
if(mCurrentDay.get(Calendar.DAY_OF_YEAR) != calendar.get(Calendar.DAY_OF_YEAR)) {
mDatePositions.add(currentMessagesCount + mLastOffset);
datesInserted++;
mDateList.add(new Date(messages.get(0).createdAt));
@@ -124,11 +117,11 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
mDateList.add(new Date(messages.get(0).createdAt));
int messageSize = messages.size();
for (int i = 1; i < messageSize; i++) {
for(int i = 1; i < messageSize; i++) {
mCurrentDay.setTimeInMillis(messages.get(i).createdAt);
mLastDay.setTimeInMillis(messages.get(i - 1).createdAt);
if (mCurrentDay.get(Calendar.DAY_OF_YEAR) != mLastDay.get(Calendar.DAY_OF_YEAR)) {
if(mCurrentDay.get(Calendar.DAY_OF_YEAR) != mLastDay.get(Calendar.DAY_OF_YEAR)) {
mDatePositions.add(currentMessagesCount + mLastOffset + i);
datesInserted++;
mPositionOffset.add(0);
@@ -160,7 +153,7 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
}
void addMessage(Message message) {
if (mMessages.contains(message)) {
if(mMessages.contains(message)) {
return;
}
@@ -172,14 +165,14 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
Calendar lastDay = Calendar.getInstance();
if (mMessages.size() > 1) {
if(mMessages.size() > 1) {
lastDay.setTimeInMillis(mMessages.get(1).createdAt);
}
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(message.createdAt);
if (calendar.get(Calendar.DAY_OF_YEAR) != lastDay.get(Calendar.DAY_OF_YEAR)) {
if(calendar.get(Calendar.DAY_OF_YEAR) != lastDay.get(Calendar.DAY_OF_YEAR)) {
// New date inserted
setMessages(new ArrayList<>(mMessages));
return;
@@ -200,12 +193,12 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
List<Integer> currentDatePositions = new ArrayList<>();
boolean newDateAdded = false;
if (calendar.get(Calendar.DAY_OF_YEAR) != lastDay.get(Calendar.DAY_OF_YEAR)) {
if(calendar.get(Calendar.DAY_OF_YEAR) != lastDay.get(Calendar.DAY_OF_YEAR)) {
currentDatePositions.add(1);
newDateAdded = true;
}
for (int i = 0, size = mDatePositions.size(); i < size; i++) {
for(int i = 0, size = mDatePositions.size(); i < size; i++) {
currentDatePositions.add(mDatePositions.get(i) + (newDateAdded ? 2 : 1));
}
@@ -218,7 +211,7 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
void setLoading(boolean loading) {
mIsLoading = loading;
if (loading) {
if(loading) {
notifyItemRangeInserted(getItemCount(), 1);
} else {
notifyItemRemoved(getItemCount() - 1);
@@ -232,14 +225,14 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
void updateMessage(Message newMessage, String oldMessageId) {
int index = -1;
for (int i = 0; i < mMessages.size(); i++) {
if (oldMessageId.equals(mMessages.get(i).id)) {
for(int i = 0; i < mMessages.size(); i++) {
if(oldMessageId.equals(mMessages.get(i).id)) {
index = i;
break;
}
}
if (index == -1) {
if(index == -1) {
Log.e("BaseChatAdapter", "message not found!! " + newMessage.toString());
return;
}
@@ -250,11 +243,11 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
@Override
public int getItemViewType(int position) {
if (mDatePositions.contains(position)) {
if(mDatePositions.contains(position)) {
return DATE_TYPE;
}
if (position == mMessages.size() + mLastOffset) {
if(position == mMessages.size() + mLastOffset) {
return LOADING_TYPE;
}
@@ -270,9 +263,9 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
mIsRetrying = false;
Message myMessage = null;
int index = -1;
for (int i = 0; i < mMessages.size(); i++) {
for(int i = 0; i < mMessages.size(); i++) {
Message message = mMessages.get(i);
if (messageId.equals(message.id)) {
if(messageId.equals(message.id)) {
index = i;
myMessage = message;
myMessage.status = Message.Status.FAILED;
@@ -280,7 +273,7 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
}
}
if (myMessage == null) {
if(myMessage == null) {
Log.e("BaseChatAdapter", "message not found!! " + messageId);
return;
}
@@ -298,13 +291,13 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
}
private void setMessage(MessageViewHolder viewHolder, Message message, int position, boolean isGroup, boolean isLeft) {
if (isGroup) {
if(isGroup) {
viewHolder.timeTextView.setText(String.format(Locale.getDefault(), "%s | %s", isLeft ? message.senderName : viewHolder.timeTextView.getContext().getString(R.string.chat_you_name), DateUtils.toHourFormatHour(message.createdAt)));
if (TextUtils.isEmpty(message.senderAvatar)) {
if(TextUtils.isEmpty(message.senderAvatar)) {
viewHolder.contactImageView.setImageResource(R.drawable.avatar);
} else {
Glide.with(viewHolder.contactImageView.getContext())
GlideApp.with(viewHolder.contactImageView.getContext())
.load(message.senderAvatar)
.placeholder(R.drawable.avatar)
.diskCacheStrategy(DiskCacheStrategy.ALL)
@@ -314,16 +307,16 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
viewHolder.timeTextView.setText(DateUtils.toHourFormatHour(message.createdAt));
}
if (!TextUtils.isEmpty(message.filePath)) {
if(!TextUtils.isEmpty(message.filePath)) {
viewHolder.messageTextView.setVisibility(View.GONE);
if (mDownloadProgressMap.containsKey(position)) {
if(mDownloadProgressMap.containsKey(position)) {
viewHolder.fileImageView.setVisibility(View.GONE);
viewHolder.donutProgress.setVisibility(View.VISIBLE);
viewHolder.donutProgress.setProgress(mDownloadProgressMap.get(position));
viewHolder.donutProgress.setText(String.format(Locale.getDefault(), "%d %%", mDownloadProgressMap.get(position)));
if (!message.filePath.toLowerCase().endsWith(".png") && !message.filePath.toLowerCase().endsWith(".jpg")) {
if(!message.filePath.toLowerCase().endsWith(".png") && !message.filePath.toLowerCase().endsWith(".jpg")) {
viewHolder.filenameTextView.setVisibility(View.VISIBLE);
viewHolder.filenameTextView.setText(message.originalFilename);
} else {
@@ -335,19 +328,19 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
viewHolder.filenameTextView.setVisibility(View.GONE);
viewHolder.fileImageView.setImageDrawable(null);
Glide.with(viewHolder.fileImageView.getContext())
GlideApp.with(viewHolder.fileImageView.getContext())
.asBitmap()
.load(TextUtils.isEmpty(message.smallerImage) ? message.filePath : message.smallerImage)
.placeholder(R.drawable.document)
.dontAnimate()
.override(500, 500)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(viewHolder.fileImageView);
}
if (!TextUtils.isEmpty(message.message)) {
viewHolder.messageTextView.setVisibility(View.VISIBLE);
viewHolder.messageTextView.setText(message.message);
}
if(!TextUtils.isEmpty(message.message)) {
viewHolder.messageTextView.setVisibility(View.VISIBLE);
viewHolder.messageTextView.setText(message.message);
}
} else {
viewHolder.donutProgress.setVisibility(View.GONE);
viewHolder.fileImageView.setVisibility(View.GONE);

View File

@@ -6,6 +6,7 @@ import de.beyondsoft.ownchat.R;
import de.beyondsoft.ownchat.model.Group;
import de.beyondsoft.ownchat.model.Message;
import de.beyondsoft.ownchat.utils.Constants;
import de.beyondsoft.ownchat.utils.ui.GlideApp;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -110,9 +111,10 @@ public class SingleChatActivity extends BaseChatActivity {
if (TextUtils.isEmpty(mGroup.avatar)) {
mChatImageView.setImageResource(mGroup.onlyEmployees ? de.beyondsoft.ownchat.R.drawable.avatar : R.drawable.avatar_help);
} else {
Glide.with(this).load(mGroup.avatar)
.placeholder(de.beyondsoft.ownchat.R.drawable.avatar)
.dontAnimate()
GlideApp.with(this)
.asBitmap()
.load(mGroup.avatar)
.placeholder(R.drawable.avatar)
.into(mChatImageView);
}
}

View File

@@ -1,12 +1,8 @@
package de.beyondsoft.ownchat.page.chatmembers;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import de.beyondsoft.ownchat.R;
import de.beyondsoft.ownchat.model.User;
import android.content.Intent;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
@@ -16,17 +12,18 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import java.util.ArrayList;
import java.util.Locale;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import de.hdodenhof.circleimageview.CircleImageView;
import de.beyondsoft.ownchat.R;
import de.beyondsoft.ownchat.model.User;
import de.beyondsoft.ownchat.utils.ui.GlideApp;
/**
* Created by imarneanu on 2/24/17.
*/
class ChatMembersAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private ArrayList<User> mUsers;
@@ -35,14 +32,15 @@ class ChatMembersAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
mUsers = users;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_chat_member, parent, false);
return new ContactViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
ContactViewHolder viewHolder = (ContactViewHolder) holder;
User user = mUsers.get(position);
viewHolder.contactTextView.setText(String.format(Locale.getDefault(), "%s %s", user.firstName, user.lastName));
@@ -54,10 +52,11 @@ class ChatMembersAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
return;
}
Glide.with(viewHolder.avatarCircleImageView.getContext())
GlideApp.with(viewHolder.avatarCircleImageView.getContext())
.asBitmap()
.load(user.avatar)
.placeholder(R.drawable.avatar)
.dontAnimate()
.circleCrop()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(viewHolder.avatarCircleImageView);
}
@@ -69,7 +68,7 @@ class ChatMembersAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class ContactViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.chat_member_avatar)
CircleImageView avatarCircleImageView;
ImageView avatarCircleImageView;
@BindView(R.id.chat_member_name)
TextView contactTextView;
@BindView(R.id.chat_member_phone)
@@ -82,9 +81,7 @@ class ChatMembersAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
@OnClick(R.id.chat_member_phone)
void onPhoneClicked() {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel",
mUsers.get(getAdapterPosition()).mobile,
null));
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", mUsers.get(getAdapterPosition()).mobile, null));
phoneImageView.getContext().startActivity(intent);
}
}

View File

@@ -1,13 +1,13 @@
package de.beyondsoft.ownchat.page.contacts;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import de.beyondsoft.ownchat.R;
import de.beyondsoft.ownchat.model.Group;
import de.beyondsoft.ownchat.utils.DateUtils;
import de.beyondsoft.ownchat.utils.ui.GlideApp;
import de.beyondsoft.ownchat.utils.ui.ViewUtils;
import android.graphics.Typeface;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
@@ -19,17 +19,15 @@ import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import java.util.ArrayList;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import de.hdodenhof.circleimageview.CircleImageView;
import hani.momanii.supernova_emoji_library.Helper.EmojiconTextView;
/**
* Created by imarneanu on 2/21/17.
*/
class ContactsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int GROUP_TYPE = 0;
@@ -70,14 +68,15 @@ class ContactsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
return CONTACT_TYPE;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_contact, parent, false);
return new ContactViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
Group group = mGroups.get(position);
ContactViewHolder viewHolder = (ContactViewHolder) holder;
setLastMessage(group, viewHolder);
@@ -100,9 +99,11 @@ class ContactsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
viewHolder.name.setText(group.name);
Glide.with(viewHolder.avatar.getContext()).load(group.avatar)
GlideApp.with(viewHolder.avatar.getContext())
.asBitmap()
.load(group.avatar)
.placeholder(group.onlyEmployees ? R.drawable.avatar_list : R.drawable.avatar_help)
.dontAnimate()
.circleCrop()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(viewHolder.avatar);
}
@@ -153,7 +154,7 @@ class ContactsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class ContactViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.contact_avatar)
CircleImageView avatar;
ImageView avatar;
@BindView(R.id.contact_name)
TextView name;

View File

@@ -1,12 +1,13 @@
package de.beyondsoft.ownchat.page.fileconfirmation;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
@@ -14,35 +15,30 @@ import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.GlideDrawableImageViewTarget;
import com.bumptech.glide.request.target.BitmapImageViewTarget;
import com.bumptech.glide.request.target.Target;
import butterknife.OnClick;
import de.beyondsoft.ownchat.R;
import de.beyondsoft.ownchat.data.AppPrefsConstants;
import de.beyondsoft.ownchat.data.prefs.BooleanPreference;
import de.beyondsoft.ownchat.data.prefs.StringPreference;
import de.beyondsoft.ownchat.di.InjectionHelper;
import de.beyondsoft.ownchat.model.Group;
import de.beyondsoft.ownchat.utils.Constants;
import de.beyondsoft.ownchat.utils.FileUtils;
import java.io.File;
import javax.inject.Inject;
import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import de.beyondsoft.ownchat.R;
import de.beyondsoft.ownchat.di.InjectionHelper;
import de.beyondsoft.ownchat.model.Group;
import de.beyondsoft.ownchat.utils.Constants;
import de.beyondsoft.ownchat.utils.ui.GlideApp;
import de.beyondsoft.ownchat.utils.ui.ViewUtils;
import hani.momanii.supernova_emoji_library.Actions.EmojIconActions;
import hani.momanii.supernova_emoji_library.Helper.EmojiconEditText;
public class FileConfirmationActivity extends AppCompatActivity implements FileConfirmationView, RequestListener<String, GlideDrawable> {
public class FileConfirmationActivity extends AppCompatActivity implements FileConfirmationView {
@BindView(R.id.file_message)
EmojiconEditText mMessageEmojiconEditText;
@@ -103,13 +99,27 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC
showLoading();
Glide.with(this)
.load(fileUri)
.dontAnimate()
.placeholder(R.drawable.document)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.listener(this)
.into(new GlideDrawableImageViewTarget(mFileImageView));
GlideApp.with(this)
.asBitmap()
.load(fileUri)
.placeholder(R.drawable.document)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
hideLoading();
return false;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
hideLoading();
return false;
}
})
.into(new BitmapImageViewTarget(mFileImageView));
mGroup = getIntent().getParcelableExtra(Constants.EXTRA_GROUP);
setToolBar();
@@ -139,9 +149,10 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC
if (TextUtils.isEmpty(mGroup.avatar)) {
mChatImageView.setImageResource(mGroup.onlyEmployees ? de.beyondsoft.ownchat.R.drawable.avatar : R.drawable.avatar_help);
} else {
Glide.with(this).load(mGroup.avatar)
GlideApp.with(this)
.asBitmap()
.load(mGroup.avatar)
.placeholder(de.beyondsoft.ownchat.R.drawable.avatar)
.dontAnimate()
.into(mChatImageView);
}
}
@@ -213,18 +224,4 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC
public void showError(String message) {
}
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
hideLoading();
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
hideLoading();
return false;
}
}

View File

@@ -385,7 +385,7 @@ public class LoginPresenter extends MVPAbstractPresenter<LoginView> implements L
private void checkTypeAndCustomerIdError(Throwable throwable) {
getView().showContent();
if (mSystemUtils.isNetworkUnavailable()) {
if(mSystemUtils.isNetworkUnavailable()) {
getView().showError(R.string.error_no_internet_connection);
return;
}

View File

@@ -1,7 +1,5 @@
package de.beyondsoft.ownchat.page.main;
import com.bumptech.glide.Glide;
import de.beyondsoft.ownchat.R;
import de.beyondsoft.ownchat.data.AppPrefsConstants;
import de.beyondsoft.ownchat.data.events.InvalidTokenEvent;
@@ -42,6 +40,7 @@ import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
@@ -52,11 +51,8 @@ import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import de.hdodenhof.circleimageview.CircleImageView;
import de.beyondsoft.ownchat.utils.ui.GlideApp;
/**
* Created by imarneanu on 2/9/17.
*/
public class MainActivity extends AppCompatActivity implements MainNavigation, LogoutNavigation {
private static final String REDIRECT_TO_CHAT = "redirect_to_chat";
@@ -117,14 +113,20 @@ public class MainActivity extends AppCompatActivity implements MainNavigation, L
setSupportActionBar(mToolbar);
View headerLayout = mNavigationView.getHeaderView(0);
CircleImageView avatar = headerLayout.findViewById(R.id.menu_profile_imageView);
Glide.with(this).load(mAvatarPreference.get()).into(avatar);
ImageView avatar = headerLayout.findViewById(R.id.menu_profile_imageView);
GlideApp.with(this)
.load(mAvatarPreference.get())
.circleCrop()
.into(avatar);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, mDrawer, mToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
Glide.with(MainActivity.this).load(mAvatarPreference.get()).into(avatar);
GlideApp.with(MainActivity.this)
.load(mAvatarPreference.get())
.circleCrop()
.into(avatar);
Utils.hideKeyboard(MainActivity.this);
}
};

View File

@@ -4,6 +4,7 @@ import de.beyondsoft.ownchat.R;
import android.app.Activity;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
@@ -15,9 +16,6 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
/**
* Created by imarneanu on 2/13/17.
*/
class NavigationMenuAdapter extends ArrayAdapter<String> {
private final static int IMPRESSUM = 3;
@@ -32,8 +30,9 @@ class NavigationMenuAdapter extends ArrayAdapter<String> {
mListener = listener;
}
@NonNull
@Override
public View getView(int position, View view, ViewGroup parent) {
public View getView(int position, View view, @NonNull ViewGroup parent) {
ViewHolder holder;
if (view != null) {

View File

@@ -7,7 +7,6 @@ import de.beyondsoft.ownchat.data.prefs.LongPreference;
import de.beyondsoft.ownchat.data.prefs.StringPreference;
import de.beyondsoft.ownchat.di.InjectionHelper;
import de.beyondsoft.ownchat.model.User;
import de.beyondsoft.ownchat.utils.Constants;
import de.beyondsoft.ownchat.utils.DialogHandler;
import de.beyondsoft.ownchat.utils.FileUtils;
import de.beyondsoft.ownchat.utils.RuntimePermissionBaseFragment;
@@ -27,6 +26,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
@@ -40,18 +40,15 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.OnTextChanged;
import de.beyondsoft.ownchat.utils.ui.GlideApp;
import de.beyondsoft.ownchat.utils.ui.ViewUtils;
import de.hdodenhof.circleimageview.CircleImageView;
/**
* Created by imarneanu on 2/13/17.
*/
public class ProfileFragment extends RuntimePermissionBaseFragment implements ProfileView {
private final static int SELECT_FILE = 5055;
@BindView(R.id.profile_avatar)
CircleImageView mAvatarImageview;
ImageView mAvatarImageview;
@BindView(R.id.profile_name)
TextView mNameTextView;
@@ -107,18 +104,19 @@ public class ProfileFragment extends RuntimePermissionBaseFragment implements Pr
ButterKnife.bind(this, view);
getActivity().setTitle(R.string.title_profile);
Glide.with(getActivity())
GlideApp.with(getActivity())
.load(mAvatarPreference.get())
.placeholder(R.drawable.avatar)
.circleCrop()
.into(mAvatarImageview);
ViewUtils.setProgressBarColor(mProgressBar, R.color.colorDefault);
if (!TextUtils.isEmpty(mPhoneNumberPreference.get())) {
if(!TextUtils.isEmpty(mPhoneNumberPreference.get())) {
mPhoneNumberEditText.setText(mPhoneNumberPreference.get());
}
if (!TextUtils.isEmpty(mProfileNamePreference.get())) {
if(!TextUtils.isEmpty(mProfileNamePreference.get())) {
mNameTextView.setText(mProfileNamePreference.get());
}
@@ -207,9 +205,10 @@ public class ProfileFragment extends RuntimePermissionBaseFragment implements Pr
public void refreshImage(String imageUrl) {
mProgressBar.setVisibility(View.GONE);
Glide.with(getContext())
GlideApp.with(getContext())
.load(imageUrl)
.error(R.drawable.avatar)
.circleCrop()
.into(mAvatarImageview);
mAvatarPreference.set(imageUrl);

View File

@@ -8,9 +8,6 @@ import dagger.Module;
import dagger.Provides;
import retrofit2.Retrofit;
/**
* Created by imarneanu on 2/23/17.
*/
@Module
class ProfileModule {

View File

@@ -1,13 +1,14 @@
package de.beyondsoft.ownchat.page.sharing;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import java.util.ArrayList;
@@ -17,11 +18,7 @@ import butterknife.ButterKnife;
import butterknife.OnClick;
import de.beyondsoft.ownchat.R;
import de.beyondsoft.ownchat.model.Group;
import de.hdodenhof.circleimageview.CircleImageView;
/**
* Created by Lyndon on 03-Nov-2017.
*/
import de.beyondsoft.ownchat.utils.ui.GlideApp;
public class SharingContactsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int GROUP_TYPE = 0;
@@ -60,14 +57,15 @@ public class SharingContactsAdapter extends RecyclerView.Adapter<RecyclerView.Vi
return CONTACT_TYPE;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_sharing_contact, parent, false);
return new SharingContactsAdapter.SharingContactViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
Group group = mGroups.get(position);
SharingContactsAdapter.SharingContactViewHolder viewHolder = (SharingContactsAdapter.SharingContactViewHolder) holder;
@@ -89,9 +87,11 @@ public class SharingContactsAdapter extends RecyclerView.Adapter<RecyclerView.Vi
viewHolder.name.setText(group.name);
Glide.with(viewHolder.avatar.getContext()).load(group.avatar)
GlideApp.with(viewHolder.avatar.getContext())
.asBitmap()
.load(group.avatar)
.circleCrop()
.placeholder(group.onlyEmployees ? R.drawable.avatar_list : R.drawable.avatar_help)
.dontAnimate()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(viewHolder.avatar);
}
@@ -103,7 +103,7 @@ public class SharingContactsAdapter extends RecyclerView.Adapter<RecyclerView.Vi
class SharingContactViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.sharing_contact_avatar)
CircleImageView avatar;
ImageView avatar;
@BindView(R.id.sharing_contact_name)
TextView name;

View File

@@ -45,4 +45,6 @@ public interface Constants {
"y0UYUQnwiQpD8WQSztyal58eyqkFSzWA3SZfyOaxSpnnGpge5VEfNhkG5Ufkzqk1" +
"NoP+R0w3rFsPhw6/cH+++6LOPFQyZ/VkbmkFtUkjOrF0lmoHZUywksKO3ag8/2Tx" +
"NQIDAQAB";
String DICTIONARY_PUBLIC_KEY = "";
}

View File

@@ -6,11 +6,6 @@ import android.support.design.widget.Snackbar;
import android.util.AttributeSet;
import android.view.View;
/**
* Custom behavior for View.
* <p>
* Created by laszloffiferenc on 2/21/17.
*/
public class LayoutBehavior extends CoordinatorLayout.Behavior<View> {
public LayoutBehavior(Context context, AttributeSet attrs) {

View File

@@ -23,7 +23,7 @@
android:padding="5dp"
android:src="@drawable/back" />
<de.hdodenhof.circleimageview.CircleImageView
<ImageView
android:id="@+id/chat_toolbar_image_view"
android:layout_width="40dp"
android:layout_height="40dp"

View File

@@ -13,7 +13,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/profile_avatar_margin">
<de.hdodenhof.circleimageview.CircleImageView
<ImageView
android:id="@+id/profile_avatar"
android:layout_width="@dimen/profile_avatar"
android:layout_height="@dimen/profile_avatar"

View File

@@ -17,7 +17,7 @@
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<de.hdodenhof.circleimageview.CircleImageView
<ImageView
android:id="@+id/chat_member_avatar"
android:layout_width="@dimen/avatar_size"
android:layout_height="@dimen/avatar_size"

View File

@@ -9,7 +9,7 @@
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin">
<de.hdodenhof.circleimageview.CircleImageView
<ImageView
android:id="@+id/contact_avatar"
android:layout_width="40dp"
android:layout_height="40dp"

View File

@@ -12,7 +12,7 @@
android:paddingStart="0dp"
android:paddingBottom="0dp">
<de.hdodenhof.circleimageview.CircleImageView
<ImageView
android:id="@+id/chat_item_contact_image"
android:layout_width="40dp"
android:layout_height="40dp"

View File

@@ -12,7 +12,7 @@
android:paddingEnd="40dp"
android:paddingStart="0dp">
<de.hdodenhof.circleimageview.CircleImageView
<ImageView
android:id="@+id/chat_item_contact_image"
android:layout_width="40dp"
android:layout_height="40dp"

View File

@@ -9,7 +9,7 @@
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin">
<de.hdodenhof.circleimageview.CircleImageView
<ImageView
android:id="@+id/sharing_contact_avatar"
android:layout_width="40dp"
android:layout_height="40dp"

View File

@@ -5,10 +5,11 @@
android:layout_marginTop="@dimen/nav_padding_top"
android:gravity="center">
<de.hdodenhof.circleimageview.CircleImageView
<ImageView
android:id="@+id/menu_profile_imageView"
android:layout_width="@dimen/nav_avatar"
android:layout_height="@dimen/nav_avatar"
android:scaleType="centerCrop"
android:src="@drawable/avatar" />
android:src="@drawable/avatar"
android:contentDescription="@null" />
</LinearLayout>