QGCPalette.cc 5.68 KB
Newer Older
1
/*=====================================================================
dogmaphobic's avatar
dogmaphobic committed
2

3
 QGroundControl Open Source Ground Control Station
dogmaphobic's avatar
dogmaphobic committed
4

5
 (c) 2009 - 2014 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
dogmaphobic's avatar
dogmaphobic committed
6

7
 This file is part of the QGROUNDCONTROL project
dogmaphobic's avatar
dogmaphobic committed
8

9 10 11 12
 QGROUNDCONTROL 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.
dogmaphobic's avatar
dogmaphobic committed
13

14 15 16 17
 QGROUNDCONTROL 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.
dogmaphobic's avatar
dogmaphobic committed
18

19 20
 You should have received a copy of the GNU General Public License
 along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
dogmaphobic's avatar
dogmaphobic committed
21

22 23 24 25 26 27 28 29 30 31
 ======================================================================*/

/// @file
///     @author Don Gagne <don@thegagnes.com>

#include "QGCPalette.h"

#include <QApplication>
#include <QPalette>

32 33 34 35
QList<QGCPalette*>   QGCPalette::_paletteObjects;

QGCPalette::Theme QGCPalette::_theme = QGCPalette::Dark;

36
QColor QGCPalette::_window[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
37
    { QColor("#ffffff"), QColor("#ffffff") },
38 39 40 41
    { QColor(0x22, 0x22, 0x22), QColor(0x22, 0x22, 0x22) }
};

QColor QGCPalette::_windowShade[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
42
    { QColor("#d9d9d9"), QColor("#d9d9d9") },
43 44 45 46
    { QColor(51, 51, 51), QColor(51, 51, 51) }
};

QColor QGCPalette::_windowShadeDark[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
47
    { QColor("#bdbdbd"), QColor("#bdbdbd") },
48
    { QColor(40, 40, 40), QColor(40, 40, 40) }
49 50
};

51
QColor QGCPalette::_text[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
52
    { QColor("#9d9d9d"), QColor("#000000") },
53
    { QColor(0x58, 0x58, 0x58), QColor(0xFF, 0xFF, 0xFF) }
54 55
};

56
QColor QGCPalette::_warningText[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
dogmaphobic's avatar
dogmaphobic committed
57 58
    { QColor("#cc0808"), QColor("#cc0808") },
    { QColor("#e4e428"), QColor("#e4e428") }
59 60
};

61
QColor QGCPalette::_button[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
62
    { QColor("#ffffff"),  QColor("#ffffff") },
63
    { QColor(0x58, 0x58, 0x58), QColor(98, 98, 100) },
64 65 66
};

QColor QGCPalette::_buttonText[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
67
    { QColor("#9d9d9d"), QColor("#000000") },
68
    { QColor(0x2c, 0x2c, 0x2c), QColor(0xFF, 0xFF, 0xFF) },
69 70
};

71
QColor QGCPalette::_buttonHighlight[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
72
    { QColor("#e4e4e4"), QColor("#33b5e5") },
73
    { QColor(0x58, 0x58, 0x58), QColor(237, 235, 51) },
74 75
};

76 77 78
QColor QGCPalette::_buttonHighlightText[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
    { QColor(0x2c, 0x2c, 0x2c), QColor(0, 0, 0) },
    { QColor(0x2c, 0x2c, 0x2c), QColor(0, 0, 0) },
79 80
};

81
QColor QGCPalette::_primaryButton[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
dogmaphobic's avatar
dogmaphobic committed
82 83
    { QColor(0x58, 0x58, 0x58), QColor("#badec5") },
    { QColor(0x58, 0x58, 0x58), QColor("#badec5") },
84 85
};

86 87 88
QColor QGCPalette::_primaryButtonText[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
    { QColor(0x2c, 0x2c, 0x2c), QColor(0, 0, 0) },
    { QColor(0x2c, 0x2c, 0x2c), QColor(0, 0, 0) },
89 90
};

91
QColor QGCPalette::_textField[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
92
    { QColor("#ffffff"), QColor("#ffffff") },
93
    { QColor(0x58, 0x58, 0x58), QColor(255, 255, 255) },
Don Gagne's avatar
Don Gagne committed
94 95
};

96
QColor QGCPalette::_textFieldText[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
97
    { QColor("#dedede"), QColor("#000000") },
98
    { QColor(0x2c, 0x2c, 0x2c), QColor(0, 0, 0) },
99
};
100

101 102 103 104 105 106 107 108 109 110
QColor QGCPalette::_mapButton[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
    { QColor(0x58, 0x58, 0x58), QColor(0, 0, 0) },
    { QColor(0x58, 0x58, 0x58), QColor(0, 0, 0) },
};

QColor QGCPalette::_mapButtonHighlight[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
    { QColor(0x58, 0x58, 0x58), QColor(190, 120, 28) },
    { QColor(0x58, 0x58, 0x58), QColor(190, 120, 28) },
};

111 112 113 114 115 116 117 118 119 120 121
// Map widget colors are not affecting by theming
QColor QGCPalette::_mapWidgetBorderLight[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
    { QColor(255, 255, 255), QColor(255, 255, 255) },
    { QColor(255, 255, 255), QColor(255, 255, 255) },
};

QColor QGCPalette::_mapWidgetBorderDark[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
    { QColor(0, 0, 0), QColor(0, 0, 0) },
    { QColor(0, 0, 0), QColor(0, 0, 0) },
};

Don Gagne's avatar
Don Gagne committed
122 123 124 125 126 127 128 129 130 131
QColor QGCPalette::_brandingPurple[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
    { QColor("#4A2C6D"), QColor("#4A2C6D") },
    { QColor("#4A2C6D"), QColor("#4A2C6D") },
};

QColor QGCPalette::_brandingBlue[QGCPalette::_cThemes][QGCPalette::_cColorGroups] = {
    { QColor("#48D6FF"), QColor("#48D6FF") },
    { QColor("#48D6FF"), QColor("#48D6FF") },
};

132
QGCPalette::QGCPalette(QObject* parent) :
Don Gagne's avatar
Don Gagne committed
133
    QObject(parent),
134
    _colorGroupEnabled(true)
135
{
136 137
    // We have to keep track of all QGCPalette objects in the system so we can signal theme change to all of them
    _paletteObjects += this;
138 139 140 141
}

QGCPalette::~QGCPalette()
{
142 143 144
    bool fSuccess = _paletteObjects.removeOne(this);
    Q_ASSERT(fSuccess);
    Q_UNUSED(fSuccess);
145 146
}

147
void QGCPalette::setColorGroupEnabled(bool enabled)
148
{
149
    _colorGroupEnabled = enabled;
150 151
    emit paletteChanged();
}
152 153 154

void QGCPalette::setGlobalTheme(Theme newTheme)
{
155
    // Mobile build does not have themes
156 157
    if (_theme != newTheme) {
        _theme = newTheme;
158
        _signalPaletteChangeToAll();
159 160 161
    }
}

162
void QGCPalette::_signalPaletteChangeToAll(void)
163
{
164 165 166 167
    // Notify all objects of the new theme
    foreach (QGCPalette* palette, _paletteObjects) {
        palette->_signalPaletteChanged();
    }
168
}
Don Gagne's avatar
Don Gagne committed
169

170 171 172 173 174

void QGCPalette::_signalPaletteChanged(void)
{
    emit paletteChanged();
}