Browse Source

improved popup look and feel

Alexander Brakowski 10 years ago
parent
commit
39e991869e

+ 1 - 2
res/layout/fragment_record_list.xml

@@ -32,8 +32,7 @@
         android:layout_height="wrap_content"
         android:alpha="0.8"
         android:id="@+id/linearLayout"
-        android:layout_alignParentBottom="true"
-        android:layout_alignParentLeft="true"
+        android:layout_alignParentBottom="true" android:layout_alignParentLeft="true"
         android:layout_alignParentStart="true">
 
         <ImageButton

+ 22 - 25
res/layout/simple_popup_item.xml

@@ -1,17 +1,17 @@
 <?xml version="1.0" encoding="utf-8"?>
 
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:padding="2dp"
+    android:padding="0dp"
     android:gravity="top|center"
-    android:baselineAligned="false">
+    android:baselineAligned="false" android:orientation="vertical">
 
-    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+	<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="@color/dark_grey"
-        android:padding="10dp">
+        android:padding="10dp"
+		android:id="@+id/popup_item_container">
 
     <TextView
         android:layout_width="wrap_content"
@@ -20,26 +20,23 @@
         android:text="Title"
         android:id="@+id/title_text_view"
         android:textColor="#ffffff"
-        android:layout_alignParentTop="true"
-        android:layout_toLeftOf="@+id/isSelectedButton"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentStart="true"
-        android:layout_alignBottom="@+id/isSelectedButton"
         android:textAlignment="textStart"
-        android:textStyle="bold" />
+        android:textStyle="bold" android:layout_alignBaseline="@+id/isSelectedButton"
+        android:layout_alignBottom="@+id/isSelectedButton" android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true"/>
 
-    <RadioButton
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:id="@+id/isSelectedButton"
-        android:layout_alignParentTop="true"
-        android:layout_alignParentRight="true"
-        android:layout_alignParentEnd="true"
-        android:clickable="false"
-        android:checked="true"
-        android:enabled="false"
-        android:button="@drawable/rd_btn_off"
-        />
 
+	    <RadioButton
+			    android:layout_width="wrap_content"
+			    android:layout_height="wrap_content"
+			    android:id="@+id/isSelectedButton"
+			    android:checked="true" android:layout_alignParentTop="true"
+			    android:layout_alignParentRight="true" android:layout_alignParentEnd="true"/>
     </RelativeLayout>
-</RelativeLayout>
+	<View
+			android:layout_width="fill_parent"
+			android:layout_height="1dp"
+			android:background="@android:color/darker_gray"
+			/>
+
+</LinearLayout>

+ 11 - 7
res/layout/simple_popup_table.xml

@@ -5,18 +5,22 @@
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:minWidth="230dp"
-    android:alpha="0.8"
-    android:background="@android:color/background_dark">
+		>
 
     <TextView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:textAppearance="?android:attr/textAppearanceLarge"
         android:text="Title"
-        android:padding="5dp"
-        android:textAlignment="center"
-        android:gravity="top|center"
+        android:gravity="top"
         android:id="@+id/title_text_view"
-        android:textColor="#ffffff"
-        android:textStyle="bold" />
+        android:textColor="@android:color/holo_blue_bright"
+        android:textStyle="bold" android:textAlignment="inherit" android:paddingLeft="20dp"
+        android:paddingTop="10dp" android:paddingRight="20dp" android:paddingBottom="10dp"/>
+
+	<View
+			android:layout_width="fill_parent"
+			android:layout_height="2dp"
+			android:background="@android:color/holo_blue_bright"
+			/>
 </LinearLayout>

+ 85 - 73
res/layout/split_popup_item.xml

@@ -1,81 +1,93 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="horizontal"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:gravity="top|center"
-    android:weightSum="1">
+              android:layout_width="match_parent" android:layout_height="match_parent"
+              android:orientation="vertical">
+	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+	    android:orientation="horizontal"
+	    android:layout_width="match_parent"
+	    android:layout_height="wrap_content"
+	    android:gravity="top|center"
+	    android:weightSum="1">
 
-    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:orientation="vertical"
-        android:layout_width="wrap_content"
-        android:layout_height="85dp"
-        android:layout_weight="0.5"
-        android:padding="2dp">
-    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:orientation="vertical"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="@color/dark_grey"
-        android:padding="2dp">
+	    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+	        android:orientation="vertical"
+	        android:layout_width="wrap_content"
+	        android:layout_height="85dp"
+	        android:layout_weight="0.5"
+	        android:padding="2dp" android:id="@+id/popup_left_container">
+		    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+		        android:orientation="vertical"
+		        android:layout_width="match_parent"
+		        android:layout_height="match_parent"
+		        android:paddingLeft="7dp" android:paddingRight="7dp">
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:text="Title"
-            android:id="@+id/left_title_text_view"
-            android:textColor="#ffffff"
-            android:layout_alignParentStart="true"
-            android:textAlignment="textStart"
-            android:textStyle="bold" />
-        <TextView
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:textAppearance="?android:attr/textAppearanceSmall"
-            android:text="Subtitle"
-            android:id="@+id/left_subtitle_text_view"
-            android:textColor="#ffffff"
-            android:layout_alignParentStart="true"
-            android:textAlignment="center"
-            android:textIsSelectable="false" />
-    </LinearLayout>
-    </LinearLayout>
+		        <TextView
+		            android:layout_width="wrap_content"
+		            android:layout_height="wrap_content"
+		            android:textAppearance="?android:attr/textAppearanceMedium"
+		            android:text="Title"
+		            android:id="@+id/left_title_text_view"
+		            android:textColor="#ffffff"
+		            android:layout_alignParentStart="true"
+		            android:textAlignment="textStart"
+		            android:textStyle="bold"/>
+		        <TextView
+		            android:layout_width="match_parent"
+		            android:layout_height="match_parent"
+		            android:textAppearance="?android:attr/textAppearanceSmall"
+		            android:text="Subtitle"
+		            android:id="@+id/left_subtitle_text_view"
+		            android:textColor="#ffffff"
+		            android:layout_alignParentStart="true"
+		            android:textAlignment="center"
+		            android:textIsSelectable="false"/>
+		    </LinearLayout>
+	    </LinearLayout>
 
-    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:orientation="vertical"
-        android:layout_width="wrap_content"
-        android:layout_height="85dp"
-        android:layout_weight="0.5"
-        android:padding="2dp">
-    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:orientation="vertical"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="@color/dark_grey"
-        android:padding="2dp">
+		<View
+				android:layout_height="fill_parent"
+				android:layout_width="1dp"
+				android:background="@android:color/darker_gray" android:layout_weight="0"/>
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:text="Title"
-            android:id="@+id/right_title_text_view"
-            android:textColor="#ffffff"
-            android:layout_alignParentStart="true"
-            android:textAlignment="textStart"
-            android:textStyle="bold" />
-        <TextView
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:textAppearance="?android:attr/textAppearanceSmall"
-            android:text="Subtitle"
-            android:id="@+id/right_subtitle_text_view"
-            android:textColor="#ffffff"
-            android:layout_alignParentStart="true"
-            android:textAlignment="center"
-            />
-    </LinearLayout>
-    </LinearLayout>
+	    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+	        android:orientation="vertical"
+	        android:layout_width="wrap_content"
+	        android:layout_height="85dp"
+	        android:layout_weight="0.5"
+	        android:id="@+id/popup_right_container"
+	        android:padding="2dp">
+	    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+	        android:orientation="vertical"
+	        android:layout_width="match_parent"
+	        android:layout_height="match_parent"
+	        android:paddingLeft="7dp" android:paddingRight="7dp">
+
+	        <TextView
+	            android:layout_width="wrap_content"
+	            android:layout_height="wrap_content"
+	            android:textAppearance="?android:attr/textAppearanceMedium"
+	            android:text="Title"
+	            android:id="@+id/right_title_text_view"
+	            android:textColor="#ffffff"
+	            android:layout_alignParentStart="true"
+	            android:textAlignment="textStart"
+	            android:textStyle="bold"/>
+	        <TextView
+	            android:layout_width="match_parent"
+	            android:layout_height="match_parent"
+	            android:textAppearance="?android:attr/textAppearanceSmall"
+	            android:text="Subtitle"
+	            android:id="@+id/right_subtitle_text_view"
+	            android:textColor="#ffffff"
+	            android:layout_alignParentStart="true"
+	            android:textAlignment="center"
+	            android:paddingLeft="3dp" android:paddingRight="3dp"/>
+	    </LinearLayout>
+	    </LinearLayout>
+	</LinearLayout>
+	<View
+			android:layout_width="fill_parent"
+			android:layout_height="1dp"
+			android:background="@android:color/darker_gray"/>
 </LinearLayout>

+ 2 - 1
res/menu/profile_manager_actions.xml

@@ -3,5 +3,6 @@
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
 	<item android:id="@+id/profile_manager_action_add"
 		  android:icon="@drawable/ic_action_new"
-		  android:title="New profile" />
+		  android:title="New profile"
+		  android:showAsAction="always" />
 </menu>

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

@@ -60,7 +60,7 @@ public class StatisticsFragment extends Fragment implements ChecklistDialog.Chec
     static final String MENU_TITLE_NETWORK = "Networks";
     static final String MENU_TITLE_ATTACKS = "Attacks";
 
-    static final String MENU_POPUP_TITLE = "Visualise:";
+    static final String MENU_POPUP_TITLE = "Visualize";
 
     static final String CHART_TYPE_TITLE_BAR = "Bar Plot";
     static final String CHART_TYPE_TITLE_PIE = "Pie Plot";

+ 10 - 3
src/de/tudarmstadt/informatik/hostage/ui2/popup/AbstractPopup.java

@@ -3,6 +3,7 @@ package de.tudarmstadt.informatik.hostage.ui2.popup;
 import android.app.Activity;
 import android.content.Context;
 import android.graphics.Rect;
+import android.util.DisplayMetrics;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
@@ -12,6 +13,8 @@ import android.view.WindowManager;
 import android.widget.LinearLayout;
 import android.widget.PopupWindow;
 
+import de.tudarmstadt.informatik.hostage.R;
+
 /**
  * Created by Julien on 13.02.14.
  */
@@ -53,7 +56,11 @@ public abstract class AbstractPopup {
             view.setOnTouchListener(new View.OnTouchListener() {
                 @Override
                 public boolean onTouch(View view, MotionEvent event) {
-                    if (event.getAction() == MotionEvent.ACTION_UP){
+	                if(event.getAction() == MotionEvent.ACTION_DOWN){
+						item.onItemDown(event);
+	                } else if (event.getAction() == MotionEvent.ACTION_UP){
+	                    item.onItemUp(event);
+
                         AbstractPopup.this.onPopupItemClickListener.onItemClick(item.onClickedResult(event));
                         AbstractPopup.this.popupWindow.dismiss();
                     }
@@ -103,9 +110,9 @@ public abstract class AbstractPopup {
 
             AbstractPopup.this.configureView(this.rootView);
 
-            int smallBottomOffset = 10;
+            int smallBottomOffset = 45;
             this.popupWindow.setWidth(width);
-            this.popupWindow.setHeight(height + smallBottomOffset);
+            this.popupWindow.setHeight(height);
             this.popupWindow.showAtLocation(anchorView, Gravity.NO_GRAVITY, x, y-smallBottomOffset);
 
 

+ 5 - 0
src/de/tudarmstadt/informatik/hostage/ui2/popup/AbstractPopupItem.java

@@ -75,5 +75,10 @@ public abstract class AbstractPopupItem {
         return this;
     }
 
+	public void onItemDown(MotionEvent event){
+	}
 
+	public void onItemUp(MotionEvent event){
+
+	}
 }

+ 23 - 2
src/de/tudarmstadt/informatik/hostage/ui2/popup/SimplePopupItem.java

@@ -1,6 +1,7 @@
 package de.tudarmstadt.informatik.hostage.ui2.popup;
 
 import android.content.Context;
+import android.view.MotionEvent;
 import android.view.View;
 import android.widget.RadioButton;
 import android.widget.TextView;
@@ -13,9 +14,13 @@ import de.tudarmstadt.informatik.hostage.R;
 public class SimplePopupItem extends AbstractPopupItem {
 
     public boolean selected;
+	private Context context;
+	private View container;
 
-    public SimplePopupItem(Context context) {
+	public SimplePopupItem(Context context) {
         super(context);
+
+	    this.context = context;
     }
 
     public int getLayoutId(){
@@ -30,7 +35,7 @@ public class SimplePopupItem extends AbstractPopupItem {
         if (this.isSelected()){
             cbox.setVisibility(View.VISIBLE);
         } else {
-            cbox.setVisibility(View.GONE);
+            cbox.setVisibility(View.INVISIBLE);
         }
     }
 
@@ -39,8 +44,24 @@ public class SimplePopupItem extends AbstractPopupItem {
         if (this.getItemView() != null) this.configureItemView(this.getItemView());
     }
 
+	private View getContainer(){
+		if(container == null){
+			container = this.getItemView().findViewById(R.id.popup_item_container);
+		}
+
+		return container;
+	}
+
     public boolean isSelected(){
         return this.selected;
     }
 
+	public void onItemDown(MotionEvent event){
+		getContainer().setBackgroundColor(
+				context.getResources().getColor(android.R.color.holo_blue_light));
+	}
+
+	public void onItemUp(MotionEvent event){
+		getContainer().setBackgroundColor(context.getResources().getColor(android.R.color.transparent));
+	}
 }

+ 47 - 1
src/de/tudarmstadt/informatik/hostage/ui2/popup/SplitPopupItem.java

@@ -19,8 +19,14 @@ public class SplitPopupItem extends AbstractPopupItem {
 
     public boolean wasRightTouch;
 
+	private Context context;
+	private View left_container;
+	private View right_container;
+
     public SplitPopupItem(Context context){
         super(context);
+
+	    this.context = context;
     }
 
     public int getLayoutId(){
@@ -54,8 +60,48 @@ public class SplitPopupItem extends AbstractPopupItem {
     }
 
     public Object onClickedResult(MotionEvent event){
-        this.wasRightTouch = event.getX() > this.getItemView().getX() + (this.getItemView().getWidth() / 2);
+        this.wasRightTouch = isRightTouch(event);
         return this;
     }
 
+	private boolean isRightTouch(MotionEvent event){
+		return event.getX() > this.getItemView().getX() + (this.getItemView().getWidth() / 2);
+	}
+
+	private View getLeftContainer(){
+		if(left_container == null){
+			left_container = this.getItemView().findViewById(R.id.popup_left_container);
+		}
+
+		return left_container;
+	}
+
+
+	private View getRightContainer(){
+		if(right_container == null){
+			right_container = this.getItemView().findViewById(R.id.popup_right_container);
+		}
+
+		return right_container;
+	}
+
+	public void onItemDown(MotionEvent event){
+		int blue_color = context.getResources().getColor(android.R.color.holo_blue_light);
+		int trans_color = context.getResources().getColor(android.R.color.transparent);
+
+		if(!isRightTouch(event)){
+			getLeftContainer().setBackgroundColor(blue_color);
+			getRightContainer().setBackgroundColor(trans_color);
+		} else {
+			getLeftContainer().setBackgroundColor(trans_color);
+			getRightContainer().setBackgroundColor(blue_color);
+		}
+	}
+
+	public void onItemUp(MotionEvent event){
+		int trans_color = context.getResources().getColor(android.R.color.transparent);
+
+		getLeftContainer().setBackgroundColor(trans_color);
+		getRightContainer().setBackgroundColor(trans_color);
+	}
 }