コード例 #1
0
ファイル: Cudumar.xaml.cs プロジェクト: yhtsnda/cudumar-xmpp
        private void AvatarImg_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            XmppVCard vCard = UserSetting.VCard;

            if (Guard.AlertIfNull(vCard, this, "Unable to set avatar now, vCard not retrieved yet from the server. If the problem persists, the server may not support this feature."))
            {
                return;
            }

            string fileName = DialogUtils.SelectFileToOpen("All Avatar types (*.jpg,*.jpeg,*.gif,*.png)|*.jpg;*.jpeg;*.gif;*.png", null);

            if (string.IsNullOrWhiteSpace(fileName))
            {
                return;
            }

            string hash = null;

            try {
                Avatar.GenerateFromFile(fileName, out hash);
                vCard.PhotoType   = "image/png";
                vCard.PhotoBinVal = Avatar.GetData(hash);
            }
            catch (Exception ex) {
                DialogUtils.ShowException(this, "Unable to set avatar :-( Internal error.", ex);
                return;
            }

            Log("avatar updating");
            int id = client.SendVCardUpdate(vCard);

            Signals.Register(id, (par) => {
                if (par.Type == XmppIqType.Result)
                {
                    UpdateAvatar(hash);
                    Log("avatar updated");
                }
                else if (par.Type == XmppIqType.Error)
                {
                    DialogUtils.ShowError(this, string.Format("Unable to set avatar :-( Server error, be sad! {0} {0} {1}", Environment.NewLine, ParseStreamError(par.xStream)));
                }
            });
        }