Explorar el Código

misc, lists color, pass data on 'save'

David hace 9 años
padre
commit
94c47892e5
Se han modificado 31 ficheros con 281 adiciones y 303 borrados
  1. 1 0
      app/src/main/AndroidManifest.xml
  2. 5 5
      app/src/main/java/com/example/david/libretasker/EventReducer.java
  3. 28 1
      app/src/main/java/com/example/david/libretasker/Helpers.java
  4. 0 216
      app/src/main/java/com/example/david/libretasker/InputSelector/Event.java
  5. 1 10
      app/src/main/java/com/example/david/libretasker/MainActivity.java
  6. 3 4
      app/src/main/java/com/example/david/libretasker/MainService.java
  7. 44 8
      app/src/main/java/com/example/david/libretasker/NewEventActivity.java
  8. 1 1
      app/src/main/java/com/example/david/libretasker/Actions/Action.java
  9. 1 1
      app/src/main/java/com/example/david/libretasker/Actions/Actions.java
  10. 1 2
      app/src/main/java/com/example/david/libretasker/Actions/ToastAction.java
  11. 1 2
      app/src/main/java/com/example/david/libretasker/InputSelector/Contact.java
  12. 110 0
      app/src/main/java/com/example/david/libretasker/inputSelector/Event.java
  13. 3 28
      app/src/main/java/com/example/david/libretasker/InputSelector/MultiList.java
  14. 1 2
      app/src/main/java/com/example/david/libretasker/InputSelector/MultiStateInRows.java
  15. 1 1
      app/src/main/java/com/example/david/libretasker/InputSelector/Network.java
  16. 1 4
      app/src/main/java/com/example/david/libretasker/InputSelector/Text.java
  17. 1 1
      app/src/main/java/com/example/david/libretasker/State/Network.java
  18. 1 1
      app/src/main/java/com/example/david/libretasker/State/Phonecall.java
  19. 1 1
      app/src/main/java/com/example/david/libretasker/State/SMS.java
  20. 1 1
      app/src/main/java/com/example/david/libretasker/State/Screen.java
  21. 1 3
      app/src/main/java/com/example/david/libretasker/State/Time.java
  22. 1 1
      app/src/main/java/com/example/david/libretasker/Store/Store.java
  23. 1 1
      app/src/main/java/com/example/david/libretasker/UserData/UserData.java
  24. 57 0
      app/src/main/res/layout/activity_event.xml
  25. 1 2
      app/src/main/res/layout/activity_main.xml
  26. 9 2
      app/src/main/res/layout/activity_new_event.xml
  27. 1 1
      app/src/main/res/layout/fragment_contact.xml
  28. 1 1
      app/src/main/res/layout/fragment_multi_list.xml
  29. 1 1
      app/src/main/res/layout/fragment_state_rows.xml
  30. 1 1
      app/src/main/res/layout/fragment_text.xml
  31. 1 1
      app/src/main/res/layout/fragment_wifi.xml

+ 1 - 0
app/src/main/AndroidManifest.xml

@@ -28,6 +28,7 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+        <activity android:name=".inputSelector.Event" />
 
         <receiver android:name=".MainService$EventReceiver">
             <intent-filter>

+ 5 - 5
app/src/main/java/com/example/david/libretasker/EventReducer.java

@@ -6,11 +6,11 @@ import android.net.ConnectivityManager;
 import android.provider.Telephony;
 import android.telephony.TelephonyManager;
 
-import com.example.david.libretasker.State.Network;
-import com.example.david.libretasker.State.Phonecall;
-import com.example.david.libretasker.State.SMS;
-import com.example.david.libretasker.State.Screen;
-import com.example.david.libretasker.State.Time;
+import com.example.david.libretasker.state.Network;
+import com.example.david.libretasker.state.Phonecall;
+import com.example.david.libretasker.state.SMS;
+import com.example.david.libretasker.state.Screen;
+import com.example.david.libretasker.state.Time;
 
 import java.util.HashMap;
 

+ 28 - 1
app/src/main/java/com/example/david/libretasker/Helpers.java

@@ -5,13 +5,17 @@ import android.content.Context;
 import android.database.Cursor;
 import android.net.Uri;
 import android.provider.ContactsContract;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.ListAdapter;
+import android.widget.ListView;
 
 /**
  * Created by david on 03/01/17.
  */
 
 public class Helpers {
-    public static int globalID = 10000;
     public static String getContactName(Context context, String phoneNumber) {
         ContentResolver cr = context.getContentResolver();
         Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
@@ -30,4 +34,27 @@ public class Helpers {
         return contactName;
     }
 
+    /**** Method for Setting the Height of the ListView dynamically.
+     **** Hack to fix the issue of not showing all the items of the ListView
+     **** when placed inside a ScrollView  ****/
+    public static void setListViewHeightBasedOnChildren(ListView listView, double multiplier) {
+        ListAdapter listAdapter = listView.getAdapter();
+        if (listAdapter == null)
+            return;
+
+        int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.UNSPECIFIED);
+        int totalHeight = 0;
+        View view = null;
+        for (int i = 0; i < listAdapter.getCount(); i++) {
+            view = listAdapter.getView(i, view, listView);
+            if (i == 0)
+                view.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth, FrameLayout.LayoutParams.WRAP_CONTENT));
+
+            view.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
+            totalHeight += view.getMeasuredHeight()*multiplier;
+        }
+        ViewGroup.LayoutParams params = listView.getLayoutParams();
+        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
+        listView.setLayoutParams(params);
+    }
 }

+ 0 - 216
app/src/main/java/com/example/david/libretasker/InputSelector/Event.java

@@ -1,216 +0,0 @@
-package com.example.david.libretasker.InputSelector;
-
-import android.content.Context;
-import android.net.Uri;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.util.AttributeSet;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
-import android.widget.LinearLayout;
-import android.widget.Spinner;
-import android.widget.TextView;
-
-import com.example.david.libretasker.Helpers;
-import com.example.david.libretasker.R;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * A simple {@link Fragment} subclass.
- * Activities that contain this fragment must implement the
- * {@link Event.OnFragmentInteractionListener} interface
- * to handle interaction events.
- * Use the {@link Event#newInstance} factory method to
- * create an instance of this fragment.
- */
-public class Event extends Fragment {
-    // TODO: Rename parameter arguments, choose names that match
-    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-    private static final String ARG_PARAM1 = "param1";
-    private static final String ARG_PARAM2 = "param2";
-    private LinearLayout fragmentContainer;
-
-    // TODO: Rename and change types of parameters
-    private String mParam1;
-    private String mParam2;
-
-    private OnFragmentInteractionListener mListener;
-
-    public Event() {
-        // Required empty public constructor
-    }
-
-    /**
-     * Use this factory method to create a new instance of
-     * this fragment using the provided parameters.
-     *
-     * @param param1 Parameter 1.
-     * @param param2 Parameter 2.
-     * @return A new instance of fragment Event.
-     */
-    // TODO: Rename and change types and number of parameters
-    public static Event newInstance(String param1, String param2) {
-        Event fragment = new Event();
-        Bundle args = new Bundle();
-        args.putString(ARG_PARAM1, param1);
-        args.putString(ARG_PARAM2, param2);
-        fragment.setArguments(args);
-        return fragment;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        if (getArguments() != null) {
-            mParam1 = getArguments().getString(ARG_PARAM1);
-            mParam2 = getArguments().getString(ARG_PARAM2);
-        }
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        // Inflate the layout for this fragment
-        //View v = inflater.inflate(R.layout.fragment_event, container, false);
-        LinearLayout root = new LinearLayout(getContext());
-        LinearLayout spinnerContainer = new LinearLayout(getContext());
-
-        root.setOrientation(LinearLayout.VERTICAL);
-
-        fragmentContainer = new LinearLayout(getContext());
-        fragmentContainer.setOrientation(LinearLayout.VERTICAL);
-        fragmentContainer.setId(Helpers.globalID++);
-
-
-        Spinner spinner = new Spinner(getContext());
-        spinner.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1f));
-
-        TextView spinnerLabel = new TextView(getContext());
-        spinnerLabel.setText("Event Type");
-        spinnerLabel.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 2f));
-
-        spinnerContainer.addView(spinnerLabel);
-        spinnerContainer.addView(spinner);
-
-        root.addView(spinnerContainer);
-        root.addView(fragmentContainer);
-//        v.setLayoutParams(ll.getLayoutParams());
-
-
-
-        //Spinner spinner = (Spinner) v.findViewById(R.id.spinner);
-        List<String> l = Arrays.asList("Screen", "Time", "Network", "Phone", "SMS");
-        final ArrayAdapter<CharSequence> adapter = new ArrayAdapter(getContext(), android.R.layout.simple_spinner_item, l);
-        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-        // Apply the adapter to the spinner
-        spinner.setAdapter(adapter);
-
-
-        //v.setLayoutParams(ll.getLayoutParams());
-
-
-        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
-            @Override
-            public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long id) {
-
-                String[] a;
-                boolean multi;
-                if ( adapter.getItem(pos) == null )
-                    return;
-
-
-                int fragmentID = fragmentContainer.getId();
-                //R.id.your_placeholder;
-                //v.findViewWithTag("container").getId(); //v.findViewById(R.id.your_placeholder).getId();
-                
-                FragmentTransaction ft = getFragmentManager().beginTransaction();
-                if ( adapter.getItem(pos).equals("Screen")) {
-                    a = new String[]{"On", "Off", "Any"};
-                    ft.replace(fragmentID, MultiStateInRows.newInstance(a, false, "State", 1));
-                    ft.commit();
-
-                } else if ( adapter.getItem(pos).equals("Time")) {
-                    a = new String[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
-                    ft.replace(fragmentID, MultiStateInRows.newInstance(a, true, "Months", 2 ));
-
-                    a = new String[]{"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};
-                    ft.add(fragmentID, MultiStateInRows.newInstance(a, true, "DOW", 1 ));
-
-                    a = new String[31];
-                    for (int i = 0; i< a.length; i++)
-                        a[i]=Integer.toString(i+1);
-                    ft.add(fragmentID, MultiStateInRows.newInstance(a, true, "DOM", 4 ));
-
-                    a = new String[24];
-                    for (int i = 0; i< a.length; i++)
-                        a[i]=Integer.toString(i);
-
-                    ft.add(fragmentID, MultiStateInRows.newInstance(a, true, "Hour", 2 ));
-
-                    //TODO: Minutes
-
-
-                    ft.commit();
-                } else if ( adapter.getItem(pos).equals("SMS") ) {
-                    ft.replace(fragmentID, Contact.newInstance());
-                    ft.add(fragmentID, Text.newInstance("Body"));
-                    ft.commit();
-                } else if ( adapter.getItem(pos).equals("Phone") ) {
-                    a = new String[]{"Ringing", "Idle", "Any"};
-                    ft.replace(fragmentID, Contact.newInstance());
-                    ft.add(fragmentID, MultiStateInRows.newInstance(a, false, "State", 1));
-                    ft.commit();
-                } else if ( adapter.getItem(pos).equals("Network") ) {
-                    ft.replace(fragmentID, Network.newInstance());
-                    ft.commit();
-                }
-            }
-
-            @Override
-            public void onNothingSelected(AdapterView<?> adapterView) {
-
-            }
-        });
-        //return v;
-        return root;
-    }
-
-    // TODO: Rename method, update argument and hook method into UI event
-    public void onButtonPressed(Uri uri) {
-        if (mListener != null) {
-            mListener.onFragmentInteraction(uri);
-        }
-    }
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-        mListener = null;
-    }
-
-    /**
-     * This interface must be implemented by activities that contain this
-     * fragment to allow an interaction in this fragment to be communicated
-     * to the activity and potentially other fragments contained in that
-     * activity.
-     * <p>
-     * See the Android Training lesson <a href=
-     * "http://developer.android.com/training/basics/fragments/communicating.html"
-     * >Communicating with Other Fragments</a> for more information.
-     */
-    public interface OnFragmentInteractionListener {
-        // TODO: Update argument type and name
-        void onFragmentInteraction(Uri uri);
-    }
-}

+ 1 - 10
app/src/main/java/com/example/david/libretasker/MainActivity.java

@@ -32,7 +32,7 @@ public class MainActivity extends AppCompatActivity {
         ArrayList<String> list = new ArrayList<>();
         list.add("Test1");
         list.add("Test2");
-        ArrayAdapter adapter = new ArrayAdapter( getApplicationContext(), android.R.layout.simple_list_item_1, list);
+        ArrayAdapter adapter = new ArrayAdapter( this, android.R.layout.simple_list_item_1, list);
 
         ListView listview = (ListView) findViewById(R.id.listview2);
         listview.setAdapter(adapter);
@@ -42,15 +42,6 @@ public class MainActivity extends AppCompatActivity {
             public void onItemClick(AdapterView<?> parent, final View view,
                                     int position, long id) {
                 final String item = (String) parent.getItemAtPosition(position);
-                view.animate().setDuration(200).alpha(0)
-                        .withEndAction(new Runnable() {
-                            @Override
-                            public void run() {
-                                //list.remove(item);
-                                //adapter.notifyDataSetChanged();
-                                view.setAlpha(1);
-                            }
-                        });
             }
 
         });

+ 3 - 4
app/src/main/java/com/example/david/libretasker/MainService.java

@@ -11,10 +11,9 @@ import android.support.annotation.Nullable;
 import android.telephony.TelephonyManager;
 import android.util.Log;
 
-import com.example.david.libretasker.Actions.Actions;
-import com.example.david.libretasker.State.Phonecall;
-import com.example.david.libretasker.State.SMS;
-import com.example.david.libretasker.Store.Store;
+import com.example.david.libretasker.actions.Actions;
+import com.example.david.libretasker.state.Phonecall;
+import com.example.david.libretasker.store.Store;
 
 import java.util.ArrayList;
 import java.util.HashMap;

+ 44 - 8
app/src/main/java/com/example/david/libretasker/NewEventActivity.java

@@ -1,18 +1,24 @@
 package com.example.david.libretasker;
 
+import android.content.Intent;
 import android.os.Bundle;
-import android.support.v4.app.FragmentTransaction;
 import android.support.v7.app.AppCompatActivity;
 import android.view.View;
+import android.widget.ArrayAdapter;
 import android.widget.Button;
+import android.widget.ListView;
 
-import com.example.david.libretasker.InputSelector.Event;
+import com.example.david.libretasker.inputSelector.Event;
 
 import java.util.ArrayList;
 
 public class NewEventActivity extends AppCompatActivity {
 
-    ArrayList<Event> events = new ArrayList<>();
+    final static int NEW_EVENT_CODE = 0;
+    final static int UPDATE_EVENT_CODE = 1;
+    ArrayList<String> events = new ArrayList<>();
+    ArrayAdapter adapter;
+    ListView listview;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -22,12 +28,42 @@ public class NewEventActivity extends AppCompatActivity {
         event.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
-                Event e = new Event();
-                events.add(e);
-                ft.add(R.id.eventContainer, e);
-                ft.commit();
+            Intent i = new Intent(getApplicationContext(), Event.class);
+            i.putExtra("MODE", NEW_EVENT_CODE);
+            startActivityForResult(i, NEW_EVENT_CODE);
+           }
+        });
+
+
+        event.setOnLongClickListener(new View.OnLongClickListener() {
+            @Override
+            public boolean onLongClick(View view) {
+                Intent i = new Intent(NewEventActivity.this, Event.class);
+                i.putExtra("MODE", UPDATE_EVENT_CODE);
+                startActivityForResult(i, UPDATE_EVENT_CODE);
+                return true;
             }
         });
+        adapter = new ArrayAdapter( this, android.R.layout.simple_list_item_1, events);
+        listview = (ListView) findViewById(R.id.eventList);
+        listview.setAdapter(adapter);
+        Helpers.setListViewHeightBasedOnChildren(listview, 1);
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (data == null) {
+            return;
+        }
+        switch (requestCode) {
+            case NEW_EVENT_CODE:
+                Bundle b = data.getBundleExtra("data");
+                events.add(b.getString("title"));
+                adapter.notifyDataSetChanged();
+                Helpers.setListViewHeightBasedOnChildren(listview, 1);
+                break;
+        }
     }
 }
+

+ 1 - 1
app/src/main/java/com/example/david/libretasker/Actions/Action.java

@@ -1,4 +1,4 @@
-package com.example.david.libretasker.Actions;
+package com.example.david.libretasker.actions;
 
 import android.content.Context;
 

+ 1 - 1
app/src/main/java/com/example/david/libretasker/Actions/Actions.java

@@ -1,4 +1,4 @@
-package com.example.david.libretasker.Actions;
+package com.example.david.libretasker.actions;
 
 import android.app.NotificationManager;
 import android.content.Context;

+ 1 - 2
app/src/main/java/com/example/david/libretasker/Actions/ToastAction.java

@@ -1,7 +1,6 @@
-package com.example.david.libretasker.Actions;
+package com.example.david.libretasker.actions;
 
 import android.content.Context;
-import android.widget.Toast;
 
 import java.util.HashMap;
 

+ 1 - 2
app/src/main/java/com/example/david/libretasker/InputSelector/Contact.java

@@ -1,4 +1,4 @@
-package com.example.david.libretasker.InputSelector;
+package com.example.david.libretasker.inputSelector;
 
 import android.content.Context;
 import android.content.Intent;
@@ -12,7 +12,6 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.EditText;
-import android.widget.TextView;
 
 import com.example.david.libretasker.R;
 

+ 110 - 0
app/src/main/java/com/example/david/libretasker/inputSelector/Event.java

@@ -0,0 +1,110 @@
+package com.example.david.libretasker.inputSelector;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.FragmentTransaction;
+import android.support.v7.app.AppCompatActivity;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.Spinner;
+
+import com.example.david.libretasker.R;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class Event extends AppCompatActivity {
+    int mode;
+    String selectedType = "ERROR";
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_event);
+
+        mode = getIntent().getIntExtra("MODE", -999);
+
+        Spinner spinner = (Spinner) findViewById(R.id.eventTypeSpinner);
+
+        List<String> l = Arrays.asList("Screen", "Time", "Network", "Phone", "SMS");
+        final ArrayAdapter<CharSequence> adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, l);
+        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        // Apply the adapter to the spinner
+        spinner.setAdapter(adapter);
+
+        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+            @Override
+            public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long id) {
+
+                String[] a;
+                boolean multi;
+                if ( adapter.getItem(pos) == null )
+                    return;
+
+                selectedType = adapter.getItem(pos).toString();
+                int fragmentID = R.id.fragmentContainer;
+
+                FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
+                if ( adapter.getItem(pos).equals("Screen")) {
+                    a = new String[]{"On", "Off", "Any"};
+                    ft.replace(fragmentID, MultiStateInRows.newInstance(a, false, "State", 1));
+                    ft.commit();
+
+                } else if ( adapter.getItem(pos).equals("Time")) {
+                    a = new String[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
+                    ft.replace(fragmentID, MultiStateInRows.newInstance(a, true, "Months", 2 ));
+
+                    a = new String[]{"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};
+                    ft.add(fragmentID, MultiStateInRows.newInstance(a, true, "DOW", 1 ));
+
+                    a = new String[31];
+                    for (int i = 0; i< a.length; i++)
+                        a[i]=Integer.toString(i+1);
+                    ft.add(fragmentID, MultiStateInRows.newInstance(a, true, "DOM", 4 ));
+
+                    a = new String[24];
+                    for (int i = 0; i< a.length; i++)
+                        a[i]=Integer.toString(i);
+
+                    ft.add(fragmentID, MultiStateInRows.newInstance(a, true, "Hour", 2 ));
+
+                    //TODO: Minutes
+
+
+                    ft.commit();
+                } else if ( adapter.getItem(pos).equals("SMS") ) {
+                    ft.replace(fragmentID, Contact.newInstance());
+                    ft.add(fragmentID, Text.newInstance("Body"));
+                    ft.commit();
+                } else if ( adapter.getItem(pos).equals("Phone") ) {
+                    a = new String[]{"Ringing", "Idle", "Any"};
+                    ft.replace(fragmentID, Contact.newInstance());
+                    ft.add(fragmentID, MultiStateInRows.newInstance(a, false, "State", 1));
+                    ft.commit();
+                } else if ( adapter.getItem(pos).equals("Network") ) {
+                    ft.replace(fragmentID, Network.newInstance());
+                    ft.commit();
+                }
+            }
+
+            @Override
+            public void onNothingSelected(AdapterView<?> adapterView) {
+
+            }
+        });
+
+        Button save = (Button) findViewById(R.id.saveEventButton);
+        save.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                Intent intent = new Intent();
+                Bundle b = new Bundle();
+                b.putString("title", selectedType);
+                intent.putExtra("data", b);
+                setResult(mode, intent);
+                finish();
+            }
+        });
+    }
+}

+ 3 - 28
app/src/main/java/com/example/david/libretasker/InputSelector/MultiList.java

@@ -1,4 +1,4 @@
-package com.example.david.libretasker.InputSelector;
+package com.example.david.libretasker.inputSelector;
 
 import android.content.Context;
 import android.net.Uri;
@@ -12,11 +12,9 @@ import android.widget.FrameLayout;
 import android.widget.ListAdapter;
 import android.widget.ListView;
 
+import com.example.david.libretasker.Helpers;
 import com.example.david.libretasker.R;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-
 /**
  * A simple {@link Fragment} subclass.
  * Activities that contain this fragment must implement the
@@ -78,7 +76,7 @@ public class MultiList extends Fragment {
         ListView listView = (ListView) v.findViewById(R.id.multiList);
         listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
         listView.setAdapter(adapter);
-        setListViewHeightBasedOnChildren(listView);
+        Helpers.setListViewHeightBasedOnChildren(listView, 1.5);
         return v;
     }
 
@@ -121,27 +119,4 @@ public class MultiList extends Fragment {
         void onFragmentInteraction(Uri uri);
     }
 
-    /**** Method for Setting the Height of the ListView dynamically.
-     **** Hack to fix the issue of not showing all the items of the ListView
-     **** when placed inside a ScrollView  ****/
-    public static void setListViewHeightBasedOnChildren(ListView listView) {
-        ListAdapter listAdapter = listView.getAdapter();
-        if (listAdapter == null)
-            return;
-
-        int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.UNSPECIFIED);
-        int totalHeight = 0;
-        View view = null;
-        for (int i = 0; i < listAdapter.getCount(); i++) {
-            view = listAdapter.getView(i, view, listView);
-            if (i == 0)
-                view.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth, FrameLayout.LayoutParams.WRAP_CONTENT));
-
-            view.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
-            totalHeight += view.getMeasuredHeight()*1.5;
-        }
-        ViewGroup.LayoutParams params = listView.getLayoutParams();
-        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
-        listView.setLayoutParams(params);
-    }
 }

+ 1 - 2
app/src/main/java/com/example/david/libretasker/InputSelector/MultiStateInRows.java

@@ -1,4 +1,4 @@
-package com.example.david.libretasker.InputSelector;
+package com.example.david.libretasker.inputSelector;
 
 import android.content.Context;
 import android.net.Uri;
@@ -7,7 +7,6 @@ import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.FrameLayout;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 

+ 1 - 1
app/src/main/java/com/example/david/libretasker/InputSelector/Network.java

@@ -1,4 +1,4 @@
-package com.example.david.libretasker.InputSelector;
+package com.example.david.libretasker.inputSelector;
 
 import android.content.Context;
 import android.net.Uri;

+ 1 - 4
app/src/main/java/com/example/david/libretasker/InputSelector/Text.java

@@ -1,4 +1,4 @@
-package com.example.david.libretasker.InputSelector;
+package com.example.david.libretasker.inputSelector;
 
 import android.content.Context;
 import android.net.Uri;
@@ -7,13 +7,10 @@ import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.EditText;
 import android.widget.TextView;
 
 import com.example.david.libretasker.R;
 
-import static android.R.attr.key;
-
 /**
  * A simple {@link Fragment} subclass.
  * Activities that contain this fragment must implement the

+ 1 - 1
app/src/main/java/com/example/david/libretasker/State/Network.java

@@ -1,4 +1,4 @@
-package com.example.david.libretasker.State;
+package com.example.david.libretasker.state;
 
 import android.content.Context;
 import android.net.ConnectivityManager;

+ 1 - 1
app/src/main/java/com/example/david/libretasker/State/Phonecall.java

@@ -1,4 +1,4 @@
-package com.example.david.libretasker.State;
+package com.example.david.libretasker.state;
 
 import android.content.Context;
 import android.content.Intent;

+ 1 - 1
app/src/main/java/com/example/david/libretasker/State/SMS.java

@@ -1,4 +1,4 @@
-package com.example.david.libretasker.State;
+package com.example.david.libretasker.state;
 
 import android.content.Context;
 import android.content.Intent;

+ 1 - 1
app/src/main/java/com/example/david/libretasker/State/Screen.java

@@ -1,4 +1,4 @@
-package com.example.david.libretasker.State;
+package com.example.david.libretasker.state;
 
 import android.content.Context;
 import android.os.Build;

+ 1 - 3
app/src/main/java/com/example/david/libretasker/State/Time.java

@@ -1,6 +1,4 @@
-package com.example.david.libretasker.State;
-
-import android.content.Context;
+package com.example.david.libretasker.state;
 
 import java.util.Calendar;
 import java.util.HashMap;

+ 1 - 1
app/src/main/java/com/example/david/libretasker/Store/Store.java

@@ -1,4 +1,4 @@
-package com.example.david.libretasker.Store;
+package com.example.david.libretasker.store;
 
 import android.content.Context;
 import android.content.Intent;

+ 1 - 1
app/src/main/java/com/example/david/libretasker/UserData/UserData.java

@@ -1,4 +1,4 @@
-package com.example.david.libretasker.UserData;
+package com.example.david.libretasker.userData;
 
 import android.media.AudioManager;
 import android.net.ConnectivityManager;

+ 57 - 0
app/src/main/res/layout/activity_event.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<ScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_weight="5">
+
+<LinearLayout
+
+    android:id="@+id/activity_new_event"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    android:orientation="vertical"
+    tools:context="com.example.david.libretasker.NewEventActivity"
+    android:weightSum="1">
+
+    <LinearLayout
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical">
+
+        <TextView
+            android:text="Event Type"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:id="@+id/textView2"
+            android:layout_weight="1" />
+
+        <Spinner
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:id="@+id/eventTypeSpinner"
+            android:layout_weight="1" />
+    </LinearLayout>
+
+
+    <LinearLayout
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:id="@+id/fragmentContainer" />
+
+    <Button
+        android:text="Save"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:id="@+id/saveEventButton" />
+
+</LinearLayout>
+</ScrollView>

+ 1 - 2
app/src/main/res/layout/activity_main.xml

@@ -8,8 +8,7 @@
     <ListView
         android:id="@+id/listview2"
         android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:background="@color/colorPrimaryDark"/>
+        android:layout_height="wrap_content" />
 
     <android.support.design.widget.FloatingActionButton
         android:layout_width="wrap_content"

+ 9 - 2
app/src/main/res/layout/activity_new_event.xml

@@ -43,11 +43,18 @@
     </LinearLayout>
 
 
+    <ListView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:id="@+id/eventList"
+        android:headerDividersEnabled="false"
+        style="@style/Widget.AppCompat.ListView" />
+
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:id="@+id/eventContainer"></LinearLayout>
+        android:id="@+id/eventContainer" />
 
     <Button
         android:text="Add Event"
@@ -59,7 +66,7 @@
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:id="@+id/actionContainer"></LinearLayout>
+        android:id="@+id/actionContainer" />
 
     <Button
         android:text="Add Action"

+ 1 - 1
app/src/main/res/layout/fragment_contact.xml

@@ -2,7 +2,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    tools:context="com.example.david.libretasker.InputSelector.Contact"
+    tools:context="com.example.david.libretasker.inputSelector.Contact"
     android:orientation="vertical">
 
     <!-- TODO: Update blank fragment layout -->

+ 1 - 1
app/src/main/res/layout/fragment_multi_list.xml

@@ -2,7 +2,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    tools:context="com.example.david.libretasker.InputSelector.MultiList">
+    tools:context="com.example.david.libretasker.inputSelector.MultiList">
 
     <!-- TODO: Update blank fragment layout -->
 

+ 1 - 1
app/src/main/res/layout/fragment_state_rows.xml

@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical"
-    tools:context="com.example.david.libretasker.InputSelector.MultiState">
+    tools:context="com.example.david.libretasker.inputSelector.MultiState">
     <TextView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"

+ 1 - 1
app/src/main/res/layout/fragment_text.xml

@@ -2,7 +2,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    tools:context="com.example.david.libretasker.InputSelector.Text">
+    tools:context="com.example.david.libretasker.inputSelector.Text">
 
     <!-- TODO: Update blank fragment layout -->
 

+ 1 - 1
app/src/main/res/layout/fragment_wifi.xml

@@ -2,7 +2,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context="com.example.david.libretasker.InputSelector.Network"
+    tools:context="com.example.david.libretasker.inputSelector.Network"
     android:id="@+id/wifiLayout"
     android:orientation="vertical">