mirror of https://github.com/MISP/misp-bump
267 lines
8.0 KiB
Java
267 lines
8.0 KiB
Java
package lu.circl.mispbump.activities;
|
|
|
|
import android.content.Intent;
|
|
import android.os.Bundle;
|
|
import android.view.Menu;
|
|
import android.view.MenuItem;
|
|
import android.view.View;
|
|
import android.widget.TextView;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.appcompat.app.ActionBar;
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
import androidx.appcompat.widget.Toolbar;
|
|
import androidx.fragment.app.Fragment;
|
|
import androidx.fragment.app.FragmentManager;
|
|
import androidx.fragment.app.FragmentPagerAdapter;
|
|
import androidx.viewpager.widget.ViewPager;
|
|
|
|
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
|
import com.google.android.material.tabs.TabLayout;
|
|
|
|
import java.util.UUID;
|
|
|
|
import lu.circl.mispbump.R;
|
|
import lu.circl.mispbump.auxiliary.DialogManager;
|
|
import lu.circl.mispbump.auxiliary.PreferenceManager;
|
|
import lu.circl.mispbump.fragments.UploadCredentialsFragment;
|
|
import lu.circl.mispbump.fragments.UploadSettingsFragment;
|
|
import lu.circl.mispbump.models.UploadInformation;
|
|
|
|
public class UploadInfoActivity extends AppCompatActivity {
|
|
|
|
public static String EXTRA_UPLOAD_INFO_UUID = "uploadInformationUuid";
|
|
|
|
private PreferenceManager preferenceManager;
|
|
private UploadInformation uploadInformation;
|
|
private ViewPagerAdapter viewPagerAdapter;
|
|
|
|
private FloatingActionButton fab;
|
|
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setContentView(R.layout.activity_upload_information);
|
|
|
|
preferenceManager = PreferenceManager.getInstance(UploadInfoActivity.this);
|
|
|
|
// tint statusBar
|
|
getWindow().setStatusBarColor(getColor(R.color.colorPrimary));
|
|
// getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
|
|
|
parseExtra();
|
|
initToolbar();
|
|
initViewPager();
|
|
initViews();
|
|
}
|
|
|
|
@Override
|
|
protected void onResume() {
|
|
super.onResume();
|
|
|
|
// refresh current uploadInformation
|
|
if (uploadInformation != null) {
|
|
uploadInformation = preferenceManager.getUploadInformation(uploadInformation.getUuid());
|
|
initContent();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onBackPressed() {
|
|
super.onBackPressed();
|
|
saveCurrentSettings();
|
|
}
|
|
|
|
@Override
|
|
public boolean onCreateOptionsMenu(Menu menu) {
|
|
getMenuInflater().inflate(R.menu.menu_upload_info, menu);
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public boolean onOptionsItemSelected(MenuItem item) {
|
|
switch (item.getItemId()) {
|
|
case R.id.delete:
|
|
DialogManager.deleteSyncInformationDialog(UploadInfoActivity.this, new DialogManager.IDialogFeedback() {
|
|
@Override
|
|
public void positive() {
|
|
preferenceManager.removeUploadInformation(uploadInformation.getUuid());
|
|
finish();
|
|
}
|
|
|
|
@Override
|
|
public void negative() {}
|
|
});
|
|
|
|
return true;
|
|
|
|
case android.R.id.home:
|
|
saveCurrentSettings();
|
|
finish();
|
|
return true;
|
|
|
|
default:
|
|
return super.onOptionsItemSelected(item);
|
|
}
|
|
}
|
|
|
|
|
|
private void parseExtra() {
|
|
Intent i = getIntent();
|
|
|
|
UUID currentUUID = (UUID) i.getSerializableExtra(EXTRA_UPLOAD_INFO_UUID);
|
|
uploadInformation = preferenceManager.getUploadInformation(currentUUID);
|
|
|
|
if (uploadInformation == null) {
|
|
throw new RuntimeException("Could not find UploadInformation with UUID {" + currentUUID.toString() + "}");
|
|
}
|
|
}
|
|
|
|
private void initToolbar() {
|
|
Toolbar toolbar = findViewById(R.id.toolbar);
|
|
setSupportActionBar(toolbar);
|
|
|
|
ActionBar ab = getSupportActionBar();
|
|
assert ab != null;
|
|
|
|
TextView toolbarTitle = findViewById(R.id.toolbarTitle);
|
|
toolbarTitle.setText(uploadInformation.getRemote().organisation.name);
|
|
|
|
ab.setHomeAsUpIndicator(R.drawable.ic_close);
|
|
|
|
ab.setDisplayShowTitleEnabled(false);
|
|
ab.setDisplayHomeAsUpEnabled(true);
|
|
}
|
|
|
|
private void initViewPager() {
|
|
ViewPager viewPager = findViewById(R.id.viewPager);
|
|
TabLayout tabLayout = findViewById(R.id.tabLayout);
|
|
|
|
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(), uploadInformation);
|
|
viewPager.setAdapter(viewPagerAdapter);
|
|
|
|
viewPager.addOnPageChangeListener(onPageChangeListener());
|
|
|
|
tabLayout.setupWithViewPager(viewPager);
|
|
}
|
|
|
|
private void initViews() {
|
|
fab = findViewById(R.id.fab);
|
|
fab.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
// for the UploadActivity to have the latest settings of this UploadInfoObject
|
|
saveCurrentSettings();
|
|
|
|
Intent i = new Intent(UploadInfoActivity.this, UploadActivity.class);
|
|
i.putExtra(UploadActivity.EXTRA_UPLOAD_INFO, uploadInformation.getUuid());
|
|
startActivity(i);
|
|
}
|
|
});
|
|
}
|
|
|
|
private void initContent() {
|
|
switch (uploadInformation.getCurrentSyncStatus()) {
|
|
case COMPLETE:
|
|
|
|
break;
|
|
|
|
case FAILURE:
|
|
|
|
break;
|
|
|
|
case PENDING:
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void saveCurrentSettings() {
|
|
uploadInformation.setAllowSelfSigned(viewPagerAdapter.uploadSettingsFragment.getAllowSelfSigned());
|
|
uploadInformation.setPull(viewPagerAdapter.uploadSettingsFragment.getPull());
|
|
uploadInformation.setPush(viewPagerAdapter.uploadSettingsFragment.getPush());
|
|
uploadInformation.setCached(viewPagerAdapter.uploadSettingsFragment.getCache());
|
|
|
|
preferenceManager.addUploadInformation(uploadInformation);
|
|
}
|
|
|
|
|
|
private ViewPager.OnPageChangeListener onPageChangeListener() {
|
|
return new ViewPager.OnPageChangeListener() {
|
|
@Override
|
|
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
|
if (position == 0) {
|
|
float scale = (1 - positionOffset);
|
|
fab.setScaleX(scale);
|
|
fab.setScaleY(scale);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onPageSelected(int position) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onPageScrollStateChanged(int state) {
|
|
|
|
}
|
|
};
|
|
}
|
|
|
|
|
|
class ViewPagerAdapter extends FragmentPagerAdapter {
|
|
|
|
private UploadSettingsFragment uploadSettingsFragment;
|
|
private UploadCredentialsFragment uploadCredentialsFragment;
|
|
|
|
ViewPagerAdapter(@NonNull FragmentManager fm, UploadInformation uploadInformation) {
|
|
super(fm, ViewPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
|
|
uploadSettingsFragment = new UploadSettingsFragment(uploadInformation);
|
|
uploadCredentialsFragment = new UploadCredentialsFragment(uploadInformation);
|
|
}
|
|
|
|
@NonNull
|
|
@Override
|
|
public Fragment getItem(int position) {
|
|
switch (position) {
|
|
case 0:
|
|
return uploadSettingsFragment;
|
|
|
|
case 1:
|
|
return uploadCredentialsFragment;
|
|
|
|
default:
|
|
uploadSettingsFragment = new UploadSettingsFragment();
|
|
return uploadSettingsFragment;
|
|
}
|
|
}
|
|
|
|
@Nullable
|
|
@Override
|
|
public CharSequence getPageTitle(int position) {
|
|
switch (position) {
|
|
case 0:
|
|
return "Settings";
|
|
|
|
case 1:
|
|
return "Credentials";
|
|
|
|
default:
|
|
return "N/A";
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int getCount() {
|
|
return 2;
|
|
}
|
|
}
|
|
}
|