public void Save(ConfigSaveDelegate save) { using (StreamWriter streamWriter = new StreamWriter(ConfigFilePath, false, System.Text.Encoding.UTF8)) using (JsonTextWriter writer = new JsonTextWriter(streamWriter)) { writer.WriteStartObject(); writer.WriteKey("accounts"); writer.WriteStartArray(); for (int i = 0; i < _accounts.Length; i++) { WriteAccount(writer, _accounts[i]); } writer.WriteEndArray(); writer.WriteKey("searches"); writer.WriteStartArray(); for (int i = 0; i < _searches.Length; i++) { WriteSearch(writer, _searches[i]); } writer.WriteEndArray(); writer.WriteKey("lists"); writer.WriteStartArray(); for (int i = 0; i < _lists.Length; i++) { WriteList(writer, _lists[i]); } writer.WriteEndArray(); save(writer); writer.WriteEndObject(); } }
void WriteRestUsage(JsonTextWriter writer, TwitterAccount.RestUsage usage) { writer.WriteKey("interval"); writer.WriteNumber(usage.Interval.TotalSeconds); writer.WriteKey("count"); writer.WriteNumber(usage.Count); }
void WriteList(JsonTextWriter writer, ListStatuses list) { writer.WriteStartObject(); writer.WriteKey("id"); writer.WriteNumber(list.List.ID); writer.WriteKey("username"); writer.WriteString(list.Account.ScreenName); WriteRestUsage(writer, list.RestInfo); writer.WriteEndObject(); }
void WriteSearch(JsonTextWriter writer, SearchStatuses search) { writer.WriteStartObject(); writer.WriteKey("keywords"); writer.WriteString(search.Keyword); writer.WriteKey("username"); writer.WriteString(search.Account.ScreenName); WriteRestUsage(writer, search.RestInfo); writer.WriteEndObject(); }
void WriteAccount(JsonTextWriter writer, TwitterAccount account) { writer.WriteStartObject(); if (account.Credential is NetworkCredential) { NetworkCredential nc = account.Credential as NetworkCredential; writer.WriteKey("username"); writer.WriteString(nc.UserName); writer.WriteKey("password"); writer.WriteString(nc.Password); } else if (account.Credential is OAuthPasswordCache) { OAuthPasswordCache pc = account.Credential as OAuthPasswordCache; writer.WriteKey("username"); writer.WriteString(pc.UserName); writer.WriteKey("password"); writer.WriteString(pc.Password); writer.WriteKey("token"); writer.WriteString(pc.AccessToken); writer.WriteKey("secret"); writer.WriteString(pc.AccessSecret); } if (account.SelfUserID > 0) { writer.WriteKey("id"); writer.WriteNumber(account.SelfUserID); } writer.WriteKey("rest"); writer.WriteStartObject(); string[] rest_keys = new string[] { "home", "mentions", "dm" }; TwitterAccount.RestUsage[] rests = new TwitterAccount.RestUsage[] { account.RestHome, account.RestMentions, account.RestDirectMessages }; for (int i = 0; i < rest_keys.Length; i++) { writer.WriteKey(rest_keys[i]); writer.WriteStartObject(); writer.WriteKey("enable"); writer.WriteBoolean(rests[i].IsEnabled); writer.WriteKey("count"); writer.WriteNumber(rests[i].Count); writer.WriteKey("interval"); writer.WriteNumber((int)rests[i].Interval.TotalSeconds); writer.WriteEndObject(); } writer.WriteEndObject(); writer.WriteKey("streaming"); if (account.StreamingClient == null) { writer.WriteNull(); } else { writer.WriteStartObject(); writer.WriteKey("mode"); if (account.StreamingClient.Target is TwitterAccount) { writer.WriteString("follow"); writer.WriteKey("username"); writer.WriteString((account.StreamingClient.Target as TwitterAccount).ScreenName); } else if (account.StreamingClient.Target is SearchStatuses) { writer.WriteString("track"); writer.WriteKey("keywords"); writer.WriteString(account.StreamingClient.SearchKeywords); } else if (account.StreamingClient.Target is ListStatuses) { writer.WriteString("list"); writer.WriteKey("id"); writer.WriteNumber((account.StreamingClient.Target as ListStatuses).List.ID); } writer.WriteEndObject(); } writer.WriteEndObject(); }
void WriteSearch(JsonTextWriter writer, SearchStatuses search) { writer.WriteStartObject (); writer.WriteKey ("keywords"); writer.WriteString (search.Keyword); writer.WriteKey ("username"); writer.WriteString (search.Account.ScreenName); WriteRestUsage (writer, search.RestInfo); writer.WriteEndObject (); }
void WriteList(JsonTextWriter writer, ListStatuses list) { writer.WriteStartObject (); writer.WriteKey ("id"); writer.WriteNumber (list.List.ID); writer.WriteKey ("username"); writer.WriteString (list.Account.ScreenName); WriteRestUsage (writer, list.RestInfo); writer.WriteEndObject (); }
void WriteRestUsage(JsonTextWriter writer, TwitterAccount.RestUsage usage) { writer.WriteKey ("interval"); writer.WriteNumber (usage.Interval.TotalSeconds); writer.WriteKey ("count"); writer.WriteNumber (usage.Count); }
public void Save(ConfigSaveDelegate save) { using (StreamWriter streamWriter = new StreamWriter (ConfigFilePath, false, System.Text.Encoding.UTF8)) using (JsonTextWriter writer = new JsonTextWriter (streamWriter)) { writer.WriteStartObject (); writer.WriteKey ("accounts"); writer.WriteStartArray (); for (int i = 0; i < _accounts.Length; i ++) WriteAccount (writer, _accounts[i]); writer.WriteEndArray (); writer.WriteKey ("searches"); writer.WriteStartArray (); for (int i = 0; i < _searches.Length; i ++) WriteSearch (writer, _searches[i]); writer.WriteEndArray (); writer.WriteKey ("lists"); writer.WriteStartArray (); for (int i = 0; i < _lists.Length; i++) WriteList (writer, _lists[i]); writer.WriteEndArray (); save (writer); writer.WriteEndObject (); } }
void WriteAccount(JsonTextWriter writer, TwitterAccount account) { writer.WriteStartObject (); if (account.Credential is NetworkCredential) { NetworkCredential nc = account.Credential as NetworkCredential; writer.WriteKey ("username"); writer.WriteString (nc.UserName); writer.WriteKey ("password"); writer.WriteString (nc.Password); } else if (account.Credential is OAuthPasswordCache) { OAuthPasswordCache pc = account.Credential as OAuthPasswordCache; writer.WriteKey ("username"); writer.WriteString (pc.UserName); writer.WriteKey ("password"); writer.WriteString (pc.Password); writer.WriteKey ("token"); writer.WriteString (pc.AccessToken); writer.WriteKey ("secret"); writer.WriteString (pc.AccessSecret); } if (account.SelfUserID > 0) { writer.WriteKey ("id"); writer.WriteNumber (account.SelfUserID); } writer.WriteKey ("rest"); writer.WriteStartObject (); string[] rest_keys = new string[] {"home", "mentions", "dm"}; TwitterAccount.RestUsage[] rests = new TwitterAccount.RestUsage[] {account.RestHome, account.RestMentions, account.RestDirectMessages}; for (int i = 0; i < rest_keys.Length; i ++) { writer.WriteKey (rest_keys[i]); writer.WriteStartObject (); writer.WriteKey ("enable"); writer.WriteBoolean (rests[i].IsEnabled); writer.WriteKey ("count"); writer.WriteNumber (rests[i].Count); writer.WriteKey ("interval"); writer.WriteNumber ((int)rests[i].Interval.TotalSeconds); writer.WriteEndObject (); } writer.WriteEndObject (); writer.WriteKey ("streaming"); if (account.StreamingClient == null) { writer.WriteNull (); } else { writer.WriteStartObject (); writer.WriteKey ("mode"); if (account.StreamingClient.Target is TwitterAccount) { writer.WriteString ("follow"); writer.WriteKey ("username"); writer.WriteString ((account.StreamingClient.Target as TwitterAccount).ScreenName); } else if (account.StreamingClient.Target is SearchStatuses) { writer.WriteString ("track"); writer.WriteKey ("keywords"); writer.WriteString (account.StreamingClient.SearchKeywords); } else if (account.StreamingClient.Target is ListStatuses) { writer.WriteString ("list"); writer.WriteKey ("id"); writer.WriteNumber ((account.StreamingClient.Target as ListStatuses).List.ID); } writer.WriteEndObject (); } writer.WriteEndObject (); }
void SaveConfigInternalStyles(JsonTextWriter writer) { writer.WriteStartObject (); writer.WriteKey ("colors"); writer.WriteStartObject (); SaveConfigInternalColors (writer); writer.WriteEndObject (); writer.WriteKey ("fonts"); writer.WriteStartObject (); SaveConfigInternalFonts (writer); writer.WriteEndObject (); writer.WriteKey ("icon_size"); writer.WriteNumber (IconSize); writer.WriteEndObject (); }
void SaveConfigInternalMisc(JsonTextWriter writer) { writer.WriteStartObject (); writer.WriteKey ("include_mentions"); writer.WriteBoolean (_mgr.HomeIncludeMentions); writer.WriteEndObject (); }
void SaveConfigInternalFonts(JsonTextWriter writer) { writer.WriteKey ("main-family"); writer.WriteString (FontFamily.ToString ()); writer.WriteKey ("main-size"); writer.WriteNumber (FontSize); }
void SaveConfigInternalColors(JsonTextWriter writer) { ColorCodeNameConverter conv = new ColorCodeNameConverter (); writer.WriteKey ("bg"); writer.WriteString ((string)conv.Convert (Background, null, null, null)); writer.WriteKey ("fg"); writer.WriteString ((string)conv.Convert (Foreground, null, null, null)); writer.WriteKey ("postTextBoxBg"); writer.WriteString ((string)conv.Convert (PostTextBox.Background, null, null, null)); writer.WriteKey ("postTextBoxFg"); writer.WriteString ((string)conv.Convert (PostTextBox.Foreground, null, null, null)); writer.WriteKey ("postBg"); writer.WriteString ((string)conv.Convert (PostBackground, null, null, null)); writer.WriteKey ("postFg"); writer.WriteString ((string)conv.Convert (PostForeground, null, null, null)); writer.WriteKey ("postNameFg"); writer.WriteString ((string)conv.Convert (NameForeground, null, null, null)); writer.WriteKey ("postLinkFg"); writer.WriteString ((string)conv.Convert (LinkForeground, null, null, null)); }
void SaveConfigInternal(JsonTextWriter writer, TimelineBase timelines) { foreach (object item in timelines.TimeLines) { writer.WriteStartObject (); writer.WriteKey ("type"); TimelineInfo tl = item as TimelineInfo; TabInfo tb = item as TabInfo; if (tl != null) { if (tl.Search != null) { writer.WriteString ("search"); writer.WriteKey ("keywords"); writer.WriteString (tl.Search.Keyword); } else if (tl.List != null) { writer.WriteString ("list"); writer.WriteKey ("id"); writer.WriteNumber (tl.List.List.ID); } else { writer.WriteString ("account"); writer.WriteKey ("subtype"); if (tl.Statuses == tl.RestAccount.HomeTimeline) writer.WriteString ("home"); else if (tl.Statuses == tl.RestAccount.Mentions) writer.WriteString ("mentions"); else if (tl.Statuses == tl.RestAccount.DirectMessages) writer.WriteString ("directmessages"); writer.WriteKey ("name"); writer.WriteString (tl.RestAccount.ScreenName); } } else if (tb != null) { writer.WriteString ("tab"); writer.WriteKey ("title"); writer.WriteString (tb.Title); writer.WriteKey ("windows"); writer.WriteStartArray (); SaveConfigInternal (writer, tb); writer.WriteEndArray (); } else { writer.WriteNull (); } writer.WriteEndObject (); } }