// Path: app/src/main/java/com/zhihu/android/app/mirror/util/DisplayUtils.java
// public class DisplayUtils {
//     public static float getScreenDensity(Context context) {
//         return context.getResources().getDisplayMetrics().density;
//     }
// 
//     public static int getScreenWidth(Context context) {
//         WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
//         Display display = manager.getDefaultDisplay();
//         Point point = new Point();
//         display.getSize(point);
//         return point.x;
//     }
// 
//     public static int getScreenHeight(Context context) {
//         WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
//         Display display = manager.getDefaultDisplay();
//         Point point = new Point();
//         display.getSize(point);
//         return point.y;
//     }
// 
//     public static int getStatusBarHeight(Context context) {
//         int statusBarHeight = 0;
// 
//         int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
//         if (resourceId > 0) {
//             statusBarHeight = context.getResources().getDimensionPixelSize(resourceId);
//         }
// 
//         return statusBarHeight;
//     }
// 
//     public static int getNavigationBarHeight(Context context) {
//         int navigationBarHeight = 0;
// 
//         int resourceId = context.getResources().getIdentifier("navigation_bar_height", "dimen", "android");
//         if (resourceId > 0) {
//             navigationBarHeight = context.getResources().getDimensionPixelSize(resourceId);
//         }
// 
//         return navigationBarHeight;
//     }
// 
//     public static int dp2px(Context context, float dp) {
//         return (int) (getScreenDensity(context) * dp + 0.5F);
//     }
// 
//     public static int sp2px(Context context, float sp) {
//         return (int) (context.getResources().getDisplayMetrics().scaledDensity * sp + 0.5F);
//     }
// 
//     public static void requestImmersiveStickyMode(Activity activity) {
//         activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
//                 | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
//                 | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
//                 | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
//                 | View.SYSTEM_UI_FLAG_FULLSCREEN
//                 | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
//     }
// 
//     public static void clearImmersiveStickyMode(Activity activity) {
//         activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
//     }
// }


import com.zhihu.android.app.mirror.R;
import com.zhihu.android.app.mirror.util.DisplayUtils;
import android.content.Context;
import android.support.annotation.IntDef;
import android.support.v7.widget.AppCompatTextView;
import android.util.AttributeSet;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

    public ConnectStatusLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ConnectStatusLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public void setConnectStatus(@ConnectStatus int status, String tmpl) {
        switch (status) {
            case CONNECTED:
                mPointView.stopBreath();
                mMessageView.setText(getResources().getString(R.string.connect_status_connected, tmpl));
                break;
            case DISCONNECTED:
                mPointView.startBreath();
                mMessageView.setText(getResources().getString(R.string.connect_status_disconnected, tmpl));
                break;
            case CONNECTING:
            default:
                mPointView.startBreath();
                mMessageView.setText(getResources().getString(R.string.connect_status_connecting, tmpl));
                break;
        }
    }

    @Override
    public void onFinishInflate() {
        super.onFinishInflate();
// Path: app/src/main/java/com/zhihu/android/app/mirror/util/DisplayUtils.java
// public class DisplayUtils {
//     public static float getScreenDensity(Context context) {
//         return context.getResources().getDisplayMetrics().density;
//     }
// 
//     public static int getScreenWidth(Context context) {
//         WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
//         Display display = manager.getDefaultDisplay();
//         Point point = new Point();
//         display.getSize(point);
//         return point.x;
//     }
// 
//     public static int getScreenHeight(Context context) {
//         WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
//         Display display = manager.getDefaultDisplay();
//         Point point = new Point();
//         display.getSize(point);
//         return point.y;
//     }
// 
//     public static int getStatusBarHeight(Context context) {
//         int statusBarHeight = 0;
// 
//         int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
//         if (resourceId > 0) {
//             statusBarHeight = context.getResources().getDimensionPixelSize(resourceId);
//         }
// 
//         return statusBarHeight;
//     }
// 
//     public static int getNavigationBarHeight(Context context) {
//         int navigationBarHeight = 0;
// 
//         int resourceId = context.getResources().getIdentifier("navigation_bar_height", "dimen", "android");
//         if (resourceId > 0) {
//             navigationBarHeight = context.getResources().getDimensionPixelSize(resourceId);
//         }
// 
//         return navigationBarHeight;
//     }
// 
//     public static int dp2px(Context context, float dp) {
//         return (int) (getScreenDensity(context) * dp + 0.5F);
//     }
// 
//     public static int sp2px(Context context, float sp) {
//         return (int) (context.getResources().getDisplayMetrics().scaledDensity * sp + 0.5F);
//     }
// 
//     public static void requestImmersiveStickyMode(Activity activity) {
//         activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
//                 | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
//                 | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
//                 | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
//                 | View.SYSTEM_UI_FLAG_FULLSCREEN
//                 | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
//     }
// 
//     public static void clearImmersiveStickyMode(Activity activity) {
//         activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
//     }
// }


// Path: app/src/main/java/com/zhihu/android/app/mirror/widget/ConnectStatusLayout.java
import com.zhihu.android.app.mirror.R;
import com.zhihu.android.app.mirror.util.DisplayUtils;
import android.content.Context;
import android.support.annotation.IntDef;
import android.support.v7.widget.AppCompatTextView;
import android.util.AttributeSet;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


    public ConnectStatusLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ConnectStatusLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public void setConnectStatus(@ConnectStatus int status, String tmpl) {
        switch (status) {
            case CONNECTED:
                mPointView.stopBreath();
                mMessageView.setText(getResources().getString(R.string.connect_status_connected, tmpl));
                break;
            case DISCONNECTED:
                mPointView.startBreath();
                mMessageView.setText(getResources().getString(R.string.connect_status_disconnected, tmpl));
                break;
            case CONNECTING:
            default:
                mPointView.startBreath();
                mMessageView.setText(getResources().getString(R.string.connect_status_connecting, tmpl));
                break;
        }
    }

    @Override
    public void onFinishInflate() {
        super.onFinishInflate();
        ((FrameLayout.LayoutParams) getLayoutParams()).topMargin = DisplayUtils.getStatusBarHeight(getContext());