コード例 #1
0
 @SuppressWarnings("unchecked")
 @Override
 public boolean onFragmentCreate() {
   super.onFragmentCreate();
   NotificationCenter.getInstance().addObserver(this, MessagesController.updateInterfaces);
   NotificationCenter.getInstance().addObserver(this, MessagesController.chatDidCreated);
   NotificationCenter.getInstance().addObserver(this, MessagesController.chatDidFailCreate);
   avatarUpdater.parentFragment = this;
   avatarUpdater.delegate = this;
   selectedContacts = getArguments().getIntegerArrayList("result");
   final ArrayList<Integer> usersToLoad = new ArrayList<Integer>();
   for (Integer uid : selectedContacts) {
     if (MessagesController.getInstance().users.get(uid) == null) {
       usersToLoad.add(uid);
     }
   }
   if (!usersToLoad.isEmpty()) {
     final Semaphore semaphore = new Semaphore(0);
     final ArrayList<TLRPC.User> users = new ArrayList<TLRPC.User>();
     final boolean[] error = new boolean[1];
     MessagesStorage.getInstance()
         .storageQueue
         .postRunnable(
             new Runnable() {
               @Override
               public void run() {
                 users.addAll(MessagesStorage.getInstance().getUsers(usersToLoad, error));
                 semaphore.release();
               }
             });
     try {
       semaphore.acquire();
     } catch (Exception e) {
       FileLog.e("tmessages", e);
     }
     if (error[0]) {
       return false;
     }
     if (!users.isEmpty()) {
       for (TLRPC.User user : users) {
         MessagesController.getInstance().users.putIfAbsent(user.id, user);
       }
     } else {
       return false;
     }
   }
   return true;
 }
コード例 #2
0
  private void createActionBarMenu() {
    ActionBarMenu menu = actionBarLayer.createMenu();
    menu.clearItems();

    if (ContactsController.getInstance().contactsDict.get(user_id) == null) {
      TLRPC.User user = MessagesController.getInstance().users.get(user_id);
      if (user == null) {
        return;
      }
      ActionBarMenuItem item = menu.addItem(0, R.drawable.ic_ab_other);
      if (user.phone != null && user.phone.length() != 0) {
        item.addSubItem(
            add_contact, LocaleController.getString("AddContact", R.string.AddContact), 0);
        item.addSubItem(
            block_contact, LocaleController.getString("BlockContact", R.string.BlockContact), 0);
      } else {
        item.addSubItem(
            block_contact, LocaleController.getString("BlockContact", R.string.BlockContact), 0);
      }
    } else {
      ActionBarMenuItem item = menu.addItem(0, R.drawable.ic_ab_other);
      item.addSubItem(
          share_contact, LocaleController.getString("ShareContact", R.string.ShareContact), 0);
      item.addSubItem(
          block_contact, LocaleController.getString("BlockContact", R.string.BlockContact), 0);
      item.addSubItem(
          edit_contact, LocaleController.getString("EditContact", R.string.EditContact), 0);
      item.addSubItem(
          delete_contact, LocaleController.getString("DeleteContact", R.string.DeleteContact), 0);
    }
  }
コード例 #3
0
  @Override
  protected boolean isUserDataChanged() {
    if (currentMessageObject == null) {
      return false;
    }

    int uid = currentMessageObject.messageOwner.media.user_id;
    boolean newDrawAdd =
        contactUser != null
            && uid != UserConfig.getClientUserId()
            && ContactsController.getInstance().contactsDict.get(uid) == null;
    if (newDrawAdd != drawAddButton) {
      return true;
    }

    contactUser =
        MessagesController.getInstance().getUser(currentMessageObject.messageOwner.media.user_id);

    TLRPC.FileLocation newPhoto = null;
    if (contactUser != null && contactUser.photo != null) {
      newPhoto = contactUser.photo.photo_small;
    }

    return currentPhoto == null && newPhoto != null
        || currentPhoto != null && newPhoto == null
        || currentPhoto != null
            && newPhoto != null
            && (currentPhoto.local_id != newPhoto.local_id
                || currentPhoto.volume_id != newPhoto.volume_id)
        || super.isUserDataChanged();
  }
コード例 #4
0
 @Override
 public boolean onFragmentCreate() {
   NotificationCenter.getInstance().addObserver(this, MessagesController.updateInterfaces);
   NotificationCenter.getInstance().addObserver(this, MessagesController.contactsDidLoaded);
   NotificationCenter.getInstance().addObserver(this, MessagesController.mediaCountDidLoaded);
   NotificationCenter.getInstance().addObserver(this, MessagesController.encryptedChatCreated);
   NotificationCenter.getInstance().addObserver(this, MessagesController.encryptedChatUpdated);
   user_id = arguments.getInt("user_id", 0);
   dialog_id = arguments.getLong("dialog_id", 0);
   if (dialog_id != 0) {
     currentEncryptedChat =
         MessagesController.getInstance().encryptedChats.get((int) (dialog_id >> 32));
   }
   updateRowsIds();
   return MessagesController.getInstance().users.get(user_id) != null && super.onFragmentCreate();
 }
コード例 #5
0
 @Override
 public PhotoViewer.PlaceProviderObject getPlaceForPhoto(
     MessageObject messageObject, TLRPC.FileLocation fileLocation, int index) {
   if (fileLocation == null) {
     return null;
   }
   TLRPC.User user = MessagesController.getInstance().users.get(user_id);
   if (user != null && user.photo != null && user.photo.photo_big != null) {
     TLRPC.FileLocation photoBig = user.photo.photo_big;
     if (photoBig.local_id == fileLocation.local_id
         && photoBig.volume_id == fileLocation.volume_id
         && photoBig.dc_id == fileLocation.dc_id) {
       int count = listView.getChildCount();
       for (int a = 0; a < count; a++) {
         View view = listView.getChildAt(a);
         BackupImageView avatarImage =
             (BackupImageView) view.findViewById(R.id.settings_avatar_image);
         if (avatarImage != null) {
           int coords[] = new int[2];
           avatarImage.getLocationInWindow(coords);
           PhotoViewer.PlaceProviderObject object = new PhotoViewer.PlaceProviderObject();
           object.viewX = coords[0];
           object.viewY = coords[1] - Utilities.statusBarHeight;
           object.parentView = listView;
           object.imageReceiver = avatarImage.imageReceiver;
           object.user_id = user_id;
           object.thumb = object.imageReceiver.getBitmap();
           object.size = -1;
           return object;
         }
       }
     }
   }
   return null;
 }
コード例 #6
0
  @Override
  public View getView(int i, View view, ViewGroup viewGroup) {
    int type = getItemViewType(i);
    if (type == 0) {
      if (view == null) {
        view = new DrawerProfileCell(mContext);
      }
      ((DrawerProfileCell) view)
          .setUser(MessagesController.getInstance().getUser(UserConfig.getClientUserId()));
    } else if (type == 1) {
      if (view == null) {
        view = new EmptyCell(mContext, AndroidUtilities.dp(8));
      }
    } else if (type == 2) {
      if (view == null) {
        view = new DividerCell(mContext);
      }
    } else if (type == 3) {
      if (view == null) {
        view = new DrawerActionCell(mContext);
      }
      DrawerActionCell actionCell = (DrawerActionCell) view;
      if (i == 2) {
        actionCell.setTextAndIcon(
            LocaleController.getString("NewGroup", R.string.NewGroup), R.drawable.menu_newgroup);
      } else if (i == 3) {
        actionCell.setTextAndIcon(
            LocaleController.getString("NewSecretChat", R.string.NewSecretChat),
            R.drawable.menu_secret);
      } else if (i == 4) {
        actionCell.setTextAndIcon(
            LocaleController.getString("NewChannel", R.string.NewChannel),
            R.drawable.menu_broadcast);
      } else if (i == 6) {
        actionCell.setTextAndIcon(
            LocaleController.getString("Contacts", R.string.Contacts), R.drawable.menu_contacts);
      } else if (i == 7) {
        actionCell.setTextAndIcon(
            LocaleController.getString("InviteFriends", R.string.InviteFriends),
            R.drawable.menu_invite);
      } else if (i == 8) {
        actionCell.setTextAndIcon(
            LocaleController.getString("Settings", R.string.Settings), R.drawable.menu_settings);
      } else if (i == 9) {
        actionCell.setTextAndIcon(
            LocaleController.getString("Finger2ViewFaq", R.string.Finger2ViewFaq),
            R.drawable.menu_help);
      }
    }

    return view;
  }
コード例 #7
0
    @Override
    public View getItemView(int section, int position, View convertView, ViewGroup parent) {
      TLRPC.User user = MessagesController.getInstance().users.get(selectedContacts.get(position));

      if (convertView == null) {
        convertView = new ChatOrUserCell(mContext);
        ((ChatOrUserCell) convertView).usePadding = false;
      }

      ((ChatOrUserCell) convertView).setData(user, null, null, null, null);
      ((ChatOrUserCell) convertView).useSeparator = position != selectedContacts.size() - 1;

      return convertView;
    }
コード例 #8
0
 @Override
 public void didSelectDialog(MessagesActivity messageFragment, long dialog_id) {
   if (dialog_id != 0) {
     Bundle args = new Bundle();
     args.putBoolean("scrollToTopOnResume", true);
     NotificationCenter.getInstance().postNotificationName(MessagesController.closeChats);
     int lower_part = (int) dialog_id;
     if (lower_part != 0) {
       if (lower_part > 0) {
         args.putInt("user_id", lower_part);
       } else if (lower_part < 0) {
         args.putInt("chat_id", -lower_part);
       }
     } else {
       args.putInt("enc_id", (int) (dialog_id >> 32));
     }
     presentFragment(new ChatActivity(args), true);
     messageFragment.removeSelfFromStack();
     removeSelfFromStack();
     TLRPC.User user = MessagesController.getInstance().users.get(user_id);
     MessagesController.getInstance().sendMessage(user, dialog_id);
   }
 }
コード例 #9
0
  @Override
  protected void onDraw(Canvas canvas) {
    if (user == null && chat == null && encryptedChat == null) {
      return;
    }

    if (useSeparator) {
      if (LocaleController.isRTL) {
        canvas.drawLine(
            0,
            getMeasuredHeight() - 1,
            getMeasuredWidth() - AndroidUtilities.dp(AndroidUtilities.leftBaseline),
            getMeasuredHeight() - 1,
            linePaint);
      } else {
        canvas.drawLine(
            AndroidUtilities.dp(AndroidUtilities.leftBaseline),
            getMeasuredHeight() - 1,
            getMeasuredWidth(),
            getMeasuredHeight() - 1,
            linePaint);
      }
    }

    if (drawAlpha != 1) {
      canvas.saveLayerAlpha(
          0,
          0,
          canvas.getWidth(),
          canvas.getHeight(),
          (int) (255 * drawAlpha),
          Canvas.HAS_ALPHA_LAYER_SAVE_FLAG);
    }

    if (drawNameLock) {
      setDrawableBounds(lockDrawable, nameLockLeft, nameLockTop);
      lockDrawable.draw(canvas);
    } else if (drawNameGroup) {
      setDrawableBounds(groupDrawable, nameLockLeft, nameLockTop);
      groupDrawable.draw(canvas);
    } else if (drawNameBroadcast) {
      setDrawableBounds(broadcastDrawable, nameLockLeft, nameLockTop);
      broadcastDrawable.draw(canvas);
    } else if (drawNameBot) {
      setDrawableBounds(botDrawable, nameLockLeft, nameLockTop);
      botDrawable.draw(canvas);
    }

    if (nameLayout != null) {
      canvas.save();
      canvas.translate(nameLeft, nameTop);
      nameLayout.draw(canvas);
      canvas.restore();
      if (drawCheck) {
        if (LocaleController.isRTL) {
          setDrawableBounds(
              checkDrawable,
              nameLeft - AndroidUtilities.dp(4) - checkDrawable.getIntrinsicWidth(),
              nameLockTop);
        } else {
          setDrawableBounds(
              checkDrawable,
              nameLeft + (int) nameLayout.getLineWidth(0) + AndroidUtilities.dp(4),
              nameLockTop);
        }
        checkDrawable.draw(canvas);
      }
    }

    if (onlineLayout != null) {
      canvas.save();
      canvas.translate(onlineLeft, AndroidUtilities.dp(40));
      onlineLayout.draw(canvas);
      canvas.restore();
    }

    if (countLayout != null) {
      if (MessagesController.getInstance().isDialogMuted(dialog_id)) {
        setDrawableBounds(
            countDrawableGrey,
            countLeft - AndroidUtilities.dp(5.5f),
            countTop,
            countWidth + AndroidUtilities.dp(11),
            countDrawableGrey.getIntrinsicHeight());
        countDrawableGrey.draw(canvas);
      } else {
        setDrawableBounds(
            countDrawable,
            countLeft - AndroidUtilities.dp(5.5f),
            countTop,
            countWidth + AndroidUtilities.dp(11),
            countDrawable.getIntrinsicHeight());
        countDrawable.draw(canvas);
      }
      canvas.save();
      canvas.translate(countLeft, countTop + AndroidUtilities.dp(4));
      countLayout.draw(canvas);
      canvas.restore();
    }

    avatarImage.draw(canvas);
  }
コード例 #10
0
  public void update(int mask) {
    TLRPC.FileLocation photo = null;
    if (user != null) {
      if (user.photo != null) {
        photo = user.photo.photo_small;
      }
      avatarDrawable.setInfo(user);
    } else if (chat != null) {
      if (chat.photo != null) {
        photo = chat.photo.photo_small;
      }
      avatarDrawable.setInfo(chat);
    } else {
      avatarDrawable.setInfo(0, null, null, false);
    }

    if (mask != 0) {
      boolean continueUpdate = false;
      if ((mask & MessagesController.UPDATE_MASK_AVATAR) != 0 && user != null
          || (mask & MessagesController.UPDATE_MASK_CHAT_AVATAR) != 0 && chat != null) {
        if (lastAvatar != null && photo == null
            || lastAvatar == null
                && photo != null
                && lastAvatar != null
                && photo != null
                && (lastAvatar.volume_id != photo.volume_id
                    || lastAvatar.local_id != photo.local_id)) {
          continueUpdate = true;
        }
      }
      if (!continueUpdate && (mask & MessagesController.UPDATE_MASK_STATUS) != 0 && user != null) {
        int newStatus = 0;
        if (user.status != null) {
          newStatus = user.status.expires;
        }
        if (newStatus != lastStatus) {
          continueUpdate = true;
        }
      }
      if (!continueUpdate && ((mask & MessagesController.UPDATE_MASK_NAME) != 0 && user != null)
          || (mask & MessagesController.UPDATE_MASK_CHAT_NAME) != 0 && chat != null) {
        String newName;
        if (user != null) {
          newName = user.first_name + user.last_name;
        } else {
          newName = chat.title;
        }
        if (!newName.equals(lastName)) {
          continueUpdate = true;
        }
      }
      if (!continueUpdate
          && drawCount
          && (mask & MessagesController.UPDATE_MASK_READ_DIALOG_MESSAGE) != 0) {
        TLRPC.TL_dialog dialog = MessagesController.getInstance().dialogs_dict.get(dialog_id);
        if (dialog != null && dialog.unread_count != lastUnreadCount) {
          continueUpdate = true;
        }
      }

      if (!continueUpdate) {
        return;
      }
    }

    if (user != null) {
      if (user.status != null) {
        lastStatus = user.status.expires;
      } else {
        lastStatus = 0;
      }
      lastName = user.first_name + user.last_name;
    } else if (chat != null) {
      lastName = chat.title;
    }

    lastAvatar = photo;
    avatarImage.setImage(photo, "50_50", avatarDrawable, null, false);

    if (getMeasuredWidth() != 0 || getMeasuredHeight() != 0) {
      buildLayout();
    } else {
      requestLayout();
    }
    postInvalidate();
  }
コード例 #11
0
  public void buildLayout() {
    CharSequence nameString;
    TextPaint currentNamePaint;

    drawNameBroadcast = false;
    drawNameLock = false;
    drawNameGroup = false;
    drawCheck = false;
    drawNameBot = false;

    if (encryptedChat != null) {
      drawNameLock = true;
      dialog_id = ((long) encryptedChat.id) << 32;
      if (!LocaleController.isRTL) {
        nameLockLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline);
        nameLeft =
            AndroidUtilities.dp(AndroidUtilities.leftBaseline + 4)
                + lockDrawable.getIntrinsicWidth();
      } else {
        nameLockLeft =
            getMeasuredWidth()
                - AndroidUtilities.dp(AndroidUtilities.leftBaseline + 2)
                - lockDrawable.getIntrinsicWidth();
        nameLeft = AndroidUtilities.dp(11);
      }
      nameLockTop = AndroidUtilities.dp(16.5f);
    } else {
      if (chat != null) {
        if (chat.id < 0) {
          dialog_id = AndroidUtilities.makeBroadcastId(chat.id);
          drawNameBroadcast = true;
          nameLockTop = AndroidUtilities.dp(28.5f);
        } else {
          dialog_id = -chat.id;
          if (ChatObject.isChannel(chat) && !chat.megagroup) {
            drawNameBroadcast = true;
            nameLockTop = AndroidUtilities.dp(28.5f);
          } else {
            drawNameGroup = true;
            nameLockTop = AndroidUtilities.dp(30);
          }
        }
        drawCheck = chat.verified;
        if (!LocaleController.isRTL) {
          nameLockLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline);
          nameLeft =
              AndroidUtilities.dp(AndroidUtilities.leftBaseline + 4)
                  + (drawNameGroup
                      ? groupDrawable.getIntrinsicWidth()
                      : broadcastDrawable.getIntrinsicWidth());
        } else {
          nameLockLeft =
              getMeasuredWidth()
                  - AndroidUtilities.dp(AndroidUtilities.leftBaseline + 2)
                  - (drawNameGroup
                      ? groupDrawable.getIntrinsicWidth()
                      : broadcastDrawable.getIntrinsicWidth());
          nameLeft = AndroidUtilities.dp(11);
        }
      } else {
        dialog_id = user.id;
        if (!LocaleController.isRTL) {
          nameLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline);
        } else {
          nameLeft = AndroidUtilities.dp(11);
        }
        if (user.bot) {
          drawNameBot = true;
          if (!LocaleController.isRTL) {
            nameLockLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline);
            nameLeft =
                AndroidUtilities.dp(AndroidUtilities.leftBaseline + 4)
                    + botDrawable.getIntrinsicWidth();
          } else {
            nameLockLeft =
                getMeasuredWidth()
                    - AndroidUtilities.dp(AndroidUtilities.leftBaseline + 2)
                    - botDrawable.getIntrinsicWidth();
            nameLeft = AndroidUtilities.dp(11);
          }
          nameLockTop = AndroidUtilities.dp(16.5f);
        } else {
          nameLockTop = AndroidUtilities.dp(17);
        }
        drawCheck = user.verified;
      }
    }

    if (currentName != null) {
      nameString = currentName;
    } else {
      String nameString2 = "";
      if (chat != null) {
        nameString2 = chat.title;
      } else if (user != null) {
        nameString2 = UserObject.getUserName(user);
      }
      nameString = nameString2.replace('\n', ' ');
    }
    if (nameString.length() == 0) {
      if (user != null && user.phone != null && user.phone.length() != 0) {
        nameString = PhoneFormat.getInstance().format("+" + user.phone);
      } else {
        nameString = LocaleController.getString("HiddenName", R.string.HiddenName);
      }
    }
    if (encryptedChat != null) {
      currentNamePaint = nameEncryptedPaint;
    } else {
      currentNamePaint = namePaint;
    }

    int onlineWidth;
    int nameWidth;
    if (!LocaleController.isRTL) {
      onlineWidth = nameWidth = getMeasuredWidth() - nameLeft - AndroidUtilities.dp(14);
    } else {
      onlineWidth =
          nameWidth =
              getMeasuredWidth() - nameLeft - AndroidUtilities.dp(AndroidUtilities.leftBaseline);
    }
    if (drawNameLock) {
      nameWidth -= AndroidUtilities.dp(6) + lockDrawable.getIntrinsicWidth();
    } else if (drawNameBroadcast) {
      nameWidth -= AndroidUtilities.dp(6) + broadcastDrawable.getIntrinsicWidth();
    } else if (drawNameGroup) {
      nameWidth -= AndroidUtilities.dp(6) + groupDrawable.getIntrinsicWidth();
    } else if (drawNameBot) {
      nameWidth -= AndroidUtilities.dp(6) + botDrawable.getIntrinsicWidth();
    }

    if (drawCount) {
      TLRPC.TL_dialog dialog = MessagesController.getInstance().dialogs_dict.get(dialog_id);
      if (dialog != null && dialog.unread_count != 0) {
        lastUnreadCount = dialog.unread_count;
        String countString = String.format("%d", dialog.unread_count);
        countWidth =
            Math.max(AndroidUtilities.dp(12), (int) Math.ceil(countPaint.measureText(countString)));
        countLayout =
            new StaticLayout(
                countString,
                countPaint,
                countWidth,
                Layout.Alignment.ALIGN_CENTER,
                1.0f,
                0.0f,
                false);
        int w = countWidth + AndroidUtilities.dp(18);
        nameWidth -= w;
        if (!LocaleController.isRTL) {
          countLeft = getMeasuredWidth() - countWidth - AndroidUtilities.dp(19);
        } else {
          countLeft = AndroidUtilities.dp(19);
          nameLeft += w;
        }
      } else {
        lastUnreadCount = 0;
        countLayout = null;
      }
    } else {
      lastUnreadCount = 0;
      countLayout = null;
    }

    CharSequence nameStringFinal =
        TextUtils.ellipsize(
            nameString,
            currentNamePaint,
            nameWidth - AndroidUtilities.dp(12),
            TextUtils.TruncateAt.END);
    nameLayout =
        new StaticLayout(
            nameStringFinal,
            currentNamePaint,
            nameWidth,
            Layout.Alignment.ALIGN_NORMAL,
            1.0f,
            0.0f,
            false);

    if (chat == null || subLabel != null) {
      if (!LocaleController.isRTL) {
        onlineLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline);
      } else {
        onlineLeft = AndroidUtilities.dp(11);
      }

      CharSequence onlineString = "";
      TextPaint currentOnlinePaint = offlinePaint;

      if (subLabel != null) {
        onlineString = subLabel;
      } else if (user != null) {
        if (user.bot) {
          onlineString = LocaleController.getString("Bot", R.string.Bot);
        } else {
          onlineString = LocaleController.formatUserStatus(user);
          if (user != null
              && (user.id == UserConfig.getClientUserId()
                  || user.status != null
                      && user.status.expires > ConnectionsManager.getInstance().getCurrentTime())) {
            currentOnlinePaint = onlinePaint;
            onlineString = LocaleController.getString("Online", R.string.Online);
          }
        }
      }

      CharSequence onlineStringFinal =
          TextUtils.ellipsize(
              onlineString,
              currentOnlinePaint,
              onlineWidth - AndroidUtilities.dp(12),
              TextUtils.TruncateAt.END);
      onlineLayout =
          new StaticLayout(
              onlineStringFinal,
              currentOnlinePaint,
              onlineWidth,
              Layout.Alignment.ALIGN_NORMAL,
              1.0f,
              0.0f,
              false);
      nameTop = AndroidUtilities.dp(13);
      if (subLabel != null && chat != null) {
        nameLockTop -= AndroidUtilities.dp(12);
      }
    } else {
      onlineLayout = null;
      nameTop = AndroidUtilities.dp(25);
    }

    int avatarLeft;
    if (!LocaleController.isRTL) {
      avatarLeft = AndroidUtilities.dp(AndroidUtilities.isTablet() ? 13 : 9);
    } else {
      avatarLeft = getMeasuredWidth() - AndroidUtilities.dp(AndroidUtilities.isTablet() ? 65 : 61);
    }

    avatarImage.setImageCoords(
        avatarLeft, AndroidUtilities.dp(10), AndroidUtilities.dp(52), AndroidUtilities.dp(52));

    double widthpx;
    float left;
    if (LocaleController.isRTL) {
      if (nameLayout.getLineCount() > 0) {
        left = nameLayout.getLineLeft(0);
        if (left == 0) {
          widthpx = Math.ceil(nameLayout.getLineWidth(0));
          if (widthpx < nameWidth) {
            nameLeft += (nameWidth - widthpx);
          }
        }
      }
      if (onlineLayout != null && onlineLayout.getLineCount() > 0) {
        left = onlineLayout.getLineLeft(0);
        if (left == 0) {
          widthpx = Math.ceil(onlineLayout.getLineWidth(0));
          if (widthpx < onlineWidth) {
            onlineLeft += (onlineWidth - widthpx);
          }
        }
      }
    } else {
      if (nameLayout.getLineCount() > 0) {
        left = nameLayout.getLineRight(0);
        if (left == nameWidth) {
          widthpx = Math.ceil(nameLayout.getLineWidth(0));
          if (widthpx < nameWidth) {
            nameLeft -= (nameWidth - widthpx);
          }
        }
      }
      if (onlineLayout != null && onlineLayout.getLineCount() > 0) {
        left = onlineLayout.getLineRight(0);
        if (left == onlineWidth) {
          widthpx = Math.ceil(onlineLayout.getLineWidth(0));
          if (widthpx < onlineWidth) {
            onlineLeft -= (onlineWidth - widthpx);
          }
        }
      }
    }
  }
コード例 #12
0
  @Override
  public View createView(Context context) {
    actionBar.setBackButtonImage(R.drawable.ic_ab_back);
    actionBar.setAllowOverlayTitle(true);
    actionBar.setTitle(LocaleController.getString("EncryptionKey", R.string.EncryptionKey));

    actionBar.setActionBarMenuOnItemClick(
        new ActionBar.ActionBarMenuOnItemClick() {
          @Override
          public void onItemClick(int id) {
            if (id == -1) {
              finishFragment();
            }
          }
        });

    fragmentView = new LinearLayout(context);
    LinearLayout linearLayout = (LinearLayout) fragmentView;
    linearLayout.setOrientation(LinearLayout.VERTICAL);
    linearLayout.setWeightSum(100);
    linearLayout.setBackgroundColor(0xfff0f0f0);
    fragmentView.setOnTouchListener(
        new View.OnTouchListener() {
          @Override
          public boolean onTouch(View v, MotionEvent event) {
            return true;
          }
        });

    FrameLayout frameLayout = new FrameLayout(context);
    frameLayout.setPadding(
        AndroidUtilities.dp(20),
        AndroidUtilities.dp(20),
        AndroidUtilities.dp(20),
        AndroidUtilities.dp(20));
    linearLayout.addView(
        frameLayout,
        LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, 50.0f));

    ImageView identiconView = new ImageView(context);
    identiconView.setScaleType(ImageView.ScaleType.FIT_XY);
    frameLayout.addView(
        identiconView,
        LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));

    frameLayout = new FrameLayout(context);
    frameLayout.setBackgroundColor(0xffffffff);
    frameLayout.setPadding(
        AndroidUtilities.dp(10), 0, AndroidUtilities.dp(10), AndroidUtilities.dp(10));
    linearLayout.addView(
        frameLayout,
        LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, 50.0f));

    TextView textView = new TextView(context);
    textView.setTextColor(0xff7f7f7f);
    textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
    textView.setLinksClickable(true);
    textView.setClickable(true);
    textView.setMovementMethod(new LinkMovementMethodMy());
    // textView.setAutoLinkMask(Linkify.WEB_URLS);
    textView.setLinkTextColor(0xff316f9f);
    textView.setGravity(Gravity.CENTER);
    frameLayout.addView(
        textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));

    TLRPC.EncryptedChat encryptedChat = MessagesController.getInstance().getEncryptedChat(chat_id);
    if (encryptedChat != null) {
      IdenticonDrawable drawable = new IdenticonDrawable();
      identiconView.setImageDrawable(drawable);
      drawable.setEncryptedChat(encryptedChat);
      TLRPC.User user = MessagesController.getInstance().getUser(encryptedChat.user_id);
      SpannableStringBuilder hash = new SpannableStringBuilder();
      if (encryptedChat.key_hash.length > 16) {
        String hex = Utilities.bytesToHex(encryptedChat.key_hash);
        for (int a = 0; a < 32; a++) {
          if (a != 0) {
            if (a % 8 == 0) {
              hash.append('\n');
            } else if (a % 4 == 0) {
              hash.append(' ');
            }
          }
          hash.append(hex.substring(a * 2, a * 2 + 2));
          hash.append(' ');
        }
        hash.append("\n\n");
      }
      hash.append(
          AndroidUtilities.replaceTags(
              LocaleController.formatString(
                  "EncryptionKeyDescription",
                  R.string.EncryptionKeyDescription,
                  user.first_name,
                  user.first_name)));
      final String url = "telegram.org";
      int index = hash.toString().indexOf(url);
      if (index != -1) {
        hash.setSpan(
            new URLSpanReplacement(
                LocaleController.getString("EncryptionKeyLink", R.string.EncryptionKeyLink)),
            index,
            index + url.length(),
            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
      }
      textView.setText(hash);
    }

    return fragmentView;
  }
コード例 #13
0
  @Override
  public void setMessageObject(MessageObject messageObject) {
    if (currentMessageObject != messageObject || isUserDataChanged()) {

      int uid = messageObject.messageOwner.media.user_id;
      contactUser = MessagesController.getInstance().getUser(uid);

      drawAddButton =
          contactUser != null
              && uid != UserConfig.getClientUserId()
              && ContactsController.getInstance().contactsDict.get(uid) == null;

      int maxWidth;
      if (AndroidUtilities.isTablet()) {
        maxWidth = (int) (AndroidUtilities.getMinTabletSide() * 0.7f);
      } else {
        maxWidth =
            (int) (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) * 0.7f);
      }
      maxWidth -= AndroidUtilities.dp(58 + (drawAddButton ? 42 : 0));

      if (contactUser != null) {
        if (contactUser.photo != null) {
          currentPhoto = contactUser.photo.photo_small;
        } else {
          currentPhoto = null;
        }
        avatarDrawable.setInfo(contactUser);
      } else {
        currentPhoto = null;
        avatarDrawable.setInfo(uid, null, null, false);
      }
      avatarImage.setImage(currentPhoto, "50_50", avatarDrawable, null, false);

      String currentNameString =
          ContactsController.formatName(
              messageObject.messageOwner.media.first_name,
              messageObject.messageOwner.media.last_name);
      int nameWidth = Math.min((int) Math.ceil(namePaint.measureText(currentNameString)), maxWidth);

      CharSequence stringFinal =
          TextUtils.ellipsize(
              currentNameString.replace("\n", " "), namePaint, nameWidth, TextUtils.TruncateAt.END);
      nameLayout =
          new StaticLayout(
              stringFinal, namePaint, nameWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
      if (nameLayout.getLineCount() > 0) {
        nameWidth = (int) Math.ceil(nameLayout.getLineWidth(0));
      } else {
        nameWidth = 0;
      }

      String phone = messageObject.messageOwner.media.phone_number;
      if (phone != null && phone.length() != 0) {
        if (!phone.startsWith("+")) {
          phone = "+" + phone;
        }
        phone = PhoneFormat.getInstance().format(phone);
      } else {
        phone = LocaleController.getString("NumberUnknown", R.string.NumberUnknown);
      }
      int phoneWidth = Math.min((int) Math.ceil(phonePaint.measureText(phone)), maxWidth);
      stringFinal =
          TextUtils.ellipsize(
              phone.replace("\n", " "), phonePaint, phoneWidth, TextUtils.TruncateAt.END);
      phoneLayout =
          new StaticLayout(
              stringFinal,
              phonePaint,
              phoneWidth,
              Layout.Alignment.ALIGN_NORMAL,
              1.0f,
              0.0f,
              false);
      if (phoneLayout.getLineCount() > 0) {
        phoneWidth = (int) Math.ceil(phoneLayout.getLineWidth(0));
      } else {
        phoneWidth = 0;
      }

      namesWidth = Math.max(nameWidth, phoneWidth);
      backgroundWidth = AndroidUtilities.dp(77 + (drawAddButton ? 42 : 0)) + namesWidth;

      super.setMessageObject(messageObject);
    }
  }
コード例 #14
0
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
      int type = getItemViewType(i);
      if (type == 0) {
        BackupImageView avatarImage;
        TextView onlineText;
        TLRPC.User user = MessagesController.getInstance().users.get(user_id);
        if (view == null) {
          LayoutInflater li =
              (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          view = li.inflate(R.layout.user_profile_avatar_layout, viewGroup, false);

          onlineText = (TextView) view.findViewById(R.id.settings_online);
          avatarImage = (BackupImageView) view.findViewById(R.id.settings_avatar_image);
          avatarImage.processDetach = false;
          avatarImage.setOnClickListener(
              new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                  TLRPC.User user = MessagesController.getInstance().users.get(user_id);
                  if (user.photo != null && user.photo.photo_big != null) {
                    PhotoViewer.getInstance()
                        .openPhoto(user.photo.photo_big, UserProfileActivity.this);
                  }
                }
              });
        } else {
          avatarImage = (BackupImageView) view.findViewById(R.id.settings_avatar_image);
          onlineText = (TextView) view.findViewById(R.id.settings_online);
        }
        TextView textView = (TextView) view.findViewById(R.id.settings_name);
        Typeface typeface = Utilities.getTypeface("fonts/rmedium.ttf");
        textView.setTypeface(typeface);

        textView.setText(Utilities.formatName(user.first_name, user.last_name));
        onlineText.setText(LocaleController.formatUserStatus(user));

        TLRPC.FileLocation photo = null;
        TLRPC.FileLocation photoBig = null;
        if (user.photo != null) {
          photo = user.photo.photo_small;
          photoBig = user.photo.photo_big;
        }
        avatarImage.setImage(photo, "50_50", Utilities.getUserAvatarForId(user.id));
        avatarImage.imageReceiver.setVisible(
            !PhotoViewer.getInstance().isShowingImage(photoBig), false);
        return view;
      } else if (type == 1) {
        if (view == null) {
          LayoutInflater li =
              (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          view = li.inflate(R.layout.settings_section_layout, viewGroup, false);
        }
        TextView textView = (TextView) view.findViewById(R.id.settings_section_text);
        if (i == phoneSectionRow) {
          textView.setText(LocaleController.getString("PHONE", R.string.PHONE));
        } else if (i == settingsSectionRow) {
          textView.setText(LocaleController.getString("SETTINGS", R.string.SETTINGS));
        } else if (i == sharedMediaSectionRow) {
          textView.setText(LocaleController.getString("SHAREDMEDIA", R.string.SHAREDMEDIA));
        }
      } else if (type == 2) {
        final TLRPC.User user = MessagesController.getInstance().users.get(user_id);
        if (view == null) {
          LayoutInflater li =
              (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          view = li.inflate(R.layout.user_profile_phone_layout, viewGroup, false);
          view.setOnClickListener(
              new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                  if (user.phone == null
                      || user.phone.length() == 0
                      || getParentActivity() == null) {
                    return;
                  }
                  selectedPhone = user.phone;

                  AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());

                  builder.setItems(
                      new CharSequence[] {
                        LocaleController.getString("Copy", R.string.Copy),
                        LocaleController.getString("Call", R.string.Call)
                      },
                      new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                          if (i == 1) {
                            try {
                              Intent intent =
                                  new Intent(
                                      Intent.ACTION_DIAL, Uri.parse("tel:+" + selectedPhone));
                              intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                              getParentActivity().startActivity(intent);
                            } catch (Exception e) {
                              FileLog.e("tmessages", e);
                            }
                          } else if (i == 0) {
                            int sdk = android.os.Build.VERSION.SDK_INT;
                            if (sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
                              android.text.ClipboardManager clipboard =
                                  (android.text.ClipboardManager)
                                      ApplicationLoader.applicationContext.getSystemService(
                                          Context.CLIPBOARD_SERVICE);
                              clipboard.setText(selectedPhone);
                            } else {
                              android.content.ClipboardManager clipboard =
                                  (android.content.ClipboardManager)
                                      ApplicationLoader.applicationContext.getSystemService(
                                          Context.CLIPBOARD_SERVICE);
                              android.content.ClipData clip =
                                  android.content.ClipData.newPlainText("label", selectedPhone);
                              clipboard.setPrimaryClip(clip);
                            }
                          }
                        }
                      });
                  showAlertDialog(builder);
                }
              });
        }
        ImageButton button = (ImageButton) view.findViewById(R.id.settings_edit_name);
        button.setOnClickListener(
            new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                TLRPC.User user = MessagesController.getInstance().users.get(user_id);
                if (user == null || user instanceof TLRPC.TL_userEmpty) {
                  return;
                }
                NotificationCenter.getInstance()
                    .postNotificationName(MessagesController.closeChats);
                Bundle args = new Bundle();
                args.putInt("user_id", user_id);
                presentFragment(new ChatActivity(args), true);
              }
            });
        TextView textView = (TextView) view.findViewById(R.id.settings_row_text);
        TextView detailTextView = (TextView) view.findViewById(R.id.settings_row_text_detail);
        View divider = view.findViewById(R.id.settings_row_divider);
        if (i == phoneRow) {
          if (user.phone != null && user.phone.length() != 0) {
            textView.setText(PhoneFormat.getInstance().format("+" + user.phone));
          } else {
            textView.setText("Unknown");
          }
          divider.setVisibility(View.INVISIBLE);
          detailTextView.setText(LocaleController.getString("PhoneMobile", R.string.PhoneMobile));
        }
      } else if (type == 3) {
        if (view == null) {
          LayoutInflater li =
              (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          view = li.inflate(R.layout.user_profile_leftright_row_layout, viewGroup, false);
        }
        TextView textView = (TextView) view.findViewById(R.id.settings_row_text);
        TextView detailTextView = (TextView) view.findViewById(R.id.settings_row_text_detail);

        View divider = view.findViewById(R.id.settings_row_divider);
        if (i == sharedMediaRow) {
          textView.setText(LocaleController.getString("SharedMedia", R.string.SharedMedia));
          if (totalMediaCount == -1) {
            detailTextView.setText(LocaleController.getString("Loading", R.string.Loading));
          } else {
            detailTextView.setText(String.format("%d", totalMediaCount));
          }
          divider.setVisibility(View.INVISIBLE);
        } else if (i == settingsTimerRow) {
          TLRPC.EncryptedChat encryptedChat =
              MessagesController.getInstance().encryptedChats.get((int) (dialog_id >> 32));
          textView.setText(LocaleController.getString("MessageLifetime", R.string.MessageLifetime));
          divider.setVisibility(View.VISIBLE);
          if (encryptedChat.ttl == 0) {
            detailTextView.setText(
                LocaleController.getString(
                    "ShortMessageLifetimeForever", R.string.ShortMessageLifetimeForever));
          } else if (encryptedChat.ttl == 2) {
            detailTextView.setText(
                LocaleController.getString(
                    "ShortMessageLifetime2s", R.string.ShortMessageLifetime2s));
          } else if (encryptedChat.ttl == 5) {
            detailTextView.setText(
                LocaleController.getString(
                    "ShortMessageLifetime5s", R.string.ShortMessageLifetime5s));
          } else if (encryptedChat.ttl == 60) {
            detailTextView.setText(
                LocaleController.getString(
                    "ShortMessageLifetime1m", R.string.ShortMessageLifetime1m));
          } else if (encryptedChat.ttl == 60 * 60) {
            detailTextView.setText(
                LocaleController.getString(
                    "ShortMessageLifetime1h", R.string.ShortMessageLifetime1h));
          } else if (encryptedChat.ttl == 60 * 60 * 24) {
            detailTextView.setText(
                LocaleController.getString(
                    "ShortMessageLifetime1d", R.string.ShortMessageLifetime1d));
          } else if (encryptedChat.ttl == 60 * 60 * 24 * 7) {
            detailTextView.setText(
                LocaleController.getString(
                    "ShortMessageLifetime1w", R.string.ShortMessageLifetime1w));
          } else {
            detailTextView.setText(String.format("%d", encryptedChat.ttl));
          }
        }
      } else if (type == 4) {
        if (view == null) {
          LayoutInflater li =
              (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          view = li.inflate(R.layout.user_profile_identicon_layout, viewGroup, false);
        }
        TextView textView = (TextView) view.findViewById(R.id.settings_row_text);
        View divider = view.findViewById(R.id.settings_row_divider);
        divider.setVisibility(View.VISIBLE);
        IdenticonView identiconView = (IdenticonView) view.findViewById(R.id.identicon_view);
        TLRPC.EncryptedChat encryptedChat =
            MessagesController.getInstance().encryptedChats.get((int) (dialog_id >> 32));
        identiconView.setBytes(encryptedChat.auth_key);
        textView.setText(LocaleController.getString("EncryptionKey", R.string.EncryptionKey));
      } else if (type == 5) {
        if (view == null) {
          LayoutInflater li =
              (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          view = li.inflate(R.layout.settings_row_button_layout, viewGroup, false);
        }
        TextView textView = (TextView) view.findViewById(R.id.settings_row_text);
        View divider = view.findViewById(R.id.settings_row_divider);
        if (i == settingsNotificationsRow) {
          textView.setText(
              LocaleController.getString(
                  "NotificationsAndSounds", R.string.NotificationsAndSounds));
          divider.setVisibility(View.INVISIBLE);
        }
      }
      return view;
    }
コード例 #15
0
  @Override
  public View createView(LayoutInflater inflater, ViewGroup container) {
    if (fragmentView == null) {
      actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back);
      actionBarLayer.setBackOverlay(R.layout.updating_state_layout);
      if (dialog_id != 0) {
        actionBarLayer.setTitle(LocaleController.getString("SecretTitle", R.string.SecretTitle));
        actionBarLayer.setTitleIcon(R.drawable.ic_lock_white, Utilities.dp(4));
      } else {
        actionBarLayer.setTitle(LocaleController.getString("ContactInfo", R.string.ContactInfo));
      }
      actionBarLayer.setActionBarMenuOnItemClick(
          new ActionBarLayer.ActionBarMenuOnItemClick() {
            @Override
            public void onItemClick(int id) {
              if (id == -1) {
                finishFragment();
              } else if (id == block_contact) {
                AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
                builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure));
                builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
                builder.setPositiveButton(
                    LocaleController.getString("OK", R.string.OK),
                    new DialogInterface.OnClickListener() {
                      @Override
                      public void onClick(DialogInterface dialogInterface, int i) {
                        TLRPC.User user = MessagesController.getInstance().users.get(user_id);
                        if (user == null) {
                          return;
                        }
                        TLRPC.TL_contacts_block req = new TLRPC.TL_contacts_block();
                        req.id = MessagesController.getInputUser(user);
                        TLRPC.TL_contactBlocked blocked = new TLRPC.TL_contactBlocked();
                        blocked.user_id = user_id;
                        blocked.date = (int) (System.currentTimeMillis() / 1000);
                        ConnectionsManager.getInstance()
                            .performRpc(
                                req,
                                new RPCRequest.RPCRequestDelegate() {
                                  @Override
                                  public void run(TLObject response, TLRPC.TL_error error) {}
                                },
                                null,
                                true,
                                RPCRequest.RPCRequestClassGeneric);
                      }
                    });
                builder.setNegativeButton(
                    LocaleController.getString("Cancel", R.string.Cancel), null);
                showAlertDialog(builder);
              } else if (id == add_contact) {
                TLRPC.User user = MessagesController.getInstance().users.get(user_id);
                Bundle args = new Bundle();
                args.putInt("user_id", user.id);
                presentFragment(new ContactAddActivity(args));
              } else if (id == share_contact) {
                Bundle args = new Bundle();
                args.putBoolean("onlySelect", true);
                args.putBoolean("serverOnly", true);
                MessagesActivity fragment = new MessagesActivity(args);
                fragment.setDelegate(UserProfileActivity.this);
                presentFragment(fragment);
              } else if (id == edit_contact) {
                Bundle args = new Bundle();
                args.putInt("user_id", user_id);
                presentFragment(new ContactAddActivity(args));
              } else if (id == delete_contact) {
                final TLRPC.User user = MessagesController.getInstance().users.get(user_id);
                if (user == null || getParentActivity() == null) {
                  return;
                }
                AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
                builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure));
                builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
                builder.setPositiveButton(
                    LocaleController.getString("OK", R.string.OK),
                    new DialogInterface.OnClickListener() {
                      @Override
                      public void onClick(DialogInterface dialogInterface, int i) {
                        ArrayList<TLRPC.User> arrayList = new ArrayList<TLRPC.User>();
                        arrayList.add(user);
                        ContactsController.getInstance().deleteContact(arrayList);
                      }
                    });
                builder.setNegativeButton(
                    LocaleController.getString("Cancel", R.string.Cancel), null);
                showAlertDialog(builder);
              }
            }
          });

      createActionBarMenu();

      fragmentView = inflater.inflate(R.layout.user_profile_layout, container, false);
      listAdapter = new ListAdapter(getParentActivity());

      TextView textView = (TextView) fragmentView.findViewById(R.id.start_secret_button_text);
      textView.setText(
          LocaleController.getString("StartEncryptedChat", R.string.StartEncryptedChat));

      View startSecretButton = fragmentView.findViewById(R.id.start_secret_button);
      startSecretButton.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              if (getParentActivity() == null) {
                return;
              }
              AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
              builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure));
              builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
              builder.setPositiveButton(
                  LocaleController.getString("OK", R.string.OK),
                  new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                      creatingChat = true;
                      MessagesController.getInstance()
                          .startSecretChat(
                              getParentActivity(),
                              MessagesController.getInstance().users.get(user_id));
                    }
                  });
              builder.setNegativeButton(
                  LocaleController.getString("Cancel", R.string.Cancel), null);
              showAlertDialog(builder);
            }
          });
      if (dialog_id == 0) {
        startSecretButton.setVisibility(View.VISIBLE);
      } else {
        startSecretButton.setVisibility(View.GONE);
      }

      listView = (ListView) fragmentView.findViewById(R.id.listView);
      listView.setAdapter(listAdapter);
      listView.setOnItemClickListener(
          new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) {
              if (i == sharedMediaRow) {
                Bundle args = new Bundle();
                if (dialog_id != 0) {
                  args.putLong("dialog_id", dialog_id);
                } else {
                  args.putLong("dialog_id", user_id);
                }
                presentFragment(new MediaActivity(args));
              } else if (i == settingsKeyRow) {
                Bundle args = new Bundle();
                args.putInt("chat_id", (int) (dialog_id >> 32));
                presentFragment(new IdenticonActivity(args));
              } else if (i == settingsTimerRow) {
                if (getParentActivity() == null) {
                  return;
                }
                AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
                builder.setTitle(
                    LocaleController.getString("MessageLifetime", R.string.MessageLifetime));
                builder.setItems(
                    new CharSequence[] {
                      LocaleController.getString(
                          "ShortMessageLifetimeForever", R.string.ShortMessageLifetimeForever),
                      LocaleController.getString(
                          "ShortMessageLifetime2s", R.string.ShortMessageLifetime2s),
                      LocaleController.getString(
                          "ShortMessageLifetime5s", R.string.ShortMessageLifetime5s),
                      LocaleController.getString(
                          "ShortMessageLifetime1m", R.string.ShortMessageLifetime1m),
                      LocaleController.getString(
                          "ShortMessageLifetime1h", R.string.ShortMessageLifetime1h),
                      LocaleController.getString(
                          "ShortMessageLifetime1d", R.string.ShortMessageLifetime1d),
                      LocaleController.getString(
                          "ShortMessageLifetime1w", R.string.ShortMessageLifetime1w)
                    },
                    new DialogInterface.OnClickListener() {
                      @Override
                      public void onClick(DialogInterface dialog, int which) {
                        int oldValue = currentEncryptedChat.ttl;
                        if (which == 0) {
                          currentEncryptedChat.ttl = 0;
                        } else if (which == 1) {
                          currentEncryptedChat.ttl = 2;
                        } else if (which == 2) {
                          currentEncryptedChat.ttl = 5;
                        } else if (which == 3) {
                          currentEncryptedChat.ttl = 60;
                        } else if (which == 4) {
                          currentEncryptedChat.ttl = 60 * 60;
                        } else if (which == 5) {
                          currentEncryptedChat.ttl = 60 * 60 * 24;
                        } else if (which == 6) {
                          currentEncryptedChat.ttl = 60 * 60 * 24 * 7;
                        }
                        if (oldValue != currentEncryptedChat.ttl) {
                          if (listView != null) {
                            listView.invalidateViews();
                          }
                          MessagesController.getInstance().sendTTLMessage(currentEncryptedChat);
                          MessagesStorage.getInstance().updateEncryptedChat(currentEncryptedChat);
                        }
                      }
                    });
                builder.setNegativeButton(
                    LocaleController.getString("Cancel", R.string.Cancel), null);
                showAlertDialog(builder);
              } else if (i == settingsNotificationsRow) {
                Bundle args = new Bundle();
                args.putLong("dialog_id", dialog_id == 0 ? user_id : dialog_id);
                presentFragment(new ProfileNotificationsActivity(args));
              }
            }
          });
      if (dialog_id != 0) {
        MessagesController.getInstance().getMediaCount(dialog_id, classGuid, true);
      } else {
        MessagesController.getInstance().getMediaCount(user_id, classGuid, true);
      }
    } else {
      ViewGroup parent = (ViewGroup) fragmentView.getParent();
      if (parent != null) {
        parent.removeView(fragmentView);
      }
    }
    return fragmentView;
  }