SkillAgentSearch skills...

NativeDialogs

Adobe Air Native Extension for mobile native dialogs (IOS,Andoid) - Toast, Text Input dialog, Progress dialog, Alert dialog, multi single choice dialog + DatePicker dialog

Install / Use

/learn @mateuszmackowiak/NativeDialogs
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Native Dialogs - Adobe air Native Extension

============= Adobe Air Native Extension for mobile native dialogs (IOS,Andoid) - Toast, Text Input dialog, Progress dialog, Alert dialog, multi / single choice dialog, DatePicker dialog , PickerList dialog

##warning In iOS7 there have been changes to the api that blocks adding subiews to the alert Dialog. I plan to change it a little. For now user themes for iOS NativeProgressDialog.


NativePickerDialog (IOS/Andorid)

Displays a dialog with a scrollable list. On IOS - the native picker

Usage

	protected function onsPickerButtonClicked(event:MouseEvent):void
		{
			var picker:NativePickerDialog = new NativePickerDialog();
			var pickerlist1:PickerList = new PickerList(["HAHAHA","ATATAT","tatasd"],1);
			pickerlist1.addEventListener(NativeDialogListEvent.LIST_CHANGE,mess);
			
			var pickerlist2:PickerList = new PickerList(["affasf","sagasdg","ah5we","fdsad"],2);
			pickerlist2.addEventListener(NativeDialogListEvent.LIST_CHANGE,mess);
			
			picker.dataProvider = Vector.<PickerList>([pickerlist1,pickerlist2]);
			
			picker.addEventListener(NativeDialogEvent.CLOSED,readAllSelectedValuesFromPickers);
		
			picker.show();
		}
		
		private function readSelectedValuesFromPickerList(event:NativeDialogListEvent):void
		{
			var pickerList:PickerList = PickerList(event.target);
			trace(event);
			trace("selectedIndex: "+pickerList.selectedIndex);
			trace("selectedItem: "+pickerList.selectedItem);
		}
		
		private function readAllSelectedValuesFromPickers(event:NativeDialogEvent):void
		{
			var picker:NativePickerDialog = NativePickerDialog(event.target);
			var v:Vector.<PickerList> = picker.dataProvider;
			var pickerList:PickerList;
			trace(event);
			for (var i:int = 0; i < v.length; i++) 
			{
				pickerList = v[i];
				trace("pickerlist "+i);
				trace("selectedIndex: "+pickerList.selectedIndex);
				trace("selectedItem: "+pickerList.selectedItem);
			}
			
			picker.dispose();
		}
		
		

NativeDatePickerDialog (IOS/Andorid)

Displays a native date-picker dialog. (Now DISPLAY_MODE_DATE_AND_TIME works on Android)

Usage

	protected function showDatePicker():void
	{
		var d:NativeDatePickerDialog = new NativeDatePickerDialog();
		d.addEventListener(NativeDialogEvent.CLOSED,onCloseDialog);
		d.addEventListener(NativeDialogEvent.CANCELED,trace);
		d.addEventListener(NativeDialogEvent.OPENED,trace);
		d.addEventListener(Event.CHANGE,function(event:Event):void
		{
			var n:NativeDatePickerDialog = NativeDatePickerDialog(event.target);
			trace(event);
			trace("Date set to:"+String(n.date));
		});
		d.buttons = Vector.<String>(["Cancle","OK"]);
		d.displayMode = NativeDatePickerDialog.DISPLAY_MODE_DATE_AND_TIME;
		d.title = "DatePicker";
		d.message = "Select date:";
		d.show(false);
	}
	private function onCloseDialog(event:NativeDialogEvent):void
	{
		var m:iNativeDialog = iNativeDialog(event.target);
		m.removeEventListener(NativeDialogEvent.CLOSED,onCloseDialog);
		trace(event);
		m.dispose();//Must be called if not used again
	}

NativeAlertDialog (IOS/Android)

Displays a native alert dialog.

Usage:

private function showAlert(){
	NativeAlertDialog.showAlert( "some message" , "title" ,  Vector.<String>(["OK","Cancle"]) , 
		function someAnswerFunction(event:NativeDialogEvent):void{
			//event.preventDefault(); 
			var buttonPressed:String = event.index;// the index of the pressed button
			// IMPORTANT: 
			//default behavior is to remove the default listener "someAnswerFunction()" and to call the dispose()
			//
			trace(event);
		});

/*
	var a:NativeAlertDialog = new NativeAlertDialog();
	a.addEventListener(NativeDialogEvent.OPENED,trace);


	 // This solution (a.closeHandler) is added only in NativeAlertDialog class to create a default handler.
	 // By default the dialog will be desposed using this method
	a.closeHandler = function(e:NativeDialogEvent):void{ 
		trace(e);
	};

	a.title = "Title";
	a.message = "Some message.";
	a.closeLabel = "OK";
	a.show();

*/

NativeProgressDialog (Android / IOS)

Displays a progress dialog.

Some help provided by memeller

Available themes for IOS:

  • IOS_SVHUD_BLACK_BACKGROUND_THEME - uses SVProgressHUD
  • IOS_SVHUD_NON_BACKGROUND_THEME - uses SVProgressHUD
  • IOS_SVHUD_GRADIENT_BACKGROUND_THEME - uses SVProgressHUD
  • DEFAULT_THEME (cancleble is ignored)

Usage:

private var progressPopup:NativeProgressDialog;
private var myTimer:Timer = new Timer(100);

protected function showProgressDialog():void
{
	var p:NativeProgressDialog= new NativeProgressDialog();
	p.addEventListener(NativeDialogEvent.CLOSED,onCloseDialog);
	p.addEventListener(NativeDialogEvent.CANCELED,trace);
	p.addEventListener(NativeDialogEvent.OPENED,trace);
	p.secondaryProgress = 45;
	p.max = 50;
	p.title = "Title";
	p.message ="Message";
	p.showProgressbar();
			
	progressPopup = p;

	myTimer.addEventListener(TimerEvent.TIMER, updateProgress);
	myTimer.start();
}

private function onCloseDialog(event:NativeDialogEvent):void
{
	var m:iNativeDialog = iNativeDialog(event.target);
	m.removeEventListener(NativeDialogEvent.CLOSED,onCloseDialog);
	trace(event);
	m.dispose();
}



private function updateProgress(event:TimerEvent):void
{
	var p:int = progressPopup.progress;
	p++;
	if(p>=50){
		p = 0;
		progressPopup.hide(1);
		myTimer.removeEventListener(TimerEvent.TIMER,updateProgress);
		(event.target as Timer).stop();
	}
	else{
		if(p==25){
			progressPopup.shake();
			//progressPopup.setMessage("some message changed in between");
			//progressPopup.setTitle("some title changed in between");
		}
		try{
			progressPopup.setProgress(p);
		}catch(e:Error){
			trace(e);
		}
	}
}

NativeListDialog(Android / IOS)

Displays a native popup dialog with a multi-choice or single-choice list.

IOS uses: SBTableAlert

Usage:

	private function showMultiChoiceDialog():void{
		var m:NativeListDialog = new NativeListDialog();
			
		m.addEventListener(NativeDialogEvent.CANCELED,trace);
		m.addEventListener(NativeDialogEvent.OPENED,trace);
		m.addEventListener(NativeDialogEvent.CLOSED,readSelected);
		m.addEventListener(NativeDialogListEvent.LIST_CHANGE,function(event:NativeDialogListEvent):void
		{
			trace(event);
			var m:iNativeDialog = iNativeDialog(event.target);
			m.shake();
		});
			
		m.buttons = Vector.<String> (["OK","Cancle"]);
		m.title = "Title";
		m.message = "Message";
		m.dataProvider = Vector.<Object>(["one","two","three"]);
		m.displayMode = NativeListDialog.DISPLAY_MODE_MULTIPLE;
		m.show();
	}


	protected function showSingleChoiceDialog(event:MouseEvent):void
	{
		var m:NativeListDialog = new NativeListDialog();

		m.addEventListener(NativeDialogEvent.CANCELED,trace);
		m.addEventListener(NativeDialogEvent.OPENED,trace);
		m.addEventListener(NativeDialogEvent.CLOSED,readSelected);
		m.addEventListener(NativeDialogListEvent.LIST_CHANGE,trace);
			
		m.buttons = Vector.<String> (["OK","Cancle"]);
		m.title = "Title";
		m.message = "Message";
		m.dataProvider = Vector.<Object>(["one","two","three"]);
		m.displayMode = NativeListDialog.DISPLAY_MODE_SINGLE;
		m.show();
	}



	private function readSelected(event:NativeDialogEvent):void
	{
		var m:NativeListDialog = NativeListDialog(event.target);
			
		trace(event);
		trace("selectedIndex: "+m.selectedIndex);
		trace("selectedIndexes: "+m.selectedIndexes);
		trace("selectedItem: "+m.selectedItem);
		trace("selectedItems: "+m.selectedItems);
			
		m.dispose();
	}
	private function onCloseDialog(event:NativeDialogEvent):void
	{
		var m:iNativeDialog = iNativeDialog(event.target);
		m.removeEventListener(NativeDialogEvent.CLOSED,onCloseDialog);
		trace(event);
		m.dispose();
	}

Text input Dialog (Android /IOS)

Displays a dialog with defined text-fields..

(on IOS 5 uses default dialog) - on ios 4 don't know if Apple will not refuses ###Important:### IOS limitations - There can be only 2 buttons and 2 text inputs.

To display message specyfie for the first NativeTextField editable == false

Usage:

protected function showTextInput():void
{
	var t:NativeTextInputDialog = new NativeTextInputDialog();
	t.addEventListener(NativeDialogEvent.CANCELED,trace);
	t.addEventListener(NativeDialogEvent.CLOSED,onCloseDialog);
			
	var v:Vector.<NativeTextField> = new Vector.<NativeTextField>();
	
	//creates a message text-field	
	var message:NativeTextField = new NativeTextField(null);
	message.text = "Message";
	message.editable = false;
	v.push(message);
	
	// create text-input
	var serverAdressTextInput:NativeTextField = new NativeTextField("serverAdress");
	serverAdressTextInput.displayAsPassword = true;
	serverAdressTextInput.prompText = "prompt";
	serverAdressTextInput.softKeyboardType = SoftKeyboardType.URL;
	serverAdressTextInput.addEventListener(Event.CHANGE,function(event:Event):void{
		var tf:NativeTextField = NativeTextField(event.target);
		tf.nativeTextInputDialog.shake();
	});
	// on return click
	serverAdressTextInput.addEventListener(TextEvent.TEXT_INPUT,function(event:Event):void{
		var tf:NativeTextField = NativeTextField(event.target);
		tf.nativeTextInputDialog.hide(0);
	});
	v.push(serverAdressTextInput);
			
	t.textInputs = v;
	t.title = "Title";
	t.show();
			
}

private function onCloseDialog(event:NativeDialogEvent):void
{
	var m:iNativeDialog = iNativeDialog(event.target);
	m.removeEventListener(NativeDialogEvent.CLOSED,onCloseDialog);
	trace(event);
	m.dispose();
}

Toast (Android / IOS)

![](https://github.com/mateuszmackowiak/NativeAlert/raw/master/images/A

View on GitHub
GitHub Stars147
CategoryDevelopment
Updated3y ago
Forks61

Languages

Objective-C

Security Score

65/100

Audited on Jan 28, 2023

No findings