// Copyright (C) 2017 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.

syntax = "proto2";

option java_package = "com.android.internal.messages";
option java_outer_classname = "SystemMessageProto";

package com_android_notifications;

// Descriptors for system messages: notifications, dialogs, toasts, etc.
message SystemMessage {

  // System message IDs
  // These are non-consecutive in order to preserve some existing, ad hoc IDs.
  enum ID {
    // Unknown
    NOTE_UNKNOWN = 0;

    // Notify the user that a screenshot was captured.
    // Package: com.android.systemui
    NOTE_GLOBAL_SCREENSHOT = 1;

    // Warn the user about an invalid charger.
    // Package: com.android.systemui
    NOTE_BAD_CHARGER = 2;

    // Warn the user about low battery.
    // Package: com.android.systemui
    NOTE_POWER_LOW = 3;

    // Warn the user that the device has gotten warm.
    // Package: com.android.systemui
    NOTE_HIGH_TEMP = 4;

    // Warn the user that some notifications are hidden.
    // Package: com.android.systemui
    NOTE_HIDDEN_NOTIFICATIONS = 5;

    // Notify the user of a problem with a plugin (dev devices only).
    // Package: com.android.systemui
    NOTE_PLUGIN = 6;

    // Confirm that the user wants to remove the guest account.
    // Package: com.android.systemui
    NOTE_REMOVE_GUEST = 1010;

    // Confirm that the user wants to log out of the device.
    // Package: com.android.systemui
    NOTE_LOGOUT_USER = 1011;

    // Notify the user about public volume state changes..
    // Package: com.android.systemui
    NOTE_STORAGE_PUBLIC = 0x53505542;

    // Notify the user about private volume state changes.
    // Package: com.android.systemui
    NOTE_STORAGE_PRIVATE = 0x53505256;

    // Notify the user about an unsupported storage device..
    // Package: com.android.systemui
    NOTE_STORAGE_DISK = 0x5344534b;

    // Notify the user that data or apps are being moved to external storage.
    // Package: com.android.systemui
    NOTE_STORAGE_MOVE = 0x534d4f56;
  }
}
