file360

Log | Files | Refs

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 &lt;= 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 }