예제 #1
0
        private bool TryDeserializeInternal(IDeserializerContext context, ICompositeStorage storage)
        {
            string typeName = storage.Get <string>(Name.TypeName);

            if (!typeNameMapper.TryGet(typeName, out Type outputType))
            {
                return(false);
            }

            if (!storage.TryGet(Name.Payload, out ICompositeStorage childStorage))
            {
                return(false);
            }

            ICompositeModel model = modelFactory.Create(outputType) as ICompositeModel;

            if (model == null)
            {
                return(false);
            }

            model.Load(childStorage);
            context.Output = model;
            return(true);
        }
예제 #2
0
        private List <AdditionalApplicationModel> LoadCollection(ICompositeStorage storage)
        {
            List <AdditionalApplicationModel> result = new List <AdditionalApplicationModel>();

            int count = storage.Get("Count", 0);

            for (int i = 0; i < count; i++)
            {
                if (storage.TryGet(i.ToString(), out ICompositeStorage itemStorage))
                {
                    AdditionalApplicationModel model = LoadItem(itemStorage);
                    if (model != null)
                    {
                        result.Add(model);
                    }
                }
            }

            if (result.Count == 0)
            {
                return(null);
            }

            return(result);
        }
예제 #3
0
        private AdditionalApplicationModel LoadItem(ICompositeStorage storage)
        {
            string name      = storage.Get <string>("Name");
            string path      = storage.Get <string>("Path");
            string arguments = storage.Get <string>("Arguments", null);
            Key    hotKey    = storage.Get("HotKey", Key.None);

            IReadOnlyList <AdditionalApplicationModel> commands = LoadCollection(storage);

            if (commands == null)
            {
                return(new AdditionalApplicationModel(name, path, arguments, hotKey));
            }
            else
            {
                return(new AdditionalApplicationModel(name, path, arguments, hotKey, commands));
            }
        }
예제 #4
0
        public void Load(ICompositeStorage storage)
        {
            int configurationVersion = storage.Get("ConfigurationVersion", 1);

            FileSearchPattern = storage.Get <string>("FileSearchPattern");
            IsAutoSelectApplicationVersion         = storage.Get <bool>("IsAutoSelectApplicationVersion");
            IsDismissedWhenLostFocus               = storage.Get <bool>("IsDismissedWhenLostFocus");
            IsDisplayedPathTrimmedToLastFolderName = storage.Get <bool>("IsDisplayedPathTrimmedToLastFolderName");
            IsFileNameRemovedFromDisplayedPath     = storage.Get <bool>("IsFileNameRemovedFromDisplayedPath");
            IsFileSearchPatternSaved               = storage.Get <bool>("IsFileSearchPatternSaved");
            IsHiddentOnStartup = storage.Get <bool>("IsHiddentOnStartup");
            IsLastUsedApplicationSavedAsPrefered = storage.Get <bool>("IsLastUsedApplicationSavedAsPrefered");
            IsProjectCountEnabled   = storage.Get <bool>("IsProjectCountEnabled");
            IsStatisticsCounted     = storage.Get <bool>("IsStatisticsCounted");
            IsTrayIcon              = storage.Get <bool>("IsTrayIcon");
            PinnedFiles             = storage.Get <IReadOnlyList <string> >("PinnedFiles");
            PositionTop             = storage.Get <int>("PositionTop");
            PositionLeft            = storage.Get <int>("PositionLeft");
            PositionMode            = storage.Get <PositionMode>("PositionMode");
            PreferedApplicationPath = storage.Get <string>("PreferedApplicationPath");
            RunKey = storage.Get <string>("RunKey");
            SourceDirectoryPath = storage.Get <string>("SourceDirectoryPath");
            ThemeMode           = storage.Get <ThemeMode>("ThemeMode");

            AdditionalApplications = new AdditionalApplicationCollection();
            if (storage.TryGet("AdditionalApplications", out var additionalApplications))
            {
                AdditionalApplications.Load(additionalApplications);
            }

            HiddenMainApplications = storage.Get <IReadOnlyList <string> >("HiddenMainApplications");
            FileSearchCount        = storage.Get <int>("FileSearchCount");
            FileSearchMode         = storage.Get <FileSearchMode>("FileSearchMode");
            AutoSelectApplicationMinimalVersion = storage.Get <Version>("AutoSelectApplicationMinimalVersion");
            LogLevel = storage.Get("LogLevel", LogLevel.Error);
        }