diff --git a/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java b/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java index fde65fc..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; @@ -66,7 +65,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)) { @@ -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 75e2a93..fdbe0f4 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; @@ -89,6 +92,8 @@ public class LoginFragment extends Fragment { void setSubtitle(String subtitle); + void setTestNet(boolean testnet); + } @Override @@ -157,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); @@ -177,6 +183,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 +222,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 +246,7 @@ public class LoginFragment extends Fragment { return true; } }); +*/ loadList(); return view; } @@ -277,6 +285,8 @@ public class LoginFragment extends Fragment { void setMainNet(boolean mainnet) { tbMainNet.setChecked(mainnet); + activityCallback.setTestNet(!mainnet); + } String getDaemon() { @@ -386,4 +396,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/java/com/m2049r/xmrwallet/WalletActivity.java b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java index af07d81..a3a1aab 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java +++ b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java @@ -29,12 +29,15 @@ 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; 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; @@ -105,6 +108,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 +138,15 @@ 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(); - } - }); + boolean testnet = WalletManager.getInstance().isTestNet(); + if (testnet) { + toolbar.setBackgroundResource(R.color.colorPrimaryDark); + } else { + toolbar.setBackgroundResource(R.color.moneroOrange); + } Fragment walletFragment = new WalletFragment(); getFragmentManager().beginTransaction() @@ -347,6 +371,8 @@ public class WalletActivity extends AppCompatActivity implements WalletFragment. }); } + boolean haveWallet = false; + @Override public void onWalletStarted(final boolean success) { runOnUiThread(new Runnable() { @@ -358,6 +384,9 @@ public class WalletActivity extends AppCompatActivity implements WalletFragment. }); if (!success) { finish(); + } else { + haveWallet = true; + invalidateOptionsMenu(); } } @@ -555,7 +584,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/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 3c30067..48d797b 100644 --- a/app/src/main/res/layout/wallet_activity.xml +++ b/app/src/main/res/layout/wallet_activity.xml @@ -6,7 +6,7 @@ android:orientation="vertical"> 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 new file mode 100644 index 0000000..4e18ba9 --- /dev/null +++ b/app/src/main/res/menu/wallet_menu.xml @@ -0,0 +1,12 @@ + + + + + + \ 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..b5501cc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,6 +3,8 @@ Select Wallet Wallet + Details + [<user>:<pass>@]<daemonhost>[:<port>] Net Selection TestNet