2013-12-23 13:28:47 +01:00
|
|
|
#include "macroeditor.h"
|
|
|
|
|
#include "ui_macroeditor.h"
|
2013-12-29 13:31:21 +01:00
|
|
|
#include "editmacro.h"
|
|
|
|
|
#include <QSettings>
|
|
|
|
|
#include <QDir>
|
|
|
|
|
#include <QTextStream>
|
|
|
|
|
#include <QDebug>
|
|
|
|
|
#include "gamemacro.h"
|
2013-12-23 13:28:47 +01:00
|
|
|
|
|
|
|
|
MacroEditor::MacroEditor(QWidget *parent) :
|
|
|
|
|
QDialog(parent),
|
2013-12-24 11:20:06 +01:00
|
|
|
ui(new Ui::MacroEditor) {
|
2013-12-23 13:28:47 +01:00
|
|
|
ui->setupUi(this);
|
2013-12-29 13:31:21 +01:00
|
|
|
|
|
|
|
|
connect(ui->pushButton_edit, SIGNAL(clicked()), this, SLOT(editCurrentSelectedMacro()));
|
2015-10-20 23:17:12 +02:00
|
|
|
connect(ui->comboBox_accounts, SIGNAL(currentTextChanged(QString)), this, SLOT(accountChanged(QString)));
|
|
|
|
|
connect(ui->listWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(macroDoubleClicked(QListWidgetItem*)));
|
2013-12-29 13:31:21 +01:00
|
|
|
|
|
|
|
|
loadAccounts();
|
2013-12-23 13:28:47 +01:00
|
|
|
}
|
|
|
|
|
|
2013-12-24 11:20:06 +01:00
|
|
|
MacroEditor::~MacroEditor() {
|
2013-12-23 13:28:47 +01:00
|
|
|
delete ui;
|
|
|
|
|
}
|
2013-12-29 13:31:21 +01:00
|
|
|
|
2015-10-20 23:17:12 +02:00
|
|
|
void MacroEditor::accountChanged(QString account) {
|
|
|
|
|
ui->listWidget->clear();
|
|
|
|
|
|
|
|
|
|
loadMacros(account);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MacroEditor::macroDoubleClicked(QListWidgetItem* item) {
|
|
|
|
|
GameMacro* macro = dynamic_cast<GameMacro*>(item);
|
|
|
|
|
|
|
|
|
|
if (macro == NULL)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
editCurrentSelectedMacro();
|
|
|
|
|
}
|
|
|
|
|
|
2013-12-29 13:31:21 +01:00
|
|
|
void MacroEditor::loadAccounts() {
|
|
|
|
|
QSettings settings;
|
|
|
|
|
QString folder = settings.value("swg_folder").toString();
|
|
|
|
|
|
|
|
|
|
QDir profilesFolder(folder + "/profiles");
|
|
|
|
|
|
|
|
|
|
if (!profilesFolder.exists())
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
QStringList accounts = profilesFolder.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
|
|
|
|
|
|
|
|
|
|
if (accounts.size() <= 0)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < accounts.size(); ++i) {
|
|
|
|
|
ui->comboBox_accounts->addItem(accounts.at(i));
|
|
|
|
|
}
|
|
|
|
|
|
2015-10-20 23:17:12 +02:00
|
|
|
// loadMacros(accounts.at(0));
|
2013-12-29 13:31:21 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MacroEditor::loadMacros(const QString& account) {
|
|
|
|
|
QSettings settings;
|
|
|
|
|
QString folder = settings.value("swg_folder").toString();
|
|
|
|
|
|
|
|
|
|
QFile file(folder + "/profiles/" + account + "/macros.txt");
|
|
|
|
|
|
|
|
|
|
if (!file.exists())
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
|
|
|
|
qDebug() << "loadMacros(account) file.open failed";
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QStringList macros = loadMacroNames(file);
|
|
|
|
|
|
|
|
|
|
QMap<int, GameMacro*>::iterator i;
|
2015-10-20 23:17:12 +02:00
|
|
|
for (i = gameMacros.begin(); i != gameMacros.end(); ++i) {
|
|
|
|
|
//cout << i.key() << ": " << i.value() << endl;
|
|
|
|
|
GameMacro* macro = i.value();
|
2013-12-29 13:31:21 +01:00
|
|
|
|
2015-10-20 23:17:12 +02:00
|
|
|
ui->listWidget->addItem(macro);
|
|
|
|
|
}
|
2013-12-29 13:31:21 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QStringList MacroEditor::loadMacroNames(QFile& macrosFile) {
|
|
|
|
|
QStringList names;
|
|
|
|
|
|
|
|
|
|
QTextStream stream(¯osFile);
|
|
|
|
|
|
|
|
|
|
if (!stream.atEnd()) {
|
|
|
|
|
QString version = stream.readLine();
|
|
|
|
|
|
|
|
|
|
if (!version.contains("version: 0000")) {
|
|
|
|
|
qDebug() << "invalid macros.txt format";
|
|
|
|
|
|
|
|
|
|
return names;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
while (!stream.atEnd()) {
|
|
|
|
|
QString line = stream.readLine();
|
|
|
|
|
|
|
|
|
|
GameMacro* macro = new GameMacro();
|
|
|
|
|
//connect(macro, SIGNAL())
|
|
|
|
|
if (!macro->parseMacro(line)) {
|
|
|
|
|
delete macro;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
names.append(macro->getName());
|
|
|
|
|
|
|
|
|
|
gameMacros.insert(macro->getId(), macro);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return names;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MacroEditor::editCurrentSelectedMacro() {
|
|
|
|
|
int idx = ui->listWidget->currentRow();
|
|
|
|
|
|
|
|
|
|
if (idx < 0)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
GameMacro* macro = dynamic_cast<GameMacro*>(ui->listWidget->currentItem());
|
|
|
|
|
|
|
|
|
|
if (macro != NULL) {
|
|
|
|
|
EditMacro dialog(macro, this);
|
|
|
|
|
dialog.exec();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|