class DesktopThemesController < ApplicationController
	require "net/http"
	require "uri"
  	require 'zip/zip'

	def index
		@desktopThemes = DesktopTheme.all
		render :layout => false
	end

	def destroy
		dt = DesktopTheme.find(params[:id])
		dt.destroy
		redirect_to desktop_theme_path
	end

	def upload
	if !params[:desktop_theme].nil?
	    temp_file = Tempfile.new("temp_file")
	    original_file = params[:desktop_theme][:package_file]
	      #if original_file.content_type == 'application/zip'
	        temp_file.write(original_file.read.force_encoding('UTF-8'))
	        temp_file.rewind
	        filename = File.basename(original_file.original_filename,".zip")
	        unzip_widget(temp_file, filename)
	      #else
	      #  flash[:error] = "Upload file should be in zip format"
	      #end
	      temp_file.close
	 end
	 render :layout => false
	end
	def edit
		@dw = DesktopWidget.find(params[:id])
	end

	
	def unzip_widget(file, zip_name)
	    Zip::ZipFile.open(file) { |zip_file|
	      dt = DesktopTheme.new.from_json(zip_file.read("#{zip_name}/settings.json"))
	      Dir.mktmpdir('f_path') { |dir|
	        images_entries = []
	        zip_file.entries.each do |entry|
	          case (path = entry.to_s)
	            when /\A(#{zip_name})\/(theme\.css)\z/
	                #for default css
	              dt.build_css_default(:file => get_temp_file(zip_file, dir, entry))
	            when /\A(#{zip_name})\/(background)\/.*((\.jpg)|(\.png)|(\.gif))\z/   #for img
	              images_entries << entry
	          end
	        end
			images_entries.each do |image|
	        	dt.images.build(:file => get_temp_file(zip_file,dir,image))
	        end	  
	      }
	      dt.save
	    }
  end
  def get_temp_file(zip_file, dir, entry)
    filename = File.basename(entry.to_s)
    temp_file = File.new(dir + '/' + filename, 'w+') 
    temp_file.write (zip_file.read entry ).force_encoding('UTF-8')
    temp_file
  end

  def settings
  	if params[:id] == "custom"
  		@id = DesktopTheme.first.id.to_s
  	else 
  		@id = params[:id]
  	end
  	dt = DesktopTheme.find(@id)
  	if !dt.nil?
  		dt['css'] = dt.css_default.file.url
  		dt['background'] = dt.images.where(:name=>dt.background).first.file.url
  	end
  	icons = DesktopTheme::ICONS
  	dt['icons'] = icons
  	
  	render :json => dt.to_json
  end
	
end





