summaryrefslogtreecommitdiffhomepage
path: root/facetracknoir/process_detector.cpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2015-10-30 08:34:40 +0100
committerStanislaw Halik <sthalik@misaki.pl>2015-10-30 08:39:33 +0100
commit2160e39a4f3d5198eafbb483671583a5a0b51eaa (patch)
tree2370dd4e9a7b43c204d175af3ab2a0ff5b33c41d /facetracknoir/process_detector.cpp
parentaa066bdd4622d4f6824fee864f6be6806813f04d (diff)
rename gui directory
Diffstat (limited to 'facetracknoir/process_detector.cpp')
-rw-r--r--facetracknoir/process_detector.cpp211
1 files changed, 0 insertions, 211 deletions
diff --git a/facetracknoir/process_detector.cpp b/facetracknoir/process_detector.cpp
deleted file mode 100644
index 59a40f03..00000000
--- a/facetracknoir/process_detector.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-/* Copyright (c) 2015, Stanislaw Halik <sthalik@misaki.pl>
-
- * Permission to use, copy, modify, and/or distribute this
- * software for any purpose with or without fee is hereby granted,
- * provided that the above copyright notice and this permission
- * notice appear in all copies.
- */
-
-#include "process_detector.h"
-#include "facetracknoir/ui.h"
-#include "opentrack-compat/process-list.hpp"
-#include <QList>
-#include <QFileDialog>
-#include <QComboBox>
-#include <QString>
-#include <QHash>
-#include <QPushButton>
-
-void settings::set_game_list(const QString &game_list)
-{
- QSettings settings(OPENTRACK_ORG);
- settings.setValue("executable-list", game_list);
-}
-
-QString settings::get_game_list()
-{
- QSettings settings(OPENTRACK_ORG);
- return settings.value("executable-list").toString();
-}
-
-bool settings::is_enabled()
-{
- QSettings settings(OPENTRACK_ORG);
- return settings.value("executable-detector-enabled", false).toBool();
-}
-
-void settings::set_is_enabled(bool enabled)
-{
- QSettings settings(OPENTRACK_ORG);
- settings.setValue("executable-detector-enabled", enabled);
-}
-
-QHash<QString, QString> settings::split_process_names()
-{
- QHash<QString, QString> ret;
- QString str = get_game_list();
- QStringList pairs = str.split('|');
- for (auto pair : pairs)
- {
- QList<QString> tmp = pair.split(':');
- if (tmp.count() != 2)
- continue;
- ret[tmp[0]] = tmp[1];
- }
- return ret;
-}
-
-void BrowseButton::browse()
-{
- QFileDialog dialog(this);
- dialog.setFileMode(QFileDialog::ExistingFile);
- QString dir_path = QFileInfo(group::ini_pathname()).absolutePath();
- QString filename = dialog.getOpenFileName(
- this,
- tr("Set executable name"),
- dir_path,
- tr("Executable (*.exe);;All Files (*)"));
- MainWindow::set_working_directory();
- filename = QFileInfo(filename).fileName();
- if (!filename.isNull())
- twi->setText(filename);
-}
-
-int process_detector::add_row(QString exe_name, QString profile)
-{
- int i = ui.tableWidget->rowCount();
- ui.tableWidget->insertRow(i);
-
- QComboBox* cb = new QComboBox();
- cb->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Maximum);
- cb->addItem("");
- cb->addItems(group::ini_list());
- ui.tableWidget->setCellWidget(i, 1, cb);
-
- QTableWidgetItem* twi = new QTableWidgetItem(exe_name);
- ui.tableWidget->setItem(i, 0, twi);
-
- {
- BrowseButton* b = new BrowseButton(twi);
- b->setText("...");
- QObject::connect(b, SIGNAL(pressed()), b, SLOT(browse()));
- ui.tableWidget->setCellWidget(i, 2, b);
- }
-
- cb->setCurrentText(profile);
-
- return i;
-}
-
-void process_detector::add_items()
-{
- auto names = s.split_process_names();
- ui.tableWidget->clearContents();
- auto keys = names.keys();
- qSort(keys);
- for (auto n : keys)
- add_row(n, names[n]);
-}
-
-process_detector::process_detector(QWidget* parent) : QWidget(parent)
-{
- ui.setupUi(this);
- setFixedSize(size());
- connect(ui.add, SIGNAL(pressed()), this, SLOT(add()));
- connect(ui.remove, SIGNAL(pressed()), this, SLOT(remove()));
-
- add_items();
-
- QResizeEvent e(ui.tableWidget->size(), ui.tableWidget->size());
- ui.tableWidget->resizeEvent(&e);
-
- settings s;
-
- ui.enabled->setChecked(s.is_enabled());
-}
-
-void process_detector::save()
-{
- QString str;
-
- for (int i = 0; i < ui.tableWidget->rowCount(); i++)
- {
- auto exe = ui.tableWidget->item(i, 0)->text();
- auto profile = reinterpret_cast<QComboBox*>(ui.tableWidget->cellWidget(i, 1))->currentText();
- str += "|" + exe + ":" + profile;
- }
-
- s.set_game_list(str);
- s.set_is_enabled(ui.enabled->isChecked());
-}
-
-void process_detector::revert()
-{
-}
-
-void process_detector::add()
-{
- add_row();
-}
-
-void process_detector::remove()
-{
- int r = ui.tableWidget->currentRow();
- if (r != -1)
- ui.tableWidget->removeRow(r);
-}
-
-bool process_detector_worker::should_stop()
-{
- if (last_exe_name == "")
- return false;
-
- settings s;
-
- if (!s.is_enabled())
- {
- last_exe_name = "";
- return false;
- }
-
- QStringList exe_list = get_all_executable_names();
-
- if (exe_list.contains(last_exe_name))
- return false;
-
- last_exe_name = "";
-
- return true;
-}
-
-bool process_detector_worker::config_to_start(QString& str)
-{
- settings s;
- if (!s.is_enabled())
- {
- last_exe_name = "";
- return false;
- }
-
- auto filenames = s.split_process_names();
- QStringList exe_list = get_all_executable_names();
-
- // assuming manual stop by user button click.
- // don't automatically start again while the same process is running.
- if (last_exe_name != "" && exe_list.contains(last_exe_name))
- return false;
- // it's gone, we can start automatically again
- last_exe_name = "";
-
- for (auto& name : exe_list)
- {
- if (filenames.contains(name))
- {
- last_exe_name = name;
- str = filenames[name];
- return str != "";
- }
- }
-
- return false;
-}