summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/createpackage.pl90
-rw-r--r--doc/src/platforms/symbian-introduction.qdoc2
-rw-r--r--qmake/generators/symbian/symmake.cpp34
-rw-r--r--src/gui/kernel/qsoftkeymanager_s60.cpp16
-rw-r--r--src/gui/kernel/qsoftkeymanager_s60_p.h1
-rw-r--r--src/gui/kernel/qwidget.cpp2
-rw-r--r--src/s60installs/qt.iby3
7 files changed, 94 insertions, 54 deletions
diff --git a/bin/createpackage.pl b/bin/createpackage.pl
index 6d4614e..7f803fd 100755
--- a/bin/createpackage.pl
+++ b/bin/createpackage.pl
@@ -54,6 +54,8 @@ use Getopt::Long;
use File::Basename;
# Use File::Spec services mainly rel2abs
use File::Spec;
+# Use File::Path - to make stub sis target directory
+use File::Path;
# use CWD abs_bath, which is exported only on request
use Cwd 'abs_path';
@@ -111,11 +113,13 @@ my $install = "";
my $preprocessonly = "";
my $certfile = "";
my $preserveUnsigned = "";
+my $stub = "";
unless (GetOptions('i|install' => \$install,
'p|preprocess' => \$preprocessonly,
'c|certfile=s' => \$certfile,
- 'u|unsigned' => \$preserveUnsigned,)){
+ 'u|unsigned' => \$preserveUnsigned,
+ 's|stub' => \$stub,)){
Usage();
}
@@ -153,6 +157,7 @@ my $sisoutputbasename = lc($pkgoutputbasename);
$sisoutputbasename =~ s/_$targetplatform//g;
my $unsigned_sis_name = $sisoutputbasename."_unsigned.sis";
my $signed_sis_name = $sisoutputbasename.".sis";
+my $stub_sis_name = $sisoutputbasename."_stub.sis";
# Store some utility variables
my $scriptpath = dirname(__FILE__);
@@ -256,48 +261,57 @@ if ($preprocessonly) {
exit;
}
-# Create SIS.
-system ("makesis $pkgoutput $unsigned_sis_name");
-
-# Sign SIS with certificate info given as an argument.
-system ("signsis $unsigned_sis_name $signed_sis_name $certificate $key $passphrase");
-
-# Check if creating signed SIS Succeeded
-stat($signed_sis_name);
-if( -e _ ) {
- my $targetInsert = "";
- if ($targetplatform ne "-") {
- $targetInsert = "for $targetplatform ";
- }
- print ("\nSuccessfully created $signed_sis_name ${targetInsert}using certificate: $certtext!\n");
+if($stub) {
+ if(!($ENV{EPOCROOT})) { die("EPOCROOT must be set to create stub sis files"); }
+ my $systeminstall = "$ENV{EPOCROOT}epoc32/data/z/system/install";
+ mkpath($systeminstall);
+ my $stub_sis_name = $systeminstall."/".$stub_sis_name;
+ # Create stub SIS.
+ system ("makesis -s $pkgoutput $stub_sis_name");
+} else {
+ # Create SIS.
+ system ("makesis $pkgoutput $unsigned_sis_name");
+ print("\n");
+
+ # Sign SIS with certificate info given as an argument.
+ system ("signsis $unsigned_sis_name $signed_sis_name $certificate $key $passphrase");
+
+ # Check if creating signed SIS Succeeded
+ stat($signed_sis_name);
+ if( -e _ ) {
+ my $targetInsert = "";
+ if ($targetplatform ne "-") {
+ $targetInsert = "for $targetplatform ";
+ }
+ print ("Successfully created $signed_sis_name ${targetInsert}using certificate: $certtext!\n");
- # Sign with additional certificates & keys
- for my $row ( @certificates ) {
- # Get certificate absolute file names, relative paths are relative to certfilepath
- my $abscert = File::Spec->rel2abs( $row->[0], $certfilepath);
- my $abskey = File::Spec->rel2abs( $row->[1], $certfilepath);
+ # Sign with additional certificates & keys
+ for my $row ( @certificates ) {
+ # Get certificate absolute file names, relative paths are relative to certfilepath
+ my $abscert = File::Spec->rel2abs( $row->[0], $certfilepath);
+ my $abskey = File::Spec->rel2abs( $row->[1], $certfilepath);
- system ("signsis $signed_sis_name $signed_sis_name $abscert $abskey $row->[2]");
- print ("\tAdditionally signed the SIS with certificate: $row->[0]!\n");
- }
+ system ("signsis $signed_sis_name $signed_sis_name $abscert $abskey $row->[2]");
+ print ("\tAdditionally signed the SIS with certificate: $row->[0]!\n");
+ }
- # remove temporary pkg and unsigned sis
- if (!$preservePkgOutput) {
- unlink $pkgoutput;
- }
- if (!$preserveUnsigned) {
- unlink $unsigned_sis_name;
- }
+ # remove temporary pkg and unsigned sis
+ if (!$preservePkgOutput) {
+ unlink $pkgoutput;
+ }
+ if (!$preserveUnsigned) {
+ unlink $unsigned_sis_name;
+ }
- # Install the sis if requested
- if ($install) {
- print ("\nInstalling $signed_sis_name...\n");
- system ("$signed_sis_name");
+ # Install the sis if requested
+ if ($install) {
+ print ("\nInstalling $signed_sis_name...\n");
+ system ("$signed_sis_name");
+ }
+ } else {
+ # Lets leave the generated PKG for problem solving purposes
+ print ("\nSIS creation failed!\n");
}
-} else {
- # Lets leave the generated PKG for problem solving purposes
- print ("\nSIS creation failed!\n");
}
-
#end of file
diff --git a/doc/src/platforms/symbian-introduction.qdoc b/doc/src/platforms/symbian-introduction.qdoc
index 5cebee3..591d6f1 100644
--- a/doc/src/platforms/symbian-introduction.qdoc
+++ b/doc/src/platforms/symbian-introduction.qdoc
@@ -132,6 +132,8 @@
Smart installer will attempt to download
missing dependencies in addition to
just installing the application.
+ \row \o \c stub_sis \o Create a stub sis to allow upgradability of projects
+ that are deployed in ROM
\endtable
The following lines perform a debug build for the emulator
diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp
index 3ee3b3a..61988d3 100644
--- a/qmake/generators/symbian/symmake.cpp
+++ b/qmake/generators/symbian/symmake.cpp
@@ -88,8 +88,10 @@
#define SIS_TARGET "sis"
#define INSTALLER_SIS_TARGET "installer_sis"
+#define ROM_STUB_SIS_TARGET "stub_sis"
#define OK_SIS_TARGET "ok_sis"
#define OK_INSTALLER_SIS_TARGET "ok_installer_sis"
+#define OK_ROM_STUB_SIS_TARGET "ok_stub_sis"
#define FAIL_SIS_NOPKG_TARGET "fail_sis_nopkg"
#define FAIL_SIS_NOCACHE_TARGET "fail_sis_nocache"
@@ -1883,7 +1885,7 @@ void SymbianMakefileGenerator::writeSisTargets(QTextStream &t)
t << endl;
t << SIS_TARGET ":" << endl;
- QString siscommand = QString("\t$(if $(wildcard %1_template.%2),$(if $(wildcard %3)," \
+ QString siscommand = QString::fromLatin1("\t$(if $(wildcard %1_template.%2),$(if $(wildcard %3)," \
"$(MAKE) -s -f $(MAKEFILE) %4," \
"$(if $(QT_SIS_TARGET),$(MAKE) -s -f $(MAKEFILE) %4," \
"$(MAKE) -s -f $(MAKEFILE) %5))," \
@@ -1899,7 +1901,7 @@ void SymbianMakefileGenerator::writeSisTargets(QTextStream &t)
t << OK_SIS_TARGET ":" << endl;
- QString pkgcommand = QString("\tcreatepackage.bat $(QT_SIS_OPTIONS) %1_template.%2 $(QT_SIS_TARGET) " \
+ QString pkgcommand = QString::fromLatin1("\tcreatepackage.bat $(QT_SIS_OPTIONS) %1_template.%2 $(QT_SIS_TARGET) " \
"$(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE)")
.arg(fixedTarget)
.arg("pkg");
@@ -1912,8 +1914,32 @@ void SymbianMakefileGenerator::writeSisTargets(QTextStream &t)
t << sisName << ":" << endl;
t << "\t$(MAKE) -s -f $(MAKEFILE) " SIS_TARGET << endl << endl;
+ t << ROM_STUB_SIS_TARGET ":" << endl;
+ QString stubsiscommand = QString::fromLatin1("\t$(if $(wildcard %1_template.%2),$(if $(wildcard %3)," \
+ "$(MAKE) -s -f $(MAKEFILE) %4," \
+ "$(if $(QT_SIS_TARGET),$(MAKE) -s -f $(MAKEFILE) %4," \
+ "$(MAKE) -s -f $(MAKEFILE) %5))," \
+ "$(MAKE) -s -f $(MAKEFILE) %6)")
+ .arg(fixedTarget)
+ .arg("pkg")
+ .arg(MAKE_CACHE_NAME)
+ .arg(OK_ROM_STUB_SIS_TARGET)
+ .arg(FAIL_SIS_NOCACHE_TARGET)
+ .arg(FAIL_SIS_NOPKG_TARGET);
+ t << stubsiscommand << endl;
+ t << endl;
+
+ t << OK_ROM_STUB_SIS_TARGET ":" << endl;
+
+ QString stubpkgcommand = QString::fromLatin1("\tcreatepackage.bat -s $(QT_SIS_OPTIONS) %1_template.%2 $(QT_SIS_TARGET) " \
+ "$(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE)")
+ .arg(fixedTarget)
+ .arg("pkg");
+ t << stubpkgcommand << endl;
+ t << endl;
+
t << INSTALLER_SIS_TARGET ": " << sisName << endl;
- siscommand = QString("\t$(if $(wildcard %1_installer.%2)," \
+ siscommand = QString::fromLatin1("\t$(if $(wildcard %1_installer.%2)," \
"$(MAKE) -s -f $(MAKEFILE) %3," \
"$(MAKE) -s -f $(MAKEFILE) %4)")
.arg(fixedTarget)
@@ -1925,7 +1951,7 @@ void SymbianMakefileGenerator::writeSisTargets(QTextStream &t)
t << OK_INSTALLER_SIS_TARGET ": " << endl;
- pkgcommand = QString("\tcreatepackage.bat $(QT_SIS_OPTIONS) %1_installer.%2 - " \
+ pkgcommand = QString::fromLatin1("\tcreatepackage.bat $(QT_SIS_OPTIONS) %1_installer.%2 - " \
"$(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE)")
.arg(fixedTarget)
.arg("pkg");
diff --git a/src/gui/kernel/qsoftkeymanager_s60.cpp b/src/gui/kernel/qsoftkeymanager_s60.cpp
index af84a8f..8ac1e31 100644
--- a/src/gui/kernel/qsoftkeymanager_s60.cpp
+++ b/src/gui/kernel/qsoftkeymanager_s60.cpp
@@ -66,17 +66,18 @@ QSoftKeyManagerPrivateS60::QSoftKeyManagerPrivateS60()
cachedCbaIconSize[1] = QSize(0,0);
cachedCbaIconSize[2] = QSize(0,0);
cachedCbaIconSize[3] = QSize(0,0);
- skipNextUpdate = false;
}
bool QSoftKeyManagerPrivateS60::skipCbaUpdate()
{
- // lets not update softkeys if
+ // Lets not update softkeys if
// 1. We don't have application panes, i.e. cba
- // 2. S60 native dialog or menu is shown
- if (QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes) ||
- CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog() || skipNextUpdate) {
- skipNextUpdate = false;
+ // 2. Our CBA is not active, i.e. S60 native dialog or menu with custom CBA is shown
+ // Note: Cannot use IsDisplayingMenuOrDialog since CBA update can be triggered before
+ // menu/dialog CBA is actually displayed i.e. it is being costructed.
+ CEikButtonGroupContainer *appUiCba = S60->buttonGroupContainer();
+ CEikButtonGroupContainer *currentCba = CEikButtonGroupContainer::Current();
+ if (QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes) || appUiCba != currentCba) {
return true;
}
return false;
@@ -384,9 +385,6 @@ bool QSoftKeyManagerPrivateS60::handleCommand(int command)
}
qt_symbian_next_menu_from_action(actionContainer);
QT_TRAP_THROWING(S60->menuBar()->TryDisplayMenuBarL());
- // TODO: hack remove, it can happen that IsDisplayingMenuOrDialog return false
- // in updateSoftKeys_sys, and we will override menu CBA with our own
- skipNextUpdate = true;
} else {
Q_ASSERT(action->softKeyRole() != QAction::NoSoftKey);
QWidget *actionParent = action->parentWidget();
diff --git a/src/gui/kernel/qsoftkeymanager_s60_p.h b/src/gui/kernel/qsoftkeymanager_s60_p.h
index f8bd6d9..823a2db 100644
--- a/src/gui/kernel/qsoftkeymanager_s60_p.h
+++ b/src/gui/kernel/qsoftkeymanager_s60_p.h
@@ -98,7 +98,6 @@ private:
private:
QHash<int, QAction*> realSoftKeyActions;
QSize cachedCbaIconSize[4];
- bool skipNextUpdate;
};
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index 2a19d23..850e961 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -8271,7 +8271,7 @@ bool QWidget::event(QEvent *event)
}
#ifdef QT_SOFTKEYS_ENABLED
- if (isWindow() && isActiveWindow())
+ if (isWindow())
QSoftKeyManager::updateSoftKeys();
#endif
diff --git a/src/s60installs/qt.iby b/src/s60installs/qt.iby
index bdd668c..a6a96ec 100644
--- a/src/s60installs/qt.iby
+++ b/src/s60installs/qt.iby
@@ -113,6 +113,7 @@ data=\epoc32\data\z\resource\qt\plugins\phonon_backend\phonon_mmf.qtplugin resou
data=\epoc32\data\z\resource\qt\plugins\graphicssystems\qvggraphicssystem.qtplugin resource\qt\plugins\graphicssystems\qvggraphicssystem.qtplugin
// Stub sis file
-data=ZSYSTEM\install\qt.sis System\Install\qt.sis
+data=ZSYSTEM\install\qt_stub.sis System\Install\qt_stub.sis
+data=ZSYSTEM\install\qtwebkit_stub.sis System\Install\qtwebkit_stub.sis
#endif // __QT_IBY__