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); } } } }
/// <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); }
/// <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); }