Beispiel #1
0
        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();
                }
        }
Beispiel #2
0
 void WriteRestUsage(JsonTextWriter writer, TwitterAccount.RestUsage usage)
 {
     writer.WriteKey("interval");
     writer.WriteNumber(usage.Interval.TotalSeconds);
     writer.WriteKey("count");
     writer.WriteNumber(usage.Count);
 }
Beispiel #3
0
 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();
 }
Beispiel #4
0
 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();
 }
Beispiel #5
0
 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();
 }
Beispiel #6
0
 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 ();
 }
Beispiel #7
0
 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 ();
 }
Beispiel #8
0
 void WriteRestUsage(JsonTextWriter writer, TwitterAccount.RestUsage usage)
 {
     writer.WriteKey ("interval");
     writer.WriteNumber (usage.Interval.TotalSeconds);
     writer.WriteKey ("count");
     writer.WriteNumber (usage.Count);
 }
Beispiel #9
0
        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 ();
            }
        }
Beispiel #10
0
 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 ();
 }
Beispiel #11
0
        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 ();
        }
Beispiel #12
0
        void SaveConfigInternalMisc(JsonTextWriter writer)
        {
            writer.WriteStartObject ();

            writer.WriteKey ("include_mentions");
            writer.WriteBoolean (_mgr.HomeIncludeMentions);

            writer.WriteEndObject ();
        }
Beispiel #13
0
 void SaveConfigInternalFonts(JsonTextWriter writer)
 {
     writer.WriteKey ("main-family");
     writer.WriteString (FontFamily.ToString ());
     writer.WriteKey ("main-size");
     writer.WriteNumber (FontSize);
 }
Beispiel #14
0
 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));
 }
Beispiel #15
0
 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 ();
     }
 }