using Server_Dashboard.Views.DashboardPages.ModuleCRUD; using System.Collections.ObjectModel; using System.Diagnostics; using System.Windows; using System.Windows.Input; using Server_Dashboard_Socket; using System; using System.Data; namespace Server_Dashboard { /// /// View Model for the Dashboard /// internal class DashboardViewModel : BaseViewModel { #region Private Values private readonly DashboardModuleViewModel dmvm; #endregion Private Values #region Properties //The Username displayed defaults to Username private string userName; public string UserName { get { return userName; } set { if (userName != value) userName = value; OnPropertyChanged(nameof(userName)); } } //List that contains every Module private ObservableCollection modules; public ObservableCollection Modules { get { return modules; } set { if (value != modules) modules = value; OnPropertyChanged(nameof(modules)); } } #endregion Properties #region Constructor public DashboardViewModel(string username) { UserName = username; //Command inits OpenLinkCommand = new RelayCommand(OpenLink); OpenNewModuleWindowCommand = new RelayCommand(OpenNewModuleWindow); DataTable Userdata = DatabaseHandler.GetUserData(username); dmvm = new DashboardModuleViewModel(Userdata); //Sets the local module to the dashboardviewmodule modules Modules = dmvm.Modules; } #endregion Constructor #region ICommands public ICommand OpenLinkCommand { get; set; } public ICommand OpenNewModuleWindowCommand { get; set; } #endregion ICommands #region Commands /// /// Opens a given link in the default browser /// /// The Link to be opened e.g. https://github.com/Crylia/Server-Dashboard private void OpenLink(object param) { Process.Start(new ProcessStartInfo((string)param) { UseShellExecute = true }); } /// /// Creates a new window to create a new Module /// /// Nothing private void OpenNewModuleWindow(object param) { //Creates a new CreateModulePopup and sets this view model as datacontext CreateModulePopup cmp = new CreateModulePopup { DataContext = new CreateModuleViewModel(UserName) }; //Opens it in the middle of the screen, setting the parent window as owner causes the //application to crash when NOT in debug mode(???) cmp.WindowStartupLocation = WindowStartupLocation.CenterScreen; cmp.ShowDialog(); } #endregion Commands } }