Advertisement
Guest User

Untitled

a guest
May 8th, 2013
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Threading;
  10.  
  11.  
  12. namespace Books
  13. {
  14.     public partial class frmMain : Form
  15.     {
  16.         int threadCount = 0;
  17.         List<Thread> EasterEggThreads = new List<Thread>();
  18.  
  19.         List<Books> Catalog = new List<Books>();
  20.        
  21.         public frmMain()
  22.         {
  23.             CheckForIllegalCrossThreadCalls = false;
  24.  
  25.             InitializeComponent();
  26.         }
  27.  
  28.         private void clearAll()
  29.         {
  30.             txtAuthor.Clear();
  31.             txtTitle.Clear();
  32.             txtPrice.Clear();
  33.             tb_Format.Clear();
  34.             tb_fileSize.Clear();
  35.             tb_PageCount.Clear();
  36.         }
  37.  
  38.         private void output()
  39.         {
  40.             int i;
  41.             string[] outputList = new string[Catalog.Count+1];
  42.  
  43.             Books currentBook;
  44.  
  45.             outputList[0] = "< new Book >";
  46.             for(i=1;i<=Catalog.Count;i++)
  47.             {
  48.                 currentBook = Catalog[i-1];
  49.                 outputList[i] = currentBook.Title + " - " + currentBook.Author;
  50.             }
  51.  
  52.             lbBooklist.Items.Clear();
  53.             lbBooklist.Items.AddRange(outputList);
  54.         }
  55.  
  56.  
  57.  
  58.         private void btnSave_Click(object sender, EventArgs e)
  59.         {
  60.             if (lbBooklist.SelectedIndex == 0 || lbBooklist.SelectedIndex == -1)
  61.             {
  62.                 if (tb_PageCount.Text == "" && tb_fileSize.Text != "" && tb_Format.Text != "")
  63.                 {
  64.                     Ebook newBook= null;
  65.                     try
  66.                     {
  67.                         newBook = new Ebook(txtAuthor.Text, txtTitle.Text, (float)Convert.ToDouble(txtPrice.Text), tb_Format.Text, Convert.ToInt32(tb_fileSize.Text));
  68.                     }
  69.                     catch
  70.                     {
  71.                         MessageBox.Show("Invalid Input", "User Error");
  72.                         return;
  73.                     }
  74.                     Catalog.Add(newBook);
  75.                 }
  76.  
  77.  
  78.                 else if (tb_PageCount.Text != "" && tb_fileSize.Text == "" && tb_Format.Text == "")
  79.                 {
  80.                     Book newBook = null;
  81.                     try
  82.                     {
  83.                         newBook = new Book(txtAuthor.Text, txtTitle.Text, (float)Convert.ToDouble(txtPrice.Text), Convert.ToInt32(tb_PageCount.Text));
  84.                     }
  85.                     catch
  86.                     {
  87.                         MessageBox.Show("Malformed Input", "User Error");
  88.                         return;
  89.                     }
  90.  
  91.                     Catalog.Add(newBook);
  92.                 }
  93.                 else
  94.                 {
  95.                     MessageBox.Show("Invalid Input", "User Error");
  96.                 }
  97.                 output();
  98.             }
  99.             else
  100.             {
  101.                 int currentIndex = lbBooklist.SelectedIndex - 1;
  102.                 Books currentBook = Catalog[currentIndex];
  103.  
  104.                 currentBook.Author = txtAuthor.Text;
  105.                 currentBook.Title = txtTitle.Text;
  106.                 currentBook.Price = (float)Convert.ToDouble(txtPrice.Text);
  107.  
  108.                 if (currentBook is Book)
  109.                 {
  110.                     Book currentBook_Book = (Book)currentBook;
  111.                     currentBook_Book.pageCount = Convert.ToInt32(tb_PageCount.Text);
  112.                 }
  113.                 else if (currentBook is Ebook)
  114.                 {
  115.                     Ebook currentBook_Ebook = (Ebook)currentBook;
  116.                     currentBook_Ebook.Format = tb_Format.Text;
  117.                     currentBook_Ebook.fileSize = Convert.ToInt32(tb_fileSize.Text);
  118.                 }
  119.  
  120.                 output();
  121.             }
  122.  
  123.             lbBooklist.SelectedIndex = lbBooklist.Items.Count - 1;
  124.         }
  125.  
  126.         private void btnDelete_Click(object sender, EventArgs e)
  127.         {
  128.             if (lbBooklist.SelectedIndex > 0)
  129.             {
  130.                 int currentIndex = lbBooklist.SelectedIndex - 1;
  131.  
  132.                 Catalog.RemoveAt(currentIndex);
  133.                 clearAll();
  134.                 output();
  135.             }
  136.             else
  137.             {
  138.                 MessageBox.Show("No book selected.", "Error");
  139.             }
  140.         }
  141.  
  142.         private void btnClearList_Click(object sender, EventArgs e)
  143.         {
  144.             if (lbBooklist.Items.Count > 1)
  145.             {
  146.                 lbBooklist.Items.Clear();
  147.                 Catalog.Clear();
  148.                 clearAll();
  149.                 output();
  150.  
  151.                 MessageBox.Show("List has been cleared.", "Info");
  152.             }
  153.         }
  154.  
  155.  
  156.         private void lbBookList_SelectedIndexChanged(object sender, EventArgs e)
  157.         {
  158.             if (lbBooklist.SelectedIndex > 0)
  159.             {
  160.                 int buchIndex = lbBooklist.SelectedIndex - 1;
  161.                 Books currentBook = Catalog[buchIndex];
  162.  
  163.                 txtAuthor.Text = currentBook.Author;
  164.                 txtTitle.Text = currentBook.Title;
  165.                 txtPrice.Text = currentBook.Price.ToString("F2");
  166.  
  167.                 if (currentBook is Book)
  168.                 {
  169.                     Book currentBook_Typed = (Book)currentBook;
  170.  
  171.                     tb_PageCount.Text = currentBook_Typed.pageCount.ToString();
  172.  
  173.                     tb_fileSize.Clear();
  174.                     tb_Format.Clear();
  175.  
  176.                     tb_fileSize.Enabled = false;
  177.                     tb_Format.Enabled = false;
  178.  
  179.                     tb_PageCount.Enabled = true;
  180.                 }
  181.                 else if (currentBook is Ebook)
  182.                 {
  183.                     Ebook currentBook_Typed = (Ebook)currentBook;
  184.  
  185.                     tb_Format.Text = currentBook_Typed.Format;
  186.                     tb_fileSize.Text = currentBook_Typed.fileSize.ToString();
  187.  
  188.                     tb_PageCount.Clear();
  189.  
  190.                     tb_PageCount.Enabled = false;
  191.  
  192.                     tb_fileSize.Enabled = true;
  193.                     tb_Format.Enabled = true;
  194.                 }
  195.             }
  196.             else
  197.             {
  198.                 txtAuthor.Clear();
  199.                 txtTitle.Clear();
  200.                 txtPrice.Clear();
  201.  
  202.                 tb_PageCount.Clear();
  203.                 tb_fileSize.Clear();
  204.                 tb_Format.Clear();
  205.  
  206.                 tb_PageCount.Enabled = true;
  207.                 tb_fileSize.Enabled = true;
  208.                 tb_Format.Enabled = true;
  209.  
  210.             }
  211.         }
  212.  
  213.         private void btnCommitPriceAdaption_Click(object sender, EventArgs e)
  214.         {
  215.             try
  216.             {
  217.                 float priceAdaption = (float)Convert.ToDouble(tb_priceChange.Text) / 100 + 1;
  218.  
  219.                 foreach (Books currentBook in Catalog)
  220.                 {
  221.                     currentBook.Price *= priceAdaption;
  222.                 }
  223.  
  224.                 if (lbBooklist.SelectedIndex > 1)
  225.                 {
  226.                     int currentIndex = lbBooklist.SelectedIndex - 1;
  227.  
  228.                     txtPrice.Text = Catalog[currentIndex].Price.ToString("F2");
  229.                 }
  230.  
  231.             }
  232.             catch (Exception)
  233.             {
  234.                 MessageBox.Show("Invalid input!", "User Error");
  235.             }
  236.         }
  237.  
  238.         private void frm_Main_Load(object sender, EventArgs e)
  239.         {
  240.             output();
  241.         }
  242.  
  243.  
  244.  
  245.         private void btnClose_Click(object sender, EventArgs e)
  246.         {
  247.             easterEgg(this);
  248.  
  249.             MessageBox.Show(":(");
  250.  
  251.             foreach (Thread thread in EasterEggThreads)
  252.             {
  253.                 thread.Abort();
  254.             }
  255.  
  256.             Environment.Exit(0);
  257.         }
  258.  
  259.         private void easterEgg_fallDown(Object myObj)
  260.         {
  261.             Control currentControl = (Control)myObj;
  262.  
  263.             Random rand = new Random();
  264.             rand.Next(10, 200);
  265.  
  266.             Point newLoc = new Point();
  267.  
  268.             while (currentControl.Location.Y < Size.Height)
  269.             {
  270.                 newLoc.X = currentControl.Location.X + rand.Next(-5, 5);
  271.                 newLoc.Y = currentControl.Location.Y + 1;
  272.  
  273.                 if (newLoc.X < 0)
  274.                     newLoc.X = 0;
  275.                 try
  276.                 {
  277.                     currentControl.Location = newLoc;
  278.                 }
  279.                 catch (Exception)
  280.                 {
  281.                 }
  282.                 Thread.Sleep(1);
  283.             }
  284.  
  285.             Refresh();
  286.             threadCount--;
  287.         }
  288.         private void easterEgg(Control currentControl)
  289.         {
  290.             foreach (Control aControl in currentControl.Controls)
  291.             {
  292.                 if (aControl is GroupBox)
  293.                 {
  294.                     easterEgg(aControl);
  295.                 }
  296.                 else if (aControl is ListBox)
  297.                 {
  298.                     while (((ListBox)aControl).Items.Count > 0)
  299.                     {
  300.                         ((ListBox)aControl).Items.RemoveAt(0);
  301.                     }
  302.                 }
  303.  
  304.                 threadCount++;
  305.                 Thread mythread = new Thread(new ParameterizedThreadStart(easterEgg_fallDown));
  306.                 mythread.Start(aControl);
  307.  
  308.                 EasterEggThreads.Add(mythread);
  309.             }
  310.         }
  311.     }
  312. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement