导航菜单

页面标题

页面副标题

xDrip+ v04633772025.07.16 - StatsActivity.java 源代码

正在查看: xDrip+ v04633772025.07.16 应用的 StatsActivity.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.eveningoutpost.dexdrip.stats;

import android.content.res.ColorStateList;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.eveningoutpost.dexdrip.models.JoH;
import com.eveningoutpost.dexdrip.models.UserError;
import com.eveningoutpost.dexdrip.utilitymodels.JamorhamShowcaseDrawer;
import com.eveningoutpost.dexdrip.utilitymodels.Pref;
import com.eveningoutpost.dexdrip.utilitymodels.ShotStateStore;
import com.eveningoutpost.dexdrip.utils.ActivityWithMenu;
import com.github.amlcurran.showcaseview.ShowcaseView;
import com.github.amlcurran.showcaseview.targets.ViewTarget;
import java.io.File;

public class StatsActivity extends ActivityWithMenu {
    public static int state = 2;
    private Button button30d;
    private Button button7d;
    private Button button90d;
    private Button buttonTD;
    private Button buttonYTD;
    private View decorView;
    TextView[] indicationDots;
    StatisticsPageAdapter mStatisticsPageAdapter;
    ViewPager mViewPager;
    MenuItem menuItem;
    MenuItem menuItem2;
    private String stateString;

    @Override
    protected void onCreate(Bundle bundle) {
        evaluateColors(false);
        super.onCreate(bundle);
        setContentView(2131492943);
        this.decorView = getWindow().getDecorView();
        assignButtonNames();
        initPagerAndIndicator();
        setButtonColors();
        registerButtonListeners();
        if (JoH.ratelimit("statistics-startup", 5)) {
            showStartupInfo();
        }
    }

    private void showStartupInfo() {
        if (ShotStateStore.hasShot(8)) {
            return;
        }
        final ViewTarget viewTarget = new ViewTarget(2131296470, this);
        JoH.runOnUiThreadDelayed(new Runnable() {
            @Override
            public void run() {
                ShowcaseView build = new ShowcaseView.Builder(this).setTarget(viewTarget).setStyle(2131820768).setContentTitle("Swipe for Different Reports").setContentText("\nSwipe left and right to see different report tabs.\n\nChoose time period for Today, Yesterday, 7 Days etc.\n\nFull screen mode, print colors and Sharing are supported from the butttons and 3 dot menu.").setShowcaseDrawer(new JamorhamShowcaseDrawer(StatsActivity.this.getResources(), StatsActivity.this.getTheme(), 50.0f, 20.0f)).singleShot(8L).build();
                build.setBackgroundColor(0);
                build.show();
            }
        }, 3000L);
    }

    private void assignButtonNames() {
        this.buttonTD = (Button) findViewById(2131296472);
        this.buttonYTD = (Button) findViewById(2131296473);
        this.button7d = (Button) findViewById(2131296470);
        this.button30d = (Button) findViewById(2131296469);
        this.button90d = (Button) findViewById(2131296471);
    }

    private void initPagerAndIndicator() {
        StatisticsPageAdapter statisticsPageAdapter = new StatisticsPageAdapter(getSupportFragmentManager());
        this.mStatisticsPageAdapter = statisticsPageAdapter;
        this.indicationDots = new TextView[statisticsPageAdapter.getCount()];
        LinearLayout linearLayout = (LinearLayout) findViewById(2131296678);
        int i = 0;
        while (true) {
            TextView[] textViewArr = this.indicationDots;
            if (i < textViewArr.length) {
                textViewArr[i] = new TextView(this);
                this.indicationDots[i].setText("◯");
                this.indicationDots[i].setTextSize(12.0f);
                linearLayout.addView(this.indicationDots[i], new ViewGroup.LayoutParams(-2, -2));
                i++;
            } else {
                textViewArr[0].setText("⚫");
                ViewPager viewPager = (ViewPager) findViewById(2131296832);
                this.mViewPager = viewPager;
                viewPager.setAdapter(this.mStatisticsPageAdapter);
                this.mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                    @Override
                    public void onPageScrollStateChanged(int i2) {
                    }

                    @Override
                    public void onPageScrolled(int i2, float f, int i3) {
                    }

                    @Override
                    public void onPageSelected(int i2) {
                        int i3 = 0;
                        while (true) {
                            TextView[] textViewArr2 = StatsActivity.this.indicationDots;
                            if (i3 < textViewArr2.length) {
                                textViewArr2[i3].setText("◯");
                                i3++;
                            } else {
                                textViewArr2[i2].setText("⚫");
                                return;
                            }
                        }
                    }
                });
                this.mViewPager.setCurrentItem(2);
                return;
            }
        }
    }

    void setButtonColors() {
        int i = state;
        if (i == 0) {
            this.stateString = "Today";
        } else if (i == 1) {
            this.stateString = "Yesterday";
        } else if (i == 2) {
            this.stateString = "7 days";
        } else if (i == 3) {
            this.stateString = "30 days";
        } else if (i == 4) {
            this.stateString = "90 days";
        }
        ColorStateList colorStateList = new ColorStateList(new int[][]{new int[0]}, new int[]{-10461088});
        this.buttonTD.setBackgroundTintList(colorStateList);
        this.buttonYTD.setBackgroundTintList(colorStateList);
        this.button7d.setBackgroundTintList(colorStateList);
        this.button30d.setBackgroundTintList(colorStateList);
        this.button90d.setBackgroundTintList(colorStateList);
        ColorStateList colorStateList2 = new ColorStateList(new int[][]{new int[0]}, new int[]{-5636096});
        int i2 = state;
        if (i2 == 0) {
            this.buttonTD.setBackgroundTintList(colorStateList2);
            return;
        }
        if (i2 == 1) {
            this.buttonYTD.setBackgroundTintList(colorStateList2);
            return;
        }
        if (i2 == 2) {
            this.button7d.setBackgroundTintList(colorStateList2);
        } else if (i2 == 3) {
            this.button30d.setBackgroundTintList(colorStateList2);
        } else {
            if (i2 != 4) {
                return;
            }
            this.button90d.setBackgroundTintList(colorStateList2);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(2131558414, menu);
        this.menuItem = menu.findItem(2131296340);
        this.menuItem2 = menu.findItem(2131296342);
        updateMenuChecked();
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public void onWindowFocusChanged(boolean z) {
        super.onWindowFocusChanged(z);
        if (z) {
            fullScreenHandler(false);
        }
    }

    private void updateMenuChecked() {
        this.menuItem.setChecked(Pref.getBoolean("show_statistics_full_screen", false));
        this.menuItem2.setChecked(Pref.getBoolean("show_statistics_print_color", false));
    }

    private void evaluateColors(boolean z) {
        if (Pref.getBooleanDefaultFalse("show_statistics_print_color")) {
            setTheme(2131820875);
        } else {
            setTheme(2131820551);
        }
        if (z) {
            recreate();
        }
    }

    private void fullScreenHandler(boolean z) {
        JoH.goFullScreen(Pref.getBooleanDefaultFalse("show_statistics_full_screen"), this.decorView);
        if (!z || Pref.getBooleanDefaultFalse("show_statistics_full_screen")) {
            return;
        }
        recreate();
    }

    public void toggleStatisticsFullScreenMode(MenuItem menuItem) {
        Pref.toggleBoolean("show_statistics_full_screen");
        updateMenuChecked();
        fullScreenHandler(true);
    }

    public void toggleStatisticsPrintingMode(MenuItem menuItem) {
        Pref.toggleBoolean("show_statistics_print_color");
        evaluateColors(true);
        updateMenuChecked();
    }

    public void statisticsDisableFullScreen(View view) {
        toggleStatisticsFullScreenMode(null);
    }

    public void statisticsShare(View view) {
        statisticsShare((MenuItem) null);
    }

    public void statisticsShare(MenuItem menuItem) {
        try {
            if (checkPermissions()) {
                JoH.runOnUiThreadDelayed(new Runnable() {
                    @Override
                    public void run() {
                        View findViewWithTag = StatsActivity.this.getWindow().getDecorView().findViewWithTag(Integer.valueOf(StatsActivity.this.mViewPager.getCurrentItem()));
                        String str = "xDrip-Screenshot-" + JoH.dateTimeText(JoH.tsl()).replace(" ", "-").replace(":", "-").replace(".", "-") + ".png";
                        String str2 = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath() + "/Screenshots";
                        JoH.bitmapToFile(JoH.screenShot(findViewWithTag, "xDrip+ Statistics for " + StatsActivity.this.stateString + "   @ " + JoH.dateText(JoH.tsl())), str2, str);
                        JoH.shareImage(this, new File(str2 + "/" + str));
                    }
                }, 250L);
            }
        } catch (Exception e) {
            UserError.Log.e("Statistics", "Got exception sharing statistics: " + e);
            JoH.static_toast_long("Got an error: " + e);
        }
    }

    private boolean checkPermissions() {
        if (ContextCompat.checkSelfPermission(getApplicationContext(), "android.permission.WRITE_EXTERNAL_STORAGE") == 0) {
            return true;
        }
        ActivityCompat.requestPermissions(this, new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, 106);
        return false;
    }

    @Override
    public void onRequestPermissionsResult(int i, String[] strArr, int[] iArr) {
        super.onRequestPermissionsResult(i, strArr, iArr);
        if (i == 106) {
            if (iArr[0] == 0) {
                statisticsShare((MenuItem) null);
            } else {
                JoH.static_toast_long(this, "Cannot save screenshot without permission");
            }
        }
    }

    private void registerButtonListeners() {
        View.OnClickListener onClickListener = new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (view != StatsActivity.this.buttonTD) {
                    if (view != StatsActivity.this.buttonYTD) {
                        if (view != StatsActivity.this.button7d) {
                            if (view != StatsActivity.this.button30d) {
                                if (view == StatsActivity.this.button90d) {
                                    StatsActivity.state = 4;
                                }
                            } else {
                                StatsActivity.state = 3;
                            }
                        } else {
                            StatsActivity.state = 2;
                        }
                    } else {
                        StatsActivity.state = 1;
                    }
                } else {
                    StatsActivity.state = 0;
                }
                UserError.Log.d("DrawStats", "button pressed, invalidating");
                StatsActivity.this.mStatisticsPageAdapter.notifyDataSetChanged();
                StatsActivity.this.mViewPager.invalidate();
                StatsActivity.this.setButtonColors();
            }
        };
        this.buttonTD.setOnClickListener(onClickListener);
        this.buttonYTD.setOnClickListener(onClickListener);
        this.button7d.setOnClickListener(onClickListener);
        this.button30d.setOnClickListener(onClickListener);
        this.button90d.setOnClickListener(onClickListener);
    }

    @Override
    public String getMenuName() {
        return getString(2131756423);
    }

    public class StatisticsPageAdapter extends FragmentStatePagerAdapter {
        @Override
        public int getCount() {
            return 3;
        }

        @Override
        public int getItemPosition(Object obj) {
            return -2;
        }

        @Override
        public CharSequence getPageTitle(int i) {
            return i != 0 ? i != 1 ? "Percentile Chart" : "Range Pi Chart" : "General";
        }

        public StatisticsPageAdapter(FragmentManager fragmentManager) {
            super(fragmentManager);
        }

        @Override
        public Fragment getItem(int i) {
            if (i == 0) {
                return new FirstPageFragment();
            }
            if (i == 1) {
                return new ChartFragment();
            }
            return new PercentileFragment();
        }
    }
}