Exemple #1
0
        internal void NotifyNewTweetReceived(TimelineListCoreViewModel timelineListCoreViewModel, TimelineChild.TweetViewModel tweetViewModel)
        {
            if (AccountStorage.Contains(tweetViewModel.Status.User.ScreenName) || !this.IsAlive)
            {
                return;
            }

            // 正直謎設定だし、スタックトップTLの新着を伝えるってあんまり直感的じゃないから
            // 設定じゃなくて固定にしてよかったかもしれない
            if (Setting.Instance.NotificationProperty.NotifyStackTopTimeline ?
                this.CurrentForegroundTimeline.CoreViewModel == timelineListCoreViewModel :
                this.BaseTimeline.CoreViewModel == timelineListCoreViewModel)
            {
                // NewTweetsCountはプロパティが良きに計らってくれるので
                // _人人人人人人人人人人人人人人人_
                // >  インクリしていってね!!!<
                //  ̄YYYYYYYYYYYYYYY ̄
                this.NewTweetsCount++;

                if (this.TabProperty.IsNotifyEnabled)
                {
                    if (String.IsNullOrEmpty(this.TabProperty.NotifySoundPath))
                    {
                        NotificationCore.QueueNotify(tweetViewModel);
                    }
                    else
                    {
                        NotificationCore.QueueNotify(tweetViewModel, this.TabProperty.NotifySoundPath);
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// ウィンドウが表示されるより前に行われる初期化処理
        /// </summary>
        public static void Init()
        {
            if (initialized)
            {
                throw new InvalidOperationException("アプリケーションは既に初期化されています。");
            }
            initialized = true;

            // ネットワーク初期化
            Dulcet.Network.Http.Expect100Continue  = false;
            Dulcet.Network.Http.MaxConnectionLimit = Int32.MaxValue;
            Debug.WriteLine("SecurityProtocolの初期値は{0}です。", Dulcet.Network.Http.SecurityProtocol);
            Dulcet.Network.Http.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

            // プラグインのロード
            PluginLoader.Load();

            // 設定のロード
            Setting.Initialize();

            // APIエンドポイントのオーバーライト
            if (!String.IsNullOrEmpty(Setting.Instance.KernelProperty.TwitterApiEndpoint))
            {
                try
                {
                    Dulcet.Twitter.Rest.Api.TwitterUri = Setting.Instance.KernelProperty.TwitterApiEndpoint;
                }
                catch (Exception ex)
                {
                    ExceptionStorage.Register(ex, ExceptionCategory.ConfigurationError,
                                              "Twitter API エンドポイントの設定を行えませんでした。");
                }
            }

#if false
            Uri uri     = new Uri("https://xn--bckgakc6gsa3c6z.jp");
            var decoded = System.Web.Punycode.PunyDecode(uri);
            System.Diagnostics.Debug.WriteLine(decoded.OriginalString);
#endif

            // サブシステムの初期化
            NotificationCore.Initialize();
            HashtagStorage.Initialize();

            Application.Current.Exit += new ExitEventHandler(AppExit);
        }
 static void RaiseStatusAdded(TweetViewModel added)
 {
     // Mention通知設定がないか、
     // 自分へのMentionでない場合にのみRegisterする
     // +
     // Retweet通知設定がないか、
     // 自分のTweetのRetweetでない場合にのみRegisterする
     if ((!Setting.Instance.NotificationProperty.NotifyMention ||
          !TwitterHelper.IsMentionOfMe(added.Status)) &&
         (!Setting.Instance.NotificationProperty.NotifyRetweet ||
          !(added.Status is TwitterStatus) || ((TwitterStatus)added.Status).RetweetedOriginal == null ||
          !AccountStorage.Contains(((TwitterStatus)added.Status).RetweetedOriginal.User.ScreenName)))
     {
         NotificationCore.RegisterNotify(added);
     }
     OnTweetStorageChanged(new TweetStorageChangedEventArgs(TweetActionKind.Added, added));
     NotificationCore.DispatchNotify(added);
 }
Exemple #4
0
        /// <summary>
        /// ウィンドウが表示されるより前に行われる初期化処理
        /// </summary>
        public static void Init()
        {
            if (initialized)
            {
                throw new InvalidOperationException("アプリケーションは既に初期化されています。");
            }
            initialized = true;

            // ネットワーク初期化
            Dulcet.Network.Http.Expect100Continue  = false;
            Dulcet.Network.Http.MaxConnectionLimit = Int32.MaxValue;

            // プラグインのロード
            PluginLoader.Load();

            // 設定のロード
            Setting.Initialize();

            // APIエンドポイントのオーバーライト
            if (!String.IsNullOrEmpty(Setting.Instance.KernelProperty.TwitterApiEndpoint))
            {
                try
                {
                    Dulcet.Twitter.Rest.Api.TwitterUri = Setting.Instance.KernelProperty.TwitterApiEndpoint;
                }
                catch (Exception ex)
                {
                    ExceptionStorage.Register(ex, ExceptionCategory.ConfigurationError,
                                              "Twitter API エンドポイントの設定を行えませんでした。");
                }
            }

            // サブシステムの初期化
            NotificationCore.Initialize();
            HashtagStorage.Initialize();

            Application.Current.Exit += new ExitEventHandler(AppExit);
        }