package de.theknut.xposedgelsettings.hooks.appdrawer.tabsandfolders;
import android.content.ComponentName;
import android.content.Intent;
import java.util.ArrayList;
import java.util.Comparator;
import de.theknut.xposedgelsettings.hooks.Common;
import de.theknut.xposedgelsettings.hooks.HooksBaseClass;
import de.theknut.xposedgelsettings.ui.AllAppsList;
import de.theknut.xposedgelsettings.ui.SaveActivity;
/**
* Created by Alexander Schulz on 05.11.2014.
*/
public abstract class TabHelper extends HooksBaseClass {
public abstract Comparator getAppNameComparator();
public enum ContentType {
Applications,
User,
Xposed,
Google,
Widgets,
IconPacks,
NewUpdated,
NewApps
}
public static TabHelper getInstance() {
if (Common.IS_M_GNL) {
return TabHelperM.getInstance();
}
return Common.IS_PRE_GNL_4 ? TabHelperKK.getInstance() : TabHelperL.getInstance();
}
protected ArrayList<Tab> tabs;
abstract public Tab getTabById(long tabId);
abstract public void invalidate();
abstract public Tab getCurrentTabData();
abstract public ArrayList<String> getAppsToHide();
abstract public void scroll();
abstract public void removeTab(Tab tab);
abstract public void setTabColor(int color);
abstract public void saveTabData();
abstract public boolean handleScroll(float overscroll);
public void updateTabs() {
for (Tab tab : tabs) {
tab.update();
}
}
protected Intent getBaseIntent(boolean openVisible, long itemid, String tabname) {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
intent.setComponent(new ComponentName(Common.PACKAGE_NAME, openVisible ? AllAppsList.class.getName() : SaveActivity.class.getName()));
intent.putExtra("mode", AllAppsList.MODE_MANAGE_TAB);
intent.putExtra("itemid", itemid);
intent.putExtra("name", tabname);
ArrayList<String> excludeApps = new ArrayList<String>();
ArrayList<String> data = new ArrayList<String>(tabs.size());
for (Tab tab : tabs) {
data.add(tab.toString());
if (openVisible && tab.isUserTab() && tab.getId() != itemid) {
excludeApps.addAll(tab.getRawData());
}
}
intent.putExtra("tabsdata", data);
if (openVisible) {
intent.putExtra("excludeapps", excludeApps);
}
return intent;
}
}