#!/usr/bin/ruby
# encoding: utf-8

class DeleteScreen
	
	def initialize(extlayers, button)
		@layers = Array.new
		fixed = Gtk::Fixed.new
		
		greentile = Gtk::EventBox.new.add Gtk::Image.new("neutralgreen.png")
		orangetile = Gtk::EventBox.new.add Gtk::Image.new("neutralorange.png")
		reinsttext = TileHelpers.create_label("Klicken Sie hier, um die Festplatte für eine frische Windows-Installation optimal vorzubereiten. Gelöscht werden bei dieser Methode nur die Inhalte der Windows-Partitionen.", 380)
		secdeltext = TileHelpers.create_label("Klicken Sie hier, falls Sie den Computer verkaufen wollen und die Inhalte der Festplatte sicher löschen möchten. Bei dieser Methode wird die Festplatte komplett überschrieben.", 380)
		
		fixed.put(greentile, 0, 0)
		fixed.put(orangetile, 0, 130)
		fixed.put(reinsttext, 130, 35)
		fixed.put(secdeltext, 130, 165) 
		
		TileHelpers.place_back(fixed, extlayers)
		
		extlayers["deletestart"] = fixed
		@layers[0] = fixed
		button.signal_connect('button-release-event') { |x, y|
			if y.button == 1 
				extlayers.each { |k,v|v.hide_all }
				extlayers["deletestart"].show_all
			end
		}
		greentile.signal_connect('button-release-event') { |x,y|
			if y.button == 1 
				extlayers.each { |k,v|v.hide_all }
				extlayers["deletepartition"].show_all
			end
		}
		
		### Layer for deletion of single partitions
		
		green2tile = Gtk::EventBox.new.add Gtk::Image.new("neutralgreen.png")
		fixeddelete = Gtk::Fixed.new
		TileHelpers.place_back(fixeddelete, extlayers)
		delscroll = Gtk::ScrolledWindow.new
		delscroll.height_request = 195
		delscroll.width_request = 760
		delscroll.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC ) 
		fixeddelete.put(green2tile, 0, 0)
		fixeddelete.put(delscroll, 130, 65)
		drivetext = TileHelpers.create_label("<b>Auswahl der Laufwerke:</b> Wählen Sie hier die Partitionen aus, auf denen sich Windows befindet. Die anderen Partitionen sollten Sie nicht auswählen, da sonst persönliche Dateien und Sicherungen verloren gehen könnten.", 510)
		fixeddelete.put(drivetext, 130, 0)
		# Table for drives
		drivetab = Gtk::Table.new(2, 11, false)
		
		drivetab.attach(TileHelpers.create_label("<b>Yoyodyne Frobolator 500GB sda (SATA/IDE)</b>", -1), 0, 2, 0, 1)
		# drivetab.modify_text(Gtk::STATE_NORMAL, Gdk::Color.parse('#ffffff') )
		0.upto(10) { |n|
			c = Gtk::CheckButton.new # ("Partition 1, 100GB, NTFS, Label \"Hulla Bulla\"")
			# c.modify_text(Gtk::STATE_NORMAL, Gdk::Color.parse('#ffffff') )
			c.width_request = 12
			l = Gtk::Label.new
			l.set_markup("<span color='white'>Partition 1, 100GB, NTFS, Label \"Hulla Bulla\"</span>")
			drivetab.attach(c, 0, 1, n+1, n+2)
			drivetab.attach(l, 1, 2, n+1, n+2)
		}
		align = Gtk::Alignment.new(0, 0, 0.1, 0.1)
		align.add drivetab
		delscroll.add_with_viewport align
		# delscroll.add drivetab
		anc = drivetab.get_ancestor(Gtk::Viewport)
		anc.modify_bg(Gtk::STATE_NORMAL, Gdk::Color.parse('#005163') )
		anc.modify_fg(Gtk::STATE_NORMAL, Gdk::Color.parse('#005163') )
		anc.modify_text(Gtk::STATE_NORMAL, Gdk::Color.parse('#ffffff') )
		# puts anc.to_s
		# Forward button:
		text5 = Gtk::Label.new
		text5.width_request = 250
		text5.wrap = true
		text5.set_markup("<span color='white'>Klicken Sie hier, um die ausgewählten Laufwerke zu löschen.</span>")
		forw  = Gtk::EventBox.new.add Gtk::Image.new("forward.png")
		fixeddelete.put(forw, 853, 282)
		fixeddelete.put(text5, 630, 288)
		# End forward button
		forw.signal_connect('button-release-event') { |x,y|
			if y.button == 1 
				extlayers.each { |k,v|v.hide_all }
				extlayers["deleteprogress"].show_all
				# run ddrescue to delete
				TileHelpers.success_dialog("Die ausgewählten Laufwerke wurden erfolgreich gelöscht. Klicken Sie auf \"OK\" um zum Startbildschirm zurückzukehren.", "Laufwerke gelöscht")
				extlayers.each { |k,v|v.hide_all }
				extlayers["start"].show_all
			end
		}
		extlayers["deletepartition"] = fixeddelete
		@layers[1] = fixeddelete
		
		### Layer for progress of deletion
		
		fixedprogress = Gtk::Fixed.new
		winetile = Gtk::EventBox.new.add Gtk::Image.new("neutralwine.png")
		fixedprogress.put(winetile, 0, 0)
		TileHelpers.place_back(fixedprogress, extlayers)
		deleteprogress = Gtk::ProgressBar.new
		deleteprogress.width_request = 510
		deleteprogress.height_request = 32
		fixedprogress.put(deleteprogress, 130, 88)
		progresstext = TileHelpers.create_label("<b>Löschung läuft:</b> Die Löschung der ausgewählten Laufwerke läuft. Sie kann je nach Festplattengröße, Transfergeschwindigkeit und Auswahl der Art der Löschung wenige Minuten bis mehrere Stunden dauern. Der Fortschrittsbalken gibt Auskunft über die verbleibende Zeit.", 510)
		fixedprogress.put(progresstext, 130, 0)
		
		extlayers["deleteprogress"] = fixedprogress
		@layers[2] = fixedprogress
		
	end
	attr_reader :layers
	
end

