package com.aberdyne.droidnavi; import java.util.Date; import pctelelog.ContactInfo; import pctelelog.PhoneNumber; import pctelelog.ContactInfo.Email; import pctelelog.ContactInfo.Name; import pctelelog.events.IncomingCallEvent; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.SharedPreferences; import android.view.View; import com.aberdyne.droidnavi.client.MulticastSender; import com.aberdyne.droidnavi.client.NetworkDispatch; public class MulticastTestDialog { public static void showDialog(final Context context, final MulticastTestCallback callback) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("Multicast Network Test") .setMessage("First, make sure the desktop app is running.\n" + "Next, press \"Test\".\n" + "If you receive an Incoming Call event with the name \"Multicast Test\", then you can use Multicast.\n\n" + "Did you see the multicast test event?") .setNegativeButton("No", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { setNetworkTestResult(context, false); callback.onTestFinish(); } }) .setPositiveButton("Yes", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { setNetworkTestResult(context, true); callback.onTestFinish(); } }) .setNeutralButton("Test", new OnClickListener() { public void onClick(DialogInterface dialog, int which) {}}); AlertDialog alert = builder.create(); alert.show(); alert.getButton(DialogInterface.BUTTON_NEUTRAL).setOnClickListener(new View.OnClickListener() { public void onClick(View v) { fireMulticastTest(); } }); } private static void setNetworkTestResult(Context context, boolean result) { SharedPreferences pref = context.getSharedPreferences("settings", Context.MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putBoolean(NetworkDispatch.MULTI_IS_NETWORK_TESTED_SETTING, true); editor.putBoolean(NetworkDispatch.MULTI_NETWORK_TEST_RESULT_SETTING, result); editor.commit(); } private static void fireMulticastTest() { ContactInfo info = new ContactInfo( new Name("Multicast Test", "Multicast", "Test"), new PhoneNumber("000-000-0000"), new Email("multicast_test")); IncomingCallEvent event = new IncomingCallEvent(new Date(), info); MulticastSender.sendEvent(event); } interface MulticastTestCallback { public void onTestFinish(); } }