Пример #1
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public NotificationsViewModel()
        {
            NotificationsStack.Initialize();

            this.Notifications = new Notifications();

            this._IsVisibleBackButton = false;
            this._TimelineItems       = new ObservableCollection <TimelineItemProperties>();
            this.CompositeDisposable.Add(
                new PropertyChangedEventListener(this.Notifications, (_, __) =>
            {
                switch (__.PropertyName)
                {
                case nameof(this.Notifications.ScreenNames):
                    this.RaisePropertyChanged(() => this.ScreenNames);
                    break;

                case nameof(this.Notifications.IsOpen):
                    this.RaisePropertyChanged(() => this.IsOpen);
                    break;

                case nameof(this.Notifications.ProfileImageUrl):
                    this.RaisePropertyChanged(() => this.ProfileImageUrl);
                    break;

                case nameof(this.Notifications.TokenSuffix):
                    this.RaisePropertyChanged(() => this.TokenSuffix);
                    break;
                }
            })
                );

            this.CloseCommand = new RelayCommand(this.ToggleOpen);
        }
Пример #2
0
        /// <summary>
        /// メンションを受け取ったとき
        /// </summary>
        /// <param name="tokenSuffix">アカウント番号</param>
        /// <param name="statusMessage">メンション</param>
        private void ReceiveMention(int tokenSuffix, StatusMessage statusMessage)
        {
            if (statusMessage.Status.CurrentUserRetweet != null)
            {
                return;
            }

            if (Properties.Settings.Default.IsNotify)
            {
                var text = "";
                if (statusMessage.Status.ExtendedTweet != null && !string.IsNullOrEmpty(statusMessage.Status.ExtendedTweet.FullText))
                {
                    text = statusMessage.Status.ExtendedTweet.FullText;
                }
                else if (statusMessage.Status.FullText != null && !string.IsNullOrEmpty(statusMessage.Status.FullText))
                {
                    text = statusMessage.Status.FullText;
                }
                else
                {
                    text = statusMessage.Status.Text;
                }

                CommonMethods.PlaySoundEffect(SoundEffect.Notification1);
                this.Notify(statusMessage.Status.User.Name + "さんからのメンション\n" + text, NotificationType.Normal);
            }

            if (statusMessage.Status.RetweetedStatus != null)
            {
                NotificationsStack.StackNotification(
                    statusMessage.Status.User,
                    statusMessage.Status.RetweetedStatus.User,
                    Timeline.NotificationPropertiesType.Retweeted,
                    statusMessage.Status.User.Name + "さんにツイートがリツイートされました。\n" + statusMessage.Status.RetweetedStatus.Text,
                    statusMessage.Status.RetweetedStatus.Id);
            }
            else
            {
                MentionsStack.StackMention(statusMessage.Status);
            }
        }
Пример #3
0
        /// <summary>
        /// イベントが流れてきたとき
        /// </summary>
        /// <param name="tokenSuffix">アカウント番号</param>
        /// <param name="eventMessage">イベント</param>
        private void ReceiveEventMessage(int tokenSuffix, EventMessage eventMessage)
        {
            if (eventMessage.Source.Id == AccountTokens.Users[tokenSuffix].Id)
            {
                return;
            }

            var isNotify    = false;
            var isPlaySound = false;
            var text        = "";

            switch (eventMessage.Event)
            {
            case EventCode.AccessRevoked:
                break;

            case EventCode.Block:
                break;

            case EventCode.Favorite:
                isNotify    = true;
                isPlaySound = true;
                text        = eventMessage.Source.Name + "さんにいいねされました。\n" + eventMessage.TargetStatus.Text;
                NotificationsStack.StackNotification(eventMessage.Source, eventMessage.Target, Timeline.NotificationPropertiesType.Favorited, text, eventMessage.TargetStatus.Id);
                break;

            case EventCode.FavoritedRetweet:
                isNotify    = true;
                isPlaySound = true;
                text        = eventMessage.Source.Name + "さんにリツイートをいいねされました。\n" + eventMessage.TargetStatus.Text;
                NotificationsStack.StackNotification(eventMessage.Source, eventMessage.Target, Timeline.NotificationPropertiesType.RetweetFavorited, text, eventMessage.TargetStatus.Id);
                break;

            case EventCode.Follow:
                isNotify    = true;
                isPlaySound = true;
                text        = eventMessage.Source.Name + "さんにフォローされました。";
                NotificationsStack.StackNotification(eventMessage.Source, eventMessage.Target, Timeline.NotificationPropertiesType.Followed, text);
                break;

            case EventCode.ListCreated:
                break;

            case EventCode.ListDestroyed:
                break;

            case EventCode.ListMemberAdded:
                break;

            case EventCode.ListMemberRemoved:
                break;

            case EventCode.ListUpdated:
                break;

            case EventCode.ListUserSubscribed:
                break;

            case EventCode.ListUserUnsubscribed:
                break;

            case EventCode.Mute:
                break;

            case EventCode.QuotedTweet:
                isNotify    = true;
                isPlaySound = true;
                text        = eventMessage.Source.Name + "さんに引用されました。\n" + eventMessage.TargetStatus.Text;
                break;

            case EventCode.RetweetedRetweet:
                isNotify    = true;
                isPlaySound = true;
                text        = eventMessage.Source.Name + "さんにリツイートをリツイートされました。\n" + eventMessage.TargetStatus.Text;
                break;

            case EventCode.Unblock:
                break;

            case EventCode.Unfavorite:
                break;

            case EventCode.Unfollow:
                break;

            case EventCode.Unmute:
                break;

            case EventCode.UserUpdate:
                break;
            }

            if (isPlaySound)
            {
                CommonMethods.PlaySoundEffect(SoundEffect.Notification1);
            }
            if (isNotify)
            {
                this.Notify(text, NotificationType.Normal);
            }
        }