summaryrefslogtreecommitdiffstats
path: root/abs/core/mythinstall/MythVantage-app/mythinstall/installationtype.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/mythinstall/MythVantage-app/mythinstall/installationtype.cpp')
-rwxr-xr-xabs/core/mythinstall/MythVantage-app/mythinstall/installationtype.cpp109
1 files changed, 96 insertions, 13 deletions
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/installationtype.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/installationtype.cpp
index 96866dc..cb2e918 100755
--- a/abs/core/mythinstall/MythVantage-app/mythinstall/installationtype.cpp
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/installationtype.cpp
@@ -1,23 +1,106 @@
+//#include <QObject>
#include <mythcontext.h>
#include <unistd.h>
-#include "installationtype.h"
#include <QTextStream>
-
#include <qdir.h>
+
#include "mv_common.h"
+#include "mythprogressdialog.h"
+#include "installationtype.h"
+#include "mythsystemlegacy.h"
int mythinstalltype (QString tmp_install_drive)
{
-
- Mythinstalltype setting;
- //FINDME this is needed to populate the default values and have the triggered config work
- setting.Load();
- setting.Save();
-
- int retc = 1 ;
- if ( setting.exec() == QDialog::Accepted )
+ QString line;
+ QString disksize;
+ QString rootsize;
+ QString homesize;
+ QString sqlsize;
+ QString useswap;
+ QString swapsize;
+ QString datasize;
+ QString usealldata;
+ int neededsize;
+ int disksizeMB;
+
+ int retc = 1;
+ while ( retc != 0 )
{
- retc = 0;
+ Mythinstalltype setting;
+ //FINDME this is needed to populate the default values and have the triggered config work
+ setting.Load();
+ setting.Save();
+
+ if ( setting.exec() == QDialog::Accepted )
+ {
+ //get users sizes
+ rootsize = gCoreContext->GetSetting("HOSTOSsize");
+ homesize = gCoreContext->GetSetting("HOSTHOMEsize");
+ sqlsize = gCoreContext->GetSetting("HOSTDatabasesize");
+ useswap = gCoreContext->GetSetting("HostUseSWAP");
+ swapsize = gCoreContext->GetSetting("HOSTSWAPsize");
+ usealldata = gCoreContext->GetSetting("HostUseALLdata");
+ datasize = gCoreContext->GetSetting("HOSTDATAsize");
+ //check if using swap
+ if ( useswap == "0" )
+ swapsize = "0";
+ //calculate size of all partitions;
+ neededsize = rootsize.toInt() * 1024 + homesize.toInt() *1024 +
+ sqlsize.toInt() * 1024 + swapsize.toInt();
+ //add 300 MB to neededsize if usealldata is enabled
+ if ( usealldata == "1" )
+ neededsize = neededsize + 300;
+ else
+ neededsize = neededsize + datasize.toInt() * 1024;
+ //get selected drive size
+ //using myth_system as QFile wouldn't read /proc/partitions directly
+ myth_system("cat /proc/partitions > /tmp/proc.partitions");
+ QFile file("/tmp/proc.partitions");
+ if (file.open(QIODevice::ReadOnly | QIODevice::Text))
+ {
+ QTextStream t( &file );
+ while (!t.atEnd())
+ {
+ line = t.readLine();
+ line = line.simplified();
+ if ( line.endsWith(tmp_install_drive) )
+ {
+ disksize = line.section( " ", 2, 2 );
+ //QTextStream(stdout) << "disksize:" + disksize << endl;
+ break;
+ }
+ }
+ }
+ file.close();
+ //convert to MB and match calulation in installdialog.cpp
+ disksizeMB = qRound(disksize.toFloat() * 1024 / 1000000);
+
+ if (neededsize > disksizeMB)
+ {
+ DialogCode val = MythPopupBox::Show2ButtonPopup(
+ GetMythMainWindow(),
+ "Error", "The total partition sizes (" + QString::number(neededsize) + " MB) are too large for the selected drive (" + QString::number(disksizeMB) + " MB). Continuing may result in a failed install.",
+ QObject::tr("Continue"),
+ QObject::tr("Try Again"),
+ kDialogCodeButton1);
+ if ( val == kDialogCodeButton0 )
+ {
+ retc = 0;
+ }
+ else
+ {
+ retc = 1;
+ }
+ }
+ else
+ {
+ retc = 0;
+ }
+ }
+ else
+ {
+ retc = 0;
+ }
}
return retc;
@@ -94,7 +177,7 @@ static HostSpinBox *HOSTSWAPsize()
{
QTextStream t( &file ); // use a text stream
line = t.readLine();
- if ( line.startsWith("MemTotal:"))
+ if ( line.startsWith("MemTotal:") )
{
currentitem = line.simplified();
currentitem = currentitem.section( " ", 1, 1 );
@@ -104,7 +187,7 @@ static HostSpinBox *HOSTSWAPsize()
bool ok;
int mem = currentitem.toInt( &ok, 10 ); // dec == 0, ok == FALSE
//QTextStream(stdout) << mem << endl;
- mem = mem/1024 ;
+ mem = mem / 1024 + 16;
//QTextStream(stdout) << mem << endl;
if ( ! ok )