FT8CN/ft8cn/app/src/main/java/com/bg7yoz/ft8cn/ui/SetVolumeDialog.java

121 wiersze
3.9 KiB
Java
Czysty Wina Historia

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.bg7yoz.ft8cn.ui;
/**
* 设置信号输出强度的对话框。
* @author BGY70Z
* @date 2023-03-20
*/
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.WindowManager;
import android.widget.SeekBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.lifecycle.Observer;
import com.bg7yoz.ft8cn.GeneralVariables;
import com.bg7yoz.ft8cn.MainViewModel;
import com.bg7yoz.ft8cn.R;
public class SetVolumeDialog extends Dialog {
private static final String TAG = "SetVolumeDialog";
private TextView volumeValueMessage;
private SeekBar volumeSeekBar;
private final MainViewModel mainViewModel;
private VolumeProgress volumeProgress;
public SetVolumeDialog(@NonNull Context context, MainViewModel mainViewModel) {
super(context);
this.mainViewModel = mainViewModel;
}
@SuppressLint({"NotifyDataSetChanged", "MissingInflatedId"})
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.set_volume_dialog);
volumeValueMessage = (TextView) findViewById(R.id.volumeValueMessage);
volumeSeekBar = (SeekBar) findViewById(R.id.volumeSeekBar);
volumeProgress=(VolumeProgress) findViewById(R.id.volumeProgress);
volumeProgress.setAlarmValue(1.1f);
volumeProgress.setValueColor(getContext().getColor(R.color.volume_progress_value));//白色
setVolumeText(GeneralVariables.volumePercent);
volumeSeekBar.setProgress((int) (GeneralVariables.volumePercent*100));
GeneralVariables.mutableVolumePercent.observeForever(new Observer<Float>() {
@Override
public void onChanged(Float aFloat) {
setVolumeText(aFloat);
}
});
volumeSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
GeneralVariables.volumePercent=i/100f;
GeneralVariables.mutableVolumePercent.postValue(i/100f);
mainViewModel.databaseOpr.writeConfig("volumeValue",String.valueOf(i),null);
if (mainViewModel.baseRig!=null){
if (mainViewModel.baseRig.getConnector()!=null) {
mainViewModel.baseRig.getConnector().setRFVolume(i);
Log.e(TAG,String.format("set volume:%d",i));
}
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
private void setVolumeText(float vol){
volumeValueMessage.setText(String.format(
GeneralVariables.getStringFromResource(R.string.volume_percent)
, vol*100f));
volumeProgress.setPercent(vol);
}
/**
* 把配置信息写到数据库
*
* @param Value 值
*/
private void writeConfig(String Value) {
mainViewModel.databaseOpr.writeConfig("volumeValue", Value, null);
}
@Override
public void show() {
super.show();
WindowManager.LayoutParams params = getWindow().getAttributes();
//设置对话框的大小以百分比0.6
int height = getWindow().getWindowManager().getDefaultDisplay().getHeight();
int width = getWindow().getWindowManager().getDefaultDisplay().getWidth();
if (width > height) {
params.width = (int) (width * 0.7);
//params.height = (int) (height * 0.6);
} else {
params.width = (int) (width * 0.95);
//params.height = (int) (height * 0.5);
}
getWindow().setAttributes(params);
}
}