NekoX/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BaseFragment.java

287 lines
7.9 KiB
Java
Raw Normal View History

/*
* This is the source code of Telegram for Android v. 1.3.2.
* It is licensed under GNU GPL v. 2 or later.
* You should have received a copy of the license in this archive (see LICENSE).
*
* Copyright Nikolai Kudashov, 2013.
*/
2014-11-13 21:10:14 +01:00
package org.telegram.ui.ActionBar;
import android.app.Activity;
2015-05-21 23:27:27 +02:00
import android.app.Dialog;
2015-04-09 20:00:14 +02:00
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import org.telegram.messenger.ConnectionsManager;
import org.telegram.messenger.FileLog;
import org.telegram.messenger.R;
public class BaseFragment {
2015-05-21 23:27:27 +02:00
private boolean isFinished = false;
2015-05-21 23:27:27 +02:00
protected Dialog visibleDialog = null;
2014-11-11 23:16:17 +01:00
protected View fragmentView;
protected ActionBarLayout parentLayout;
2014-11-11 23:16:17 +01:00
protected ActionBar actionBar;
protected int classGuid = 0;
protected Bundle arguments;
2014-06-17 17:10:02 +02:00
protected boolean swipeBackEnabled = true;
2015-04-09 20:00:14 +02:00
protected boolean hasOwnBackground = false;
public BaseFragment() {
classGuid = ConnectionsManager.getInstance().generateClassGuid();
}
public BaseFragment(Bundle args) {
arguments = args;
classGuid = ConnectionsManager.getInstance().generateClassGuid();
}
2015-07-22 20:56:37 +02:00
public View createView(Context context) {
return null;
}
public Bundle getArguments() {
return arguments;
}
2015-06-29 19:12:11 +02:00
protected void clearViews() {
if (fragmentView != null) {
ViewGroup parent = (ViewGroup) fragmentView.getParent();
if (parent != null) {
try {
parent.removeView(fragmentView);
} catch (Exception e) {
FileLog.e("tmessages", e);
}
}
fragmentView = null;
}
if (actionBar != null) {
ViewGroup parent = (ViewGroup) actionBar.getParent();
if (parent != null) {
try {
parent.removeView(actionBar);
} catch (Exception e) {
FileLog.e("tmessages", e);
}
}
actionBar = null;
}
parentLayout = null;
}
2014-11-11 23:16:17 +01:00
protected void setParentLayout(ActionBarLayout layout) {
if (parentLayout != layout) {
parentLayout = layout;
if (fragmentView != null) {
ViewGroup parent = (ViewGroup) fragmentView.getParent();
if (parent != null) {
2014-10-11 13:30:32 +02:00
try {
parent.removeView(fragmentView);
} catch (Exception e) {
FileLog.e("tmessages", e);
}
}
2015-06-29 19:12:11 +02:00
if (parentLayout != null && parentLayout.getContext() != fragmentView.getContext()) {
fragmentView = null;
}
}
2014-11-11 23:16:17 +01:00
if (actionBar != null) {
ViewGroup parent = (ViewGroup) actionBar.getParent();
if (parent != null) {
try {
parent.removeView(actionBar);
} catch (Exception e) {
FileLog.e("tmessages", e);
}
2014-06-04 20:57:11 +02:00
}
2015-06-29 19:12:11 +02:00
if (parentLayout != null && parentLayout.getContext() != actionBar.getContext()) {
actionBar = null;
}
2014-11-11 23:16:17 +01:00
}
2015-06-29 19:12:11 +02:00
if (parentLayout != null && actionBar == null) {
2014-11-11 23:16:17 +01:00
actionBar = new ActionBar(parentLayout.getContext());
actionBar.parentFragment = this;
actionBar.setBackgroundColor(0xff54759e);
2014-11-11 23:16:17 +01:00
actionBar.setItemsBackground(R.drawable.bar_selector);
}
}
}
public void finishFragment() {
2014-06-13 17:03:06 +02:00
finishFragment(true);
}
public void finishFragment(boolean animated) {
if (isFinished || parentLayout == null) {
return;
}
parentLayout.closeLastFragment(animated);
}
public void removeSelfFromStack() {
if (isFinished || parentLayout == null) {
return;
}
parentLayout.removeFragmentFromStack(this);
}
public boolean onFragmentCreate() {
return true;
}
public void onFragmentDestroy() {
ConnectionsManager.getInstance().cancelRpcsForClassGuid(classGuid);
isFinished = true;
2014-11-11 23:16:17 +01:00
if (actionBar != null) {
actionBar.setEnabled(false);
}
}
public void onResume() {
}
public void onPause() {
2014-11-11 23:16:17 +01:00
if (actionBar != null) {
actionBar.onPause();
}
try {
if (visibleDialog != null && visibleDialog.isShowing()) {
visibleDialog.dismiss();
visibleDialog = null;
}
} catch (Exception e) {
FileLog.e("tmessages", e);
}
}
public void onConfigurationChanged(android.content.res.Configuration newConfig) {
}
public boolean onBackPressed() {
return true;
}
public void onActivityResultFragment(int requestCode, int resultCode, Intent data) {
}
public void saveSelfArgs(Bundle args) {
}
public void restoreSelfArgs(Bundle args) {
}
2014-10-01 00:36:18 +02:00
public boolean presentFragment(BaseFragment fragment) {
return parentLayout != null && parentLayout.presentFragment(fragment);
}
2014-10-01 00:36:18 +02:00
public boolean presentFragment(BaseFragment fragment, boolean removeLast) {
return parentLayout != null && parentLayout.presentFragment(fragment, removeLast);
}
2014-10-01 00:36:18 +02:00
public boolean presentFragment(BaseFragment fragment, boolean removeLast, boolean forceWithoutAnimation) {
return parentLayout != null && parentLayout.presentFragment(fragment, removeLast, forceWithoutAnimation, true);
}
public Activity getParentActivity() {
2014-09-28 15:37:26 +02:00
if (parentLayout != null) {
return parentLayout.parentActivity;
}
return null;
}
2014-10-01 00:36:18 +02:00
public void startActivityForResult(final Intent intent, final int requestCode) {
if (parentLayout != null) {
parentLayout.startActivityForResult(intent, requestCode);
}
}
public void onBeginSlide() {
try {
if (visibleDialog != null && visibleDialog.isShowing()) {
visibleDialog.dismiss();
visibleDialog = null;
}
} catch (Exception e) {
FileLog.e("tmessages", e);
}
2014-11-11 23:16:17 +01:00
if (actionBar != null) {
actionBar.onPause();
}
}
2015-05-21 23:27:27 +02:00
protected void onOpenAnimationEnd() {
}
protected void onOpenAnimationStart() {
}
2015-06-29 19:12:11 +02:00
protected void onBecomeFullyVisible() {
}
public void onLowMemory() {
}
2014-11-11 23:16:17 +01:00
public boolean needAddActionBar() {
return true;
}
2015-05-21 23:27:27 +02:00
public Dialog showDialog(Dialog dialog) {
2015-06-29 19:12:11 +02:00
if (dialog == null || parentLayout == null || parentLayout.animationInProgress || parentLayout.startedTracking || parentLayout.checkTransitionAnimation()) {
2015-04-09 20:00:14 +02:00
return null;
}
2014-06-13 17:03:06 +02:00
try {
if (visibleDialog != null) {
visibleDialog.dismiss();
visibleDialog = null;
}
} catch (Exception e) {
FileLog.e("tmessages", e);
}
2014-11-20 15:45:33 +01:00
try {
2015-05-21 23:27:27 +02:00
visibleDialog = dialog;
2014-11-20 15:45:33 +01:00
visibleDialog.setCanceledOnTouchOutside(true);
visibleDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
visibleDialog = null;
onDialogDismiss();
}
});
2015-05-21 23:27:27 +02:00
visibleDialog.show();
2015-04-09 20:00:14 +02:00
return visibleDialog;
2014-11-20 15:45:33 +01:00
} catch (Exception e) {
FileLog.e("tmessages", e);
}
2015-04-09 20:00:14 +02:00
return null;
}
protected void onDialogDismiss() {
}
2015-05-21 23:27:27 +02:00
2015-06-29 19:12:11 +02:00
public Dialog getVisibleDialog() {
return visibleDialog;
}
2015-05-21 23:27:27 +02:00
public void setVisibleDialog(Dialog dialog) {
visibleDialog = dialog;
}
}