diff --git a/app/src/main/java/info/nerull7/mysqlbrowser/ElementFragment.java b/app/src/main/java/info/nerull7/mysqlbrowser/ElementFragment.java index bfa7c97..42eba73 100644 --- a/app/src/main/java/info/nerull7/mysqlbrowser/ElementFragment.java +++ b/app/src/main/java/info/nerull7/mysqlbrowser/ElementFragment.java @@ -62,15 +62,18 @@ public class ElementFragment extends Fragment implements AsyncDatabaseConnector. @Override public boolean onOptionsItemSelected(MenuItem item) { + List<String> fields = listAdapter.getFieldArray(); if(item.getItemId() == R.id.action_save ){ - List<String> fields = listAdapter.getFieldArray(); - Static.asyncDatabaseConnector.setStringReturnListener(this); if(getArguments().getBoolean(EDIT_ELEMENT)) Static.asyncDatabaseConnector.updateElement(tableName, fields, values, getNewValues()); else Static.asyncDatabaseConnector.addNewElement(tableName, fields, getNewValues()); return true; + } else if(item.getItemId() == R.id.action_remove) { + Static.asyncDatabaseConnector.setStringReturnListener(this); + Static.asyncDatabaseConnector.removeElement(tableName, fields, values); + return true; } else { return super.onOptionsItemSelected(item); } @@ -87,6 +90,9 @@ public class ElementFragment extends Fragment implements AsyncDatabaseConnector. @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.element, menu); + if(!getArguments().getBoolean(EDIT_ELEMENT)) { + menu.findItem(R.id.action_remove).setVisible(false); + } super.onCreateOptionsMenu(menu, inflater); } diff --git a/app/src/main/java/info/nerull7/mysqlbrowser/LoginFragment.java b/app/src/main/java/info/nerull7/mysqlbrowser/LoginFragment.java index 726d080..b3b048c 100644 --- a/app/src/main/java/info/nerull7/mysqlbrowser/LoginFragment.java +++ b/app/src/main/java/info/nerull7/mysqlbrowser/LoginFragment.java @@ -28,6 +28,8 @@ public class LoginFragment extends Fragment implements View.OnClickListener, Asy AsyncDatabaseConnector asyncDatabaseConnector; + private boolean result; + public LoginFragment(){} @Override @@ -97,6 +99,12 @@ public class LoginFragment extends Fragment implements View.OnClickListener, Asy @Override public void onBooleanReturn(boolean result) { + this.result = result; + } + + + @Override + public void onPostExecute() { if(result) { Static.asyncDatabaseConnector = asyncDatabaseConnector; Intent intent = new Intent(getActivity(), ListActivity.class); @@ -106,11 +114,7 @@ public class LoginFragment extends Fragment implements View.OnClickListener, Asy else { Static.showErrorAlert(AsyncDatabaseConnector.errorMsg, getActivity()); } - } - - @Override - public void onPostExecute() { loginButton.setEnabled(true); // Now we can click button again progressBar.setVisibility(View.INVISIBLE); } diff --git a/app/src/main/java/info/nerull7/mysqlbrowser/db/AsyncDatabaseConnector.java b/app/src/main/java/info/nerull7/mysqlbrowser/db/AsyncDatabaseConnector.java index f02a60a..8a8872f 100644 --- a/app/src/main/java/info/nerull7/mysqlbrowser/db/AsyncDatabaseConnector.java +++ b/app/src/main/java/info/nerull7/mysqlbrowser/db/AsyncDatabaseConnector.java @@ -31,6 +31,7 @@ public class AsyncDatabaseConnector { public static final String ACTION_DATA_MATRIX = "getrows"; public static final String ACTION_ADD_ELEMENT = "addelement"; public static final String ACTION_UPDATE_ELEMENT = "updateelement"; + public static final String ACTION_REMOVE_ELEMENT = "removeelement"; private String login; private String password; @@ -206,7 +207,7 @@ public class AsyncDatabaseConnector { args.add("l"); values.add(String.valueOf(count)); - getMatrix(actionUrlBuilder(ACTION_DATA_MATRIX, args, values) ); + getMatrix(actionUrlBuilder(ACTION_DATA_MATRIX, args, values)); } public void getEntriesCount(String table){ @@ -284,6 +285,47 @@ public class AsyncDatabaseConnector { downloader.execute(request); } + public void removeElement(String table, List<String> header, List<String> values) { + JSONArray headerJSON = new JSONArray(); + JSONArray valuesJSON = new JSONArray(); + String request; + + ArrayList<String> args = new ArrayList<String>(); + ArrayList<String> argValues = new ArrayList<String>(); + + args.add("d"); + argValues.add(database); + + args.add("t"); + argValues.add(table); + + for (String aHeader : header) { + headerJSON.put(aHeader); + } + + for (String value : values) { + valuesJSON.put(value); + } + + args.add("h"); + argValues.add(headerJSON.toString()); + + args.add("v"); + argValues.add(valuesJSON.toString()); + + request = actionUrlBuilder(ACTION_REMOVE_ELEMENT, args, argValues); + + Downloader downloader = new Downloader(new Downloader.OnFinishedListener() { + @Override + public void onFinished(String data, String error) { + if(stringReturnListener!=null){ + stringReturnListener.onStringReturn(data); + } + } + }, onPostExecuteListener); + downloader.execute(request); + } + public void setBooleanReturnListener(BooleanReturnListener booleanReturnListener){ this.booleanReturnListener = booleanReturnListener; } diff --git a/app/src/main/res/drawable-hdpi/ic_action_delete.png b/app/src/main/res/drawable-hdpi/ic_action_delete.png new file mode 100644 index 0000000..49e4513 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_action_delete.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_delete.png b/app/src/main/res/drawable-mdpi/ic_action_delete.png new file mode 100644 index 0000000..2706550 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_action_delete.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_delete.png b/app/src/main/res/drawable-xhdpi/ic_action_delete.png new file mode 100644 index 0000000..1487306 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_action_delete.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_delete.png b/app/src/main/res/drawable-xxhdpi/ic_action_delete.png new file mode 100644 index 0000000..251f91d Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_action_delete.png differ diff --git a/app/src/main/res/menu/element.xml b/app/src/main/res/menu/element.xml index 8f2cd4b..f3262ad 100644 --- a/app/src/main/res/menu/element.xml +++ b/app/src/main/res/menu/element.xml @@ -7,4 +7,9 @@ android:showAsAction="always" android:icon="@drawable/ic_action_save"/> + <item android:id="@+id/action_remove" + android:title="@string/action_remove" + android:showAsAction="always" + android:icon="@drawable/ic_action_delete"/> + </menu> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index db2bbf2..5cea4e6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -39,5 +39,7 @@ <string name="warning">Warning</string> <string name="status">Status</string> <string name="back">Back</string> + <string name="action_remove">Remove</string> + </resources>