/***************************************************************************
 * Copyright (C) 2017 by Savoir-faire Linux                                *
 * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>*
 *                                                                         *
 * This program is free software; you can redistribute it and/or modify    *
 * it under the terms of the GNU General Public License as published by    *
 * the Free Software Foundation; either version 3 of the License, or       *
 * (at your option) any later version.                                     *
 *                                                                         *
 * This program is distributed in the hope that it will be useful,         *
 * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
 * GNU General Public License for more details.                            *
 *                                                                         *
 * You should have received a copy of the GNU General Public License       *
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
 **************************************************************************/

#include <QColor>

#pragma once

namespace RingTheme {

static const QColor blue_ {"#109ede"};
static const QColor lightBlue_ {"#c1ebf0"};
static const QColor lightGrey_ {242, 242, 242};
static const QColor imGrey_ {"#dedee0"};
static const QColor imBlue_ {"#cfebf5"};
static const QColor lightBlack_ {63, 63, 63};
static const QColor grey_ {160, 160, 160 };
static const QColor red_ {251, 72, 71};
static const QColor lightRed_ {252, 91, 90};
static const QColor darkRed_ {219, 55, 54};
static const QColor notificationRed_{ 255, 59, 48 };
static const QColor urgentOrange_{ 255, 165, 0 };
static const QColor green_ {127, 255, 0};
static const QColor presenceGreen_{ 76, 217, 100 };
static const QColor smartlistSelection_ { 237, 237, 237 };
static const QColor smartlistHighlight_ { 242, 242, 242 };

static const QColor defaultAvatarColor_ = { "#ff9e9e9e" }; //Grey
static const QColor avatarColors_[] {
    {"#fff44336"}, //Red
    {"#ffe91e63"}, //Pink
    {"#ff9c27b0"}, //Purple
    {"#ff673ab7"}, //Deep Purple
    {"#ff3f51b5"}, //Indigo
    {"#ff2196f3"}, //Blue
    {"#ff00bcd4"}, //Cyan
    {"#ff009688"}, //Teal
    {"#ff4caf50"}, //Green
    {"#ff8bc34a"}, //Light Green
    {"#ff9e9e9e"}, //Grey
    {"#ffcddc39"}, //Lime
    {"#ffffc107"}, //Amber
    {"#ffff5722"}, //Deep Orange
    {"#ff795548"}, //Brown
    {"#ff607d8b"}  //Blue Grey
};

}
