package io.github.mthli.Ninja.Activity;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.FrameLayout;
import android.widget.ListView;
import io.github.mthli.Ninja.Database.Record;
import io.github.mthli.Ninja.R;
import io.github.mthli.Ninja.Service.HolderService;
import io.github.mthli.Ninja.Unit.BrowserUnit;
import io.github.mthli.Ninja.Unit.IntentUnit;
import io.github.mthli.Ninja.Unit.RecordUnit;
import io.github.mthli.Ninja.View.DialogAdapter;
import io.github.mthli.Ninja.View.NinjaContextWrapper;
import io.github.mthli.Ninja.View.NinjaToast;
import java.util.*;
public class HolderActivity extends Activity {
private static final int TIMER_SCHEDULE_DEFAULT = 512;
private Record first = null;
private Record second = null;
private Timer timer = null;
private boolean background = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent() == null || getIntent().getData() == null) {
finish();
return;
}
first = new Record();
first.setTitle(getString(R.string.album_untitled));
first.setURL(getIntent().getData().toString());
first.setTime(System.currentTimeMillis());
TimerTask task = new TimerTask() {
@Override
public void run() {
if (first != null && second == null) {
Intent toService = new Intent(HolderActivity.this, HolderService.class);
RecordUnit.setHolder(first);
startService(toService);
background = true;
}
HolderActivity.this.finish();
}
};
timer = new Timer();
timer.schedule(task, TIMER_SCHEDULE_DEFAULT);
}
@Override
public void onNewIntent(Intent intent) {
if (intent == null || intent.getData() == null || first == null) {
finish();
return;
}
if (timer != null) {
timer.cancel();
}
second = new Record();
second.setTitle(getString(R.string.album_untitled));
second.setURL(intent.getData().toString());
second.setTime(System.currentTimeMillis());
if (first.getURL().equals(second.getURL())) {
showHolderDialog();
} else {
Intent toService = new Intent(HolderActivity.this, HolderService.class);
RecordUnit.setHolder(second);
startService(toService);
background = true;
finish();
}
}
@Override
public void onDestroy() {
if (timer != null) {
timer.cancel();
}
if (background) {
NinjaToast.show(this, R.string.toast_load_in_background);
}
first = null;
second = null;
timer = null;
background = false;
super.onDestroy();
}
private void showHolderDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(new NinjaContextWrapper(this));
builder.setCancelable(true);
FrameLayout linearLayout = (FrameLayout) getLayoutInflater().inflate(R.layout.dialog_list, null, false);
builder.setView(linearLayout);
String[] strings = getResources().getStringArray(R.array.holder_menu);
List<String> list = new ArrayList<>();
list.addAll(Arrays.asList(strings));
ListView listView = (ListView) linearLayout.findViewById(R.id.dialog_list);
DialogAdapter adapter = new DialogAdapter(this, R.layout.dialog_text_item, list);
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
final AlertDialog dialog = builder.create();
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
HolderActivity.this.finish();
}
});
dialog.show();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
Intent toActivity = new Intent(HolderActivity.this, BrowserActivity.class);
toActivity.putExtra(IntentUnit.OPEN, first.getURL());
startActivity(toActivity);
break;
case 1:
BrowserUnit.copyURL(HolderActivity.this, first.getURL());
break;
case 2:
IntentUnit.share(HolderActivity.this, first.getTitle(), first.getURL());
break;
default:
break;
}
dialog.hide();
dialog.dismiss();
finish();
}
});
}
}