コード例 #1
0
  private void getNewMessage() {
    if (NotificationsController.getInstance().popupMessages.isEmpty()) {
      onFinish();
      finish();
      return;
    }

    boolean found = false;
    if ((currentMessageNum != 0 || chatActivityEnterView.hasText() || startedMoving)
        && currentMessageObject != null) {
      for (int a = 0; a < NotificationsController.getInstance().popupMessages.size(); a++) {
        if (NotificationsController.getInstance().popupMessages.get(a).getId()
            == currentMessageObject.getId()) {
          currentMessageNum = a;
          found = true;
          break;
        }
      }
    }
    if (!found) {
      currentMessageNum = 0;
      currentMessageObject = NotificationsController.getInstance().popupMessages.get(0);
      updateInterfaceForCurrentMessage(0);
    } else if (startedMoving) {
      if (currentMessageNum == NotificationsController.getInstance().popupMessages.size() - 1) {
        prepareLayouts(3);
      } else if (currentMessageNum == 1) {
        prepareLayouts(4);
      }
    }
    countText.setText(
        String.format(
            "%d/%d",
            currentMessageNum + 1, NotificationsController.getInstance().popupMessages.size()));
  }
コード例 #2
0
 private void setTypingAnimation(boolean start) {
   if (actionBar == null) {
     return;
   }
   if (start) {
     try {
       Integer type =
           MessagesController.getInstance()
               .printingStringsTypes
               .get(currentMessageObject.getDialogId());
       if (type == 0) {
         onlineTextView.setCompoundDrawablesWithIntrinsicBounds(
             typingDotsDrawable, null, null, null);
         onlineTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4));
         typingDotsDrawable.start();
         recordStatusDrawable.stop();
       } else if (type == 1) {
         onlineTextView.setCompoundDrawablesWithIntrinsicBounds(
             recordStatusDrawable, null, null, null);
         onlineTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4));
         recordStatusDrawable.start();
         typingDotsDrawable.stop();
       }
     } catch (Exception e) {
       FileLog.e("tmessages", e);
     }
   } else {
     onlineTextView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
     onlineTextView.setCompoundDrawablePadding(0);
     typingDotsDrawable.stop();
     recordStatusDrawable.stop();
   }
 }
コード例 #3
0
  private void updateInterfaceForCurrentMessage(int move) {
    if (actionBar == null) {
      return;
    }
    currentChat = null;
    currentUser = null;
    long dialog_id = currentMessageObject.getDialogId();
    chatActivityEnterView.setDialogId(dialog_id);
    if ((int) dialog_id != 0) {
      int lower_id = (int) dialog_id;
      if (lower_id > 0) {
        currentUser = MessagesController.getInstance().getUser(lower_id);
      } else {
        currentChat = MessagesController.getInstance().getChat(-lower_id);
        currentUser =
            MessagesController.getInstance().getUser(currentMessageObject.messageOwner.from_id);
      }
    } else {
      TLRPC.EncryptedChat encryptedChat =
          MessagesController.getInstance().getEncryptedChat((int) (dialog_id >> 32));
      currentUser = MessagesController.getInstance().getUser(encryptedChat.user_id);
    }

    if (currentChat != null && currentUser != null) {
      nameTextView.setText(currentChat.title);
      onlineTextView.setText(
          ContactsController.formatName(currentUser.first_name, currentUser.last_name));
      nameTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
      nameTextView.setCompoundDrawablePadding(0);
    } else if (currentUser != null) {
      nameTextView.setText(
          ContactsController.formatName(currentUser.first_name, currentUser.last_name));
      if ((int) dialog_id == 0) {
        nameTextView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_lock_white, 0, 0, 0);
        nameTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4));
      } else {
        nameTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
        nameTextView.setCompoundDrawablePadding(0);
      }
    }

    prepareLayouts(move);
    updateSubtitle();
    checkAndUpdateAvatar();
    applyViewsLayoutParams(0);
  }
コード例 #4
0
 private void openCurrentMessage() {
   if (currentMessageObject == null) {
     return;
   }
   Intent intent = new Intent(ApplicationLoader.applicationContext, LaunchActivity.class);
   long dialog_id = currentMessageObject.getDialogId();
   if ((int) dialog_id != 0) {
     int lower_id = (int) dialog_id;
     if (lower_id < 0) {
       intent.putExtra("chatId", -lower_id);
     } else {
       intent.putExtra("userId", lower_id);
     }
   } else {
     intent.putExtra("encId", (int) (dialog_id >> 32));
   }
   intent.setAction("com.tmessages.openchat" + Math.random() + Integer.MAX_VALUE);
   intent.setFlags(0x00008000);
   startActivity(intent);
   onFinish();
   finish();
 }
コード例 #5
0
 private void updateSubtitle() {
   if (actionBar == null) {
     return;
   }
   if (currentChat != null || currentUser == null) {
     return;
   }
   if (currentUser.id / 1000 != 777
       && currentUser.id / 1000 != 333
       && ContactsController.getInstance().contactsDict.get(currentUser.id) == null
       && (ContactsController.getInstance().contactsDict.size() != 0
           || !ContactsController.getInstance().isLoadingContacts())) {
     if (currentUser.phone != null && currentUser.phone.length() != 0) {
       nameTextView.setText(PhoneFormat.getInstance().format("+" + currentUser.phone));
     } else {
       nameTextView.setText(
           ContactsController.formatName(currentUser.first_name, currentUser.last_name));
     }
   } else {
     nameTextView.setText(
         ContactsController.formatName(currentUser.first_name, currentUser.last_name));
   }
   CharSequence printString =
       MessagesController.getInstance().printingStrings.get(currentMessageObject.getDialogId());
   if (printString == null || printString.length() == 0) {
     lastPrintString = null;
     setTypingAnimation(false);
     TLRPC.User user = MessagesController.getInstance().getUser(currentUser.id);
     if (user != null) {
       currentUser = user;
     }
     onlineTextView.setText(LocaleController.formatUserStatus(currentUser));
   } else {
     lastPrintString = printString;
     onlineTextView.setText(printString);
     setTypingAnimation(true);
   }
 }
コード例 #6
0
 @Override
 public void didReceivedNotification(int id, Object... args) {
   if (id == NotificationCenter.appDidLogout) {
     onFinish();
     finish();
   } else if (id == NotificationCenter.pushMessagesUpdated) {
     getNewMessage();
   } else if (id == NotificationCenter.updateInterfaces) {
     if (currentMessageObject == null) {
       return;
     }
     int updateMask = (Integer) args[0];
     if ((updateMask & MessagesController.UPDATE_MASK_NAME) != 0
         || (updateMask & MessagesController.UPDATE_MASK_STATUS) != 0
         || (updateMask & MessagesController.UPDATE_MASK_CHAT_NAME) != 0
         || (updateMask & MessagesController.UPDATE_MASK_CHAT_MEMBERS) != 0) {
       updateSubtitle();
     }
     if ((updateMask & MessagesController.UPDATE_MASK_AVATAR) != 0
         || (updateMask & MessagesController.UPDATE_MASK_CHAT_AVATAR) != 0) {
       checkAndUpdateAvatar();
     }
     if ((updateMask & MessagesController.UPDATE_MASK_USER_PRINT) != 0) {
       CharSequence printString =
           MessagesController.getInstance()
               .printingStrings
               .get(currentMessageObject.getDialogId());
       if (lastPrintString != null && printString == null
           || lastPrintString == null && printString != null
           || lastPrintString != null
               && printString != null
               && !lastPrintString.equals(printString)) {
         updateSubtitle();
       }
     }
   } else if (id == NotificationCenter.audioDidReset) {
     Integer mid = (Integer) args[0];
     if (messageContainer != null) {
       int count = messageContainer.getChildCount();
       for (int a = 0; a < count; a++) {
         View view = messageContainer.getChildAt(a);
         if ((Integer) view.getTag() == 3) {
           PopupAudioView cell = (PopupAudioView) view.findViewWithTag(300);
           if (cell.getMessageObject() != null && cell.getMessageObject().getId() == mid) {
             cell.updateButtonState();
             break;
           }
         }
       }
     }
   } else if (id == NotificationCenter.audioProgressDidChanged) {
     Integer mid = (Integer) args[0];
     if (messageContainer != null) {
       int count = messageContainer.getChildCount();
       for (int a = 0; a < count; a++) {
         View view = messageContainer.getChildAt(a);
         if ((Integer) view.getTag() == 3) {
           PopupAudioView cell = (PopupAudioView) view.findViewWithTag(300);
           if (cell.getMessageObject() != null && cell.getMessageObject().getId() == mid) {
             cell.updateProgress();
             break;
           }
         }
       }
     }
   } else if (id == NotificationCenter.emojiDidLoaded) {
     if (messageContainer != null) {
       int count = messageContainer.getChildCount();
       for (int a = 0; a < count; a++) {
         View view = messageContainer.getChildAt(a);
         if ((Integer) view.getTag() == 1) {
           TextView textView = (TextView) view.findViewWithTag(301);
           if (textView != null) {
             textView.invalidate();
           }
         }
       }
     }
   } else if (id == NotificationCenter.contactsDidLoaded) {
     updateSubtitle();
   }
 }