public MainWindow() { InitializeComponent(); Closing += (s, e) => ViewModelLocator.Cleanup(); FirebaseC.loadFirebase(); Messenger.Default.Register <string[]>(this, "openInfoDialog", async message => { await this.ShowMessageAsync(message[0], message[1]); }); Messenger.Default.Register <bool>(this, "resizeWindow", message => { if (message) { content.Margin = new Thickness(200, 20, 5, 0); } else { content.Margin = new Thickness(20, 20, 5, 0); } }); Messenger.Default.Register <Object[]>(this, "openWritePlaylistNameDialog", async message => { string result = await this.ShowInputAsync((string)message[0], ""); //Dialog for name if (result == null) { message[0] = "Name is empty. Re-write name"; Messenger.Default.Send(message, "openWritePlaylistNameDialog"); //Reopen Dialog } else { if (result.ToString().Contains("/") || result.ToString() == "" || result.ToString() == null || result.Contains("-")) { message[0] = "Name Contains invalid characters. Re-write name"; Messenger.Default.Send(message, "openWritePlaylistNameDialog"); //Reopen Dialog } else { Object[] msg = new Object[2]; msg[0] = result.ToString(); msg[1] = message[1]; Messenger.Default.Send(msg, "checkIfPlaylistExists"); } } }); }
private async void deleteSongsFromFirebase(PlayList playlist, List <int> songIndexList, List <Song> songs) { bool x = await FirebaseC.deleteSongs(playlist, songIndexList, user); if (x) { //care async foreach (Song s in songs) { selectedPlaylist.songs.Remove(s); } } else { //SEND MAIN //await this.ShowMessageAsync("", "Ethernet connection lost"); } }
public ContentViewModel() { Messenger.Default.Register <ObservableCollection <MediaData> >(this, "fillContentList", message => { isContentPlaylistVisible = false; isContentVisibleUp = false; songsList.Clear(); lblPageContent = "1"; foreach (Song s in message) { songsList.Add(s); } Messenger.Default.Send("", "searchCompleted"); isContentVisible = true; isContentVisibleUp = true; isContextmenuVisible = true; if (isUserLogged) { isAddPlaylistMIVisible = true; } isDeleteSongMIVisible = false; }); SelectionChangedCommand = new RelayCommand <IList>(items => { if (items != null) { selectedItems.Clear(); foreach (Song s in items) { selectedItems.Add(s); } } }); //SHOULD CALL PROGRESS DIALOG Messenger.Default.Register <Object[]>(this, "saveSongsFirebase", async message => { Object[] r = new Object[2]; List <Song> auxL = new List <Song>(); foreach (Song s in selectedItems) { s.numList = null; auxL.Add(s); } List <int> resultList = await FirebaseC.saveSong(auxL, (PlayList)message[0], (User)message[1]); if (resultList.Count != 0) { switch ((int)message[2]) { case 0: //case songs added through context menu r[0] = auxL; r[1] = resultList; Messenger.Default.Send(r, "addSongsToContextPlaylists"); break; case 1: //case songs added through "create new" button //add songs locally and add playlist to context menu //add playlists into contextMenu. Messenger.Default.Send(true, "reloadContextMenu"); break; } } else { string[] ms = new string[2]; ms[1] = "Ethernet connection lost"; Messenger.Default.Send(ms, "openInfoDialog"); } }); Messenger.Default.Register <PlayList>(this, "loadPlaylist", message => { isContextmenuVisible = true; isContentVisibleUp = false; isAddPlaylistMIVisible = false; isDeleteSongMIVisible = true; playlistName = message.namePl; isContentPlaylistVisible = true; List <Song> aux = new List <Song>(); foreach (Song s in message.songs) { Song s2 = new Song(s.fbCont, s.id, s.songName, s.artistName, s.duration, s.uri, s.source); s2.numList = null; aux.Add(s2); } message.songs = aux; songsList.Clear(); foreach (Song s in aux) { songsList.Add(s); } Messenger.Default.Send(true, "hidePlaylists"); }); Messenger.Default.Register <User>(this, "UserLogged", message => { isAddPlaylistMIVisible = true; isUserLogged = true; }); Messenger.Default.Register <int>(this, "removeSongAtIndex", message => { //delete playlist in playlistList Messenger.Default.Send(true, "removePlaylistFromList"); //deletes from local songsList.RemoveAt(message); }); Messenger.Default.Register <Object[]>(this, "insertSongAtIndex", message => { //add to local songsList.Insert((int)message[0], (Song)message[1]); //add whole playlist to firebase Messenger.Default.Send(songsList, "ReAddSongToPlaylist"); }); }
// public SidebarViewModel() { Messenger.Default.Register <PlayList>(this, "loadPlaylist", message => { selectedPlaylist = message; }); Messenger.Default.Register <User>(this, "UserLogged", message => { user = message; //load playlists if (message.playLists != null) { playlistsList.Clear(); foreach (PlayList pl in message.playLists) { playlistsList.Add(pl); } } //changes visibility of elements in sidebar usernameText = message.email; registerVisible = false; loginVisible = false; usernameVisible = true; logoutVisible = true; lblPlaylistsVisible = true; //add playlists into contextMenu. //Messenger.Default.Send(true, "resetContextMenu"); Messenger.Default.Send(playlistsList, "loadPlaylistsContextMenu"); }); Messenger.Default.Register <string>(this, "bindPlaylistToContextMenu", message => { foreach (PlayList pl in playlistsList) { if (pl.namePl == message) { contextPlaylistSelected = pl; Object[] ar = new Object[3]; ar[0] = pl; ar[1] = user; ar[2] = 0; Messenger.Default.Send(ar, "saveSongsFirebase"); } } }); Messenger.Default.Register <Object[]>(this, "addSongsToContextPlaylists", message => { List <Song> songL = (List <Song>)message[0]; List <int> songP = (List <int>)message[1]; if (songL.Count == songP.Count) //weak check, but should work { for (int i = 0; i < songL.Count; i++) { songL[i].numList = null; songL[i].fbCont = songP[i]; //this is the motherf%#@ key for deleting from firebase correctly contextPlaylistSelected.songs.Add(songL[i]); } } }); Messenger.Default.Register <List <Song> >(this, "deleteSongsFromPlaylist", message => { //delete from firebase. SHOULD CALL PROGRESS DIALOG List <int> songIndexList = new List <int>(); foreach (Song s in selectedPlaylist.songs) { if (message.Contains(s)) { songIndexList.Add(s.fbCont); } } deleteSongsFromFirebase(selectedPlaylist, songIndexList, message); }); Messenger.Default.Register <Object[]>(this, "checkIfPlaylistExists", message => { bool same = false; //check if the name already exists in the playlists list foreach (PlayList pl in playlistsList) { if ((string)message[0] == pl.namePl) { same = true; } } if (same) { message[0] = "Name Contains invalid characters. Re-write name"; Messenger.Default.Send(message, "openWritePlaylistNameDialog"); //Reopen Dialog } else { //Create local playlist with songs PlayList pl = new PlayList((string)message[0], (List <Song>)message[1]); playlistsList.Add(pl); Object[] msg = new Object[3]; msg[0] = pl; msg[1] = user; msg[2] = 1; Messenger.Default.Send(msg, "saveSongsFirebase"); } }); Messenger.Default.Register <bool>(this, "reloadContextMenu", message => { //add playlists into contextMenu. Messenger.Default.Send(true, "resetContextMenu"); Messenger.Default.Send(playlistsList, "loadPlaylistsContextMenu"); }); Messenger.Default.Register <bool>(this, "removePlaylistFromList", async message => { //deletes whole playlist in firebase bool result = await FirebaseC.deletePlaylist(selectedPlaylist, user); if (result) { selectedPlaylist.songs.Clear(); } else { String[] x = new String[2]; x[0] = "Error. Could not change playlist songs order."; x[1] = "Check your connection and try again."; Messenger.Default.Send(x, "openInfoDialog"); Messenger.Default.Send(false, "loadingContent"); } }); Messenger.Default.Register <ObservableCollection <Song> >(this, "ReAddSongToPlaylist", async message => { foreach (Song s in message) { selectedPlaylist.songs.Add(s); } bool result = await FirebaseC.createPlaylist(message, selectedPlaylist.namePl, user); if (!result) { String[] x = new String[2]; x[0] = "Error. Could not change playlist songs order."; x[1] = "Check your connection and try again."; Messenger.Default.Send(x, "openInfoDialog"); } Messenger.Default.Send(false, "loadingContent"); }); }