/
DiagnosticsActivity.java
executable file
·140 lines (108 loc) · 4.93 KB
/
DiagnosticsActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package com.audacious_software.passive_data_kit.activities;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.audacious_software.passive_data_kit.PassiveDataKit;
import com.audacious_software.passive_data_kit.diagnostics.DiagnosticAction;
import com.audacious_software.pdk.passivedatakit.R;
import java.util.ArrayList;
@SuppressWarnings("unused")
public class DiagnosticsActivity extends AppCompatActivity {
@SuppressWarnings("SameParameterValue")
@SuppressLint("AlwaysShowAction")
public static void setUpDiagnositicsItem(Activity activity, Menu menu, boolean showAction) {
final ArrayList<DiagnosticAction> actions = PassiveDataKit.diagnostics(activity);
MenuItem item = menu.add(Menu.NONE, R.id.action_diagnostics, 0, activity.getString(R.string.action_diagnostics));
if (actions.size() > 0 && showAction) {
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
item.setIcon(R.drawable.ic_pdk_diagnostic);
item.setTitle("" + actions.size());
} else {
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
if (actions.size() > 0) {
item.setTitle(activity.getString(R.string.action_diagnostics_incomplete, actions.size()));
}
}
}
public static boolean diagnosticItemSelected(Activity activity, MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_diagnostics) {
Intent diagnosticsIntent = new Intent(activity, DiagnosticsActivity.class);
activity.startActivity(diagnosticsIntent);
return true;
}
return false;
}
private class DiagnosticViewHolder extends RecyclerView.ViewHolder {
private View mView = null;
private DiagnosticAction mAction = null;
public DiagnosticViewHolder(View itemView) {
super(itemView);
this.mView = itemView;
final DiagnosticViewHolder me = this;
this.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (me.mAction != null)
{
me.mAction.run();
}
}
});
}
public void bindDiagnosticAction(DiagnosticAction action)
{
this.mAction = action;
TextView title = (TextView) this.mView.findViewById(R.id.action_title);
title.setText(action.getTitle());
TextView message = (TextView) this.mView.findViewById(R.id.action_message);
message.setText(action.getMessage());
}
}
@SuppressWarnings("ConstantConditions")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.layout_diagnostics_pdk);
this.getSupportActionBar().setTitle(R.string.title_pdk_diagnostics);
}
protected void onResume() {
super.onResume();
final ArrayList<DiagnosticAction> actions = PassiveDataKit.diagnostics(this);
RecyclerView listView = (RecyclerView) this.findViewById(R.id.list_view);
TextView emptyMessage = (TextView) this.findViewById(R.id.message_no_diagnostics);
if (actions.size() > 0) {
listView.setVisibility(View.VISIBLE);
emptyMessage.setVisibility(View.GONE);
listView.setLayoutManager(new LinearLayoutManager(this));
listView.setAdapter(new RecyclerView.Adapter() {
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_diagnostic_action, parent, false);
return new DiagnosticViewHolder(v);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
DiagnosticViewHolder diagHolder = (DiagnosticViewHolder) holder;
diagHolder.bindDiagnosticAction(actions.get(position));
}
@Override
public int getItemCount() {
return actions.size();
}
});
} else {
listView.setVisibility(View.GONE);
emptyMessage.setVisibility(View.VISIBLE);
}
}
}