Initial commit
This commit is contained in:
		@@ -0,0 +1,557 @@
 | 
			
		||||
package com.jens.automation2;
 | 
			
		||||
 | 
			
		||||
import android.annotation.SuppressLint;
 | 
			
		||||
import android.app.AlertDialog;
 | 
			
		||||
import android.content.Context;
 | 
			
		||||
import android.content.DialogInterface;
 | 
			
		||||
import android.content.Intent;
 | 
			
		||||
import android.net.Uri;
 | 
			
		||||
import android.os.Build;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import android.view.MotionEvent;
 | 
			
		||||
import android.view.View;
 | 
			
		||||
import android.view.View.OnClickListener;
 | 
			
		||||
import android.view.View.OnTouchListener;
 | 
			
		||||
import android.widget.ArrayAdapter;
 | 
			
		||||
import android.widget.Button;
 | 
			
		||||
import android.widget.CompoundButton;
 | 
			
		||||
import android.widget.CompoundButton.OnCheckedChangeListener;
 | 
			
		||||
import android.widget.ListView;
 | 
			
		||||
import android.widget.TextView;
 | 
			
		||||
import android.widget.Toast;
 | 
			
		||||
import android.widget.ToggleButton;
 | 
			
		||||
 | 
			
		||||
import com.jens.automation2.AutomationService.serviceCommands;
 | 
			
		||||
import com.jens.automation2.Trigger.Trigger_Enum;
 | 
			
		||||
import com.jens.automation2.location.LocationProvider;
 | 
			
		||||
 | 
			
		||||
import java.util.Calendar;
 | 
			
		||||
 | 
			
		||||
@SuppressLint("NewApi")
 | 
			
		||||
public class ActivityMainScreen extends ActivityGeneric
 | 
			
		||||
{
 | 
			
		||||
	private static boolean guiChangeInProgress = false;
 | 
			
		||||
 | 
			
		||||
	private static ActivityMainScreen activityMainScreenInstance = null;
 | 
			
		||||
	private ToggleButton toggleService, tbLockSound;
 | 
			
		||||
	private Button bShowHelp, bPrivacy, bSettingsErase, bSettingsSetToDefault, bVolumeTest, bAddSoundLockTIme;
 | 
			
		||||
	private TextView tvActivePoi, tvClosestPoi, tvLastRule, tvMainScreenNote, tvlockSoundDuration;
 | 
			
		||||
 | 
			
		||||
	private ListView lvRuleHistory;
 | 
			
		||||
	private ArrayAdapter<Rule> ruleHistoryListViewAdapter;
 | 
			
		||||
 | 
			
		||||
	private static boolean uiUpdateRunning = false;
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void onCreate(Bundle savedInstanceState)
 | 
			
		||||
	{
 | 
			
		||||
		super.onCreate(savedInstanceState);
 | 
			
		||||
		setContentView(R.layout.main_overview_layout);
 | 
			
		||||
 | 
			
		||||
		activityMainScreenInstance = this;
 | 
			
		||||
 | 
			
		||||
		if(ActivityPermissions.needMorePermissions(ActivityMainScreen.this))
 | 
			
		||||
		{
 | 
			
		||||
			Intent permissionsIntent = new Intent(ActivityMainScreen.this, ActivityPermissions.class);
 | 
			
		||||
			startActivityForResult(permissionsIntent, 7000);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		Settings.readFromPersistentStorage(this);
 | 
			
		||||
 | 
			
		||||
		guiChangeInProgress = true;
 | 
			
		||||
 | 
			
		||||
		tvActivePoi = (TextView) findViewById(R.id.tvActivePoi);
 | 
			
		||||
		tvClosestPoi = (TextView) findViewById(R.id.tvClosestPoi);
 | 
			
		||||
		lvRuleHistory = (ListView) findViewById(R.id.lvRuleHistory);
 | 
			
		||||
		tvLastRule = (TextView) findViewById(R.id.tvTimeFrameHelpText);
 | 
			
		||||
		tvMainScreenNote = (TextView) findViewById(R.id.tvMainScreenNote);
 | 
			
		||||
		tvlockSoundDuration = (TextView)findViewById(R.id.tvlockSoundDuration);
 | 
			
		||||
		tbLockSound = (ToggleButton) findViewById(R.id.tbLockSound);
 | 
			
		||||
		toggleService = (ToggleButton) findViewById(R.id.tbArmMastListener);
 | 
			
		||||
		toggleService.setChecked(AutomationService.isMyServiceRunning(this));
 | 
			
		||||
		toggleService.setOnCheckedChangeListener(new OnCheckedChangeListener()
 | 
			
		||||
		{
 | 
			
		||||
			@Override
 | 
			
		||||
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
 | 
			
		||||
			{
 | 
			
		||||
				if (!ActivityMainScreen.this.uiUpdateRunning)
 | 
			
		||||
				{
 | 
			
		||||
					if (toggleService.isChecked())
 | 
			
		||||
					{
 | 
			
		||||
						startAutomationService(getBaseContext(), false);
 | 
			
		||||
					} else
 | 
			
		||||
					{
 | 
			
		||||
						stopAutomationService();
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		tvMainScreenNote.setOnClickListener(new OnClickListener()
 | 
			
		||||
		{
 | 
			
		||||
			@Override
 | 
			
		||||
			public void onClick(View v)
 | 
			
		||||
			{
 | 
			
		||||
				Intent intent = new Intent(ActivityMainScreen.this, ActivityPermissions.class);
 | 
			
		||||
				startActivityForResult(intent, ActivityPermissions.requestCodeForPermissions);
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		tbLockSound.setOnCheckedChangeListener(new OnCheckedChangeListener()
 | 
			
		||||
		{
 | 
			
		||||
			@Override
 | 
			
		||||
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
 | 
			
		||||
			{
 | 
			
		||||
				Settings.lockSoundChanges = isChecked;
 | 
			
		||||
 | 
			
		||||
				if(!isChecked)
 | 
			
		||||
				{
 | 
			
		||||
					AutomationService.getInstance().nullLockSoundChangesEnd();
 | 
			
		||||
					updateMainScreen();
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if (!guiChangeInProgress)
 | 
			
		||||
					Settings.writeSettings(ActivityMainScreen.this);
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		Button bSettings = (Button) findViewById(R.id.bSettings);
 | 
			
		||||
		bSettings.setOnClickListener(new OnClickListener()
 | 
			
		||||
		{
 | 
			
		||||
			@Override
 | 
			
		||||
			public void onClick(View v)
 | 
			
		||||
			{
 | 
			
		||||
				Intent myIntent = new Intent(ActivityMainScreen.this, ActivitySettings.class);
 | 
			
		||||
				startActivityForResult(myIntent, 6000);
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		Button bVolumeTest = (Button) findViewById(R.id.bVolumeTest);
 | 
			
		||||
		bVolumeTest.setOnClickListener(new OnClickListener()
 | 
			
		||||
		{
 | 
			
		||||
			@Override
 | 
			
		||||
			public void onClick(View v)
 | 
			
		||||
			{
 | 
			
		||||
				Intent intent = new Intent(ActivityMainScreen.this, ActivityVolumeTest.class);
 | 
			
		||||
				startActivity(intent);
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		bShowHelp = (Button) findViewById(R.id.bShowHelp);
 | 
			
		||||
		bShowHelp.setOnClickListener(new OnClickListener()
 | 
			
		||||
		{
 | 
			
		||||
 | 
			
		||||
			@Override
 | 
			
		||||
			public void onClick(View v)
 | 
			
		||||
			{
 | 
			
		||||
				Intent showHelpIntent = new Intent(ActivityMainScreen.this, ActivityHelp.class);
 | 
			
		||||
				startActivity(showHelpIntent);
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		bPrivacy = (Button) findViewById(R.id.bPrivacy);
 | 
			
		||||
		bPrivacy.setOnClickListener(new OnClickListener()
 | 
			
		||||
		{
 | 
			
		||||
			@Override
 | 
			
		||||
			public void onClick(View v)
 | 
			
		||||
			{
 | 
			
		||||
				AlertDialog.Builder builder = new AlertDialog.Builder(ActivityMainScreen.this);
 | 
			
		||||
				builder.setMessage(getResources().getString(R.string.privacyConfirmationText));
 | 
			
		||||
				builder.setPositiveButton(getResources().getString(R.string.yes), new DialogInterface.OnClickListener()
 | 
			
		||||
				{
 | 
			
		||||
					@Override
 | 
			
		||||
					public void onClick(DialogInterface dialog, int which)
 | 
			
		||||
					{
 | 
			
		||||
						openPrivacyPolicy();
 | 
			
		||||
					}
 | 
			
		||||
				});
 | 
			
		||||
				builder.setNegativeButton(getResources().getString(R.string.no), null);
 | 
			
		||||
				builder.create().show();
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
		
 | 
			
		||||
		/*bSettingsErase = (Button)findViewById(R.id.bSettingsErase);
 | 
			
		||||
		bSettingsErase.setOnClickListener(new OnClickListener()
 | 
			
		||||
		{			
 | 
			
		||||
			@Override
 | 
			
		||||
			public void onClick(View v)
 | 
			
		||||
			{
 | 
			
		||||
				getEraseSettingsDialog(ActivityMainScreen.this).show();
 | 
			
		||||
			}
 | 
			
		||||
		});*/
 | 
			
		||||
		bSettingsSetToDefault = (Button) findViewById(R.id.bSettingsSetToDefault);
 | 
			
		||||
		bSettingsSetToDefault.setOnClickListener(new OnClickListener()
 | 
			
		||||
		{
 | 
			
		||||
			@Override
 | 
			
		||||
			public void onClick(View v)
 | 
			
		||||
			{
 | 
			
		||||
				getDefaultSettingsDialog(ActivityMainScreen.this).show();
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		lvRuleHistory.setOnTouchListener(new OnTouchListener()
 | 
			
		||||
		{
 | 
			
		||||
			@Override
 | 
			
		||||
			public boolean onTouch(View v, MotionEvent event)
 | 
			
		||||
			{
 | 
			
		||||
				v.getParent().requestDisallowInterceptTouchEvent(true);
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		bAddSoundLockTIme = (Button)findViewById(R.id.bAddSoundLockTIme);
 | 
			
		||||
		bAddSoundLockTIme.setText("+" + Settings.lockSoundChangesInterval + " min");
 | 
			
		||||
		bAddSoundLockTIme.setOnClickListener(new OnClickListener()
 | 
			
		||||
		{
 | 
			
		||||
			@Override
 | 
			
		||||
			public void onClick(View view)
 | 
			
		||||
			{
 | 
			
		||||
				if(AutomationService.isMyServiceRunning(ActivityMainScreen.this))
 | 
			
		||||
                {
 | 
			
		||||
                    AutomationService.getInstance().lockSoundChangesEndAddTime();
 | 
			
		||||
                    ActivityMainScreen.updateMainScreen();
 | 
			
		||||
                }
 | 
			
		||||
				else
 | 
			
		||||
				    Toast.makeText(ActivityMainScreen.this, getResources().getString(R.string.serviceNotRunning), Toast.LENGTH_LONG).show();
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		ruleHistoryListViewAdapter = new ArrayAdapter<Rule>(this, R.layout.text_view_for_poi_listview_mediumtextsize, Rule.getRuleRunHistory());
 | 
			
		||||
 | 
			
		||||
		if (PointOfInterest.getPointOfInterestCollection() == null | PointOfInterest.getPointOfInterestCollection().size() == 0)
 | 
			
		||||
			PointOfInterest.loadPoisFromFile();
 | 
			
		||||
		if (Rule.getRuleCollection() == null | Rule.getRuleCollection().size() == 0)
 | 
			
		||||
			Rule.readFromFile();
 | 
			
		||||
 | 
			
		||||
		ActivityMainScreen.updateMainScreen();
 | 
			
		||||
 | 
			
		||||
		this.storeServiceReferenceInVariable();
 | 
			
		||||
 | 
			
		||||
		guiChangeInProgress = false;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private static AlertDialog getEraseSettingsDialog(final Context context)
 | 
			
		||||
	{
 | 
			
		||||
		AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
 | 
			
		||||
		alertDialogBuilder.setTitle(context.getResources().getString(R.string.areYouSure));
 | 
			
		||||
		alertDialogBuilder.setPositiveButton(context.getResources().getString(R.string.yes), new DialogInterface.OnClickListener()
 | 
			
		||||
		{
 | 
			
		||||
			@Override
 | 
			
		||||
			public void onClick(DialogInterface dialog, int which)
 | 
			
		||||
			{
 | 
			
		||||
				if (Settings.eraseSettings(context))
 | 
			
		||||
					Toast.makeText(context, context.getResources().getString(R.string.settingsErased), Toast.LENGTH_LONG).show();
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
		alertDialogBuilder.setNegativeButton(context.getResources().getString(R.string.no), null);
 | 
			
		||||
		AlertDialog alertDialog = alertDialogBuilder.create();
 | 
			
		||||
 | 
			
		||||
		return alertDialog;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private static AlertDialog getDefaultSettingsDialog(final Context context)
 | 
			
		||||
	{
 | 
			
		||||
		AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
 | 
			
		||||
		alertDialogBuilder.setTitle(context.getResources().getString(R.string.areYouSure));
 | 
			
		||||
		alertDialogBuilder.setPositiveButton(context.getResources().getString(R.string.yes), new DialogInterface.OnClickListener()
 | 
			
		||||
		{
 | 
			
		||||
			@Override
 | 
			
		||||
			public void onClick(DialogInterface dialog, int which)
 | 
			
		||||
			{
 | 
			
		||||
				if (Settings.initializeSettings(context, true))
 | 
			
		||||
					Toast.makeText(context, context.getResources().getString(R.string.settingsSetToDefault), Toast.LENGTH_LONG).show();
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
		alertDialogBuilder.setNegativeButton(context.getResources().getString(R.string.no), null);
 | 
			
		||||
		AlertDialog alertDialog = alertDialogBuilder.create();
 | 
			
		||||
 | 
			
		||||
		return alertDialog;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static ActivityMainScreen getActivityMainScreenInstance()
 | 
			
		||||
	{
 | 
			
		||||
		return activityMainScreenInstance;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static void updateMainScreen()
 | 
			
		||||
	{
 | 
			
		||||
		Miscellaneous.logEvent("i", "MainScreen", "Request to update notification.", 5);
 | 
			
		||||
 | 
			
		||||
		if (activityMainScreenInstance != null)
 | 
			
		||||
		{
 | 
			
		||||
			if(ActivityPermissions.needMorePermissions(activityMainScreenInstance))
 | 
			
		||||
			{
 | 
			
		||||
				activityMainScreenInstance.tvMainScreenNote.setText(R.string.mainScreenPermissionNote);
 | 
			
		||||
				activityMainScreenInstance.tvMainScreenNote.setVisibility(View.VISIBLE);
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				activityMainScreenInstance.tvMainScreenNote.setText("");
 | 
			
		||||
				activityMainScreenInstance.tvMainScreenNote.setVisibility(View.GONE);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (AutomationService.isMyServiceRunning(activityMainScreenInstance))
 | 
			
		||||
			{
 | 
			
		||||
				Miscellaneous.logEvent("i", "MainScreen", "Service is running. Updating mainscreen with this info.", 5);
 | 
			
		||||
				uiUpdateRunning = true;
 | 
			
		||||
				activityMainScreenInstance.toggleService.setChecked(true);
 | 
			
		||||
				uiUpdateRunning = false;
 | 
			
		||||
				//		if(activityMainScreenInstance.hasWindowFocus())
 | 
			
		||||
				//		{
 | 
			
		||||
				try
 | 
			
		||||
				{
 | 
			
		||||
					PointOfInterest activePoi = PointOfInterest.getActivePoi();
 | 
			
		||||
					if (activePoi == null)
 | 
			
		||||
					{
 | 
			
		||||
						PointOfInterest closestPoi = PointOfInterest.getClosestPOI(LocationProvider.getInstance().getCurrentLocation());
 | 
			
		||||
						activityMainScreenInstance.tvActivePoi.setText("none");
 | 
			
		||||
						activityMainScreenInstance.tvClosestPoi.setText(closestPoi.getName());
 | 
			
		||||
					}
 | 
			
		||||
					else
 | 
			
		||||
					{
 | 
			
		||||
						activityMainScreenInstance.tvActivePoi.setText(activePoi.getName());
 | 
			
		||||
						activityMainScreenInstance.tvClosestPoi.setText("n./a.");
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				catch (NullPointerException e)
 | 
			
		||||
				{
 | 
			
		||||
					if (PointOfInterest.getPointOfInterestCollection().size() > 0)
 | 
			
		||||
					{
 | 
			
		||||
						if(
 | 
			
		||||
								Rule.isAnyRuleUsing(Trigger_Enum.pointOfInterest)
 | 
			
		||||
										&&
 | 
			
		||||
								ActivityPermissions.havePermission(ActivityPermissions.permissionNameLocationCoarse, AutomationService.getInstance())
 | 
			
		||||
										&&
 | 
			
		||||
								ActivityPermissions.havePermission(ActivityPermissions.permissionNameLocationFine, AutomationService.getInstance())
 | 
			
		||||
						  )
 | 
			
		||||
							activityMainScreenInstance.tvActivePoi.setText(activityMainScreenInstance.getResources().getString(R.string.stillGettingPosition));
 | 
			
		||||
						else
 | 
			
		||||
							activityMainScreenInstance.tvActivePoi.setText(activityMainScreenInstance.getResources().getString(R.string.locationEngineNotActive));
 | 
			
		||||
 | 
			
		||||
						activityMainScreenInstance.tvClosestPoi.setText("n./a.");
 | 
			
		||||
					}
 | 
			
		||||
					else
 | 
			
		||||
					{
 | 
			
		||||
						activityMainScreenInstance.tvActivePoi.setText(activityMainScreenInstance.getResources().getString(R.string.noPoisDefinedShort));
 | 
			
		||||
						activityMainScreenInstance.tvClosestPoi.setText("n./a.");
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				try
 | 
			
		||||
				{
 | 
			
		||||
					activityMainScreenInstance.tvLastRule.setText(Rule.getLastActivatedRule().getName() + " " + activityMainScreenInstance.getResources().getString(R.string.at) + " " + Rule.getLastActivatedRuleActivationTime().toLocaleString());
 | 
			
		||||
					activityMainScreenInstance.updateListView();
 | 
			
		||||
				}
 | 
			
		||||
				catch (Exception e)
 | 
			
		||||
				{
 | 
			
		||||
					activityMainScreenInstance.tvLastRule.setText("n./a.");
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				Miscellaneous.logEvent("i", "MainScreen", "Service not running. Updating mainscreen with this info.", 5);
 | 
			
		||||
				activityMainScreenInstance.toggleService.setChecked(false);
 | 
			
		||||
				activityMainScreenInstance.tvActivePoi.setText(activityMainScreenInstance.getResources().getString(R.string.serviceNotRunning));
 | 
			
		||||
				activityMainScreenInstance.tvClosestPoi.setText("");
 | 
			
		||||
				activityMainScreenInstance.tvLastRule.setText("");
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
//			uiUpdateRunning = true;
 | 
			
		||||
			if(AutomationService.isMyServiceRunning(ActivityMainScreen.getActivityMainScreenInstance()) && AutomationService.getInstance() != null)
 | 
			
		||||
			{
 | 
			
		||||
				AutomationService.getInstance().checkLockSoundChangesTimeElapsed();
 | 
			
		||||
 | 
			
		||||
				Calendar end = AutomationService.getInstance().getLockSoundChangesEnd();
 | 
			
		||||
				activityMainScreenInstance.tbLockSound.setChecked(end != null);
 | 
			
		||||
				activityMainScreenInstance.tbLockSound.setEnabled(end != null);
 | 
			
		||||
 | 
			
		||||
				if(end != null)
 | 
			
		||||
				{
 | 
			
		||||
					Calendar now = Calendar.getInstance();
 | 
			
		||||
					long millis = end.getTimeInMillis() - now.getTimeInMillis();
 | 
			
		||||
					long minutes = millis/1000/60;
 | 
			
		||||
					if(minutes < 60)
 | 
			
		||||
						activityMainScreenInstance.tvlockSoundDuration.setText(String.valueOf(minutes + " min..."));
 | 
			
		||||
					else
 | 
			
		||||
					{
 | 
			
		||||
						double hours = (double)minutes / 60.0;
 | 
			
		||||
						activityMainScreenInstance.tvlockSoundDuration.setText(String.valueOf(Math.round(hours * 100.0) / 100.0) + " h...");
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
					activityMainScreenInstance.tvlockSoundDuration.setText(String.valueOf(""));
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				activityMainScreenInstance.tbLockSound.setChecked(false);
 | 
			
		||||
				activityMainScreenInstance.tbLockSound.setEnabled(false);
 | 
			
		||||
				activityMainScreenInstance.tvlockSoundDuration.setText("");
 | 
			
		||||
			}
 | 
			
		||||
			Settings.writeSettings(activityMainScreenInstance);
 | 
			
		||||
//			uiUpdateRunning = false;
 | 
			
		||||
//		}
 | 
			
		||||
//		else
 | 
			
		||||
//			Miscellaneous.logEvent("i", "ActivityMainScreen", "Window doesn't have focus. We're not updating anything.", 5);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
			Miscellaneous.logEvent("i", "ActivityMainScreen", "Activity not running. No need to update.", 5);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void onActivityResult(int requestCode, int resultCode, Intent data)
 | 
			
		||||
	{
 | 
			
		||||
		super.onActivityResult(requestCode, resultCode, data);
 | 
			
		||||
 | 
			
		||||
//		Miscellaneous.logEvent("i", "ListView", "Notifying ListViewAdapter", 4);
 | 
			
		||||
 | 
			
		||||
		if (AutomationService.isMyServiceRunning(this))
 | 
			
		||||
			bindToService();
 | 
			
		||||
 | 
			
		||||
		switch (requestCode)
 | 
			
		||||
		{
 | 
			
		||||
			case ActivityPermissions.requestCodeForPermissions:
 | 
			
		||||
				updateMainScreen();
 | 
			
		||||
				break;
 | 
			
		||||
			case 6000: //settings
 | 
			
		||||
				Settings.readFromPersistentStorage(this);
 | 
			
		||||
 | 
			
		||||
				if (boundToService && AutomationService.isMyServiceRunning(this))
 | 
			
		||||
					myAutomationService.serviceInterface(serviceCommands.reloadSettings);
 | 
			
		||||
 | 
			
		||||
				if(AutomationService.isMyServiceRunning(ActivityMainScreen.this))
 | 
			
		||||
					Toast.makeText(this, getResources().getString(R.string.settingsWillTakeTime), Toast.LENGTH_LONG).show();
 | 
			
		||||
 | 
			
		||||
				break;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (AutomationService.isMyServiceRunning(this))
 | 
			
		||||
		{
 | 
			
		||||
			// Let service reload via binding interface.
 | 
			
		||||
			if (boundToService)
 | 
			
		||||
			{
 | 
			
		||||
				myAutomationService.serviceInterface(serviceCommands.updateNotification); //in case names got changed.
 | 
			
		||||
				unBindFromService();
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			// Let service reload classically.
 | 
			
		||||
			AutomationService service = AutomationService.getInstance();
 | 
			
		||||
			if (service != null)
 | 
			
		||||
				service.applySettingsAndRules();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static void startAutomationService(Context context, boolean startAtBoot)
 | 
			
		||||
	{
 | 
			
		||||
		try
 | 
			
		||||
		{
 | 
			
		||||
			if (Rule.getRuleCollection().size() > 0)
 | 
			
		||||
			{
 | 
			
		||||
				if (!AutomationService.isMyServiceRunning(context))
 | 
			
		||||
				{
 | 
			
		||||
//					if(myServiceIntent == null)	//do we need that line?????
 | 
			
		||||
					myServiceIntent = new Intent(context, AutomationService.class);
 | 
			
		||||
					myServiceIntent.putExtra("startAtBoot", startAtBoot);
 | 
			
		||||
					context.startService(myServiceIntent);
 | 
			
		||||
				} else
 | 
			
		||||
					Miscellaneous.logEvent("w", "Service", context.getResources().getString(R.string.logServiceAlreadyRunning), 3);
 | 
			
		||||
			} else
 | 
			
		||||
			{
 | 
			
		||||
				Toast.makeText(context, context.getResources().getString(R.string.serviceWontStart), Toast.LENGTH_LONG).show();
 | 
			
		||||
				activityMainScreenInstance.toggleService.setChecked(false);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		catch (NullPointerException ne)
 | 
			
		||||
		{
 | 
			
		||||
			Toast.makeText(context, context.getResources().getString(R.string.serviceWontStart), Toast.LENGTH_LONG).show();
 | 
			
		||||
			activityMainScreenInstance.toggleService.setChecked(false);
 | 
			
		||||
		}
 | 
			
		||||
		catch (Exception e)
 | 
			
		||||
		{
 | 
			
		||||
			Toast.makeText(context, "Error: " + e.getMessage(), Toast.LENGTH_LONG).show();
 | 
			
		||||
			activityMainScreenInstance.toggleService.setChecked(false);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private void stopAutomationService()
 | 
			
		||||
	{
 | 
			
		||||
		if (myServiceIntent == null)
 | 
			
		||||
			myServiceIntent = new Intent(this, AutomationService.class);
 | 
			
		||||
		stopService(myServiceIntent);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void onRestart()
 | 
			
		||||
	{
 | 
			
		||||
		super.onRestart();
 | 
			
		||||
		toggleService.setChecked(AutomationService.isMyServiceRunning(this));
 | 
			
		||||
		ActivityMainScreen.updateMainScreen();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void onStart()
 | 
			
		||||
	{
 | 
			
		||||
		toggleService.setChecked(AutomationService.isMyServiceRunning(this));
 | 
			
		||||
		ActivityMainScreen.updateMainScreen();
 | 
			
		||||
		super.onStart();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void onResume()
 | 
			
		||||
	{
 | 
			
		||||
		super.onResume();
 | 
			
		||||
		toggleService.setChecked(AutomationService.isMyServiceRunning(this));
 | 
			
		||||
		ActivityMainScreen.updateMainScreen();
 | 
			
		||||
 | 
			
		||||
		if(Build.VERSION.SDK_INT >= 28 && !Settings.noticeAndroid9MicrophoneShown && Rule.isAnyRuleUsing(Trigger_Enum.noiseLevel))
 | 
			
		||||
		{
 | 
			
		||||
			Settings.noticeAndroid9MicrophoneShown = true;
 | 
			
		||||
			Settings.writeSettings(ActivityMainScreen.this);
 | 
			
		||||
			Miscellaneous.messageBox(getResources().getString(R.string.app_name), getResources().getString(R.string.android9RecordAudioNotice) + " " + getResources().getString(R.string.messageNotShownAgain), ActivityMainScreen.this).show();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if(Build.VERSION.SDK_INT >= 29 && !Settings.noticeAndroid10WifiShown && Rule.isAnyRuleUsing(Action.Action_Enum.setWifi))
 | 
			
		||||
		{
 | 
			
		||||
			Settings.noticeAndroid10WifiShown = true;
 | 
			
		||||
			Settings.writeSettings(ActivityMainScreen.this);
 | 
			
		||||
			Miscellaneous.messageBox(getResources().getString(R.string.app_name), getResources().getString(R.string.android10WifiToggleNotice) + " " + getResources().getString(R.string.messageNotShownAgain), ActivityMainScreen.this).show();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void onDestroy()
 | 
			
		||||
	{
 | 
			
		||||
		super.onDestroy();
 | 
			
		||||
		activityMainScreenInstance = null;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	private void openPrivacyPolicy()
 | 
			
		||||
	{
 | 
			
		||||
		String privacyPolicyUrl = "http://server47.de/automation/privacy.html";
 | 
			
		||||
		
 | 
			
		||||
        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(privacyPolicyUrl));
 | 
			
		||||
        startActivity(browserIntent);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private void updateListView()
 | 
			
		||||
	{
 | 
			
		||||
		Miscellaneous.logEvent("i", "ListView", "Attempting to update lvRuleHistory", 4);
 | 
			
		||||
		try
 | 
			
		||||
		{
 | 
			
		||||
			if (lvRuleHistory.getAdapter() == null)
 | 
			
		||||
				lvRuleHistory.setAdapter(ruleHistoryListViewAdapter);
 | 
			
		||||
 | 
			
		||||
			ruleHistoryListViewAdapter.notifyDataSetChanged();
 | 
			
		||||
		}
 | 
			
		||||
		catch (NullPointerException e)
 | 
			
		||||
		{
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static void showMessageBox(String title, String text)
 | 
			
		||||
	{
 | 
			
		||||
		Miscellaneous.messageBox(title, text, ActivityMainScreen.getActivityMainScreenInstance());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1394
									
								
								app/src/fdroidFlavor/java/com/jens/automation2/Rule.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1394
									
								
								app/src/fdroidFlavor/java/com/jens/automation2/Rule.java
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user