123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- using System;
- using System.Globalization;
- using System.Linq;
-
- using UnityEditor;
- using UnityEditor.IMGUI.Controls;
-
- using Codice.LogWrapper;
-
- namespace Unity.PlasticSCM.Editor.UI.Tree
- {
- internal static class TreeHeaderSettings
- {
- internal static void Load(
- MultiColumnHeaderState headerState,
- string treeSettingsName,
- int defaultSortColumnIdx,
- bool defaultSortedAscending = true)
- {
- int[] visibleColumns;
- float[] columnWidths;
-
- GetColumnsSettings(treeSettingsName, headerState.columns.Length,
- out visibleColumns, out columnWidths);
-
- if (visibleColumns.Length > 0)
- headerState.visibleColumns = visibleColumns;
-
- if (headerState.columns.Length == columnWidths.Length)
- TreeHeaderColumns.SetWidths(headerState.columns, columnWidths);
-
- if (defaultSortColumnIdx == UnityConstants.UNSORT_COLUMN_ID)
- return;
-
- var sortColumnIdx = EditorPrefs.GetInt(
- GetSettingKey(treeSettingsName, SORT_COLUMN_INDEX_KEY),
- defaultSortColumnIdx);
-
- if (sortColumnIdx < 0 || sortColumnIdx >= headerState.columns.Length)
- sortColumnIdx = defaultSortColumnIdx;
-
- var sortColumnAscending = EditorPrefs.GetBool(
- GetSettingKey(treeSettingsName, SORT_ASCENDING_KEY),
- defaultSortedAscending);
-
- headerState.sortedColumnIndex = sortColumnIdx;
- headerState.columns[sortColumnIdx].sortedAscending = sortColumnAscending;
- }
-
- internal static void Save(
- MultiColumnHeaderState headerState,
- string treeSettingsName)
- {
- int[] visibleColumns = headerState.visibleColumns;
- float[] columnWidths = TreeHeaderColumns.GetWidths(headerState.columns);
-
- EditorPrefs.SetString(
- GetSettingKey(treeSettingsName, VISIBLE_COLUMNS_KEY),
- string.Join(",", visibleColumns.Select(idx => idx.ToString()).ToArray()));
-
- EditorPrefs.SetString(
- GetSettingKey(treeSettingsName, COLUMNS_WIDTHS_KEY),
- string.Join(",", columnWidths
- .Select(w => w.ToString(CultureInfo.InvariantCulture))
- .ToArray()));
-
- int sortColumnIdx = headerState.sortedColumnIndex;
-
- if (sortColumnIdx == UnityConstants.UNSORT_COLUMN_ID)
- return;
-
- bool sortColumnAscending = headerState.
- columns[headerState.sortedColumnIndex].sortedAscending;
-
- EditorPrefs.SetInt(
- GetSettingKey(treeSettingsName, SORT_COLUMN_INDEX_KEY),
- sortColumnIdx);
- EditorPrefs.SetBool(
- GetSettingKey(treeSettingsName, SORT_ASCENDING_KEY),
- sortColumnAscending);
- }
-
- internal static void Clear(string treeSettingsName)
- {
- EditorPrefs.DeleteKey(
- GetSettingKey(treeSettingsName, VISIBLE_COLUMNS_KEY));
- EditorPrefs.DeleteKey(
- GetSettingKey(treeSettingsName, COLUMNS_WIDTHS_KEY));
- EditorPrefs.DeleteKey(
- GetSettingKey(treeSettingsName, SORT_COLUMN_INDEX_KEY));
- EditorPrefs.DeleteKey(
- GetSettingKey(treeSettingsName, SORT_ASCENDING_KEY));
- }
-
- static void GetColumnsSettings(string treeSettingsName,
- int headerColumnsLenght,
- out int[] visibleColumns,
- out float[] columnWidths)
- {
- try
- {
- visibleColumns = EditorPrefs.GetString(
- GetSettingKey(treeSettingsName, VISIBLE_COLUMNS_KEY), string.Empty)
- .Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
- .Select(idx => int.Parse(idx))
- .Where(idx => idx >= 0 && idx < headerColumnsLenght)
- .ToArray();
-
- columnWidths = EditorPrefs.GetString(
- GetSettingKey(treeSettingsName, COLUMNS_WIDTHS_KEY), string.Empty)
- .Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
- .Select(w => float.Parse(w, CultureInfo.InvariantCulture))
- .ToArray();
- }
- catch (Exception ex)
- {
- mLog.ErrorFormat("Unable to read TreeHeaderSettings: {0}",
- ex.Message);
- mLog.DebugFormat("Stack tracke:{0}{1}",
- Environment.NewLine, ex.StackTrace);
-
- visibleColumns = new int[0];
- columnWidths = new float[0];
- }
- }
-
- static string GetSettingKey(string treeSettingsName, string key)
- {
- return string.Format(treeSettingsName, PlayerSettings.productGUID, key);
- }
-
- static string VISIBLE_COLUMNS_KEY = "VisibleColumns";
- static string COLUMNS_WIDTHS_KEY = "ColumnWidths";
- static string SORT_COLUMN_INDEX_KEY = "SortColumnIdx";
- static string SORT_ASCENDING_KEY = "SortAscending";
-
- static readonly ILog mLog = LogManager.GetLogger("TreeHeaderSettings");
- }
- }
|