diff --git a/src/cheogram/AndroidManifest.xml b/src/cheogram/AndroidManifest.xml index d11d808a698d4a67e5156a8e3fec8696052a3ce7..57d2ec18d12baa41870e12d6e55d6eee408b750c 100644 --- a/src/cheogram/AndroidManifest.xml +++ b/src/cheogram/AndroidManifest.xml @@ -45,6 +45,11 @@ android:label="@string/invite_to_app" android:exported="false" android:launchMode="singleTask" /> + = Build.VERSION_CODES.Q) { + webView.setForceDarkAllowed(true); + } + webView.getSettings().setJavaScriptEnabled(true); + webView.getSettings().setDomStorageEnabled(true); + webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); + webView.setWebViewClient(new WebViewClient() { + @Override + public boolean shouldOverrideUrlLoading(WebView view, String url) { + view.loadUrl(url); + return true; + } + }); + webView.setDownloadListener(new DownloadListener() { + @Override + public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) { + final var intent = new Intent(); + intent.setData(Uri.parse(url)); + setResult(Activity.RESULT_OK, intent); + finish(); + } + }); + } else { + Toast.makeText(this, R.string.account_status_no_internet, Toast.LENGTH_LONG).show(); + } + } + + @Override + protected void refreshUiReal() { + + } + + @Override + protected void onBackendConnected() { + } + + //check for internet connection + private boolean isNetworkAvailable(Context context) { + ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + if (connectivity != null) { + NetworkInfo[] info = connectivity.getAllNetworkInfo(); + if (info != null) { + for (NetworkInfo anInfo : info) { + if (anInfo.getState() == NetworkInfo.State.CONNECTED) { + return true; + } + } + } + } + return false; + } +} diff --git a/src/cheogram/res/layout/activity_webxdc_store.xml b/src/cheogram/res/layout/activity_webxdc_store.xml new file mode 100644 index 0000000000000000000000000000000000000000..fcec66f05dbb709140cbe96625043e0bf66d697f --- /dev/null +++ b/src/cheogram/res/layout/activity_webxdc_store.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 5c303276b4c3c1ffafacdd713b8d48776784f745..5eb37efe0fab2577a2dc6ee042bdfb730a3eae38 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -89,6 +89,7 @@ import androidx.viewpager.widget.ViewPager; import com.cheogram.android.BobTransfer; import com.cheogram.android.EmojiSearch; import com.cheogram.android.WebxdcPage; +import com.cheogram.android.WebxdcStore; import com.google.android.material.color.MaterialColors; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -217,6 +218,7 @@ public class ConversationFragment extends XmppFragment public static final int REQUEST_START_AUDIO_CALL = 0x213; public static final int REQUEST_START_VIDEO_CALL = 0x214; public static final int REQUEST_SAVE_STICKER = 0x215; + public static final int REQUEST_WEBXDC_STORE = 0x216; public static final int ATTACHMENT_CHOICE_CHOOSE_IMAGE = 0x0301; public static final int ATTACHMENT_CHOICE_TAKE_PHOTO = 0x0302; public static final int ATTACHMENT_CHOICE_CHOOSE_FILE = 0x0303; @@ -1138,6 +1140,10 @@ public class ConversationFragment extends XmppFragment private void handlePositiveActivityResult(int requestCode, final Intent data) { switch (requestCode) { + case REQUEST_WEBXDC_STORE: + mediaPreviewAdapter.addMediaPreviews(Attachment.of(activity, data.getData(), Attachment.Type.FILE)); + toggleInputMethod(); + break; case REQUEST_SAVE_STICKER: final DocumentFile df = DocumentFile.fromSingleUri(activity, data.getData()); final File f = savingAsSticker; @@ -1982,6 +1988,10 @@ public class ConversationFragment extends XmppFragment case R.id.attach_location: handleAttachmentSelection(item); break; + case R.id.attach_webxdc: + final Intent intent = new Intent(getActivity(), WebxdcStore.class); + startActivityForResult(intent, REQUEST_WEBXDC_STORE); + break; case R.id.attach_subject: binding.textinputSubject.setVisibility(binding.textinputSubject.getVisibility() == View.GONE ? View.VISIBLE : View.GONE); break; diff --git a/src/main/res/drawable/ic_help_center_24dp.xml b/src/main/res/drawable/ic_help_center_24dp.xml new file mode 100644 index 0000000000000000000000000000000000000000..cb0ab0fd7ee717224f4ed6631ab7dda29380b4d7 --- /dev/null +++ b/src/main/res/drawable/ic_help_center_24dp.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/res/menu/fragment_conversation.xml b/src/main/res/menu/fragment_conversation.xml index b99997bafd22bbbd7702bf4bb9c4a601b337aa1d..1c7915bbc1a43f82fc6b898db5554d46423bcf22 100644 --- a/src/main/res/menu/fragment_conversation.xml +++ b/src/main/res/menu/fragment_conversation.xml @@ -62,6 +62,11 @@ android:icon="@drawable/ic_location_pin_24dp" android:title="@string/send_location" /> + +