/*
Swisscom Safe Connect
Copyright (C) 2014 Swisscom
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.swisscom.safeconnect.activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import com.swisscom.safeconnect.R;
import com.swisscom.safeconnect.adapter.IncidentBlockedUrlAdapter;
import com.swisscom.safeconnect.adapter.IncidentMalwareAdapter;
import com.swisscom.safeconnect.backend.BackendConnector;
import com.swisscom.safeconnect.model.IncidentType;
import com.swisscom.safeconnect.model.PlumberIncidentsResponseList;
import com.swisscom.safeconnect.utils.Config;
/**
* Created by vadim on 29.09.14.
*/
public class IncidentsActivity extends PipeActivity {
public static final String INCIDENT_TYPE = "IncidentsActivity.INCIDENT_TYPE";
private ListView lvIncidents;
private IncidentType incidentType;
private View viewConnError, viewWaiting, viewShowcase;
private TextView tvNothing;
private TextView tvDescription;
private BackendConnector backendConnector = new BackendConnector(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.incidents, false);
incidentType = (IncidentType) getIntent().getSerializableExtra(INCIDENT_TYPE);
initActionBar(this, incidentType == IncidentType.MALWARE? R.string.lab_viruses:
R.string.lab_blocked_websites, true);
lvIncidents = (ListView) findViewById(R.id.lv_incidents);
viewConnError = findViewById(R.id.view_conn_error);
viewWaiting = findViewById(R.id.view_waiting);
viewShowcase = findViewById(R.id.view_showcase);
TextView tvShowcaseInfo = (TextView) viewShowcase.findViewById(R.id.tv_test_info);
Button btnTry = (Button) viewShowcase.findViewById(R.id.but_test);
tvNothing = (TextView) findViewById(R.id.tv_nothing);
tvDescription = (TextView) findViewById(R.id.tv_description);
if (incidentType == IncidentType.BLOCKED_URL) {
tvNothing.setText(R.string.lab_no_blocked_url);
tvDescription.setText(R.string.lab_blocked_url_desc);
tvShowcaseInfo.setText(R.string.lab_try_blocking_url_info);
btnTry.setText(R.string.lab_try_blocking_url);
btnTry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://testurl.rulespace.com/maldom/en"));
startActivity(browserIntent);
}
});
} else {
tvNothing.setText(R.string.lab_no_malware);
tvDescription.setText(R.string.lab_malware_desc);
tvShowcaseInfo.setText(R.string.lab_try_malware_info);
btnTry.setText(R.string.lab_try_malware);
btnTry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://eicar.org/download/eicar.com"));
startActivity(browserIntent);
}
});
}
Button btnRetry = (Button) viewConnError.findViewById(R.id.but_retry);
btnRetry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadList();
}
});
}
@Override
protected void onResume() {
super.onResume();
loadList();
//Update widget
sendBroadcast(new Intent(Config.UPDATE_INCIDENTS));
}
private void loadList() {
lvIncidents.setVisibility(View.GONE);
viewShowcase.setVisibility(View.GONE);
tvDescription.setVisibility(View.GONE);
viewWaiting.setVisibility(View.VISIBLE);
backendConnector.getIncidents(Config.getInstance().getPhoneNumber(),
Config.getInstance().getDeviceId(), incidentType, Config.INCIDENTS_LIMIT,
Config.getInstance().getStatPeriod(),
new BackendConnector.ResponseCallback<PlumberIncidentsResponseList>() {
@Override
public void onRequestComplete(int statusCode, PlumberIncidentsResponseList response) {
viewWaiting.setVisibility(View.GONE);
if (statusCode == 200) {
lvIncidents.setVisibility(View.VISIBLE);
viewShowcase.setVisibility(View.VISIBLE);
viewConnError.setVisibility(View.GONE);
if (response.getIncidents().length <= 0) {
tvNothing.setVisibility(View.VISIBLE);
tvDescription.setVisibility(View.GONE);
} else {
tvNothing.setVisibility(View.GONE);
tvDescription.setVisibility(View.VISIBLE);
}
switch (incidentType) {
case MALWARE:
lvIncidents.setAdapter(new IncidentMalwareAdapter(
IncidentsActivity.this, 0, response));
break;
case BLOCKED_URL:
lvIncidents.setAdapter(new IncidentBlockedUrlAdapter(
IncidentsActivity.this, 0, response));
break;
default:
throw new IllegalStateException("unknown incident type!");
}
} else {
viewConnError.setVisibility(View.VISIBLE);
viewShowcase.setVisibility(View.GONE);
}
}
}
);
}
}