
; Copyleft (c) n/a-n/a CatsSoft 

; http://www.mplayerhq.hu/DOCS/HTML/en/usage.html
; http://www.mplayerhq.hu/DOCS/HTML/en/commandline.html

Name "MPlayer CMD"
Caption "MPlayer CMD"
OutFile "MPlayer CMD.exe"
InstallDir "$TEMP\MPlayer CMD"

!define INPUTBOX

# COMPRESSION

SetCompressor /SOLID /FINAL lzma

# RUN

!define RUNASADMIN

!ifndef RUNASADMIN
   RequestExecutionLevel 'user'
!else
   RequestExecutionLevel 'admin'
!endif

# RUNTIME SWITCHES

ShowInstDetails hide
ShowInstDetails nevershow
ShowUnInstDetails nevershow

# INCLUDES

!include "MUI2.nsh"
!include "WinCore.nsh"
!include "nsDialogs.nsh"
!include "LogicLib.nsh"
!include "WinMessages.nsh"
!include "FileFunc.nsh"

# Icon & Stye

BrandingText /TRIMRIGHT " "

# ICON

Icon "Icon\appicon.ico"
!define MUI_ICON "Icon\appicon.ico"

# PAGE

!define MUI_CUSTOMFUNCTION_GUIINIT onGuiInit
!ifdef INPUTBOX 
  Page Custom "Copy.Files.Page" "Copy.Files.Page.Leave"
!endif

!define MUI_PAGE_CUSTOMFUNCTION_SHOW InstFilesPageShow
!insertmacro MUI_PAGE_INSTFILES

# LANGUAGES

!insertmacro MUI_LANGUAGE 'English' # first language is the default language
!include 'Language\English.nsh'

!insertmacro MUI_LANGUAGE 'Romanian'
!include 'Language\Romanian.nsh'

# LANGUAGE

LangString NSIS.LangDialog.Title '${LANG_ENGLISH}' 'Language'
LangString NSIS.LangDialog.Title '${LANG_ROMANIAN}' 'Limbă'
 
LangString NSIS.LangDialog.Text '${LANG_ENGLISH}' 'Select your local language.'
LangString NSIS.LangDialog.Text '${LANG_ROMANIAN}' 'Alege limba ta locală.'

# INIT

Var /global Lang

# LANGUAGE

!define LOCALE_SCOUNTRY 6
!define LOCALE_SENGCOUNTRY 4098
!define LOCALE_SENGLANGUAGE 0x00001001
!define GEOCLASS_NATION 16
!define GEOID_NOT_AVAILABLE -1
!define GEO_ISO2 4
!define GEO_ISO3 5
!define GEO_OFFICIALNAME 9
!define GEO_LATITUDE 2
!define GEO_LONGITUDE 3

Function .onInit
	# Language

	System::Call 'KERNEL32::GetUserDefaultLangID()i.r0'
	System::Call "kernel32::GetSystemDefaultLCID()i.R0"
	System::Call `kernel32::GetUserDefaultUILanguage() i.s`
	System::Call 'KERNEL32::GetUserDefaultLangID()i.r0'
	Pop $R0
	strcpy $LANGUAGE '$R0'
	System::Call 'KERNEL32::GetLocaleInfo(i$0,i${LOCALE_SCOUNTRY},t.r1,i1000)'
	System::Call 'KERNEL32::GetLocaleInfo(i$0,i${LOCALE_SENGCOUNTRY},t.r1,i1000)' 
	System::Call 'KERNEL32::GetLocaleInfo(i$0,i${LOCALE_SENGLANGUAGE},t.r2,i1000)'
	StrCpy $Lang $2
	StrCpy $R0 '$(NSIS.LangDialog.Title): $Lang $1.$\n$(NSIS.LangDialog.Text)'
	StrCpy $R1 '$(^NAME)'
  	StrCmp $LANGUAGE "" 0 end

	End:
	!define MUI_LANGDLL_WINDOWTITLE '$R1'
	!define MUI_LANGDLL_INFO $R0
	;!insertmacro MUI_LANGDLL_DISPLAY

 	File `/oname=$PLUGINSDIR\mplayer.exe` `mplayer\mplayer.exe`

FunctionEnd

Function onGUIInit
    System::Call user32::SetWindowLong(i$HWNDPARENT,i-16,0x9480084C)i.R0
    GetDlgItem $0 $HWNDPARENT 1034
    ShowWindow $0 ${SW_HIDE}
    GetDlgItem $0 $HWNDPARENT 1035
    ShowWindow $0 ${SW_HIDE}
    GetDlgItem $0 $HWNDPARENT 1036
    ShowWindow $0 ${SW_HIDE}
    GetDlgItem $0 $HWNDPARENT 1037
    ShowWindow $0 ${SW_HIDE}
    GetDlgItem $0 $HWNDPARENT 1038
    ShowWindow $0 ${SW_HIDE}
    GetDlgItem $0 $HWNDPARENT 1039
    ShowWindow $0 ${SW_HIDE}
    GetDlgItem $0 $HWNDPARENT 1256
    ShowWindow $0 ${SW_HIDE}
    GetDlgItem $0 $HWNDPARENT 1028
    ShowWindow $0 ${SW_HIDE}
    GetDlgItem $0 $HWNDPARENT 1
    ShowWindow $0 ${SW_HIDE}
    GetDlgItem $0 $HWNDPARENT 2
    ShowWindow $0 ${SW_HIDE}
    GetDlgItem $0 $HWNDPARENT 3
    ShowWindow $0 ${SW_HIDE}

    System::Call 'user32::GetSystemMetrics(i0)i.r1'
    System::Call 'user32::GetSystemMetrics(i1)i.r2'
    IntOp $1 $1 - 440
    IntOp $1 $1 / 2
    IntOp $2 $2 - 100
    IntOp $2 $2 / 2
    System::Call 'user32::MoveWindow(i$HWNDPARENT,i$1,i$2,i440,i100,1)'

    System::Alloc 16
    System::Call user32::GetWindowRect(i$HWNDPARENT,isR0)
    System::Call *$R0(i.R1,i.R2,i.R3,i.R4)
    IntOp $R3 $R3 - $R1
    IntOp $R4 $R4 - $R2
    System::Call gdi32::CreateRoundRectRgn(i0,i0,iR3,iR4,i4,i4)i.r0
    System::Call user32::SetWindowRgn(i$HWNDPARENT,ir0,i1)
    System::Free $R0
FunctionEnd

!ifdef INPUTBOX
	Var /global btn_Close

	var /global hndLabelCombo
	var /global hndComboBox

	var /global dlg
	var /global STATION1
	var /global STATION2

	Function Copy.Files.Page
    		GetDlgItem $0 $HWNDPARENT 1
    		ShowWindow $0 ${SW_HIDE}
    		GetDlgItem $0 $HWNDPARENT 2
    		ShowWindow $0 ${SW_HIDE}
    		GetDlgItem $0 $HWNDPARENT 3
    		ShowWindow $0 ${SW_HIDE}
    		GetDlgItem $0 $HWNDPARENT 1990
    		ShowWindow $0 ${SW_HIDE}
    		GetDlgItem $0 $HWNDPARENT 1991
    		ShowWindow $0 ${SW_HIDE}
    		GetDlgItem $0 $HWNDPARENT 1992
    		ShowWindow $0 ${SW_HIDE}

  		System::Call user32::SetWindowPos(i$HWNDPARENT,i0,i0,i0,i440,i100,i0x0002)
  		nsDialogs::Create 1044
  		Pop $dlg
    		${If} $dlg == error
    		    Abort
    		${EndIf}
  		SetCtlColors $dlg "0xC5C4AC" "0x333333"

  		System::Call user32::SetWindowPos(i$Dlg,i0,i0,i0,i440,i100,i0x0002)

	# Close

  		nsDialogs::CreateControl BUTTON 0x40000000|0x10000000|0x04000000|0x00010000 0 270u 2u 24 20 "X" ; close
		Pop $btn_Close
        	GetFunctionAddress $0 'On_Click_Close'
		nsDialogs::OnClick $btn_Close "$0"

		SetCtlColors $btn_Close "0xC5C4AC" "0x333333"

	# GroupBox 1
  
        	nsDialogs::CreateControl STATIC 0x40000000|0x10000000|0x04000000|0x00000100 0x00000020 15u 10u 125u 12u "Select your radio station:"
  		Pop $hndLabelCombo

		CreateFont $0 "Baar Sophia" "12" "400"
		SendMessage $hndLabelCombo ${WM_SETFONT} $0 0

		SetCtlColors $hndLabelCombo "0xC5C4AC" "0x333333"

		StrCpy $STATION1 "http://live.radiopopular.ro:8888"
		StrCpy $STATION2 "http://live.radiolautaru.ro:9000"
  
  		nsDialogs::CreateControl COMBOBOX 0x40000000|0x10000000|0x04000000|0x00010000|0x00200000|0x02000000|0x0040|0x0200|0x0003 0x00000100|0x00000200 15u 30u 260u 16u ""
  		Pop $hndComboBox
        	GetFunctionAddress $0 'Play.Radio.Station'
		nsDialogs::OnChange $hndComboBox "$0"
  		SendMessage $hndComboBox ${CB_ADDSTRING} 0 "STR:$STATION1" ; Radio Popular
  		SendMessage $hndComboBox ${CB_ADDSTRING} 0 "STR:$STATION2" ; Radio Lautaru
  		SendMessage $hndComboBox ${CB_SelectString} 0 "STR:$STATION1"

		SetCtlColors $hndComboBox "0x144C4D" "0x333333"

		CreateFont $0 "Baar Sophia" "12" "400"
		SendMessage $hndComboBox ${WM_SETFONT} $0 0

    		nsDialogs::Show

	FunctionEnd

	var /global ERROR
	var /global MYRADIOSTATION

	Function Play.Radio.Station
		   Pop $hndComboBox
		   ${NSD_GetText} $hndComboBox $0
		   StrCpy $MYRADIOSTATION "$0"

		   StrCpy $STATION1 "http://live.radiopopular.ro:8888"
		   StrCpy $STATION2 "http://live.radiolautaru.ro:9000"

		  ${If} $MYRADIOSTATION == "$STATION1" 
		       StrCpy $ERROR "$(NSIS.Error)"
		       ${If} $0 != "1"
		         ${Switch} $MYRADIOSTATION
		           ${Case} '$STATION1'
		             StrCpy $1 1
		             Call "on.Click.Play.Radio.Station"
		           ${Break}
		         ${EndSwitch}
		       ${Else}
	                MessageBox MB_OK|MB_USERICON 'First Add Your Radio Station'
			Abort
			StrCmp $ERROR "$(NSIS.Error)" +3
		       ${EndIf}

		     ${ElseIf} $MYRADIOSTATION == "$STATION2"
		       StrCpy $ERROR "$(NSIS.Error)"
		       ${If} $0 != ""
		         ${Switch} $MYRADIOSTATION
		           ${Case} '$STATION2'
		             StrCpy $1 2
		             Call "on.Click.Play.Radio.Station"
		           ${Break}
		         ${EndSwitch}
		       ${Else}
	                MessageBox MB_OK|MB_USERICON 'First Add Your Radio Station'
			Abort
			StrCmp $ERROR "$(NSIS.Error)" +3
		       ${EndIf}
		   ${EndIf}
	FunctionEnd

	Function on.Click.Play.Radio.Station
	     ${If} $MYRADIOSTATION == "$STATION1" 
		ExecWait '"$SYSDIR\cmd.exe" /c $PLUGINSDIR\mplayer.exe $MYRADIOSTATION' $0
	     ${EndIf}
	     ${If} $MYRADIOSTATION == "$STATION2" 
		ExecWait '"$SYSDIR\cmd.exe" /c $PLUGINSDIR\mplayer.exe $MYRADIOSTATION' $0
	     ${EndIf}
	FunctionEnd

	Function On_Click_Close
		SendMessage $HWNDPARENT ${WM_CLOSE} 0 0
	FunctionEnd

	Function Copy.Files.Page.Leave
	FunctionEnd
!endif

Var ImageHandle

Function InstFilesPageShow
    	FindWindow $R2 "#32770" "" $HWNDPARENT

    	ShowWindow $0 ${SW_HIDE}
    	GetDlgItem $1 $R2 1027
    	ShowWindow $1 ${SW_HIDE}

    	StrCpy $R0 $R2
    	System::Call "user32::MoveWindow(i R0, i 0, i 0, i 597, i 450) i r2"
    	GetFunctionAddress $0 onGUICallback
   	WndProc::onCallback $R0 $0
    
    	GetDlgItem $R0 $R2 1004
    	SetCtlColors $R2 "0x144C4D" "0xFFFFFF"
    	System::Call "user32::MoveWindow(i R0, i 15, i 390, i 560, i 7) i r2"

    	GetDlgItem $R1 $R2 1006
    	SetCtlColors $R1 "0x144C4D" "0xFFFFFF"
    	System::Call "user32::MoveWindow(i R1, i 15, i 360, i 560, i 17) i r2"
	CreateFont $1 "Baar Sophia" "12" "400"
	SendMessage $R1 ${WM_SETFONT} $1 0

    	GetDlgItem $R8 $R2 1016
    	;SetCtlColors $R8 "" F6F6F6
    	System::Call "user32::MoveWindow(i R8, i 0, i 0, i 588, i 216) i r2"

    	FindWindow $R2 "#32770" "" $HWNDPARENT
    	GetDlgItem $R0 $R2 1995
    	SetCtlColors $R0 "0xC5C4AC" "0x144C4D"
    	System::Call "user32::MoveWindow(i R0, i 0, i 0, i 498, i 373) i r2"
    	${NSD_SetImage} $R0 "$PLUGINSDIR\bg.bmp" $ImageHandle

    	FindWindow $R2 "#32770" "" $HWNDPARENT
    	GetDlgItem $5 $R2 1004
    	SkinProgress::Set $5 "$PLUGINSDIR\loading2.bmp" "$PLUGINSDIR\loading1.bmp"

	w7tbp::Start
FunctionEnd

!define NSIS_FileSize '!insertmacro NSIS_FileSize'
!macro NSIS_FileSize VAR FILE
    Push "${FILE}"
    Call FileSizeNew
    Pop ${VAR}
!macroend

Function FileSizeNew 
  Exch $0
  Push $1
  FileOpen $1 $0 "r"
  FileSeek $1 0 END $0
  FileClose $1
  Pop $1
  Exch $0
FunctionEnd

Section "$(^Name)" Main
   SectionIn RO
   SetOutPath "$INSTDIR"

   ${NSIS_FileSize} $0 '$PLUGINSDIR\mplayer.exe'

   DetailPrint "Size File: $0 Mb"

   SetAutoClose true
SectionEnd

var MSG

Function onGUICallback
  ${If} $MSG = ${WM_LBUTTONDOWN}
    SendMessage $HWNDPARENT ${WM_NCLBUTTONDOWN} ${HTCAPTION} $0
  ${EndIf}
FunctionEnd

# End

Function .onGUIEnd
FunctionEnd
