ObjectSave works on Sailfish
This commit is contained in:
parent
77bad4b541
commit
095ace53e0
3 changed files with 9 additions and 174 deletions
|
@ -33,6 +33,7 @@ Item {
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjectSaver {
|
ObjectSaver {
|
||||||
|
id: saver
|
||||||
filename: "config.dat"
|
filename: "config.dat"
|
||||||
object: Config
|
object: Config
|
||||||
}
|
}
|
||||||
|
|
168
src/'
168
src/'
|
@ -1,168 +0,0 @@
|
||||||
/* Copyright 2016 (C) Louis-Joseph Fournier
|
|
||||||
* louisjoseph.fournier@gmail.com
|
|
||||||
*
|
|
||||||
* This file is part of SailTuner.
|
|
||||||
*
|
|
||||||
* SailTuner 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.
|
|
||||||
*
|
|
||||||
* SailTuner 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.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <QDBusConnection>
|
|
||||||
#include <QDBusInterface>
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
|
|
||||||
#include "TunerWorker.hpp"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
/// file name to record audio
|
|
||||||
|
|
||||||
const char * TunerWorker::filename_record = NULL;
|
|
||||||
|
|
||||||
/// function to prevent screen blank on Sailfish OS
|
|
||||||
|
|
||||||
static void blank_prevent(bool prevent)
|
|
||||||
{
|
|
||||||
cerr << __func__ << " " << prevent << endl;
|
|
||||||
QDBusConnection system = QDBusConnection::connectToBus(QDBusConnection::SystemBus, "system");
|
|
||||||
QDBusInterface interface("com.nokia.mce", "/com/nokia/mce/request", "com.nokia.mce.request", system);
|
|
||||||
|
|
||||||
if (prevent) {
|
|
||||||
interface.call(QLatin1String("req_display_blanking_pause"));
|
|
||||||
} else {
|
|
||||||
interface.call(QLatin1String("req_display_cancel_blanking_pause"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TunerWorker::TunerWorker() :
|
|
||||||
running(false),
|
|
||||||
quit(false),
|
|
||||||
la_to_update(0),
|
|
||||||
temperament_to_update(-1)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
TunerWorker::~TunerWorker()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void TunerWorker::Start()
|
|
||||||
{
|
|
||||||
cerr << __func__ << endl;
|
|
||||||
mutex.lock();
|
|
||||||
running = true;
|
|
||||||
condition.wakeOne();
|
|
||||||
mutex.unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TunerWorker::Stop()
|
|
||||||
{
|
|
||||||
cerr << __func__ << endl;
|
|
||||||
mutex.lock();
|
|
||||||
running = false;
|
|
||||||
mutex.unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TunerWorker::Quit()
|
|
||||||
{
|
|
||||||
mutex.lock();
|
|
||||||
running = false;
|
|
||||||
quit = true;
|
|
||||||
condition.wakeOne();
|
|
||||||
mutex.unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TunerWorker::SetLa(double la)
|
|
||||||
{
|
|
||||||
mutex.lock();
|
|
||||||
la_to_update = la;
|
|
||||||
mutex.unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TunerWorker::SetTemperamentIndex(int idx)
|
|
||||||
{
|
|
||||||
mutex.lock();
|
|
||||||
temperament_to_update = idx;
|
|
||||||
mutex.unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TunerWorker::Entry()
|
|
||||||
{
|
|
||||||
cerr << __func__ << endl;
|
|
||||||
|
|
||||||
int nbSamplePreventRunning = nbSecPreventRunning * PitchDetection::rate;
|
|
||||||
int nb_sample_running = 0;
|
|
||||||
|
|
||||||
ofstream *file = NULL;
|
|
||||||
if (filename_record) file = new ofstream(filename_record);
|
|
||||||
|
|
||||||
PitchDetection *pitchDetection = new PitchDetection();
|
|
||||||
emit temperamentListUpdated(pitchDetection->GetTemperamentList());
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
// wait for running
|
|
||||||
mutex.lock();
|
|
||||||
if (!running) {
|
|
||||||
blank_prevent(false);
|
|
||||||
while (!running && !quit) condition.wait(&mutex);
|
|
||||||
cerr << "wake-up" << endl;
|
|
||||||
// reset operations on start
|
|
||||||
if (!quit) {
|
|
||||||
pitchDetection->Reset();
|
|
||||||
nb_sample_running = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (quit) {
|
|
||||||
mutex.unlock();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// update config
|
|
||||||
if (la_to_update) {
|
|
||||||
pitchDetection->SetLa(la_to_update);
|
|
||||||
la_to_update = 0;
|
|
||||||
}
|
|
||||||
if (temperament_to_update != -1) {
|
|
||||||
pitchDetection->SetTemperament(temperament_to_update);
|
|
||||||
temperament_to_update = -1;
|
|
||||||
}
|
|
||||||
mutex.unlock();
|
|
||||||
|
|
||||||
// record in file is needed
|
|
||||||
//if (file) file_record.write((char*) ptr, nb_frame * sizeof(int16_t));
|
|
||||||
|
|
||||||
std::cout << __func__ << " do job" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
delete pitchDetection;
|
|
||||||
|
|
||||||
if (file) {
|
|
||||||
file->close();
|
|
||||||
delete file;
|
|
||||||
}
|
|
||||||
|
|
||||||
cerr << __func__ << " quit" << endl;
|
|
||||||
/*
|
|
||||||
// prevent screen blanking
|
|
||||||
if (nb_sample_running >= nbSamplePreventRunning && running) {
|
|
||||||
nb_sample_running = 0;
|
|
||||||
blank_prevent(true);
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Set a filename to record raw audio stream
|
|
||||||
|
|
||||||
void TunerWorker::set_record(const char *f)
|
|
||||||
{
|
|
||||||
filename_record = f;
|
|
||||||
}
|
|
||||||
|
|
|
@ -121,18 +121,20 @@ void ObjectSaver::load()
|
||||||
// load object from file
|
// load object from file
|
||||||
QMetaProperty property;
|
QMetaProperty property;
|
||||||
const QMetaObject *meta = object->metaObject();
|
const QMetaObject *meta = object->metaObject();
|
||||||
QString title, value;
|
QByteArray title;
|
||||||
const char *t;
|
QString value;
|
||||||
int offset;
|
int offset;
|
||||||
char c;
|
bool ok;
|
||||||
|
|
||||||
while (!file->atEnd()) {
|
while (!file->atEnd()) {
|
||||||
title = file->readLine(100).trimmed();
|
title = file->readLine(100).trimmed();
|
||||||
t = title.toStdString().c_str();
|
offset = meta->indexOfProperty(title.constData());
|
||||||
offset = meta->indexOfProperty(t);
|
|
||||||
if (offset != -1 && !file->atEnd() && type_ok(meta->property(offset).type())) {
|
if (offset != -1 && !file->atEnd() && type_ok(meta->property(offset).type())) {
|
||||||
value = file->readLine(100).trimmed();
|
value = file->readLine(100).trimmed();
|
||||||
if (!object->setProperty(t, value /*value.toInt(&ok, 10)*/)) {
|
|
||||||
|
ok = object->setProperty(title.constData(), value);
|
||||||
|
|
||||||
|
if (!ok) {
|
||||||
qDebug() << __func__ << " set property " << title << " to " << value << " failed";
|
qDebug() << __func__ << " set property " << title << " to " << value << " failed";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
Loading…
Reference in a new issue