public void HandleNewColumns(ShowColumnsPayload s) { foreach ( var c in s.Columns.Where(c => c.ContainerType == "StreamView").Distinct(new ColumnConfigurationComparer()). OrderBy(c => c.Position)) { if (c.Mapping.Keys.Contains("Filter")) { var f = c.Mapping["Filter"]; var g = FilterGroups.First(z => z.Uuid == f); if (g != null) { CreateStream(g, c.Title, c.Width); continue; } } var h = FilterGroups.First(z => z.GroupName.ToLower() == c.Title.ToLower()); // fall through to mapping the name of the column to the name on the filter TODO remove later as this is transitionary { CreateStream(h, c.Title, c.Width); } } }
public void LoadStreams() { foreach (var filterGroup in _columnsSettings.Filters) { foreach (var f in filterGroup.Filters.OfType<UpdateTypeFilter>().Select(filter => filter)) // rehydrate the source "update types" for this filtermodel { f.SetMicroblog(_pluginRepository.GetMicroblogByAccount(f.MicroblogName, f.MicroblogAccountName)); // REQUIRE at least type name and namespace var typeParameters = f.UpdateTypeName.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries); if (typeParameters.Length < 2) continue; var typeName = typeParameters[0].Trim(); var namespaceName = typeParameters[1].Trim(); // check for type and namespace against contents of MEF var t = CompositionManager.ResolveType<UpdateType>(typeName, namespaceName, _accounts.GetType(), _applicationSettings.GetType()); if (t == null) continue; if (string.IsNullOrEmpty(f.UpdateTypeParameter)) { var type = Activator.CreateInstance(t) as UpdateType; if (type == null) break; f.SetUpdateType(type); } else { try { var type = Activator.CreateInstance(t, f.UpdateTypeParameter) as UpdateType; if (type == null) break; f.SetUpdateType(type); } catch (Exception ex) { CompositionManager.Get<IExceptionReporter>().ReportHandledException(ex); try { var type = Activator.CreateInstance(t) as UpdateType; if (type == null) break; f.SetUpdateType(type); } catch (Exception ex2) { CompositionManager.Get<IExceptionReporter>().ReportHandledException(ex2); } } } } } var columns = new ShowColumnsPayload(_columnsSettings.Columns.ToList()); EventAggregator.GetEvent<ShowColumns>().Publish(columns); }