Fast draw colors are now loaded from config

This commit is contained in:
lupoDharkael
2018-01-23 18:58:19 +01:00
parent 55924bf37e
commit ae9b8c062c
11 changed files with 72 additions and 57 deletions

View File

@@ -22,26 +22,27 @@
#include <QMouseEvent>
ColorPicker::ColorPicker(QWidget *parent) : QWidget(parent) {
ConfigHandler config;
m_colorList = config.getUserColors();
m_colorAreaSize = CaptureButton::buttonBaseSize() * 0.6;
setMouseTracking(true);
// save the color values in member variables for faster access
ConfigHandler config;
m_uiColor = config.uiMainColorValue();
m_drawColor = config.drawColorValue();
// extraSize represents the extra space needed for the highlight of the
// selected color.
const int extraSize = 6;
double radius = (colorList.size()*m_colorAreaSize/1.3)/(3.141592);
double radius = (m_colorList.size()*m_colorAreaSize/1.3)/(3.141592);
resize(radius*2 + m_colorAreaSize + extraSize,
radius*2 + m_colorAreaSize+ extraSize);
double degree = 360 / (colorList.size());
double degree = 360 / (m_colorList.size());
double degreeAcum = degree;
// this line is the radius of the circle which will be rotated to add
// the color components.
QLineF baseLine = QLineF(QPoint(radius+extraSize/2, radius+extraSize/2),
QPoint(radius*2, radius));
for (int i = 0; i<colorList.size(); ++i) {
for (int i = 0; i<m_colorList.size(); ++i) {
m_colorAreaList.append(QRect(baseLine.x2(), baseLine.y2(),
m_colorAreaSize, m_colorAreaSize));
baseLine.setAngle(degreeAcum);
@@ -75,7 +76,7 @@ void ColorPicker::paintEvent(QPaintEvent *) {
painter.setPen(QColor(Qt::black));
for (int i = 0; i < rects.size(); ++i) {
// draw the highlight when we have to draw the selected color
if (m_drawColor == QColor(colorList.at(i))) {
if (m_drawColor == QColor(m_colorList.at(i))) {
QColor c = QColor(m_uiColor);
c.setAlpha(155);
painter.setBrush(c);
@@ -88,15 +89,15 @@ void ColorPicker::paintEvent(QPaintEvent *) {
painter.drawRoundRect(highlight, 100, 100);
painter.setPen(QColor(Qt::black));
}
painter.setBrush(QColor(colorList.at(i)));
painter.setBrush(QColor(m_colorList.at(i)));
painter.drawRoundRect(rects.at(i), 100, 100);
}
}
void ColorPicker::mouseMoveEvent(QMouseEvent *e) {
for (int i = 0; i < colorList.size(); ++i) {
for (int i = 0; i < m_colorList.size(); ++i) {
if (m_colorAreaList.at(i).contains(e->pos())) {
m_drawColor = colorList.at(i);
m_drawColor = m_colorList.at(i);
update();
break;
}
@@ -108,18 +109,5 @@ QVector<QRect> ColorPicker::handleMask() const {
for (const QRect &rect: m_colorAreaList) {
areas.append(rect);
}
return areas;
}
QVector<Qt::GlobalColor> ColorPicker::colorList = {
Qt::darkRed,
Qt::red,
Qt::yellow,
Qt::green,
Qt::darkGreen,
Qt::cyan,
Qt::blue,
Qt::magenta,
Qt::darkMagenta
};

View File

@@ -40,7 +40,7 @@ protected:
private:
int m_colorAreaSize;
QVector<QRect> m_colorAreaList;
static QVector<Qt::GlobalColor> colorList;
QVector<QColor> m_colorList;
QColor m_uiColor, m_drawColor;

View File

@@ -134,14 +134,14 @@ void AppLauncherWidget::searchChanged(const QString &text) {
m_filterList->show();
m_filterList->clear();
QRegExp regexp(text, Qt::CaseInsensitive, QRegExp::Wildcard);
QVector<DesktopAppData> apps;
QVector<DesktopAppData> apps;
for (auto const& i : catIconNames.toStdMap()) {
const QString &cat = i.first;
if (!m_appsMap.contains(cat)) {
continue;
}
const QVector<DesktopAppData> &appList = m_appsMap[cat];
const QVector<DesktopAppData> &appList = m_appsMap[cat];
for (const DesktopAppData &app: appList) {
if (!apps.contains(app) && (app.name.contains(regexp) ||
app.description.contains(regexp) ))
@@ -170,7 +170,7 @@ void AppLauncherWidget::initListWidget() {
QListWidget *itemsWidget = new QListWidget();
configureListView(itemsWidget);
const QVector<DesktopAppData> &appList = m_appsMap[cat];
const QVector<DesktopAppData> &appList = m_appsMap[cat];
addAppsToListWidget(itemsWidget, appList);
m_tabWidget->addTab(itemsWidget, QIcon::fromTheme(iconName), "");
@@ -197,7 +197,7 @@ void AppLauncherWidget::initAppMap() {
m_appsMap = m_parser.getAppsByCategory(categories);
// Unify multimedia.
QVector<DesktopAppData> multimediaList;
QVector<DesktopAppData> multimediaList;
QStringList multimediaNames;
multimediaNames << "AudioVideo" << "Audio" << "Video";
for (const QString &name : multimediaNames) {
@@ -227,7 +227,7 @@ void AppLauncherWidget::configureListView(QListWidget *widget) {
}
void AppLauncherWidget::addAppsToListWidget(
QListWidget *widget, const QVector<DesktopAppData> &appList)
QListWidget *widget, const QVector<DesktopAppData> &appList)
{
for (const DesktopAppData &app: appList) {
QListWidgetItem *buttonItem = new QListWidgetItem(widget);

View File

@@ -43,13 +43,13 @@ private:
void initAppMap();
void configureListView(QListWidget *widget);
void addAppsToListWidget(QListWidget *widget,
const QVector<DesktopAppData> &appList);
const QVector<DesktopAppData> &appList);
DesktopFileParser m_parser;
QPixmap m_pixmap;
QString m_tempFile;
bool m_keepOpen;
QMap<QString, QVector<DesktopAppData>> m_appsMap;
QMap<QString, QVector<DesktopAppData>> m_appsMap;
QCheckBox *m_keepOpenCheckbox;
QCheckBox *m_terminalCheckbox;
QVBoxLayout *m_layout;

View File

@@ -35,7 +35,7 @@ protected:
void initButtonList();
private:
QVector<CaptureButton::ButtonType> m_listButtons;
QVector<CaptureButton::ButtonType> m_listButtons;
QMap<QString, CaptureButton::ButtonType> m_buttonTypeByName;
void updateActiveButtons(QListWidgetItem *);

View File

@@ -36,7 +36,7 @@
int main(int argc, char *argv[]) {
// required for the button serialization
qRegisterMetaTypeStreamOperators<QVector<int> >("QVector<int>");
qRegisterMetaTypeStreamOperators<QVector<int> >("QVector<int>");
qApp->setApplicationVersion(static_cast<QString>(APP_VERSION));
QTranslator translator;

View File

@@ -26,26 +26,50 @@ ConfigHandler::ConfigHandler(){
}
QVector<CaptureButton::ButtonType> ConfigHandler::getButtons() {
QVector<CaptureButton::ButtonType> buttons;
QVector<CaptureButton::ButtonType> buttons;
if (m_settings.contains("buttons")) {
QVector<int> buttonsInt = m_settings.value("buttons").value<QVector<int> >();
QVector<int> buttonsInt = m_settings.value("buttons").value<QVector<int> >();
bool modified = normalizeButtons(buttonsInt);
if (modified) {
m_settings.setValue("buttons", QVariant::fromValue(buttonsInt));
}
buttons = fromIntToButton(buttonsInt);
} else {
buttons = CaptureButton::getIterableButtonTypes();
buttons = CaptureButton::getIterableButtonTypes();
}
return buttons;
}
void ConfigHandler::setButtons(const QVector<CaptureButton::ButtonType> &buttons) {
QVector<int> l = fromButtonToInt(buttons);
QVector<int> l = fromButtonToInt(buttons);
normalizeButtons(l);
m_settings.setValue("buttons", QVariant::fromValue(l));
}
QVector<QColor> ConfigHandler::getUserColors() {
QVector<QColor> colors;
if (m_settings.contains("userColors")) {
colors = m_settings.value("userColors").value<QVector<QColor> >();
} else {
colors = {
Qt::darkRed,
Qt::red,
Qt::yellow,
Qt::green,
Qt::darkGreen,
Qt::cyan,
Qt::blue,
Qt::magenta,
Qt::darkMagenta,
};
}
return colors;
}
void ConfigHandler::setUserColors(const QVector<QColor> &l) {
m_settings.setValue("userColors", QVariant::fromValue(l));
}
QString ConfigHandler::savePathValue() {
return m_settings.value("savePath").toString();
}
@@ -210,7 +234,7 @@ void ConfigHandler::setDefaults() {
}
void ConfigHandler::setAllTheButtons() {
QVector<int> buttons;
QVector<int> buttons;
auto listTypes = CaptureButton::getIterableButtonTypes();
for (const CaptureButton::ButtonType t: listTypes) {
buttons << static_cast<int>(t);
@@ -224,14 +248,14 @@ QString ConfigHandler::configFilePath() const {
bool ConfigHandler::normalizeButtons(QVector<int> &buttons) {
auto listTypes = CaptureButton::getIterableButtonTypes();
QVector<int> listTypesInt;
for(auto i: listTypes)
listTypesInt << static_cast<int>(i);
QVector<int> listTypesInt;
for(auto i: listTypes)
listTypesInt << static_cast<int>(i);
bool hasChanged = false;
for (int i = 0; i < buttons.size(); i++) {
if (!listTypesInt.contains(buttons.at(i))) {
buttons.remove(i);
for (int i = 0; i < buttons.size(); i++) {
if (!listTypesInt.contains(buttons.at(i))) {
buttons.remove(i);
hasChanged = true;
}
}
@@ -243,18 +267,18 @@ bool ConfigHandler::normalizeButtons(QVector<int> &buttons) {
}
QVector<CaptureButton::ButtonType> ConfigHandler::fromIntToButton(
const QVector<int> &l)
const QVector<int> &l)
{
QVector<CaptureButton::ButtonType> buttons;
QVector<CaptureButton::ButtonType> buttons;
for (auto const i: l)
buttons << static_cast<CaptureButton::ButtonType>(i);
return buttons;
}
QVector<int> ConfigHandler::fromButtonToInt(
const QVector<CaptureButton::ButtonType> &l)
const QVector<CaptureButton::ButtonType> &l)
{
QVector<int> buttons;
QVector<int> buttons;
for (auto const i: l)
buttons << static_cast<int>(i);
return buttons;

View File

@@ -26,8 +26,11 @@ class ConfigHandler
public:
explicit ConfigHandler();
QVector<CaptureButton::ButtonType> getButtons();
void setButtons(const QVector<CaptureButton::ButtonType> &);
QVector<CaptureButton::ButtonType> getButtons();
void setButtons(const QVector<CaptureButton::ButtonType> &);
QVector<QColor> getUserColors();
void setUserColors(const QVector<QColor> &);
QString savePathValue();
void setSavePath(const QString &);
@@ -73,9 +76,9 @@ public:
private:
QSettings m_settings;
bool normalizeButtons(QVector<int> &);
bool normalizeButtons(QVector<int> &);
QVector<CaptureButton::ButtonType> fromIntToButton(const QVector<int> &l);
QVector<int> fromButtonToInt(const QVector<CaptureButton::ButtonType> &l);
QVector<CaptureButton::ButtonType> fromIntToButton(const QVector<int> &l);
QVector<int> fromButtonToInt(const QVector<CaptureButton::ButtonType> &l);
};

View File

@@ -128,7 +128,7 @@ int DesktopFileParser::processDirectory(const QDir &dir) {
}
QVector<DesktopAppData> DesktopFileParser::getAppsByCategory(const QString &category) {
QVector<DesktopAppData> res;
QVector<DesktopAppData> res;
for (const DesktopAppData &app : m_appList) {
if (app.categories.contains(category)) {
res.append(app);
@@ -140,7 +140,7 @@ QVector<DesktopAppData> DesktopFileParser::getAppsByCategory(const QString &cate
QMap<QString, QVector<DesktopAppData>> DesktopFileParser::getAppsByCategory(
const QStringList &categories)
{
QMap<QString, QVector<DesktopAppData>> res;
QMap<QString, QVector<DesktopAppData>> res;
for (const DesktopAppData &app : m_appList) {
for (const QString &category: categories) {
if (app.categories.contains(category)) {

View File

@@ -57,8 +57,8 @@ struct DesktopFileParser {
DesktopAppData parseDesktopFile(const QString &fileName, bool &ok) const;
int processDirectory(const QDir &dir);
QVector<DesktopAppData> getAppsByCategory(const QString &category);
QMap<QString, QVector<DesktopAppData>> getAppsByCategory(
QVector<DesktopAppData> getAppsByCategory(const QString &category);
QMap<QString, QVector<DesktopAppData>> getAppsByCategory(
const QStringList &categories);
private:
@@ -68,5 +68,5 @@ private:
QString m_localeDescriptionShort;
QIcon m_defaultIcon;
QVector<DesktopAppData> m_appList;
QVector<DesktopAppData> m_appList;
};

View File

@@ -34,7 +34,7 @@ void SystemNotification::sendMessage(
}
#ifndef Q_OS_WIN
QList<QVariant> args;
QList<QVariant> args;
args << (qAppName()) //appname
<< static_cast<unsigned int>(0) //id
<< "flameshot.png" //icon