예제 #1
0
        private void btnImport_Click(object sender, EventArgs e)
        {
            string fileName = lstBxAvailableComics.SelectedItem.ToString();

            //get comic book
            UserComicBook importedCb = UserComicBook.MorphToUserComicBook(comicManager.GetComicBook(Path.Combine(cbResourceDirectory, fileName)));
            Bookmark      bm         = new Bookmark(importedCb.PageCount);

            importedCb.BookMark = bm;
            //add to user library
            loggedInUser.MyComicLibrary.AddComicBook(importedCb);
            //write changes
            accountManager.WriteComicLibrary(loggedInUser.Id, loggedInUser.MyComicLibrary);
            //refresh to reflect changes
            ReloadLibrary();
            btnImport.Enabled = false;
        }
예제 #2
0
        /// <summary>
        /// reads all the User accounts from the accounts XML file, including their comic libraries
        /// </summary>
        /// <returns>
        /// array of User objects
        /// </returns>
        public new User[] ReadAllUserAccounts()
        {
            if (PathIsValid())
            {
                XDocument xDocument = XDocument.Load(filePath);
                userList = new User[UserCount];
                int index = 0;

                foreach (XElement account in xDocument.Descendants("Account"))
                {
                    //get required elements
                    XElement id_element          = account.Element("ID");
                    XElement username_element    = account.Element("Username");
                    XElement password_element    = account.Element("Password");
                    XElement libraryHead_element = account.Element("MyComicLibrary");

                    //check if id does not have 1000 as its first 4 digits
                    //the 1000 indicates an admin, any other will be a user
                    if (id_element.Value.Substring(0, 4) != "1000")
                    {
                        userList[index] = new User(Convert.ToInt32(id_element.Value));
                        {
                            userList[index].Username = username_element.Value;
                            userList[index].Password = password_element.Value;

                            ComicLibrary cbLib = new ComicLibrary();
                            //check foreach book imported in library
                            if (libraryHead_element != null &&
                                libraryHead_element.Descendants("MySavedComicBook") != null)
                            {
                                foreach (var savedCb_element in libraryHead_element.Descendants("MySavedComicBook"))
                                {
                                    //get all required elements for this saved comic book
                                    XElement archivePath_element = savedCb_element.Element("ArchivePath");
                                    XElement bookMark_element    = savedCb_element.Element("Bookmark");
                                    XElement lastViewed_element  = savedCb_element.Element("Last_Viewed");
                                    XElement rating_element      = savedCb_element.Element("MyRating");

                                    //set all required data
                                    //set all required data : use ComicAccess to get ComicBook instance of archivePath
                                    ComicAccess ca        = new ComicAccess();
                                    ComicBook   public_cb = ca.GetComicBook(archivePath_element.Value);
                                    //obtained ComicBook is common to all, get the ComicBook for this user
                                    UserComicBook private_cb = UserComicBook.MorphToUserComicBook(public_cb);
                                    private_cb.LastViewed = DateTime.Parse(lastViewed_element.Value);
                                    private_cb.RateComicBook(float.Parse(rating_element.Value));

                                    //get all required elements : get bookmark for this saved comic book
                                    XElement bookMark_maxPages_element = bookMark_element.Element("MaxPages");
                                    XElement bookmark_pageNum_element  = bookMark_element.Element("PageNum");
                                    Bookmark bm = new Bookmark(int.Parse(bookMark_maxPages_element.Value));
                                    //check if there are any bookmarked pages
                                    if (bookmark_pageNum_element.Value != "")
                                    {
                                        foreach (var pageNum in bookmark_pageNum_element.Value.Split(','))
                                        {
                                            bm.AddPageNum(int.Parse(pageNum));
                                        }
                                    }
                                    //set bookmark to user's saved comic book
                                    private_cb.BookMark = bm;

                                    //add user's saved comic book to user's comic library
                                    cbLib.AddComicBook(private_cb);
                                }
                                userList[index].MyComicLibrary = cbLib;
                            }
                            index++;
                        }
                    }
                }
                return(userList);
            }
            else
            {
                Trace.WriteLine("Set Path = " + "<" + filePath + ">" + " is invalid, cannot proceed with account access.");
                FileNotFoundException exc = new FileNotFoundException
                                            (
                    "Set Path = " + "<" + filePath + ">" + " is invalid, cannot proceed with account access."
                                            );
                throw exc;
            }
        }