diff --git a/.gitignore b/.gitignore
index a4990aec..e7c41ef6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,22 +11,4 @@
/app/build
-.idea/.name
-
-.idea/compiler.xml
-
-.idea/copyright/profiles_settings.xml
-
-.idea/encodings.xml
-
-.idea/gradle.xml
-
-.idea/misc.xml
-
-.idea/modules.xml
-
-.idea/runConfigurations.xml
-
-.idea/vcs.xml
-
-.idea/caches/
+.idea
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 261e8c49..f90e990e 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -42,17 +42,10 @@
-
-
- * See
- * Android Design: Settings for design guidelines and the Settings
- * API Guide for more information on developing a Settings UI.
- */
-public class DownloadSettingsActivity extends AppCompatPreferenceActivity {
- /**
- * Helper method to determine if the device has an extra-large screen. For
- * example, 10" tablets are extra-large.
- */
- private static boolean isXLargeTablet(final Context context) {
- return (context.getResources().getConfiguration().screenLayout
- & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
- }
-
- @Override
- protected void onCreate(final Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setupActionBar();
- }
-
- /**
- * Set up the {@link ActionBar}, if the API is available.
- */
- private void setupActionBar() {
- final ActionBar actionBar = getSupportActionBar();
- if (actionBar != null) {
- // Show the Up button in the action bar.
- actionBar.setDisplayHomeAsUpEnabled(true);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean onIsMultiPane() {
- return isXLargeTablet(this);
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- @TargetApi(Build.VERSION_CODES.HONEYCOMB)
- public void onBuildHeaders(final List target) {
- loadHeadersFromResource(R.xml.pref_download_headers, target);
- }
-
- /**
- * This method stops fragment injection in malicious applications.
- * Make sure to deny any unknown fragments here.
- */
- protected boolean isValidFragment(final String fragmentName) {
- return PreferenceFragment.class.getName().equals(fragmentName)
- || DownloadPreferenceFragment.class.getName().equals(fragmentName);
- }
-
- @TargetApi(Build.VERSION_CODES.HONEYCOMB)
- public static class DownloadPreferenceFragment extends PreferenceFragment {
-
- @Override
- public void onCreate(final Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setHasOptionsMenu(true);
- addPreferencesFromResource(R.xml.pref_download);
- }
-
- @Override
- public boolean onOptionsItemSelected(final MenuItem item) {
- final int id = item.getItemId();
- if (id == android.R.id.home) {
- startActivity(new Intent(getActivity(), DownloadSettingsActivity.class));
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- }
-}
diff --git a/app/src/main/java/com/greenaddress/abcore/LogActivity.java b/app/src/main/java/com/greenaddress/abcore/LogActivity.java
index 83ec80be..1a997af9 100755
--- a/app/src/main/java/com/greenaddress/abcore/LogActivity.java
+++ b/app/src/main/java/com/greenaddress/abcore/LogActivity.java
@@ -15,7 +15,7 @@
import java.io.IOException;
import java.io.RandomAccessFile;
-public class LogActivity extends AppCompatActivity {
+public class LogActivity extends ABCoreBaseActivity {
private static final int LOOP_DELAY = 600;
@@ -63,9 +63,7 @@ protected void onCreate(Bundle savedInstanceState) {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
final String useDistribution = prefs.getString("usedistribution", "core");
- final Toolbar toolbar = findViewById(R.id.toolbar);
- toolbar.setSubtitle(getString(R.string.subtitle, useDistribution));
- setSupportActionBar(toolbar);
+ setUpTopNavBar();
final String daemon = "liquid".equals(useDistribution) ? "/liquidv1/debug.log" : "/debug.log";
mLogFile = new File(Utils.getDataDir(this) + (Utils.isTestnet(this) ? "/testnet3/debug.log" : daemon));
diff --git a/app/src/main/java/com/greenaddress/abcore/MainActivity.java b/app/src/main/java/com/greenaddress/abcore/MainActivity.java
index e4d9377a..3dbcf77b 100755
--- a/app/src/main/java/com/greenaddress/abcore/MainActivity.java
+++ b/app/src/main/java/com/greenaddress/abcore/MainActivity.java
@@ -34,7 +34,7 @@
import com.google.zxing.qrcode.encoder.Encoder;
-public class MainActivity extends AppCompatActivity {
+public class MainActivity extends ABCoreBaseActivity {
private final static String TAG = MainActivity.class.getName();
private RPCResponseReceiver mRpcResponseReceiver;
private TextView mTvStatus;
@@ -137,12 +137,10 @@ public void onCheckedChanged(final CompoundButton buttonView, final boolean isCh
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- final Toolbar toolbar = findViewById(R.id.toolbar);
mTvStatus = findViewById(R.id.textViewStatus);
mSwitchCore = findViewById(R.id.switchCore);
mQrCodeText = findViewById(R.id.textViewQr);
mImageViewQr = findViewById(R.id.qrcodeImageView);
- setSupportActionBar(toolbar);
setSwitch();
final View.OnClickListener cliboard = new View.OnClickListener() {
@@ -192,6 +190,7 @@ public void onResume() {
final String useDistribution = prefs.getString("usedistribution", "core");
getSupportActionBar().setSubtitle(getString(R.string.subtitle, useDistribution));
+
final TextView mTvDaemon = findViewById(R.id.textViewDaemon);
final String daemonVersion = "knots".equals(useDistribution) ? Packages.BITCOIN_KNOTS_NDK : "liquid".equals(useDistribution) ? Packages.BITCOIN_LIQUID_NDK : Packages.BITCOIN_NDK;
mTvDaemon.setText(getString(R.string.subtitle, useDistribution + " " + daemonVersion));
@@ -199,37 +198,6 @@ public void onResume() {
mMsgHandler.postDelayed(runnableCode, 1000);
}
- @Override
- public boolean onCreateOptionsMenu(final Menu menu) {
- final MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.menu, menu);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(final MenuItem item) {
- // Handle item selection
- switch (item.getItemId()) {
- case R.id.configuration:
- startActivity(new Intent(this, SettingsActivity.class));
- return true;
- case R.id.peerview:
- startActivity(new Intent(this, PeerActivity.class));
- return true;
- case R.id.debug:
- startActivity(new Intent(this, LogActivity.class));
- return true;
- case R.id.console:
- startActivity(new Intent(this, ConsoleActivity.class));
- return true;
- case R.id.about:
- startActivity(new Intent(this, AboutActivity.class));
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
-
public class RPCResponseReceiver extends BroadcastReceiver {
public static final String ACTION_RESP =
"com.greenaddress.intent.action.RPC_PROCESSED";
diff --git a/app/src/main/java/com/greenaddress/abcore/PeerActivity.java b/app/src/main/java/com/greenaddress/abcore/PeerActivity.java
index 1d1b0dc9..00193a60 100755
--- a/app/src/main/java/com/greenaddress/abcore/PeerActivity.java
+++ b/app/src/main/java/com/greenaddress/abcore/PeerActivity.java
@@ -6,18 +6,23 @@
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.SharedPreferences;
import android.os.Bundle;
+import android.preference.PreferenceManager;
import android.view.View;
import android.widget.ArrayAdapter;
+import android.widget.ListView;
import android.widget.ProgressBar;
+import androidx.appcompat.widget.Toolbar;
+
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import java.util.ArrayList;
import java.util.List;
-public class PeerActivity extends ListActivity {
+public class PeerActivity extends ABCoreBaseActivity {
private final List listItems = new ArrayList<>();
private ArrayAdapter adapter;
@@ -27,12 +32,14 @@ public class PeerActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- adapter = new ArrayAdapter<>(this,
- android.R.layout.simple_list_item_1,
- listItems);
+ adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, listItems);
setContentView(R.layout.activity_peer);
- setListAdapter(adapter);
+ ListView list=findViewById(R.id.listview);
+ list.setAdapter(adapter);
+
+ setUpTopNavBar();
+
final FloatingActionButton fab = findViewById(R.id.fab);
fab.setVisibility(View.GONE);
fab.setOnClickListener(new View.OnClickListener() {
diff --git a/app/src/main/java/com/greenaddress/abcore/SettingsActivity.java b/app/src/main/java/com/greenaddress/abcore/SettingsActivity.java
index e1d1325d..07a4b7e8 100755
--- a/app/src/main/java/com/greenaddress/abcore/SettingsActivity.java
+++ b/app/src/main/java/com/greenaddress/abcore/SettingsActivity.java
@@ -36,6 +36,7 @@
* API Guide for more information on developing a Settings UI.
*/
public class SettingsActivity extends AppCompatPreferenceActivity {
+
private final static String TAG = SettingsActivity.class.getName();
/**
@@ -47,6 +48,7 @@ private static boolean isXLargeTablet(final Context context) {
& Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
}
+
private static void deleteRF(final File f) {
Log.v(TAG, "Deleting " + f.getAbsolutePath() + "/" + f.getName());
@@ -58,6 +60,8 @@ private static void deleteRF(final File f) {
f.delete();
}
+
+
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -98,8 +102,9 @@ public void onBuildHeaders(final List target) {
*/
protected boolean isValidFragment(final String fragmentName) {
return PreferenceFragment.class.getName().equals(fragmentName)
- || AndroidPreferenceFragment.class.getName().equals(fragmentName)
- || CorePreferenceFragment.class.getName().equals(fragmentName);
+ || SettingsActivity.CorePreferenceFragment.class.getName().equals(fragmentName)
+ || SettingsActivity.AndroidPreferenceFragment.class.getName().equals(fragmentName)
+ || SettingsActivity.AboutFragment.class.getName().equals(fragmentName);
}
/**
@@ -112,7 +117,6 @@ public static class CorePreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setHasOptionsMenu(true);
final Properties p = new Properties();
try {
@@ -192,16 +196,6 @@ public boolean onPreferenceChange(final Preference preference, final Object o) {
}
});
}
-
- @Override
- public boolean onOptionsItemSelected(final MenuItem item) {
- final int id = item.getItemId();
- if (id == android.R.id.home) {
- startActivity(new Intent(getActivity(), SettingsActivity.class));
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@@ -210,7 +204,6 @@ public static class AndroidPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setHasOptionsMenu(true);
addPreferencesFromResource(R.xml.pref_android);
findPreference("deletecore").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@@ -239,15 +232,16 @@ public boolean onPreferenceClick(final Preference preference) {
}
});
}
+ }
+
+ @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+ public static class AboutFragment extends PreferenceFragment {
@Override
- public boolean onOptionsItemSelected(final MenuItem item) {
- final int id = item.getItemId();
- if (id == android.R.id.home) {
- startActivity(new Intent(getActivity(), SettingsActivity.class));
- return true;
- }
- return super.onOptionsItemSelected(item);
+ public void onCreate(final Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.pref_about);
}
+
}
}
diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml
deleted file mode 100755
index bb35214e..00000000
--- a/app/src/main/res/layout/activity_about.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_console.xml b/app/src/main/res/layout/activity_console.xml
index e08a4606..d28d5076 100644
--- a/app/src/main/res/layout/activity_console.xml
+++ b/app/src/main/res/layout/activity_console.xml
@@ -25,7 +25,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/editText2"
- android:layout_below="@+id/bar_layout"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentEnd="true"
@@ -52,20 +51,4 @@
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_download.xml b/app/src/main/res/layout/activity_download.xml
index 46cb9f84..71bbdf0f 100755
--- a/app/src/main/res/layout/activity_download.xml
+++ b/app/src/main/res/layout/activity_download.xml
@@ -1,5 +1,5 @@
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index f0747c1a..8b5d35a2 100755
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -13,20 +13,6 @@
android:orientation="vertical"
tools:context="com.greenaddress.abcore.MainActivity">
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_peer.xml b/app/src/main/res/layout/activity_peer.xml
index 63271f08..192f7b8f 100755
--- a/app/src/main/res/layout/activity_peer.xml
+++ b/app/src/main/res/layout/activity_peer.xml
@@ -8,21 +8,43 @@
android:fitsSystemWindows="true"
tools:context=".PeerActivity">
-
+ android:layout_height="match_parent"
+ android:paddingBottom="@dimen/activity_vertical_margin"
+ android:paddingLeft="@dimen/activity_horizontal_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin"
+ android:paddingTop="@dimen/activity_vertical_margin"
+ app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
-
+
+
+ android:layout_height="match_parent"
+ android:paddingTop="@dimen/activity_vertical_margin"
+ android:drawSelectorOnTop="false" android:layout_below="@+id/textView2"/>
+
+
+
-
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentStart="true"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentEnd="true"
+ android:maxLines="1"
+ android:minLines="1"/>
diff --git a/app/src/main/res/layout/content_peer.xml b/app/src/main/res/layout/content_peer.xml
deleted file mode 100755
index 957a4e20..00000000
--- a/app/src/main/res/layout/content_peer.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml
index b9f8903a..ca476690 100755
--- a/app/src/main/res/menu/menu.xml
+++ b/app/src/main/res/menu/menu.xml
@@ -1,5 +1,7 @@
\ No newline at end of file
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 1edc2f1a..ed6369ad 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -5,7 +5,6 @@
Bitcoin Konfiguration
Konfiguration herunterladen
Bitcoin.conf manuell editieren
- Download beginnen
Kern auf OFF stellen
Kern auf ON stellen
Einstellungen herunterladen
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 6a89f5c4..8dc27f39 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -7,7 +7,6 @@
Configuration Supplémentaire
Peers
L\'application nécessite Bitcoin pour fonctionner. Cliquez sur le bouton pour commencer à télécharger et à configurer Bitcoin
- Télécharger
Échec, voulez-vous réessayer?
Veuillez patienter, récupération, déballage et configuration de Bitcoin…
Activer
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 5ade78eb..4a2d3fa0 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -7,7 +7,6 @@
Configuratione aggiuntiva
Nodi
Questa app richiede Bitcoin per funzionare. Tocca il bottone per far partire lo scaricamento e la configurazione di Bitcoin
- Fai partire il download
Fallito, vuoi riprovare?
Per piacere aspetta. Scaricamento e configurazione di Bitcoin …
Porta Core ON
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 7cb99bde..f11f7450 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -1,12 +1,3 @@
-
- - core
- - knots
- - liquid
-
-
- - Bitcoin Core
- - Bitcoin Knots
- - Blockstream Liquid
-
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f3a33592..9304731c 100755
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -11,16 +11,29 @@
Daemon: %1$s
Status: %1$s
Manually edit bitcoin.conf
- Daemon Configuration
+ Daemon Settings
Download Configuration
- Extra Configuration
+ Application Settings
Peers
- The app requires a fullnode daemon to function. Click on the button to start downloading and configuring the daemon
- Start download
+ The app requires a fullnode daemon to function. Click on one of the buttons to start downloading and configuring the daemon
+ Download Bitcoin Core
+ Download Bitcoin Knots
+ Download Blockstream Liquid
Failure, want to retry?
The Application Binary Interfaces supported by this device aren\'t suppored by ABCore: %1$s
Please wait. Fetching, unpacking and configuring the daemon…
Switch ON
Switch OFF
Processed %1d%% (block height %2d)
+ Settings
+ About ABCore
+ ABCore is an Android app that makes it easy to run Bitcoin Core by acting as a wrapper.
+ Source Code
+ http://www.github.com/greenaddress/abcore
+ License
+ http://www.opensource.org/licenses/MIT
+ Version
+ Contributors
+ Development\n\tLawrence Nahum\n\ttwitter.com/LarryBitcoin\n\nIcon design\n\tOttavio Fontolan\n\totta88.box@gmail.com\n\nSpecial thanks to the Bitcoin Core Dev Team github.com/bitcoin
+
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 987e369f..77861cb7 100755
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,6 +1,6 @@
-
diff --git a/app/src/main/res/xml/pref_about.xml b/app/src/main/res/xml/pref_about.xml
new file mode 100755
index 00000000..9f02cbbd
--- /dev/null
+++ b/app/src/main/res/xml/pref_about.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/xml/pref_download.xml b/app/src/main/res/xml/pref_download.xml
deleted file mode 100755
index 6d410716..00000000
--- a/app/src/main/res/xml/pref_download.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/xml/pref_download_headers.xml b/app/src/main/res/xml/pref_download_headers.xml
deleted file mode 100755
index c5f5429c..00000000
--- a/app/src/main/res/xml/pref_download_headers.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
diff --git a/app/src/main/res/xml/pref_headers.xml b/app/src/main/res/xml/pref_headers.xml
index a46c3683..e96b2fed 100755
--- a/app/src/main/res/xml/pref_headers.xml
+++ b/app/src/main/res/xml/pref_headers.xml
@@ -10,5 +10,9 @@
android:icon="@drawable/ic_info_black_24dp"
android:title="@string/pref_header_android"/>
+