Search in sources :

Example 1 with FragmentMediaContainer

use of net.iGap.messenger.ui.components.FragmentMediaContainer in project iGap-Android by KianIranian-STDG.

the class FragmentChat method onCreateView.

@Nullable
@Override
public View onCreateView(@NotNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    isNeedResume = true;
    G.locationListener = this;
    StickerRepository.getInstance().getUserStickersGroup();
    notifyFrameLayout = new NotifyFrameLayout(context) {

        @Override
        public boolean dispatchKeyEventPreIme(KeyEvent event) {
            if (event != null && event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
                if (topFragmentIsChat() && keyboardViewVisible) {
                    showPopup(-1);
                    return true;
                }
                return false;
            }
            return super.dispatchKeyEventPreIme(event);
        }
    };
    Bundle extras = getArguments();
    if (extras != null) {
        mRoomId = extras.getLong("RoomId");
        if (mustCheckPermission())
            currentRoomAccess = DbManager.getInstance().doRealmTask(realm -> {
                return realm.where(RealmRoomAccess.class).equalTo("id", mRoomId + "_" + AccountManager.getInstance().getCurrentUser().getId()).findFirst();
            });
    }
    notifyFrameLayout.setListener(this::onScreenSizeChanged);
    rootView = (FrameLayout) inflater.inflate(R.layout.fragment_chat, container, false);
    chatContainer = rootView.findViewById(R.id.chatMainContainer);
    mediaContainer = new FragmentMediaContainer(getActivity(), this);
    mediaContainer.setListener(i -> {
        switch(i) {
            case FragmentMediaContainer.CALL_TAG:
                getActivity().startActivity(new Intent(getContext(), CallActivity.class));
                break;
            case FragmentMediaContainer.MEDIA_TAG:
                if (!MusicPlayer.isVoice) {
                    Intent intent = new Intent(context, ActivityMain.class);
                    intent.putExtra(ActivityMain.openMediaPlayer, true);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    getActivity().startActivity(intent);
                }
                break;
            case FragmentMediaContainer.PLAY_TAG:
                break;
        }
    });
    // mediaContainer.setVisibility(View.GONE);
    chatContainer.addView(mediaContainer, LayoutCreator.createLinear(LayoutCreator.MATCH_PARENT, 39, Gravity.TOP | Gravity.LEFT, 0, 59, 0, 0));
    mToolbar = new Toolbar(context);
    searchFieldItem = mToolbar.addItem(searchFieldTag, R.string.icon_search, Theme.getInstance().getTitleTextColor(getContext())).setIsSearchBox(true).setActionBarMenuItemSearchListener(new ToolbarItem.ActionBarMenuItemSearchListener() {

        int textLength;

        @Override
        public void onSearchExpand() {
            if (layoutMute != null) {
                layoutMute.setVisibility(View.GONE);
            }
            if (viewAttachFile != null) {
                viewAttachFile.setVisibility(View.GONE);
            }
            if (rootView.findViewById(R.id.ac_ll_join).getVisibility() == View.VISIBLE) {
                rootView.findViewById(R.id.ac_ll_join).setVisibility(View.GONE);
            }
            if (pinedMessageLayout != null) {
                changePinnedMessageVisibility(true, false, MusicPlayer.isMusicPlyerEnable, CallManager.getInstance().isCallAlive());
            }
            if (vgSpamUser != null) {
                vgSpamUser.setVisibility(View.GONE);
            }
            isSearchVisible = true;
        }

        @Override
        public void onTextChanged(EditText editText) {
            String text = editText.getText().toString();
            if (text.length() > 0 && !text.startsWith("#")) {
                if (!initHash) {
                    initHash = true;
                    initHashView();
                }
                searchHash.setHashString(editText.getText().toString());
                searchHash.setPosition("");
                if (searchFragment != null) {
                    searchFragment.onSearchCollapsed();
                }
                if (ll_navigateHash != null) {
                    ll_navigateHash.setVisibility(View.VISIBLE);
                }
                if (viewAttachFile != null) {
                    viewAttachFile.setVisibility(View.GONE);
                }
            } else if (text.startsWith("#") && text.length() < 2) {
                if (text.length() > textLength) {
                    searchFragment = SearchFragment.newInstance(mRoomId, text, true);
                    getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.chatContainer, searchFragment).commit();
                }
                if (keyboardContainer != null) {
                    keyboardContainer.setVisibility(View.GONE);
                }
                if (ll_navigateHash != null) {
                    ll_navigateHash.setVisibility(View.GONE);
                }
                if (txtFloatingTime != null) {
                    txtFloatingTime.setVisibility(View.GONE);
                }
            } else if (text.startsWith("#") && text.length() > 1) {
                if (searchFragment != null && searchFragment.isAdded()) {
                    searchFragment.onTextChanged(editText.getText().toString());
                }
            } else {
                hideKeyboardView();
                if (ll_navigateHash != null) {
                    ll_navigateHash.setVisibility(View.GONE);
                }
                if (searchFragment != null && searchFragment.isAdded()) {
                    searchFragment.onSearchCollapsed();
                }
            }
            textLength = editText.getText().length();
        }

        @Override
        public void onSearchCollapse() {
            if (muteIcon != null) {
                muteIcon.setVisibility(getRoom().getMute() ? View.VISIBLE : View.GONE);
            }
            if (verifiedIcon != null) {
                RealmChannelRoom channelRoom = getRoom().getChannelRoom();
                boolean isVerified = false;
                if (channelRoom != null) {
                    isVerified = channelRoom.isVerified();
                }
                verifiedIcon.setVisibility(isVerified ? View.VISIBLE : View.GONE);
            }
            if (avatarItem != null) {
                avatarItem.setVisibility(View.VISIBLE);
            }
            if (pinedMessageLayout != null) {
                if (isPinAvailable) {
                    changePinnedMessageVisibility(true, true, MusicPlayer.isMusicPlyerEnable, CallManager.getInstance().isCallAlive());
                }
            }
            if (isNotJoin) {
                rootView.findViewById(R.id.ac_ll_join).setVisibility(View.VISIBLE);
            }
            if (searchFragment != null) {
                searchFragment.onSearchCollapsed();
            }
            if (vgSpamUser != null) {
                showSpamBar();
            }
            goneSearchHashFooter();
            hideKeyboardView();
            searchFieldItem.setVisibility(View.GONE);
            isSearchVisible = false;
        }
    });
    searchFieldItem.setVisibility(View.GONE);
    mToolbar.setOnClickListener(view -> {
        hideKeyboard();
        goToProfile();
    });
    mToolbar.setListener(i -> {
        switch(i) {
            case -1:
                if (mToolbar.isActionModeShowed()) {
                    mAdapter.deselect();
                    return;
                }
                if (webViewChatPage != null) {
                    closeWebViewForSpecialUrlChat(false);
                    return;
                }
                hideKeyboard();
                if (chatType == CHANNEL && !floatingHidden) {
                    if (channelRole == ChannelChatRole.OWNER && !isRecording) {
                        hideFloatingButton(true);
                        micAndAddStoryAnimateVisible(false);
                    }
                    return;
                }
                if (currentRoomAccess != null) {
                    if (currentRoomAccess != null) {
                        if (!currentRoomAccess.getRealmPostMessageRights().isCanSendText()) {
                            G.runOnUiThread(() -> {
                                viewAttachFile.setVisibility(View.GONE);
                            });
                        }
                    }
                }
                if (G.twoPaneMode) {
                    if (getActivity() instanceof ActivityMain) {
                        ((ActivityMain) getActivity()).goToTabletEmptyPage();
                    }
                } else {
                    if (!mToolbar.isSearchFieldVisible()) {
                        popBackStackFragment();
                    }
                }
                break;
            case searchItem:
                initLayoutSearchNavigation();
                if (!initHash) {
                    initHash = true;
                    initHashView();
                }
                openSearchBox(null);
                showPopup(KeyboardView.MODE_KEYBOARD);
                G.handler.postDelayed(() -> editTextRequestFocus(searchEditText), 300);
                break;
            case voiceCallTag:
                if (CallManager.getInstance().getCallPeerId() == chatPeerId) {
                    Intent activityIntent = new Intent(getActivity(), CallActivity.class);
                    activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(activityIntent);
                } else if (!CallManager.getInstance().isCallAlive()) {
                    CallSelectFragment selectFragment = CallSelectFragment.getInstance(chatPeerId, false, null);
                    if (getFragmentManager() != null)
                        selectFragment.show(getFragmentManager(), null);
                    if (keyboardViewVisible) {
                        hideKeyboard();
                    }
                } else {
                    Toast.makeText(getContext(), "NOT ALLOWED", Toast.LENGTH_SHORT).show();
                }
                break;
            case moreTag:
                createMoreItems();
                break;
            case clearHistoryItem:
                new MaterialDialog.Builder(G.fragmentActivity).title(R.string.clear_history).content(R.string.clear_history_content).positiveText(R.string.yes).onPositive((dialog, which) -> clearHistory(mRoomId)).negativeText(R.string.no).show();
                break;
            case deleteItem:
                new MaterialDialog.Builder(G.fragmentActivity).title(R.string.delete_chat).content(R.string.delete_chat_content).positiveText(R.string.yes).onPositive((dialog, which) -> deleteChat(mRoomId)).negativeText(R.string.no).show();
                break;
            case muteItem:
            case unMuteItem:
                muteNotification(mRoomId);
                break;
            case chatToGroupItem:
                new MaterialDialog.Builder(G.fragmentActivity).title(R.string.convert_chat_to_group_title).content(R.string.convert_chat_to_group_content).positiveText(R.string.yes).negativeText(R.string.no).onPositive((dialog, which) -> {
                    // finish();
                    finishChat();
                    dialog.dismiss();
                    G.handler.post(() -> G.onConvertToGroup.openFragmentOnActivity("ConvertToGroup", mRoomId));
                }).show();
                break;
            case cleanUpItem:
                resetMessagingValue();
                setDownBtnGone();
                setCountNewMessageZero();
                DbManager.getInstance().doRealmTask(realm -> {
                    RealmRoomMessage.ClearAllMessageRoomAsync(realm, mRoomId, () -> {
                        recyclerView.addOnScrollListener(scrollListener);
                        saveMessageIdPositionState(0, 0);
                        /**
                         * get history from server
                         */
                        topMore = true;
                        getOnlineMessage(0, 0, UP);
                    });
                });
                break;
            case reportItem:
                dialogReport(false, 0, 0);
                break;
            case sendMoneyItem:
                showPaymentDialog();
                break;
            case exportChatItem:
                if (HelperPermission.grantedUseStorage()) {
                    exportChat();
                } else {
                    try {
                        HelperPermission.getStoragePermission(G.fragmentActivity, new OnGetPermission() {

                            @Override
                            public void Allow() {
                                exportChat();
                            }

                            @Override
                            public void deny() {
                                Toast.makeText(G.currentActivity, R.string.export_message, Toast.LENGTH_SHORT).show();
                            }
                        });
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                break;
            case stopItem:
                new MaterialDialog.Builder(G.fragmentActivity).title(R.string.stop).content(R.string.stop_message_bot).positiveText(R.string.yes).onPositive((dialog, which) -> {
                    // onSelectRoomMenu("txtClearHistory", mRoomId);
                    closeWebViewForSpecialUrlChat(true);
                // popBackStackFragment();
                }).negativeText(R.string.no).show();
                break;
            case copyMessageTag:
                copySelectedItemTextToClipboard();
                break;
            case forwardMessageTag:
                // forward selected messages to room list for selecting room
                if (mAdapter != null && mAdapter.getSelectedItems().size() > 0) {
                    onForwardClick(null);
                }
                break;
            case replyMessageTag:
                if (mAdapter != null && !mAdapter.getSelectedItems().isEmpty() && mAdapter.getSelectedItems().size() == 1) {
                    reply(mAdapter.getSelectedItems().iterator().next().messageObject, false);
                }
                break;
            case deleteMessageTag:
                messageIds = new ArrayList<>();
                documentIds = new ArrayList<>();
                bothDeleteMessageId = new ArrayList<>();
                G.handler.post(() -> {
                    for (final AbstractMessage item : mAdapter.getSelectedItems()) {
                        if (mAdapter.getSelectedItems().size() == 1) {
                            confirmAndDeleteMessage(item.messageObject, true);
                            return;
                        }
                        try {
                            if (item != null && item.messageObject != null) {
                                Long messageId = item.messageObject.id;
                                Long documentId = item.messageObject.documentId;
                                messageIds.add(messageId);
                                documentIds.add(documentId);
                                boolean bothDelete = RealmRoomMessage.isBothDelete(item.messageObject.getUpdateOrCreateTime());
                                if (bothDelete)
                                    bothDeleteMessageId.add(messageId);
                            }
                        } catch (NullPointerException e) {
                            e.printStackTrace();
                        }
                    }
                    if (chatType == CHAT && !isCloudRoom && bothDeleteMessageId.size() > 0 && mAdapter.getSelectedItems().iterator().next().messageObject.userId == AccountManager.getInstance().getCurrentUser().getId()) {
                        String delete;
                        String textCheckBox = getContext().getResources().getString(R.string.st_checkbox_delete) + " " + title;
                        delete = getContext().getResources().getString(R.string.st_desc_deletes);
                        new MaterialDialog.Builder(getContext()).content(delete).title(R.string.message).positiveText(R.string.ok).negativeText(R.string.cancel).onPositive((dialog, which) -> {
                            if (!dialog.isPromptCheckBoxChecked()) {
                                bothDeleteMessageId = null;
                            }
                            getMessageController().deleteSelectedMessage(chatType.getNumber(), mRoomId, messageIds, documentIds, bothDeleteMessageId);
                        // deleteSelectedMessageFromAdapter(messageIds);
                        }).checkBoxPrompt(textCheckBox, false, null).show();
                    } else {
                        new MaterialDialog.Builder(getActivity()).title(R.string.message).content(getActivity().getResources().getString(R.string.st_desc_deletes)).positiveText(R.string.ok).negativeText(R.string.cancel).onPositive((dialog, which) -> {
                            bothDeleteMessageId = null;
                            getMessageController().deleteSelectedMessage(chatType.getNumber(), mRoomId, messageIds, documentIds, bothDeleteMessageId);
                        // deleteSelectedMessageFromAdapter(messageIds);
                        }).show();
                    }
                });
                break;
        }
    });
    searchEditText = searchFieldItem.getSearchEditText();
    mToolbar.setBackIcon(new BackDrawable(false));
    verifiedIcon = mToolbar.addVerifiedChannelsIcon();
    muteIcon = mToolbar.addMuteIcon();
    ToolbarItems toolbarItems = mToolbar.createToolbarItems();
    toolbarItems.setBackground(null);
    moreItem = toolbarItems.addItemWithWidth(moreTag, R.string.icon_other_vertical_dots, 48);
    callItem = toolbarItems.addItemWithWidth(voiceCallTag, R.string.icon_voice_call, 48);
    createActionMode();
    rootView.addView(mToolbar, LayoutCreator.createFrame(LayoutCreator.MATCH_PARENT, 60, Gravity.TOP));
    notifyFrameLayout.addView(rootView, LayoutCreator.createFrame(LayoutCreator.MATCH_PARENT, LayoutCreator.MATCH_PARENT));
    keyboardContainer = rootView.findViewById(R.id.fl_chat_keyboardContainer);
    sendMoney = rootView.findViewById(R.id.btn_chatRoom_wallet);
    /**
     * init chat box edit text and send item because we need change this color in dark mode!
     */
    edtChat = rootView.findViewById(R.id.et_chatRoom_writeMessage);
    edtChat.setGravity(Gravity.CENTER_VERTICAL);
    edtChat.setListener(this::chatMotionEvent);
    imvSendButton = rootView.findViewById(R.id.btn_chatRoom_send);
    editTextProgress = rootView.findViewById(R.id.editTextProgress);
    chatRoom_send_container = rootView.findViewById(R.id.chatRoom_send_container);
    getEventManager().addObserver(EventManager.CALL_STATE_CHANGED, this);
    getEventManager().addObserver(EventManager.EMOJI_LOADED, this);
    getEventManager().addObserver(EventManager.ON_MESSAGE_DELETE, this);
    getEventManager().addObserver(EventManager.ON_EDIT_MESSAGE, this);
    getEventManager().addObserver(EventManager.ON_PINNED_MESSAGE, this);
    getEventManager().addObserver(EventManager.CHAT_CLEAR_MESSAGE, this);
    getEventManager().addObserver(EventManager.CHANNEL_ADD_VOTE, this);
    getEventManager().addObserver(EventManager.CHANNEL_GET_VOTE, this);
    getEventManager().addObserver(EventManager.CHANNEL_UPDATE_VOTE, this);
    getEventManager().addObserver(EventManager.CHANNEL_UPDATE_VOTE, this);
    getEventManager().addObserver(EventManager.CHAT_UPDATE_STATUS, this);
    getEventManager().addObserver(EventManager.MEDIA_PLAYER_STATE_CHANGED, this);
    getEventManager().addObserver(EventManager.NEXT_VOICE, this);
    getEventManager().addObserver(EventManager.ON_FILE_PICKED_FROM_INTENT, this);
    if (twoPaneMode)
        EventManager.getInstance(AccountManager.selectedAccount).addObserver(EventManager.CHAT_BACKGROUND_CHANGED, this);
    return attachToSwipeBack(notifyFrameLayout);
}
Also used : ThumbnailUtils(android.media.ThumbnailUtils) Bundle(android.os.Bundle) HelperNotification(net.iGap.helper.HelperNotification) StructBottomSheetForward(net.iGap.module.structs.StructBottomSheetForward) ProgressBar(android.widget.ProgressBar) NonNull(androidx.annotation.NonNull) FileLog(net.iGap.helper.FileLog) UploadObject(net.iGap.module.upload.UploadObject) IMAGE_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.IMAGE_VALUE) ToolbarItem(net.iGap.messenger.ui.toolBar.ToolbarItem) AppCompatCheckBox(androidx.appcompat.widget.AppCompatCheckBox) NewChatItemHolder(net.iGap.adapter.items.chat.NewChatItemHolder) GroupChatRole(net.iGap.module.enums.GroupChatRole) HelperSetAction(net.iGap.helper.HelperSetAction) OnBotClick(net.iGap.observers.interfaces.OnBotClick) Handler(android.os.Handler) MediaStore(android.provider.MediaStore) Map(java.util.Map) OnChatSendMessageResponse(net.iGap.observers.interfaces.OnChatSendMessageResponse) ClipboardManager(android.content.ClipboardManager) CallActivity(net.iGap.activities.CallActivity) HelperError(net.iGap.helper.HelperError) DOWN(net.iGap.proto.ProtoClientGetRoomHistory.ClientGetRoomHistory.Direction.DOWN) GIF_TEXT(net.iGap.proto.ProtoGlobal.RoomMessageType.GIF_TEXT) RequestClientSubscribeToRoom(net.iGap.request.RequestClientSubscribeToRoom) ContextCompat(androidx.core.content.ContextCompat) HelperFragment(net.iGap.helper.HelperFragment) Log(android.util.Log) R.id.ac_ll_parent(net.iGap.R.id.ac_ll_parent) Realm(io.realm.Realm) HelperCalander(net.iGap.helper.HelperCalander) NumberTextView(net.iGap.messenger.ui.toolBar.NumberTextView) RealmObjectChangeListener(io.realm.RealmObjectChangeListener) RealmRoom(net.iGap.realm.RealmRoom) CHAT(net.iGap.proto.ProtoGlobal.Room.Type.CHAT) VIDEO(net.iGap.proto.ProtoGlobal.RoomMessageType.VIDEO) CHANNEL(net.iGap.proto.ProtoGlobal.Room.Type.CHANNEL) SoundPool(android.media.SoundPool) CountDownLatch(java.util.concurrent.CountDownLatch) RequestChatUpdateDraft(net.iGap.request.RequestChatUpdateDraft) OnHelperSetAction(net.iGap.observers.interfaces.OnHelperSetAction) AttachFile.getFilePathFromUri(net.iGap.module.AttachFile.getFilePathFromUri) CLIPBOARD_SERVICE(android.content.Context.CLIPBOARD_SERVICE) RequestChatGetRoom(net.iGap.request.RequestChatGetRoom) RealmCallConfig(net.iGap.realm.RealmCallConfig) SuggestedStickerAdapter(net.iGap.fragments.emoji.SuggestedStickerAdapter) ActivityMain(net.iGap.activities.ActivityMain) BottomSheetBehavior(com.google.android.material.bottomsheet.BottomSheetBehavior) HelperUrl(net.iGap.helper.HelperUrl) AccountManager(net.iGap.module.accountManager.AccountManager) ChatAttachmentPopup(net.iGap.module.dialog.ChatAttachmentPopup) RealmContacts(net.iGap.realm.RealmContacts) ParamWithInitBitmap(net.iGap.helper.avatar.ParamWithInitBitmap) Calendar(java.util.Calendar) WebSettings(android.webkit.WebSettings) ItemTouchHelper(androidx.recyclerview.widget.ItemTouchHelper) Toast(android.widget.Toast) ImageLoadingServiceInjector(net.iGap.module.imageLoaderService.ImageLoadingServiceInjector) IMAGE_TEXT(net.iGap.proto.ProtoGlobal.RoomMessageType.IMAGE_TEXT) AudioItem(net.iGap.adapter.items.chat.AudioItem) RealmRoomAccess(net.iGap.realm.RealmRoomAccess) MessageObject(net.iGap.structs.MessageObject) VideoWithTextItem(net.iGap.adapter.items.chat.VideoWithTextItem) G.twoPaneMode(net.iGap.G.twoPaneMode) AppCompatDelegate(androidx.appcompat.app.AppCompatDelegate) AttachFile.request_code_VIDEO_CAPTURED(net.iGap.module.AttachFile.request_code_VIDEO_CAPTURED) IOException(java.io.IOException) FragmentMediaContainer(net.iGap.messenger.ui.components.FragmentMediaContainer) IResendMessage(net.iGap.observers.interfaces.IResendMessage) EventEditText(net.iGap.module.customView.EventEditText) SharedPreferences(android.content.SharedPreferences) AUDIO_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.AUDIO_VALUE) HelperMimeType(net.iGap.helper.HelperMimeType) RoomObject(net.iGap.helper.RoomObject) NotifyFrameLayout(net.iGap.libs.emojiKeyboard.NotifyFrameLayout) EditText(android.widget.EditText) FileListerDialog(net.iGap.module.FileListerDialog.FileListerDialog) RequestUserContactsBlock(net.iGap.request.RequestUserContactsBlock) ISendPosition(net.iGap.observers.interfaces.ISendPosition) BottomSheetDialog(com.google.android.material.bottomsheet.BottomSheetDialog) JsonObject(com.google.gson.JsonObject) LinearLayout(android.widget.LinearLayout) RequestClientUnsubscribeFromRoom(net.iGap.request.RequestClientUnsubscribeFromRoom) AppUtils(net.iGap.module.AppUtils) PackageManager(android.content.pm.PackageManager) WindowManager(android.view.WindowManager) StickerDialogFragment(net.iGap.fragments.emoji.add.StickerDialogFragment) Animator(android.animation.Animator) Theme(net.iGap.module.Theme) GIF_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.GIF_VALUE) G(net.iGap.G) StatusTextFragment(net.iGap.story.StatusTextFragment) AccelerateDecelerateInterpolator(android.view.animation.AccelerateDecelerateInterpolator) RequestClientGetRoomHistory(net.iGap.request.RequestClientGetRoomHistory) IntentRequests(net.iGap.module.IntentRequests) RealmUserInfo(net.iGap.realm.RealmUserInfo) ACTION_STATE_SWIPE(androidx.recyclerview.widget.ItemTouchHelper.ACTION_STATE_SWIPE) ContentResolver(android.content.ContentResolver) UnreadMessage(net.iGap.adapter.items.chat.UnreadMessage) HelperPermission(net.iGap.helper.HelperPermission) IMessageItem(net.iGap.observers.interfaces.IMessageItem) Gson(com.google.gson.Gson) KeyboardView(net.iGap.libs.emojiKeyboard.KeyboardView) RecyclerView(androidx.recyclerview.widget.RecyclerView) RealmString(net.iGap.realm.RealmString) HelperImageBackColor(net.iGap.helper.HelperImageBackColor) VIDEO_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.VIDEO_VALUE) ParamWithAvatarType(net.iGap.helper.avatar.ParamWithAvatarType) UP(net.iGap.proto.ProtoClientGetRoomHistory.ClientGetRoomHistory.Direction.UP) ProgressWaiting(net.iGap.adapter.items.chat.ProgressWaiting) VIDEO_TEXT(net.iGap.proto.ProtoGlobal.RoomMessageType.VIDEO_TEXT) MessageController(net.iGap.controllers.MessageController) Status(net.iGap.module.downloader.Status) ProtoChannelGetMessagesStats(net.iGap.proto.ProtoChannelGetMessagesStats) ItemBottomSheetForward(net.iGap.adapter.items.ItemBottomSheetForward) DisplayMetrics(android.util.DisplayMetrics) GIF_TEXT_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.GIF_TEXT_VALUE) STORY_REPLY_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.STORY_REPLY_VALUE) OnClientGetRoomMessage(net.iGap.observers.interfaces.OnClientGetRoomMessage) Disposable(io.reactivex.disposables.Disposable) RealmRegisteredInfo(net.iGap.realm.RealmRegisteredInfo) MusicPlayer(net.iGap.module.MusicPlayer) OnGetPermission(net.iGap.observers.interfaces.OnGetPermission) StickerRepository(net.iGap.repository.StickerRepository) ActivityTrimVideo(net.iGap.activities.ActivityTrimVideo) LocationManager(android.location.LocationManager) EditorInfo(android.view.inputmethod.EditorInfo) IOnBackPressed(net.iGap.observers.interfaces.IOnBackPressed) RealmRoomMessageLocation(net.iGap.realm.RealmRoomMessageLocation) AppCompatTextView(androidx.appcompat.widget.AppCompatTextView) ActivityManager(android.app.ActivityManager) GridLayoutManager(androidx.recyclerview.widget.GridLayoutManager) CallManager(net.iGap.viewmodel.controllers.CallManager) HelperGetMessageState(net.iGap.helper.HelperGetMessageState) OnVoiceRecord(net.iGap.observers.interfaces.OnVoiceRecord) RealmList(io.realm.RealmList) RequestClientGetFavoriteMenu(net.iGap.request.RequestClientGetFavoriteMenu) RealmRoomMessage.makeUnreadMessage(net.iGap.realm.RealmRoomMessage.makeUnreadMessage) TimeUtils(net.iGap.module.TimeUtils) AudioManager(android.media.AudioManager) InputMethodManager(android.view.inputmethod.InputMethodManager) FragmentActivity(androidx.fragment.app.FragmentActivity) AnimationUtils(android.view.animation.AnimationUtils) HelperCalander.convertToUnicodeFarsiNumber(net.iGap.helper.HelperCalander.convertToUnicodeFarsiNumber) RequestUserContactsUnblock(net.iGap.request.RequestUserContactsUnblock) MODE_PRIVATE(android.content.Context.MODE_PRIVATE) Build(android.os.Build) RequestUserInfo(net.iGap.request.RequestUserInfo) EmojiView(net.iGap.libs.emojiKeyboard.EmojiView) RequestChannelUpdateDraft(net.iGap.request.RequestChannelUpdateDraft) RealmAdditional(net.iGap.realm.RealmAdditional) JsonSyntaxException(com.google.gson.JsonSyntaxException) LayoutInflater(android.view.LayoutInflater) BadgeView(net.iGap.adapter.items.chat.BadgeView) RealmResults(io.realm.RealmResults) DialogAction(com.afollestad.materialdialogs.DialogAction) MaterialDesignTextView(net.iGap.module.MaterialDesignTextView) IDispatchTochEvent(net.iGap.observers.interfaces.IDispatchTochEvent) Color(android.graphics.Color) CountDownTimer(android.os.CountDownTimer) FileItem(net.iGap.adapter.items.chat.FileItem) StructMessageOption(net.iGap.module.structs.StructMessageOption) Bitmap(android.graphics.Bitmap) HelperSaveFile(net.iGap.helper.HelperSaveFile) STICKER_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.STICKER_VALUE) ViewTreeObserver(android.view.ViewTreeObserver) VIDEO_TEXT_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.VIDEO_TEXT_VALUE) VOICE_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.VOICE_VALUE) R(net.iGap.R) OnConnectionChangeStateChat(net.iGap.observers.interfaces.OnConnectionChangeStateChat) ProtoClientGetRoomHistory(net.iGap.proto.ProtoClientGetRoomHistory) StickerItem(net.iGap.adapter.items.chat.StickerItem) SHOW(net.iGap.module.enums.ProgressState.SHOW) Vibrator(android.os.Vibrator) Activity(android.app.Activity) FastItemAdapter(com.mikepenz.fastadapter.commons.adapters.FastItemAdapter) Arrays(java.util.Arrays) MyLinearLayoutManager(net.iGap.module.MyLinearLayoutManager) RequestClientJoinByUsername(net.iGap.request.RequestClientJoinByUsername) VoiceRecord(net.iGap.module.VoiceRecord) ProtoFileDownload(net.iGap.proto.ProtoFileDownload) Uri(android.net.Uri) FrameLayout(android.widget.FrameLayout) ImageView(android.widget.ImageView) LastSeenTimeUtil(net.iGap.module.LastSeenTimeUtil) Drawable(android.graphics.drawable.Drawable) Manifest(android.Manifest) ProtoClientRoomReport(net.iGap.proto.ProtoClientRoomReport) AdditionalType(net.iGap.module.additionalData.AdditionalType) HelperPermission.showDeniedPermissionMessage(net.iGap.helper.HelperPermission.showDeniedPermissionMessage) Looper(android.os.Looper) DialogAnimation(net.iGap.module.DialogAnimation) Fragment(androidx.fragment.app.Fragment) OnSetAction(net.iGap.observers.interfaces.OnSetAction) Canvas(android.graphics.Canvas) ProgressState(net.iGap.module.enums.ProgressState) RealmConstants(net.iGap.realm.RealmConstants) CardView(androidx.cardview.widget.CardView) OnDeleteChatFinishActivity(net.iGap.observers.interfaces.OnDeleteChatFinishActivity) HelperTracker(net.iGap.helper.HelperTracker) RequestGroupUpdateDraft(net.iGap.request.RequestGroupUpdateDraft) OnLastSeenUpdateTiming(net.iGap.observers.interfaces.OnLastSeenUpdateTiming) OnComplete(net.iGap.observers.interfaces.OnComplete) RealmRoomDraft(net.iGap.realm.RealmRoomDraft) WALLET_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.WALLET_VALUE) Set(java.util.Set) ChatSendMessageUtil(net.iGap.module.ChatSendMessageUtil) ChatMoreItem(net.iGap.model.ChatMoreItem) BotInit(net.iGap.module.BotInit) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) RealmGroupRoom(net.iGap.realm.RealmGroupRoom) Uploader(net.iGap.module.upload.Uploader) StringRes(androidx.annotation.StringRes) JsonArray(com.google.gson.JsonArray) FontIconTextView(net.iGap.module.FontIconTextView) Nullable(androidx.annotation.Nullable) BackDrawable(net.iGap.messenger.ui.toolBar.BackDrawable) HIDE(net.iGap.module.enums.ProgressState.HIDE) Tuple(net.iGap.libs.Tuple) OnGroupAvatarResponse(net.iGap.observers.interfaces.OnGroupAvatarResponse) SHP_SETTING(net.iGap.module.SHP_SETTING) Sort(io.realm.Sort) MyWebViewClient(net.iGap.libs.MyWebViewClient) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) VoiceItem(net.iGap.adapter.items.chat.VoiceItem) InputFilter(android.text.InputFilter) EventManager(net.iGap.observers.eventbus.EventManager) DownloadObject(net.iGap.module.downloader.DownloadObject) TextWatcher(android.text.TextWatcher) OnMessageReceive(net.iGap.observers.interfaces.OnMessageReceive) EmojiManager(net.iGap.libs.emojiKeyboard.emoji.EmojiManager) Config(net.iGap.Config) AttachmentObject(net.iGap.structs.AttachmentObject) StoryViewFragment(net.iGap.story.viewPager.StoryViewFragment) AttachFile.request_code_pic_audi(net.iGap.module.AttachFile.request_code_pic_audi) ImageSpan(android.text.style.ImageSpan) Environment(android.os.Environment) RequestClientGetRoomMessage(net.iGap.request.RequestClientGetRoomMessage) OnChatMessageRemove(net.iGap.observers.interfaces.OnChatMessageRemove) Editable(android.text.Editable) LOCATION_SERVICE(android.content.Context.LOCATION_SERVICE) ArrayList(java.util.ArrayList) VibrationEffect(android.os.VibrationEffect) LOCATION_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.LOCATION_VALUE) RealmChannelExtra(net.iGap.realm.RealmChannelExtra) ConnectionState(net.iGap.module.enums.ConnectionState) HelperGetAction(net.iGap.helper.HelperGetAction) LayoutCreator(net.iGap.helper.LayoutCreator) IMAGE_TEXT_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.IMAGE_TEXT_VALUE) WebChromeClient(android.webkit.WebChromeClient) Toolbar(net.iGap.messenger.ui.toolBar.Toolbar) LogWallet(net.iGap.adapter.items.chat.LogWallet) AvatarHandler(net.iGap.helper.avatar.AvatarHandler) RESULT_CANCELED(android.app.Activity.RESULT_CANCELED) StructWebView(net.iGap.module.structs.StructWebView) StickerSettingFragment(net.iGap.fragments.emoji.remove.StickerSettingFragment) AnimatedStickerItem(net.iGap.adapter.items.chat.AnimatedStickerItem) OnChatEditMessageResponse(net.iGap.observers.interfaces.OnChatEditMessageResponse) File(java.io.File) IItemAdapter(com.mikepenz.fastadapter.IItemAdapter) Gravity(android.view.Gravity) StructIGSticker(net.iGap.fragments.emoji.struct.StructIGSticker) Configuration(android.content.res.Configuration) LocationListener(net.iGap.observers.interfaces.LocationListener) LocationItem(net.iGap.adapter.items.chat.LocationItem) DbManager(net.iGap.module.accountManager.DbManager) CardToCardItem(net.iGap.adapter.items.chat.CardToCardItem) ValueAnimator(android.animation.ValueAnimator) FILE_TEXT_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.FILE_TEXT_VALUE) ImageHelper(net.iGap.helper.ImageHelper) AttachFile.request_code_pic_file(net.iGap.module.AttachFile.request_code_pic_file) IMAGE(net.iGap.proto.ProtoGlobal.RoomMessageType.IMAGE) RealmRoomMessage.makeSeenAllMessageOfRoom(net.iGap.realm.RealmRoomMessage.makeSeenAllMessageOfRoom) AppCompatImageView(androidx.appcompat.widget.AppCompatImageView) ResendMessage(net.iGap.module.ResendMessage) AttachFile(net.iGap.module.AttachFile) LOG_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.LOG_VALUE) LogWalletCardToCard(net.iGap.adapter.items.chat.LogWalletCardToCard) OnGetFavoriteMenu(net.iGap.observers.interfaces.OnGetFavoriteMenu) RealmChannelRoom(net.iGap.realm.RealmChannelRoom) AUDIO_TEXT_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.AUDIO_TEXT_VALUE) ContactItem(net.iGap.adapter.items.chat.ContactItem) LISTENED_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageStatus.LISTENED_VALUE) BottomSheetFragment(net.iGap.module.dialog.bottomsheet.BottomSheetFragment) View(android.view.View) Animation(android.view.animation.Animation) WebView(android.webkit.WebView) OnChatMessageSelectionChanged(net.iGap.observers.interfaces.OnChatMessageSelectionChanged) RealmRoomMessageContact(net.iGap.realm.RealmRoomMessageContact) StoryPagerFragment(net.iGap.story.StoryPagerFragment) ContactUtils(net.iGap.module.ContactUtils) ParentChatMoneyTransferFragment(net.iGap.fragments.chatMoneyTransfer.ParentChatMoneyTransferFragment) MessagesAdapter(net.iGap.adapter.MessagesAdapter) FILE_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.FILE_VALUE) AdapterDrBot(net.iGap.adapter.AdapterDrBot) OnUpdateUserOrRoomInfo(net.iGap.observers.interfaces.OnUpdateUserOrRoomInfo) RequestClientRoomReport(net.iGap.request.RequestClientRoomReport) HelperGetDataFromOtherApp(net.iGap.helper.HelperGetDataFromOtherApp) ObjectAnimator(android.animation.ObjectAnimator) PassCode(net.iGap.model.PassCode) StructMessageInfo(net.iGap.module.structs.StructMessageInfo) InputType(android.text.InputType) StructIGStickerGroup(net.iGap.fragments.emoji.struct.StructIGStickerGroup) ViewStubCompat(androidx.appcompat.widget.ViewStubCompat) Additional(net.iGap.module.enums.Additional) TEXT_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.TEXT_VALUE) LogWalletTopup(net.iGap.adapter.items.chat.LogWalletTopup) ViewGroup(android.view.ViewGroup) OnForwardBottomSheet(net.iGap.observers.interfaces.OnForwardBottomSheet) OnUserUpdateStatus(net.iGap.observers.interfaces.OnUserUpdateStatus) HelperLog(net.iGap.helper.HelperLog) OnChatSendMessage(net.iGap.observers.interfaces.OnChatSendMessage) List(java.util.List) CompositeDisposable(io.reactivex.disposables.CompositeDisposable) TextView(android.widget.TextView) FragmentSettingAddStickers(net.iGap.fragments.emoji.add.FragmentSettingAddStickers) CONTACT_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageType.CONTACT_VALUE) RequestQueue(net.iGap.request.RequestQueue) RelativeLayout(android.widget.RelativeLayout) TextItem(net.iGap.adapter.items.chat.TextItem) IUpdateLogItem(net.iGap.observers.interfaces.IUpdateLogItem) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) NotNull(org.jetbrains.annotations.NotNull) OpenBottomSheetItem(net.iGap.observers.interfaces.OpenBottomSheetItem) Context(android.content.Context) AndroidUtils(net.iGap.module.AndroidUtils) SEEN_VALUE(net.iGap.proto.ProtoGlobal.RoomMessageStatus.SEEN_VALUE) KeyEvent(android.view.KeyEvent) ResourcesCompat(androidx.core.content.res.ResourcesCompat) GifWithTextItem(net.iGap.adapter.items.chat.GifWithTextItem) RequestSignalingGetConfiguration(net.iGap.request.RequestSignalingGetConfiguration) OnChatDelete(net.iGap.observers.interfaces.OnChatDelete) Intent(android.content.Intent) HashMap(java.util.HashMap) RealmStickerItem(net.iGap.realm.RealmStickerItem) SUID(net.iGap.module.SUID) ClipData(android.content.ClipData) OnUserInfoResponse(net.iGap.observers.interfaces.OnUserInfoResponse) SuppressLint(android.annotation.SuppressLint) MotionEvent(android.view.MotionEvent) AnimatorSet(android.animation.AnimatorSet) TimeItem(net.iGap.adapter.items.chat.TimeItem) RealmRoomMessage(net.iGap.realm.RealmRoomMessage) Cursor(android.database.Cursor) LogWalletBill(net.iGap.adapter.items.chat.LogWalletBill) ACTIVITY_SERVICE(android.content.Context.ACTIVITY_SERVICE) CONTACT(net.iGap.proto.ProtoGlobal.RoomMessageType.CONTACT) ToolbarItems(net.iGap.messenger.ui.toolBar.ToolbarItems) FileWriter(java.io.FileWriter) ProtoResponse(net.iGap.proto.ProtoResponse) MessageLoader(net.iGap.module.MessageLoader) LogItem(net.iGap.adapter.items.chat.LogItem) HelperString(net.iGap.helper.HelperString) ViewMaker(net.iGap.adapter.items.chat.ViewMaker) StructBottomSheet(net.iGap.module.structs.StructBottomSheet) OnFileSelectedListener(net.iGap.module.FileListerDialog.OnFileSelectedListener) ProtoGlobal(net.iGap.proto.ProtoGlobal) ImageWithTextItem(net.iGap.adapter.items.chat.ImageWithTextItem) ChannelChatRole(net.iGap.module.enums.ChannelChatRole) GROUP(net.iGap.proto.ProtoGlobal.Room.Type.GROUP) Collections(java.util.Collections) MimeTypeMap(android.webkit.MimeTypeMap) AbstractMessage(net.iGap.adapter.items.chat.AbstractMessage) RealmAttachment(net.iGap.realm.RealmAttachment) RealmQuery(io.realm.RealmQuery) BackDrawable(net.iGap.messenger.ui.toolBar.BackDrawable) CallActivity(net.iGap.activities.CallActivity) RealmString(net.iGap.realm.RealmString) HelperString(net.iGap.helper.HelperString) OnGetPermission(net.iGap.observers.interfaces.OnGetPermission) KeyEvent(android.view.KeyEvent) ActivityMain(net.iGap.activities.ActivityMain) Toolbar(net.iGap.messenger.ui.toolBar.Toolbar) EventEditText(net.iGap.module.customView.EventEditText) EditText(android.widget.EditText) AbstractMessage(net.iGap.adapter.items.chat.AbstractMessage) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) FragmentMediaContainer(net.iGap.messenger.ui.components.FragmentMediaContainer) Bundle(android.os.Bundle) Intent(android.content.Intent) IOException(java.io.IOException) RealmChannelRoom(net.iGap.realm.RealmChannelRoom) ToolbarItems(net.iGap.messenger.ui.toolBar.ToolbarItems) NotifyFrameLayout(net.iGap.libs.emojiKeyboard.NotifyFrameLayout) Nullable(androidx.annotation.Nullable)

Example 2 with FragmentMediaContainer

use of net.iGap.messenger.ui.components.FragmentMediaContainer in project iGap-Android by KianIranian-STDG.

the class FragmentCall method onViewCreated.

@Override
public void onViewCreated(@NotNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    HelperTracker.sendTracker(HelperTracker.TRACKER_CALL_PAGE);
    if (getContext() != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        StatusBarUtil.setColor(getActivity(), new Theme().getPrimaryDarkColor(getContext()), 50);
    }
    callToolbar = new Toolbar(getContext());
    callToolbar.setTitle(isAppRtl ? R.string.logo_igap_fa : R.string.logo_igap_en);
    ToolbarItems toolbarItems = callToolbar.createToolbarItems();
    toolbarItems.addItemWithWidth(createCallTag, R.string.icon_add, 54);
    toolbarItems.addItemWithWidth(codeScannerTag, R.string.icon_QR_code, 54);
    callToolbar.setListener(i -> {
        switch(i) {
            case -1:
                setViewState(!mIsMultiSelectEnable);
                hideActionMode();
                mSelectedLogList.clear();
                break;
            case createCallTag:
                showContactListForCall();
                break;
            case codeScannerTag:
                onCodeScannerClickListener();
                break;
            case deleteAllTag:
                if (getRequestManager().isUserLogin()) {
                    new MaterialDialog.Builder(getContext()).title(R.string.clean_log).content(R.string.are_you_sure_clear_call_logs).positiveText(R.string.B_ok).onPositive((dialog, which) -> {
                        DbManager.getInstance().doRealmTask(realm -> {
                            // ToDo: add callback to proto request
                            setViewState(false);
                            RealmCallLog realmCallLog = realm.where(RealmCallLog.class).findAll().sort("offerTime", Sort.DESCENDING).first();
                            new RequestSignalingClearLog().signalingClearLog(realmCallLog.getId());
                            view.findViewById(R.id.empty_layout).setVisibility(View.VISIBLE);
                            mSelectedLogList.clear();
                        });
                        hideActionMode();
                    }).negativeText(R.string.B_cancel).show();
                } else {
                    HelperError.showSnackMessage(getString(R.string.there_is_no_connection_to_server), false);
                }
                break;
            case deleteTag:
                if (mSelectedLogList.size() == 0) {
                    Toast.makeText(_mActivity, getString(R.string.no_item_selected), Toast.LENGTH_SHORT).show();
                    return;
                }
                if (getRequestManager().isUserLogin()) {
                    new MaterialDialog.Builder(getActivity()).title(R.string.clean_log).content(R.string.are_you_sure_clear_call_log).positiveText(R.string.B_ok).onPositive((dialog, which) -> {
                        try {
                            List<Long> logIds = new ArrayList<>();
                            for (int j = 0; j < mSelectedLogList.size(); j++) {
                                logIds.add(mSelectedLogList.get(j).getLogId());
                            }
                            new RequestSignalingClearLog().signalingClearLog(logIds);
                            setViewState(false);
                            mSelectedLogList.clear();
                            if (realmResults.size() == 0) {
                                view.findViewById(R.id.empty_layout).setVisibility(View.VISIBLE);
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        hideActionMode();
                    }).negativeText(R.string.B_cancel).show();
                } else {
                    HelperError.showSnackMessage(getString(R.string.there_is_no_connection_to_server), false);
                }
                break;
        }
    });
    createToolbarActions();
    mediaContainer = new FragmentMediaContainer(getContext(), this);
    mediaContainer.setListener(i -> {
        switch(i) {
            case FragmentMediaContainer.CALL_TAG:
                getActivity().startActivity(new Intent(getContext(), CallActivity.class));
                break;
            case FragmentMediaContainer.MEDIA_TAG:
                if (!MusicPlayer.isVoice) {
                    Intent intent = new Intent(context, ActivityMain.class);
                    intent.putExtra(ActivityMain.openMediaPlayer, true);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    getActivity().startActivity(intent);
                }
                break;
            case FragmentMediaContainer.PLAY_TAG:
                break;
        }
    });
    ViewGroup layoutToolbar = view.findViewById(R.id.fc_layout_toolbar);
    layoutToolbar.addView(mediaContainer, LayoutCreator.createFrame(LayoutCreator.MATCH_PARENT, 38, Gravity.BOTTOM, 0, 60, 0, 0));
    layoutToolbar.addView(callToolbar, LayoutCreator.createFrame(LayoutCreator.MATCH_PARENT, 64, Gravity.TOP));
    mBtnAllCalls = view.findViewById(R.id.fc_btn_all_calls);
    mBtnMissedCalls = view.findViewById(R.id.fc_btn_missed_calls);
    mBtnCanceledCalls = view.findViewById(R.id.fc_btn_canceled_calls);
    mBtnIncomingCalls = view.findViewById(R.id.fc_btn_incoming_calls);
    mBtnOutgoingCalls = view.findViewById(R.id.fc_btn_outgoing_calls);
    progressBar = view.findViewById(R.id.fc_progress_bar_waiting);
    emptuListView = view.findViewById(R.id.empty_layout);
    progressBar = view.findViewById(R.id.fc_progress_bar_waiting);
    mRecyclerView = view.findViewById(R.id.fc_recycler_view_call);
    mFiltersLayout = view.findViewById(R.id.fc_layout_filters);
    setEnableButton(mSelectedStatus);
    mRecyclerView = view.findViewById(R.id.fc_recycler_view_call);
    mRecyclerView.setItemAnimator(null);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
    if (realmResults == null) {
        realmResults = DbManager.getInstance().doRealmTask(realm -> {
            return getRealmResult(mSelectedStatus, realm);
        });
    }
    realmResults.addChangeListener((realmCallLogs, changeSet) -> {
        checkListIsEmpty();
    });
    checkListIsEmpty();
    mRecyclerView.setAdapter(new CallAdapter(realmResults));
    mOffset = 0;
    getLogListWithOffset();
    mRecyclerView.getAdapter().registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {

        @Override
        public void onItemRangeInserted(int positionStart, int itemCount) {
            super.onItemRangeInserted(positionStart, itemCount);
            checkListIsEmpty();
        }

        @Override
        public void onItemRangeRemoved(int positionStart, int itemCount) {
            super.onItemRangeRemoved(positionStart, itemCount);
            checkListIsEmpty();
        }
    });
    onScrollListener = new RecyclerView.OnScrollListener() {

        @Override
        public void onScrolled(@NotNull RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            if (isThereAnyMoreItemToLoad) {
                if (!isSendRequestForLoading) {
                    int lastVisiblePosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findLastVisibleItemPosition();
                    if (lastVisiblePosition + 15 >= mOffset) {
                        getLogListWithOffset();
                    }
                }
            }
        }
    };
    mRecyclerView.addOnScrollListener(onScrollListener);
    G.iSignalingGetCallLog = (size, signalingLogList) -> {
        if (signalingLogList != null) {
            G.handler.post(() -> progressBar.setVisibility(View.GONE));
        }
        if (size == -1) {
            if (attampOnError < 2) {
                isSendRequestForLoading = false;
                attampOnError++;
            } else {
                isThereAnyMoreItemToLoad = false;
                mRecyclerView.removeOnScrollListener(onScrollListener);
            }
        } else if (size == 0) {
            isThereAnyMoreItemToLoad = false;
            mRecyclerView.removeOnScrollListener(onScrollListener);
        } else {
            isSendRequestForLoading = false;
            mOffset += size;
        }
    };
    mBtnAllCalls.setOnClickListener(v -> {
        if (mSelectedStatus != ProtoSignalingGetLog.SignalingGetLog.Filter.ALL) {
            setEnableButton(ProtoSignalingGetLog.SignalingGetLog.Filter.ALL);
            getCallLogsFromRealm(ProtoSignalingGetLog.SignalingGetLog.Filter.ALL);
        }
    });
    mBtnMissedCalls.setOnClickListener(v -> {
        if (mSelectedStatus != ProtoSignalingGetLog.SignalingGetLog.Filter.MISSED) {
            setEnableButton(ProtoSignalingGetLog.SignalingGetLog.Filter.MISSED);
            getCallLogsFromRealm(ProtoSignalingGetLog.SignalingGetLog.Filter.MISSED);
        }
    });
    mBtnOutgoingCalls.setOnClickListener(v -> {
        if (mSelectedStatus != ProtoSignalingGetLog.SignalingGetLog.Filter.OUTGOING) {
            setEnableButton(ProtoSignalingGetLog.SignalingGetLog.Filter.OUTGOING);
            getCallLogsFromRealm(ProtoSignalingGetLog.SignalingGetLog.Filter.OUTGOING);
        }
    });
    mBtnIncomingCalls.setOnClickListener(v -> {
        if (mSelectedStatus != ProtoSignalingGetLog.SignalingGetLog.Filter.INCOMING) {
            setEnableButton(ProtoSignalingGetLog.SignalingGetLog.Filter.INCOMING);
            getCallLogsFromRealm(ProtoSignalingGetLog.SignalingGetLog.Filter.INCOMING);
        }
    });
    mBtnCanceledCalls.setOnClickListener(v -> {
        if (mSelectedStatus != ProtoSignalingGetLog.SignalingGetLog.Filter.CANCELED) {
            setEnableButton(ProtoSignalingGetLog.SignalingGetLog.Filter.CANCELED);
            getCallLogsFromRealm(ProtoSignalingGetLog.SignalingGetLog.Filter.CANCELED);
        }
    });
    // Todo: fixed it, cause load view with delay
    setViewState(mIsMultiSelectEnable);
}
Also used : Bundle(android.os.Bundle) DateUtils(android.text.format.DateUtils) AppUtils(net.iGap.module.AppUtils) ProgressBar(android.widget.ProgressBar) ToolbarItem(net.iGap.messenger.ui.toolBar.ToolbarItem) Animator(android.animation.Animator) Theme(net.iGap.module.Theme) G(net.iGap.G) G.isAppRtl(net.iGap.G.isAppRtl) Handler(android.os.Handler) Fragment(androidx.fragment.app.Fragment) View(android.view.View) CallActivity(net.iGap.activities.CallActivity) HelperError(net.iGap.helper.HelperError) RecyclerView(androidx.recyclerview.widget.RecyclerView) HelperFragment(net.iGap.helper.HelperFragment) VIDEO_CALLING(net.iGap.proto.ProtoSignalingOffer.SignalingOffer.Type.VIDEO_CALLING) HelperTracker(net.iGap.helper.HelperTracker) ParamWithAvatarType(net.iGap.helper.avatar.ParamWithAvatarType) Realm(io.realm.Realm) HelperCalander(net.iGap.helper.HelperCalander) ObjectAnimator(android.animation.ObjectAnimator) NumberTextView(net.iGap.messenger.ui.toolBar.NumberTextView) ProtoSignalingOffer(net.iGap.proto.ProtoSignalingOffer) ViewGroup(android.view.ViewGroup) List(java.util.List) TextView(android.widget.TextView) Nullable(androidx.annotation.Nullable) BackDrawable(net.iGap.messenger.ui.toolBar.BackDrawable) RealmRecyclerViewAdapter(io.realm.RealmRecyclerViewAdapter) MusicPlayer(net.iGap.module.MusicPlayer) Sort(io.realm.Sort) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) NotNull(org.jetbrains.annotations.NotNull) EmojiManager(net.iGap.libs.emojiKeyboard.emoji.EmojiManager) ResourcesCompat(androidx.core.content.res.ResourcesCompat) ActivityMain(net.iGap.activities.ActivityMain) AccountManager(net.iGap.module.accountManager.AccountManager) Intent(android.content.Intent) TimeUtils(net.iGap.module.TimeUtils) StatusBarUtil(net.iGap.module.StatusBarUtil) ArrayList(java.util.ArrayList) RealmCallLog(net.iGap.realm.RealmCallLog) MotionEvent(android.view.MotionEvent) Toast(android.widget.Toast) AnimatorSet(android.animation.AnimatorSet) LayoutCreator(net.iGap.helper.LayoutCreator) ProtoSignalingGetLog(net.iGap.proto.ProtoSignalingGetLog) Build(android.os.Build) Toolbar(net.iGap.messenger.ui.toolBar.Toolbar) AvatarHandler(net.iGap.helper.avatar.AvatarHandler) ToolbarItems(net.iGap.messenger.ui.toolBar.ToolbarItems) LayoutInflater(android.view.LayoutInflater) RequestSignalingClearLog(net.iGap.request.RequestSignalingClearLog) RealmResults(io.realm.RealmResults) CheckBox(net.iGap.module.customView.CheckBox) MaterialDesignTextView(net.iGap.module.MaterialDesignTextView) ScanCodeQRCodePaymentFragment(net.iGap.fragments.qrCodePayment.fragments.ScanCodeQRCodePaymentFragment) FragmentMediaContainer(net.iGap.messenger.ui.components.FragmentMediaContainer) CircleImageView(net.iGap.module.CircleImageView) Gravity(android.view.Gravity) ViewMaker(net.iGap.adapter.items.chat.ViewMaker) R(net.iGap.R) DbManager(net.iGap.module.accountManager.DbManager) RequestSignalingGetLog(net.iGap.request.RequestSignalingGetLog) FragmentMediaContainer(net.iGap.messenger.ui.components.FragmentMediaContainer) ViewGroup(android.view.ViewGroup) ArrayList(java.util.ArrayList) RequestSignalingClearLog(net.iGap.request.RequestSignalingClearLog) Intent(android.content.Intent) CallActivity(net.iGap.activities.CallActivity) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) RealmCallLog(net.iGap.realm.RealmCallLog) ToolbarItems(net.iGap.messenger.ui.toolBar.ToolbarItems) Theme(net.iGap.module.Theme) RecyclerView(androidx.recyclerview.widget.RecyclerView) Toolbar(net.iGap.messenger.ui.toolBar.Toolbar)

Example 3 with FragmentMediaContainer

use of net.iGap.messenger.ui.components.FragmentMediaContainer in project iGap-Android by KianIranian-STDG.

the class FragmentShearedMedia method initComponent.

private void initComponent(View view) {
    FrameLayout toolbarLayout = view.findViewById(R.id.frg_shared_media_ll_toolbar_layout);
    FragmentMediaContainer mediaContainer = new FragmentMediaContainer(getContext(), this);
    mediaContainer.setListener(i -> {
        switch(i) {
            case FragmentMediaContainer.CALL_TAG:
                getActivity().startActivity(new Intent(getContext(), CallActivity.class));
                break;
            case FragmentMediaContainer.MEDIA_TAG:
                if (!MusicPlayer.isVoice) {
                    Intent intent = new Intent(context, ActivityMain.class);
                    intent.putExtra(ActivityMain.openMediaPlayer, true);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    getActivity().startActivity(intent);
                }
                break;
            case FragmentMediaContainer.PLAY_TAG:
                break;
        }
    });
    sharedMediaToolbar = new Toolbar(getContext());
    sharedMediaToolbar.setBackIcon(new BackDrawable(false));
    sharedMediaToolbar.createToolbarItems();
    sharedMediaToolbar.setTitle(getString(R.string.shared_media));
    sharedMediaToolbar.setListener(i -> {
        switch(i) {
            case -1:
                if (isSelectedMode) {
                    adapter.resetSelected();
                    sharedMediaToolbar.hideActionToolbar();
                    return;
                }
                popBackStackFragment();
                break;
            case deleteTag:
                DbManager.getInstance().doRealmTask(realm -> {
                    String count = SelectedList.size() + "";
                    final RealmRoom realmRoom = RealmRoom.getRealmRoom(realm, roomId);
                    if (roomType == ProtoGlobal.Room.Type.CHAT && bothDeleteMessageId != null && bothDeleteMessageId.size() > 0) {
                        // TODO: 1/10/21 OPTIMAZE CODE
                        // show both Delete check box
                        String delete;
                        if (HelperCalander.isPersianUnicode) {
                            delete = HelperCalander.convertToUnicodeFarsiNumber(requireContext().getResources().getString(R.string.st_desc_delete) + count);
                        } else {
                            delete = HelperCalander.convertToUnicodeFarsiNumber(requireContext().getResources().getString(R.string.st_desc_delete) + "the");
                        }
                        new MaterialDialog.Builder(getContext()).limitIconToDefaultSize().content(delete).title(R.string.message).positiveText(R.string.ok).negativeText(R.string.cancel).onPositive((dialog, which) -> {
                            if (!dialog.isPromptCheckBoxChecked()) {
                                bothDeleteMessageId = null;
                            }
                            if (realmRoom != null) {
                                ArrayList<Long> selectedListForDel = new ArrayList<>();
                                ArrayList<Long> selectedDocumentListForDel = new ArrayList<>();
                                for (StructShearedMedia item : SelectedList) {
                                    selectedListForDel.add(item.messageId);
                                    selectedDocumentListForDel.add(item.documentId);
                                }
                                getMessageController().deleteSelectedMessage(roomType.getNumber(), roomId, selectedListForDel, selectedDocumentListForDel, bothDeleteMessageId);
                            }
                            resetItems();
                        }).checkBoxPromptRes(R.string.delete_item_dialog, false, null).show();
                    } else {
                        new MaterialDialog.Builder(requireContext()).title(R.string.message).content(getContext().getResources().getString(R.string.st_desc_delete) + count).positiveText(R.string.ok).negativeText(R.string.cancel).onPositive(new MaterialDialog.SingleButtonCallback() {

                            @Override
                            public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                                bothDeleteMessageId = null;
                                if (realmRoom != null) {
                                    ArrayList<Long> messageIds = new ArrayList<>();
                                    ArrayList<Long> documentIds = new ArrayList<>();
                                    for (StructShearedMedia item : SelectedList) {
                                        messageIds.add(item.messageId);
                                        documentIds.add(item.documentId);
                                    }
                                    getMessageController().deleteSelectedMessage(roomType.getNumber(), roomId, messageIds, documentIds, bothDeleteMessageId);
                                }
                                resetItems();
                            }
                        }).show();
                    }
                });
                break;
            case forwardTag:
                ArrayList<MessageObject> messageInfos = new ArrayList<>(SelectedList.size());
                for (StructShearedMedia media : SelectedList) {
                    messageInfos.add(MessageObject.create(media.item));
                }
                FragmentChat.mForwardMessages = messageInfos;
                adapter.resetSelected();
                if (getActivity() instanceof ActivityMain) {
                    ((ActivityMain) getActivity()).setForwardMessage(true);
                    ((ActivityMain) getActivity()).removeAllFragmentFromMain();
                /*new HelperFragment(getActivity().getSupportFragmentManager()).popBackStack(3);*/
                }
                break;
            case seeInChatTag:
                if (SelectedList.size() == 1) {
                    long messageId = SelectedList.get(0).messageId;
                    long documentId = SelectedList.get(0).documentId;
                    RealmRoomMessage.setGap(messageId, documentId);
                    goToPositionFromShardMedia.goToPosition(messageId, documentId);
                    goToPosition = true;
                    popBackStackFragment();
                    adapter.resetSelected();
                    popBackStackFragment();
                }
                break;
        }
    });
    createActionMode();
    toolbarLayout.addView(mediaContainer, LayoutCreator.createFrame(LayoutCreator.MATCH_PARENT, 39, Gravity.BOTTOM, 0, 60, 0, 0));
    toolbarLayout.addView(sharedMediaToolbar);
    progressBar = view.findViewById(R.id.asm_progress_bar_waiting);
    AppUtils.setProgresColler(progressBar);
    mediaTypesLayout = view.findViewById(R.id.asm_ll_media_types_buttons);
    complete = new OnComplete() {

        @Override
        public void complete(boolean result, String messageOne, String MessageTwo) {
            int whatAction = 0;
            String number = "0";
            if (messageOne != null) {
                if (messageOne.length() > 0)
                    whatAction = Integer.parseInt(messageOne);
            }
            if (MessageTwo != null)
                if (MessageTwo.length() > 0)
                    number = MessageTwo;
            callBack(result, whatAction, number);
        }
    };
    recyclerView = view.findViewById(R.id.asm_recycler_view_sheared_media);
    recyclerView.setItemViewCacheSize(400);
    recyclerView.setItemAnimator(null);
    onScrollListener = new RecyclerView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(final RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            if (isThereAnyMoreItemToLoad) {
                if (!isSendRequestForLoading) {
                    int lastVisiblePosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findLastVisibleItemPosition();
                    if (lastVisiblePosition + 30 >= offset) {
                        new RequestClientSearchRoomHistory().clientSearchRoomHistory(roomId, nextMessageId, nextDocumentId, mFilter);
                        isSendRequestForLoading = true;
                        progressBar.setVisibility(View.VISIBLE);
                    }
                }
            }
        }
    };
    recyclerView.addOnScrollListener(onScrollListener);
    checkSelectedDefaultTab();
    makeSharedTypesViews();
    checkSharedButtonsBackgrounds();
}
Also used : ArrayList(java.util.ArrayList) BackDrawable(net.iGap.messenger.ui.toolBar.BackDrawable) CallActivity(net.iGap.activities.CallActivity) ActivityMain(net.iGap.activities.ActivityMain) NonNull(androidx.annotation.NonNull) RealmRoom(net.iGap.realm.RealmRoom) Toolbar(net.iGap.messenger.ui.toolBar.Toolbar) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) FragmentMediaContainer(net.iGap.messenger.ui.components.FragmentMediaContainer) RequestClientSearchRoomHistory(net.iGap.request.RequestClientSearchRoomHistory) OnComplete(net.iGap.observers.interfaces.OnComplete) Intent(android.content.Intent) DialogAction(com.afollestad.materialdialogs.DialogAction) FrameLayout(android.widget.FrameLayout) RecyclerView(androidx.recyclerview.widget.RecyclerView) MessageObject(net.iGap.structs.MessageObject)

Example 4 with FragmentMediaContainer

use of net.iGap.messenger.ui.components.FragmentMediaContainer in project iGap-Android by KianIranian-STDG.

the class MainFragment method createView.

@Override
public View createView(Context context) {
    if (getContext() != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        StatusBarUtil.setColor(getActivity(), new Theme().getPrimaryDarkColor(getContext()), 50);
    }
    fragmentView = new FrameLayout(context);
    FrameLayout layout = (FrameLayout) fragmentView;
    initRecyclerView(context);
    layout.addView(recyclerView, LayoutCreator.createFrame(LayoutCreator.MATCH_PARENT, LayoutCreator.MATCH_PARENT));
    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {

        private boolean scrollUpdated;

        private boolean scrollingManually;

        private int prevTop;

        private int prevPosition;

        @Override
        public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            scrollingManually = newState == RecyclerView.SCROLL_STATE_DRAGGING;
        }

        @Override
        public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
            firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();
            View view = layoutManager.getChildAt(0);
            if (firstVisibleItemPosition > 0 && view != null) {
                firstVisibleItemPositionOffset = view.getTop();
            }
            if (!ClientGetRoomListResponse.roomListFetched) {
                if (mOffset > 0) {
                    int lastVisiblePosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findLastVisibleItemPosition();
                    if (lastVisiblePosition + 10 >= mOffset) {
                        new RequestClientGetRoomList().clientGetRoomList(mOffset, Config.LIMIT_LOAD_ROOM, String.valueOf(System.currentTimeMillis()));
                    }
                }
            }
            int firstVisibleItem = layoutManager.findFirstVisibleItemPosition();
            if (firstVisibleItem != RecyclerView.NO_POSITION) {
                RecyclerView.ViewHolder holder = recyclerView.findViewHolderForAdapterPosition(firstVisibleItem);
                if (holder != null && holder.getAdapterPosition() != 0) {
                    int firstViewTop = holder.itemView.getTop();
                    boolean goingDown;
                    boolean changed = true;
                    if (prevPosition == firstVisibleItem) {
                        final int topDelta = prevTop - firstViewTop;
                        goingDown = firstViewTop < prevTop;
                        changed = Math.abs(topDelta) > 1;
                    } else {
                        goingDown = firstVisibleItem > prevPosition;
                    }
                    if (changed && scrollUpdated && (goingDown || scrollingManually)) {
                        hideFloatingButton(goingDown);
                    }
                    prevPosition = firstVisibleItem;
                    prevTop = firstViewTop;
                    scrollUpdated = true;
                }
            }
        }
    });
    loadMoreProgress = new ProgressBar(context);
    loadMoreProgress.setVisibility(View.GONE);
    AppUtils.setProgresColler(loadMoreProgress);
    layout.addView(loadMoreProgress, LayoutCreator.createFrame(LayoutCreator.WRAP_CONTENT, LayoutCreator.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER, 0, 0, 0, 8));
    loadingProgress = new ProgressBar(context);
    AppUtils.setProgresColler(loadingProgress);
    layout.addView(loadingProgress, LayoutCreator.createFrame(LayoutCreator.WRAP_CONTENT, LayoutCreator.WRAP_CONTENT, Gravity.CENTER));
    emptyView = new LinearLayout(context);
    emptyView.setOrientation(LinearLayout.VERTICAL);
    emptyView.setVisibility(View.VISIBLE);
    layout.addView(emptyView, LayoutCreator.createFrame(LayoutCreator.WRAP_CONTENT, LayoutCreator.WRAP_CONTENT, Gravity.CENTER));
    ImageView emptyImageView = new ImageView(context);
    emptyImageView.setImageResource(R.drawable.empty_chat);
    emptyView.addView(emptyImageView, LayoutCreator.createLinear(160, 160, Gravity.CENTER));
    TextView emptyTextView = new TextView(context);
    emptyTextView.setText(getResources().getString(R.string.empty_room));
    emptyTextView.setTextColor(Theme.getInstance().getTitleTextColor(context));
    emptyTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
    emptyTextView.setTypeface(ResourcesCompat.getFont(context, R.font.main_font));
    emptyTextView.setSingleLine();
    emptyTextView.setGravity(Gravity.CENTER);
    emptyView.addView(emptyTextView, LayoutCreator.createLinear(LayoutCreator.MATCH_PARENT, LayoutCreator.WRAP_CONTENT, Gravity.CENTER, 0, 16, 0, 8));
    floatActionLayout = new FrameLayout(context);
    Drawable drawable = Theme.createSimpleSelectorCircleDrawable(LayoutCreator.dp(56), Theme.getInstance().getToolbarBackgroundColor(context), Theme.getInstance().getAccentColor(context));
    floatActionLayout.setBackground(drawable);
    floatActionLayout.setAlpha(.9f);
    floatActionLayout.setOnClickListener(v -> onFloatActionClick());
    layout.addView(floatActionLayout, LayoutCreator.createFrame(52, 52, (isAppRtl ? Gravity.LEFT : Gravity.RIGHT) | Gravity.BOTTOM, 16, 0, 16, 16));
    IconView addButton = new IconView(context);
    addButton.setIcon(R.string.icon_add);
    addButton.setIconColor(Color.WHITE);
    floatActionLayout.addView(addButton);
    mediaContainer = new FragmentMediaContainer(context, this);
    mediaContainer.setListener(i -> {
        switch(i) {
            case FragmentMediaContainer.CALL_TAG:
                getActivity().startActivity(new Intent(getContext(), CallActivity.class));
                break;
            case FragmentMediaContainer.MEDIA_TAG:
                if (!MusicPlayer.isVoice) {
                    Intent intent = new Intent(context, ActivityMain.class);
                    intent.putExtra(ActivityMain.openMediaPlayer, true);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    getActivity().startActivity(intent);
                }
                break;
            case FragmentMediaContainer.PLAY_TAG:
                break;
        }
    });
    layout.addView(mediaContainer, LayoutCreator.createFrame(LayoutCreator.MATCH_PARENT, 39, Gravity.TOP | Gravity.LEFT, 0, -40, 0, 0));
    return fragmentView;
}
Also used : IconView(net.iGap.messenger.ui.components.IconView) FragmentMediaContainer(net.iGap.messenger.ui.components.FragmentMediaContainer) RequestClientGetRoomList(net.iGap.request.RequestClientGetRoomList) Drawable(android.graphics.drawable.Drawable) BackDrawable(net.iGap.messenger.ui.toolBar.BackDrawable) Intent(android.content.Intent) CallActivity(net.iGap.activities.CallActivity) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) ImageView(android.widget.ImageView) NumberTextView(net.iGap.messenger.ui.toolBar.NumberTextView) CircleImageView(de.hdodenhof.circleimageview.CircleImageView) View(android.view.View) RecyclerView(androidx.recyclerview.widget.RecyclerView) TextView(android.widget.TextView) IconView(net.iGap.messenger.ui.components.IconView) SuppressLint(android.annotation.SuppressLint) FrameLayout(android.widget.FrameLayout) Theme(net.iGap.module.Theme) RecyclerView(androidx.recyclerview.widget.RecyclerView) NumberTextView(net.iGap.messenger.ui.toolBar.NumberTextView) TextView(android.widget.TextView) ImageView(android.widget.ImageView) CircleImageView(de.hdodenhof.circleimageview.CircleImageView) ProgressBar(android.widget.ProgressBar) LinearLayout(android.widget.LinearLayout)

Example 5 with FragmentMediaContainer

use of net.iGap.messenger.ui.components.FragmentMediaContainer in project iGap-Android by KianIranian-STDG.

the class RegisteredContactsFragment method onViewCreated.

@Override
public void onViewCreated(@NotNull View view, @Nullable final Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    if (getContext() != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        StatusBarUtil.setColor(getActivity(), new Theme().getPrimaryDarkColor(getContext()), 50);
    }
    G.onContactImport = this;
    G.onUserContactdelete = this;
    G.onContactsGetList = this;
    tryRequest = 0;
    realmRecyclerView = view.findViewById(R.id.recycler_view);
    FrameLayout toolbarLayout = view.findViewById(R.id.frg_contact_ll_toolbar_layout);
    contactsToolbar = new Toolbar(getContext());
    mediaContainer = new FragmentMediaContainer(getContext(), this);
    mediaContainer.setListener(i -> {
        switch(i) {
            case FragmentMediaContainer.CALL_TAG:
                getActivity().startActivity(new Intent(getContext(), CallActivity.class));
                break;
            case FragmentMediaContainer.MEDIA_TAG:
                if (!MusicPlayer.isVoice) {
                    Intent intent = new Intent(context, ActivityMain.class);
                    intent.putExtra(ActivityMain.openMediaPlayer, true);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    getActivity().startActivity(intent);
                }
                break;
            case FragmentMediaContainer.PLAY_TAG:
                break;
        }
    });
    ToolbarItems toolbarItems = contactsToolbar.createToolbarItems();
    contactsToolbar.setTitle(getString(R.string.contacts));
    contactsToolbar.setBackIcon(new BackDrawable(false));
    if (isContact) {
        ToolbarItem moreItem = toolbarItems.addItemWithWidth(moreItemTag, R.string.icon_other_vertical_dots, 54);
        addItem = moreItem.addSubItem(addUserTag, R.string.icon_add, getResources().getString(R.string.menu_add_contact));
        moreItem.addSubItem(syncContactTag, R.string.icon_beeptunes_sync, getResources().getString(R.string.sync_contact));
        moreItem.addSubItem(inviteContactTag, R.string.icon_add_contact, getResources().getString(R.string.Invite_Friends));
        if (PassCode.getInstance().isPassCode()) {
            passCodeItem = toolbarItems.addItemWithWidth(passCodeTag, R.string.icon_unlock, 54);
        }
    }
    searchItem = toolbarItems.addItemWithWidth(searchTag, R.string.icon_search, 54).setIsSearchBox(true).setActionBarMenuItemSearchListener(new ToolbarItem.ActionBarMenuItemSearchListener() {

        @Override
        public void onSearchExpand() {
            isSearchEnabled = true;
            inSearchMode = true;
        }

        @Override
        public void onSearchCollapse() {
            isSearchEnabled = false;
            inSearchMode = false;
            loadContacts();
        }

        @Override
        public void onTextChanged(EditText editText) {
            String text = null;
            try {
                text = java.net.URLDecoder.decode(editText.getText().toString(), "UTF-8");
                if (text.length() > 0) {
                    searchText = text;
                    loadContact(text);
                } else {
                    loadContacts();
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
    });
    if (!isContact) {
        contactsToolbar.setBackIcon(new BackDrawable(false));
        toolbarItems.addItemWithWidth(addUserTag, R.string.icon_add_contact, 54);
    } else {
        toolbarItems.addItemWithWidth(codeScannerTag, R.string.icon_QR_code, 54);
    }
    if (mPageMode == CALL) {
        contactsToolbar.setTitle(getString(R.string.make_call));
    } else if (mPageMode == ADD) {
        contactsToolbar.setTitle(getString(R.string.create_chat));
    }
    createActionMode();
    toolbarLayout.addView(mediaContainer, LayoutCreator.createFrame(LayoutCreator.MATCH_PARENT, 38, Gravity.BOTTOM, 0, 60, 0, 0));
    toolbarLayout.addView(contactsToolbar);
    contactsToolbar.setListener(i -> {
        switch(i) {
            case -1:
                if (!isContact) {
                    if (!contactsToolbar.isSearchFieldVisible()) {
                        popBackStackFragment();
                    }
                } else {
                    if (isMultiSelect) {
                        contactsToolbar.hideActionToolbar();
                        contactsToolbar.setBackIcon(new BackDrawable(false));
                        setMultiSelectState(isMultiSelect);
                    } else {
                        if (!isSearchEnabled) {
                            requireActivity().onBackPressed();
                        }
                    }
                }
                break;
            case editTag:
                if (results != null) {
                    for (RealmContacts realmContacts : results) {
                        if (realmContacts.getPhone() == (Long) selectedList.keySet().toArray()[0]) {
                            FragmentAddContact fragment = FragmentAddContact.newInstance(realmContacts.getId(), "+" + realmContacts.getPhone(), realmContacts.getFirst_name(), realmContacts.getLast_name(), FragmentAddContact.ContactMode.EDIT, (name1, family1) -> loadContacts());
                            if (getActivity() != null)
                                new HelperFragment(getActivity().getSupportFragmentManager(), fragment).setReplace(false).load();
                            contactsToolbar.hideActionToolbar();
                            setMultiSelectState(isMultiSelect);
                            contactsToolbar.setBackIcon(null);
                            return;
                        }
                    }
                }
                break;
            case deleteTag:
                new MaterialDialog.Builder(G.fragmentActivity).title(R.string.to_delete_contact).content(R.string.delete_text).positiveText(R.string.B_ok).onPositive((dialog, which) -> {
                    for (ArrayMap.Entry<Long, Boolean> entry : selectedList.entrySet()) {
                        new RequestUserContactsDelete().contactsDelete("" + entry.getKey());
                    }
                    setMultiSelectState(true);
                    contactsToolbar.hideActionToolbar();
                    contactsToolbar.setBackIcon(null);
                }).negativeText(R.string.B_cancel).show();
                break;
            case addUserTag:
                if (mActionMode != null) {
                    mActionMode.finish();
                }
                if (getActivity() != null) {
                    FragmentAddContact fragment = FragmentAddContact.newInstance(null, FragmentAddContact.ContactMode.ADD);
                    new HelperFragment(getActivity().getSupportFragmentManager(), fragment).setReplace(false).load();
                }
                break;
            case multiSelectTag:
                showDialog();
                break;
            case codeScannerTag:
                onCodeScannerClickListener();
                break;
            case syncContactTag:
                if (isMultiSelect)
                    setMultiSelectState(true);
                ContactUtils.syncContacts();
                break;
            case inviteContactTag:
                try {
                    HelperPermission.getContactPermision(getContext(), new OnGetPermission() {

                        @Override
                        public void Allow() {
                            HelperTracker.sendTracker(HelperTracker.TRACKER_INVITE_FRIEND);
                            new HelperFragment(getActivity().getSupportFragmentManager(), new LocalContactFragment()).setReplace(false).load();
                        }

                        @Override
                        public void deny() {
                            showDeniedPermissionMessage(G.context.getString(R.string.permission_contact));
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
            case passCodeTag:
                if (passCodeItem == null) {
                    return;
                }
                if (ActivityMain.isLock) {
                    passCodeItem.setIcon(R.string.icon_unlock);
                    ActivityMain.isLock = false;
                    HelperPreferences.getInstance().putBoolean(SHP_SETTING.FILE_NAME, SHP_SETTING.KEY_LOCK_STARTUP_STATE, false);
                } else {
                    passCodeItem.setIcon(R.string.icon_lock);
                    ActivityMain.isLock = true;
                    HelperPreferences.getInstance().putBoolean(SHP_SETTING.FILE_NAME, SHP_SETTING.KEY_LOCK_STARTUP_STATE, true);
                }
                checkPassCodeVisibility();
                break;
        }
    });
    if (isContact) {
        Contacts.localPhoneContactId = 0;
        Contacts.getContact = true;
    }
    prgMainLoader = view.findViewById(R.id.fc_loader_main);
    btnAddNewGroupCall = view.findViewById(R.id.menu_layout_new_group_call);
    btnDialNumber = view.findViewById(R.id.menu_layout_btn_dial_number);
    btnAddNewGroup = view.findViewById(R.id.menu_layout_add_new_group);
    btnAddNewChannel = view.findViewById(R.id.menu_layout_add_new_channel);
    fastScroller = view.findViewById(R.id.fs_contact_fastScroller);
    prgWaitingLoadList = view.findViewById(R.id.prgWaiting_loadList);
    realmRecyclerView.setAdapter(new ContactListAdapter());
    if (!inSearchMode)
        loadContacts();
    switch(mPageMode) {
        case CALL:
            btnDialNumber.setVisibility(View.GONE);
            if (addItem != null) {
            // addItem.setVisibility(View.GONE);
            }
            break;
        case ADD:
            btnAddNewChannel.setVisibility(View.VISIBLE);
            btnAddNewGroup.setVisibility(View.VISIBLE);
            break;
        case CONTACTS:
    }
    realmRecyclerView = view.findViewById(R.id.recycler_view);
    realmRecyclerView.setLayoutManager(new ScrollingLinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false, 1000));
    realmRecyclerView.setNestedScrollingEnabled(false);
    fastScroller.setRecyclerView(realmRecyclerView);
    onClickRecyclerView = (v, position) -> {
        if (isMultiSelect) {
            multi_select(position);
        }
    };
    onLongClickRecyclerView = (v, position) -> {
        if (!isMultiSelect) {
            isMultiSelect = true;
            refreshAdapter(0, true);
            if (!contactsToolbar.isInActionMode()) {
                setPageShowingMode(4);
            }
        }
        multi_select(position);
    };
    try {
        if (getPermission && isContact) {
            getPermission = false;
            HelperPermission.getContactPermision(getContext(), new OnGetPermission() {

                @Override
                public void Allow() throws IOException {
                    /**
                     * if contacts size is zero send request for get contacts list
                     * for insure that contacts not exist really or not
                     */
                    LoginActions.importContact();
                    prgMainLoader.setVisibility(View.GONE);
                }

                @Override
                public void deny() {
                    if (results.size() == 0) {
                        new RequestUserContactsGetList().userContactGetList();
                    }
                    prgMainLoader.setVisibility(View.GONE);
                }
            });
        } else {
            if (results.size() == 0) {
                LoginActions.importContact();
            }
            prgMainLoader.setVisibility(View.GONE);
        }
    } catch (IOException e) {
        e.printStackTrace();
        prgMainLoader.setVisibility(View.GONE);
    }
    btnAddNewChannel.setOnClickListener(v -> {
        if (getActivity() != null) {
            FragmentNewGroup fragment = FragmentNewGroup.newInstance();
            Bundle bundle_ = new Bundle();
            bundle_.putString("TYPE", "NewChanel");
            fragment.setArguments(bundle_);
            new HelperFragment(getActivity().getSupportFragmentManager(), fragment).setReplace(false).load();
        }
    });
    btnAddNewGroup.setOnClickListener(v -> {
        if (getActivity() != null) {
            Fragment fragment = ContactGroupFragment.newInstance();
            Bundle bundle1 = new Bundle();
            bundle1.putLong("RoomId", -127);
            bundle1.putString("LIMIT", "5000");
            bundle1.putString("TYPE", ProtoGlobal.Room.Type.GROUP.name());
            bundle1.putBoolean("NewRoom", true);
            fragment.setArguments(bundle1);
            if (FragmentNewGroup.onRemoveFragmentNewGroup != null) {
                Log.wtf(this.getClass().getName(), "onRemoveFragmentNewGroup");
                FragmentNewGroup.onRemoveFragmentNewGroup.onRemove();
            }
            new HelperFragment(getActivity().getSupportFragmentManager(), fragment).setReplace(false).load();
        }
    });
    btnDialNumber.setOnClickListener(v -> {
        if (getActivity() != null) {
            new HelperFragment(getActivity().getSupportFragmentManager(), new DailNumberFragment()).setReplace(false).load();
        }
    });
    // todo: fixed it ,effect in load time
    if (isMultiSelect) {
        refreshAdapter(0, true);
        if (!contactsToolbar.isInActionMode()) {
            Log.wtf(this.getClass().getName(), "setPageShowingMode 4");
            setPageShowingMode(4);
        }
        isLongClick = true;
    }
}
Also used : ScrollingLinearLayoutManager(net.iGap.module.ScrollingLinearLayoutManager) BackDrawable(net.iGap.messenger.ui.toolBar.BackDrawable) CallActivity(net.iGap.activities.CallActivity) Fragment(androidx.fragment.app.Fragment) BottomSheetFragment(net.iGap.module.dialog.bottomsheet.BottomSheetFragment) HelperFragment(net.iGap.helper.HelperFragment) ScanCodeQRCodePaymentFragment(net.iGap.fragments.qrCodePayment.fragments.ScanCodeQRCodePaymentFragment) OnGetPermission(net.iGap.observers.interfaces.OnGetPermission) ToolbarItem(net.iGap.messenger.ui.toolBar.ToolbarItem) Toolbar(net.iGap.messenger.ui.toolBar.Toolbar) EditText(android.widget.EditText) FragmentMediaContainer(net.iGap.messenger.ui.components.FragmentMediaContainer) Bundle(android.os.Bundle) UnsupportedEncodingException(java.io.UnsupportedEncodingException) ArrayMap(androidx.collection.ArrayMap) Intent(android.content.Intent) IOException(java.io.IOException) RequestUserContactsDelete(net.iGap.request.RequestUserContactsDelete) FrameLayout(android.widget.FrameLayout) ToolbarItems(net.iGap.messenger.ui.toolBar.ToolbarItems) Theme(net.iGap.module.Theme) RequestUserContactsGetList(net.iGap.request.RequestUserContactsGetList) HelperFragment(net.iGap.helper.HelperFragment) RealmContacts(net.iGap.realm.RealmContacts)

Aggregations

Intent (android.content.Intent)5 CallActivity (net.iGap.activities.CallActivity)5 FragmentMediaContainer (net.iGap.messenger.ui.components.FragmentMediaContainer)5 BackDrawable (net.iGap.messenger.ui.toolBar.BackDrawable)5 FrameLayout (android.widget.FrameLayout)4 RecyclerView (androidx.recyclerview.widget.RecyclerView)4 Toolbar (net.iGap.messenger.ui.toolBar.Toolbar)4 Theme (net.iGap.module.Theme)4 Bundle (android.os.Bundle)3 View (android.view.View)3 ProgressBar (android.widget.ProgressBar)3 TextView (android.widget.TextView)3 Fragment (androidx.fragment.app.Fragment)3 LinearLayoutManager (androidx.recyclerview.widget.LinearLayoutManager)3 MaterialDialog (com.afollestad.materialdialogs.MaterialDialog)3 ArrayList (java.util.ArrayList)3 ActivityMain (net.iGap.activities.ActivityMain)3 HelperFragment (net.iGap.helper.HelperFragment)3 NumberTextView (net.iGap.messenger.ui.toolBar.NumberTextView)3 ToolbarItem (net.iGap.messenger.ui.toolBar.ToolbarItem)3