blob: 741e4988cb427805e44efb966a130cf19a512071 [file] [log] [blame]
/*
* Copyright (C) 2015 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.systemui.volume;
import android.content.Context;
import android.content.res.Configuration;
import android.media.AudioManager;
import android.media.VolumePolicy;
import android.os.Bundle;
import android.os.Handler;
import com.android.systemui.SystemUI;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.qs.tiles.DndTile;
import com.android.systemui.statusbar.phone.PhoneStatusBar;
import com.android.systemui.statusbar.policy.ZenModeController;
import java.io.FileDescriptor;
import java.io.PrintWriter;
/**
* Implementation of VolumeComponent backed by the new volume dialog.
*/
public class VolumeDialogComponent implements VolumeComponent {
private final SystemUI mSysui;
private final Context mContext;
private final VolumeDialogController mController;
private final ZenModeController mZenModeController;
private final VolumeDialog mDialog;
public VolumeDialogComponent(SystemUI sysui, Context context, Handler handler,
ZenModeController zen) {
mSysui = sysui;
mContext = context;
mController = new VolumeDialogController(context, null) {
@Override
protected void onUserActivityW() {
sendUserActivity();
}
};
mZenModeController = zen;
mDialog = new VolumeDialog(context, mController, zen) {
@Override
protected void onZenSettingsClickedH() {
startZenSettings();
}
};
applyConfiguration();
}
private void sendUserActivity() {
final KeyguardViewMediator kvm = mSysui.getComponent(KeyguardViewMediator.class);
if (kvm != null) {
kvm.userActivity();
}
}
private void applyConfiguration() {
mDialog.setStreamImportant(AudioManager.STREAM_ALARM, true);
mDialog.setStreamImportant(AudioManager.STREAM_SYSTEM, false);
mDialog.setShowHeaders(false);
mDialog.setShowFooter(true);
mDialog.setZenFooter(true);
mDialog.setAutomute(true);
mDialog.setSilentMode(false);
mController.setVolumePolicy(VolumePolicy.DEFAULT);
mController.showDndTile(false);
}
@Override
public ZenModeController getZenController() {
return mZenModeController;
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// noop
}
@Override
public void dismissNow() {
mController.dismiss();
}
@Override
public void dispatchDemoCommand(String command, Bundle args) {
// noop
}
@Override
public void register() {
mController.register();
DndTile.setCombinedIcon(mContext, true);
}
@Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
mController.dump(fd, pw, args);
mDialog.dump(pw);
}
private void startZenSettings() {
mSysui.getComponent(PhoneStatusBar.class).startActivityDismissingKeyguard(
ZenModePanel.ZEN_SETTINGS, true /* onlyProvisioned */, true /* dismissShade */);
}
}