From bfc1203e44d1c85182d819b0a33c3b538a9ea446 Mon Sep 17 00:00:00 2001
From: Przemek Grondek <github@nerull7.info>
Date: Wed, 13 Aug 2014 00:17:03 +0200
Subject: [PATCH] Editing entries

---
 .../mysqlbrowser/ElementArrayAdapter.java     | 20 ++++++++---
 .../nerull7/mysqlbrowser/ElementFragment.java | 11 +++++-
 .../nerull7/mysqlbrowser/EntriesFragment.java | 36 +++++++++++++++++--
 app/src/main/res/layout/fragment_entries.xml  |  5 ++-
 4 files changed, 61 insertions(+), 11 deletions(-)

diff --git a/app/src/main/java/info/nerull7/mysqlbrowser/ElementArrayAdapter.java b/app/src/main/java/info/nerull7/mysqlbrowser/ElementArrayAdapter.java
index 2579937..95bcd35 100644
--- a/app/src/main/java/info/nerull7/mysqlbrowser/ElementArrayAdapter.java
+++ b/app/src/main/java/info/nerull7/mysqlbrowser/ElementArrayAdapter.java
@@ -5,6 +5,7 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
+import android.widget.EditText;
 import android.widget.TextView;
 
 import java.util.List;
@@ -14,14 +15,21 @@ import java.util.List;
  */
 public class ElementArrayAdapter extends ArrayAdapter<String> {
     private Context context;
+    private List<String> fields;
     private List<String> values;
     private int layout;
 
-    public ElementArrayAdapter(Context context, int resource, List<String> objects) {
-        super(context, resource, objects);
+    public ElementArrayAdapter(Context context, int resource, List<String> fields) {
+        super(context, resource, fields);
         this.context = context;
-        values = objects;
+        this.fields = fields;
         layout = resource;
+        values = null;
+    }
+
+    public ElementArrayAdapter(Context context, int resource, List<String> fields, List<String> values) {
+        this(context, resource, fields);
+        this.values = values;
     }
 
     @Override
@@ -30,7 +38,11 @@ public class ElementArrayAdapter extends ArrayAdapter<String> {
         View rowView = layoutInflater.inflate(layout, parent, false);
 
         TextView textView = (TextView) rowView.findViewById(R.id.textFieldName);
-        textView.setText(values.get(position));
+        textView.setText(fields.get(position));
+        if(values != null){
+            EditText textFieldName = (EditText) rowView.findViewById(R.id.editFieldValue);
+            textFieldName.setText(values.get(position));
+        }
 
         return rowView;
     }
diff --git a/app/src/main/java/info/nerull7/mysqlbrowser/ElementFragment.java b/app/src/main/java/info/nerull7/mysqlbrowser/ElementFragment.java
index ed62562..886ae34 100644
--- a/app/src/main/java/info/nerull7/mysqlbrowser/ElementFragment.java
+++ b/app/src/main/java/info/nerull7/mysqlbrowser/ElementFragment.java
@@ -23,6 +23,9 @@ import info.nerull7.mysqlbrowser.db.AsyncDatabaseConnector;
  * Created by nerull7 on 2014-08-06.
  */
 public class ElementFragment extends Fragment implements AsyncDatabaseConnector.ListReturnListener {
+    public static final String EDIT_ELEMENT = "edit_element";
+    public static final String EDIT_LIST = "edit_element_list";
+
     private String databaseName;
     private String tableName;
     private ListAdapter listAdapter;
@@ -30,6 +33,8 @@ public class ElementFragment extends Fragment implements AsyncDatabaseConnector.
     private ProgressBar progressBar;
     private ListView listView;
 
+    private List<String> values;
+
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         //Inflate the layout for this fragment
@@ -48,6 +53,10 @@ public class ElementFragment extends Fragment implements AsyncDatabaseConnector.
     private void initArguments() {
         databaseName = getArguments().getString(Static.DATABASE_NAME_ARG);
         tableName = getArguments().getString(Static.TABLE_NAME_ARG);
+        if(getArguments().getBoolean(EDIT_ELEMENT))
+            values = getArguments().getStringArrayList(EDIT_LIST);
+        else
+            values = null;
     }
 
     @Override
@@ -58,7 +67,7 @@ public class ElementFragment extends Fragment implements AsyncDatabaseConnector.
 
     @Override
     public void onListReturn(List<String> fields) {
-        listAdapter = new ElementArrayAdapter(getActivity(), R.layout.list_item_element_simple, fields);
+        listAdapter = new ElementArrayAdapter(getActivity(), R.layout.list_item_element_simple, fields, values);
         listView.setAdapter(listAdapter);
 //        databasesListView.setAdapter(listAdapter);
 //        databasesListView.setOnItemClickListener(this);
diff --git a/app/src/main/java/info/nerull7/mysqlbrowser/EntriesFragment.java b/app/src/main/java/info/nerull7/mysqlbrowser/EntriesFragment.java
index ad186ab..d746a5b 100644
--- a/app/src/main/java/info/nerull7/mysqlbrowser/EntriesFragment.java
+++ b/app/src/main/java/info/nerull7/mysqlbrowser/EntriesFragment.java
@@ -1,10 +1,17 @@
 package info.nerull7.mysqlbrowser;
 
+import android.annotation.SuppressLint;
+import android.annotation.TargetApi;
 import android.app.Fragment;
 import android.content.Intent;
+import android.graphics.Canvas;
+import android.graphics.ColorFilter;
 import android.graphics.Typeface;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -12,6 +19,7 @@ import android.view.MenuItem;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
 import android.widget.FrameLayout;
 import android.widget.HorizontalScrollView;
 import android.widget.ProgressBar;
@@ -21,6 +29,9 @@ import android.widget.TableLayout;
 import android.widget.TableRow;
 import android.widget.TextView;
 
+import org.w3c.dom.Text;
+
+import java.util.ArrayList;
 import java.util.List;
 
 import info.nerull7.mysqlbrowser.db.AsyncDatabaseConnector;
@@ -28,7 +39,7 @@ import info.nerull7.mysqlbrowser.db.AsyncDatabaseConnector;
 /**
  * Created by nerull7 on 15.07.14.
  */
-public class EntriesFragment extends Fragment implements AsyncDatabaseConnector.MatrixReturnListener, AsyncDatabaseConnector.ListReturnListener, AsyncDatabaseConnector.IntegerReturnListener {
+public class EntriesFragment extends Fragment implements AsyncDatabaseConnector.MatrixReturnListener, AsyncDatabaseConnector.ListReturnListener, AsyncDatabaseConnector.IntegerReturnListener, View.OnClickListener {
     private static final int HEADER_PADDING_TOP = 15;
     private static final int HEADER_PADDING_BOTTOM = 15;
     private static final int HEADER_PADDING_LEFT = 15;
@@ -51,6 +62,7 @@ public class EntriesFragment extends Fragment implements AsyncDatabaseConnector.
     private int entriesLimit;
     private int page;
     private int pageCount;
+    private int rowCount;
     private ProgressBar progressBar;
     private CustomScrollView fakeScrollView;
     private View dummyView;
@@ -96,8 +108,7 @@ public class EntriesFragment extends Fragment implements AsyncDatabaseConnector.
         fakeScrollView.setOnTouchEventListener(new CustomScrollView.OnTouchEventListener() {
             @Override
             public boolean onTouchEvent(MotionEvent ev) {
-                entriesScrollView.onTouchEvent(ev);
-                horizontalScrollView.onTouchEvent(ev);
+                entriesScrollView.dispatchTouchEvent(ev);
                 return true;
             }
         });
@@ -197,8 +208,11 @@ public class EntriesFragment extends Fragment implements AsyncDatabaseConnector.
                     textView.setLayoutParams(layoutParams);
                     textView.setPadding(ENTRIES_PADDING_LEFT, ENTRIES_PADDING_TOP, ENTRIES_PADDING_RIGHT, ENTRIES_PADDING_BOTTOM);
                     textView.setBackgroundResource(background);
+                    textView.setId(j);
                     newRow.addView(textView);
                 }
+                newRow.setClickable(true);
+                newRow.setOnClickListener(this);
                 entriesTable.addView(newRow);
 
                 syncWidths();
@@ -222,6 +236,7 @@ public class EntriesFragment extends Fragment implements AsyncDatabaseConnector.
         // First we need header
         headerRow = new TableRow(getActivity());
         headerRow.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
+        rowCount = fieldList.size();
         for(int i =0;i<fieldList.size();i++){
             TextView textView = new TextView(getActivity());
             textView.setText(fieldList.get(i));
@@ -290,5 +305,20 @@ public class EntriesFragment extends Fragment implements AsyncDatabaseConnector.
         fakeScrollView.setLayoutParams(fakeScrollLayout);
     }
 
+    @Override
+    public void onClick(View view) {
+        ArrayList<String> values = new ArrayList<String>();
+        for(int i=0;i<rowCount;i++){
+            TextView element =  (TextView)view.findViewById(i);
+            values.add(element.getText().toString());
+//            element.setBackgroundResource(android.R.color.holo_blue_bright);
+        }
 
+        Intent intent = new Intent(getActivity(), ElementActivity.class);
+        intent.putExtra(Static.DATABASE_NAME_ARG,databaseName);
+        intent.putExtra(Static.TABLE_NAME_ARG,tableName);
+        intent.putExtra(ElementFragment.EDIT_ELEMENT, true);
+        intent.putStringArrayListExtra(ElementFragment.EDIT_LIST, values);
+        startActivity(intent);
+    }
 }
diff --git a/app/src/main/res/layout/fragment_entries.xml b/app/src/main/res/layout/fragment_entries.xml
index b573ad0..3ed823a 100644
--- a/app/src/main/res/layout/fragment_entries.xml
+++ b/app/src/main/res/layout/fragment_entries.xml
@@ -5,8 +5,8 @@
     tools:context="info.nerull7.mysqlbrowser.EntriesFragment">
 
     <HorizontalScrollView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
         android:id="@+id/horizontalScrollView" >
 
         <RelativeLayout
@@ -48,7 +48,6 @@
     <info.nerull7.mysqlbrowser.CustomScrollView
         android:layout_width="wrap_content"
         android:layout_height="fill_parent"
-        android:layout_below="@+id/loginProgressBar"
         android:layout_alignParentRight="true"
         android:foregroundGravity="right"
         android:id="@+id/fakeScroll"