package com.doplgangr.secrecy.activities; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.app.NotificationManager; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.NotificationCompat; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.Toolbar; import android.widget.Toast; import com.doplgangr.secrecy.CustomApp; import com.doplgangr.secrecy.R; import com.doplgangr.secrecy.utils.Util; import com.doplgangr.secrecy.events.AddingFileDoneEvent; import com.doplgangr.secrecy.events.AddingFileEvent; import com.doplgangr.secrecy.filesystem.encryption.Vault; import com.doplgangr.secrecy.filesystem.encryption.VaultHolder; import com.doplgangr.secrecy.jobs.AddFileJob; import com.doplgangr.secrecy.fragments.FileImportFragment; import com.doplgangr.secrecy.adapters.VaultsListFragment; import java.util.ArrayList; import de.greenrobot.event.EventBus; public class FileImportActivity extends ActionBarActivity implements VaultsListFragment.OnVaultSelectedListener, VaultsListFragment.OnFragmentFinishListener { private static final int NotificationID = 1011; private Vault secret; private Toolbar mToolbar; //Notifications private NotificationManager mNotifyManager; private NotificationCompat.Builder mBuilder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (!EventBus.getDefault().isRegistered(this)) { EventBus.getDefault().register(this); } mToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(mToolbar); FileImportFragment fragment = new FileImportFragment(); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.drawer_layout, fragment, "mainactivitycontent") //Replace the whole drawer layout .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) .commit(); } @Override public void onVaultSelected(String vault, String passphrase) { secret = VaultHolder.getInstance().createAndRetrieveVault(vault, passphrase); 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(); mNotifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mBuilder = new NotificationCompat.Builder(this); mBuilder.setContentTitle(CustomApp.context.getString(R.string.Files__adding)) .setSmallIcon(R.drawable.ic_stat_alert) .setOngoing(true); mBuilder.setProgress(0, 0, true); mNotifyManager.notify(NotificationID, mBuilder.build()); if (Intent.ACTION_SEND.equals(action) && type != null) handleSendInBackground(intent); else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) handleSendMultipleInBackground(intent); // Handle multiple images being sent } void handleSendInBackground(final Intent intent) { new Thread(new Runnable() { @Override public void run() { Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM); if (uri != null) handleData(uri); done(); } }).start(); } void handleSendMultipleInBackground(final Intent intent) { new Thread(new Runnable() { @Override public void run() { ArrayList<Uri> uris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); for (Uri uri : uris) if (uri != null) handleData(uri); done(); } }).start(); } void handleData(final Uri data) { CustomApp.jobManager.addJobInBackground(new AddFileJob(this, secret, data)); } public void onEventMainThread(AddingFileEvent event) { if (event.vaultToAdd != secret) return; if (mBuilder != null) { mBuilder.setContentText(event.fileToAdd); mNotifyManager.notify(NotificationID, mBuilder.build()); } } public void onEventMainThread(AddingFileDoneEvent event) { if (event.vault != secret) return; if (mBuilder != null) { mBuilder.setProgress(0, 0, false) .setContentText(CustomApp.context.getString(R.string.Files__adding_finish)) .setOngoing(false); mNotifyManager.notify(NotificationID, mBuilder.build()); } } 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(); } @Override public void onFinish(Fragment fragment) { } @Override public void onNew(Bundle bundle, Fragment fragment) { } }