package com.wamod.WAclass; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.os.Build; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.NavigationView; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.view.*; import android.widget.HorizontalScrollView; import android.widget.ImageView; import com.wamod.ColorsManager; import com.wamod.Resources; import com.wamod.Utils; /** * Created by brianvalente on 7/9/15. */ public class HomeActivity extends AppCompatActivity { public static void initHomeActivity(final com.whatsapp.HomeActivity a) { //if (Utils.prefs.getBoolean("debugging_wamodhomeactivity", false)) { Intent intent = new Intent(a, com.wamod.activity.home.HomeActivity.class); a.startActivity(intent); a.finish(); //} if (Utils.prefs.getBoolean("crash", false)) { Utils.edit.putBoolean("crash", false); Utils.edit.apply(); AlertDialog.Builder dialog = new AlertDialog.Builder(a); dialog.setTitle(a.getResources().getString(Resources.string.wamod_crash_title)); dialog.setMessage(a.getResources().getString(Resources.string.wamod_crash_message)); dialog.setPositiveButton(a.getResources().getString(Resources.string.wamod_crash_button), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); dialog.show(); } HorizontalScrollView tabs = (HorizontalScrollView) a.findViewById(Resources.id.tabs); tabs.setBackgroundColor(ColorsManager.getColor(ColorsManager.UI_ACTIVITY_TOOLBAR)); // Check if dark mode is activated and change the background View pager = a.findViewById(Resources.id.pager); pager.setBackgroundColor(ColorsManager.getColor(ColorsManager.UI_ACTIVITY_BACKGROUND)); // Load bottom navbar ViewStub wamod_bottomnav_viewstub = (ViewStub) a.findViewById(Resources.id.wamod_bottomnav_viewstub); if (wamod_bottomnav_viewstub != null) wamod_bottomnav_viewstub.inflate(); Utils.initWAMODfromHome(a); ActionBar actionbar = a.getSupportActionBar(); actionbar.setDisplayHomeAsUpEnabled(true); Drawable upIndicator = a.getResources().getDrawable(Resources.drawable.wamod_ic_menu); upIndicator.setColorFilter(Color.parseColor("#" + Utils.prefs.getString("general_toolbarforeground", "FFFFFF")), PorterDuff.Mode.MULTIPLY); actionbar.setHomeAsUpIndicator(upIndicator); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window w = a.getWindow(); // in Activity's onCreate() for instance w.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); w.setStatusBarColor(Color.parseColor("#00000000")); int padding = Utils.getStatusBarHeight(a); CoordinatorLayout coordinatorLayout = (CoordinatorLayout) a.findViewById(Resources.id.wamod_drawer_overlay); coordinatorLayout.setPadding(0,padding,0,0); coordinatorLayout.setBackgroundColor(ColorsManager.getColor(ColorsManager.UI_ACTIVITY_STATUSBAR)); } NavigationView navigationView = (NavigationView) a.findViewById(Resources.id.wamod_drawer); DrawerLayout drawerLayout = (DrawerLayout) a.findViewById(Resources.id.wamod_drawer_parent); drawerLayout.closeDrawer(navigationView, false); } /* Called on * com.whatsapp.HomeActivity.onPrepareOptionsMenu(Landroid/view/Menu;)Z * Where * Replace the entire method * Smali * .locals 1 * .prologue * invoke-static {p1}, Lcom/wamod/WAclass/HomeActivity;->_onPrepareOptionsMenu(Landroid/view/Menu;)V * invoke-super {p0, p1}, Lcom/whatsapp/DialogToastActivity;->onPrepareOptionsMenu(Landroid/view/Menu;)Z * move-result v0 * return v0 */ public static void _onPrepareOptionsMenu(Menu menu) { menu.clear(); // Search Drawable searchIcon = Utils.context.getResources().getDrawable(Resources.drawable.ic_action_search); searchIcon.setColorFilter(ColorsManager.getColor(ColorsManager.UI_ACTIVITY_TOOLBAR_ICONS), PorterDuff.Mode.MULTIPLY); menu.add(0, 0, 0, Resources.string.search).setIcon(searchIcon).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); } /* Called on * com.whatsapp.HomeActivity.onOptionsItemSelected(Landroid/view/MenuItem;)Z * Where * After prologue * Smali * invoke-static {p0, p1}, Lcom/wamod/WAclass/HomeActivity;->_onOptionsItemSelected(Lcom/whatsapp/HomeActivity;Landroid/view/MenuItem;)Z * move-result v0 * if-nez v0, :cond_4 * * ... * * :cond_4 * const/4 v0, 0x1 * :goto_0 * return v0 */ public static boolean _onOptionsItemSelected(com.whatsapp.HomeActivity a, MenuItem item) { switch (item.getItemId()) { case android.R.id.home: NavigationView navigationView = (NavigationView) a.findViewById(Resources.id.wamod_drawer); DrawerLayout drawerLayout = (DrawerLayout) a.findViewById(Resources.id.wamod_drawer_parent); drawerLayout.openDrawer(navigationView); return true; case 0: a.onSearchRequested(); return true; } return false; } /* Called on * com.whatsapp.HomeActivity.onBackPressed()V * Where * After prologue * Smali * invoke-static {p0}, Lcom/wamod/WAclass/HomeActivity;->_onBackPressed(Lcom/whatsapp/HomeActivity;)Z * move-result v0 * if-nez v0, :cond_2 * * ... * * :cond_2 * return-void */ public static boolean _onBackPressed(com.whatsapp.HomeActivity a) { NavigationView navigationView = (NavigationView) a.findViewById(Resources.id.wamod_drawer); DrawerLayout drawerLayout = (DrawerLayout) a.findViewById(Resources.id.wamod_drawer_parent); if (drawerLayout.isDrawerOpen(navigationView)) { drawerLayout.closeDrawer(navigationView); return true; } else return false; } /* Called on * com.whatsapp.v.getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View; * Where * Where 0x7f030033 is located * Smali * const/4 v3, 0x1 * invoke-static {v3}, Lcom/wamod/WAclass/HomeActivity;->getHomeTheme(I)I * move-result v3 */ /* Called on * com.whatsapp.a91.<init>(Lcom/whatsapp/ContactPicker;Landroid/content/Context;Ljava/util/ArrayList;)V * com.whatsapp.pe.<init>(Lcom/whatsapp/ContactsFragment;Landroid/content/Context;Ljava/util/ArrayList;)V * Where * ?? * Smali * const/4 v0, 0x2 * invoke-static {v0}, Lcom/wamod/WAclass/HomeActivity;->getHomeTheme(I)I * move-result v0 */ /* Called on * com.whatsapp.wu.getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View; * Where * Where 0x7f030070 is located * Smali * Replace with: * const/4 v4, 0x0 * invoke-static {v4}, Lcom/wamod/WAclass/HomeActivity;->getHomeTheme(I)I * move-result v4 */ public static int getHomeTheme(int id) { int homeThemeID = Integer.parseInt(Utils.prefs.getString("home_theme", "0")); int conversationsRow, callsRow, contactPickerRow; switch (homeThemeID) { case 0: // Stock conversationsRow = Resources.getLayout("conversations_row"); callsRow = Resources.getLayout("calls_row"); contactPickerRow = Resources.getLayout("contact_picker_row"); break; default: case 1: // WAMOD conversationsRow = Resources.getLayout("wamod_theme_wamod_conversations_row"); callsRow = Resources.getLayout("wamod_theme_wamod_calls_row"); contactPickerRow = Resources.getLayout("wamod_theme_wamod_contact_picker_row"); break; case 2: // Stock w/ counter in photo conversationsRow = Resources.getLayout("wamod_theme_stockwcounterphoto_conversations_row"); callsRow = Resources.getLayout("calls_row"); contactPickerRow = Resources.getLayout("contact_picker_row"); break; case 3: // Telegram conversationsRow = Resources.getLayout("wamod_theme_telegram_conversations_row"); callsRow = Resources.getLayout("calls_row"); contactPickerRow = Resources.getLayout("contact_picker_row"); break; } switch (id) { case 0: return conversationsRow; case 1: return callsRow; case 2: return contactPickerRow; } return conversationsRow; } public static void styleFAB(ImageView fab) { Drawable bg = fab.getBackground(); bg.setColorFilter(ColorsManager.getColor(ColorsManager.UI_ACTIVITY_TOOLBAR), PorterDuff.Mode.MULTIPLY); fab.setBackground(bg); Drawable icon = fab.getDrawable(); icon.setColorFilter(ColorsManager.getColor(ColorsManager.UI_ACTIVITY_TOOLBAR_ICONS), PorterDuff.Mode.MULTIPLY); fab.setImageDrawable(icon); } }