Fast draw colors are now loaded from config
This commit is contained in:
@@ -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
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 *);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
};
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user