예제 #1
0
        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");
                    }
                }
            });
        }
예제 #2
0
        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");
            }
        }
예제 #3
0
        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");
            });
        }
예제 #4
0
        //
        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");
            });
        }