mirror of https://github.com/MISP/misp-bump
parent
e9176e2a5b
commit
1454b6d19c
|
@ -38,16 +38,16 @@ import lu.circl.mispbump.models.restModels.User;
|
||||||
|
|
||||||
public class HomeActivity extends AppCompatActivity {
|
public class HomeActivity extends AppCompatActivity {
|
||||||
|
|
||||||
private List<SyncInformation> syncInformationList;
|
|
||||||
private PreferenceManager preferenceManager;
|
private PreferenceManager preferenceManager;
|
||||||
private MispRestClient restClient;
|
private MispRestClient restClient;
|
||||||
|
|
||||||
|
private SwipeRefreshLayout swipeRefreshLayout;
|
||||||
|
|
||||||
|
private List<SyncInformation> syncInformationList;
|
||||||
private RecyclerView recyclerView;
|
private RecyclerView recyclerView;
|
||||||
private SyncInfoAdapter syncInfoAdapter;
|
private SyncInfoAdapter syncInfoAdapter;
|
||||||
private TextView emptyRecyclerView;
|
private TextView emptyRecyclerView;
|
||||||
|
|
||||||
private SwipeRefreshLayout swipeRefreshLayout;
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
@ -102,7 +102,7 @@ public class HomeActivity extends AppCompatActivity {
|
||||||
|
|
||||||
swipeRefreshLayout = findViewById(R.id.swipeRefresh);
|
swipeRefreshLayout = findViewById(R.id.swipeRefresh);
|
||||||
swipeRefreshLayout.setOnRefreshListener(() -> {
|
swipeRefreshLayout.setOnRefreshListener(() -> {
|
||||||
checkUnimportedSyncs();
|
onSwipeRefresh();
|
||||||
|
|
||||||
syncInfoAdapter.setItems(syncInformationList);
|
syncInfoAdapter.setItems(syncInformationList);
|
||||||
});
|
});
|
||||||
|
@ -174,7 +174,12 @@ public class HomeActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkUnimportedSyncs() {
|
private void onSwipeRefresh() {
|
||||||
|
if (preferenceManager.getShowLocalSyncsOnly()) {
|
||||||
|
swipeRefreshLayout.setRefreshing(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
restClient.getAllServers(new MispRestClient.AllRawServersCallback() {
|
restClient.getAllServers(new MispRestClient.AllRawServersCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void success(List<MispServer> mispServers) {
|
public void success(List<MispServer> mispServers) {
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
package lu.circl.mispbump.activities;
|
package lu.circl.mispbump.activities;
|
||||||
|
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import androidx.appcompat.app.ActionBar;
|
import androidx.appcompat.app.ActionBar;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.fragment.app.FragmentManager;
|
|
||||||
import androidx.fragment.app.FragmentTransaction;
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
import androidx.preference.PreferenceCategory;
|
||||||
import androidx.preference.PreferenceFragmentCompat;
|
import androidx.preference.PreferenceFragmentCompat;
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
|
import androidx.preference.SwitchPreference;
|
||||||
|
|
||||||
import lu.circl.mispbump.R;
|
import lu.circl.mispbump.R;
|
||||||
import lu.circl.mispbump.auxiliary.PreferenceManager;
|
import lu.circl.mispbump.auxiliary.PreferenceManager;
|
||||||
|
@ -17,19 +21,11 @@ import lu.circl.mispbump.auxiliary.PreferenceManager;
|
||||||
|
|
||||||
public class PreferenceActivity extends AppCompatActivity {
|
public class PreferenceActivity extends AppCompatActivity {
|
||||||
|
|
||||||
private PreferenceManager preferenceManager;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_preference);
|
setContentView(R.layout.activity_preference);
|
||||||
|
|
||||||
preferenceManager = PreferenceManager.getInstance(PreferenceActivity.this);
|
|
||||||
|
|
||||||
initializeViews();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initializeViews() {
|
|
||||||
Toolbar myToolbar = findViewById(R.id.toolbar);
|
Toolbar myToolbar = findViewById(R.id.toolbar);
|
||||||
setSupportActionBar(myToolbar);
|
setSupportActionBar(myToolbar);
|
||||||
|
|
||||||
|
@ -37,29 +33,66 @@ public class PreferenceActivity extends AppCompatActivity {
|
||||||
assert ab != null;
|
assert ab != null;
|
||||||
ab.setDisplayHomeAsUpEnabled(true);
|
ab.setDisplayHomeAsUpEnabled(true);
|
||||||
|
|
||||||
FragmentManager fragmentManager = getSupportFragmentManager();
|
getSupportFragmentManager()
|
||||||
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
.beginTransaction()
|
||||||
PreferencesFragment preferencesFragment = new PreferencesFragment();
|
.add(R.id.fragmentContainer, new PreferencesFragment(PreferenceActivity.this))
|
||||||
// preferencesFragment.onDeleteAllSyncsListener = preference -> {
|
.commit();
|
||||||
// preferenceManager.clearUploadInformation();
|
|
||||||
// return true;
|
|
||||||
// };
|
|
||||||
|
|
||||||
fragmentTransaction.add(R.id.fragmentContainer, preferencesFragment, PreferencesFragment.class.getSimpleName());
|
|
||||||
fragmentTransaction.commit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class PreferencesFragment extends PreferenceFragmentCompat {
|
public static class PreferencesFragment extends PreferenceFragmentCompat {
|
||||||
|
|
||||||
private Preference.OnPreferenceClickListener onDeleteAllSyncsListener;
|
private Context context;
|
||||||
|
private PreferenceManager preferenceManager;
|
||||||
|
|
||||||
|
PreferencesFragment(Context context) {
|
||||||
|
this.context = context;
|
||||||
|
preferenceManager = PreferenceManager.getInstance(context);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||||
setPreferencesFromResource(R.xml.preference_screen_main, rootKey);
|
PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(context);
|
||||||
|
setPreferenceScreen(preferenceScreen);
|
||||||
|
|
||||||
// Preference deleteAllSyncInfo = findPreference("PREF_DELETE_ALL_SYNCS");
|
// General
|
||||||
// assert deleteAllSyncInfo != null;
|
|
||||||
// deleteAllSyncInfo.setOnPreferenceClickListener(onDeleteAllSyncsListener);
|
PreferenceCategory generalCategory = new PreferenceCategory(context);
|
||||||
|
generalCategory.setTitle("General");
|
||||||
|
getPreferenceScreen().addPreference(generalCategory);
|
||||||
|
|
||||||
|
SwitchPreference fetchOnlyLocalSyncs = new SwitchPreference(context);
|
||||||
|
fetchOnlyLocalSyncs.setTitle("Display local syncs only");
|
||||||
|
fetchOnlyLocalSyncs.setSummaryOn("Only those syncs that were made with MISPbump are displayed.");
|
||||||
|
fetchOnlyLocalSyncs.setSummaryOff("Existing syncs from your MISP instance are fetched, too.");
|
||||||
|
fetchOnlyLocalSyncs.setChecked(preferenceManager.getShowLocalSyncsOnly());
|
||||||
|
fetchOnlyLocalSyncs.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||||
|
preferenceManager.setShowLocalSyncsOnly((boolean) newValue);
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
generalCategory.addPreference(fetchOnlyLocalSyncs);
|
||||||
|
|
||||||
|
// App Information
|
||||||
|
|
||||||
|
PreferenceCategory appInfoCategory = new PreferenceCategory(context);
|
||||||
|
appInfoCategory.setTitle("App Information");
|
||||||
|
getPreferenceScreen().addPreference(appInfoCategory);
|
||||||
|
|
||||||
|
Preference githubPreference = new Preference(context);
|
||||||
|
githubPreference.setIcon(context.getDrawable(R.drawable.ic_github));
|
||||||
|
githubPreference.setTitle("Github");
|
||||||
|
githubPreference.setSummary("Visit the Github project");
|
||||||
|
Intent viewOnGithub = new Intent(Intent.ACTION_VIEW);
|
||||||
|
viewOnGithub.setData(Uri.parse("https://github.com/MISP/misp-bump"));
|
||||||
|
githubPreference.setIntent(viewOnGithub);
|
||||||
|
|
||||||
|
Preference versionPreference = new Preference(context);
|
||||||
|
versionPreference.setIcon(context.getDrawable(R.drawable.ic_info_outline_dark));
|
||||||
|
versionPreference.setTitle("Version");
|
||||||
|
versionPreference.setSummary("1.0");
|
||||||
|
|
||||||
|
appInfoCategory.addPreference(githubPreference);
|
||||||
|
appInfoCategory.addPreference(versionPreference);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,12 +37,16 @@ public class PreferenceManager {
|
||||||
private static final String USER_ORG_INFOS = "user_org_infos";
|
private static final String USER_ORG_INFOS = "user_org_infos";
|
||||||
|
|
||||||
private static final String SYNC_INFO = "sync_info";
|
private static final String SYNC_INFO = "sync_info";
|
||||||
|
|
||||||
private static final String MISP_ROLES = "misp_roles";
|
private static final String MISP_ROLES = "misp_roles";
|
||||||
|
|
||||||
|
private static final String SHOW_MISPBUMP_SYNCS_ONLY = "show_mispbump_syncs_only";
|
||||||
|
|
||||||
private SharedPreferences preferences;
|
private SharedPreferences preferences;
|
||||||
private static PreferenceManager instance;
|
private static PreferenceManager instance;
|
||||||
|
|
||||||
|
private List<SyncInformation> cachedSyncInformationList;
|
||||||
|
|
||||||
|
|
||||||
private PreferenceManager(Context context) {
|
private PreferenceManager(Context context) {
|
||||||
preferences = context.getSharedPreferences(PREFERENCES_FILE, Context.MODE_PRIVATE);
|
preferences = context.getSharedPreferences(PREFERENCES_FILE, Context.MODE_PRIVATE);
|
||||||
}
|
}
|
||||||
|
@ -146,15 +150,7 @@ public class PreferenceManager {
|
||||||
SharedPreferences.Editor editor = preferences.edit();
|
SharedPreferences.Editor editor = preferences.edit();
|
||||||
editor.putString(USER_ORG_INFOS, encrypted);
|
editor.putString(USER_ORG_INFOS, encrypted);
|
||||||
editor.apply();
|
editor.apply();
|
||||||
} catch (NoSuchPaddingException e) {
|
} catch (NoSuchPaddingException | NoSuchAlgorithmException | InvalidKeyException | BadPaddingException | IllegalBlockSizeException e) {
|
||||||
e.printStackTrace();
|
|
||||||
} catch (NoSuchAlgorithmException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (InvalidKeyException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (BadPaddingException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (IllegalBlockSizeException e) {
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,17 +171,7 @@ public class PreferenceManager {
|
||||||
KeyStoreWrapper keyStoreWrapper = new KeyStoreWrapper(KeyStoreWrapper.USER_ORGANISATION_INFO_ALIAS);
|
KeyStoreWrapper keyStoreWrapper = new KeyStoreWrapper(KeyStoreWrapper.USER_ORGANISATION_INFO_ALIAS);
|
||||||
String decrypted = keyStoreWrapper.decrypt(preferences.getString(USER_ORG_INFOS, ""));
|
String decrypted = keyStoreWrapper.decrypt(preferences.getString(USER_ORG_INFOS, ""));
|
||||||
return new Gson().fromJson(decrypted, Organisation.class);
|
return new Gson().fromJson(decrypted, Organisation.class);
|
||||||
} catch (NoSuchPaddingException e) {
|
} catch (NoSuchPaddingException | NoSuchAlgorithmException | InvalidAlgorithmParameterException | InvalidKeyException | BadPaddingException | IllegalBlockSizeException e) {
|
||||||
e.printStackTrace();
|
|
||||||
} catch (NoSuchAlgorithmException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (InvalidAlgorithmParameterException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (InvalidKeyException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (BadPaddingException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (IllegalBlockSizeException e) {
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,8 +209,6 @@ public class PreferenceManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private List<SyncInformation> cachedSyncInformationList;
|
|
||||||
|
|
||||||
private void loadSyncInformationList() {
|
private void loadSyncInformationList() {
|
||||||
KeyStoreWrapper ksw = new KeyStoreWrapper(KeyStoreWrapper.SYNC_INFORMATION_ALIAS);
|
KeyStoreWrapper ksw = new KeyStoreWrapper(KeyStoreWrapper.SYNC_INFORMATION_ALIAS);
|
||||||
String storedSyncInfoString = preferences.getString(SYNC_INFO, null);
|
String storedSyncInfoString = preferences.getString(SYNC_INFO, null);
|
||||||
|
@ -282,6 +266,11 @@ public class PreferenceManager {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add or update a {@link SyncInformation} to local storage
|
||||||
|
*
|
||||||
|
* @param syncInformation to be added
|
||||||
|
*/
|
||||||
public void addSyncInformation(SyncInformation syncInformation) {
|
public void addSyncInformation(SyncInformation syncInformation) {
|
||||||
if (cachedSyncInformationList == null) {
|
if (cachedSyncInformationList == null) {
|
||||||
loadSyncInformationList();
|
loadSyncInformationList();
|
||||||
|
@ -330,11 +319,20 @@ public class PreferenceManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean getShowLocalSyncsOnly() {
|
||||||
|
return preferences.getBoolean(SHOW_MISPBUMP_SYNCS_ONLY, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShowLocalSyncsOnly(boolean showLocalSyncsOnly) {
|
||||||
|
SharedPreferences.Editor editor = preferences.edit();
|
||||||
|
editor.putBoolean(SHOW_MISPBUMP_SYNCS_ONLY, showLocalSyncsOnly);
|
||||||
|
editor.apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void clearAllData() {
|
public void clearAllData() {
|
||||||
SharedPreferences.Editor editor = preferences.edit();
|
SharedPreferences.Editor editor = preferences.edit();
|
||||||
|
|
||||||
// clearServerUrl();
|
|
||||||
// clearAutomationKey();
|
|
||||||
clearUploadInformation();
|
clearUploadInformation();
|
||||||
|
|
||||||
editor.clear();
|
editor.clear();
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<alpha
|
|
||||||
android:interpolator="@android:anim/accelerate_interpolator"
|
|
||||||
android:fromAlpha="0.0"
|
|
||||||
android:toAlpha="1.0"
|
|
||||||
android:duration="@android:integer/config_shortAnimTime"
|
|
||||||
/>
|
|
||||||
</set>
|
|
|
@ -1,10 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<alpha
|
|
||||||
android:interpolator="@android:anim/accelerate_interpolator"
|
|
||||||
android:fromAlpha="1.0"
|
|
||||||
android:toAlpha="0.0"
|
|
||||||
android:duration="@android:integer/config_shortAnimTime"
|
|
||||||
/>
|
|
||||||
</set>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<translate
|
|
||||||
android:fromYDelta="100%p"
|
|
||||||
android:toYDelta="0"
|
|
||||||
android:duration="300"
|
|
||||||
/>
|
|
||||||
<alpha
|
|
||||||
android:fromAlpha="0.0"
|
|
||||||
android:toAlpha="1.0"
|
|
||||||
android:duration="300"
|
|
||||||
/>
|
|
||||||
</set>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<translate
|
|
||||||
android:fromYDelta="0"
|
|
||||||
android:toYDelta="-100%p"
|
|
||||||
android:duration="300"
|
|
||||||
/>
|
|
||||||
<alpha
|
|
||||||
android:fromAlpha="1.0"
|
|
||||||
android:toAlpha="0.0"
|
|
||||||
android:duration="300"
|
|
||||||
/>
|
|
||||||
</set>
|
|
|
@ -1,15 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
|
|
||||||
<scale
|
|
||||||
android:duration="500"
|
|
||||||
android:fromXScale="1.0"
|
|
||||||
android:fromYScale="0.0"
|
|
||||||
android:pivotX="50%"
|
|
||||||
android:pivotY="10%"
|
|
||||||
android:toXScale="1.0"
|
|
||||||
android:toYScale="1.0"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</set>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<translate
|
|
||||||
android:fromXDelta="50%p"
|
|
||||||
android:toXDelta="0"
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
/>
|
|
||||||
<alpha
|
|
||||||
android:fromAlpha="0.0"
|
|
||||||
android:toAlpha="1.0"
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
/>
|
|
||||||
</set>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<translate
|
|
||||||
android:fromXDelta="0"
|
|
||||||
android:toXDelta="-50%p"
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
/>
|
|
||||||
<alpha
|
|
||||||
android:fromAlpha="1.0"
|
|
||||||
android:toAlpha="0.0"
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
/>
|
|
||||||
</set>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:interpolator="@android:interpolator/accelerate_cubic"
|
|
||||||
android:duration="300"
|
|
||||||
android:propertyName="x"
|
|
||||||
android:valueFrom="1000"
|
|
||||||
android:valueTo="0"
|
|
||||||
android:valueType="floatType"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</set>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:interpolator="@android:interpolator/accelerate_cubic"
|
|
||||||
android:duration="300"
|
|
||||||
android:propertyName="x"
|
|
||||||
android:valueFrom="-1000"
|
|
||||||
android:valueTo="0"
|
|
||||||
android:valueType="floatType"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</set>
|
|
|
@ -1,13 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:duration="300"
|
|
||||||
android:propertyName="x"
|
|
||||||
android:valueFrom="0"
|
|
||||||
android:valueTo="1000"
|
|
||||||
android:valueType="floatType"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</set>
|
|
|
@ -1,13 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:duration="300"
|
|
||||||
android:propertyName="x"
|
|
||||||
android:valueFrom="0"
|
|
||||||
android:valueTo="-1000"
|
|
||||||
android:valueType="floatType"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</set>
|
|
|
@ -42,9 +42,7 @@
|
||||||
app:layout_constraintEnd_toStartOf="@id/material_preference_switch"
|
app:layout_constraintEnd_toStartOf="@id/material_preference_switch"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/material_preference_title"
|
app:layout_constraintTop_toBottomOf="@id/material_preference_title"
|
||||||
tools:text="Subtitle"
|
tools:text="Subtitle" />
|
||||||
android:inAnimation="@anim/push_up_in"
|
|
||||||
android:outAnimation="@anim/push_up_out"/>
|
|
||||||
|
|
||||||
<Switch
|
<Switch
|
||||||
android:id="@+id/material_preference_switch"
|
android:id="@+id/material_preference_switch"
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<PreferenceScreen
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
|
|
||||||
<!-- <PreferenceCategory android:title="@string/preference_category_general">-->
|
|
||||||
<!-- <Preference-->
|
|
||||||
<!-- android:key="PREF_DELETE_ALL_SYNCS"-->
|
|
||||||
<!-- android:icon="@drawable/ic_delete_forever"-->
|
|
||||||
<!-- android:title="@string/preference_delete_all_syncs"-->
|
|
||||||
<!-- android:summary="@string/preference_delete_all_syncs_summary"/>-->
|
|
||||||
<!-- </PreferenceCategory>-->
|
|
||||||
|
|
||||||
<PreferenceCategory android:title="@string/preference_category_information">
|
|
||||||
<Preference
|
|
||||||
android:icon="@drawable/ic_github"
|
|
||||||
android:title="Github"
|
|
||||||
android:summary="@string/preference_github_summary">
|
|
||||||
<intent
|
|
||||||
android:action="android.intent.action.VIEW"
|
|
||||||
android:data="https://github.com/MISP/misp-bump"/>
|
|
||||||
</Preference>
|
|
||||||
|
|
||||||
<Preference
|
|
||||||
android:icon="@drawable/ic_info_outline_dark"
|
|
||||||
android:title="Version"
|
|
||||||
android:summary="1.1.2"/>
|
|
||||||
</PreferenceCategory>
|
|
||||||
</PreferenceScreen>
|
|
Loading…
Reference in New Issue