Various fixes: modelPrinter free, mixer crash, trims display, channel names, monospace font

This commit is contained in:
Damjan Adamic
2015-08-23 16:00:37 +02:00
parent 0c7e545b42
commit 65bdd25173
5 changed files with 56 additions and 28 deletions
+3 -4
View File
@@ -78,10 +78,9 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, G
ui->trimCB->hide();
}
ui->trimCB->addItem(tr("Rud"), 1);
ui->trimCB->addItem(tr("Ele"), 2);
ui->trimCB->addItem(tr("Thr"), 3);
ui->trimCB->addItem(tr("Ail"), 4);
for(int i=0; i < NUM_STICKS; i++) {
ui->trimCB->addItem(AnalogString(i), i+1);
}
ui->trimCB->setCurrentIndex(1 - ed->carryTrim);
int expolength = firmware->getCapability(HasExpoNames);
+5 -1
View File
@@ -56,7 +56,11 @@ FlightModePanel::FlightModePanel(QWidget * parent, ModelData & model, int phaseI
}
// The trims
QString labels[] = { tr("Rud"), tr("Ele"), tr("Thr"), tr("Ail") }; // TODO is elsewhere for sure
QString labels[NUM_STICKS];
for(int i=0; i < NUM_STICKS; i++) {
labels[i] = AnalogString(i);
}
trimsLabel << ui->trim1Label << ui->trim2Label << ui->trim3Label << ui->trim4Label;
trimsUse << ui->trim1Use << ui->trim2Use << ui->trim3Use << ui->trim4Use;
+3 -4
View File
@@ -38,10 +38,9 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, G
}
if (!firmware->getCapability(VirtualInputs)) {
ui->trimCB->addItem(tr("Rud"));
ui->trimCB->addItem(tr("Ele"));
ui->trimCB->addItem(tr("Thr"));
ui->trimCB->addItem(tr("Ail"));
for(int i=0; i < NUM_STICKS; i++) {
ui->trimCB->addItem(AnalogString(i));
}
}
ui->trimCB->setCurrentIndex(1 - md->carryTrim);
+22 -7
View File
@@ -64,7 +64,7 @@ QString ModelPrinter::printOutputName(int idx)
return name;
}
else {
return printChannelName(idx);
return "";
}
}
@@ -180,7 +180,7 @@ QString ModelPrinter::printTimer(int idx)
QString ModelPrinter::printTimer(const TimerData & timer)
{
QStringList result;
if (firmware->getCapability(TimersName))
if (firmware->getCapability(TimersName) && timer.name[0])
result += tr("Name(%1)").arg(timer.name);
result += tr("%1:%2").arg(timer.val/60, 2, 10, QChar('0')).arg(timer.val%60, 2, 10, QChar('0'));
result += timer.mode.toString();
@@ -201,10 +201,25 @@ QString ModelPrinter::printTrim(int flightModeIndex, int stickIndex)
{
const FlightModeData & fm = model.flightModeData[flightModeIndex];
if (fm.trimRef[stickIndex] == -1)
return QString("%1").arg(fm.trim[stickIndex]);
else
return tr("FM%1").arg(fm.trimRef[stickIndex]);
if (fm.trimMode[stickIndex] == -1) {
return tr("Off");
}
else {
if (fm.trimRef[stickIndex] == flightModeIndex) {
return QString("%1").arg(fm.trim[stickIndex]);
}
else {
if (fm.trimMode[stickIndex] == 0) {
return tr("FM%1").arg(fm.trimRef[stickIndex]);
}
else {
if (fm.trim[stickIndex] < 0)
return tr("FM%1%2").arg(fm.trimRef[stickIndex]).arg(fm.trim[stickIndex]);
else
return tr("FM%1+%2").arg(fm.trimRef[stickIndex]).arg(fm.trim[stickIndex]);
}
}
}
}
QString ModelPrinter::printGlobalVar(int flightModeIndex, int gvarIndex)
@@ -295,7 +310,7 @@ QString ModelPrinter::printInputLine(const ExpoData & input)
QString ModelPrinter::printMixerName(int curDest)
{
QString str = printChannelName(curDest) + " ";
QString str = printChannelName(curDest-1) + " ";
if (firmware->getCapability(HasChNames)) {
QString name = model.limitData[curDest-1].name;
if (!name.isEmpty()) {
+23 -12
View File
@@ -84,8 +84,8 @@ bool MultiModelPrinter::MultiColumns::isEmpty()
for (int cc=0; cc<models.size(); cc++) { \
ModelPrinter * modelPrinter = modelPrinters[cc]; \
ModelData * model = models[cc]; \
model = model; modelPrinter = modelPrinter; \
columns.append(cc, what); \
(void)(model); (void)(modelPrinter); \
columns.append(cc, (what)); \
} \
columns.endCompare();
@@ -101,6 +101,9 @@ MultiModelPrinter::MultiModelPrinter(Firmware * firmware):
MultiModelPrinter::~MultiModelPrinter()
{
for(int i=0; i<modelPrinters.size(); i++) {
if (modelPrinters[i]) delete modelPrinters[i];
}
}
void MultiModelPrinter::setModel(int idx, const ModelData & model)
@@ -108,13 +111,20 @@ void MultiModelPrinter::setModel(int idx, const ModelData & model)
int count = std::max(models.size(), idx+1);
models.resize(count);
modelPrinters.resize(count);
if (modelPrinters[idx]) {
// free existing model printer
delete modelPrinters[idx];
modelPrinters[idx] = 0;
}
models[idx] = (ModelData *)&model; // TODO remove cast
modelPrinters[idx] = new ModelPrinter(firmware, defaultSettings, model);
}
QString MultiModelPrinter::print()
{
QString str = "<table border='1' cellspacing='0' cellpadding='3' width='100%'>";
QString str = "<table border='1' cellspacing='0' cellpadding='3' width='100%' style='font-family: monospace;'>";
str += printSetup();
if (firmware->getCapability(FlightModes))
str += printFlightModes();
@@ -182,10 +192,8 @@ QString MultiModelPrinter::printFlightModes()
columns.append("<td><b>" + tr("Switch") + "</b></td>");
columns.append("<td><b>" + tr("Fade IN") + "</b></td>");
columns.append("<td><b>" + tr("Fade OUT") + "</b></td>");
for (int i=0; i<4; i++) {
columns.append("<td><b>");
COMPARE(modelPrinter->printInputName(i));
columns.append("</b></td>");
for (int i=0; i<NUM_STICKS; i++) {
columns.append("<td><b>" + AnalogString(i) + " trim</b></td>");
}
columns.append("</tr>");
@@ -199,7 +207,7 @@ QString MultiModelPrinter::printFlightModes()
columns.append("</td><td>");
COMPARE(model->flightModeData[i].fadeOut);
columns.append("</td>");
for (int k=0; k<4; k++) {
for (int k=0; k<NUM_STICKS; k++) {
columns.append("<td>");
COMPARE(modelPrinter->printTrim(i, k));
columns.append("</td>");
@@ -259,14 +267,17 @@ QString MultiModelPrinter::printLimits()
MultiColumns columns(models.size());
columns.append("<table border='0' cellspacing='0' cellpadding='1' width='100%'>" \
"<tr>" \
" <td>" + (firmware->getCapability(HasChNames) ? tr("Name") : "") + "</td>" \
" <td><b>" + tr("Channel") + "</b></td>" \
" <td><b>" + (firmware->getCapability(HasChNames) ? tr("Name") : "") + "</b></td>" \
" <td><b>" + tr("Offset") + "</b></td>" \
" <td><b>" + tr("Min") + "</b></td>" \
" <td><b>" + tr("Max") + "</b></td>" \
" <td><b>" + tr("Invert") + "</b></td>" \
"</tr>");
for (int i=0; i<firmware->getCapability(Outputs); i++) {
columns.append("<tr><td>");
columns.append("<tr><td><b>");
COMPARE(modelPrinter->printChannelName(i));
columns.append("</b></td><td>");
COMPARE(modelPrinter->printOutputName(i));
columns.append("</td><td>");
COMPARE(model->limitData[i].offsetToString());
@@ -341,12 +352,12 @@ QString MultiModelPrinter::printMixers()
}
if (count > 0) {
columns.append("<tr><td width='20%'><b>");
COMPARE(modelPrinter->printChannelName(i));
COMPARE(modelPrinter->printMixerName(i+1));
columns.append("</b></td><td>");
for (int j=0; j<count; j++) {
if (j > 0)
columns.append("<br/>");
COMPARE(modelPrinter->printMixerLine(*model->mixes(i)[j]));
COMPARE((j < model->mixes(i).size()) ? modelPrinter->printMixerLine(*model->mixes(i)[j]) : "&nbsp;");
}
columns.append("</td></tr>");
}