MainGrid.xaml.cs (23733B)
1 using System; 2 using System.Collections.Generic; 3 using System.Collections.ObjectModel; 4 using System.Linq; 5 using Windows.Storage; 6 using Windows.Storage.Pickers; 7 using Windows.UI.Popups; 8 using Windows.UI.Xaml; 9 using Windows.UI.Xaml.Controls; 10 using Windows.UI.Xaml.Input; 11 using Windows.UI.Xaml.Media; 12 using Windows.UI.Xaml.Navigation; 13 using Windows.ApplicationModel.Activation; 14 using Windows.Storage.AccessCache; 15 using Windows.UI.Xaml.Media.Imaging; 16 using Windows.Storage.FileProperties; 17 using System.Threading.Tasks; 18 19 namespace File360 20 { 21 public sealed partial class MainGrid : Page, IFolderPickerContinuable 22 { 23 #region Variables 24 25 #region SettingsVaribles 26 string UserName="User"; 27 bool GridType = true; 28 #endregion 29 ApplicationDataContainer settings; 30 StorageFolder folder; 31 BitmapImage niy = new BitmapImage(new Uri("ms-appx:///Assets/IMG-20150528-WA0003.jpg", UriKind.Absolute)); 32 ImageSource musicCoverArt = null; 33 IReadOnlyList<IStorageItem> Items; 34 List<sdlist> sd = new List<sdlist>(); 35 private string mruToken = null; 36 IStorageFolder CurrentFolder = null; 37 string[] fT = { ".zip",".rar",".mkv",".",".inf",".ini"}; 38 #endregion 39 #region MainMethod 40 public MainGrid() 41 { 42 this.InitializeComponent(); 43 SideMenu.InitializeDrawerLayout(); 44 Addresser.InitializeComponent(); 45 musicCoverArt = niy; 46 #region SettingsSerializer 47 settings = Windows.Storage.ApplicationData.Current.LocalSettings; 48 if (settings.Values.Count == 0) 49 { 50 settings.Values["userName"] = "User"; 51 UserName = (string)settings.Values["userName"]; 52 settings.Values["itemType"] = "0"; 53 GridType = ((string)settings.Values["itemType"] == "0"); 54 } 55 else 56 { 57 UserName = (string)settings.Values["userName"]; 58 GridType = ((string)settings.Values["itemType"] == "0"); 59 } 60 #endregion 61 this.NavigationCacheMode = NavigationCacheMode.Required; 62 #region HardwareHandler 63 Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed; 64 #endregion 65 66 #region Orientation 67 Window.Current.SizeChanged += Current_SizeChanged; 68 #endregion 69 } 70 #region UserManipulation 71 private void RemoveFolderLocation(object sender, RoutedEventArgs e) 72 { 73 var button = sender as Button; 74 if (button != null && button.CommandParameter != null) 75 { 76 var folders = App.ViewModel.Folders; 77 var tempFolder = folders.First(); 78 folders.Remove(tempFolder); 79 80 } 81 } 82 83 private void Reset() 84 { 85 App.ViewModel.Folders.Clear(); 86 } 87 88 private void AddFolderLocation(object sender, RoutedEventArgs e) 89 { 90 var folder = new Folder(); 91 folder.Name = "User - " + (App.ViewModel.Folders.Count + 1); 92 App.ViewModel.Folders.Add(folder); 93 } 94 95 96 #endregion 97 #region OrientationHelpers 98 void Current_SizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e) 99 { 100 if (IsVertical()) 101 { 102 } 103 if (!IsVertical()) 104 { 105 106 } 107 } 108 public bool IsVertical() 109 { 110 if (Window.Current.Bounds.Height > Window.Current.Bounds.Width) return true; 111 else return false; 112 } 113 #endregion 114 #endregion 115 #region BackButtonHandler 116 private async void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e) 117 { 118 e.Handled = true; 119 if (SettingsGrid.Visibility == Windows.UI.Xaml.Visibility.Visible) 120 { 121 SettingsFrame.Content= null; 122 SettingsGrid.Visibility = Windows.UI.Xaml.Visibility.Collapsed; 123 return; 124 } 125 else if(CurrentFolder != null) 126 { 127 StorageFolder sf = await StorageFolder.GetFolderFromPathAsync(CurrentFolder.Path.Replace(CurrentFolder.Name,String.Empty)); 128 GetFilesAndFolder(sf); 129 this.Addresser.Children.RemoveAt(this.Addresser.Children.Count - 1); 130 } 131 else if (this.SideMenu.IsDrawerOpen == true) 132 { 133 this.SideMenu.CloseDrawer(); 134 return; 135 } 136 else if (SDGridView.SelectionMode == ListViewSelectionMode.Multiple) 137 { 138 scrollBar.Visibility = Windows.UI.Xaml.Visibility.Collapsed; 139 headerText.Visibility = Windows.UI.Xaml.Visibility.Visible; 140 SDGridView.SelectionMode = ListViewSelectionMode.None; 141 SDGridView.IsItemClickEnabled = true; 142 return; 143 } 144 else if(!this.DialogBox.IsOpen) 145 { 146 this.DialogBox.IsOpen = true; 147 this.DialogBox.LeftButtonHandler += ExitApplicaton; 148 } 149 } 150 151 #endregion 152 #region ExitApplication 153 154 private void ExitApplicaton(object sender, RoutedEventArgs e) 155 { 156 Application.Current.Exit(); 157 } 158 #endregion 159 #region FileLister 160 private async void GetFilesAndFolder(IStorageFolder anyFolder) 161 { 162 CurrentFolder = anyFolder; 163 Items = null; 164 sd.Clear(); 165 SDGridView.ItemsSource = null; 166 Items = await anyFolder.GetItemsAsync(); 167 foreach (IStorageItem Data in Items) 168 { 169 if (Data.IsOfType(StorageItemTypes.Folder)) 170 { 171 IStorageFolder Folder; 172 Folder = (IStorageFolder)Data; 173 IReadOnlyList<IStorageItem> item = await Folder.GetItemsAsync(); 174 headerText.Text = anyFolder.Name; 175 sd.Add(new sdlist(Folder.Name, "f", item.Count.ToString())); 176 } 177 if (Data.IsOfType(StorageItemTypes.File)) 178 { 179 IStorageFile File; 180 File = (IStorageFile)Data; 181 string FileName = File.Name; 182 sd.Add(new sdlist(FileName, "Q")); 183 //string FileType = File.FileType; 184 //#region FileTypes 185 //foreach (string ft in fT) 186 //{ 187 //if (ft == FileType) 188 //{ 189 //sd.Add(new sdlist(FileName, "Q")); 190 //} 191 //} 192 //#endregion 193 194 } 195 196 197 } 198 SDGridView.ItemsSource = sd; 199 //SDGridView.ItemTemplate = GridType ? GridFoldersView : ListFoldersView; 200 } 201 #endregion 202 #region LateralMenu 203 private void Menu_Click(object sender, RoutedEventArgs e) 204 { 205 if(SideMenu.IsDrawerOpen == false) 206 { 207 SideMenu.OpenDrawer(); 208 } 209 else 210 { 211 SideMenu.CloseDrawer(); 212 } 213 } 214 #endregion 215 #region MusicMenu 216 private void MusicMenuClick(object sender, RoutedEventArgs e) 217 { 218 if (MusicElement.Visibility == Windows.UI.Xaml.Visibility.Visible) 219 { 220 MusicElement.Visibility = Windows.UI.Xaml.Visibility.Collapsed; 221 OpenMusic.Content = "u"; 222 return; 223 } 224 else if (MusicElement.Visibility == Windows.UI.Xaml.Visibility.Collapsed) 225 { 226 MusicElement.Visibility = Windows.UI.Xaml.Visibility.Visible; 227 OpenMusic.Content = "d"; 228 } 229 } 230 #endregion 231 #region ListBox 232 Object preObj = null; 233 Object curObj = null; 234 235 private void SideMenuLeft_SelectionChanged(object sender, SelectionChangedEventArgs e) 236 { 237 ListBox lBox = (ListBox)sender; 238 if (preObj != null) 239 { 240 SideBarMenuButton preSBMB = (SideBarMenuButton)preObj; 241 preSBMB.BackgroundColor = null; 242 } 243 curObj = lBox.SelectedItem; 244 preObj = curObj; 245 SideBarMenuButton stkChildren = (SideBarMenuButton)curObj; 246 stkChildren.BackgroundColor = (SolidColorBrush)Application.Current.Resources["PhoneAccentBrush"]; 247 } 248 #endregion 249 #region NavigationHelper 250 protected override void OnNavigatedTo(NavigationEventArgs e) 251 { 252 SuspensionManager.RegisterFrame(SettingsFrame, "SettingsFrame"); 253 if (SettingsFrame.Content == null) 254 { 255 // When the navigation stack isn't restored navigate to the ScenarioList 256 if (!SettingsFrame.Navigate(typeof(SettingsPage))) 257 { 258 throw new Exception("Failed to create scenario list"); 259 } 260 } 261 } 262 #endregion 263 #region MenuHandlers 264 #region SDCard 265 private void SDStorageEnumerator(object sender, TappedRoutedEventArgs e) 266 { 267 if (true) 268 { 269 FolderPicker folderPicker = new FolderPicker(); 270 folderPicker.SuggestedStartLocation = PickerLocationId.Desktop; 271 try 272 { 273 SDGridView.ItemsPanel = GridType ? GridViewItemsPanel : ListViewItemsPanel; 274 folderPicker.PickFolderAndContinue(); 275 } 276 catch 277 { 278 return; 279 } 280 } 281 } 282 #endregion 283 #region Phone 284 private void PhoneStorageEnumerator(object sender, TappedRoutedEventArgs e) 285 { 286 287 } 288 #endregion 289 #region Pictures 290 private async void PicturesLibraryTapped(object sender, TappedRoutedEventArgs e) 291 { 292 var pA = KnownFolders.PicturesLibrary; 293 var pF = await pA.GetFoldersAsync(); 294 SDGridView.ItemsSource = null; 295 sd.Clear(); 296 if (pF.Count != 0) 297 { 298 SDGridView.ItemTemplate = PicturesView; 299 SDGridView.ItemsPanel = GridViewItemsPanel; 300 Items = pF; 301 //BitmapImage bm = new BitmapImage(new Uri("ms-appx:///SampleData/SampleDataSource1/SampleDataSource1_Files/image01.png", UriKind.RelativeOrAbsolute)); 302 //var wb = await WinRTXamlToolkit.Imaging.WriteableBitmapFromBitmapImageExtension.FromBitmapImage(bm); 303 //ColorSampler cs = new ColorSampler(); 304 //WriteableBitmap wd = wb; 305 //MusicDock.Background = new SolidColorBrush(cs.GetPixel(wd)); 306 foreach (var pFo in pF) 307 { 308 try 309 { 310 GetThumbnailImageAsync(pFo, ThumbnailMode.PicturesView); 311 } 312 catch (Exception) 313 { 314 //MessageDialog md = new MessageDialog(ex.Message + ex.Source + ex.StackTrace); 315 //md.ShowAsync(); 316 } 317 318 } 319 SDGridView.ItemsSource = sd; 320 MusicView.ItemsSource = sd; 321 } 322 } 323 private void SettingsPage(object sender, TappedRoutedEventArgs e) 324 { 325 SettingsGrid.Visibility = Windows.UI.Xaml.Visibility.Visible; 326 } 327 328 #endregion 329 #region Video 330 private async void VideoLibraryTapped(object sender, TappedRoutedEventArgs e) 331 { 332 var vL = KnownFolders.VideosLibrary; 333 var vA = await vL.GetFoldersAsync(); 334 SDGridView.ItemsSource = null; 335 sd.Clear(); 336 if (vA.Count != 0) 337 { 338 SDGridView.ItemTemplate = VideosView; 339 SDGridView.ItemsPanel = GridViewItemsPanel; 340 foreach (var vF in vA) 341 { 342 try 343 { 344 GetThumbnailImageAsync(vF, ThumbnailMode.VideosView); 345 } 346 347 catch (Exception ex) 348 { 349 MessageDialog md = new MessageDialog(ex.Message+ex.Source+ex.StackTrace); 350 md.ShowAsync(); 351 } 352 } 353 SDGridView.ItemsSource = sd; 354 } 355 else 356 { 357 return;//The Folder is empty :( 358 } 359 } 360 361 #region Music 362 private async void MusicLibraryTapped(object sender, TappedRoutedEventArgs e) 363 { 364 IReadOnlyList<IStorageItem> mA = KnownFolders.MusicLibrary.GetItemsAsync().GetResults(); 365 366 SDGridView.ItemsSource = null; 367 sd.Clear(); 368 if (mA.Count != 0) 369 { 370 SDGridView.ItemTemplate = MusicsView; 371 SDGridView.ItemsPanel = GridViewItemsPanel; 372 foreach (var mF in mA) 373 { 374 if (mF.IsOfType(StorageItemTypes.Folder)) 375 { 376 StorageFolder sf = (StorageFolder)mF; 377 GetThumbnailImageAsync(sf, ThumbnailMode.MusicView); 378 } 379 else 380 { 381 382 } 383 try 384 { 385 } 386 catch (Exception ex) 387 { 388 MessageDialog mds = new MessageDialog(ex.Message + ex.Source + ex.StackTrace); 389 mds.ShowAsync(); 390 } 391 } 392 393 } 394 SDGridView.ItemsSource = sd; 395 //} 396 //else 397 //{ 398 // return;//Add details. 399 //} 400 } 401 public static async Task<bool> IsEmpty(StorageFolder directory) 402 { 403 var items = await directory.GetItemsAsync(); 404 return items.Count == 0; 405 } 406 #endregion 407 async void GetThumbnailImageAsync(StorageFolder item, ThumbnailMode mode) 408 { 409 if (item == null) 410 return; 411 412 using (var thumbnail = await item.GetThumbnailAsync(mode, 100)) 413 { 414 if (thumbnail != null && thumbnail.Type == ThumbnailType.Image) 415 { 416 BitmapImage bitmap = new BitmapImage(); 417 418 Grid grf; 419 MessageDialog md = new MessageDialog("drg"); 420 ImageBrush imgs = new ImageBrush(); 421 imgs.Stretch = Stretch.UniformToFill; 422 imgs.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () => bitmap.SetSource(thumbnail)).Completed += delegate 423 { 424 ImageBrush img = new ImageBrush(); 425 img.ImageSource = bitmap; 426 Grid grd = new Grid(); 427 grd.Height = PicHeight; 428 grd.Width = PicWidth; 429 430 Grid subGrd = new Grid(); 431 subGrd.Height = ImageHeight; 432 subGrd.Width = ImageWidth; 433 subGrd.Background = img; 434 435 TextBlock txt = new TextBlock(); 436 txt.VerticalAlignment = VerticalAlignment.Center; 437 txt.HorizontalAlignment = HorizontalAlignment.Center; 438 txt.Text = item.DisplayName; 439 440 Grid idGrid = new Grid(); 441 idGrid.VerticalAlignment = VerticalAlignment.Bottom; 442 idGrid.Background = (SolidColorBrush)App.Current.Resources["PhoneChromeBrush"]; 443 idGrid.Children.Add(txt); 444 ObservableCollection<Grid> mediaCollect = new ObservableCollection<Grid>(); 445 mediaCollect.Add(grd); 446 }; 447 448 449 450 451 // < Grid Heigth = "{Binding PicHeight}" Width = "{Binding PicWidth}" > 452 //< Grid Height = "{Binding ImageHeight}" Width = "{Binding ImageWidth}" > 453 // < Grid.Background > 454 // < ImageSource = "{Binding Background}" Stretch = "UniformToFill" /> 455 // </ Grid.Background > 456 // < Grid VerticalAlignment = "Bottom" Background = "{ThemeResource PhoneChromeBrush}" > 457 // < TextBlock HorizontalAlignment = "Center" VerticalAlignment = "Center" Text = "{Binding Name}" FontFamily = "Assets/Font/Custom/Lobster 1.4.otf#Lobster 1.4" /> 458 // </ Grid > 459 // </ Grid > 460 // </ Grid > 461 } 462 else return; 463 } 464 } 465 #endregion 466 #endregion 467 468 #region UI 469 public double PicHeight 470 { 471 get 472 { 473 if (IsVertical()) return Window.Current.Bounds.Height / 3; 474 else return Window.Current.Bounds.Width / 3; 475 } 476 } 477 public double PicWidth 478 { 479 get 480 { 481 if (IsVertical()) return Window.Current.Bounds.Width / 2; 482 else return Window.Current.Bounds.Height / 2; 483 } 484 } 485 public double ImageHeight 486 { 487 get 488 { 489 if (IsVertical()) return Window.Current.Bounds.Height / 3.5; 490 else return Window.Current.Bounds.Width / 3.5; 491 } 492 } 493 public double ImageWidth 494 { 495 get 496 { 497 if (IsVertical()) return Window.Current.Bounds.Width / 2.2; 498 else return Window.Current.Bounds.Height / 2.2; 499 } 500 } 501 public double Space 502 { 503 get { return Window.Current.Bounds.Height / 600; } 504 } 505 public double GridHeight 506 { 507 get 508 { 509 if (IsVertical()) return Window.Current.Bounds.Height / 4; 510 else return Window.Current.Bounds.Width / 4; 511 } 512 } 513 public double GridWidth 514 { 515 get 516 { 517 if (IsVertical()) return Window.Current.Bounds.Width / 3; 518 else return Window.Current.Bounds.Height / 3; 519 } 520 } 521 #endregion 522 523 #region FolderPicker 524 525 526 public void ContinueFolderPicker(FolderPickerContinuationEventArgs args) 527 { 528 folder = args.Folder; 529 try 530 { 531 var id = folder.FolderRelativeId; 532 if (folder != null) 533 { 534 if (folder.IsOfType(StorageItemTypes.Folder)) 535 { 536 this.Addresser.Address = "D:"; 537 } 538 StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", folder); 539 mruToken = Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList.Add(folder); 540 GetFilesAndFolder(folder); 541 } 542 else 543 { 544 return; 545 } 546 } 547 catch 548 { return; } 549 } 550 #endregion 551 #region FolderInteraction 552 private void FolderHold(object sender, HoldingRoutedEventArgs e) 553 { 554 if (scrollBar.Visibility == Windows.UI.Xaml.Visibility.Collapsed) 555 { 556 headerText.Visibility = Windows.UI.Xaml.Visibility.Collapsed; 557 scrollBar.Visibility = Windows.UI.Xaml.Visibility.Visible;//Start Cool Animations also :) 558 SDGridView.SelectionMode = ListViewSelectionMode.Multiple; 559 SDGridView.IsItemClickEnabled = false; 560 sdlist sdl = (sdlist)SDGridView.SelectedItem; 561 SDGridView.SelectedIndex = sd.IndexOf(sdl); 562 } 563 } 564 private async void GridItemClick(object sender, ItemClickEventArgs e) 565 { 566 sdlist sdl = (sdlist)e.ClickedItem; 567 IStorageItem selectedItem = Items.ElementAt(sd.IndexOf(sdl)); 568 if (selectedItem.IsOfType(StorageItemTypes.Folder)) 569 { 570 this.Addresser.Address = selectedItem.Name; 571 GetFilesAndFolder((IStorageFolder)selectedItem); 572 return; 573 } 574 else if (selectedItem.IsOfType(StorageItemTypes.File)) 575 { 576 MessageDialog mDialog = new MessageDialog("File Selected"); 577 await mDialog.ShowAsync(); 578 } 579 } 580 #endregion 581 #region FileOperations 582 private void SelectAll(object sender, TappedRoutedEventArgs e) 583 { 584 BottomBarItem bbi = (BottomBarItem)sender; 585 if (bbi.ContentText == "unselect all") 586 { 587 bbi.ContentText = "select all"; 588 scrollBar.Visibility = Windows.UI.Xaml.Visibility.Collapsed; 589 headerText.Visibility = Windows.UI.Xaml.Visibility.Visible; 590 SDGridView.SelectionMode = ListViewSelectionMode.None; 591 SDGridView.IsItemClickEnabled = true; 592 return; 593 } 594 bbi.ContentText = "unselect all"; 595 SDGridView.SelectAll(); 596 SDGridView.IsItemClickEnabled = false; 597 } 598 #endregion 599 #region ApplicationSettings 600 private void SaveData(string key, string value) 601 { 602 //Assuming you have the variable declared in App.Xaml.cs. 603 //settings.Values[value] = App.UserName; 604 } 605 // Method to Load data from IsolatedStorageSettings 606 private void LoadData(string key, string value) 607 { 608 //if (settings.Values.Count <= 0) return; 609 //{ 610 //Assuming you to have the variable present in App.Xaml.cs 611 //App.UserName = settings.Values.ContainsKey(value)? settings.Values[value] as String : String.Empty; 612 //} 613 } 614 #endregion 615 #region SDGridViewSelectionChanged 616 private void SDGridViewSelectionChanged(object sender, SelectionChangedEventArgs e) 617 { 618 if (SDGridView.SelectedIndex == -1) 619 { 620 scrollBar.Visibility = Windows.UI.Xaml.Visibility.Collapsed; 621 headerText.Visibility = Windows.UI.Xaml.Visibility.Visible; 622 SDGridView.SelectionMode = ListViewSelectionMode.None; 623 SDGridView.IsItemClickEnabled = true; 624 return; 625 } 626 else { return; } 627 } 628 #endregion 629 #region MusicOptions 630 private void PlayCurrent(object sender, RoutedEventArgs e) 631 { 632 633 } 634 #endregion 635 636 private void SortList(object sender, TappedRoutedEventArgs e) 637 { 638 this.Addresser.SelectedFolder(2); 639 } 640 641 private void ListBoxSelectionChanged(object sender, SelectionChangedEventArgs e) 642 { 643 this.Addresser.Reset(); 644 sd.Clear(); 645 SDGridView.ItemsSource = null; 646 headerText.Text = String.Empty; 647 } 648 } 649 }