using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Xml.Serialization;
namespace OpenTween
{
public SettingTabs()
{
- Tabs = new List<TabClass>();
+ Tabs = new List<SettingTabItem>();
}
#endregion
- public List<TabClass> Tabs;
+ public List<SettingTabItem> Tabs;
+
+ [XmlType("TabClass")]
+ public class SettingTabItem
+ {
+ /// <summary>タブの表示名</summary>
+ public string TabName { get; set; }
+
+ /// <summary>タブの種類</summary>
+ public MyCommon.TabUsageType TabType { get; set; }
+
+ /// <summary>未読管理を有効にする</summary>
+ public bool UnreadManage { get; set; }
+
+ /// <summary>タブを保護する</summary>
+ [XmlElement(ElementName = "Locked")] // v1.0.5で「タブを固定(Locked)」から「タブを保護(Protected)」に名称変更
+ public bool Protected { get; set; }
+
+ /// <summary>新着通知表示を有効にする</summary>
+ public bool Notify { get; set; }
+
+ /// <summary>通知音</summary>
+ public string SoundFile { get; set; }
+
+ /// <summary>
+ /// 振り分けルール (<see cref="MyCommon.TabUsageType.UserDefined"/> で使用)
+ /// </summary>
+ public PostFilterRule[] FilterArray { get; set; } = new PostFilterRule[0];
+
+ /// <summary>
+ /// 表示するユーザーのスクリーンネーム (<see cref="MyCommon.TabUsageType.UserTimeline"/> で使用)
+ /// </summary>
+ public string User { get; set; }
+
+ /// <summary>
+ /// 検索文字列 (<see cref="MyCommon.TabUsageType.PublicSearch"/> で使用)
+ /// </summary>
+ public string SearchWords { get; set; } = "";
+
+ /// <summary>
+ /// 検索対象の言語 (<see cref="MyCommon.TabUsageType.PublicSearch"/> で使用)
+ /// </summary>
+ public string SearchLang { get; set; } = "";
+
+ /// <summary>
+ /// 表示するリスト (<see cref="MyCommon.TabUsageType.Lists"/> で使用)
+ /// </summary>
+ public ListElement ListInfo { get; set; }
+ }
}
}
#endregion
#region "リスト"
- [NonSerialized]
private ListElement _listInfo;
public ListElement ListInfo
{
}
#endregion
- [XmlIgnore]
public PostClass RelationTargetPost { get; set; }
- [XmlIgnore]
public long OldestId = long.MaxValue;
- [XmlIgnore]
public long SinceId { get; set; }
- [XmlIgnore]
public ConcurrentDictionary<long, PostClass> Posts { get; private set; }
private ConcurrentDictionary<long, PostClass> _innerPosts;
this.unreadIds = new SortedSet<long>(this.unreadIds, comparer);
}
- [XmlIgnore]
public ComparerMode SortMode { get; private set; }
-
- [XmlIgnore]
public SortOrder SortOrder { get; private set; }
public void AddPostQueue(long statusId, bool read)
}
public bool UnreadManage { get; set; }
-
- // v1.0.5で「タブを固定(Locked)」から「タブを保護(Protected)」に名称変更
- [XmlElement(ElementName = "Locked")]
public bool Protected { get; set; }
-
public bool Notify { get; set; }
-
public string SoundFile { get; set; }
/// <summary>
/// 次に表示する未読ツイートのIDを返します。
/// ただし、未読がない場合または UnreadManage が false の場合は -1 を返します
/// </summary>
- [XmlIgnore]
public long NextUnreadId
{
get
/// 次に表示する未読ツイートのインデックス番号を返します。
/// ただし、未読がない場合または UnreadManage が false の場合は -1 を返します
/// </summary>
- [XmlIgnore]
public int NextUnreadIndex
{
get
/// 未読ツイートの件数を返します。
/// ただし、未読がない場合または UnreadManage が false の場合は 0 を返します
/// </summary>
- [XmlIgnore]
public int UnreadCount
{
get
}
}
- [XmlIgnore]
public bool FilterModified { get; set; }
public long[] BackupIds
if (_cfgLocal.ScaleDimension.IsEmpty)
_cfgLocal.ScaleDimension = this.CurrentAutoScaleDimensions;
- List<TabClass> tabs = SettingTabs.Load().Tabs;
- foreach (TabClass tb in tabs)
- {
- try
- {
- tb.FilterModified = false;
- _statuses.Tabs.Add(tb.TabName, tb);
- }
- catch (Exception)
- {
- tb.TabName = _statuses.MakeTabName("MyTab");
- _statuses.Tabs.Add(tb.TabName, tb);
- }
+ var tabsSetting = SettingTabs.Load().Tabs;
+ foreach (var tabSetting in tabsSetting)
+ {
+ var tab = new TabClass(tabSetting.TabName, tabSetting.TabType, tabSetting.ListInfo)
+ {
+ UnreadManage = tabSetting.UnreadManage,
+ Protected = tabSetting.Protected,
+ Notify = tabSetting.Notify,
+ SoundFile = tabSetting.SoundFile,
+ FilterArray = tabSetting.FilterArray,
+ FilterModified = false,
+ User = tabSetting.User,
+ SearchWords = tabSetting.SearchWords,
+ SearchLang = tabSetting.SearchLang,
+ };
+
+ if (this._statuses.ContainsTab(tab.TabName))
+ tab.TabName = this._statuses.MakeTabName("MyTab");
+
+ this._statuses.AddTab(tab);
}
if (_statuses.Tabs.Count == 0)
{
private void SaveConfigsTabs()
{
- SettingTabs tabSetting = new SettingTabs();
- for (int i = 0; i < ListTab.TabPages.Count; i++)
+ var tabsSetting = new SettingTabs();
+
+ var tabs = this.ListTab.TabPages.Cast<TabPage>()
+ .Select(x => this._statuses.Tabs[x.Text])
+ .Concat(new[] { this._statuses.GetTabByType(MyCommon.TabUsageType.Mute) });
+
+ foreach (var tab in tabs)
{
- var tab = _statuses.Tabs[ListTab.TabPages[i].Text];
- if (tab.TabType != MyCommon.TabUsageType.Related && tab.TabType != MyCommon.TabUsageType.SearchResults)
- tabSetting.Tabs.Add(tab);
+ if (tab.TabType == MyCommon.TabUsageType.Related || tab.TabType == MyCommon.TabUsageType.SearchResults)
+ continue;
+
+ var tabSetting = new SettingTabs.SettingTabItem
+ {
+ TabName = tab.TabName,
+ TabType = tab.TabType,
+ UnreadManage = tab.UnreadManage,
+ Protected = tab.Protected,
+ Notify = tab.Notify,
+ SoundFile = tab.SoundFile,
+ FilterArray = tab.FilterArray,
+ User = tab.User,
+ SearchWords = tab.SearchWords,
+ SearchLang = tab.SearchLang,
+ ListInfo = tab.ListInfo,
+ };
+ tabsSetting.Tabs.Add(tabSetting);
}
- tabSetting.Tabs.Add(this._statuses.GetTabByType(MyCommon.TabUsageType.Mute));
- tabSetting.Save();
+
+ tabsSetting.Save();
}
private async void OpenURLFileMenuItem_Click(object sender, EventArgs e)