package com.github.postapczuk.lalauncher;

import android.view.Display;
import android.view.View;
import android.widget.ListAdapter;
import android.widget.ListView;

abstract class AttitudeHelper {
    static ListView applyPadding(ListView listView, Display display) {
        listView.setClipToPadding(false);
        final int displayHeight = display.getHeight();
        int heightViewBasedTopPadding = displayHeight / 6;
        if (getTotalHeightOfListView(listView) < displayHeight - heightViewBasedTopPadding) {
            heightViewBasedTopPadding = (displayHeight / 2) - (getTotalHeightOfListView(listView) / 2);
        }
        listView.setPadding(0, heightViewBasedTopPadding, 0, 50);
        return listView;
    }

    private static int getTotalHeightOfListView(ListView listView) {
        int totalHeight = 0;
        ListAdapter adapter = listView.getAdapter();
        for (int i = 0; i < adapter.getCount() - 1; i++) {
            View view = adapter.getView(i, null, listView);
            view.measure(
                    View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
                    View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
            );
            totalHeight += view.getMeasuredHeight();
        }
        return totalHeight + (listView.getDividerHeight() * (adapter.getCount()));
    }
}