/* Android IMSI-Catcher Detector | (c) AIMSICD Privacy Project
* -----------------------------------------------------------
* LICENSE: http://git.io/vki47 | TERMS: http://git.io/vki4o
* -----------------------------------------------------------
*/
package com.secupwn.aimsicd.ui.drawer;
import android.content.Context;
import android.widget.BaseAdapter;
import com.secupwn.aimsicd.R;
import com.secupwn.aimsicd.adapters.DrawerMenuAdapter;
import com.secupwn.aimsicd.constants.DrawerMenu;
import java.util.ArrayList;
import java.util.List;
import lombok.Getter;
@Getter
public class DrawerMenuActivityConfiguration {
private int mainLayout;
private int drawerLayoutId;
private int leftDrawerId;
private int[] actionMenuItemsToHideWhenDrawerOpen;
private List<NavDrawerItem> navItems;
private BaseAdapter baseAdapter;
private DrawerMenuActivityConfiguration(Builder pBuilder) {
mainLayout = pBuilder.mMainLayout;
drawerLayoutId = pBuilder.mDrawerLayoutId;
leftDrawerId = pBuilder.mLeftDrawerId;
actionMenuItemsToHideWhenDrawerOpen = pBuilder.mActionMenuItemsToHideWhenDrawerOpen;
navItems = pBuilder.mNavItems;
baseAdapter = pBuilder.mBaseAdapter;
}
public static class Builder {
private final Context mContext;
private int mMainLayout;
private int mDrawerLayoutId;
private int mLeftDrawerId;
private int[] mActionMenuItemsToHideWhenDrawerOpen;
private List<NavDrawerItem> mNavItems;
private int mDrawerOpenDesc;
private int mDrawerCloseDesc;
private BaseAdapter mBaseAdapter;
public Builder(Context pContext) {
mContext = pContext;
}
public Builder mainLayout(int pMainLayout) {
mMainLayout = pMainLayout;
return this;
}
public Builder drawerLayoutId(int pDrawerLayoutId) {
mDrawerLayoutId = pDrawerLayoutId;
return this;
}
public Builder leftDrawerId(int pLeftDrawerId) {
mLeftDrawerId = pLeftDrawerId;
return this;
}
public Builder drawerOpenDesc(int pDrawerOpenDesc) {
mDrawerOpenDesc = pDrawerOpenDesc;
return this;
}
public Builder drawerCloseDesc(int pDrawerCloseDesc) {
mDrawerCloseDesc = pDrawerCloseDesc;
return this;
}
public DrawerMenuActivityConfiguration build() {
List<NavDrawerItem> menu = new ArrayList<>();
//Section Main
menu.add(DrawerMenuSection.create(DrawerMenu.ID.SECTION_MAIN, mContext.getString(R.string.main)));
menu.add(DrawerMenuItem.create(DrawerMenu.ID.MAIN.PHONE_SIM_DETAILS, mContext.getString(R.string.device_info), R.drawable.ic_action_phone, true));
menu.add(DrawerMenuItem.create(DrawerMenu.ID.MAIN.NEIGHBORING_CELLS, mContext.getString(R.string.cell_info_title), R.drawable.cell_tower, true));
menu.add(DrawerMenuItem.create(DrawerMenu.ID.MAIN.DB_VIEWER, mContext.getString(R.string.db_viewer), R.drawable.ic_action_storage, true));
menu.add(DrawerMenuItem.create(DrawerMenu.ID.MAIN.ANTENNA_MAP_VIEW, mContext.getString(R.string.map_view), R.drawable.ic_action_map, false));
menu.add(DrawerMenuItem.create(DrawerMenu.ID.MAIN.AT_COMMAND_INTERFACE, mContext.getString(R.string.at_command_title), R.drawable.ic_action_computer, true));
//Section Settings
menu.add(DrawerMenuSection.create(DrawerMenu.ID.SECTION_DATABASE_SETTINGS, mContext.getString(R.string.database_settings)));
menu.add(DrawerMenuItem.create(DrawerMenu.ID.DATABASE_SETTINGS.RESET_DB, mContext.getString(R.string.clear_database), R.drawable.ic_action_delete_database, false));
//Section Application
menu.add(DrawerMenuSection.create(DrawerMenu.ID.SECTION_APPLICATION, mContext.getString(R.string.application)));
menu.add(DrawerMenuItem.create(DrawerMenu.ID.APPLICATION.DOWNLOAD_LOCAL_BTS_DATA, mContext.getString(R.string.get_opencellid), R.drawable.stat_sys_download_anim0, false));
menu.add(DrawerMenuItem.create(DrawerMenu.ID.APPLICATION.UPLOAD_LOCAL_BTS_DATA, mContext.getString(R.string.upload_bts), R.drawable.stat_sys_upload_anim0, false));
menu.add(DrawerMenuItem.create(DrawerMenu.ID.APPLICATION.QUIT, mContext.getString(R.string.quit), R.drawable.ic_action_remove, false));
mNavItems = menu;
if (mMainLayout == 0) {
this.mainLayout(R.layout.activity_main);
}
if (mDrawerLayoutId == 0) {
this.drawerLayoutId(R.id.drawer_layout);
}
if (mLeftDrawerId == 0) {
this.leftDrawerId(R.id.left_drawer);
}
if (mDrawerOpenDesc == 0) {
this.drawerOpenDesc(R.string.drawer_open);
}
if (mDrawerCloseDesc == 0) {
this.drawerCloseDesc(R.string.drawer_close);
}
if (mBaseAdapter == null) {
mBaseAdapter = new DrawerMenuAdapter(mContext, R.layout.drawer_item, menu);
}
return new DrawerMenuActivityConfiguration(this);
}
}
}