package com.doplgangr.secrecy.Views;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBarActivity;
import android.widget.Toast;
import com.doplgangr.secrecy.CustomApp;
import com.doplgangr.secrecy.FileSystem.Vault;
import com.doplgangr.secrecy.Jobs.AddFileJob;
import com.doplgangr.secrecy.R;
import com.doplgangr.secrecy.Util;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Background;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.UiThread;
import java.util.ArrayList;
@EActivity(R.layout.activity_main)
public class FileImportActivity extends ActionBarActivity
implements
VaultsListFragment.OnVaultSelectedListener,
VaultsListFragment.OnFragmentFinishListener {
Vault secret;
@AfterViews
void afterViews() {
FileImportFragment_ fragment = new FileImportFragment_();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(android.R.id.content, fragment, "mainactivitycontent")
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit();
}
@Override
public void onFinish(Fragment fragment) {
}
@Override
public void onNew(Bundle bundle, Fragment fragment) {
}
@Override
public void onVaultSelected(String vault, String password) {
secret = new Vault(vault, password);
if (secret.wrongPass) {
Util.alert(
this,
getString(R.string.Error__open_vault),
getString(R.string.Error__open_vault_message),
Util.emptyClickListener,
null
);
return;
}
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_SEND.equals(action) && type != null)
handleSend(intent);
else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null)
handleSendMultiple(intent); // Handle multiple images being sent
}
@Background
void handleSend(Intent intent) {
Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (uri != null)
handleData(uri);
done();
}
@Background
void handleSendMultiple(Intent intent) {
ArrayList<Uri> uris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
for (Uri uri : uris)
if (uri != null)
handleData(uri);
done();
}
@Background
void handleData(final Uri data) {
CustomApp.jobManager.addJobInBackground(new AddFileJob(this, secret, data));
}
@UiThread
public void done() {
//Intent intent = new Intent(context, ListFileActivity_.class);
//intent.putExtra(Config.vault_extra, secret.name);
//intent.putExtra(Config.password_extra, password);
//startActivity(intent);
Util.toast(this, getString(R.string.Import__finish), Toast.LENGTH_SHORT);
finish();
}
}