Link to home
Start Free TrialLog in
Avatar of Max Destiny
Max DestinyFlag for United States of America

asked on

New Storage

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.Storage;

// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409

namespace New_Storage
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage : Page
    {
        StorageLibrary activelibrary = null;
        StorageLibrary publicvideoslibrary = null;
        StorageLibrary publicmusiclibrary = null;

        StorageLibrary publicpictureslibrary = null;

        IStorageFolder mainfolder = null;

        IStorageItem item = null;

        IStorageFile file = null;

        ListBoxItem itm = null;

        TextBox publictextbox = null;

       


        public MainPage()
        {
            this.InitializeComponent();

            this.Loading += MainPage_Loading;

            this.RightTapped += MainPage_RightTapped;

            this.DoubleTapped += MainPage_DoubleTapped;

            libraries_listbox.SelectionChanged += Libraries_listbox_SelectionChanged;

            libraries_listbox.Items.Insert(0, "videos");

            libraries_listbox.Items.Insert(1, "pictures");

            libraries_listbox.Items.Insert(2, "music");

            items_listbox.SelectionChanged += Items_listbox_SelectionChanged;

            items_listbox.DoubleTapped += Items_listbox_DoubleTapped;

           

            ListViewItem createfolderitem = new ListViewItem();

            createfolderitem.Content = "Create Folder:";

            ListViewItem createfileitem = new ListViewItem();

            createfileitem.Content = "Create File:";

            ListViewItem deleteitem = new ListViewItem();

            deleteitem.Content = "Delete:";

            ListViewItem renameitem = new ListViewItem();

            renameitem.Content = "Rename:";

            TextBox t = new TextBox();

            listviewitem.Items.Add(createfolderitem);

            listviewitem.Items.Add(createfileitem);

            listviewitem.Items.Add(deleteitem);

            listviewitem.Items.Add(renameitem);

            listviewitem.Items.Add(t);

            listviewitem.Visibility = Visibility.Collapsed;

            listviewitem.SelectionChanged += Listviewitem_SelectionChanged;

            publictextbox = t;

           

           


        }

        private async void Listviewitem_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
           


            if (listviewitem.SelectedItem == listviewitem.Items[0])
            {
                await mainfolder.CreateFolderAsync(publictextbox.Text);

                listviewitem.Visibility = Visibility.Collapsed;
            }
            if (listviewitem.SelectedItem == listviewitem.Items[1])
            {
                await mainfolder.CreateFileAsync(publictextbox.Text);

                listviewitem.Visibility = Visibility.Collapsed;
            }
            if (listviewitem.SelectedItem == listviewitem.Items[2])
            {
                item = await mainfolder.GetItemAsync(items_listbox.SelectedValue.ToString());

                await item.DeleteAsync(StorageDeleteOption.Default);

                listviewitem.Visibility = Visibility.Collapsed;
            }
            if (listviewitem.SelectedItem == listviewitem.Items[3])
            {
                item = await mainfolder.GetItemAsync(items_listbox.SelectedValue.ToString());

                await item.RenameAsync(publictextbox.Text);

                listviewitem.Visibility = Visibility.Collapsed;

            }
        }

        private async void Items_listbox_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
        {
        [b]    item = await mainfolder.GetItemAsync(itm.Content.ToString());
[/b]

            if (item.GetType() == mainfolder.GetType())
            {
                mainfolder = await mainfolder.GetFolderAsync(item.Name);

                foreach (IStorageItem itm in await mainfolder.GetItemsAsync())
                {
                    items_listbox.Items.Add(itm);
                }
            }
            if (item.GetType() == publicpictureslibrary.SaveFolder.GetType())
            {
                mainfolder = await mainfolder.GetFolderAsync(item.Name);

                items_listbox.Items.Clear();

                foreach (IStorageItem itm in await mainfolder.GetItemsAsync())
                {
                    items_listbox.Items.Add(itm.Name);
                }
            }
        }

        private  void Items_listbox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            itm = items_listbox.SelectedItem as ListBoxItem;

           


        }

        private void MainPage_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
        {
       
        }

        private async void Libraries_listbox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (libraries_listbox.SelectedItem == libraries_listbox.Items[0])
            {
                activelibrary = publicvideoslibrary;

                mainfolder = activelibrary.SaveFolder;

                items_listbox.Items.Clear();

                foreach(IStorageItem item in await mainfolder.GetItemsAsync())
                {
                    items_listbox.Items.Add(item.Name);
                }

               
            }

            else if (libraries_listbox.SelectedItem == libraries_listbox.Items[1])
            {
                activelibrary = publicpictureslibrary;

                mainfolder = activelibrary.SaveFolder;

                items_listbox.Items.Clear();

                foreach (IStorageItem item in await mainfolder.GetItemsAsync())
                {
                    items_listbox.Items.Add(item.Name);
                }
            }
            else if (libraries_listbox.SelectedItem == libraries_listbox.Items[2])
            {
                activelibrary = publicmusiclibrary;

                mainfolder = activelibrary.SaveFolder;

                items_listbox.Items.Clear();

                foreach (IStorageItem item in await mainfolder.GetItemsAsync())
                {
                    items_listbox.Items.Add(item.Name);
                }
            }
        }

        private void MainPage_RightTapped(object sender, RightTappedRoutedEventArgs e)
        {
            listviewitem.Visibility = Visibility.Visible;
        }

        private async void MainPage_Loading(FrameworkElement sender, object args)
        {
            StorageLibrary videoslibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Videos);

            publicvideoslibrary = videoslibrary;

            publicvideoslibrary.DefinitionChanged += Publicvideoslibrary_DefinitionChanged;

            StorageLibrary musiclibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Music);

            publicmusiclibrary = musiclibrary;

            publicmusiclibrary.DefinitionChanged += Publicmusiclibrary_DefinitionChanged;

            StorageLibrary pictureslibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Pictures);

            publicpictureslibrary = pictureslibrary;

            publicpictureslibrary.DefinitionChanged += Publicpictureslibrary_DefinitionChanged;


        }

        private async void Publicpictureslibrary_DefinitionChanged(StorageLibrary sender, object args)
        {
            activelibrary = sender;

            mainfolder = activelibrary.SaveFolder;

            items_listbox.Items.Clear();

            foreach (IStorageItem itm in await mainfolder.GetItemsAsync())
            {
                items_listbox.Items.Add(itm.Name);
            }
        }

        private async void Publicmusiclibrary_DefinitionChanged(StorageLibrary sender, object args)
        {
            activelibrary = sender;

            mainfolder = activelibrary.SaveFolder;

            items_listbox.Items.Clear();

            foreach(IStorageItem itm in await mainfolder.GetItemsAsync())
            {
                items_listbox.Items.Add(itm.Name);
            }
        }

        private async void Publicvideoslibrary_DefinitionChanged(StorageLibrary sender, object args)
        {
            activelibrary = sender;

            mainfolder = activelibrary.SaveFolder;

            items_listbox.Items.Clear();

            foreach (IStorageItem itm in await mainfolder.GetItemsAsync())
            {
                items_listbox.Items.Add(itm.Name);
            }
        }
    }
}
the problem is in the underlining text

it says object reference not set to an instance object and its really weird!!!:)

it is an almost-completed storage for pictures,videos and music libraries.

and it cant load the items within the mainfolder!:)
Avatar of AndyAinscow
AndyAinscow
Flag of Switzerland image

You have this line of code
  IStorageFolder mainfolder = null;
But I don't see anywhere where you actually assign a value to mainfolder.  

In your DoubleTapped handler the faulting line
 item = await mainfolder.GetItemAsync(itm.Content.ToString());
will fail with your error message if mainfolder is null.
Avatar of Max Destiny

ASKER

what!?

  Mainfolder is assigned from the beginning.The problem aint there.Anyway im gonna add a new listviewitem so...
have you read all the lines?
Yes I have and I have searched through your code.  You declare a variable called mainfolder and assign the value null to it.  
Where do you actually assign a real value to it?

object reference not set to an instance object  That error message is when you have something with a value null and attempt to use it eg. null.GetItemAsync
I just did it
mainfolder may be null at beginning but when you select items by the listbox it becomes non-nullable
ASKER CERTIFIED SOLUTION
Avatar of AndyAinscow
AndyAinscow
Flag of Switzerland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial