diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml
index 7fcfe11..4e18d66 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml
@@ -57,6 +57,12 @@
android:screenOrientation="portrait"
android:theme="@style/ChatStyle" />
+
+
+
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_dialog_audio-web.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_dialog_audio-web.png
new file mode 100644
index 0000000..8fb84bb
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_dialog_audio-web.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_dialog_gallery-web.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_dialog_gallery-web.png
new file mode 100644
index 0000000..85fdad6
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_dialog_gallery-web.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_picker_document-web.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_picker_document-web.png
new file mode 100644
index 0000000..b1f9597
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_picker_document-web.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/FilePickerActivity.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/FilePickerActivity.java
index 9d3444d..b82680b 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/FilePickerActivity.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/FilePickerActivity.java
@@ -1,5 +1,23 @@
package de.beyondsoft.ownchat.filepicker;
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.app.ActionBar;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import java.util.ArrayList;
+
+import de.beyondsoft.ownchat.R;
+import de.beyondsoft.ownchat.filepicker.fragments.DocFragment;
+import de.beyondsoft.ownchat.filepicker.fragments.DocPickerFragment;
+import de.beyondsoft.ownchat.filepicker.fragments.ImagePickerFragmentListener;
+import de.beyondsoft.ownchat.filepicker.fragments.MediaPickerFragment;
+import de.beyondsoft.ownchat.filepicker.utils.FragmentUtil;
+
/**
* Created by Lyndon on 26-Oct-2017.
*/
@@ -9,4 +27,144 @@ public class FilePickerActivity extends BaseFilePickerActivity implements
DocFragment.DocFragmentListener,
DocPickerFragment.DocPickerFragmentListener,
MediaPickerFragment.MediaPickerFragmentListener {
+
+ private static final String TAG = FilePickerActivity.class.getSimpleName();
+ private int type;
+
+ @SuppressLint("MissingSuperCall")
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState, R.layout.activity_file_picker);
+ }
+
+ @Override
+ protected void initView() {
+ Intent intent = getIntent();
+ if (intent != null) {
+ if(getSupportActionBar()!=null)
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+
+ ArrayList selectedPaths = intent.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA);
+ type = intent.getIntExtra(FilePickerConst.EXTRA_PICKER_TYPE, FilePickerConst.MEDIA_PICKER);
+
+ if(selectedPaths!=null) {
+
+ if (PickerManager.getInstance().getMaxCount() == 1) {
+ selectedPaths.clear();
+ }
+
+ if (type == FilePickerConst.MEDIA_PICKER) {
+ PickerManager.getInstance().add(selectedPaths, FilePickerConst.FILE_TYPE_MEDIA);
+ } else {
+ PickerManager.getInstance().add(selectedPaths, FilePickerConst.FILE_TYPE_DOCUMENT);
+ }
+ }
+ else
+ selectedPaths = new ArrayList<>();
+
+ setToolbarTitle(PickerManager.getInstance().getCurrentCount());
+ openSpecificFragment(type, selectedPaths);
+ }
+ }
+
+ private void openSpecificFragment(int type, @Nullable ArrayList selectedPaths) {
+ if (type == FilePickerConst.MEDIA_PICKER) {
+ MediaPickerFragment photoFragment = MediaPickerFragment.newInstance();
+ FragmentUtil.addFragment(this, R.id.container, photoFragment);
+ } else {
+ if(PickerManager.getInstance().isDocSupport())
+ PickerManager.getInstance().addDocTypes();
+
+ DocPickerFragment photoFragment = DocPickerFragment.newInstance(selectedPaths);
+ FragmentUtil.addFragment(this, R.id.container, photoFragment);
+ }
+ }
+
+ private void setToolbarTitle(int count) {
+ ActionBar actionBar = getSupportActionBar();
+ if(actionBar!=null) {
+ if (PickerManager.getInstance().getMaxCount() > 1)
+ actionBar.setTitle(String.format(getString(R.string.attachments_title_text), count, PickerManager.getInstance().getMaxCount()));
+ else {
+ if (type == FilePickerConst.MEDIA_PICKER)
+ actionBar.setTitle(R.string.select_photo_text);
+ else
+ actionBar.setTitle(R.string.select_doc_text);
+ }
+ }
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.picker_menu, menu);
+
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ int i = item.getItemId();
+ if (i == R.id.action_done) {
+ if (type == FilePickerConst.MEDIA_PICKER)
+ returnData(PickerManager.getInstance().getSelectedPhotos());
+ else
+ returnData(PickerManager.getInstance().getSelectedFiles());
+
+ return true;
+ } else if (i == android.R.id.home) {
+ onBackPressed();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ public void onBackPressed() {
+ super.onBackPressed();
+ setResult(RESULT_CANCELED);
+ finish();
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ switch (requestCode)
+ {
+ case FilePickerConst.REQUEST_CODE_MEDIA_DETAIL:
+ if(resultCode== Activity.RESULT_OK)
+ {
+ if (type == FilePickerConst.MEDIA_PICKER)
+ returnData(PickerManager.getInstance().getSelectedPhotos());
+ else
+ returnData(PickerManager.getInstance().getSelectedFiles());
+ }
+ else
+ {
+ setToolbarTitle(PickerManager.getInstance().getCurrentCount());
+ }
+ break;
+ }
+ }
+
+ private void returnData(ArrayList paths) {
+ Intent intent = new Intent();
+
+ if (type == FilePickerConst.MEDIA_PICKER) {
+ intent.putStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA, paths);
+ } else {
+ intent.putStringArrayListExtra(FilePickerConst.KEY_SELECTED_DOCS, paths);
+ }
+
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+
+ @Override
+ public void onItemSelected() {
+ setToolbarTitle(PickerManager.getInstance().getCurrentCount());
+
+ if(PickerManager.getInstance().getMaxCount()==1)
+ returnData(type == FilePickerConst.MEDIA_PICKER ? PickerManager.getInstance().getSelectedPhotos() : PickerManager.getInstance().getSelectedFiles());
+ }
}
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/PickerManager.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/PickerManager.java
index dacbff3..c0e55e6 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/PickerManager.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/PickerManager.java
@@ -49,7 +49,7 @@ public class PickerManager {
fileTypes = new ArrayList<>();
}
- public void setMaxCount(int count) {
+ void setMaxCount(int count) {
clearSelections();
this.mMaxCount = count;
}
@@ -58,18 +58,19 @@ public class PickerManager {
return mMaxCount;
}
- public int getCurrentCount() {
+ int getCurrentCount() {
return mCurrentCount;
}
public void add(String path, int type) {
if (path != null && shouldAdd()) {
- if (!mediaFiles.contains(path) && type == FilePickerConst.FILE_TYPE_MEDIA)
+ if (!mediaFiles.contains(path) && type == FilePickerConst.FILE_TYPE_MEDIA) {
mediaFiles.add(path);
- else if (type == FilePickerConst.FILE_TYPE_DOCUMENT)
+ } else if (type == FilePickerConst.FILE_TYPE_DOCUMENT) {
docFiles.add(path);
- else
+ } else {
return;
+ }
mCurrentCount++;
}
@@ -85,7 +86,6 @@ public class PickerManager {
if ((type == FilePickerConst.FILE_TYPE_MEDIA) && mediaFiles.contains(path)) {
mediaFiles.remove(path);
mCurrentCount--;
-
} else if (type == FilePickerConst.FILE_TYPE_DOCUMENT) {
docFiles.remove(path);
@@ -107,13 +107,15 @@ public class PickerManager {
public ArrayList getSelectedFilePaths(ArrayList files) {
ArrayList paths = new ArrayList<>();
+
for (int index = 0; index < files.size(); index++) {
paths.add(files.get(index).getPath());
}
+
return paths;
}
- public void clearSelections() {
+ private void clearSelections() {
docFiles.clear();
mediaFiles.clear();
fileTypes.clear();
@@ -125,7 +127,7 @@ public class PickerManager {
return theme;
}
- public void setTheme(int theme) {
+ void setTheme(int theme) {
this.theme = theme;
}
@@ -133,7 +135,7 @@ public class PickerManager {
return showVideos;
}
- public void setShowVideos(boolean showVideos) {
+ void setShowVideos(boolean showVideos) {
this.showVideos = showVideos;
}
@@ -141,7 +143,7 @@ public class PickerManager {
return mShowImages;
}
- public void setShowImages(boolean showImages) {
+ void setShowImages(boolean showImages) {
this.mShowImages = showImages;
}
@@ -149,7 +151,7 @@ public class PickerManager {
return showGif;
}
- public void setShowGif(boolean showGif) {
+ void setShowGif(boolean showGif) {
this.showGif = showGif;
}
@@ -157,16 +159,16 @@ public class PickerManager {
return showFolderView;
}
- public void setShowFolderView(boolean showFolderView) {
+ void setShowFolderView(boolean showFolderView) {
this.showFolderView = showFolderView;
}
- public void addFileType(FileType fileType)
+ void addFileType(FileType fileType)
{
fileTypes.add(fileType);
}
- public void addDocTypes()
+ void addDocTypes()
{
String[] pdfs = {"pdf"};
fileTypes.add(new FileType(FilePickerConst.PDF,pdfs,R.drawable.document));
@@ -189,11 +191,11 @@ public class PickerManager {
return fileTypes;
}
- public boolean isDocSupport() {
+ boolean isDocSupport() {
return docSupport;
}
- public void setDocSupport(boolean docSupport) {
+ void setDocSupport(boolean docSupport) {
this.docSupport = docSupport;
}
@@ -201,7 +203,7 @@ public class PickerManager {
return enableCamera;
}
- public void setEnableCamera(boolean enableCamera) {
+ void setEnableCamera(boolean enableCamera) {
this.enableCamera = enableCamera;
}
@@ -217,11 +219,11 @@ public class PickerManager {
return providerAuthorities;
}
- public void setProviderAuthorities(String providerAuthorities) {
+ void setProviderAuthorities(String providerAuthorities) {
this.providerAuthorities = providerAuthorities;
}
- public void setCameraDrawable(int drawable) {
+ void setCameraDrawable(int drawable) {
this.mCameraDrawble = drawable;
}
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/adapters/ImageGridAdapter.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/adapters/ImageGridAdapter.java
index cc183c0..5758748 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/adapters/ImageGridAdapter.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/adapters/ImageGridAdapter.java
@@ -15,7 +15,6 @@ import com.bumptech.glide.RequestManager;
import java.io.File;
import java.util.ArrayList;
-import butterknife.BindView;
import de.beyondsoft.ownchat.R;
import de.beyondsoft.ownchat.filepicker.FilePickerConst;
import de.beyondsoft.ownchat.filepicker.PickerManager;
@@ -166,20 +165,20 @@ public class ImageGridAdapter extends SelectableAdapter {
+ dialog.dismiss();
+ });
+
+ attachDocumentImageView.setOnClickListener(v -> {
+ FilePickerBuilder.getInstance().setMaxCount(1)
+ .addFileSupport("ZIP", zipFileTypes)
+ .addFileSupport("PDF", pdfFileTypes)
+ .enableDocSupport(false)
+ .withOrientation(Orientation.PORTRAIT_ONLY)
+ .pickFile(this);
+
+ dialog.dismiss();
+ });
+
+ attachFromGalleryImageView.setOnClickListener(v -> {
+ FilePickerBuilder.getInstance().setMaxCount(1)
+ .enableVideoPicker(true)
+ .enableCameraSupport(false)
+ .showGifs(true)
+ .showFolderView(true)
+ .enableImagePicker(true)
+ .withOrientation(Orientation.PORTRAIT_ONLY)
+ .pickPhoto(this);
+
+ dialog.dismiss();
+ });
+
+ dialog.show();
}
@Override
@@ -299,11 +344,10 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
}
if (requestCode == SELECT_FILE) {
- if (null == data.getData()) {
- return;
- }
-
- final Uri uri = data.getData();
+ // TODO: support documents too (FilePickerConst.KEY_SELECTED_DOCS)
+ final Uri uri = Uri.fromFile(new File(data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA) != null ?
+ data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA).get(0) :
+ data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_DOCS).get(0)));
if (Build.VERSION.SDK_INT >= 19) {
final int takeFlags = data.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
@@ -321,9 +365,7 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
}
Bundle bundle = new Bundle();
- bundle.putString(Constants.FILENAME, uri.toString());
-
-
+ bundle.putString(Constants.FILENAME, data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA).get(0));
Intent intent = new Intent(this, FileConfirmationActivity.class);
intent.putExtras(bundle);
@@ -334,16 +376,14 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
}
if(requestCode == CONFIRM_FILE) {
- String fileUriString = data.getStringExtra(Constants.FILE_URI);
+ String filePath = data.getStringExtra(Constants.FILE_PATH);
String fileMessageText = data.getStringExtra(Constants.FILE_MESSAGE_TEXT);
if (!mChatPresenter.isAttached()) {
mChatPresenter.attachView(this);
}
-
-
- mCallback.sendFile(Uri.parse(fileUriString), fileMessageText, getContentResolver().getType(Uri.parse(fileUriString)));
+ mCallback.sendFile(Uri.fromFile(new File(filePath)), fileMessageText);
}
}
@@ -400,6 +440,11 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
return MediaType.parse(getContentResolver().getType(fileUri));
}
+ @Override
+ public MediaType getMediaType(String mimeType) {
+ return MediaType.parse(mimeType);
+ }
+
@Override
public File getFile(Uri fileUri) {
return FileUtils.getFile(this, fileUri);
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatAdapter.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatAdapter.java
index 7b1e668..f578244 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatAdapter.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatAdapter.java
@@ -71,11 +71,14 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter implements Cha
* Send the file to the server.
*/
@Override
- public void sendFile(Uri fileUri, String messageText, String mimeType) {
+ public void sendFile(Uri fileUri, String messageText) {
File file = getView().getFile(fileUri);
+ final String mimeType = FileUtils.getMimeType(file);
+
if (file == null || !file.exists()) {
getView().showToastMessage(R.string.error_file_not_found);
return;
@@ -457,8 +459,6 @@ public class ChatPresenter extends MVPAbstractPresenter implements Cha
message.createdAt *= 1000;
getView().addOneMessage(message);
- // image/gif, image/jpeg, image/png
-
if((mimeType.equals(Constants.MIME_TYPE_JPEG) || mimeType.equals(Constants.MIME_TYPE_PNG)) && (file.length() > (1000L * 1024L))) {
try {
BitmapFactory.Options options = new BitmapFactory.Options();
@@ -500,7 +500,7 @@ public class ChatPresenter extends MVPAbstractPresenter implements Cha
boolean scaledImageExists = scaledImage.exists();
// create RequestBody instance from file
- RequestBody requestFile = RequestBody.create(getView().getMediaType(fileUri), scaledImageExists ? scaledImage : file);
+ RequestBody requestFile = RequestBody.create(getView().getMediaType(mimeType), scaledImageExists ? scaledImage : file);
// MultipartBody.Part is used to send also the actual file name
MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), requestFile);
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/ChatView.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/ChatView.java
index 4a81c4e..d5cf39c 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/ChatView.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/ChatView.java
@@ -43,6 +43,8 @@ interface ChatView extends MVPView {
MediaType getMediaType(Uri fileUri);
+ MediaType getMediaType(String mimeType);
+
File getFile(Uri fileUri);
void enableMessageRetry(String messageId);
@@ -67,7 +69,7 @@ interface ChatView extends MVPView {
void resetMessages();
- void sendFile(Uri fileUri, String messageText, String mimeType);
+ void sendFile(Uri fileUri, String messageText);
void sendMessage(String message);
@@ -81,5 +83,4 @@ interface ChatView extends MVPView {
void fetchNewMessages(long groupId);
}
-
}
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/fileconfirmation/FileConfirmationActivity.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/fileconfirmation/FileConfirmationActivity.java
index dc43359..651a745 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/fileconfirmation/FileConfirmationActivity.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/fileconfirmation/FileConfirmationActivity.java
@@ -87,8 +87,9 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC
mSelectedUri = Uri.parse(fileUri);
+ // getFile(mSelectedUri).getPath()
Glide.with(this)
- .load(getFile(mSelectedUri).getPath())
+ .load(fileUri)
.dontAnimate()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(new GlideDrawableImageViewTarget(mFileImageView));
@@ -133,7 +134,7 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC
void sendFile() {
Intent intent = new Intent();
- intent.putExtra(Constants.FILE_URI, mSelectedUri.toString());
+ intent.putExtra(Constants.FILE_PATH, mSelectedUri.toString());
intent.putExtra(Constants.FILE_MESSAGE_TEXT, mMessageEmojiconEditText.getText().toString());
setResult(-1, intent);
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java
index 5b04f51..f8cedf0 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java
@@ -23,7 +23,7 @@ public interface Constants {
String CHAT_IS_ALREADY_OPEN = "chat_is_already_open";
String KEY_TEXT_REPLY = "key_text_reply";
- String FILE_URI = "file_uri";
+ String FILE_PATH = "file_uri";
String FILE_MESSAGE_TEXT = "file_message_text";
String EXTRA_GROUP = "group";
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/file_chooser_dialog.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/file_chooser_dialog.xml
new file mode 100644
index 0000000..7e1b8ce
--- /dev/null
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/file_chooser_dialog.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_dialog_audio.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_dialog_audio.png
new file mode 100644
index 0000000..cd00a05
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_dialog_audio.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_dialog_gallery.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_dialog_gallery.png
new file mode 100644
index 0000000..144135c
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_dialog_gallery.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_picker_document.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_picker_document.png
new file mode 100644
index 0000000..6471662
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_picker_document.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_dialog_audio.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_dialog_audio.png
new file mode 100644
index 0000000..5053e16
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_dialog_audio.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_dialog_gallery.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_dialog_gallery.png
new file mode 100644
index 0000000..a4e1bb9
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_dialog_gallery.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_picker_document.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_picker_document.png
new file mode 100644
index 0000000..b820bf1
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_picker_document.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_dialog_audio.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_dialog_audio.png
new file mode 100644
index 0000000..b87c8ca
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_dialog_audio.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_dialog_gallery.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_dialog_gallery.png
new file mode 100644
index 0000000..28c0e89
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_dialog_gallery.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_picker_document.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_picker_document.png
new file mode 100644
index 0000000..43cfc65
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_picker_document.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_dialog_audio.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_dialog_audio.png
new file mode 100644
index 0000000..afe9c91
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_dialog_audio.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_dialog_gallery.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_dialog_gallery.png
new file mode 100644
index 0000000..9a07e9f
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_dialog_gallery.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_picker_document.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_picker_document.png
new file mode 100644
index 0000000..1bcfc66
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_picker_document.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_dialog_audio.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_dialog_audio.png
new file mode 100644
index 0000000..e3a57a9
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_dialog_audio.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_dialog_gallery.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_dialog_gallery.png
new file mode 100644
index 0000000..e8b5f72
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_dialog_gallery.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_picker_document.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_picker_document.png
new file mode 100644
index 0000000..4c61db9
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_picker_document.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/strings.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/strings.xml
index 1ba0dcb..373d410 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/strings.xml
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/strings.xml
@@ -73,6 +73,7 @@
Impressum
+
Fertig
Keine Dateien gefunden
Keine Kamera vorhanden
@@ -81,5 +82,8 @@
Alle Videos
Alle Bilder
Alle Dateien
+ Anhänge (%d/%d)
+ Eine Mediendatei anhängen
+ Ein Dokument anhängen
\ No newline at end of file