]> Devoid-pointer.net GitWeb - FFBChecker.git/commitdiff
Add "Repeat" field.
authorMichal Malý <madcatxster@prifuk.cz>
Thu, 19 Dec 2013 22:04:36 +0000 (23:04 +0100)
committerMichal Malý <madcatxster@prifuk.cz>
Thu, 19 Dec 2013 22:04:36 +0000 (23:04 +0100)
ffbdevice.cpp
ffbeffect.cpp
ffbeffectparameters.cpp
ffbeffectparameters.h
mainwindow.cpp
mainwindow.ui

index cdd0ea1299c0520ee0beffc77524bd3b049be7e3..9df7e729524f18d2134f45dd0890804a22c8c0f3 100644 (file)
@@ -265,6 +265,8 @@ bool FFBDevice::startEffect(const int idx, FFBEffectTypes type, std::shared_ptr<
     return false;
   }
 
+  qDebug() << kernelEff->u.condition[0].center << kernelEff->u.condition[0].deadband << kernelEff->u.condition[1].center << kernelEff->u.condition[1].deadband;
+
   int ret = uploadEffect(kernelEff);
   if (ret < 0) {
     QMessageBox::critical(nullptr, "FFB Device", "Effect could not have been uploaded, error code: " + QString::number(ret));
@@ -282,7 +284,7 @@ bool FFBDevice::startEffect(const int idx, FFBEffectTypes type, std::shared_ptr<
   struct input_event evt;
   evt.type = EV_FF;
   evt.code = kernelEff->id;
-  evt.value = 1;
+  evt.value = m_effects[idx]->parameters()->repeat;
 
   ret = write(c_fd, &evt, sizeof(struct input_event));
   if (ret != sizeof(struct input_event)) {
index 5e932579d9c9fb499375066e6df1448edbfb7b69..21fa75a2893bc25da4ba810c236fb33df907f056 100644 (file)
@@ -32,6 +32,11 @@ bool FFBEffect::checkGenericParameters(const std::shared_ptr<FFBEffectParameters
   if (!GlobalSettings::GS()->doSanityChecks)
     return true;
 
+  if (params->repeat < 1) {
+    reportError("Effect must be played back at least once.");
+    return false;
+  }
+
   if (!checkBoundsInclusive(params->direction, 0, 0xFFFF)) {
     reportError("Direction out of bounds.");
     return false;
index 9f3d7058e68918baac0244784a80701c7edc895f..cf6a63e9c0a8167cd6219dccc5f1258f8af34291 100644 (file)
@@ -2,6 +2,7 @@
 
 FFBEffectParameters::FFBEffectParameters() :
   direction(0),
+  repeat(1),
   replayDelay(0),
   replayLength(0)
 {
@@ -15,6 +16,14 @@ bool FFBEffectParameters::directionFromString(const QString& direction)
   return ok;
 }
 
+bool FFBEffectParameters::repeatFromString(const QString& repeat)
+{
+  bool ok;
+  this->repeat = repeat.toInt(&ok);
+
+  return ok;
+}
+
 bool FFBEffectParameters::replayDelayFromString(const QString& replayDelay)
 {
   bool ok;
index f88b5f008ffe3858e0dde3e2bcc754fc45326106..9db30d97a4bd8b3b960390ca6c80344764d24f75 100644 (file)
@@ -12,10 +12,12 @@ public:
   virtual ~FFBEffectParameters();
 
   bool directionFromString(const QString& direction);
+  bool repeatFromString(const QString& repeat);
   bool replayDelayFromString(const QString& replayDelay);
   bool replayLengthFromString(const QString& replayLength);
 
   int direction;
+  int repeat;
   int replayDelay;
   int replayLength;
 };
index 2869120c14353ebc485ace91cbf89a67ca416df3..50a62e91616debeb450325f818164d5de34be24d 100644 (file)
@@ -343,6 +343,10 @@ bool MainWindow::readGeneralEffectParameters(std::shared_ptr<FFBEffectParameters
     QMessageBox::warning(this, res_inputFormatErrCap, "Invalid data in field \"direction\"");
     return false;
   }
+  if (!params->repeatFromString(ui->qle_repeat->text())) {
+    QMessageBox::warning(this, res_inputFormatErrCap, "Invalid data in field \"Replay\"");
+    return false;
+  }
   if (!params->replayDelayFromString(ui->qle_replayDelay->text())) {
     QMessageBox::warning(this, res_inputFormatErrCap, "Invalid data in field \"Replay delay\"");
     return false;
index 2292c7faa2d71e464f142487806bd1b93c046e40..475c256e95013f71bfbaffbf9819d7c3faf8559d 100644 (file)
         </property>
        </widget>
       </item>
+      <item row="2" column="0">
+       <widget class="QLabel" name="ql_repeat">
+        <property name="text">
+         <string>Repeat:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1">
+       <widget class="QLineEdit" name="qle_repeat">
+        <property name="text">
+         <string>1</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
      </layout>
     </item>
     <item>