kopia lustrzana https://github.com/N0BOY/FT8CN
119 wiersze
4.7 KiB
Java
119 wiersze
4.7 KiB
Java
package com.bg7yoz.ft8cn.grid_tracker;
|
|
/**
|
|
* 网格追踪中每个连线的窗口界面。包含各类型分区图标。与我有关的通联,文字是红色的。
|
|
* @author BGY70Z
|
|
* @date 2023-03-20
|
|
*/
|
|
|
|
import android.annotation.SuppressLint;
|
|
import android.graphics.Paint;
|
|
import android.util.Log;
|
|
import android.view.MotionEvent;
|
|
import android.view.View;
|
|
import android.widget.ImageView;
|
|
import android.widget.TextView;
|
|
|
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
|
|
|
import com.bg7yoz.ft8cn.Ft8Message;
|
|
import com.bg7yoz.ft8cn.GeneralVariables;
|
|
import com.bg7yoz.ft8cn.R;
|
|
|
|
import org.osmdroid.views.MapView;
|
|
import org.osmdroid.views.overlay.OverlayWithIW;
|
|
import org.osmdroid.views.overlay.infowindow.InfoWindow;
|
|
|
|
public class GridInfoWindow extends InfoWindow {
|
|
public static final int UNDEFINED_RES_ID = 0;
|
|
|
|
private final TextView titleView;
|
|
private final TextView descriptionView;
|
|
private final TextView subDescriptionView;
|
|
|
|
|
|
@SuppressLint("UseCompatLoadingForDrawables")
|
|
public GridInfoWindow(int layoutResId, MapView mapView, Ft8Message msg) {
|
|
super(layoutResId, mapView);
|
|
//setResIds(mapView.getContext());
|
|
titleView = (TextView) this.mView.findViewById(R.id.tracker_info_bubble_title);
|
|
descriptionView = (TextView) this.mView.findViewById(R.id.tracker_info_bubble_description);
|
|
subDescriptionView = (TextView) this.mView.findViewById(R.id.tracker_info_bubble_subdescription);
|
|
ImageView fromDxccImage = (ImageView) this.mView.findViewById(R.id.track_from_dxcc_image);
|
|
ImageView fromItuImage = (ImageView) this.mView.findViewById(R.id.track_from_itu_image);
|
|
ImageView fromCqImage = (ImageView) this.mView.findViewById(R.id.track_from_cq_image);
|
|
ImageView toDxccImage = (ImageView) this.mView.findViewById(R.id.track_to_dxcc_image);
|
|
ImageView toItuImage = (ImageView) this.mView.findViewById(R.id.track_to_itu_image);
|
|
ImageView toCqImage = (ImageView) this.mView.findViewById(R.id.track_to_cq_image);
|
|
ConstraintLayout layout=(ConstraintLayout) mView.findViewById(R.id.trackerGridInfoConstraintLayout);
|
|
|
|
if (!msg.fromDxcc) fromDxccImage.setVisibility(View.GONE);
|
|
if (!msg.fromItu) fromItuImage.setVisibility(View.GONE);
|
|
if (!msg.fromCq) fromCqImage.setVisibility(View.GONE);
|
|
if (!msg.toDxcc) toDxccImage.setVisibility(View.GONE);
|
|
if (!msg.toItu) toItuImage.setVisibility(View.GONE);
|
|
if (!msg.toCq) toCqImage.setVisibility(View.GONE);
|
|
|
|
|
|
//查是不是在本波段内通联成功过的呼号
|
|
if (GeneralVariables.checkQSLCallsign(msg.getCallsignFrom())) {//如果在数据库中,划线
|
|
titleView.setPaintFlags(
|
|
titleView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
|
|
} else {//如果不在数据库中,去掉划线
|
|
titleView.setPaintFlags(
|
|
titleView.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG));
|
|
}
|
|
boolean otherBandIsQso = GeneralVariables.checkQSLCallsign_OtherBand(msg.getCallsignFrom());
|
|
|
|
//是否有与我呼号有关的消息
|
|
if (msg.inMyCall()) {
|
|
layout.setBackground(mView.getResources().getDrawable(R.drawable.tracker_new_cq_info_win_style));
|
|
titleView.setTextColor(mapView.getResources().getColor(
|
|
R.color.message_in_my_call_text_color));
|
|
} else if (otherBandIsQso) {
|
|
//设置在别的波段通联过的消息颜色
|
|
titleView.setTextColor(mapView.getResources().getColor(
|
|
R.color.fromcall_is_qso_text_color));
|
|
} else {
|
|
titleView.setTextColor(mapView.getResources().getColor(
|
|
R.color.message_text_color));
|
|
}
|
|
|
|
|
|
this.mView.setOnTouchListener(new View.OnTouchListener() {
|
|
public boolean onTouch(View v, MotionEvent e) {
|
|
if (e.getAction() == 1) {
|
|
GridInfoWindow.this.close();
|
|
}
|
|
return true;
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
@Override
|
|
public void onOpen(Object item) {
|
|
OverlayWithIW overlay = (OverlayWithIW) item;
|
|
String title = overlay.getTitle();
|
|
if (title == null) {
|
|
title = "";
|
|
}
|
|
|
|
if (this.mView == null) {
|
|
Log.w("OsmDroid", "Error trapped, BasicInfoWindow.open, mView is null!");
|
|
} else {
|
|
titleView.setText(title);
|
|
String snippet = overlay.getSnippet();
|
|
//Spanned snippetHtml = Html.fromHtml(snippet);
|
|
descriptionView.setText(snippet);
|
|
String subDesc = overlay.getSubDescription();
|
|
subDescriptionView.setText(subDesc);
|
|
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onClose() {
|
|
|
|
}
|
|
}
|