QGCPalette.cc 5.32 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] = {
dogmaphobic's avatar
dogmaphobic committed
37
    { QColor("#f9f8f4"), QColor("#f9f8f4") },
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("#91d1e4") },
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) },
};

122
QGCPalette::QGCPalette(QObject* parent) :
Don Gagne's avatar
Don Gagne committed
123
    QObject(parent),
124
    _colorGroupEnabled(true)
125
{
126 127
    // We have to keep track of all QGCPalette objects in the system so we can signal theme change to all of them
    _paletteObjects += this;
128 129 130 131
}

QGCPalette::~QGCPalette()
{
132 133 134
    bool fSuccess = _paletteObjects.removeOne(this);
    Q_ASSERT(fSuccess);
    Q_UNUSED(fSuccess);
135 136
}

137
void QGCPalette::setColorGroupEnabled(bool enabled)
138
{
139
    _colorGroupEnabled = enabled;
140 141
    emit paletteChanged();
}
142 143 144

void QGCPalette::setGlobalTheme(Theme newTheme)
{
145
    // Mobile build does not have themes
146 147
    if (_theme != newTheme) {
        _theme = newTheme;
148
        _signalPaletteChangeToAll();
149 150 151
    }
}

152
void QGCPalette::_signalPaletteChangeToAll(void)
153
{
154 155 156 157
    // Notify all objects of the new theme
    foreach (QGCPalette* palette, _paletteObjects) {
        palette->_signalPaletteChanged();
    }
158
}
Don Gagne's avatar
Don Gagne committed
159

160 161 162 163 164

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