From: Damyan Ivanov Date: Thu, 10 Jan 2019 17:38:19 +0000 (+0000) Subject: delete profile menu as action; hide when only one profile or when a new profile is... X-Git-Tag: v0.3~82 X-Git-Url: https://git.ktnx.net/?a=commitdiff_plain;h=5288da587233a9203d4abcaf7840dc62db2fb294;p=mobile-ledger.git delete profile menu as action; hide when only one profile or when a new profile is edited --- diff --git a/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java b/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java index 96fa9b21..bbcf57fa 100644 --- a/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java +++ b/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java @@ -56,10 +56,11 @@ public final class MobileLedgerProfile { List result = new ArrayList<>(); SQLiteDatabase db = MLDB.getReadableDatabase(); try (Cursor cursor = db.rawQuery("SELECT uuid, name, url, use_authentication, auth_user, " + - "auth_password FROM profiles", null)) + "auth_password FROM profiles order by order_no", null)) { while (cursor.moveToNext()) { - result.add(new MobileLedgerProfile(cursor.getString(0), cursor.getString(1), cursor.getString(2), cursor.getInt(3) == 1, cursor.getString(4), + result.add(new MobileLedgerProfile(cursor.getString(0), cursor.getString(1), + cursor.getString(2), cursor.getInt(3) == 1, cursor.getString(4), cursor.getString(5))); } } diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailActivity.java b/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailActivity.java index 591d147a..982fccfa 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailActivity.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailActivity.java @@ -46,10 +46,10 @@ public class ProfileDetailActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_profile_detail); - Toolbar toolbar = (Toolbar) findViewById(R.id.detail_toolbar); + Toolbar toolbar = findViewById(R.id.detail_toolbar); setSupportActionBar(toolbar); - FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); + FloatingActionButton fab = findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -107,7 +107,8 @@ public class ProfileDetailActivity extends AppCompatActivity { super.onCreateOptionsMenu(menu); Log.d("profiles", "[activity] Creating profile details options menu"); getMenuInflater().inflate(R.menu.profile_details, menu); - menu.findItem(R.id.menuDelete).setOnMenuItemClickListener(item -> { + MenuItem menuDeleteProfile = menu.findItem(R.id.menuDelete); + menuDeleteProfile.setOnMenuItemClickListener(item -> { Log.d("profiles", String.format("deleting profile %s", profile.getUuid())); profile.removeFromDB(); Data.profiles.remove(profile); @@ -116,6 +117,8 @@ public class ProfileDetailActivity extends AppCompatActivity { return true; }); + menuDeleteProfile.setVisible((profile != null) && (Data.profiles.size() > 1)); + return true; } diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailFragment.java b/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailFragment.java index f2111393..5a1b729a 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailFragment.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailFragment.java @@ -56,7 +56,7 @@ public class ProfileDetailFragment extends Fragment { /** * The dummy content this fragment is presenting. */ - private MobileLedgerProfile mItem; + private MobileLedgerProfile mProfile; private TextView url; private LinearLayout authParams; private Switch useAuthentication; @@ -76,18 +76,17 @@ public class ProfileDetailFragment extends Fragment { Log.d("profiles", "[fragment] Creating profile details options menu"); super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.profile_details, menu); - menu.findItem(R.id.menuDelete).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - Log.d("profiles", String.format("[fragment] removing profile %s", mItem.getUuid())); - mItem.removeFromDB(); - Data.profiles.remove(mItem); - if (Data.profile.get().getUuid().equals(mItem.getUuid())) { - Data.profile.set(Data.profiles.get(0)); - } - return false; + final MenuItem menuDeleteProfile = menu.findItem(R.id.menuDelete); + menuDeleteProfile.setOnMenuItemClickListener(item -> { + Log.d("profiles", String.format("[fragment] removing profile %s", mProfile.getUuid())); + mProfile.removeFromDB(); + Data.profiles.remove(mProfile); + if (Data.profile.get().getUuid().equals(mProfile.getUuid())) { + Data.profile.set(Data.profiles.get(0)); } + return false; }); + menuDeleteProfile.setVisible((mProfile != null) && (Data.profiles.size() > 1)); } @Override public void onCreate(Bundle savedInstanceState) { @@ -98,14 +97,14 @@ public class ProfileDetailFragment extends Fragment { // arguments. In a real-world scenario, use a Loader // to load content from a content provider. String uuid = getArguments().getString(ARG_ITEM_ID); - if (uuid != null) - mItem = MobileLedgerProfile.loadUUIDFromDB(getArguments().getString(ARG_ITEM_ID)); + if (uuid != null) mProfile = + MobileLedgerProfile.loadUUIDFromDB(getArguments().getString(ARG_ITEM_ID)); Activity activity = this.getActivity(); if (activity == null) throw new AssertionError(); CollapsingToolbarLayout appBarLayout = activity.findViewById(R.id.toolbar_layout); if (appBarLayout != null) { - if (mItem != null) appBarLayout.setTitle(mItem.getName()); + if (mProfile != null) appBarLayout.setTitle(mProfile.getName()); else appBarLayout.setTitle(getResources().getString(R.string.new_profile_title)); } } @@ -116,24 +115,25 @@ public class ProfileDetailFragment extends Fragment { super.onAttach(context); fab = ((Activity) context).findViewById(R.id.fab); fab.setOnClickListener(v -> { - if (mItem != null) { - mItem.setName(profileName.getText()); - mItem.setUrl(url.getText()); - mItem.setAuthEnabled(useAuthentication.isChecked()); - mItem.setAuthUserName(userName.getText()); - mItem.setAuthPassword(password.getText()); - mItem.storeInDB(); + if (mProfile != null) { + mProfile.setName(profileName.getText()); + mProfile.setUrl(url.getText()); + mProfile.setAuthEnabled(useAuthentication.isChecked()); + mProfile.setAuthUserName(userName.getText()); + mProfile.setAuthPassword(password.getText()); + mProfile.storeInDB(); - if (mItem.getUuid().equals(Data.profile.get().getUuid())) { - Data.profile.set(mItem); + if (mProfile.getUuid().equals(Data.profile.get().getUuid())) { + Data.profile.set(mProfile); } } else { - mItem = new MobileLedgerProfile(profileName.getText(), url.getText(), + mProfile = new MobileLedgerProfile(profileName.getText(), url.getText(), useAuthentication.isChecked(), userName.getText(), password.getText()); - mItem.storeInDB(); - Data.profiles.add(mItem); + mProfile.storeInDB(); + Data.profiles.add(mProfile); + MobileLedgerProfile.storeProfilesOrder(); } Activity activity = getActivity(); @@ -157,13 +157,13 @@ public class ProfileDetailFragment extends Fragment { authParams.setVisibility(isChecked ? View.VISIBLE : View.GONE); }); - if (mItem != null) { - profileName.setText(mItem.getName()); - url.setText(mItem.getUrl()); - useAuthentication.setChecked(mItem.isAuthEnabled()); - authParams.setVisibility(mItem.isAuthEnabled() ? View.VISIBLE : View.GONE); - userName.setText(mItem.isAuthEnabled() ? mItem.getAuthUserName() : ""); - password.setText(mItem.isAuthEnabled() ? mItem.getAuthPassword() : ""); + if (mProfile != null) { + profileName.setText(mProfile.getName()); + url.setText(mProfile.getUrl()); + useAuthentication.setChecked(mProfile.isAuthEnabled()); + authParams.setVisibility(mProfile.isAuthEnabled() ? View.VISIBLE : View.GONE); + userName.setText(mProfile.isAuthEnabled() ? mProfile.getAuthUserName() : ""); + password.setText(mProfile.isAuthEnabled() ? mProfile.getAuthPassword() : ""); } else { profileName.setText(""); diff --git a/app/src/main/res/menu/profile_details.xml b/app/src/main/res/menu/profile_details.xml index 9d62e06a..5a8593ee 100644 --- a/app/src/main/res/menu/profile_details.xml +++ b/app/src/main/res/menu/profile_details.xml @@ -16,10 +16,13 @@ ~ along with Mobile-Ledger. If not, see . --> - + + android:title="@string/delete_profile" + android:titleCondensed="@string/delete" + app:showAsAction="ifRoom" /> \ No newline at end of file diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 1a7c9482..b9ad9e7c 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -64,5 +64,6 @@ Трансакции Грешка в HTTP Нов профил - Изтриване на профила + Изтриване на профила + Изтриване \ 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 a6b1d60f..c0546694 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -106,5 +106,6 @@ Profile Details Profiles New profile - Delete profile + Delete profile + Delete