package com.mercandalli.android.apps.files.tile;
import android.graphics.drawable.Icon;
import android.os.Build;
import android.service.quicksettings.Tile;
import android.service.quicksettings.TileService;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import com.mercandalli.android.apps.files.R;
import com.mercandalli.android.apps.files.file.audio.FileAudioModel;
import com.mercandalli.android.apps.files.file.audio.FileAudioPlayerManager;
import com.mercandalli.android.apps.files.shared.SharedAudioPlayerUtils;
import com.mercandalli.android.apps.files.splash.SplashActivity;
import java.util.List;
/**
* The >= Android N notification tile.
*/
@RequiresApi(api = Build.VERSION_CODES.N)
public class QuickSettingsTileService extends TileService implements
FileAudioPlayerManager.OnPlayerStatusChangeListener {
@Nullable
private FileAudioPlayerManager mFileAudioPlayerManager;
@Override
public void onCreate() {
super.onCreate();
syncTile(false);
mFileAudioPlayerManager = FileAudioPlayerManager.getInstance(getApplicationContext());
}
@Override
public void onClick() {
super.onClick();
syncTile(true);
SplashActivity.start(getApplicationContext());
}
@Override
public void onStartListening() {
super.onStartListening();
getFileAudioPlayerManager().addOnPlayerStatusChangeListener(this);
}
@Override
public void onStopListening() {
super.onStopListening();
getFileAudioPlayerManager().removeOnPreviewPlayerStatusChangeListener(this);
}
@Override
public void onTileAdded() {
super.onTileAdded();
syncTile(false);
}
@Override
public boolean onPlayerStatusChanged(@SharedAudioPlayerUtils.Status final int status) {
return false;
}
@Override
public boolean onPlayerProgressChanged(final int progress, final int duration) {
return false;
}
@Override
public boolean onAudioChanged(
final int musicPosition,
final List<FileAudioModel> musics,
@SharedAudioPlayerUtils.Action final int action) {
return false;
}
private void syncTile(final boolean active) {
final Icon loopIcon = getTileIcon();
final String loopTitle = getTileTitle();
final int loopTileState = getTileState(active);
final Tile qsTile = getQsTile();
if (qsTile != null) {
qsTile.setLabel(loopTitle);
qsTile.setIcon(loopIcon);
qsTile.setState(loopTileState);
qsTile.updateTile();
}
}
private int getTileState(final boolean active) {
return active ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE;
}
@NonNull
private Icon getTileIcon() {
return Icon.createWithResource(this, R.drawable.ic_folder_open_white_24dp);
}
@NonNull
private String getTileTitle() {
return "Open FileSpace";
}
@NonNull
private FileAudioPlayerManager getFileAudioPlayerManager() {
if (mFileAudioPlayerManager == null) {
return mFileAudioPlayerManager = FileAudioPlayerManager.getInstance(getApplicationContext());
}
return mFileAudioPlayerManager;
}
}