From b5ded700fe83144c3a39800de5aeb8b3ac70fbe9 Mon Sep 17 00:00:00 2001 From: m2049r <30435443+m2049r@users.noreply.github.com> Date: Mon, 28 Aug 2017 22:08:36 +0200 Subject: [PATCH 1/3] toolbar info action for wallet activity --- .../com/m2049r/xmrwallet/LoginActivity.java | 2 +- .../com/m2049r/xmrwallet/WalletActivity.java | 40 ++++++++++++++----- .../drawable/ic_navigate_next_black_24dp.xml | 9 ----- .../drawable/ic_notifications_black_24dp.xml | 9 ----- .../main/res/drawable/ic_sync_black_24dp.xml | 9 ----- app/src/main/res/layout/login_activity.xml | 2 +- app/src/main/res/layout/wallet_activity.xml | 2 +- app/src/main/res/menu/wallet_menu.xml | 12 ++++++ app/src/main/res/values/strings.xml | 2 + 9 files changed, 48 insertions(+), 39 deletions(-) delete mode 100644 app/src/main/res/drawable/ic_navigate_next_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_notifications_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_sync_black_24dp.xml create mode 100644 app/src/main/res/menu/wallet_menu.xml diff --git a/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java b/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java index fde65fc..c4a94a8 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java +++ b/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java @@ -66,7 +66,7 @@ public class LoginActivity extends AppCompatActivity return; } - toolbar = (Toolbar) findViewById(R.id.tbLogin); + toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); if (Helper.getWritePermission(this)) { diff --git a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java index af07d81..9d3e7f6 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java +++ b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java @@ -29,7 +29,9 @@ import android.os.PowerManager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; -import android.view.View; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.widget.Toast; import com.m2049r.xmrwallet.model.PendingTransaction; @@ -105,6 +107,27 @@ public class WalletActivity extends AppCompatActivity implements WalletFragment. super.onDestroy(); } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + if (!haveWallet) return true; + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.wallet_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.action_info: + onWalletDetails(); + break; + default: + break; + } + + return true; + } + @Override protected void onCreate(Bundle savedInstanceState) { Log.d(TAG, "onCreate()"); @@ -114,15 +137,9 @@ public class WalletActivity extends AppCompatActivity implements WalletFragment. return; } - toolbar = (Toolbar) findViewById(R.id.tbWallet); + toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle(R.string.app_name); setSupportActionBar(toolbar); - toolbar.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - onWalletDetails(); - } - }); Fragment walletFragment = new WalletFragment(); getFragmentManager().beginTransaction() @@ -347,6 +364,8 @@ public class WalletActivity extends AppCompatActivity implements WalletFragment. }); } + boolean haveWallet = false; + @Override public void onWalletStarted(final boolean success) { runOnUiThread(new Runnable() { @@ -358,6 +377,9 @@ public class WalletActivity extends AppCompatActivity implements WalletFragment. }); if (!success) { finish(); + } else { + haveWallet = true; + invalidateOptionsMenu(); } } @@ -555,7 +577,7 @@ public class WalletActivity extends AppCompatActivity implements WalletFragment. private void onWalletDetails() { Fragment fragment = getFragmentManager().findFragmentById(R.id.fragment_container); - if (fragment instanceof WalletFragment) { + if (!(fragment instanceof GenerateReviewFragment)) { Bundle extras = new Bundle(); extras.putString("type", GenerateReviewFragment.VIEW_WALLET); replaceFragment(new GenerateReviewFragment(), null, extras); diff --git a/app/src/main/res/drawable/ic_navigate_next_black_24dp.xml b/app/src/main/res/drawable/ic_navigate_next_black_24dp.xml deleted file mode 100644 index 2483512..0000000 --- a/app/src/main/res/drawable/ic_navigate_next_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_notifications_black_24dp.xml b/app/src/main/res/drawable/ic_notifications_black_24dp.xml deleted file mode 100644 index e3400cf..0000000 --- a/app/src/main/res/drawable/ic_notifications_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_sync_black_24dp.xml b/app/src/main/res/drawable/ic_sync_black_24dp.xml deleted file mode 100644 index 5a283aa..0000000 --- a/app/src/main/res/drawable/ic_sync_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - \ No newline at end of file diff --git a/app/src/main/res/layout/login_activity.xml b/app/src/main/res/layout/login_activity.xml index f4fc400..8290c2b 100644 --- a/app/src/main/res/layout/login_activity.xml +++ b/app/src/main/res/layout/login_activity.xml @@ -6,7 +6,7 @@ android:orientation="vertical"> + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 10a0958..24d0fba 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,6 +3,8 @@ Select Wallet Wallet + Info + [<user>:<pass>@]<daemonhost>[:<port>] Net Selection TestNet From 8ff8be6f609fd8bd107c2f187a6b30a347de286e Mon Sep 17 00:00:00 2001 From: m2049r <30435443+m2049r@users.noreply.github.com> Date: Mon, 28 Aug 2017 23:14:53 +0200 Subject: [PATCH 2/3] list context menu + tweaks --- .../com/m2049r/xmrwallet/LoginFragment.java | 47 ++++++++++++++++++- .../main/res/layout/gen_review_fragment.xml | 6 +-- app/src/main/res/layout/login_activity.xml | 1 + app/src/main/res/layout/wallet_activity.xml | 1 + app/src/main/res/menu/list_menu.xml | 8 ++++ app/src/main/res/menu/wallet_menu.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 7 files changed, 61 insertions(+), 6 deletions(-) create mode 100644 app/src/main/res/menu/list_menu.xml diff --git a/app/src/main/java/com/m2049r/xmrwallet/LoginFragment.java b/app/src/main/java/com/m2049r/xmrwallet/LoginFragment.java index 75e2a93..0cb557d 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/LoginFragment.java +++ b/app/src/main/java/com/m2049r/xmrwallet/LoginFragment.java @@ -23,8 +23,11 @@ import android.os.Bundle; import android.os.StrictMode; import android.support.design.widget.FloatingActionButton; import android.util.Log; +import android.view.ContextMenu; import android.view.KeyEvent; import android.view.LayoutInflater; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; @@ -177,6 +180,7 @@ public class LoginFragment extends Fragment { android.R.layout.simple_list_item_1, android.R.id.text1, this.displayedList); listView.setAdapter(adapter); + registerForContextMenu(listView); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override @@ -215,7 +219,7 @@ public class LoginFragment extends Fragment { } }); - listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { +/* listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { // Difference to opening wallet is that we don't need a daemon set @@ -239,6 +243,7 @@ public class LoginFragment extends Fragment { return true; } }); +*/ loadList(); return view; } @@ -386,4 +391,44 @@ public class LoginFragment extends Fragment { mgr.setDaemon(daemonAddress, testnet, username, password); return true; } + + @Override + public void onCreateContextMenu(ContextMenu menu, View v, + ContextMenu.ContextMenuInfo menuInfo) { + super.onCreateContextMenu(menu, v, menuInfo); + MenuInflater inflater = getActivity().getMenuInflater(); + inflater.inflate(R.menu.list_menu, menu); + } + + @Override + public boolean onContextItemSelected(MenuItem item) { + AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); + switch (item.getItemId()) { + case R.id.action_info: + String listItem = (String) listView.getItemAtPosition(info.position); + return showInfo(listItem); + default: + return super.onContextItemSelected(item); + } + } + + private boolean showInfo(String listItem) { + + if (listItem.length() <= (WALLETNAME_PREAMBLE_LENGTH)) { + Toast.makeText(getActivity(), getString(R.string.panic), Toast.LENGTH_LONG).show(); + return true; + } + + String wallet = listItem.substring(WALLETNAME_PREAMBLE_LENGTH); + String x = isMainNet() ? "4" : "9A"; + if (x.indexOf(listItem.charAt(1)) < 0) { + Toast.makeText(getActivity(), getString(R.string.prompt_wrong_net), Toast.LENGTH_LONG).show(); + return true; + } + + checkAndSetWalletDaemon("", !isMainNet()); // just set selected net + + activityCallback.onWalletDetails(wallet); + return true; + } } diff --git a/app/src/main/res/layout/gen_review_fragment.xml b/app/src/main/res/layout/gen_review_fragment.xml index a162f4b..196c803 100644 --- a/app/src/main/res/layout/gen_review_fragment.xml +++ b/app/src/main/res/layout/gen_review_fragment.xml @@ -7,7 +7,7 @@ diff --git a/app/src/main/res/layout/wallet_activity.xml b/app/src/main/res/layout/wallet_activity.xml index 8290c2b..48d797b 100644 --- a/app/src/main/res/layout/wallet_activity.xml +++ b/app/src/main/res/layout/wallet_activity.xml @@ -14,6 +14,7 @@ diff --git a/app/src/main/res/menu/list_menu.xml b/app/src/main/res/menu/list_menu.xml new file mode 100644 index 0000000..1866aac --- /dev/null +++ b/app/src/main/res/menu/list_menu.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/wallet_menu.xml b/app/src/main/res/menu/wallet_menu.xml index 58fac06..4e18ba9 100644 --- a/app/src/main/res/menu/wallet_menu.xml +++ b/app/src/main/res/menu/wallet_menu.xml @@ -6,7 +6,7 @@ android:id="@+id/action_info" android:icon="@drawable/ic_info_black_24dp" android:orderInCategory="100" - android:title="Info" + android:title="@string/menu_info" app:showAsAction="always" /> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 24d0fba..b5501cc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,7 +3,7 @@ Select Wallet Wallet - Info + Details [<user>:<pass>@]<daemonhost>[:<port>] Net Selection From ea7c7d2fdbf1db1f3809ce0c3f1895d32bd843d8 Mon Sep 17 00:00:00 2001 From: m2049r <30435443+m2049r@users.noreply.github.com> Date: Mon, 28 Aug 2017 23:46:18 +0200 Subject: [PATCH 3/3] net colour in toolbar --- .../main/java/com/m2049r/xmrwallet/LoginActivity.java | 10 +++++++++- .../main/java/com/m2049r/xmrwallet/LoginFragment.java | 5 +++++ .../main/java/com/m2049r/xmrwallet/WalletActivity.java | 7 +++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java b/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java index c4a94a8..996d351 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java +++ b/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java @@ -27,7 +27,6 @@ import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; @@ -213,6 +212,15 @@ public class LoginActivity extends AppCompatActivity public void setSubtitle(String subtitle) { toolbar.setSubtitle(subtitle); } + + @Override + public void setTestNet(boolean testnet) { + if (testnet) { + toolbar.setBackgroundResource(R.color.colorPrimaryDark); + } else { + toolbar.setBackgroundResource(R.color.moneroOrange); + } + } //////////////////////////////////////// //////////////////////////////////////// diff --git a/app/src/main/java/com/m2049r/xmrwallet/LoginFragment.java b/app/src/main/java/com/m2049r/xmrwallet/LoginFragment.java index 0cb557d..fdbe0f4 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/LoginFragment.java +++ b/app/src/main/java/com/m2049r/xmrwallet/LoginFragment.java @@ -92,6 +92,8 @@ public class LoginFragment extends Fragment { void setSubtitle(String subtitle); + void setTestNet(boolean testnet); + } @Override @@ -160,6 +162,7 @@ public class LoginFragment extends Fragment { @Override public void onClick(View v) { boolean mainnet = ((ToggleButton) v).isChecked(); // current state + activityCallback.setTestNet(!mainnet); savePrefs(true); // use previous state as we just clicked it if (mainnet) { setDaemon(daemonMainNet); @@ -282,6 +285,8 @@ public class LoginFragment extends Fragment { void setMainNet(boolean mainnet) { tbMainNet.setChecked(mainnet); + activityCallback.setTestNet(!mainnet); + } String getDaemon() { diff --git a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java index 9d3e7f6..a3a1aab 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java +++ b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java @@ -37,6 +37,7 @@ import android.widget.Toast; import com.m2049r.xmrwallet.model.PendingTransaction; import com.m2049r.xmrwallet.model.TransactionInfo; import com.m2049r.xmrwallet.model.Wallet; +import com.m2049r.xmrwallet.model.WalletManager; import com.m2049r.xmrwallet.service.WalletService; import com.m2049r.xmrwallet.util.TxData; @@ -140,6 +141,12 @@ public class WalletActivity extends AppCompatActivity implements WalletFragment. toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle(R.string.app_name); setSupportActionBar(toolbar); + boolean testnet = WalletManager.getInstance().isTestNet(); + if (testnet) { + toolbar.setBackgroundResource(R.color.colorPrimaryDark); + } else { + toolbar.setBackgroundResource(R.color.moneroOrange); + } Fragment walletFragment = new WalletFragment(); getFragmentManager().beginTransaction()