diff options
Diffstat (limited to 'heimdall-frontend')
-rw-r--r-- | heimdall-frontend/Source/Alerts.cpp | 2 | ||||
-rw-r--r-- | heimdall-frontend/Source/Alerts.h | 2 | ||||
-rw-r--r-- | heimdall-frontend/Source/FirmwareInfo.cpp | 2 | ||||
-rw-r--r-- | heimdall-frontend/Source/FirmwareInfo.h | 2 | ||||
-rw-r--r-- | heimdall-frontend/Source/PackageData.cpp | 2 | ||||
-rw-r--r-- | heimdall-frontend/Source/PackageData.h | 2 | ||||
-rw-r--r-- | heimdall-frontend/Source/Packaging.cpp | 4 | ||||
-rw-r--r-- | heimdall-frontend/Source/Packaging.h | 2 | ||||
-rw-r--r-- | heimdall-frontend/Source/aboutform.cpp | 2 | ||||
-rw-r--r-- | heimdall-frontend/Source/aboutform.h | 2 | ||||
-rw-r--r-- | heimdall-frontend/Source/main.cpp | 2 | ||||
-rw-r--r-- | heimdall-frontend/Source/mainwindow.cpp | 115 | ||||
-rw-r--r-- | heimdall-frontend/Source/mainwindow.h | 23 | ||||
-rw-r--r-- | heimdall-frontend/aboutform.ui | 16 | ||||
-rw-r--r-- | heimdall-frontend/doc-pak/LICENSE | 19 | ||||
-rw-r--r-- | heimdall-frontend/doc-pak/README | 535 | ||||
-rw-r--r-- | heimdall-frontend/heimdall-frontend.pro | 42 | ||||
-rw-r--r-- | heimdall-frontend/mainwindow.ui | 239 |
18 files changed, 284 insertions, 729 deletions
diff --git a/heimdall-frontend/Source/Alerts.cpp b/heimdall-frontend/Source/Alerts.cpp index f0b2caa..f3bda78 100644 --- a/heimdall-frontend/Source/Alerts.cpp +++ b/heimdall-frontend/Source/Alerts.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/Alerts.h b/heimdall-frontend/Source/Alerts.h index 7094a53..6e76239 100644 --- a/heimdall-frontend/Source/Alerts.h +++ b/heimdall-frontend/Source/Alerts.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/FirmwareInfo.cpp b/heimdall-frontend/Source/FirmwareInfo.cpp index e11a002..a32ddea 100644 --- a/heimdall-frontend/Source/FirmwareInfo.cpp +++ b/heimdall-frontend/Source/FirmwareInfo.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/FirmwareInfo.h b/heimdall-frontend/Source/FirmwareInfo.h index c9f9fbd..8f05ab4 100644 --- a/heimdall-frontend/Source/FirmwareInfo.h +++ b/heimdall-frontend/Source/FirmwareInfo.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/PackageData.cpp b/heimdall-frontend/Source/PackageData.cpp index e5ed75f..5bd78aa 100644 --- a/heimdall-frontend/Source/PackageData.cpp +++ b/heimdall-frontend/Source/PackageData.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/PackageData.h b/heimdall-frontend/Source/PackageData.h index 9e04fea..1103815 100644 --- a/heimdall-frontend/Source/PackageData.h +++ b/heimdall-frontend/Source/PackageData.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/Packaging.cpp b/heimdall-frontend/Source/Packaging.cpp index 9bf7d46..dfdfe38 100644 --- a/heimdall-frontend/Source/Packaging.cpp +++ b/heimdall-frontend/Source/Packaging.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -301,7 +301,7 @@ bool Packaging::WriteTarEntry(const QString& filePath, QTemporaryFile *tarFile, // Note: We don't support base-256 encoding. Support could be added later. sprintf(tarHeader.fields.size, "%011llo", file.size()); - sprintf(tarHeader.fields.modifiedTime, "%011llo", qtFileInfo.lastModified().toTime_t()); + sprintf(tarHeader.fields.modifiedTime, "%u", qtFileInfo.lastModified().toTime_t()); // Regular File tarHeader.fields.typeFlag = '0'; diff --git a/heimdall-frontend/Source/Packaging.h b/heimdall-frontend/Source/Packaging.h index 4cead82..c8ea07a 100644 --- a/heimdall-frontend/Source/Packaging.h +++ b/heimdall-frontend/Source/Packaging.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/aboutform.cpp b/heimdall-frontend/Source/aboutform.cpp index 9bb975a..3547dcc 100644 --- a/heimdall-frontend/Source/aboutform.cpp +++ b/heimdall-frontend/Source/aboutform.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna
+/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/heimdall-frontend/Source/aboutform.h b/heimdall-frontend/Source/aboutform.h index 6223e3b..3fe3ece 100644 --- a/heimdall-frontend/Source/aboutform.h +++ b/heimdall-frontend/Source/aboutform.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna
+/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/heimdall-frontend/Source/main.cpp b/heimdall-frontend/Source/main.cpp index ce76059..6d49ba8 100644 --- a/heimdall-frontend/Source/main.cpp +++ b/heimdall-frontend/Source/main.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna
+/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/heimdall-frontend/Source/mainwindow.cpp b/heimdall-frontend/Source/mainwindow.cpp index f990cdd..46dc381 100644 --- a/heimdall-frontend/Source/mainwindow.cpp +++ b/heimdall-frontend/Source/mainwindow.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna
+/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -52,13 +52,19 @@ void MainWindow::StartHeimdall(const QStringList& arguments) QStringList paths;
- // Ensure /usr/bin is in PATH
+ // Ensure /usr/local/bin and /usr/bin are in PATH.
for (int i = 0; i < environment.length(); i++)
{
if (environment[i].left(5) == "PATH=")
{
paths = environment[i].mid(5).split(':');
- paths.prepend("/usr/bin");
+
+ if (!paths.contains("/usr/local/bin"))
+ paths.prepend("/usr/local/bin");
+
+ if (!paths.contains("/usr/bin"))
+ paths.prepend("/usr/bin");
+
break;
}
}
@@ -71,6 +77,7 @@ void MainWindow::StartHeimdall(const QStringList& arguments) if (heimdallPath.length() > 0)
{
+ utilityOutputPlainTextEdit->clear();
heimdallFailed = false;
if (heimdallPath[heimdallPath.length() - 1] != QDir::separator())
@@ -87,7 +94,7 @@ void MainWindow::StartHeimdall(const QStringList& arguments) {
flashLabel->setText("Failed to start Heimdall!");
- heimdallState = MainWindow::kHeimdallStateStopped;
+ heimdallState = HeimdallState::Stopped;
UpdateInterfaceAvailability();
}
}
@@ -102,7 +109,7 @@ void MainWindow::UpdateUnusedPartitionIds(void) {
const PitEntry *pitEntry = currentPitData.GetEntry(i);
- if (pitEntry->GetBlockCount() > 0 && strcmp(pitEntry->GetPartitionName(), "PIT") != 0 && strcmp(pitEntry->GetPartitionName(), "PT") != 0)
+ if (pitEntry->IsFlashable() && strcmp(pitEntry->GetPartitionName(), "PIT") != 0 && strcmp(pitEntry->GetPartitionName(), "PT") != 0)
unusedPartitionIds.append(pitEntry->GetIdentifier());
}
@@ -236,13 +243,13 @@ void MainWindow::UpdateLoadPackageInterfaceAvailability(void) else
developerDonateButton->setEnabled(false);
- loadFirmwareButton->setEnabled(heimdallState == MainWindow::kHeimdallStateStopped);
+ loadFirmwareButton->setEnabled(heimdallState == HeimdallState::Stopped);
}
}
void MainWindow::UpdateFlashInterfaceAvailability(void)
{
- if (heimdallState == MainWindow::kHeimdallStateStopped)
+ if (heimdallState == HeimdallState::Stopped)
{
partitionNameComboBox->setEnabled(partitionsListWidget->currentRow() >= 0);
@@ -262,7 +269,10 @@ void MainWindow::UpdateFlashInterfaceAvailability(void) flashProgressBar->setEnabled(false);
optionsGroup->setEnabled(true);
+ sessionGroup->setEnabled(true);
startFlashButton->setEnabled(validFlashSettings);
+ noRebootCheckBox->setEnabled(validFlashSettings);
+ resumeCheckbox->setEnabled(validFlashSettings);
}
else
{
@@ -270,13 +280,13 @@ void MainWindow::UpdateFlashInterfaceAvailability(void) flashProgressBar->setEnabled(true);
optionsGroup->setEnabled(false);
- startFlashButton->setEnabled(false);
+ sessionGroup->setEnabled(false);
}
}
void MainWindow::UpdateCreatePackageInterfaceAvailability(void)
{
- if (heimdallState == MainWindow::kHeimdallStateStopped)
+ if (heimdallState == HeimdallState::Stopped)
{
const FirmwareInfo& firmwareInfo = workingPackageData.GetFirmwareInfo();
@@ -308,16 +318,13 @@ void MainWindow::UpdateCreatePackageInterfaceAvailability(void) void MainWindow::UpdateUtilitiesInterfaceAvailability(void)
{
- if (heimdallState == MainWindow::kHeimdallStateStopped)
+ if (heimdallState == HeimdallState::Stopped)
{
detectDeviceButton->setEnabled(true);
closePcScreenButton->setEnabled(true);
pitSaveAsButton->setEnabled(true);
- if (!pitDestinationLineEdit->text().isEmpty())
- downloadPitButton->setEnabled(true);
- else
- downloadPitButton->setEnabled(false);
+ downloadPitButton->setEnabled(!pitDestinationLineEdit->text().isEmpty());
if (printPitDeviceRadioBox->isChecked())
{
@@ -331,6 +338,7 @@ void MainWindow::UpdateUtilitiesInterfaceAvailability(void) printLocalPitGroup->setEnabled(true);
printLocalPitLineEdit->setEnabled(true);
printLocalPitBrowseButton->setEnabled(true);
+
printPitButton->setEnabled(!printLocalPitLineEdit->text().isEmpty());
}
}
@@ -353,7 +361,7 @@ void MainWindow::UpdateInterfaceAvailability(void) UpdateCreatePackageInterfaceAvailability();
UpdateUtilitiesInterfaceAvailability();
- if (heimdallState == MainWindow::kHeimdallStateStopped)
+ if (heimdallState == HeimdallState::Stopped)
{
// Enable/disable tabs
@@ -404,7 +412,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
setupUi(this);
- heimdallState = MainWindow::kHeimdallStateStopped;
+ heimdallState = HeimdallState::Stopped;
lastDirectory = QDir::toNativeSeparators(QApplication::applicationDirPath());
@@ -420,6 +428,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) // Menu
QObject::connect(actionDonate, SIGNAL(triggered()), this, SLOT(OpenDonationWebpage()));
QObject::connect(actionVerboseOutput, SIGNAL(toggled(bool)), this, SLOT(SetVerboseOutput(bool)));
+ QObject::connect(actionResumeConnection, SIGNAL(toggled(bool)), this, SLOT(SetResume(bool)));
QObject::connect(actionAboutHeimdall, SIGNAL(triggered()), this, SLOT(ShowAbout()));
// Load Package Tab
@@ -439,7 +448,9 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) QObject::connect(pitBrowseButton, SIGNAL(clicked()), this, SLOT(SelectPit()));
QObject::connect(repartitionCheckBox, SIGNAL(stateChanged(int)), this, SLOT(SetRepartition(int)));
+
QObject::connect(noRebootCheckBox, SIGNAL(stateChanged(int)), this, SLOT(SetNoReboot(int)));
+ QObject::connect(resumeCheckbox, SIGNAL(stateChanged(int)), this, SLOT(SetResume(int)));
QObject::connect(startFlashButton, SIGNAL(clicked()), this, SLOT(StartFlash()));
@@ -882,20 +893,39 @@ void MainWindow::SelectPit(void) }
}
+
void MainWindow::SetRepartition(int enabled)
{
workingPackageData.GetFirmwareInfo().SetRepartition(enabled);
+
+ repartitionCheckBox->setChecked(enabled);
}
+
void MainWindow::SetNoReboot(int enabled)
{
workingPackageData.GetFirmwareInfo().SetNoReboot(enabled);
+
+ noRebootCheckBox->setChecked(enabled);
+}
+
+void MainWindow::SetResume(bool enabled)
+{
+ resume = enabled;
+
+ actionResumeConnection->setChecked(enabled);
+ resumeCheckbox->setChecked(enabled);
+}
+
+void MainWindow::SetResume(int enabled)
+{
+ SetResume(enabled != 0);
}
void MainWindow::StartFlash(void)
{
outputPlainTextEdit->clear();
- heimdallState = MainWindow::kHeimdallStateFlashing;
+ heimdallState = HeimdallState::Flashing;
heimdallFailed = false;
const FirmwareInfo& firmwareInfo = workingPackageData.GetFirmwareInfo();
@@ -922,6 +952,9 @@ void MainWindow::StartFlash(void) if (firmwareInfo.GetNoReboot())
arguments.append("--no-reboot");
+ if (resume)
+ arguments.append("--resume");
+
if (verboseOutput)
arguments.append("--verbose");
@@ -1072,7 +1105,7 @@ void MainWindow::DetectDevice(void) deviceDetectedRadioButton->setChecked(false);
utilityOutputPlainTextEdit->clear();
- heimdallState = MainWindow::kHeimdallStateDetectingDevice;
+ heimdallState = HeimdallState::DetectingDevice;
heimdallFailed = false;
QStringList arguments;
@@ -1090,11 +1123,14 @@ void MainWindow::ClosePcScreen(void) {
utilityOutputPlainTextEdit->clear();
- heimdallState = MainWindow::kHeimdallStateClosingPcScreen;
+ heimdallState = HeimdallState::ClosingPcScreen;
heimdallFailed = false;
QStringList arguments;
arguments.append("close-pc-screen");
+
+ if (resume)
+ arguments.append("--resume");
if (verboseOutput)
arguments.append("--verbose");
@@ -1124,7 +1160,7 @@ void MainWindow::DownloadPit(void) deviceDetectedRadioButton->setChecked(false);
utilityOutputPlainTextEdit->clear();
- heimdallState = MainWindow::kHeimdallStateDetectingDevice;
+ heimdallState = HeimdallState::DownloadingPit;
heimdallFailed = false;
QStringList arguments;
@@ -1135,6 +1171,9 @@ void MainWindow::DownloadPit(void) arguments.append("--no-reboot");
+ if (resume)
+ arguments.append("--resume");
+
if (verboseOutput)
arguments.append("--verbose");
@@ -1182,7 +1221,7 @@ void MainWindow::PrintPit(void) {
utilityOutputPlainTextEdit->clear();
- heimdallState = MainWindow::kHeimdallStatePrintingPit;
+ heimdallState = HeimdallState::PrintingPit;
heimdallFailed = false;
QStringList arguments;
@@ -1196,6 +1235,9 @@ void MainWindow::PrintPit(void) arguments.append("--stdout-errors");
arguments.append("--no-reboot");
+
+ if (resume)
+ arguments.append("--resume");
if (verboseOutput)
arguments.append("--verbose");
@@ -1223,7 +1265,7 @@ void MainWindow::HandleHeimdallStdout(void) output.remove(QChar('\b'));
output.replace(QChar('%'), QString("%\n"));
- if (heimdallState == MainWindow::kHeimdallStateFlashing)
+ if (heimdallState == HeimdallState::Flashing)
{
outputPlainTextEdit->insertPlainText(output);
outputPlainTextEdit->ensureCursorVisible();
@@ -1237,20 +1279,27 @@ void MainWindow::HandleHeimdallStdout(void) void MainWindow::HandleHeimdallReturned(int exitCode, QProcess::ExitStatus exitStatus)
{
+ HandleHeimdallStdout();
+
if (exitStatus == QProcess::NormalExit && exitCode == 0)
{
- if (heimdallState == MainWindow::kHeimdallStateFlashing)
+ bool executedNoReboot = (heimdallState == HeimdallState::Flashing && loadedPackageData.GetFirmwareInfo().GetNoReboot())
+ || (heimdallState == HeimdallState::PrintingPit && printPitDeviceRadioBox->isChecked()) || heimdallState == HeimdallState::DownloadingPit;
+
+ SetResume(executedNoReboot);
+
+ if (heimdallState == HeimdallState::Flashing)
{
flashLabel->setText("Flash completed successfully!");
}
- else if (heimdallState == MainWindow::kHeimdallStateDetectingDevice)
+ else if (heimdallState == HeimdallState::DetectingDevice)
{
deviceDetectedRadioButton->setChecked(true);
}
}
else
{
- if (heimdallState == MainWindow::kHeimdallStateFlashing)
+ if (heimdallState == HeimdallState::Flashing)
{
QString error = heimdallProcess.readAllStandardError();
@@ -1263,13 +1312,13 @@ void MainWindow::HandleHeimdallReturned(int exitCode, QProcess::ExitStatus exitS flashLabel->setText(error);
}
- else if (heimdallState == MainWindow::kHeimdallStateDetectingDevice)
+ else if (heimdallState == HeimdallState::DetectingDevice)
{
deviceDetectedRadioButton->setChecked(false);
}
}
- heimdallState = MainWindow::kHeimdallStateStopped;
+ heimdallState = HeimdallState::Stopped;
flashProgressBar->setEnabled(false);
UpdateInterfaceAvailability();
}
@@ -1278,7 +1327,7 @@ void MainWindow::HandleHeimdallError(QProcess::ProcessError error) {
if (error == QProcess::FailedToStart || error == QProcess::Timedout)
{
- if (heimdallState == kHeimdallStateFlashing)
+ if (heimdallState == HeimdallState::Flashing)
{
flashLabel->setText("Failed to start Heimdall!");
flashProgressBar->setEnabled(false);
@@ -1289,12 +1338,12 @@ void MainWindow::HandleHeimdallError(QProcess::ProcessError error) }
heimdallFailed = true;
- heimdallState = MainWindow::kHeimdallStateStopped;
+ heimdallState = HeimdallState::Stopped;
UpdateInterfaceAvailability();
}
else if (error == QProcess::Crashed)
{
- if (heimdallState == kHeimdallStateFlashing)
+ if (heimdallState == HeimdallState::Flashing)
{
flashLabel->setText("Heimdall crashed!");
flashProgressBar->setEnabled(false);
@@ -1304,12 +1353,12 @@ void MainWindow::HandleHeimdallError(QProcess::ProcessError error) utilityOutputPlainTextEdit->appendPlainText("\nFRONTEND ERROR: Heimdall crashed!");
}
- heimdallState = MainWindow::kHeimdallStateStopped;
+ heimdallState = HeimdallState::Stopped;
UpdateInterfaceAvailability();
}
else
{
- if (heimdallState == kHeimdallStateFlashing)
+ if (heimdallState == HeimdallState::Flashing)
{
flashLabel->setText("Heimdall reported an unknown error!");
flashProgressBar->setEnabled(false);
@@ -1319,7 +1368,7 @@ void MainWindow::HandleHeimdallError(QProcess::ProcessError error) utilityOutputPlainTextEdit->appendPlainText("\nFRONTEND ERROR: Heimdall reported an unknown error!");
}
- heimdallState = MainWindow::kHeimdallStateStopped;
+ heimdallState = HeimdallState::Stopped;
UpdateInterfaceAvailability();
}
}
diff --git a/heimdall-frontend/Source/mainwindow.h b/heimdall-frontend/Source/mainwindow.h index bea15cd..6aa9519 100644 --- a/heimdall-frontend/Source/mainwindow.h +++ b/heimdall-frontend/Source/mainwindow.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna
+/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -45,15 +45,14 @@ namespace HeimdallFrontend private:
- enum
+ enum class HeimdallState
{
- kHeimdallStateStopped = 0,
- kHeimdallStateFlashing,
- kHeimdallStateDetectingDevice,
- kHeimdallStateClosingPcScreen,
- kHeimdallStatePrintingPit,
- kHeimdallStateDownloadingPit,
- kHeimdallStateCount
+ Stopped = 0,
+ Flashing,
+ DetectingDevice,
+ ClosingPcScreen,
+ PrintingPit,
+ DownloadingPit
};
enum
@@ -69,7 +68,7 @@ namespace HeimdallFrontend int tabIndex;
bool heimdallFailed;
- int heimdallState;
+ HeimdallState heimdallState;
QProcess heimdallProcess;
PackageData loadedPackageData;
@@ -81,6 +80,7 @@ namespace HeimdallFrontend QList<unsigned int> unusedPartitionIds;
bool verboseOutput;
+ bool resume;
void StartHeimdall(const QStringList& arguments);
@@ -133,7 +133,10 @@ namespace HeimdallFrontend void SelectPit(void);
void SetRepartition(int enabled);
+
void SetNoReboot(int enabled);
+ void SetResume(bool enabled);
+ void SetResume(int enabled);
void StartFlash(void);
diff --git a/heimdall-frontend/aboutform.ui b/heimdall-frontend/aboutform.ui index 142de47..b7f00f3 100644 --- a/heimdall-frontend/aboutform.ui +++ b/heimdall-frontend/aboutform.ui @@ -72,7 +72,7 @@ <property name="geometry">
<rect>
<x>0</x>
- <y>0</y>
+ <y>-701</y>
<width>542</width>
<height>1140</height>
</rect>
@@ -114,11 +114,11 @@ p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:400; font-style:normal;">
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Heimdall Frontend</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Version 1.4 RC1</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Copyright © 2010-2012 Benjamin Dobell, Glass Echidna</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Version 1.4.0</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Copyright © 2010-2013 Benjamin Dobell, Glass Echidna</p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Heimdall (command line)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">%HEIMDALL-VERSION%Copyright © 2010-2012 Benjamin Dobell, Glass Echidna</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">%HEIMDALL-VERSION%Copyright © 2010-2013 Benjamin Dobell, Glass Echidna</p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html></string>
</property>
<property name="textFormat">
@@ -411,10 +411,10 @@ p, li { white-space: pre-wrap; } <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:600;">Heimdall (command line) utilises libusb-1.0 for all USB communication:</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">libusb-1.0 is licensed under the </span><a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; text-decoration: underline; color:#0000ff;">Lesser General Public License v2.1.</span></a></p></body></html></string>
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600;">Heimdall (command line) utilises libusbx for all USB communication:</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">libusbx is licensed under the </span><a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">Lesser General Public License v2.1.</span></a></p></body></html></string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
diff --git a/heimdall-frontend/doc-pak/LICENSE b/heimdall-frontend/doc-pak/LICENSE deleted file mode 100644 index 680dad9..0000000 --- a/heimdall-frontend/doc-pak/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/heimdall-frontend/doc-pak/README b/heimdall-frontend/doc-pak/README deleted file mode 100644 index a0ca91e..0000000 --- a/heimdall-frontend/doc-pak/README +++ /dev/null @@ -1,535 +0,0 @@ -Heimdall (c) 2010-2012 Benjamin Dobell, Glass Echidna
-http://www.glassechidna.com.au/products/heimdall/
-
-DISCLAIMER:
-
- This software attempts to flash your Galaxy S device. The very nature of
- flashing is dangerous. As with all flashing software, Heimdall has the
- potential to damage (brick) your device if not used carefully. If you're
- concerned, don't use this software. Flashing ROMs onto your phone may also
- void your warranty. Benjamin Dobell and Glass Echidna are not responsible
- for the result of your actions.
-
-
-These instructions are for Linux operating systems.
-
-
-Flashing Heimdall Firmware Package with Heimdall Frontend:
-
- As of Heimdall Frontend 1.3 there are now two main ways to flash a ROM from
- Heimdall Frontend. The simpler and preferred option is to download a
- Heimdall Firmware Package and follow the following steps.
-
-
- 1. Fully charge your device (use the wall charger as it's faster).
-
- 2. Open the a terminal and run Heimdall Frontend by typing:
-
- heimdall-frontend
-
- 3. From the "Load Package" tab, under the "Heimdall Firmware Package"
- section click the "Browse" button.
-
- 4. Use the dialogue that appears to navigate to, and select, the Heimdall
- firmware package that you wish to flash.
-
- 5. You will see progress bars appear as the package is decompressed and
- extracted.
-
- When the package has finished being decompressed you should see
- information about the particular firmware package that has been
- selected.
-
- 6. Verify that your device is listed under "Supported Devices". If it's not
- then STOP immediately! DO NOT flash this firmware to your device!
- Instead search for an appropriate firmware package for your device.
-
- If you believe there is a mistake and your device is actually
- supported please get in contact with the firmware developer (not Glass
- Echidna!) and ask them to rectify the issue. If the developer provided
- a URL you may be able to contact them by pressing the "Homepage" button.
-
- 7. If you've verified your device is supported you may continue to press
- the "Load / Customise" button.
-
- 8. You should now be looking at the "Flash" tab. If not verify that you did
- in fact push the "Load / Customise" button.
-
- Generally, you won't NEED or WANT to customise a firmware package! In
- which case you can safely move on to step 9.
-
- Nonetheless, the "Flash" tab provides you with a means to customise the
- firmware package before flashing it to your device. See "Performing a
- Custom Flash with Heimdall Frontend" for more details.
-
- 9. Put your Galaxy S device into download mode and plug it in to your PC.
-
- Download mode can be accessed several different ways depending on your
- particular device model. If you're unsure how to do this please search
- online for the appropriate method.
-
- 10. Press the "Start" button.
-
- 11. Heimdall Frontend will display the progress and inform you when the
- flash is complete.
-
- If something went wrong i.e. your device wasn't detected because it
- wasn't in download mode, then the status section will let you know the
- cause of the problem.
-
-
-
-Performing a Custom Flash with Heimdall Frontend:
-
- This is the advanced means of flashing firmware to your device.
-
- If you're not an advanced user or a developer, in the event that a Heimdall
- Firmware Package doesn't exist for the particular firmware (or files) that
- you wish to flash, then I strongly recommend you get in touch with the
- developer of the firmware (or files) and politely ask them to create a
- Heimdall Firmware Package for you. In doing so, you avoid the risk of
- making mistakes due to inexperience.
-
-
- If you're looking to customise an existing Heimdall Firmware Package then
- follow steps 1-8 of "Flashing Heimdall Firmware Package with Heimdall
- Frontend" then start from below with step 5.
-
-
- 1. Fully charge your device (use the wall charger as it's faster).
-
- 2. Download a decrypted Samsung Galaxy S ROM or a Heimdall Firmware Package
- and extract everything to the one directory.
-
- 3. If the ROM is not a Heimdall Firmware Package it may instead be provided
- as multiple archives (nested or otherwise), extract them all to the same
- location.
-
- NOTE: If you want to use the CSC then extract it last. If you're asked
- to overwrite files then do so.
-
- 3. Open the a terminal and run Heimdall Frontend by typing:
-
- heimdall-frontend
-
- 4. Select the "Flash" tab. From the "Flash" tab you're able to completely
- customise a flash.
-
- 5. Before you can chose which partitions you want to flash with particular
- files you MUST first select a PIT file. To do this click the "Browse"
- button in the "PIT" section. This will open a dialogue allowing you to
- navigate to and select a valid PIT (.pit) file.
-
- If you do not already have a valid PIT file stored on your computer you
- can download your device's PIT file from the "Utilities" tab.
-
- 6. If a valid PIT file has been selected then the "Add" button below the
- "Partitions (Files)" list-box will be enabled. Press this button to add
- a partition to your flash.
-
- 7. When you first add a partition you will see the "Partition Name" and
- "Partition ID" be populated with information. Use the "Partition Name"
- drop down to select which partition you wish to flash. "Partition ID"
- will automatically update and is never directly editable.
-
- 8. You must then select a file to flash to the partition that you just
- specified using the "Browse" button under the "File / Partition". You
- will not be able to flash, create a firmware package or add another
- partition until you have selected a file. However, you're still able to
- press the "Remove" button if you've decided not to flash the partition
- you've just specified.
-
- 9. When you've specified a file name then you'll be able to see the updated
- information in the partition list to the right. You can select any
- partition from this list and customise it as you see fit.
-
- You can also remove a partition from the list by selecting it and
- clicking the "Remove" button. Removing a partition from the list doesn't
- remove it from your device, it simply means it will not be flashed.
-
- 10. Repeat steps 7-9 as often as needed to specify all the partions/files
- that you wish to flash.
-
- 11. Now you can chose whether you would like to repartition your device as
- well as whether you would like to prevent the device rebooting once a
- flash has been completed. These options can be enabled or disabled by
- toggling the "Repartition" and "No Reboot" check-boxes.
-
- In the general case you will only need to enable repartition if you wish
- to change the PIT file on your device. Keep in mind that repartitioning
- will wipe your device!
-
- The "No Reboot" option is rarely required. It's mostly in place so you
- can manually boot straight into recovery mode after a flash (rather than
- booting up normally).
-
- 12. If you've added at least one partition to your flash (and selected a
- file for that partition) then the "Start" button will be enabled. Press
- the "Start" button to begin the flashing process.
-
- You may notice that the "Create Package" tab becomes available at the
- whenever the "Start" button becomes available. From this tab you're able
- to create a reusable, redistributable Heimdall Firmware Package with the
- files and partitions you just selected. See "How to Create a Heimdall
- Firmware Package" for details.
-
- 13. Heimdall Frontend will display the progress and inform you when the
- flash is complete.
-
- If something went wrong i.e. your device wasn't detected because it
- wasn't in download mode, then the status section will let you know the
- cause of the problem.
-
-
-
-Flashing Firmware from Command Line:
-
- 1. Fully charge your phone (use the wall charger as it's faster).
-
- 2. Download a decrypted Samsung Galaxy S ROM or a Heimdall Firmware Package
- and extract everything to the one directory.
-
- 3. If the ROM is not a Heimdall Firmware Package it may instead be provided
- as multiple archives (nested or otherwise), extract them all to the same
- location.
-
- NOTE: If you want to use the CSC then extract it last.
-
- 4. Put your Galaxy S device into download mode and plug it in..
-
- 5. Open a terminal and navigate to the directory where you extracted
- the ROM/firmware files.
-
- 6. Type the following to list all the functionality Heimdall supports:
-
- heimdall help
-
- 7. Use the instructions to manually enter a command with all the files you
- want to flash.
-
- Here is an example that does a full flash and repartition on a GT-I9000:
-
- heimdall flash --repartition --pit s1_odin_20100512.pit --factoryfs factoryfs.rfs --cache cache.rfs --dbdata dbdata.rfs --primary-boot boot.bin --secondary-boot Sbl.bin --param param.lfs --kernel zImage --modem modem.bin
-
-
- 8. Heimdall will display the progress as it flashes so that you know things
- are working as they should.
-
-
-
-How to Create a Heimdall Firmware Package:
-
- Firstly, Heimdall's firmware package format is just a regular TAR archive
- compressed with gzip. The only two real requirements are that a valid
- firmware.xml must be included (refer to Appendix A) and you can only
- include files (no directories, links etc.) As such if you'd like there is
- nothing preventing you from creating Heimdall packages manually. Of course
- Heimdall Frontend provides a simple user interface that takes care of all
- the hard work for you.
-
- There are two ways in which you can create a firmware package. You can
- create a package from scratch, or you can load an existing package, apply
- modifications and then save the package. Creating a package from scratch
- is the preferred approach, by taking this approach you're far less likely
- to run into file name length limitations.
-
- Before you can access Heimdall Frontend's firmware creation functionality
- (available from the "Create Package" tab) you must first specify which
- files will be included in your package, as well as a few flashing options
- i.e. Whether or not users should repartition when flashing. This
- information must be filled out from the "Flash" tab in exactly the same
- fashion you would provide information to flash your device (see "Performing
- a Custom Flash with Heimdall Frontend"). As mentioned above, it's not the
- preferred means, but you're able to load an existing package as a starting
- point for this information.
-
- Once you've specified the files/partitions you wish to include in your
- firmware package the "Create Package" tab will become available. Clicking
- this tab will display additional information that you can include in your
- package. In order to continue you must fill out all sections except for the
- URLs section, which is optional. The following is a break-down of what all
- these options mean.
-
- - General Firmware Information: -
-
- Firmware Name - This is the name of your particular firmware. An
- example would be "Cyanogenmod".
-
- Firmware Version - This is the version identifier for your package. Any
- valid string will be accepted, although the inclusion of decimal
- point version number is preferred i.e. "7.1". If it makes sense
- then feel free to append a text string like "RC1" or "Beta 1" to
- the decimal point version.
-
- Platform Name - This is the name of platform (or operating system) that
- your firmware is based on. In most cases this will simply be
- "Android".
-
- Platform Version - This is the operating system version that your
- firmware is based on. Again decimal point version numbers are
- preferred over text, i.e. "2.3.4" is preferred over "Gingerbread".
-
-
- - Developers -
-
- URLs (Optional):
-
- Homepage - Here you can enter your personal URL or a URL particularly
- pertaining to the firmware being packaged. The URL must be well
- formed for it to work. An example of a well formed URL is
- "http://www.glassechidna.com.au/products/heimdall/". It is
- important to include "http://" in order to specify the protocol as
- other protocols such as "ftp://" are equally valid although
- unlikely to be used.
-
- Donate - Here you can enter a URL that will link users to a page to
- make donations for the effort you've put into developing your
- firmware. Once again the URL must be well formed but there is no
- requirement on how your donation page should work. For instance
- both "http://www.glassechidna.com.au/donate/" and
- "http://forum.xda-developers.com/donatetome.php?u=2710388" are
- equally valid.
-
- Developer Info:
-
- Name - Here you can enter in the name of individual team members or a
- team name. Click "Add" and the developer will be added to the list
- on the right. If you make a mistake you can select a developer from
- the list and click "Remove". You can list as many developers as you
- like, however visual constraints of the "Load Package" tab means
- only a few names will be visible. Where possible you may want to
- opt for team names over listing individual team members.
-
-
- - Supported Devices -
-
- This section allows you to create a list of devices that are supported by
- your particular firmware. Although Heimdall isn't capable of enforcing this
- we strongly recommend you take this section seriously. If filled out
- correctly you could help save a number of accidental bricks!
-
- Device Info:
-
- Manufacturer - This is where you can enter the name of the manufacturer
- for a particular device. For now this will most likely be
- "Samsung".
-
- Name - This is the human readable name for a particular device.
- "Galaxy S", "Galaxy S II", "Droid Charge", "Vibrant" and
- "Galaxy S (Telstra)" are all valid names. There are a lot of
- possible variations here so be as specific as you think is
- necessary.
-
- Product Code - This is by far the most important bit of device
- information. Device names tend to be region specific and further
- subject to the whims of telecommunication companies and resellers.
- Product Codes (or product IDs) are designated by manufacturers and
- are generally the definitive means of referring to a particular
- device. Examples are "GT-I9000", "GT-I9100" and "SCH-I897". If
- you're unsure of a particular product code then both Google and
- GSMArena are your friends!
-
-
- After filling out all the necessary information the "Build" button will be
- enabled. If it's still disabled then you know you're missing some required
- information. In particular you must specify at least one developer and at
- least one supported device. Pressing the "Build" button will bring up a
- save dialogue where you must chose a file name for your particular package.
- Don't worry about specifying the ".tar.gz" extension Heimdall Frontend will
- take care of this automatically.
-
- Once you've chosen a file name Heimdall Frontend will begin the process of
- building the firmware package. In doing so a valid firmware.xml file will
- be generated from the information entered. All files will be archived in a
- single TAR file then the TAR archive will be compressed via gzip
- compression. Compression will take a little while but you will see progress
- bars so you know the application hasn't hung. When the progress bars
- disappear you're finished making your package.
-
- Congratulations! You're now ready to redistribute your firmware package
- online or by any means you see fit.
-
-
-
-Appendix A - firmware.xml
-
-The following details a part of the Heimdall Firmware Package format. This
-is only relevant to developers or advanced users who wish to create Heimdall
-Firmware Packages outside of Heimdall Frontend or in some way integrate support
-for the format in their own software.
-
-
-All Heimdall Firmware Packages must contain a file called firmware.xml. This
-file stores flash information and meta-data for the package as well as
-information about other files contained within the package.
-
-
-The format is fairly straight-forward so it won't be explained in great detail.
-Nonetheless the following is an example of a valid firmware.xml file.
-
-<?xml version="1.0" encoding="UTF-8"?>
-<firmware version="1">
- <name>Test Firmware</name>
- <version>1.1</version>
- <platform>
- <name>Android</name>
- <version>2.3.4</version>
- </platform>
- <developers>
- <name>Benjamin Dobell</name>
- <name>Hedonism Bot</name>
- </developers>
- <url>http://www.glassechidna.com.au/</url>
- <donateurl>http://www.glassechidna.com.au/donate/</donateurl>
- <devices>
- <device>
- <manufacturer>Samsung</manufacturer>
- <product>GT-I9000</product>
- <name>Galaxy S</name>
- </device>
- <device>
- <manufacturer>Samsung</manufacturer>
- <product>GT-I9000T</product>
- <name>Galaxy S (Telstra)</name>
- </device>
- <device>
- <manufacturer>Samsung</manufacturer>
- <product>GT-I9000M</product>
- <name>Vibrant</name>
- </device>
- </devices>
- <pit>Nl3276-I9000 s1_odin_20100512.pit</pit>
- <repartition>0</repartition>
- <noreboot>0</noreboot>
- <files>
- <file>
- <id>0</id>
- <filename>gq3276-boot.bin</filename>
- </file>
- <file>
- <id>24</id>
- <filename>Uh3276-cache.rfs</filename>
- </file>
- <file>
- <id>22</id>
- <filename>em3276-factoryfs.rfs</filename>
- </file>
- <file>
- <id>11</id>
- <filename>fl3276-modem.bin</filename>
- </file>
- <file>
- <id>21</id>
- <filename>Xd3276-param.lfs</filename>
- </file>
- <file>
- <id>3</id>
- <filename>if3276-Sbl.bin</filename>
- </file>
- <file>
- <id>6</id>
- <filename>cr3276-zImage</filename>
- </file>
- </files>
-</firmware>
-
-
-New lines need not be included and the order in which elements are specified
-does not need to match that of the above example.
-
-One and only one <firmware> element must be included. The <firmware> element
-must also have a version attribute specified. The version must be parsable as
-an integer and indicates what version of the Heimdall Firmware Package
-specification the package adheres to.
-
-All data is stored as strings, however a <file>'s <id> element must be parsable
-as an integer. The <id> value represents the partition ID (according to the
-specified PIT file) that the file should be flashed to.
-
-A <firmware>'s <repartition> and <noreboot> elements must also be parsable as
-an integer. However, as they represent boolean values, a value of zero ("0")
-means false (or disabled) where as a non-zero value (typically "1") means true
-(or enabled).
-
-File names are specified relative to the TAR archive in which firmware.xml and
-all other files are to be stored. Heimdall Firmware Packages do not support
-directories or links, as such file names should only be a name and not a path.
-
-<url> and <donateurl> are the only optional elements, all other elements must
-be included.
-
-
-
-Appendix B - Installing Heimdall from Source:
-
- 1. First make sure you have installed build-tools, pkgconfig, zlib-dev and
- libusb-1.0-dev (v1.0.8 or newer).
-
- NOTE: Package names may not be absolutely identical to those above.
-
- 2. Open a terminal and navigate to the directory you downloaded,
- or extracted, Heimdall to.
-
- 3. Enter the following commands to compile libpit:
-
- cd libpit
- ./configure
- make
- cd ..
-
- If you have problems please consult http://www.libusb.org/
-
- 4. Enter the following commands to compile libpit.
-
- cd libusb-1.0
- ./configure
- make
- cd ..
-
- NOTE: There is no need to run "sudo make install".
-
- 4. Enter the following commands to compile and install Heimdall:
-
- cd heimdall
- ./configure
- make
- sudo make install
- cd ..
-
- NOTE: As an alternative to "sudo make install" you may chose to generate
- a package by typing the following:
-
- sudo checkinstall --pkgversion <version>
-
- Where <version> is the current Heimdall release e.g. 1.3.0
-
- 5. Done
-
-
-
-Appendix C - Installing Heimdall Frontend from Source:
-
- 1. Compile and install Heimdall, see Appendix B.
-
- 2. First make sure you have installed Qt 4.7 or later, available from:
-
- http://qt.nokia.com/downloads/
-
- 3. Open a terminal and navigate to the directory you extracted Heimdall to.
-
- 4. Enter the following commands to compile and install Heimdall Frontend:
-
- cd heimdall-frontend
- qmake-qt4 heimdall-frontend.pro
- make
- sudo make install
-
- NOTE: As an alternative to "sudo make install" you may chose to generate
- a package by typing the following:
-
- sudo checkinstall --pkgversion <version>
-
- Where <version> is the current Heimdall release e.g. 1.3.0
-
- 5. Done
-
diff --git a/heimdall-frontend/heimdall-frontend.pro b/heimdall-frontend/heimdall-frontend.pro index 1c3e5bc..6cb5774 100644 --- a/heimdall-frontend/heimdall-frontend.pro +++ b/heimdall-frontend/heimdall-frontend.pro @@ -5,19 +5,29 @@ TEMPLATE = app TARGET = heimdall-frontend +isEmpty(OUTPUTDIR) { + OUTPUTDIR = $$(OUTPUTDIR) +} + macx { message("") - QT_FRAMEWORKS_DIR = $$(QT_FRAMEWORKS_DIR) + isEmpty(QT_FRAMEWORKS_DIR) { + QT_FRAMEWORKS_DIR = $$(QT_FRAMEWORKS_DIR) + } + isEmpty(QT_FRAMEWORKS_DIR) { message("QT_FRAMEWORKS_DIR not specified, using default:") - QT_FRAMEWORKS_DIR = /System/Library/Frameworks + QT_FRAMEWORKS_DIR = /Library/Frameworks } message("QT_FRAMEWORKS_DIR = $$QT_FRAMEWORKS_DIR") message("") - QMAKE_MACOSX_DEPLOYMENT_TARGET = $$(QMAKE_MACOSX_DEPLOYMENT_TARGET) + isEmpty(QMAKE_MACOSX_DEPLOYMENT_TARGET) { + QMAKE_MACOSX_DEPLOYMENT_TARGET = $$(QMAKE_MACOSX_DEPLOYMENT_TARGET) + } + isEmpty(QMAKE_MACOSX_DEPLOYMENT_TARGET) { message("QMAKE_MACOSX_DEPLOYMENT_TARGET not specified, using default:") QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.4 @@ -26,30 +36,35 @@ macx { message("QMAKE_MACOSX_DEPLOYMENT_TARGET = $$QMAKE_MACOSX_DEPLOYMENT_TARGET") message("") - QMAKE_MAC_SDK = $$(QMAKE_MAC_SDK) + isEmpty(QMAKE_MAC_SDK) { + QMAKE_MAC_SDK = $$(QMAKE_MAC_SDK) + } + isEmpty(QMAKE_MAC_SDK) { message("QMAKE_MAC_SDK not specified, using default:") - QMAKE_MAC_SDK = /Developer/SDKs/MacOSX10.4.sdk + QMAKE_MAC_SDK = /Developer/SDKs/MacOSX10.7.sdk } message("QMAKE_MAC_SDK = $$QMAKE_MAC_SDK") message("") - QMAKE_MACOSX_DEPLOYMENT_TARGET = $$MACOSX_DEPLOYMENT_TARGET - QMAKE_MAC_SDK = $$MAC_SDK - - PRIVATE_FRAMEWORKS.files = $$(QTFRAMEWORKSDIR)/QtCore.framework \ - $$(QTFRAMEWORKSDIR)//QtGui.framework $$(QTFRAMEWORKSDIR)/QtXml.framework + PRIVATE_FRAMEWORKS.files = $$QT_FRAMEWORKS_DIR/QtCore.framework \ + $$QT_FRAMEWORKS_DIR//QtGui.framework $$QT_FRAMEWORKS_DIR/QtXml.framework PRIVATE_FRAMEWORKS.path = Contents/Frameworks QMAKE_BUNDLE_DATA += PRIVATE_FRAMEWORKS + LIBS += -L/usr/lib config += x86 x86_64 ppc + + QMAKE_CFLAGS_X86_64 = -m64 -mmacosx-version-min=10.5 + QMAKE_CXXFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64 + QMAKE_LFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64 isEmpty(OUTPUTDIR) { DESTDIR = /Applications } else { - DESTDIR = $$(OUTPUTDIR) + DESTDIR = $$OUTPUTDIR } } else { @@ -57,7 +72,7 @@ macx { DESTDIR = ../Win32 !isEmpty(OUTPUTDIR) { - target.path = $$(OUTPUTDIR) + target.path = $$OUTPUTDIR INSTALLS += target } } else { @@ -66,7 +81,7 @@ macx { isEmpty(OUTPUTDIR) { target.path = /usr/local/bin } else { - target.path = $$(OUTPUTDIR) + target.path = $$OUTPUTDIR } INSTALLS += target @@ -85,6 +100,7 @@ INCLUDEPATH += ./GeneratedFiles \ ./GeneratedFiles/Release \ ../libpit/Source \ . +unix:INCLUDEPATH += /usr/include DEPENDPATH += . MOC_DIR += ./GeneratedFiles/release OBJECTS_DIR += release diff --git a/heimdall-frontend/mainwindow.ui b/heimdall-frontend/mainwindow.ui index 6a165fb..ce42a89 100644 --- a/heimdall-frontend/mainwindow.ui +++ b/heimdall-frontend/mainwindow.ui @@ -401,7 +401,7 @@ <rect>
<x>10</x>
<y>300</y>
- <width>751</width>
+ <width>511</width>
<height>171</height>
</rect>
</property>
@@ -414,9 +414,9 @@ </property>
<property name="geometry">
<rect>
- <x>350</x>
+ <x>280</x>
<y>130</y>
- <width>271</width>
+ <width>221</width>
<height>31</height>
</rect>
</property>
@@ -432,8 +432,8 @@ <rect>
<x>10</x>
<y>30</y>
- <width>731</width>
- <height>91</height>
+ <width>491</width>
+ <height>81</height>
</rect>
</property>
<property name="undoRedoEnabled">
@@ -451,7 +451,7 @@ <rect>
<x>10</x>
<y>130</y>
- <width>331</width>
+ <width>261</width>
<height>21</height>
</rect>
</property>
@@ -468,59 +468,6 @@ <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
</property>
</widget>
- <widget class="QPushButton" name="startFlashButton">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="geometry">
- <rect>
- <x>620</x>
- <y>130</y>
- <width>91</width>
- <height>31</height>
- </rect>
- </property>
- <property name="text">
- <string>Start</string>
- </property>
- </widget>
- <widget class="QLabel" name="startFlashTipLabel">
- <property name="geometry">
- <rect>
- <x>720</x>
- <y>130</y>
- <width>21</width>
- <height>23</height>
- </rect>
- </property>
- <property name="font">
- <font>
- <weight>75</weight>
- <bold>true</bold>
- </font>
- </property>
- <property name="toolTip">
- <string notr="true">The "Start" button will remain inactive until at least one partition/file is added.</string>
- </property>
- <property name="frameShape">
- <enum>QFrame::Panel</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Raised</enum>
- </property>
- <property name="lineWidth">
- <number>2</number>
- </property>
- <property name="midLineWidth">
- <number>0</number>
- </property>
- <property name="text">
- <string>?</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
</widget>
<widget class="QGroupBox" name="optionsGroup">
<property name="geometry">
@@ -540,7 +487,7 @@ <x>10</x>
<y>20</y>
<width>391</width>
- <height>61</height>
+ <height>91</height>
</rect>
</property>
<property name="title">
@@ -624,6 +571,25 @@ <set>Qt::AlignCenter</set>
</property>
</widget>
+ <widget class="QCheckBox" name="repartitionCheckBox">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>60</y>
+ <width>131</width>
+ <height>21</height>
+ </rect>
+ </property>
+ <property name="toolTip">
+ <string notr="true">Repartitioning will wipe all data for your phone and install the selected PIT file.</string>
+ </property>
+ <property name="text">
+ <string>Repartition</string>
+ </property>
+ </widget>
</widget>
<widget class="QGroupBox" name="partitionGroup">
<property name="geometry">
@@ -738,44 +704,6 @@ </property>
</widget>
</widget>
- <widget class="QCheckBox" name="noRebootCheckBox">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="geometry">
- <rect>
- <x>250</x>
- <y>90</y>
- <width>151</width>
- <height>21</height>
- </rect>
- </property>
- <property name="toolTip">
- <string notr="true">Can be enabled to prevent your device rebooting after the flash finishes.</string>
- </property>
- <property name="text">
- <string>No Reboot</string>
- </property>
- </widget>
- <widget class="QCheckBox" name="repartitionCheckBox">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="geometry">
- <rect>
- <x>20</x>
- <y>90</y>
- <width>151</width>
- <height>21</height>
- </rect>
- </property>
- <property name="toolTip">
- <string notr="true">Repartitioning will wipe all data for your phone and install the selected PIT file.</string>
- </property>
- <property name="text">
- <string>Repartition</string>
- </property>
- </widget>
<widget class="QGroupBox" name="partitionsGroup">
<property name="geometry">
<rect>
@@ -872,6 +800,110 @@ </widget>
</widget>
</widget>
+ <widget class="QGroupBox" name="sessionGroup">
+ <property name="geometry">
+ <rect>
+ <x>530</x>
+ <y>300</y>
+ <width>231</width>
+ <height>171</height>
+ </rect>
+ </property>
+ <property name="title">
+ <string>Session</string>
+ </property>
+ <widget class="QCheckBox" name="noRebootCheckBox">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>30</y>
+ <width>211</width>
+ <height>21</height>
+ </rect>
+ </property>
+ <property name="toolTip">
+ <string notr="true">Can be enabled to prevent your device rebooting after the flash finishes.</string>
+ </property>
+ <property name="text">
+ <string>No Reboot</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox" name="resumeCheckbox">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>60</y>
+ <width>211</width>
+ <height>21</height>
+ </rect>
+ </property>
+ <property name="toolTip">
+ <string notr="true">Can be enabled to prevent your device rebooting after the flash finishes.</string>
+ </property>
+ <property name="text">
+ <string>Resume (use after "No Reboot")</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="startFlashButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>50</x>
+ <y>120</y>
+ <width>111</width>
+ <height>31</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Start</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="startFlashTipLabel">
+ <property name="geometry">
+ <rect>
+ <x>170</x>
+ <y>120</y>
+ <width>21</width>
+ <height>23</height>
+ </rect>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="toolTip">
+ <string notr="true">The "Start" button will remain inactive until at least one partition/file is added.</string>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::Panel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <property name="lineWidth">
+ <number>2</number>
+ </property>
+ <property name="midLineWidth">
+ <number>0</number>
+ </property>
+ <property name="text">
+ <string>?</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </widget>
</widget>
<widget class="QWidget" name="createPackageTab">
<property name="enabled">
@@ -1826,6 +1858,8 @@ <property name="title">
<string>Advanced</string>
</property>
+ <addaction name="actionResumeConnection"/>
+ <addaction name="separator"/>
<addaction name="actionVerboseOutput"/>
</widget>
<addaction name="menuDonate"/>
@@ -1860,6 +1894,14 @@ <string>Verbose Output</string>
</property>
</action>
+ <action name="actionResumeConnection">
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>Resume Connection</string>
+ </property>
+ </action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<tabstops>
@@ -1883,7 +1925,6 @@ <tabstop>partitionFileLineEdit</tabstop>
<tabstop>partitionFileBrowseButton</tabstop>
<tabstop>outputPlainTextEdit</tabstop>
- <tabstop>startFlashButton</tabstop>
<tabstop>createFirmwareNameLineEdit</tabstop>
<tabstop>createFirmwareVersionLineEdit</tabstop>
<tabstop>createPlatformNameLineEdit</tabstop>
|