diff options
author | Steve McKay <smckay@google.com> | 2015-03-25 14:35:33 -0700 |
---|---|---|
committer | Steve McKay <smckay@google.com> | 2015-03-25 14:38:56 -0700 |
commit | e934ce6f8430f50d1d22bccd3b341b982f5541ee (patch) | |
tree | 85f50e2623a8986a1f7029e84174d47ee3c576ad /packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java | |
parent | 527b45376aa00eacbde3082e8165d0bbb3071238 (diff) | |
download | frameworks_base-e934ce6f8430f50d1d22bccd3b341b982f5541ee.zip frameworks_base-e934ce6f8430f50d1d22bccd3b341b982f5541ee.tar.gz frameworks_base-e934ce6f8430f50d1d22bccd3b341b982f5541ee.tar.bz2 |
Implement a standalone file manager activity.
Change-Id: Iaf86ef416b979cea4ab3890d3a26f09741392c3d
Diffstat (limited to 'packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java')
-rw-r--r-- | packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java new file mode 100644 index 0000000..a8a0c1d --- /dev/null +++ b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java @@ -0,0 +1,152 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.documentsui; + +import java.util.HashMap; +import java.util.List; + +import android.app.Activity; +import android.app.Fragment; +import android.content.pm.ResolveInfo; +import android.os.Parcel; +import android.os.Parcelable; +import android.util.SparseArray; + +import com.android.documentsui.model.DocumentInfo; +import com.android.documentsui.model.DocumentStack; +import com.android.documentsui.model.DurableUtils; +import com.android.documentsui.model.RootInfo; +import com.google.common.collect.Maps; + +abstract class BaseActivity extends Activity { + + public abstract State getDisplayState(); + public abstract RootInfo getCurrentRoot(); + public abstract void onStateChanged(); + public abstract void setRootsDrawerOpen(boolean open); + public abstract void onDocumentPicked(DocumentInfo doc); + public abstract void onDocumentsPicked(List<DocumentInfo> docs); + public abstract DocumentInfo getCurrentDirectory(); + public abstract void setPending(boolean pending); + public abstract void onStackPicked(DocumentStack stack); + public abstract void onPickRequested(DocumentInfo pickTarget); + public abstract void onAppPicked(ResolveInfo info); + public abstract void onRootPicked(RootInfo root, boolean closeDrawer); + public abstract void onSaveRequested(DocumentInfo replaceTarget); + public abstract void onSaveRequested(String mimeType, String displayName); + + public static BaseActivity get(Fragment fragment) { + return (BaseActivity) fragment.getActivity(); + } + + public static class State implements android.os.Parcelable { + public int action; + public String[] acceptMimes; + + /** Explicit user choice */ + public int userMode = MODE_UNKNOWN; + /** Derived after loader */ + public int derivedMode = MODE_LIST; + + /** Explicit user choice */ + public int userSortOrder = SORT_ORDER_UNKNOWN; + /** Derived after loader */ + public int derivedSortOrder = SORT_ORDER_DISPLAY_NAME; + + public boolean allowMultiple = false; + public boolean showSize = false; + public boolean localOnly = false; + public boolean forceAdvanced = false; + public boolean showAdvanced = false; + public boolean stackTouched = false; + public boolean restored = false; + + /** Current user navigation stack; empty implies recents. */ + public DocumentStack stack = new DocumentStack(); + /** Currently active search, overriding any stack. */ + public String currentSearch; + + /** Instance state for every shown directory */ + public HashMap<String, SparseArray<Parcelable>> dirState = Maps.newHashMap(); + + public static final int ACTION_OPEN = 1; + public static final int ACTION_CREATE = 2; + public static final int ACTION_GET_CONTENT = 3; + public static final int ACTION_OPEN_TREE = 4; + public static final int ACTION_MANAGE = 5; + public static final int ACTION_MANAGE_ALL = 6; + + public static final int MODE_UNKNOWN = 0; + public static final int MODE_LIST = 1; + public static final int MODE_GRID = 2; + + public static final int SORT_ORDER_UNKNOWN = 0; + public static final int SORT_ORDER_DISPLAY_NAME = 1; + public static final int SORT_ORDER_LAST_MODIFIED = 2; + public static final int SORT_ORDER_SIZE = 3; + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel out, int flags) { + out.writeInt(action); + out.writeInt(userMode); + out.writeStringArray(acceptMimes); + out.writeInt(userSortOrder); + out.writeInt(allowMultiple ? 1 : 0); + out.writeInt(showSize ? 1 : 0); + out.writeInt(localOnly ? 1 : 0); + out.writeInt(forceAdvanced ? 1 : 0); + out.writeInt(showAdvanced ? 1 : 0); + out.writeInt(stackTouched ? 1 : 0); + out.writeInt(restored ? 1 : 0); + DurableUtils.writeToParcel(out, stack); + out.writeString(currentSearch); + out.writeMap(dirState); + } + + public static final Creator<State> CREATOR = new Creator<State>() { + @Override + public State createFromParcel(Parcel in) { + final State state = new State(); + state.action = in.readInt(); + state.userMode = in.readInt(); + state.acceptMimes = in.readStringArray(); + state.userSortOrder = in.readInt(); + state.allowMultiple = in.readInt() != 0; + state.showSize = in.readInt() != 0; + state.localOnly = in.readInt() != 0; + state.forceAdvanced = in.readInt() != 0; + state.showAdvanced = in.readInt() != 0; + state.stackTouched = in.readInt() != 0; + state.restored = in.readInt() != 0; + DurableUtils.readFromParcel(in, state.stack); + state.currentSearch = in.readString(); + in.readMap(state.dirState, null); + return state; + } + + @Override + public State[] newArray(int size) { + return new State[size]; + } + }; + } +} |