public StreamConfigurationViewModel(
            IApplicationSettingsProvider applicationSettingsProvider,
            IGlobalExcludeSettings globalExcludeSettings,
            IAccountSettingsProvider accountSettingsProvider,
            IColumnsSettingsProvider columnsSettingsProvider,
            IContactService contactService)
        {
            _applicationSettingsProvider = applicationSettingsProvider;
            _accountSettingsProvider = accountSettingsProvider;
            _globalExcludeSettings = globalExcludeSettings;
            _columnsSettingsProvider = columnsSettingsProvider;
            _contactService = contactService;
            _scriptLibrary = CompositionManager.Get<IScriptingLibrarian>();

            ShowConfiguration = false;

            Filters = new StreamModel {Direction = ListSortDirection.Descending};
            FilterBefore = DateTime.Now.Subtract(new TimeSpan(365, 0, 0, 0, 0));

            ScriptFilters = _scriptLibrary.ScriptFilters;

            EditCommand = new DelegateCommand(SetEdit);
            CancelCommand = new DelegateCommand(CancelChanges);
            SaveCommand = new DelegateCommand(SaveChanges);
        }
        public AppViewModel(IPluginRepository pluginRepository,
                            IAccountSettingsProvider accounts,
                            IApplicationSettingsProvider applicationSettings,
                            IColumnsSettingsProvider columnsSettings,
                            Func<IPluginLoader> createPluginLoader,
                            Func<ResourcesViewModel> createResourceViewModel)
        {
            _pluginRepository = pluginRepository;
            _accounts = accounts;
            _applicationSettings = applicationSettings;
            _columnsSettings = columnsSettings;

            _loader = createPluginLoader();

            Model = CompositionManager.Get<IMainViewModel>();

            Resources = createResourceViewModel();

            if (Model == null) return;
            Model.FilterGroups = new ObservableCollection<StreamModel>(_columnsSettings.Filters);

            if (Model.FilterGroups.Count != 0) return;
            var f = StreamModel.CreateDefault();
            Model.FilterGroups.Add(f);
        }
 public XmlSettingsProvider()
 {
     _appSettings = CompositionManager.Get<IApplicationSettingsProvider>();
     _accountSettings = CompositionManager.Get<IAccountSettingsProvider>();
     _columnsSettings = CompositionManager.Get<IColumnsSettingsProvider>();
     _pluginSettings = CompositionManager.Get<IPluginSettingsProvider>();
 }
        public MainViewModel(
            IPluginRepository pluginRepository,
            IAccountSettingsProvider accountSettings,
            IColumnsSettingsProvider columnsSettings,
            IApplicationSettingsProvider applicationSettingsProvider,
            Func<StreamViewModel> createStreamViewModel,
            Func<SearchViewModel> createSearchViewModel,
            SetupViewModel setupViewModel)
        {
            _pluginRepository = pluginRepository;
            _accountSettings = accountSettings;
            _columnsSettings = columnsSettings;
            _createStreamViewModel = createStreamViewModel;
            _createSearchViewModel = createSearchViewModel;
            _setupViewModel = setupViewModel;
            _applicationSettingsProvider = applicationSettingsProvider;

            EventAggregator.GetEvent<ShowLink>().Subscribe(HandleShowLink);
            EventAggregator.GetEvent<ShowProfile>().Subscribe(HandleShowProfile);
            EventAggregator.GetEvent<ShowConversation>().Subscribe(HandleShowConversation);
            EventAggregator.GetEvent<ShowSearch>().Subscribe(CreateNewSearch);
            EventAggregator.GetEvent<ShowContainer>().Subscribe(HandleShowContainer);
            EventAggregator.GetEvent<MicroblogAdded>().Subscribe(HandleNewMicroblog);
            EventAggregator.GetEvent<ShowColumns>().Subscribe(HandleNewColumns);

            ContactService = CompositionManager.Get<IContactService>();
            StatusManager = CompositionManager.Get<IStatusUpdateService>();

            SelectedMicroblogs = new ThreadSafeObservableCollection<IMicroblog>();

            CurrentSearches = new ObservableCollection<ISearchViewModel>();
            StreamContainers = new ObservableCollection<IContainerViewModel>();
            FilterGroups = new ObservableCollection<StreamModel>();

            HiddenPanels = new ObservableCollection<UIElement>();

            IsSearchVisible = false;
        }
        public MainWindow(AppViewModel viewModel,
                          IPluginRepository pluginRepository,
                          IAccountSettingsProvider accountSettingsProvider,
                          IColumnsSettingsProvider columnsSettingsProvider,
                          IApplicationSettingsProvider applicationSettingsProvider,
                          IEventAggregator eventAggregator)
        {
            InitializeComponent();

            _pluginRepository = pluginRepository;
            _accountSettings = accountSettingsProvider;
            _columnsSettings = columnsSettingsProvider;
            _applicationSettingsProvider = applicationSettingsProvider;
            _eventAggregator = eventAggregator;

            var mainViewModel = viewModel.Model;
            var resourceViewModel = viewModel.Resources;

            txtUpdate.SetHeight((Double) FindResource("DefaultCompositionBoxHeight"));
            var c = (CompositionTextBox) txtUpdate.FindName("txtUpdateBox");
            if (c != null)
                c.IsInlineReply = false;

            Model = mainViewModel;
            ResourcesViewModel = resourceViewModel;
            mainViewModel.View = this;

            DataContext = mainViewModel;

            GlobalWindows.MainWindow = this;

            try
            {
                if (TaskbarManager.IsPlatformSupported)
                    TaskbarManager = TaskbarManager.Instance;
            }
            catch (Exception ex)
            {
                CompositionManager.Get<IExceptionReporter>().ReportHandledException(ex);
            }


            if (resourceViewModel.Views == null) return;

            //Import the XAML
            foreach (var r in resourceViewModel.Views)
            {
                Resources.MergedDictionaries.Add(r);
            }

            var ibShowSetup = new InputBinding(ShowSetup, new KeyGesture(Key.S, ModifierKeys.Control));
            var ibShowScriptingConsole = new InputBinding(ShowScriptConsoleCommand,
                                                          new KeyGesture(Key.S, ModifierKeys.Alt));
            InputBindings.Add(ibShowSetup);
            InputBindings.Add(ibShowScriptingConsole);

            var cbShowSetup = new CommandBinding(ShowSetup);
            cbShowSetup.Executed += CbShowSetupExecuted;
            CommandBindings.Add(cbShowSetup);

            var scriptConsole = new CommandBinding(ShowScriptConsoleCommand);
            scriptConsole.Executed += ScriptConsoleVisible;
            CommandBindings.Add(scriptConsole);

            if (!DesignerProperties.GetIsInDesignMode(this))
            {
                MahTweets.Configuration.WindowSettings.SetSave(this, true);
            }
        }