//
// Created by HW on 2023/07/26.
//

// You may need to build the project (run Qt uic code generator) to get "ui_MainWindowLagout.h" resolved

#include "mainwindowlayout.h"
#include "ui_MainWindowLayout.h"
#include "mysettingsdialog.h"
#include "netio.h"
#include "sqlitehelper.h"
MainWindowLayout::MainWindowLayout(QWidget *parent) :
        QWidget(parent), ui(new Ui::MainWindowLayout) {
    ui->setupUi(this);
	setContentsMargins(0, 0, 0, 0);
    layout=new QVBoxLayout(this);
	mainWindowLayout = this;
	QList<ButtonStruct> list;
	ConfigRequest *configRequest = new ConfigRequest;
	configResponse = new ConfigResponse;
	configRequest->sendRequest(configResponse);
	mainScreen = new MainScreen(this);
    navBar=new NavBar(configResponse,mainScreen,this);
	navBar->setMinimumHeight(0);
	navBar->setMaximumHeight(this->height() / 8);
	mainScreen->setMinimumHeight(0);
	//navBar->setAttribute(Qt::WA_DeleteOnClose);
	delete configRequest;
    //QSizePolicy sizePolicy(QSizePolicy::Policy::Fixed, QSizePolicy::QSizePolicy::Fixed);
    //navBar->setSizePolicy(sizePolicy);
	//layout->setContentsMargins(0, 0, 0, 0);
    layout->addWidget(navBar,1);
    layout->addWidget(mainScreen,7);
	layout->setMargin(0);
    setLayout(layout);
	connect(this,&MainWindowLayout::clickButton1,mainScreen,&MainScreen::clickButton1);
}

MainWindowLayout::~MainWindowLayout() {
	delete configResponse;
	layout->removeWidget(mainScreen);
	layout->removeWidget(navBar);
	delete mainScreen;
    //delete[] list[0];
    delete navBar;
    delete layout;
    delete ui;
}

void MainWindowLayout::resizeEvent(QResizeEvent *event) {
    QWidget::resizeEvent(event);
    navBar->setMaximumHeight(event->size().height()/8);
    //layout->setAlignment(Qt::AlignmentFlag::AlignHCenter);
}

void MainWindowLayout::clickButton(QString op, QString func, QString url,QString path,QString initial_position) {
	QString root_path = QApplication::applicationDirPath();
	if(op=="app")
	{
		if(func=="openwechat")
		{
			emit clickButton1("openwechat", url);
		}else
		{
			path = root_path + path;
			path.replace("/", "\\");
			WinExec(path.toStdString().c_str(), SW_SHOW);
			emit clickButton1(op, url);
		}
	}
	else if (op == "self") {
		if(func=="settings")
		{
			MySettingsDialog* settings = new MySettingsDialog;
			settings->exec();
			delete settings;
		}
		else
		{
			emit clickButton1(func, url);
		}
	}
	else if(op=="soft"){
		ShellExecute(GetDesktopWindow(), L"open",path.toStdWString().c_str(),L"",initial_position.toStdWString().c_str(),SW_SHOW);
		emit clickButton1(op, url);
	}else
	{
		emit clickButton1(op, url);
	}
}

MainWindowLayout *mainWindowLayout;
