/* 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); } } } ); } }