diff options
author | Cecil Hugh Watson <knoppmyth@gmail.com> | 2009-08-02 21:33:25 (GMT) |
---|---|---|
committer | Cecil Hugh Watson <knoppmyth@gmail.com> | 2009-08-02 21:33:25 (GMT) |
commit | d3cdc0010fb49666796001edcacbfc408e9b8ea6 (patch) | |
tree | ed4aa50356de04cecd5460c8d6b158891ab36767 /abs/core-testing/mythinstall/installdialog.cpp | |
parent | 7224eedb7ce6cc6c4a520cc887c2c5b1eac16191 (diff) | |
parent | 9a4b520578e61b098b4dce7a3ba2376c0c74b01e (diff) | |
download | linhes_pkgbuild-d3cdc0010fb49666796001edcacbfc408e9b8ea6.zip linhes_pkgbuild-d3cdc0010fb49666796001edcacbfc408e9b8ea6.tar.gz linhes_pkgbuild-d3cdc0010fb49666796001edcacbfc408e9b8ea6.tar.bz2 |
Merge branch 'HEAD' of ssh://cesman@knoppmyth.net/mount/repository/LinHES-PKGBUILD
Diffstat (limited to 'abs/core-testing/mythinstall/installdialog.cpp')
-rwxr-xr-x | abs/core-testing/mythinstall/installdialog.cpp | 1035 |
1 files changed, 1035 insertions, 0 deletions
diff --git a/abs/core-testing/mythinstall/installdialog.cpp b/abs/core-testing/mythinstall/installdialog.cpp new file mode 100755 index 0000000..5349453 --- /dev/null +++ b/abs/core-testing/mythinstall/installdialog.cpp @@ -0,0 +1,1035 @@ +#include <qapplication.h> +#include <unistd.h> +#include <fstream> +#include <sys/wait.h> // For WIFEXITED on Mac OS X + +#include "mythcontext.h" +#include "mythdbcon.h" +#include "lcddevice.h" +#include "tv.h" +#include "programinfo.h" +#include "uitypes.h" +#include "remoteutil.h" +#include <qdir.h> +#include "installdialog.h" +#include "installsettings.h" +#include "installationtype.h" +#include "mv_common.h" +#include "libmyth/dialogbox.h" +#include <stdlib.h> +#define UPDATE_STATUS_INTERVAL 5000 +#define UPDATE_SCREEN_INTERVAL 5000 + + + +WelcomeDialog::WelcomeDialog(MythMainWindow *parent, + QString window_name, + QString theme_filename, + const char* name) +:MythThemedDialog(parent, window_name, theme_filename, name) +{ + system("rm -f /tmp/.install_state"); + system("rm -f /tmp/.install_percent"); + system("rm -f /tmp/.install_error"); + install_drive = "" ; + recording_text = ""; + scheduled_text = ""; + install_text = ""; + version_text = ""; + I_AM_BUSY = false; + WORKING_ON_INSTALL = false; + current_hostname = ""; + + gContext->addListener(this); + m_timeFormat = gContext->GetSetting("TimeFormat", "h:mm AP"); + wireUpTheme(); + assignFirstFocus(); + + m_updateStatusTimer = new QTimer(this); + connect(m_updateStatusTimer, SIGNAL(timeout()), this, + SLOT(updateStatus())); + m_updateStatusTimer->start(UPDATE_STATUS_INTERVAL); + + m_updateScreenTimer = new QTimer(this); + connect(m_updateScreenTimer, SIGNAL(timeout()), this, + SLOT(updateScreen())); + + m_timeTimer = new QTimer(this); + connect(m_timeTimer, SIGNAL(timeout()), this, + SLOT(updateTime())); + m_timeTimer->start(1000); + + reboot_box = NULL; + popup = NULL; + showPopup(); +} +void WelcomeDialog::shutdownNow(int rc) +{ + QString NETBOOT = getenv("NETBOOT"); + NETBOOT=NETBOOT.stripWhiteSpace(); + system("rm -f /tmp/.install_state"); + system("rm -f /tmp/.install_percent"); + system("rm -f /tmp/.install_error"); + if (rc == 1) + system("/sbin/halt"); + else + system("/sbin/reboot"); + // system("/usr/bin/killall -9 X"); +} + +void WelcomeDialog::runLIVECD(void) +{ + cancelPopup(); + ask_validate_network(); + if ( runsettings(true) == 1 ) + { + QString PAINTER = gContext->GetSetting("ThemePainter"); + QString startFECmd = ("MYTHCONFDIR=/tmp mythfrontend -O ThemePainter=" + PAINTER ); + myth_system(startFECmd.ascii()); + } + else + { + cancelPopup(); + showPopup(); + } + + +} + + + +int WelcomeDialog::exec() +{ + updateAll(); + return MythDialog::exec(); +} + + + +void WelcomeDialog::keyPressEvent(QKeyEvent *e) +{ + bool handled = false; + QStringList actions; + gContext->GetMainWindow()->TranslateKeyPress("Welcome", e, actions); + for (unsigned int i = 0; i < actions.size() && !handled; i++) + { + QString action = actions[i]; + handled = true; + if (action == "ESCAPE") + { + return; // eat escape key + } + else if (action == "MENU") + { + showPopup(); + } + else if (action == "NEXTVIEW") + { + accept(); + } + else if (action == "SELECT") + { + activateCurrent(); + } + else + handled = false; + } + + if (!handled) + MythThemedDialog::keyPressEvent(e); +} + +UITextType* WelcomeDialog::getTextType(QString name) +{ + UITextType* type = getUITextType(name); + if (!type) + { + cout << "ERROR: Failed to find '" << name << "' UI element in theme file\n" + << "Bailing out!" << endl; + exit(0); + } + return type; +} + +void WelcomeDialog::wireUpTheme() +{ + m_status_text = getTextType("status_text"); + m_recording_text = getTextType("recording_text"); + m_scheduled_text = getTextType("scheduled_text"); + m_mv_text=getTextType("mythvantage_text"); + m_time_text = getTextType("time_text"); + m_date_text = getTextType("date_text"); + m_warning_text = getTextType("conflicts_text"); + m_warning_text->hide(); + buildFocusList(); +} + +void WelcomeDialog::closeDialog() +{ + done(1); +} + +WelcomeDialog::~WelcomeDialog() +{ + gContext->removeListener(this); + if (m_updateStatusTimer) + delete m_updateStatusTimer; + + if (m_updateScreenTimer) + delete m_updateScreenTimer; + + if (m_timeTimer) + delete m_timeTimer; +} + +void WelcomeDialog::updateTime(void) +{ + QString releasefile="/etc/"; + releasefile.append(RELEASEFILE); + + extern const char *myth_source_version; + extern const char *myth_source_path; + QString distro_line; + QFile file(releasefile); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + distro_line = t.readLine(); + file.close(); + } + + + QString s=""; + //QString s="MythVantage 1.4 Mythtv svn: "; + s.append(distro_line); + s.append( " , Mythtv svn:" ); + s.append(myth_source_version); + s.append(" "); + s.append(myth_source_path); + m_date_text->SetText(s); +} + +void WelcomeDialog::updateStatus(void) +{ +// checkConnectionToServer(); + updateStatusMessage(); +} + +void WelcomeDialog::updateScreen(void) +{ + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh " ); + system(cmdtxt); + recording_text=" "; + mythvantage_text=" "; + error_text=" "; + scheduled_text=" "; + QFile mystatus("/tmp/.install_state"); + QFile mypercent("/tmp/.install_percent"); + QFile myerror("/tmp/.install_error"); + QFile mylog("/tmp/mythvantage_install.log"); + if ( mystatus.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &mystatus ); // use a text stream + scheduled_text = t.readLine(); + mystatus.close(); + } + + if ( mypercent.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &mypercent ); // use a text stream + recording_text = t.readLine(); + mypercent.close(); + } + + if ( myerror.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &myerror ); // use a text stream + error_text = t.readLine(); + myerror.close(); + scheduled_text = error_text; + recording_text = "FAILED"; + WORKING_ON_INSTALL = false; + } + + if ( WORKING_ON_INSTALL ) + { + if ( mylog.open( IO_ReadOnly| IO_Translate ) ) + { + QTextStream t( &mylog ); + while ( !t.atEnd() ) + { + mythvantage_text=t.readLine(); + } + mylog.close(); + } + } + else + mythvantage_text=""; + m_recording_text->SetText(recording_text); + m_scheduled_text->SetText(scheduled_text); + m_mv_text->SetText(mythvantage_text); + + if ( install_drive != "" ) + install_text = ""; + + m_status_text->SetText(install_text ); + m_updateScreenTimer->start(UPDATE_SCREEN_INTERVAL, true); + if ( scheduled_text == "Done" ) + { + Reboot_popup () ; + } + // shows the busy box when configuring the system + if ( scheduled_text == "Configuring system") + { + if ( ! I_AM_BUSY ) + busy_box(); + assignFirstFocus(); + } +}; + +void WelcomeDialog::busy_box(void) +{ + QString msgtext = "Please wait, " ; + msgtext.append(current_hostname); + msgtext.append(" is preparing for life"); + MythBusyDialog *busy = new MythBusyDialog(msgtext); + busy->start(); + + while ( scheduled_text == "Configuring system" ) + { + qApp->processEvents (); + usleep(900); + I_AM_BUSY = true; + } + busy->Close(); + I_AM_BUSY = false; + busy->deleteLater(); +} + +void WelcomeDialog::busy_find_oldsettings(void) +{ + MythBusyDialog *busy = new MythBusyDialog( + QObject::tr("Importing old settings")); + busy->start(); + int return_code = 0; + while ( return_code == 0 ) + { + qApp->processEvents (); + usleep(900); + I_AM_BUSY = true; + return_code = myth_system("ps -ef|grep install_proxy.sh|grep -v grep > /dev/null"); + + } + busy->Close(); + I_AM_BUSY = false; + busy->deleteLater(); + +} + + + +void WelcomeDialog::updateAll(void) +{ + updateRecordingList(); + updateScheduledList(); +} + +bool WelcomeDialog::updateRecordingList() +{ + return true; +} + +bool WelcomeDialog::updateScheduledList() +{ + updateStatus(); + updateScreen(); + return true; +} + +void WelcomeDialog::updateStatusMessage(void) +{ + +} + +void WelcomeDialog::showPopup(void) +{ + if (popup) + return; + popup = new MythPopupBox(gContext->GetMainWindow(), "Menu"); + QButton *topButton; + QLabel *label = popup->addLabel(tr("Menu"), MythPopupBox::Large, false); + label->setAlignment(Qt::AlignCenter | Qt::WordBreak); + // This is a bad way to lock the buttons but it works for now. + if ( scheduled_text.length() <= 2 ) + { + run_from_installer = TRUE; + topButton = popup->addButton(tr("Install or Upgrade "), this, + SLOT(Display_2ndpopup())); + popup->addButton(tr("Run MythFrontend"), this, + SLOT(runLIVECD())); + popup->addButton(tr("Exit"), this, + SLOT(closeDialog())); + popup->addButton(tr("Close menu"), this, SLOT(cancelPopup())); + + popup->ShowPopup(this, SLOT(cancelPopup())); + + } + else + { + topButton= popup->addButton(tr("Exit"), this, + SLOT(closeDialog())); + popup->addButton(tr("Close menu"), this, SLOT(cancelPopup())); + + popup->ShowPopup(this, SLOT(cancelPopup())); + } + + topButton->setFocus(); +} + + +QString WelcomeDialog::diskmodel(QString drive , QString tsize) +{ + string line; + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh disk_model_it " + drive + " " + tsize ); + myth_system(cmdtxt); + + ifstream model("/tmp/model"); + if (model.is_open()) + getline (model,line); + model.close(); + return line; +} + +QString WelcomeDialog::findinstallsouce(void) +{ + string line; + QString currentitem; + ifstream mountfile("/proc/mounts"); + //ifstream mountfile("procmounts"); + while (! mountfile.eof() ) + { + getline (mountfile,line); + if ( line.empty() ) + line = "oops didn't find andthing"; + currentitem = line; + + if ( ! currentitem.contains("/dev")) + currentitem="not the right line"; + + //if ( currentitem.contains("/mnt/live/mnt") ) + if ( currentitem.contains("/.livesys/medium") ) + { + int ndx = line.find(" "); + currentitem = line.substr(0,ndx); + ndx = currentitem.findRev("/"); + currentitem = currentitem.mid(ndx+1,3); + return currentitem; + }; + + } + +}; + +void WelcomeDialog::showPopup_2(void) +{ + + if (popup) + return; + popup = new MythPopupBox(gContext->GetMainWindow(), "Select the drive to install"); + findinstallsouce(); + QButton *CancelButton; + QLabel *label = popup->addLabel(tr("Select the install target."), MythPopupBox::Large, false); + label->setAlignment(Qt::AlignCenter | Qt::WordBreak); + string currentitem; + string sizeitem; + string disksize; + string line; + bool installsource = false; + + QString NETBOOT = getenv("NETBOOT"); + NETBOOT=NETBOOT.stripWhiteSpace(); + if ( NETBOOT == "YES" ) + popup->addButton(("Diskless Frontend " ), this, SLOT(install_net() ) ); + + QString INSTALLSOURCE = findinstallsouce(); + std::cout << "install source:" << std::endl; + std::cout << INSTALLSOURCE << std::endl; + ifstream partitions("/proc/partitions"); + if (partitions.is_open()) + while (! partitions.eof() ) + { + getline (partitions,line); + if ( line.empty() ) + { + line = "oops didn't find anything"; + } + int ndx = line.rfind(" "); + ndx = ndx +1; + int linelength = line.length(); + currentitem = line.substr(ndx,linelength); + sizeitem = line.substr(0,ndx-1); + linelength = sizeitem.length(); + ndx = sizeitem.rfind(" "); + disksize = sizeitem.substr(ndx+1,linelength); + +// std::cout << currentitem<< std::endl; + if( currentitem == INSTALLSOURCE ) + { + std::cout << currentitem<< std::endl; + installsource = true; + } + + + if (! installsource ) + { + if ( currentitem == "hda" ) + popup->addButton(("hda " + diskmodel(currentitem,disksize)), this, SLOT(install_hda() ) ); + if ( currentitem == "hdb" ) + popup->addButton(("hdb " + diskmodel(currentitem,disksize)), this, SLOT(install_hdb() ) ); + if ( currentitem == "hdc" ) + popup->addButton(("hdc " + diskmodel(currentitem,disksize)), this, SLOT(install_hdc() ) ); + if ( currentitem == "hdd" ) + popup->addButton(("hdd " + diskmodel(currentitem,disksize)), this, SLOT(install_hdd() ) ); + if (currentitem == "sda" ) + popup->addButton(("sda " + diskmodel(currentitem,disksize)), this, SLOT(install_sda() ) ); + if (currentitem == "sdb" ) + popup->addButton(("sdb " + diskmodel(currentitem,disksize)), this, SLOT(install_sdb() ) ); + if (currentitem == "sdc" ) + popup->addButton(("sdc "+ diskmodel(currentitem,disksize)), this, SLOT(install_sdc() ) ); + if (currentitem == "sdd" ) + popup->addButton(("sdd "+ diskmodel(currentitem,disksize)), this, SLOT(install_sdd() ) ); + } + installsource = false; + } + partitions.close(); + CancelButton = popup->addButton(tr("Cancel"), this, SLOT(MAINPopup())); + popup->ShowPopup(this, SLOT(cancelPopup())); + CancelButton->setFocus(); +} + +void WelcomeDialog::GO_popup(QString go_text) +{ + if (popup) + return; + DialogCode retval = MythPopupBox::Show2ButtonPopup(gContext->GetMainWindow(), + QString("Start the process"), + QObject::tr(go_text), + QObject::tr("Start the process"), QObject::tr("Cancel"), kDialogCodeButton0); + + if ( retval == kDialogCodeButton0 ) + { + install_it(); + } + else + { + cancelPopup(); + showPopup(); + } +} + + +void WelcomeDialog::Reboot_popup(void) +{ if (reboot_box) + return; + QString prompt1; + QFile updbstatus("/tmp/.upgrade_db_failed"); + if ( updbstatus.open(IO_ReadOnly | IO_Translate) ) + { + prompt1 = QObject::tr(" "); + prompt1.append("\n"); + prompt1.append("An error occured while attempting to restore the database!"); + prompt1.append("\n"); + prompt1.append("The old database could not be restored, so a new database was created"); + prompt1.append("\n"); + + } + else + { + prompt1 = QObject::tr("Ready to go!"); + } + + + + reboot_box = new DialogBox(gContext->GetMainWindow(), prompt1); + reboot_box->AddButton(QObject::tr("Reboot")); + reboot_box->AddButton(QObject::tr("Power off")); + + int returncode = 0; + DialogCode dcode = reboot_box->exec(); + reboot_box->deleteLater(); + if (kDialogCodeButton0 == dcode ) + returncode = 0; + if (kDialogCodeButton1 == dcode ) + returncode = 1; + if (kDialogCodeButton2 == dcode ) + returncode = 2; + + + reboot_box = NULL; + shutdownNow(returncode); +} + + + +void WelcomeDialog::cancelPopup(void) +{ + if (!popup) + return; + popup->hide(); + popup->deleteLater(); + popup = NULL; + setActiveWindow(); +} + +void WelcomeDialog::MAINPopup(void) +{ + if (!popup) + return; + popup->hide(); + popup->deleteLater(); + popup = NULL; + showPopup(); + setActiveWindow(); +} + +void WelcomeDialog::Display_2ndpopup(void) +{ + cancelPopup(); + showPopup_2(); + updateStatusMessage(); + updateScreen(); +} + +void WelcomeDialog::install_hda(void) +{ + install_drive = "hda" ; + install_generic(); +} + +void WelcomeDialog::install_hdb(void) +{ + install_drive = "hdb" ; + install_generic(); +} + +void WelcomeDialog::install_hdc(void) +{ + install_drive = "hdc" ; + install_generic(); +} + +void WelcomeDialog::install_hdd(void) +{ + install_drive = "hdd" ; + install_generic(); +} + +void WelcomeDialog::install_sda(void) +{ install_drive = "sda" ; + install_generic(); +} +void WelcomeDialog::install_sdb(void) +{ install_drive = "sdb" ; + install_generic(); +} + +void WelcomeDialog::install_sdc(void) +{ install_drive = "sdc" ; + install_generic(); +} + +void WelcomeDialog::install_sdd(void) +{ + install_drive = "sdd" ; + install_generic(); +} + +void WelcomeDialog::install_net(void) +{ + install_drive = "NET" ; + gContext->ActivateSettingsCache(false); + gContext ->SaveSetting("HOSTinstallationtype","NET"); + install_generic(); +} + +void WelcomeDialog::install_generic(void) +{ + gContext->ActivateSettingsCache(false); + cancelPopup(); + updateStatusMessage(); + updateScreen(); + QString installwarningtext; + int runNextSetting; + runNextSetting = 1; + int tflag; + tflag = 0; + int retcode; + retcode=0; + QString installtype; + if ( install_drive != "NET") + retcode = mythinstalltype(install_drive); + if ( retcode == 0 ) + { + installtype = gContext -> GetSetting("HOSTinstallationtype"); + if ( installtype == "Full/Auto" ) + { + runNextSetting = ask_validate_network(); + installwarningtext="Warning!"; + installwarningtext.append ("\n"); + installwarningtext.append ("\n"); + installwarningtext.append ("About to erase the entire"); + installwarningtext.append ("\n"); + installwarningtext.append ("installation drive of "); + installwarningtext.append (install_drive); + + } + else if ( installtype == "NET") + { + runNextSetting=0; + gContext ->SaveSetting("HostSystemType", "Frontend_only"); + gContext->SaveSetting("HostaccesshostypeSystemtype","0"); + installwarningtext.append ("About to install "); + installwarningtext.append ("\n"); + installwarningtext.append (install_drive); + // ask for hostname + runsettings(false,true,false,false,false,false,false); + } + else if ( installtype == "Upgrade" ) + { + installwarningtext="Warning!"; + installwarningtext.append ("\n"); + installwarningtext.append ("\n"); + installwarningtext.append ("About to erase the"); + installwarningtext.append ("\n"); + installwarningtext.append ("partition "); + installwarningtext.append (install_drive); + installwarningtext.append ("1"); + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh find_update " + install_drive +" &"); + system(cmdtxt); + busy_find_oldsettings(); + bool flag = false; + QString line; + QString currentitem; + QFile file("/etc/systemconfig"); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + if ( line.startsWith("hostname")) + { + flag=true; + currentitem = line.section( "=", 1, 1 ); + current_hostname = currentitem ; + } + } + file.close(); + cout << current_hostname << endl; + } + if ( flag ) + { + // GO_popup(installwarningtext); + tflag = 1; + } + else + { + cout << "searching for knoppmyth-versin" << endl; + //couldn't open /etc/systemconfig, so now look for /tmp/etc/Knoppmyth-version + QFile file("/tmp/etc/KnoppMyth-version"); + if ( file.exists() ) + { //appears to be a knoppmyth version, proceed + cout << "found knoppmyth-version" << endl; + QFile kmfile("/tmp/etc/hostname"); + if ( kmfile.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &kmfile ); // use a text stream + line = t.readLine(); + flag=true; + currentitem = line.stripWhiteSpace(); + current_hostname = currentitem ; + //gContext->ActivateSettingsCache(true); + gContext->ClearSettingsCache(); + gContext->SetSetting("HostMyhostname",current_hostname); + gContext->SaveSetting("HostMyhostname",current_hostname); + } + kmfile.close(); + cout << current_hostname << endl; + runNextSetting = ask_validate_network(); + } + else + { + //popup things went wrong + DialogCode returncode = MythPopupBox::Show2ButtonPopup(gContext->GetMainWindow(), + QString(""), + QObject::tr("Couldn't find the old config file, proceed with update?"), + QObject::tr("No"), QObject::tr("Yes"), kDialogCodeButton1); + if ( returncode == kDialogCodeButton1 ) + { + runNextSetting = ask_validate_network(); + } + else if ( returncode == kDialogCodeButton0 ) + { + runNextSetting = 1; + } + } + + } + } + + } + + +//run through the system settings +if ( runNextSetting == 0 ) +{ + tflag = runsettings(false,false,true,true,false,false,false,false,false,false,true,false); + +} +else +{ + cancelPopup(); + showPopup(); +} + +if ( tflag == 1 ) + { + cancelPopup(); + GO_popup(installwarningtext); + } + else + { + cancelPopup(); + showPopup(); + } + +} + +void busy_network(void) +{ + MythBusyDialog *busy = new MythBusyDialog( + QObject::tr("Starting network")); + busy->start(); + int return_code = 0; + while ( return_code == 0 ) + { + qApp->processEvents (); + usleep(900); + return_code = myth_system("ps -ef|grep install_proxy.sh| grep setup_network |grep -v grep > /dev/null"); + } + busy->Close(); + busy->deleteLater(); +} + + +int WelcomeDialog::ask_validate_network(void) +{ + + QString pop_text="abc"; + int retval = 1; + while ( retval != 0 ) + { + int settingsrec = runsettings(false,true,false,false,false,false,false); + if ( settingsrec != 1 ) + return 1; + else + { + MythProgressDialog *network_check = NULL; + network_check = new MythProgressDialog(QObject::tr("Please wait while the network is checked."), 6); + updateScreen(); + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh network_check_it setup_network &"); + retval = system(cmdtxt); + busy_network(); + if (network_check) + { + network_check->setProgress(1); + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh network_check_it check_self"); + retval = system(cmdtxt); + if ( retval != 0 ) + { + network_check->Close(); + pop_text="Could not find myself on the network"; + } + } + + if ( retval == 0) + { + network_check->setProgress(2); + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh network_check_it check_gw"); + retval = system(cmdtxt); + if ( retval != 0 ) + { + network_check->Close(); + pop_text="Could not locate gateway"; + } + } + + if (retval == 0) + { + network_check->setProgress(3); + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh network_check_it check_ns"); + retval = system(cmdtxt); + if ( retval != 0 ) + { + network_check->Close(); + pop_text="Could not locate nameserver"; + } + } + if (retval == 0) + { + network_check->setProgress(4); + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh network_check_it check_names"); + retval = system(cmdtxt); + if ( retval != 0 ) + { + network_check->Close(); + pop_text="Could not lookup names"; + } + } + if (retval == 0) + { + network_check->setProgress(5); + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh network_check_it host_names"); + retval = system(cmdtxt); + if ( retval != 0 ) + { + network_check->Close(); + pop_text="Hostname already on the network"; + } + } + + + network_check->setProgress(6); + if (network_check) + { + network_check->Close(); + network_check->deleteLater(); + } + + if (retval != 0 ) + { + DialogCode val = MythPopupBox::Show2ButtonPopup(gContext->GetMainWindow(), QString(""), QObject::tr(pop_text), QObject::tr("Continue"), QObject::tr("Try again"), kDialogCodeButton0); + + if (kDialogCodeButton0 == val ) + retval = 0; + } + } + } +return 0; +} + + +void WelcomeDialog::install_it(void) +{ + QString installtype = gContext -> GetSetting("HOSTinstallationtype"); + QString rootfs = gContext -> GetSetting("HOSTrootfstype"); + QString datafs = gContext -> GetSetting("HOSTdatafstype"); + QString rootsize = gContext -> GetSetting("HOSTOSsize"); + rootsize=rootsize + "000"; + QString usealldata = gContext -> GetSetting("HostUseALLdata"); + QString datasize = gContext -> GetSetting("HOSTDATAsize"); + QString uprootfs = gContext -> GetSetting("HOSTuprootfstype"); + QString useswap = gContext -> GetSetting("HostUseSWAP"); + QString swapsize = gContext -> GetSetting("HOSTSWAPsize"); + if ( installtype != "Upgrade" ) + current_hostname = gContext->GetSetting("HostMyhostname"); + QString clean_upgrade = getenv("CLEAN_UPGRADE"); + if ( clean_upgrade == "YES" ) + current_hostname = gContext->GetSetting("HostMyhostname"); + +//get the hostname here if upgrade then use previous declarion of hostname + if ( usealldata == "1" ) + { + datasize="ALL"; + } + else + { + datasize=datasize + "000"; + } + if ( useswap == "0" ) + { + swapsize="NO"; + }; + + + if ( installtype == "Full/Auto" ) + { + QString currentitem; + QString line; + QFile file("/proc/meminfo"); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + line = t.readLine(); + if ( line.startsWith("MemTotal:")) + { + currentitem = line.simplifyWhiteSpace(); + currentitem = currentitem.section( " ", 1, 1 ); + } + } + file.close(); + bool ok; + int mem = currentitem.toInt( &ok, 10 ); // dec == 0, ok == FALSE + cout << mem << endl; + if ( mem >= 500000 ) + { + cout << gContext -> GetSetting("HostXres") << endl; + if ((gContext -> GetSetting("HostXres")) == "1280x720" ) + { + gContext->SaveSetting("Theme", "syth-lacquer-wide"); + cout <<"Setting theme to syth-wide" << endl; + } + } + + + QString cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh full_install_it " + install_drive + " " + rootfs + " " + rootsize + " " + datafs + " " + datasize + " " + swapsize + "&"); + system(cmdtxt); + } + else if ( installtype == "Upgrade" ) + { + QString cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh upgrade_it " + install_drive + " " + uprootfs + "&"); + system(cmdtxt); + } + else if (installtype=="NET") + { + QString olddb = gContext->GetSetting("HostMysqlserver"); + QString cmdtxt; + cmdtxt=MV_ROOT ; + char localhostname[1024]; + if (gethostname(localhostname, 1024)) + { + VERBOSE(VB_IMPORTANT, + "MCP: Error, could not determine host name." + ENO); + localhostname[0] = '\0'; + } + QString h; + h=localhostname; + cout << "calling restore_default_settings with hostname " << h << endl; + cmdtxt.append("bin/restore_default_settings.sh -c save -t syssettings -d 127.0.0.1 -h " + h); + system(cmdtxt); + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh NETBOOT " + install_drive + " &"); + system(cmdtxt); + } + WORKING_ON_INSTALL = true; + usleep (500); + updateScreen(); + usleep (500); + updateScreen(); + cancelPopup(); +} |