blob: 66792da116a4c94225ec5d73ac19e814c82d3cd8 [file] [log] [blame]
/*
* 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 abstract class DocumentsIntent {
/** Intent action name to open copy destination. */
public static String ACTION_OPEN_COPY_DESTINATION =
"com.android.documentsui.OPEN_COPY_DESTINATION";
/**
* Extra boolean flag for ACTION_OPEN_COPY_DESTINATION_STRING, which
* specifies if the destination directory needs to create new directory or not.
*/
public static String EXTRA_DIRECTORY_COPY = "com.android.documentsui.DIRECTORY_COPY";
}
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;
public boolean directoryCopy = 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_BROWSE = 6;
public static final int ACTION_BROWSE_ALL = 7;
public static final int ACTION_OPEN_COPY_DESTINATION = 8;
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];
}
};
}
}