Browse Source

Added profile manager ui

Alexander Brakowski 10 years ago
parent
commit
b3a37139f4

BIN
res/drawable-hdpi/ic_action_accept.png


BIN
res/drawable-mdpi/ic_action_accept.png


BIN
res/drawable-xhdpi/ic_action_accept.png


+ 20 - 0
res/drawable/panel_right_border.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item>
+        <shape
+            android:shape="rectangle">
+            <stroke android:width="1dp" android:color="#FF000000" />
+            <solid android:color="#FFFFFFFF" />
+
+        </shape>
+    </item>
+
+    <item android:right="1dp" android:left="0dp" android:top="0dp" android:bottom="0dp">
+        <shape
+            android:shape="rectangle">
+            <stroke android:width="1dp" android:color="#FFDDDDDD" />
+            <solid android:color="#FFFFFFFF" />
+        </shape>
+    </item>
+
+</layer-list>

+ 2 - 2
res/layout/fragment_home.xml

@@ -27,7 +27,7 @@
             android:id="@+id/textView"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="Current connection"
+            android:text="Current connection monitor"
             android:textStyle="bold"
             android:layout_centerVertical="true"
             android:layout_alignParentRight="false"
@@ -80,7 +80,7 @@
                 android:id="@+id/textView5"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:text="This network is monitored by HosTaGe"
+                android:text="This network is being monitored by HosTaGe"
                 android:textAppearance="?android:attr/textAppearanceSmall"
                 android:textColor="@color/holo_dark_green"
                 android:textSize="11sp"

+ 12 - 0
res/layout/fragment_profile_manager.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<ListView
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/profile_manager_listview"
+    android:choiceMode="singleChoice"
+    android:background="#F2F2F2"
+    android:dividerHeight="10dp"
+    android:divider="@android:color/transparent"
+    android:padding="5dp" />

+ 53 - 0
res/layout/profile_manager_list_item.xml

@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:padding="5dp"
+    android:baselineAligned="false"
+    android:background="@drawable/panel_bg">
+
+    <TextView
+        android:id="@+id/profile_manager_item_label"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceListItemSmall"
+        android:gravity="center_vertical"
+        android:paddingLeft="16dp"
+        android:paddingRight="16dp"
+        android:textColor="?android:attr/colorForeground"
+        android:minHeight="?android:attr/listPreferredItemHeightSmall"
+        android:text="Sample title"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true" />
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
+        android:id="@+id/profile_manager_item_text"
+        android:layout_below="@+id/profile_manager_item_label"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true"
+        android:paddingLeft="16dp"
+        android:paddingRight="16dp"
+        android:paddingBottom="16dp"
+        android:textColor="#808080"
+        android:layout_marginRight="80dp"
+        android:visibility="visible"
+        android:singleLine="false"
+        android:phoneNumber="true" />
+
+    <ImageView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/profile_manager_item_activated"
+        android:src="@drawable/ic_action_accept"
+        android:layout_centerVertical="true"
+        android:layout_alignParentRight="true"
+        android:layout_alignParentEnd="true"
+        android:layout_marginRight="20dp"
+        android:visibility="visible" />
+
+</RelativeLayout>

+ 1 - 0
res/values/strings.xml

@@ -41,6 +41,7 @@
     <string name="drawer_records">Records</string>
     <string name="drawer_services">Services</string>
     <string name="drawer_settings">Settings</string>
+    <string name="drawer_profile_manager">Profile Manager</string>
     <string name="drawer_app_info">Application info</string>
 
 </resources>

+ 10 - 0
src/de/tudarmstadt/informatik/hostage/ui2/activity/MainActivity.java

@@ -4,6 +4,7 @@ import android.app.ActionBar;
 import android.app.Activity;
 import android.app.Fragment;
 import android.app.FragmentManager;
+import android.content.Context;
 import android.content.res.Configuration;
 import android.os.Bundle;
 import android.support.v4.app.ActionBarDrawerToggle;
@@ -18,6 +19,7 @@ import java.util.ArrayList;
 import de.tudarmstadt.informatik.hostage.R;
 import de.tudarmstadt.informatik.hostage.ui2.adapter.DrawerListAdapter;
 import de.tudarmstadt.informatik.hostage.ui2.fragment.HomeFragment;
+import de.tudarmstadt.informatik.hostage.ui2.fragment.ProfileManagerFragment;
 import de.tudarmstadt.informatik.hostage.ui2.model.DrawerListItem;
 
 /**
@@ -34,9 +36,13 @@ public class MainActivity extends Activity {
 
     private ArrayList<DrawerListItem> drawerItems;
 
+    public static volatile Context context;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        MainActivity.context = getApplicationContext();
+
         setContentView(R.layout.activity_drawer_main);
 
         ActionBar actionBar = getActionBar();
@@ -53,6 +59,7 @@ public class MainActivity extends Activity {
         drawerItems.add(new DrawerListItem(R.string.drawer_threat_map, R.drawable.ic_menu_mapmode));
         drawerItems.add(new DrawerListItem(R.string.drawer_records, R.drawable.ic_menu_gallery));
         drawerItems.add(new DrawerListItem(R.string.drawer_services, R.drawable.ic_menu_set_as));
+        drawerItems.add(new DrawerListItem(R.string.drawer_profile_manager, R.drawable.ic_menu_set_as));
         drawerItems.add(new DrawerListItem(R.string.drawer_settings, R.drawable.ic_menu_preferences));
         drawerItems.add(new DrawerListItem(R.string.drawer_app_info, R.drawable.ic_menu_info_details));
 
@@ -135,6 +142,9 @@ public class MainActivity extends Activity {
             case 0:
                 fragment = new HomeFragment();
                 break;
+            case 4:
+                fragment = new ProfileManagerFragment();
+                break;
             default:
                 break;
         }

+ 57 - 0
src/de/tudarmstadt/informatik/hostage/ui2/adapter/ProfileManagerListAdapter.java

@@ -0,0 +1,57 @@
+package de.tudarmstadt.informatik.hostage.ui2.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import java.util.List;
+
+import de.tudarmstadt.informatik.hostage.R;
+import de.tudarmstadt.informatik.hostage.ui2.model.DrawerListItem;
+import de.tudarmstadt.informatik.hostage.ui2.model.ProfileListItem;
+
+/**
+ * @author Alexander Brakowski
+ * @created 14.01.14 18:00
+ */
+public class ProfileManagerListAdapter extends ArrayAdapter<ProfileListItem> {
+    private final Context context;
+    private final List<ProfileListItem> values;
+
+    public ProfileManagerListAdapter(Context context, List<ProfileListItem> objects) {
+        super(context, R.layout.drawer_list_item, objects);
+        this.context = context;
+        this.values  = objects;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        LayoutInflater inflater = (LayoutInflater) context
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+
+        View rowView = inflater.inflate(R.layout.profile_manager_list_item, parent, false);
+        TextView labelView = (TextView) rowView.findViewById(R.id.profile_manager_item_label);
+        TextView textView = (TextView) rowView.findViewById(R.id.profile_manager_item_text);
+        ImageView imageSelected = (ImageView) rowView.findViewById(R.id.profile_manager_item_activated);
+
+        ProfileListItem item = values.get(position);
+        textView.setText(item.label);
+        labelView.setText(item.text);
+
+        if(!item.activated){
+            RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams )textView.getLayoutParams();
+            lp.setMargins(0,0,0,0);
+
+            textView.setLayoutParams(lp);
+
+            imageSelected.setVisibility(View.GONE);
+        }
+
+        return rowView;
+    }
+}

+ 34 - 1
src/de/tudarmstadt/informatik/hostage/ui2/fragment/ProfileManagerFragment.java

@@ -5,8 +5,13 @@ import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.ListView;
+
+import java.util.ArrayList;
 
 import de.tudarmstadt.informatik.hostage.R;
+import de.tudarmstadt.informatik.hostage.ui2.adapter.ProfileManagerListAdapter;
+import de.tudarmstadt.informatik.hostage.ui2.model.ProfileListItem;
 
 /**
  * @author Alexander Brakowski
@@ -20,7 +25,35 @@ public class ProfileManagerFragment extends Fragment {
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
                              Bundle savedInstanceState) {
 
-        View rootView = inflater.inflate(R.layout.fragment_home, container, false);
+        View rootView = inflater.inflate(R.layout.fragment_profile_manager, container, false);
+
+        ListView list = (ListView) rootView.findViewById(R.id.profile_manager_listview);
+
+        ArrayList<ProfileListItem> strList = new ArrayList<ProfileListItem>();
+
+        ProfileListItem nitem = new ProfileListItem(
+                "Test!!",
+                "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
+                R.drawable.ic_service_green);
+
+        nitem.activated = true;
+
+        strList.add(nitem);
+        strList.add(new ProfileListItem(
+                "Test1!",
+                "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
+                R.drawable.ic_service_green));
+        strList.add(new ProfileListItem(
+                "Test2!",
+                "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
+                R.drawable.ic_service_green));
+        strList.add(new ProfileListItem(
+                "Test3!",
+                "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
+                R.drawable.ic_service_green));
+
+        ProfileManagerListAdapter adapter = new ProfileManagerListAdapter(getActivity().getBaseContext(), strList);
+        list.setAdapter(adapter);
 
         return rootView;
     }

+ 29 - 0
src/de/tudarmstadt/informatik/hostage/ui2/model/ProfileListItem.java

@@ -0,0 +1,29 @@
+package de.tudarmstadt.informatik.hostage.ui2.model;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+
+import de.tudarmstadt.informatik.hostage.ui2.activity.MainActivity;
+
+/**
+ * @author Alexander Brakowski
+ * @created 14.01.14 18:04
+ */
+public class ProfileListItem {
+    public String label;
+    public String text;
+
+    public boolean activated;
+    public Bitmap icon;
+
+    public ProfileListItem(String text, String label, Bitmap icon){
+        this.text = text;
+        this.label = label;
+        this.activated = false;
+        this.icon = icon;
+    }
+
+    public ProfileListItem(String text, String label, int icon){
+        this(text, label, BitmapFactory.decodeResource(MainActivity.context.getResources(), icon));
+    }
+}