diff --git a/launcher/src/main/java/org/cosinus/launchertv/Setup.java b/launcher/src/main/java/org/cosinus/launchertv/Setup.java index 5b2f9da..6444409 100644 --- a/launcher/src/main/java/org/cosinus/launchertv/Setup.java +++ b/launcher/src/main/java/org/cosinus/launchertv/Setup.java @@ -104,6 +104,15 @@ public boolean showDate() { return (true); } + public boolean showBattery() { + try { + return (getPreferences().getBoolean(Preferences.PREFERENCE_SHOW_BATTERY, false)); + } catch (Exception e) { + e.printStackTrace(); + } + return (false); + } + public boolean showNames() { try { return (getPreferences().getBoolean(Preferences.PREFERENCE_SHOW_NAME, true)); diff --git a/launcher/src/main/java/org/cosinus/launchertv/activities/Preferences.java b/launcher/src/main/java/org/cosinus/launchertv/activities/Preferences.java index ef27669..757e7bd 100644 --- a/launcher/src/main/java/org/cosinus/launchertv/activities/Preferences.java +++ b/launcher/src/main/java/org/cosinus/launchertv/activities/Preferences.java @@ -39,6 +39,7 @@ public class Preferences extends PreferenceActivity { public static final String PREFERENCE_TRANSPARENCY = "preference_transparency"; public static final String PREFERENCE_SCREEN_ON = "preference_screen_always_on"; public static final String PREFERENCE_SHOW_DATE = "preference_show_date"; + public static final String PREFERENCE_SHOW_BATTERY = "preference_show_battery"; public static final String PREFERENCE_GRID_X = "preference_grid_x"; public static final String PREFERENCE_GRID_Y = "preference_grid_y"; public static final String PREFERENCE_SHOW_NAME = "preference_show_name"; diff --git a/launcher/src/main/java/org/cosinus/launchertv/fragments/ApplicationFragment.java b/launcher/src/main/java/org/cosinus/launchertv/fragments/ApplicationFragment.java index 227d944..8cc8525 100644 --- a/launcher/src/main/java/org/cosinus/launchertv/fragments/ApplicationFragment.java +++ b/launcher/src/main/java/org/cosinus/launchertv/fragments/ApplicationFragment.java @@ -18,11 +18,14 @@ package org.cosinus.launchertv.fragments; import android.app.Activity; +import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.os.BatteryManager; import android.os.Build; import android.os.Bundle; import android.os.Handler; @@ -32,6 +35,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; @@ -60,6 +64,20 @@ public class ApplicationFragment extends Fragment implements View.OnClickListene private TextView mDate; private DateFormat mTimeFormat; private DateFormat mDateFormat; + private TextView mBatteryLevel; + private ImageView mBatteryIcon; + private BroadcastReceiver mBatteryChangedReceiver = new BroadcastReceiver(){ + @Override + public void onReceive(Context context, Intent intent) { + final int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); + mBatteryLevel.setText( + String.format(getResources().getString(R.string.battery_level_text), level) + ); + final int batteryIconId = intent.getIntExtra(BatteryManager.EXTRA_ICON_SMALL, 0); + mBatteryIcon.setImageDrawable(getResources().getDrawable(batteryIconId)); + } + }; + private boolean mBatteryChangedReceiverRegistered = false; private final Handler mHandler = new Handler(); private final Runnable mTimerTick = new Runnable() { @@ -96,6 +114,9 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa mGridView = view.findViewById(R.id.application_grid); mClock = (TextView) view.findViewById(R.id.clock); mDate = (TextView) view.findViewById(R.id.date); + final LinearLayout batteryLayout = (LinearLayout) view.findViewById(R.id.battery_layout); + mBatteryLevel = (TextView) view.findViewById(R.id.battery_level); + mBatteryIcon = (ImageView) view.findViewById(R.id.battery_icon); mTimeFormat = android.text.format.DateFormat.getTimeFormat(getActivity()); mDateFormat = android.text.format.DateFormat.getLongDateFormat(getActivity()); @@ -106,6 +127,18 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa if (mSetup.showDate() == false) mDate.setVisibility(View.GONE); + if (mSetup.showBattery()) { + batteryLayout.setVisibility(View.VISIBLE); + getActivity().registerReceiver(this.mBatteryChangedReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); + mBatteryChangedReceiverRegistered = true; + } else { + batteryLayout.setVisibility(View.INVISIBLE); + if (mBatteryChangedReceiverRegistered) { + getActivity().unregisterReceiver(this.mBatteryChangedReceiver); + mBatteryChangedReceiverRegistered = false; + } + } + mSettings.setOnClickListener(this); mGridView.setOnClickListener(this); @@ -229,6 +262,10 @@ private void updateApplications() { private void restartActivity() { + if (mBatteryChangedReceiverRegistered) { + getActivity().unregisterReceiver(mBatteryChangedReceiver); + mBatteryChangedReceiverRegistered = false; + } Intent intent = getActivity().getIntent(); getActivity().finish(); startActivity(intent); @@ -273,6 +310,10 @@ private void setApplication(PackageManager pm, ApplicationView app, String packa public void onStart() { super.onStart(); setClock(); + if (mSetup.showBattery() && !mBatteryChangedReceiverRegistered) { + getActivity().registerReceiver(this.mBatteryChangedReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); + mBatteryChangedReceiverRegistered = true; + } mHandler.postDelayed(mTimerTick, 1000); } @@ -280,6 +321,9 @@ public void onStart() { public void onPause() { super.onPause(); mHandler.removeCallbacks(mTimerTick); + if (mBatteryChangedReceiverRegistered) { + getActivity().unregisterReceiver(this.mBatteryChangedReceiver); + } } private void setClock() { diff --git a/launcher/src/main/res/layout/fragment_application.xml b/launcher/src/main/res/layout/fragment_application.xml index 4a5eb76..5bb32f2 100644 --- a/launcher/src/main/res/layout/fragment_application.xml +++ b/launcher/src/main/res/layout/fragment_application.xml @@ -39,10 +39,12 @@ android:src="@drawable/ic_apps" tools:ignore="ContentDescription"/> - + + + + + + + + + + + Icon is locked by settings Prevent icons to be accidentally removed Lock icons + Zobrazit informace o baterii + Zobrazit stav baterie a stav na domovské obrazovce diff --git a/launcher/src/main/res/values-fr/strings.xml b/launcher/src/main/res/values-fr/strings.xml index 739bc5d..ee17399 100644 --- a/launcher/src/main/res/values-fr/strings.xml +++ b/launcher/src/main/res/values-fr/strings.xml @@ -44,4 +44,6 @@ Icone verrouillée (cf. Préférences) Empêcher la suppression accidentelle des icones Verrouiller les icones + Afficher les informations sur la batterie + Afficher le niveau et l\'état de la batterie sur l\'écran d\'accueil \ No newline at end of file diff --git a/launcher/src/main/res/values-sk/strings.xml b/launcher/src/main/res/values-sk/strings.xml index e483f07..88bbf06 100644 --- a/launcher/src/main/res/values-sk/strings.xml +++ b/launcher/src/main/res/values-sk/strings.xml @@ -46,4 +46,6 @@ Icon is locked by settings Prevent icons to be accidentally removed Lock icons + Zobraziť informácie o batérii + Zobraziť stav batérie a stav na domovskej obrazovke diff --git a/launcher/src/main/res/values/notrans.xml b/launcher/src/main/res/values/notrans.xml index e5a54e0..b4a7d88 100644 --- a/launcher/src/main/res/values/notrans.xml +++ b/launcher/src/main/res/values/notrans.xml @@ -19,6 +19,7 @@ Simple TV Launcher Google+ 00:00 + 42% Sunday 1, January Application 0.4 diff --git a/launcher/src/main/res/values/strings.xml b/launcher/src/main/res/values/strings.xml index 036aa4d..f249f47 100644 --- a/launcher/src/main/res/values/strings.xml +++ b/launcher/src/main/res/values/strings.xml @@ -29,7 +29,10 @@ System settings Open system settings Display the date bellow time + Display battery level and status in home screen Display date + Display battery information + %1d%% Display applications names on main screen Display names Icons margins X diff --git a/launcher/src/main/res/xml/preferences.xml b/launcher/src/main/res/xml/preferences.xml index 4c6450f..b8f63e2 100644 --- a/launcher/src/main/res/xml/preferences.xml +++ b/launcher/src/main/res/xml/preferences.xml @@ -27,6 +27,11 @@ android:key="preference_show_date" android:summary="@string/summary_show_date" android:title="@string/title_show_date"/> +