QGCPalette.cc 4.89 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("#cccccc"), 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("#dedede"), 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("#e4e4e4") },
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
QGCPalette::QGCPalette(QObject* parent) :
Don Gagne's avatar
Don Gagne committed
112
    QObject(parent),
113
    _colorGroupEnabled(true)
114
{
115 116
    // We have to keep track of all QGCPalette objects in the system so we can signal theme change to all of them
    _paletteObjects += this;
117 118 119 120
}

QGCPalette::~QGCPalette()
{
121 122 123
    bool fSuccess = _paletteObjects.removeOne(this);
    Q_ASSERT(fSuccess);
    Q_UNUSED(fSuccess);
124 125
}

126
void QGCPalette::setColorGroupEnabled(bool enabled)
127
{
128
    _colorGroupEnabled = enabled;
129 130
    emit paletteChanged();
}
131 132 133

void QGCPalette::setGlobalTheme(Theme newTheme)
{
134
    // Mobile build does not have themes
135 136
    if (_theme != newTheme) {
        _theme = newTheme;
137
        _signalPaletteChangeToAll();
138 139 140
    }
}

141
void QGCPalette::_signalPaletteChangeToAll(void)
142
{
143 144 145 146
    // Notify all objects of the new theme
    foreach (QGCPalette* palette, _paletteObjects) {
        palette->_signalPaletteChanged();
    }
147
}
Don Gagne's avatar
Don Gagne committed
148

149 150 151 152 153

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