132 lines
4.9 KiB
Java
132 lines
4.9 KiB
Java
package space.rocketnine.gophast;
|
|
|
|
import android.Manifest;
|
|
import android.content.DialogInterface;
|
|
import android.content.Intent;
|
|
import android.content.pm.PackageManager;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.support.v7.app.AlertDialog;
|
|
import android.support.v7.app.AppCompatActivity;
|
|
import android.support.v7.widget.DividerItemDecoration;
|
|
import android.support.v7.widget.LinearLayoutManager;
|
|
import android.support.v7.widget.RecyclerView;
|
|
import android.view.Menu;
|
|
import android.view.MenuInflater;
|
|
import android.view.MenuItem;
|
|
import android.view.View;
|
|
import android.widget.EditText;
|
|
|
|
public class MainActivity extends AppCompatActivity {
|
|
private GoPhast gophast;
|
|
final int RequestStorage = 1337;
|
|
private Intent pendingDownloadIntent;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setContentView(R.layout.activity_main);
|
|
|
|
if (getSupportActionBar() != null) {
|
|
getSupportActionBar().setDisplayShowHomeEnabled(true);
|
|
getSupportActionBar().setIcon(R.mipmap.ic_launcher);
|
|
getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.road));
|
|
}
|
|
|
|
RecyclerView lstDownloads = findViewById(R.id.lstDownloads);
|
|
lstDownloads.setHasFixedSize(true);
|
|
|
|
LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
|
|
lstDownloads.setLayoutManager(layoutManager);
|
|
|
|
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(MainActivity.this, layoutManager.getOrientation());
|
|
lstDownloads.addItemDecoration(dividerItemDecoration);
|
|
|
|
getApp().adapter = new DownloadAdapter(getApp(), MainActivity.this, getApp().downloads);
|
|
lstDownloads.setAdapter(getApp().adapter);
|
|
|
|
Intent intent = getIntent();
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
|
pendingDownloadIntent = intent;
|
|
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, RequestStorage);
|
|
} else if (getApp().isDownloadIntent(intent)) {
|
|
getApp().addDownload(intent.getDataString(), MainActivity.this);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
|
switch (requestCode) {
|
|
case RequestStorage: {
|
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
|
if (getApp().isDownloadIntent(pendingDownloadIntent)) {
|
|
getApp().addDownload(pendingDownloadIntent.getDataString(), MainActivity.this);
|
|
}
|
|
|
|
pendingDownloadIntent = null;
|
|
} else {
|
|
getApp().longToast(getString(R.string.storagePermissionDenied));
|
|
finish();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean onCreateOptionsMenu(Menu menu) {
|
|
MenuInflater inflater = getMenuInflater();
|
|
inflater.inflate(R.menu.menu_main, menu);
|
|
return true;
|
|
}
|
|
|
|
public void newDownload(View v) {
|
|
final View view = getLayoutInflater().inflate(R.layout.dialog_add_download, null);
|
|
|
|
AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this, R.style.AppTheme_Dialog);
|
|
alert.setTitle(R.string.addDownload);
|
|
alert.setView(view);
|
|
alert.setPositiveButton(R.string.add, new DialogInterface.OnClickListener() {
|
|
public void onClick(DialogInterface dialog, int whichButton) {
|
|
EditText editurl = view.findViewById(R.id.addDownloadURL);
|
|
getApp().addDownload(editurl.getText().toString(), MainActivity.this);
|
|
}
|
|
});
|
|
alert.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
|
|
public void onClick(DialogInterface dialog, int whichButton) {
|
|
}
|
|
});
|
|
alert.show();
|
|
}
|
|
|
|
@Override
|
|
protected void onNewIntent(Intent intent) {
|
|
setIntent(intent);
|
|
if (getApp().isDownloadIntent(intent)) {
|
|
getApp().addDownload(intent.getDataString(), MainActivity.this);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean onOptionsItemSelected(MenuItem item) {
|
|
Intent intent;
|
|
int i = item.getItemId();
|
|
if (i == R.id.menuSettings) {
|
|
intent = new Intent(MainActivity.this, SettingsActivity.class);
|
|
startActivity(intent);
|
|
|
|
overridePendingTransition(R.anim.slide_in_delayed, R.anim.slide_out_delayed);
|
|
|
|
return true;
|
|
}
|
|
return super.onOptionsItemSelected(item);
|
|
}
|
|
|
|
private GoPhast getApp() {
|
|
if (gophast == null) {
|
|
gophast = (GoPhast) getApplication();
|
|
}
|
|
|
|
return gophast;
|
|
}
|
|
} |