WoW Addon Manager Client  0.0.1-alpha
A p2p World of Warcraft addon manager
mainwindow.cpp
Go to the documentation of this file.
1 #include "mainwindow.h"
2 #include <iostream>
3 #include <QFileDialog>
4 #include <QtCore/QStringListModel>
5 #include <QtWidgets/QPushButton>
6 #include <utils.h>
7 #include "addon.h"
8 #include "settingsmanager.h"
9 #include "upload_addon_dialog.h"
10 #include "response.h"
11 #include <boost/optional/optional_io.hpp>
12 #include <QMessageBox>
13 MainWindow::MainWindow(QWidget *parent, SettingsManager &settings) :
14  QMainWindow(parent),
15  ui(new Ui::MainWindow) {
16  auto dialog = new upload_addon_dialog(this);
17 
18 
19  ui->setupUi(this);
20  ui->classic_table->hide();
21  ui->ptr_table->hide();
22  //ui->retail_table->horizontalHeader()->setStretchLastSection(true);
23  for(int i = 0; i < 4; i++){
24  ui->retail_table->horizontalHeader()->setSectionResizeMode(i, QHeaderView::Stretch);
25  ui->classic_table->horizontalHeader()->setSectionResizeMode(i, QHeaderView::Stretch);
26  ui->ptr_table->horizontalHeader()->setSectionResizeMode(i, QHeaderView::Stretch);
27  }
28  ui->retail_table->setColumnWidth(4, 80);
29  ui->classic_table->setColumnWidth(4, 80);
30  ui->ptr_table->setColumnWidth(4, 80);
31 
32  ui->tabWidget->setCurrentIndex(0);
33 
34  ui->retail_table->setItem(0,0,new QTableWidgetItem("Hello World!"));
35  auto addons = Addon::get_remote_addons().get_data();
36  if(addons != boost::none) {
37  ui->retail_table->setRowCount(addons->size());
38  for (int i = 0; i < addons->size(); i++) {
39  auto addon = addons->at(i);
40  ui->retail_table->setItem(i, 0, new QTableWidgetItem(addon.m_addonName.c_str()));
41  }
42  }
43 
44 
45  connect(ui->set_wow_path_btn, &QPushButton::clicked, [&]() {
46  QString file_path = QFileDialog::getExistingDirectory(this, "Select WoW Folder");
47  settings.set_base_wow_path(file_path.toStdString());
48  settings.set_wow_folder_paths();
49  ui->lineEdit->setText(QString::fromStdString(settings.get_base_wow_path()));
50  });
51 
52  connect(ui->wow_version_combo_box, static_cast<void (QComboBox::*)(const QString&)>(&QComboBox::currentIndexChanged), [this](const QString& tab) {
53  swap_addon_list(tab);
54  });
55  connect(ui->actionQuit, &QAction::triggered, [&]() {
56  exit(0);
57  });
58 
59 
60  connect(ui->actionUploadAddon, &QAction::triggered, [&,dialog]() {
61  dialog->show();
62  });
63 
64  connect(ui->addon_search_field, &QLineEdit::returnPressed, [&, this]() {
65  auto result = Addon::get_addon_by_name(ui->addon_search_field->text().toStdString());
66 
67  if(result.get_error_code() == 200) {
68  auto addon = result.get_data();
69  auto get_addons_table = ui->get_addons_table;
70  get_addons_table->setRowCount(1);
71  get_addons_table->setItem(0,0,new QTableWidgetItem(QString::fromStdString(addon->m_addonName)));
72  get_addons_table->setItem(0,1,new QTableWidgetItem(QString::fromStdString(addon->m_addon_version)));
73  get_addons_table->setItem(0,3,new QTableWidgetItem(QString::fromStdString(addon->m_description)));
74  auto *widget = new QWidget();
75  auto *install_button = new QPushButton();
76  install_button->setText("Install");
77  auto *layout = new QHBoxLayout(widget);
78  layout->addWidget(install_button);
79  layout->setAlignment(Qt::AlignCenter);
80  layout->setContentsMargins(0,0,0,0);
81  widget->setLayout(layout);
82  get_addons_table->setCellWidget(0,4, widget);
83  connect(install_button, &QPushButton::clicked, [&, addon](){
84  std::cout << "Instaling: " << addon;
85  });
86  }
87  else if (result.get_error_code() == 404) {
88  make_message_box("No Addon found!");
89  }
90  else {
91  make_message_box("Woah something went wrong?");
92  }
93  });
94 
95 
96  fill_in_settings(settings);
97 
98 }
99 
100 
101 void MainWindow::swap_addon_list(const QString &version){
102  if(version == "Retail"){
103  ui->classic_table->hide();
104  ui->ptr_table->hide();
105  ui->retail_table->show();
106  }
107  else if(version == "Classic"){
108  ui->retail_table->hide();
109  ui->ptr_table->hide();
110  ui->classic_table->show();
111  }
112  else {
113  ui->retail_table->hide();
114  ui->classic_table->hide();
115  ui->ptr_table->show();
116  }
117 }
118 
120  ui->lineEdit->setText(QString::fromStdString(p_settings.get_base_wow_path()));
121 }
122 
123 MainWindow::~MainWindow() = default;
upload_addon_dialog
Definition: upload_addon_dialog.h:9
MainWindow::MainWindow
MainWindow(QWidget *parent, SettingsManager &settings)
Definition: mainwindow.cpp:13
Ui_MainWindow::classic_table
QTableWidget * classic_table
Definition: ui_mainwindow.h:50
upload_addon_dialog.h
Ui_MainWindow::actionUploadAddon
QAction * actionUploadAddon
Definition: ui_mainwindow.h:41
MainWindow::swap_addon_list
void swap_addon_list(const QString &version)
Definition: mainwindow.cpp:101
response.h
Ui_MainWindow::wow_version_combo_box
QComboBox * wow_version_combo_box
Definition: ui_mainwindow.h:47
Ui_MainWindow::ptr_table
QTableWidget * ptr_table
Definition: ui_mainwindow.h:49
utils.h
Ui_MainWindow::actionQuit
QAction * actionQuit
Definition: ui_mainwindow.h:40
Ui_MainWindow::addon_search_field
QLineEdit * addon_search_field
Definition: ui_mainwindow.h:55
Ui_MainWindow::retail_table
QTableWidget * retail_table
Definition: ui_mainwindow.h:51
Ui_MainWindow::setupUi
void setupUi(QMainWindow *MainWindow)
Definition: ui_mainwindow.h:70
MainWindow::ui
Ui::MainWindow * ui
Definition: mainwindow.h:22
Ui_MainWindow::tabWidget
QTabWidget * tabWidget
Definition: ui_mainwindow.h:44
settingsmanager.h
Ui
Definition: mainwindow.h:7
Ui_MainWindow::lineEdit
QLineEdit * lineEdit
Definition: ui_mainwindow.h:63
MainWindow::~MainWindow
~MainWindow() override
SettingsManager::get_base_wow_path
std::string get_base_wow_path() const
Definition: settingsmanager.cpp:35
MainWindow::fill_in_settings
void fill_in_settings(const SettingsManager &settings)
Definition: mainwindow.cpp:119
SettingsManager
Definition: settingsmanager.h:14
Addon::get_remote_addons
static Response< std::vector< Addon > > get_remote_addons()
Definition: addon.cpp:88
MainWindow
Definition: mainwindow.h:11
addon.h
mainwindow.h
Ui_MainWindow::set_wow_path_btn
QPushButton * set_wow_path_btn
Definition: ui_mainwindow.h:64