document BrowserPresenter, fix some things with it
This commit is contained in:
parent
d6a1450bef
commit
674ebb88f9
@ -410,7 +410,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
|||||||
setIntent(null);
|
setIntent(null);
|
||||||
panicClean();
|
panicClean();
|
||||||
} else {
|
} else {
|
||||||
mPresenter.setupTabs(getIntent(), isIncognito());
|
mPresenter.setupTabs(getIntent());
|
||||||
setIntent(null);
|
setIntent(null);
|
||||||
mProxyUtils.checkForProxy(BrowserActivity.this);
|
mProxyUtils.checkForProxy(BrowserActivity.this);
|
||||||
}
|
}
|
||||||
|
@ -53,8 +53,14 @@ public class BrowserPresenter {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setupTabs(@Nullable Intent intent, boolean isIncognito) {
|
/**
|
||||||
mTabsModel.initializeTabs((Activity) mView, intent, isIncognito)
|
* Initializes the tab manager with the new intent
|
||||||
|
* that is handed in by the BrowserActivity.
|
||||||
|
*
|
||||||
|
* @param intent the intent to handle, may be null.
|
||||||
|
*/
|
||||||
|
public void setupTabs(@Nullable Intent intent) {
|
||||||
|
mTabsModel.initializeTabs((Activity) mView, intent, mIsIncognito)
|
||||||
.subscribe(new OnSubscribe<Void>() {
|
.subscribe(new OnSubscribe<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onComplete() {
|
public void onComplete() {
|
||||||
@ -65,7 +71,15 @@ public class BrowserPresenter {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void tabChangeOccurred(LightningView tab) {
|
/**
|
||||||
|
* Notify the presenter that a change occurred to
|
||||||
|
* the current tab. Currently doesn't do anything
|
||||||
|
* other than tell the view to notify the adapter
|
||||||
|
* about the change.
|
||||||
|
*
|
||||||
|
* @param tab the tab that changed, may be null.
|
||||||
|
*/
|
||||||
|
public void tabChangeOccurred(@Nullable LightningView tab) {
|
||||||
mView.notifyTabViewChanged(mTabsModel.indexOfTab(tab));
|
mView.notifyTabViewChanged(mTabsModel.indexOfTab(tab));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,6 +121,9 @@ public class BrowserPresenter {
|
|||||||
mCurrentTab = newTab;
|
mCurrentTab = newTab;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Closes all tabs but the current tab.
|
||||||
|
*/
|
||||||
public void closeAllOtherTabs() {
|
public void closeAllOtherTabs() {
|
||||||
|
|
||||||
while (mTabsModel.last() != mTabsModel.indexOfCurrentTab()) {
|
while (mTabsModel.last() != mTabsModel.indexOfCurrentTab()) {
|
||||||
@ -119,6 +136,12 @@ public class BrowserPresenter {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes the tab at the specified position.
|
||||||
|
*
|
||||||
|
* @param position the position at which to
|
||||||
|
* delete the tab.
|
||||||
|
*/
|
||||||
public void deleteTab(int position) {
|
public void deleteTab(int position) {
|
||||||
final LightningView tabToDelete = mTabsModel.getTabAtPosition(position);
|
final LightningView tabToDelete = mTabsModel.getTabAtPosition(position);
|
||||||
|
|
||||||
@ -172,7 +195,14 @@ public class BrowserPresenter {
|
|||||||
Log.d(TAG, "deleted tab");
|
Log.d(TAG, "deleted tab");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onNewIntent(final Intent intent) {
|
/**
|
||||||
|
* Handle a new intent from the the main
|
||||||
|
* BrowserActivity.
|
||||||
|
*
|
||||||
|
* @param intent the intent to handle,
|
||||||
|
* may be null.
|
||||||
|
*/
|
||||||
|
public void onNewIntent(@Nullable final Intent intent) {
|
||||||
mTabsModel.doAfterInitialization(new Runnable() {
|
mTabsModel.doAfterInitialization(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@ -206,7 +236,13 @@ public class BrowserPresenter {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadUrlInCurrentView(final String url) {
|
/**
|
||||||
|
* Loads a URL in the current tab.
|
||||||
|
*
|
||||||
|
* @param url the URL to load, must
|
||||||
|
* not be null.
|
||||||
|
*/
|
||||||
|
public void loadUrlInCurrentView(@NonNull final String url) {
|
||||||
final LightningView currentTab = mTabsModel.getCurrentTab();
|
final LightningView currentTab = mTabsModel.getCurrentTab();
|
||||||
if (currentTab == null) {
|
if (currentTab == null) {
|
||||||
// This is a problem, probably an assert will be better than a return
|
// This is a problem, probably an assert will be better than a return
|
||||||
@ -216,21 +252,49 @@ public class BrowserPresenter {
|
|||||||
currentTab.loadUrl(url);
|
currentTab.loadUrl(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notifies the presenter that it should
|
||||||
|
* shut down. This should be called when
|
||||||
|
* the BrowserActivity is destroyed so that
|
||||||
|
* we don't leak any memory.
|
||||||
|
*/
|
||||||
public void shutdown() {
|
public void shutdown() {
|
||||||
onTabChanged(null);
|
onTabChanged(null);
|
||||||
mTabsModel.setTabNumberChangedListener(null);
|
mTabsModel.setTabNumberChangedListener(null);
|
||||||
mTabsModel.cancelPendingWork();
|
mTabsModel.cancelPendingWork();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void tabChanged(int position) {
|
/**
|
||||||
if (position < 0) {
|
* Notifies the presenter that we wish
|
||||||
|
* to switch to a different tab at the
|
||||||
|
* specified position. If the position
|
||||||
|
* is not in the model, this method will
|
||||||
|
* do nothing.
|
||||||
|
*
|
||||||
|
* @param position the position of the
|
||||||
|
* tab to switch to.
|
||||||
|
*/
|
||||||
|
public synchronized void tabChanged(int position) {
|
||||||
|
if (position < 0 || position >= mTabsModel.size()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LightningView tab = mTabsModel.switchToTab(position);
|
LightningView tab = mTabsModel.switchToTab(position);
|
||||||
onTabChanged(tab);
|
onTabChanged(tab);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized boolean newTab(String url, boolean show) {
|
/**
|
||||||
|
* Open a new tab with the specified URL. You
|
||||||
|
* can choose to show the tab or load it in the
|
||||||
|
* background.
|
||||||
|
*
|
||||||
|
* @param url the URL to load, may be null if you
|
||||||
|
* don't wish to load anything.
|
||||||
|
* @param show whether or not to switch to this
|
||||||
|
* tab after opening it.
|
||||||
|
* @return true if we successfully created the tab,
|
||||||
|
* false if we have hit max tabs.
|
||||||
|
*/
|
||||||
|
public synchronized boolean newTab(@Nullable String url, boolean show) {
|
||||||
// Limit number of tabs for limited version of app
|
// Limit number of tabs for limited version of app
|
||||||
if (!Constants.FULL_VERSION && mTabsModel.size() >= 10) {
|
if (!Constants.FULL_VERSION && mTabsModel.size() >= 10) {
|
||||||
mView.showSnackbar(R.string.max_tabs);
|
mView.showSnackbar(R.string.max_tabs);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user