Sleep Display After 1 Minute.scpt

--UWAGA! Ponizszy skrypt zmienia ustawienia wylaczania wyswietlacza tak samo dla zasilacza i baterii!
--by zmienic ustawienia tylko dla ZASILACZA
--w tresc (shellScr) skryptu powloki nalezy wpisac 'pmset -c displaysleep' zamiast 'pmset displaysleep'
--by zmienic ustawienia tylko dla BATERII  
--w tresc (shellScr) skryptu powloki nalezy wpisac 'pmset -b displaysleep' zamiast 'pmset displaysleep'

--stale 
property pass : false --na wstepie "reset" hasla
property login : "USER" --krotka nazwa uzytkownika, nalezy wstawic w "" swoja
--ustaw dowolnie od 1 do 180; cyfra 0 powoduje ustawienie "nigdy"
property regularDisp : 20 --czas w minutach po jakim zwykle usypia ekran, np. 20 min.
property theWait : 90 --czas w sekundach po jakim OS X przywraca zwykle ustawienie (mozna zmieniac na 60+) --koniec stale

if pass is false then --jesli haslo jest nieustalone (a nie jest bo tak twierdzi stala)
	--tell application "Finder" --nakazuje wyswietlic okno dialogowe w Finderze; bez tego, czasem okno chowa sie miedzy innymi oknami
	--"with hidden answer" wyswietla kropki w miejsce liter
	display dialog "Podaj haslo:" default answer "" with hidden answer --okno dialogowe prosi o haslo administratora
	--end tell
	set pass to text returned of result --ustawia haslo na podane
end if

my sleepDisplay() --przestawia zegar wylaczania wyswietlacza na 1 min (najmniejsza mozliwa wartosc)
my waitToReverse() --czeka 90 sekund i przywraca ustawienie wylaczania wyswietlacza do wartosci okreslone w stalej 'regularDisp'

on sleepDisplay() --wykonuje polecenie 'my sleepDisplay()'
	set success to false --ustala zmienna falszywa na wstepie
	repeat until success is true --zapetla dopoki zmienna prawdziwa
		try --wylapuje bledy
			set shellScr to "pmset displaysleep " & regularDisp & " && pmset displaysleep 1" --tresc skryptu powloki
			do shell script shellScr user name login password pass with administrator privileges --wykonuje skrypt powloki z haslem jako admin
			set success to true --zmienna prawdziwa przerywa petle
			--pokazuje potwierdzenie oraz ile sekund Ci zostalo by zostawic go do uspienia
			--'giving up' powoduje znikniecie okna dialogowego po okreslonej liczbie sekund
			--znak ¬ (Alt-Return w Script Editor) kontynuuje zapis polecenia w nowym wierszu, pomaga skracac wiersze
			display alert "Ekran ustawiony na spanie!" message "W ciagu " & ¬
				theWait - 60 & "sek. musisz go zostawic na minutke by zasnal." giving up after 4
		on error theError --jesli nieudane
			set pass to false --"reset" hasla
			tell application "Finder"
				display dialog "Nie udalo sie, sprobuj ponownie." & return & ¬
					"Podaj haslo:" default answer "" with hidden answer --ponownie prosi o haslo
			end tell
			set pass to text returned of result --ustawia haslo na podane (po czym wraca do poczatku petli)
		end try
	end repeat
end sleepDisplay

on waitToReverse() --wykonuje polecenie 'my waitToReverse()'
	delay theWait --przerywa skrypt na zadeklarowana stala 90 sek. (daje to <30 s. na pozostawienie komputera na 1min. w celu wylaczenia wyswietlacza) 
	set success to false --ustalamy zmienna na falszywa na wstepie
	repeat until success is true --zapetla dopoki zmienna prawdziwa
		try
			set shellScr to "pmset displaysleep 1 && pmset displaysleep " & regularDisp --tresc skryptu powloki
			do shell script shellScr user name login password pass with administrator privileges --wykonuje skrypt powloki jako admin
			set success to true --zmienna prawdziwa przerywa petle
		on error theError --jesli nieudane, choc w tym miejscu blad jest raczej niemozliwy, jesli powiodlo sie 'my sleepDisplay()'
			set pass to false --"reset" hasla
			tell application "Finder"
				--prosi ponownie o haslo
				display dialog "Nie udalo sie ustawic z powrotem na " & regularDisp & ¬
					"min." & return & ¬
					"Sprobuj ponownie." & return & "Podaj haslo:" default answer "" with hidden answer
			end tell
			set pass to text returned of result --ustawia haslo na podane (po czym wraca do poczatku petli)
		end try
	end repeat
end waitToReverse