#include "MainWindow.h"
#include "ui_MainWindow.h"
#include "DownloadWidget.h"
#include "ReadBackWidget.h"
#include "MemoryTestWidget.h"
#include "DeviceTestWidget.h"
#include "WelcomeWidget.h"
#include "ParameterWidget.h"
#include "FormatWidget.h"
#include "BromAdapterWidget.h"
#include "WriteMemoryWidget.h"
#include "SCIDownloadWidget.h"
#include "CloneDownloadWidget.h"
#include "AboutDialog.h"
#include "CheckUpdateDialog.h"
#include "ProcessingDialog.h"
#include "MainController.h"
#include "MainWindowCallback.h"
#include "Assistant.h"
#include "ScatterObserver.h"
#include "OkDialog.h"
#include "UpdateDialog.h"
#include "AsyncUpdater.h"
#include "../../BootRom/brom.h"
#include "ChipInfoWidget.h"
#include "NandWidget.h"
#include "EMMCWidget.h"
#include "SDMMCWidget.h"
#include "NorFlashWidget.h"
#include "UfsWidget.h"
#include "../../Setting/ConnBromUSBSetting.h"
#include "../../Setting/ConnBromUARTSetting.h"
#include "../../ConsoleMode/Config.h"
#include "../../Utility/FileUtils.h"
#include "../../Utility/constString.h"
#include "../../Utility/Utils.h"
#include "../../Utility/IniItem.h"
#include "../../Utility/version.h"
#include "../../Err/AppException.h"
#include "../../Err/FlashToolErrorCodeDef.h"
#include "../../Err/Exception.h"
#include "../../Err/ErrorLookup.h"
#include "../../Host/Inc/RuntimeMemory.h"
#include "EncryDialog.h"
#include "../../BootRom/internal_api.h"
#include <QtDebug>
#include <QtGui>
#include <algorithm>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
info_widget_(NULL),
nor_widget_(NULL),
nand_widget_(NULL),
emmc_widget_(NULL),
sdmmc_widget_(NULL),
ufs_widget_(NULL),
language_tag(LANGUAGE_ENGLISH),
about_dialog(NULL),
processing_dialog_(new ProcessingDialog(this)),
option_dialog (new OptionDialog(this, this)),
ok_dialog(new OkDialog(this)),
checkupdate_dialog(NULL),
update_dialog(NULL),
encry_dialog(NULL),
async_updater(NULL),
current_platform(new PlatformObj()),
scatter_observer_(new ScatterObserver()),
mbromAdapter_on(false),
msecurity_on(false),
mSCIDownload_on(false),
mLog_on(false),
mDeviceTest_on(false),
lockui_on(false),
show_welcome(true),
assistant_(new Assistant(this)),
is_auto_polling_enable_(false),
auto_polling_count_(0),
auto_polling_upper_limit_(0),
finish_(false),
is_ok_(true),
is_scidl_visible_(false)
{
ui->setupUi(this);
#ifdef _WIN32
async_updater = new AsyncUpdater(this);
#endif
SetUI();
CreateWidget();
CreateConnect();
SetInitState();
InitShortcuts();
#ifdef _WIN32
if(!ToolInfo::IsCustomerVer())
{
IniItem item("option.ini", "CheckUpdate", "Update");
if(item.GetBooleanValue() == true )
async_updater->CheckAsyncNewVersion();
}
#endif
}
void MainWindow::SetUI()
{
ui->progressBar->setTextVisible(true);
ui->actionExportPartial_Format_Download->setVisible(false);
ui->actionCerfitication_download->setVisible(false);
if(ToolInfo::IsCustomerVer())
{
ui->actionExportFormat->setVisible(false);
ui->actionReadback->setVisible(false);
}
QImage image = Utils::AddStringToImage(":/images/Phone.png", "MediaTek");
ui->ImageLabel->setPixmap(QPixmap::fromImage(image));
#ifndef _WIN32
ui->action_SoftwareUpdate->setVisible(false);
#endif
}
void MainWindow::CreateWidget()
{
main_controller_ = new MainController(this,this);
main_callbacks_ = new MainWindowCallback(this,this);
send_report_ = new SendReport(this, this);
thread_timer_ = new QTimer(this);
thread_timer_->setSingleShot(true);
download_widget = new DownloadWidget(ui->tabWidget, this);
memtest_widget = new MemoryTestWidget(ui->tabWidget, this);
devtest_widget = new DeviceTestWidget(ui->tabWidget, this);
parameter_widget = new ParameterWidget(ui->tabWidget, this);
format_widget = new FormatWidget(ui->tabWidget, this);
writeMemory_widget = new WriteMemoryWidget(ui->tabWidget, this);
readback_widget = new ReadBackWidget(ui->tabWidget, this);
welcome_widget = new WelcomeWidget(ui->tabWidget, this);
bromAdapter_widget = new BromAdapterWidget(ui->tabWidget, this);
sciDownload_widget_ = new SCIDownloadWidget(ui->tabWidget, this);
cloneDownload_wdiget_ = new CloneDownloadWidget(ui->tabWidget, this);
tab_widgets.push_back(welcome_widget);
tab_widgets.push_back(format_widget);
tab_widgets.push_back(download_widget);
tab_widgets.push_back(readback_widget);
tab_widgets.push_back(memtest_widget);
for(std::list<TabWidgetBase*>::const_iterator it=tab_widgets.begin();
it != tab_widgets.end(); ++it)
{
(*it)->Attach();
}
ui->tabWidget->setCurrentWidget(download_widget);
}
void MainWindow::CreateConnect()
{
main_controller()->GetPlatformSetting()->addObserver(current_platform);
main_controller()->GetPlatformSetting()->addObserver(option_dialog);
connect(main_controller_, SIGNAL(signal_err_msg(int, const std::string&)),
this, SLOT(slot_show_err(int, const std::string&)));
connect(this, SIGNAL(signal_err_msg(int, const std::string&)),
this, SLOT(slot_show_err(int, const std::string&)));
connect(this,SIGNAL(signal_UnlockUI()),SLOT(slot_UnlockUI()));
connect(main_controller_, SIGNAL(signal_conn_init()),
this, SLOT(slot_conn_init()));
#ifdef _WIN32
connect(async_updater, SIGNAL(signal_check_finish(const bool&)),
this, SLOT(slot_check_finish(const bool&)));
#endif
connect(option_dialog, SIGNAL(signal_enable_DAChksum(int)),
this, SLOT(slot_enable_DAChksum(int)));
connect(this, SIGNAL(signal_language_change(int)),
this, SLOT(slot_language_changed(int)));
connect(current_platform, SIGNAL(signal_platform_change()), this,
SLOT(slot_platformChanged()));
connect(current_platform, SIGNAL(signal_platform_change()),
format_widget, SLOT(slot_platformChanged()));
connect(ui->menuExport_Console_Mode_XML, SIGNAL(aboutToShow()), this,
SLOT(slot_setMenuItemStatus()));
connect(this, SIGNAL(signal_start_download()), download_widget,
SLOT(slot_start_download()));
connect(this, SIGNAL(signal_set_UARTBaudrateIndex(uint)), option_dialog,
SLOT(slot_SetUARTBaudrateIndex(uint)));
connect(thread_timer_, SIGNAL(timeout()), send_report_, SLOT(waitSendThreadTimeout()));
connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(slot_current_changed(int)));
connect(this, SIGNAL(signal_start_readback()), readback_widget, SLOT(on_toolButton_readBack_clicked()));
connect(this, SIGNAL(signal_start_format()), format_widget, SLOT(on_toolButton_Start_clicked()));
}
void MainWindow::SetInitState()
{
ui->label_status_port->setText(option_dialog->GetDescription());
ui->actionPhysical_Format->setVisible(false);
ui->actionWrite_Memory->setVisible(false);
ui->actionParameter_Page->setChecked(false);
ui->actionWrite_Memory->setChecked(false);
ui->actionExportWriteMemory->setVisible(false);
ui->actionSecurity_Mode->setVisible(true);
ui->actionSecurity_Mode->setChecked(false);
parameter_widget->setVisible(false);
writeMemory_widget->setVisible(false);
devtest_widget->setVisible(false);
bromAdapter_widget->setVisible(false);
sciDownload_widget_->setVisible(false);
cloneDownload_wdiget_->setVisible(false);
download_widget->Enable_groupBox_boot_mode_flag(false);
bool state;
IniItem item("option.ini", "WelcomePage", "ShowWelcome");
state = item.GetBooleanValue();
if(state == false)
{
ui->tabWidget->removeTab(0);
show_welcome = false;
ui->actionShow_Welcome->setText(tr("Show Welcome"));
}
else
{
show_welcome = true;
ui->actionShow_Welcome->setText(tr("Hide Welcome"));
}
评论1
最新资源