// Copyright 2017 Alejandro Sirgo Rica // // This file is part of Flameshot. // // Flameshot 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. // // Flameshot 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. // // You should have received a copy of the GNU General Public License // along with Flameshot. If not, see . #include "configwindow.h" #include "src/capture/widget/capturebutton.h" #include "src/config/buttonlistview.h" #include "src/config/uicoloreditor.h" #include "src/config/geneneralconf.h" #include "src/config/filenameeditor.h" #include "src/config/strftimechooserwidget.h" #include "src/utils/confighandler.h" #include #include #include #include #include // ConfigWindow contains the menus where you can configure the application ConfigWindow::ConfigWindow(QWidget *parent) : QTabWidget(parent) { setAttribute(Qt::WA_DeleteOnClose); setMinimumSize(400, 490); setWindowIcon(QIcon(":img/flameshot.png")); setWindowTitle(tr("Configuration")); auto changedSlot = [this](QString s){ Q_UNUSED(s); this->m_configWatcher->removePath(s); this->m_configWatcher->addPath(s); if(!this->hasFocus()) { Q_EMIT updateComponents(); } }; m_configWatcher = new QFileSystemWatcher(this); m_configWatcher->addPath(ConfigHandler().configFilePath()); connect(m_configWatcher, &QFileSystemWatcher::fileChanged, this, changedSlot); QColor background = this->palette().background().color(); bool isWhite = CaptureButton::iconIsWhiteByColor(background); QString modifier = isWhite ? ":img/configWhite/" : ":img/configBlack/"; // visuals auto visuals = new QWidget(); QVBoxLayout *layoutUI= new QVBoxLayout(); visuals->setLayout(layoutUI); m_colorEditor = new UIcolorEditor(); layoutUI->addWidget(m_colorEditor); auto boxButtons = new QGroupBox(); boxButtons->setTitle(tr("Button Selection")); auto listLayout = new QVBoxLayout(boxButtons); m_buttonList = new ButtonListView(); layoutUI->addWidget(boxButtons); listLayout->addWidget(m_buttonList); QPushButton* setAllButtons = new QPushButton(tr("Select All")); connect(setAllButtons, &QPushButton::clicked, m_buttonList, &ButtonListView::selectAll); listLayout->addWidget(setAllButtons); addTab(visuals, tr("Interface")); setTabIcon(0, QIcon(modifier + "graphics.png")); // filename m_filenameEditor = new FileNameEditor(); addTab(m_filenameEditor, tr("Filename Editor")); setTabIcon(1, QIcon(modifier + "name_edition.png")); // general m_generalConfig = new GeneneralConf(); addTab(m_generalConfig, tr("General")); setTabIcon(2, QIcon(modifier + "config.png")); // connect update sigslots connect(this, &ConfigWindow::updateChildren, m_filenameEditor, &FileNameEditor::updateComponents); connect(this, &ConfigWindow::updateChildren, m_colorEditor, &UIcolorEditor::updateComponents); connect(this, &ConfigWindow::updateChildren, m_buttonList, &ButtonListView::updateComponents); connect(this, &ConfigWindow::updateChildren, m_generalConfig, &GeneneralConf::updateComponents); } void ConfigWindow::updateComponents() { Q_EMIT updateChildren(); } void ConfigWindow::keyPressEvent(QKeyEvent *e) { if (e->key() == Qt::Key_Escape) { close(); } }