示例#1
0
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            if (String.IsNullOrWhiteSpace(SearchTextBox.Text) || !SettingsManager.IsLoggedIn)
            {
                return;
            }
            mainProgressRing.isActive = true;
            Search searchRequest = new Search()
            {
                SearchBy = ((SearchType)(searchTypeListBox.SelectedIndex))
            };

            searchRequest.SearchText = SearchTextBox.Text.Trim();
            Object response = await ConnectionManager.SendRequestAsync(searchRequest, RequestType.Search, ResponseType.Search);

            if (response != null)
            {
                HomePage home = new HomePage(response, ResponseType.Search, "Search Results : " + SearchTextBox.Text)
                {
                    Parent = mainFrame
                };
                mainFrame.Navigate(home);
            }
            else
            {
                AppNotificationManager.PushMessage(new AppNotification()
                {
                    Message = "Failed to perform search."
                });
            }
            mainProgressRing.isActive = false;
        }
        private async void deleteVideoButton_Click(object sender, RoutedEventArgs e)
        {
            DeleteCourseRequest request = new DeleteCourseRequest()
            {
                CourseID = ((CourseDetails)Tag).CourseID
            };
            Object resp = await ConnectionManager.SendRequestAsync(request, RequestType.DeleteCourse, ResponseType.Acknowledge);

            if (resp != null)
            {
                Acknowledge result = ((JObject)resp).ToObject <Acknowledge>();
                if (result.Status == "OK")
                {
                    ((WrapPanel)Parent).Children.Remove(this);
                }
                AppNotificationManager.PushMessage(new AppNotification()
                {
                    Message = result.Reason
                });
            }
            else
            {
                AppNotificationManager.PushMessage(new AppNotification()
                {
                    Message = "Failed to delete course."
                });
            }
        }
示例#3
0
        private async void sendSigninRequestAsync()
        {
            errorTextBlock.Text = "";
            string username = usernametextBlock.Text.Trim();
            string password = passwordTextBlock.Password.Trim();

            if (String.IsNullOrWhiteSpace(username) || String.IsNullOrEmpty(password))
            {
                errorTextBlock.Text = "Fill all fields.";
                return;
            }

            progressRing.isActive = true;

            Object resp = new JObject();

            resp = await ConnectionManager.SendRequestAsync(new Model.Data.SignIn()
            {
                Username = username, Password = Security.MD5Hash(password), Challenge = DateTime.Now.Ticks.ToString()
            }, RequestType.SignIn, ResponseType.SignIn);

            progressRing.isActive = false;
            if (resp == null)
            {
                errorTextBlock.Text = "Connection Error. Retry";
            }
            else
            {
                SignInResponse Response = ((JObject)resp).ToObject <SignInResponse>();
                if (Response.IsAccepted)
                {
                    progressRing.isActive = true;
                    await fetchAccountInfo(username, Response.SessionID);

                    AppNotificationManager.PushMessage(new AppNotification()
                    {
                        Message = SettingsManager.FullName + " signed in successfully."
                    });

                    progressRing.isActive        = false;
                    SettingsManager.AuthKey      = Response.SessionID;
                    SettingsManager.IsLoggedIn   = true;
                    SettingsManager.KeepLoggedIn = false;

                    if (loggedmeinCheckBox.IsChecked != null && loggedmeinCheckBox.IsChecked == true)
                    {
                        SettingsManager.KeepLoggedIn = true;
                        SettingsManager.SaveSettings();
                    }
                    Close();
                }
                else
                {
                    errorTextBlock.Text = Response.Reason;
                }
            }
            //AppNotificationManager.PushMessage(new AppNotification() { Message = Response.SessionID });
        }
示例#4
0
        private async void createCourseButton_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrWhiteSpace(courseNameTextBlock.Text))
            {
                return;
            }
            progressRing.isActive = true;
            CreateCourseRequest request = new CreateCourseRequest()
            {
                CourseName = courseNameTextBlock.Text,
                UserId     = SettingsManager.Username,
                Username   = SettingsManager.FullName
            };

            if (IsModifyCourseType)
            {
                request.UserId = CourseID;
            }
            Object resp = await ConnectionManager.SendRequestAsync(request, IsModifyCourseType?RequestType.ModifyCourse : RequestType.CreateCourse, ResponseType.Acknowledge);

            if (resp != null)
            {
                errorTextBlock.Text = ((JObject)resp).ToObject <Acknowledge>().Reason;
                if (IsModifyCourseType)
                {
                    AppNotificationManager.PushMessage(new AppNotification()
                    {
                        Message = "Course changed successfully."
                    });
                }
                else
                {
                    AppNotificationManager.PushMessage(new AppNotification()
                    {
                        Message = "Course created successfully."
                    });
                }
                Close();
            }
            else
            {
                errorTextBlock.Text = "Connection Error";
            }
            progressRing.isActive = false;
        }
示例#5
0
 private void NotificationRunner()
 {
     while (true)
     {
         if (AppNotificationManager.Count > 0)
         {
             AppNotification notification = AppNotificationManager.PullMessage();
             Dispatcher.Invoke
                 (() =>
             {
                 ShowNotification(notification.Message);
             });
             Thread.Sleep(5000);
             Dispatcher.Invoke(() => { notificationPanel.Visibility = Visibility.Collapsed; });
         }
         else
         {
             Thread.Sleep(200);
         }
     }
 }
示例#6
0
        private async void createAccountButton_Click(object sender, RoutedEventArgs e)
        {
            if (!IsValid())
            {
                return;
            }
            progressRing.isActive = true;
            Model.Data.CreateAccount accountRequest = new Model.Data.CreateAccount()
            {
                FullName = fullNameTextBlock.Text.Trim(),
                Username = usernameTextBlock.Text.Trim(),
                Password = Security.MD5Hash(passwordTextBlock.Password.Trim()),
                Type     = accounttextBlock.SelectedIndex == 0 ? UserType.Student : UserType.Professional
            };
            Object result = new JObject();

            result = await ConnectionManager.SendRequestAsync(accountRequest, RequestType.SignUp, ResponseType.Acknowledge);

            if (result != null)
            {
                Acknowledge ack = ((JObject)result).ToObject <Acknowledge>();
                if (ack.Status == "OK")
                {
                    AppNotificationManager.PushMessage(new AppNotification()
                    {
                        Message = "Account created Successfully"
                    });
                    Close();
                }
                else
                {
                    errorTextBlock.Text = ack.Reason;
                }
            }
            else
            {
                errorTextBlock.Text = "Connection Error";
            }
            progressRing.isActive = false;
        }
示例#7
0
        private async void mainListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (mainListView.SelectedIndex == -1)
            {
                return;
            }
            if (SettingsManager.IsLoggedIn == false &&
                ((ListViewItem)mainListView.SelectedItem).Tag.ToString() != "settings" &&
                ((ListViewItem)mainListView.SelectedItem).Tag.ToString() != "reconnect")
            {
                RequestLogin();
                mainListView.SelectedIndex = -1;
                return;
            }
            switch (((ListViewItem)mainListView.SelectedItem).Tag)
            {
            case "home":
                mainProgressRing.isActive = true;
                Object resp = new JObject();
                resp = await ConnectionManager.SendRequestAsync(new HomeRequest()
                {
                    Latest = ""
                }, RequestType.Home, ResponseType.Home);

                if (resp != null)
                {
                    HomePage page1 = new HomePage((JObject)resp, ResponseType.Home);
                    mainFrame.Navigate(page1);
                }
                else
                {
                    AppNotificationManager.PushMessage(new AppNotification()
                    {
                        Message = "Unable to load Home."
                    });
                }
                mainProgressRing.isActive = false;
                break;

            case "myvideos":
                mainProgressRing.isActive = true;
                Object response = new JObject();
                resp = await ConnectionManager.SendRequestAsync(new CourseListRequest()
                {
                    AuthorID = SettingsManager.Username
                }, RequestType.CourseList, ResponseType.CourseList);

                if (resp != null)
                {
                    HomePage page = new HomePage((JObject)resp, ResponseType.CourseList, "Courses")
                    {
                        Parent = mainFrame
                    };
                    mainFrame.Navigate(page);
                }
                else
                {
                    AppNotificationManager.PushMessage(new AppNotification()
                    {
                        Message = "Unable to load Courses."
                    });
                }

                mainProgressRing.isActive = false;
                break;

            case "favorites":
                mainProgressRing.isActive = true;
                Object response2 = new JObject();
                response2 = await ConnectionManager.SendRequestAsync(new FavoritesRequest()
                {
                    Userid = SettingsManager.Username
                }, RequestType.Favorites, ResponseType.Favorites);

                if (response2 != null)
                {
                    HomePage page1 = new HomePage((JObject)response2, ResponseType.Favorites, "Favorites");
                    mainFrame.Navigate(page1);
                }
                else
                {
                    AppNotificationManager.PushMessage(new AppNotification()
                    {
                        Message = "Unable to load Favorites."
                    });
                }

                mainProgressRing.isActive = false;
                break;

            case "create":
                CreateCourse course = new CreateCourse();
                course.ShowDialog();
                break;

            case "logout":
                SettingsManager.LogoutUpdate();
                SettingsManager.SaveSettings();
                while (mainFrame.CanGoBack)
                {
                    mainFrame.RemoveBackEntry();
                }
                mainFrame.Navigate(new DefaultPage());
                RequestLogin();
                break;

            case "reconnect":
                mainProgressRing.isActive = true;
                await ConnectionManager.Connect();

                mainProgressRing.isActive   = false;
                SettingsManager.ProfilePath = SettingsManager.ProfilePath;
                break;

            case "settings":
                Settings set = new Settings();
                set.Show();
                break;

            case "about":
                new About().ShowDialog();
                break;

            default:
                break;
            }
            mainListView.SelectedIndex = -1;
        }
        private async void deleteVideoButton_Click(object sender, RoutedEventArgs e)
        {
            //enclose inside success.
            ConfirmWindow confirm = new ConfirmWindow(VideoTitle);

            confirm.ShowDialog();
            if (confirm.Result && !IsFavoritesType)
            {
                DeleteVideoRequest request = new DeleteVideoRequest()
                {
                    VideoID = VideoID, CourseID = CourseID
                };
                Object result = await ConnectionManager.SendRequestAsync(request, RequestType.DeleteVideo, ResponseType.Acknowledge);

                if (result != null)
                {
                    if (((JObject)result).ToObject <Acknowledge>().Status == "OK")
                    {
                        ((WrapPanel)Parent).Children.Remove(this);
                        AppNotificationManager.PushMessage(new AppNotification()
                        {
                            Message = "Video Deleted Successfully."
                        });
                    }
                }
                else
                {
                    AppNotificationManager.PushMessage(new AppNotification()
                    {
                        Message = "Unable to delete video."
                    });
                }
            }
            else if (confirm.Result && IsFavoritesType)
            {
                DeleteFavorite request = new DeleteFavorite()
                {
                    UserID = SettingsManager.Username, VideoID = VideoID
                };
                Object result = await ConnectionManager.SendRequestAsync(request, RequestType.DeleteFavorite, ResponseType.Acknowledge);

                if (result != null)
                {
                    if (((JObject)result).ToObject <Acknowledge>().Status == "OK")
                    {
                        ((WrapPanel)Parent).Children.Remove(this);
                        AppNotificationManager.PushMessage(new AppNotification()
                        {
                            Message = "Favorite Deleted Successfully."
                        });
                    }
                }
                else
                {
                    AppNotificationManager.PushMessage(new AppNotification()
                    {
                        Message = "Unable to delete favorite."
                    });
                }
            }
        }
示例#9
0
        private async void uploadVideoButton_Click(object sender, RoutedEventArgs e)
        {
            if (IsValid() && !IsEditVideoType)
            {
                progressRing.isActive = true;
                CreateVideoRequest request = new CreateVideoRequest()
                {
                    AuthorId   = SettingsManager.Username,
                    AuthorName = SettingsManager.FullName,
                    CourseId   = CourseID.CourseID,
                    CourseName = CourseID.CourseName,
                    Decription = descriptionTextBlock.Text,
                    Duration   = duration,
                    Height     = videoHeight,
                    Width      = videoWidth,
                    Title      = titleTextBlock.Text,
                    Tags       = new List <string>()
                };

                foreach (Tags tag in tagsContainer.Children)
                {
                    request.Tags.Add(tag.TagName);
                }
                Object resp = await ConnectionManager.SendRequestAsync(request, RequestType.CreateVideo, ResponseType.CreateVideo);

                if (resp != null)
                {
                    CreateVideoResponse response = ((JObject)resp).ToObject <CreateVideoResponse>();
                    string path = Guid.NewGuid().ToString() + ".jpg";
                    File.Copy(thumbnailPath, path);

                    Object response2 = await ConnectionManager.SendVideoFileAsync(chosenVideoPathTextBlock.Text, path, response.Port);

                    if (File.Exists(path))
                    {
                        File.Delete(path);
                    }
                    if (response2 != null)
                    {
                        AppNotificationManager.PushMessage(new AppNotification()
                        {
                            Message = ((JObject)response2).ToObject <Acknowledge>().Reason
                        });
                    }
                    else
                    {
                        AppNotificationManager.PushMessage(new AppNotification()
                        {
                            Message = "Video Upload Failed Failed."
                        });
                    }
                    Close();
                }
                else
                {
                    errorTextBlock.Text = "Connection Error";
                }
                progressRing.isActive = false;
            }
            else if (IsValid() && IsEditVideoType)
            {
                progressRing.isActive = true;
                VideoUpdateRequest request = new VideoUpdateRequest()
                {
                    Title       = titleTextBlock.Text,
                    Description = descriptionTextBlock.Text,
                    IsThumbnailUpdateRequired = thumbnailChosen,
                    Tags = new List <string>()
                };
                foreach (Tags tags in ((WrapPanel)tagsContainer).Children)
                {
                    request.Tags.Add(tags.TagName);
                }
                Object resp = await ConnectionManager.SendRequestAsync(request, RequestType.VideoUpdate, ResponseType.Acknowledge);

                if (resp != null)
                {
                    VideoUpdateResponse ack = ((JObject)resp).ToObject <VideoUpdateResponse>();
                    if (ack.Status == "OK")
                    {
                        try
                        {
                            if (thumbnailChosen)
                            {
                                await ConnectionManager.SendFileAsync(thumbnailPath, null);
                            }
                        }catch (Exception ex)
                        {
                            AppNotificationManager.PushMessage(new AppNotification()
                            {
                                Message = ex.Message
                            });
                            Close();
                        }
                    }
                    errorTextBlock.Text = ack.Reason;
                }
                else
                {
                    errorTextBlock.Text = "Connection Error.";
                }
            }
        }
示例#10
0
        private async void modifyVideoButton_Click(object sender, RoutedEventArgs e)
        {
            progressRing.isActive = true;
            VideoUpdateRequest request = new VideoUpdateRequest()
            {
                VideoID     = VideoID,
                Title       = titleTextBlock.Text,
                Description = descriptionTextBlock.Text,
                IsThumbnailUpdateRequired = thumbnailChosen,
                Tags = new List <string>()
            };

            foreach (Tags tags in ((WrapPanel)tagsContainer).Children)
            {
                request.Tags.Add(tags.TagName);
            }
            Object resp = await ConnectionManager.SendRequestAsync(request, RequestType.VideoUpdate, ResponseType.VideoUpdate);

            if (resp != null)
            {
                VideoUpdateResponse ack = ((JObject)resp).ToObject <VideoUpdateResponse>();
                if (ack.Status == "OK")
                {
                    if (thumbnailChosen)
                    {
                        string tempPath = "Temporary/" + Guid.NewGuid() + ".jpg";
                        if (Directory.Exists("Temporary/"))
                        {
                            Directory.CreateDirectory("Temporary/");
                        }
                        File.Copy(thumbnailPath, tempPath);
                        var result = await ConnectionManager.SendFileAsync(tempPath, null);

                        if (result != null)
                        {
                            var response = ((JObject)result).ToObject <Acknowledge>();
                            errorTextBlock.Text = response.Reason;
                            if (response.Status == "OK")
                            {
                                AppNotificationManager.PushMessage(new AppNotification()
                                {
                                    Message = response.Reason
                                });
                                Close();
                            }
                        }
                        if (File.Exists(tempPath))
                        {
                            File.Delete(tempPath);
                        }
                    }
                    AppNotificationManager.PushMessage(new AppNotification()
                    {
                        Message = ack.Reason
                    });
                    Close();
                }
                errorTextBlock.Text = ack.Reason;
            }
            else
            {
                errorTextBlock.Text = "Connection Error.";
            }
        }
示例#11
0
        private async void saveProfileButton_Click(object sender, RoutedEventArgs e)
        {
            progressRing.isActive = true;
            if (isPhotoPicked)
            {
                JpegBitmapEncoder encoder = new JpegBitmapEncoder()
                {
                    QualityLevel = 50
                };
                CroppedBitmap bm = new CroppedBitmap(imagePicked, new Int32Rect(OriginX, OriginY, Minimum, Minimum));
                if (!Directory.Exists("Temporary"))
                {
                    Directory.CreateDirectory("Temporary");
                }
                encoder.Frames.Add(BitmapFrame.Create(bm));
                using (FileStream fs = new FileStream("Temporary/" + SettingsManager.Username + ".jpg", FileMode.OpenOrCreate))
                    encoder.Save(fs);
            }

            ProfileUpdateRequest request = new ProfileUpdateRequest()
            {
                FullName               = fullNameTextBlock.Text,
                Username               = SettingsManager.Username,
                RequiresImageUpdate    = isPhotoPicked,
                RequiresPasswordUpdate = !String.IsNullOrWhiteSpace(passwordTextBlock.Password),
                OldPassword            = Security.MD5Hash(passwordTextBlock.Password),
                Password               = Security.MD5Hash(newPasswordTextBlock.Password)
            };
            Object resp = await ConnectionManager.SendRequestAsync(request, RequestType.UpdateProfile, ResponseType.UpdateProfile);

            if (resp != null)
            {
                ProfileUpdateResponse response = ((JObject)resp).ToObject <ProfileUpdateResponse>();
                if (response.Status == "OK")
                {
                    if (isPhotoPicked)
                    {
                        resp = await ConnectionManager.SendFileAsync("Temporary/" + SettingsManager.Username + ".jpg", null);
                    }
                    if (resp != null)
                    {
                        var response2 = ((JObject)resp).ToObject <Acknowledge>();
                        errorTextBlock.Text = response2.Reason;
                        SettingsManager.UpdateImage();
                        SettingsManager.FullName = SettingsManager.FullName;
                        SettingsManager.Password = SettingsManager.Password;
                        if (File.Exists("Temporary/" + SettingsManager.Username + ".jpg"))
                        {
                            File.Delete("Temporary/" + SettingsManager.Username + ".jpg");
                        }
                        if (response2.Status == "OK")
                        {
                            AppNotificationManager.PushMessage(new AppNotification()
                            {
                                Message = "Profile Updated Successfully."
                            });
                        }
                        Close();
                    }
                    else
                    {
                        errorTextBlock.Text = "Connection Error";
                    }
                    if (File.Exists("Temporary/" + SettingsManager.Username + ".jpg"))
                    {
                        File.Delete("Temporary/" + SettingsManager.Username + ".jpg");
                    }
                }
                else
                {
                    errorTextBlock.Text = response.Reason;
                }
            }

            progressRing.isActive = false;
        }