private void ApplicationBarIconButton_Click(object sender, EventArgs e)
        {
            try
            {
                AbstractTransfer Transfer = new DownloadTransfer { TransferUrl = Source.Text, Path = Path.Text, Filename = Filename.Text };

                App.TransferViewModel.Add(Transfer);

                if (NavigationService.CanGoBack)
                {
                    NavigationService.GoBack();
                }
            }
            catch (ArgumentException exc)
            {
                MessageBox.Show(exc.Message, "Error", MessageBoxButton.OK);
            }
        }
        private void PageListDownloaded(object sender, DownloadStringCompletedEventArgs e)
        {
            lock (this)
            {
                if (e.Error != null) { MessageBox.Show(e.Error.Message); return; }

                TextReader textreader = new StringReader(e.Result);
                XmlReader reader = XmlReader.Create(textreader, new XmlReaderSettings { CheckCharacters = false });

                XDocument loadedData = XDocument.Load(reader);
                var mangas = from series in loadedData.Descendants("page")
                             select series;

                foreach (XElement series in mangas.ToArray<XElement>())
                {
                    string ChapterID = (string)series.Element("chapter_id");
                    string SeriesID = (string)series.Element("series_id");
                    string PageNum = (string)series.Element("page_number");
                    string SeriesTitle = _Series[int.Parse(SeriesID) - 1].Title;
                    string Title = SeriesTitle + " - Page " + PageNum;
                    string URL = (string)series.Element("image_source");

                    // Add pages
                    Library.Page NewPage = new Library.Page{ Name = Title };

                    DownloadTransfer Transfer = new DownloadTransfer { TransferUrl = URL, Path = "/" + HttpUtility.UrlEncode(SeriesTitle)+"/"+ChapterID, Filename = PageNum + ".jpg" };
                    App.TransferViewModel.Add(Transfer);

                    NewPage.Transfer = Transfer;
                    App.LibraryViewModel.Add(NewPage);

                    Transfer.ExternalReference = NewPage.UID.ToString();
                }

                NavigationService.Navigate(new Uri("/MangaDemo/MangaDownloadList.xaml", UriKind.RelativeOrAbsolute));
            }
        }
        /// <summary>
        /// Constructor for the Application object.
        /// </summary>
        public App()
        {
            // Global handler for uncaught exceptions.
            UnhandledException += Application_UnhandledException;

            // Standard Silverlight initialization
            InitializeComponent();

            // Phone-specific initialization
            InitializePhoneApplication();

            // Show graphics profiling information while debugging.
            if (System.Diagnostics.Debugger.IsAttached)
            {
                // Display the current frame rate counters.
                Application.Current.Host.Settings.EnableFrameRateCounter = true;

                // Show the areas of the app that are being redrawn in each frame.
                //Application.Current.Host.Settings.EnableRedrawRegions = true;

                // Enable non-production analysis visualization mode,
                // which shows areas of a page that are handed off to GPU with a colored overlay.
                //Application.Current.Host.Settings.EnableCacheVisualization = true;

                // Disable the application idle detection by setting the UserIdleDetectionMode property of the
                // application's PhoneApplicationService object to Disabled.
                // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
                // and consume battery power when the user is not using the phone.
                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
            }

            // Specify the local database connection string.
            string DBConnectionString = "Data Source=isostore:/Transfer.sdf";

            // Create the database if it does not exist.
            using (TransferDataContext<AbstractTransfer> db = new TransferDataContext<AbstractTransfer>(DBConnectionString))
            {
                if (db.DatabaseExists() == false)
                {
                    // Create the local database.
                    db.CreateDatabase();

                    AbstractTransfer MilkyWay = new DownloadTransfer { TransferUrl = @"http://www.cfa.harvard.edu/image_archive/2009/1/hires.jpg", Path = "/space", Filename = "milky_way_highres.jpg" };

                    // Prepopulate with a page
                    db.Transfers.InsertOnSubmit(MilkyWay);

                    // Save pages to the database.
                    db.SubmitChanges();
                }
            }

            // Create the ViewModel object.
            _TransferViewModel = new TransferViewModel<AbstractTransfer>(DBConnectionString);

            // Query the local database and load observable collections.
            _TransferViewModel.LoadCollectionsFromDatabase();

            // Transfer manager
            _TransferManager = new TransferManager.TransferManager(_TransferViewModel);

            // Create the database if it does not yet exist.
            using (LibraryDataContext db = new LibraryDataContext("isostore:/Library.sdf"))
            {
                if (db.DatabaseExists() == false)
                {
                    // Create the database.
                    db.CreateDatabase();
                }
            }

            // Create the LibraryViewModel object.
            _LibraryViewModel = new LibraryViewModel("isostore:/Library.sdf");

            // Query the local database and load observable collections.
            _LibraryViewModel.LoadCollectionsFromDatabase();
        }