+/*
+ * Copyright (C) 2012 The CyanogenMod 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.cyanogenmod.filemanager.preferences;
+
+/**
+ * An enumeration of the access modes.
+ */
+public enum AccessMode implements ObjectStringIdentifier {
+
+ /**
+ * The safe mode. The app runs without privileges and the only accessible filesystem
+ * are the storage volumes (sdcards and USB).
+ */
+ SAFE("0"), //$NON-NLS-1$
+ /**
+ * The prompt user mode. The app runs without privileges, with access to all the filesystem,
+ * but the user is asked prior to execute a privileged action. If the user accepts then the
+ * system change to a {@link AccessMode#ROOT} mode, and continues in it after execute the
+ * action.
+ */
+ PROMPT("1"), //$NON-NLS-1$
+ /**
+ * the root mode. The app runs with all privileges.
+ */
+ ROOT("2"); //$NON-NLS-1$
+
+ private String mId;
+
+ /**
+ * Constructor of <code>AccessMode</code>.
+ *
+ * @param id The unique identifier of the enumeration
+ */
+ private AccessMode(String id) {
+ this.mId = id;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getId() {
+ return this.mId;
+ }
+
+ /**
+ * Method that returns an instance of {@link AccessMode} from its
+ * unique identifier.
+ *
+ * @param id The unique identifier
+ * @return AccessMode The access mode
+ */
+ public static AccessMode fromId(String id) {
+ AccessMode[] values = values();
+ int cc = values.length;
+ for (int i = 0; i < cc; i++) {
+ if (values[i].mId.compareTo(id) == 0) {
+ return values[i];
+ }
+ }
+ return null;
+ }
+
+}