diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 70beaade8b..8df3c2727b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -53,9 +53,14 @@ + android:parentActivityName=".ActivityMain"> + + + + + + + + + + + . + + Copyright 2018 by Marcel Bokhorst (M66B) +*/ + +import android.annotation.TargetApi; +import android.content.Intent; +import android.os.Build; +import android.os.IBinder; +import android.service.quicksettings.Tile; +import android.service.quicksettings.TileService; +import android.util.Log; + +import java.util.List; + +import androidx.lifecycle.LifecycleService; +import androidx.lifecycle.Observer; + +@TargetApi(Build.VERSION_CODES.N) +public class ServiceTile extends TileService { + LifecycleService owner = new LifecycleService(); + + @Override + public void onCreate() { + owner.onCreate(); + super.onCreate(); + } + + @Override + public IBinder onBind(Intent intent) { + owner.onBind(intent); + return super.onBind(intent); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + owner.onStartCommand(intent, flags, startId); + return super.onStartCommand(intent, flags, startId); + } + + @Override + public void onDestroy() { + owner.onDestroy(); + super.onDestroy(); + } + + public void onStartListening() { + Log.i(Helper.TAG, "Tile start"); + + DB db = DB.getInstance(this); + db.message().liveUnseenUnified().observe(owner, new Observer>() { + @Override + public void onChanged(List messages) { + Tile tile = getQsTile(); + if (tile != null) { + tile.setState(messages.size() > 0 ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE); + tile.setLabel(getResources().getQuantityString( + R.plurals.title_tile_unseen, messages.size(), messages.size())); + tile.updateTile(); + } + } + }); + } + + public void onStopListening() { + Log.i(Helper.TAG, "Tile stop"); + + DB db = DB.getInstance(this); + db.message().liveUnseenUnified().removeObservers(owner); + } + + public void onClick() { + Log.i(Helper.TAG, "Tile click"); + + Intent clear = new Intent(this, ServiceSynchronize.class); + clear.setAction("clear"); + startService(clear); + } +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4e1e8e5ea7..c437204152 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -31,6 +31,11 @@ %1$d unsent messages + + %1$d new + %1$d new + + \'%1$s\' failed Setup