diff --git a/mainwindow.cpp b/mainwindow.cpp index 3250e8d..16e2eda 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -90,8 +91,11 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi addHotkeyItem("Color picker", "picker", [] { ColorPickerScene::showPicker(); }); addHotkeyItem("Stop Recording", "recordingstop", [&] { controller->end(); }); addHotkeyItem("Start Recording", "recordingstart", [&] { + auto f = static_cast( + settings::settings().value("recording/format", (int)RecordingFormats::None).toInt()); + if (f == RecordingFormats::None) return; RecordingContext *ctx = new RecordingContext; - RecordingFormats *format = new RecordingFormats(RecordingFormats::GIF); + RecordingFormats *format = new RecordingFormats(f); ctx->consumer = format->getConsumer(); ctx->finalizer = format->getFinalizer(); ctx->validator = format->getValidator(); @@ -102,6 +106,12 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi ui->quickMode->setChecked(settings::settings().value("quickMode", false).toBool()); ui->hideToTray->setChecked(settings::settings().value("hideOnClose", true).toBool()); ui->captureCursor->setChecked(settings::settings().value("captureCursor", true).toBool()); + + for (int i = 0; i < RecordingFormats::None; i++) { + ui->formatBox->addItem(RecordingFormats::getExt(static_cast(i))); + } + ui->formatBox->addItem("None"); + ui->formatBox->setCurrentIndex(settings::settings().value("recording/format", (int)RecordingFormats::None).toInt()); } MainWindow::~MainWindow() { @@ -205,3 +215,7 @@ void MainWindow::on_actionColor_Picker_triggered() { void MainWindow::on_captureCursor_clicked(bool checked) { settings::settings().setValue("captureCursor", checked); } + +void MainWindow::on_formatBox_currentIndexChanged(int index) { + settings::settings().setValue("recording/format", index); +} diff --git a/mainwindow.hpp b/mainwindow.hpp index c4404cb..e94af32 100644 --- a/mainwindow.hpp +++ b/mainwindow.hpp @@ -34,6 +34,8 @@ private slots: void on_actionColor_Picker_triggered(); void on_captureCursor_clicked(bool checked); + void on_formatBox_currentIndexChanged(int index); + public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); diff --git a/mainwindow.ui b/mainwindow.ui index 515738e..8207390 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -7,7 +7,7 @@ 0 0 512 - 410 + 412 @@ -26,15 +26,10 @@ - + - 0 + -1 - - - Recording disabled - - diff --git a/recording/recordingformats.cpp b/recording/recordingformats.cpp index 0377b97..7482973 100644 --- a/recording/recordingformats.cpp +++ b/recording/recordingformats.cpp @@ -37,7 +37,6 @@ RecordingFormats::RecordingFormats(RecordingFormats::Format f) { GifWriter writer; GifBegin(&writer, tmpDir.absoluteFilePath("resulting.gif").toLocal8Bit().constData(), startImg.width(), startImg.height(), d); - int i = 0; for (QImage &a : frames) { QByteArray alpha8((char *)a.bits(), a.byteCount()); GifWriteFrame(&writer, (uint8_t *)alpha8.data(), a.width(), a.height(), d); diff --git a/settings.cpp b/settings.cpp index 3a0ea99..4ab49d6 100644 --- a/settings.cpp +++ b/settings.cpp @@ -1,8 +1,12 @@ #include "settings.hpp" +#include #include +QMutex *lock = new QMutex; + QSettings &settings::settings() { + QMutexLocker l(lock); static QDir configDir(QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation)); if (configDir.dirName() != "KShare") { configDir.mkdir("KShare");