--- a/config.tests/maemo/dui/dui.pro Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-#
-#############################################################################
-##
-## Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (developer.feedback@nokia.com)
-##
-## This file is part of the UI Extensions for Mobile.
-##
-## GNU Lesser General Public License Usage
-## This file may be used under the terms of the GNU Lesser General Public
-## License version 2.1 as published by the Free Software Foundation and
-## appearing in the file LICENSE.LGPL included in the packaging of this file.
-## Please review the following information to ensure the GNU Lesser General
-## Public License version 2.1 requirements will be met:
-## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-##
-## In addition, as a special exception, Nokia gives you certain additional
-## rights. These rights are described in the Nokia Qt LGPL Exception
-## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-##
-## If you have questions regarding the use of this file, please contact
-## Nokia at developer.feedback@nokia.com.
-##
-#############################################################################
-#
-
-TEMPLATE = app
-TARGET = hbconftest_dui
-DEPENDPATH += .
-INCLUDEPATH += /usr/include/dui /usr/local/include/dui
-LIBS += -ldui
-
-SOURCES += main.cpp
--- a/config.tests/maemo/dui/main.cpp Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (developer.feedback@nokia.com)
-**
-** This file is part of the Config module of the UI Extensions for Mobile.
-**
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this file.
-** Please review the following information to ensure the GNU Lesser General
-** Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at developer.feedback@nokia.com.
-**
-****************************************************************************/
-
-#include <duiapplication.h>
-
-int main()
-{
- DuiApplication *app = DuiApplication::instance();
- app = 0;
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/config.tests/meego/meegotouch/main.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,32 @@
+/****************************************************************************
+**
+** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (developer.feedback@nokia.com)
+**
+** This file is part of the Config module of the UI Extensions for Mobile.
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at developer.feedback@nokia.com.
+**
+****************************************************************************/
+
+#include <mapplication.h>
+
+int main()
+{
+ MApplication *app = MApplication::instance();
+ app = 0;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/config.tests/meego/meegotouch/meegotouch.pro Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,34 @@
+#
+#############################################################################
+##
+## Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (developer.feedback@nokia.com)
+##
+## This file is part of the UI Extensions for Mobile.
+##
+## GNU Lesser General Public License Usage
+## This file may be used under the terms of the GNU Lesser General Public
+## License version 2.1 as published by the Free Software Foundation and
+## appearing in the file LICENSE.LGPL included in the packaging of this file.
+## Please review the following information to ensure the GNU Lesser General
+## Public License version 2.1 requirements will be met:
+## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## In addition, as a special exception, Nokia gives you certain additional
+## rights. These rights are described in the Nokia Qt LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## If you have questions regarding the use of this file, please contact
+## Nokia at developer.feedback@nokia.com.
+##
+#############################################################################
+#
+
+TEMPLATE = app
+TARGET = hbconftest_meegotouch
+DEPENDPATH += .
+INCLUDEPATH += /usr/include/meegotouch /usr/local/include/meegotouch
+LIBS += -lmeegotouchcore -lmeegotouchextensions -lmeegotouchsettings -lmeegotouchviews
+
+SOURCES += main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/config.tests/symbian/tchunkcreateinfo/main.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,31 @@
+/****************************************************************************
+**
+** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (developer.feedback@nokia.com)
+**
+** This file is part of the Config module of the UI Extensions for Mobile.
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at developer.feedback@nokia.com.
+**
+****************************************************************************/
+
+#include <e32std.h>
+
+int main() {
+ TChunkCreateInfo info;
+ info.SetReadOnly();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/config.tests/symbian/tchunkcreateinfo/tchunkcreateinfo.pro Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,36 @@
+#
+#############################################################################
+##
+## Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (developer.feedback@nokia.com)
+##
+## This file is part of the UI Extensions for Mobile.
+##
+## GNU Lesser General Public License Usage
+## This file may be used under the terms of the GNU Lesser General Public
+## License version 2.1 as published by the Free Software Foundation and
+## appearing in the file LICENSE.LGPL included in the packaging of this file.
+## Please review the following information to ensure the GNU Lesser General
+## Public License version 2.1 requirements will be met:
+## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## In addition, as a special exception, Nokia gives you certain additional
+## rights. These rights are described in the Nokia Qt LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## If you have questions regarding the use of this file, please contact
+## Nokia at developer.feedback@nokia.com.
+##
+#############################################################################
+#
+
+TEMPLATE = app
+TARGET = hbconftest_tchunkcreateinfo
+DEPENDPATH += .
+INCLUDEPATH += .
+CONFIG -= qt
+#INCLUDEPATH += $${EPOCROOT}epoc32/include
+
+# Input
+SOURCES += main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/config.tests/symbian/touchfeedback/main.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,30 @@
+/****************************************************************************
+**
+** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (developer.feedback@nokia.com)
+**
+** This file is part of the Config module of the UI Extensions for Mobile.
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at developer.feedback@nokia.com.
+**
+****************************************************************************/
+
+#include <touchfeedback.h>
+
+int main() {
+ return !ETouchFeedbackLongPress;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/config.tests/symbian/touchfeedback/touchfeedback.pro Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,38 @@
+#
+#############################################################################
+##
+## Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (developer.feedback@nokia.com)
+##
+## This file is part of the UI Extensions for Mobile.
+##
+## GNU Lesser General Public License Usage
+## This file may be used under the terms of the GNU Lesser General Public
+## License version 2.1 as published by the Free Software Foundation and
+## appearing in the file LICENSE.LGPL included in the packaging of this file.
+## Please review the following information to ensure the GNU Lesser General
+## Public License version 2.1 requirements will be met:
+## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## In addition, as a special exception, Nokia gives you certain additional
+## rights. These rights are described in the Nokia Qt LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## If you have questions regarding the use of this file, please contact
+## Nokia at developer.feedback@nokia.com.
+##
+#############################################################################
+#
+
+TEMPLATE = app
+TARGET = hbconftest_touchfeedback
+DEPENDPATH += .
+INCLUDEPATH += $${EPOCROOT}epoc32/include/platform/mw \
+ $${EPOCROOT}epoc32/include/platform
+CONFIG -= qt
+CONFIG += no_icon
+QMAKE_LIBS = -llibc -llibm -leuser -llibdl
+
+# Input
+SOURCES += main.cpp
--- a/config.tests/unix/sharedmemory/main.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/config.tests/unix/sharedmemory/main.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -33,9 +33,13 @@
{
QCoreApplication app(argc, argv);
QSharedMemory sharedMemory("hbconftest_sharedmemory");
- if (!sharedMemory.create(CACHE_SIZE, QSharedMemory::ReadWrite)) {
- qWarning() << sharedMemory.errorString();
- return EXIT_FAILURE;
+ if (sharedMemory.create(CACHE_SIZE)) {
+ bool attach = sharedMemory.attach();
+ Q_UNUSED(attach);
+ if (sharedMemory.isAttached()) {
+ return EXIT_SUCCESS;
+ }
}
- return EXIT_SUCCESS;
+ qWarning() << sharedMemory.error() << sharedMemory.errorString();
+ return EXIT_FAILURE;
}
--- a/configure.py Fri Jun 11 13:58:22 2010 +0300
+++ b/configure.py Wed Jun 23 18:33:25 2010 +0300
@@ -45,6 +45,10 @@
HB_MAKE_PARTS = [ "tutorials" ]
HB_NOMAKE_PARTS = [ "tests", "performance", "localization" ]
+QMAKE = None
+MAKE = None
+BUILDENV = None
+
# ============================================================================
# Utils
# ============================================================================
@@ -61,6 +65,24 @@
if not part in HB_NOMAKE_PARTS:
HB_NOMAKE_PARTS.append(part)
+def run_system(args, cwd=None):
+ old_epocroot = None
+ env = os.environ.copy()
+ if "EPOCROOT" in env:
+ epocroot = env.get("EPOCROOT")
+ if not (epocroot.endswith("\\") or epocroot.endswith("/")):
+ os.putenv("EPOCROOT", "%s/" % epocroot)
+ old_epocroot = epocroot
+
+ if type(args) is list:
+ args = " ".join(args)
+ result = os.system(args)
+
+ if old_epocroot != None:
+ os.putenv("EPOCROOT", old_epocroot)
+
+ return result
+
def run_process(args, cwd=None):
code = 0
output = ""
@@ -104,6 +126,19 @@
print(e)
return content
+def write_file(filepath, content):
+ try:
+ path = os.path.split(filepath)[0]
+ if not os.path.exists(path):
+ os.makedirs(path)
+ file = open(filepath, "w")
+ file.write(content)
+ file.close()
+ except Exception, e:
+ print(e)
+ return False
+ return True
+
def grep(path, pattern, include = [], exclude = []):
result = {}
expr = re.compile(pattern)
@@ -130,19 +165,19 @@
# OptionParser
# ============================================================================
class OptionParser(optparse.OptionParser):
- def __init__(self, platform, make, prefix):
+ def __init__(self):
optparse.OptionParser.__init__(self, formatter=optparse.TitledHelpFormatter())
self.add_option("-v", "--verbose", action="store_true", dest="verbose",
help="Print verbose information during the configure.")
self.set_defaults(verbose=False)
- if platform != "symbian":
+ if QMAKE.platform() != "symbian":
group = optparse.OptionGroup(self, "Installation options")
group.add_option("--prefix", dest="prefix", metavar="dir",
help="Install everything relative to <dir>. The default value is '%s'. "
"NOTE: Use '--prefix .' to configure a local setup. A local "
"setup will install nothing else than the qmake "
- "feature file." % prefix)
+ "feature file." % BUILDENV.default_prefix())
group.add_option("--bin-dir", dest="bindir", metavar="dir",
help="Install executables to <dir>. The default value is 'PREFIX/bin'.")
group.add_option("--lib-dir", dest="libdir", metavar="dir",
@@ -153,19 +188,19 @@
help="Install headers to <dir>. The default value is 'PREFIX/include'.")
group.add_option("--plugin-dir", dest="plugindir", metavar="dir",
help="Install plugins to <dir>. The default value is 'PREFIX/plugins'.")
- group.add_option("--resource-dir", dest="resourcedir", metavar="dir",
+ group.add_option("--features-dir", dest="featuresdir", metavar="dir",
+ help="Install qmake feature files to <dir>. The default value is 'QTDIR/mkspecs/features'.")
+ group.add_option("--resources-dir", dest="resourcesdir", metavar="dir",
help="Install resources to <dir>. The default value is 'PREFIX/resources'.")
- group.add_option("--feature-dir", dest="featuredir", metavar="dir",
- help="Install qmake feature files to <dir>. The default value is 'QTDIR/mkspecs/features'.")
self.add_option_group(group)
self.set_defaults(prefix=None)
self.set_defaults(bindir=None)
self.set_defaults(libdir=None)
self.set_defaults(docdir=None)
self.set_defaults(includedir=None)
- self.set_defaults(plugindir=None)
- self.set_defaults(resourcedir=None)
- self.set_defaults(featuredir=None)
+ self.set_defaults(pluginsdir=None)
+ self.set_defaults(featuresdir=None)
+ self.set_defaults(resourcesdir=None)
group = optparse.OptionGroup(self, "Configure options")
group.add_option("--platform", dest="platform", metavar="platform",
@@ -175,7 +210,7 @@
group.add_option("--make-bin", dest="makebin", metavar="path",
help="Specify the make tool (make, nmake, mingw32-make, gmake...). "
"The one detected in PATH is used by default if not specified.")
- if platform == "win32" and make == "nmake":
+ if QMAKE.platform() == "win32" and MAKE.bin() == "nmake":
group.add_option("--msvc", action="store_true", dest="msvc",
help="Generate a MSVC solution.")
group.add_option("--release", action="store_const", dest="config", const="release",
@@ -188,7 +223,7 @@
help="Do not suppress debug and warning output (suppressed by default in release mode).")
group.add_option("--no-debug-output", action="store_true", dest="no_debug_output",
help="Suppress debug and warning output (not supporessed by default in debug mode).")
- if platform != "symbian":
+ if QMAKE.platform() != "symbian":
group.add_option("--silent", action="store_true", dest="silent",
help="Suppress verbose compiler output.")
group.add_option("--fast", action="store_true", dest="fast",
@@ -201,6 +236,12 @@
group.add_option("--defines", dest="defines", metavar="defines",
help="Define compiler macros for selecting features "
"and debugging purposes eg. --defines HB_FOO_DEBUG,HB_BAR_ENABLED")
+ if QMAKE.platform() == "unix":
+ group.add_option("--rpath", action="store_true", dest="rpath",
+ help="Link Hb libraries and executables using the library install "
+ "path as a runtime library path.")
+ group.add_option("--no-rpath", action="store_false", dest="rpath",
+ help="Do not use the library install path as a runtime library path.")
self.add_option_group(group)
self.set_defaults(platform=None)
self.set_defaults(makebin=None)
@@ -209,6 +250,7 @@
self.set_defaults(silent=False)
self.set_defaults(fast=False)
self.set_defaults(defines=None)
+ self.set_defaults(rpath=None)
group = optparse.OptionGroup(self, "Host options")
group.add_option("--host-qmake-bin", dest="hostqmakebin", metavar="path",
@@ -228,8 +270,6 @@
help="Additional qmake options "
"eg. --qmake-options \"CONFIG+=foo DEFINES+=BAR\".")
self.add_option_group(group)
- self.set_defaults(qmakebin=None)
- self.set_defaults(qmakespec=None)
self.set_defaults(qmakeopt=None)
group = optparse.OptionGroup(self, "Feature options")
@@ -243,198 +283,296 @@
help="Do not build gestures.")
group.add_option("--no-text-measurement", action="store_false", dest="textMeasurement",
help="Do not build text measurement support (needed for localization).")
- group.add_option("--no-inputs", action="store_false", dest="inputs",
- help="DEPRECATED: Use --nomake hbinput.")
- group.add_option("--no-feedback", action="store_false", dest="feedback",
- help="DEPRECATED: Use --nomake hbfeedback.")
- group.add_option("--no-tutorials", action="store_false", dest="tutorials",
- help="DEPRECATED: Use --nomake tutorials.")
self.add_option_group(group)
self.set_defaults(make=None)
self.set_defaults(nomake=None)
self.set_defaults(effects=True)
self.set_defaults(gestures=True)
self.set_defaults(textMeasurement=True)
- self.set_defaults(inputs=None)
- self.set_defaults(feedback=None)
- self.set_defaults(tutorials=None)
group = optparse.OptionGroup(self, "Qt options")
group.add_option("--qt-mobility", action="store_true", dest="qtmobility",
help="Assumes that Qt Mobility is available without performing a compilation test.")
group.add_option("--no-qt-mobility", action="store_false", dest="qtmobility",
help="Assumes that Qt Mobility is not available without performing a compilation test.")
- group.add_option("--qt-animation", action="store_true", dest="qtanimation",
- help="DEPRECATED: Qt 4.6 includes the animation framework.")
- group.add_option("--no-qt-animation", action="store_false", dest="qtanimation",
- help="DEPRECATED: Qt 4.6 includes the animation framework.")
- group.add_option("--qt-gestures", action="store_true", dest="qtgestures",
- help="DEPRECATED: Qt 4.6 includes the gestures framework.")
- group.add_option("--no-qt-gestures", action="store_false", dest="qtgestures",
- help="DEPRECATED: Qt 4.6 includes the gestures framework.")
- if platform == "symbian" or platform == None:
- group.add_option("--qt-symbian-eventfilter", action="store_false", dest="s60eventfilter",
- help="DEPRECATED: Qt 4.6 includes QApplication::symbianEventFilter().")
- group.add_option("--qt-s60-eventfilter", action="store_true", dest="s60eventfilter",
- help="DEPRECATED: Qt 4.6 includes QApplication::symbianEventFilter().")
- group.add_option("--dui", action="store_true", dest="dui",
- help="Assumes that Maemo Direct UI is available without performing a compilation test.")
- group.add_option("--no-dui", action="store_false", dest="dui",
- help="Assumes that Maemo Direct UI is not available without performing a compilation test.")
+ group.add_option("--meegotouch", action="store_true", dest="meegotouch",
+ help="Assumes that MeeGoTouch UI is available without performing a compilation test.")
+ group.add_option("--no-meegotouch", action="store_false", dest="meegotouch",
+ help="Assumes that MeeGoTouch UI is not available without performing a compilation test.")
self.add_option_group(group)
self.set_defaults(qtmobility=None)
- self.set_defaults(qtanimation=None)
- self.set_defaults(qtgestures=None)
- self.set_defaults(qts60eventfilter=None)
group = optparse.OptionGroup(self, "Developer options")
group.add_option("--developer", action="store_true", dest="developer",
- help="Enables the developer mode ie. builds tests and exports necessary symbols. "
- "NOTE: The developer mode implies a local setup by default.")
- if platform != "symbian":
+ help="Enables the developer mode. The developer mode implies "
+ "a local setup, enables tests and exports extra symbols for "
+ "testing purposes. NOTE: this is equal to: --prefix . --make tests "
+ "--developer-export")
+ group.add_option("--developer-export", action="store_true", dest="developerexport",
+ help="Enables developer exports ie. extra symbols for testing purposes.")
+ if QMAKE.platform() != "symbian":
group.add_option("--coverage", action="store_true", dest="coverage",
help="Builds with test coverage measurement support. "
"This implies the developer mode.")
- group.add_option("--tests", action="store_true", dest="tests",
- help="DEPRECATED: Use --make tests.")
- group.add_option("--performance", action="store_true", dest="performance",
- help="DEPRECATED: Use --make performance.")
- group.add_option("--localization", action="store_true", dest="localization",
- help="DEPRECATED: Use --make localization.")
self.add_option_group(group)
self.set_defaults(developer=False)
+ self.set_defaults(developerexport=None)
self.set_defaults(coverage=False)
- self.set_defaults(tests=None)
- self.set_defaults(performance=None)
- self.set_defaults(localization=None)
# ============================================================================
-# Platform
+# Make
# ============================================================================
-class Platform:
- def __init__(self, qmake):
+class Make:
+ def __init__(self):
+ self._bin = None
+
+ def init(self, cmdline):
+ match = re.search("--make-bin[=\s](\S+)", cmdline)
+ if match:
+ self._bin = match.group(1)
+ else:
+ self._bin = self._detect_make()
+
+ def command(self, target=None):
+ _args = [self._bin]
+ if target:
+ _args += [target]
+ return _args
+
+ def bin(self):
+ return self._bin
+
+ def _detect_make(self):
+ if QMAKE.platform() == "win32" and self._test_make("nmake", "/?"):
+ return "nmake"
+ if self._test_make("make", "-v"):
+ return "make"
+ if self._test_make("gmake", "-v"):
+ return "gmake"
+ if QMAKE.platform() == "win32" and self._test_make("mingw32-make", "-v"):
+ return "mingw32-make"
+ return "make"
+
+ def _test_make(self, command, param):
+ try:
+ return run_process([command, param])[0] == 0
+ except:
+ return False
+
+# ============================================================================
+# QMake
+# ============================================================================
+class QMake:
+ def __init__(self):
+ self._bin = "qmake"
self._platform = None
- self._make = None
self._error = None
- self._qmake = qmake
self._spec = None
- self._version = None
self._features = None
self._qtdir = None
+ self._qtversion = None
+ self._args = []
- def name(self):
- if not self._platform:
- self._detect_qt()
+ def init(self, cmdline):
+ match = re.search("--qmake-bin[=\s](\S+)", cmdline)
+ if match:
+ self._bin = match.group(1)
+ match = re.search("--platform[=\s](\S+)", cmdline)
+ if match:
+ self._platform = match.group(1)
+ match = re.search("--qmake-spec[=\s](\S+)", cmdline)
+ if match:
+ self._spec = match.group(1)
+ return self._run_qmake()
+
+ def command(self, profile=None):
+ _args = [self._bin]
+ if self._spec:
+ _args += ["-spec", self._spec]
+ if len(self._args):
+ _args += self._args
+ if profile:
+ _args += [profile]
+ return _args
+
+ def add_args(self, args):
+ self._args += args
+
+ def platform(self):
return self._platform
- def make(self):
- if not self._make:
- self._make = self._detect_make()
- return self._make
-
- def qmake(self):
- if not self._qmake:
- self._detect_qt()
- return self._qmake
+ def bin(self):
+ return self._bin
def error(self):
return self._error
def spec(self):
- if not self._spec:
- self._detect_qt()
return self._spec
- def version(self):
- if not self._version:
- self._detect_qt()
- return self._version
-
def features(self):
- if not self._features:
- self._detect_qt()
return self._features
def qtdir(self):
- if not self._qtdir:
- self._detect_qt()
return self._qtdir
- def _detect_qt(self):
- lines = list()
- lines.append("symbian:message(platform:symbian)\n")
- lines.append("else:macx:message(platform:macx)\n")
- lines.append("else:unix:message(platform:unix)\n")
- lines.append("else:win32:message(platform:win32)\n")
-
- lines.append("message(version:$$[QT_VERSION])\n")
- lines.append("message(libraries:$$[QT_INSTALL_LIBS])\n")
- lines.append("message(features:$$[QMAKE_MKSPECS]/features)\n")
+ def qtversion(self):
+ return self._version
- try:
- if not os.path.exists("tmp"):
- os.makedirs("tmp")
- fd, filepath = tempfile.mkstemp(dir="tmp", text=True, suffix=".pro")
- file = os.fdopen(fd, "w+")
- file.writelines(lines)
- file.close()
- except Exception, e:
- print(e)
- self._error = "Unable to write a temporary file. Make sure to configure in a writable directory."
- return
+ def _run_qmake(self):
+ # write .pro
+ content = """
+ symbian:message(platform:symbian)
+ symbian:message(platform:symbian)
+ else:macx:message(platform:macx)
+ else:unix:message(platform:unix)
+ else:win32:message(platform:win32)
+ message(features:$$[QMAKE_MKSPECS]/features)
+ message(qtversion:$$[QT_VERSION])
+ message(qtdir:$$[QT_INSTALL_LIBS])
+ """
+ if not write_file("tmp/qmake.pro", content):
+ self._error = "Unable to write 'tmp/qmake.pro'. Make sure to configure in a writable directory."
+ return False
- # do not use .qmake.cache when detecting the platform
- args = [self._qmake, "-nocache", os.path.split(filepath)[1]]
+ # run qmake
+ args = [self._bin, "-nocache", "qmake.pro"]
if self._spec:
args += ["-spec", self._spec]
(code, output) = run_process(args, "tmp")
+
+ # cleanup & check return
shutil.rmtree("tmp", ignore_errors=True)
if code != 0:
- self._error = "Unable to execute %s" % self._qmake
- if self._qmake == "qmake":
+ self._error = "Unable to execute %s" % self._bin
+ if self._bin == "qmake":
self._error += ". Add qmake to PATH or pass --qmake-bin <path/to/qmake>."
+ return False
+ # parse output
try:
- self._platform = re.search("Project MESSAGE: platform:(\S+)", output).group(1)
- self._version = re.search("Project MESSAGE: version:(\S+)", output).group(1)
- self._qtdir = re.search("Project MESSAGE: libraries:(\S+)", output).group(1)
+ if not self._platform:
+ self._platform = re.search("Project MESSAGE: platform:(\S+)", output).group(1)
self._features = re.search("Project MESSAGE: features:(\S+)", output).group(1)
+ self._version = re.search("Project MESSAGE: qtversion:(\S+)", output).group(1)
+ self._qtdir = re.search("Project MESSAGE: qtdir:(\S+)", output).group(1)
except:
self._error = "Unable to parse qmake output (%s)" % output.strip()
if output.find("QMAKESPEC") != -1:
self._error += ". Set QMAKESPEC environment variable or pass --qmake-spec <spec>."
- return None
+ return False
+ return True
+
+# ============================================================================
+# BuildEnvironment
+# ============================================================================
+class BuildEnvironment:
+ def __init__(self):
+ self._blddir = os.path.abspath(os.getcwd())
+ self._srcdir = os.path.abspath(sys.path[0])
+ self._prefix = None
+ self._bindir = None
+ self._libdir = None
+ self._docdir = None
+ self._includedir = None
+ self._pluginsdir = None
+ self._featuresdir = None
+ self._resourcesdir = None
+
+ def init(self, options):
+ # prefix
+ if options.prefix:
+ # explicit
+ self._prefix = options.prefix
+ elif options.developer:
+ # developer mode implies a "local" build
+ self._prefix = self._blddir
+ else:
+ # fall back to default
+ self._prefix = self.default_prefix()
+ if QMAKE.platform() != "symbian":
+ self._prefix = os.path.abspath(self._prefix)
+
+ self._bindir = self._dir_option(options.bindir, self._prefix + "/bin")
+ self._libdir = self._dir_option(options.libdir, self._prefix + "/lib")
+ self._docdir = self._dir_option(options.docdir, self._prefix + "/doc")
+ self._includedir = self._dir_option(options.includedir, self._prefix + "/include")
+ self._pluginsdir = self._dir_option(options.pluginsdir, self._prefix + "/plugins")
+ self._featuresdir = self._dir_option(options.featuresdir, QMAKE.features())
+ self._resourcesdir = self._dir_option(options.resourcesdir, self._prefix + "/resources")
+
+ # symbian specific adjustments
+ if QMAKE.platform() == "symbian":
+ # TODO: fix to "$${EPOCROOT}resource/hb/plugins"
+ self._pluginsdir = "$${EPOCROOT}resource/qt/plugins/hb"
+
+ if not options.developer:
+ if os.path.isdir("/s60"):
+ self._includedir = self._prefix + "/include/hb"
+ else:
+ self._includedir = self._prefix + "/include/mw/hb"
- def _detect_make(self):
- if self.name() == "win32" and Platform._test_make("nmake", "/?"):
- return "nmake"
- if Platform._test_make("make", "-v"):
- return "make"
- if Platform._test_make("gmake", "-v"):
- return "gmake"
- if self.name() == "win32" and Platform._test_make("mingw32-make", "-v"):
- return "mingw32-make"
- return "(n)make"
+ def builddir(self):
+ return self._blddir
+
+ def sourcedir(self):
+ return self._srcdir
+
+ def prefix(self):
+ return self._prefix
+
+ def bindir(self):
+ return self._bindir
+
+ def libdir(self):
+ return self._libdir
+
+ def docdir(self):
+ return self._docdir
+
+ def includedir(self):
+ return self._includedir
+
+ def pluginsdir(self):
+ return self._pluginsdir
+
+ def featuresdir(self):
+ return self._featuresdir
- def _test_make(command, param):
- try:
- return run_process([command, param])[0] == 0
- except:
- return False
+ def resourcesdir(self):
+ return self._resourcesdir
+
+ def exportdir(self, category=None):
+ if os.path.isdir("/s60"):
+ if category:
+ return "hb/%1/" + category + "/%2"
+ return "hb/%1/%2"
+ else:
+ if category:
+ return "$${EPOCROOT}epoc32/include/mw/hb/%1/" + category + "/%2"
+ return "$${EPOCROOT}epoc32/include/mw/hb/%1/%2"
- _test_make = staticmethod(_test_make)
+ def default_prefix(self):
+ prefixes = { "symbian" : "$${EPOCROOT}epoc32",
+ "unix" : "/usr/local/hb",
+ "macx" : "/usr/local/hb",
+ "win32" : "C:/hb" }
+ return prefixes.get(QMAKE.platform(), self._blddir)
+
+ def local(self):
+ prefix = self.prefix()
+ return os.path.isdir(prefix) and (prefix == self._blddir)
+
+ def _dir_option(self, explicit, default):
+ if explicit:
+ return explicit
+ return default
# ============================================================================
# ConfigTest
# ============================================================================
class ConfigTest:
- def __init__(self, platform):
- self._make = platform.make()
- self._qmake = platform.qmake()
- self._platform = platform.name()
- self._spec = platform.spec()
-
- def setup(self, sourcedir, builddir):
+ def __init__(self, sourcedir=os.getcwd(), builddir=os.getcwd()):
self._sourcedir = sourcedir
self._builddir = builddir
@@ -453,14 +591,11 @@
os.chdir(builddir)
# run qmake & make
- args = [self._qmake, filepath]
- if self._spec:
- args += ["-spec", self._spec]
- run_process(args)
- (code, output) = run_process([self._make])
+ run_process(QMAKE.command(filepath))
+ (code, output) = run_process(MAKE.command())
# make return value is not reliable
- if self._platform == "symbian":
+ if QMAKE.platform() == "symbian":
# on symbian, check that no error patterns such as '***' can be found from build output
patterns = ["\\*\\*\\*", "Errors caused tool to abort"]
for pattern in patterns:
@@ -475,7 +610,7 @@
code = -1
# clean
- run_process([self._make, "clean"])
+ run_process(MAKE.command("clean"))
except:
code = -1
@@ -520,168 +655,90 @@
# main()
# ============================================================================
def main():
- global HB_MAKE_PARTS, HB_NOMAKE_PARTS
-
- qmake = "qmake"
- cmdline = " ".join(sys.argv[1:])
- match = re.search("--qmake-bin[=\s](\S+)", cmdline)
- if match:
- qmake = match.group(1)
-
- # detect platform
- platform = Platform(qmake)
- match = re.search("--platform[=\s](\S+)", cmdline)
- if match:
- platform._platform = match.group(1)
-
- match = re.search("--qmake-spec[=\s](\S+)", cmdline)
- if match:
- platform._spec = match.group(1)
+ global QMAKE, MAKE, BUILDENV, HB_MAKE_PARTS, HB_NOMAKE_PARTS
help = False
+ cmdline = " ".join(sys.argv[1:])
match = re.search("--help\s*", cmdline)
if match or re.search("-h\s*", cmdline):
help = True
- if not help and not platform.name():
- print("ERROR: %s" % platform.error())
- return
+ QMAKE = QMake()
+ QMAKE.init(cmdline)
- # detect make
- match = re.search("--make-bin[=\s](\S+)", cmdline)
- if match:
- platform._make = match.group(1)
- if not platform.make():
- print("ERROR: %s" % platform.error())
+ if not help and not QMAKE.platform():
+ print("ERROR: %s" % QMAKE.error())
return
- currentdir = os.path.abspath(os.getcwd())
- sourcedir = os.path.abspath(sys.path[0])
+ MAKE = Make()
+ MAKE.init(cmdline)
- # default prefixes
- prefixes = { "symbian" : "$${EPOCROOT}epoc32",
- "unix" : "/usr/local/hb",
- "macx" : "/usr/local/hb",
- "win32" : "C:/hb" }
+ BUILDENV = BuildEnvironment()
# parse command line options
- parser = OptionParser(platform.name(), platform.make(), prefixes.get(platform.name(), currentdir))
+ parser = OptionParser()
(options, args) = parser.parse_args()
+ BUILDENV.init(options)
+
# coverage implies developer mode
if options.coverage:
options.developer = True
- print("Configuring Hb...")
- print("INFO: Platform: %s" % platform.name())
- print("INFO: Make: %s" % platform.make())
- print("INFO: Qt: %s in %s" % (platform.version(), platform.qtdir()))
+ # developer mode implies tests, including perf & loc
+ if options.developer:
+ add_remove_part("tests", True)
+ add_remove_part("performance", True)
+ add_remove_part("localization", True)
- # warn about deprecated options
- if options.qtanimation != None:
- print("WARNING: --qt-animation and --qt-no-animation are DEPRECATED. Qt 4.6 includes the animation framework.")
- if options.qtgestures != None:
- print("WARNING: --qt-gestures and --qt-no-gestures are DEPRECATED. Qt 4.6 includes the gestures framework.")
- if options.qts60eventfilter != None:
- print("WARNING: --qt-symbian-eventfilter and --qt-s60-eventfilter are DEPRECATED. Qt 4.6 includes QApplication::symbianEventFilter().")
- if options.inputs != None:
- print("WARNING: --no-inputs is DEPRECATED. Use --nomake hbinput.")
- add_remove_part("hbinput", options.inputs)
- if options.feedback != None:
- print("WARNING: --no-feedback is DEPRECATED. Use --nomake hbfeedback.")
- add_remove_part("hbfeedback", options.feedback)
- if options.tutorials != None:
- print("WARNING: --no-tutorials is DEPRECATED. Use --nomake tutorials.")
- add_remove_part("tutorials", options.tutorials)
- if options.tests != None:
- print("WARNING: --tests is DEPRECATED. Use --make tests.")
- add_remove_part("tests", options.tests)
- if options.performance != None:
- print("WARNING: --performance is DEPRECATED. Use --make performance.")
- add_remove_part("performance", options.performance)
- if options.localization != None:
- print("WARNING: --localization is DEPRECATED. Use --make localization.")
- add_remove_part("localization", options.localization)
+ # developer mode implies developer exports
+ if options.developer:
+ options.developerexport = True
- # sort out directories
- if not options.prefix:
- # developer mode implies local setup
- if options.developer:
- options.prefix = currentdir
- else:
- options.prefix = prefixes.get(platform.name(), currentdir)
- basedir = options.prefix
- if platform.name() != "symbian":
- basedir = os.path.abspath(basedir)
- local = os.path.isdir(basedir) and (basedir == currentdir)
+ print("Configuring Hb...")
+ print("INFO: Platform: %s" % QMAKE.platform())
+ print("INFO: Make: %s" % MAKE.bin())
+ print("INFO: Qt: %s in %s" % (QMAKE.qtversion(), QMAKE.qtdir()))
# compilation tests to detect available features
config = ConfigFile()
- test = ConfigTest(platform)
- test.setup(sourcedir, currentdir)
+ test = ConfigTest(BUILDENV.sourcedir(), BUILDENV.builddir())
print("\nDetecting available features...")
if options.qtmobility == None:
options.qtmobility = test.compile("config.tests/all/mobility")
if options.qtmobility:
config.add_value("DEFINES", "HB_HAVE_QT_MOBILITY")
print("INFO: Qt Mobility:\t\t\t%s" % options.qtmobility)
- if platform.name() == "symbian":
+ if QMAKE.platform() == "symbian":
sgimagelite_result = test.compile("config.tests/symbian/sgimagelite")
if sgimagelite_result:
config.add_value("CONFIG", "sgimage")
print("INFO: SgImage-Lite:\t\t\t%s" % sgimagelite_result)
- if options.dui == None:
- options.dui = test.compile("config.tests/maemo/dui")
- if options.dui:
- config.add_value("CONFIG", "hb_maemo_dui")
- config.add_value("DEFINES", "HB_MAEMO_DUI")
- print("INFO: Direct UI:\t\t\t%s" % options.dui)
+ tchunkcreateinfo_result = test.compile("config.tests/symbian/tchunkcreateinfo")
+ if tchunkcreateinfo_result:
+ config.add_value("DEFINES", "HB_HAVE_PROTECTED_CHUNK")
+ touchfeedback_result = test.compile("config.tests/symbian/touchfeedback")
+ if touchfeedback_result:
+ config.add_value("DEFINES", "HB_TOUCHFEEDBACK_TYPE_IS_LONGPRESS")
+ print("INFO: ETouchFeedbackLongPress:\t\t%s" % touchfeedback_result)
+ if options.meegotouch == None:
+ options.meegotouch = test.compile("config.tests/meego/meegotouch")
+ if options.meegotouch:
+ config.add_value("CONFIG", "hb_meegotouch")
+ config.add_value("DEFINES", "HB_MEEGOTOUCH")
+ print("INFO: MeeGo Touch:\t\t\t%s" % options.meegotouch)
- # directories
- if options.bindir == None:
- # TODO: symbian
- options.bindir = basedir + "/bin"
- if options.libdir == None:
- # TODO: symbian
- options.libdir = basedir + "/lib"
- if options.docdir == None:
- # TODO: symbian
- options.docdir = basedir + "/doc"
- if options.includedir == None:
- if platform.name() == "symbian" and not options.developer:
- if os.path.isdir("/s60"):
- options.includedir = basedir + "/include/hb"
- else:
- options.includedir = basedir + "/include/mw/hb"
- else:
- options.includedir = basedir + "/include"
- if options.plugindir == None:
- if platform.name() == "symbian":
- # TODO: fix to "$${EPOCROOT}resource/hb/plugins"
- options.plugindir = "$${EPOCROOT}resource/qt/plugins/hb"
- else:
- options.plugindir = basedir + "/plugins"
- if options.featuredir == None:
- options.featuredir = platform.features()
- if options.resourcedir == None:
- # TODO: fix this, some components want to write resources...
- # thus, cannot point to the source tree!
- if not local:
- options.resourcedir = basedir + "/resources"
- else:
- options.resourcedir = sourcedir + "/src/hbcore/resources"
-
- config.set_value("HB_INSTALL_DIR", ConfigFile.format_dir(basedir))
- config.set_value("HB_BIN_DIR", ConfigFile.format_dir(options.bindir))
- config.set_value("HB_LIB_DIR", ConfigFile.format_dir(options.libdir))
- config.set_value("HB_DOC_DIR", ConfigFile.format_dir(options.docdir))
- config.set_value("HB_INCLUDE_DIR", ConfigFile.format_dir(options.includedir))
- config.set_value("HB_PLUGINS_DIR", ConfigFile.format_dir(options.plugindir))
- config.set_value("HB_RESOURCES_DIR", ConfigFile.format_dir(options.resourcedir))
- config.set_value("HB_FEATURES_DIR", ConfigFile.format_dir(options.featuredir))
+ config.set_value("HB_INSTALL_DIR", ConfigFile.format_dir(BUILDENV.prefix()))
+ config.set_value("HB_BIN_DIR", ConfigFile.format_dir(BUILDENV.bindir()))
+ config.set_value("HB_LIB_DIR", ConfigFile.format_dir(BUILDENV.libdir()))
+ config.set_value("HB_DOC_DIR", ConfigFile.format_dir(BUILDENV.docdir()))
+ config.set_value("HB_INCLUDE_DIR", ConfigFile.format_dir(BUILDENV.includedir()))
+ config.set_value("HB_PLUGINS_DIR", ConfigFile.format_dir(BUILDENV.pluginsdir()))
+ config.set_value("HB_FEATURES_DIR", ConfigFile.format_dir(BUILDENV.featuresdir()))
+ config.set_value("HB_RESOURCES_DIR", ConfigFile.format_dir(BUILDENV.resourcesdir()))
# TODO: get rid of this!
- if platform.name() == "symbian":
+ if QMAKE.platform() == "symbian":
config.set_value("HB_PLUGINS_EXPORT_DIR", ConfigFile.format_dir("$${EPOCROOT}epoc32/winscw/c/resource/qt/plugins/hb"))
if options.gestures:
@@ -690,12 +747,14 @@
config.add_value("DEFINES", "HB_EFFECTS")
if options.textMeasurement:
config.add_value("DEFINES", "HB_TEXT_MEASUREMENT_UTILITY")
- if platform.name() != "symbian" and options.developer:
- config.add_value("DEFINES", "HB_CSS_INSPECTOR")
+ if QMAKE.platform() != "symbian" and options.developer:
+ config.add_value("DEFINES", "HB_CSS_INSPECTOR")
if options.defines:
config.add_value("DEFINES", " ".join(options.defines.split(",")))
- if options.developer:
+ if options.developerexport:
config.add_value("DEFINES", "HB_DEVELOPER")
+ if options.rpath == None or options.rpath == True:
+ config.add_value("QMAKE_RPATHDIR", "$${HB_LIB_DIR}")
if options.verbose:
print("INFO: Writing hb_install.prf")
@@ -703,22 +762,11 @@
print("ERROR: Unable to write hb_install_prf.")
return
- config.set_value("HB_BUILD_DIR", ConfigFile.format_dir(currentdir))
- config.set_value("HB_SOURCE_DIR", ConfigFile.format_dir(sourcedir))
- config.set_value("HB_MKSPECS_DIR", ConfigFile.format_dir(basedir + "/mkspecs"))
-
- if platform.name() == "symbian":
- if os.path.isdir("/s60"):
- config.set_value("HB_EXPORT_DIR", "hb/%1/%2")
- config.set_value("HB_RESTRICTED_EXPORT_DIR", "hb/%1/restricted/%2")
- else:
- config.set_value("HB_EXPORT_DIR", "$${EPOCROOT}epoc32/include/mw/hb/%1/%2")
- config.set_value("HB_RESTRICTED_EXPORT_DIR", "$${EPOCROOT}epoc32/include/mw/hb/%1/restricted/%2")
-
- if options.developer:
- add_remove_part("tests", True)
- add_remove_part("performance", True)
- add_remove_part("localization", True)
+ config.set_value("HB_BUILD_DIR", ConfigFile.format_dir(BUILDENV.builddir()))
+ config.set_value("HB_SOURCE_DIR", ConfigFile.format_dir(BUILDENV.sourcedir()))
+ if QMAKE.platform() == "symbian":
+ config.set_value("HB_EXPORT_DIR", ConfigFile.format_dir(BUILDENV.exportdir()))
+ config.set_value("HB_RESTRICTED_EXPORT_DIR", ConfigFile.format_dir(BUILDENV.exportdir("restricted")))
if options.make:
for part in options.make:
@@ -737,7 +785,7 @@
for qmakeopt in options.qmakeopt.split():
config._lines.append(qmakeopt + "\n")
- if local:
+ if BUILDENV.local():
config.add_value("CONFIG", "local")
if options.silent:
config.add_value("CONFIG", "silent")
@@ -781,7 +829,7 @@
config.add_value("DEFINES", "QT_QCHAR_CONSTRUCTOR")
# TODO: is there any better way to expose functions to the whole source tree?
- config._lines.append("include(%s)\n" % (os.path.splitdrive(sourcedir)[1] + "/mkspecs/hb_functions.prf"))
+ config._lines.append("include(%s)\n" % (os.path.splitdrive(BUILDENV.sourcedir())[1] + "/mkspecs/hb_functions.prf"))
if options.verbose:
print("INFO: Writing .qmake.cache")
@@ -812,76 +860,66 @@
if options.verbose:
print("INFO: Running %s" % synchb)
synchb = "%s -v" % synchb
- os.system("python %s/%s -i %s -o %s" % (sourcedir, synchb, sourcedir, currentdir))
+ os.system("python %s/%s -i %s -o %s" % (BUILDENV.sourcedir(), synchb, BUILDENV.sourcedir(), BUILDENV.builddir()))
# generate a qrc for resources
print("INFO: Qt resource collection")
- args = [os.path.join(sourcedir, "bin/resourcifier.py")]
+ args = [os.path.join(BUILDENV.sourcedir(), "bin/resourcifier.py")]
args += ["-i", "%s" % os.path.join(sys.path[0], "src/hbcore/resources")]
- # TODO: make it currentdir
- args += ["-o", "%s" % os.path.join(sourcedir, "src/hbcore/resources/resources.qrc")]
+ # TODO: make it BUILDENV.builddir()
+ args += ["-o", "%s" % os.path.join(BUILDENV.sourcedir(), "src/hbcore/resources/resources.qrc")]
args += ["--exclude", "\"*distribution.policy.s60\""]
args += ["--exclude", "\"*readme.txt\""]
args += ["--exclude", "\"*.pr?\""]
args += ["--exclude", "\"*.qrc\""]
args += ["--exclude", "\"*~\""]
args += ["--exclude", "variant/*"]
- args += ["--exclude", "\"*css.bin\""]
+ args += ["--exclude", "\"*hbdefault.cssbin\""]
+
+ if QMAKE.platform() != "symbian":
+ args += ["--exclude", "\"*symbian*\""]
+ if QMAKE.platform() != "macx":
+ args += ["--exclude", "\"*macx*\""]
+ if QMAKE.platform() != "unix":
+ args += ["--exclude", "\"*unix*\""]
+ if QMAKE.platform() != "win32":
+ args += ["--exclude", "\"*win32*\""]
+
if options.verbose:
print("INFO: Running %s" % " ".join(args))
os.system("python %s" % " ".join(args))
# build host tools
- if platform.name() == "symbian" or options.hostqmakebin != None or options.hostmakebin != None:
+ if QMAKE.platform() == "symbian" or options.hostqmakebin != None or options.hostmakebin != None:
print("\nBuilding host tools...")
if options.hostqmakebin != None and options.hostmakebin != None:
- profile = "%s/src/hbtools/hbtools.pro" % sourcedir
+ profile = "%s/src/hbtools/hbtools.pro" % BUILDENV.sourcedir()
if os.path.exists(profile):
- toolsdir = os.path.join(currentdir, "src/hbtools")
+ toolsdir = os.path.join(BUILDENV.builddir(), "src/hbtools")
if not os.path.exists(toolsdir):
os.makedirs(toolsdir)
os.chdir(toolsdir)
os.system("\"%s\" -config silent %s" % (options.hostqmakebin, profile))
os.system("\"%s\"" % (options.hostmakebin))
- os.chdir(currentdir)
+ os.chdir(BUILDENV.builddir())
else:
print("WARNING: Cannot build host tools, because no --host-qmake-bin and/or")
print(" --host-make-bin was provided. Hb will attempt to run host")
print(" tools from PATH.")
# run qmake
- if options.qmakebin:
- qmake = options.qmakebin
-
- profile = os.path.join(sourcedir, "hb.pro")
- cachefile = os.path.join(currentdir, ".qmake.cache")
+ profile = os.path.join(BUILDENV.sourcedir(), "hb.pro")
+ QMAKE.add_args(["-cache", os.path.join(BUILDENV.builddir(), ".qmake.cache")])
if options.msvc:
- qmake = "%s -tp vc" % qmake
+ QMAKE.add_args(["-tp", "vc"])
if not options.fast:
- qmake = "%s -r" % qmake
- if options.qmakespec:
- qmake = "%s -spec %s" % (qmake, options.qmakespec)
- if options.qmakeopt:
- qmake = "%s \\\"%s\\\"" % (qmake, options.qmakeopt)
+ QMAKE.add_args(["-r"])
if options.verbose:
- print("\nRunning %s -cache %s %s" % (qmake, cachefile, profile))
+ print("\nRunning %s" % QMAKE.command(profile))
else:
print("\nRunning qmake...")
try:
-
- # modify epocroot for symbian to have compatibility between qmake and raptor
- env = os.environ.copy()
- if "EPOCROOT" in env:
- epocroot = env.get("EPOCROOT")
- if not (epocroot.endswith("\\") or epocroot.endswith("/")):
- os.putenv("EPOCROOT", "%s/" % epocroot)
- ret = os.system("%s -cache %s %s" % (qmake, cachefile, profile))
- os.putenv("EPOCROOT", epocroot)
- else:
- ret = os.system("%s -cache %s %s" % (qmake, cachefile, profile))
- else:
- ret = os.system("%s -cache %s %s" % (qmake, cachefile, profile))
-
+ ret = run_system(QMAKE.command(profile))
except KeyboardInterrupt:
ret = -1
if ret != 0:
@@ -892,40 +930,28 @@
if "tests" not in HB_NOMAKE_PARTS:
# run qmake for tests
- profile = "%s/tsrc/tsrc.pro" % sourcedir
+ profile = "%s/tsrc/tsrc.pro" % BUILDENV.sourcedir()
if os.path.exists(profile):
- tsrcdir = os.path.join(currentdir, "tsrc")
+ tsrcdir = os.path.join(BUILDENV.builddir(), "tsrc")
if not os.path.exists(tsrcdir):
os.makedirs(tsrcdir)
os.chdir(tsrcdir)
if options.verbose:
- print("\nRunning %s %s" % (qmake, profile))
+ print("\nRunning %s" % QMAKE.command(profile))
else:
print("\nRunning qmake in tsrc...")
-
- # epocroot cecking also for tests
- env = os.environ.copy()
- if "EPOCROOT" in env:
- epocroot = env.get("EPOCROOT")
- if not (epocroot.endswith("\\") or epocroot.endswith("/")):
- os.putenv("EPOCROOT", "%s/" % epocroot)
- os.system("%s %s" % (qmake, profile))
- os.putenv("EPOCROOT", epocroot)
- else:
- os.system("%s %s" % (qmake, profile))
- else:
- os.system("%s %s" % (qmake, profile))
- os.chdir(currentdir)
+ run_system(QMAKE.command(profile))
+ os.chdir(BUILDENV.builddir())
# create output dirs
- outputdir = os.path.join(currentdir, "autotest")
+ outputdir = os.path.join(BUILDENV.builddir(), "autotest")
if not os.path.exists(outputdir):
os.makedirs(outputdir)
- outputdir = os.path.join(currentdir, "coverage")
+ outputdir = os.path.join(BUILDENV.builddir(), "coverage")
if not os.path.exists(outputdir):
os.makedirs(outputdir)
# nag about tests that are commented out
- result = grep(sourcedir + "/tsrc", "#\s*SUBDIRS\s*\+=\s*(\S+)", ["*.pr?"])
+ result = grep(BUILDENV.sourcedir() + "/tsrc", "#\s*SUBDIRS\s*\+=\s*(\S+)", ["*.pr?"])
maxlen = 0
for profile in result:
maxlen = max(maxlen, len(profile))
@@ -952,40 +978,37 @@
# print summary
print("")
- if platform.make() == "nmake" and options.msvc:
+ if MAKE.bin() == "nmake" and options.msvc:
conf = "MSVC"
act = "open 'hb.sln'"
elif options.coverage:
conf = "test coverage measurement"
- act = "run '%s coverage'" % platform.make()
+ act = "run '%s coverage'" % MAKE.bin()
elif options.developer:
conf = "development"
- act = "run '%s'" % platform.make()
+ act = "run '%s'" % MAKE.bin()
else:
conf = "building"
- act = "run '%s'" % platform.make()
+ act = "run '%s'" % MAKE.bin()
print("Hb is now configured for %s. Just %s." % (conf, act))
if not options.coverage:
- if platform.name() == "symbian" or local:
- print("You must run '%s install' to copy the .prf file in place." % platform.make())
+ if QMAKE.platform() == "symbian" or BUILDENV.local():
+ print("You must run '%s install' to copy Hb files in place." % MAKE.bin())
else:
- print("Once everything is built, you must run '%s install'." % platform.make())
- if platform != "symbian":
- if local:
- print("Hb will be used from '%s'." % sourcedir)
+ print("Once everything is built, you must run '%s install'." % MAKE.bin())
+ if QMAKE.platform() != "symbian":
+ if BUILDENV.local():
+ print("Hb will be used from '%s'." % BUILDENV.prefix())
else:
- print("Hb will be installed to '%s'." % basedir)
- if platform.name() == "win32":
- path = os.path.join(basedir, "bin")
- if local:
- path = os.path.join(currentdir, "bin")
- print("NOTE: Make sure that '%s' is in PATH." % path)
+ print("Hb will be installed to '%s'." % BUILDENV.prefix())
+ if QMAKE.platform() == "win32":
+ print("NOTE: Make sure that '%s' is in PATH." % BUILDENV.bindir())
if options.coverage:
print("Test code coverage measurement will FAIL if wrong Hb DLLs are found in PATH before '%s'." % path)
print("")
- print("To reconfigure, run '%s clean' and '%s'." % (platform.make(), sys.argv[0]))
+ print("To reconfigure, run '%s clean' and '%s'." % (MAKE.bin(), sys.argv[0]))
print("")
if __name__ == "__main__":
--- a/hb.prf Fri Jun 11 13:58:22 2010 +0300
+++ b/hb.prf Wed Jun 23 18:33:25 2010 +0300
@@ -74,5 +74,4 @@
!isEmpty(LINKAGE) {
LIBS += -L$${HB_LIB_DIR} $${LINKAGE}
- QMAKE_RPATHDIR *= $${HB_LIB_DIR}
}
--- a/hb.pro Fri Jun 11 13:58:22 2010 +0300
+++ b/hb.pro Wed Jun 23 18:33:25 2010 +0300
@@ -38,8 +38,8 @@
!symbian {
feature.files += $$HB_SOURCE_DIR/hb.prf
feature.files += $$HB_BUILD_DIR/hb_install.prf
- feature.files += $$HB_MKSPECS_DIR/hb_functions.prf
- feature.files += $$HB_MKSPECS_DIR/docml2bin.prf
+ feature.files += $$HB_SOURCE_DIR/mkspecs/hb_functions.prf
+ feature.files += $$HB_SOURCE_DIR/mkspecs/docml2bin.prf
feature.path = $$HB_FEATURES_DIR
INSTALLS += feature
}
@@ -63,7 +63,7 @@
symbian {
exists(rom):include(rom/rom.pri)
install.depends += hbvar
-# install.depends += cssbinary
+ install.depends += cssbinary
install.commands += $$QMAKE_COPY $$hbNativePath($$HB_SOURCE_DIR/hb.prf) $$hbNativePath($$[QMAKE_MKSPECS]/features)
install.commands += && $$QMAKE_COPY $$hbNativePath($$HB_BUILD_DIR/hb_install.prf) $$hbNativePath($$[QMAKE_MKSPECS]/features)
install.commands += && $$QMAKE_COPY $$hbNativePath($$HB_SOURCE_DIR/mkspecs/hb_functions.prf) $$hbNativePath($$[QMAKE_MKSPECS]/features)
@@ -72,32 +72,33 @@
}
# css binary generation
+cssbinmaker.input = $$HB_SOURCE_DIR/src/hbcore/resources/themes/style/hbdefault
+cssbinmaker.output = $$HB_BUILD_DIR/src/hbcore/resources/themes/hbdefault.cssbin
+cssbinmaker.commands = $$hbToolCommand(hbbincssmaker) -i $$cssbinmaker.input -o $$cssbinmaker.output
+QMAKE_DISTCLEAN += $$cssbinmaker.output
+QMAKE_EXTRA_TARGETS += cssbinmaker
-cssbinary.path = . #needed for install target
-cssbinary.sourcedir = $$PWD/src/hbcore/resources/themes/style/hbdefault
+cssbinary.depends = cssbinmaker
+cssbinary.path = $$HB_RESOURCES_DIR/themes
+cssbinary.files = $$cssbinmaker.output
+INSTALLS += cssbinary
+
symbian {
- cssbinary.targetfile = $${EPOCROOT}epoc32/data/z/resource/hb/themes/css.bin
-} else {
- cssbinary.targetfile = $$HB_RESOURCES_DIR/themes/css.bin
+ cssbinary.commands += $$hbCopyCommand($$cssbinary.files, $${EPOCROOT}epoc32/data/z/resource/hb/themes/)
+ cssbinary.commands += && $$hbCopyCommand($$cssbinary.files, $${EPOCROOT}epoc32/release/winscw/udeb/z/resource/hb/themes/)
+ QMAKE_DISTCLEAN += $${EPOCROOT}epoc32/data/z/resource/hb/themes/$$cssbinary.files
+ QMAKE_DISTCLEAN += $${EPOCROOT}epoc32/release/winscw/udeb/z/resource/hb/themes/$$cssbinary.files
+ QMAKE_EXTRA_TARGETS += cssbinary
}
-cssbinary.commands = $$hbToolCommand(hbbincssmaker) -i $$cssbinary.sourcedir -o $$cssbinary.targetfile
-
-# copy generated css binary to symbian emulator directory
-symbian {
- cssbinary.commands += && $$QMAKE_COPY $$hbNativePath($$cssbinary.targetfile) $$hbNativePath($${EPOCROOT}epoc32/release/winscw/udeb/z/resource/hb/themes/css.bin)
-}
-
-QMAKE_EXTRA_TARGETS += cssbinary
-#INSTALLS += cssbinary
!contains(HB_NOMAKE_PARTS, tests):exists(tsrc) {
test.depends = sub-src
test.commands += cd tsrc && $(MAKE) test
autotest.depends = sub-src
autotest.commands += cd tsrc && $(MAKE) autotest
- loctest.depends = sub-src
- loctest.commands += cd tsrc/loc && $(MAKE) loctest
- QMAKE_EXTRA_TARGETS += test autotest loctest
+ unittest.depends = sub-src
+ unittest.commands += cd tsrc/unit && $(MAKE) test
+ QMAKE_EXTRA_TARGETS += test autotest unittest
}
exists(doc):include(doc/doc.pri)
--- a/mkspecs/hb_functions.prf Fri Jun 11 13:58:22 2010 +0300
+++ b/mkspecs/hb_functions.prf Wed Jun 23 18:33:25 2010 +0300
@@ -56,13 +56,11 @@
LIBS *= -L$${HB_BUILD_DIR}/lib
LIBS *= -l$$hbLibraryTarget($$LIBRARY)
- QMAKE_RPATHDIR *= $${HB_BUILD_DIR}/lib
unix:HB_COVERAGE_EXCLUDE += \"*/$$COLLECTION/*\"
export(LIBS)
export(INCLUDEPATH)
export(DEPENDPATH)
- export(QMAKE_RPATHDIR)
export(HB_COVERAGE_EXCLUDE)
return(true)
}
@@ -132,3 +130,18 @@
# fall back to <builddir>/bin
return($$hbNativePath($$HB_BUILD_DIR/bin/$$1))
}
+
+# params: <file> <dir>
+defineReplace(hbCopyCommand) {
+ file = $$hbNativePath($$1)
+ dir = $$hbNativePath($$2)
+
+ chk_dir_exists = $$QMAKE_CHK_DIR_EXISTS $$dir
+ mkdir = $$QMAKE_MKDIR $$dir
+ copy = $$QMAKE_COPY $$file $$dir
+
+ hbUnixStyle():chk_dir_exists_mkdir = $$chk_dir_exists || $$mkdir
+ else:chk_dir_exists_mkdir = $$chk_dir_exists $$mkdir
+
+ return(($$chk_dir_exists_mkdir) && $$copy)
+}
--- a/src/astyle.pri Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-#
-#############################################################################
-##
-## Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (developer.feedback@nokia.com)
-##
-## This file is part of the UI Extensions for Mobile.
-##
-## GNU Lesser General Public License Usage
-## This file may be used under the terms of the GNU Lesser General Public
-## License version 2.1 as published by the Free Software Foundation and
-## appearing in the file LICENSE.LGPL included in the packaging of this file.
-## Please review the following information to ensure the GNU Lesser General
-## Public License version 2.1 requirements will be met:
-## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-##
-## In addition, as a special exception, Nokia gives you certain additional
-## rights. These rights are described in the Nokia Qt LGPL Exception
-## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-##
-## If you have questions regarding the use of this file, please contact
-## Nokia at developer.feedback@nokia.com.
-##
-#############################################################################
-#
-
-root {
-
- style.CONFIG = recursive
- style.recurse = src
- style.recurse_target = astyle
- QMAKE_EXTRA_TARGETS += style
-
-} else:contains(TEMPLATE, .*subdirs$) {
-
- astyle.CONFIG += recursive
- QMAKE_EXTRA_TARGETS += astyle
-
-} else {
-
- astyle.params += --pad=oper
- astyle.params += --unpad=paren
- astyle.params += --convert-tabs
- astyle.params += --brackets=linux
- astyle.params += --break-blocks=all
- astyle.params += --indent-namespaces
- astyle.commands = astyle $$astyle.params $$HEADERS $$SOURCES
- QMAKE_EXTRA_TARGETS += astyle
-
-}
--- a/src/coverage.pri Fri Jun 11 13:58:22 2010 +0300
+++ b/src/coverage.pri Wed Jun 23 18:33:25 2010 +0300
@@ -58,7 +58,7 @@
}
measure_coverage.depends = pre_coverage
- unix:measure_coverage.depends = test
+ unix:measure_coverage.depends = unittest
post_coverage.depends = measure_coverage
coverage.depends = post_coverage
QMAKE_EXTRA_TARGETS *= coverage pre_coverage measure_coverage post_coverage
--- a/src/flint.pri Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-#
-#############################################################################
-##
-## Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (developer.feedback@nokia.com)
-##
-## This file is part of the UI Extensions for Mobile.
-##
-## GNU Lesser General Public License Usage
-## This file may be used under the terms of the GNU Lesser General Public
-## License version 2.1 as published by the Free Software Foundation and
-## appearing in the file LICENSE.LGPL included in the packaging of this file.
-## Please review the following information to ensure the GNU Lesser General
-## Public License version 2.1 requirements will be met:
-## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-##
-## In addition, as a special exception, Nokia gives you certain additional
-## rights. These rights are described in the Nokia Qt LGPL Exception
-## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-##
-## If you have questions regarding the use of this file, please contact
-## Nokia at developer.feedback@nokia.com.
-##
-#############################################################################
-#
-
-root {
-
- flint.CONFIG = recursive
- flint.recurse = src
-
-} else:contains(TEMPLATE, .*subdirs$) {
-
- flint.CONFIG += recursive
-
-} else {
-
- unix:flint.commands += $(FLINT_BIN) `echo $(DEFINES) | sed s/-D/-d/g` `echo $(INCPATH) | sed s/-I/-i/g` \
- $(FLINT_INDIRECTS) $$SOURCES 2>&1 > $${HB_BUILD_DIR}/\$(QMAKE_TARGET).txt
-
-}
-
-QMAKE_EXTRA_TARGETS += flint
--- a/src/hbapps/hbapps.pro Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbapps/hbapps.pro Wed Jun 23 18:33:25 2010 +0300
@@ -28,6 +28,7 @@
TEMPLATE = subdirs
SUBDIRS += hbthemechanger
+SUBDIRS += hbfeatureconfigapp
symbian {
SUBDIRS += hbiconpreloader
--- a/src/hbapps/hbthemechanger/hbthemechanger.pro Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbapps/hbthemechanger/hbthemechanger.pro Wed Jun 23 18:33:25 2010 +0300
@@ -30,6 +30,8 @@
QT += network
DEFINES += HB_RESOURCES_DIR=\"\\\"$${HB_RESOURCES_DIR}\\\"\"
+CONFIG += hb
+
# directories
DESTDIR = $${HB_BUILD_DIR}/bin
@@ -46,6 +48,7 @@
symbian {
TARGET.CAPABILITY += WriteDeviceData
+ SKINICON = qtg_large_personalization
}
# installation
--- a/src/hbapps/hbthemechanger/themechangermain.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbapps/hbthemechanger/themechangermain.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -66,7 +66,7 @@
HbMainWindow mainWindow;
// Show the list of themes available
- ThemeSelectionList *themelist=new ThemeSelectionList();
+ ThemeSelectionList *themelist=new ThemeSelectionList(&mainWindow);
themelist->displayThemes();
mainWindow.addView( themelist );
--- a/src/hbapps/hbthemechanger/themeselectionlist.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbapps/hbthemechanger/themeselectionlist.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -32,23 +32,106 @@
#include <hbicon.h>
#include <hblistwidgetitem.h>
#include <restricted/hbthemeservices_r.h>
+#include <hblabel.h>
+#include <hbiconitem.h>
+#include <hbtoolbar.h>
#include <QDebug>
#include <QTime>
#include <QThread>
+#include <QGesture>
+#include <QGraphicsLinearLayout>
#include "themeselectionlist.h"
#include "themechangerdefs.h"
+class PreviewView : public HbView
+{
+public:
+
+ PreviewView(const QString &name, const QString &theme, QGraphicsItem* parent=0):
+ HbView(parent), preview(0), themePath(theme)
+ {
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+ HbLabel *label = new HbLabel(tr("Apply theme %1?").arg(name));
+ label->setFontSpec(HbFontSpec(HbFontSpec::Primary));
+ label->setElideMode(Qt::ElideNone);
+ layout->addItem(label);
+ QString previewPath("");
+ if (HbDeviceProfile::profile(this).orientation() == Qt::Horizontal) {
+ previewPath = themePath + "/scalable/qtg_graf_theme_preview_lsc.";
+ } else {
+ previewPath = themePath + "/scalable/qtg_graf_theme_preview_prt.";
+ }
+ QString nvgPreview(previewPath + "nvg");
+ QString svgPreview(previewPath + "svg");
+
+ if (QFile::exists(nvgPreview)) {
+ previewPath = nvgPreview;
+ } else if (QFile::exists(svgPreview)) {
+ previewPath = svgPreview;
+ } else {
+ previewPath = "qtg_large_corrupted";
+ }
+ preview = new HbIconItem(previewPath);
+ preview->setAspectRatioMode(Qt::KeepAspectRatio);
+ QSize s = HbDeviceProfile::profile(this).logicalSize();
+ preview->setPreferredSize(s);
+ layout->addItem(preview);
+ this->setLayout(layout);
+ }
+
+ ~PreviewView()
+ {
+ delete preview;
+ }
+
+ void resizeEvent(QGraphicsSceneResizeEvent *event)
+ {
+ Q_UNUSED(event);
+ if (preview) {
+ QString previewPath("");
+ if (HbDeviceProfile::profile(this).orientation() == Qt::Horizontal) {
+ previewPath = themePath + "/scalable/qtg_graf_theme_preview_lsc.";
+ } else {
+ previewPath = themePath + "/scalable/qtg_graf_theme_preview_prt.";
+ }
+ QString nvgPreview(previewPath + "nvg");
+ QString svgPreview(previewPath + "svg");
+
+ if (QFile::exists(nvgPreview)) {
+ previewPath = nvgPreview;
+ } else if (QFile::exists(svgPreview)) {
+ previewPath = svgPreview;
+ } else {
+ previewPath = "qtg_large_corrupted";
+ }
+
+ preview->setIconName(previewPath);
+ preview->setAspectRatioMode(Qt::KeepAspectRatio);
+ QSize s = HbDeviceProfile::profile(this).logicalSize();
+ preview->setPreferredSize(s);
+ }
+ }
+private:
+ HbIconItem *preview;
+ QString themePath;
+};
+
/**
* Constructor
*/
-ThemeSelectionList::ThemeSelectionList():
+ThemeSelectionList::ThemeSelectionList(HbMainWindow *mainWindow):
oldItemIndex(-1),
themelist(new HbListWidget(this)),
rightMark(new HbIcon(QString("qtg_small_tick"))),
- noMark(new HbIcon(QString("")))
+ noMark(new HbIcon(QString(""))),
+ previewView(0)
{
+ mMainWindow = mainWindow;
connect(themelist, SIGNAL(activated(HbListWidgetItem *)),this, SLOT(setChosen(HbListWidgetItem *)));
+ connect(themelist, SIGNAL(longPressed(HbListWidgetItem*, QPointF)),
+ this, SLOT(onLongPressed(HbListWidgetItem*, QPointF)));
+
setWidget(themelist);
// Automatic updation of the themelist when some theme is installed or uninstalled
@@ -60,7 +143,8 @@
}
}
connect(watcher,SIGNAL(directoryChanged(const QString &)),this,SLOT(updateThemeList(const QString &)));
- QObject::connect(this,SIGNAL(newThemeSelected(QString)),this,SLOT(sendThemeName(QString)));
+ QObject::connect(this,SIGNAL(newThemeSelected(QString)),this,SLOT(sendThemeName(QString)));
+ grabGesture(Qt::TapAndHoldGesture);
#ifdef THEME_CHANGER_TIMER_LOG
idleTimer = new QTimer(this);
connect(idleTimer, SIGNAL(timeout()), this, SLOT(processWhenIdle()));
@@ -109,7 +193,8 @@
QStringList iconthemeslist=dir.entryList(QDir::AllDirs|QDir::NoDotAndDotDot,QDir::Name);
foreach(QString themefolder, iconthemeslist) {
QDir iconThemePath(root.path()+"/themes/icons/"+themefolder);
- if(iconThemePath.exists("index.theme")) {
+ QFile themeIndexFile(root.path()+"/themes/"+themefolder+".themeindex");
+ if(themeIndexFile.exists() && iconThemePath.exists("index.theme")) {
QSettings iniSetting(iconThemePath.path()+"/index.theme",QSettings::IniFormat);
iniSetting.beginGroup("Icon Theme");
QString hidden = iniSetting.value("Hidden").toString();
@@ -129,6 +214,9 @@
item->setText("hbdefault");
item->setSecondaryText("hbdefault");
QString thumbPath(":/themes/icons/hbdefault/scalable/qtg_graf_theme_preview_thumbnail.svg");
+ if (!QFile::exists(thumbPath)) {
+ thumbPath = "qtg_large_corrupted";
+ }
HbIcon *icon = new HbIcon(thumbPath);
thumbnails.append(icon);
item->setIcon(*icon);
@@ -155,7 +243,17 @@
item->setText(name);
item->setSecondaryText(root.path()+"/themes/icons/"+list.at(i));
- QString thumbPath(root.path()+"/themes/icons/"+list.at(i)+"/scalable/qtg_graf_theme_preview_thumbnail.svg");
+ QString thumbPath(root.path()+"/themes/icons/"+list.at(i)+"/scalable/qtg_graf_theme_preview_thumbnail.");
+ QString nvgPath(thumbPath + "nvg");
+ QString svgPath(thumbPath + "svg");
+ if (QFile::exists(nvgPath)) {
+ thumbPath = nvgPath;
+ } else if (QFile::exists(svgPath)) {
+ thumbPath = svgPath;
+ }
+ else {
+ thumbPath = "qtg_large_corrupted";
+ }
HbIcon *icon = new HbIcon(thumbPath);
thumbnails.append(icon);
item->setIcon(*icon);
@@ -182,6 +280,9 @@
item->setText(defaultList.at(0));
item->setSecondaryText(defaultList.at(0));
QString thumbPath(":/themes/icons/hbdefault/scalable/qtg_graf_theme_preview_thumbnail.svg");
+ if (!QFile::exists(thumbPath)) {
+ thumbPath = "qtg_large_corrupted";
+ }
HbIcon *icon = new HbIcon(thumbPath);
thumbnails.append(icon);
item->setIcon(*icon);
@@ -235,22 +336,6 @@
}
}
-
-/**
- * event
- */
-bool ThemeSelectionList::event(QEvent *e)
-{
- if((e->type()==QEvent::ShortcutOverride)||(e->type()==QEvent::WindowDeactivate)) {
- // save old applied theme
- themelist->setCurrentRow(oldItemIndex);
- themelist->setFocus();
- setChosen(themelist->item(oldItemIndex));
- return true;
- }
- return (HbView::event(e));
-}
-
/**
* updateThemeList
*/
@@ -294,6 +379,47 @@
return rootDirs;
}
+void ThemeSelectionList::onLongPressed(HbListWidgetItem* listViewItem, const QPointF& coords)
+{
+ Q_UNUSED(coords);
+ if (previewView) {
+ delete previewView;
+ previewView = 0;
+ }
+ previewItem = listViewItem;
+ QString theme;
+ if (listViewItem->secondaryText() != "hbdefault") {
+ theme = listViewItem->secondaryText();
+ } else {
+ theme = ":/themes/icons/hbdefault";
+ }
+ previewView = new PreviewView(listViewItem->text(), theme, this);
+ mMainWindow->addView(previewView);
+
+ HbAction *act = new HbAction(tr("Ok"));
+ connect(act, SIGNAL(triggered()), this, SLOT(applyTheme()));
+ previewView->toolBar()->addAction(act);
+ act = new HbAction(tr("Cancel"));
+ connect(act, SIGNAL(triggered()), this, SLOT(cancelTheme()));
+ previewView->toolBar()->addAction(act);
+
+ mMainWindow->setCurrentView(previewView);
+}
+
+void ThemeSelectionList::cancelTheme()
+{
+ mMainWindow->removeView(mMainWindow->currentView());
+}
+
+void ThemeSelectionList::applyTheme()
+{
+ if (previewItem) {
+ setChosen(previewItem);
+ applySelection();
+ }
+ mMainWindow->removeView(mMainWindow->currentView());
+}
+
#ifdef THEME_CHANGER_TIMER_LOG
void ThemeSelectionList::processWhenIdle()
{
--- a/src/hbapps/hbthemechanger/themeselectionlist.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbapps/hbthemechanger/themeselectionlist.h Wed Jun 23 18:33:25 2010 +0300
@@ -42,23 +42,25 @@
Q_OBJECT
public:
- ThemeSelectionList();
+ ThemeSelectionList(HbMainWindow *mainWindow);
~ThemeSelectionList();
signals:
void newThemeSelected(const QString &newthemepath);
public slots:
void displayThemes();
void setChosen(HbListWidgetItem *item);
+ void onLongPressed(HbListWidgetItem* listViewItem, const QPointF& coords);
void applySelection();
void updateThemeList(const QString &path);
void sendThemeName(const QString& name);
+ void cancelTheme();
+ void applyTheme();
#ifdef THEME_CHANGER_TIMER_LOG
void processWhenIdle();
void themeChanged();
#endif
protected:
- bool event(QEvent *e);
void resizeEvent(QResizeEvent* event);
private:
static QStringList rootPaths();
@@ -69,6 +71,11 @@
HbIcon* noMark;
HbAction *action;
QList<HbIcon*> thumbnails;
+ HbAction* mOkAction;
+ HbAction* mCancelAction;
+ HbMainWindow *mMainWindow;
+ HbListWidgetItem* previewItem;
+ HbView *previewView;
QFileSystemWatcher *watcher;
QString iCurrentTheme;
--- a/src/hbcommon.pri Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcommon.pri Wed Jun 23 18:33:25 2010 +0300
@@ -71,6 +71,4 @@
}
# common extra targets
-include(flint.pri)
-include(astyle.pri)
include(coverage.pri)
--- a/src/hbcore/core/core.pri Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/core.pri Wed Jun 23 18:33:25 2010 +0300
@@ -54,7 +54,6 @@
PRIVATE_HEADERS += $$PWD/hbglobal_p.h
PRIVATE_HEADERS += $$PWD/hbinstance_p.h
PRIVATE_HEADERS += $$PWD/hbnamespace_p.h
-PRIVATE_HEADERS += $$PWD/hbstandarddirs_p.h
PRIVATE_HEADERS += $$PWD/hbtestabilityinterface_p.h
PRIVATE_HEADERS += $$PWD/hbthemeperf_p.h
PRIVATE_HEADERS += $$PWD/hbstringdata_p.h
@@ -81,7 +80,6 @@
SOURCES += $$PWD/hbgraphicsscene.cpp
SOURCES += $$PWD/hbinstance.cpp
SOURCES += $$PWD/hbnamespace.cpp
-SOURCES += $$PWD/hbstandarddirs.cpp
SOURCES += $$PWD/hbmemorymanager_p.cpp
SOURCES += $$PWD/hbsharedmemorymanager_p.cpp
SOURCES += $$PWD/hbsharedmemorymanagerut_p.cpp
--- a/src/hbcore/core/hbglobal.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/hbglobal.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -25,7 +25,7 @@
#include <hbglobal.h>
#include "hbglobal_p.h"
-#include "hbfeaturemanager_p.h"
+#include "hbfeaturemanager_r.h"
#include <QString>
#include <QCoreApplication>
--- a/src/hbcore/core/hblocalechangenotifier_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/hblocalechangenotifier_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -33,7 +33,7 @@
#endif // Q_OS_SYMBIAN
#include "hblocalechangenotifier_p.h"
-#include "hbfeaturemanager_p.h"
+#include "hbfeaturemanager_r.h"
#ifdef Q_OS_SYMBIAN
--- a/src/hbcore/core/hbmemorymanager_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/hbmemorymanager_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -33,7 +33,7 @@
#include "hbmemoryutils_p.h"
#define SHARED_CONTAINER_UNITTEST_PREFIX "unittest_hbsharedcontainer_"
-#define SHARED_MEMORYMANAGER_UNITTEST_PREFIX "unittest_hbmemorymanager"
+#define SHARED_MEMORYMANAGER_UNITTEST_PREFIX "unittest_hbsharedmemory"
/**
* helper function to know whether process is a shared container unittest
--- a/src/hbcore/core/hbmultisegmentallocator_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/hbmultisegmentallocator_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -68,7 +68,7 @@
* This allocates memory from main allocator and won't block main allocator's
* OOM exception.
*/
-void HbMultiSegmentAllocator::initialize(QSharedMemory *sharedChunk,
+void HbMultiSegmentAllocator::initialize(HbSharedMemoryWrapper *sharedChunk,
const unsigned int offset,
HbSharedMemoryAllocator *mainAllocator)
{
--- a/src/hbcore/core/hbsharedmemoryallocators_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/hbsharedmemoryallocators_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -47,10 +47,41 @@
// max. amount of different chunk sizes in multisegment allocator
static const int AMOUNT_OF_DIFFERENT_CHUNK_SIZES = 8;
-class HB_CORE_PRIVATE_EXPORT HbSharedMemoryAllocator
+
+// wrapper for hiding Symbian specific protected chunk
+class HbSharedMemoryWrapper
{
public:
- virtual void initialize(QSharedMemory *sharedChunk,
+ HbSharedMemoryWrapper(const QString &key, QObject *parent = 0);
+ ~HbSharedMemoryWrapper();
+
+ bool create(int size, QSharedMemory::AccessMode mode = QSharedMemory::ReadWrite);
+ QSharedMemory::SharedMemoryError error() const;
+ bool attach(QSharedMemory::AccessMode mode = QSharedMemory::ReadWrite);
+ void *data();
+ int size() const;
+
+#ifdef HB_HAVE_PROTECTED_CHUNK
+ void setErrorString(const QString &function, TInt errorCode);
+#endif
+private:
+#ifdef HB_HAVE_PROTECTED_CHUNK
+ QSharedMemory::SharedMemoryError wrapperError;
+ QString errorString;
+ const QString key;
+ RChunk chunk;
+ int memorySize;
+ void *memory;
+#else
+ QSharedMemory *chunk;
+#endif
+};
+
+
+class HbSharedMemoryAllocator
+{
+public:
+ virtual void initialize(HbSharedMemoryWrapper *sharedChunk,
const unsigned int offset = 0,
HbSharedMemoryAllocator *mainAllocator = 0) = 0;
virtual int alloc(int size) = 0;
@@ -63,8 +94,7 @@
};
-
-class HB_CORE_PRIVATE_EXPORT HbSplayTreeAllocator : public HbSharedMemoryAllocator
+class HbSplayTreeAllocator : public HbSharedMemoryAllocator
{
public:
HbSplayTreeAllocator();
@@ -73,7 +103,7 @@
int alloc(int size);
int allocatedSize(int offset);
void free(int offset);
- void initialize(QSharedMemory *sharedChunk,
+ void initialize(HbSharedMemoryWrapper *sharedChunk,
const unsigned int offset = 0,
HbSharedMemoryAllocator *mainAllocator = 0);
int size();
@@ -128,14 +158,14 @@
}
private:
- QSharedMemory *chunk;
+ HbSharedMemoryWrapper *chunk;
unsigned int offset;
HeapHeader *header;
};
-class HB_CORE_PRIVATE_EXPORT HbMultiSegmentAllocator : public HbSharedMemoryAllocator
+class HbMultiSegmentAllocator : public HbSharedMemoryAllocator
{
public:
HbMultiSegmentAllocator();
@@ -144,7 +174,7 @@
int alloc(int size);
int allocatedSize(int offset);
void free(int offset);
- void initialize(QSharedMemory *sharedChunk,
+ void initialize(HbSharedMemoryWrapper *sharedChunk,
const unsigned int offset = 0,
HbSharedMemoryAllocator *mainAllocator = 0);
#ifdef HB_THEME_SERVER_MEMORY_REPORT
@@ -182,7 +212,7 @@
}
private:
- QSharedMemory *chunk;
+ HbSharedMemoryWrapper *chunk;
unsigned int offset;
HbSharedMemoryAllocator *mainAllocator;
MultiAllocatorHeader *header;
--- a/src/hbcore/core/hbsharedmemorymanager_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/hbsharedmemorymanager_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -52,6 +52,172 @@
HbSharedMemoryManager *HbSharedMemoryManager::memManager = 0;
+#ifdef HB_HAVE_PROTECTED_CHUNK // Symbian, protected chunk
+HbSharedMemoryWrapper::HbSharedMemoryWrapper(const QString &key, QObject *parent) :
+ wrapperError(QSharedMemory::NoError),
+ key(key),
+ memorySize(0),
+ memory(0)
+{
+ Q_UNUSED(parent);
+}
+
+HbSharedMemoryWrapper::~HbSharedMemoryWrapper()
+{
+ chunk.Close();
+
+ memory = 0;
+ memorySize = 0;
+
+}
+
+void HbSharedMemoryWrapper::setErrorString(const QString &function, TInt errorCode)
+{
+ if (errorCode == KErrNone)
+ return;
+ switch (errorCode) {
+ case KErrAlreadyExists:
+ wrapperError = QSharedMemory::AlreadyExists;
+ errorString = QSharedMemory::tr("%1: already exists").arg(function);
+ break;
+ case KErrNotFound:
+ wrapperError = QSharedMemory::NotFound;
+ errorString = QSharedMemory::tr("%1: doesn't exists").arg(function);
+ break;
+ case KErrArgument:
+ wrapperError = QSharedMemory::InvalidSize;
+ errorString = QSharedMemory::tr("%1: invalid size").arg(function);
+ break;
+ case KErrNoMemory:
+ wrapperError = QSharedMemory::OutOfResources;
+ errorString = QSharedMemory::tr("%1: out of resources").arg(function);
+ break;
+ case KErrPermissionDenied:
+ wrapperError = QSharedMemory::PermissionDenied;
+ errorString = QSharedMemory::tr("%1: permission denied").arg(function);
+ break;
+ default:
+ errorString = QSharedMemory::tr("%1: unknown error %2").arg(function).arg(errorCode);
+ wrapperError = QSharedMemory::UnknownError;
+ }
+}
+
+bool HbSharedMemoryWrapper::create(int size, QSharedMemory::AccessMode mode)
+{
+ Q_UNUSED(mode);
+ TPtrC ptr(TPtrC16(static_cast<const TUint16*>(key.utf16()), key.length()));
+
+ TChunkCreateInfo info;
+ info.SetReadOnly();
+ info.SetGlobal(ptr);
+ info.SetNormal(size, size);
+
+ //TInt err = chunk.CreateGlobal(ptr, size, size); // Original Qt version
+ TInt err = chunk.Create(info);
+
+ QString function = QLatin1String("HbSharedMemoryWrapper::create");
+ setErrorString(function, err);
+
+ if (err != KErrNone)
+ return false;
+
+ // Zero out the created chunk
+ Mem::FillZ(chunk.Base(), chunk.Size());
+
+ memorySize = chunk.Size();
+ memory = chunk.Base();
+
+ return true;
+}
+
+QSharedMemory::SharedMemoryError HbSharedMemoryWrapper::error() const
+{
+ return wrapperError;
+}
+
+bool HbSharedMemoryWrapper::attach(QSharedMemory::AccessMode mode)
+{
+ Q_UNUSED(mode);
+ // Grab a pointer to the memory block
+ if (!chunk.Handle()) {
+ TPtrC ptr(TPtrC16(static_cast<const TUint16*>(key.utf16()), key.length()));
+
+ TInt err = KErrNoMemory;
+
+ err = chunk.OpenGlobal(ptr, false);
+
+ if (err != KErrNone) {
+ QString function = QLatin1String("HbSharedMemoryWrapper::attach");
+ setErrorString(function, err);
+ return false;
+ }
+ }
+
+ memorySize = chunk.Size();
+ memory = chunk.Base();
+
+ return true;
+}
+
+void *HbSharedMemoryWrapper::data()
+{
+ return memory;
+}
+
+int HbSharedMemoryWrapper::size() const
+{
+ return memorySize;
+}
+#else // use QSharedMemory
+HbSharedMemoryWrapper::HbSharedMemoryWrapper(const QString &key, QObject *parent)
+{
+ chunk = new QSharedMemory(key, parent);
+}
+
+HbSharedMemoryWrapper::~HbSharedMemoryWrapper()
+{
+ delete chunk;
+ chunk = 0;
+}
+
+bool HbSharedMemoryWrapper::create(int size, QSharedMemory::AccessMode mode)
+{
+ if (chunk) {
+ return chunk->create(size, mode);
+ }
+ return false;
+}
+
+QSharedMemory::SharedMemoryError HbSharedMemoryWrapper::error() const
+{
+ return chunk->error();
+}
+
+bool HbSharedMemoryWrapper::attach(QSharedMemory::AccessMode mode)
+{
+ if (chunk) {
+ return chunk->attach(mode);
+ }
+ return false;
+}
+
+void *HbSharedMemoryWrapper::data()
+{
+ if (chunk) {
+ return chunk->data();
+ }
+ return 0;
+}
+
+int HbSharedMemoryWrapper::size() const
+{
+ if (chunk) {
+ return chunk->size();
+ }
+ return 0;
+}
+#endif
+
/* Functions implementation of HbSharedMemoryManager class */
/**
@@ -66,7 +232,7 @@
return true;
}
bool success = false;
- chunk = new QSharedMemory(HB_THEME_SHARED_PIXMAP_CHUNK);
+ chunk = new HbSharedMemoryWrapper(HB_THEME_SHARED_PIXMAP_CHUNK);
// check if app filename is same as server filename ..
// ToDo: improve server identification logic.. UID on symbian?
const QString &appName = HbMemoryUtils::getCleanAppName();
@@ -113,15 +279,20 @@
#ifdef Q_OS_SYMBIAN
if (!binCSSConverterApp) {
- QString memoryFile("z:/resource/hb/themes/css.bin");
+ QString memoryFile("z:/resource/hb/themes/hbdefault.cssbin");
memoryFileSize = loadMemoryFile(memoryFile);
}
#endif
// Put main allocator after the memory file or if memory file was not loaded, after chunk header.
chunkHeader->mainAllocatorOffset = memoryFileSize ? ALIGN(memoryFileSize)
: sizeof(HbSharedChunkHeader);
+ // Clear also allocator identifier so that they will not try to re-connect
+ int *mainAllocatorIdentifier = address<int>(chunkHeader->mainAllocatorOffset);
+ *mainAllocatorIdentifier = 0;
mainAllocator->initialize(chunk, chunkHeader->mainAllocatorOffset);
chunkHeader->subAllocatorOffset = alloc(SPACE_NEEDED_FOR_MULTISEGMENT_ALLOCATOR);
+ int *subAllocatorIdentifier = address<int>(chunkHeader->subAllocatorOffset);
+ *subAllocatorIdentifier = 0;
subAllocator->initialize(chunk, chunkHeader->subAllocatorOffset, mainAllocator);
chunkHeader->identifier = INITIALIZED_CHUNK_IDENTIFIER;
--- a/src/hbcore/core/hbsharedmemorymanager_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/hbsharedmemorymanager_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -41,6 +41,7 @@
#if !defined(HB_BOOTSTRAPPED) || defined(HB_BIN_CSS)
class QSharedMemory;
+class HbSharedMemoryWrapper;
class HbSharedMemoryAllocator;
class HbSharedCache;
@@ -87,7 +88,7 @@
bool writable;
HbSharedMemoryAllocator *mainAllocator;
HbSharedMemoryAllocator *subAllocator;
- QSharedMemory *chunk;
+ HbSharedMemoryWrapper *chunk;
private:
static HbSharedMemoryManager *memManager;
--- a/src/hbcore/core/hbsharedmemorymanagerut_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/hbsharedmemorymanagerut_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -43,7 +43,7 @@
bool success = false;
if ( !chunk ) {
- chunk = new QSharedMemory(HB_THEME_SHARED_AUTOTEST_CHUNK);
+ chunk = new HbSharedMemoryWrapper(HB_THEME_SHARED_AUTOTEST_CHUNK);
success = chunk->create( CACHE_SIZE, QSharedMemory::ReadWrite );
// If SharedMemory Already Exists.
// (This can happpen if ThemeServer crashed without releasing QSharedMemory)
@@ -63,15 +63,21 @@
if (success) {
// if we are recovering from theme server crash, shared chunk may
// already be ready
+ bool enableRecovery = false;
HbSharedChunkHeader *chunkHeader = (HbSharedChunkHeader*)(chunk->data());
- if (chunkHeader->identifier == INITIALIZED_CHUNK_IDENTIFIER) {
+ if (enableRecovery && chunkHeader->identifier == INITIALIZED_CHUNK_IDENTIFIER) {
// just reconnect allocators to the shared chunk
mainAllocator->initialize(chunk, chunkHeader->mainAllocatorOffset);
subAllocator->initialize(chunk, chunkHeader->subAllocatorOffset, mainAllocator);
} else {
chunkHeader->mainAllocatorOffset = sizeof(HbSharedChunkHeader);
+ // Clear also allocator identifier so that they will not try to re-connect
+ int *mainAllocatorIdentifier = reinterpret_cast<int *>(static_cast<char *>(base()) + chunkHeader->mainAllocatorOffset);
+ *mainAllocatorIdentifier = 0;
mainAllocator->initialize(chunk, chunkHeader->mainAllocatorOffset);
chunkHeader->subAllocatorOffset = alloc(SPACE_NEEDED_FOR_MULTISEGMENT_ALLOCATOR);
+ int *subAllocatorIdentifier = reinterpret_cast<int *>(static_cast<char *>(base()) + chunkHeader->subAllocatorOffset);
+ *subAllocatorIdentifier = 0;
subAllocator->initialize(chunk, chunkHeader->subAllocatorOffset, mainAllocator);
chunkHeader->identifier = INITIALIZED_CHUNK_IDENTIFIER;
--- a/src/hbcore/core/hbsplaytreeallocator_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/hbsplaytreeallocator_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -44,7 +44,7 @@
* Initializes splay tree and internal variables.
* This can't fail if sharedChunk is valid.
*/
-void HbSplayTreeAllocator::initialize(QSharedMemory *sharedChunk,
+void HbSplayTreeAllocator::initialize(HbSharedMemoryWrapper *sharedChunk,
const unsigned int offset,
HbSharedMemoryAllocator *mainAllocator)
{
@@ -495,8 +495,8 @@
int HbSplayTreeAllocator::size()
{
// splay the 'pointer' tree to obtain last pointer
- TreeNode *node = TO_NODE_POINTER(splay(&header->pointerNode,
- reinterpret_cast<unsigned int>(address<char>(chunk->size()))));
+ unsigned int last_offset = static_cast<unsigned int>(chunk->size());
+ TreeNode *node = TO_NODE_POINTER(splay(&header->pointerNode, last_offset));
if (node) {
TreeNode *right = TO_NODE_POINTER(node->rightNode);
--- a/src/hbcore/core/hbstandarddirs.cpp Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,452 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (developer.feedback@nokia.com)
-**
-** This file is part of the HbCore module of the UI Extensions for Mobile.
-**
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this file.
-** Please review the following information to ensure the GNU Lesser General
-** Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at developer.feedback@nokia.com.
-**
-****************************************************************************/
-
-#include "hbstandarddirs_p.h"
-#include "hbicontheme_p.h"
-#include "hblayeredstyleloader_p.h"
-#include "hbthemeutils_p.h"
-#include <QtCore/QCoreApplication>
-#include <QtCore/QDir>
-#include <QtCore/QFile>
-#include <QtCore/qdebug.h>
-#include <QtAlgorithms>
-#include <QResource>
-#include <sys/stat.h>
-
-// Standard theme root dirs
-const char *CoreResourcesRootDir = ":";
-
-// Private API
-// WARNING: This API is at prototype level and shouldn't be used before
-// the resource fetching with theming is fully implemented
-class HbStandardDirsInstance
-{
-public:
- HbStandardDirsInstance();
- ~HbStandardDirsInstance();
-
- void clearIconDirs();
-
- // Explicitly add/remove dir in cached dir contents
- void addIconDir( const QString &dir );
- void removeIconDir( const QString &dir );
-
- // Return icon filename if it exists in file system,
- // otherwise return empty string.
- QString findIcon( const QString &fullFileName );
- QStringList rootPaths() const { return rootPathList; }
-private:
- // Root Directory Path sepecific to the Platform
- void constructRootPathList();
- QStringList additionalRootPath();
- int fileSize(QByteArray fileName);
-private:
- // Cached contents of icon directories
- QMap<QString, QStringList> iconDirs;
- QStringList rootPathList;
- QStringList extList;
-};
-
-// Static instance
-static HbStandardDirsInstance instance;
-
-class HbResource : public QResource
-{
-public:
- HbResource( const QString &dir ):QResource( dir ){}
- QStringList entryList() {
- return children();
- }
-};
-
-HbStandardDirsInstance::HbStandardDirsInstance()
-{
- constructRootPathList();
-#ifdef HB_NVG_CS_ICON
- extList << ".nvg";
-#endif
- extList << ".svg" << ".qpic" << ".png" << ".mng" << ".gif" << ".xpm" << ".jpg";
-}
-
-HbStandardDirsInstance::~HbStandardDirsInstance()
-{
-}
-
-void HbStandardDirsInstance::clearIconDirs()
-{
- iconDirs.clear();
-}
-
-void HbStandardDirsInstance::addIconDir( const QString &dir )
-{
- QStringList list;
- if (dir.startsWith(QLatin1Char( ':' ))) {
- // try to find all files assuming its a resource directory
- HbResource resource(dir);
- if (resource.isValid()) {
- list = resource.entryList();
- }
- }
- else {
-
- QDir directory(dir);
- // File list is sorted by filename so binary search used in findIcon function works.
- // The sorting of QDirSortItems is slow, so we sort the resulting strings instead:
- // QStringList list = directory.entryList(QDir::Files, QDir::Name | QDir::IgnoreCase);
- list = directory.entryList(QDir::Files, QDir::Unsorted);
- }
- list.sort();
-
- iconDirs.insert( dir, list );
-}
-
-void HbStandardDirsInstance::removeIconDir( const QString &dir )
-{
- iconDirs.remove(dir);
-}
-
-QString HbStandardDirsInstance::findIcon( const QString &fullFileName )
-{
- // Enable this for profiling memory consumption.
- // It counts how many characters are stored in the directory contents cache.
-#if 0
- int charSize = 0;
-
- for (QMap<QString, QStringList>::const_iterator z = iconDirs.constBegin(); z != iconDirs.constEnd(); ++z) {
- QStringList list = z.value();
- charSize += iconDirs.key(list).length();
-
- for (int zz=0; zz<list.count(); ++zz) {
- charSize += list[zz].length();
- }
- }
-#endif
-
- // Store path
- QString fullFileNameLocal = fullFileName;
-
- // Find the directory part from the full filename
- int index1 = fullFileNameLocal.lastIndexOf('/');
- int index2 = fullFileNameLocal.lastIndexOf('\\');
-
- int index = index1 > index2 ? index1 : index2;
- if (index > 0) {
- QString dir = fullFileNameLocal.left(index);
-
- // Try to fetch the dir from the cached dir contents
- QMap<QString, QStringList>::const_iterator i = iconDirs.find(dir);
- // Dir not found, add it
- if (i == iconDirs.constEnd()) {
- QDir LocalDir(dir) ;
- if(LocalDir.exists()) {
- addIconDir(dir);
- i = iconDirs.find(dir);
- }
- }
- if(i != iconDirs.constEnd()) {
- QStringList list = i.value();
- // Search for the file from the cached dir contents
- if (!list.isEmpty()) {
- QString file = fullFileNameLocal.right(fullFileNameLocal.length() - index - 1);
- // Remove extension
- int extensionIndex = file.lastIndexOf('.');
- int extensionLength = 0;
- bool searchAllIconExtensions = true;
- if (extensionIndex > 0) {
- searchAllIconExtensions = false;
- }
- // If no extension was given or given extension is one of the supported ones, search
- // for icons with all the supported icon file extensions
- if (searchAllIconExtensions) {
- foreach (const QString &extension, extList) {
- if (qBinaryFind(list, file + extension) != list.constEnd()) {
- // Icon found, return its full path with the correct extension
- if (extensionLength) {
- return fullFileName.left(fullFileName.length() - extensionLength) + extension;
- }
- else {
- return fullFileName + extension;
- }
- }
- }
- } else {
- // Some other extension was given (e.g. ".theme"), search only for that file.
- if (qBinaryFind(list, file) != list.constEnd()) {
- return fullFileName;
- }
- }
- }
- }
- }
- return QString();
-}
-
-void HbStandardDirsInstance::constructRootPathList()
-{
-#if defined(Q_OS_SYMBIAN)
- rootPathList << QLatin1String("z:/resource/hb")
- << QLatin1String("c:/resource/hb")
- << QLatin1String("e:/resource/hb")
- << QLatin1String("f:/resource/hb");
-#else
- const QString &mainThemesDir = HbStandardDirs::themesDir();
- if (!mainThemesDir.isEmpty()) {
- rootPathList << mainThemesDir;
- }
-#endif
-#if defined(Q_OS_MAC)
- rootPathList << QDir::homePath() + QLatin1String("/Library/UI Extensions for Mobile");
-#endif
-
- // Add core resource dir as well
- rootPathList << CoreResourcesRootDir;
-}
-
-QStringList HbStandardDirsInstance::additionalRootPath()
-{
- static QStringList rootpaths;
- if (!rootpaths.isEmpty()) return rootpaths;
- QFile rootPathFile(rootPathsFile);
- if (rootPathFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
- QTextStream in(&rootPathFile);
- rootpaths.clear();
- while (!in.atEnd()) {
- QString line = in.readLine();
- QDir rootdir(line);
- if (rootdir.exists()) {
- rootpaths.append(line);
- }
- }
- }
- return rootpaths;
-}
-
-/*
- typeOfResource
- 1. "icons"
- only one supported right now
-
-// Important: This function should just return a directory if the resource was found. Otherwise
-// return empty string! Calling functions will trust it!!
-
-*/
-QString HbStandardDirs::findResource(const QString &name, Hb::ResourceType resType)
-{
- if (resType == Hb::IconResource ||
- resType == Hb::ThemeResource ||
- resType == Hb::EffectResource)
- {
- QString absolutePath;
-
- QStringList rootDirs;
-
- if (QDir::isRelativePath(name)) {
-#ifdef HB_TOOL_INTERFACE
- // Additional root directory support Currently used by tools only.
- // This may not be needed if themes tool start using HB_THEMES_DIR to set their
- // root dir
- rootDirs << instance.additionalRootPath();
-#endif
- rootDirs << instance.rootPaths();
- } else {
- // Given filename has an absolute path, use that.
- absolutePath = name;
- }
- if (resType == Hb::IconResource ) {
- // Relative path was given, search in the standard icon folders
- if (absolutePath.isEmpty()) {
- foreach ( const QString &prefix, rootDirs) {
- absolutePath = prefix + '/' + name;
- // Check file existence from instance, it caches directory contents
- // to speed up the lookup
- QString ret = instance.findIcon(absolutePath);
- if (!ret.isEmpty()) {
- return ret;
- }
- }
- } else {
- // Absolute path was given, only search in that folder
- return instance.findIcon(absolutePath);
- }
- }
- else if (resType == Hb::ThemeResource) {
- QFile file;
- bool fileExists = false;
- foreach ( const QString &prefix, rootDirs ) {
- if (absolutePath.isEmpty()) {
- absolutePath = prefix + '/' + name;
- }
- // Check for the availability of the file, as QFile::Exists takes more
- // time this method is used
- file.setFileName(absolutePath);
- fileExists = file.open(QIODevice::ReadOnly);
- file.close();
- if ( fileExists ) {
- return absolutePath;
- }
- }
- }
- else if (resType == Hb::EffectResource) {
- QFile file;
- bool fileExists = false;
- foreach ( const QString &prefix, rootDirs ) {
- if (absolutePath.isEmpty()) {
- absolutePath = prefix + '/' + name;
- }
- // Check for the availability of the file, as QFile::Exists takes more
- // time this method is used
- file.setFileName(absolutePath);
- fileExists = file.open(QIODevice::ReadOnly);
- file.close();
- if( fileExists ) {
- return absolutePath;
- }
- }
- }
- }
- return QString();
-}
-
-/* @param pathList. List of paths, relative or absolute. Modified to absolute paths.
- * @param typeOfResource Type of Resource, can be Hb::StyleSheetResource or Hb::EffectResource.
- *
- * --------------------------------------------------------------------------------------
- * This function is no longer needed for anything else than finding colorgroup css files.
- *
- * It can be removed (or whole HbStandardDirs can be removed) when color css files are moved to themeindex.
- * --------------------------------------------------------------------------------------
- *
- */
-void HbStandardDirs::findResourceList(QMap<int, QString> &pathList,
- Hb::ResourceType resType, bool assumeAbsolutesExists)
-{
- QString absolutePath;
- QString path;
- if (resType == Hb::StyleSheetResource || resType == Hb::EffectResource) {
- QStringList rootDirs;
- QMutableMapIterator<int, QString> i(pathList);
- rootDirs
-#ifdef HB_TOOL_INTERFACE
- // Additional root directory support Currently used by tools only.
- // This may not be needed if themes tool start using HB_THEMES_DIR to set their
- // root dir
- << instance.additionalRootPath()
-#endif
- << instance.rootPaths();
- QFile file;
- bool fileExists = false;
- while (i.hasNext()) {
- i.next();
- if (QDir::isAbsolutePath(i.value())) {
- fileExists = (assumeAbsolutesExists) ? true : QFile::exists(i.value());
- } else {
- fileExists = false;
- foreach ( const QString &prefix, rootDirs ) {
- absolutePath = prefix + '/' + i.value();
- // Check for the availability of the file, as QFile::Exists takes more
- // time this method is used
- file.setFileName(absolutePath);
- fileExists = file.open(QIODevice::ReadOnly);
- file.close();
- if (fileExists) {
- i.setValue(absolutePath);
- break;
- }
- }
- }
- if (!fileExists) {
- i.remove();
- }
- }
- }
-}
-
-QStringList HbStandardDirs::findExistingFolderList(const QStringList &relativeFolderPaths,
- const QString ¤tThemeName,
- Hb::ResourceType resType)
-{
- int baseThemeIndex = 0;
- return findExistingFolderList(relativeFolderPaths, currentThemeName, resType, baseThemeIndex);
-}
-
-QStringList HbStandardDirs::findExistingFolderList(const QStringList &relativeFolderPaths,
- const QString ¤tThemeName,
- Hb::ResourceType resType,
- int &baseThemeIndex)
-{
- QString absolutePath;
- QStringList existingPaths;
-
- QStringList rootDirs;
- rootDirs
-#ifdef HB_TOOL_INTERFACE
- // Additional root directory support Currently used by tools only.
- // This may not be needed if themes tool start using HB_THEMES_DIR to set their
- // root dir
- << instance.additionalRootPath()
-#endif
- << instance.rootPaths();
-
- foreach (const QString &path, relativeFolderPaths) {
- if (QDir::isAbsolutePath(path)) {
- if(QFile::exists(path)) {
- existingPaths.append(path);
- }
- } else {
- foreach( const QString &prefix, rootDirs) {
- absolutePath = prefix + '/' + path;
- // Check for the availability of the file
- if( QFile::exists(absolutePath) ) {
- existingPaths.append(absolutePath);
- // Assuming each path will be there only in one root directory
- // (not supporting a single theme scattered in multiple root dirs)
- break;
- }
- }
- }
- }
- // Appending base theme folder
- const HbThemeInfo &themeInfo = HbThemeUtils::baseTheme();
- if (themeInfo.name != currentThemeName && resType == Hb::EffectResource) {
- existingPaths.append(themeInfo.rootDir + '/' + HbThemeUtils::platformHierarchy + '/' + HbThemeUtils::effectsResourceFolder + '/' + themeInfo.name + '/');
- baseThemeIndex = existingPaths.count() - 1;
- }
-
- return existingPaths;
-}
-
-QString HbStandardDirs::themesDir()
-{
-#ifdef Q_OS_SYMBIAN
- static QString mainThemesDir("Z:/resource/hb");
-#else
- static QString mainThemesDir = QDir::fromNativeSeparators(qgetenv("HB_THEMES_DIR"));
-#endif
- QString s("");
- if (!mainThemesDir.isEmpty()) {
- s.append(QDir(mainThemesDir).absolutePath());
- }
- return s;
-}
--- a/src/hbcore/core/hbstandarddirs_p.h Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (developer.feedback@nokia.com)
-**
-** This file is part of the HbCore module of the UI Extensions for Mobile.
-**
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this file.
-** Please review the following information to ensure the GNU Lesser General
-** Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at developer.feedback@nokia.com.
-**
-****************************************************************************/
-
-#ifndef HBSTANDARDDIRS_P_H
-#define HBSTANDARDDIRS_P_H
-
-#include <QtCore/QString>
-#include <QDir>
-#include <hbnamespace.h>
-
-// The theme root path is platform-dependent
-#if defined(Q_OS_WIN)
-const QString rootPathsFile = "c:/theme/themerootsdir.txt";
-#elif defined(Q_OS_SYMBIAN)
-const QString rootPathsFile = "c:/data/theme/themerootsdir.txt";
-#elif defined(Q_OS_MAC)
-const QString rootPathsFile =
- QDir::homePath() + QString("Library/UI Extensions for Mobile/themes/themerootsdir.txt");
-#elif defined(Q_OS_UNIX)
-const QString rootPathsFile = "/usr/local/hb/theme/themerootsdir.txt";
-#endif
-
-// Standard theme root dirs
-extern const char *CoreResourcesRootDir;
-// WARNING: This API is at prototype level and shouldn't be used before
-// the resource fetching with theming is fully implemented
-class HbStandardDirs
-{
-public:
- static QString findResource(
- const QString &name,
- Hb::ResourceType resType );
-
- static void findResourceList(
- QMap<int,QString> &pathList,
- Hb::ResourceType resType, bool assumeAbsolutesExists = false);
-
- static QStringList findExistingFolderList(
- const QStringList &relativeFolderPaths,
- const QString ¤tThemeName, Hb::ResourceType resType);
-
- static QStringList findExistingFolderList(
- const QStringList &relativeFolderPaths,
- const QString ¤tThemeName, Hb::ResourceType resType,
- int &baseThemeIndex);
-
- static QString themesDir();
-};
-
-#endif
--- a/src/hbcore/core/hbthemeindex.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/hbthemeindex.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -64,13 +64,11 @@
// First check base theme, which should be always valid
HbThemeIndexInfo info = HbThemeUtils::getThemeIndexInfo(BaseTheme);
- if (info.themeIndexOffset == 0) { // This shouldn't happen, as there must be valid base theme
+ if (!info.address) { // This shouldn't happen, as there must be valid base theme
return; // Data will be 0
}
- const char *baseAddress = HbMemoryUtils::getAddress<char>(HbMemoryManager::SharedMemory,
- info.themeIndexOffset);
- HbThemeIndex baseIndex(baseAddress);
+ HbThemeIndex baseIndex(info.address);
const HbThemeIndexItemData *baseItemData = baseIndex.getItemData(resourceName);
if (!baseItemData) { // If the item is not found from base theme, it can't be found elsewhere
@@ -86,11 +84,8 @@
// Base wasn't locked, next check operator theme in C-drive
info = HbThemeUtils::getThemeIndexInfo(OperatorC);
- if (info.themeIndexOffset > 0) {
- const char *operatorCAddress =
- HbMemoryUtils::getAddress<char>(HbMemoryManager::SharedMemory,
- info.themeIndexOffset);
- HbThemeIndex operatorCIndex(operatorCAddress);
+ if (info.address) {
+ HbThemeIndex operatorCIndex(info.address);
const HbThemeIndexItemData *operatorCItemData = operatorCIndex.getItemData(resourceName);
if (operatorCItemData) { // Found, use it
@@ -104,11 +99,8 @@
// Not found from operator theme in C-drive, next check operator theme in ROM
info = HbThemeUtils::getThemeIndexInfo(OperatorROM);
- if (info.themeIndexOffset > 0) {
- const char *operatorZAddress =
- HbMemoryUtils::getAddress<char>(HbMemoryManager::SharedMemory,
- info.themeIndexOffset);
- HbThemeIndex operatorZIndex(operatorZAddress);
+ if (info.address) {
+ HbThemeIndex operatorZIndex(info.address);
const HbThemeIndexItemData *operatorZItemData = operatorZIndex.getItemData(resourceName);
if (operatorZItemData) { // Found, use it
@@ -122,11 +114,8 @@
// Not found from operator themes, try active theme
info = HbThemeUtils::getThemeIndexInfo(ActiveTheme);
- if (info.themeIndexOffset > 0) {
- const char *activeThemeAddress =
- HbMemoryUtils::getAddress<char>(HbMemoryManager::SharedMemory,
- info.themeIndexOffset);
- HbThemeIndex activeThemeIndex(activeThemeAddress);
+ if (info.address) {
+ HbThemeIndex activeThemeIndex(info.address);
const HbThemeIndexItemData *activeThemeItemData =
activeThemeIndex.getItemData(resourceName);
@@ -155,6 +144,12 @@
bool HbThemeIndexResource::isValid()
{
+ if (data && data->itemType == HbThemeIndexItemData::ColorItem) {
+ Q_ASSERT_X(!(data->flags & HbThemeIndexItemData::Reference),
+ "HbThemeIndexResource::isValid()",
+ "Reference to another color variable not supported");
+ }
+
if (data) {
return true;
}
@@ -336,6 +331,15 @@
return fullName;
}
+QColor HbThemeIndexResource::colorValue()
+{
+ if (!data || data->itemType != HbThemeIndexItemData::ColorItem) {
+ return QColor();
+ }
+
+ return QColor(data->colorValue);
+}
+
// Class HbThemeIndex has the logic of handling different versions of
// the theme index file formats.
@@ -428,38 +432,18 @@
bool indexOK = false;
- if (sizeof(HbThemeIndexHeaderV1)
- + (mItemCount * sizeof(HbThemeIndexItemData)) == byteSize) {
+ qint64 indexCalculatedSize = (qint64)(sizeof(HbThemeIndexHeaderV1) +
+ (mItemCount * sizeof(HbThemeIndexItemData)));
+
+ if (indexCalculatedSize == byteSize) {
indexOK = true;
}
#ifdef THEME_INDEX_TRACES
if (!indexOK) {
- qDebug() << "ThemeIndex: Index file corrupted!";
+ qDebug() << "ThemeIndex: Index file corrupted (index size is wrong)!";
}
#endif
- /* Todo: fix
- // Validate items
- for (int i = 0; i < mItemCount; i++) {
- const HbThemeIndexItem *item = mThemeItemArray++;
- if (!item ||
- item->itemNameOffset < stringAreaStart || item->itemNameOffset >= byteSize ||
- item->itemFolderOffset < stringAreaStart || item->itemFolderOffset >= byteSize ||
- item->extOffset < stringAreaStart || item->extOffset >= byteSize ||
- (item->mirroredExtOffset != -1 &&
- (item->mirroredExtOffset < stringAreaStart || item->mirroredExtOffset >= byteSize))) {
-
- indexOK = false;
- break;
- }
- }
-*/
- #ifdef THEME_INDEX_TRACES
- if (!indexOK) {
- qDebug() << "ThemeIndex: Icons NOK! Stopping validation.";
- }
- #endif
-
return indexOK;
}
--- a/src/hbcore/core/hbthemeindex_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/hbthemeindex_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -68,7 +68,8 @@
enum Flag {
Default = 0x00,
Mirrorable = 0x01,
- Locked = 0x02
+ Locked = 0x02,
+ Reference = 0x04
};
enum Type {
@@ -83,7 +84,8 @@
SvgzItem = 8, // .svgz
QpicItem = 9, // .qpic
FxmlItem = 10, // .fxml
- AxmlItem = 11 // .axml
+ AxmlItem = 11, // .axml
+ ColorItem = 12 // color variable
};
HbThemeIndexItemData() :
@@ -102,7 +104,11 @@
// These will go to every themable item, but overhead is still small
// because most of the items are icons
- quint32 mirroredItemType; // from enum Type
+ union
+ {
+ quint32 mirroredItemType; // from enum Type
+ quint32 colorValue;
+ };
qint32 defaultWidth;
qint32 defaultHeight;
qint32 mirroredWidth;
@@ -123,6 +129,7 @@
bool isLocked();
QString fullFileName();
QString fullMirroredFileName();
+ QColor colorValue();
private:
void getResourceData();
--- a/src/hbcore/core/hbthemesystemeffect.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/hbthemesystemeffect.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -23,10 +23,9 @@
**
****************************************************************************/
-
-#include "hbstandarddirs_p.h"
#include "hbthemesystemeffect_p.h"
#include "hbthemesystemeffectmap_p.h"
+#include "hbthemeutils_p.h"
#include <QApplication>
#include <QDebug>
@@ -106,7 +105,7 @@
QString confPath;
// Try registering the theme specific effects
- if (getThemeEffectFolder(confPath, themeName)) {
+ if (getThemeEffectFolder(confPath)) {
HbThemeSystemEffectMap *themeEffects = parseConfigurationFile(confPath);
if (themeEffects->entryCount()) {
verifyAllEffectsFound(*themeEffects);
@@ -125,37 +124,32 @@
}
}
-bool HbThemeSystemEffect::getThemeEffectFolder(QString &path, const QString &themeName)
+bool HbThemeSystemEffect::getThemeEffectFolder(QString &path)
{
bool pathFound = false;
- QString effectDir = "themes/effects/" + themeName + "/";
- QStringList queryList;
- queryList.append(effectDir);
- int baseThemeIndex = -1;
- QStringList folderList = HbStandardDirs::findExistingFolderList(queryList,
- themeName,
- Hb::EffectResource,
- baseThemeIndex);
- // Search for current theme effect folder
- QString pathCandidate;
- for (int i = 0; i < folderList.count(); i++) {
- pathCandidate = folderList.at(i);
- // Skip resource folders
- if (!pathCandidate.startsWith(":/") && i != baseThemeIndex) {
- path = pathCandidate;
- pathFound = true;
- break;
+ HbThemeIndexInfo info = HbThemeUtils::getThemeIndexInfo(ActiveTheme);
+ // QT resource filenames cannot be used because filenames are passed
+ // to native Symbian component, which does not read QT resources.
+ if (!info.path.startsWith(':')) {
+ pathFound = true;
+ path = info.path;
+ path.append("/effects/");
+ path.append(info.name);
+ path.append('/');
+ }
+
+ // Get also base theme effects folder - todo: should operator theme layer be looked up as well?
+ if (mBaseEffectsFolder.isEmpty()) {
+ info = HbThemeUtils::getThemeIndexInfo(BaseTheme);
+ if (!info.path.startsWith(':')) {
+ mBaseEffectsFolder = info.path;
+ mBaseEffectsFolder.append("/effects/");
+ mBaseEffectsFolder.append(info.name);
+ mBaseEffectsFolder.append('/');
}
}
- // Save base theme effect folder path if not saved already
- if (baseThemeIndex >= 0 && mBaseEffectsFolder.isEmpty()) {
- QString baseEffectsFolder = folderList.at(baseThemeIndex);
- if (!baseEffectsFolder.startsWith(":/")) {
- mBaseEffectsFolder = baseEffectsFolder;
- }
- }
return pathFound;
}
@@ -351,18 +345,18 @@
bool validFile = false;
// Check if file is found in theme effect folder
if (!fromBaseTheme) {
- validFile = QFile(effects->effectsFolder() + effectFile).exists();
+ validFile = QFile::exists(effects->effectsFolder() + effectFile);
// Not found -> Check if file is found in base theme effect folder
if (!validFile && !instance()->mBaseEffectsFolder.isEmpty()
&& instance()->mBaseEffectsFolder != effects->effectsFolder()) {
- validFile = QFile(instance()->mBaseEffectsFolder + effectFile).exists();
+ validFile = QFile::exists(instance()->mBaseEffectsFolder + effectFile);
if (validFile) {
fromBaseTheme = true;
}
}
// Other entry files found in base theme -> this should be found there too
} else {
- validFile = QFile(instance()->mBaseEffectsFolder + effectFile).exists();
+ validFile = QFile::exists(instance()->mBaseEffectsFolder + effectFile);
}
return validFile;
}
--- a/src/hbcore/core/hbthemesystemeffect_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/hbthemesystemeffect_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -46,7 +46,7 @@
private:
HbThemeSystemEffect(QObject *parent);
void setCurrentTheme(const QString &themeName);
- bool getThemeEffectFolder(QString &path, const QString &themeName);
+ bool getThemeEffectFolder(QString &path);
void verifyAllEffectsFound(HbThemeSystemEffectMap &effects);
void registerEffects(const HbThemeSystemEffectMap *effects);
HbThemeSystemEffectMap *parseBaseThemeEffects();
--- a/src/hbcore/core/hbthemesystemeffectmap.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/core/hbthemesystemeffectmap.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -29,10 +29,10 @@
#ifdef Q_OS_SYMBIAN
#include <babitflags.h>
-//#include <w32std.h>
-//#include <graphics/wstfxconst.h>
+#include <w32std.h>
+#include <graphics/wstfxconst.h>
-//const TInt tfxPurpose = Qt::Window;
+const TInt tfxPurpose = Qt::Window;
#endif //Q_OS_SYMBIAN
#ifdef HBTHEMESYSTEMEFFECT_DEBUG
@@ -149,10 +149,10 @@
#endif //HBTHEMESYSTEMEFFECT_DEBUG
#ifdef Q_OS_SYMBIAN
-void HbThemeSystemEffectMap::unregisterAllEffects(RWsSession &/*wsSession*/) const
+void HbThemeSystemEffectMap::unregisterAllEffects(RWsSession &wsSession) const
{
// Unregister all previous theme effects
- //wsSession.UnregisterAllEffects();
+ wsSession.UnregisterAllEffects();
}
void HbThemeSystemEffectMap::registerEffects(RWsSession &wsSession,
@@ -169,22 +169,22 @@
// If no effect files defined, unregister effect
if (mapIt.value().mOutgoingFile.isEmpty()
&& mapIt.value().mIncomingFile.isEmpty()) {
- //wsSession.UnregisterEffect(tfxAction, tfxPurpose, mapIt.key().mAppUid);
+ wsSession.UnregisterEffect(tfxAction, tfxPurpose, mapIt.key().mAppUid);
} else {
TPtrC outgoingEffect = mapIt.value().mOutgoingFile.utf16();
TPtrC incomingEffect = mapIt.value().mIncomingFile.utf16();
TPtrC resourceDir = mapIt.value().mFromBaseTheme ? baseResourceDir : themeResourceDir;
TBitFlags effectFlags;
if (mapIt.value().mIncomingHasPriority) {
- //effectFlags.Set(ETfxIncomingTakesPriority);
+ effectFlags.Set(ETfxIncomingTakesPriority);
}
- //wsSession.RegisterEffect(tfxAction,
- // tfxPurpose,
- // resourceDir,
- // outgoingEffect,
- // incomingEffect,
- // mapIt.key().mAppUid,
- // effectFlags);
+ wsSession.RegisterEffect(tfxAction,
+ tfxPurpose,
+ resourceDir,
+ outgoingEffect,
+ incomingEffect,
+ mapIt.key().mAppUid,
+ effectFlags);
}
}
}
@@ -194,13 +194,13 @@
TInt tfxTransitionAction = 0;
switch (id) {
case(AppStart) :
- //tfxTransitionAction = ETfxActionStart;
+ tfxTransitionAction = ETfxActionStart;
break;
case(AppExit) :
- //tfxTransitionAction = ETfxActionShutDown;
+ tfxTransitionAction = ETfxActionShutDown;
break;
case(AppSwitch) :
- //tfxTransitionAction = ETfxActionSwitching;
+ tfxTransitionAction = ETfxActionSwitching;
break;
default:
break;
--- a/src/hbcore/cssparser/hbcssparser_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/cssparser/hbcssparser_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -42,6 +42,7 @@
#include "hbcssscanner_p.cpp"
#include "hbmemoryutils_p.h"
#include "hblayeredstyleloader_p.h"
+#include "hbthemeindex_p.h"
using namespace HbCss;
@@ -54,6 +55,7 @@
};
static const HbCssKnownValue properties[NumProperties - 1] = {
+ { "alignment", Property_Alignment },
{ "aspect-ratio", Property_AspectRatio },
{ "border-width", Property_BorderWidth },
{ "border-width-bottom", Property_BorderWidthBottom },
@@ -659,8 +661,9 @@
flags|=ExtractedLayoutDir;
break;
+ case Property_Alignment:
case Property_TextAlignment:
- prop.mTextAlignment = parseAlignment(decl); flags|=ExtractedTextAlign; break;
+ prop.mAlignment = parseAlignment(decl); flags|=ExtractedAlignment; break;
case Property_TextLineCountMin:
prop.mMinLines = decl.values.first().variant.toInt(); flags|=ExtractedMinLines; break;
case Property_TextLineCountMax:
@@ -714,6 +717,7 @@
prop.mFlags = flags;
return hit;
}
+
static QColor parseColorValue(Value v)
{
if (v.type == Value::Identifier || v.type == Value::String || v.type == Value::Color)
@@ -1100,20 +1104,29 @@
for ( int i = 0; i < declarationsCount; ++i ) {
const Declaration &decl = declarations.at(i);
switch(decl.propertyId) {
- case Property_Color:
+ case Property_Color:
{
HbCss::Value value;
if ( decl.values.at(0).type == Value::Variable ) {
- extractVariableValue( decl.values.at(0).variant.toString(), value );
+ const QString variableName = decl.values.at(0).variant.toString();
+ HbThemeIndexResource resource(variableName);
+ if (resource.isValid()) {
+ // Color value coming from index
+ color = resource.colorValue();
+ } else {
+ // Color value coming from custom css
+ extractVariableValue( variableName, value );
+ color = parseColorValue(value);
+ }
} else {
value = decl.values.at(0);
+ color = parseColorValue(value);
}
- color = parseColorValue(value);
hit = true;
break;
}
default:
- break;
+ break;
}
}
return hit;
--- a/src/hbcore/cssparser/hbcssparser_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/cssparser/hbcssparser_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -104,6 +104,7 @@
Property_Top,
Property_Width,
Property_ZValue,
+ Property_Alignment,
NumProperties
};
@@ -402,9 +403,9 @@
ExtractedLayoutDir = 0x00010000,
ExtractedZValue = 0x00020000,
+ ExtractedAlignment = 0x00040000,
// Text specific
- ExtractedTextAlign = 0x00100000,
ExtractedWrapMode = 0x00200000,
ExtractedMinLines = 0x00400000,
ExtractedMaxLines = 0x00800000,
@@ -427,8 +428,8 @@
QSizePolicy mSizePolicy;
HbCss::LayoutDirection mLayoutDir;
+ Qt::Alignment mAlignment;
- Qt::Alignment mTextAlignment;
Hb::TextWrapping mTextWrapMode;
int mMinLines, mMaxLines;
--- a/src/hbcore/cssparser/hblayeredstyleloader_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/cssparser/hblayeredstyleloader_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -101,6 +101,12 @@
if (stacks) {
if (!stacks->contains(con)) {
(*stacks)[con].mConcern = con;
+ if (con != Concern_All) {
+ HbLayeredStyleLoader *allStack = getStack(Concern_All);
+ if (allStack) {
+ (*stacks)[con].mUsedLayers = allStack->mUsedLayers;
+ }
+ }
}
result = &((*stacks)[con]);
}
--- a/src/hbcore/cssparser/hbwidgetstyleloader_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/cssparser/hbwidgetstyleloader_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -27,7 +27,6 @@
#include "hbinstance_p.h"
#include <hbstyle.h>
#include "hbstyle_p.h"
-#include "hbcolortheme_p.h"
#endif
#include "hbwidgetstyleloader_p.h"
#include "hbwidgetloader_p.h"
@@ -243,10 +242,6 @@
if (HbInstancePrivate::d_ptr()->mStyle) {
HbInstancePrivate::d_ptr()->mStyle->d_func()->clearStyleSheetCaches();
}
- if ( concern == HbLayeredStyleLoader::Concern_Colors
- || concern == HbLayeredStyleLoader::Concern_All) {
- HbColorTheme::instance()->flushVariableCache();
- }
#endif
#ifdef WIDGETSTYLELOADER_DEBUG
@@ -313,13 +308,6 @@
if (HbInstancePrivate::d_ptr()->mStyle) {
HbInstancePrivate::d_ptr()->mStyle->d_func()->clearStyleSheetCaches();
}
- if ( concern && (*concern == HbLayeredStyleLoader::Concern_Colors ||
- *concern == HbLayeredStyleLoader::Concern_All)) {
- HbColorTheme *colorThemeInstance = HbColorTheme::instance();
- if (colorThemeInstance) { // Check that the instance has not been destroyed.
- colorThemeInstance->flushVariableCache();
- }
- }
#endif
}
#ifdef WIDGETSTYLELOADER_DEBUG
--- a/src/hbcore/decorators/hbindicatorbutton.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/decorators/hbindicatorbutton.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -28,6 +28,9 @@
#include <hbview.h>
#include <hbdevicedialog.h>
#include <hbaction.h>
+#include <hbiconanimationmanager.h>
+#include <hbiconitem.h>
+#include <hbiconanimator.h>
#include "hbindicatorbutton_p.h"
#include "hbindicatorbutton_p_p.h"
@@ -42,30 +45,48 @@
static const char noteIndicatorType[] = {"com.nokia.hb.indicatormenu/1.0"};
HbIndicatorButtonPrivate::HbIndicatorButtonPrivate() :
- handleIcon(0), defaultAction(0), newEventAction(0), deviceDialog(0)
+ mHandleIcon(0), mDefaultAction(0), mNewEventAction(0), mProgressAction(0), mDeviceDialog(0),
+ mProgressAnimationFound(false), mNewEventIcon(0), mNewEvent(false), mStyle(0), mIndicatorMenuOpen(false)
{
}
HbIndicatorButtonPrivate::~HbIndicatorButtonPrivate()
{
- delete deviceDialog;
+ delete mDeviceDialog;
}
void HbIndicatorButtonPrivate::init()
{
+ Q_Q(HbIndicatorButton);
setBackgroundVisible(false);
+ mProgressAnimationFound = HbIconAnimationManager::global()->addDefinitionFile(
+ "qtg_anim_mono_loading.axml");
+
+ // add default actions
+ mDefaultAction = new HbAction(HbIcon("qtg_mono_options_menu"), "IndicatorMenu", q);
+ mNewEventAction = new HbAction(HbIcon("qtg_mono_new_event"), "IndicatorMenu", q);
+
+ QString iconName("qtg_anim_mono_loading_1");
+ if (mProgressAnimationFound) {
+ iconName = "qtg_anim_mono_loading";
+ }
+ HbIcon icon(iconName);
+ icon.setFlags(HbIcon::Colorized);
+ mProgressAction = new HbAction(icon, "IndicatorMenu", q);
}
void HbIndicatorButtonPrivate::showIndicatorMenu()
{
- if (mIndicators.count() > 0) {
- QVariantMap parametersMap;
- QString noteType(noteIndicatorType);
+ QVariantMap parametersMap;
+ QString noteType(noteIndicatorType);
- parametersMap.clear();
- deviceDialog->show(noteType, parametersMap);
- }
+ parametersMap.clear();
+ mDeviceDialog->show(noteType, parametersMap);
+ mNewEvent = false;
+ mIndicatorMenuOpen = true;
+
+ updateIcon();
}
void HbIndicatorButtonPrivate::addIndicators(const QList<IndicatorClientInfo> &clientInfo)
@@ -73,6 +94,9 @@
for (int i = 0; i < clientInfo.size(); ++i) {
if (clientInfo.at(i).hasMenuData) {
mIndicators.prepend(clientInfo.at(i));
+ if (clientInfo.at(i).category == HbIndicatorInterface::NotificationCategory) {
+ mNewEvent = true;
+ }
}
}
@@ -106,18 +130,55 @@
void HbIndicatorButtonPrivate::updateIcon()
{
Q_Q(HbIndicatorButton);
+
+ setStyle();
+ switch (mStyle)
+ {
+ case 0:
+ q->setAction(mDefaultAction);
+ q->setProperty("layout", 1);
+ break;
+ case 1:
+ q->setAction(mNewEventAction);
+ q->setProperty("layout", 1);
+ break;
+ case 2:
+ q->setAction(mProgressAction);
+ q->setProperty("layout", 1);
+ break;
+ case 3:
+ q->setAction(mProgressAction);
+ q->setProperty("layout", 2);
+ break;
+ default:
+ q->setAction(mDefaultAction);
+ q->setProperty("layout", 1);
+ break;
+ }
+ q->repolish();
+}
+
+void HbIndicatorButtonPrivate::setStyle()
+{
bool newEvent(false);
+ bool progress(false);
for (int i = 0; i < mIndicators.size(); ++i) {
- if (mIndicators.at(i).category == HbIndicatorInterface::NotificationCategory
- || mIndicators.at(i).category == HbIndicatorInterface::ProgressCategory) {
+ if (mIndicators.at(i).category == HbIndicatorInterface::NotificationCategory && mNewEvent) {
newEvent = true;
- break;
+ }
+ if (mIndicators.at(i).category == HbIndicatorInterface::ProgressCategory) {
+ progress = true;
}
}
- if (newEvent) {
- q->setAction(newEventAction);
+
+ if (!newEvent && !progress) {
+ mStyle = 0;
+ } else if (newEvent && !progress){
+ mStyle = 1;
+ } else if (!newEvent && progress){
+ mStyle = 2;
} else {
- q->setAction(defaultAction);
+ mStyle = 3;
}
}
@@ -125,12 +186,10 @@
: HbToolButton(*new HbIndicatorButtonPrivate, parent)
{
Q_D(HbIndicatorButton);
+ setProperty("layout", 1);
d->init();
- // add default actions
- d->defaultAction = new HbAction(HbIcon("qtg_mono_options_menu"), "IndicatorMenu", this);
- d->newEventAction = new HbAction(HbIcon("qtg_mono_new_event"), "IndicatorMenu", this);
- setAction(d->defaultAction);
+ setAction(d->mDefaultAction);
createPrimitives();
}
@@ -147,13 +206,14 @@
connect(this, SIGNAL(pressed()), this, SLOT(handlePress()));
connect(this, SIGNAL(released()), this, SLOT(handleRelease()));
- d->deviceDialog = new HbDeviceDialog(HbDeviceDialog::ImmediateResourceReservationFlag);
+ d->mDeviceDialog = new HbDeviceDialog(HbDeviceDialog::ImmediateResourceReservationFlag);
+ connect(d->mDeviceDialog, SIGNAL(deviceDialogClosed()), this, SLOT(resetBackground()));
}
void HbIndicatorButton::showHandleIndication(bool show)
{
Q_D(HbIndicatorButton);
- d->handleIcon->setVisible(show);
+ d->mHandleIcon->setVisible(show);
}
bool HbIndicatorButton::handleVisible() const
@@ -165,11 +225,27 @@
return handleVisible;
}
+int HbIndicatorButton::buttonStyle() const
+{
+ Q_D(const HbIndicatorButton);
+ return d->mStyle;
+}
+
+void HbIndicatorButton::currentViewChanged(HbView *view)
+{
+ Q_D(HbIndicatorButton);
+ HbIconItem *item = dynamic_cast<HbIconItem *>(d->iconItem);
+ if (item) {
+ item->animator().setOwnerView(view);
+ }
+}
+
void HbIndicatorButton::createPrimitives()
{
Q_D(HbIndicatorButton);
- d->handleIcon = style()->createPrimitive(HbStyle::P_IndicatorButton_handleindication, this);
- d->handleIcon->setVisible(false);
+ d->mHandleIcon = style()->createPrimitive(HbStyle::P_IndicatorButton_handleindication, this);
+ d->mHandleIcon->setVisible(false);
+ d->mNewEventIcon = style()->createPrimitive(HbStyle::P_IndicatorButton_eventindication, this);
setBackgroundItem(HbStyle::P_IndicatorButton_background); // calls updatePrimitives()
}
@@ -179,7 +255,8 @@
HbStyleOptionIndicatorButton option;
initStyleOption(&option);
style()->updatePrimitive(backgroundItem(), HbStyle::P_IndicatorButton_background, &option);
- style()->updatePrimitive(d->handleIcon, HbStyle::P_IndicatorButton_handleindication, &option);
+ style()->updatePrimitive(d->mHandleIcon, HbStyle::P_IndicatorButton_handleindication, &option);
+ style()->updatePrimitive(d->mNewEventIcon, HbStyle::P_IndicatorButton_eventindication, &option);
HbToolButton::updatePrimitives();
}
@@ -195,10 +272,27 @@
d->removeIndicators(clientInfo);
}
+void HbIndicatorButton::activateAll(const QList<IndicatorClientInfo> &clientInfo)
+{
+ Q_D(HbIndicatorButton);
+ d->mIndicators.clear();
+ d->addIndicators(clientInfo);
+}
+
+void HbIndicatorButton::resetBackground()
+{
+ Q_D(HbIndicatorButton);
+ d->mIndicatorMenuOpen = false;
+ updatePrimitives();
+}
+
void HbIndicatorButton::initStyleOption(HbStyleOptionIndicatorButton *option) const
{
+ Q_D(const HbIndicatorButton);
if (isDown()) {
option->mode = QIcon::Active;
+ } else if (d->mIndicatorMenuOpen) {
+ option->mode = QIcon::Selected;
} else {
option->mode = QIcon::Normal;
}
@@ -207,6 +301,7 @@
option->transparent = true;
}
}
+ option->twoIcons = (d->mStyle == 3);
}
void HbIndicatorButton::changeEvent(QEvent* event)
@@ -228,7 +323,7 @@
void HbIndicatorButton::handleRelease()
{
Q_D(HbIndicatorButton);
- if( isUnderMouse() ) {
+ if (isUnderMouse()) {
d->showIndicatorMenu();
}
#ifdef HB_EFFECTS
@@ -237,4 +332,3 @@
updatePrimitives();
}
-
--- a/src/hbcore/decorators/hbindicatorbutton_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/decorators/hbindicatorbutton_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -31,11 +31,13 @@
class HbIndicatorButtonPrivate;
class HbStyleOptionIndicatorButton;
+class HbView;
struct IndicatorClientInfo;
class HB_CORE_PRIVATE_EXPORT HbIndicatorButton : public HbToolButton
{
Q_OBJECT
+ Q_PROPERTY(int buttonStyle READ buttonStyle)
public:
explicit HbIndicatorButton(QGraphicsItem *parent = 0);
@@ -49,11 +51,17 @@
void showHandleIndication(bool show);
bool handleVisible() const;
+ int buttonStyle() const;
+
+ void currentViewChanged(HbView *view);
+
public slots:
virtual void createPrimitives();
virtual void updatePrimitives();
void activate(const QList<IndicatorClientInfo> &clientInfo);
void deactivate(const QList<IndicatorClientInfo> &clientInfo);
+ void activateAll(const QList<IndicatorClientInfo> &clientInfo);
+ void resetBackground();
protected:
virtual void initStyleOption(HbStyleOptionIndicatorButton *option) const;
--- a/src/hbcore/decorators/hbindicatorbutton_p_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/decorators/hbindicatorbutton_p_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -44,16 +44,24 @@
void removeIndicators(const QList<IndicatorClientInfo> &clientInfo);
int findIndicator(const IndicatorClientInfo &indicator) const;
void updateIcon();
+ void setStyle();
private:
- QGraphicsItem *handleIcon;
- HbAction *defaultAction;
- HbAction *newEventAction;
+ QGraphicsItem *mHandleIcon;
+ HbAction *mDefaultAction;
+ HbAction *mNewEventAction;
+ HbAction *mProgressAction;
- HbDeviceDialog *deviceDialog;
+ HbDeviceDialog *mDeviceDialog;
QList<IndicatorClientInfo> mIndicators;
+
+ bool mProgressAnimationFound;
+ QGraphicsItem *mNewEventIcon;
+ bool mNewEvent;
+ int mStyle;
+ bool mIndicatorMenuOpen;
};
#endif // HBINDICATORBUTTON_P_P_H
--- a/src/hbcore/decorators/hbindicatorgroup.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/decorators/hbindicatorgroup.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,6 @@
**
****************************************************************************/
-#include <hbiconanimationmanager.h>
-
#include "hbindicatorgroup_p.h"
#include "hbindicatorgroup_p_p.h"
#include "hbstyleoptionindicatorgroup_p.h"
@@ -39,8 +37,7 @@
#endif // defined(Q_OS_SYMBIAN)
HbIndicatorGroupPrivate::HbIndicatorGroupPrivate() :
- mIndicatorType(HbIndicatorGroup::NotificationType),
- mProgressAdded(false), mIndicatorAdded(false), mProgressAnimationFound(false)
+ mIndicatorType(HbIndicatorGroup::NotificationType), mIndicatorAdded(false)
{
}
@@ -57,8 +54,6 @@
QStringList() << "indicator_appear" << "indicator_disappear" << "indicator_move_right" << "indicator_move_left",
QStringList() << "appear" << "disappear" << "move_right" << "move_left");
#endif
-
- mProgressAnimationFound = HbIconAnimationManager::global()->addDefinitionFile("qtg_status_progress.axml");
}
void HbIndicatorGroupPrivate::init()
@@ -69,28 +64,8 @@
int HbIndicatorGroupPrivate::setIconName(HbStyleOptionIndicatorGroup &option, int index)
{
- bool ok(mProgressAdded);
- while (ok && mIndicators.count() > index) {
- if (mIndicators.at(index).category == HbIndicatorInterface::ProgressCategory) {
- ++index;
- } else {
- ok = false;
- }
- }
-
if (mIndicators.count() > index) {
- if (mIndicators.at(index).category == HbIndicatorInterface::ProgressCategory) {
- if (!mProgressAdded) {
- if (mProgressAnimationFound) {
- option.iconName = "qtg_status_progress";
- } else {
- option.iconName = "qtg_status_progress_1";
- }
- mProgressAdded = true;
- }
- } else {
- option.iconName = mIndicators.at(index).iconPath;
- }
+ option.iconName = mIndicators.at(index).iconPath;
} else {
option.iconName = "";
}
@@ -114,6 +89,12 @@
int index = findIndicator(clientInfo.at(i));
if (index >= 0) {
mIndicators[index].iconPath = clientInfo.at(i).iconPath;
+ } else {
+ const IndicatorClientInfo &indicator = clientInfo.at(i);
+ if (canAddIndicator(indicator)) {
+ mIndicators.prepend(indicator);
+ mIndicatorAdded = true;
+ }
}
}
}
@@ -142,15 +123,7 @@
{
int index = findIndicator(indicator);
if (index >= 0) {
- if (mIndicators.at(index).category == HbIndicatorInterface::ProgressCategory) {
- if (mProgressAnimationFound) {
- mRemovedIndicators.append("qtg_status_progress");
- } else {
- mRemovedIndicators.append("qtg_status_progress_1");
- }
- } else {
- mRemovedIndicators.append(mIndicators.at(index).iconPath);
- }
+ mRemovedIndicators.append(mIndicators.at(index).iconPath);
mIndicators.removeAt(index);
}
}
@@ -169,9 +142,6 @@
} else if (indicator.category == HbIndicatorInterface::SettingCategory
&& mIndicatorType == HbIndicatorGroup::SettingsType) {
canAdd = true;
- } else if (indicator.category == HbIndicatorInterface::ProgressCategory
- && mIndicatorType == HbIndicatorGroup::SettingsType) {
- canAdd = true;
}
return canAdd;
}
@@ -306,7 +276,6 @@
Q_D(HbIndicatorGroup);
HbStyleOptionIndicatorGroup option;
initStyleOption(&option);
- d->mProgressAdded = false;
int index(0);
index = d->setIconName(option, index);
style()->updatePrimitive(d->mIcons[0], HbStyle::P_IndicatorGroup_icon1, &option);
--- a/src/hbcore/decorators/hbindicatorgroup_p_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/decorators/hbindicatorgroup_p_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -60,11 +60,9 @@
HbIndicatorGroup::IndicatorType mIndicatorType;
QList<QGraphicsItem*> mIcons;
QList<IndicatorClientInfo> mIndicators;
- bool mProgressAdded;
bool mIndicatorAdded;
QList<QPointF> mOriginalPos;
QStringList mRemovedIndicators;
- bool mProgressAnimationFound;
};
#endif // HBINDICATORGROUP_P_P_H
--- a/src/hbcore/decorators/hbsignalindicator.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/decorators/hbsignalindicator.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -48,6 +48,7 @@
#ifdef HB_HAVE_QT_MOBILITY
,mSystemNetworkInfo(new HbSystemInfo(0, false))
,mNetworkMode(QSystemNetworkInfo::UnknownMode)
+ ,mNetworkStatus(QSystemNetworkInfo::UndefinedStatus)
#endif // HB_HAVE_QT_MOBILITY
{
}
@@ -65,15 +66,16 @@
Q_Q(HbSignalIndicator);
if (mode != mNetworkMode) {
mNetworkMode = mode;
- _q_setNetworkMode(mNetworkMode);
+ _q_setNetworkMode(mNetworkMode, mNetworkStatus);
}
q->setLevel(strength);
}
-void HbSignalIndicatorPrivate::_q_setNetworkMode(QSystemNetworkInfo::NetworkMode mode)
+void HbSignalIndicatorPrivate::_q_setNetworkMode(QSystemNetworkInfo::NetworkMode mode, QSystemNetworkInfo::NetworkStatus status)
{
Q_Q(HbSignalIndicator);
mNetworkMode = mode;
+ mNetworkStatus = status;
q->updatePrimitives();
}
#endif // HB_HAVE_QT_MOBILITY
@@ -92,8 +94,8 @@
Q_D(HbSignalIndicator);
connect(d->mSystemNetworkInfo, SIGNAL(networkSignalStrengthChanged(QSystemNetworkInfo::NetworkMode, int)),
this, SLOT(_q_setNetworkSignalStrength(QSystemNetworkInfo::NetworkMode, int)));
- connect(d->mSystemNetworkInfo, SIGNAL(networkModeChanged(QSystemNetworkInfo::NetworkMode)),
- this, SLOT(_q_setNetworkMode(QSystemNetworkInfo::NetworkMode)));
+ connect(d->mSystemNetworkInfo, SIGNAL(networkModeChanged(QSystemNetworkInfo::NetworkMode, QSystemNetworkInfo::NetworkStatus)),
+ this, SLOT(_q_setNetworkMode(QSystemNetworkInfo::NetworkMode, QSystemNetworkInfo::NetworkStatus)));
#endif // HB_HAVE_QT_MOBILITY
}
@@ -159,6 +161,14 @@
// style option should default to unknown mode if not set
#ifdef HB_HAVE_QT_MOBILITY
option->networkMode = d->mNetworkMode;
+
+ if (d->mNetworkStatus != QSystemNetworkInfo::Connected &&
+ d->mNetworkStatus != QSystemNetworkInfo::Roaming &&
+ d->mNetworkStatus != QSystemNetworkInfo::HomeNetwork) {
+ option->networkMode = QSystemNetworkInfo::UnknownMode;
+ option->signalLevel = HbStyleOptionSignalIndicator::Zero;
+ return;
+ }
#endif // HB_HAVE_QT_MOBILITY
//signal level setting
--- a/src/hbcore/decorators/hbsignalindicator_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/decorators/hbsignalindicator_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -63,7 +63,7 @@
#ifdef HB_HAVE_QT_MOBILITY
Q_PRIVATE_SLOT(d_func(), void _q_setNetworkSignalStrength(QSystemNetworkInfo::NetworkMode, int))
- Q_PRIVATE_SLOT(d_func(), void _q_setNetworkMode(QSystemNetworkInfo::NetworkMode))
+ Q_PRIVATE_SLOT(d_func(), void _q_setNetworkMode(QSystemNetworkInfo::NetworkMode, QSystemNetworkInfo::NetworkStatus))
#endif // HB_HAVE_QT_MOBILITY
};
--- a/src/hbcore/decorators/hbsignalindicator_p_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/decorators/hbsignalindicator_p_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -43,7 +43,7 @@
#ifdef HB_HAVE_QT_MOBILITY
void _q_setNetworkSignalStrength(QSystemNetworkInfo::NetworkMode mode, int strength);
- void _q_setNetworkMode(QSystemNetworkInfo::NetworkMode mode);
+ void _q_setNetworkMode(QSystemNetworkInfo::NetworkMode mode, QSystemNetworkInfo::NetworkStatus status);
#endif // HB_HAVE_QT_MOBILITY
private:
@@ -56,6 +56,7 @@
#ifdef HB_HAVE_QT_MOBILITY
HbSystemInfo *mSystemNetworkInfo;
QSystemNetworkInfo::NetworkMode mNetworkMode;
+ QSystemNetworkInfo::NetworkStatus mNetworkStatus;
#endif // HB_HAVE_QT_MOBILITY
};
--- a/src/hbcore/decorators/hbstatusbar.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/decorators/hbstatusbar.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -120,10 +120,10 @@
q->connect(mIndicatorPrivate, SIGNAL(activated(const QList<IndicatorClientInfo> &)),
q, SIGNAL(activated(const QList<IndicatorClientInfo> &)));
+ q->connect(mIndicatorPrivate, SIGNAL(allActivated(const QList<IndicatorClientInfo> &)),
+ q, SIGNAL(allActivated(const QList<IndicatorClientInfo> &)));
q->connect(mIndicatorPrivate, SIGNAL(deactivated(const QList<IndicatorClientInfo> &)),
q, SIGNAL(deactivated(const QList<IndicatorClientInfo> &)));
- q->connect(mIndicatorPrivate, SIGNAL(allActivated(const QList<IndicatorClientInfo> &)),
- q, SIGNAL(activated(const QList<IndicatorClientInfo> &)));
mClockTimerId = q->startTimer(clockUpdateDelay);
mIndicatorPrivate->startListen();
--- a/src/hbcore/decorators/hbstatusbar_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/decorators/hbstatusbar_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -58,6 +58,7 @@
signals:
void activated(const QList<IndicatorClientInfo> &clientInfo);
void deactivated(const QList<IndicatorClientInfo> &clientInfo);
+ void allActivated(const QList<IndicatorClientInfo> &clientInfo);
protected:
void initStyleOption(HbStyleOptionStatusBar *option) const;
--- a/src/hbcore/decorators/hbtitlebar.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/decorators/hbtitlebar.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -75,6 +75,8 @@
mIndicatorButton, SLOT(activate(const QList<IndicatorClientInfo> &)));
q->connect(q, SIGNAL(deactivated(const QList<IndicatorClientInfo> &)),
mIndicatorButton, SLOT(deactivate(const QList<IndicatorClientInfo> &)));
+ q->connect(q, SIGNAL(allActivated(const QList<IndicatorClientInfo> &)),
+ mIndicatorButton, SLOT(activateAll(const QList<IndicatorClientInfo> &)));
q->connect(mMainWindow, SIGNAL(currentViewChanged(HbView*)), q, SLOT(currentViewChanged(HbView*)));
q->connect(mDefaultNavigationAction, SIGNAL(triggered()), qApp, SLOT(quit()));
@@ -387,6 +389,8 @@
}
}
+ d->mIndicatorButton->currentViewChanged(view);
+
// only do repolish if titlebar properties have changed
if (d->mPreviousTitleBarProperties != view->viewFlags()) {
d->initTitleBarHandle(view);
@@ -463,11 +467,11 @@
case QEvent::Gesture: {
QGestureEvent *gestureEvent = static_cast<QGestureEvent*>(event);
if (HbPanGesture *pan = qobject_cast<HbPanGesture*>(gestureEvent->gesture(Qt::PanGesture))) {
- if(pan->state() == Qt::GestureUpdated || pan->state() == Qt::GestureFinished) {
+ if (pan->state() == Qt::GestureFinished) {
if(pan->sceneDelta().x() < -0) {
gestureLeft();
}
- if(pan->sceneDelta().x() > 0) {
+ else if (pan->sceneDelta().x() > 0) {
gestureRight();
}
gestureEvent->accept();
--- a/src/hbcore/decorators/hbtitlebar_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/decorators/hbtitlebar_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -77,6 +77,7 @@
void titleBarStateChanged();
void activated(const QList<IndicatorClientInfo> &clientInfo);
void deactivated(const QList<IndicatorClientInfo> &clientInfo);
+ void allActivated(const QList<IndicatorClientInfo> &clientInfo);
public slots:
void gestureRight();
--- a/src/hbcore/decorators/hbtitlepane.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/decorators/hbtitlepane.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -271,6 +271,9 @@
HbWidgetFeedback::triggered(this, Hb::InstantReleased);
d->toggle(false);
}
+ break;
+ }
+ case Qt::GestureFinished: {
if(pan->sceneDelta().x() > 0) {
emit panRight();
@@ -279,9 +282,6 @@
emit panLeft();
}
- break;
- }
- case Qt::GestureFinished: {
if (boundingRect().contains(pointerPos) && !d->mToggled) {
d->mMode = QIcon::Selected;
updatePrimitives();
--- a/src/hbcore/devicedialogbase/devicedialogserver/hbdevicedialogmanager_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/devicedialogbase/devicedialogserver/hbdevicedialogmanager_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -169,12 +169,7 @@
HbDeviceDialogInterface *deviceDialogIf =
mPluginManager.createWidget(QString(indicatorMenu), QVariantMap(), recycled, error);
if (deviceDialogIf) {
- HbPopup *popup = deviceDialogIf->deviceDialogWidget();
-#if defined(Q_OS_SYMBIAN)
- mIndicatorPluginManager->connectTo(popup);
-#else
- HbIndicatorPrivate::pluginManager()->connectTo(popup);
-#endif
+ connectIndicatorStatus(deviceDialogIf);
mPluginManager.freeWidget(deviceDialogIf);
}
TRACE_EXIT
@@ -348,7 +343,7 @@
TRACE_ENTRY_ARGS(foreground)
if (foreground) {
- if(!mMainWindow->isVisible()) {
+ if(!mMainWindow->isVisible() || !mMainWindow->isActiveWindow()) {
mMainWindow->showFullScreen();
doMoveToForeground(foreground, ECoeWinPriorityAlwaysAtFront);
}
@@ -621,15 +616,11 @@
connect(sender, SIGNAL(deviceDialogData(QVariantMap)),
SLOT(deviceDialogUpdate(const QVariantMap)));
- if (!recycled && deviceDialogInfo.group == HbDeviceDialogPlugin::IndicatorGroup) {
+ if (!recycled && (deviceDialogInfo.flags & HbDeviceDialogPlugin::ReceiveIndicatorStatus)) {
// Connect plugin manager signals to indicator menu slots, so that
// it will get indicator updates. If the widget is reused, signals
// are already connected.
-#if defined(Q_OS_SYMBIAN)
- mIndicatorPluginManager->connectTo(popup);
-#else
- HbIndicatorPrivate::pluginManager()->connectTo(popup);
-#endif
+ connectIndicatorStatus(deviceDialogIf);
}
// Set popup priority
@@ -753,6 +744,7 @@
}
}
emit q->deviceDialogClosed(id, closeReason);
+ disconnectDialogSignals(current.widget());
mDialogs.remove(current);
removeRegionRect(id);
}
@@ -801,8 +793,7 @@
if (showingSecurity && !moreDialogs) {
#if defined(Q_OS_SYMBIAN)
- doMoveToForeground(false, ECoeWinPriorityAlwaysAtFront-1);
- mMainWindow->hide();
+ doMoveToForeground(false, ECoeWinPriorityAlwaysAtFront-1);
#endif
}
TRACE_EXIT
@@ -1036,3 +1027,45 @@
clientTag);
}
}
+
+// Connect indicators status (activate/deactivate) signals to device dialog (indicator menu
+// and screen saver)
+void HbDeviceDialogManagerPrivate::connectIndicatorStatus(HbDeviceDialogInterface *dialogInterface)
+{
+ HbIndicatorPluginManager *indicatorPluginManager;
+#if defined(Q_OS_SYMBIAN)
+ indicatorPluginManager = mIndicatorPluginManager;
+#else
+ indicatorPluginManager = HbIndicatorPrivate::pluginManager();
+#endif
+
+ QObject *receiver = dialogSignaler(dialogInterface);
+ indicatorPluginManager->disconnect(receiver);
+
+ // Connect indicator plugin manager signals to device dialog slots for it to get
+ // indicator updates
+ receiver->connect(indicatorPluginManager, SIGNAL(indicatorActivated(HbIndicatorInterface*)),
+ SLOT(indicatorActivated(HbIndicatorInterface*)));
+ receiver->connect(indicatorPluginManager, SIGNAL(indicatorRemoved(HbIndicatorInterface*)),
+ SLOT(indicatorDeactivated(HbIndicatorInterface*)));
+
+ indicatorPluginManager->signalActiveIndicators(receiver);
+}
+
+// Disconnect device dialog signals
+void HbDeviceDialogManagerPrivate::disconnectDialogSignals(HbDeviceDialogInterface *dialogInterface)
+{
+ dialogSignaler(dialogInterface)->disconnect(this); // disconnect signals
+}
+
+// Return device dialog signals source/target
+QObject *HbDeviceDialogManagerPrivate::dialogSignaler(HbDeviceDialogInterface *dialogInterface)
+{
+ // Plugin can specify signal source/target by signalSender() or allow default which is device
+ // dialog widget
+ QObject *signalSourceAndTarget = dialogInterface->signalSender();
+ if (!signalSourceAndTarget) {
+ signalSourceAndTarget = dialogInterface->deviceDialogWidget();
+ }
+ return signalSourceAndTarget;
+}
--- a/src/hbcore/devicedialogbase/devicedialogserver/hbdevicedialogmanager_p_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/devicedialogbase/devicedialogserver/hbdevicedialogmanager_p_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -160,6 +160,9 @@
void timerEvent(QTimerEvent *event);
void markNoClient(quintptr clientTag);
void setupWindowRegion();
+ void connectIndicatorStatus(HbDeviceDialogInterface *dialogInterface);
+ void disconnectDialogSignals(HbDeviceDialogInterface *dialogInterface);
+ QObject *dialogSignaler(HbDeviceDialogInterface *dialogInterface);
private:
// Public interface
HbDeviceDialogManager * const q;
--- a/src/hbcore/devicedialogbase/devicedialogserver/hbdevicedialogpluginmanager.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/devicedialogbase/devicedialogserver/hbdevicedialogpluginmanager.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -187,17 +187,12 @@
if (pluginInfo.mFlags & PluginInfo::RecycleWidget &&
pluginInfo.mRecycledWidget == 0) {
pluginInfo.mRecycledWidget = widget;
- sender->disconnect(); // disconnect all signals from receivers
} else {
- // Delete widget from a timer as deviceDialogClosed() signal may
- // come before device dialog is fully closed.
- sender->disconnect(); // disconnect all signals
+ // Delete widget from a timer
mDeleteWidgets.append(widget);
-#if defined(Q_OS_SYMBIAN)
- const int deleteDelay = 2000; // 2s
-#else
- const int deleteDelay = 500; // 0.5s
-#endif
+ // Delete immediately as widget should be ready to be deleted (close effect ended) when
+ // devicedialogClosed() signal was emitted
+ const int deleteDelay = 0;
mDeleteTimer.start(deleteDelay);
}
}
--- a/src/hbcore/devicedialogbase/devicedialogserver/hbsysteminfo_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/devicedialogbase/devicedialogserver/hbsysteminfo_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -45,6 +45,12 @@
delete d_ptr;
}
+QSystemNetworkInfo::NetworkStatus HbSystemInfo::networkStatus() const
+{
+ Q_D(const HbSystemInfo);
+ return d->networkStatus();
+}
+
int HbSystemInfo::networkSignalStrength() const
{
Q_D(const HbSystemInfo);
--- a/src/hbcore/devicedialogbase/devicedialogserver/hbsysteminfo_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/devicedialogbase/devicedialogserver/hbsysteminfo_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -43,6 +43,7 @@
explicit HbSystemInfo(QObject *parent = 0, bool writer = false);
virtual ~HbSystemInfo();
+ QSystemNetworkInfo::NetworkStatus networkStatus() const;
int networkSignalStrength() const;
QSystemNetworkInfo::NetworkMode networkMode() const;
int batteryLevel() const;
@@ -50,7 +51,7 @@
signals:
void networkSignalStrengthChanged(QSystemNetworkInfo::NetworkMode, int);
- void networkModeChanged(QSystemNetworkInfo::NetworkMode);
+ void networkModeChanged(QSystemNetworkInfo::NetworkMode, QSystemNetworkInfo::NetworkStatus);
void batteryLevelChanged(int);
void powerStateChanged(QSystemDeviceInfo::PowerState);
--- a/src/hbcore/devicedialogbase/devicedialogserver/hbsysteminfosym_p_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/devicedialogbase/devicedialogserver/hbsysteminfosym_p_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -24,7 +24,6 @@
****************************************************************************/
#include "hbsysteminfosym_p_p.h"
-#include "hbsysteminfo_p.h"
#include <qapplication.h>
#include <qcoreevent.h>
@@ -67,6 +66,11 @@
if (writer) {
mSystemNetworkInfo = new QtMobility::QSystemNetworkInfo();
+ mDeviceSystemInfo.networkMode = mSystemNetworkInfo->currentMode();
+ mDeviceSystemInfo.networkStatus = mSystemNetworkInfo->networkStatus(mDeviceSystemInfo.networkMode);
+ mDeviceSystemInfo.signalStrength = QSystemNetworkInfo::networkSignalStrength(mDeviceSystemInfo.networkMode);
+ connect(mSystemNetworkInfo, SIGNAL(networkStatusChanged(QSystemNetworkInfo::NetworkMode, QSystemNetworkInfo::NetworkStatus)),
+ this, SLOT(setNetworkStatus(QSystemNetworkInfo::NetworkMode, QSystemNetworkInfo::NetworkStatus)));
connect(mSystemNetworkInfo, SIGNAL(networkSignalStrengthChanged(QSystemNetworkInfo::NetworkMode, int)),
this, SLOT(setNetworkSignalStrength(QSystemNetworkInfo::NetworkMode, int)));
connect(mSystemNetworkInfo, SIGNAL(networkModeChanged(QSystemNetworkInfo::NetworkMode)),
@@ -141,15 +145,21 @@
{
Q_Q(HbSystemInfo);
bool modeChanged = info.networkMode != mDeviceSystemInfo.networkMode;
- bool signalLevelChanged = info.signalStrength != mDeviceSystemInfo.signalStrength;
+ bool statusChanged = info.networkStatus != mDeviceSystemInfo.networkStatus;
if (modeChanged) {
mDeviceSystemInfo.networkMode = info.networkMode;
}
- if (modeChanged && !signalLevelChanged) {
- emit q->networkModeChanged((QSystemNetworkInfo::NetworkMode)mDeviceSystemInfo.networkMode);
- } else {
+ if (statusChanged) {
+ mDeviceSystemInfo.networkStatus = info.networkStatus;
+ }
+ if (modeChanged || statusChanged) {
+ emit q->networkModeChanged((QSystemNetworkInfo::NetworkMode)mDeviceSystemInfo.networkMode,
+ (QSystemNetworkInfo::NetworkStatus)mDeviceSystemInfo.networkStatus);
+ }
+
+ if (info.signalStrength != mDeviceSystemInfo.signalStrength) {
mDeviceSystemInfo.signalStrength = info.signalStrength;
emit q->networkSignalStrengthChanged((QSystemNetworkInfo::NetworkMode)mDeviceSystemInfo.networkMode,
mDeviceSystemInfo.signalStrength);
@@ -185,6 +195,27 @@
}
}
+void HbSystemInfoPrivate::setNetworkStatus(
+ QSystemNetworkInfo::NetworkMode networkMode,
+ QSystemNetworkInfo::NetworkStatus networkStatus)
+{
+ bool changed(false);
+ if (networkMode != mDeviceSystemInfo.networkMode) {
+ mDeviceSystemInfo.networkMode = networkMode;
+ changed = true;
+ }
+
+ if (networkStatus != mDeviceSystemInfo.networkStatus) {
+ mDeviceSystemInfo.networkStatus = networkStatus;
+ changed = true;
+ }
+
+ if (changed) {
+ writeDeviceInfo();
+ }
+
+}
+
void HbSystemInfoPrivate::setNetworkSignalStrength(
QSystemNetworkInfo::NetworkMode mode,
int strength)
@@ -232,7 +263,11 @@
void HbSystemInfoPrivate::lostForeground()
{
- Cancel();
+ if (mListening) {
+ mInfoProperty.Cancel();
+ Cancel();
+ mListening = false;
+ }
}
void HbSystemInfoPrivate::gainedForeground()
@@ -244,6 +279,11 @@
}
}
+QSystemNetworkInfo::NetworkStatus HbSystemInfoPrivate::networkStatus() const
+{
+ return mDeviceSystemInfo.networkStatus;
+}
+
int HbSystemInfoPrivate::networkSignalStrength() const
{
return mDeviceSystemInfo.signalStrength;
--- a/src/hbcore/devicedialogbase/devicedialogserver/hbsysteminfosym_p_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/devicedialogbase/devicedialogserver/hbsysteminfosym_p_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -39,6 +39,7 @@
powerState(QSystemDeviceInfo::UnknownPower) {}
QSystemNetworkInfo::NetworkMode networkMode;
+ QSystemNetworkInfo::NetworkStatus networkStatus;
int signalStrength;
int batteryLevel;
QSystemDeviceInfo::PowerState powerState;
@@ -48,6 +49,7 @@
const DeviceSystemInfo &obj)
{
outStream << obj.networkMode;
+ outStream << obj.networkStatus;
outStream << obj.signalStrength;
outStream << obj.powerState;
outStream << obj.batteryLevel;
@@ -60,9 +62,11 @@
int temp;
inStream >> temp;
obj.networkMode = (QSystemNetworkInfo::NetworkMode)temp;
+ inStream >> temp;
+ obj.networkStatus = (QSystemNetworkInfo::NetworkStatus)temp;
inStream >> obj.signalStrength;
inStream >> temp;
- obj.powerState= (QSystemDeviceInfo::PowerState)temp;
+ obj.powerState = (QSystemDeviceInfo::PowerState)temp;
inStream >> obj.batteryLevel;
return inStream;
}
@@ -84,6 +88,7 @@
void dataReceived(const DeviceSystemInfo& info);
bool eventFilter(QObject *obj, QEvent *event);
public:
+ QSystemNetworkInfo::NetworkStatus networkStatus() const;
int networkSignalStrength() const;
QSystemNetworkInfo::NetworkMode networkMode() const;
int batteryLevel() const;
@@ -94,6 +99,7 @@
virtual void RunL();
public slots:
+ void setNetworkStatus(QSystemNetworkInfo::NetworkMode, QSystemNetworkInfo::NetworkStatus);
void setNetworkSignalStrength(QSystemNetworkInfo::NetworkMode, int);
void setNetworkMode(QSystemNetworkInfo::NetworkMode);
void setBatteryLevel(int);
--- a/src/hbcore/devicedialogbase/devicedialogserver/hbsysteminfowin_p_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/devicedialogbase/devicedialogserver/hbsysteminfowin_p_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -45,7 +45,8 @@
q, SIGNAL(networkSignalStrengthChanged(QSystemNetworkInfo::NetworkMode, int)));
connect(mSystemNetworkInfo, SIGNAL(networkModeChanged(QSystemNetworkInfo::NetworkMode)),
this, SLOT(setNetworkMode(QSystemNetworkInfo::NetworkMode)));
-
+ connect(mSystemNetworkInfo, SIGNAL(networkStatusChanged(QSystemNetworkInfo::NetworkMode, QSystemNetworkInfo::NetworkStatus)),
+ this, SLOT(setNetworkStatus(QSystemNetworkInfo::NetworkMode, QSystemNetworkInfo::NetworkStatus)));
mSystemDeviceInfo = new QSystemDeviceInfo();
connect(mSystemDeviceInfo, SIGNAL(batteryLevelChanged(int)),
q, SIGNAL(batteryLevelChanged(int)));
@@ -64,6 +65,11 @@
{
}
+QSystemNetworkInfo::NetworkStatus HbSystemInfoPrivate::networkStatus() const
+{
+ return mSystemNetworkInfo->networkStatus(mNetworkMode);
+}
+
int HbSystemInfoPrivate::networkSignalStrength() const
{
return mSystemNetworkInfo->networkSignalStrength(mNetworkMode);
@@ -88,5 +94,14 @@
{
Q_Q(HbSystemInfo);
mNetworkMode = mode;
- emit q->networkModeChanged(mode);
+ emit q->networkModeChanged(mode, mNetworkStatus);
}
+
+void HbSystemInfoPrivate::setNetworkStatus(QSystemNetworkInfo::NetworkMode mode, QSystemNetworkInfo::NetworkStatus status)
+{
+ Q_Q(HbSystemInfo);
+ mNetworkMode = mode;
+ mNetworkStatus = status;
+ emit q->networkModeChanged(mode, mNetworkStatus);
+
+}
\ No newline at end of file
--- a/src/hbcore/devicedialogbase/devicedialogserver/hbsysteminfowin_p_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/devicedialogbase/devicedialogserver/hbsysteminfowin_p_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -37,6 +37,7 @@
virtual ~HbSystemInfoPrivate();
void init(bool writer);
+ QSystemNetworkInfo::NetworkStatus networkStatus() const;
int networkSignalStrength() const;
QSystemNetworkInfo::NetworkMode networkMode() const;
int batteryLevel() const;
@@ -44,6 +45,7 @@
public slots:
void setNetworkMode(QSystemNetworkInfo::NetworkMode);
+ void setNetworkStatus(QSystemNetworkInfo::NetworkMode, QSystemNetworkInfo::NetworkStatus);
void lostForeground();
void gainedForeground();
@@ -51,6 +53,7 @@
QSystemNetworkInfo *mSystemNetworkInfo;
QSystemDeviceInfo *mSystemDeviceInfo;
QSystemNetworkInfo::NetworkMode mNetworkMode;
+ QSystemNetworkInfo::NetworkStatus mNetworkStatus;
Q_DECLARE_PUBLIC(HbSystemInfo)
HbSystemInfo *q_ptr;
--- a/src/hbcore/devicedialogbase/hbdevicedialogclientsession.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/devicedialogbase/hbdevicedialogclientsession.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -118,7 +118,7 @@
TBool RHbDeviceDialogClientSession::ServerRunning()
{
- TRACE_ENTRY
+ TRACE_STATIC_ENTRY
TFindServer findHbServer(KHbServerName);
TFullName name;
TRACE_EXIT
--- a/src/hbcore/devicedialogbase/hbdevicedialogplugin.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/devicedialogbase/hbdevicedialogplugin.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -63,6 +63,12 @@
Device dialog widgets have to be derived from HbPopup either directly or by ancestry.
+ Device dialog widget can be derived from existing Hb class, eg. HbDialog or constructed from
+ a docml using HbDocumentLoader. Structure of the plugin differs depending on which approach
+ is selected. If docml is used the dialog widget cannot be multiple inherited from HbDialog
+ and HbDeviceDialogInterface. In this case a container can be used to to create and manage the
+ widget. See code example at the end.
+
<div style="color:gray">
<b>For future needs. Not implemented.</b>
Device dialog may be shared by several device dialog clients. Each client can update the
@@ -105,6 +111,8 @@
Creating a device dialog plugin and widget involves following steps.
- Set in .pro file TEMPLATE = lib and CONFIG += hb plugin
- Derive a class from HbPopup or derivatives and HbDeviceDialogInterface
+ The example below is <b>not using docml</b> and dialog widget is derived from HbDialog and
+ HbDeviceDialogInterface.
\code
class HbSampleMessageBoxWidget : public HbMessageBox, public HbDeviceDialogInterface
{
@@ -185,6 +193,97 @@
}
\enddot
+ The example below is <b>using docml</b> and dialog widget is managed by a container.
+ \code
+ class HbSampleDialogContainer : public QObject, public HbDeviceDialogInterface
+ {
+ Q_OBJECT
+ \endcode
+ - In the constructor create the dialog widget using HbDocumentLoader
+ - Implement HbDeviceDialogInterface functions
+ - From deviceDialogWidget() function return the created (docml) widget
+ - From signalSender() function return the container (HbSampleDialogContainer)
+ - Declare and emit deviceDialogClosed and optionally deviceDialogData signals.
+ - Do not call show(), hide() or setVisible() in the plugin. Device dialog
+ framework calls show() to display the widget.
+ \code
+ public:
+ bool setDeviceDialogParameters(const QVariantMap ¶meters);
+ int deviceDialogError() const;
+ void closeDeviceDialog(bool byClient);
+ HbPopup *deviceDialogWidget() const;
+ QObject *signalSender() const;
+ signals:
+ void deviceDialogClosed();
+ void deviceDialogData(QVariantMap data);
+ \endcode
+ - Wrap the widget into a plugin derived from HbDeviceDialogPlugin
+ \code
+ class HbSampleDeviceDialogPlugin : public HbDeviceDialogPlugin
+ {
+ Q_OBJECT
+ \endcode
+ - Implement HbDeviceDialogPlugin pure virtual functions
+ - Return the container (HbSampleDialogContainer) from createDeviceDialog() function
+ \code
+ bool accessAllowed(const QString &deviceDialogType,
+ const QVariantMap ¶meters, const QVariantMap &securityInfo) const;
+ HbDeviceDialogInterface *createDeviceDialog(const QString &deviceDialogType, const QVariantMap ¶meters);
+ bool deviceDialogInfo(const QString &deviceDialogType,
+ const QVariantMap ¶meters, DeviceDialogInfo *info) const;
+ QStringList deviceDialogTypes() const;
+ PluginFlags pluginFlags() const;
+ int error() const;
+ \endcode
+
+ <b> Class diagram of the sample plugin using docml:</b>
+ \dot
+ digraph G {
+ rankdir=LR;
+
+ subgraph cluster_class_diagram {
+ style=solid;
+
+ node [shape = box, style=solid, fontsize = 10];
+ HbSampleDeviceDialogPlugin [label = "HbSampleDeviceDialogPlugin"];
+ QObject [label = "QObject"];
+ HbDeviceDialogPluginInterface [label = "HbDeviceDialogPluginInterface"];
+ HbDeviceDialogPlugin [label = "HbDeviceDialogPlugin"];
+ edge [fontsize = 10, style = filled];
+ QObject -> HbDeviceDialogPlugin [label = "is a"];
+ HbDeviceDialogPluginInterface -> HbDeviceDialogPlugin [label = "is a"];
+ HbDeviceDialogPlugin -> HbSampleDeviceDialogPlugin [label = "is a"];
+
+ HbSampleDialogContainer [label = "HbSampleDialogContainer"];
+ QObject2 [label = "QObject"];
+ HbDeviceDialogInterface [label = "HbDeviceDialogInterface"];
+ QObject2 -> HbSampleDialogContainer [label = "is a"];
+ HbDeviceDialogInterface -> HbSampleDialogContainer [label = "is a"];
+
+ edge [fontsize = 10, style = dotted];
+ HbSampleDeviceDialogPlugin -> HbSampleDialogContainer [label = "creates"];
+
+ DialogWidget [label = "Dialog widget (docml)"];
+ edge [fontsize = 10, style = dotted];
+ HbSampleDialogContainer -> DialogWidget [label = "creates"];
+ }
+
+ subgraph cluster_key {
+ label = "Key";
+ style=solid;
+ node [shape = box, style=solid, fontsize = 10];
+ Class1 [label = "Class"];
+ Class2 [label = "Class"];
+ Class3 [label = "Class"];
+
+ edge [fontsize = 10, style = filled];
+ Class2 -> Class1 [label = "generalization"];
+ edge [fontsize = 10, style = dotted];
+ Class3 -> Class1 [label = "dependency"];
+ }
+ }
+ \enddot
+
Sample plugin implementations can be found in src/hbplugins/devicedialogs directory.
\sa HbDeviceDialogPluginInterface HbDeviceDialogInterface HbDeviceDialog HbPopup
@@ -245,7 +344,7 @@
\enum HbDeviceDialogPlugin::DeviceDialogFlag
Defines flags for a device dialog created by the plugin.
- \sa deviceDialogInfo DeviceDialogInfo
+ \sa deviceDialogInfo() HbIndicatorInterface
*/
/*!
\var HbDeviceDialogPlugin::DeviceDialogFlag HbDeviceDialogPlugin::NoDeviceDialogFlags
@@ -269,6 +368,13 @@
one time. Attempt to launch the widget while one exists results in an error to be
returned to the client.
*/
+/*!
+ \var HbDeviceDialogPlugin::DeviceDialogFlag HbDeviceDialogPlugin::ReceiveIndicatorStatus
+ Indicates that the device dialog is interested in indicator activation/deactivation events.
+ To receive indicator status the dialog has to implement two slots. Indicator activation is
+ received by a slot indicatorActivated(HbIndicatorInterface*) and deactivation by a slot
+ indicatorDeactivated(HbIndicatorInterface*).
+*/
/*!
@@ -338,7 +444,7 @@
<tr>
<td>"sym-caps"</td>
<td>quint32</td>
- <td>Client's capability set as a bitmap</td>
+ <td>Client's capability set as a bitmap. Bit positions correspond to Symbian enum TCapability</td>
</tr>
</table>
*/
--- a/src/hbcore/devicedialogbase/hbdevicedialogplugin.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/devicedialogbase/hbdevicedialogplugin.h Wed Jun 23 18:33:25 2010 +0300
@@ -71,7 +71,8 @@
NoDeviceDialogFlags = 0x00,
SharedDeviceDialog = 0x01,
SecurityCheck = 0x02,
- SingleInstance = 0x04
+ SingleInstance = 0x04,
+ ReceiveIndicatorStatus = 0x08
};
Q_DECLARE_FLAGS(DeviceDialogFlags, DeviceDialogFlag)
--- a/src/hbcore/gestures/hbgesturerecognizers_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gestures/hbgesturerecognizers_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -33,6 +33,7 @@
#include <QGesture>
#include <QTime>
+#include <QGraphicsObject>
//#define RECOGNIZERS_DEBUG
#ifdef RECOGNIZERS_DEBUG
@@ -271,8 +272,14 @@
\return
*/
-QGesture* HbPinchGestureRecognizer::create(QObject *)
+QGesture* HbPinchGestureRecognizer::create(QObject *target)
{
+ if (target && target->isWidgetType()) {
+ static_cast<QWidget *>(target)->setAttribute(Qt::WA_AcceptTouchEvents);
+ }
+ if (QGraphicsObject *o = qobject_cast<QGraphicsObject *>(target)){
+ o->setAcceptTouchEvents(true);
+ }
return new HbPinchGesture;
}
--- a/src/hbcore/gestures/hbpangesture.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gestures/hbpangesture.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -36,12 +36,92 @@
@hbcore
\class HbPanGesture
- \brief HbPanGesture is an extension to Qt standard QPanGesture
+ \brief The HbPanGesture class provides support for receiving a dragging
+ (pan) gesture.
+
+ HbPanGesture is an extension to the Qt standard QPanGesture. It is
+ optimized for mobile touch screens, and also supports recognition of
+ mouse events for development purposes. Moreover, HbPanGesture
+ adds some new properties (startPos and velocity) to the existing
+ QPanGesture properties, and also provides variants of all these expressed
+ in scene coordinates. This removes any need for manual conversions from
+ the screen (global) coordinates of the QPanGesture base class properties.
+
+ A pan gesture is used in situations where the user drags content to a new
+ position. Make sure your application gives instant feedback to the user
+ with each gesture update by moving the content, not only when the gesture
+ is finished.
+
+ \section _usecases_hbpangesture Using the HbPanGesture class
+
+ This example shows how to make a custom widget recognize the pan
+ gesture. The custom widget in the example derives from HbWidget.
+
+ <ol>
+ <li>
+ Register for pan gestures by using the base class function
+ QGraphicsObject::grabGesture(). QGraphicsObject::grabGesture() can be
+ called several times with different arguments, if the widget is
+ interested in other gesture types as well.
+
+ \code
+ // This widget is interested in pan and tap gestures.
+ grabGesture(Qt::PanGesture);
+ grabGesture(Qt::TapGesture);
+ \endcode
+ </li>
+
+ <li>
+ Reimplement HbWidgetBase::gestureEvent() to handle gestures that are
+ meaningful for your custom widget.
+
+ \code
+ void MyWidget::gestureEvent(QGestureEvent *event)
+ {
+ if (HbPanGesture *pan = qobject_cast<HbPanGesture *>
+ (event->gesture(Qt::PanGesture))) {
+
+ switch (pan->state()) {
+
+ case Qt::GestureStarted:
+ // Visualize the active state of the widget.
+ // Emit a signal to move the content
+ break;
+ case Qt::GestureUpdated:
+ // Emit a signal to move the content.
+ break;
+ case Qt::GestureCanceled:
+ // Visualize the non-active state of the widget.
+ // Emit a signal to return the content to the starting
+ // position.
+ break;
+ case Qt::GestureFinished:
+ // Visualize the non-active state of the widget.
+ // Emit a signal to move the content.
+ break;
+ default:
+ break;
+ }
+ }
+
+ // Handle other gesture types that have been grabbed. There may be
+ // several, since all gestures that are active at the same moment
+ // are sent within the same gesture event.
+ if (HbTapGesture *tap = qobject_cast<HbTapGesture *>
+ (event->gesture(Qt::TapGesture))) {
+ // handle the tap gesture
+ }
+
+ }
+ \endcode
+ </li>
+ </ol>
+
\sa QPanGesture
*/
/*!
- \brief HbPanGesture constructor
+ Constructor.
\param parent Owner for gesture
*/
@@ -51,7 +131,7 @@
}
/*!
- \brief HbPanGesture constructor
+ Constructor required by the shared d-pointer paradigm.
\param dd Private data
\param parent Owner for gesture
@@ -63,7 +143,7 @@
}
/*!
- \brief HbPanGesture destructor
+ Destructor.
*/
HbPanGesture::~HbPanGesture()
{
@@ -71,9 +151,8 @@
}
/*!
- \property startPos
- \brief Starting position for gesture in global coordinates.
- \sa HbPanGesture::sceneStartPos
+ Returns the starting position for the gesture in global coordinates.
+ \sa setStartPos(), sceneStartPos()
*/
QPointF HbPanGesture::startPos() const
{
@@ -81,6 +160,12 @@
return d->mStartPos;
}
+/*!
+ Sets the starting position for the gesture in global coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+ \sa startPos(), setSceneStartPos()
+*/
void HbPanGesture::setStartPos(const QPointF &startPos)
{
Q_D(HbPanGesture);
@@ -88,9 +173,9 @@
}
/*!
- \property velocity
- \brief Panning velocity in global coordinates.
- \sa HbPanGesture::sceneVelocity
+ Returns the panning velocity in global coordinates.
+ The unit is pixels per millisecond.
+ \sa setVelocity(), sceneVelocity()
*/
QPointF HbPanGesture::velocity() const
{
@@ -98,15 +183,21 @@
return HbVelocityCalculator( d->mAxisX, d->mAxisY ).velocity(QTime::currentTime());
}
+/*!
+ Sets the panning velocity in global coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+ \sa velocity()
+*/
void HbPanGesture::setVelocity(const QPointF &)
{
Q_ASSERT(false);
}
/*!
- \property sceneLastOffset
- \brief The total offset from start position to second last position in scene coordinates.
- \sa QPanGesture::lastOffset()
+ Returns the total offset from start position to second last position
+ in scene coordinates.
+ \sa setSceneLastOffset(), QPanGesture::lastOffset()
*/
QPointF HbPanGesture::sceneLastOffset() const
{
@@ -114,6 +205,13 @@
return d->mSceneLastOffset;
}
+/*!
+ Sets the total offset from start position to second last position
+ in scene coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+ \sa sceneLastOffset(), QPanGesture::setLastOffset()
+*/
void HbPanGesture::setSceneLastOffset(const QPointF &lastOffset)
{
Q_D(HbPanGesture);
@@ -121,9 +219,9 @@
}
/*!
- \property sceneOffset
- \brief The total offset from start position to current position in scene coordinates.
- \sa QPanGesture::offset()
+ Returns the total offset from start position to current position
+ in scene coordinates.
+ \sa setSceneOffset(), QPanGesture::offset()
*/
QPointF HbPanGesture::sceneOffset() const
{
@@ -131,6 +229,13 @@
return d->mSceneOffset;
}
+/*!
+ Sets the total offset from start position to current position
+ in scene coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+ \sa sceneOffset(), QPanGesture::setOffset()
+*/
void HbPanGesture::setSceneOffset(const QPointF &offset)
{
Q_D(HbPanGesture);
@@ -138,9 +243,8 @@
}
/*!
- \property sceneStartPos
- \brief Starting position for gesture in scene coordinates.
- \sa HbPanGesture::startPos()
+ Returns the starting position for the gesture in scene coordinates.
+ \sa setSceneStartPos(), startPos()
*/
QPointF HbPanGesture::sceneStartPos() const
{
@@ -148,6 +252,12 @@
return d->mSceneStartPos;
}
+/*!
+ Sets the starting position for the gesture in scene coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+ \sa sceneStartPos(), setStartPos()
+*/
void HbPanGesture::setSceneStartPos(const QPointF &startPos)
{
Q_D(HbPanGesture);
@@ -155,9 +265,9 @@
}
/*!
- \property sceneVelocity
- \brief Panning velocity in scene coordinates.
- \sa HbPanGesture::velocity()
+ Returns the panning velocity in scene coordinates.
+ The unit is pixels per millisecond.
+ \sa velocity()
*/
QPointF HbPanGesture::sceneVelocity() const
{
@@ -166,8 +276,7 @@
}
/*!
- \property sceneAcceleration
- \brief Panning acceleration in scene coordinates.
+ Returns the panning acceleration in scene coordinates.
\sa QPanGesture::acceleration()
*/
QPointF HbPanGesture::sceneAcceleration() const
@@ -176,8 +285,7 @@
}
/*!
- \property sceneDelta
- \brief Distance between last two points in scene coordinates.
+ Returns the distance between the last two points in scene coordinates.
\sa QPanGesture::delta()
*/
QPointF HbPanGesture::sceneDelta() const
--- a/src/hbcore/gestures/hbpinchgesture.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gestures/hbpinchgesture.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -31,12 +31,106 @@
@hbcore
\class HbPinchGesture
- \brief HbPinchGesture is an extension to Qt standard QPinchGesture
+ \brief The HbPinchGesture class provides multitouch support.
+
+ HbPinchGesture is an extension to Qt standard QPinchGesture. It offers
+ convenience functions for handling the pinch gesture properties directly
+ in scene coordinates. This removes any need for manual conversions from
+ the screen (global) coordinates of the QPinchGesture base class
+ properties.
+
+ You can use HbPinchGesture, for example, to let the user change an
+ image size in a photo application by dragging the two opposing corners
+ of the image at the same time. Another example would be rotating a widget
+ with two fingers.
+
+ \section _usecases_hbpinchgesture Using the HbPinchGesture class
+
+ This example shows how to make a custom widget recognize the pinch
+ gesture. The custom widget in the example derives from HbWidget.
+
+ <ol>
+ <li>
+ In order to receive touch events, which are required by the pinch gesture,
+ at least one widget in the scene needs to accept the QEvent::TouchBegin event.
+ To make sure this is done, you can do this in your widget by reimplementing
+ QGraphicsWidget::event().
+
+ \code
+ bool MyWidget::event(QEvent *e)
+ {
+ if (e->type() == QEvent::TouchBegin) {
+ return true;
+ }
+ return HbWidget::event(e);
+ }
+ \endcode
+ </li>
+
+ <li>
+ Register for pinch gestures by using the base class function
+ QGraphicsObject::grabGesture(). QGraphicsObject::grabGesture() can be
+ called several times with different arguments, if the widget is
+ interested in other gesture types as well.
+
+ \code
+ // This widget is interested in pinch and tap gestures.
+ grabGesture(Qt::PinchGesture);
+ grabGesture(Qt::TapGesture);
+ \endcode
+ </li>
+
+ <li>
+ Reimplement HbWidgetBase::gestureEvent() to handle gestures that are
+ meaningful for your custom widget.
+
+ \code
+ void MyWidget::gestureEvent(QGestureEvent *event)
+ {
+ if (HbPinchGesture *pinch = qobject_cast<HbPinchGesture *>
+ (event->gesture(Qt::PinchGesture))) {
+
+ switch (pinch->state()) {
+
+ case Qt::GestureStarted:
+ // Visualize the active state of the widget.
+ // Emit a signal to move the content.
+ break;
+ case Qt::GestureUpdated:
+ // Emit a signal to move the content.
+ break;
+ case Qt::GestureCanceled:
+ // Visualize the non-active state of the widget.
+ // Emit a signal to return the content to the starting
+ // position.
+ break;
+ case Qt::GestureFinished:
+ // Visualize the non-active state of the widget.
+ // Emit a signal to move the content.
+ break;
+ default:
+ break;
+ }
+ }
+
+ // Handle other gesture types that have been grabbed. There may be several,
+ // since all gestures that are active at the same moment are sent within
+ // the same gesture event.
+ if (HbTapGesture *tap = qobject_cast<HbTapGesture *>
+ (event->gesture(Qt::TapGesture))) {
+ // handle the tap gesture
+ }
+
+ }
+ \endcode
+ </li>
+ </ol>
+
\sa QPinchGesture
*/
/*!
- \brief HbPinchGesture constructor
+ Constructor.
\param parent Owner for gesture
*/
HbPinchGesture::HbPinchGesture(QObject *parent)
@@ -50,7 +144,7 @@
}
/*!
- \brief HbPinchGesture constructor
+ Constructor required by the shared d-pointer paradigm.
\param dd Private data
\param parent Owner for gesture
*/
@@ -64,7 +158,7 @@
}
/*!
- \brief HbPinchGesture destructor
+ Destructor.
*/
HbPinchGesture::~HbPinchGesture()
{
@@ -72,9 +166,8 @@
}
/*!
- \property sceneTotalRotationAngle
- \brief The total angle covered by the gesture in scene coordinates.
- \sa QPinchGesture::totalRotationAngle()
+ Returns the total angle covered by the gesture in scene coordinates.
+ \sa setSceneTotalRotationAngle(), QPinchGesture::totalRotationAngle()
*/
qreal HbPinchGesture::sceneTotalRotationAngle() const
{
@@ -82,6 +175,12 @@
return d->mSceneTotalRotationAngle;
}
+/*!
+ Sets the total angle covered by the gesture in scene coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+ \sa sceneTotalRotationAngle(), QPinchGesture::setTotalRotationAngle()
+*/
void HbPinchGesture::setSceneTotalRotationAngle(qreal value)
{
Q_D(HbPinchGesture);
@@ -89,9 +188,9 @@
}
/*!
- \property sceneLastRotationAngle
- \brief The last reported angle covered by the gesture motion in scene coordinates.
- \sa QPinchGesture::lastRotationAngle()
+ Returns the last reported angle covered by the gesture in scene
+ coordinates.
+ \sa setSceneLastRotationAngle(), QPinchGesture::lastRotationAngle()
*/
qreal HbPinchGesture::sceneLastRotationAngle() const
{
@@ -99,6 +198,12 @@
return d->mSceneLastRotationAngle;
}
+/*!
+ Sets the last reported angle covered by the gesture in scene coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+ \sa sceneLastRotationAngle(), QPinchGesture::setLastRotationAngle()
+*/
void HbPinchGesture::setSceneLastRotationAngle(qreal value)
{
Q_D(HbPinchGesture);
@@ -106,9 +211,9 @@
}
/*!
- \property sceneRotationAngle
- \brief The angle covered by the gesture motion in scene coordinates.
- \sa QPinchGesture::rotationAngle()
+ Returns the angle covered by the gesture since last update
+ in scene coordinates.
+ \sa setSceneRotationAngle(), QPinchGesture::rotationAngle()
*/
qreal HbPinchGesture::sceneRotationAngle() const
{
@@ -116,6 +221,13 @@
return d->mSceneRotationAngle;
}
+/*!
+ Sets the angle covered by the gesture since last update
+ in scene coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+ \sa sceneRotationAngle(), QPinchGesture::setRotationAngle()
+*/
void HbPinchGesture::setSceneRotationAngle(qreal value)
{
Q_D(HbPinchGesture);
@@ -123,9 +235,8 @@
}
/*!
- \property sceneStartCenterPoint
- \brief The starting position of the center point in scene coordinates.
- \sa QPinchGesture::startCenterPoint()
+ Returns the starting position of the center point in scene coordinates.
+ \sa setSceneStartCenterPoint(), QPinchGesture::startCenterPoint()
*/
QPointF HbPinchGesture::sceneStartCenterPoint() const
{
@@ -133,6 +244,12 @@
return d->mSceneStartCenterPoint;
}
+/*!
+ Sets the starting position of the center point in scene coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+ \sa sceneStartCenterPoint(), QPinchGesture::setStartCenterPoint()
+*/
void HbPinchGesture::setSceneStartCenterPoint(const QPointF &value)
{
Q_D(HbPinchGesture);
@@ -140,9 +257,9 @@
}
/*!
- \property sceneLastCenterPoint
- \brief The last position of the center point recorded for this gesture in scene coordinates.
- \sa QPinchGesture::lastCenterPoint()
+ Returns the last position of the center point recorded for the gesture
+ in scene coordinates.
+ \sa setSceneLastCenterPoint(), QPinchGesture::lastCenterPoint()
*/
QPointF HbPinchGesture::sceneLastCenterPoint() const
{
@@ -150,6 +267,13 @@
return d->mSceneLastCenterPoint;
}
+/*!
+ Sets the last position of the center point recorded for the gesture
+ in scene coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+ \sa sceneLastCenterPoint(), QPinchGesture::setLastCenterPoint()
+*/
void HbPinchGesture::setSceneLastCenterPoint(const QPointF &value)
{
Q_D(HbPinchGesture);
@@ -157,9 +281,8 @@
}
/*!
- \property sceneCenterPoint
- \brief The current center point in scene coordinates.
- \sa QPinchGesture::centerPoint()
+ Returns the current center point in scene coordinates.
+ \sa setSceneCenterPoint(), QPinchGesture::centerPoint()
*/
QPointF HbPinchGesture::sceneCenterPoint() const
{
@@ -167,6 +290,12 @@
return d->mSceneCenterPoint;
}
+/*!
+ Sets the current center point in scene coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+ \sa sceneCenterPoint(), QPinchGesture::setCenterPoint()
+*/
void HbPinchGesture::setSceneCenterPoint(const QPointF &value)
{
Q_D(HbPinchGesture);
--- a/src/hbcore/gestures/hbswipegesture.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gestures/hbswipegesture.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -34,14 +34,86 @@
@hbcore
\class HbSwipeGesture
- \brief HbSwipeGesture is an extension to Qt standard HbSwipeGesture
+ \brief The HbSwipeGesture class provides support for receiving a swipe
+ (flick) gesture.
+
+ HbSwipeGesture is an extension to Qt standard QSwipeGesture. It is
+ optimized for mobile touch screens, and also supports recognition of
+ mouse events for development purposes. Moreover, HbSwipeGesture
+ has convenience functions for handling the QSwipeGesture properties
+ (horizontalDirection, verticalDirection, swipeAngle) directly in scene
+ coordinates. They remove the need for any manual conversions from the
+ screen (global) coordinates offered by the QSwipeGesture base class
+ properties.
+
+ The swipe gesture is designed to be used as a single-shot gesture which
+ is activated after a flick and release. No events are sent until the
+ gesture is finished. Swipe should be used when feedback during the
+ gesture is not possible or desired.
+
+ \section _usecases_hbswipegesture Using the HbSwipeGesture class
+
+ This example shows how to make a custom widget recognize the swipe
+ gesture. The custom widget in the example derives from HbWidget.
+
+ <ol>
+ <li>
+ Register for swipe gestures by using the base class function
+ QGraphicsObject::grabGesture(). QGraphicsObject::grabGesture() can be
+ called several times with different arguments, if the widget is
+ interested in other gesture types as well.
+
+ \code
+ // This widget is interested in swipe and tap gestures.
+ grabGesture(Qt::SwipeGesture);
+ grabGesture(Qt::TapGesture);
+ \endcode
+ </li>
+
+ <li>
+ Reimplement HbWidgetBase::gestureEvent() to handle gestures that are
+ meaningful for your custom widget.
+
+ \code
+ void MyWidget::gestureEvent(QGestureEvent *event)
+ {
+ if (HbSwipeGesture *swipe = qobject_cast<HbSwipeGesture *>
+ (event->gesture(Qt::SwipeGesture))) {
+
+ switch (swipe->state()) {
+
+ case Qt::GestureStarted: // fall-through
+ case Qt::GestureUpdated: // fall-through
+ case Qt::GestureCanceled:
+ break;
+ case Qt::GestureFinished:
+ // Emit a signal to show the swipe movement.
+ break;
+ default:
+ break;
+ }
+ }
+
+ // Handle other gesture types that have been grabbed. There may be
+ // several, since all gestures that are active at the same moment
+ // are sent within the same gesture event.
+ if (HbTapGesture *tap = qobject_cast<HbTapGesture *>
+ (event->gesture(Qt::TapGesture))) {
+ // handle the tap gesture
+ }
+
+ }
+ \endcode
+ </li>
+ </ol>
+
\sa QSwipeGesture
*/
const int KHbDirectionThreshold = 45; // degrees
/*!
- \brief HbSwipeGesture constructor
+ Constructor.
\param parent Owner for gesture
*/
HbSwipeGesture::HbSwipeGesture(QObject *parent)
@@ -52,7 +124,7 @@
}
/*!
- \brief HbSwipeGesture constructor
+ Constructor required by the shared d-pointer paradigm.
\param dd Private data
\param parent Owner for gesture
*/
@@ -63,7 +135,7 @@
}
/*!
- \brief HbSwipeGesture destructor
+ Destructor.
*/
HbSwipeGesture::~HbSwipeGesture()
{
@@ -71,8 +143,8 @@
}
/*!
- \property sceneHorizontalDirection
- \brief Horizontal direction of swipe in scene coordinates.
+ Returns the horizontal direction of the swipe gesture
+ relative to scene coordinates.
\sa QSwipeGesture::horizontalDirection()
*/
@@ -86,8 +158,8 @@
return QSwipeGesture::NoDirection;
}
/*!
- \property sceneVerticalDirection
- \brief Vertical direction of swipe in scene coordinates.
+ Returns the vertical direction of the swipe gesture
+ relative to scene coordinates.
\sa QSwipeGesture::verticalDirection()
*/
QSwipeGesture::SwipeDirection HbSwipeGesture::sceneVerticalDirection() const
@@ -101,15 +173,21 @@
}
/*!
- \property sceneSwipeAngle
- \brief Angle for swipe in scene coordinates.
- \sa QSwipeGesture::swipeAngle()
+ Returns the angle for the swipe gesture in degrees,
+ taking into account any scene transformations.
+ \sa setSceneSwipeAngle(), QSwipeGesture::swipeAngle()
*/
qreal HbSwipeGesture::sceneSwipeAngle() const
{
return d_ptr->mSceneSwipeAngle;
}
+/*!
+ Sets the angle for the swipe gesture.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+ \sa sceneSwipeAngle(), QSwipeGesture::setSwipeAngle()
+*/
void HbSwipeGesture::setSceneSwipeAngle(qreal value)
{
d_ptr->mSceneSwipeAngle = value;
@@ -118,7 +196,7 @@
/*!
\deprecated
- \property speed
+ Returns the speed.
*/
qreal HbSwipeGesture::speed() const
{
@@ -126,6 +204,10 @@
return 1;
}
+/*!
+ \deprecated
+ Sets the speed.
+*/
void HbSwipeGesture::setSpeed(qreal speed)
{
Q_UNUSED (speed);
@@ -134,7 +216,7 @@
/*!
\deprecated
- \property touchPointCount
+ Returns the touchPointCount.
*/
int HbSwipeGesture::touchPointCount() const
{
@@ -142,6 +224,10 @@
return 0;
}
+/*!
+ \deprecated
+ Sets the touchPointCount.
+*/
void HbSwipeGesture::setTouchPointCount(int touchPointCount)
{
HB_DEPRECATED("HbSwipeGesture::setTouchPointCount is deprecated");
--- a/src/hbcore/gestures/hbtapandholdgesture.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gestures/hbtapandholdgesture.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -33,12 +33,90 @@
@hbcore
\class HbTapAndHoldGesture
- \brief HbTapAndHoldGesture is an extension to Qt standard QTapAndHoldGesture
- \sa QTapAndHoldGesture
+ \brief The HbTapAndHoldGesture class provides support for receiving
+ tap-and-hold gestures.
+
+ HbTapAndHoldGesture is an extension to Qt standard QTapAndHoldGesture.
+ It is optimized for mobile touch screens, and also supports recognition
+ of mouse events for development purposes. It also gives information about
+ the tap-and-hold gesture position directly in scene coordinates, removing
+ any need for manual conversions from the screen (global) coordinates
+ offered by QTapAndHoldGesture.
+
+ Use HbTapAndHoldGesture for a custom widget that is only interested in
+ the tap-and-hold (long tap) gesture. If you want your custom widget to
+ receive both short and long taps, use HbTapGesture instead, since it
+ supports both.
+
+ \section _usecases_hbtapandholdgesture Using the HbTapAndHoldGesture class
+
+ This example shows how to make a custom widget recognize the tap-and-hold
+ gesture. The custom widget in the example derives from HbWidget.
+
+ <ol>
+ <li>
+ Register for tap-and-hold gestures by using the base class function
+ QGraphicsObject::grabGesture(). QGraphicsObject::grabGesture() can be
+ called several times with different arguments, if the widget is
+ interested in other gesture types as well.
+
+ \code
+ // This widget is interested in tap-and-hold and pan gestures.
+ grabGesture(Qt::TapAndHoldGesture);
+ grabGesture(Qt::PanGesture);
+ \endcode
+ </li>
+
+ <li>
+ Reimplement HbWidgetBase::gestureEvent() to handle gestures that are
+ meaningful for your custom widget.
+
+ \code
+ void MyWidget::gestureEvent(QGestureEvent *event)
+ {
+ if (HbTapAndHoldGesture *tapAndHold =
+ qobject_cast<HbTapAndHoldGesture *>
+ (event->gesture(Qt::TapAndHoldGesture))) {
+
+ switch (tapAndHold->state()) {
+
+ case Qt::GestureStarted:
+ // Visualize the active state of the widget.
+ break;
+
+ // No GestureUpdated events are sent for this gesture type,
+ // so no handling is needed for those
+
+ case Qt::GestureCanceled:
+ // Visualize the non-active state of the widget.
+ break;
+ case Qt::GestureFinished:
+ // Visualize the non-active state of the widget.
+ // Emit a long tap signal.
+ break;
+ default:
+ break;
+ }
+ }
+
+ // Handle other gesture types that have been grabbed. There may be
+ // several, since all gestures that are active at the same moment
+ // are sent within the same gesture event.
+ if (HbPanGesture *pan = qobject_cast<HbPanGesture *>
+ (event->gesture(Qt::PanGesture))) {
+ // handle the pan gesture
+ }
+
+ }
+ \endcode
+ </li>
+ </ol>
+
+ \sa HbTapGesture, QTapAndHoldGesture
*/
/*!
- \brief HbTapAndHoldGesture constructor
+ Constructor.
\param parent Parent for the gesture
*/
HbTapAndHoldGesture::HbTapAndHoldGesture(QObject* parent)
@@ -49,7 +127,7 @@
}
/*!
- \brief HbTapAndHoldGesture constructor
+ Constructor required by the shared d-pointer paradigm.
\param dd Custom private data
\param parent Parent for the gesture
*/
@@ -62,7 +140,7 @@
}
/*!
- \brief HbTapAndHoldGesture destructor
+ Destructor.
*/
HbTapAndHoldGesture::~HbTapAndHoldGesture()
{
@@ -70,16 +148,20 @@
}
/*!
- \property scenePosition
-
- Current position of the gesture.
- \sa QTapAndHoldGesture::position()
+ Returns the current position of the gesture in scene coordinates.
+ \sa setScenePosition(), QTapAndHoldGesture::position()
*/
QPointF HbTapAndHoldGesture::scenePosition() const
{
return priv->mScenePos;
}
+/*!
+ Sets the current position of the gesture in scene coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+ \sa scenePosition(), QTapAndHoldGesture::setPosition()
+*/
void HbTapAndHoldGesture::setScenePosition(const QPointF& pos)
{
priv->mScenePos = pos;
--- a/src/hbcore/gestures/hbtapandholdgesturelogic_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gestures/hbtapandholdgesturelogic_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -90,44 +90,26 @@
int movementThresholdSquare = mTapRadius * mTapRadius;
if ( gesture->property("tapRadius").isValid() ) {
movementThresholdSquare = gesture->property("tapRadius").toInt() * gesture->property("tapRadius").toInt();
- }
-
+ }
return (delta.x() * delta.x() + delta.y() * delta.y()) > movementThresholdSquare;
};
/*!
\internal
- \brief Starts brand new timer.
- \param msecs Timer runtime in microseconds
- \return ID of the timer
-*/
-int HbTapAndHoldGestureLogic::startTimer(
- HbTapAndHoldGesture* gesture,
- int msecs)
-{
- gesture->priv->mRunningTime = msecs;
- return gesture->startTimer(msecs);
-}
-
-/*!
- \internal
\brief
\return
*/
void HbTapAndHoldGestureLogic::resetGesture(HbTapAndHoldGesture *gesture)
-{
+{
if ( gesture->priv->mTimerID ) {
gesture->killTimer(gesture->priv->mTimerID);
- }
-
+ gesture->priv->mTimerID = 0;
+ }
gesture->setProperty("startPos", QPointF(0,0));
- gesture->setProperty("tapRadius", QPointF(0,0));
+ gesture->setProperty("tapRadius", QVariant());
gesture->setProperty("position", QPointF(0,0));
gesture->setProperty("scenePosition", QPointF(0,0));
-
- gesture->priv->mTimerID = 0;
- gesture->priv->mRunningTime = 0;
}
/*!
@@ -144,8 +126,7 @@
QObject *watched,
QMouseEvent *me )
{
- Q_UNUSED(gestureState);
-
+ Q_UNUSED(gestureState);
// Accept only press events from left mouse button.
if ( me->button() != Qt::LeftButton ) {
DEBUG() << gesture << QGestureRecognizer::Ignore;
@@ -159,7 +140,11 @@
gesture->setProperty("startPos", me->globalPos());
gesture->setProperty("position", me->globalPos());
gesture->setProperty("scenePosition", HbGestureUtils::mapToScene(watched, me->globalPos()));
- gesture->priv->mTimerID = startTimer(gesture, HOLDTAP_ACTIVATION_USECS);
+
+ Q_ASSERT(gesture->priv->mTimerID == 0);
+ Q_ASSERT(gestureState == Qt::NoGesture);
+
+ gesture->priv->mTimerID = gesture->startTimer(HOLDTAP_ACTIVATION_USECS);
mTapRadius = (int)(HbDefaultTapRadius * HbDeviceProfile::current().ppmValue());
DEBUG() << gesture << QGestureRecognizer::MayBeGesture;
@@ -182,9 +167,13 @@
{
Q_UNUSED(gestureState);
- // Before anything, check if there is even left button pressed.
- if (me->buttons() != Qt::LeftButton || !gesture->priv->mRunningTime){
- DEBUG() << gesture << QGestureRecognizer::Ignore;
+ // Before anything, check if there is left button pressed.
+ if (!(me->buttons() & Qt::LeftButton) ){
+ return QGestureRecognizer::Ignore;
+ }
+
+ // If timer is not running we can ignore move events
+ if(!gesture->priv->mTimerID) {
return QGestureRecognizer::Ignore;
}
@@ -195,12 +184,12 @@
if (outsideThreshold(gesture)){
// Finger has moved outside, so cancel this gesture
gesture->killTimer(gesture->priv->mTimerID);
+ gesture->priv->mTimerID = 0;
+ DEBUG() << gesture << "threshold exceeded";
return QGestureRecognizer::CancelGesture;
}
-
- // Move events should be just ignored.
- DEBUG() << gesture << QGestureRecognizer::MayBeGesture;
- return QGestureRecognizer::MayBeGesture;
+ // moving within threshold
+ return QGestureRecognizer::Ignore;
}
/*!
@@ -218,29 +207,32 @@
QObject *watched,
QMouseEvent *me )
{
- Q_UNUSED(gestureState);
Q_UNUSED(me);
Q_UNUSED(watched);
+ Q_UNUSED(gestureState);
- // Check if the gesture is already been cancelled. This is an unknown state.
- if (!gesture->priv->mRunningTime) {
+ // Before anything, check if left button was released.
+ if (!(me->button() == Qt::LeftButton) ){
DEBUG() << gesture << QGestureRecognizer::Ignore;
return QGestureRecognizer::Ignore;
}
- // If release happens, before timer has expired, cancel the gesture.
- if (gesture->priv->mTimerID) {
+ // make sure we not in invalid state
+ Q_ASSERT(!(gestureState == Qt::GestureFinished && !gesture->priv->mTimerID));
+
+ // Mouse release can only cancel or ignore gesture since timers handle
+ // triggering
+
+ // If timer was started, kill it
+ if(gesture->priv->mTimerID) {
gesture->killTimer(gesture->priv->mTimerID);
+ gesture->priv->mTimerID = 0;
+ // Gesture state in Gesture Manager is MaybeGesture
return QGestureRecognizer::CancelGesture;
- } else {
- // Gesture has already been executed. Just ignore the event and don't
- // bother UI about it.
- gesture->priv->mTimerID = 0;
- gesture->priv->mRunningTime = 0;
+ }
+ DEBUG() << gesture << QGestureRecognizer::Ignore;
+ return QGestureRecognizer::Ignore;
- DEBUG() << gesture << QGestureRecognizer::Ignore;
- return QGestureRecognizer::Ignore;
- }
}
/*!
@@ -256,43 +248,35 @@
\see HbTapAndHoldGestureLogic::HandleGesture()
*/
QGestureRecognizer::Result HbTapAndHoldGestureLogic::handleTimer(
+ Qt::GestureState gestureState,
HbTapAndHoldGesture *gesture,
- QTimerEvent* te)
+ QObject *watched,
+ QTimerEvent *te )
{
- // React only to own timer event, please.
- if ( gesture->priv->mTimerID == te->timerId() ) {
- // Consume the timer event as nobody will be interested about this.
- QGestureRecognizer::Result result = QGestureRecognizer::ConsumeEventHint;
+ Q_UNUSED(watched);
+ Q_UNUSED(te);
- // Handle the event and consume the timer event as it doesn't belong
- // to anybody else.
- switch ( gesture->priv->mRunningTime )
- {
- // Time to invoke the started event.
- case HOLDTAP_ACTIVATION_USECS:
- gesture->priv->mTimerID = startTimer(gesture, HOLDTAP_DURATION_USECS);
- result |= QGestureRecognizer::TriggerGesture;
- break;
+ // React only to own timer event
+ Q_ASSERT(gesture->priv->mTimerID == te->timerId());
- // Time to invoke finish event.
- case HOLDTAP_DURATION_USECS:
- gesture->priv->mTimerID = 0;
- gesture->priv->mRunningTime = 0;
- result |= QGestureRecognizer::FinishGesture;
- break;
+ // Consume the timer event as nobody will be interested about this.
+ QGestureRecognizer::Result result = QGestureRecognizer::ConsumeEventHint;
+ gesture->killTimer(gesture->priv->mTimerID);
+ gesture->priv->mTimerID = 0;
- default:
- result |= QGestureRecognizer::Ignore;
- break;
- }
+ if(gestureState == Qt::NoGesture) {
+ gesture->priv->mTimerID = gesture->startTimer(HOLDTAP_DURATION_USECS);
+ result |= QGestureRecognizer::TriggerGesture;
+ } else if (gestureState == Qt::GestureStarted) {
+ result |= QGestureRecognizer::FinishGesture;
+ } else {
+ // invalid state
+ Q_ASSERT(false);
+ }
- DEBUG() << gesture << result;
- return result;
- } else {
- // Not our business.
- DEBUG() << gesture << QGestureRecognizer::Ignore;
- return QGestureRecognizer::Ignore;
- }
+ DEBUG() << gesture << result;
+ return result;
+
}
/*!
@@ -309,34 +293,27 @@
HbTapAndHoldGesture *gesture,
QObject *watched,
QEvent *event )
-{
- if (!gesture || !watched || !event )
- {
- DEBUG() << "WARNING: Ignoring tap and hold gesture because of invalid arguments from gesture fw.";
- return QGestureRecognizer::Ignore;
- }
-
+{
switch( event->type() )
{
case QEvent::MouseButtonDblClick:
case QEvent::MouseButtonPress:
return handleMousePress(
- gestureState, gesture, watched, static_cast<QMouseEvent*>(event));
+ gestureState, gesture, watched, static_cast<QMouseEvent*>(event));
case QEvent::MouseMove:
return handleMouseMove(
- gestureState, gesture, watched, static_cast<QMouseEvent*>(event));
+ gestureState, gesture, watched, static_cast<QMouseEvent*>(event));
case QEvent::MouseButtonRelease:
return handleMouseRelease(
- gestureState, gesture, watched, static_cast<QMouseEvent*>(event));
+ gestureState, gesture, watched, static_cast<QMouseEvent*>(event));
case QEvent::Timer:
- return handleTimer(gesture, static_cast<QTimerEvent*>(event));
+ return handleTimer(
+ gestureState, gesture, watched, static_cast<QTimerEvent*>(event));
default: break;
}
-
- DEBUG() << gesture << QGestureRecognizer::Ignore;
return QGestureRecognizer::Ignore;
}
--- a/src/hbcore/gestures/hbtapandholdgesturelogic_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gestures/hbtapandholdgesturelogic_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -44,7 +44,6 @@
~HbTapAndHoldGestureLogic();
bool outsideThreshold(HbTapAndHoldGesture *gesture);
- int startTimer(HbTapAndHoldGesture *gesture, int msecs);
void resetGesture(HbTapAndHoldGesture *gesture);
QGestureRecognizer::Result handleMousePress(
@@ -54,7 +53,7 @@
QGestureRecognizer::Result handleMouseRelease(
Qt::GestureState gestureState, HbTapAndHoldGesture *gesture, QObject *watched, QMouseEvent *me );
QGestureRecognizer::Result handleTimer(
- HbTapAndHoldGesture *gesture, QTimerEvent* te);
+ Qt::GestureState gestureState, HbTapAndHoldGesture *gesture, QObject *watched, QTimerEvent* te);
QGestureRecognizer::Result recognize(
Qt::GestureState gestureState, HbTapAndHoldGesture *gesture, QObject *watched, QEvent* event );
--- a/src/hbcore/gestures/hbtapgesture.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gestures/hbtapgesture.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -48,27 +48,136 @@
@hbcore
\class HbTapGesture
- \brief HbTapGesture is an extension to Qt standard QTapGesture.
+ \brief The HbTapGesture class provides support for widgets needing both
+ the tap and the tap-and-hold gestures.
+
+ HbTapGesture is an extension to the Qt standard QTapGesture. It is
+ optimized for mobile touch screens, and also supports recognition of
+ mouse events for development purposes. Moreover, HbTapGesture extends
+ QTapGesture by supporting both tap and tap-and-hold gestures. Use of
+ Qt::TapAndHoldGesture in conjunction with Qt::TapGesture in the same
+ widget would make it difficult to handle state updates and finishes in
+ the widget.
+
+ Compared to QTapGesture, HbTapGesture also provides additional information
+ about the tap gesture position. Moreover, it has convenience functions for
+ handling the position information directly in scene coordinates, without
+ any need for manual conversions from global to scene coordinates.
+
+ Some of the existing Hb widgets (for example HbPushButton) already
+ support tap gestures by emitting a signal such as clicked() or longPress()
+ when they are tapped. If, however, you are implementing a custom widget
+ whose base class does not emit the needed signals, you need to add
+ tap gesture handling by using either QTapGesture or HbTapGesture.
+ HbTapGesture is a recommended choice if your widget needs both tap and
+ tap-and-hold gestures.
+
+ HbTapGesture does not support double tap.
+
+ \section _usecases_hbtapgesture Using the HbTapGesture class
+
+ This example shows how to make a custom widget recognize the tap and
+ tap-and-hold gestures. The custom widget in the example derives from
+ HbWidget.
- HbTapGesture extends QTapGesture with additional information related
- to the tap gesture, but most important use for HbTapGesture is
- in widgets needing both tap and tap-and-hold. HbTapGesture
- provides both -- use of Qt::TapAndHoldGesture
- in conjunction with Qt::TapGesture in the same widget makes it
- difficult to handle state updates and finishes in the widget.
- HbTapGesture::tapStylehint() can be used to query whether
- the tap was a normal tap, or tap-and-hold at the time of Qt::GestureUpdated
- of Qt::GestureFinished. A gesture update will be sent at the time
- when the tap-and-hold timer triggers. No updates are sent
- of the finger movement during the tap.
+ <ol>
+ <li>
+ Register for tap gestures by using the base class function
+ QGraphicsObject::grabGesture(). QGraphicsObject::grabGesture() can be
+ called several times with different arguments, if the widget is interested
+ in other gesture types as well.
+
+ \code
+ // This widget is interested in tap and pan gestures.
+ grabGesture(Qt::TapGesture);
+ grabGesture(Qt::PanGesture);
+ \endcode
+ </li>
+
+ <li>
+ Reimplement HbWidgetBase::gestureEvent() to handle gestures that are
+ meaningful for your custom widget.
+
+ HbTapGesture::tapStyleHint() can be used to query whether the tap was
+ a normal tap or tap-and-hold at the time of Qt::GestureUpdated or
+ Qt::GestureFinished. A gesture update will be sent at the time when
+ the tap-and-hold timer triggers. No updates are sent of the finger
+ movement during the tap.
+
+ \code
+ void MyWidget::gestureEvent(QGestureEvent *event)
+ {
+ if (HbTapGesture *tap = qobject_cast<HbTapGesture *>
+ (event->gesture(Qt::TapGesture))) {
+
+ switch (tap->state()) {
+
+ case Qt::GestureStarted:
+ // Visualize the active state of the widget.
+ break;
+ case Qt::GestureUpdated:
+
+ // Long tap is triggered if the gesture takes
+ // more than 0.5 seconds. Handle it here.
+ if (tap->tapStyleHint() == HbTapGesture::TapAndHold) {
+ // Emit a long tap signal.
+ }
+
+ break;
+ case Qt::GestureCanceled:
+ // Visualize the non-active state of the widget.
+ break;
+ case Qt::GestureFinished:
+
+ // Visualize the non-active state of the widget.
+
+ // Short tap is handled when the gesture is finished.
+ if (tap->tapStyleHint() == HbTapGesture::Tap) {
+ // Emit a short tap signal.
+ }
+
+ break;
+ default:
+ break;
+ }
+ }
+
+ // Handle other gesture types that have been grabbed. There may be
+ // several, since all gestures that are active at the same moment
+ // are sent within the same gesture event.
+ if (HbPanGesture *pan = qobject_cast<HbPanGesture *>
+ (event->gesture(Qt::PanGesture))) {
+ // handle the pan gesture
+ }
+
+ }
+ \endcode
+ </li>
+ </ol>
- \sa QTapGesture, HbTapGesture::TapStyleHint
+ \sa TapStyleHint, QTapGesture
*/
/*!
- \brief HbTapGesture constructor
- \param parent Parent for the gesture
+ \enum HbTapGesture::TapStyleHint
+ Defines the tap style.
+*/
+
+/*!
+ \var HbTapGesture::TapStyleHint HbTapGesture::Tap
+ Normal (short) tap.
+*/
+
+/*!
+ \var HbTapGesture::TapStyleHint HbTapGesture::TapAndHold
+ Long press (tap-and-hold).
+*/
+
+/*!
+ Constructor.
+
+ \param parent Parent for the gesture.
*/
HbTapGesture::HbTapGesture(QObject *parent)
: QTapGesture(parent), d_ptr(new HbTapGesturePrivate)
@@ -77,9 +186,9 @@
}
/*!
- \brief HbTapGesture constructor
- \param dd Custom private data
- \param parent Parent for the gesture
+ Constructor required by the shared d-pointer paradigm.
+ \param dd Custom private data.
+ \param parent Parent for the gesture.
*/
HbTapGesture::HbTapGesture( HbTapGesturePrivate &dd, QObject *parent )
@@ -89,7 +198,7 @@
}
/*!
- \brief HbTapGesture destructor
+ Destructor.
*/
HbTapGesture::~HbTapGesture()
{
@@ -98,8 +207,9 @@
}
/*!
- \property startPos
- \brief Stores the starting position of the tap gesture in screen coordinates.
+ Returns the starting position of the tap gesture in screen coordinates.
+
+ \sa setStartPos()
*/
QPointF HbTapGesture::startPos() const
{
@@ -107,6 +217,13 @@
return d->mStartPos;
}
+/*!
+ Sets the starting position of the tap gesture in screen coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+
+ \sa startPos()
+*/
void HbTapGesture::setStartPos(const QPointF &startPos)
{
Q_D(HbTapGesture);
@@ -114,8 +231,9 @@
}
/*!
- \property sceneStartPos
- \brief Stores the starting position of the tap gesture in scene coordinates.
+ Returns the starting position of the tap gesture in scene coordinates.
+
+ \sa setSceneStartPos()
*/
QPointF HbTapGesture::sceneStartPos() const
{
@@ -123,6 +241,13 @@
return d->mSceneStartPos;
}
+/*!
+ Sets the starting position of the tap gesture in scene coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+
+ \sa sceneStartPos()
+*/
void HbTapGesture::setSceneStartPos(const QPointF &startPos)
{
Q_D(HbTapGesture);
@@ -130,9 +255,9 @@
}
/*!
- \property scenePosition
- \brief Stores the current position of the tap gesture in scene coordinates.
- \sa QTapGesture::position()
+ Returns the current position of the tap gesture in scene coordinates.
+
+ \sa setScenePosition(), QTapGesture::position()
*/
QPointF HbTapGesture::scenePosition() const
{
@@ -140,6 +265,13 @@
return d->mScenePosition;
}
+/*!
+ Sets the current position of the tap gesture in scene coordinates.
+ This function is used by the framework gesture recognition logic,
+ and it should not be used by the widget receiving the gesture.
+
+ \sa scenePosition(), QTapGesture::position()
+*/
void HbTapGesture::setScenePosition(const QPointF &startPos)
{
Q_D(HbTapGesture);
@@ -147,11 +279,11 @@
}
/*!
- \property tapStyleHint
- \brief Indicates whether tap is normal tap or long press.
+ Returns information about whether the tap is a short tap or long press
+ (tap-and-hold).
- TapStyleHint is by default Tap and in case of long press, the gesture
- update event is sent and TapStyleHint changed to TapAndHold.
+ The tapStyleHint property is by default Tap and in case of long press,
+ a gesture update event is sent and tapStyleHint changed to TapAndHold.
*/
HbTapGesture::TapStyleHint HbTapGesture::tapStyleHint() const
{
--- a/src/hbcore/gui/hbabstractbutton.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbabstractbutton.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -210,11 +210,11 @@
//In that case, the distance in the direction will be used as significant score,
//take also in account orthogonal distance in case two widget are in the same distance.
int score;
- if ((buttonRect.x() < target.right() && target.x() < buttonRect.right())
+ if ( keyNavigation() && (buttonRect.x() < target.right() && target.x() < buttonRect.right())
&& (key == Qt::Key_Up || key == Qt::Key_Down)) {
//one item's is at the vertical of the other
score = (qAbs(p.y() - goal.y()) << 16) + qAbs(p.x() - goal.x());
- } else if ((buttonRect.y() < target.bottom() && target.y() < buttonRect.bottom())
+ } else if ( keyNavigation() && (buttonRect.y() < target.bottom() && target.y() < buttonRect.bottom())
&& (key == Qt::Key_Left || key == Qt::Key_Right) ) {
//one item's is at the horizontal of the other
score = (qAbs(p.x() - goal.x()) << 16) + qAbs(p.y() - goal.y());
@@ -224,46 +224,45 @@
if (score > bestScore && candidate)
continue;
-
- switch(key) {
- case Qt::Key_Up:
- if (p.y() < goal.y()) {
- candidate = button;
- bestScore = score;
- }
- break;
- case Qt::Key_Down:
- if (p.y() > goal.y()) {
- candidate = button;
- bestScore = score;
+ if ( keyNavigation()) {
+ switch(key) {
+ case Qt::Key_Up:
+ if (p.y() < goal.y()) {
+ candidate = button;
+ bestScore = score;
+ }
+ break;
+ case Qt::Key_Down:
+ if (p.y() > goal.y()) {
+ candidate = button;
+ bestScore = score;
+ }
+ break;
+ case Qt::Key_Left:
+ if (p.x() < goal.x()) {
+ candidate = button;
+ bestScore = score;
+ }
+ break;
+ case Qt::Key_Right:
+ if (p.x() > goal.x()) {
+ candidate = button;
+ bestScore = score;
+ }
+ break;
}
- break;
- case Qt::Key_Left:
- if (p.x() < goal.x()) {
- candidate = button;
- bestScore = score;
- }
- break;
- case Qt::Key_Right:
- if (p.x() > goal.x()) {
- candidate = button;
- bestScore = score;
- }
- break;
}
}
}
if (exclusive
-#ifdef QT_KEYPAD_NAVIGATION
- && !QApplication::keypadNavigationEnabled()
-#endif
+ && !keyNavigation()
&& candidate
&& focusButton->isChecked()
&& candidate->isCheckable())
candidate->click();
- if (candidate) {
+ if ( keyNavigation() && candidate) {
if (key == Qt::Key_Up || key == Qt::Key_Left)
candidate->setFocus(Qt::BacktabFocusReason);
else
@@ -299,7 +298,6 @@
q->grabGesture(Qt::TapGesture);
#endif
- q->setFlag(QGraphicsItem::ItemHasNoContents, true);
// FIXME: size policy is commented out b/c of a bug in Qt #236689, also in our bugtracker.
//q->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum, controlType));
@@ -955,41 +953,40 @@
if (HbTapGesture *tap = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) {
bool hit = hitButton(mapFromScene(event->mapToGraphicsScene(tap->position())));
-
switch(tap->state()) {
- case Qt::GestureStarted:
- setDown(true);
- HbWidgetFeedback::triggered(this, Hb::InstantPressed);
- updatePrimitives();
- d->emitPressed();
- break;
- case Qt::GestureCanceled:
- if(d->down) {
+ case Qt::GestureStarted:
+ if( hit ){
+ setDown(true);
+ HbWidgetFeedback::triggered(this, Hb::InstantPressed);
+ updatePrimitives();
+ d->emitPressed();
+ }
+ break;
+ case Qt::GestureCanceled:
+ if(d->down) {
+ HbWidgetFeedback::triggered(this, Hb::InstantReleased);
+ setDown(false);
+ d->longPress = false;
+ d->emitReleased();
+ }
+ break;
+ case Qt::GestureFinished:
+ if (!d->down){
+ return;
+ }
+ if ( hit ){
+ HbWidgetFeedback::triggered(this, Hb::InstantClicked);
+ d->repeatTimer.stop();
+ d->click();
+ }else{
+ setDown(false);
+ }
HbWidgetFeedback::triggered(this, Hb::InstantReleased);
- setDown(false);
d->longPress = false;
- d->emitReleased();
+ break;
+ default:
+ break;
}
- break;
- case Qt::GestureFinished:
- if (!d->down) {
- return;
- }
- if ( hit ) {
- HbWidgetFeedback::triggered(this, Hb::InstantClicked);
- }
- HbWidgetFeedback::triggered(this, Hb::InstantReleased);
- if ( hit ) {
- d->repeatTimer.stop();
- d->click();
- } else {
- setDown(false);
- }
- d->longPress = false;
- break;
- default:
- break;
- }
}
}
#endif
@@ -1015,26 +1012,28 @@
break;
case Qt::Key_Up:
case Qt::Key_Left:
- next = false;
+ if ( d->keyNavigation() ) {
+ next = false;
+ }
// fall through
case Qt::Key_Right:
case Qt::Key_Down:
-#ifdef QT_KEYPAD_NAVIGATION
- if (QApplication::keypadNavigationEnabled() && (event->key() == Qt::Key_Left || event->key() == Qt::Key_Right)) {
- event->ignore();
- return;
- }
-#endif
- if (d->autoExclusive) {
- // ### Using qobject_cast to check if the parent is a viewport of
- // QAbstractItemView is a crude hack, and should be revisited and
- // cleaned up when fixing task 194373. It's here to ensure that we
- // keep compatibility outside QAbstractItemView.
- d->moveFocus(event->key());
- if (hasFocus()) // nothing happend, propagate
+ if ( d->keyNavigation() ) {
+ if ( d->keyNavigation() && (event->key() == Qt::Key_Left || event->key() == Qt::Key_Right)) {
event->ignore();
- } else {
- focusNextPrevChild(next);
+ return;
+ }
+ if (d->autoExclusive) {
+ // ### Using qobject_cast to check if the parent is a viewport of
+ // QAbstractItemView is a crude hack, and should be revisited and
+ // cleaned up when fixing task 194373. It's here to ensure that we
+ // keep compatibility outside QAbstractItemView.
+ d->moveFocus(event->key());
+ if (hasFocus()) // nothing happend, propagate
+ event->ignore();
+ } else {
+ focusNextPrevChild(next);
+ }
}
break;
case Qt::Key_Escape:
--- a/src/hbcore/gui/hbanchorarrowdrawer_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbanchorarrowdrawer_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -30,8 +30,8 @@
#include <hbcolorscheme.h>
#include <hbevent.h>
#include <hblayoututils_p.h>
-#include <hbmeshlayout_p.h>
-#include <hbmeshlayoutdebug_p.h>
+#include <hbanchorlayout.h>
+#include <hbanchorlayoutdebug_p.h>
#include <QBrush>
#include <QPainter>
#include <QPen>
@@ -42,9 +42,9 @@
const QString VALID_COLOR = "qtc_default_main_pane_normal";
const QString INVALID_COLOR = "qtc_view_visited_normal";
-HbAnchorArrowDrawer::HbAnchorArrowDrawer(HbMeshLayout* mesh, QGraphicsItem *parent)
+HbAnchorArrowDrawer::HbAnchorArrowDrawer(HbAnchorLayout *layout, QGraphicsItem *parent)
: HbWidgetBase(parent),
- mLayout(mesh), mDrawOutlines(true), mDrawArrows(true), mDrawSpacers(true)
+ mLayout(layout), mDrawOutlines(true), mDrawArrows(true), mDrawSpacers(true)
{
#if defined(HB_DEVELOPER) || defined(CSS_INSPECTOR)
updateColors();
@@ -82,7 +82,7 @@
setGeometry(item->sceneBoundingRect());
QGraphicsLayout *layout = widget->layout();
if (layout) {
- HbMeshLayout *mesh = dynamic_cast<HbMeshLayout *>(layout);
+ HbAnchorLayout *mesh = dynamic_cast<HbAnchorLayout *>(layout);
if (mesh) {
mLayout = mesh;
}
@@ -105,7 +105,7 @@
}
painter->save();
- QList<HbAnchor*> anchors = HbMeshLayoutDebug::getAnchors(mLayout);
+ QList<HbAnchor*> anchors = HbAnchorLayoutDebug::getAnchors(mLayout);
// Draw boxes round anchored child items
if (mDrawOutlines) {
--- a/src/hbcore/gui/hbanchorarrowdrawer_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbanchorarrowdrawer_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -28,15 +28,15 @@
#include <hbwidgetbase.h>
#include <hbglobal.h>
-QT_FORWARD_DECLARE_CLASS(QGraphicsItem)
-QT_FORWARD_DECLARE_CLASS(HbMeshLayout)
+
+class HbAnchorLayout;
class HB_CORE_PRIVATE_EXPORT HbAnchorArrowDrawer : public HbWidgetBase
{
Q_OBJECT
public:
- explicit HbAnchorArrowDrawer(HbMeshLayout* mesh, QGraphicsItem *parent = 0);
+ explicit HbAnchorArrowDrawer(HbAnchorLayout *layout, QGraphicsItem *parent = 0);
virtual ~HbAnchorArrowDrawer();
public slots:
@@ -51,7 +51,7 @@
void updateColors();
private:
- HbMeshLayout* mLayout;
+ HbAnchorLayout* mLayout;
bool mDrawOutlines;
bool mDrawArrows;
bool mDrawSpacers;
--- a/src/hbcore/gui/hbbackgrounditem.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbbackgrounditem.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -48,7 +48,7 @@
mImageMode(Hb::ScaleBackgroundToFit)
{
setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
-
+ setFlag(QGraphicsItem::ItemHasNoContents, false);
mPrtImageName = defaultImageName(Qt::Vertical);
mLscImageName = defaultImageName(Qt::Horizontal);
updateBackgroundImage();
--- a/src/hbcore/gui/hbcssinspector_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbcssinspector_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -31,10 +31,17 @@
#include <hbcolorscheme.h>
#include <hbcssformatter_p.h>
#include <hbevent.h>
+#include <hbframedrawer.h>
+#include <hbframeitem.h>
+#include <hbiconitem.h>
#include <hbinstance.h>
#include <hblayeredstyleloader_p.h>
-#include <hbmeshlayoutdebug_p.h>
+#include <hbmainwindow_p.h>
+#include <hbmarqueeitem.h>
+#include <hbanchorlayoutdebug_p.h>
#include <hbnamespace_p.h>
+#include <hbscreen_p.h>
+#include <hbtextitem.h>
#include <hbwidgetloadersyntax_p.h>
#include <hbxmlloaderabstractsyntax_p.h>
#include <hbwidgetbase_p.h>
@@ -46,6 +53,7 @@
#include <QGraphicsScene>
#include <QGraphicsSceneMouseEvent>
#include <QGroupBox>
+#include <QHeaderView>
#include <QHBoxLayout>
#include <QLabel>
#include <QPen>
@@ -55,13 +63,14 @@
#include <QSizePolicy>
#include <QSplitter>
#include <QTextEdit>
+#include <QTreeView>
#include <QVBoxLayout>
#include <QXmlStreamWriter>
-
+#include <qmath.h>
#define NODEPTR_N(x) HbCss::StyleSelector::NodePtr n = {n.ptr = (void *)x};
-const QString CSS_HTML_HEADER = "<style type=\"text/css\"> \
+const QString CSS_HTML_HEADER("<style type=\"text/css\"> \
.overridden {color:#999; text-decoration:line-through;} \
.filename {background-color: #e0e0e0; margin:0;} \
.selectors {margin:0;} \
@@ -71,19 +80,24 @@
.property {color:#00f; font-weight:bold;} \
.value {color:#f00;} \
.overridden .property, .overridden .value {color:#999;} \
- </style>";
-const QString WIDGETML_HTML_HEADER = "<style type=\"text/css\"> \
+ </style>");
+const QString WIDGETML_HTML_HEADER("<style type=\"text/css\"> \
pre {color:#999; font-family:Arial;} \
span {color:#000; font-weight:bold;} \
- </style><pre>";
-const QString WIDGETML_HTML_FOOTER = "</pre>";
+ </style><pre>");
+const QString WIDGETML_HTML_FOOTER("</pre>");
-const int ITEMNAME = 0xfffe; // Copied from hbstyle.cpp!!
+const QStringList SKIPPED_CHILD_ITEMS(QStringList() << "HbTextItem" << "HbTouchArea"
+ << "HbIconItem" << "HbFrameItem" << "HbSpacerItem" << "HbWidgetBase"
+ << "HbMarqueeItem" << "QGraphicsWidget" << "QGraphicsItem");
+
+const QStringList SKIPPED_GLOBAL_ITEMS(QStringList() << "HbPopupLayoutManager" << "HbAnchorArrowDrawer" << "HbCssInfoDrawer");
+
const qreal HOVER_BOX_PEN_WIDTH = 2.0;
const qreal GUIDE_LINE_WIDTH = 1.0;
const QChar BIG_NUMBER_CHAR = 0x221E;
-const QString TEXT_COLOR = "qtc_default_main_pane_normal";
-const QString LINE_COLOR = "qtc_view_visited_normal";
+const QString TEXT_COLOR("qtc_default_main_pane_normal");
+const QString LINE_COLOR("qtc_view_visited_normal");
const int ABOVE_POPUP_ZVALUE = 5000;
const qreal SIZE_PREF_DRAW_SIZE = 7.0;
const qreal SIZE_PREF_MINIMUM_THRESHOLD = 4.0 * SIZE_PREF_DRAW_SIZE;
@@ -91,29 +105,103 @@
const qreal SIZE_PREF_ALLOWED_OVERLAP = 2.0;
const qreal SIZE_PREF_BOX_SIZE = 0.4 * SIZE_PREF_DRAW_SIZE;
+static QString itemClass(const QGraphicsItem *item)
+{
+ if (item && item->isWidget()) {
+ const QGraphicsWidget *widget = static_cast<const QGraphicsWidget *>(item);
+ return widget->metaObject()->className();
+ }
+ return "QGraphicsItem";
+}
+
+static QString objName(const QGraphicsItem *item)
+{
+ if (item && item->isWidget()) {
+ const QGraphicsWidget *widget = static_cast<const QGraphicsWidget *>(item);
+ return widget->objectName();
+ }
+ return QString();
+}
+
+static QString itemValue(const QGraphicsItem *item)
+{
+ QString itemClassName(itemClass(item));
+ if (itemClassName == "HbIconItem") {
+ const HbIconItem *icon = static_cast<const HbIconItem*>(item);
+ return icon->iconName();
+ } else if (itemClassName == "HbTextItem") {
+ const HbTextItem *text = static_cast<const HbTextItem*>(item);
+ return text->text();
+ } else if (itemClassName == "HbFrameItem") {
+ const HbFrameItem *frame = static_cast<const HbFrameItem*>(item);
+ return frame->frameDrawer().frameGraphicsName();
+ } else if (itemClassName == "HbMarqueeItem") {
+ const HbMarqueeItem *marquee = static_cast<const HbMarqueeItem*>(item);
+ return marquee->text();
+ }
+ return QString();
+}
+
+static bool parentHasAnchorLayout(const QGraphicsItem *item)
+{
+ if (item) {
+ if (const QGraphicsItem *parent = item->parentItem()) {
+ if (const QGraphicsWidget *widget = static_cast<const QGraphicsWidget*>(parent)) {
+ if (const QGraphicsLayout *layout = widget->layout()) {
+ if (const HbAnchorLayout *anchor = dynamic_cast<const HbAnchorLayout*>(layout)) {
+ Q_UNUSED(anchor)
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+}
+
+static QString itemInParentLayout(const QGraphicsItem *item)
+{
+ static QMap<const QGraphicsLayout*, QSet<const QGraphicsItem*> > itemCache;
+ if (item) {
+ if (const QGraphicsWidget *widget = static_cast<const QGraphicsWidget*>(item->parentItem())) {
+ QGraphicsLayout *layout = widget->layout();
+ QSet<const QGraphicsItem*> itemsInLayout;
+ if (itemCache.contains(layout)) {
+ itemsInLayout = itemCache[layout];
+ } else {
+ HbAnchorLayout *anchorLayout = dynamic_cast<HbAnchorLayout*>(layout);
+ if (!anchorLayout) {
+ return QString(); // Non-anchor layout
+ } else {
+ foreach (HbAnchor *anchor, HbAnchorLayoutDebug::getAnchors(anchorLayout)) {
+ itemsInLayout << anchor->mStartItem->graphicsItem();
+ itemsInLayout << anchor->mEndItem->graphicsItem();
+ }
+ itemCache[layout] = itemsInLayout;
+ }
+ }
+ return itemsInLayout.contains(item) ? "Yes" : "No";
+ }
+ }
+ return QString(); // Non-widget parent
+}
+
static QString cssItemText(const QGraphicsItem *item)
{
- QString txt;
- if (item->isWidget()) {
- const QGraphicsWidget *widget = static_cast<const QGraphicsWidget *>(item);
- // Add classname
- txt += widget->metaObject()->className();
-
+ QString txt(itemClass(item));
+ if (item && item->isWidget()) {
// Add objectname
- QString objName = widget->objectName();
- if (objName.length() > 0) {
+ QString objectName(objName(item));
+ if (objectName.length() > 0) {
txt.append("#");
- txt.append(objName);
+ txt.append(objectName);
}
-
- // Add itemname
- QString itemName = widget->data(ITEMNAME).toString();
- if (itemName.length() > 0) {
- txt.append("::");
- txt.append(itemName);
- }
- } else {
- txt = "QGraphicsItem";
+ }
+ // Add itemname
+ QString name(HbStyle::itemName(item));
+ if (name.length() > 0) {
+ txt.append("::");
+ txt.append(name);
}
return txt;
}
@@ -121,15 +209,14 @@
static QString convertMeasurementToText(const QGraphicsItem *item, qreal hint)
{
- QString hintText;
qreal unit = HbDeviceProfile::profile(item).unitValue();
-
+
if (unit != 0) {
hint = (hint / unit);
}
- hintText = QString::number(hint, 'g', 2);
+ QString hintText(QString::number(hint, 'g', 2));
if (hintText.contains('+')) {
- hintText = BIG_NUMBER_CHAR;
+ hintText = BIG_NUMBER_CHAR;
} else {
if (hint !=0 && unit != 0) {
hintText += "un";
@@ -141,16 +228,19 @@
static QString convertEffectiveSizeHintToText(const QGraphicsWidget *item, Qt::SizeHint which)
{
QString hintText('(');
- const QSizeF &size = item->effectiveSizeHint(which);
- hintText += convertMeasurementToText(item, size.width()) + ',';
- hintText += convertMeasurementToText(item, size.height()) + ')';
+ if (item) {
+ const QSizeF &size = item->effectiveSizeHint(which);
+ hintText += convertMeasurementToText(item, size.width()) + ',';
+ hintText += convertMeasurementToText(item, size.height());
+ }
+ hintText += ')';
return hintText;
}
static QString cssItemHintText(const QGraphicsItem *item)
{
QString sizeHint;
- if (item->isWidget()) {
+ if (item && item->isWidget()) {
const QGraphicsWidget *widget = static_cast<const QGraphicsWidget*>(item);
sizeHint += convertEffectiveSizeHintToText(widget, Qt::MinimumSize)+'|';
sizeHint += convertEffectiveSizeHintToText(widget, Qt::PreferredSize)+'|';
@@ -161,12 +251,12 @@
static QString cssSizePolicyText(const QGraphicsItem *item, Qt::Orientation dir)
{
- if (!item->isWidget()) {
- return "";
+ if (!item || !item->isWidget()) {
+ return QString();
}
const HbWidget *widget = static_cast<const HbWidget*>(item);
- QSizePolicy::Policy pol = dir == Qt::Vertical
- ? widget->sizePolicy().verticalPolicy()
+ QSizePolicy::Policy pol = dir == Qt::Vertical
+ ? widget->sizePolicy().verticalPolicy()
: widget->sizePolicy().horizontalPolicy();
if (pol == QSizePolicy::Fixed) {
@@ -191,7 +281,7 @@
static QRectF cssItemHintRect(const QGraphicsItem *item, Qt::SizeHint which)
{
QRectF hintRect;
- if (item->isWidget()) {
+ if (item && item->isWidget()) {
const QGraphicsWidget *widget = static_cast<const QGraphicsWidget*>(item);
const QSizeF &size = widget->effectiveSizeHint(which);
hintRect.setWidth(size.width());
@@ -216,11 +306,44 @@
return name;
}
+QString HbCssInspectorWindow::anchorItemName(QGraphicsLayoutItem* item, QGraphicsLayout* layout, bool& isIdBased)
+{
+ isIdBased = true;
+ QString name;
+ if ( item != layout ) {
+ QGraphicsItem *gItem = item->graphicsItem();
+ if ( gItem ) {
+ name = HbStyle::itemName( gItem );
+ if (name.isEmpty()) {
+ isIdBased = false;
+ name = objName(gItem);
+ if (name.isEmpty()) {
+ name = QString("<%1>").arg(itemClass(gItem));
+ }
+ }
+ }
+ if ( name.isEmpty() ) {
+ // Check if it's a spacer
+ QGraphicsItem *asGraphicsItem = layout->parentLayoutItem()->graphicsItem();
+ if ( asGraphicsItem && asGraphicsItem->isWidget() ){
+ HbWidget *asWidget = qobject_cast<HbWidget*>( static_cast<QGraphicsWidget*>(asGraphicsItem) );
+ if( asWidget ) {
+ HbWidgetPrivate*priv = static_cast<HbWidgetPrivate*>(HbWidgetBasePrivate::d_ptr(asWidget));
+ name = priv->mSpacers.key(item);
+ }
+ }
+ if ( name.isEmpty() ) {
+ name = QString("<unknown>");
+ }
+ }
+ }
-QString HbCssInspectorWindow::meshItemsToHtmlInfo(
- HbMeshLayout *mesh, const QString itemName, const QString layoutName)
+ return name;
+}
+
+
+QString HbCssInspectorWindow::anchorsToHtmlInfo(HbAnchorLayout *anchorLayout, const QString itemName, const QString layoutName)
{
- QString html;
QString widgetML;
QXmlStreamWriter xmlWriter(&widgetML);
xmlWriter.setAutoFormatting(true);
@@ -230,61 +353,47 @@
QString str = syntax.lexemValue(HbXmlLoaderAbstractSyntax::TYPE_HBWIDGET);
xmlWriter.writeStartElement(syntax.lexemValue(HbXmlLoaderAbstractSyntax::TYPE_HBWIDGET));
xmlWriter.writeAttribute(
- syntax.lexemValue(
- HbXmlLoaderAbstractSyntax::ATTR_VERSION), HbWidgetLoaderSyntax::version());
+ syntax.lexemValue(HbXmlLoaderAbstractSyntax::ATTR_VERSION),
+ HbWidgetLoaderSyntax::version());
xmlWriter.writeAttribute(syntax.lexemValue(HbXmlLoaderAbstractSyntax::ATTR_TYPE), itemName);
xmlWriter.writeStartElement(syntax.lexemValue(HbXmlLoaderAbstractSyntax::TYPE_LAYOUT));
xmlWriter.writeAttribute(syntax.lexemValue(HbXmlLoaderAbstractSyntax::ATTR_NAME), layoutName);
xmlWriter.writeAttribute(
- syntax.lexemValue(
- HbXmlLoaderAbstractSyntax::ATTR_TYPE),
- syntax.lexemValue(HbXmlLoaderAbstractSyntax::LAYOUT_MESH));
+ syntax.lexemValue(HbXmlLoaderAbstractSyntax::ATTR_TYPE),
+ syntax.lexemValue(HbXmlLoaderAbstractSyntax::LAYOUT_ANCHOR));
- if (mesh) {
- QList<HbAnchor*> anchors = HbMeshLayoutDebug::getAnchors(mesh);
- for (int i=0; i<anchors.count(); i++) {
- HbAnchor* anchor = anchors.at(i);
-
- QString startName = HbStyle::itemName(anchor->mStartItem->graphicsItem());
- QString endName = HbStyle::itemName(anchor->mEndItem->graphicsItem());
+ if (anchorLayout) {
+ foreach (HbAnchor *anchor, HbAnchorLayoutDebug::getAnchors(anchorLayout)) {
+ bool startIdBased, endIdBased;
+ QString startName(anchorItemName(anchor->mStartItem, anchorLayout, startIdBased));
+ QString endName(anchorItemName(anchor->mEndItem, anchorLayout, endIdBased));
QString spacingText;
- QGraphicsItem *asGraphicsItem = mesh->parentLayoutItem()->graphicsItem();
- if ( asGraphicsItem && asGraphicsItem->isWidget() ){
- HbWidget *asWidget = qobject_cast<HbWidget*>(
- static_cast<QGraphicsWidget*>(asGraphicsItem) );
- if( asWidget ) {
- HbWidgetPrivate*priv =
- static_cast<HbWidgetPrivate*>(HbWidgetBasePrivate::d_ptr(asWidget));
-
- if (startName.isEmpty()) {
- startName = priv->mSpacers.key(anchor->mStartItem);
- }
- if (endName.isEmpty()) {
- endName = priv->mSpacers.key(anchor->mEndItem);
- }
-
- if(qAbs<qreal>(anchor->mValue) > 0.01)
- spacingText = convertMeasurementToText(asWidget, anchor->mValue);
- }
+ QGraphicsItem *asGraphicsItem = anchorLayout->parentLayoutItem()->graphicsItem();
+ if (asGraphicsItem && (qAbs<qreal>(anchor->mValue) > 0.01)) {
+ spacingText = convertMeasurementToText(asGraphicsItem, anchor->mValue);
}
- xmlWriter.writeStartElement(syntax.lexemValue(HbXmlLoaderAbstractSyntax::ML_MESHITEM));
-
+ xmlWriter.writeStartElement(syntax.lexemValue(HbXmlLoaderAbstractSyntax::AL_ANCHOR));
xmlWriter.writeAttribute(
- syntax.lexemValue(HbXmlLoaderAbstractSyntax::ML_SRC_NAME), startName);
+ syntax.lexemValue( startIdBased
+ ? HbXmlLoaderAbstractSyntax::AL_SRC_ID
+ : HbXmlLoaderAbstractSyntax::AL_SRC_NAME),
+ startName);
xmlWriter.writeAttribute(
- syntax.lexemValue(
- HbXmlLoaderAbstractSyntax::ML_SRC_EDGE), anchorEdgeName(anchor->mStartEdge));
+ syntax.lexemValue(HbXmlLoaderAbstractSyntax::AL_SRC_EDGE),
+ anchorEdgeName(anchor->mStartEdge));
xmlWriter.writeAttribute(
- syntax.lexemValue(HbXmlLoaderAbstractSyntax::ML_DST_NAME), endName);
+ syntax.lexemValue( endIdBased
+ ? HbXmlLoaderAbstractSyntax::AL_DST_ID
+ : HbXmlLoaderAbstractSyntax::AL_DST_NAME),
+ endName);
xmlWriter.writeAttribute(
- syntax.lexemValue(
- HbXmlLoaderAbstractSyntax::ML_DST_EDGE), anchorEdgeName(anchor->mEndEdge));
+ syntax.lexemValue(HbXmlLoaderAbstractSyntax::AL_DST_EDGE),
+ anchorEdgeName(anchor->mEndEdge));
if ( !spacingText.isEmpty() ) {
- xmlWriter.writeAttribute(
- syntax.lexemValue(HbXmlLoaderAbstractSyntax::ML_SPACING), spacingText);
+ xmlWriter.writeAttribute(syntax.lexemValue(HbXmlLoaderAbstractSyntax::AL_SPACING), spacingText);
}
xmlWriter.writeEndElement(); // meshitem
}
@@ -293,8 +402,7 @@
xmlWriter.writeEndElement(); // layout
xmlWriter.writeEndElement(); // widgetml
- html = widgetML;
- html.remove(0, html.indexOf('<')); // trim whitespace
+ QString html(widgetML.trimmed());
html.replace('<', "<");
html.replace('>', ">");
html.replace(QRegExp("\"([^\"]*)\""), "\"<span>\\1</span>\""); // Add span elements around things in quotes
@@ -314,7 +422,7 @@
-HbCssInfoDrawer::HbCssInfoDrawer(QGraphicsItem *parent) :
+HbCssInfoDrawer::HbCssInfoDrawer(QGraphicsItem *parent) :
HbWidgetBase(parent),
mItemRect(0,0,0,0),
mMinHintRect(0,0,0,0),
@@ -421,7 +529,7 @@
MirroredArrow
};
-static void drawTriangle(QPainter *painter, Qt::Orientation dir, const QRectF &bRect,
+static void drawTriangle(QPainter *painter, Qt::Orientation dir, const QRectF &bRect,
int iconsFromEdge, qreal linePos, LayoutPosition layout, ArrowDirection arrowDir)
{
QPointF point;
@@ -469,17 +577,17 @@
const qreal vLinePos = rect.left() + (rect.width() * 0.8);
const qreal hLinePos = rect.top() + (rect.height() * 0.2);
- const int linePos = (int)(vert ? vLinePos : hLinePos); // Cast to force consistent rounding
+ const qreal linePos = qFloor(vert ? vLinePos : hLinePos); // floor to force consistent rounding
bool drawSecondIcons;
if (vert) {
- drawSecondIcons = (3*SIZE_PREF_DRAW_SIZE) + rect.top() <=
+ drawSecondIcons = (3*SIZE_PREF_DRAW_SIZE) + rect.top() <=
hLinePos + SIZE_PREF_ALLOWED_OVERLAP;
- painter->drawLine(linePos, (int)(rect.top()), linePos, (int)(rect.bottom()));
+ painter->drawLine((int)linePos, (int)(rect.top()), (int)linePos, (int)(rect.bottom()));
} else {
- drawSecondIcons = rect.right() - (3*SIZE_PREF_DRAW_SIZE) >=
+ drawSecondIcons = rect.right() - (3*SIZE_PREF_DRAW_SIZE) >=
vLinePos - SIZE_PREF_ALLOWED_OVERLAP;
- painter->drawLine((int)(rect.left()), linePos, (int)(rect.right()), linePos);
+ painter->drawLine((int)(rect.left()), (int)linePos, (int)(rect.right()), (int)linePos);
}
// Ignore icons have different rules
@@ -536,7 +644,7 @@
}
}
-void HbCssInfoDrawer::paint(QPainter *painter,
+void HbCssInfoDrawer::paint(QPainter *painter,
const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(option);
@@ -549,7 +657,7 @@
if (mShowBox) {
painter->setPen(QPen(mBoxColor, HOVER_BOX_PEN_WIDTH));
paintRect(painter, mItemRect);
- }
+ }
if (mShowMinHintBox) {
painter->setPen(QPen(Qt::blue, HOVER_BOX_PEN_WIDTH)); //krazy:exclude=qenums
QRectF rect = mMinHintRect;
@@ -599,7 +707,7 @@
// Line across bottom
painter->drawLine(0, (int)mItemRect.bottom(), (int)br.width(), (int)mItemRect.bottom());
}
-
+
// Draw the size prefs icons
if (mShowSizePrefs) {
painter->setPen(QPen(Qt::gray, SIZE_PREF_LINE_WIDTH)); //krazy:exclude=qenums
@@ -655,6 +763,177 @@
/******************************************************************************************/
+CssInspectorModelItem::CssInspectorModelItem(QGraphicsItem *item, int row, CssInspectorModelItem *parent)
+ : mItem(item), mParent(parent), mRow(row)
+{
+}
+
+CssInspectorModelItem::~CssInspectorModelItem()
+{
+ QHash<int, CssInspectorModelItem*>::iterator it;
+ for (it = mChildren.begin(); it!= mChildren.end(); ++it)
+ delete it.value();
+}
+
+CssInspectorModelItem* CssInspectorModelItem::child(int i)
+{
+ if (mChildren.contains(i))
+ return mChildren[i];
+
+ if (i>=0 && i < mItem->childItems().count()) {
+ QGraphicsItem *child = mItem->childItems().at(i);
+ CssInspectorModelItem *childItem = new CssInspectorModelItem(child, i, this);
+ mChildren[i] = childItem;
+ return childItem;
+ }
+ return 0;
+}
+
+CssInspectorModelItem* CssInspectorModelItem::parent()
+{
+ return mParent;
+}
+
+QGraphicsItem* CssInspectorModelItem::data()
+{
+ return mItem;
+}
+
+int CssInspectorModelItem::row()
+{
+ return mRow;
+}
+
+/******************************************************************************************/
+CssInspectorModel::CssInspectorModel(HbMainWindow *win, QObject *parent)
+ : QAbstractItemModel(parent), mWin(win), mRootItem(0)
+{
+ QGraphicsItem *screen = HbMainWindowPrivate::d_ptr(win)->mClippingItem;
+ mRootItem = new CssInspectorModelItem(screen, 0);
+}
+
+CssInspectorModel::~CssInspectorModel()
+{
+ delete mRootItem;
+}
+
+QVariant CssInspectorModel::data(const QModelIndex &index, int role) const
+{
+ if (!index.isValid() || role != Qt::DisplayRole)
+ return QVariant();
+
+ CssInspectorModelItem *item = static_cast<CssInspectorModelItem*>(index.internalPointer());
+ QGraphicsItem *graphicsItem = item->data();
+
+ switch (index.column()) {
+ case 0: return itemClass(graphicsItem);
+ case 1: return objName(graphicsItem);
+ case 2: return HbStyle::itemName(graphicsItem);
+ case 3: return itemValue(graphicsItem);
+ case 4: return itemInParentLayout(graphicsItem);
+ }
+ return QVariant();
+}
+
+QVariant CssInspectorModel::headerData(int section, Qt::Orientation orientation, int role) const
+{
+ if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
+ switch (section) {
+ case 0: return "Classname";
+ case 1: return "Objectname";
+ case 2: return "Itemname";
+ case 3: return "Value";
+ case 4: return "In layout";
+ }
+ }
+ return QVariant();
+}
+
+QModelIndex CssInspectorModel::index(int row, int column, const QModelIndex &parent) const
+{
+ if (!hasIndex(row, column, parent))
+ return QModelIndex();
+
+ CssInspectorModelItem *parentItem;
+ if (!parent.isValid())
+ parentItem = mRootItem;
+ else
+ parentItem = static_cast<CssInspectorModelItem*>(parent.internalPointer());
+
+ CssInspectorModelItem *childItem = parentItem->child(row);
+ if (childItem)
+ return createIndex(row, column, childItem);
+ else
+ return QModelIndex();
+}
+
+QModelIndex CssInspectorModel::parent(const QModelIndex &child) const
+{
+ if (!child.isValid())
+ return QModelIndex();
+
+ CssInspectorModelItem* childItem = static_cast<CssInspectorModelItem*>(child.internalPointer());
+ CssInspectorModelItem* parentItem = childItem->parent();
+
+ if (!parentItem || parentItem == mRootItem)
+ return QModelIndex();
+
+ return createIndex(parentItem->row(), 0, parentItem);
+}
+
+int CssInspectorModel::rowCount(const QModelIndex &parent) const
+{
+ if (parent.column() > 0)
+ return 0;
+
+ CssInspectorModelItem *parentItem;
+
+ if (!parent.isValid())
+ parentItem = mRootItem;
+ else
+ parentItem = static_cast<CssInspectorModelItem*>(parent.internalPointer());
+
+ return parentItem->data()->childItems().count();
+}
+
+int CssInspectorModel::columnCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent)
+ return 5;
+}
+
+
+ItemColorDelegate::ItemColorDelegate(QObject *parent)
+ : QStyledItemDelegate(parent)
+{
+}
+
+ItemColorDelegate::~ItemColorDelegate()
+{
+}
+
+const int ITEMNAME_COLUMN = 2;
+const int INLAYOUT_COLUMN = 4;
+
+void ItemColorDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
+ const QModelIndex &index) const
+{
+ if (index.column() == ITEMNAME_COLUMN) {
+ if (index.data().toString() == "") {
+ CssInspectorModelItem *modelItem = static_cast<CssInspectorModelItem*>(index.internalPointer());
+ QGraphicsItem *item = modelItem->data();
+ if (parentHasAnchorLayout(item)) {
+ painter->fillRect(option.rect, Qt::red);
+ }
+ }
+ } else if (index.column() == INLAYOUT_COLUMN) {
+ if (index.data().toString() == "No") {
+ painter->fillRect(option.rect, Qt::red);
+ }
+ }
+ QStyledItemDelegate::paint(painter, option, index);
+}
+/******************************************************************************************/
HbCssInspectorWindow *HbCssInspectorWindow::instance()
{
@@ -682,41 +961,59 @@
mInstalledFilters.clear();
}
+void HbCssInspectorWindow::updateFromTreeView(const QModelIndex &index)
+{
+ CssInspectorModelItem *modelItem = static_cast<CssInspectorModelItem*>(index.internalPointer());
+ QGraphicsItem *item = modelItem->data();
+ updateFocusItem(item);
+ foreach (HoveredWidgetFilter *filter, mInstalledFilters) {
+ filter->mCssInfoDrawer->updateFocusItem(item);
+ filter->mArrowDrawer->updateFocusItem(item);
+ }
+}
+
+void HbCssInspectorWindow::updateColumnSizes(const QModelIndex &index)
+{
+ Q_UNUSED(index)
+ mTreeView->header()->resizeSections(QHeaderView::ResizeToContents);
+}
void HbCssInspectorWindow::addFilters()
{
foreach (HbMainWindow *window, hbInstance->allMainWindows()) {
+ mTreeView->setModel(new CssInspectorModel(window));
+
HoveredWidgetFilter *filter = new HoveredWidgetFilter(window->scene());
window->scene()->installEventFilter(filter);
mInstalledFilters.append(filter);
- connect(filter, SIGNAL(newItemHovered(const QGraphicsItem*)),
+ connect(filter, SIGNAL(newItemHovered(const QGraphicsItem*)),
SLOT(updateFocusItem(const QGraphicsItem*)));
- connect(mObjectNameCheck, SIGNAL(toggled(bool)), filter->mCssInfoDrawer,
+ connect(mObjectNameCheck, SIGNAL(toggled(bool)), filter->mCssInfoDrawer,
SLOT(setItemTextVisible(bool)));
- connect(mAnchorArrowsCheck, SIGNAL(toggled(bool)), filter->mArrowDrawer,
+ connect(mAnchorArrowsCheck, SIGNAL(toggled(bool)), filter->mArrowDrawer,
SLOT(setDrawArrows(bool)));
- connect(mSubitemOutlinesCheck, SIGNAL(toggled(bool)), filter->mArrowDrawer,
+ connect(mSubitemOutlinesCheck, SIGNAL(toggled(bool)), filter->mArrowDrawer,
SLOT(setDrawOutlines(bool)));
- connect(mSpacersCheck, SIGNAL(toggled(bool)), filter->mArrowDrawer,
+ connect(mSpacersCheck, SIGNAL(toggled(bool)), filter->mArrowDrawer,
SLOT(setDrawSpacers(bool)));
- connect(mGuideLinesCheck, SIGNAL(toggled(bool)), filter->mCssInfoDrawer,
+ connect(mGuideLinesCheck, SIGNAL(toggled(bool)), filter->mCssInfoDrawer,
SLOT(setGuideLinesVisible(bool)));
- connect(mSizeHintTextCheck, SIGNAL(toggled(bool)), filter->mCssInfoDrawer,
+ connect(mSizeHintTextCheck, SIGNAL(toggled(bool)), filter->mCssInfoDrawer,
SLOT(setHintTextVisible(bool)));
- connect(mMinSizeHintCheck, SIGNAL(toggled(bool)), filter->mCssInfoDrawer,
+ connect(mMinSizeHintCheck, SIGNAL(toggled(bool)), filter->mCssInfoDrawer,
SLOT(setMinHintBoxVisible(bool)));
- connect(mPrefSizeHintCheck, SIGNAL(toggled(bool)), filter->mCssInfoDrawer,
+ connect(mPrefSizeHintCheck, SIGNAL(toggled(bool)), filter->mCssInfoDrawer,
SLOT(setPrefHintBoxVisible(bool)));
- connect(mMaxSizeHintCheck, SIGNAL(toggled(bool)), filter->mCssInfoDrawer,
+ connect(mMaxSizeHintCheck, SIGNAL(toggled(bool)), filter->mCssInfoDrawer,
SLOT(setMaxHintBoxVisible(bool)));
- connect(mSizePrefCheck, SIGNAL(toggled(bool)), filter->mCssInfoDrawer,
+ connect(mSizePrefCheck, SIGNAL(toggled(bool)), filter->mCssInfoDrawer,
SLOT(setSizePrefsVisible(bool)));
connect(mHoverRadio, SIGNAL(toggled(bool)), filter, SLOT(setHoverMode(bool)));
connect(mBlockRadio, SIGNAL(toggled(bool)), filter, SLOT(setBlockingMode(bool)));
-
+
filter->mCssInfoDrawer->setItemTextVisible(mObjectNameCheck->isChecked());
filter->mArrowDrawer->setDrawArrows(mAnchorArrowsCheck->isChecked());
filter->mArrowDrawer->setDrawOutlines(mSubitemOutlinesCheck->isChecked());
@@ -788,8 +1085,8 @@
QGroupBox *sizePolicyGroup = new QGroupBox(tr("Size Policies"), this);
QHBoxLayout *sizePolicyLayout = new QHBoxLayout;
sizePolicyGroup->setLayout(sizePolicyLayout);
- mSizePolicyHoriz = new QLabel("", this);
- mSizePolicyVert = new QLabel("", this);
+ mSizePolicyHoriz = new QLabel(this);
+ mSizePolicyVert = new QLabel(this);
sizePolicyLayout->addWidget(mSizePolicyHoriz);
sizePolicyLayout->addWidget(mSizePolicyVert);
@@ -798,7 +1095,24 @@
sizeLayout->addWidget(sizeHintGroup);
sizeLayout->addWidget(sizePolicyGroup);
+ QWidget *treeContainer = new QWidget(this);
+ QVBoxLayout *treeLayout = new QVBoxLayout;
+ treeLayout->setContentsMargins(0,0,0,0);
+ treeContainer->setLayout(treeLayout);
+ mTreeView = new QTreeView(this);
+ mTreeView->setItemDelegate(new ItemColorDelegate);
+ QLabel *treeLabel = new QLabel(tr("Item tree"));
+ treeLayout->addWidget(treeLabel);
+ treeLayout->addWidget(mTreeView);
+
+ connect(mTreeView, SIGNAL(collapsed(const QModelIndex&)), this, SLOT(updateColumnSizes(const QModelIndex&)));
+ connect(mTreeView, SIGNAL(expanded(const QModelIndex&)), this, SLOT(updateColumnSizes(const QModelIndex&)));
+ connect(mTreeView, SIGNAL(clicked(const QModelIndex&)), this, SLOT(updateFromTreeView(const QModelIndex&)));
+
+ QSplitter *widgetSplitter = new QSplitter(this);
mWidgetMLBox = new CodeWidget(tr("WidgetML"), this);
+ widgetSplitter->addWidget(treeContainer);
+ widgetSplitter->addWidget(mWidgetMLBox);
QSplitter *cssSplitter = new QSplitter(this);
mLayoutCssBox = new CodeWidget(tr("Layouts CSS stack (+all)"), this);
@@ -806,16 +1120,16 @@
cssSplitter->addWidget(mLayoutCssBox);
cssSplitter->addWidget(mColorsCssBox);
- QSplitter *widgetmlCssSplit = new QSplitter(Qt::Vertical, this);
- widgetmlCssSplit->addWidget(mWidgetMLBox);
- widgetmlCssSplit->addWidget(cssSplitter);
+ QSplitter *vertSplit = new QSplitter(Qt::Vertical, this);
+ vertSplit->addWidget(widgetSplitter);
+ vertSplit->addWidget(cssSplitter);
- mPathLabel = new QLabel("", this);
+ mPathLabel = new QLabel(this);
QVBoxLayout *mainLayout = new QVBoxLayout(this);
mainLayout->addLayout(settingLayout);
mainLayout->addLayout(sizeLayout);
- mainLayout->addWidget(widgetmlCssSplit);
+ mainLayout->addWidget(vertSplit);
mainLayout->addWidget(mPathLabel);
// Lock in left-to-right mode
@@ -858,11 +1172,11 @@
NODEPTR_N(widget);
HbDeviceProfile profile(HbDeviceProfile::profile(widget));
- HbLayeredStyleLoader *layoutStack =
+ HbLayeredStyleLoader *layoutStack =
HbLayeredStyleLoader::getStack(HbLayeredStyleLoader::Concern_Layouts);
if (layoutStack) {
// Update layout CSS box
- HbVector<HbCss::StyleRule> layoutRules =
+ HbVector<HbCss::StyleRule> layoutRules =
layoutStack->styleRulesForNode(n, profile.orientation());
mLayoutCssBox->setHtml(CSS_HTML_HEADER + HbCssFormatter::styleRulesToHtml(layoutRules));
@@ -878,18 +1192,17 @@
// Update widgetML box
QString html;
if (widget->layout()) {
- QString itemName = widget->metaObject()->className();
- HbMeshLayout *mesh = dynamic_cast<HbMeshLayout *>(widget->layout());
- html = meshItemsToHtmlInfo(mesh, itemName, layoutName);
+ HbAnchorLayout *anchorLayout = dynamic_cast<HbAnchorLayout *>(widget->layout());
+ html = anchorsToHtmlInfo(anchorLayout, itemClass(widget), layoutName);
}
mWidgetMLBox->setHtml(html);
}
// Update colours CSS box
- HbLayeredStyleLoader *colorsStack =
+ HbLayeredStyleLoader *colorsStack =
HbLayeredStyleLoader::getStack(HbLayeredStyleLoader::Concern_Colors);
if (colorsStack) {
- HbVector<HbCss::StyleRule> colorRules =
+ HbVector<HbCss::StyleRule> colorRules =
colorsStack->styleRulesForNode(n, profile.orientation());
mColorsCssBox->setHtml(CSS_HTML_HEADER + HbCssFormatter::styleRulesToHtml(colorRules));
}
@@ -906,6 +1219,47 @@
cssPath.prepend(cssItemText(pathItem));
}
mPathLabel->setText(cssPath);
+
+ // Set focus in tree view
+ QList<const QGraphicsItem*> ancestorItems;
+ const QGraphicsItem *ancestor = item;
+ while (ancestor) {
+ ancestorItems << ancestor;
+ ancestor = ancestor->parentItem();
+ }
+ bool foundRoot = false;
+ QModelIndex index;
+ for (int i=ancestorItems.count() -1; i>=0; i--) {
+ const QGraphicsItem *thisItem = ancestorItems.at(i);
+ if (!foundRoot) {
+ const QGraphicsWidget *wid = static_cast<const QGraphicsWidget*>(thisItem);
+ if (wid) {
+ QString name = wid->metaObject()->className();
+ if (name == "HbScreen") {
+ foundRoot = true;
+ }
+ }
+ } else {
+ // Find and open tree node for item
+ CssInspectorModel *model = static_cast<CssInspectorModel*>(mTreeView->model());
+ if (model) {
+ int rowCount = model->rowCount(index);
+ for (int row=0; row<rowCount; row++) {
+ QModelIndex idx = model->index(row, 0, index);
+ CssInspectorModelItem *modelItem = static_cast<CssInspectorModelItem*>(idx.internalPointer());
+ QGraphicsItem *graphicsItem = modelItem->data();
+ if (graphicsItem == thisItem) {
+ index = idx;
+ break;
+ }
+ }
+ }
+ }
+ }
+ mTreeView->collapseAll();
+ mTreeView->scrollTo(index, QAbstractItemView::EnsureVisible);
+ mTreeView->expand(index);
+
} else {
mWidgetMLBox->setText("");
mLayoutCssBox->setText("");
@@ -921,8 +1275,6 @@
/******************************************************************************************/
-
-
bool HoveredWidgetFilter::eventFilter(QObject *obj, QEvent *event)
{
if ((event->type() == QEvent::GraphicsSceneMouseMove && mHoverMode)
@@ -932,42 +1284,22 @@
// Skip the drawn box/texts, arrow drawers, and popup managers
QList<QGraphicsItem *> items = mScene->items(eventPos);
- QGraphicsItem *item = 0;
+ QGraphicsItem *hoveredItem = 0;
foreach (QGraphicsItem *thisItem, items) {
- QString widgetName;
- if (thisItem->isWidget()) {
- const QGraphicsWidget *widget = static_cast<const QGraphicsWidget *>(thisItem);
- widgetName = widget->metaObject()->className();
- if (thisItem != mCssInfoDrawer
- && thisItem != mArrowDrawer
- && widgetName != "HbPopupLayoutManager"
- && widgetName != "HbAnchorArrowDrawer") {
- item = thisItem;
- break;
- }
+ if (!SKIPPED_GLOBAL_ITEMS.contains(itemClass(thisItem))) {
+ hoveredItem = thisItem;
+ break;
}
}
- if (item) {
- const QGraphicsWidget *widget = static_cast<const QGraphicsWidget *>(item);
- QString itemText(widget->metaObject()->className());
-
+ if (hoveredItem) {
// Ignore primitives
- while (itemText == "QGraphicsWidget"
- || itemText == "HbWidgetBase"
- || itemText == "HbTextItem"
- || itemText == "HbIconItem"
- || itemText == "HbFrameItem"
- || itemText == "HbMarqueeItem"
- || itemText == "HbSpacerItem") {
- item = item->parentItem();
- widget = static_cast<const QGraphicsWidget *>(item);
- itemText = widget ? widget->metaObject()->className() : "";
- }
+ while (SKIPPED_CHILD_ITEMS.contains(itemClass(hoveredItem)))
+ hoveredItem = hoveredItem->parentItem();
- if (item && item != mCurrentItem) {
- mCurrentItem = item;
- emit newItemHovered(item);
+ if (hoveredItem && hoveredItem != mCurrentItem) {
+ mCurrentItem = hoveredItem;
+ emit newItemHovered(hoveredItem);
}
}
@@ -980,8 +1312,7 @@
#ifdef HB_GESTURE_FW
} else if(mBlockingMode && event->type() == QEvent::Gesture) {
QGestureEvent *gesEvent = static_cast<QGestureEvent*>(event);
- QGesture *tap = gesEvent->gesture(Qt::TapGesture);
- if (tap) {
+ if (gesEvent->gesture(Qt::TapGesture)) {
return true;
}
#endif
@@ -991,7 +1322,7 @@
}
HoveredWidgetFilter::HoveredWidgetFilter(QGraphicsScene *scene)
- : mScene(scene), mCurrentItem(0), mArrowDrawer(0),
+ : mScene(scene), mCurrentItem(0), mArrowDrawer(0),
mCssInfoDrawer(0), mHoverMode(true), mBlockingMode(false)
{
mCssInfoDrawer = new HbCssInfoDrawer(0);
@@ -1003,9 +1334,9 @@
mCssInfoDrawer->setZValue(HbPrivate::PopupZValueRangeEnd + ABOVE_POPUP_ZVALUE);
mArrowDrawer->setZValue(HbPrivate::PopupZValueRangeEnd + ABOVE_POPUP_ZVALUE);
- connect(this, SIGNAL(newItemHovered(const QGraphicsItem*)),
+ connect(this, SIGNAL(newItemHovered(const QGraphicsItem*)),
mCssInfoDrawer, SLOT(updateFocusItem(const QGraphicsItem*)));
- connect(this, SIGNAL(newItemHovered(const QGraphicsItem*)),
+ connect(this, SIGNAL(newItemHovered(const QGraphicsItem*)),
mArrowDrawer, SLOT(updateFocusItem(const QGraphicsItem*)));
}
--- a/src/hbcore/gui/hbcssinspector_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbcssinspector_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -27,6 +27,8 @@
#define HBCSSINSPECTOR_P_H
#ifdef HB_CSS_INSPECTOR
+#include <QAbstractItemModel>
+#include <QStyledItemDelegate>
#include <QWidget>
#include <hbanchorlayout.h>
#include <hbwidgetbase.h>
@@ -35,9 +37,10 @@
QT_FORWARD_DECLARE_CLASS(QGraphicsScene)
QT_FORWARD_DECLARE_CLASS(QLabel)
QT_FORWARD_DECLARE_CLASS(QRadioButton)
+QT_FORWARD_DECLARE_CLASS(QTreeView)
QT_FORWARD_DECLARE_CLASS(QTextEdit)
QT_FORWARD_DECLARE_CLASS(HbAnchorArrowDrawer)
-QT_FORWARD_DECLARE_CLASS(HbMeshLayout)
+QT_FORWARD_DECLARE_CLASS(HbMainWindow)
class HbCssInfoDrawer : public HbWidgetBase
@@ -137,6 +140,57 @@
};
+class CssInspectorModelItem
+{
+public:
+ CssInspectorModelItem(QGraphicsItem *item, int row,
+ CssInspectorModelItem *parent=0);
+ ~CssInspectorModelItem();
+ CssInspectorModelItem *child(int i);
+ CssInspectorModelItem *parent();
+ QGraphicsItem *data();
+ int row();
+private:
+ QGraphicsItem *mItem;
+ QHash<int, CssInspectorModelItem*> mChildren;
+ CssInspectorModelItem *mParent;
+ int mRow;
+};
+
+
+class CssInspectorModel : public QAbstractItemModel
+{
+ Q_OBJECT
+public:
+ CssInspectorModel(HbMainWindow *win=0, QObject *parent=0);
+ ~CssInspectorModel();
+
+ QVariant data(const QModelIndex &index, int role) const;
+ QVariant headerData(int section, Qt::Orientation orientation,
+ int role = Qt::DisplayRole) const;
+ QModelIndex index(int row, int column,
+ const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ int columnCount(const QModelIndex &parent = QModelIndex()) const;
+
+private:
+ HbMainWindow *mWin;
+ CssInspectorModelItem *mRootItem;
+};
+
+
+class ItemColorDelegate : public QStyledItemDelegate
+{
+ Q_OBJECT
+public:
+ ItemColorDelegate(QObject *parent=0);
+ ~ItemColorDelegate();
+ void paint(QPainter *painter, const QStyleOptionViewItem &option,
+ const QModelIndex &index) const;
+};
+
+
class HbCssInspectorWindow : public QWidget
{
Q_OBJECT
@@ -153,7 +207,12 @@
private:
void removeFilters();
void addFilters();
- static QString meshItemsToHtmlInfo(HbMeshLayout *mesh, const QString itemName, const QString layoutName);
+ static QString anchorsToHtmlInfo(HbAnchorLayout *anchorLayout, const QString itemName, const QString layoutName);
+ static QString anchorItemName(QGraphicsLayoutItem* item, QGraphicsLayout* layout, bool& isIdBased);
+
+private slots:
+ void updateFromTreeView(const QModelIndex &index);
+ void updateColumnSizes(const QModelIndex &index);
private:
explicit HbCssInspectorWindow(QWidget *parent = 0);
@@ -162,6 +221,7 @@
CodeWidget *mWidgetMLBox;
CodeWidget *mLayoutCssBox;
CodeWidget *mColorsCssBox;
+ QTreeView *mTreeView;
QLabel *mPathLabel;
QLabel *mSizeHintLabel;
QLabel *mSizePolicyHoriz;
--- a/src/hbcore/gui/hbdialog.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbdialog.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -41,7 +41,6 @@
#include <QEventLoop>
#include <QPointer>
#include <QDebug>
-#include <QGraphicsLinearLayout>
#include <QApplication> // krazy:exclude=qclasses
#include <hbfeedbackmanager.h>
@@ -70,12 +69,49 @@
An example of how to handle dialog signals from previous example.
\snippet{ultimatecodesnippet/ultimatecodesnippet.cpp,53}
+ An example of how to handle if finished(int) is connected instead of finished(HbAction*) in above example.
+ \snippet{ultimatecodesnipped/ultimatecodesnippet.cpp,55}
+
An example of how to create a non-modal dialog and show it.
\snippet{ultimatecodesnippet/ultimatecodesnippet.cpp,26}
*/
/*!
+ \fn void HbDialog::finished( int code )
+
+ This signal is emitted when the dialog is closed.
+ This will have the HbDialog::DialogCode as the parameter code.
+
+ \sa done(), accept(), reject()
+*/
+/*!
+ \fn void HbDialog::finished( HbAction *action )
+
+ This signal is emitted when an action has been triggered in a dialog.
+ The parameter will be the triggered action.
+ */
+/*!
+ \fn void HbDialog::accepted( )
+
+ This signal is emitted when the dialog is closed and the user
+ has accepted the dialog. which implies that either action has triggered
+ or through function call the accept method is called, causing this signal.
+
+ \sa done(), accept(), reject()
+*/
+/*!
+ \fn void HbDialog::rejected( )
+
+ This signal is emitted when the dialog is closed and the user
+ has rejected the dialog. which implies that either action triggered
+ or through function call the reject method is called, causing this signal.
+
+ \sa done(), accept(), reject()
+*/
+
+
+/*!
\reimp
\fn int HbDialog::type() const
*/
@@ -83,7 +119,6 @@
HbDialogPrivate::HbDialogPrivate( ) :
contentWidget(0),
headingWidget(0),
- mainLayout(new QGraphicsLinearLayout(Qt::Vertical)),
primaryAction(0),
secondaryAction(0),
closingAction(0),
@@ -95,39 +130,7 @@
{
}
-void HbDialogPrivate::init()
-{
- Q_Q(HbDialog);
-
- // Content is responsible of adding spacings & margins
- mainLayout->setSpacing(0);
- mainLayout->setContentsMargins(0,0,0,0);
-
- q->setLayout(mainLayout);
- mainLayout->setMinimumSize(0, 0);
-}
-
-void HbDialogPrivate::setWidget(int layoutIndex, QGraphicsWidget *&destWidget, QGraphicsWidget *widget)
-{
- Q_Q(HbDialog);
- if (destWidget != widget) {
- if (destWidget) {
- mainLayout->removeItem(destWidget);
- delete destWidget;
- destWidget = 0;
- }
- if (widget) {
- destWidget = widget;
- destWidget->setParentItem(q);
- mainLayout->insertItem(layoutIndex, widget);
- mainLayout->setAlignment(widget, Qt::AlignCenter);
- }
-
- doLayout();
- }
-}
-
-/*
+/*!
Relayouts the popup. If expandSize is true it the new calculated size of the popup
cannot be smaller than the current size.
*/
@@ -150,6 +153,19 @@
q->updateGeometry();
}
+/*!
+ Utility function removes the spaces from string if any
+*/
+void HbDialogPrivate::removeSpaces(QString& string)
+{
+ QString tempStr(string);
+ string.clear();
+ foreach(QChar ch, tempStr)
+ {
+ if(!ch.isSpace())
+ string.append(ch);
+ }
+}
/*!
Constructs a dialog with given \a parent graphics item.\n
@@ -162,6 +178,7 @@
Q_D(HbDialog);
d->q_ptr = this;
d->init();
+ d->timeout = HbPopupPrivate::timeoutValue(HbPopup::NoTimeout);
}
/*!
@@ -173,6 +190,7 @@
Q_D(HbDialog);
d->q_ptr = this;
d->init();
+ d->timeout = HbPopupPrivate::timeoutValue(HbPopup::NoTimeout);
}
/*!
@@ -200,8 +218,19 @@
void HbDialog::setHeadingWidget(QGraphicsWidget *headingWidget)
{
Q_D(HbDialog);
- HbStyle::setItemName(headingWidget,"heading");
- d->setWidget(0, d->headingWidget, headingWidget);
+ if (d->headingWidget == headingWidget)
+ return;
+ if (d->headingWidget)
+ delete d->headingWidget;
+ d->headingWidget = headingWidget;
+ if (headingWidget) {
+ setProperty("heading_layout", true);
+ headingWidget->setParentItem(this);
+ HbStyle::setItemName(headingWidget,"heading");
+ } else {
+ setProperty("heading_layout", false);
+ }
+ repolish();
}
/*!
@@ -224,9 +253,18 @@
*/
void HbDialog::setContentWidget(QGraphicsWidget *contentWidget)
{
- Q_D(HbDialog);
- HbStyle::setItemName(contentWidget,"content");
- d->setWidget((d->headingWidget?1:0), d->contentWidget, contentWidget);
+ Q_D(HbDialog);
+
+ if (d->contentWidget == contentWidget)
+ return;
+ if (d->contentWidget)
+ delete d->contentWidget;
+ d->contentWidget = contentWidget;
+ if (contentWidget) {
+ contentWidget->setParentItem(this);
+ HbStyle::setItemName(contentWidget,"content");
+ }
+ repolish();
}
/*!
@@ -300,12 +338,21 @@
}
/*!
+ This is a slot which shows the dialog and returns immediately.
+
+ \sa open(QObject*,const char*)
+*/
+void HbDialog::open()
+{
+ open(0,0);
+}
+/*!
Shows the dialog as modal dialog returning immediately.
- Connects finished(HbAction*) signal to the slot specified by \a receiver and
+ Connects finished(HbAction*) or finished(int) signal to the slot specified by \a receiver and
\a member. The signal will be disconnected from the slot when the
- popup is closed.
+ popup is closed. disambiguation between which method to connect to is done at runtime.
For non modal popups, use show().
*/
@@ -314,7 +361,15 @@
{
Q_D(HbDialog);
if ( receiver && member ) {
- connect( this, SIGNAL(finished(HbAction*)), receiver, member );
+
+ QString myStr(member);
+ d->removeSpaces(myStr);
+ if(myStr.contains("(int)")) {
+ connect( this, SIGNAL(finished(int)), receiver, member );
+ }
+ else {
+ connect( this, SIGNAL(finished(HbAction*)), receiver, member );
+ }
d->receiverToDisconnectOnClose = receiver;
d->memberToDisconnectOnClose = member;
} else {
@@ -323,6 +378,56 @@
}
show();
}
+/*!
+ Closes the dialog and emits finished ,accepted and rejected signals appropriately.
+
+ If the dialog is accepted the code is HbDialog::Accepted, if it is rejected code
+ is HbDialog::Rejected.
+ As with HbWidget::close(), done() deletes the dialog if the
+ Qt::WA_DeleteOnClose flag is set.
+
+ \sa accept(), reject()
+*/
+void HbDialog::done( int code )
+{
+ HbAction *action=qobject_cast<HbAction*>(sender());
+ if(!action) {
+ close();
+ //if there is no sender or if there is some sender which is not hbaction
+ //then we need to close the dialog when done is called.
+ }
+ else if(actions().contains(action)==false) {
+ close();
+ //if our actions done have this HbAction. then we need to call the
+ //close method explicitly.
+ } //otherwise close will be called automatically due to connection in base class
+
+ emit finished(code);
+ if(code == Accepted) {
+ emit accepted();
+ }
+ else if(code == Rejected) {
+ emit rejected();
+ }
+}
+/*!
+ Hides the modal dialog and emits finished(HbDialog::Accepted),accepted() and finished(HbAction*) signals.
+
+ \sa reject(), done()
+*/
+void HbDialog::accept()
+{
+ done(Accepted);
+}
+/*!
+ Hides the modal dialog and emits finished(HbDialog::Rejected),rejected() and finished(HbAction*) signals.
+
+ \sa accept(), done()
+*/
+void HbDialog::reject()
+{
+ done(Rejected);
+}
/*!
\reimp
@@ -392,14 +497,12 @@
// TODO: HbToolBar private interface should make it possible to choose
// different graphics for tool buttons.
d->toolBar = new HbToolBar();
+ d->toolBar->setParentItem(this);
HbStyle::setItemName(d->toolBar ,"controls");
- d->toolBar->setParentItem(this);
+ setProperty("controls_layout", true);
d->toolBar->setOrientation(Qt::Horizontal);
HbToolBarPrivate::d_ptr(d->toolBar)->mDialogToolBar = true;
- // prevent stretching buttons, should the content be small
- // but dialog size forcibly large
- d->mainLayout->addStretch();
- d->mainLayout->addItem(d->toolBar);
+ repolish();
}
QActionEvent *actionEvent = static_cast<QActionEvent *>(event);
d->toolBar->insertAction (actionEvent->before(), actionEvent->action());
@@ -423,9 +526,9 @@
if (d->toolBar) {
d->toolBar->removeAction(actionEvent->action());
if (!d->toolBar->actions().count()) {
- d->mainLayout->removeItem(d->toolBar);
d->toolBar->deleteLater();
d->toolBar = 0;
+ setProperty("controls_layout", false);
}
}
d->doLayout();
--- a/src/hbcore/gui/hbdialog.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbdialog.h Wed Jun 23 18:33:25 2010 +0300
@@ -37,6 +37,8 @@
Q_OBJECT
public:
+ enum DialogCode { Rejected, Accepted };
+
explicit HbDialog( QGraphicsItem *parent = 0 );
virtual ~HbDialog();
@@ -52,14 +54,22 @@
HbAction *secondaryAction() const;
void setSecondaryAction( HbAction *action );
+ void open( QObject* receiver, const char* member );
+
enum { Type = Hb::ItemType_Dialog }; // TODO: Hb::ItemType_Dialog
int type() const { return Type; }
public slots:
- void open( QObject* receiver = 0, const char* member = 0 );
+ void open();
+ virtual void done(int code);
+ virtual void accept();
+ virtual void reject();
- signals:
+signals:
void finished(HbAction*);
+ void finished(int);
+ void accepted();
+ void rejected();
protected:
HbDialog( HbDialogPrivate &dd, QGraphicsItem *parent );
--- a/src/hbcore/gui/hbdialog_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbdialog_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -37,7 +37,6 @@
QT_FORWARD_DECLARE_CLASS(QEventLoop)
QT_FORWARD_DECLARE_CLASS(QGraphicsWidget)
-QT_FORWARD_DECLARE_CLASS(QGraphicsLinearLayout)
QT_FORWARD_DECLARE_CLASS(QGraphicsSceneMouseEvent)
class HB_CORE_PRIVATE_EXPORT HbDialogPrivate :public HbPopupPrivate
@@ -47,14 +46,12 @@
public:
HbDialogPrivate( );
virtual ~HbDialogPrivate();
- void init();
- void setWidget(int layoutIndex, QGraphicsWidget *&destWidget, QGraphicsWidget *widget);
void doLayout();
+ void removeSpaces(QString& string);
QGraphicsWidget *contentWidget;
QGraphicsWidget *headingWidget;
- QGraphicsLinearLayout *mainLayout;
HbAction *primaryAction;
HbAction *secondaryAction;
HbAction *closingAction;
--- a/src/hbcore/gui/hbdockwidget.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbdockwidget.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -67,7 +67,6 @@
Q_D(HbDockWidget);
d->q_ptr = this;
setFlag( QGraphicsItem::ItemClipsChildrenToShape, true );
- setFlag(QGraphicsItem::ItemHasNoContents, true);
}
/*!
--- a/src/hbcore/gui/hbmainwindow.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbmainwindow.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -59,7 +59,7 @@
#include "hbcontentwidget_p.h"
#include "hbscreen_p.h"
#include "hbmainwindoworientation_p.h"
-#include "hbfeaturemanager_p.h"
+#include "hbfeaturemanager_r.h"
#include "hboogmwatcher_p.h"
#ifdef Q_OS_SYMBIAN
@@ -309,7 +309,7 @@
connect(d->mViewStackWidget, SIGNAL(widgetRemoved(QGraphicsWidget *)),
this, SLOT(_q_viewRemoved(QGraphicsWidget *)));
- // create Titlebar (container for indicators, titlepane and secondary softkey
+ // create Titlebar (container for indicator button, titlepane and navigation button
d->mTitleBar = new HbTitleBar(this, d->mClippingItem);
d->mTitleBar->setZValue(HbPrivate::TitleBarZValue);
@@ -390,10 +390,10 @@
HbView's content widget.
When \a widget is a HbView, use HbView::setWidget() to set the content
- widget for the view. Note that you should never attach child items directly
- to the HbView instance, even though HbView is also a HbWidget. Instead, create
- a content widget, set it to the view via HbView::setWidget(), and attach children
- to that.
+ widget for the view. Note that you should never attach child items or set a layout
+ directly to the HbView instance, even though HbView is also a HbWidget.
+ Instead, create a content widget, set it to the view via HbView::setWidget(),
+ and attach children or set a layout to that.
Use setCurrentView() to switch between the added views. (only one of them is visible at a time)
The view-specific decorators (toolbar, Options menu, title in the titlebar) and of course
@@ -401,7 +401,7 @@
when switching views.
For a detailed description of views see the HbView class.
-
+
Note that using view switching (i.e. several HbView instances, setCurrentView(), etc.) in
Hb applications is not mandatory, it is purely optional. For applications that are not really
view based (e.g. because they only have one screen of content or because they have more "fluid" UI where
@@ -951,7 +951,7 @@
// The signal must be emitted always, even when there was no need to do anything.
emit d->idleEventDispatched();
} else if (event->type() == HbMainWindowPrivate::IdleOrientationEvent) { // complete the orientation change effect chain
- if (d->mEffectItem && d->mOrientationChangeOngoing) {
+ if (d->mEffectItem && d->mOrientationChangeOngoing && d->mOrientationEffectFinished) {
HbEffect::start(d->mEffectItem, "rootItemFinalPhase", this, "rootItemFinalPhaseDone");
}
} else if (event->type() == HbMainWindowPrivate::IdleOrientationFinalEvent) {
--- a/src/hbcore/gui/hbmainwindow_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbmainwindow_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -297,6 +297,7 @@
mOrientationEffectFinished = false;
emit q->aboutToChangeOrientation();
emit q->aboutToChangeOrientation(orientation, mAnimateOrientationSwitch);
+ HbInputSettingProxy::instance()->notifyScreenOrientationChange();
}
mOrientation = orientation;
@@ -509,18 +510,20 @@
{
Q_UNUSED(status);
- mRootItemFinalPhaseDone = true;
- if (mEffectItem) {
- HbEffect::enable(mEffectItem);
- // make sure effect does not leave anything in wrong state
- mEffectItem->setOpacity(1.0f);
- mEffectItem->resetTransform();
+ if (mOrientationChangeOngoing) {
+ mRootItemFinalPhaseDone = true;
+ if (mEffectItem) {
+ HbEffect::enable(mEffectItem);
+ // make sure effect does not leave anything in wrong state
+ mEffectItem->setOpacity(1.0f);
+ mEffectItem->resetTransform();
+ }
+
+ HbEffect::enable(&mGVWrapperItem);
+
+ postIdleEvent(HbMainWindowPrivate::IdleOrientationFinalEvent);
+ updateOrientationChangeStatus();
}
-
- HbEffect::enable(&mGVWrapperItem);
-
- postIdleEvent(HbMainWindowPrivate::IdleOrientationFinalEvent);
- updateOrientationChangeStatus();
}
void HbMainWindowPrivate::updateOrientationChangeStatus()
@@ -771,6 +774,7 @@
if (view) {
const Hb::SceneItems visibleItems(view->visibleItems());
view->setTitleBarVisible(visibleItems & Hb::TitleBarItem); // also handles updating of the navigation button
+ view->setStatusBarVisible(visibleItems & Hb::StatusBarItem);
// ToolBar is a special case, since it depens on the current view's toolbar
if (visibleItems & Hb::ToolBarItem) {
@@ -991,6 +995,8 @@
mTitleBar, SIGNAL(activated(const QList<IndicatorClientInfo> &)));
connect(mStatusBar, SIGNAL(deactivated(const QList<IndicatorClientInfo> &)),
mTitleBar, SIGNAL(deactivated(const QList<IndicatorClientInfo> &)));
+ connect(mStatusBar, SIGNAL(allActivated(const QList<IndicatorClientInfo> &)),
+ mTitleBar, SIGNAL(allActivated(const QList<IndicatorClientInfo> &)));
initFadeItem();
--- a/src/hbcore/gui/hbmainwindow_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbmainwindow_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -56,6 +56,7 @@
class HbDockWidget;
class HbContentWidget;
class HbTheTestUtility;
+class CssInspectorModel;
#ifdef Q_OS_SYMBIAN
class HbNativeWindow;
@@ -212,6 +213,7 @@
friend class HbShrinkingVkbHostPrivate;
friend class HbForegroundWatcher;
friend class HbDeviceDialogConnectHelperPrivate;
+ friend class CssInspectorModel;
};
#endif // HBMAINWINDOW_P_H
--- a/src/hbcore/gui/hbmenu.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbmenu.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -487,6 +487,9 @@
setTitle(title);
}
+/*!
+ Protected constructor.
+*/
HbMenu::HbMenu(HbMenuPrivate &dd, QGraphicsItem *parent) :
HbPopup(dd, parent)
{
@@ -675,7 +678,9 @@
}
/*!
- \return the menu title. For a sub-menu, the title is the sub-menu action text.
+ Returns the menu title. For a sub-menu, the title is the sub-menu action text.
+
+ \return the menu title.
\sa setTitle()
*/
@@ -685,7 +690,9 @@
}
/*!
- \return the menu type. By default a menu is a context menu.
+ Returns the menu type. By default a menu is a context menu.
+
+ \return the menu type.
*/
HbMenu::MenuType HbMenu::menuType() const
{
@@ -747,6 +754,9 @@
return HbPopup::event(event);
}
+/*!
+ \reimp
+ */
void HbMenu::polish(HbStyleParameters ¶ms)
{
Q_D(HbMenu);
@@ -783,6 +793,10 @@
}
}
+/*!
+ \reimp
+ Returns the shape of this item as a QPainterPath.
+ */
QPainterPath HbMenu::shape() const
{
/*QRectF rect = QRectF(-1.0, -1.0, boundingRect().width() + 1.0, boundingRect().height() + 1.0);
--- a/src/hbcore/gui/hbmenucontainer_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbmenucontainer_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -50,7 +50,6 @@
mLayout->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
q->setLayout(mLayout);
- q->setFlag(QGraphicsItem::ItemHasNoContents, true);
}
HbMenuContainer::HbMenuContainer(HbMenu *menu,QGraphicsItem *parent):
@@ -242,7 +241,6 @@
d->mContainer = new HbMenuContainer(menu, this);
setContentWidget(d->mContainer);
setScrollingStyle(HbScrollArea::Pan);
- setFlag(QGraphicsItem::ItemHasNoContents, true);
}
bool HbMenuListView::scrollByAmount(const QPointF& delta)
--- a/src/hbcore/gui/hbmenuitem_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbmenuitem_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -40,7 +40,7 @@
#endif
Q_DECLARE_METATYPE (QAction*)
-/*
+/*!
\class HbMenuItem
\brief HbMenuItem is a menu item graphics widget.
@@ -60,6 +60,16 @@
\brief
*/
+/*!
+ \primitives
+ \primitive{frame} HbFrameItem representing the background frame of the menu item.
+ \primitive{focus-indicator} HbFrameItem representing the background frame of the menu item when the item is focused.
+ \primitive{text} HbTextItem representing the menu item text.
+ \primitive{submenu-indicator} HbIconItem representing the icon that indicates that the menu item opens a sub-menu.
+ \primitive{check-indicator} HbIconItem representing the check icon of the menu item.
+ \primitive{separator} HbIconItem representing a menu separator.
+ */
+
HbMenuItemPrivate::HbMenuItemPrivate() :
HbWidgetPrivate(),
action(0),
@@ -172,7 +182,7 @@
}
}
-/*
+/*!
Constructs a new HbMenuItem with \a action and \a parent. Ownership of the
\a action remains on it's parent.
*/
@@ -188,14 +198,14 @@
setAcceptedMouseButtons (Qt::NoButton);
}
-/*
+/*!
Destructs the menu item.
*/
HbMenuItem::~HbMenuItem()
{
}
-/*
+/*!
Returns the action representing this menu item.
*/
QAction* HbMenuItem::action() const
@@ -204,7 +214,7 @@
return d->action;
}
-/*
+/*!
Returns the menu which handles this item.
*/
HbMenu* HbMenuItem::menu() const
@@ -213,7 +223,7 @@
return d->menu;
}
-/*
+/*!
\reimp
*/
void HbMenuItem::initStyleOption(HbStyleOptionMenuItem *option) const
@@ -236,7 +246,7 @@
}
-/*
+/*!
\reimp
*/
void HbMenuItem::changeEvent(QEvent *event)
@@ -275,7 +285,7 @@
}
#endif
-/*
+/*!
Sets the action,which is represented by the menu item.
*/
void HbMenuItem::setAction(QAction *action)
@@ -298,7 +308,7 @@
}
-/*
+/*!
This is for convienience.This functionality can be internal to menu item
also and cal be done by following changed() signal emitted from action.But this gives more precise
control for menu container.This is called when action has been made invisible and
@@ -331,7 +341,7 @@
return (d->separatorItem != 0);
}
-/*
+/*!
Returns the type of the menu where menu item belongs.
*/
HbMenu::MenuType HbMenuItem::menuType() const
--- a/src/hbcore/gui/hbpopup.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbpopup.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -180,6 +180,18 @@
dismissed by the user or timeout.
*/
+/*!
+ \enum HbPopup::Placement
+
+ Placement is the corner or edge to which position of the popup refers to.
+ */
+
+/*!
+ \primitives
+ \primitive{background} HbFrameItem representing the popup background. The background can be weak or strong (different graphical styles) depending on popup type.
+ \primitive{P_Popup_heading_frame} HbFrameItem representing the popup heading text background
+ */
+
static const struct { HbPopup::DefaultTimeout timeout; int value; } timeoutValues[] =
{
{HbPopup::NoTimeout,0},
@@ -282,6 +294,7 @@
mStartEffect(false),
mScreenMargin(0.0),
mAutoLayouting(true),
+ mOriginalAutoLayouting(mAutoLayouting),
mVgMaskEffect(0),
mOrientationEffectHide(false),
timeoutTimerInstance(0)
@@ -300,7 +313,7 @@
// By default popups are focusable
q->setFocusPolicy(Qt::StrongFocus);
- q->setBackgroundItem(HbStyle::P_Popup_background);
+ q->setBackgroundItem(HbStyle::P_Popup_background);
// Only for popup without parent
if (!q->parentItem()) {
@@ -541,6 +554,7 @@
"popup_orient_appear",
"orient_appear");
}
+ hasEffects = true; //Workaround until orient appear effects are in place
#endif
}
@@ -858,6 +872,7 @@
if (d->delayedHide && // about to hide and we wanna delay hiding
d->hasEffects && !parentItem()) { // only for popup without parent
+ bool hideDelayed = d->delayedHide;
if (!d->hidingInProgress) { // Prevent reentrance
d->hidingInProgress = true;
#ifdef HB_EFFECTS
@@ -873,7 +888,7 @@
}
#endif
}
- if (d->delayedHide) {
+ if (hideDelayed) {
return true;
} else {
d->delayedHide = d->hasEffects;
@@ -888,7 +903,7 @@
disconnect(this, SLOT(_q_orientationAboutToChange(Qt::Orientation, bool)));
connect( w, SIGNAL(aboutToChangeOrientation(Qt::Orientation, bool)),
this, SLOT(_q_orientationAboutToChange(Qt::Orientation, bool)) );
- disconnect(this, SLOT(handlePopupPos()));
+ disconnect(this, SLOT(_q_orientationChanged()));
connect( w, SIGNAL(orientationChanged(Qt::Orientation)),
this, SLOT(_q_orientationChanged()) );
}
@@ -897,11 +912,13 @@
}
/*!
+ \deprecated HbPopup::handlePopupPos()
+ is deprecated. This function should not be used from the application side.
Handles the popup position when Orientation changes
*/
void HbPopup::handlePopupPos()
{
- //Not used inside hbpopup, deprecate this(?)
+ HB_DEPRECATED("HbPopup::handlePopupPos() is deprecated.");
QEvent userEvent(QEvent::ContextMenu);
QCoreApplication::sendEvent(this, &userEvent);
}
@@ -1069,13 +1086,47 @@
HbWidget::closeEvent(event);
}
+
+/* Currently, virtual keyboard must be able to position a popup
+ containing a editor to an arbitrary place. VKB does it's best to
+ reposition popup back to original position when needed. At least in
+ orientation switch the old position naturally is wrong, hence popup
+ must be relayouted.
+
+ It would be unreasonable to make special checks for popup in vkb
+ side. It also would be unreasonable to do special checks for vkb in
+ popup side. Hence this semi-hidden dynamic property for
+ communicating this special case.
+
+ WARNING: Do not count on this special behaviour, we might remove it
+ without prior notice. If you do require such a behavior, please
+ raise a feature request and we might make this a proper API.
+ */
+const char* KPositionManagedByVKB("PositionManagedByVKB");
+
/*!
\reimp
*/
bool HbPopup::event(QEvent *event)
{
Q_D(HbPopup);
- if (event->type() == QEvent::LayoutRequest) {
+ if ( event->type() == QEvent::DynamicPropertyChange ) {
+ QVariant v(property(KPositionManagedByVKB));
+ if (v.isValid() ){
+ if (v.toBool()) {
+ // position is now managed by vkb
+ d->mOriginalAutoLayouting = d->mAutoLayouting;
+ d->mAutoLayouting = false;
+ } else {
+ d->mAutoLayouting = d->mOriginalAutoLayouting;
+
+ // vkb has finished, and we might be on totally wrong
+ // place.
+ QEvent layoutRequest = QEvent::LayoutRequest;
+ QApplication::sendEvent(this, &layoutRequest);
+ }
+ }
+ } else if (event->type() == QEvent::LayoutRequest) {
//Workaround when showing first time
#ifdef HB_EFFECTS
if(d->mStartEffect && boundingRect().isValid()) {
@@ -1111,9 +1162,7 @@
popup->setPreferredPosition( QPointF(x,y), HbPopupBase::BottomEdgeCenter );
popup->show();
\endcode
-
*/
-
void HbPopup::setPreferredPos( const QPointF& preferredPos,
HbPopup::Placement placement )
{
@@ -1135,6 +1184,10 @@
}
}
+/*!
+ \reimp
+ Returns the shape of this item as a QPainterPath.
+ */
QPainterPath HbPopup::shape() const
{
#if 0
--- a/src/hbcore/gui/hbpopup_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbpopup_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -110,6 +110,7 @@
QByteArray memberToDisconnectOnClose;
qreal mScreenMargin;
bool mAutoLayouting;
+ bool mOriginalAutoLayouting;
public:
#ifdef HB_EFFECTS
@@ -147,7 +148,6 @@
friend class HbPopupManagerPrivate;
friend class HbPopupLayoutProxy;
friend class HbDeviceDialogManagerPrivate;
-
// To be able to unit test private features
friend class TestHbPopup;
--- a/src/hbcore/gui/hbpopupmanager.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbpopupmanager.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -182,14 +182,13 @@
{
Q_UNUSED( obj );
switch( event->type() ) {
- case QEvent::LayoutRequest: {
- updateGeometry();
- break;
- }
- case QEvent::ContextMenu: {
+ case QEvent::LayoutRequest:
+ case QEvent::ContextMenu:
+ case QEvent::Close:
+ {
updateGeometry();
break;
- }
+ }
default:
break;
}
@@ -493,7 +492,8 @@
// Move the focus to the initial focus item if there is no current focus item or
// the ancestor of the current fucus item is popup
- if( !scene->focusItem() || popup->hasFocus() || popup->isAncestorOf(scene->focusItem())) {
+ if( !scene->focusItem() || scene->focusItem() == popup ||
+ popup->isAncestorOf(scene->focusItem())) {
initialFocusedItem->setFocus();
initialFocusedItem = 0;
}
--- a/src/hbcore/gui/hbscreen.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbscreen.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -32,6 +32,8 @@
#include "hbview.h"
#include "hbcontentwidget_p.h"
#include "hbmainwindow.h"
+#include "hbtooltip.h"
+#include "hbgraphicsscene.h"
#include "hbevent.h"
#include "hbmainwindow_p.h"
#include <QGraphicsLayout>
@@ -278,6 +280,7 @@
void HbScreen::currentViewChanged(HbView *view)
{
Q_UNUSED(view);
+ HbToolTip::hideText(qobject_cast<HbGraphicsScene *>(scene()));
repolish();
}
--- a/src/hbcore/gui/hbscrollarea.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbscrollarea.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -222,6 +222,14 @@
*/
/*!
+ \primitives
+ \primitives{continuation-indicator-bottom} HbFrameItem representing the scrollarea continuation indicator on the bottom of the scrollarea.
+ \primitives{continuation-indicator-top} HbFrameItem representing the scrollarea continuation indicator on the top of the scrollarea.
+ \primitives{continuation-indicator-left} HbFrameItem representing the scrollarea continuation indicator on the left side of the scrollarea.
+ \primitives{continuation-indicator-right} HbFrameItem representing the scrollarea continuation indicator on the right side of the scrollarea.
+ */
+
+/*!
Constructor
\sa HbScrollArea::HbScrollArea
@@ -234,6 +242,9 @@
d->init();
}
+/*!
+ Protected constructor.
+ */
HbScrollArea::HbScrollArea(HbScrollAreaPrivate &dd, QGraphicsItem *parent):
HbWidget( dd, parent )
{
@@ -619,9 +630,9 @@
HB_DEPRECATED("HbScrollArea::longPressGesture(const QPointF &) is deprecated. Use gesture FW.");
}
-/*
+/*!
\reimp
-*/
+ */
void HbScrollArea::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
Q_UNUSED (event);
@@ -839,7 +850,6 @@
\sa horizontalScrollBarPolicy(), setVerticalScrollBarPolicy()
*/
-
HbScrollArea::ScrollBarPolicy HbScrollArea::verticalScrollBarPolicy() const
{
Q_D(const HbScrollArea);
@@ -896,7 +906,6 @@
\sa verticalScrollBarPolicy(), setHorizontalScrollBarPolicy()
*/
-
HbScrollArea::ScrollBarPolicy HbScrollArea::horizontalScrollBarPolicy() const
{
Q_D(const HbScrollArea);
@@ -1050,7 +1059,7 @@
}
}
-/*
+/*!
\reimp
*/
void HbScrollArea::polish(HbStyleParameters& params)
--- a/src/hbcore/gui/hbscrollarea_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbscrollarea_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -135,7 +135,6 @@
q->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
q->setFlag( QGraphicsItem::ItemClipsChildrenToShape, true );
- q->setFlag(QGraphicsItem::ItemHasNoContents, true);
q->setFocusPolicy(Qt::StrongFocus);
// Scrollbar is created when it is shown for the first time.
@@ -152,6 +151,13 @@
// make sure the scrollbar is on top
mHorizontalScrollBar->setZValue(q->zValue() + 1);
+#if QT_VERSION >= 0x040700
+ q->grabGesture(Qt::PanGesture, Qt::ReceivePartialGestures | Qt::IgnoredGesturesPropagateToParent);
+#else
+ q->grabGesture(Qt::PanGesture, Qt::ReceivePartialGestures);
+#endif
+ q->grabGesture(Qt::TapGesture);
+
}
void HbScrollAreaPrivate::doLazyInit()
@@ -168,13 +174,6 @@
QObject::connect(&(mScrollTimer), SIGNAL(timeout()), q, SLOT(_q_animateScrollTimeout()));
QObject::connect(&(mScrollBarHideTimer), SIGNAL(timeout()), q, SLOT(_q_hideScrollBars()));
-
-#if QT_VERSION >= 0x040700
- q->grabGesture(Qt::PanGesture, Qt::ReceivePartialGestures | Qt::IgnoredGesturesPropagateToParent);
-#else
- q->grabGesture(Qt::PanGesture, Qt::ReceivePartialGestures);
-#endif
- q->grabGesture(Qt::TapGesture);
}
void HbScrollAreaPrivate::replaceScrollBar(Qt::Orientation orientation, HbScrollBar *scrollBar)
@@ -217,8 +216,7 @@
{
Q_Q( HbScrollArea );
- if ( mContents == 0 ||
- ( qIsNull(qAbs( delta.x() )) && qIsNull(qAbs( delta.y() ) ) ) )
+ if ( qIsNull(qAbs( delta.y() )) && qIsNull(qAbs( delta.x() ) ) )
return false;
QPointF currentPosition = -mContents->pos();
@@ -281,11 +279,14 @@
mBoundaryReached = false;
}
-
+ setContentPosition(-newPosition);
+ //Its important to setcontents position first as thats used in updateScrollbar.displayScrollbar calls
+ //updateScrollbar internally.Other wise we need to update scrollbars twice with different positions.
if (!mIsScrolling) {
- mIsScrolling = true;
- emit q->scrollingStarted();
-
+ if (mAbleToScrollX || mAbleToScrollY) {
+ mIsScrolling = true;
+ emit q->scrollingStarted();
+ }
if (mAbleToScrollX && mHorizontalScrollBarPolicy == HbScrollArea::ScrollBarAutoHide) {
displayScrollBar(Qt::Horizontal);
}
@@ -293,24 +294,22 @@
if (mAbleToScrollY && mVerticalScrollBarPolicy == HbScrollArea::ScrollBarAutoHide) {
displayScrollBar(Qt::Vertical);
}
- }
-
- setContentPosition(-newPosition);
-
- if (mAbleToScrollX && mHorizontalScrollBar->isVisible()) {
- updateScrollBar(Qt::Horizontal);
- }
+ if (mScrollBarHideTimer.isActive()) {
+ mScrollBarHideTimer.stop();
+ }
+ } else {
- if (mAbleToScrollY && mVerticalScrollBar->isVisible()) {
- updateScrollBar(Qt::Vertical);
- }
+ if (mAbleToScrollX && mHorizontalScrollBar->isVisible()) {
+ updateScrollBar(Qt::Horizontal);
+ }
- bool positionChanged = currentPosition != newPosition;
- if (positionChanged && mScrollBarHideTimer.isActive()) {
- mScrollBarHideTimer.stop();
+ if (mAbleToScrollY && mVerticalScrollBar->isVisible()) {
+ updateScrollBar(Qt::Vertical);
+ }
}
-
- return (positionChanged);
+ //if we are here than content position has changed.i.e delta is not zero or
+ //we havent reached the boundaries.
+ return true;
}
void HbScrollAreaPrivate::animateScroll(QPointF speed)
@@ -357,6 +356,8 @@
void HbScrollAreaPrivate::startAnimating()
{
// Launch the animation timer
+ if (!mContents)
+ return;
if (!mScrollTimer.isActive()) {
mScrollElapsedTime.restart();
mLastElapsedTime = 0.0;
@@ -399,9 +400,9 @@
void HbScrollAreaPrivate::_q_animateScrollTimeout()
{
Q_Q( HbScrollArea );
- qreal elapsedTime = qreal(mScrollElapsedTime.elapsed());
+ qreal elapsedTime(qreal(mScrollElapsedTime.elapsed()));
- qreal timeDifference = elapsedTime - mLastElapsedTime;
+ qreal timeDifference(elapsedTime - mLastElapsedTime);
// if no time has elapsed, just return
// this sometimes happens if the timer accuracy is not that great
@@ -422,38 +423,40 @@
mTargetAnimationInProgress = false;
}
} else {
-
+ qreal simulationStepInTime;
+ QPointF overAllDist(0,0);
+ QPointF currentPosition(-mContents->pos());
+ bool stopVerticalAnimation(false);
+ bool stopHorizontalAnimation(false);
// calculations are split so that the same amount of simulation steps
// are made in varying framerates.
do {
- qreal simulationStepInTime = qMin ( MAX_TIMEDIF_FOR_SIMULATION, timeDifference);
-
- // Calculate new velocity to horizontal movement
- mScrollSpeed.setX( calculateVelocity ( simulationStepInTime,
- mScrollSpeed.x(),
- -mContents->pos().x(),
- leftBoundary(),
- rightBoundary() ) );
+ simulationStepInTime = qMin ( MAX_TIMEDIF_FOR_SIMULATION, timeDifference);
+ currentPosition = -mContents->pos();
+ if (mAbleToScrollX) {
+ // Calculate new velocity to horizontal movement
+ mScrollSpeed.setX( calculateVelocity ( simulationStepInTime,
+ mScrollSpeed.x(),
+ currentPosition.x(),
+ leftBoundary(),
+ rightBoundary() ) );
- // Calculate new velocity to vertical movement
- mScrollSpeed.setY( calculateVelocity ( simulationStepInTime,
- mScrollSpeed.y(),
- -mContents->pos().y(),
- topBoundary(),
- bottomBoundary() ) );
-
- QPointF overAllDist = mScrollSpeed * simulationStepInTime;
-
- bool stopVerticalAnimation = false;
- if ( qAbs( mScrollSpeed.y() ) < MIN_SPEED_PER_MILLISECOND ) {
- stopVerticalAnimation = clampToBoundaries ( overAllDist.ry(), -mContents->pos().y(), topBoundary(), bottomBoundary() );
+ if ( qAbs( mScrollSpeed.x() ) < MIN_SPEED_PER_MILLISECOND ) {
+ stopHorizontalAnimation = clampToBoundaries ( overAllDist.rx(), currentPosition.x(), leftBoundary(), rightBoundary() );
+ }
}
-
- bool stopHorizontalAnimation = false;
- if ( qAbs( mScrollSpeed.x() ) < MIN_SPEED_PER_MILLISECOND ) {
- stopHorizontalAnimation = clampToBoundaries ( overAllDist.rx(), -mContents->pos().x(), leftBoundary(), rightBoundary() );
+ if (mAbleToScrollY) {
+ // Calculate new velocity to vertical movement
+ mScrollSpeed.setY( calculateVelocity ( simulationStepInTime,
+ mScrollSpeed.y(),
+ currentPosition.y(),
+ topBoundary(),
+ bottomBoundary() ) );
+ if ( qAbs( mScrollSpeed.y() ) < MIN_SPEED_PER_MILLISECOND ) {
+ stopVerticalAnimation = clampToBoundaries ( overAllDist.ry(), currentPosition.y(), topBoundary(),bottomBoundary() );
+ }
}
-
+ overAllDist = mScrollSpeed * simulationStepInTime;
q->scrollByAmount ( -overAllDist );
if ( ( !mAbleToScrollY || stopVerticalAnimation ) &&
@@ -583,6 +586,8 @@
*/
bool HbScrollAreaPrivate::pan(QPanGesture* panGesture)
{
+ if (!mContents)
+ return false;
Q_Q ( HbScrollArea );
HbPanGesture *hbPanGesture = qobject_cast<HbPanGesture *>(panGesture);
@@ -772,20 +777,14 @@
if (orientation == Qt::Horizontal) {
// Set handle size
- mHorizontalScrollBar->setPageSize( qBound ( qreal(0.0),
- qreal (q->boundingRect().width())
- / qreal (mContents->boundingRect().width()),
- qreal(1.0)));
-
+ mHorizontalScrollBar->setPageSize(q->boundingRect().width()
+ / mContents->boundingRect().width());
updateScrollBar(orientation);
}
else {
// Set handle size
- mVerticalScrollBar->setPageSize(qBound ( qreal(0.0),
- qreal (q->boundingRect().height())
- / qreal (mContents->boundingRect().height()),
- qreal(1.0)));
-
+ mVerticalScrollBar->setPageSize(q->boundingRect().height()
+ / mContents->boundingRect().height());
updateScrollBar(orientation);
}
}
@@ -795,49 +794,33 @@
Q_Q( HbScrollArea );
qreal thumbPosition(0);
-
+ qreal normalizingValue(0);
+ // The scrollbar "thumb" position is the current position of the contents widget divided
+ // by the difference between the width of the contents widget and the width of the scroll area.
+ // This formula assumes that the "thumb" of the the scroll bar is sized proportionately to
+ // the width of the contents widget.
if ((orientation == Qt::Horizontal) && mHorizontalScrollBar) {
- // The scrollbar "thumb" position is the current position of the contents widget divided
- // by the difference between the width of the contents widget and the width of the scroll area.
- // This formula assumes that the "thumb" of the the scroll bar is sized proportionately to
- // the width of the contents widget.
-
- //if (mLayoutDirection == Qt::LeftToRight)
- //{
- if (!qIsNull(mContents->boundingRect().width()
- - q->boundingRect().width())) {
- thumbPosition = qAbs( leftBoundary() + qMin ( -leftBoundary(), mContents->pos().x() ) )
- / (mContents->boundingRect().width()
- - q->boundingRect().width());
+ if (mAbleToScrollX) {
+ normalizingValue = mContents->boundingRect().width()
+ - q->boundingRect().width();
+ qreal lBoundary(leftBoundary());
+ if (!qIsNull(normalizingValue)) {
+ thumbPosition = qAbs( lBoundary + qMin ( -lBoundary, mContents->pos().x() ) )
+ / (normalizingValue);
+ }
}
- /* }
- else
- thumbPosition = (mContents->boundingRect().width()
- + mContents->pos().x())
- / (mContents->boundingRect().width()
- - q->boundingRect().width());*/
-
- if (thumbPosition < 0.0)
- thumbPosition = 0.0;
- else if (thumbPosition > 1.0)
- thumbPosition = 1.0;
mHorizontalScrollBar->setValue(thumbPosition);
}
else if (mVerticalScrollBar) {
- // The scrollbar "thumb" position is the current position of the contents widget divided
- // by the difference between the height of the contents widget and the height of the scroll area.
- // This formula assumes that the "thumb" of the the scroll bar is sized proportionately to
- // the height of the contents widget.
- if (!qIsNull(mContents->boundingRect().height()
- - q->boundingRect().height())) {
- thumbPosition = qAbs( topBoundary() + qMin ( -topBoundary(), mContents->pos().y() ) )
- / (mContents->boundingRect().height()
- - q->boundingRect().height());
+ if (mAbleToScrollY) {
+ normalizingValue = mContents->boundingRect().height()
+ - q->boundingRect().height();
+ qreal tBoundary(topBoundary());
+ if (!qIsNull(normalizingValue)) {
+ thumbPosition = qAbs( tBoundary + qMin ( -tBoundary, mContents->pos().y() ) )
+ / (normalizingValue);
+ }
}
- if (thumbPosition < 0.0)
- thumbPosition = 0.0;
- else if (thumbPosition > 1.0)
- thumbPosition = 1.0;
mVerticalScrollBar->setValue(thumbPosition);
}
}
--- a/src/hbcore/gui/hbscrollarea_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbscrollarea_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -171,7 +171,6 @@
QTimer mScrollBarHideTimer;
bool mFrictionEnabled;
- bool mScrollbarVisible;
bool mResetAlignment;
HbScrollArea::ClampingStyle mClampingStyle;
--- a/src/hbcore/gui/hbscrollbar.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbscrollbar.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -68,9 +68,24 @@
/*!
\fn void HbScrollBar::valueChanged( qreal value, Qt::Orientation orientation )
- This signal is emitted when thumb position is changed from user interaction.
+ This signal is emitted when thumb position is changed by the user.
*/
+/*!
+ \fn void valueChangeRequested( qreal value, Qt::Orientation orientation );
+
+ This signal is emitted when the user presses scrollbar groove.
+
+ \param value, the new value of scrollbar after the change
+ */
+
+/*!
+ \primitives
+ \primitive{groove} HbFrameItem representing the groove of a scrollbar.
+ \primitive{handle} HbFrameItem representing the handle of a scrollbar.
+ \primitive{toucharea} HbTouchArea representing the scrollbar toucharea.
+ */
+
HbScrollBarPrivate::HbScrollBarPrivate():
mOrientation(Qt::Vertical),
mCurrentPosition(0.5),
@@ -83,7 +98,8 @@
grooveItem(0),
handleItem(0),
mTouchArea(0),
- mBoundingRect(QRectF(0,0,0,0)),
+ mLimitingFactor(0.0),
+ mTopLeft(0.0),
lastEmittedPos(QPointF()),
emittedPos(false)
{
@@ -98,7 +114,6 @@
Q_Q(HbScrollBar);
q->grabGesture(Qt::PanGesture);
q->grabGesture(Qt::TapGesture);
- q->setFlag(QGraphicsItem::ItemHasNoContents, true);
}
void HbScrollBarPrivate::createPrimitives()
@@ -124,13 +139,11 @@
void HbScrollBarPrivate::updatePosition()
{
- if(!mHandleGeometry.isValid() || !handleItem)
- return;
if (handleItem){
if (mOrientation == Qt::Vertical) {
- handleItem->setPos(mHandleGeometry.topLeft().x(), mCurrentPosition * (mBoundingRect.height() - mHandleGeometry.height()));
+ handleItem->setPos(mTopLeft, mCurrentPosition * mLimitingFactor);
} else {
- handleItem->setPos(mCurrentPosition * (mBoundingRect.width() - mHandleGeometry.width()), mHandleGeometry.topLeft().y());
+ handleItem->setPos(mCurrentPosition * mLimitingFactor, mTopLeft);
}
}
}
@@ -142,22 +155,25 @@
Q_Q(HbScrollBar);
if(handleItem){
HbFrameItem *item = qgraphicsitem_cast<HbFrameItem*>(handleItem);
- mBoundingRect = q->boundingRect();
+ QRectF bRect = q->boundingRect();
if(item){
if (mOrientation == Qt::Vertical) {
- qreal height(mPageSize * mBoundingRect.height());
+ qreal height(mPageSize * bRect.height());
if(!qFuzzyCompare(item->preferredHeight(),height)){
item->setPreferredHeight(height);
item->resize(item->size().width(), height);
}
+ mLimitingFactor = bRect.height() - item->geometry().height();
+ mTopLeft = item->geometry().topLeft().x();
} else {
- qreal width(mPageSize * mBoundingRect.width());
+ qreal width(mPageSize * bRect.width());
if(!qFuzzyCompare(item->preferredWidth(),width)){
item->setPreferredWidth(width);
item->resize(width, item->size().height());
}
+ mLimitingFactor = bRect.width() - item->geometry().width();
+ mTopLeft = item->geometry().topLeft().y();
}
- mHandleGeometry = item->geometry();
updatePosition();
}
}
@@ -240,7 +256,7 @@
The value corresponds to the position of the thumb.
\sa HbScrollBar::setValue()
-*/
+ */
qreal HbScrollBar::value() const
{
Q_D( const HbScrollBar );
@@ -254,7 +270,7 @@
The size is in range of 0.0 to 1.0.
\sa HbScrollBar::setPageSize()
-*/
+ */
qreal HbScrollBar::pageSize() const
{
Q_D( const HbScrollBar );
@@ -265,7 +281,7 @@
Returns the orientation of scrollbar.
\sa HbScrollBar::setOrientation()
-*/
+ */
Qt::Orientation HbScrollBar::orientation() const
{
Q_D( const HbScrollBar );
@@ -318,7 +334,7 @@
{
Q_D(HbScrollBar);
- value = qBound(static_cast<qreal>(0.0), value, static_cast<qreal>(1.0));
+ value = qBound(qreal(0.0), value, qreal(1.0));
if( !qFuzzyCompare(d->mCurrentPosition,value )) {
d->mCurrentPosition = value;
d->updatePosition();
@@ -336,7 +352,7 @@
void HbScrollBar::setPageSize( qreal size )
{
Q_D(HbScrollBar);
- size = qBound(static_cast<qreal>(0.0), size, static_cast<qreal>(1.0));
+ size = qBound(qreal(0.0), size, qreal(1.0));
if(!qFuzzyCompare(d->mPageSize,size)) {
d->mPageSize = size;
@@ -602,7 +618,14 @@
Q_D(HbScrollBar);
if (d->handleItem) {
HbFrameItem* item = (qgraphicsitem_cast<HbFrameItem*>(d->handleItem));
- d->mHandleGeometry = item->geometry();
+ QRectF geo = item->geometry();
+ if (d->mOrientation == Qt::Vertical) {
+ d->mTopLeft = geo.topLeft().x();
+ d->mLimitingFactor = boundingRect().height() - geo.height();
+ } else {
+ d->mTopLeft = geo.topLeft().y();
+ d->mLimitingFactor = boundingRect().width() - geo.width();
+ }
}
}
--- a/src/hbcore/gui/hbscrollbar_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbscrollbar_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -74,8 +74,8 @@
QGraphicsItem *grooveItem;
QGraphicsItem *handleItem;
QGraphicsItem *mTouchArea;
- QRectF mBoundingRect;
- QRectF mHandleGeometry;
+ qreal mLimitingFactor;
+ qreal mTopLeft;
bool hasEffects;
QPointF lastEmittedPos;
bool emittedPos;
--- a/src/hbcore/gui/hbtoolbar.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbtoolbar.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -57,20 +57,30 @@
\class HbToolBar
\brief HbToolBar is a toolbar decorator.
- The HbToolBar class represents an HbView toolbar. It provides the interface for adding actions
- to the toolbar.
+ The HbToolBar class represents an HbView toolbar. It provides the
+ interface for adding actions to the toolbar.
+
Toolbar actions are added using one of the addAction() methods.
- Calling addAction() adds an HbToolButton to the toolbar and triggers the action when the button
- is pressed. The image and text specified with the action are applied to the toolbar button.
+ Calling addAction() adds an HbToolButton to the toolbar and
+ triggers the action when the button is pressed. The image and text
+ specified with the action are applied to the toolbar button.
- HbToolBar also provides methods for adding pop-up toolbar extensions, represented by
- HbToolBarExtension objects.
+ HbToolBar also provides methods for adding pop-up toolbar
+ extensions, represented by HbToolBarExtension objects.
Example usage:
\dontinclude ultimatecodesnippet/ultimatecodesnippet.cpp
\skip Start of snippet 1
\until End of snippet 1
+ Note: calling hide() or setVisible(bool) on toolbar is not
+ recommended. Instead, use \a HbView::setItemVisible(), as in
+ this example:
+ \dontinclude ultimatecodesnippet/ultimatecodesnippet.cpp
+ \skip Start of snippet 59
+ \until End of snippet 59
+
+
*/
/*!
@@ -271,28 +281,39 @@
d->delayedHide = d->hasEffects;
}
} else {
- if (d->mVisibleToolButtons.count()){
- d->emitVisibilityChangeSignal = true;
- QMetaObject::invokeMethod(&d->core, "visibilityChanged", Qt::QueuedConnection);
- }
if(d->moreExtension && d->moreExtension->isVisible()){
d->moreExtension->setVisible(false);
}
+ bool hideDelayed = d->delayedHide;
if (d->delayedHide && d->hasEffects) { // about to hide and we wanna delay hiding
- if (!d->hidingInProgress) { // Prevent reentrance
- d->hidingInProgress = true;
- d->startDisappearEffect();
+ // This check solves the situation where toolbar is hidden by its parent.
+ // Delayed hide changes explicit bit in qgraphicsitem which makes
+ // toolbar to stay hidden when parent becomes visible again.
+ // There is a small misbehaviour when parentItem is hidden and hide was explicitely
+ // called for toolbar. In this case toolbar hides without the effect.
+ if ((!parentItem() || (parentItem() && parentItem()->isVisible()))) {
+ if (!d->hidingInProgress) { // Prevent reentrance
+ d->hidingInProgress = true;
+ d->startDisappearEffect();
+ d->delayedHide = false;
+ }
+ } else {
+ d->delayedHide = false;
}
}
- if (d->delayedHide) {
+ if (hideDelayed) {
return true;
} else {
d->delayedHide = d->hasEffects;
d->hidingInProgress = false;
#ifdef HB_EFFECTS
- HbEffect::cancel(this, QString(), true);
+ HbEffect::cancel(this, QString(), true);
#endif
}
+ if (d->mVisibleToolButtons.count()){
+ d->emitVisibilityChangeSignal = true;
+ QMetaObject::invokeMethod(&d->core, "visibilityChanged", Qt::QueuedConnection);
+ }
}
break;
default:
@@ -332,22 +353,12 @@
*/
void HbToolBar::hideEvent(QHideEvent *event)
{
- Q_D(HbToolBar);
- if (d->mPressedDownButton && d->mPressedDownButton->isDown()) {
- d->mPressedDownButton->setDown(false);
- d->mPressedDownButton = 0;
- d->mPreviouslyPressedDownButton = d->mPressedDownButton;
- }
HbWidget::hideEvent(event);
}
-QRectF HbToolBar::boundingRect() const
-{
- QRectF orginalRect(HbWidget::boundingRect());
- orginalRect.setTop(orginalRect.top() + 1.0);
- return orginalRect;
-}
-
+/*!
+ \reimp
+ */
/*!
\reimp
*/
@@ -394,6 +405,9 @@
}
}
+/*!
+ \reimp
+ */
void HbToolBar::polish(HbStyleParameters ¶ms)
{
Q_D(HbToolBar);
--- a/src/hbcore/gui/hbtoolbar.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbtoolbar.h Wed Jun 23 18:33:25 2010 +0300
@@ -60,8 +60,6 @@
enum { Type = Hb::ItemType_ToolBar };
int type() const { return Type; }
- QRectF boundingRect() const;
-
public slots:
void setOrientation(Qt::Orientation orientation);
--- a/src/hbcore/gui/hbtoolbar_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbtoolbar_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
+#include "hbtoolbar_p.h"
#include "hbtoolbar.h"
-#include "hbtoolbar_p.h"
#include "hbaction.h"
#include "hbtoolbutton.h"
#include "hbtoolbutton_p.h"
@@ -94,7 +94,6 @@
void HbToolBarPrivate::init()
{
Q_Q(HbToolBar);
- q->setFlag(QGraphicsItem::ItemHasNoContents, true);
q->grabGesture(Qt::PanGesture);
}
@@ -238,7 +237,7 @@
}
}
-//This is called when toolbar recives resizeevent.
+//This is called when toolbar receives resize event.
//we check if a full layout is needed than call doLayout.
//if maxVisiblebuttons have changed than also we do a complete
//layout
@@ -253,9 +252,11 @@
calculateMaximumButtons();
if (currentMaxButtons == maxToolBarButtons)
return;
+
if (mVisibleToolButtons.count()<=maxToolBarButtons &&
(!moreExtensionButton ||
- (moreExtensionButton && !moreExtensionButton->action()->isVisible()))) {
+ (moreExtensionButton &&
+ !HbToolButtonPrivate::d_ptr(moreExtensionButton)->action->isVisible()))) {
return;
}
doLayout();
@@ -267,13 +268,16 @@
if (maxToolBarButtons == -1 || !minimumToolButtonSize.isValid() || !mLayout)
return true;
int totalButtons = mVisibleToolButtons.count()-1;
+
if (totalButtons>maxToolBarButtons -1 &&
(!moreExtensionButton ||
- (moreExtensionButton && !moreExtensionButton->action()->isVisible()))) {
+ (moreExtensionButton &&
+ !HbToolButtonPrivate::d_ptr(moreExtensionButton)->action->isVisible()))) {
return true;
}
if (totalButtons<=maxToolBarButtons &&
- (moreExtensionButton && moreExtensionButton->action()->isVisible())) {
+ (moreExtensionButton &&
+ HbToolButtonPrivate::d_ptr(moreExtensionButton)->action->isVisible())) {
return true;
}
return false;
@@ -312,7 +316,8 @@
setExtensionLayout(button, true);
if (!button->parentItem() || button->parentItem() != moreExtension->contentWidget()){
button->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred));
- QObject::connect(button->action(), SIGNAL(triggered(bool)),
+ QAction *action = HbToolButtonPrivate::d_ptr(button)->action;
+ QObject::connect(action, SIGNAL(triggered(bool)),
moreExtension, SLOT(close()));
button->setParentItem(moreExtension->contentWidget());
}
@@ -333,7 +338,8 @@
button->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Ignored));
if (movingFromExtension){
- QObject::disconnect(button->action(), SIGNAL(triggered(bool) ),
+ QAction *action = HbToolButtonPrivate::d_ptr(button)->action;
+ QObject::disconnect(action, SIGNAL(triggered(bool) ),
moreExtension, SLOT(close()));
HbToolButtonPrivate::d_ptr(button)->setExtensionBackgroundVisible(false);
polishButtons = true;
@@ -346,13 +352,14 @@
}
}
-//resets all visible buttons list.This is called when actionChange event is recieved
+//resets all visible buttons list.This is called when actionChange event is received
//by toolbar and from doLayout when mDoLayoutPending is true
void HbToolBarPrivate::resetVisibleButtonsList()
{
mVisibleToolButtons.clear();
foreach(HbToolButton *button, mToolButtons) {
- if (button->action()->isVisible()) {
+ QAction *action = HbToolButtonPrivate::d_ptr(button)->action;
+ if (action->isVisible()) {
mVisibleToolButtons.append(button);
button->setVisible(true);
} else {
@@ -363,7 +370,7 @@
//creates a new toolbutton and calls actionAdded if update is true.
//update can be true in cases where toolbar is polished and actionAdded
-//event is recieved by toolbar.
+//event is received by toolbar.
//we emit visibilitychanged signal here if this is the firstAction added in cases
//after toolbar is polished and visible.
void HbToolBarPrivate::createToolButton(QAction *newAction, bool update)
@@ -372,47 +379,55 @@
if(!newAction)
return;
- HbAction* action = qobject_cast<HbAction*>(newAction);
+ HbAction* hbAction = qobject_cast<HbAction*>(newAction);
+
+ // Find out index where to insert button
+ int index = q->actions().indexOf(newAction);
- if (action) {
- // Find out index where to insert button
- int index = q->actions().indexOf(newAction);
+ HbToolButton *button = new HbToolButton;
+ if (hbAction) {
// Lets give the action manager possibility to calculate position for the action
- if (action->commandRole() != HbAction::NoRole) {
+ if (hbAction->commandRole() != HbAction::NoRole) {
// Create action manager when needed
if (!actionManager) {
actionManager = new HbActionManager(HbView::ToolBar, q, q->mainWindow());
}
if (actionManager){
- index = actionManager->position(action, q->actions(), mVisibleToolButtons.count());
+ index = actionManager->position(hbAction, q->actions(), mVisibleToolButtons.count());
}
}
- HbToolButton *button = new HbToolButton(action);
- HbToolButtonPrivate::d_ptr(button)->mDialogToolBar = mDialogToolBar;
- setButtonLayoutDirection(*button);
- mToolButtons.insert(index, button);
- if (action->isVisible()){
- int visibleIndex = 0;
- for (int i = 0; i < index; i++) {
- if (mToolButtons.at(i)->action()->isVisible())
- visibleIndex++;
+ button->setAction(hbAction);
+ }
+ else {
+ // The new action's type is QAction.
+ HbToolButtonPrivate::d_ptr(button)->action = newAction;
+ QObject::connect(newAction, SIGNAL(triggered()), button, SLOT(_q_actionTriggered()));
+ QObject::connect(newAction, SIGNAL(changed()), button, SLOT(_q_actionChanged()));
+ }
+
+ HbToolButtonPrivate::d_ptr(button)->mDialogToolBar = mDialogToolBar;
+ setButtonLayoutDirection(*button);
+ mToolButtons.insert(index, button);
+ if (newAction->isVisible()){
+ int visibleIndex = 0;
+ for (int i = 0; i < index; i++) {
+ QAction *action = HbToolButtonPrivate::d_ptr(mToolButtons.at(i))->action;
+ if (action->isVisible())
+ visibleIndex++;
+ }
+ mVisibleToolButtons.insert(visibleIndex, button);
+ if (update){
+ if (emitVisibilityChangeSignal) {
+ delayedStartEffects = !mSuppressNextAppearEffect;
+ QMetaObject::invokeMethod(&core, "visibilityChanged");
+ emitVisibilityChangeSignal = false;
}
- mVisibleToolButtons.insert(visibleIndex, button);
- if (update){
- if (emitVisibilityChangeSignal) {
- delayedStartEffects = !mSuppressNextAppearEffect;
- QMetaObject::invokeMethod(&core, "visibilityChanged");
- emitVisibilityChangeSignal = false;
- }
- actionAdded(visibleIndex);
- }
+ actionAdded(visibleIndex);
}
}
- else {
- qWarning() << "Use HbAction instead of QAction!";
- }
+
}
//called from doLayout.We update the more button and extension as needed
@@ -422,7 +437,7 @@
if (moreExtension) {
HbToolBarExtensionPrivate::d_ptr(moreExtension)->mToolButtons.clear();
HbToolBarExtensionPrivate::d_ptr(moreExtension)->contentWidget->setLayout(0);
- moreExtensionButton->action()->setVisible(moreButtonNeeded);
+ HbToolButtonPrivate::d_ptr(moreExtensionButton)->action->setVisible(moreButtonNeeded);
moreExtensionButton->setVisible(moreButtonNeeded);
}
else if (moreButtonNeeded && !moreExtension) {
@@ -546,7 +561,8 @@
bool moreButtonNeeded = visibleItemsCount > maxToolBarButtons;
if (moreButtonNeeded ||
- (moreExtensionButton && moreExtensionButton->action()->isVisible() != moreButtonNeeded)) {
+ (moreExtensionButton &&
+ HbToolButtonPrivate::d_ptr(moreExtensionButton)->action->isVisible() != moreButtonNeeded)) {
updateExtension(moreButtonNeeded);
}
@@ -626,7 +642,7 @@
HbToolButton *button = 0;
for (int i = 0; i < mToolButtons.count(); i++) {
button = mToolButtons.at(i);
- if (button && button->action() == event->action()) {
+ if (button && HbToolButtonPrivate::d_ptr(button)->action == event->action()) {
mToolButtons.removeAt(i);
// Emit signal when the only action is removed
if (mToolButtons.count() == 0) {
@@ -671,11 +687,14 @@
Qt::Orientation buttonOrientation = q->orientation() == Qt::Vertical ?
Qt::Horizontal : Qt::Vertical;
HbToolButtonPrivate::d_ptr(button)->setOrientation( buttonOrientation );
- if (!button->action()->icon().isNull()) {
+ QAction *qAction = HbToolButtonPrivate::d_ptr(button)->action;
+ HbAction *hbAction = qobject_cast<HbAction *>(qAction);
+
+ if ((hbAction && !hbAction->icon().isNull()) || !qAction->icon().isNull()) {
if ((notInExtension) &&
q->orientation() == Qt::Vertical) {
button->setToolButtonStyle(HbToolButton::ToolButtonIcon);
- } else if (!button->action()->text().isEmpty()) {
+ } else if (!HbToolButtonPrivate::d_ptr(button)->action->text().isEmpty()) {
button->setToolButtonStyle(HbToolButton::ToolButtonTextAndIcon);
} else {
button->setToolButtonStyle(HbToolButton::ToolButtonIcon);
--- a/src/hbcore/gui/hbtoolbarextension.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbtoolbarextension.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -69,6 +69,11 @@
\fn int HbToolBarExtension::type() const
*/
+/*!
+ \primitives
+ \primitive{background} HbFrameItem representing the extension background.
+ */
+
HbToolBarExtensionPrivate::HbToolBarExtensionPrivate() :
HbDialogPrivate(),
mToolButtons(),
@@ -152,7 +157,7 @@
return;
foreach (HbToolButton* button, mToolButtons) {
- button->setVisible(button->action()->isVisible());
+ button->setVisible(HbToolButtonPrivate::d_ptr(button)->action->isVisible());
}
mLayout = new QGraphicsGridLayout();
@@ -160,7 +165,7 @@
mLayout->setSpacing(0.0); // if non zero spacing needed, add to css
for ( int i(0), j(0), ie(mToolButtons.count()); i < ie; ++i ) {
HbToolButton *button = mToolButtons.at(i);
- if ( button->action()->isVisible() ) {
+ if ( HbToolButtonPrivate::d_ptr(button)->action->isVisible() ) {
// Calculate the row and column indices
column = ( j % columns );
row = ( (j - column) / columns );
@@ -204,38 +209,43 @@
{
Q_Q(HbToolBarExtension);
- HbAction *action = qobject_cast<HbAction *>( event->action() );
-
- if (action) {
- HbToolButton *button = new HbToolButton(action, q->contentWidget());
+ HbToolButton *button = 0;
- if (!button->action()->icon().isNull()) {
- if (button->action()->text().isEmpty()) {
- button->setToolButtonStyle(HbToolButton::ToolButtonIcon);
- } else {
- button->setToolButtonStyle(HbToolButton::ToolButtonTextAndIcon);
- }
- } else {
- button->setToolButtonStyle(HbToolButton::ToolButtonText);
- }
+ HbAction *hbAction = qobject_cast<HbAction *>( event->action() );
- button->setProperty("toolbutton_extension_layout", true);
- button->setSizePolicy( QSizePolicy( QSizePolicy::Preferred,
- QSizePolicy::Preferred) );
-
- // Find out index where to insert button
- int index = q->actions().indexOf( event->action() );
+ if (hbAction) {
+ button = new HbToolButton(hbAction, q->contentWidget());
+ } else {
+ button = new HbToolButton(q->contentWidget());
+ HbToolButtonPrivate::d_ptr(button)->action = event->action();
+ QObject::connect(event->action(), SIGNAL(triggered()), button, SLOT(_q_actionTriggered()));
+ QObject::connect(event->action(), SIGNAL(changed()), button, SLOT(_q_actionChanged()));
+ }
- mToolButtons.insert( index, button );
-
- q->connect(button, SIGNAL(clicked()), q, SLOT(_q_animateButtonClicked()));
- q->connect(action, SIGNAL(triggered()), q, SLOT(close()));
-
- if (contentWidget){
- doLayout();
+ if ((hbAction && !hbAction->icon().isNull()) || !event->action()->icon().isNull()) {
+ if (HbToolButtonPrivate::d_ptr(button)->action->text().isEmpty()) {
+ button->setToolButtonStyle(HbToolButton::ToolButtonIcon);
+ } else {
+ button->setToolButtonStyle(HbToolButton::ToolButtonTextAndIcon);
}
} else {
- qWarning() << "Use HbAction instead of QAction!";
+ button->setToolButtonStyle(HbToolButton::ToolButtonText);
+ }
+
+ button->setProperty("toolbutton_extension_layout", true);
+ button->setSizePolicy( QSizePolicy( QSizePolicy::Preferred,
+ QSizePolicy::Preferred) );
+
+ // Find out index where to insert button
+ int index = q->actions().indexOf( event->action() );
+
+ mToolButtons.insert( index, button );
+
+ q->connect(button, SIGNAL(clicked()), q, SLOT(_q_animateButtonClicked()));
+ q->connect(event->action(), SIGNAL(triggered()), q, SLOT(close()));
+
+ if (contentWidget){
+ doLayout();
}
}
@@ -243,7 +253,7 @@
{
for ( int i(0); i < mToolButtons.count(); ++i ) {
HbToolButton *button = mToolButtons.at(i);
- if ( button->action() == event->action() ) {
+ if ( HbToolButtonPrivate::d_ptr(button)->action == event->action() ) {
mToolButtons.removeAt(i);
if (contentWidget) {
mLayout->removeAt(i);
@@ -304,7 +314,7 @@
Q_Q(HbToolBarExtension);
HbToolButton *button = static_cast<HbToolButton *>(q->sender());
if (button) {
- HbEffect::start(button, "TBEButtonClicked", "clicked");
+ HbEffect::start(button, "HB_TBE", "clicked");
}
#endif
}
@@ -444,6 +454,9 @@
return HbDialog::event(event);
}
+/*!
+ \reimp
+ */
void HbToolBarExtension::polish( HbStyleParameters ¶ms )
{
Q_D(HbToolBarExtension);
@@ -460,9 +473,7 @@
params.addParameter( ColsPortrait );
params.addParameter( ColsLandscape );
d->initialiseContent();
- if (d->mDefaultContentWidget) {
- QGraphicsWidget *tbeContentWidget = contentWidget();
- style()->setItemName( tbeContentWidget, "HbToolBarExtension" );
+ if (d->mDefaultContentWidget) {
HbDialog::polish(params);
if ( params.value( Margins ).isValid()
&& params.value( RowsPortrait ).isValid()
--- a/src/hbcore/gui/hbtoolbutton.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbtoolbutton.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -42,6 +42,7 @@
#include <QGraphicsSceneHelpEvent>
#include <QGraphicsSceneMouseEvent>
+#include <QCoreApplication>
/*!
@stable
@@ -120,6 +121,13 @@
\fn int HbToolButton::type() const
*/
+/*!
+ \primitives
+ \primitive{background} HbFrameItem representing the background frame of the button.
+ \primitive{icon} HbIconItem representing the icon of the button.
+ \primitive{text} HbTextItem representing button text.
+ */
+
HbToolButtonPrivate::HbToolButtonPrivate() :
action(0),
textItem(0),
@@ -246,13 +254,18 @@
void HbToolButtonPrivate::_q_actionTriggered()
{
Q_Q(HbToolButton);
- emit q->triggered(action);
+ // Only emit triggered signal for HbActions, not QActions.
+ // triggered(QAction*) requires an API change we don't want to do right now.
+ HbAction *hbAction = qobject_cast<HbAction *>(action);
+ if (hbAction)
+ emit q->triggered(hbAction);
}
void HbToolButtonPrivate::_q_actionChanged()
{
Q_Q(HbToolButton);
- if (!action->icon().isNull()) {
+ HbAction *hbAction = qobject_cast<HbAction *>(action);
+ if ((hbAction && !hbAction->icon().isNull()) || !action->icon().isNull()) {
if (orientation == Qt::Horizontal) {
buttonStyle = HbToolButton::ToolButtonIcon;
} else if (!action->text().isEmpty()) {
@@ -265,7 +278,8 @@
}
// action text/icon may have changed,
if (polished) {
- q->repolish();
+ q->repolish();
+ QCoreApplication::sendPostedEvents(q, QEvent::Polish);
}
}
@@ -314,7 +328,7 @@
HbAction *HbToolButton::action() const
{
Q_D(const HbToolButton);
- return d->action;
+ return qobject_cast<HbAction *>(d->action);
}
/*!
@@ -336,7 +350,7 @@
disconnect(d->action, SIGNAL(changed()), this, SLOT(_q_actionChanged()));
}
- HbAction *oldAction = d->action;
+ QAction *oldAction = d->action;
d->action = action;
if (d->action) {
connect(action, SIGNAL(triggered()), this, SLOT(_q_actionTriggered()));
@@ -480,14 +494,16 @@
}
if (d->iconItem) {
style()->updatePrimitive(d->iconItem, HbStyle::P_ToolButton_icon, &option);
- if (d->action && d->action->icon().flags() & HbIcon::Colorized) {
- static_cast<HbIconItem *>(d->iconItem)->setFlags(HbIcon::Colorized);
+ HbAction *hbAction = qobject_cast<HbAction *>(d->action);
+ if (hbAction) {
+ if (hbAction->icon().flags() & HbIcon::Colorized) {
+ static_cast<HbIconItem *>(d->iconItem)->setFlags(HbIcon::Colorized);
+ }
+ if (hbAction->icon().mirroringMode() != HbIcon::Default) {
+ HbIconItem *iconItem = static_cast<HbIconItem *>(d->iconItem);
+ iconItem->setMirroringMode( hbAction->icon().mirroringMode() );
+ }
}
- if (d->action && d->action->icon().mirroringMode() != HbIcon::Default) {
- HbIconItem *iconItem = static_cast<HbIconItem *>(d->iconItem);
- iconItem->setMirroringMode( d->action->icon().mirroringMode() );
- }
-
}
}
@@ -518,7 +534,12 @@
if (d->action) {
option->text = d->action->text();
- option->icon = d->action->icon();
+ HbAction *hbAction = qobject_cast<HbAction*>(d->action);
+ if (hbAction)
+ option->icon = hbAction->icon();
+ else
+ option->icon = d->action->icon();
+
option->isToolBarExtension = d->toolbarExtensionFrame;
}
}
@@ -541,8 +562,9 @@
if (event->newSize() != event->oldSize() && d->polished && isVisible()) {
updatePrimitives();
}
- if (action() && action()->toolBarExtension()) {
- HbToolBarExtensionPrivate::d_ptr(action()->toolBarExtension())->placeToolBarExtension();
+ HbAction *hbAction = qobject_cast<HbAction *>(d->action);
+ if ( hbAction && hbAction->toolBarExtension()) {
+ HbToolBarExtensionPrivate::d_ptr(hbAction->toolBarExtension())->placeToolBarExtension();
}
}
@@ -556,9 +578,10 @@
if (!d->action) {
return;
}
- if ( d->action->toolBarExtension() ) {
- HbToolBarExtensionPrivate::d_ptr(d->action->toolBarExtension())->mExtendedButton = this;
- d->action->toolBarExtension()->show();
+ HbAction *hbAction = qobject_cast<HbAction *>(d->action);
+ if ( hbAction && hbAction->toolBarExtension() ) {
+ HbToolBarExtensionPrivate::d_ptr(hbAction->toolBarExtension())->mExtendedButton = this;
+ hbAction->toolBarExtension()->show();
}
d->action->trigger();
--- a/src/hbcore/gui/hbtoolbutton_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbtoolbutton_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -45,7 +45,6 @@
class HbToolButton;
class HbStyle;
class HbTextItem;
-class HbAction;
class HbToolButtonPrivate : public HbAbstractButtonPrivate
{
@@ -63,7 +62,7 @@
void setLayoutProperty(const char *name, bool value);
QSizeF getMinimumSize();
- QPointer<HbAction> action;
+ QPointer<QAction> action;
HbTextItem *textItem; //Workaround should be QGraphicsItem
QGraphicsItem *iconItem;
--- a/src/hbcore/gui/hbtooltip.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbtooltip.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -138,7 +138,12 @@
void HbToolTip::hideText( HbGraphicsScene *scene )
{
if ( scene && scene->d_ptr->mToolTip) {
- scene->d_ptr->mToolTip->hide();
+ if (scene->d_ptr->mToolTip->isVisible()) {
+ scene->d_ptr->mToolTip->hide();
+ } else {
+ //reset tooltip timers
+ scene->d_ptr->mToolTip->hideTextImmediately();
+ }
}
}
--- a/src/hbcore/gui/hbtooltiplabel_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbtooltiplabel_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -78,7 +78,7 @@
#endif
}
-/*
+/*!
Checks if there is an item under scenePos that has tooltip. If it finds an item it sends an
QGraphicsSceneHelpEvent event to it. If the event is not handled by the item it uses default implementation
to display tooltip.
@@ -198,7 +198,7 @@
q->show();
}
-/*
+/*!
Returns true if item is a tooltip blocking item.
For example HbPopup background item is tooltip blocking for modal popups.
*/
@@ -212,7 +212,7 @@
return false;
}
-/*
+/*!
\class HbToolTipLabel
\brief HbToolTipLabel is a convenience widget that displays a small message box.
Compared to traditional popup, a tooltip does not dim the background.
@@ -230,11 +230,15 @@
{
}
-/*
+/*!
+ \primitives
+ \primitive{background} HbFrameItem representing the tooltip background frame.
+ */
+
+/*!
This method can be used to eventHook tool tip triggering and dismissal logic to a scene event
flow.
*/
-
void HbToolTipLabel::eventHook(QEvent *event)
{
Q_D(HbToolTipLabel);
@@ -268,12 +272,11 @@
}
-/*
+/*!
Returns the text of the tooltip.
\sa setText()
*/
-
QString HbToolTipLabel::text() const
{
Q_D(const HbToolTipLabel);
@@ -284,7 +287,7 @@
}
}
-/*
+/*!
Sets the text of the tooltip.
\sa text()
@@ -300,7 +303,7 @@
d->label->setText(newText);
}
-/*
+/*!
If you specify a non-empty rect the tip will be hidden as soon
as you move your cursor out of this area.
@@ -313,7 +316,7 @@
}
-/*
+/*!
Displays tooltip using preferredAlignment regarding item.
\sa hideText()
@@ -330,8 +333,8 @@
d->mItem = item;
}
-/*
- Hides tooltip
+/*!
+ Hides tooltip.
\sa hideText()
*/
@@ -352,8 +355,8 @@
close();
}
-/*
- Timer event to show tooltip or hide the tool tip immediately
+/*!
+ Timer event to show tooltip or hide the tool tip immediately.
*/
void HbToolTipLabel::timerEvent(QTimerEvent *event)
{
@@ -366,10 +369,9 @@
}
}
-/*
- reimp
+/*!
+ \reimp
*/
-#include <QDebug>
bool HbToolTipLabel::event(QEvent *event)
{
Q_D(HbToolTipLabel);
@@ -386,8 +388,8 @@
return HbPopup::event(event);
}
-/*
- reimp
+/*!
+ \reimp
*/
void HbToolTipLabel::polish(HbStyleParameters ¶ms)
{
--- a/src/hbcore/gui/hbview.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbview.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -265,6 +265,9 @@
*/
HbViewPrivate::~HbViewPrivate()
{
+ delete menu;
+ delete toolBar;
+ delete dockWidget;
}
/*!
@@ -292,16 +295,6 @@
*/
HbView::~HbView()
{
- Q_D(HbView);
- if (d->menu) {
- d->menu->deleteLater();
- }
- if (d->toolBar) {
- d->toolBar->deleteLater();
- }
- if (d->dockWidget) {
- d->dockWidget->deleteLater();
- }
}
/*!
--- a/src/hbcore/gui/hbview.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbview.h Wed Jun 23 18:33:25 2010 +0300
@@ -47,6 +47,7 @@
Q_PROPERTY(QString title READ title WRITE setTitle)
Q_PROPERTY(HbIcon icon READ icon WRITE setIcon)
Q_PROPERTY(bool contentFullScreen READ isContentFullScreen WRITE setContentFullScreen)
+ Q_PROPERTY(HbViewFlags viewFlags READ viewFlags WRITE setViewFlags)
public:
--- a/src/hbcore/gui/hbwidgetbase_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/gui/hbwidgetbase_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -28,7 +28,6 @@
#include <hbnamespace.h>
#include <hbwidgetbase.h>
-#include <hbcssinspector_p.h>
#include <QGraphicsItem>
//
@@ -42,6 +41,7 @@
// We mean it.
//
+class HbCssInspectorWindow;
class HB_CORE_PRIVATE_EXPORT HbWidgetBasePrivate
{
@@ -63,9 +63,10 @@
AC_TextAlign = 0x02,
AC_IconBrush = 0x04,
AC_IconAspectRatioMode = 0x08,
- AC_TextWrapMode = 0x10,
- AC_TextLinesMin = 0x20,
- AC_TextLinesMax = 0x40
+ AC_IconAlign = 0x10,
+ AC_TextWrapMode = 0x20,
+ AC_TextLinesMin = 0x40,
+ AC_TextLinesMax = 0x80
};
inline void setApiProtectionFlag(HbWidgetBasePrivate::ApiCssProtectionFlags att, bool value)
--- a/src/hbcore/hbcore.pro Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/hbcore.pro Wed Jun 23 18:33:25 2010 +0300
@@ -104,6 +104,9 @@
TRANSLATIONS += i18n/translations/directorylocalizer_en_GB.ts
TRANSLATIONS += i18n/translations/directorylocalizer_de_DE.ts
TRANSLATIONS += i18n/translations/languages.ts
+TRANSLATIONS += i18n/translations/collations.ts
+TRANSLATIONS += i18n/translations/regions.ts
+TRANSLATIONS += i18n/translations/languages_OLD.ts
symbian {
defFilePath = defs
@@ -160,6 +163,7 @@
}
# i18n's other files export
BLD_INF_RULES.prj_exports += "$$section(PWD, ":", 1)/i18n/translations/language_list.txt $${EPOCROOT}epoc32/winscw/c/resource/hbi18n/translations/language_list.txt"
+ BLD_INF_RULES.prj_exports += "$$section(PWD, ":", 1)/i18n/translations/locale_mappings.txt $${EPOCROOT}epoc32/winscw/c/resource/hbi18n/translations/locale_mappings.txt"
LIBS += -lapparc
LIBS += -lavkon
--- a/src/hbcore/i18n/hbdirectorynamelocalizer.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/i18n/hbdirectorynamelocalizer.h Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef DIRECTORYNAMELOCALIZER_H_
-#define DIRECTORYNAMELOCALIZER_H_
+#ifndef DIRECTORYNAMELOCALIZER_H
+#define DIRECTORYNAMELOCALIZER_H
#include <QMap>
#include <hbi18ndef.h>
@@ -44,4 +44,4 @@
HbDirectoryNameLocalizerPrivate* d;
};
-#endif /* DIRECTORYNAMELOCALIZER_H_ */
+#endif /* DIRECTORYNAMELOCALIZER_H */
--- a/src/hbcore/i18n/hbdirectorynamelocalizer_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/i18n/hbdirectorynamelocalizer_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef DIRECTORYNAMELOCALIZER_P_H_
-#define DIRECTORYNAMELOCALIZER_P_H_
+#ifndef DIRECTORYNAMELOCALIZER_P_H
+#define DIRECTORYNAMELOCALIZER_P_H
#include <QMap>
@@ -34,4 +34,4 @@
QMap<QString,QString> localizedNames;
};
-#endif /* DIRECTORYNAMELOCALIZER_H_ */
+#endif /* DIRECTORYNAMELOCALIZER_P_H */
--- a/src/hbcore/i18n/hbdntxmlreader.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/i18n/hbdntxmlreader.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -32,6 +32,9 @@
#define DirectoryLocalizerFile ":/i18n/hbdirectorylocalizer.xml"
#define DirectoryLocalizerTranslationsFile "/resource/hbi18n/translations/directorylocalizer_"
+/*!
+ Constructor of class.
+*/
HbDNTXmlReader::HbDNTXmlReader()
{
fullPaths = NULL;
@@ -81,6 +84,9 @@
}
+/*!
+ Destructor of class.
+*/
HbDNTXmlReader::~HbDNTXmlReader()
{
delete fullPaths;
@@ -89,59 +95,75 @@
delete trans;
}
+/*!
+ This function is needed by XML reader.
+
+ \return true
+*/
bool HbDNTXmlReader::startDocument()
{
return true;
}
+/*!
+ This function is needed by XML reader.
+
+ \param qName element which will be readed
+ \return true
+*/
bool HbDNTXmlReader::startElement( const QString & ,
const QString & ,
const QString & qName,
const QXmlAttributes & )
{
- if( qName == DirectoryLocalizerPathStringsStr ) {
- parsePathStrings = true; // set to parse Path
- parseDirectoryPaths = false;
- elements.clear();
- elementNumber = 0; // Set current path element number as undefined
- twoDone = false;
- } else if( qName == DirectoryLocalizerFullDirectoryPathsStr ) {
- parsePathStrings = false;
- parseDirectoryPaths = true; // set to parse localized path
- elements.clear();
- elementNumber = 0; // set current path element as undefined
- twoDone = false;
- } else if( qName == DirectoryLocalizerNameStr ) {
- elementNumber = 1; //
- validElement = true;
- twoDone = false;
- } else if( qName == DirectoryLocalizerPathStr ){
- elementNumber = 2;
- validElement = true;
- twoDone = false;
- } else if( qName == DirectoryLocalizerTranslationStr){
- elementNumber = 3;
- validElement = true;
- } else if( qName == DirectoryLocalizerRootPathStr ){
- elementNumber = 1;
- validElement = true;
- twoDone = false;
- } else if( qName == DirectoryLocalizerLocalizedPathStr ){
- elementNumber = 2;
- validElement = true;
- twoDone = false;
- } else if( qName == DirectoryLocalizerLocalizedNameStr ){
- elementNumber = 3;
- validElement = true;
- twoDone = false;
- } else
- {
+ if( qName == DirectoryLocalizerPathStringsStr ) {
+ parsePathStrings = true; // set to parse Path
+ parseDirectoryPaths = false;
+ elements.clear();
+ elementNumber = 0; // Set current path element number as undefined
+ twoDone = false;
+ } else if( qName == DirectoryLocalizerFullDirectoryPathsStr ) {
+ parsePathStrings = false;
+ parseDirectoryPaths = true; // set to parse localized path
+ elements.clear();
+ elementNumber = 0; // set current path element as undefined
+ twoDone = false;
+ } else if( qName == DirectoryLocalizerNameStr ) {
+ elementNumber = 1; //
+ validElement = true;
+ twoDone = false;
+ } else if( qName == DirectoryLocalizerPathStr ){
+ elementNumber = 2;
+ validElement = true;
+ twoDone = false;
+ } else if( qName == DirectoryLocalizerTranslationStr){
+ elementNumber = 3;
+ validElement = true;
+ } else if( qName == DirectoryLocalizerRootPathStr ){
+ elementNumber = 1;
+ validElement = true;
+ twoDone = false;
+ } else if( qName == DirectoryLocalizerLocalizedPathStr ){
+ elementNumber = 2;
+ validElement = true;
+ twoDone = false;
+ } else if( qName == DirectoryLocalizerLocalizedNameStr ){
+ elementNumber = 3;
+ validElement = true;
+ twoDone = false;
+ } else {
elementNumber++;
}
return true;
}
+/*!
+ This function is needed by XML reader.
+
+ \param text readed element
+ \return true
+*/
bool HbDNTXmlReader::characters(const QString& text)
{
QString t = text;
@@ -216,6 +238,12 @@
return true;
}
+/*!
+ This function is needed by XML reader.
+
+ \param qName element which was readed
+ \return true
+*/
bool HbDNTXmlReader::endElement( const QString &,
const QString &,
const QString & qName )
@@ -253,11 +281,19 @@
return true;
}
+/*!
+ This function is needed by XML reader.
+
+ \return true
+*/
bool HbDNTXmlReader::endDocument()
{
return true;
}
+/*!
+ \return pointer to list of full paths
+*/
QMap<QString,QString> HbDNTXmlReader::getFullPaths()
{
return *fullPaths;
--- a/src/hbcore/i18n/hbextendedlocale.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/i18n/hbextendedlocale.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -444,7 +444,7 @@
TLocalePos position = _symbianLocale.GetLocale()->AmPmSymbolPosition();
if ( position == ELocaleBefore ) {
return HbExtendedLocale::Before;
- } else { // if ( position == ELocaleAfter ) {
+ } else {
return HbExtendedLocale::After;
}
#else
@@ -1200,6 +1200,9 @@
};
#if defined(Q_OS_SYMBIAN)
+/*!
+ Mapping from Symbian to ISO locale
+*/
static const symbianToISO symbian_to_iso_list[] = {
{ ELangEnglish, "en_GB" },
{ ELangFrench, "fr_FR" },
--- a/src/hbcore/i18n/hbfindfile.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/i18n/hbfindfile.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -35,6 +35,21 @@
#include <qbasicatomic.h>
#include <QDir>
+#ifdef Q_OS_SYMBIAN
+/*!
+ Convert path to Symbian version
+*/
+static void toSymbianPath(QString &path) {
+ int len=path.length();
+ for (int i=0; i<len; i++) {
+ QCharRef ref=path[i];
+ if (ref == '/') {
+ ref= '\\';
+ }
+ }
+}
+#endif
+
/*!
@beta
@hbcore
@@ -54,7 +69,9 @@
#ifdef Q_OS_SYMBIAN
RFs& fs = CCoeEnv::Static()->FsSession();
TFindFile ff(fs);
- TPtrC fName((ushort*)(str.constData()),str.length());
+ QString str2 = str;
+ toSymbianPath(str2);
+ TPtrC fName((ushort*)(str2.constData()),str2.length());
QString dNameString;
if (!defaultDrive.isNull()) {
@@ -68,8 +85,8 @@
TParse p;
p.Set(ff.File(), 0,0);
TPtrC ptrC = p.Drive();
- QString str2 = QString::fromRawData((QChar*)(ushort*)ptrC.Ptr(),ptrC.Length());
- str.prepend(str2);
+ QString str3 = QString::fromRawData((QChar*)(ushort*)ptrC.Ptr(),ptrC.Length());
+ str.prepend(str3);
return true;
}
else {
@@ -103,12 +120,18 @@
}
+/*!
+ Helper class
+*/
class AvailableDrives : public QString
{
public:
AvailableDrives();
};
+/*!
+ Search available drives
+*/
AvailableDrives::AvailableDrives() {
#ifdef Q_OS_SYMBIAN
RFs& fs = CCoeEnv::Static()->FsSession();
@@ -124,7 +147,7 @@
QChar cC = static_cast<QChar>(driveLetter);
this->append(cC);
}
- for (driveNumber = EDriveY; driveNumber >= EDriveA; driveNumber--) {
+ for (driveNumber = EDriveY; driveNumber >= EDriveA; --driveNumber) {
if (driveNumber == EDriveC) {
continue;
}
--- a/src/hbcore/i18n/hblanguageutil.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/i18n/hblanguageutil.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -43,12 +43,12 @@
#endif // Q_OS_SYMBIAN
#include "hblanguageutil.h"
-#include "hbfeaturemanager_p.h"
+#include "hbfeaturemanager_r.h"
#if defined(Q_OS_SYMBIAN)
#define LANGUAGE_LIST_FILE "/resource/hbi18n/translations/language_list.txt"
#define LANGUAGE_ID_PREFIX "language_"
-#define TRANSLATOR_PATH "/resource/hbi18n/translations/languages"
+#define TRANSLATOR_PATH "/resource/hbi18n/translations/languages_OLD"
#endif // Q_OS_SYMBIAN
/*!
@@ -56,6 +56,9 @@
@hbcore
\class HbLanguageUtil
\brief HbLanguageUtil provides functions for quering supported languages and switching the system language.
+
+ \deprecated HbLanguageUtil class
+ is deprecated. Please use HbLocaleUtil class instead.
*/
#if defined(Q_OS_SYMBIAN)
@@ -113,34 +116,14 @@
{
TExtendedLocale dummy;
dummy.LoadSystemSettings();
-
- // Try to load new locale model dll
QString no;
- if ( language < 10 ) {
- no = QString( "00%1" ).arg(language);
- } else if ( language < 100 ) {
- no = QString( "0%1" ).arg(language);
- } else {
- no = QString( "%1" ).arg(language);
- }
-
- QString name = QString("elocl_lan.").append(no);
+ no = QString( "%1" ).arg( language, 2, 10, QLatin1Char( '0' ) );
+ QString name = QString( "elocl." ).append( no );
TPtrC nameptr(name.utf16());
- TInt err = dummy.LoadLocaleAspect(nameptr);
- if( err != KErrNone ) {
- // Loading new locale model dll fails
- // Try to load old locale model dll
- no = QString("%1").arg(language, 2, 10, QLatin1Char( '0' ));
- QString name2 = QString("elocl.").append(no);
- TPtrC nameptr2(name2.utf16());
-
- TInt err2 = dummy.LoadLocale(nameptr2);
- if ( err2 != KErrNone ) {
- return false;
- }
- }
-
+ TInt err = dummy.LoadLocale( nameptr );
+ if( err != KErrNone )
+ return false;
dummy.SaveSystemSettings();
// cause localeprivate update on next qlocale object( glp->m_language_id = 0 )
QSystemLocale dummy2;
@@ -158,6 +141,9 @@
\attention Symbian specific API
+ \deprecated HbLanguageUtil::supportedLanguages()
+ is deprecated. Please use HbLocaleUtil::supportedLanguages() instead.
+
\return Symbian - localized names and integer identifiers of languages supported in a device
\return other platforms - empty QHash
*/
@@ -215,6 +201,9 @@
\attention Symbian specific API
+ \deprecated HbLanguageUtil::allLanguages()
+ is deprecated.
+
\return Symbian - localized names and integer identifiers of known languages
\return other platforms - empty QHash
*/
@@ -261,7 +250,10 @@
\attention Symbian specific API
- \param identifier of language to set active
+ \deprecated HbLanguageUtil::changeLanguage( int language )
+ is deprecated. Please use HbLocaleUtil::changeLanguage( const QString &language ) instead.
+
+ \param language identifier of language to set active
\return true for Symbian if succesfull and false for other platforms
*/
bool HbLanguageUtil::changeLanguage( int language )
@@ -307,6 +299,9 @@
\attention Symbian specific API
+ \deprecated HbLanguageUtil::currentLanguage()
+ is deprecated. Please use HbLocaleUtil::currentLanguage() instead.
+
\return identifier of current system language for Symbian and '0' for other platforms
*/
int HbLanguageUtil::currentLanguage()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/i18n/hblocaleutil.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,821 @@
+/****************************************************************************
+**
+** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (developer.feedback@nokia.com)
+**
+** This file is part of the HbCore module of the UI Extensions for Mobile.
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at developer.feedback@nokia.com.
+**
+****************************************************************************/
+
+#include <QFile>
+#include <QLocale>
+#include <QTimer>
+#include <QHash>
+#include <QHashIterator>
+#include <QTextStream>
+#include <QTranslator>
+#include <QTextCodec>
+#include <QCoreApplication>
+#include <QStringList>
+
+#if defined(Q_OS_SYMBIAN)
+#include <e32lang.h>
+#include <e32property.h>
+#include <centralrepository.h>
+#include <hal.h>
+#include <syslangutil.h>
+#include <CommonEngineDomainCRKeys.h> //Ui language
+#endif // Q_OS_SYMBIAN
+
+#include <hbglobal.h>
+#include <hblocaleutil.h>
+
+#if defined(Q_OS_SYMBIAN)
+#define LANGUAGE_LIST_FILE "/resource/hbi18n/translations/language_list.txt"
+#define LANGUAGE_MAPPINGS_FILE "/resource/hbi18n/translations/locale_mappings.txt"
+#define LANGUAGE_ID_PREFIX "language"
+#define LANGUAGE_TRANSLATOR_PATH "/resource/hbi18n/translations/languages"
+
+#define REGION_LIST_FILE "z:/resource/bootdata/regions.txt"
+#define REGION_ID_PREFIX "region"
+#define REGION_TRANSLATOR_PATH "/resource/hbi18n/translations/regions"
+#define REGION_DLL_PREFIX "elocl_reg."
+
+#define COLLATION_LIST_FILE "z:/resource/bootdata/collations.txt"
+#define COLLATION_ID_PREFIX "collation"
+#define COLLATION_TRANSLATOR_PATH "/resource/hbi18n/translations/collations"
+#define COLLATION_DLL_PREFIX "elocl_col."
+#define COLLATION_DLL_PREFIX_POSITION 3
+#endif // Q_OS_SYMBIAN
+
+/*!
+ @beta
+ @hbcore
+ \class HbLocaleUtil
+ \brief HbLocaleUtil provides functions for quering supported languages, regions and collations and activing them.
+
+ Language and collation identifiers typically corresponds with two-letter ISO 639 language code, but for certain languages and collations combination of ISO 639 language code and ISO 3166 country code id used.
+ Region identifiers always corresponds with two-letter ISO 3166 country code.
+
+ HbLocaleUtil also provides functions for converting language, region and collation identifiers to their localised names.
+*/
+
+#if defined(Q_OS_SYMBIAN)
+
+struct HbLocaleMapping
+{
+ int symLangValue;
+ QString languageDllId;
+ QString collationDllId;
+ QString regionDllId;
+ QString langName;
+ QString regName;
+ QString collName;
+};
+
+QList<HbLocaleMapping> mappingList;
+QList<int> regions;
+QStringList availRegions;
+QHash<QString, QString> locRegionNames;
+QList<int> collations;
+QStringList availCollations;
+QHash<QString, QString> locCollationNames;
+
+/*!
+ \brief Reads langauge, region and collation mappings.
+*/
+void readMappings()
+{
+ QString path = "c:";
+ path += QString(LANGUAGE_MAPPINGS_FILE);
+ QFile* file = new QFile(path);
+ if (!file->exists() ) {
+ path = "z:";
+ path += QString(LANGUAGE_MAPPINGS_FILE);
+ delete file;
+ file = new QFile(path);
+ }
+ if (!file->open(QIODevice::ReadOnly | QIODevice::Text)) {
+ delete file;
+ return;
+ }
+ QTextStream in(file);
+ while (!in.atEnd()) {
+ QString line = in.readLine(256);
+ if (!line.isEmpty()) {
+ QStringList list = line.split(',', QString::SkipEmptyParts);
+ if (list.count() < 7) {
+ continue;
+ }
+ QString strCode = list[0];
+ QString strLang = list[1];
+ QString strRegion = list[2];
+ QString strCollation = list[3];
+ QString lanName = list[4]; //en_GB
+ QString region = list[5]; //en_GB
+ QString collation = list[6]; //en_GB
+
+ bool ok;
+ int code = strCode.toUInt(&ok);
+ if (!ok) {
+ continue;
+ }
+
+ HbLocaleMapping map;
+ map.symLangValue = code;
+ map.languageDllId = strLang;
+ map.collationDllId = strCollation;
+ map.regionDllId = strRegion;
+ map.langName = lanName;
+ map.regName = region;
+ map.collName = collation;
+ mappingList.append(map);
+ }
+ }
+ delete file;
+ return;
+}
+#endif // Q_OS_SYMBIAN
+
+#if defined(Q_OS_SYMBIAN)
+
+/*!
+ \brief Changes the system UI language.
+
+ \param dllExtension extension of the locale dll
+ \return true if operation was successful
+*/
+bool setLocale( const QString &dllExtension )
+{
+ TExtendedLocale dummy;
+ dummy.LoadSystemSettings();
+ QString name = QString( "elocl_lan." ).append( dllExtension );
+ TPtrC nameptr(name.utf16());
+
+ TInt err = dummy.LoadLocaleAspect( nameptr );
+ if( err != KErrNone )
+ return false;
+ dummy.SaveSystemSettings();
+ // cause localeprivate update on next qlocale object( glp->m_language_id = 0 )
+ QSystemLocale dummy2;
+ return true;
+}
+#endif //Q_OS_SYMBIAN
+
+/*!
+ \brief Return identifier of the current UI language.
+
+ \attention Symbian specific API
+
+ \return Identifier of the language code for Symbian and empty QString for other platforms.
+*/
+QString HbLocaleUtil::currentLanguage()
+{
+ #if defined(Q_OS_SYMBIAN)
+ TLanguage l = User::Language();
+
+ if(mappingList.isEmpty()) {
+ readMappings();
+ }
+
+ for (int i = 0; i < mappingList.count(); ++i) {
+ HbLocaleMapping mapping = mappingList.at(i);
+ if (mapping.symLangValue == l) {
+ return mapping.langName;
+ }
+ }
+ #endif
+ return QString("");
+}
+
+/*!
+ \brief Returns identifiers of languages supported in a device.
+ Language identifier may be two-letter ISO 639 language code or combination of ISO 639 language code and ISO 3166 country code
+ Ex: Great Britain english it returns "en".
+ Ex: For U.S. english it returns "en_US"
+
+ \attention Symbian specific API
+
+ \return identifiers of supported languages for Symbian and empty QStringList for other platforms
+*/
+QStringList HbLocaleUtil::supportedLanguages()
+{
+#if defined(Q_OS_SYMBIAN)
+
+ QStringList languages;
+ CArrayFixFlat<TInt>* systemEpocLanguageCodes = 0;
+ TInt error = SysLangUtil::GetInstalledLanguages( systemEpocLanguageCodes );
+ if ( error != KErrNone ) {
+ delete systemEpocLanguageCodes;
+ return languages;
+ }
+
+ if(mappingList.isEmpty()) {
+ readMappings();
+ }
+
+ for (int i = 0; i < systemEpocLanguageCodes->Count(); ++i) {
+ int code = systemEpocLanguageCodes->At(i);
+ for (int j = 0; j < mappingList.count(); ++j) {
+ HbLocaleMapping map = mappingList.at(j);
+ if (map.symLangValue == code) {
+ languages.append(map.langName);
+ break;
+ }
+ }
+ }
+
+ delete systemEpocLanguageCodes;
+ return languages;
+#else
+ QStringList dummy;
+ return dummy;
+#endif
+}
+
+/*!
+ \brief Converts two or five letter language identifier code to localised language name.
+
+ \attention Symbian specific API
+
+ \param language identifier
+
+ \return Symbian - localised name of the language, an empty String if translation fails
+ \return other platforms - empty QString
+*/
+QString HbLocaleUtil::localisedLanguageName( const QString &language )
+{
+#if defined(Q_OS_SYMBIAN)
+ QTranslator translator;
+ QString path = "c:";
+ path += QString(LANGUAGE_TRANSLATOR_PATH);
+ if (!translator.load(path)) {
+ path = "z:";
+ path += QString(LANGUAGE_TRANSLATOR_PATH);
+ if (!translator.load(path)) {
+ return QString("");
+ }
+ }
+
+ QCoreApplication::installTranslator(&translator);
+ QString languageName = QString(LANGUAGE_ID_PREFIX);
+ languageName += '_';
+ languageName += language;
+ QString translated = hbTrId(languageName.toAscii().constData());
+ if (translated == languageName) {
+ return QString("");
+ }
+ return translated;
+#else
+ Q_UNUSED(language);
+ return QString("");
+#endif
+}
+
+/*!
+ \brief Changes the system language.
+ The language parameter should correspond with one of the identifiers returned by supportedLanguages().
+
+ \attention Symbian specific API
+
+ \param language identifier of language to set active
+
+ \return true if language change was successful and false for other platforms
+*/
+bool HbLocaleUtil::changeLanguage( const QString &language )
+{
+#if defined(Q_OS_SYMBIAN)
+ if(mappingList.isEmpty()) {
+ readMappings();
+ }
+
+ int lanCode = -1;
+ QString dllExt = "";
+ for (int i = 0; i < mappingList.count(); ++i) {
+ HbLocaleMapping map = mappingList.at(i);
+ if (map.langName == language) {
+ lanCode = map.symLangValue;
+ dllExt = map.languageDllId;
+ break;
+ }
+ }
+
+ if (lanCode == -1) {
+ return false;
+ }
+
+ CRepository* commonEngineRepository = 0;
+ TRAPD( err1, commonEngineRepository = CRepository::NewL( KCRUidCommonEngineKeys ) );
+ if ( err1 != KErrNone ) {
+ return false;
+ }
+
+ if (!setLocale(dllExt)) {
+ delete commonEngineRepository;
+ return false;
+ }
+
+ // Never set Language code 0 to HAL
+ if ( language !=0 ) {
+ if ( HAL::Set( HAL::ELanguageIndex, lanCode ) != KErrNone ) {
+ delete commonEngineRepository;
+ return false;
+ }
+ }
+ if ( commonEngineRepository->Set( KGSDisplayTxtLang, lanCode ) != KErrNone ) {
+ delete commonEngineRepository;
+ return false;
+ }
+ delete commonEngineRepository;
+ return true;
+
+#else
+ Q_UNUSED(language);
+ return false;
+#endif
+}
+
+#if defined(Q_OS_SYMBIAN)
+/*!
+ \brief reads the regions.txt file and reads the list of symbian region codes
+*/
+void readRegions()
+{
+ QFile* file = new QFile(REGION_LIST_FILE);
+ if (!file->exists() )
+ {
+ delete file;
+ return;
+ }
+ if (!file->open(QIODevice::ReadOnly | QIODevice::Text))
+ {
+ delete file;
+ return;
+ }
+ QTextStream in(file);
+ while (!in.atEnd())
+ {
+ QString line = in.readLine(256);
+ if (!line.isEmpty())
+ {
+ int regCode = line.toUInt();
+ regions.append(regCode);
+ }
+ }
+ return;
+}
+#endif
+
+/*!
+ \brief Returns names supported regions in a phone.
+ Region names are identified by 2 letter code(ISO 3166 standard).
+ Ex: For United Kingdom it returns GB
+
+ \attention Symbian specific API
+
+ \return list of supported regions in a device for Symbian and empty QStringList for other platforms
+*/
+QStringList HbLocaleUtil::supportedRegions()
+{
+#if defined(Q_OS_SYMBIAN)
+ if(!availRegions.isEmpty())
+ {
+ return availRegions;
+ }
+
+ if(regions.isEmpty())
+ {
+ readRegions();
+ }
+
+ if(mappingList.isEmpty())
+ {
+ readMappings();
+ }
+ int regCount = regions.count();
+ for(int i = 0; i < regCount; i++)
+ {
+ int region = regions.at(i);
+ int count = mappingList.count();
+ for (int j = 0; j < count; j++)
+ {
+ HbLocaleMapping mapping = mappingList.at(j);
+ QString regCode = mapping.regionDllId;
+ if(region == regCode.toUInt())
+ {
+ availRegions.append(mapping.regName);
+ break;
+ }
+ }
+ }
+ return availRegions;
+#else
+ return QStringList();
+#endif
+}
+
+/*!
+ \brief Converts two letter region identifier to localised region name.
+
+ \attention Symbian specific API
+
+ \param region region identifier
+
+ \return Symbian - localised name of the region, an empty String if translation fails
+ \return other platforms - empty QString
+*/
+QString HbLocaleUtil::localisedRegionName( const QString ®ion )
+{
+#if defined(Q_OS_SYMBIAN)
+ if(locRegionNames.isEmpty())
+ {
+ QTranslator translator;
+ QString path = "c:";
+ path += QString(REGION_TRANSLATOR_PATH);
+ if (!translator.load(path)) {
+ path = "z:";
+ path += QString(REGION_TRANSLATOR_PATH);
+ if (!translator.load(path)) {
+ return QString("");
+ }
+ }
+
+ QCoreApplication::installTranslator(&translator);
+
+ if(availRegions.isEmpty())
+ {
+ readRegions();
+ }
+ int cnt = availRegions.count();
+ for(int i = 0 ; i < cnt; i++ )
+ {
+ QString reg = availRegions.at(i);
+ QString regionName = QString(REGION_ID_PREFIX);
+ regionName += '_';
+ regionName += reg;
+ QString locRegName = hbTrId(regionName.toAscii().constData());
+ if(locRegName != regionName)
+ locRegionNames.insert(reg, locRegName);
+ }
+ }
+
+ return locRegionNames.value(region);
+#else
+ Q_UNUSED(region);
+ return QString();
+#endif
+}
+
+/*!
+ \brief Changes the system region.
+ The region parameter should correspond with one of the identifiers returned by supportedRegions().
+
+ \attention Symbian specific API
+
+ \param region identifier of region to set active
+
+ \return true if region change was successful for Symbian and false for other platforms
+*/
+bool HbLocaleUtil::changeRegion( const QString ®ion )
+{
+#if defined(Q_OS_SYMBIAN)
+ TExtendedLocale dummy;
+ QString regDllName = QString( "elocl_reg." );
+
+ if(mappingList.isEmpty())
+ {
+ readMappings();
+ }
+ int count = mappingList.count();
+ for (int j = 0; j < count; j++)
+ {
+ HbLocaleMapping mapping = mappingList.at(j);
+ QString name = mapping.regName;
+ if(name == region)
+ {
+ dummy.LoadSystemSettings();
+ regDllName += mapping.regionDllId;
+ TPtrC nameptr(regDllName.utf16());
+ TInt err = dummy.LoadLocaleAspect( nameptr );
+ if( err != KErrNone )
+ return false;
+ dummy.SaveSystemSettings();
+ // cause localeprivate update on next qlocale object
+ QSystemLocale dummy2;
+ return true;
+ }
+ }
+ return false;
+#else
+ Q_UNUSED(region);
+ return false;
+#endif
+}
+
+/*!
+ \brief Return identifier of the current region.
+
+ \attention Symbian specific API
+
+ \return identifier of the region for Symbian and empty QString for other platforms
+*/
+QString HbLocaleUtil::currentRegion()
+{
+#if defined(Q_OS_SYMBIAN)
+ if(mappingList.isEmpty())
+ {
+ readMappings();
+ }
+ TRegionCode reg = User::RegionCode();
+ int cnt = mappingList.count();
+ for(int i = 0; i < cnt; i++)
+ {
+ HbLocaleMapping mapping = mappingList.at(i);
+ int dllid = mapping.regionDllId.toInt();
+ if(dllid == reg)
+ {
+ return mapping.regName;
+ }
+ }
+ return QString();
+#else
+ return QString();
+#endif
+}
+
+#if defined(Q_OS_SYMBIAN)
+/*!
+ \brief reads the collations.txt file and reads the list of symbian collation codes
+*/
+void readCollations()
+{
+ QFile* file = new QFile(COLLATION_LIST_FILE);
+ if (!file->exists() )
+ {
+ delete file;
+ return ;
+ }
+ if (!file->open(QIODevice::ReadOnly | QIODevice::Text))
+ {
+ delete file;
+ return ;
+ }
+ QTextStream in(file);
+ while (!in.atEnd())
+ {
+ QString line = in.readLine(256);
+ if (!line.isEmpty())
+ {
+ int colCode = line.toUInt();
+ collations.append(colCode);
+ }
+ }
+ return ;
+}
+#endif
+
+/*!
+ \brief Returns identifiers of collations supported in a device.
+ Collation identifier may be two-letter ISO 639 language code or combination of ISO 639 language code and ISO 3166 country code
+ Ex: Great Britain english it returns "en".
+ Ex: For U.S. english it returns "en_US"
+
+ \attention Symbian specific API
+
+ \return identifiers of supported collations for Symbian and empty QStringList for other platforms
+*/
+QStringList HbLocaleUtil::supportedCollations()
+{
+#if defined(Q_OS_SYMBIAN)
+ if(!availCollations.isEmpty())
+ {
+ return availCollations;
+ }
+
+ if(collations.isEmpty())
+ {
+ readCollations();
+ }
+
+ if(mappingList.isEmpty())
+ {
+ readMappings();
+ }
+ int colCount = collations.count();
+ for(int i = 0; i < colCount; i++)
+ {
+ int collation = collations.at(i);
+ int count = mappingList.count();
+ for (int j = 0; j < count; j++)
+ {
+ HbLocaleMapping mapping = mappingList.at(j);
+ QString colCode = mapping.collationDllId;
+ if(collation == colCode.toUInt())
+ {
+ availCollations.append(mapping.collName);
+ break;
+ }
+ }
+ }
+ return availCollations;
+#else
+ return QStringList();
+#endif
+}
+
+/*!
+ \brief Converts collation identifier to localised collation name.
+
+ \attention Symbian specific API
+
+ \param collation region collation identifier
+
+ \return Symbian - localised name of the collation, an empty String if translation fails
+ \return other platforms - empty QString
+*/
+QString HbLocaleUtil::localisedCollationName( const QString &collation )
+{
+#if defined(Q_OS_SYMBIAN)
+ if(locCollationNames.isEmpty())
+ {
+ QTranslator translator;
+ QString path = "c:";
+ path += QString(COLLATION_TRANSLATOR_PATH);
+ if (!translator.load(path)) {
+ path = "z:";
+ path += QString(COLLATION_TRANSLATOR_PATH);
+ if (!translator.load(path)) {
+ return QString("");
+ }
+ }
+
+ QCoreApplication::installTranslator(&translator);
+
+ if(availCollations.isEmpty())
+ {
+ readCollations();
+ }
+ int cnt = availCollations.count();
+ for(int i = 0 ; i < cnt; i++ )
+ {
+ QString col = availCollations.at(i);
+ QString collationName = QString(COLLATION_ID_PREFIX);
+ collationName += '_';
+ collationName += col;
+ QString locColName = hbTrId(collationName.toAscii().constData());
+ if(locColName != collationName)
+ locCollationNames.insert(col, locColName);
+ }
+ }
+
+ return locCollationNames.value(collation);
+#else
+ Q_UNUSED(collation);
+ return QString();
+#endif
+}
+
+/*!
+ \brief Changes the system collation.
+ The collation parameter should correspond with one of the identifiers returned by supportedCollations().
+
+ \attention Symbian specific API
+
+ \param collation identifier of collation to set active
+ \return true if collation change was successful for Symbian and false for other platforms
+*/
+bool HbLocaleUtil::changeCollation( const QString &collation )
+{
+#if defined(Q_OS_SYMBIAN)
+ TExtendedLocale dummy;
+ QString colDllName = QString( "elocl_col." );
+
+ if(mappingList.isEmpty())
+ {
+ readMappings();
+ }
+ int count = mappingList.count();
+ for (int j = 0; j < count; j++)
+ {
+ HbLocaleMapping mapping = mappingList.at(j);
+ QString name = mapping.collName;
+ if(name == collation)
+ {
+ dummy.LoadSystemSettings();
+ colDllName += mapping.collationDllId;
+ TPtrC nameptr(colDllName.utf16());
+ TInt err = dummy.LoadLocaleAspect( nameptr );
+ if( err != KErrNone )
+ return false;
+ dummy.SaveSystemSettings();
+ // cause localeprivate update on next qlocale object
+ QSystemLocale dummy2;
+ return true;
+ }
+ }
+ return false;
+#else
+ Q_UNUSED(collation);
+ return false;
+#endif
+}
+
+/*!
+ \brief Return identifier of the current collation.
+
+ \attention Symbian specific API
+
+ \return identifier of the collation for Symbian and empty QString for other platforms
+*/
+QString HbLocaleUtil::currentCollation()
+{
+#if defined(Q_OS_SYMBIAN)
+ if(mappingList.isEmpty())
+ {
+ readMappings();
+ }
+ TExtendedLocale dummy;
+ dummy.LoadSystemSettings();
+ TBuf<256> name;
+ dummy.GetLocaleDllName(ELocaleCollateSetting,name);
+
+ QString dllname;
+#ifdef QT_NO_UNICODE
+ dllname = QString::fromLocal8Bit(name.Ptr(), name.Length());
+#else
+ dllname = QString::fromUtf16(name.Ptr(), name.Length());
+#endif
+
+ dllname = dllname.right(COLLATION_DLL_PREFIX_POSITION);
+ int cnt = mappingList.count();
+ for(int i = 0; i < cnt; i++)
+ {
+ HbLocaleMapping mapping = mappingList.at(i);
+ QString dllid = mapping.collationDllId;
+ if(dllid == dllname)
+ {
+ return mapping.collName;
+ }
+ }
+ return QString();
+#else
+ return QString();
+#endif
+}
+
+/*!
+ \brief Changes the system language, region and collation.
+ The language parameter should correspond with one of the identifiers returned by supportedLanguages().
+ Proper region and collation is selected automatically according the language.
+
+ \attention Symbian specific API
+
+ \param language identifier of language which language, region and collation settings should set active
+
+ \return Symbian - true if language, region and collation change was successful
+ \return other platforms - false
+*/
+bool HbLocaleUtil::changeLocale( const QString &language )
+{
+#if defined(Q_OS_SYMBIAN)
+ if(mappingList.isEmpty()) {
+ readMappings();
+ }
+
+ for (int i = 0; i < mappingList.count(); ++i) {
+ HbLocaleMapping map = mappingList.at(i);
+ if (map.langName == language) {
+ if (!changeLanguage(map.langName)) {
+ return false;
+ }
+ if (!changeRegion(map.regName)) {
+ return false;
+ }
+ if (!changeCollation(map.collName)) {
+ return false;
+ }
+ return true;
+ }
+ }
+#else
+ Q_UNUSED(language);
+#endif // Q_OS_SYMBIAN
+ return false;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/i18n/hblocaleutil.h Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (developer.feedback@nokia.com)
+**
+** This file is part of the HbCore module of the UI Extensions for Mobile.
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at developer.feedback@nokia.com.
+**
+****************************************************************************/
+
+#ifndef HBLOCALEUTIL_H
+#define HBLOCALEUTIL_H
+
+#include <QHash>
+#include <hbglobal.h>
+
+class HB_CORE_EXPORT HbLocaleUtil
+{
+public:
+ static QString currentLanguage();
+ static QStringList supportedLanguages();
+ static QString localisedLanguageName( const QString &language );
+ static bool changeLanguage( const QString &language );
+
+ static QString currentRegion();
+ static QStringList supportedRegions();
+ static QString localisedRegionName( const QString ®ion );
+ static bool changeRegion( const QString ®ion );
+
+ static QString currentCollation();
+ static QStringList supportedCollations();
+ static QString localisedCollationName( const QString &collation );
+ static bool changeCollation( const QString &collation );
+
+ static bool changeLocale( const QString &language );
+};
+
+#endif /* HBLOCALEUTIL_H */
--- a/src/hbcore/i18n/hbngnormalnumber.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/i18n/hbngnormalnumber.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -30,6 +30,13 @@
QHash<QLocale::Country, HbNgNormalNumber::CountryData> countryList;
}
+/*!
+ Function for general grouping.
+
+ \param number QString which contains numbers
+ \param country locale for grouping
+ \return grouped numbers
+*/
QString HbNgNormalNumber::normalNumberGrouping( const QString &number,
const QLocale::Country &country )
{
@@ -58,6 +65,16 @@
return HbNgNormalNumber::formatingGroup(number, firstNumber, lastNumber, dot, sign, decimal, group, patternBlockSizes);
}
+/*!
+ Verifies that number string is valid.
+
+ \param number QString which contains numbers
+ \param firstNumber index of first number
+ \param lastNumber index of last number
+ \param dot index of dot
+ \param sign boolean which tells is there sign used
+ \return true if valid
+*/
bool HbNgNormalNumber::checkingNumber( const QString &number,
int &firstNumber,
int &lastNumber,
@@ -153,6 +170,15 @@
return true;
}
+/*!
+ Reads locale data from XML if needed.
+
+ \param country locale for grouping
+ \param decimal character(s) for decimal
+ \param group character(s) for group separator
+ \param patternBlockSizes list of blocks
+ \return true if successful
+*/
bool HbNgNormalNumber::checkingXML( const QLocale::Country &country,
QString &decimal,
QString &group,
@@ -171,7 +197,7 @@
decimal = numberGrpReader.getDecimal();
group = numberGrpReader.getGroup();
- if ( (pattern == "") || (decimal == "") ) {
+ if ( (pattern.isEmpty()) || (decimal.isEmpty()) ) {
// XML doesn't contain all needed information or reading has failed
return false;
}
@@ -192,7 +218,7 @@
NgNormalNumber::countryList.insert(country, tempCountryData);
} else {
// Data found
- HbNgNormalNumber::CountryData tempCountryData2 = iter.value();
+ HbNgNormalNumber::CountryData tempCountryData2 = iter.value();
pattern = tempCountryData2.pattern;
decimal = tempCountryData2.decimal;
group = tempCountryData2.group;
@@ -202,6 +228,12 @@
return true;
}
+/*!
+ Verifies that pattern for gouping is valid.
+
+ \param pattern rules for grouping
+ \return size of (number) block
+*/
QList<int> HbNgNormalNumber::checkingPattern( const QString &pattern )
{
int index = 0;
@@ -242,6 +274,19 @@
return blockSizes;
}
+/*!
+ Grouping numbers
+
+ \param number QString which contains numbers
+ \param firstNumber index of first number
+ \param lastNumber index of last number
+ \param dot index of dot
+ \param sign boolean which tells is there sign used
+ \param decimal character(s) for decimal
+ \param group character(s) for group separator
+ \param patternBlockSizes list of blocks
+ \return grouped numbers
+*/
QString HbNgNormalNumber::formatingGroup( const QString &number,
const int &firstNumber,
const int &lastNumber,
@@ -278,7 +323,7 @@
numberOfBlocks = patternBlockSizes.length();
patternBlockSize = patternBlockSizes.last();
- for ( index = tempDot-1; index > firstNumber-1; index-- ) {
+ for ( index = tempDot-1; index > firstNumber-1; --index ) {
if ( blockCounter < patternBlockSize ) {
// Inserting number...
formated.insert(0, number.at(index));
--- a/src/hbcore/i18n/hbnumbergrpxmlreader.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/i18n/hbnumbergrpxmlreader.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -29,6 +29,11 @@
using namespace HbNumberGrpXmlReaderHelp;
+/*!
+ Constructor of class
+
+ \param localeId identifier for locale
+*/
HbNumberGrpXmlReader::HbNumberGrpXmlReader( int localeId )
{
locale.setNum(localeId);
@@ -50,35 +55,54 @@
}
}
+/*!
+ \return pattern for grouping
+*/
QString HbNumberGrpXmlReader::getPattern()
{
return pattern;
}
+/*!
+ \return character(s) for group
+*/
QString HbNumberGrpXmlReader::getGroup()
{
return group;
}
+/*!
+ \return character(s) for decimal
+*/
QString HbNumberGrpXmlReader::getDecimal()
{
return decimal;
}
-HbNumberGrpXmlReader::HbNumberGrpXmlReader()
-{
-}
-
+/*!
+ Destructor of class.
+*/
HbNumberGrpXmlReader::~HbNumberGrpXmlReader()
{
}
+/*!
+ This function is needed by XML reader.
+
+ \return true
+*/
bool HbNumberGrpXmlReader::startDocument()
{
return true;
}
+/*!
+ This function is needed by XML reader.
+
+ \param qName element which will be readed
+ \return true
+*/
bool HbNumberGrpXmlReader::startElement( const QString &,
const QString &,
const QString &qName,
@@ -102,6 +126,12 @@
return true;
}
+/*!
+ This function is needed by XML reader.
+
+ \param text readed element
+ \return true
+*/
bool HbNumberGrpXmlReader::characters( const QString &text )
{
if ( done ) {
@@ -113,7 +143,7 @@
// This little trick is needed because of limitation in XML reader
// XML reader doesn't read space character corretly
if ( text.at(0).toAscii() == 32 ) { // " "
- tmpText = " ";
+ tmpText = ' ';
} else {
tmpText = text;
}
@@ -132,6 +162,12 @@
return true;
}
+/*!
+ This function is needed by XML reader.
+
+ \param qName element which was readed
+ \return true
+*/
bool HbNumberGrpXmlReader::endElement( const QString &,
const QString &,
const QString &qName )
@@ -143,6 +179,11 @@
return true;
}
+/*!
+ This function is needed by XML reader.
+
+ \return true
+*/
bool HbNumberGrpXmlReader::endDocument()
{
return true;
--- a/src/hbcore/i18n/hbnumbergrpxmlreader_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/i18n/hbnumbergrpxmlreader_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef NUMBERGRPXMLREADER_H_
-#define NUMBERGRPXMLREADER_H_
+#ifndef NUMBERGRPXMLREADER_P_H
+#define NUMBERGRPXMLREADER_P_H
#include <QMap>
#include <QString>
@@ -57,8 +57,6 @@
QString getPattern();
QString getGroup();
QString getDecimal();
-private:
- HbNumberGrpXmlReader();
private:
QString locale;
@@ -71,4 +69,4 @@
};
-#endif // NUMBERGRPXMLREADER_H_
+#endif // NUMBERGRPXMLREADER_P_H
--- a/src/hbcore/i18n/hbparameterlengthlimiter.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/i18n/hbparameterlengthlimiter.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -44,7 +44,7 @@
limited argument is the second argument to be inserted.
- %Lx for inserting numbers, x is used to indicate argument inserting order.
- Example of how to use HbParameterLengthLimiter
+ Example of how to use HbParameterLengthLimiter:
\snippet{unittest_HbParameterLengthLimiter/unittest_HbParameterLengthLimiter.cpp,1}
*/
@@ -209,7 +209,7 @@
\attention Cross-Platform API
\param a number that will be inserted to the QString
- \param fieldwidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
+ \param fieldWidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
\param base defines the number base
\param fillChar defines the fill character
*/
@@ -230,7 +230,7 @@
\attention Cross-Platform API
\param a number that will be inserted to the QString
- \param fieldwidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
+ \param fieldWidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
\param base defines the number base
\param fillChar defines the fill character
*/
@@ -250,7 +250,7 @@
\attention Cross-Platform API
\param a number that will be inserted to the QString
- \param fieldwidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
+ \param fieldWidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
\param base defines the number base
\param fillChar defines the fill character
*/
@@ -270,7 +270,7 @@
\attention Cross-Platform API
\param a number that will be inserted to the QString
- \param fieldwidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
+ \param fieldWidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
\param base defines the number base
\param fillChar defines the fill character
*/
@@ -290,7 +290,7 @@
\attention Cross-Platform API
\param a argument a is formatted according to the specified format and precision
- \param fieldwidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
+ \param fieldWidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
\param fmt defines the format to be used
\param prec defines the precision to be used
\param fillChar defines the fill character
@@ -312,7 +312,7 @@
\attention Cross-Platform API
\param a character that will be inserted to the QString
- \param fieldwidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
+ \param fieldWidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
\param fillChar defines the fill character
*/
HbParameterLengthLimiter& HbParameterLengthLimiter::arg( char a,
@@ -330,7 +330,7 @@
\attention Cross-Platform API
\param a character that will be inserted to the QString
- \param fieldwidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
+ \param fieldWidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
\param fillChar defines the fill character
*/
HbParameterLengthLimiter& HbParameterLengthLimiter::arg( QChar a,
@@ -348,7 +348,7 @@
\attention Cross-Platform API
\param a string that will be inserted to the QString
- \param fieldwidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
+ \param fieldWidth specifies the minimum amount of space that a is padded to and filled with the character fillChar
\param fillChar defines the fill character
*/
HbParameterLengthLimiter& HbParameterLengthLimiter::arg( const QString &a,
@@ -386,6 +386,9 @@
while( p->str.at(i) != ']' ) {
i++;
+ if( i >= p->str.length() ) {
+ break;
+ }
}
i++;
--- a/src/hbcore/i18n/hbstringutil.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/i18n/hbstringutil.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -98,7 +98,7 @@
\return If a match is found the offset within source string's
data where the match first occurs. -1 if match is not found.
- Example
+ Example:
\snippet{unittest_hbstringutil/unittest_hbstringutil.cpp,3}
*/
int HbStringUtil::matchC( const QString &strFrom, const QString &strToMatch,
@@ -156,7 +156,7 @@
\return Positive if source string is greater, negative if it is less and
zero if the content of both strings match.
- Example
+ Example:
\snippet{unittest_hbstringutil/unittest_hbstringutil.cpp,1}
*/
int HbStringUtil::compareC( const QString &string1, const QString &string2,
@@ -185,7 +185,7 @@
}
/*!
- Searches for the first occurence of the specified collated
+ Searches for the first occurrence of the specified collated
data sequence in the aStrFrom to the specified maximum
collation level.
@@ -202,7 +202,7 @@
\return Offset of the data sequence from the beginning of the
aStrFrom. -1 if the data sequence cannot be found.
- Example
+ Example:
\snippet{unittest_hbstringutil/unittest_hbstringutil.cpp,5}
*/
int HbStringUtil::findC( const QString &strFrom,
@@ -237,7 +237,7 @@
\return If a match is found the offset within source string's
data where the match first occurs. -1 if match is not found.
- Example
+ Example:
\snippet{unittest_hbstringutil/unittest_hbstringutil.cpp,4}
*/
int HbStringUtil::matchF( const QString &strFrom,
@@ -261,7 +261,7 @@
}
/*!
- Searches for the first occurence of the specified folded
+ Searches for the first occurrence of the specified folded
data sequence in the strFrom.
\attention Cross-Platform API
@@ -273,7 +273,7 @@
strFrom. -1 if the data sequence cannot be found. Zero,
if the length of search data sequence is zero.
- Example
+ Example:
\snippet{unittest_hbstringutil/unittest_hbstringutil.cpp,6}
*/
int HbStringUtil::findF( const QString &strFrom,
@@ -301,7 +301,7 @@
\return Positive if source string is greater, negative if it is less and
zero if the content of both strings match.
- Example
+ Example:
\snippet{unittest_hbstringutil/unittest_hbstringutil.cpp,2}
*/
int HbStringUtil::compareF( const QString &string1,
@@ -347,11 +347,7 @@
DigitType digitType = WesternDigit;
if (locale.language() == HbExtendedLocale::Arabic) {
digitType = ArabicIndicDigit;
- }
- if (locale.language() == HbExtendedLocale::Persian) {
- digitType = EasternArabicIndicDigit;
- }
- if (locale.language() == HbExtendedLocale::Urdu) {
+ } else if (locale.language() == HbExtendedLocale::Persian || locale.language() == HbExtendedLocale::Urdu) {
digitType = EasternArabicIndicDigit;
}
QString converted = HbStringUtil::convertDigitsTo(str, digitType);
@@ -400,7 +396,7 @@
\param strList List of QStrings which need to be sorted.
- Example
+ Example:
\snippet{unittest_hbstringutil/unittest_hbstringutil.cpp,7}
*/
void HbStringUtil::sort( QStringList &strList )
--- a/src/hbcore/i18n/hbtranslator.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/i18n/hbtranslator.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -50,6 +50,9 @@
#endif
#ifdef Q_OS_SYMBIAN
+/*!
+ Convert path to Symbian version
+*/
static void toSymbianPath(QString &path) {
int len=path.length();
for (int i=0; i<len; i++) {
@@ -61,15 +64,17 @@
}
#endif
-static uchar* loadTranslatorData(QTranslator &translator, QString &qmFile,bool doFallback=true) {
-#ifndef Q_OS_SYMBIAN
- translator.load(qmFile);
+/*!
+ Load data from translator
+*/
+bool loadTranslatorData(QTranslator &translator, QString &qmFile, uchar* &buffer, bool doFallback=true) {
+#ifndef Q_OS_SYMBIAN
Q_UNUSED(doFallback);
- return 0;
+ buffer = 0;
+ return translator.load(qmFile);
#else
RFile fl;
RFs& fs = CCoeEnv::Static()->FsSession();
- // TPtrC ptrFName;
QString qmFile2;
QString delims="_.";
TInt err;
@@ -81,13 +86,13 @@
err= fl.Open(fs, ptrFName, EFileShareReadersOrWriters | EFileRead | EFileStream );
if (err == KErrNotFound) {
if (!doFallback) { // no fallback, then return
- return 0;
+ return false;
}
// else continue
}
else {
if (err != KErrNone ) { // if some other error return error, don't look anymore
- return 0;
+ return false;
}
else {
break; // file was found
@@ -102,7 +107,7 @@
}
else {
if (err != KErrNotFound) {
- return 0;
+ return false;
}
}
// check fallback names
@@ -116,7 +121,7 @@
// no truncations? fail
if (rightmost==0) {
- return 0;
+ return false;
}
qmFile.truncate(rightmost);
}
@@ -125,21 +130,23 @@
err = fl.Size(sz);
if (err != KErrNone) {
fl.Close();
- return 0;
+ return false;
}
uchar *buf = new uchar[sz];
TPtr8 bufPtr(buf,0,sz);
err = fl.Read(bufPtr, sz);
if (err != KErrNone) {
fl.Close();
- return 0;
+ return false;
}
fl.Close();
if (!translator.load(bufPtr.Ptr(),sz)) {
delete buf;
- return 0;
+ return false;
}
- return buf;
+ buffer = buf;
+ return true;
+
#endif
}
@@ -152,7 +159,7 @@
*/
/*!
- Default case: searches translation file from default location (/resource/qt/translations/) with default name, which is <executablename>.qm
+ Default case: searches translation file from default location (/resource/qt/translations/) with default name, which is EXECUTABLENAME.qm
\attention Cross-Platform API
*/
@@ -202,16 +209,30 @@
QString lang = QLocale::system().name();
QString commonts = QString(defaultDrive) + QString(defaultPath) + QString(defaultCommon) + lang;
bool loaded;
- loaded = (d->commonData=loadTranslatorData(d->common, commonts));
+ loaded = loadTranslatorData(d->common, commonts, d->commonData);
if (loaded) {
qApp->installTranslator(&d->common);
}
}
-// internal function for common operations of HbTranslator
+/*!
+ Internal function for common operations of HbTranslator.
+
+ \param pth path for translation file
+ \param name translation file
+*/
void HbTranslatorPrivate::installTranslator(const QString &pth, const QString &name)
{
+ QString lang = QLocale::system().name();
+ QString lang2 = lang;
+ languageDowngrade(lang);
QString path(pth);
+ if (path.at(0) == ':') {
+ QString tsfile = path + name + QString("_") + lang;
+ translator.load(tsfile);
+ qApp->installTranslator(&translator);
+ return;
+ }
#ifdef Q_OS_SYMBIAN
toSymbianPath(path);
#endif
@@ -221,23 +242,20 @@
drive = filepath.at(0);
}
- QString lang = QLocale::system().name();
- QString lang2 = lang;
- languageDowngrade(lang);
QString tsfile = path + name + QString("_") + lang;
QString tsfileQM = tsfile + QString(".qm");
bool loaded = false;
if (HbFindFile::hbFindFile(tsfileQM, drive)) {
tsfileQM.chop(3);
- loaded = (translatorData=loadTranslatorData(translator,tsfileQM));
+ loaded = loadTranslatorData(translator,tsfileQM,translatorData);
}
else {
tsfile = path + name + QString("_") + lang2;
tsfileQM = tsfile + QString(".qm");
if (HbFindFile::hbFindFile(tsfileQM, drive)) {
tsfileQM.chop(3);
- loaded = (translatorData=loadTranslatorData(translator,tsfileQM));
+ loaded = loadTranslatorData(translator,tsfileQM,translatorData);
}
else {
QList<QString> fallBack;
@@ -250,7 +268,7 @@
tsfileQM = tsfile + QString(".qm");
if (HbFindFile::hbFindFile(tsfileQM, drive)) {
tsfileQM.chop(3);
- loaded = (translatorData=loadTranslatorData(translator,tsfileQM));
+ loaded = loadTranslatorData(translator,tsfileQM,translatorData);
}
}
}
@@ -261,6 +279,9 @@
}
}
+/*!
+ Internal helper class.
+*/
class LanguageHash : public QHash<QString,QString>
{
public:
@@ -323,7 +344,12 @@
Q_GLOBAL_STATIC(LanguageHash, gs_LanguageHash)
-// internal function for solving conflict between QLocale::system().name() and actual ts file naming convention.
+/*!
+ Internal function for solving conflict between QLocale::system().name() and actual ts file naming convention.
+
+ \param lang language for downgrading
+ \return true if successful
+*/
bool HbTranslatorPrivate::languageDowngrade(QString &lang)
{
QHash<QString,QString> *languageHash = gs_LanguageHash();
--- a/src/hbcore/i18n/i18n.pri Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/i18n/i18n.pri Wed Jun 23 18:33:25 2010 +0300
@@ -35,6 +35,7 @@
PUBLIC_HEADERS += $$PWD/hbfindfile.h
PUBLIC_HEADERS += $$PWD/hbtranslator.h
PUBLIC_HEADERS += $$PWD/hblanguageutil.h
+PUBLIC_HEADERS += $$PWD/hblocaleutil.h
PRIVATE_HEADERS += $$PWD/hbdntxmlreader_p.h
PRIVATE_HEADERS += $$PWD/hbngnormalnumber_p.h
@@ -52,9 +53,10 @@
SOURCES += $$PWD/hbngnormalnumber.cpp
SOURCES += $$PWD/hbnumbergrpxmlreader.cpp
SOURCES += $$PWD/hbparameterlengthlimiter.cpp
+SOURCES += $$PWD/hbtranslator.cpp
SOURCES += $$PWD/hbfindfile.cpp
-SOURCES += $$PWD/hbtranslator.cpp
SOURCES += $$PWD/hblanguageutil.cpp
+SOURCES += $$PWD/hblocaleutil.cpp
symbian:LIBS += -leuser -lhal -lcentralrepository -lptiengine -lSysLangUtil
symbian:TARGET.CAPABILITY += WriteDeviceData
Binary file src/hbcore/i18n/translations/collations.qm has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/i18n/translations/collations.ts Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="1.0" language="en">
+<context>
+ <name>hblanguageswitch</name>
+ <message id="collation_en">
+ <source>English</source>
+ <translation variants="no">English</translation>
+ </message>
+ <message id="collation_fr">
+ <source>French</source>
+ <translation variants="no">Français</translation>
+ </message>
+ <message id="collation_de">
+ <source>German</source>
+ <translation variants="no">Deutsch</translation>
+ </message>
+ <message id="collation_es">
+ <source>Spanish</source>
+ <translation variants="no">Español</translation>
+ </message>
+ <message id="collation_it">
+ <source>Italian</source>
+ <translation variants="no">Italiano</translation>
+ </message>
+ <message id="collation_sv">
+ <source>Swedish</source>
+ <translation variants="no">Svenska</translation>
+ </message>
+ <message id="collation_da">
+ <source>Danish</source>
+ <translation variants="no">Dansk</translation>
+ </message>
+ <message id="collation_no">
+ <source>Norwegian</source>
+ <translation variants="no">Norsk</translation>
+ </message>
+ <message id="collation_fi">
+ <source>Finnish</source>
+ <translation variants="no">Suomi</translation>
+ </message>
+ <message id="collation_en_US">
+ <source>English (American)</source>
+ <translation variants="no">English</translation>
+ </message>
+ <message id="collation_pt">
+ <source>Portuguese</source>
+ <translation variants="no">Português</translation>
+ </message>
+ <message id="collation_tr">
+ <source>Turkish</source>
+ <translation variants="no">Türkçe</translation>
+ </message>
+ <message id="collation_is">
+ <source>Icelandic</source>
+ <translation variants="no">Íslenska</translation>
+ </message>
+ <message id="collation_ru">
+ <source>Russian</source>
+ <translation variants="no">Русский</translation>
+ </message>
+ <message id="collation_hu">
+ <source>Hungarian</source>
+ <translation variants="no">Magyar</translation>
+ </message>
+ <message id="collation_nl">
+ <source>Dutch</source>
+ <translation variants="no">Nederlands</translation>
+ </message>
+ <message id="collation_cs">
+ <source>Czech</source>
+ <translation variants="no">Čeština</translation>
+ </message>
+ <message id="collation_sk">
+ <source>Slovak</source>
+ <translation variants="no">Slovenčina</translation>
+ </message>
+ <message id="collation_pl">
+ <source>Polish</source>
+ <translation variants="no">Polski</translation>
+ </message>
+ <message id="collation_sl">
+ <source>Slovenian</source>
+ <translation variants="no">Slovenščina</translation>
+ </message>
+ <message id="collation_zh_TW">
+ <source>Chinese TW</source>
+ <translation variants="no">繁體中文(台灣)</translation>
+ </message>
+ <message id="collation_zh_HK">
+ <source>Chinese HK</source>
+ <translation variants="no">繁體中文(香港)</translation>
+ </message>
+ <message id="collation_zh">
+ <source>Chinese PRC</source>
+ <translation variants="no">简体中文</translation>
+ </message>
+ <message id="collation_ja">
+ <source>Japanese</source>
+ <translation variants="no">日本語</translation>
+ </message>
+ <message id="collation_th">
+ <source>Thai</source>
+ <translation variants="no">ภาษาไทย</translation>
+ </message>
+ <message id="collation_ar">
+ <source>Arabic</source>
+ <translation variants="no">العربية</translation>
+ </message>
+ <message id="collation_tl">
+ <source>Pilipino</source>
+ <translation variants="no">Pilipino</translation>
+ </message>
+ <message id="collation_bg">
+ <source>Burgarian</source>
+ <translation variants="no">Български</translation>
+ </message>
+ <message id="collation_ca">
+ <source>Catalan</source>
+ <translation variants="no">Català</translation>
+ </message>
+ <message id="collation_hr">
+ <source>Croatian</source>
+ <translation variants="no">Hrvatski</translation>
+ </message>
+ <message id="collation_et">
+ <source>Estonian</source>
+ <translation variants="no">Eesti</translation>
+ </message>
+ <message id="collation_fa">
+ <source>Farsi</source>
+ <translation variants="no">فارسى</translation>
+ </message>
+ <message id="collation_fr_CA">
+ <source>French (Canadian)</source>
+ <translation variants="no">Français</translation>
+ </message>
+ <message id="collation_el">
+ <source>Greek</source>
+ <translation variants="no">Ελληνικά</translation>
+ </message>
+ <message id="collation_he">
+ <source>Hebrew</source>
+ <translation variants="no">עברית</translation>
+ </message>
+ <message id="collation_hi">
+ <source>Hindi</source>
+ <translation variants="no">हिन्दी</translation>
+ </message>
+ <message id="collation_id">
+ <source>Indonesian</source>
+ <translation variants="no">Indonesia</translation>
+ </message>
+ <message id="collation_ko">
+ <source>Korean</source>
+ <translation variants="no">한국어</translation>
+ </message>
+ <message id="collation_lv">
+ <source>Latvian</source>
+ <translation variants="no">Latviešu</translation>
+ </message>
+ <message id="collation_lt">
+ <source>Lithuanian</source>
+ <translation variants="no">Lietuvių</translation>
+ </message>
+ <message id="collation_ms">
+ <source>Malay</source>
+ <translation variants="no">Melayu</translation>
+ </message>
+ <message id="collation_mr">
+ <source>Marathi</source>
+ <translation variants="no">मराठी</translation>
+ </message>
+ <message id="collation_pt_BR">
+ <source>Portuguese (Brazil)</source>
+ <translation variants="no">Português</translation>
+ </message>
+ <message id="collation_ro">
+ <source>Romanian</source>
+ <translation variants="no">Română</translation>
+ </message>
+ <message id="collation_sr">
+ <source>Serbian</source>
+ <translation variants="no">Srpski</translation>
+ </message>
+ <message id="collation_es_419">
+ <source>Spanish (American)</source>
+ <translation variants="no">Español</translation>
+ </message>
+ <message id="collation_uk">
+ <source>Ukrainian</source>
+ <translation variants="no">Українська</translation>
+ </message>
+ <message id="collation_ur">
+ <source>Urdu</source>
+ <translation variants="no">اردو</translation>
+ </message>
+ <message id="collation_vi">
+ <source>Vietnamese</source>
+ <translation variants="no">Tiếng Việt</translation>
+ </message>
+ <message id="collation_eu">
+ <source>Basque</source>
+ <translation variants="no">Euskara</translation>
+ </message>
+ <message id="collation_gl">
+ <source>Galician</source>
+ <translation variants="no">Galego</translation>
+ </message>
+</context>
+</TS>
Binary file src/hbcore/i18n/translations/languages.qm has changed
--- a/src/hbcore/i18n/translations/languages.ts Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/i18n/translations/languages.ts Wed Jun 23 18:33:25 2010 +0300
@@ -3,207 +3,207 @@
<TS version="1.0" language="en">
<context>
<name>hblanguageswitch</name>
- <message id="language_1">
+ <message id="language_en">
<source>English</source>
<translation variants="no">English</translation>
</message>
- <message id="language_2">
+ <message id="language_fr">
<source>French</source>
<translation variants="no">Français</translation>
</message>
- <message id="language_3">
+ <message id="language_de">
<source>German</source>
<translation variants="no">Deutsch</translation>
</message>
- <message id="language_4">
+ <message id="language_es">
<source>Spanish</source>
<translation variants="no">Español</translation>
</message>
- <message id="language_5">
+ <message id="language_it">
<source>Italian</source>
<translation variants="no">Italiano</translation>
</message>
- <message id="language_6">
+ <message id="language_sv">
<source>Swedish</source>
<translation variants="no">Svenska</translation>
</message>
- <message id="language_7">
+ <message id="language_da">
<source>Danish</source>
<translation variants="no">Dansk</translation>
</message>
- <message id="language_8">
+ <message id="language_no">
<source>Norwegian</source>
<translation variants="no">Norsk</translation>
</message>
- <message id="language_9">
+ <message id="language_fi">
<source>Finnish</source>
<translation variants="no">Suomi</translation>
</message>
- <message id="language_10">
+ <message id="language_en_US">
<source>English (American)</source>
<translation variants="no">English</translation>
</message>
- <message id="language_13">
+ <message id="language_pt">
<source>Portuguese</source>
<translation variants="no">Português</translation>
</message>
- <message id="language_14">
+ <message id="language_tr">
<source>Turkish</source>
<translation variants="no">Türkçe</translation>
</message>
- <message id="language_15">
+ <message id="language_is">
<source>Icelandic</source>
<translation variants="no">Íslenska</translation>
</message>
- <message id="language_16">
+ <message id="language_ru">
<source>Russian</source>
<translation variants="no">Русский</translation>
</message>
- <message id="language_17">
+ <message id="language_hu">
<source>Hungarian</source>
<translation variants="no">Magyar</translation>
</message>
- <message id="language_18">
+ <message id="language_nl">
<source>Dutch</source>
<translation variants="no">Nederlands</translation>
</message>
- <message id="language_25">
+ <message id="language_cs">
<source>Czech</source>
<translation variants="no">Čeština</translation>
</message>
- <message id="language_26">
+ <message id="language_sk">
<source>Slovak</source>
<translation variants="no">Slovenčina</translation>
</message>
- <message id="language_27">
+ <message id="language_pl">
<source>Polish</source>
<translation variants="no">Polski</translation>
</message>
- <message id="language_28">
+ <message id="language_sl">
<source>Slovenian</source>
<translation variants="no">Slovenščina</translation>
</message>
- <message id="language_29">
+ <message id="language_zh_TW">
<source>Chinese TW</source>
<translation variants="no">繁體中文(台灣)</translation>
</message>
- <message id="language_30">
+ <message id="language_zh_HK">
<source>Chinese HK</source>
<translation variants="no">繁體中文(香港)</translation>
</message>
- <message id="language_31">
+ <message id="language_zh">
<source>Chinese PRC</source>
<translation variants="no">简体中文</translation>
</message>
- <message id="language_32">
+ <message id="language_ja">
<source>Japanese</source>
<translation variants="no">日本語</translation>
</message>
- <message id="language_33">
+ <message id="language_th">
<source>Thai</source>
<translation variants="no">ภาษาไทย</translation>
</message>
- <message id="language_37">
+ <message id="language_ar">
<source>Arabic</source>
<translation variants="no">العربية</translation>
</message>
- <message id="language_39">
+ <message id="language_tl">
<source>Pilipino</source>
<translation variants="no">Pilipino</translation>
</message>
- <message id="language_42">
+ <message id="language_bg">
<source>Burgarian</source>
<translation variants="no">Български</translation>
</message>
- <message id="language_44">
+ <message id="language_ca">
<source>Catalan</source>
<translation variants="no">Català</translation>
</message>
- <message id="language_45">
+ <message id="language_hr">
<source>Croatian</source>
<translation variants="no">Hrvatski</translation>
</message>
- <message id="language_49">
+ <message id="language_et">
<source>Estonian</source>
<translation variants="no">Eesti</translation>
</message>
- <message id="language_50">
+ <message id="language_fa">
<source>Farsi</source>
<translation variants="no">فارسى</translation>
</message>
- <message id="language_51">
+ <message id="language_fr_CA">
<source>French (Canadian)</source>
<translation variants="no">Français</translation>
</message>
- <message id="language_54">
+ <message id="language_el">
<source>Greek</source>
<translation variants="no">Ελληνικά</translation>
</message>
- <message id="language_57">
+ <message id="language_he">
<source>Hebrew</source>
<translation variants="no">עברית</translation>
</message>
- <message id="language_58">
+ <message id="language_hi">
<source>Hindi</source>
<translation variants="no">हिन्दी</translation>
</message>
- <message id="language_59">
+ <message id="language_id">
<source>Indonesian</source>
<translation variants="no">Indonesia</translation>
</message>
- <message id="language_65">
+ <message id="language_ko">
<source>Korean</source>
<translation variants="no">한국어</translation>
</message>
- <message id="language_67">
+ <message id="language_lv">
<source>Latvian</source>
<translation variants="no">Latviešu</translation>
</message>
- <message id="language_68">
+ <message id="language_lt">
<source>Lithuanian</source>
<translation variants="no">Lietuvių</translation>
</message>
- <message id="language_70">
+ <message id="language_ms">
<source>Malay</source>
<translation variants="no">Melayu</translation>
</message>
- <message id="language_72">
+ <message id="language_mr">
<source>Marathi</source>
<translation variants="no">मराठी</translation>
</message>
- <message id="language_76">
+ <message id="language_pt_BR">
<source>Portuguese (Brazil)</source>
<translation variants="no">Português</translation>
</message>
- <message id="language_78">
+ <message id="language_ro">
<source>Romanian</source>
<translation variants="no">Română</translation>
</message>
- <message id="language_79">
+ <message id="language_sr">
<source>Serbian</source>
<translation variants="no">Srpski</translation>
</message>
- <message id="language_83">
+ <message id="language_419">
<source>Spanish (American)</source>
<translation variants="no">Español</translation>
</message>
- <message id="language_93">
+ <message id="language_uk">
<source>Ukrainian</source>
<translation variants="no">Українська</translation>
</message>
- <message id="language_94">
+ <message id="language_ur">
<source>Urdu</source>
<translation variants="no">اردو</translation>
</message>
- <message id="language_96">
+ <message id="language_vi">
<source>Vietnamese</source>
<translation variants="no">Tiếng Việt</translation>
</message>
- <message id="language_102">
+ <message id="language_eu">
<source>Basque</source>
<translation variants="no">Euskara</translation>
</message>
- <message id="language_103">
+ <message id="language_gl">
<source>Galician</source>
<translation variants="no">Galego</translation>
</message>
Binary file src/hbcore/i18n/translations/languages_OLD.qm has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/i18n/translations/languages_OLD.ts Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="1.0" language="en">
+<context>
+ <name>hblanguageswitch</name>
+ <message id="language_1">
+ <source>English</source>
+ <translation variants="no">English</translation>
+ </message>
+ <message id="language_2">
+ <source>French</source>
+ <translation variants="no">Français</translation>
+ </message>
+ <message id="language_3">
+ <source>German</source>
+ <translation variants="no">Deutsch</translation>
+ </message>
+ <message id="language_4">
+ <source>Spanish</source>
+ <translation variants="no">Español</translation>
+ </message>
+ <message id="language_5">
+ <source>Italian</source>
+ <translation variants="no">Italiano</translation>
+ </message>
+ <message id="language_6">
+ <source>Swedish</source>
+ <translation variants="no">Svenska</translation>
+ </message>
+ <message id="language_7">
+ <source>Danish</source>
+ <translation variants="no">Dansk</translation>
+ </message>
+ <message id="language_8">
+ <source>Norwegian</source>
+ <translation variants="no">Norsk</translation>
+ </message>
+ <message id="language_9">
+ <source>Finnish</source>
+ <translation variants="no">Suomi</translation>
+ </message>
+ <message id="language_10">
+ <source>English (American)</source>
+ <translation variants="no">English</translation>
+ </message>
+ <message id="language_13">
+ <source>Portuguese</source>
+ <translation variants="no">Português</translation>
+ </message>
+ <message id="language_14">
+ <source>Turkish</source>
+ <translation variants="no">Türkçe</translation>
+ </message>
+ <message id="language_15">
+ <source>Icelandic</source>
+ <translation variants="no">Íslenska</translation>
+ </message>
+ <message id="language_16">
+ <source>Russian</source>
+ <translation variants="no">Русский</translation>
+ </message>
+ <message id="language_17">
+ <source>Hungarian</source>
+ <translation variants="no">Magyar</translation>
+ </message>
+ <message id="language_18">
+ <source>Dutch</source>
+ <translation variants="no">Nederlands</translation>
+ </message>
+ <message id="language_25">
+ <source>Czech</source>
+ <translation variants="no">Čeština</translation>
+ </message>
+ <message id="language_26">
+ <source>Slovak</source>
+ <translation variants="no">Slovenčina</translation>
+ </message>
+ <message id="language_27">
+ <source>Polish</source>
+ <translation variants="no">Polski</translation>
+ </message>
+ <message id="language_28">
+ <source>Slovenian</source>
+ <translation variants="no">Slovenščina</translation>
+ </message>
+ <message id="language_29">
+ <source>Chinese TW</source>
+ <translation variants="no">繁體中文(台灣)</translation>
+ </message>
+ <message id="language_30">
+ <source>Chinese HK</source>
+ <translation variants="no">繁體中文(香港)</translation>
+ </message>
+ <message id="language_31">
+ <source>Chinese PRC</source>
+ <translation variants="no">简体中文</translation>
+ </message>
+ <message id="language_32">
+ <source>Japanese</source>
+ <translation variants="no">日本語</translation>
+ </message>
+ <message id="language_33">
+ <source>Thai</source>
+ <translation variants="no">ภาษาไทย</translation>
+ </message>
+ <message id="language_37">
+ <source>Arabic</source>
+ <translation variants="no">العربية</translation>
+ </message>
+ <message id="language_39">
+ <source>Pilipino</source>
+ <translation variants="no">Pilipino</translation>
+ </message>
+ <message id="language_42">
+ <source>Burgarian</source>
+ <translation variants="no">Български</translation>
+ </message>
+ <message id="language_44">
+ <source>Catalan</source>
+ <translation variants="no">Català</translation>
+ </message>
+ <message id="language_45">
+ <source>Croatian</source>
+ <translation variants="no">Hrvatski</translation>
+ </message>
+ <message id="language_49">
+ <source>Estonian</source>
+ <translation variants="no">Eesti</translation>
+ </message>
+ <message id="language_50">
+ <source>Farsi</source>
+ <translation variants="no">فارسى</translation>
+ </message>
+ <message id="language_51">
+ <source>French (Canadian)</source>
+ <translation variants="no">Français</translation>
+ </message>
+ <message id="language_54">
+ <source>Greek</source>
+ <translation variants="no">Ελληνικά</translation>
+ </message>
+ <message id="language_57">
+ <source>Hebrew</source>
+ <translation variants="no">עברית</translation>
+ </message>
+ <message id="language_58">
+ <source>Hindi</source>
+ <translation variants="no">हिन्दी</translation>
+ </message>
+ <message id="language_59">
+ <source>Indonesian</source>
+ <translation variants="no">Indonesia</translation>
+ </message>
+ <message id="language_65">
+ <source>Korean</source>
+ <translation variants="no">한국어</translation>
+ </message>
+ <message id="language_67">
+ <source>Latvian</source>
+ <translation variants="no">Latviešu</translation>
+ </message>
+ <message id="language_68">
+ <source>Lithuanian</source>
+ <translation variants="no">Lietuvių</translation>
+ </message>
+ <message id="language_70">
+ <source>Malay</source>
+ <translation variants="no">Melayu</translation>
+ </message>
+ <message id="language_72">
+ <source>Marathi</source>
+ <translation variants="no">मराठी</translation>
+ </message>
+ <message id="language_76">
+ <source>Portuguese (Brazil)</source>
+ <translation variants="no">Português</translation>
+ </message>
+ <message id="language_78">
+ <source>Romanian</source>
+ <translation variants="no">Română</translation>
+ </message>
+ <message id="language_79">
+ <source>Serbian</source>
+ <translation variants="no">Srpski</translation>
+ </message>
+ <message id="language_83">
+ <source>Spanish (American)</source>
+ <translation variants="no">Español</translation>
+ </message>
+ <message id="language_93">
+ <source>Ukrainian</source>
+ <translation variants="no">Українська</translation>
+ </message>
+ <message id="language_94">
+ <source>Urdu</source>
+ <translation variants="no">اردو</translation>
+ </message>
+ <message id="language_96">
+ <source>Vietnamese</source>
+ <translation variants="no">Tiếng Việt</translation>
+ </message>
+ <message id="language_102">
+ <source>Basque</source>
+ <translation variants="no">Euskara</translation>
+ </message>
+ <message id="language_103">
+ <source>Galician</source>
+ <translation variants="no">Galego</translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/i18n/translations/locale_mappings.txt Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,50 @@
+1,001,826,001,en,GB,en
+2,002,250,002,fr,FR,fr
+3,003,276,003,de,DE,de
+4,004,724,004,es,ES,es
+5,005,380,005,it,IT,it
+6,006,752,006,sv,SE,sv
+7,007,208,007,da,DK,da
+8,008,578,008,no,NO,no
+9,009,246,009,fi,FI,fi
+10,010,840,010,en_US,US,en_US
+13,013,620,013,pt,PT,pt
+14,014,792,014,tr,TR,tr
+15,015,352,015,is,IS,is
+16,016,643,016,ru,RU,ru
+17,017,348,017,hu,HU,hu
+18,018,528,018,nl,NL,nl
+25,025,203,025,cs,CZ,cs
+26,026,703,026,sk,SK,sk
+27,027,616,027,pl,PL,pl
+28,028,705,028,sl,SI,sl
+29,029,158,029,zh_TW,TW,zh_TW
+30,030,344,030,zh_HK,HK,zh_HK
+31,031,156,031,zh,CN,zh
+32,032,392,032,ja,JP,ja
+33,033,764,033,th,TH,th
+37,037,682,037,ar,SA,ar
+39,039,608,039,tl,PH,tl
+42,042,100,042,bg,BG,bg
+44,044, ,044,ca, ,ca
+45,045,191,045,hr,HR,hr
+49,049,233,049,et,EE,et
+50,050,364,050,fa,IR,fa
+51,051,124,051,fr_CA,CA,fr_CA
+54,054,196,054,el,GR,el
+57,057,376,057,he,IL,he
+58,058,356,058,hi,IN,hi
+59,059,360,059,id,ID,id
+65,065,410,065,ko,KR,ko
+67,067,428,067,lv,LV,lv
+68,068,440,068,lt,LT,lt
+70,070,458,070,ms,MY,ms
+76,076,076,076,pt_BR,BR,pt_BR
+78,078,642,078,ro,RO,ro
+79,079,891,079,sr,RS,sr
+83,083, ,083,es_419, ,es_419
+93,093,804,093,uk,UA,uk
+94,094,586,094,ur,PK,ur
+96,096,704,096,vi,VN,vi
+102,102, ,102,eu, ,eu
+103,103, ,103,gl, ,gl
\ No newline at end of file
Binary file src/hbcore/i18n/translations/regions.qm has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/i18n/translations/regions.ts Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="1.0" language="en">
+<context>
+ <name>hblanguageswitch</name>
+ <message id="region_GB">
+ <source>English</source>
+ <translation variants="no">United Kingdom</translation>
+ </message>
+ <message id="region_FR">
+ <source>France</source>
+ <translation variants="no">France</translation>
+ </message>
+ <message id="region_DE">
+ <source>Germany</source>
+ <translation variants="no">Deutschland</translation>
+ </message>
+ <message id="region_ES">
+ <source>Spain</source>
+ <translation variants="no">España</translation>
+ </message>
+ <message id="region_IT">
+ <source>Italy</source>
+ <translation variants="no">Italia</translation>
+ </message>
+ <message id="region_SE">
+ <source>Sweden</source>
+ <translation variants="no">Sverige</translation>
+ </message>
+ <message id="region_DK">
+ <source>Denmark</source>
+ <translation variants="no">Danmark</translation>
+ </message>
+ <message id="region_NO">
+ <source>Norway</source>
+ <translation variants="no">Norge</translation>
+ </message>
+ <message id="region_FI">
+ <source>Finland</source>
+ <translation variants="no">Suomi</translation>
+ </message>
+ <message id="region_US">
+ <source>United States</source>
+ <translation variants="no">United States</translation>
+ </message>
+ <message id="region_PT">
+ <source>Portugal</source>
+ <translation variants="no">Portugal</translation>
+ </message>
+ <message id="region_TR">
+ <source>Turkey</source>
+ <translation variants="no">Türkiye</translation>
+ </message>
+ <message id="region_IS">
+ <source>Iceland</source>
+ <translation variants="no">Ísland</translation>
+ </message>
+ <message id="region_RU">
+ <source>Russia</source>
+ <translation variants="no">Россия</translation>
+ </message>
+ <message id="region_HU">
+ <source>Hungary</source>
+ <translation variants="no">Magyarország</translation>
+ </message>
+ <message id="region_NL">
+ <source>Netherlands</source>
+ <translation variants="no">Nederland</translation>
+ </message>
+ <message id="region_CZ">
+ <source>Czech</source>
+ <translation variants="no">Český</translation>
+ </message>
+ <message id="region_SK">
+ <source>Slovakia</source>
+ <translation variants="no">Slovensko</translation>
+ </message>
+ <message id="region_PL">
+ <source>Poland</source>
+ <translation variants="no">Polska</translation>
+ </message>
+ <message id="region_SI">
+ <source>Slovenia</source>
+ <translation variants="no">Slovenija</translation>
+ </message>
+ <message id="region_TW">
+ <source>Taiwan</source>
+ <translation variants="no">台灣</translation>
+ </message>
+ <message id="region_HK">
+ <source>Hong Kong</source>
+ <translation variants="no">香港</translation>
+ </message>
+ <message id="region_CN">
+ <source>China</source>
+ <translation variants="no">中国</translation>
+ </message>
+ <message id="region_JP">
+ <source>Japan</source>
+ <translation variants="no">日本</translation>
+ </message>
+ <message id="region_TH">
+ <source>Thailand</source>
+ <translation variants="no">ประเทศไทย</translation>
+ </message>
+ <message id="region_SA">
+ <source>Saudi Arabia</source>
+ <translation variants="no">العربية السعودية</translation>
+ </message>
+ <message id="region_PH">
+ <source>Philippines</source>
+ <translation variants="no">Pilipinas</translation>
+ </message>
+ <message id="region_BG">
+ <source>Bulgaria</source>
+ <translation variants="no">България</translation>
+ </message>
+ <message id="region_HR">
+ <source>Croatian</source>
+ <translation variants="no">Hrvatska</translation>
+ </message>
+ <message id="region_EE">
+ <source>Estonia</source>
+ <translation variants="no">Eesti</translation>
+ </message>
+ <message id="region_IR">
+ <source>Iran</source>
+ <translation variants="no">ایران</translation>
+ </message>
+ <message id="region_CA">
+ <source>Canada</source>
+ <translation variants="no">Canada</translation>
+ </message>
+ <message id="region_GR">
+ <source>Greece</source>
+ <translation variants="no">Ελλάδα</translation>
+ </message>
+ <message id="region_IL">
+ <source>Israel</source>
+ <translation variants="no">ישראל</translation>
+ </message>
+ <message id="region_IN">
+ <source>India</source>
+ <translation variants="no">भारत</translation>
+ </message>
+ <message id="region_ID">
+ <source>Indonesia</source>
+ <translation variants="no">Indonesia</translation>
+ </message>
+ <message id="region_KR">
+ <source>Korea</source>
+ <translation variants="no">한국</translation>
+ </message>
+ <message id="region_LV">
+ <source>Latvia</source>
+ <translation variants="no">Latvija</translation>
+ </message>
+ <message id="region_LT">
+ <source>Lithuania</source>
+ <translation variants="no">Lietuva</translation>
+ </message>
+ <message id="region_MY">
+ <source>Malaysia</source>
+ <translation variants="no">Malaysia</translation>
+ </message>
+ <message id="region_BR">
+ <source>Brazil</source>
+ <translation variants="no">Brasil</translation>
+ </message>
+ <message id="region_RO">
+ <source>Romania</source>
+ <translation variants="no">România</translation>
+ </message>
+ <message id="region_RS">
+ <source>Serbia</source>
+ <translation variants="no">Србија</translation>
+ </message>
+ <message id="region_UA">
+ <source>Ukraine</source>
+ <translation variants="no">Україна</translation>
+ </message>
+ <message id="region_PK">
+ <source>Pakistan</source>
+ <translation variants="no">Pakistan</translation>
+ </message>
+ <message id="region_VN">
+ <source>Vietnam</source>
+ <translation variants="no">Việt Nam</translation>
+ </message>
+</context>
+</TS>
--- a/src/hbcore/image/hbframedrawer.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/image/hbframedrawer.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -30,7 +30,7 @@
#include <hbinstance.h>
#include <hbiconimpl_p.h>
#include <hbiconloader_p.h>
-
+#include <hbthemeutils_p.h>
#include <QPainter>
#include <QIcon>
@@ -201,11 +201,14 @@
borderWidths[2] = 0.0;
borderWidths[3] = 0.0;
- // Remove possible file extension
- int index = this->frameGraphicsName.lastIndexOf(QChar('.'));
- if (index > 0) {
- this->frameGraphicsName.resize(index);
+ if (HbThemeUtils::isLogicalName(frameGraphicsName)) {
+ // Remove possible file extension
+ int index = this->frameGraphicsName.lastIndexOf(QChar('.'));
+ if (index>0) {
+ this->frameGraphicsName.resize(index);
+ }
}
+
//Register the HbFrameDrawerPrivate Instance to HbIconLoader
HbIconLoader::global()->storeFrameDrawerInfo(this);
}
@@ -382,11 +385,9 @@
}
} else {
- QStringList multiPieceFileNames;
- QStringList list = fileNameSuffixList();
- int nameListCount = list.count();
- for (int i = 0; i < nameListCount; i++) {
- multiPieceFileNames.append(frameGraphicsName + list[i]);
+ QStringList multiPieceFileNames = resolveMultiPieceFileNames();
+
+ for (int i = 0; i < frameParts; i++) {
if (data.pixmapSizes[i].isEmpty()) {
data.pixmapSizes[i] = QSize(0, 0);
}
@@ -414,6 +415,32 @@
}
}
+QStringList HbFrameDrawerPrivate::resolveMultiPieceFileNames()
+{
+ QStringList multiPieceFileNames;
+
+ bool logicalName = HbThemeUtils::isLogicalName(frameGraphicsName);
+
+ int suffixIndex = frameGraphicsName.length();
+ if (!logicalName) {
+ // If it is an absolute icon path, the suffix is inserted before the file extension
+ int index = frameGraphicsName.lastIndexOf(QChar('.'));
+ if (index > 0) {
+ suffixIndex = index;
+ }
+ }
+
+ QStringList list = fileNameSuffixList();
+ int count = list.count();
+ for (int i = 0; i < count; i++) {
+ QString nameWithSuffix = frameGraphicsName;
+ nameWithSuffix.insert(suffixIndex, list.at(i));
+ multiPieceFileNames.append(nameWithSuffix);
+ }
+
+ return multiPieceFileNames;
+}
+
/*!
\internal
*/
@@ -475,9 +502,9 @@
}
}
}
- if (fallbackMaskableIconList[0]->iconImpl()
- && fallbackMaskableIconList[0]->iconImpl()->isCreatedOnServer()) {
- if (fallbackMaskableIconList[0]->iconImpl()->iconData().type != INVALID_FORMAT) {
+ if ( fallbackMaskableIconList.count() && fallbackMaskableIconList[0]->iconImpl()
+ && fallbackMaskableIconList[0]->iconImpl()->isCreatedOnServer() ) {
+ if ( fallbackMaskableIconList[0]->iconImpl()->iconData().type != INVALID_FORMAT ) {
// store the icon type
iconType = fallbackMaskableIconList[0]->iconImpl()->iconData().type;
}
@@ -860,7 +887,20 @@
QSizeF HbFrameDrawerPrivate::defaultSize(const QString &framePartSuffix)
{
HbIconLoader *loader = HbIconLoader::global();
- return loader->defaultSize(frameGraphicsName + framePartSuffix).toSize();
+
+ QString nameWithSuffix = frameGraphicsName;
+ if (HbThemeUtils::isLogicalName(frameGraphicsName)) {
+ // Logical icon name, append suffix in the end
+ nameWithSuffix.append(framePartSuffix);
+ } else {
+ // Absolute icon path, insert suffix before file extension
+ int index = this->frameGraphicsName.lastIndexOf(QChar('.'));
+ if (index > 0) {
+ nameWithSuffix.insert(index, framePartSuffix);
+ }
+ }
+
+ return loader->defaultSize(nameWithSuffix).toSize();
}
bool HbFrameDrawerPrivate::isMirrored()
@@ -1147,14 +1187,19 @@
/*!
* Sets the frame graphics name. See the class description for the file name convention for different frame parts.
* \sa HbFrameDrawer::frameGraphicsName()
+* \note Logical frame names that define a themable frame should not include filename extension, whereas absolute filenames
+* must include full path and filename extension.
*/
void HbFrameDrawer::setFrameGraphicsName(const QString &frameGraphicsName)
{
- // Remove possible file extension
QString nameWithoutExt = frameGraphicsName;
- int index = nameWithoutExt.lastIndexOf(QChar('.'));
- if (index > 0) {
- nameWithoutExt.resize(index);
+
+ if (HbThemeUtils::isLogicalName(frameGraphicsName)) {
+ // Remove possible file extension
+ int index = nameWithoutExt.lastIndexOf(QChar('.'));
+ if (index>0) {
+ nameWithoutExt.resize(index);
+ }
}
if (d->frameGraphicsName != nameWithoutExt) {
--- a/src/hbcore/image/hbframedrawer_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/image/hbframedrawer_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -74,6 +74,7 @@
QSizeF defaultSize(const QString &framePartSuffix);
bool isMirrored();
bool hasBorderWidths() const;
+ QStringList resolveMultiPieceFileNames();
// disabled
HbFrameDrawerPrivate &operator=(const HbFrameDrawerPrivate &other);
HbIconFormatType iconType;
--- a/src/hbcore/image/hbicon.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/image/hbicon.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -61,10 +61,10 @@
E.g. logical name of the icon is "frame". Assuming the icon file is in SVG-T format,
the filename should be "frame.svg".
- If the given icon name is a logical icon name and not an absolute filename,
- it is searched in the icon locations of the theming framework.
+ The icon name can be either a logical icon name that is fetched from the theme
+ or an absolute filename. Logical icon names should not include a filename extension.
- An absolute icon filename can point e.g. in application's resource file.
+ An absolute icon filename must include full path and filename extension.
The icon can be resized with method HbIcon::setSize.
When resizing, by default the aspect ratio of the icon is preserved.
@@ -405,7 +405,8 @@
* - HbIcon::iconName() returns empty string by default.
* - HbIcon::pixmap() returns null pixmap.
* - Colorization and mirroring support are not available.
-* This method should only be used if absolute necessary, as this is not ideal for hardware accelerated environment.
+* This method should only be used if absolute necessary, as this is not ideal for hardware accelerated environment
+* and there may be huge differences in painting performance when compared to a native HbIcon.
*/
HbIcon::HbIcon(const QIcon &icon)
{
@@ -558,7 +559,8 @@
}
/*!
-* Sets the name of the icon.
+* Sets the name of the icon. It can be either a logical icon name that is fetched from the theme
+* or an absolute filename. Logical icon names should not include a filename extension.
* This icon name is used if there is no name set separately for the specified icon mode and state.
* \sa HbIcon::iconName()
*/
@@ -642,6 +644,14 @@
QPixmap pixmap = d->qicon.pixmap(size.toSize(), mode, state);
QSizeF pixmapSize = pixmap.size();
+
+ // QIcon::pixmap() will not do upscaling.
+ if (pixmapSize.width() < size.width() || pixmapSize.height() < size.height()) {
+ // Native HbIcons are scaled using SmoothTransformation so use the same.
+ pixmap = pixmap.scaled(size.toSize(), aspectRatioMode, Qt::SmoothTransformation);
+ pixmapSize = pixmap.size();
+ }
+
// Adjust the alignment
QPointF topLeft = rect.topLeft();
--- a/src/hbcore/image/hbiconloader.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/image/hbiconloader.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -44,7 +44,6 @@
#include "hbthemeindex_p.h"
#include "hbthemecommon_p.h"
#include "hbiconimplcreator_p.h"
-#include "hbstandarddirs_p.h"
#include <QDir>
#include <QCoreApplication>
#include <QDebug>
@@ -80,7 +79,7 @@
#undef HB_SVG_ANIMATION
static const char *s_unknown = "unknown";
- // Icon name without extension
+// Icon name without extension
/*!
\class HbIconLoader
@@ -95,7 +94,7 @@
static HbIconLoader *theLoader = 0;
#ifdef HB_ICONIMPL_CACHE
-static QHash<QByteArray, HbIconImpl*> iconImplCache;
+static QHash<QByteArray, HbIconImpl *> iconImplCache;
#endif
class HbIconLoaderPrivate
@@ -108,13 +107,13 @@
static QString removeIconNameSuffix(const QString &iconName);
- /* This method is supposed to work the same way
+ /* This method is supposed to work the same way
as the FindIconHelper in the Icon Theme Spec: */
static QString findSharedResourceHelper(const QString &resourceName,
- bool mirrored,
- bool& mirroredIconFound,
- Hb::ResourceType itemType = Hb::IconResource,
- bool useThemeIndex = true);
+ bool mirrored,
+ bool &mirroredIconFound,
+ Hb::ResourceType itemType = Hb::IconResource,
+ bool useThemeIndex = true);
static QString findEffectHelper(const QString &effectName);
@@ -124,16 +123,16 @@
void setLayoutMirrored(bool mirrored);
#ifdef HB_ICONIMPL_CACHE
- QByteArray createCacheKeyFrom( const QString &iconName,
- const QSizeF &size,
- Qt::AspectRatioMode aspectRatioMode,
- QIcon::Mode mode,
- bool mirrored,
- const QColor &color,
- HbRenderingMode renderMode );
+ QByteArray createCacheKeyFrom(const QString &iconName,
+ const QSizeF &size,
+ Qt::AspectRatioMode aspectRatioMode,
+ QIcon::Mode mode,
+ bool mirrored,
+ const QColor &color,
+ HbRenderingMode renderMode);
#endif
-public:
+public:
QString storedTheme;
int sourceResolution;
@@ -148,7 +147,7 @@
HbIconSource *lastIconSource;
-private:
+private:
enum {
Unknown = 0,
NotMirrored = 1,
@@ -162,14 +161,14 @@
};
HbIconLoaderPrivate::HbIconLoaderPrivate() :
- storedTheme(HbTheme::instance()->name()),
- sourceResolution(144), // This is about the resolution of a Nokia N95 8GB
- resolution(144),
- zoom(1.0),
- animationManager(HbIconAnimationManager::global()),
- animationLoading(false),
- lastIconSource(0),
- layoutMirrored(Unknown)
+ storedTheme(HbTheme::instance()->name()),
+ sourceResolution(144), // This is about the resolution of a Nokia N95 8GB
+ resolution(144),
+ zoom(1.0),
+ animationManager(HbIconAnimationManager::global()),
+ animationLoading(false),
+ lastIconSource(0),
+ layoutMirrored(Unknown)
{
}
@@ -188,17 +187,17 @@
{
QString loweredIconName = iconName.toLower();
if (loweredIconName.endsWith(QLatin1String(".svg"))
- || loweredIconName.endsWith(QLatin1String(".png"))
- || loweredIconName.endsWith(QLatin1String(".mng"))
- || loweredIconName.endsWith(QLatin1String(".gif"))
- || loweredIconName.endsWith(QLatin1String(".xpm"))
- || loweredIconName.endsWith(QLatin1String(".jpg"))
- || loweredIconName.endsWith(QLatin1String(".nvg"))) {
+ || loweredIconName.endsWith(QLatin1String(".png"))
+ || loweredIconName.endsWith(QLatin1String(".mng"))
+ || loweredIconName.endsWith(QLatin1String(".gif"))
+ || loweredIconName.endsWith(QLatin1String(".xpm"))
+ || loweredIconName.endsWith(QLatin1String(".jpg"))
+ || loweredIconName.endsWith(QLatin1String(".nvg"))) {
return iconName.left(iconName.length() - 4);
}
if (loweredIconName.endsWith(QLatin1String(".svgz"))
- || loweredIconName.endsWith(QLatin1String(".qpic"))) {
+ || loweredIconName.endsWith(QLatin1String(".qpic"))) {
return iconName.left(iconName.length() - 5);
}
@@ -222,7 +221,7 @@
return suffix;
}
-QString HbIconLoaderPrivate::findSharedResourceHelper(const QString &resourceName, bool mirrored, bool& mirroredIconFound, Hb::ResourceType itemType, bool useThemeIndex)
+QString HbIconLoaderPrivate::findSharedResourceHelper(const QString &resourceName, bool mirrored, bool &mirroredIconFound, Hb::ResourceType itemType, bool useThemeIndex)
{
Q_UNUSED(useThemeIndex)
Q_UNUSED(itemType)
@@ -257,17 +256,21 @@
QString iconNameCopy(resourceName);
if (index > 0) {
- iconNameCopy.insert(index+1, QString("mirrored/"));
+ iconNameCopy.insert(index + 1, QString("mirrored/"));
}
- iconPath = HbStandardDirs::findResource(iconNameCopy, Hb::IconResource);
+ if (QFile::exists(iconNameCopy)) {
+ iconPath = iconNameCopy;
+ }
- if( !iconPath.isEmpty() ) {
+ if (!iconPath.isEmpty()) {
mirroredIconFound = true;
return iconPath;
}
}
- iconPath = HbStandardDirs::findResource(resourceName, Hb::IconResource);
+ if (QFile::exists(resourceName)) {
+ iconPath = resourceName;
+ }
}
return iconPath;
@@ -301,7 +304,7 @@
}
return none
}
-
+
With the following helper functions:
@@ -423,8 +426,8 @@
{
if (layoutMirrored == Unknown) {
// The layout directionality is defined by asking it from the main window.
- QList<HbMainWindow*> allWindows = hbInstance->allMainWindows();
- HbMainWindow* primaryWindow = allWindows.value(0);
+ QList<HbMainWindow *> allWindows = hbInstance->allMainWindows();
+ HbMainWindow *primaryWindow = allWindows.value(0);
if (primaryWindow) {
layoutMirrored = primaryWindow->layoutDirection() == Qt::LeftToRight ? NotMirrored : Mirrored;
} else {
@@ -441,13 +444,13 @@
}
#ifdef HB_ICONIMPL_CACHE
-QByteArray HbIconLoaderPrivate::createCacheKeyFrom( const QString &iconName,
- const QSizeF &size,
- Qt::AspectRatioMode aspectRatioMode,
- QIcon::Mode mode,
- bool mirrored,
- const QColor &color,
- HbRenderingMode renderMode )
+QByteArray HbIconLoaderPrivate::createCacheKeyFrom(const QString &iconName,
+ const QSizeF &size,
+ Qt::AspectRatioMode aspectRatioMode,
+ QIcon::Mode mode,
+ bool mirrored,
+ const QColor &color,
+ HbRenderingMode renderMode)
{
static const int paramArraySize = 8;
@@ -477,10 +480,10 @@
// Append render mode when creating cache key
temp[7] = renderMode;
- cacheKey.append((char*)&(temp[0]), sizeof(int)*paramArraySize);
+ cacheKey.append((char *)&(temp[0]), sizeof(int)*paramArraySize);
const QChar *iconNamePtr = iconName.constData();
- cacheKey.append((char*)iconNamePtr, nameSize * sizeof(QChar));
+ cacheKey.append((char *)iconNamePtr, nameSize * sizeof(QChar));
if (mirrored) {
cacheKey.append('M');
@@ -491,19 +494,19 @@
#endif
HbIconLoader::HbIconLoader(const QString &appName, QObject *parent)
- : QObject( parent )
+ : QObject(parent)
{
- setObjectName( appName );
+ setObjectName(appName);
d = new HbIconLoaderPrivate();
- // Set default rendering mode to EHWRendering
+ // Set default rendering mode to EHWRendering
renderMode = EHWRendering;
// Delete the icon loader when the application is destroyed.
connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(destroy()));
connect(HbLayoutDirectionNotifier::instance(), SIGNAL(layoutDirectionChangeStarted()),
- this, SLOT(updateLayoutDirection()));
+ this, SLOT(updateLayoutDirection()));
#ifdef HB_TOOL_INTERFACE
// This enables partial theme updates.
@@ -557,7 +560,7 @@
// Step 2: There was no animation definition,
// try to get default size from theme index if it is a themed icon (logical name).
-
+
if (HbThemeUtils::isLogicalName(iconName)) {
// Try to get themed icon information from theme index
HbThemeIndexResource resource(iconName);
@@ -609,13 +612,25 @@
bool HbIconLoader::iconsExist(const QString &iconName, const QStringList &suffixList)
{
- QString name = HbIconLoaderPrivate::removeIconNameSuffix(iconName);
bool found = true;
+ bool logicalName = HbThemeUtils::isLogicalName(iconName);
+
+ int suffixIndex = iconName.length();
+ if (!logicalName) {
+ // If it is an absolute icon path, the suffix is inserted before the file extension
+ int index = iconName.lastIndexOf(QChar('.'));
+ if (index > 0) {
+ suffixIndex = index;
+ }
+ }
foreach (const QString &suffix, suffixList) {
bool dummy = false;
- QString path = HbIconLoaderPrivate::findSharedResourceHelper(name + suffix, false, dummy);
+ QString nameWithSuffix = iconName;
+ nameWithSuffix.insert(suffixIndex, suffix);
+
+ QString path = HbIconLoaderPrivate::findSharedResourceHelper(nameWithSuffix, false, dummy);
if (path.isEmpty()) {
found = false;
break;
@@ -658,12 +673,12 @@
void HbIconLoader::applyResolutionCorrection(QSizeF &size)
{
- size = size * (qreal)(d->resolution) / (qreal)(d->sourceResolution) * d->zoom;
+ size = size * (qreal)(d->resolution) / (qreal)(d->sourceResolution) * d->zoom;
}
void HbIconLoader::themeChange(const QStringList &updatedFiles)
{
- foreach (HbFrameDrawerPrivate *frameDrawer, this->frameDrawerInstanceList) frameDrawer->themeChange(updatedFiles);
+ foreach(HbFrameDrawerPrivate * frameDrawer, this->frameDrawerInstanceList) frameDrawer->themeChange(updatedFiles);
}
void HbIconLoader::destroy()
@@ -682,8 +697,8 @@
// classes use that signal to update their pixmaps, so the new layout
// directionality must be updated in the icon loader before that.
// Thus, there are these separate signals.
- QList<HbMainWindow*> allWindows = hbInstance->allMainWindows();
- HbMainWindow* primaryWindow = allWindows.value(0);
+ QList<HbMainWindow *> allWindows = hbInstance->allMainWindows();
+ HbMainWindow *primaryWindow = allWindows.value(0);
d->setLayoutMirrored(primaryWindow->layoutDirection() == Qt::RightToLeft);
}
@@ -691,7 +706,7 @@
void HbIconLoader::handleForegroundLost()
{
#if defined(HB_SGIMAGE_ICON) || defined(HB_NVG_CS_ICON)
- // Remove SGImage /NVG type of icons
+ // Remove SGImage /NVG type of icons
freeGpuIconData();
// delete the VGImage
HbEglStates *eglStateInstance = HbEglStates::global();
@@ -706,8 +721,8 @@
*/
void HbIconLoader::removeItemInCache(HbIconImpl *iconImpl)
{
-#ifdef HB_ICONIMPL_CACHE
- if ( iconImpl ) {
+#ifdef HB_ICONIMPL_CACHE
+ if (iconImpl) {
iconImplCache.remove(iconImplCache.key(iconImpl));
}
#else
@@ -722,23 +737,23 @@
void HbIconLoader::freeGpuIconData()
{
#if defined(HB_SGIMAGE_ICON) || defined(HB_NVG_CS_ICON)
- for( int i = 0; i < iconEngineList.count(); i++ ) {
+ for (int i = 0; i < iconEngineList.count(); i++) {
HbIconEngine *engine = iconEngineList.at(i);
engine->resetIconImpl();
- }
- for(int i = 0; i< frameDrawerInstanceList.count(); i++) {
- HbFrameDrawerPrivate * fd = frameDrawerInstanceList.at(i);
- if ( (fd->iconFormatType() == SGIMAGE) || (fd->iconFormatType() == NVG) ) {
- fd->resetMaskableIcon();
- }
- }
+ }
+ for (int i = 0; i < frameDrawerInstanceList.count(); i++) {
+ HbFrameDrawerPrivate *fd = frameDrawerInstanceList.at(i);
+ if ((fd->iconFormatType() == SGIMAGE) || (fd->iconFormatType() == NVG)) {
+ fd->resetMaskableIcon();
+ }
+ }
#endif
}
/*!
\internal
- This is a wrapper for findSharedResourceHelper(). It is used for getting
+ This is a wrapper for findSharedResourceHelper(). It is used for getting
resources from the themeserver.
The return value is either same as \a name, when the file is not found in the
@@ -756,8 +771,8 @@
This function is used to register the IconEngine instance to IconLoader
*/
void HbIconLoader::storeIconEngineInfo(HbIconEngine *iconEngine)
-{
- iconEngineList.append( iconEngine );
+{
+ iconEngineList.append(iconEngine);
}
/*!
@@ -765,13 +780,13 @@
*/
void HbIconLoader::removeIconEngineInfo(HbIconEngine *iconEngine)
{
- iconEngineList.removeOne(iconEngine);
+ iconEngineList.removeOne(iconEngine);
}
/*!
This function is used to register the FrameDrawerPrivate instance to IconLoader
*/
-void HbIconLoader::storeFrameDrawerInfo( HbFrameDrawerPrivate *frameDrawer )
+void HbIconLoader::storeFrameDrawerInfo(HbFrameDrawerPrivate *frameDrawer)
{
frameDrawerInstanceList.append(frameDrawer);
}
@@ -779,9 +794,9 @@
/*!
This function is used to unregister the FrameDrawerPrivate instance from IconLoader
*/
-void HbIconLoader::removeFrameDrawerInfo( HbFrameDrawerPrivate *frameDrawer )
+void HbIconLoader::removeFrameDrawerInfo(HbFrameDrawerPrivate *frameDrawer)
{
- frameDrawerInstanceList.removeOne(frameDrawer);
+ frameDrawerInstanceList.removeOne(frameDrawer);
}
void HbIconLoader::resolveCleanIconName(HbIconLoadingParams ¶ms) const
@@ -790,7 +805,7 @@
if (params.iconName.isEmpty() && params.options.testFlag(ReturnUnknownIcon)) {
params.cleanIconName = QString(s_unknown);
} else {
- params.cleanIconName = params.iconName;
+ params.cleanIconName = params.iconName;
}
}
@@ -809,7 +824,7 @@
QList<HbIconAnimationDefinition::AnimationFrame> frameDefs = def.frameList();
QList<HbIconAnimationFrameSet::FrameData> frameList;
-
+
#ifdef HB_ICON_TRACES
if (!params.animator) {
qDebug() << "HbIconLoader: no animator ptr provided, loading only frame 1 out of" << frameDefs.count();
@@ -844,15 +859,15 @@
// Frame-by-frame animations are always loaded in normal mode.
// The mode is applied when the icon is painted.
newFrame.pixmap = HbIconLoader::loadIcon(
- frame.iconName,
- params.purpose,
- params.size,
- params.aspectRatioMode,
- QIcon::Normal,
- params.options,
- 0,
- params.color);
-
+ frame.iconName,
+ params.purpose,
+ params.size,
+ params.aspectRatioMode,
+ QIcon::Normal,
+ params.options,
+ 0,
+ params.color);
+
newFrame.duration = frame.duration;
newFrame.assignJumps(frame.jumps);
}
@@ -882,7 +897,7 @@
// Take default size from the first frame
QSizeF renderSize = QSizeF(params.canvasPixmap.size());
- if(!params.isDefaultSize) {
+ if (!params.isDefaultSize) {
renderSize.scale(params.size, params.aspectRatioMode);
} else if (params.options.testFlag(ResolutionCorrected)) {
applyResolutionCorrection(renderSize);
@@ -928,9 +943,9 @@
/*!
* \fn HbIconImpl *HbIconLoader::getIconFromServer()
- *
+ *
* Initiate an IPC to themeserver to get the icon-data from the server.
- *
+ *
*/
HbIconImpl *HbIconLoader::getIconFromServer(HbIconLoadingParams ¶ms)
{
@@ -955,7 +970,7 @@
//Creates HbIconImpl instance based on the type of data returned by themeserver.
//HbIconImpl thus created could be any one of the following impl-types:
- //1. HbSgImageIconImpl
+ //1. HbSgImageIconImpl
//2. HbNvgIconImpl
//3. HbPixmapIconImpl
icon = HbIconImplCreator::createIconImpl(iconInfo, params);
@@ -979,7 +994,7 @@
if (svgRenderer && svgRenderer->isValid()) {
renderSize = QSizeF(svgRenderer->defaultSize());
- if(!params.isDefaultSize) {
+ if (!params.isDefaultSize) {
renderSize.scale(params.size, params.aspectRatioMode);
} else if (params.options.testFlag(ResolutionCorrected)) {
applyResolutionCorrection(renderSize);
@@ -1030,7 +1045,7 @@
svgRenderer->render(&painter, QRectF(QPointF(), renderSize.toSize()));
painter.end();
}
-
+
source->releaseSvgRenderer();
}
@@ -1047,7 +1062,7 @@
qreal sy = 1.0;
bool scale = false;
- if(!params.isDefaultSize) {
+ if (!params.isDefaultSize) {
scale = true;
renderSize.scale(params.size, params.aspectRatioMode);
} else if (params.options.testFlag(ResolutionCorrected)) {
@@ -1059,7 +1074,7 @@
}
if (scale) {
- // Determine scale factor as QPicture doesn't allow for scaling
+ // Determine scale factor as QPicture doesn't allow for scaling
sx = renderSize.width() / picSize.width();
sy = renderSize.height() / picSize.height();
}
@@ -1089,7 +1104,7 @@
if (imgRenderer && imgRenderer->canRead()) {
renderSize = QSizeF(imgRenderer->size());
- if(!params.isDefaultSize) {
+ if (!params.isDefaultSize) {
renderSize.scale(params.size, params.aspectRatioMode);
} else if (params.options.testFlag(ResolutionCorrected)) {
applyResolutionCorrection(renderSize);
@@ -1146,7 +1161,7 @@
QImage img = imgRenderer->read();
params.canvasPixmap = QPixmap::fromImage(img);
}
-
+
source->releaseImageReader();
}
@@ -1165,20 +1180,20 @@
// Smooth scaling is very expensive (size^2). Therefore we reduce the size
// to 1.5 of the destination size and using fast transformation.
// Therefore we speed up but don't loose quality..
- if ( pm.size().width() > ( 4 * params.size.toSize().width() ) ) {
+ if (pm.size().width() > (4 * params.size.toSize().width())) {
// Improve scaling speed by add an intermediate fast transformation..
- QSize intermediate_size = QSize( params.size.toSize().width() * 2, params.size.toSize().height() * 2 );
+ QSize intermediate_size = QSize(params.size.toSize().width() * 2, params.size.toSize().height() * 2);
pm = pm.scaled(
- intermediate_size,
- params.aspectRatioMode,
- Qt::FastTransformation ); // Cheap operation!
+ intermediate_size,
+ params.aspectRatioMode,
+ Qt::FastTransformation); // Cheap operation!
}
#endif // ENABLE_EXPERIMENTAL_RESIZE_BOOST__
pm = pm.scaled(
- params.size.toSize(),
- params.aspectRatioMode,
- Qt::SmoothTransformation); // Expensive operation!
+ params.size.toSize(),
+ params.aspectRatioMode,
+ Qt::SmoothTransformation); // Expensive operation!
#ifdef ENABLE_EXPERIMENTAL_RESIZE_BOOST__
}
@@ -1191,14 +1206,14 @@
/*!
* \fn void HbIconLoader::switchRenderingMode()
- *
+ *
* This function gets notified when the rendering mode of the application changes e.g
- * ( Hardware - Software rendering or vice versa ). If the mode is changed from
+ * ( Hardware - Software rendering or vice versa ). If the mode is changed from
* Hardware to Software, all Hardware rendered icons will release the GPU resources.
- * This function also initiates an IPC call to ThemeServer, so that the server
- * can do its part of cleanup.
- * \a newRenderMode new rendering mode of application
- */
+ * This function also initiates an IPC call to ThemeServer, so that the server
+ * can do its part of cleanup.
+ * \a newRenderMode new rendering mode of application
+ */
void HbIconLoader::switchRenderingMode(HbRenderingMode newRenderMode)
{
@@ -1211,7 +1226,7 @@
if (newRenderMode == ESWRendering) {
// switching from HW to SW mode
freeGpuIconData();
- }
+ }
if (HbThemeClient::global()->switchRenderingMode(newRenderMode)) {
renderMode = newRenderMode;
}
@@ -1230,23 +1245,23 @@
/*!
* \fn HbIconImpl* HbIconLoader::loadIcon()
- *
+ *
* This function is responsible for loading a single-piece icon .
* First it checks whether the icon is present on the application (client)cache,
* if found it increments the ref-count of the HbIconImpl and returns. If the icon
* is not found in the client's impl-cache, it initiates an IPC to themeserver
* to load the icon. It receives HbSharedIconInfo from themeserver, creates a HbIconImpl
* from this data, inserts this into client's icon-impl-cache and returns.
- *
- */
+ *
+ */
HbIconImpl *HbIconLoader::loadIcon(
const QString &iconName,
- IconDataType type,
- HbIconLoader::Purpose purpose,
- const QSizeF &size,
- Qt::AspectRatioMode aspectRatioMode,
- QIcon::Mode mode,
- IconLoaderOptions options,
+ IconDataType type,
+ HbIconLoader::Purpose purpose,
+ const QSizeF &size,
+ Qt::AspectRatioMode aspectRatioMode,
+ QIcon::Mode mode,
+ IconLoaderOptions options,
HbIconAnimator *animator,
const QColor &color)
{
@@ -1263,9 +1278,9 @@
}
qDebug() << debugString;
#endif
- Q_UNUSED( type )
+ Q_UNUSED(type)
- HbIconImpl* icon = 0;
+ HbIconImpl *icon = 0;
if (!size.isValid()) {
return 0;
@@ -1281,7 +1296,7 @@
params.options = options;
params.animator = animator;
params.color = color;
- params.isDefaultSize = ( purpose == AnyPurpose ) && size.isNull();
+ params.isDefaultSize = (purpose == AnyPurpose) && size.isNull();
params.mirrored = options.testFlag(HorizontallyMirrored);
params.mirroredIconFound = false;
params.canCache = true;
@@ -1317,24 +1332,24 @@
// Step 2: There was no animation definition, try get icon from server
if (!params.animationCreated) {
-
+
#ifdef HB_ICONIMPL_CACHE
- QByteArray cacheKey = d->createCacheKeyFrom( params.iconName,
- params.size,
- params.aspectRatioMode,
- params.mode,
- params.mirrored,
- params.color,
- params.renderMode );
- //look up in the local iconImplCache.
+ QByteArray cacheKey = d->createCacheKeyFrom(params.iconName,
+ params.size,
+ params.aspectRatioMode,
+ params.mode,
+ params.mirrored,
+ params.color,
+ params.renderMode);
+ //look up in the local iconImplCache.
//If found return the ptr directly
if (iconImplCache.contains(cacheKey)) {
- HbIconImpl * ptr = iconImplCache.value(cacheKey);
+ HbIconImpl *ptr = iconImplCache.value(cacheKey);
ptr->incrementRefCount();
#ifdef HB_ICON_CACHE_DEBUG
- qDebug() << "HbIconLoader::loadIcon(): " << "Cache hit in iconImplCache for" << params.iconName<<params.size.height() <<"X"<< params.size.width() ;
- qDebug() << "HbIconLoader::loadIcon(): Client RefCount now = " <<ptr->refCount();
-#endif
+ qDebug() << "HbIconLoader::loadIcon(): " << "Cache hit in iconImplCache for" << params.iconName << params.size.height() << "X" << params.size.width() ;
+ qDebug() << "HbIconLoader::loadIcon(): Client RefCount now = " << ptr->refCount();
+#endif
return ptr;
}
#endif
@@ -1360,11 +1375,11 @@
#ifdef Q_OS_SYMBIAN
GET_MEMORY_MANAGER(HbMemoryManager::SharedMemory)
// Try to take data from server if parameters don't prevent it
- if (!options.testFlag(DoNotCache)
- && format != "MNG"
- && format != "GIF"
- && !iconName.startsWith(':') // not using server for app's own resources (iconName is a logical name for theme elements)
- && manager ) {
+ if (!options.testFlag(DoNotCache)
+ && format != "MNG"
+ && format != "GIF"
+ && !iconName.startsWith(':') // not using server for app's own resources (iconName is a logical name for theme elements)
+ && manager) {
//Initiate an IPC to themeserver to get the icon-data from the server.
icon = getIconFromServer(params);
@@ -1373,7 +1388,7 @@
#ifdef HB_ICONIMPL_CACHE
iconImplCache.insert(cacheKey, icon);
#ifdef HB_ICON_CACHE_DEBUG
- qDebug() <<"HbIconLoader::loadIcon(): " << params.iconName << " inserted into impl-cache, ref-count now = " << icon->refCount();
+ qDebug() << "HbIconLoader::loadIcon(): " << params.iconName << " inserted into impl-cache, ref-count now = " << icon->refCount();
#endif
#endif
@@ -1401,7 +1416,7 @@
// Apply mirroring if required
if (params.mirrored && !params.mirroredIconFound) {
QTransform t;
- t.scale(-1,1);
+ t.scale(-1, 1);
params.canvasPixmap = params.canvasPixmap.transformed(t);
}
}
@@ -1414,11 +1429,11 @@
params.canvasPixmap = QApplication::style()->generatedIconPixmap(mode, params.canvasPixmap, &opt);
}
}
-
+
if ((params.color.isValid()) && (params.mode != QIcon::Disabled)) {
QPixmap &pm = params.canvasPixmap;
- if(!pm.isNull()) {
- QPixmap mask = pm.alphaChannel();
+ if (!pm.isNull()) {
+ QPixmap mask = pm.alphaChannel();
pm.fill(color);
pm.setAlphaChannel(mask);
}
@@ -1434,30 +1449,30 @@
/*!
* \fn HbIconImpl* HbIconLoader::loadMultiPieceIcon()
- *
+ *
* This function is responsible for loading a multi-piece icon (e.g. 3-piece or 9-piece).
* First it checks whether the consolidated (stitched) icon is present in the application (client)
* cache, if found it increments the ref-count of the HbIconImpl and returns. If the icon
* is not found in the client's impl-cache, it initiates an IPC to themeserver
* to try to load the consolidated icon. If the consolidated (stitched) icon fails in themeserver, the server
* returns a list of icon-data for individual pieces. Each of these pieces will be painted separately
- *
+ *
*/
-HbIconImpl* HbIconLoader::loadMultiPieceIcon(const QStringList &listOfIcons,
- HbMultiPartSizeData &multiPartIconData,
- const QSizeF &size,
- Qt::AspectRatioMode aspectRatioMode,
- QIcon::Mode mode,
- IconLoaderOptions options,
- QVector<HbIconImpl *> &multiPieceImpls,
- const QColor &color)
-{
+HbIconImpl *HbIconLoader::loadMultiPieceIcon(const QStringList &listOfIcons,
+ HbMultiPartSizeData &multiPartIconData,
+ const QSizeF &size,
+ Qt::AspectRatioMode aspectRatioMode,
+ QIcon::Mode mode,
+ IconLoaderOptions options,
+ QVector<HbIconImpl *> &multiPieceImpls,
+ const QColor &color)
+{
Q_UNUSED(color);
- HbIconImpl* icon = 0;
+ HbIconImpl *icon = 0;
if (listOfIcons.count() == 0) {
return icon;
}
-
+
// Whether the icon should be horizontally mirrored
bool mirrored = options.testFlag(HorizontallyMirrored);
@@ -1470,15 +1485,15 @@
#if defined(HB_ICONIMPL_CACHE)
QByteArray cacheKey = d->createCacheKeyFrom(multiPartIconData.multiPartIconId,
- size,
- aspectRatioMode,
- mode,
- mirrored,
- color,
- renderMode);
+ size,
+ aspectRatioMode,
+ mode,
+ mirrored,
+ color,
+ renderMode);
//If consolidated icon found in the client's cache, increment ref-count and return
if (iconImplCache.contains(cacheKey)) {
- HbIconImpl * ptr = iconImplCache.value(cacheKey);
+ HbIconImpl *ptr = iconImplCache.value(cacheKey);
ptr->incrementRefCount();
#ifdef HB_ICON_CACHE_DEBUG
qDebug() << "HbIconLoader::loadMultiPieceIcon()" << "Cache hit in iconImplCache " << multiPartIconData.multiPartIconId << size.height() << "X" << size.width() ;
@@ -1506,8 +1521,8 @@
//If consolidated icon was not found in the client's cache, initiate an IPC to load
//the consolidated icon on themeserver
iconInfo = HbThemeClient::global()->getMultiPartIconInfo(iconPathList,
- multiPartIconData, size, aspectRatioMode, mode,
- (mirrored && !mirroredIconFound), options, color, renderMode);
+ multiPartIconData, size, aspectRatioMode, mode,
+ (mirrored && !mirroredIconFound), options, color, renderMode);
#ifdef HB_ICON_TRACES
qDebug() << "HbIconLoader::getMultiPartIconInfo, offset from server: " << iconInfo.pixmapData.offset << iconPathList;
@@ -1557,14 +1572,14 @@
getMultiIconImplFromServer(iconPathList, sizeList,
aspectRatioMode,
mode,
- mirrored,
+ mirrored,
mirroredIconFound,
options,
color,
HbIconLoader::AnyType,
HbIconLoader::AnyPurpose,
multiPieceImpls,
- renderMode);
+ renderMode);
#else
//For OS other than Symbian, call HbIconLoader::loadIcon to individually load icons
for (int i = 0; i < count; i++) {
@@ -1587,7 +1602,7 @@
}
// Initiates an IPC call to the ThemeServer to unload ( decrement ref count ) the icon
-void HbIconLoader::unLoadIcon(HbIconImpl * icon, bool unloadedByServer)
+void HbIconLoader::unLoadIcon(HbIconImpl *icon, bool unloadedByServer)
{
if (!icon) {
return;
@@ -1597,13 +1612,13 @@
if (icon->refCount() == 0 && icon->isCreatedOnServer()) {
if (!unloadedByServer) {
- HbThemeClient::global()->unloadIcon(icon->iconFileName(),
- icon->keySize(),
- icon->iconAspectRatioMode(),
- icon->iconMode(),
- icon->isMirrored(),
- icon->color(),
- icon->iconRenderingMode()
+ HbThemeClient::global()->unloadIcon(icon->iconFileName(),
+ icon->keySize(),
+ icon->iconAspectRatioMode(),
+ icon->iconMode(),
+ icon->isMirrored(),
+ icon->color(),
+ icon->iconRenderingMode()
);
}
#ifdef HB_ICONIMPL_CACHE
@@ -1638,45 +1653,45 @@
/*!
* \fn void HbIconLoader::getMultiIconImplFromServer()
- *
+ *
* This function is responsible for loading individual pieces of a multi-piece icon.
* This gets called if the consolidated icon-creation process on themeserver has failed.
* This function initiates a single IPC to themeserver in which it sends out icon-parameters
- * for each of the frame-items and gets back a list of HbSharedIconInfo corresponding to
+ * for each of the frame-items and gets back a list of HbSharedIconInfo corresponding to
* individual pieces.
- *
+ *
*/
void HbIconLoader::getMultiIconImplFromServer(QStringList &multiPartIconList,
- QVector<QSizeF> &sizeList,
- Qt::AspectRatioMode aspectRatioMode,
- QIcon::Mode mode,
- bool mirrored,
- bool mirroredIconFound,
- HbIconLoader::IconLoaderOptions options,
- const QColor &color,
- HbIconLoader::IconDataType type,
- HbIconLoader::Purpose,
- QVector<HbIconImpl *> & iconImplList,
- HbRenderingMode currRenderMode)
+ QVector<QSizeF> &sizeList,
+ Qt::AspectRatioMode aspectRatioMode,
+ QIcon::Mode mode,
+ bool mirrored,
+ bool mirroredIconFound,
+ HbIconLoader::IconLoaderOptions options,
+ const QColor &color,
+ HbIconLoader::IconDataType type,
+ HbIconLoader::Purpose,
+ QVector<HbIconImpl *> & iconImplList,
+ HbRenderingMode currRenderMode)
{
Q_UNUSED(type);
QVector<int> posList;
#ifdef HB_ICONIMPL_CACHE
// search the client cache first before asking the server
- for(int i = 0; i < multiPartIconList.count(); i++) {
- QByteArray cacheKey = d->createCacheKeyFrom( multiPartIconList[i],
- sizeList[i],
- aspectRatioMode,
- mode,
- mirrored,
- color,
- currRenderMode );
- //look up in the local iconImplCache.
+ for (int i = 0; i < multiPartIconList.count(); i++) {
+ QByteArray cacheKey = d->createCacheKeyFrom(multiPartIconList[i],
+ sizeList[i],
+ aspectRatioMode,
+ mode,
+ mirrored,
+ color,
+ currRenderMode);
+ //look up in the local iconImplCache.
//If found return the ptr directly
- HbIconImpl * ptr = 0;
+ HbIconImpl *ptr = 0;
if (iconImplCache.contains(cacheKey)) {
ptr = iconImplCache.value(cacheKey);
- // if a specific frame-item is found in local impl-cache,
+ // if a specific frame-item is found in local impl-cache,
// increment the ref count and remove the entry from the list that needs to be sent to server.
ptr->incrementRefCount();
#ifdef HB_ICON_CACHE_DEBUG
@@ -1704,7 +1719,7 @@
HbSharedIconInfoList iconInfoList = HbThemeClient::global()->getMultiIconInfo(multiPartIconList, sizeList,
aspectRatioMode, mode, mirrored, options, color, currRenderMode);
- HbIconImpl* impl = 0;
+ HbIconImpl *impl = 0;
HbIconLoadingParams params;
@@ -1722,13 +1737,13 @@
impl = HbIconImplCreator::createIconImpl(iconInfoList.icon[i], params);
#ifdef HB_ICONIMPL_CACHE
- QByteArray cacheKey = d->createCacheKeyFrom( multiPartIconList[i],
- sizeList.at(i) ,
- aspectRatioMode,
- mode,
- mirrored,
- color,
- currRenderMode );
+ QByteArray cacheKey = d->createCacheKeyFrom(multiPartIconList[i],
+ sizeList.at(i) ,
+ aspectRatioMode,
+ mode,
+ mirrored,
+ color,
+ currRenderMode);
iconImplCache.insert(cacheKey, impl);
#ifdef HB_ICON_CACHE_DEBUG
qDebug() << "HbIconLoader::getMultiIconImplFromServer(): " << params.iconName << " inserted into impl-cache, ref-count now = " << impl->refCount();
@@ -1770,35 +1785,35 @@
{
QStringList iconNameList;
QVector<QSizeF> sizeList;
-
- // Decrement the ref count. If its zero, remove it from the client cache (if defined) and
+
+ // Decrement the ref count. If its zero, remove it from the client cache (if defined) and
// then send to server for unload.
- foreach(HbIconImpl* impl, multiPieceImpls) {
+ foreach(HbIconImpl * impl, multiPieceImpls) {
impl->decrementRefCount();
- if (impl->refCount() == 0 && impl->isCreatedOnServer()) {
-#ifdef HB_ICONIMPL_CACHE
+ if (impl->refCount() == 0 && impl->isCreatedOnServer()) {
+#ifdef HB_ICONIMPL_CACHE
int rem = iconImplCache.remove(iconImplCache.key(impl));
if (rem > 0) {
#ifdef HB_ICON_TRACES
- qDebug()<<"HbIconLoader::unLoadMultiIcon :Removed from HbIconImpl Cache "<<rem<< impl->iconFileName()<< impl->keySize().height()<<"X"<<impl->keySize().width() ;
-#endif
+ qDebug() << "HbIconLoader::unLoadMultiIcon :Removed from HbIconImpl Cache " << rem << impl->iconFileName() << impl->keySize().height() << "X" << impl->keySize().width() ;
+#endif
}
-#endif
+#endif
// List of icons to be unloaded.
- iconNameList<<impl->iconFileName();
- sizeList<<impl->keySize();
+ iconNameList << impl->iconFileName();
+ sizeList << impl->keySize();
}
}
-
- if(iconNameList.count() > 0) {
- HbThemeClient::global()->unLoadMultiIcon(iconNameList,
- sizeList,
- multiPieceImpls[0]->iconAspectRatioMode(),
- multiPieceImpls[0]->iconMode(),
- multiPieceImpls[0]->isMirrored(),
- multiPieceImpls[0]->color(),
- multiPieceImpls[0]->iconRenderingMode()
- );
+
+ if (iconNameList.count() > 0) {
+ HbThemeClient::global()->unLoadMultiIcon(iconNameList,
+ sizeList,
+ multiPieceImpls[0]->iconAspectRatioMode(),
+ multiPieceImpls[0]->iconMode(),
+ multiPieceImpls[0]->isMirrored(),
+ multiPieceImpls[0]->color(),
+ multiPieceImpls[0]->iconRenderingMode()
+ );
}
}
--- a/src/hbcore/image/hbiconloader_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/image/hbiconloader_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -45,7 +45,7 @@
class HB_CORE_PRIVATE_EXPORT HbIconLoader : public QObject
{
- Q_OBJECT
+ Q_OBJECT
public:
enum Purpose {
@@ -74,9 +74,9 @@
NoAutoStartAnimation = 0x40
};
- Q_DECLARE_FLAGS (IconLoaderOptions,
+ Q_DECLARE_FLAGS(IconLoaderOptions,
IconLoaderOption)
-
+
explicit HbIconLoader(const QString &appName = QString(), QObject *parent = 0);
~HbIconLoader();
@@ -94,7 +94,7 @@
HbIconAnimator *animator = 0,
const QColor &color = QColor());
- HbIconImpl* loadIcon(
+ HbIconImpl *loadIcon(
const QString &iconName,
HbIconLoader::IconDataType type,
HbIconLoader::Purpose = AnyPurpose,
@@ -105,22 +105,22 @@
HbIconAnimator *animator = 0,
const QColor &color = QColor());
- void unLoadIcon(HbIconImpl * icon, bool unloadedByServer = false);
+ void unLoadIcon(HbIconImpl *icon, bool unloadedByServer = false);
void unLoadMultiIcon(QVector<HbIconImpl *> &multiPieceImpls);
-
- HbIconImpl* loadMultiPieceIcon(const QStringList &listOfIcons,
- HbMultiPartSizeData &multiPartIconData,
- const QSizeF &size,
- Qt::AspectRatioMode aspectRatioMode,
- QIcon::Mode mode,
- IconLoaderOptions options,
- QVector<HbIconImpl *> &multiPieceImpls,
- const QColor &color);
+
+ HbIconImpl *loadMultiPieceIcon(const QStringList &listOfIcons,
+ HbMultiPartSizeData &multiPartIconData,
+ const QSizeF &size,
+ Qt::AspectRatioMode aspectRatioMode,
+ QIcon::Mode mode,
+ IconLoaderOptions options,
+ QVector<HbIconImpl *> &multiPieceImpls,
+ const QColor &color);
QSizeF defaultSize(
const QString &iconName,
const QString &appName = QString(),
- IconLoaderOptions options = IconLoaderOptions(ReturnUnknownIcon | BitmapIcons | VectorIcons ));
+ IconLoaderOptions options = IconLoaderOptions(ReturnUnknownIcon | BitmapIcons | VectorIcons));
QSizeF size(HbIconLoader::Purpose) const;
@@ -128,10 +128,10 @@
HbIconSource *getIconSource(const QString &filename, const QString &format);
bool isAutomaticallyMirrored(const QString &iconName);
- void setSourceResolution( int resolution );
+ void setSourceResolution(int resolution);
int sourceResolution() const;
- void setResolution( int resolution );
+ void setResolution(int resolution);
int resolution() const;
void applyResolutionCorrection(QSizeF &size);
@@ -140,14 +140,14 @@
Hb::ResourceType resType = Hb::IconResource);
void switchRenderingMode(HbRenderingMode newRenderMode);
void updateRenderingMode(QPaintEngine::Type type);
- void storeIconEngineInfo( HbIconEngine *iconEngine );
- void removeIconEngineInfo( HbIconEngine *iconEngine );
-
- void storeFrameDrawerInfo( HbFrameDrawerPrivate *frameDrawer );
- void removeFrameDrawerInfo( HbFrameDrawerPrivate *frameDrawer );
+ void storeIconEngineInfo(HbIconEngine *iconEngine);
+ void removeIconEngineInfo(HbIconEngine *iconEngine);
+
+ void storeFrameDrawerInfo(HbFrameDrawerPrivate *frameDrawer);
+ void removeFrameDrawerInfo(HbFrameDrawerPrivate *frameDrawer);
void freeGpuIconData();
- void removeItemInCache( HbIconImpl *iconImpl );
+ void removeItemInCache(HbIconImpl *iconImpl);
void handleForegroundLost();
@@ -155,7 +155,7 @@
void defaultSizeAdjustmentChanged();
private slots:
- void themeChange( const QStringList &updatedFiles );
+ void themeChange(const QStringList &updatedFiles);
void destroy();
void updateLayoutDirection();
@@ -165,7 +165,7 @@
void loadAnimation(HbIconAnimationDefinition &def, HbIconLoadingParams ¶ms);
QString resolveIconFileName(HbIconLoadingParams ¶ms);
HbIconImpl *getIconFromServer(HbIconLoadingParams ¶ms);
- void getMultiIconImplFromServer(QStringList &multiPartIconList,
+ void getMultiIconImplFromServer(QStringList &multiPartIconList,
QVector<QSizeF> &sizeList,
Qt::AspectRatioMode aspectRatioMode,
QIcon::Mode mode,
@@ -177,19 +177,19 @@
HbIconLoader::Purpose,
QVector<HbIconImpl *> & iconImplList,
HbRenderingMode renderMode);
-
+
void loadSvgIcon(HbIconLoadingParams ¶ms);
void loadPictureIcon(HbIconLoadingParams ¶ms);
void loadAnimatedIcon(HbIconLoadingParams ¶ms, const QString &format);
void loadPixmapIcon(HbIconLoadingParams ¶ms, const QString &format);
- QList< HbFrameDrawerPrivate *> frameDrawerInstanceList;
+ QList< HbFrameDrawerPrivate *> frameDrawerInstanceList;
QList< HbIconEngine *> iconEngineList;
friend class HbApplication;
friend class HbIconLoaderPrivate;
private:
- Q_DISABLE_COPY (HbIconLoader)
+ Q_DISABLE_COPY(HbIconLoader)
HbIconLoaderPrivate *d;
HbRenderingMode renderMode;
};
--- a/src/hbcore/image/hbiconsource.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/image/hbiconsource.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -60,19 +60,18 @@
}
if (loweredIconPath.endsWith(QLatin1String(".svg"))
- || loweredIconPath.endsWith(QLatin1String(".png"))
- || loweredIconPath.endsWith(QLatin1String(".mng"))
- || loweredIconPath.endsWith(QLatin1String(".gif"))
- || loweredIconPath.endsWith(QLatin1String(".xpm"))
- || loweredIconPath.endsWith(QLatin1String(".jpg"))
- || loweredIconPath.endsWith(QLatin1String(".nvg"))) {
+ || loweredIconPath.endsWith(QLatin1String(".png"))
+ || loweredIconPath.endsWith(QLatin1String(".mng"))
+ || loweredIconPath.endsWith(QLatin1String(".gif"))
+ || loweredIconPath.endsWith(QLatin1String(".xpm"))
+ || loweredIconPath.endsWith(QLatin1String(".jpg"))
+ || loweredIconPath.endsWith(QLatin1String(".nvg"))) {
return iconPath.right(3).toUpper();
}
if (loweredIconPath.endsWith(QLatin1String(".xml"))
- || loweredIconPath.endsWith(QLatin1String(".axml"))
- || loweredIconPath.endsWith(QLatin1String(".fxml")))
- {
+ || loweredIconPath.endsWith(QLatin1String(".axml"))
+ || loweredIconPath.endsWith(QLatin1String(".fxml"))) {
return "BLOB";
}
@@ -86,22 +85,22 @@
// to avoid NVG dependency in ThemeIndexer
QSize nvgContentDimensions(const QByteArray &buffer)
{
- QSize ret(0,0);
- if (buffer.length() < static_cast<qint32>(NVG_VIEWBOX_HEIGHT_OFS + sizeof (float))){
+ QSize ret(0, 0);
+ if (buffer.length() < static_cast<qint32>(NVG_VIEWBOX_HEIGHT_OFS + sizeof(float))) {
ret = QSize(0, 0);
- }
-
- const quint8* lBuf = (quint8*) buffer.data();
- if((buffer.length() > NVG_VIEWBOX_WIDTH_OFS) && (buffer.length() > NVG_VIEWBOX_HEIGHT_OFS)) {
+ }
+
+ const quint8 *lBuf = (quint8 *) buffer.data();
+ if ((buffer.length() > NVG_VIEWBOX_WIDTH_OFS) && (buffer.length() > NVG_VIEWBOX_HEIGHT_OFS)) {
// Do not change to qreal, no matter what krazy says.
- float lViewboxWidth = * (float*)(lBuf + NVG_VIEWBOX_WIDTH_OFS);
- float lViewboxHeight = * (float*)(lBuf + NVG_VIEWBOX_HEIGHT_OFS);
+ float lViewboxWidth = * (float *)(lBuf + NVG_VIEWBOX_WIDTH_OFS);
+ float lViewboxHeight = * (float *)(lBuf + NVG_VIEWBOX_HEIGHT_OFS);
- if (lViewboxWidth > 0 && lViewboxHeight > 0) {
- ret = QSize((int)lViewboxWidth, (int)lViewboxHeight);
- } else {
- ret = QSize(0, 0);
- }
+ if (lViewboxWidth > 0 && lViewboxHeight > 0) {
+ ret = QSize((int)lViewboxWidth, (int)lViewboxHeight);
+ } else {
+ ret = QSize(0, 0);
+ }
}
return ret;
}
@@ -111,7 +110,7 @@
/*!
\class HbIconSource
-
+
\brief Encapsulates access (size and pixel data reading) to image files.
\internal
@@ -174,37 +173,35 @@
if (mType == "NVG") {
#ifndef HB_BOOTSTRAPPED
#ifdef HB_NVG_CS_ICON
- if(!mByteArray){
- QFile file(mFilename);
- if (!file.open(QIODevice::NotOpen | QIODevice::ReadOnly)) {
- return QSizeF();
- }
- mByteArray = new QByteArray(file.readAll());
- }
- HbNvgEngine nvgEngine;
- mDefaultSize = nvgEngine.contentDimensions(*mByteArray);
+ if (!mByteArray) {
+ QFile file(mFilename);
+ if (!file.open(QIODevice::NotOpen | QIODevice::ReadOnly)) {
+ return QSizeF();
+ }
+ mByteArray = new QByteArray(file.readAll());
+ }
+ HbNvgEngine nvgEngine;
+ mDefaultSize = nvgEngine.contentDimensions(*mByteArray);
#endif // HB_NVG_CS_ICON
#else // HB_BOOTSTRAPPED
- if(!mByteArray){
- QFile file(mFilename);
- if (!file.open(QIODevice::NotOpen | QIODevice::ReadOnly)) {
- return QSizeF();
- }
- mByteArray = new QByteArray (file.readAll());
- }
+ if (!mByteArray) {
+ QFile file(mFilename);
+ if (!file.open(QIODevice::NotOpen | QIODevice::ReadOnly)) {
+ return QSizeF();
+ }
+ mByteArray = new QByteArray(file.readAll());
+ }
- mDefaultSize = nvgContentDimensions(*mByteArray);
+ mDefaultSize = nvgContentDimensions(*mByteArray);
#endif
- }
- else if (mType == "SVG") {
+ } else if (mType == "SVG") {
QSvgRenderer *renderer = svgRenderer();
if (renderer) { // isValid() is already checked in svgRenderer()
mDefaultSize = renderer->defaultSize();
}
releaseSvgRenderer();
- }
- else if (mType == "PIC") {
+ } else if (mType == "PIC") {
if (!mPicture) {
mPicture = new QPicture;
mPicture->load(mFilename);
@@ -230,8 +227,7 @@
}
}
releaseImageReader();
- }
- else if (mType != "BLOB") {
+ } else if (mType != "BLOB") {
if (!mPixmap) {
mPixmap = new QPixmap(mFilename);
}
@@ -271,8 +267,8 @@
{
mSvgRenderer = 0;
}
-
-QByteArray* HbIconSource::byteArray()
+
+QByteArray *HbIconSource::byteArray()
{
if (!mByteArray) {
#ifdef HB_NVG_CS_ICON
@@ -283,7 +279,7 @@
mByteArray = new QByteArray(file.readAll());
#endif
}
-
+
if (mByteArray && !mByteArray->isEmpty()) {
return mByteArray;
} else {
--- a/src/hbcore/image/hbiconsource_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/image/hbiconsource_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -73,7 +73,7 @@
private:
bool canKeepOpen() const;
-
+
QString mFilename;
QString mFullFilename;
QString mType;
@@ -85,7 +85,7 @@
// Stored default size
QSize mDefaultSize;
-
+
QSvgRenderer *mSvgRenderer;
QImageReader *mImageReader;
};
--- a/src/hbcore/image/hbicontheme.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/image/hbicontheme.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -30,7 +30,6 @@
#include <QtCore/QDebug>
#include <QtCore/QDir>
-#include <hbstandarddirs_p.h>
#include <hbiniparser_p.h>
#define THEME_INDEX_FILE "index.theme"
--- a/src/hbcore/image/hbnvgiconimpl_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/image/hbnvgiconimpl_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -339,6 +339,20 @@
EGL_DESTROY_CONTEXT(display, newContext);
currentPixmap = QPixmap::fromImage(image);
+
+ // Apply mode
+ if (this->mode != QIcon::Normal) {
+ QStyleOption opt(0);
+ opt.palette = QApplication::palette();
+ currentPixmap = QApplication::style()->generatedIconPixmap(this->mode, currentPixmap, &opt);
+ }
+
+ // Apply color
+ if (this->color().isValid() && (this->mode != QIcon::Disabled)) {
+ QPixmap mask = currentPixmap.alphaChannel();
+ currentPixmap.fill(this->color());
+ currentPixmap.setAlphaChannel(mask);
+ }
return currentPixmap;
}
--- a/src/hbcore/image/hbsgimageiconimpl_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/image/hbsgimageiconimpl_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -29,7 +29,7 @@
#include <QImage>
#include <QPaintEngine>
#include <QPaintDevice>
-#include <QGlobal.h>
+#include <qglobal.h>
#include <QStyleOption>
#include <QApplication>
@@ -179,6 +179,20 @@
currentPixmap = QPixmap::fromImage(image);
+ // Apply mode
+ if (this->mode != QIcon::Normal) {
+ QStyleOption opt(0);
+ opt.palette = QApplication::palette();
+ currentPixmap = QApplication::style()->generatedIconPixmap(this->mode, currentPixmap, &opt);
+ }
+
+ // Apply color
+ if (this->color().isValid() && (this->mode != QIcon::Disabled)) {
+ QPixmap mask = currentPixmap.alphaChannel();
+ currentPixmap.fill(this->color());
+ currentPixmap.setAlphaChannel(mask);
+ }
+
vgDestroyImage(localVgImage);
if (eglNewContext != EGL_NO_CONTEXT || eglNewSurface != EGL_NO_SURFACE) {
--- a/src/hbcore/indicatorplugins/hbindicatorpluginmanager.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/indicatorplugins/hbindicatorpluginmanager.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -279,23 +279,14 @@
return indicatorList;
}
-void HbIndicatorPluginManager::connectTo(QObject *widget)
+// Signal active indicators to target
+void HbIndicatorPluginManager::signalActiveIndicators(QObject *target)
{
- widget->disconnect(this);
-
- //connect pluginmanager signals to indicatormenu slots, so that
- //popup will get indicator updates.
- widget->connect(this,
- SIGNAL(indicatorActivated(HbIndicatorInterface*)),
- SLOT(indicatorActivated(HbIndicatorInterface*)));
- widget->connect(this,
- SIGNAL(indicatorRemoved(HbIndicatorInterface*)),
- SLOT(indicatorRemoved(HbIndicatorInterface*)));
QList<HbIndicatorInterface*> addedIndicators = indicators();
if (addedIndicators.count() > 0) {
//initialize popup with added indicators.
- QMetaObject::invokeMethod(widget, "indicatorsActivated",
+ QMetaObject::invokeMethod(target, "indicatorsActivated",
Qt::DirectConnection,
Q_ARG(QList<HbIndicatorInterface*>, addedIndicators));
}
--- a/src/hbcore/indicatorplugins/hbindicatorpluginmanager_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/indicatorplugins/hbindicatorpluginmanager_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -81,7 +81,7 @@
bool removeIndicator(const QString &indicatorType);
QList<IndicatorClientInfo> indicatorClientInfoList() const;
QList<HbIndicatorInterface*> indicators() const;
- void connectTo(QObject *widget);
+ void signalActiveIndicators(QObject *target);
signals:
void indicatorActivated(HbIndicatorInterface *addedIndicator);
void indicatorActivated(const IndicatorClientInfo &clientInfo);
--- a/src/hbcore/inputfw/hbinputcontextproxy.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputcontextproxy.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -29,6 +29,7 @@
#include <QGraphicsProxyWidget>
#include <QGraphicsView>
#include <hbinputmethod.h>
+#include <hbinputsettingproxy.h>
/*!
@alpha
@@ -50,7 +51,7 @@
\sa HbInputMethod
*/
-HbInputContextProxy::HbInputContextProxy(HbInputMethod* target) : mTarget(target)
+HbInputContextProxy::HbInputContextProxy(HbInputMethod *target) : mTarget(target)
{
}
@@ -68,7 +69,7 @@
return mTarget->actions();
}
- return QList<QAction*>();
+ return QList<QAction *>();
}
/*!
@@ -93,10 +94,10 @@
*/
void HbInputContextProxy::setInputFrameworkFocus(QObject *widget)
{
- if(mTarget) {
- if(!widget) {
+ if (mTarget) {
+ if (!widget) {
mTarget->setFocusObject(0);
- } else if (HbInputFocusObject::isEditor(widget) && !HbInputFocusObject::isReadOnlyWidget(widget)) {
+ } else if (HbInputFocusObject::isEditor(widget) && !HbInputFocusObject::isReadOnlyWidget(widget)) {
mTarget->setFocusObject(new HbInputFocusObject(widget));
}
}
@@ -106,25 +107,26 @@
\internal
\reimp
*/
-bool HbInputContextProxy::filterEvent(const QEvent* event)
+bool HbInputContextProxy::filterEvent(const QEvent *event)
{
if (mTarget) {
#if QT_VERSION >= 0x040600
- if (event->type() == QEvent::CloseSoftwareInputPanel) {
+ bool orientationCompleted = HbInputSettingProxy::instance()->orientationChangeCompleted();
+ if (event->type() == QEvent::CloseSoftwareInputPanel && orientationCompleted) {
setInputFrameworkFocus(0);
- return true;
- } else if (event->type() == QEvent::RequestSoftwareInputPanel) {
- if(QWidget * focusedWidget = qApp->focusWidget()) {
+ return true;
+ } else if (event->type() == QEvent::RequestSoftwareInputPanel && orientationCompleted) {
+ if (QWidget *focusedWidget = qApp->focusWidget()) {
// see if the focused widget is graphics view, if so get the focused graphics item in the view
// and acivate inputmethod for the focused graphics item
- if (QGraphicsView * graphicsView = qobject_cast<QGraphicsView*>(focusedWidget)) {
- if (QGraphicsScene * scene = graphicsView->scene()) {
- if (QGraphicsItem * fItem = scene->focusItem()) {
+ if (QGraphicsView *graphicsView = qobject_cast<QGraphicsView *>(focusedWidget)) {
+ if (QGraphicsScene *scene = graphicsView->scene()) {
+ if (QGraphicsItem *fItem = scene->focusItem()) {
QGraphicsProxyWidget *proxy = qgraphicsitem_cast<QGraphicsProxyWidget *>(fItem);
- if (proxy) {
+ if (proxy) {
setInputFrameworkFocus(proxy->widget()->focusWidget());
} else {
- setInputFrameworkFocus(static_cast<QGraphicsWidget*>(fItem));
+ setInputFrameworkFocus(static_cast<QGraphicsWidget *>(fItem));
}
}
}
@@ -142,7 +144,7 @@
const quint32 HbInputContextProxyExternalKeyboardModifier = 0x00200000;
if (event->type() == QEvent::QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
- const QKeyEvent *keyEvent = static_cast<const QKeyEvent*>(event);
+ const QKeyEvent *keyEvent = static_cast<const QKeyEvent *>(event);
if (keyEvent->nativeModifiers() & HbInputContextProxyExternalKeyboardModifier) {
// Operating system indicates that the event originated from an external keyboard.
// We let it pass here untouched.
@@ -150,19 +152,19 @@
mTarget->reset();
}
return false;
- }
- }
+ }
+ }
#endif
- if(event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
- const QKeyEvent *keyEvent = static_cast<const QKeyEvent *>(event);
- if (Qt::Key_unknown == keyEvent->key()) {
- return false;
- }
- }
- return mTarget->filterEvent(event);
- }
+ if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
+ const QKeyEvent *keyEvent = static_cast<const QKeyEvent *>(event);
+ if (Qt::Key_unknown == keyEvent->key()) {
+ return false;
+ }
+ }
+ return mTarget->filterEvent(event);
+ }
- return false;
+ return false;
}
/*!
@@ -209,7 +211,7 @@
\reimp
*/
QString HbInputContextProxy::language()
-{
+{
if (mTarget) {
return mTarget->language();
}
@@ -221,7 +223,7 @@
\internal
\reimp
*/
-void HbInputContextProxy::mouseHandler(int x, QMouseEvent* event)
+void HbInputContextProxy::mouseHandler(int x, QMouseEvent *event)
{
if (mTarget) {
mTarget->mouseHandler(x, event);
@@ -243,7 +245,7 @@
\internal
\reimp
*/
-void HbInputContextProxy::sendEvent(const QInputMethodEvent& event)
+void HbInputContextProxy::sendEvent(const QInputMethodEvent &event)
{
if (mTarget) {
mTarget->sendEvent(event);
@@ -265,7 +267,7 @@
\internal
\reimp
*/
-void HbInputContextProxy::widgetDestroyed(QWidget* widget)
+void HbInputContextProxy::widgetDestroyed(QWidget *widget)
{
if (mTarget) {
mTarget->widgetDestroyed(widget);
@@ -276,7 +278,7 @@
\internal
\reimp
*/
-void HbInputContextProxy::setFocusWidget(QWidget* widget)
+void HbInputContextProxy::setFocusWidget(QWidget *widget)
{
if (mTarget) {
mTarget->setFocusWidget(widget);
--- a/src/hbcore/inputfw/hbinputcontextproxy_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputcontextproxy_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -54,8 +54,8 @@
void reset();
void sendEvent(const QInputMethodEvent &event);
void update();
- void widgetDestroyed(QWidget* widget);
- void setFocusWidget(QWidget* widget);
+ void widgetDestroyed(QWidget *widget);
+ void setFocusWidget(QWidget *widget);
private:
inline bool hasAlreadyInputFrameworkFocus(HbInputMethod *activeMethod, QObject *editorWidget) const;
--- a/src/hbcore/inputfw/hbinputdef.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputdef.h Wed Jun 23 18:33:25 2010 +0300
@@ -63,21 +63,21 @@
keyboards have bit HbQwertyKeyboardMask set and all touch keypads have
bit HbTouchInputMask set.
*/
-enum HbKeyboardTypeFlag
-{
- HbKeyboardNone = 0x00000000,
+enum HbKeyboardTypeFlag {
+ HbKeyboardNone = 0x00000000,
- HbKeyboard12Key = 0x00000001, /**< Deprecated, use HbKeyboardHardwarePortrait instead. */
+ HbKeyboard12Key = 0x00000001, /**< Deprecated, use HbKeyboardHardwarePortrait instead. */
HbKeyboardHardwarePortrait = HbKeyboard12Key, /**< Hardware keyboard for portrait orientation. */
- HbKeyboardQwerty = 0x00000001 | HbQwertyKeyboardMask, /**< Deprecated, use HbKeyboardHardwareLandcape instead */
+ HbKeyboardQwerty = 0x00000001 | HbQwertyKeyboardMask, /**< Deprecated, use HbKeyboardHardwareLandcape instead */
HbKeyboardHardwareLandcape = HbKeyboardQwerty, /**< Hardware keyboard for landscape mode. */
- HbKeyboardVirtual12Key = 0x00000001 | HbTouchInputMask, /**< Deprecated, use HbKeyboardTouchPortrait instead. */
+ HbKeyboardVirtual12Key = 0x00000001 | HbTouchInputMask, /**< Deprecated, use HbKeyboardTouchPortrait instead. */
HbKeyboardTouchPortrait = HbKeyboardVirtual12Key, /**< Touch keyboard for portrait mode. */
- HbKeyboardVirtualQwerty = 0x00000002 | HbTouchInputMask| HbQwertyKeyboardMask, /**< Touchscreen version of qwerty keyboard */
+ HbKeyboardVirtualQwerty = 0x00000002 | HbTouchInputMask | HbQwertyKeyboardMask, /**< Touchscreen version of qwerty keyboard */
HbKeyboardTouchLandscape = HbKeyboardVirtualQwerty, /**< Touch keyboard for landscape mode. */
- HbKeyboardSctPortrait = 0x00000003 | HbTouchInputMask, /**< Special character selection keypad for portrait view */
- HbKeyboardSctLandscape = 0x00000004 | HbTouchInputMask| HbQwertyKeyboardMask, /**< Special character selection keypad for landscape view */
- HbKeyboardHwr = 0x00000005 | HbTouchInputMask| HbHwrKeyboardMask /**< Hand writing recognition keypad */
+ HbKeyboardSctPortrait = 0x00000003 | HbTouchInputMask, /**< Special character selection keypad for portrait view */
+ HbKeyboardSctLandscape = 0x00000004 | HbTouchInputMask | HbQwertyKeyboardMask, /**< Special character selection keypad for landscape view */
+ HbKeyboardHwr = 0x00000005 | HbTouchInputMask | HbHwrKeyboardMask, /**< Hand writing recognition keypad */
+ HbKeyboardVirtual12KeyLabels = 0x00000006 | HbTouchInputMask /**< Key labels for virtual 12 key keyboard */
};
Q_DECLARE_FLAGS(HbKeyboardType, HbKeyboardTypeFlag)
@@ -87,13 +87,12 @@
Enumerates known input modes. Specific bits are reserved
for classifying different input mode types. For example, all Chinese modes
-have bit HbChineseModeMask set and all Japanese modes have
+have bit HbChineseModeMask set and all Japanese modes have
bit HbJapaneseModeMask set. HbInputModeCustom is a special case.
That input mode never appears in standard input mode set, but it must
-be activated separately from UI.
+be activated separately from UI.
*/
-enum HbInputModeTypeFlag
-{
+enum HbInputModeTypeFlag {
HbInputModeNone = 0x00000000,
// Default mode
@@ -103,7 +102,7 @@
HbInputModeNumeric = 0x00000001 | HbNumericModeMask, /**< Numeric input mode */
// Special modes for all languages
- HbInputModeSpeechToText = 0x00000500, /**< Speech-to-text input mode */
+ HbInputModeSpeechToText = 0x00000500, /**< Speech-to-text input mode */
// Chinese modes
HbInputModePinyin = 0x00000001 | HbChineseModeMask, /**< Chinese PinYin input */
@@ -124,7 +123,7 @@
HbInputModeHwrLatinFull = 0x00000002 | HbHwrModeMask, /**< Latin based hand writing recognition, full screen */
HbInputModeHwrChinese = 0x00000003 | HbHwrModeMask | HbChineseModeMask, /**< Chinese hand writing recognition */
HbInputModeHwrChineseFull = 0x00000004 | HbHwrModeMask | HbChineseModeMask, /**< Chinese hand writing recognition, full screen */
-
+
// Custom made mode that does not belong to any pre-existing category
HbInputModeCustom = HbChineseModeMask - 1 /**< Custom input mode */
};
@@ -137,8 +136,7 @@
shift, fn and chr keys. If a modifier bit is set, then the corresponding key
is pressed.
*/
-enum HbModifier
-{
+enum HbModifier {
HbModifierNone = 0x00000000,
HbModifierShiftPressed = 0x00000001, /**< Shift-key is pressed */
HbModifierChrPressed = 0x00000002, /**< Chr-key is pressed */
@@ -151,8 +149,7 @@
Enumerates keyboard setting flags.
*/
-enum HbKeyboardSettingFlag
-{
+enum HbKeyboardSettingFlag {
HbKeyboardSettingNone = 0x00000000,
HbKeyboardSetting12key = 0x00000001,
HbKeyboardSettingQwerty = 0x00000010
@@ -166,8 +163,7 @@
where the framework automatically tries to conclude when upper case
state is needed.
*/
-enum HbTextCase
-{
+enum HbTextCase {
HbTextCaseNone,
HbTextCaseLower, /**< Lower text case. */
HbTextCaseUpper, /**< Upper text case. */
@@ -179,8 +175,7 @@
Enumerates possible states for Fn key.
*/
-enum HbFnState
-{
+enum HbFnState {
HbFnOff, /**< Fn key inactive. */
HbFnNext, /**< Fn key active for the next keypress. */
HbFnOn /**< Fn key locked as active. */
@@ -195,10 +190,9 @@
\sa HbEditorInterface
*/
-enum HbEditorConstraint
-{
+enum HbEditorConstraint {
HbEditorConstraintNone = 0,
- HbEditorConstraintAutoCompletingField = 0x01, /**< This is auto-completing editor. It remebers what has been typed previously to same editor class. */
+ HbEditorConstraintAutoCompletingField = 0x01, /**< This is auto-completing editor. It remembers what has been typed previously to same editor class. */
HbEditorConstraintIgnoreFocus = 0x02, /**< Editor rejects input framework focus. */
HbEditorConstraintFixedInputMode = 0x04, /**< Editor doesn't allow initial input mode to be changed. */
HbEditorConstraintLatinAlphabetOnly = 0x08 /**< Editor allows only languages and input modes that produce latin alphabets. */
@@ -210,8 +204,7 @@
Enumerates known digit type settings.
*/
-enum HbInputDigitType
-{
+enum HbInputDigitType {
HbDigitTypeNone = 0,
HbDigitTypeLatin, /**< Latin digits in use */
HbDigitTypeArabicIndic, /**< Arabic indic digits in use */
@@ -220,11 +213,11 @@
};
/*!
-Enumerates operation modes for touch keypad.
+Enumerates operation modes for touch keypad.
*/
-enum HbKeypadMode{
+enum HbKeypadMode {
EModeAbc, /**< Display aplhanumeric keypad */
- EModeNumeric /**< Display number mode keypad */
+ EModeNumeric /**< Display number mode keypad */
};
/*!
@@ -232,33 +225,33 @@
HbEditorInterface, it will have an effect on some input functionality.
*/
enum HbInputEditorClass {
- HbInputEditorClassUnknown = 0,
- HbInputEditorClassEmail,
- HbInputEditorClassUrl,
- HbInputEditorClassUsername,
- HbInputEditorClassPassword,
- HbInputEditorClassPhoneNumber,
- HbInputEditorClassStreetAddress,
- HbInputEditorClassZipCode,
- HbInputEditorClassSIPAddress,
- HbInputEditorClassFirstName,
- HbInputEditorClassLastName,
- HbInputEditorClassFullName,
- HbInputEditorClassFaxNumber,
- HbInputEditorClassTitle,
- HbInputEditorClassProfession,
- HbInputEditorClassCity,
- HbInputEditorClassDestination,
- HbInputEditorClassNetworkDomain,
- HbInputEditorClassNetworkName,
+ HbInputEditorClassUnknown = 0,
+ HbInputEditorClassEmail,
+ HbInputEditorClassUrl,
+ HbInputEditorClassUsername,
+ HbInputEditorClassPassword,
+ HbInputEditorClassPhoneNumber,
+ HbInputEditorClassStreetAddress,
+ HbInputEditorClassZipCode,
+ HbInputEditorClassSIPAddress,
+ HbInputEditorClassFirstName,
+ HbInputEditorClassLastName,
+ HbInputEditorClassFullName,
+ HbInputEditorClassFaxNumber,
+ HbInputEditorClassTitle,
+ HbInputEditorClassProfession,
+ HbInputEditorClassCity,
+ HbInputEditorClassDestination,
+ HbInputEditorClassNetworkDomain,
+ HbInputEditorClassNetworkName,
- HbInputEditorClassLastItem // Keep this last, but never use.
+ HbInputEditorClassLastItem // Keep this last, but never use.
};
/*!
Enumerates primary candidate modes.
*/
-enum HbPrimaryCandidateMode{
+enum HbPrimaryCandidateMode {
HbPrimaryCandidateModeBestPrediction, /**< Display best prediction as the primary candidate */
HbPrimaryCandidateModeExactTyping /**< Display exact typing as the primary candidate */
};
@@ -266,7 +259,7 @@
/*!
Enumerates typing correction levels.
*/
-enum HbTypingCorrectionLevel{
+enum HbTypingCorrectionLevel {
HbTypingCorrectionLevelLow,
HbTypingCorrectionLevelMedium,
HbTypingCorrectionLevelHigh
--- a/src/hbcore/inputfw/hbinputeditorinterface.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputeditorinterface.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,9 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputeditorinterface.h"
+#include "hbinputeditorinterface_p.h"
+
#include <QGraphicsProxyWidget>
#include <QWidget>
#include <QList>
@@ -29,8 +32,6 @@
#include <hbaction.h>
#include <hbwidget.h>
-#include "hbinputeditorinterface.h"
-#include "hbinputeditorinterface_p.h"
#include "hbinputstandardfilters.h"
#include "hbinputvkbhost.h"
#include "hbabstractvkbhost.h"
@@ -53,17 +54,17 @@
If the attached editor is deleted, the editor interface will start to return same values
as when a null pointer is passed to the constructor.
-When any of the values is changed, signal modified() is emited.
+When any of the values is changed, signal modified() is emitted.
*/
/*!
Constructs the object and attaches given editor.
*/
-HbEditorInterface::HbEditorInterface(QObject* editor)
+HbEditorInterface::HbEditorInterface(QObject *editor)
{
mPrivate = HbEditorInterfacePrivateCache::instance()->attachEditor(editor, this);
- connect(mPrivate, SIGNAL(destroyed(QObject*)), this, SLOT(backendDestroyed(QObject*)));
+ connect(mPrivate, SIGNAL(destroyed(QObject *)), this, SLOT(backendDestroyed(QObject *)));
}
/*!
@@ -177,7 +178,7 @@
/*!
Returns active input filter. The input framework will always run any text it produces
-through the active filter before it is commited into editor buffer.
+through the active filter before it is committed into editor buffer.
In some cases, the input framework also automatically sets the filter to match
input method hints. The default filter can still be overridden.
@@ -293,7 +294,7 @@
if (index >= 0) {
mPrivate->mActions.removeAt(index);
disconnect(action, SIGNAL(destroyed(QObject *)),
- HbEditorInterfacePrivateCache::instance(), SLOT(actionDestroyed(QObject* object)));
+ HbEditorInterfacePrivateCache::instance(), SLOT(actionDestroyed(QObject * object)));
}
int pos = mPrivate->mActions.indexOf(before);
@@ -326,7 +327,7 @@
mPrivate->lock();
mPrivate->mActions.removeAll(action);
disconnect(action, SIGNAL(destroyed(QObject *)),
- HbEditorInterfacePrivateCache::instance(), SLOT(actionDestroyed(QObject* object)));
+ HbEditorInterfacePrivateCache::instance(), SLOT(actionDestroyed(QObject * object)));
mPrivate->unlock();
HbEditorInterfacePrivateCache::instance()->notifyValueChanged(mPrivate->mHostEditor);
}
@@ -339,9 +340,9 @@
\sa insertAction
\sa removeAction
*/
-QList<HbAction*> HbEditorInterface::actions() const
+QList<HbAction *> HbEditorInterface::actions() const
{
- QList<HbAction*> ret;
+ QList<HbAction *> ret;
if (mPrivate) {
mPrivate->lock();
ret = mPrivate->mActions;
@@ -462,9 +463,9 @@
if (theEditor) {
QGraphicsObject *graphicsObjectEditor = 0;
- QWidget *widgetEditor = qobject_cast<QWidget*>(theEditor);
+ QWidget *widgetEditor = qobject_cast<QWidget *>(theEditor);
if (widgetEditor) {
- if (QGraphicsProxyWidget * pw = HbInputUtils::graphicsProxyWidget(widgetEditor)) {
+ if (QGraphicsProxyWidget *pw = HbInputUtils::graphicsProxyWidget(widgetEditor)) {
HbVkbHost *host = HbVkbHost::getVkbHost(widgetEditor);
if (host) {
return host;
@@ -473,7 +474,7 @@
graphicsObjectEditor = pw;
} else {
for (QWidget *parent = widgetEditor; parent; parent = parent->parentWidget()) {
- HbVkbHost* host = HbVkbHost::getVkbHost(parent);
+ HbVkbHost *host = HbVkbHost::getVkbHost(parent);
if (host) {
return host;
}
@@ -483,13 +484,13 @@
}
if (!graphicsObjectEditor) {
- graphicsObjectEditor = qobject_cast<QGraphicsObject*>(theEditor);
+ graphicsObjectEditor = qobject_cast<QGraphicsObject *>(theEditor);
}
if (graphicsObjectEditor) {
QGraphicsObject *lastKnownParent = 0;
for (QGraphicsObject *parent = graphicsObjectEditor; parent; parent = parent->parentObject()) {
- HbVkbHost* host = HbVkbHost::getVkbHost(parent);
+ HbVkbHost *host = HbVkbHost::getVkbHost(parent);
if (host) {
return host;
}
@@ -509,7 +510,7 @@
/*!
Returns true if this instance is attached to same editor as given instance.
*/
-bool HbEditorInterface::operator==(const HbEditorInterface& editorInterface) const
+bool HbEditorInterface::operator==(const HbEditorInterface &editorInterface) const
{
return (mPrivate == editorInterface.mPrivate);
}
@@ -517,7 +518,7 @@
/*!
Returns true if this instance is not attached to same editor as given instance.
*/
-bool HbEditorInterface::operator!=(const HbEditorInterface& editorInterface) const
+bool HbEditorInterface::operator!=(const HbEditorInterface &editorInterface) const
{
return (mPrivate != editorInterface.mPrivate);
}
@@ -525,7 +526,7 @@
/*!
Returns pointer to the editor object this interface is attached to.
*/
-QObject* HbEditorInterface::editor() const
+QObject *HbEditorInterface::editor() const
{
if (mPrivate) {
return mPrivate->mHostEditor;
@@ -627,7 +628,7 @@
*/
bool HbEditorInterface::isPredictionAllowed() const
{
- return !(mPrivate->inputMethodHints() & Qt::ImhNoPredictiveText);
+ return !(mPrivate->inputMethodHints() & Qt::ImhNoPredictiveText);
}
/*!
--- a/src/hbcore/inputfw/hbinputeditorinterface.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputeditorinterface.h Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef HB_EDITOR_INTERFACE_H
-#define HB_EDITOR_INTERFACE_H
+#ifndef HB_INPUT_EDITOR_INTERFACE_H
+#define HB_INPUT_EDITOR_INTERFACE_H
#include <QObject>
@@ -44,7 +44,7 @@
Q_OBJECT
public:
- HbEditorInterface(QObject* editor);
+ HbEditorInterface(QObject *editor);
~HbEditorInterface();
HbTextCase textCase() const;
@@ -60,7 +60,7 @@
void addAction(HbAction *action);
void insertAction(HbAction *before, HbAction *action);
void removeAction(HbAction *action);
- QList<HbAction*> actions() const;
+ QList<HbAction *> actions() const;
int extraDictionaryId() const;
void setExtraDictionaryId(int id);
HbInputEditorClass editorClass() const;
@@ -70,9 +70,9 @@
void lastFocusedState(HbInputState &result) const;
void setLastFocusedState(const HbInputState &state);
- bool operator==(const HbEditorInterface& editorInterface) const;
- bool operator!=(const HbEditorInterface& editorInterface) const;
- QObject* editor() const;
+ bool operator==(const HbEditorInterface &editorInterface) const;
+ bool operator!=(const HbEditorInterface &editorInterface) const;
+ QObject *editor() const;
HbVkbHost *vkbHost() const;
public: // Convenience methods for setting up standard editor types.
@@ -103,7 +103,7 @@
Q_DISABLE_COPY(HbEditorInterface)
};
-#endif // HB_EDITOR_INTERFACE_H
+#endif // HB_INPUT_EDITOR_INTERFACE_H
// End of file
--- a/src/hbcore/inputfw/hbinputeditorinterface_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputeditorinterface_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,13 +22,14 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputeditorinterface.h"
+#include "hbinputeditorinterface_p.h"
+
#include <QWidget>
#include <QGraphicsWidget>
#include <QGraphicsProxyWidget>
#include <QLineEdit>
#include <QTextEdit>
-#include "hbinputeditorinterface_p.h"
-#include "hbinputeditorinterface.h"
void HbEditorInterfacePrivate::lock()
{
@@ -42,7 +43,7 @@
bool HbEditorInterfacePrivate::hasInterface(HbEditorInterface *toBeChecked) const
{
- foreach (HbEditorInterface *iFace, mAttachedInterfaces) {
+ foreach(HbEditorInterface *iFace, mAttachedInterfaces) {
if (iFace == toBeChecked) {
return true;
}
@@ -52,35 +53,35 @@
}
void HbEditorInterfacePrivate::setInputMethodHints(Qt::InputMethodHints hints)
-{
- if (mHostEditor) {
- QGraphicsWidget *graphicsWidget = qobject_cast<QGraphicsWidget*>(mHostEditor);
- if (graphicsWidget) {
- graphicsWidget->setInputMethodHints(hints);
- } else {
- QWidget *widget = qobject_cast<QWidget*>(mHostEditor);
- if (widget) {
+{
+ if (mHostEditor) {
+ QGraphicsWidget *graphicsWidget = qobject_cast<QGraphicsWidget *>(mHostEditor);
+ if (graphicsWidget) {
+ graphicsWidget->setInputMethodHints(hints);
+ } else {
+ QWidget *widget = qobject_cast<QWidget *>(mHostEditor);
+ if (widget) {
widget->setInputMethodHints(hints);
- }
- }
+ }
+ }
}
}
Qt::InputMethodHints HbEditorInterfacePrivate::inputMethodHints() const
{
- if (mHostEditor) {
- QGraphicsWidget *graphicsWidget = qobject_cast<QGraphicsWidget*>(mHostEditor);
- if (graphicsWidget) {
- return graphicsWidget->inputMethodHints();
- } else {
- QWidget *widget = qobject_cast<QWidget*>(mHostEditor);
- if (widget) {
+ if (mHostEditor) {
+ QGraphicsWidget *graphicsWidget = qobject_cast<QGraphicsWidget *>(mHostEditor);
+ if (graphicsWidget) {
+ return graphicsWidget->inputMethodHints();
+ } else {
+ QWidget *widget = qobject_cast<QWidget *>(mHostEditor);
+ if (widget) {
return widget->inputMethodHints();
- }
+ }
}
}
- return Qt::ImhNone;
+ return Qt::ImhNone;
}
void HbEditorInterfacePrivate::notifyCursorPositionChange(int oldPos, int newPos)
@@ -97,7 +98,7 @@
// HbEditorInterfaceCache
//
-HbEditorInterfacePrivateCache* HbEditorInterfacePrivateCache::instance()
+HbEditorInterfacePrivateCache *HbEditorInterfacePrivateCache::instance()
{
static HbEditorInterfacePrivateCache myCache;
return &myCache;
@@ -114,27 +115,27 @@
}
}
-HbEditorInterfacePrivate* HbEditorInterfacePrivateCache::attachEditor(QObject* editor, HbEditorInterface* interface)
+HbEditorInterfacePrivate *HbEditorInterfacePrivateCache::attachEditor(QObject *editor, HbEditorInterface *interface)
{
if (editor) {
for (int i = 0; i < mObjectCache.count(); i++) {
if (mObjectCache[i]->mHostEditor == editor) {
if (!mObjectCache[i]->hasInterface(interface)) {
mObjectCache[i]->mAttachedInterfaces.append(interface);
- connect(interface, SIGNAL(destroyed(QObject*)), this, SLOT(interfaceDestroyed(QObject*)));
+ connect(interface, SIGNAL(destroyed(QObject *)), this, SLOT(interfaceDestroyed(QObject *)));
connect(mObjectCache[i], SIGNAL(cursorPositionChanged(int, int)), interface, SIGNAL(cursorPositionChanged(int, int)));
}
return mObjectCache[i];
}
}
- HbEditorInterfacePrivate* newItem = new HbEditorInterfacePrivate();
+ HbEditorInterfacePrivate *newItem = new HbEditorInterfacePrivate();
newItem->mHostEditor = editor;
newItem->mAttachedInterfaces.append(interface);
mObjectCache.append(newItem);
- connect(editor, SIGNAL(destroyed(QObject*)), this, SLOT(destroyed(QObject*)));
- connect(interface, SIGNAL(destroyed(QObject*)), this, SLOT(interfaceDestroyed(QObject*)));
+ connect(editor, SIGNAL(destroyed(QObject *)), this, SLOT(destroyed(QObject *)));
+ connect(interface, SIGNAL(destroyed(QObject *)), this, SLOT(interfaceDestroyed(QObject *)));
connect(newItem, SIGNAL(cursorPositionChanged(int, int)), interface, SIGNAL(cursorPositionChanged(int, int)));
// Check whether the connected object is a QLineEdit or QTextEdit, plain or wrapped in QGraphicsProxyWidget
@@ -142,26 +143,26 @@
if (editor->inherits("HbAbstractEdit")) {
connect(editor, SIGNAL(cursorPositionChanged(int, int)), newItem, SIGNAL(cursorPositionChanged(int, int)));
} else {
- QGraphicsProxyWidget* proxywidget = qobject_cast<QGraphicsProxyWidget*>(editor);
+ QGraphicsProxyWidget *proxywidget = qobject_cast<QGraphicsProxyWidget *>(editor);
if (proxywidget) {
- QWidget* editorwidget = proxywidget->widget();
- QLineEdit* lineedit = qobject_cast<QLineEdit*>(editorwidget);
+ QWidget *editorwidget = proxywidget->widget();
+ QLineEdit *lineedit = qobject_cast<QLineEdit *>(editorwidget);
if (lineedit) {
- connect(lineedit, SIGNAL(cursorPositionChanged(int, int)), newItem, SIGNAL(cursorPositionChanged(int, int)));
+ connect(lineedit, SIGNAL(cursorPositionChanged(int, int)), newItem, SIGNAL(cursorPositionChanged(int, int)));
} else {
- QTextEdit* textedit = qobject_cast<QTextEdit*>(editorwidget);
+ QTextEdit *textedit = qobject_cast<QTextEdit *>(editorwidget);
if (textedit) {
- connect(textedit, SIGNAL(cursorPositionChanged()), newItem, SLOT(cursorPositionChanged()));
+ connect(textedit, SIGNAL(cursorPositionChanged()), newItem, SLOT(cursorPositionChanged()));
}
}
} else {
- QLineEdit* lineedit = qobject_cast<QLineEdit*>(editor);
+ QLineEdit *lineedit = qobject_cast<QLineEdit *>(editor);
if (lineedit) {
- connect(lineedit, SIGNAL(cursorPositionChanged(int, int)), newItem, SIGNAL(cursorPositionChanged(int, int)));
+ connect(lineedit, SIGNAL(cursorPositionChanged(int, int)), newItem, SIGNAL(cursorPositionChanged(int, int)));
} else {
- QTextEdit* textedit = qobject_cast<QTextEdit*>(editor);
+ QTextEdit *textedit = qobject_cast<QTextEdit *>(editor);
if (textedit) {
- connect(textedit, SIGNAL(cursorPositionChanged()), newItem, SLOT(cursorPositionChanged()));
+ connect(textedit, SIGNAL(cursorPositionChanged()), newItem, SLOT(cursorPositionChanged()));
}
}
}
@@ -173,7 +174,7 @@
return 0;
}
-void HbEditorInterfacePrivateCache::destroyed(QObject* object)
+void HbEditorInterfacePrivateCache::destroyed(QObject *object)
{
for (int i = 0; i < mObjectCache.count(); i++) {
if (mObjectCache[i]->mHostEditor == object) {
@@ -184,7 +185,7 @@
}
}
-void HbEditorInterfacePrivateCache::interfaceDestroyed(QObject* object)
+void HbEditorInterfacePrivateCache::interfaceDestroyed(QObject *object)
{
for (int i = 0; i < mObjectCache.count(); i++) {
for (int j = 0; j < mObjectCache[i]->mAttachedInterfaces.count(); j++) {
@@ -196,7 +197,7 @@
}
}
-void HbEditorInterfacePrivateCache::actionDestroyed(QObject* object)
+void HbEditorInterfacePrivateCache::actionDestroyed(QObject *object)
{
foreach(HbEditorInterfacePrivate *editorInterfacePrivate, mObjectCache) {
HbAction *action = static_cast<HbAction *>(object);
@@ -209,10 +210,10 @@
}
}
-void HbEditorInterfacePrivateCache::notifyValueChanged(QObject* editor)
+void HbEditorInterfacePrivateCache::notifyValueChanged(QObject *editor)
{
for (int i = 0; i < mObjectCache.count(); i++) {
- if (mObjectCache[i]->mHostEditor == editor) {
+ if (mObjectCache[i]->mHostEditor == editor) {
for (int j = 0; j < mObjectCache[i]->mAttachedInterfaces.count(); j++) {
mObjectCache[i]->mAttachedInterfaces[j]->backendModified();
}
@@ -221,7 +222,7 @@
}
}
-bool HbEditorInterfacePrivateCache::isConnected(QObject* object)
+bool HbEditorInterfacePrivateCache::isConnected(QObject *object)
{
for (int i = 0; i < mObjectCache.count(); i++) {
if (mObjectCache[i]->mHostEditor == object) {
--- a/src/hbcore/inputfw/hbinputeditorinterface_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputeditorinterface_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef HB_EDITOR_INTERFACE_PRIVATE_H
-#define HB_EDITOR_INTERFACE_PRIVATE_H
+#ifndef HB_INPUT_EDITOR_INTERFACE_P_H
+#define HB_INPUT_EDITOR_INTERFACE_P_H
#include <QObject>
#include <QVector>
@@ -50,13 +50,12 @@
public:
HbEditorInterfacePrivate()
: mInputMode(0),
- mTextCase(HbTextCaseNone),
- mConstraints(0),
- mLocalDigitType(HbDigitTypeNone),
- mExtraDictionaryId(0),
- mClass(0),
- mHostEditor(0)
- {
+ mTextCase(HbTextCaseNone),
+ mConstraints(0),
+ mLocalDigitType(HbDigitTypeNone),
+ mExtraDictionaryId(0),
+ mClass(0),
+ mHostEditor(0) {
}
void lock();
@@ -75,10 +74,10 @@
int mExtraDictionaryId;
int mClass;
HbSmileyTheme mSmileyTheme;
- QObject* mHostEditor;
- QList<HbEditorInterface*> mAttachedInterfaces;
+ QObject *mHostEditor;
+ QList<HbEditorInterface *> mAttachedInterfaces;
HbInputState mLastFocusedState;
- QList<HbAction*> mActions;
+ QList<HbAction *> mActions;
public slots:
void cursorPositionChanged();
@@ -96,7 +95,7 @@
Q_OBJECT
public:
- static HbEditorInterfacePrivateCache* instance();
+ static HbEditorInterfacePrivateCache *instance();
private:
HbEditorInterfacePrivateCache();
@@ -113,12 +112,12 @@
void actionDestroyed(QObject *object);
private:
- QVector<HbEditorInterfacePrivate*> mObjectCache;
+ QVector<HbEditorInterfacePrivate *> mObjectCache;
};
/// @endcond
-#endif // HB_EDITOR_INTERFACE_PRIVATE_H
+#endif // HB_INPUT_EDITOR_INTERFACE_P_H
// End of file
--- a/src/hbcore/inputfw/hbinputextradictionarycollection.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputextradictionarycollection.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,9 +22,10 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputextradictionarycollection.h"
+
#include "hbinputextrauserdictionary.h"
#include "hbinputextradictionaryfactory.h"
-#include "hbinputextradictionarycollection.h"
/*!
@proto
@@ -55,21 +56,29 @@
void addDictionaries(QList<int>& newOnes);
void addDictionary(int newId);
- void addDictionary(HbExtraUserDictionary* newOne);
+ void addDictionary(HbExtraUserDictionary *newOne);
void removeDictionary(int dictId);
- void removeDictionary(HbExtraUserDictionary* dict);
+ void removeDictionary(HbExtraUserDictionary *dict);
bool isAlreadyInList(int dictId) const;
- int isDisabled(int index) const { return ((0x0001 << index) & deactivated); }
- void enable(int index) { deactivated &= !(0x0001 << index); }
- void disable(int index) { deactivated |= (0x0001 << index); }
+ int isDisabled(int index) const {
+ return ((0x0001 << index) & deactivated);
+ }
+
+ void enable(int index) {
+ deactivated &= !(0x0001 << index);
+ }
+
+ void disable(int index) {
+ deactivated |= (0x0001 << index);
+ }
int dictionaryIndex(int id) const;
public:
- QList<HbExtraUserDictionary*> dictionaries;
+ QList<HbExtraUserDictionary *> dictionaries;
unsigned short deactivated; // Bit vector
};
@@ -104,10 +113,10 @@
}
}
-void HbExtraDictionaryCollectionPrivate::addDictionary(HbExtraUserDictionary* newOne)
+void HbExtraDictionaryCollectionPrivate::addDictionary(HbExtraUserDictionary *newOne)
{
if (newOne && !isAlreadyInList(newOne->id())) {
- dictionaries.append(newOne);
+ dictionaries.append(newOne);
}
}
@@ -116,11 +125,11 @@
int index = dictionaryIndex(dictId);
if (index >= 0) {
dictionaries.removeAt(index);
-
+
}
}
-void HbExtraDictionaryCollectionPrivate::removeDictionary(HbExtraUserDictionary* dict)
+void HbExtraDictionaryCollectionPrivate::removeDictionary(HbExtraUserDictionary *dict)
{
for (int i = 0; i < dictionaries.count(); i++) {
if (dictionaries[i] == dict) {
@@ -167,7 +176,7 @@
HbExtraDictionaryCollection::HbExtraDictionaryCollection(QList<int> dictionaries) : d_ptr(new HbExtraDictionaryCollectionPrivate)
{
Q_D(HbExtraDictionaryCollection);
- d->addDictionaries(dictionaries);
+ d->addDictionaries(dictionaries);
}
/*!
@@ -180,18 +189,18 @@
/*!
Adds given dictionary to the collection if it is avaivale. Uses HbExtraDictionaryFactory
-for loading the dictionary. Returns true if dictionary was found and succesfully added.
+for loading the dictionary. Returns true if dictionary was found and succesfully added.
*/
bool HbExtraDictionaryCollection::addDictionary(int id)
{
- Q_D(HbExtraDictionaryCollection);
+ Q_D(HbExtraDictionaryCollection);
- if (d->dictionaries.count() < HbMaxDictionariesInCollection) {
- d->addDictionary(id);
- return true;
- }
+ if (d->dictionaries.count() < HbMaxDictionariesInCollection) {
+ d->addDictionary(id);
+ return true;
+ }
- return false;
+ return false;
}
/*!
@@ -199,14 +208,14 @@
*/
bool HbExtraDictionaryCollection::addDictionary(HbExtraUserDictionary *dictionary)
{
- Q_D(HbExtraDictionaryCollection);
+ Q_D(HbExtraDictionaryCollection);
- if (d->dictionaries.count() < HbMaxDictionariesInCollection) {
- d->addDictionary(dictionary);
- return true;
- }
+ if (d->dictionaries.count() < HbMaxDictionariesInCollection) {
+ d->addDictionary(dictionary);
+ return true;
+ }
- return false;
+ return false;
}
/*!
@@ -214,8 +223,8 @@
*/
void HbExtraDictionaryCollection::removeDictionary(int id)
{
- Q_D(HbExtraDictionaryCollection);
- d->removeDictionary(id);
+ Q_D(HbExtraDictionaryCollection);
+ d->removeDictionary(id);
}
/*!
@@ -223,8 +232,8 @@
*/
void HbExtraDictionaryCollection::removeDictionary(HbExtraUserDictionary *dictionary)
{
- Q_D(HbExtraDictionaryCollection);
- d->removeDictionary(dictionary);
+ Q_D(HbExtraDictionaryCollection);
+ d->removeDictionary(dictionary);
}
/*!
@@ -239,7 +248,7 @@
for (int i = 0; i < d->dictionaries.count(); i++) {
results.append(d->dictionaries[i]->id());
- }
+ }
return QList<int>(results);
}
@@ -272,7 +281,7 @@
int ret = 0;
for (int i = 0; i < d->dictionaries.count(); i++) {
- ret += d->dictionaries[i]->numberOfWords();
+ ret += d->dictionaries[i]->numberOfWords();
}
return ret;
@@ -284,7 +293,7 @@
Search is case insensitive. Only enabled dictionaries are part of the search.
Empty string will match to all words.
*/
-QStringList HbExtraDictionaryCollection::findMatches(const QString& aSearchString, Qt::CaseSensitivity caseSensitivity)
+QStringList HbExtraDictionaryCollection::findMatches(const QString &aSearchString, Qt::CaseSensitivity caseSensitivity)
{
Q_D(HbExtraDictionaryCollection);
@@ -302,7 +311,7 @@
/*!
Diables given dictionary, but still keeps it as part of the collection.
All access and search operators will skip disabled dictionary until it is
-enabled again.
+enabled again.
\sa enableDictionary
*/
@@ -312,7 +321,7 @@
int index = d->dictionaryIndex(id);
if (index >= 0) {
- d->disable(index);
+ d->disable(index);
}
}
@@ -321,13 +330,13 @@
\sa disableDictionary
*/
-void HbExtraDictionaryCollection::enableDictionary(int id)
+void HbExtraDictionaryCollection::enableDictionary(int id)
{
Q_D(HbExtraDictionaryCollection);
int index = d->dictionaryIndex(id);
if (index >= 0) {
- d->enable(index);
+ d->enable(index);
}
}
@@ -340,9 +349,9 @@
int index = d->dictionaryIndex(dictionaryId);
if (index >= 0) {
- return d->isDisabled(index);
+ return d->isDisabled(index);
}
-
+
return false;
}
@@ -372,7 +381,7 @@
/*!
Returns true if given word exists in any of the active dictionaries in the collection.
*/
-bool HbExtraDictionaryCollection::hasWord(const QString& word) const
+bool HbExtraDictionaryCollection::hasWord(const QString &word) const
{
Q_D(const HbExtraDictionaryCollection);
@@ -391,7 +400,7 @@
Increments use count (frequency) for given word. Applied to all the instances of given word
in enabled part of the collection.
*/
-void HbExtraDictionaryCollection::incrementUseCount(const QString& word)
+void HbExtraDictionaryCollection::incrementUseCount(const QString &word)
{
Q_D(const HbExtraDictionaryCollection);
--- a/src/hbcore/inputfw/hbinputextradictionarycollection.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputextradictionarycollection.h Wed Jun 23 18:33:25 2010 +0300
@@ -27,9 +27,12 @@
#define HB_INPUT_EXTRA_DICTIONARY_COLLECTION_H
#include <QList>
+#include <hbglobal.h>
+#include <Qt>
class HbExtraDictionaryCollectionPrivate;
class HbExtraUserDictionary;
+class QStringList;
const int HbMaxDictionariesInCollection = 16;
@@ -57,13 +60,13 @@
int totalNumberOfWords() const;
QString wordAt(int index) const;
- QStringList findMatches(const QString& searchString, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive);
+ QStringList findMatches(const QString &searchString, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive);
- bool hasWord(const QString& word) const;
- void incrementUseCount(const QString& word);
+ bool hasWord(const QString &word) const;
+ void incrementUseCount(const QString &word);
protected:
- HbExtraDictionaryCollectionPrivate* const d_ptr;
+ HbExtraDictionaryCollectionPrivate *const d_ptr;
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbExtraDictionaryCollection)
--- a/src/hbcore/inputfw/hbinputextradictionaryfactory.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputextradictionaryfactory.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,11 +22,12 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputextradictionaryfactory.h"
+
#include <QDir>
#include "hbinputsettingproxy.h"
#include "hbinputextrauserdictionary.h"
-#include "hbinputextradictionaryfactory.h"
/*!
@proto
@@ -48,14 +49,14 @@
void shutdown();
public:
- HbExtraDictionaryFactory* q_ptr;
- QList<HbExtraUserDictionary*> instances;
+ HbExtraDictionaryFactory *q_ptr;
+ QList<HbExtraUserDictionary *> instances;
};
void HbExtraDictionaryFactoryPrivate::shutdown()
{
- Q_FOREACH(const HbExtraUserDictionary* instance, instances) {
+ Q_FOREACH(const HbExtraUserDictionary *instance, instances) {
delete instance;
}
@@ -65,11 +66,11 @@
/// @endcond
/*!
-Returns pointer to the singleton instance.
+Returns pointer to the singleton instance.
*/
HbExtraDictionaryFactory *HbExtraDictionaryFactory::instance()
{
- static HbExtraDictionaryFactory singletonInstance;
+ static HbExtraDictionaryFactory singletonInstance;
return &singletonInstance;
}
@@ -103,7 +104,7 @@
{
Q_D(HbExtraDictionaryFactory);
- foreach (HbExtraUserDictionary* dictPtr, d->instances) {
+ foreach(HbExtraUserDictionary *dictPtr, d->instances) {
if (dictPtr->id() == dictionaryId) {
return dictPtr;
}
@@ -119,12 +120,12 @@
if (newDb->isAlreadyInMemory()) {
newDb->attach();
d->instances.append(newDb);
- return newDb;
+ return newDb;
}
if (newDb->attach()) {
// Not available in memory, try to load from permanent memory.
- if (newDb->load(newDb->fileName())) {
+ if (newDb->load(newDb->fileName())) {
d->instances.append(newDb);
return newDb;
}
@@ -137,16 +138,16 @@
/*!
Creates dictionary if it doesn't already exists. If initialContent is given, new dictionary will
be filled with it. If a dictionary for given id already exists, it is returned and initialContent
-is discarded.
+is discarded.
*/
-HbExtraUserDictionary *HbExtraDictionaryFactory::createDictionary(int dictionaryId, const QStringList& initialContent)
-{
+HbExtraUserDictionary *HbExtraDictionaryFactory::createDictionary(int dictionaryId, const QStringList &initialContent)
+{
Q_D(HbExtraDictionaryFactory);
HbExtraUserDictionary *newDb = existingDictionary(dictionaryId);
if (newDb == 0) {
newDb = new HbExtraUserDictionary;
- newDb->setId(dictionaryId);
+ newDb->setId(dictionaryId);
if (!newDb->attach()) {
delete newDb;
return 0;
--- a/src/hbcore/inputfw/hbinputextradictionaryfactory.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputextradictionaryfactory.h Wed Jun 23 18:33:25 2010 +0300
@@ -48,13 +48,13 @@
static HbExtraDictionaryFactory *instance();
HbExtraUserDictionary *existingDictionary(int dictionaryId);
- HbExtraUserDictionary *createDictionary(int dictionaryId, const QStringList& initialContent = QStringList());
+ HbExtraUserDictionary *createDictionary(int dictionaryId, const QStringList &initialContent = QStringList());
public slots:
void shutdown();
protected:
- HbExtraDictionaryFactoryPrivate* const d_ptr;
+ HbExtraDictionaryFactoryPrivate *const d_ptr;
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbExtraDictionaryFactory)
--- a/src/hbcore/inputfw/hbinputextrauserdictionary.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputextrauserdictionary.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,9 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputextrauserdictionary.h"
+#include "hbinputextrauserdictionary_p.h"
+
#include <qbytearray.h> // For memmove()
#include <QFile>
@@ -29,8 +32,6 @@
#include <QSharedMemory>
#include <QVector>
-#include "hbinputextrauserdictionary.h"
-#include "hbinputextrauserdictionary_p.h"
#include "hbinputsettingproxy.h"
const int HbExtraDictMaxFrequency = 255;
@@ -65,17 +66,17 @@
bool HbExtraUserDictionaryPrivate::createSharedBlock(int aSize)
{
- if (sharedMemory.isAttached()) {
- return true;
- }
+ if (sharedMemory.isAttached()) {
+ return true;
+ }
- if (id == 0) {
- return false;
- }
+ if (id == 0) {
+ return false;
+ }
- sharedMemory.setKey(name());
+ sharedMemory.setKey(name());
- if (!sharedMemory.attach()) {
+ if (!sharedMemory.attach()) {
if (sharedMemory.error() != QSharedMemory::NotFound) {
qDebug("HbExtraUserDictionaryPrivate: QSharedMemory::attached returned error %d", sharedMemory.error());
return false;
@@ -90,10 +91,10 @@
dataHeader()->numUsers = 0;
dataHeader()->modified = false;
dataHeader()->dataSize = 0;
- }
+ }
- dataHeader()->numUsers++;
- return true;
+ dataHeader()->numUsers++;
+ return true;
}
QString HbExtraUserDictionaryPrivate::name() const
@@ -111,21 +112,21 @@
bool HbExtraUserDictionaryPrivate::save(QString fileName)
{
- QFile file(fileName);
- if (file.open( QIODevice::WriteOnly )) {
- file.write((char*)&id, sizeof(int));
- if (sharedMemory.isAttached()) {
- file.write((char*)sharedMemory.data(), KExtraUDBlockSize);
- }
- file.close();
- dataHeader()->modified = false;
- return true;
- }
+ QFile file(fileName);
+ if (file.open(QIODevice::WriteOnly)) {
+ file.write((char *)&id, sizeof(int));
+ if (sharedMemory.isAttached()) {
+ file.write((char *)sharedMemory.data(), KExtraUDBlockSize);
+ }
+ file.close();
+ dataHeader()->modified = false;
+ return true;
+ }
- return false;
+ return false;
}
-int HbExtraUserDictionaryPrivate::findFirstMatch(int start, int end, const QString& searchString, int knownMatch, Qt::CaseSensitivity caseSensitivity) const
+int HbExtraUserDictionaryPrivate::findFirstMatch(int start, int end, const QString &searchString, int knownMatch, Qt::CaseSensitivity caseSensitivity) const
{
HbExtraUDDirectoryEntry *dir = directory();
QChar *data = dataArea();
@@ -141,7 +142,7 @@
if (QString(&data[dir[half].start], dir[half].length).startsWith(searchString, Qt::CaseInsensitive)) {
knownMatch = half;
return findFirstMatch(start, half, searchString, knownMatch, caseSensitivity);
- }
+ }
if (compareWords(half, searchString, caseSensitivity) > 0) {
return findFirstMatch(half + 1, end, searchString, knownMatch, caseSensitivity);
@@ -163,7 +164,7 @@
memmove((char *)&dir[index], (char *)&dir[index + 1], (dataHeader()->numWords - index) * sizeof(HbExtraUDDirectoryEntry) + start * sizeof(QChar));
// Then move trailing part of the data area.
- memmove(((char*)&data[start]) - sizeof(HbExtraUDDirectoryEntry), (char*)&data[start + length], (dataHeader()->dataSize - (start + length)) * 2);
+ memmove(((char *)&data[start]) - sizeof(HbExtraUDDirectoryEntry), (char *)&data[start + length], (dataHeader()->dataSize - (start + length)) * 2);
// Update word count.
dataHeader()->numWords--;
@@ -173,11 +174,11 @@
// Then update remaining dictionary entries.
const int rounds = dataHeader()->numWords;
for (int i = index; i < rounds; i++) {
- dir[i].start -= length;
+ dir[i].start -= length;
}
}
-void HbExtraUserDictionaryPrivate::addEntry(int index, const QString& newWord)
+void HbExtraUserDictionaryPrivate::addEntry(int index, const QString &newWord)
{
HbExtraUDDirectoryEntry *dir = directory();
QChar *data = dataArea();
@@ -186,20 +187,20 @@
if (origNumWords > 0) {
if (index < origNumWords) {
// First move the trailing part of the data area to make space for the new word.
- memmove((char*)&data[dir[index].start + newWord.size()] + sizeof(HbExtraUDDirectoryEntry),
- (char*)(&data[dir[index].start]),
+ memmove((char *)&data[dir[index].start + newWord.size()] + sizeof(HbExtraUDDirectoryEntry),
+ (char *)(&data[dir[index].start]),
(dataHeader()->dataSize - dir[index].start) * 2);
// Then move the trailing part of the dictionary and the leading part of the data area.
- memmove((char*)(&dir[index + 1]),
- (char*)(&dir[index]),
+ memmove((char *)(&dir[index + 1]),
+ (char *)(&dir[index]),
((dataHeader()->numWords - index) * sizeof(HbExtraUDDirectoryEntry)) + (dir[index].start * 2));
} else {
// This will be the last one. Just make room for new directory entry.
- memmove((char*)data + sizeof(HbExtraUDDirectoryEntry),
- (char*)data,
+ memmove((char *)data + sizeof(HbExtraUDDirectoryEntry),
+ (char *)data,
dataHeader()->dataSize * 2);
- }
+ }
}
// Update word count.
@@ -225,11 +226,11 @@
// Then update remaining dictionary entries.
const int rounds = dataHeader()->numWords;
for (int i = index + 1; i < rounds; i++) {
- dir[i].start += newWord.size();
+ dir[i].start += newWord.size();
}
}
-int HbExtraUserDictionaryPrivate::findWord(int startIndex, int endIndex, const QString& newWord, Qt::CaseSensitivity caseSensitivity) const
+int HbExtraUserDictionaryPrivate::findWord(int startIndex, int endIndex, const QString &newWord, Qt::CaseSensitivity caseSensitivity) const
{
if (startIndex >= endIndex) {
if (startIndex < dataHeader()->numWords && compareWords(startIndex, newWord, caseSensitivity) == 0) {
@@ -250,7 +251,7 @@
}
}
-int HbExtraUserDictionaryPrivate::findIndexForNewWord(int start, int end, const QString& newWord) const
+int HbExtraUserDictionaryPrivate::findIndexForNewWord(int start, int end, const QString &newWord) const
{
if (start >= end) {
if (dataHeader()->numWords == 0) {
@@ -275,38 +276,38 @@
}
}
-int HbExtraUserDictionaryPrivate::compareWords(int index, const QString& otherWord, Qt::CaseSensitivity caseSensitivity) const
+int HbExtraUserDictionaryPrivate::compareWords(int index, const QString &otherWord, Qt::CaseSensitivity caseSensitivity) const
{
HbExtraUDDirectoryEntry *dir = directory();
QChar *data = dataArea();
const int start = dir[index].start;
const int rounds = (dir[index].length > otherWord.size() ? otherWord.size() : dir[index].length);
- if (caseSensitivity == Qt::CaseSensitive) {
- for (int i = 0; i < rounds; i++) {
- if (data[start + i] == otherWord[i]) {
- continue;
- }
+ if (caseSensitivity == Qt::CaseSensitive) {
+ for (int i = 0; i < rounds; i++) {
+ if (data[start + i] == otherWord[i]) {
+ continue;
+ }
- if (otherWord[i] > data[start + i]) {
- return 1;
- }
+ if (otherWord[i] > data[start + i]) {
+ return 1;
+ }
- return -1;
- }
- } else {
- for (int i = 0; i < rounds; i++) {
- if (data[start + i].toCaseFolded() == otherWord[i].toCaseFolded()) {
- continue;
- }
+ return -1;
+ }
+ } else {
+ for (int i = 0; i < rounds; i++) {
+ if (data[start + i].toCaseFolded() == otherWord[i].toCaseFolded()) {
+ continue;
+ }
- if (otherWord[i].toCaseFolded() > data[start + i].toCaseFolded()) {
- return 1;
- }
+ if (otherWord[i].toCaseFolded() > data[start + i].toCaseFolded()) {
+ return 1;
+ }
- return -1;
- }
+ return -1;
}
+ }
if (dir[index].length == otherWord.size()) {
return 0; // Match!
@@ -319,7 +320,7 @@
return -1;
}
-bool HbExtraUserDictionaryPrivate::hasEnoughSpaceForNewWord(const QString& newWord) const
+bool HbExtraUserDictionaryPrivate::hasEnoughSpaceForNewWord(const QString &newWord) const
{
if ((unsigned int)dataAreaSize() - (dataHeader()->dataSize * 2) >= (newWord.size() * 2) + sizeof(HbExtraUDDirectoryEntry)) {
return true;
@@ -377,13 +378,13 @@
/*!
Adds single word to the database. Returns true if there was enough space for new
-word and the word was succesfully added. Returns false if word already
+word and the word was successfully added. Returns false if word already
exists.
\sa addWords
\sa removeWord
*/
-bool HbExtraUserDictionary::addWord(const QString& newWord, HbPredictionCallback* callback)
+bool HbExtraUserDictionary::addWord(const QString &newWord, HbPredictionCallback *callback)
{
Q_UNUSED(callback);
Q_D(HbExtraUserDictionary);
@@ -399,12 +400,12 @@
if (newWord.size() < KExtraUserDictionaryMaxWordLength &&
d->hasEnoughSpaceForNewWord(newWord) &&
d->dataHeader()->numWords < KExtraUserDictionaryMaxWords) {
- int newIndex = d->findIndexForNewWord(0, d->dataHeader()->numWords - 1, newWord);
- d->addEntry(newIndex, newWord);
+ int newIndex = d->findIndexForNewWord(0, d->dataHeader()->numWords - 1, newWord);
+ d->addEntry(newIndex, newWord);
- d->unlock();
- return true;
- }
+ d->unlock();
+ return true;
+ }
d->unlock();
return false;
@@ -417,7 +418,7 @@
\sa addWord
\sa removeWord
*/
-bool HbExtraUserDictionary::addWords(const QStringList& wordList)
+bool HbExtraUserDictionary::addWords(const QStringList &wordList)
{
bool ret = true;
@@ -434,7 +435,7 @@
\sa addWord
\sa addWords
*/
-bool HbExtraUserDictionary::removeWord(const QString& toBeRemoved)
+bool HbExtraUserDictionary::removeWord(const QString &toBeRemoved)
{
Q_D(HbExtraUserDictionary);
@@ -442,9 +443,9 @@
int index = d->findWord(0, d->dataHeader()->numWords - 1, toBeRemoved, Qt::CaseInsensitive);
if (index >= 0) {
- d->removeEntry(index);
- d->unlock();
- return true;
+ d->removeEntry(index);
+ d->unlock();
+ return true;
}
d->unlock();
@@ -517,7 +518,7 @@
Returns all the dictionary words that begin with contents of searchString.
Search is case insensitive. Empty string will match to all words.
*/
-QStringList HbExtraUserDictionary::findMatches(const QString& searchString, bool sortByFrequency, Qt::CaseSensitivity caseSensitivity)
+QStringList HbExtraUserDictionary::findMatches(const QString &searchString, bool sortByFrequency, Qt::CaseSensitivity caseSensitivity)
{
Q_UNUSED(caseSensitivity); // Will be taken into use...
Q_D(HbExtraUserDictionary);
@@ -572,7 +573,7 @@
/*!
Returns pointer to host prediction engine.
*/
-HbPredictionBase* HbExtraUserDictionary::hostEngine() const
+HbPredictionBase *HbExtraUserDictionary::hostEngine() const
{
Q_D(const HbExtraUserDictionary);
return d->hostEngine;
@@ -581,7 +582,7 @@
/*!
Sets host prediction engine.
*/
-void HbExtraUserDictionary::setHostEngine(HbPredictionBase* host)
+void HbExtraUserDictionary::setHostEngine(HbPredictionBase *host)
{
Q_D(HbExtraUserDictionary);
d->hostEngine = host;
@@ -590,31 +591,31 @@
/*!
Loads dictionary from disk.
*/
-bool HbExtraUserDictionary::load(const QString& nameOfTheFile)
+bool HbExtraUserDictionary::load(const QString &nameOfTheFile)
{
- Q_D(HbExtraUserDictionary);
+ Q_D(HbExtraUserDictionary);
- QString realFileName = nameOfTheFile;
- if (realFileName.size() == 0) {
- realFileName = fileName();
- }
+ QString realFileName = nameOfTheFile;
+ if (realFileName.size() == 0) {
+ realFileName = fileName();
+ }
- if (attach()) {
- d->lock();
- QFile file(realFileName);
- if (file.open( QIODevice::ReadOnly )) {
- int numUsers = d->dataHeader()->numUsers;
- file.read((char*)&d->id, sizeof(int));
- file.read((char*)d->sharedMemory.data(), KExtraUDBlockSize);
- file.close();
- d->dataHeader()->numUsers = numUsers;
- d->unlock();
- return true;
- }
- d->unlock();
- }
+ if (attach()) {
+ d->lock();
+ QFile file(realFileName);
+ if (file.open(QIODevice::ReadOnly)) {
+ int numUsers = d->dataHeader()->numUsers;
+ file.read((char *)&d->id, sizeof(int));
+ file.read((char *)d->sharedMemory.data(), KExtraUDBlockSize);
+ file.close();
+ d->dataHeader()->numUsers = numUsers;
+ d->unlock();
+ return true;
+ }
+ d->unlock();
+ }
- return false;
+ return false;
}
/*!
@@ -623,21 +624,21 @@
\sa fileName
*/
-bool HbExtraUserDictionary::save(const QString& nameOfTheFile)
+bool HbExtraUserDictionary::save(const QString &nameOfTheFile)
{
- Q_D(HbExtraUserDictionary);
+ Q_D(HbExtraUserDictionary);
- QString realFileName = nameOfTheFile;
- if (realFileName.size() == 0) {
- realFileName = fileName();
- }
+ QString realFileName = nameOfTheFile;
+ if (realFileName.size() == 0) {
+ realFileName = fileName();
+ }
- bool ret = false;
- d->lock();
- ret = d->save(realFileName);
- d->unlock();
+ bool ret = false;
+ d->lock();
+ ret = d->save(realFileName);
+ d->unlock();
- return ret;
+ return ret;
}
/*!
@@ -707,7 +708,7 @@
\sa rawDataAreaSize
\sa directory
*/
-QChar* HbExtraUserDictionary::rawDataArea() const
+QChar *HbExtraUserDictionary::rawDataArea() const
{
Q_D(const HbExtraUserDictionary);
return d->dataArea();
@@ -760,7 +761,7 @@
/*!
Increases word frequency counter for given word if it is in the dictionary.
*/
-void HbExtraUserDictionary::incrementUseCount(const QString& word)
+void HbExtraUserDictionary::incrementUseCount(const QString &word)
{
Q_D(const HbExtraUserDictionary);
@@ -771,38 +772,38 @@
if (first >= 0 && dir[first].frequency < HbExtraDictMaxFrequency) {
dir[first].frequency++;
d->dataHeader()->modified = true;
- }
}
+ }
}
/*!
Returns true if given word exits in the dictionary.
*/
-bool HbExtraUserDictionary::hasWord(const QString& word, Qt::CaseSensitivity caseSensitivity) const
+bool HbExtraUserDictionary::hasWord(const QString &word, Qt::CaseSensitivity caseSensitivity) const
{
Q_D(const HbExtraUserDictionary);
if (d->dataHeader()->numWords) {
QChar *data = d->dataArea();
HbExtraUDDirectoryEntry *dir = d->directory();
- int first = d->findFirstMatch(0, d->dataHeader()->numWords - 1, word,-1, caseSensitivity);
- if (first >= 0) {
- if (caseSensitivity == Qt::CaseSensitive) {
- if (QString(&data[dir[first].start], dir[first].length) == word) {
- return true;
- }
+ int first = d->findFirstMatch(0, d->dataHeader()->numWords - 1, word, -1, caseSensitivity);
+ if (first >= 0) {
+ if (caseSensitivity == Qt::CaseSensitive) {
+ if (QString(&data[dir[first].start], dir[first].length) == word) {
+ return true;
+ }
- const int rounds = d->dataHeader()->numWords;
- for (int i = first + 1; i <= rounds; i++) {
- QString candidate(&data[dir[i].start], dir[i].length);
- if (candidate.startsWith(word, Qt::CaseInsensitive)) {
- if (candidate == word) {
- return true;
- }
- } else {
- break;
- }
+ const int rounds = d->dataHeader()->numWords;
+ for (int i = first + 1; i <= rounds; i++) {
+ QString candidate(&data[dir[i].start], dir[i].length);
+ if (candidate.startsWith(word, Qt::CaseInsensitive)) {
+ if (candidate == word) {
+ return true;
+ }
+ } else {
+ break;
}
+ }
} else {
if (QString(&data[dir[first].start], dir[first].length).toCaseFolded() == word.toCaseFolded()) {
return true;
@@ -818,7 +819,7 @@
break;
}
}
- }
+ }
}
}
--- a/src/hbcore/inputfw/hbinputextrauserdictionary.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputextrauserdictionary.h Wed Jun 23 18:33:25 2010 +0300
@@ -63,28 +63,28 @@
public: // from HbUserDictionary
int id() const;
- bool addWord(const QString& newWord, HbPredictionCallback* callback = 0);
- bool addWords(const QStringList& wordList);
- bool removeWord(const QString& toBeRemoved);
+ bool addWord(const QString &newWord, HbPredictionCallback *callback = 0);
+ bool addWords(const QStringList &wordList);
+ bool removeWord(const QString &toBeRemoved);
int numberOfWords() const;
QStringList listWords();
void clear();
- HbPredictionBase* hostEngine() const;
+ HbPredictionBase *hostEngine() const;
public:
QString wordAt(int index) const;
- QStringList findMatches(const QString& searchString, bool sortByFrequency = false, Qt::CaseSensitivity caseSensitivity = Qt::CaseInsensitive);
- bool hasWord(const QString& word, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive) const;
+ QStringList findMatches(const QString &searchString, bool sortByFrequency = false, Qt::CaseSensitivity caseSensitivity = Qt::CaseInsensitive);
+ bool hasWord(const QString &word, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive) const;
- void setHostEngine(HbPredictionBase* host);
- bool load(const QString& nameOfTheFile = QString());
- bool save(const QString& nameOfTheFile = QString());
+ void setHostEngine(HbPredictionBase *host);
+ bool load(const QString &nameOfTheFile = QString());
+ bool save(const QString &nameOfTheFile = QString());
void setId(int dbId);
bool isAlreadyInMemory() const;
bool attach();
QString name();
QString fileName();
- void incrementUseCount(const QString& word);
+ void incrementUseCount(const QString &word);
public:
QChar *rawDataArea() const;
@@ -92,7 +92,7 @@
HbExtraUDDirectoryEntry *directory() const;
protected:
- HbExtraUserDictionaryPrivate* const d_ptr;
+ HbExtraUserDictionaryPrivate *const d_ptr;
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbExtraUserDictionary)
--- a/src/hbcore/inputfw/hbinputextrauserdictionary_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputextrauserdictionary_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -53,7 +53,7 @@
{
public:
HbExtraUDHeader() : numUsers(0), numWords(0), modified(false), dataSize(0)
- {}
+ {}
public:
int numUsers;
@@ -67,46 +67,51 @@
{
public:
HbExtraUserDictionaryPrivate() : id(0), hostEngine(0)
- {}
+ {}
- bool createSharedBlock(int aSize);
- QString name() const;
- QString fileName() const;
+ bool createSharedBlock(int aSize);
+ QString name() const;
+ QString fileName() const;
- void removeEntry(int index);
- void addEntry(int index, const QString& newWord);
+ void removeEntry(int index);
+ void addEntry(int index, const QString &newWord);
- HbExtraUDDirectoryEntry *directory() const {
- return (HbExtraUDDirectoryEntry*)((char*)sharedMemory.data() + sizeof(HbExtraUDHeader));
- }
+ HbExtraUDDirectoryEntry *directory() const {
+ return (HbExtraUDDirectoryEntry *)((char *)sharedMemory.data() + sizeof(HbExtraUDHeader));
+ }
- QChar *dataArea() const {
- return (QChar*)((char*)sharedMemory.data() + sizeof(HbExtraUDHeader) + (dataHeader()->numWords * sizeof(HbExtraUDDirectoryEntry)));
- }
+ QChar *dataArea() const {
+ return (QChar *)((char *)sharedMemory.data() + sizeof(HbExtraUDHeader) + (dataHeader()->numWords * sizeof(HbExtraUDDirectoryEntry)));
+ }
- int findWord(int start, int end, const QString& newWord, Qt::CaseSensitivity caseSensitivity= Qt::CaseSensitive) const;
- int findIndexForNewWord(int start, int end, const QString& newWord) const;
- int findFirstMatch(int start, int end, const QString& searchString, int knownMatch = -1, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive) const;
- int compareWords(int index, const QString& otherWord, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive) const;
- bool hasEnoughSpaceForNewWord(const QString& newWord) const;
+ int findWord(int start, int end, const QString &newWord, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive) const;
+ int findIndexForNewWord(int start, int end, const QString &newWord) const;
+ int findFirstMatch(int start, int end, const QString &searchString, int knownMatch = -1, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive) const;
+ int compareWords(int index, const QString &otherWord, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive) const;
+ bool hasEnoughSpaceForNewWord(const QString &newWord) const;
- bool save(QString aFileName);
+ bool save(QString aFileName);
+
+ HbExtraUDHeader *dataHeader() const {
+ return (HbExtraUDHeader *)sharedMemory.data();
+ }
- HbExtraUDHeader* dataHeader() const {
- return (HbExtraUDHeader*)sharedMemory.data();
- }
+ int dataAreaSize() const {
+ return sharedMemory.size() - sizeof(HbExtraUDHeader) - (dataHeader()->numWords * sizeof(HbExtraUDDirectoryEntry));
+ }
- int dataAreaSize() const {
- return sharedMemory.size() - sizeof(HbExtraUDHeader) - (dataHeader()->numWords * sizeof(HbExtraUDDirectoryEntry));
- }
+ void lock() {
+ sharedMemory.lock();
+ }
- void lock() { sharedMemory.lock(); }
- void unlock() { sharedMemory.unlock(); }
+ void unlock() {
+ sharedMemory.unlock();
+ }
public:
- int id;
- HbPredictionBase* hostEngine;
- QSharedMemory sharedMemory;
+ int id;
+ HbPredictionBase *hostEngine;
+ QSharedMemory sharedMemory;
};
/// @endcond
--- a/src/hbcore/inputfw/hbinputfilter.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputfilter.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -50,7 +50,7 @@
Performs filtering operation for string "in". Filtered string "out" is a copy of "in" without
invalid characters.
*/
-void HbInputFilter::filterString(const QString& in, QString& out)
+void HbInputFilter::filterString(const QString &in, QString &out)
{
for (int i = 0; i < in.length(); i++) {
if (filter(in[i])) {
--- a/src/hbcore/inputfw/hbinputfocusobject.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputfocusobject.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,8 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputfocusobject.h"
+
#include <QInputMethodEvent>
#include <QGraphicsWidget>
#include <QGraphicsScene>
@@ -32,15 +34,12 @@
#include <QGraphicsView>
#include "hbinputmethod.h"
-#include "hbinputfocusobject.h"
#include "hbinputeditorinterface.h"
#include "hbinputvkbhost.h"
#include "hbinputstandardfilters.h"
#include "hbinpututils.h"
#include "hbnamespace_p.h"
-
-
/*!
@alpha
@hbcore
@@ -69,7 +68,7 @@
void ensureCursorVisible(QObject *widget)
{
if (widget) {
- QTextEdit *textEdit = qobject_cast<QTextEdit*>(widget);
+ QTextEdit *textEdit = qobject_cast<QTextEdit *>(widget);
if (textEdit) {
textEdit->ensureCursorVisible();
}
@@ -109,7 +108,7 @@
Creates an input method event where given string is a pre-edit string and sends
it to focused editor. See QInputMethodEvent for more information on pre-edit strings.
*/
-void HbInputFocusObject::sendPreEditString(const QString& string)
+void HbInputFocusObject::sendPreEditString(const QString &string)
{
QList<QInputMethodEvent::Attribute> list;
QInputMethodEvent event(string, list);
@@ -120,7 +119,7 @@
Creates an input method event where given string is a commit string and sends
it to focused editor. See QInputMethodEvent for more information on commit strings.
*/
-void HbInputFocusObject::sendCommitString(const QString& string)
+void HbInputFocusObject::sendCommitString(const QString &string)
{
QList<QInputMethodEvent::Attribute> list;
QInputMethodEvent event(QString(), list);
@@ -131,14 +130,14 @@
/*!
Sends given event to focused editor.
*/
-void HbInputFocusObject::sendEvent(QEvent& event)
+void HbInputFocusObject::sendEvent(QEvent &event)
{
Q_D(HbInputFocusObject);
if (event.type() == QEvent::InputMethod) {
- QInputMethodEvent* imEvent = static_cast<QInputMethodEvent*>(&event);
+ QInputMethodEvent *imEvent = static_cast<QInputMethodEvent *>(&event);
if (imEvent->commitString().size() > 0) {
- d->mPreEditString = QString();
+ d->mPreEditString.clear();
} else {
d->mPreEditString = imEvent->preeditString();
}
@@ -147,7 +146,7 @@
if (d->mFocusedObject) {
if (event.type() == QEvent::InputMethod) {
QInputContext *ic = qApp->inputContext();
- QInputMethodEvent* imEvent = static_cast<QInputMethodEvent*>(&event);
+ QInputMethodEvent *imEvent = static_cast<QInputMethodEvent *>(&event);
if (ic) {
ic->sendEvent(*imEvent);
}
@@ -168,14 +167,14 @@
/*!
Posts given event to focused editor in an asynchronous manner.
*/
-void HbInputFocusObject::postEvent(QEvent& event)
+void HbInputFocusObject::postEvent(QEvent &event)
{
Q_D(HbInputFocusObject);
if (event.type() == QEvent::InputMethod) {
- QInputMethodEvent* imEvent = static_cast<QInputMethodEvent*>(&event);
+ QInputMethodEvent *imEvent = static_cast<QInputMethodEvent *>(&event);
if (imEvent->commitString().size() > 0) {
- d->mPreEditString = QString();
+ d->mPreEditString.clear();
} else {
d->mPreEditString = imEvent->preeditString();
}
@@ -193,19 +192,19 @@
{
Q_D(const HbInputFocusObject);
- QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject*>(d->mFocusedObject);
+ QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject *>(d->mFocusedObject);
if (graphicsObject && graphicsObject->scene()) {
return graphicsObject->scene()->inputMethodQuery(query);
}
// check if QWidget is embedded as a proxy in scene. If yes try to get details
// from the scene.
- QWidget *widget = qobject_cast<QWidget*>(d->mFocusedObject);
+ QWidget *widget = qobject_cast<QWidget *>(d->mFocusedObject);
QGraphicsProxyWidget *pw = HbInputUtils::graphicsProxyWidget(widget);
if (pw && pw->scene()) {
return pw->scene()->inputMethodQuery(query);
}
-
+
if (widget) {
// QWidget returns microfocus in local coordinate.
// we need to map it to global coordinate.
@@ -254,7 +253,7 @@
/*!
Returns editor interface object pointing to focused editor.
*/
-HbEditorInterface& HbInputFocusObject::editorInterface() const
+HbEditorInterface &HbInputFocusObject::editorInterface() const
{
return d_ptr->mEditorInterface;
}
@@ -284,9 +283,9 @@
{
Q_D(HbInputFocusObject);
- QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject*>(d->mFocusedObject);
+ QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject *>(d->mFocusedObject);
if (!graphicsObject) {
- QWidget *widget = qobject_cast<QWidget*>(d->mFocusedObject);
+ QWidget *widget = qobject_cast<QWidget *>(d->mFocusedObject);
if (widget) {
if (!(graphicsObject = HbInputUtils::graphicsProxyWidget(widget))) {
widget->clearFocus();
@@ -340,9 +339,9 @@
{
Q_D(const HbInputFocusObject);
- QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject*>(d->mFocusedObject);
+ QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject *>(d->mFocusedObject);
if (!graphicsObject) {
- QWidget *widget = qobject_cast<QWidget*>(d->mFocusedObject);
+ QWidget *widget = qobject_cast<QWidget *>(d->mFocusedObject);
if (widget) {
// check if widget is inside a proxy.
QGraphicsProxyWidget *pw = HbInputUtils::graphicsProxyWidget(widget);
@@ -353,7 +352,7 @@
if (pw->widget() == widget) {
graphicsObject = pw;
} else if (pw->widget() == widget->window()) {
- // focused object is not a proxy but it is
+ // focused object is not a proxy but it is
// inside a proxy, query to proxy about
// the focused objects rect.
QRectF rect = pw->subWidgetRect(widget);
@@ -366,7 +365,7 @@
}
}
- // we need to find the editor which is inside
+ // we need to find the editor which is inside
if (graphicsObject) {
return QRectF(graphicsObject->scenePos(), graphicsObject->boundingRect().size());
}
@@ -401,9 +400,9 @@
{
Q_D(const HbInputFocusObject);
- QGraphicsObject *editorWidget = qobject_cast<QGraphicsObject*>(d->mFocusedObject);
+ QGraphicsObject *editorWidget = qobject_cast<QGraphicsObject *>(d->mFocusedObject);
if (!editorWidget) {
- QWidget *widget = qobject_cast<QWidget*>(d->mFocusedObject);
+ QWidget *widget = qobject_cast<QWidget *>(d->mFocusedObject);
if (widget) {
editorWidget = HbInputUtils::graphicsProxyWidget(widget);
}
@@ -415,7 +414,7 @@
result += parent->zValue();
}
result += HbPrivate::VKBValueUnit;
- if(result >= 0) {
+ if (result >= 0) {
return result;
}
}
@@ -430,12 +429,12 @@
{
Q_D(const HbInputFocusObject);
- QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject*>(d->mFocusedObject);
+ QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject *>(d->mFocusedObject);
if (graphicsObject) {
return graphicsObject->inputMethodHints();
}
- QWidget *widget = qobject_cast<QWidget*>(d->mFocusedObject);
+ QWidget *widget = qobject_cast<QWidget *>(d->mFocusedObject);
if (widget) {
return widget->inputMethodHints();
}
@@ -450,13 +449,13 @@
{
Q_D(HbInputFocusObject);
- QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject*>(d->mFocusedObject);
+ QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject *>(d->mFocusedObject);
if (graphicsObject) {
graphicsObject->setInputMethodHints(hints);
return;
}
- QWidget *widget = qobject_cast<QWidget*>(d->mFocusedObject);
+ QWidget *widget = qobject_cast<QWidget *>(d->mFocusedObject);
if (widget) {
widget->setInputMethodHints(hints);
}
@@ -466,7 +465,7 @@
A convenience method for filtering strings. Uses filter attached to connected editor
and filters given string with it.
*/
-void HbInputFocusObject::filterStringWithEditorFilter(const QString& source, QString& result)
+void HbInputFocusObject::filterStringWithEditorFilter(const QString &source, QString &result)
{
QString intermediate = source;
@@ -523,12 +522,12 @@
{
Q_D(const HbInputFocusObject);
- QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject*>(d->mFocusedObject);
+ QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject *>(d->mFocusedObject);
if (graphicsObject) {
return graphicsObject->scenePos();
}
- QWidget *w = qobject_cast<QWidget*>(d->mFocusedObject);
+ QWidget *w = qobject_cast<QWidget *>(d->mFocusedObject);
// check if widget is inside a proxy.
QGraphicsProxyWidget *pw = HbInputUtils::graphicsProxyWidget(w);
if (pw) {
@@ -546,7 +545,7 @@
if (w) {
// not a proxy.. Meaning widget is inside a QWidget window.
- return w->mapToGlobal(QPoint(0,0));
+ return w->mapToGlobal(QPoint(0, 0));
}
return QPointF(0.0, 0.0);
@@ -555,7 +554,7 @@
/*!
Returns true if all the characters in given string are allowed in active editor.
*/
-bool HbInputFocusObject::stringAllowedInEditor(const QString& string) const
+bool HbInputFocusObject::stringAllowedInEditor(const QString &string) const
{
// Two pass filtering. This can be a case constrained editor with a filter.
Qt::InputMethodHints hints;
@@ -588,11 +587,11 @@
*/
void HbInputFocusObject::commitSmiley(QString smiley)
{
- Q_D(HbInputFocusObject);
+ Q_D(HbInputFocusObject);
- if (d->mFocusedObject) {
- d->mFocusedObject->setProperty("SmileyIcon", smiley);
- }
+ if (d->mFocusedObject) {
+ d->mFocusedObject->setProperty("SmileyIcon", smiley);
+ }
}
/*!
@@ -611,25 +610,25 @@
bool HbInputFocusObject::isReadOnlyWidget(QObject *editorObject)
{
if (editorObject) {
- QWidget *widget = qobject_cast<QWidget*>(editorObject);
+ QWidget *widget = qobject_cast<QWidget *>(editorObject);
if (widget) {
if (!widget->testAttribute(Qt::WA_InputMethodEnabled)) {
return true;
}
- QLineEdit *lineEdit = qobject_cast<QLineEdit*>(widget);
+ QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget);
if (lineEdit) {
return lineEdit->isReadOnly();
}
- QTextEdit *textEdit = qobject_cast<QTextEdit*>(widget);
+ QTextEdit *textEdit = qobject_cast<QTextEdit *>(widget);
if (textEdit) {
return textEdit->isReadOnly();
}
return false;
} else {
- QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject*>(editorObject);
+ QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject *>(editorObject);
if (graphicsObject) {
if (!(graphicsObject->flags() & QGraphicsItem::ItemAcceptsInputMethod)) {
return true;
@@ -672,11 +671,11 @@
{
Q_D(HbInputFocusObject);
- QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject*>(d->mFocusedObject);
+ QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject *>(d->mFocusedObject);
if (graphicsObject && graphicsObject->scene()) {
graphicsObject->scene()->setFocusItem(graphicsObject);
} else {
- QWidget *widget = qobject_cast<QWidget*>(d->mFocusedObject);
+ QWidget *widget = qobject_cast<QWidget *>(d->mFocusedObject);
if (widget) {
widget->setFocus();
}
--- a/src/hbcore/inputfw/hbinputfocusobject.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputfocusobject.h Wed Jun 23 18:33:25 2010 +0300
@@ -49,16 +49,16 @@
explicit HbInputFocusObject(QObject *focusedObject);
~HbInputFocusObject();
- void sendPreEditString(const QString& string);
- void sendCommitString(const QString& string);
- void sendEvent(QEvent& event);
- void postEvent(QEvent& event);
+ void sendPreEditString(const QString &string);
+ void sendCommitString(const QString &string);
+ void sendEvent(QEvent &event);
+ void postEvent(QEvent &event);
QVariant inputMethodQuery(Qt::InputMethodQuery query) const;
int editorCursorPosition();
QFont editorFont();
QString editorTextSelection();
QString editorSurroundingText();
- HbEditorInterface& editorInterface() const;
+ HbEditorInterface &editorInterface() const;
void cursorLeft(Qt::KeyboardModifiers modifiers = Qt::NoModifier);
void cursorRight(Qt::KeyboardModifiers modifiers = Qt::NoModifier);
void releaseFocus();
@@ -71,9 +71,9 @@
void setInputMethodHints(Qt::InputMethodHints hints);
QPointF scenePos() const;
- void filterStringWithEditorFilter(const QString& source, QString& result);
+ void filterStringWithEditorFilter(const QString &source, QString &result);
bool characterAllowedInEditor(QChar character) const;
- bool stringAllowedInEditor(const QString& string) const;
+ bool stringAllowedInEditor(const QString &string) const;
void commitSmiley(QString smiley);
QObject *object() const;
void setFocus();
@@ -82,7 +82,7 @@
static bool isEditor(QObject *object);
protected:
- HbInputFocusObjectPrivate * const d_ptr;
+ HbInputFocusObjectPrivate *const d_ptr;
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbInputFocusObject)
--- a/src/hbcore/inputfw/hbinputkeymap.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputkeymap.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -27,7 +27,7 @@
#include <QChar>
#include <QString>
-#include <QStringList>
+#include <QStringList>
const int DeadKeyTable[14] = {0x060, 0x0B4, 0x05E, 0x0A8, 0x022, 0x2C7, 0x2D8, 0x0B0, 0x2DB, 0x2DD, 0x07E, 0x0B8, 0x201A, 0x0B7};
@@ -37,7 +37,7 @@
{0x060, 0x069, 0x0ec},
{0x060, 0x06F, 0x0f2},
{0x060, 0x075, 0x0f9},
-
+
{0x0b4, 0x061, 0x0e1},
{0x0b4, 0x065, 0x0e9},
{0x0b4, 0x069, 0x0ed},
@@ -57,21 +57,21 @@
{0x05e, 0x069, 0x0ee},
{0x05e, 0x06F, 0x0f4},
{0x05e, 0x075, 0x0fb},
-
+
{0x0a8, 0x061, 0x0e4},
{0x0a8, 0x065, 0x0eb},
{0x0a8, 0x069, 0x0ef},
{0x0a8, 0x06F, 0x0f6},
{0x0a8, 0x075, 0x0fc},
{0x0a8, 0x079, 0x0ff},
-
+
{0x022, 0x061, 0x0e4},
{0x022, 0x065, 0x0eb},
{0x022, 0x069, 0x0ef},
{0x022, 0x06F, 0x0f6},
{0x022, 0x075, 0x0fc},
{0x022, 0x079, 0x0ff},
-
+
{0x2c7, 0x065, 0x11b},
{0x2c7, 0x063, 0x10d},
{0x2c7, 0x064, 0x10f},
@@ -81,7 +81,7 @@
{0x2c7, 0x053, 0x161},
{0x2c7, 0x074, 0x165},
{0x2c7, 0x07A, 0x17E},
-
+
{0x2d8, 0x061, 0x103},
{0x0b0, 0x061, 0x0c5},
@@ -103,7 +103,8 @@
{0x201a, 0x063, 0x0e7},
{0x201a, 0x072, 0x15f},
- {0x0b7, 0x07A, 0x17c}};
+ {0x0b7, 0x07A, 0x17c}
+};
class HbKeymapPrivate
{
@@ -113,20 +114,20 @@
~HbKeymapPrivate();
public:
- QMap<HbKeyboardType, HbKeyboardMap*> mKeyboards;
+ QMap<HbKeyboardType, HbKeyboardMap *> mKeyboards;
HbInputLanguage mLanguage;
};
HbKeymapPrivate::HbKeymapPrivate(HbInputLanguage language)
-: mLanguage(language)
+ : mLanguage(language)
{
}
HbKeymapPrivate::~HbKeymapPrivate()
{
- foreach (HbKeyboardMap* keymap, mKeyboards) {
- foreach (HbMappedKey* key, keymap->keys) {
+ foreach(HbKeyboardMap *keymap, mKeyboards) {
+ foreach(HbMappedKey *key, keymap->keys) {
delete key;
}
delete keymap;
@@ -250,7 +251,7 @@
*/
const HbKeyboardMap *HbKeymap::keyboard(HbKeyboardType keyboard) const
{
- HbKeyboardMap* keyboardMap = 0;
+ HbKeyboardMap *keyboardMap = 0;
if (mPrivate->mKeyboards.contains(keyboard)) {
keyboardMap = mPrivate->mKeyboards.value(keyboard);
}
@@ -275,9 +276,9 @@
*/
const HbMappedKey *HbKeymap::keyForIndex(HbKeyboardType keyboard, int keyIndex) const
{
- HbMappedKey* key = 0;
+ HbMappedKey *key = 0;
if (mPrivate->mKeyboards.contains(keyboard)) {
- HbKeyboardMap* keymap = mPrivate->mKeyboards.value(keyboard);
+ HbKeyboardMap *keymap = mPrivate->mKeyboards.value(keyboard);
if (keymap->keys.count() > keyIndex && keyIndex >= 0) {
key = keymap->keys.at(keyIndex);
}
@@ -294,10 +295,10 @@
*/
const HbMappedKey *HbKeymap::keyForKeycode(HbKeyboardType keyboard, QChar keycode) const
{
- HbMappedKey* key = 0;
+ HbMappedKey *key = 0;
if (mPrivate->mKeyboards.contains(keyboard)) {
- HbKeyboardMap* keymap = mPrivate->mKeyboards.value(keyboard);
- foreach (HbMappedKey* mappedKey, keymap->keys) {
+ HbKeyboardMap *keymap = mPrivate->mKeyboards.value(keyboard);
+ foreach(HbMappedKey *mappedKey, keymap->keys) {
if (mappedKey->keycode == keycode) {
key = mappedKey;
break;
@@ -317,11 +318,11 @@
*/
const HbMappedKey *HbKeymap::keyForCharacter(HbKeyboardType keyboard, QChar character) const
{
- HbMappedKey* key = 0;
+ HbMappedKey *key = 0;
if (mPrivate->mKeyboards.contains(keyboard)) {
- HbKeyboardMap* keymap = mPrivate->mKeyboards.value(keyboard);
- foreach (HbMappedKey* mappedKey, keymap->keys) {
- foreach (QString charstring, mappedKey->chars) {
+ HbKeyboardMap *keymap = mPrivate->mKeyboards.value(keyboard);
+ foreach(HbMappedKey *mappedKey, keymap->keys) {
+ foreach(const QString &charstring, mappedKey->chars) {
if (charstring.contains(character)) {
key = mappedKey;
break;
@@ -345,8 +346,8 @@
bool HbKeymap::isDeadKey(int key)
{
int size = sizeof(DeadKeyTable) / sizeof(DeadKeyTable[0]);
- for (int i=0; i<size; i++){
- if (key == DeadKeyTable[i]){
+ for (int i = 0; i < size; i++) {
+ if (key == DeadKeyTable[i]) {
return true;
}
}
@@ -375,9 +376,9 @@
} else {
firstKey = deadKey;
secondKey = key;
- int size = sizeof(DeadKeyCombineTable) / sizeof(DeadKeyCombineTable[0][0])/3;
- for (int i=0; i<size; i++){
- if (deadKey == DeadKeyCombineTable[i][0] && lowerKey == DeadKeyCombineTable[i][1]){
+ int size = sizeof(DeadKeyCombineTable) / sizeof(DeadKeyCombineTable[0][0]) / 3;
+ for (int i = 0; i < size; i++) {
+ if (deadKey == DeadKeyCombineTable[i][0] && lowerKey == DeadKeyCombineTable[i][1]) {
if (key.isUpper()) {
firstKey = ((QChar)DeadKeyCombineTable[i][2]).toUpper();
} else {
--- a/src/hbcore/inputfw/hbinputkeymap.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputkeymap.h Wed Jun 23 18:33:25 2010 +0300
@@ -47,11 +47,10 @@
const QString characters(const HbModifiers modifiers) const;
};
-struct HbKeyboardMap
-{
+struct HbKeyboardMap {
public:
HbKeyboardType type;
- QList<HbMappedKey*> keys;
+ QList<HbMappedKey *> keys;
};
class HB_CORE_EXPORT HbKeymap
@@ -67,11 +66,11 @@
virtual const HbMappedKey *keyForIndex(HbKeyboardType keyboard, int keyIndex) const;
virtual const HbMappedKey *keyForKeycode(HbKeyboardType keyboard, QChar keyCode) const;
virtual const HbMappedKey *keyForCharacter(HbKeyboardType keyboard, QChar character) const;
- static bool isDeadKey (int key);
+ static bool isDeadKey(int key);
static void combineCharacter(QChar deadKey, QChar key, QChar &firstKey, QChar &secondKey);
private:
- HbKeymapPrivate* mPrivate;
+ HbKeymapPrivate *mPrivate;
};
#endif // HB_INPUT_KEYMAP_DATA_H
--- a/src/hbcore/inputfw/hbinputkeymapfactory.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputkeymapfactory.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,7 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputkeymapfactory.h"
#include <QPluginLoader>
#include <QDir>
@@ -29,7 +30,6 @@
#include <QTextStream>
#include <QVector>
-#include "hbinputkeymapfactory.h"
#include "hbinputkeymap.h"
#include "hbinputsettingproxy.h"
@@ -40,12 +40,12 @@
public:
HbKeymapFactoryPrivate();
~HbKeymapFactoryPrivate();
- void parseFiles(QStringList& files, QList<HbInputLanguage>& languages);
- bool isValidKeymap(QFile& file);
- float keymapVersion(QFile& file);
+ void parseFiles(QStringList &files, QList<HbInputLanguage>& languages);
+ bool isValidKeymap(QFile &file);
+ qreal keymapVersion(QFile &file);
public:
- QList<HbKeymap*> mKeymaps;
+ QList<HbKeymap *> mKeymaps;
QList<HbInputLanguage> mRomLanguages;
};
@@ -56,19 +56,19 @@
HbKeymapFactoryPrivate::~HbKeymapFactoryPrivate()
{
- foreach (HbKeymap* keymap, mKeymaps) {
+ foreach(HbKeymap *keymap, mKeymaps) {
delete keymap;
}
mKeymaps.clear();
mRomLanguages.clear();
}
-void HbKeymapFactoryPrivate::parseFiles(QStringList& files, QList<HbInputLanguage>& languages)
+void HbKeymapFactoryPrivate::parseFiles(QStringList &files, QList<HbInputLanguage>& languages)
{
bool ok = false;
QLocale::Language language = QLocale::C;
QLocale::Country country = QLocale::AnyCountry;
- foreach(QString file, files) {
+ foreach(const QString &file, files) {
int underscorePos = file.indexOf('_');
int periodPos = file.indexOf('.');
if (underscorePos > 0 && underscorePos < periodPos) {
@@ -76,7 +76,7 @@
if (!ok) {
continue;
}
- country = static_cast<QLocale::Country>(file.mid(underscorePos+1, periodPos-underscorePos-1).toUInt(&ok));
+ country = static_cast<QLocale::Country>(file.mid(underscorePos + 1, periodPos - underscorePos - 1).toUInt(&ok));
if (!ok) {
continue;
}
@@ -97,18 +97,18 @@
}
}
-bool HbKeymapFactoryPrivate::isValidKeymap(QFile& file)
-{
+bool HbKeymapFactoryPrivate::isValidKeymap(QFile &file)
+{
QTextStream stream(&file);
HbKeyboardType keyboardType = HbKeyboardNone;
bool retunResult = false;
while (!stream.atEnd()) {
QString line = stream.readLine();
-
+
if (keyboardType == HbKeyboardSctPortrait || keyboardType == HbKeyboardSctLandscape) {
continue;
- }
+ }
// When an empty line is encountered, an ongoing keyboard definition ends
if (line.isEmpty()) {
@@ -125,53 +125,53 @@
// containing the keyboard type as hex
if (keyboardType == HbKeyboardNone) {
bool ok = false;
- int keyType = line.toInt(&ok, 16);
+ int keyType = line.toInt(&ok, 16);
if (ok) {
keyboardType = static_cast<HbKeyboardType>(keyType);
}
retunResult = true;
- // Non-empty line with ongoing keyboard definition contains a key definition
- // Format: <keycode(char)><tab><keys_nomod><tab><keys_shiftmod><tab><keys_fnmod><tab><keys_fn+shiftmod>
- // Keycode and keys_nomod should always be present, but the rest are optional
+ // Non-empty line with ongoing keyboard definition contains a key definition
+ // Format: <keycode(char)><tab><keys_nomod><tab><keys_shiftmod><tab><keys_fnmod><tab><keys_fn+shiftmod>
+ // Keycode and keys_nomod should always be present, but the rest are optional
} else {
- QStringList splitResult = line.split("\t");
+ QStringList splitResult = line.split('\t');
if (splitResult.count() == 0) {
continue;
- }
+ }
if ((splitResult.count() < 2 || splitResult.count() > 5)) {
retunResult = false;
break;
- } else {
- retunResult = true;
+ } else {
+ retunResult = true;
}
}
}
//Make the Reading position at the start of the file
- stream.seek(0);
+ stream.seek(0);
return retunResult;
}
-float HbKeymapFactoryPrivate::keymapVersion(QFile& file)
+qreal HbKeymapFactoryPrivate::keymapVersion(QFile &file)
{
QTextStream stream(&file);
- float versionNumber = -1;
+ qreal versionNumber = -1.0;
while (!stream.atEnd()) {
QString line = stream.readLine();
if (line.isEmpty() || (line.length() >= 2 && line.at(0) == '/' && line.at(1) == '/')) {
continue;
}
- QStringList splitResult = line.split("\t");
+ QStringList splitResult = line.split('\t');
- if(splitResult.at(0).toLower() == QString("version")) {
+ if (splitResult.at(0).toLower() == QString("version")) {
QStringList periodSplits = splitResult.at(1).split('.');
QString version = periodSplits.at(0);
version.append('.');
- int count = periodSplits.count() - 1;
- int i = 1;
+ int count = periodSplits.count() - 1;
+ int i = 1;
while (i < count) {
- version.append(periodSplits.at(i++));
+ version.append(periodSplits.at(i++));
}
versionNumber = version.toFloat();
break;
@@ -180,7 +180,7 @@
if (filename.left(2) == ":/" || filename.left(2).toLower() == "z:") {
versionNumber = 0;
break;
- }
+ }
}
}
@@ -205,7 +205,7 @@
/*!
Returns reference to singleton instance.
*/
-HbKeymapFactory* HbKeymapFactory::instance()
+HbKeymapFactory *HbKeymapFactory::instance()
{
static HbKeymapFactory myInstance;
return &myInstance;
@@ -228,7 +228,7 @@
}
/*!
-Returns a HbKeymap object initialized using keymap resource data in the system. Ownership of the
+Returns a HbKeymap object initialized using keymap resource data in the system. Ownership of the
HbKeymap object remains with HbKeymapFactory.
If no data is found for the given language, 0 is returned.
@@ -238,13 +238,13 @@
\sa HbKeymap
*/
-const HbKeymap* HbKeymapFactory::keymap(const QLocale::Language language, const QLocale::Country country)
+const HbKeymap *HbKeymapFactory::keymap(const QLocale::Language language, const QLocale::Country country)
{
return keymap(HbInputLanguage(language, country));
}
/*!
-Returns a HbKeymap object initialized using keymap resource data in the system. Ownership of the
+Returns a HbKeymap object initialized using keymap resource data in the system. Ownership of the
HbKeymap object remains with HbKeymapFactory.
If no data is found for the given input language, 0 is returned. If the variant of the input language
@@ -255,9 +255,9 @@
\sa HbKeymap
\sa HbInputLanguage
*/
-const HbKeymap* HbKeymapFactory::keymap(const HbInputLanguage language)
+const HbKeymap *HbKeymapFactory::keymap(const HbInputLanguage language)
{
- foreach (HbKeymap* keymap, mPrivate->mKeymaps) {
+ foreach(HbKeymap *keymap, mPrivate->mKeymaps) {
if (keymap->language() == language) {
return keymap;
}
@@ -265,49 +265,49 @@
QString filename, latestVersionFilename;
QFile file;
- float maxVersionNumber = -1.0;
+ qreal maxVersionNumber = -1.0;
- foreach (QString path, HbInputSettingProxy::keymapPluginPaths()) {
+ foreach(const QString &path, HbInputSettingProxy::keymapPluginPaths()) {
if (language.variant() == QLocale::AnyCountry) {
filename = path + '/' + QString::number(language.language()) + ".txt";
} else {
- filename = path + '/' + QString::number(language.language()) + "_"
- + QString::number(language.variant()) + ".txt";
+ filename = path + '/' + QString::number(language.language()) + '_'
+ + QString::number(language.variant()) + ".txt";
}
-
+
if (QFile::exists(filename)) {
file.setFileName(filename);
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
- float fileVersion = mPrivate->keymapVersion(file);
+ qreal fileVersion = mPrivate->keymapVersion(file);
if ((fileVersion > maxVersionNumber) && mPrivate->isValidKeymap(file)) {
//Found the valid keymap with latest version
latestVersionFilename = filename;
maxVersionNumber = fileVersion;
- }
+ }
//Close the file
file.close();
- }
- }
+ }
+ }
}
file.setFileName(latestVersionFilename);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
- if (language.variant() == QLocale::AnyCountry) {
- // File not found when trying to open with AnyCountry (no location specified), check whether
- // the language is available as a country-specific version
-
- foreach(HbInputLanguage availableLanguage, availableLanguages()) {
- if (availableLanguage.language() == language.language()) {
- return keymap(availableLanguage);
- }
- }
+ if (language.variant() == QLocale::AnyCountry) {
+ // File not found when trying to open with AnyCountry (no location specified), check whether
+ // the language is available as a country-specific version
+
+ foreach(const HbInputLanguage &availableLanguage, availableLanguages()) {
+ if (availableLanguage.language() == language.language()) {
+ return keymap(availableLanguage);
}
- return 0;
- }
+ }
+ }
+ return 0;
+ }
QTextStream stream(&file);
- HbKeymap* keymap = 0;
- HbKeyboardMap* keyboard = 0;
+ HbKeymap *keymap = 0;
+ HbKeyboardMap *keyboard = 0;
while (!stream.atEnd()) {
QString line = stream.readLine();
@@ -335,15 +335,15 @@
keyboard = new HbKeyboardMap();
keyboard->type = static_cast<HbKeyboardType>(keyType);
}
- // Non-empty line with ongoing keyboard definition contains a key definition
- // Format: <keycode(char)><tab><keys_nomod><tab><keys_shiftmod><tab><keys_fnmod><tab><keys_fn+shiftmod>
- // Keycode and keys_nomod should always be present, but the rest are optional
+ // Non-empty line with ongoing keyboard definition contains a key definition
+ // Format: <keycode(char)><tab><keys_nomod><tab><keys_shiftmod><tab><keys_fnmod><tab><keys_fn+shiftmod>
+ // Keycode and keys_nomod should always be present, but the rest are optional
} else {
- QStringList splitResult = line.split("\t");
+ QStringList splitResult = line.split('\t');
if (splitResult.count() == 0) {
continue;
}
- HbMappedKey* mappedKey = new HbMappedKey();
+ HbMappedKey *mappedKey = new HbMappedKey();
mappedKey->keycode = splitResult.at(0).at(0);
for (int i = 1; i < splitResult.count(); ++i) {
switch (i) {
@@ -359,6 +359,9 @@
case 4:
mappedKey->chars.append(splitResult.at(4));
break;
+ case 5:
+ mappedKey->chars.append(splitResult.at(5));
+ break;
default:
break;
}
@@ -380,12 +383,12 @@
*/
QList<HbInputLanguage> HbKeymapFactory::availableLanguages()
{
- HbKeymapFactory* instance = HbKeymapFactory::instance();
+ HbKeymapFactory *instance = HbKeymapFactory::instance();
bool romLanguagesCached = !instance->mPrivate->mRomLanguages.isEmpty();
QList<HbInputLanguage> languages;
QStringList files;
QStringList romFiles;
- foreach (QString path, HbInputSettingProxy::keymapPluginPaths()) {
+ foreach(const QString &path, HbInputSettingProxy::keymapPluginPaths()) {
if (path.left(2) == ":/" || path.left(2) == "z:") {
if (romLanguagesCached) {
continue;
--- a/src/hbcore/inputfw/hbinputkeymapfactory.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputkeymapfactory.h Wed Jun 23 18:33:25 2010 +0300
@@ -23,10 +23,11 @@
**
****************************************************************************/
-#ifndef HB_KEYMAP_FACTORY_H
-#define HB_KEYMAP_FACTORY_H
+#ifndef HB_INPUT_KEYMAP_FACTORY_H
+#define HB_INPUT_KEYMAP_FACTORY_H
#include <hbinputdef.h>
+#include <QLocale>
class HbKeymapFactoryPrivate;
class HbKeymap;
@@ -35,11 +36,11 @@
class HB_CORE_EXPORT HbKeymapFactory
{
public:
- static HbKeymapFactory* instance();
+ static HbKeymapFactory *instance();
- const HbKeymap* keymap(const QLocale::Language language,
+ const HbKeymap *keymap(const QLocale::Language language,
const QLocale::Country country = QLocale::AnyCountry);
- const HbKeymap* keymap(const HbInputLanguage language);
+ const HbKeymap *keymap(const HbInputLanguage language);
static QList<HbInputLanguage> availableLanguages();
@@ -50,9 +51,9 @@
Q_DISABLE_COPY(HbKeymapFactory)
private:
- HbKeymapFactoryPrivate* mPrivate;
+ HbKeymapFactoryPrivate *mPrivate;
};
-#endif // HB_KEYMAP_FACTORY_H
+#endif // HB_INPUT_KEYMAP_FACTORY_H
// End of file
--- a/src/hbcore/inputfw/hbinputlanguage.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputlanguage.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,72 +22,72 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputlanguage.h"
#include "hbinpututils.h"
-#include "hbinputlanguage.h"
/*!
\alpha
\class HbInputLanguage
-\brief Holds Input language value.
+\brief Holds Input language value.
When enumerating input languages, sometimes a single QLocale::Language value is not enough. For
example in case of Chinese. QLocale defines only one language constant for Chinese, QLocale::Chinese,
but input framework supports three Chinese dialect. We need a secondary value for the dialect and
we're using QLocale::Country values for that. In most cases, however, the variant field is not needed.
QLocale itself has those two fields but using it would have been an overkill for this purpuse.
-This class also implements a set of language related convinience methods.
+This class also implements a set of language related convenience methods.
*/
//
// Localized language names.
//
-const ushort HbLangNameEnglish[] = {'E','n','g','l','i','s','h',0};
-const ushort HbLangNameLithuanian[] = {'L','i','e','t','u','v',0x0173,0};
-const ushort HbLangNameMalay[] = {'M','e','l','a','y','u',0};
-const ushort HbLangNamePolish[] = {'P','o','l','s','k','i',0};
-const ushort HbLangNamePortuguese[] = {'P','o','r','t','u','g',0x00ea,'s',0};
-const ushort HbLangNameRomanian[] = {'R','o',0x00e2,'n',0x0103,0};
-const ushort HbLangNameSerbian[] = {'S','r','p','s','k','i',0};
-const ushort HbLangNameSlovak[] = {'S','l','o','v','e','n',0x010d,'i','n','a',0};
-const ushort HbLangNameSlovene[] = {'S','l','o','v','e','n',0x0161,0x010d,'i','n','a',0};
-const ushort HbLangNameSpanish[] = {'E','s','p','a',0x00f1,'o','l',0};
-const ushort HbLangNameSwedish[] = {'S','w','e','d','i','s','h',0};
-const ushort HbLangNameTagalog[] = {'P','i','l','i','p','i','n','o',0};
-const ushort HbLangNameCzech[] = {0x010c,'e',0x0161,'t','i','n','a',0};
-const ushort HbLangNameDutch[] = {'N','e','d','e','r','l','a','n','d','s',0};
-const ushort HbLangNameTurkish[] = {'T',0x00fc,'r','k',0x00e7,'e',0};
-const ushort HbLangNameEstonian[] = {'E','e','s','t','i',0};
-const ushort HbLangNameFrench[] = {'F','r','a','n',0x00e7,'a','i','s',0};
-const ushort HbLangNameGreek[] = {0x0395,0x03bb,0x03bb,0x03b7,0x03bd,0x03b9,0x03ba,0x03ac,0};
-const ushort HbLangNameIcelandic[] = {0x00cd,'s','l','e','n','s','k','a',0};
-const ushort HbLangNameIndonesian[] = {'I','n','d','o','n','e','s','i','a',0};
-const ushort HbLangNameItalian[] = {'I','t','a','l','i','a','n','o',0};
-const ushort HbLangNameLatvian[] = {'L','a','t','v','i','e',0x0161,'u',0};
-const ushort HbLangNameCroatian[] = {'C','r','o','a','t','i','a','n',0};
-const ushort HbLangNameGerman[] = {'D','e','u','t','c','h',0};
-const ushort HbLangNameHungarian[] = {'M','a','g','y','a','r',0};
-const ushort HbLangNameBulgarian[] = {0x0411,0x044a,0x043b,0x0433,0x0430,0x0440,0x0441,0x043a, 0x0438,0};
-const ushort HbLangNameFinnish[] = {'S','u','o','m','i',0};
-const ushort HbLangNameRussian[] = {0x0420,0x0443,0x0441,0x0441,0x043a,0x0438,0x0439,0};
-const ushort HbLangNameDanish[] = {'D','a','n','s','k',0};
-const ushort HbLangNameNorwegian[] = {'N','o','r','s','k',0};
-const ushort HbLangNameUkrainian[] = {0x0423, 0x043a, 0x0440, 0x0430, 0x0457, 0x043d, 0x0441, 0x044c, 0x043a, 0x0430,0};
-const ushort HbLangNameArabic[] = {0x0627,0x0644,0x0639,0x0631,0x0628,0x064a,0x0629,0};
-const ushort HbLangNameHebrew[] = {0x05e2,0x05d1,0x05e8,0x05d9,0x05ea,0};
-const ushort HbLangNameThai[] = {0x0e20,0x0e32,0x0e29,0x0e32,0x0e44,0x0e17,0x0e22,0};
-const ushort HbLangNameJapanese[] = {0x65e5,0x672c,0x8a9e,0};
-const ushort HbLangNameVietnamese[] = {'T','i',0x00ea,0x0301,'n','g',' ','V','i',0x00ea,0x0323,'t',0};
-const ushort HbLangNameFarsi[] = {0x0641,0x0627,0x0631,0x0633,0x0649,0};
-const ushort HbLangNameHindi[] = {0x0939,0x093f,0x0928,0x0928,0x094d,0x0926,0x0940,0};
-const ushort HbLangNameUrdu[] = {0x0627,0x0631,0x062f,0x0648,0};
-const ushort HbLangNameCatalan[] = {'C','a','t','a','l',0x00e0,0};
-const ushort HbLangNameGalician[] = {'G','a','l','e','g','o',0};
-const ushort HbLangNameBasque[] = {'E','u','s','k','a','r','a',0};
-const ushort HbLangNameMarathi[] = {0x092e,0x0930,0x093e,0x0920,0x0940,0};
-const ushort HbLangNameChinesePrc[] = {0x7B80,0x4F53,0x4E2D,0x6587,0};
-const ushort HbLangNameChineseHongKong[] = {0x7E41,0x9AD4,0x4E2D,0x6587,0x0028,0x9999,0x6E2F,0x0029,0};
-const ushort HbLangNameChineseTaiwan[] = {0x7E41,0x9AD4,0x4E2D,0x6587,0x0028,0x53F0,0x7063,0x0029,0};
-const ushort HbLangNameKorean[] = {'K','o','r','e','a','n',0};
+const ushort HbLangNameEnglish[] = {'E', 'n', 'g', 'l', 'i', 's', 'h', 0};
+const ushort HbLangNameLithuanian[] = {'L', 'i', 'e', 't', 'u', 'v', 0x0173, 0};
+const ushort HbLangNameMalay[] = {'M', 'e', 'l', 'a', 'y', 'u', 0};
+const ushort HbLangNamePolish[] = {'P', 'o', 'l', 's', 'k', 'i', 0};
+const ushort HbLangNamePortuguese[] = {'P', 'o', 'r', 't', 'u', 'g', 0x00ea, 's', 0};
+const ushort HbLangNameRomanian[] = {'R', 'o', 0x00e2, 'n', 0x0103, 0};
+const ushort HbLangNameSerbian[] = {'S', 'r', 'p', 's', 'k', 'i', 0};
+const ushort HbLangNameSlovak[] = {'S', 'l', 'o', 'v', 'e', 'n', 0x010d, 'i', 'n', 'a', 0};
+const ushort HbLangNameSlovene[] = {'S', 'l', 'o', 'v', 'e', 'n', 0x0161, 0x010d, 'i', 'n', 'a', 0};
+const ushort HbLangNameSpanish[] = {'E', 's', 'p', 'a', 0x00f1, 'o', 'l', 0};
+const ushort HbLangNameSwedish[] = {'S', 'w', 'e', 'd', 'i', 's', 'h', 0};
+const ushort HbLangNameTagalog[] = {'P', 'i', 'l', 'i', 'p', 'i', 'n', 'o', 0};
+const ushort HbLangNameCzech[] = {0x010c, 'e', 0x0161, 't', 'i', 'n', 'a', 0};
+const ushort HbLangNameDutch[] = {'N', 'e', 'd', 'e', 'r', 'l', 'a', 'n', 'd', 's', 0};
+const ushort HbLangNameTurkish[] = {'T', 0x00fc, 'r', 'k', 0x00e7, 'e', 0};
+const ushort HbLangNameEstonian[] = {'E', 'e', 's', 't', 'i', 0};
+const ushort HbLangNameFrench[] = {'F', 'r', 'a', 'n', 0x00e7, 'a', 'i', 's', 0};
+const ushort HbLangNameGreek[] = {0x0395, 0x03bb, 0x03bb, 0x03b7, 0x03bd, 0x03b9, 0x03ba, 0x03ac, 0};
+const ushort HbLangNameIcelandic[] = {0x00cd, 's', 'l', 'e', 'n', 's', 'k', 'a', 0};
+const ushort HbLangNameIndonesian[] = {'I', 'n', 'd', 'o', 'n', 'e', 's', 'i', 'a', 0};
+const ushort HbLangNameItalian[] = {'I', 't', 'a', 'l', 'i', 'a', 'n', 'o', 0};
+const ushort HbLangNameLatvian[] = {'L', 'a', 't', 'v', 'i', 'e', 0x0161, 'u', 0};
+const ushort HbLangNameCroatian[] = {'C', 'r', 'o', 'a', 't', 'i', 'a', 'n', 0};
+const ushort HbLangNameGerman[] = {'D', 'e', 'u', 't', 'c', 'h', 0};
+const ushort HbLangNameHungarian[] = {'M', 'a', 'g', 'y', 'a', 'r', 0};
+const ushort HbLangNameBulgarian[] = {0x0411, 0x044a, 0x043b, 0x0433, 0x0430, 0x0440, 0x0441, 0x043a, 0x0438, 0};
+const ushort HbLangNameFinnish[] = {'S', 'u', 'o', 'm', 'i', 0};
+const ushort HbLangNameRussian[] = {0x0420, 0x0443, 0x0441, 0x0441, 0x043a, 0x0438, 0x0439, 0};
+const ushort HbLangNameDanish[] = {'D', 'a', 'n', 's', 'k', 0};
+const ushort HbLangNameNorwegian[] = {'N', 'o', 'r', 's', 'k', 0};
+const ushort HbLangNameUkrainian[] = {0x0423, 0x043a, 0x0440, 0x0430, 0x0457, 0x043d, 0x0441, 0x044c, 0x043a, 0x0430, 0};
+const ushort HbLangNameArabic[] = {0x0627, 0x0644, 0x0639, 0x0631, 0x0628, 0x064a, 0x0629, 0};
+const ushort HbLangNameHebrew[] = {0x05e2, 0x05d1, 0x05e8, 0x05d9, 0x05ea, 0};
+const ushort HbLangNameThai[] = {0x0e20, 0x0e32, 0x0e29, 0x0e32, 0x0e44, 0x0e17, 0x0e22, 0};
+const ushort HbLangNameJapanese[] = {0x65e5, 0x672c, 0x8a9e, 0};
+const ushort HbLangNameVietnamese[] = {'T', 'i', 0x00ea, 0x0301, 'n', 'g', ' ', 'V', 'i', 0x00ea, 0x0323, 't', 0};
+const ushort HbLangNameFarsi[] = {0x0641, 0x0627, 0x0631, 0x0633, 0x0649, 0};
+const ushort HbLangNameHindi[] = {0x0939, 0x093f, 0x0928, 0x0928, 0x094d, 0x0926, 0x0940, 0};
+const ushort HbLangNameUrdu[] = {0x0627, 0x0631, 0x062f, 0x0648, 0};
+const ushort HbLangNameCatalan[] = {'C', 'a', 't', 'a', 'l', 0x00e0, 0};
+const ushort HbLangNameGalician[] = {'G', 'a', 'l', 'e', 'g', 'o', 0};
+const ushort HbLangNameBasque[] = {'E', 'u', 's', 'k', 'a', 'r', 'a', 0};
+const ushort HbLangNameMarathi[] = {0x092e, 0x0930, 0x093e, 0x0920, 0x0940, 0};
+const ushort HbLangNameChinesePrc[] = {0x7B80, 0x4F53, 0x4E2D, 0x6587, 0};
+const ushort HbLangNameChineseHongKong[] = {0x7E41, 0x9AD4, 0x4E2D, 0x6587, 0x0028, 0x9999, 0x6E2F, 0x0029, 0};
+const ushort HbLangNameChineseTaiwan[] = {0x7E41, 0x9AD4, 0x4E2D, 0x6587, 0x0028, 0x53F0, 0x7063, 0x0029, 0};
+const ushort HbLangNameKorean[] = {'K', 'o', 'r', 'e', 'a', 'n', 0};
//
// Helper class for binding language names to QLocale constants.
@@ -96,14 +96,13 @@
{
public:
int mLanguage;
- const ushort* mName;
+ const ushort *mName;
};
//
// This table binds QLocale language value to language name string.
//
-const HbLocNameBinding nameBindings[] =
-{
+const HbLocNameBinding nameBindings[] = {
{QLocale::English, HbLangNameEnglish},
{QLocale::Lithuanian, HbLangNameLithuanian},
{QLocale::Malay, HbLangNameMalay},
@@ -152,13 +151,13 @@
};
/*!
-\fn QLocale::Language language() const
+\fn QLocale::Language language() const
Returns languge code as QLocale::Language.
*/
/*!
-\fn QLocale::Country variant() const
+\fn QLocale::Country variant() const
Returns variant code as QLocale::Country.
*/
@@ -170,7 +169,7 @@
*/
/*!
-\fn bool defined()
+\fn bool defined()
Returns true if this structure is initialised to contain a valid language/variant pair.
*/
@@ -189,17 +188,17 @@
if (mLanguage == QLocale::Chinese) {
switch (mVariant) {
- case QLocale::China:
- result = QString::fromUtf16(HbLangNameChinesePrc);
- break;
- case QLocale::Taiwan:
- result = QString::fromUtf16(HbLangNameChineseTaiwan);
- break;
- case QLocale::HongKong:
- result = QString::fromUtf16(HbLangNameChineseHongKong);
- break;
- default:
- break;
+ case QLocale::China:
+ result = QString::fromUtf16(HbLangNameChinesePrc);
+ break;
+ case QLocale::Taiwan:
+ result = QString::fromUtf16(HbLangNameChineseTaiwan);
+ break;
+ case QLocale::HongKong:
+ result = QString::fromUtf16(HbLangNameChineseHongKong);
+ break;
+ default:
+ break;
}
}
@@ -218,10 +217,10 @@
*/
bool HbInputLanguage::isCaseSensitiveLanguage() const
{
- if (mLanguage == QLocale::Arabic || mLanguage == QLocale::Hebrew
+ if (mLanguage == QLocale::Arabic || mLanguage == QLocale::Hebrew
|| mLanguage == QLocale::Urdu || mLanguage == QLocale::Chinese
|| mLanguage == QLocale::Thai || mLanguage == QLocale::Japanese
- || mLanguage == QLocale::Persian) {
+ || mLanguage == QLocale::Persian) {
// These languageas don't have a concept of upper and lower case.
return false;
}
@@ -229,9 +228,8 @@
return true;
}
-const int knownLatinAlphabetLanguages[] =
-{
- QLocale::English,
+const int knownLatinAlphabetLanguages[] = {
+ QLocale::English,
QLocale::Lithuanian,
QLocale::Malay,
QLocale::Polish,
@@ -285,7 +283,7 @@
*/
bool HbInputLanguage::isRightToLeftLanguage() const
{
- if (mLanguage == QLocale::Arabic || mLanguage == QLocale::Hebrew
+ if (mLanguage == QLocale::Arabic || mLanguage == QLocale::Hebrew
|| mLanguage == QLocale::Urdu || mLanguage == QLocale::Persian) {
return true;
}
--- a/src/hbcore/inputfw/hbinputlanguage.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputlanguage.h Wed Jun 23 18:33:25 2010 +0300
@@ -34,22 +34,33 @@
class HB_CORE_EXPORT HbInputLanguage
{
public:
- HbInputLanguage() : mLanguage((QLocale::Language)0), mVariant(QLocale::AnyCountry)
- {}
+ HbInputLanguage() : mLanguage((QLocale::Language)0), mVariant(QLocale::AnyCountry)
+ {}
HbInputLanguage(QLocale::Language language, QLocale::Country variant = QLocale::AnyCountry)
: mLanguage(language), mVariant(variant)
- {}
+ {}
HbInputLanguage(const HbInputLanguage &other) {
mLanguage = other.mLanguage;
mVariant = other.mVariant;
}
- QLocale::Language language() const { return mLanguage; }
- QLocale::Country variant() const { return mVariant; }
- bool undefined() const { return (mLanguage == (QLocale::Language)0); }
- bool defined() const { return (mLanguage != (QLocale::Language)0); }
+ QLocale::Language language() const {
+ return mLanguage;
+ }
+
+ QLocale::Country variant() const {
+ return mVariant;
+ }
+
+ bool undefined() const {
+ return (mLanguage == (QLocale::Language)0);
+ }
+
+ bool defined() const {
+ return (mLanguage != (QLocale::Language)0);
+ }
bool operator==(const HbInputLanguage &other) const {
return (mLanguage == other.mLanguage && mVariant == other.mVariant);
@@ -64,7 +75,7 @@
}
bool operator!=(const QLocale::Language language) const {
- return (mLanguage != language);
+ return (mLanguage != language);
}
QString localisedName();
--- a/src/hbcore/inputfw/hbinputlanguagedatabase.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputlanguagedatabase.h Wed Jun 23 18:33:25 2010 +0300
@@ -22,8 +22,8 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
-#ifndef HB_LANGUAGE_DATABASE_H
-#define HB_LANGUAGE_DATABASE_H
+#ifndef HB_INPUT_LANGUAGE_DATABASE_H
+#define HB_INPUT_LANGUAGE_DATABASE_H
#include <QObject>
#include <QList>
@@ -33,13 +33,12 @@
class HB_CORE_EXPORT HbLanguageDatabase
{
public:
- virtual ~HbLanguageDatabase()
- {
+ virtual ~HbLanguageDatabase() {
}
virtual int hostId() const = 0;
virtual int languageCode() const = 0;
- virtual char* languageData(void* aNativeParams = 0) const = 0;
+ virtual char *languageData(void *aNativeParams = 0) const = 0;
virtual int nativeId() const = 0;
};
@@ -48,13 +47,12 @@
Q_OBJECT
public:
- virtual ~HbLanguageDatabaseInterface()
- {
+ virtual ~HbLanguageDatabaseInterface() {
}
virtual QList<int> listLanguages() = 0;
- virtual HbLanguageDatabase* languageDatabase(int aLanguage) = 0;
+ virtual HbLanguageDatabase *languageDatabase(int aLanguage) = 0;
};
-#endif // HB_LANGUAGE_DATABASE_H
+#endif // HB_INPUT_LANGUAGE_DATABASE_H
// End of file
--- a/src/hbcore/inputfw/hbinputmainwindow.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputmainwindow.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,18 +22,18 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputmainwindow_p.h"
+
#include <QGraphicsWidget>
#include <QGraphicsSceneMouseEvent>
#include <QStyleOptionGraphicsItem>
#include <QInputContext>
-#include "hbinputmainwindow_p.h"
#include "hbinputregioncollector_p.h"
#include "hbinstance.h"
#include "hbwidget.h"
#include "hbview.h"
#include "hbnamespace_p.h"
-#include "hbview.h"
#include "hbstackedlayout.h"
#if defined (Q_OS_SYMBIAN)
@@ -45,7 +45,7 @@
{
TRect trect;
trect.SetRect(rect.topLeft().x(), rect.topLeft().y(),
- rect.bottomRight().x() + 1, rect.bottomRight().y() + 1);
+ rect.bottomRight().x() + 1, rect.bottomRight().y() + 1);
return trect;
}
@@ -58,9 +58,11 @@
HbInputTransparentWindow(QGraphicsItem *parent = 0);
~HbInputTransparentWindow();
-
+
enum { Type = Hb::ItemType_TransparentWindow };
- int type() const { return Type; }
+ int type() const {
+ return Type;
+ }
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
};
@@ -68,6 +70,7 @@
HbInputTransparentWindow::HbInputTransparentWindow(QGraphicsItem *parent) :
HbWidget(parent)
{
+ setFlag(QGraphicsItem::ItemHasNoContents, false);
}
@@ -83,7 +86,7 @@
Q_UNUSED(widget)
QPainter::CompositionMode compositionMode = painter->compositionMode();
painter->setCompositionMode(QPainter::CompositionMode_Source);
- painter->fillRect(option->exposedRect, QColor(0,0,0,0));
+ painter->fillRect(option->exposedRect, QColor(0, 0, 0, 0));
painter->setCompositionMode(compositionMode);
}
@@ -98,37 +101,38 @@
HbInputMainWindow::~HbInputMainWindow()
{
+ delete mProxyWindow;
}
// constructor.
HbInputMainWindow::HbInputMainWindow()
// HbMainWindow creates a background QGraphicsItem, which has the background image. we need to hide it that.
-:HbMainWindow(0, Hb::WindowFlagTransparent), mLastFocusedWidget(0), mSpellQueryLaunched(false)
+ : HbMainWindow(0, Hb::WindowFlagTransparent), mLastFocusedWidget(0), mSpellQueryLaunched(false), mProxyWindow(0)
{
// We need a window which is of type Qt::Window flag at the same time does not show
// any decorators Qt::Tool seems to be the option, and we want this window to be always on top so Qt::WindowStaysOnTopHint.
// And since transparency requires to have a frameless window we are setting that too.
setWindowFlags(Qt::WindowStaysOnTopHint | Qt::Tool | Qt::FramelessWindowHint);
- // By default QGraphicsView has a background which is white in color (Other controls eg. QPushButton
+ // By default QGraphicsView has a background which is white in color (Other controls eg. QPushButton
// have a grey background), we need to make that transparent too.
setStyleSheet("background: transparent");
- // No fous is necessary as we dont want the hbmainwindw to steal focus.
+ // No focus is necessary as we don't want the hbmainwindw to steal focus.
setFocusPolicy(Qt::NoFocus);
-
+
// add transparency begin.
- HbView* view = new HbView;
+ HbView *view = new HbView;
view->hideItems(Hb::AllItems);
view->setContentFullScreen();
#if defined (Q_OS_SYMBIAN)
CCoeControl *c = effectiveWinId();
c->SetFocusing(false);
- RWindow *rw = static_cast<RWindow*>(c->DrawableWindow());
- rw->SetRequiredDisplayMode( EColor16MA );
+ RWindow *rw = static_cast<RWindow *>(c->DrawableWindow());
+ rw->SetRequiredDisplayMode(EColor16MA);
TInt err = rw->SetTransparencyAlphaChannel();
- if ( err == KErrNone ) {
+ if (err == KErrNone) {
rw->SetBackgroundColor(~0);
}
#endif // Q_OS_SYMBIAN
@@ -143,11 +147,11 @@
connect(HbInputRegionCollector::instance(), SIGNAL(updateRegion(QRegion)), this, SLOT(updateRegion(QRegion)));
// QApplication signal for getting notification of any focus change. If therer
- // is a switch between application window and HbInputMainWindow then we need to
+ // is a switch between application window and HbInputMainWindow then we need to
// set the focus back to the application window, if we don't do that it will
// result in focusLost call inside framework.
connect(qApp, SIGNAL(focusChanged(QWidget *, QWidget *)),
- this, SLOT(saveFocusWidget(QWidget *, QWidget *)));
+ this, SLOT(saveFocusWidget(QWidget *, QWidget *)));
}
@@ -156,19 +160,21 @@
mMask = region;
#if defined (Q_OS_SYMBIAN)
RWindowBase *rwindow = effectiveWinId()->DrawableWindow();
- if (region.isEmpty()) {
- TRegionFix<1> tregion(TRect(TPoint(0, 0), TSize(0,0)));
- rwindow->SetShape(tregion);
+ if (region.isEmpty()) {
+ TRegionFix<1> tregion(TRect(TPoint(0, 0), TSize(0, 0)));
+ rwindow->SetShape(tregion);
} else {
- // Using QVector assumes the memory layout is the same as RRegion
- QVector<QRect> rects = region.rects();
- QVector<TRect> trects(rects.count());
- for (int i = 0; i < trects.count(); ++i)
- trects[i] = qt_QRect2TRect(rects.at(i));
- RRegion rregion(trects.count(), trects.data());
- if (!rregion.CheckError())
- rwindow->SetShape(rregion);
- }
+ // Using QVector assumes the memory layout is the same as RRegion
+ QVector<QRect> rects = region.rects();
+ QVector<TRect> trects(rects.count());
+ for (int i = 0; i < trects.count(); ++i) {
+ trects[i] = qt_QRect2TRect(rects.at(i));
+ }
+ RRegion rregion(trects.count(), trects.data());
+ if (!rregion.CheckError()) {
+ rwindow->SetShape(rregion);
+ }
+ }
#else
setMask(region);
#endif
@@ -219,13 +225,13 @@
}
}
- // we need to only check for spontaneous events.
+ // we need to only check for spontaneous events.
if (event->spontaneous() && (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonRelease)) {
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
if (mouseEvent) {
// get the top level widget at the point, and see if that widget is a HbMainWindow,
- // If it is a HbMainWindow then do not do any thing, as events will propagate
- // correctly. But when it is clicked inside application window then send the event to
+ // If it is a HbMainWindow then do not do any thing, as events will propagate
+ // correctly. But when it is clicked inside application window then send the event to
// viewport as we might want to close a popup.
if (!mMask.contains(mouseEvent->globalPos())) {
qApp->sendEvent(viewport(), event);
@@ -237,7 +243,7 @@
}
/*
-Since hbmainwindow is overlapped on top of the application window, we need to
+Since hbmainwindow is overlapped on top of the application window, we need to
set the focus back to the application window. Not doing so will result in a focus
lost.
*/
@@ -250,32 +256,52 @@
void HbInputMainWindow::showInputWindow()
{
- // installing event filter to the application.. this is needed to get
+ // installing event filter to the application.. this is needed to get
// the events happening in other vanilla windows.
qApp->installEventFilter(this);
-
+ QInputContext *ic = qApp->inputContext();
+ QWidget *fw = ic ? ic->focusWidget() : 0 ;
+ QWidget *win = 0;
+ if (fw) {
+ win = fw->window();
+ }
#ifdef Q_WS_WIN
// As in windows OS HbMainWindow can come anywhere on the screen.
// so we need to launch main window exactly at the top windows position.
- QInputContext *ic = qApp->inputContext();
- QWidget *fw = ic ? ic->focusWidget() : 0 ;
- if (fw) {
- QWidget *win = fw->window();
- if (win) {
- move(win->frameGeometry().x(), win->pos().y());
- }
+ if (win) {
+ move(win->frameGeometry().x(), win->pos().y());
}
#endif
HbInputRegionCollector::instance()->setEnabled(true);
- show();
+ if (win && win->windowModality() != Qt::NonModal) {
+ if (!mProxyWindow) {
+ mProxyWindow = new HbProxyWindow();
+ }
+ mProxyWindow->setWindow(this);
+ // since the focused widget is inside a modal dialog which blocks events to other_window.
+ // and since hbinputmainwindow also comes under the other_window. It does will not get the
+ // mouse click events.
+ mProxyWindow->setParent(win);
+ // setParent resets the window flags, so we have to set the flags once again before show() is called.
+ setWindowFlags(Qt::WindowStaysOnTopHint | Qt::Tool | Qt::FramelessWindowHint);
+ show();
+ } else {
+ if (mProxyWindow && mProxyWindow->isAncestorOf(this)) {
+ mProxyWindow->setWindow(0);
+ setParent(0);
+ // setParent resets the window flags, so we have to set the flags once again before show is called.
+ setWindowFlags(Qt::WindowStaysOnTopHint | Qt::Tool | Qt::FramelessWindowHint);
+ }
+ show();
+ }
#if defined(Q_OS_SYMBIAN)
// this is done to come on top of all the controls in symbian OS, done to overlap soft keys as well.
- RWindow * rWindow = static_cast<RWindow *>(effectiveWinId()->DrawableWindow());
+ RWindow *rWindow = static_cast<RWindow *>(effectiveWinId()->DrawableWindow());
const int positionForeground(0);
rWindow->SetOrdinalPosition(positionForeground,
- ECoeWinPriorityAlwaysAtFront);
+ ECoeWinPriorityAlwaysAtFront);
#endif
}
@@ -293,10 +319,10 @@
rWindow->SetOrdinalPosition(positionBackground, ECoeWinPriorityNormal);
#endif
}
-
+
HbInputRegionCollector::instance()->setEnabled(false);
- // installing event filter to the application.. this is needed to get
+ // installing event filter to the application.. this is needed to get
// the events happening in other vanilla windows.
qApp->removeEventFilter(this);
}
--- a/src/hbcore/inputfw/hbinputmainwindow_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputmainwindow_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -31,6 +31,8 @@
#ifndef HB_INPUT_MAINWINDOW
#define HB_INPUT_MAINWINDOW
+class HbProxyWindow;
+
class HbInputMainWindow : public HbMainWindow
{
Q_OBJECT
@@ -41,8 +43,8 @@
private:
HbInputMainWindow();
virtual ~HbInputMainWindow();
-
- bool event(QEvent *e);
+
+ bool event(QEvent *e);
bool eventFilter(QObject *obj, QEvent *event);
public slots:
@@ -53,6 +55,31 @@
QPointer<QWidget> mLastFocusedWidget;
QRegion mMask;
bool mSpellQueryLaunched;
+ QPointer<HbProxyWindow > mProxyWindow;
+};
+
+class HbProxyWindow: public QWidget
+{
+public:
+ HbProxyWindow()
+ {
+ setGeometry(0,0,0,0);
+ }
+ void setWindow(QWidget* window)
+ {
+ this->window = window;
+ if (window) {
+ window->setParent(this);
+ }
+ }
+ ~HbProxyWindow()
+ {
+ if (window) {
+ window->setParent(0);
+ }
+ }
+private:
+ QPointer<QWidget> window;
};
#endif //HB_INPUT_MAINWINDOW
--- a/src/hbcore/inputfw/hbinputmethod.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputmethod.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,13 +22,14 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputmethod.h"
+#include "hbinputmethod_p.h"
+
#include <QInputMethodEvent>
#include <QGraphicsView>
#include <QGraphicsProxyWidget>
#include <QLocale>
-#include "hbinputmethod.h"
-#include "hbinputmethod_p.h"
#include "hbinputmodecache_p.h"
#include "hbinputsettingproxy.h"
#include "hbinputcontextproxy_p.h"
@@ -39,6 +40,7 @@
#include "hbinputstandardfilters.h"
#include "hbinpututils.h"
#include "hbinputvkbhost.h"
+#include "hbinputvkbhostbridge.h"
/*!
@alpha
@@ -179,7 +181,7 @@
/*!
Initializes the input framework.
*/
-bool HbInputMethod::initializeFramework(QApplication& app)
+bool HbInputMethod::initializeFramework(QApplication &app)
{
// Activate singleton shutdown.
connect(&app, SIGNAL(aboutToQuit()), HbInputModeCache::instance(), SLOT(shutdown()));
@@ -196,11 +198,12 @@
master->d_ptr->mIsActive = true;
// Finally set application input context.
- QInputContext* proxy = master->d_ptr->proxy();
+ QInputContext *proxy = master->d_ptr->proxy();
// A check required so that Qt does not delete inputcontext
// which we are passing.
- if (proxy != app.inputContext())
+ if (proxy != app.inputContext()) {
app.setInputContext(proxy);
+ }
return true;
}
@@ -210,20 +213,20 @@
InitializeFramework method has been called, even when there is no focused editor (in some cases it may
be so called null input method).
*/
-HbInputMethod* HbInputMethod::activeInputMethod()
+HbInputMethod *HbInputMethod::activeInputMethod()
{
// First try, try app input context directly. It is possible that it is an instance
// of HbInputMethod that is installed directly there without framework knowing about it
// (that shouldn't be done, but it is possible). That's why we rely on app input context as
// a primary source instead of mode cache.
- QInputContext* context = qApp->inputContext();
+ QInputContext *context = qApp->inputContext();
if (context && context->inherits("HbInputMethod")) {
- HbInputMethod* active = static_cast<HbInputMethod*>(context);
+ HbInputMethod *active = static_cast<HbInputMethod *>(context);
return active;
}
// Then check if the 'null' is active.
- HbInputMethod* nullInstance = HbInputMethodNull::Instance();
+ HbInputMethod *nullInstance = HbInputMethodNull::Instance();
if (nullInstance && nullInstance->isActiveMethod()) {
return nullInstance;
}
@@ -249,16 +252,16 @@
{
Q_D(HbInputMethod);
- if (!inputMethod.isEmpty()) {
+ if (!inputMethod.isEmpty()) {
if (inputMethod.isDefault()) {
- d->setFocusCommon();
- return true;
+ d->setFocusCommon();
+ return true;
} else {
HbInputMethod *customMethod = HbInputModeCache::instance()->loadInputMethod(inputMethod);
- if (customMethod) {
- d->contextSwitch(customMethod);
- return true;
- }
+ if (customMethod) {
+ d->contextSwitch(customMethod);
+ return true;
+ }
}
}
@@ -314,14 +317,14 @@
*/
void HbInputMethod::activeKeyboardChanged(HbKeyboardType newKeyboard)
{
- if (!isActiveMethod()) {
+ if (!isActiveMethod() || !HbInputSettingProxy::instance()->orientationChangeCompleted()) {
return;
}
Q_D(HbInputMethod);
d->mInputState.setKeyboard(newKeyboard);
- HbInputMethod* stateHandler = d->findStateHandler(d->mInputState);
+ HbInputMethod *stateHandler = d->findStateHandler(d->mInputState);
if (stateHandler) {
d->inputStateToEditor(d->mInputState);
if (stateHandler != this) {
@@ -361,7 +364,7 @@
/*!
Returns pointer to active focus object.
*/
-HbInputFocusObject* HbInputMethod::focusObject() const
+HbInputFocusObject *HbInputMethod::focusObject() const
{
Q_D(const HbInputMethod);
return d->mFocusObject;
@@ -374,18 +377,18 @@
\sa setFocusObject
*/
-void HbInputMethod::setFocusWidget(QWidget* widget)
+void HbInputMethod::setFocusWidget(QWidget *widget)
{
Q_D(HbInputMethod);
-
+
if (d->mFocusLocked) {
- return;
- }
-
- // attach focuswidget to prxoy inputcontext as proxy is
+ return;
+ }
+
+ // attach focuswidget to prxoy inputcontext as proxy is
// the only inputcotext known to qt framework.
d->proxy()->QInputContext::setFocusWidget(widget);
-
+
if (!widget) {
// Losing focus.
if (d->mFocusObject) {
@@ -397,7 +400,7 @@
return;
}
- QGraphicsView* gView = qobject_cast<QGraphicsView*>(widget);
+ QGraphicsView *gView = qobject_cast<QGraphicsView *>(widget);
if (gView) {
// We don't want to focus to graphics view but the items inside the scene, so just return
return;
@@ -445,7 +448,7 @@
// Attach focus.
d->mFocusObject = new HbInputFocusObject(widget);
- connect(widget, SIGNAL(destroyed(QObject*)), this, SLOT(editorDeleted(QObject*)));
+ connect(widget, SIGNAL(destroyed(QObject *)), this, SLOT(editorDeleted(QObject *)));
d->setFocusCommon();
@@ -463,7 +466,7 @@
Checks if the destroyed widget is currently focused and clears the focus
if needed. This method should not be overridden.
*/
-void HbInputMethod::widgetDestroyed(QWidget* widget)
+void HbInputMethod::widgetDestroyed(QWidget *widget)
{
Q_D(HbInputMethod);
@@ -486,7 +489,7 @@
\sa setFocusWidget
\sa HbInputFocusObject
*/
-void HbInputMethod::setFocusObject(HbInputFocusObject* focusObject)
+void HbInputMethod::setFocusObject(HbInputFocusObject *focusObject)
{
Q_D(HbInputMethod);
@@ -497,7 +500,7 @@
if (focusObject == 0) {
// Losing focus.
if (d->mFocusObject != 0) {
- disconnect(d->mFocusObject->object(), SIGNAL(destroyed(QObject*)), this, SLOT(editorDeleted(QObject*)));
+ disconnect(d->mFocusObject->object(), SIGNAL(destroyed(QObject *)), this, SLOT(editorDeleted(QObject *)));
focusLost(false);
d->hideMainWindow();
delete d->mFocusObject;
@@ -506,8 +509,8 @@
return;
}
- if(d->compareWithCurrentFocusObject( focusObject )) {
- // The incoming focus object is either same or points to same
+ if (d->compareWithCurrentFocusObject(focusObject)) {
+ // The incoming focus object is either same or points to same
// widget that the framework is already focused to and nothing needs to be done here.
// But because the ownership of the focus object is transferred to the
// the framework, we need to delete the the incoming focus object in case it is
@@ -524,14 +527,14 @@
if (d->mFocusObject) {
refreshHost = true;
focusLost(true);
- disconnect(d->mFocusObject->object(), SIGNAL(destroyed(QObject*)), this, SLOT(editorDeleted(QObject*)));
+ disconnect(d->mFocusObject->object(), SIGNAL(destroyed(QObject *)), this, SLOT(editorDeleted(QObject *)));
delete d->mFocusObject;
d->mFocusObject = 0;
}
// Attach focus.
d->mFocusObject = focusObject;
- connect(d->mFocusObject->object(), SIGNAL(destroyed(QObject*)), this, SLOT(editorDeleted(QObject*)));
+ connect(d->mFocusObject->object(), SIGNAL(destroyed(QObject *)), this, SLOT(editorDeleted(QObject *)));
d->setFocusCommon();
@@ -593,7 +596,7 @@
The framework calls this method every time the input state changes. This is an empty default
implementation and the inheriting class should override it.
*/
-void HbInputMethod::inputStateActivated(const HbInputState& newState)
+void HbInputMethod::inputStateActivated(const HbInputState &newState)
{
Q_UNUSED(newState);
// Empty default implementation.
@@ -643,7 +646,7 @@
\sa activateNextState
\sa InputState
*/
-bool HbInputMethod::activateState(const HbInputState& state)
+bool HbInputMethod::activateState(const HbInputState &state)
{
Q_D(HbInputMethod);
@@ -653,7 +656,7 @@
d->mStateChangeInProgress = true;
- HbInputMethod* stateHandler = HbInputModeCache::instance()->findStateHandler(state);
+ HbInputMethod *stateHandler = HbInputModeCache::instance()->findStateHandler(state);
if (!stateHandler) {
stateHandler = HbInputMethodNull::Instance();
@@ -699,7 +702,7 @@
currentTextCase = HbTextCaseLower;
refresh = true;
}
- } else if (autoCaseNeeded && currentTextCase != HbTextCaseUpper ) {
+ } else if (autoCaseNeeded && currentTextCase != HbTextCaseUpper) {
if (!d->isFixedCaseEditor()) {
currentTextCase = HbTextCaseAutomatic;
refresh = true;
@@ -721,18 +724,14 @@
*/
void HbInputMethod::orientationChanged(Qt::Orientation orientation)
{
+ Q_D(HbInputMethod);
Q_UNUSED(orientation);
- if (isActiveMethod()) {
- // Make sure that if there was an editor focus before the orientation change,
- // it will re-focus.
- QInputContext *ic = qApp->inputContext();
- if (ic) {
- QEvent *event = new QEvent(QEvent::RequestSoftwareInputPanel);
- ic->filterEvent(event);
- delete event;
- }
+ if (d->mOldFocusObject) {
+ setFocusObject(d->mOldFocusObject);
+ d->mOldFocusObject = 0;
}
+
}
/*!
@@ -743,6 +742,14 @@
*/
void HbInputMethod::orientationAboutToChange()
{
+ Q_D(HbInputMethod);
+ reset();
+ d->inputStateToEditor(d->mInputState);
+ if (d->mFocusObject) {
+ d->mOldFocusObject = d->mFocusObject;
+ d->mFocusObject = 0;
+ }
+ HbVkbHostBridge::instance()->closeKeypad(true);
}
/*!
@@ -804,10 +811,10 @@
*/
void HbInputMethod::forceUnfocus()
{
- HbInputMethod* active = activeInputMethod();
+ HbInputMethod *active = activeInputMethod();
if (active) {
- active->focusLost(false);
+ active->focusLost(false);
delete active->d_ptr->mFocusObject;
active->d_ptr->mFocusObject = 0;
}
@@ -825,7 +832,7 @@
/*!
Deep copies the input state back to editor interface.
*/
-void HbInputMethod::inputStateToEditor(const HbInputState& source)
+void HbInputMethod::inputStateToEditor(const HbInputState &source)
{
Q_D(HbInputMethod);
d->inputStateToEditor(source);
@@ -854,7 +861,7 @@
Q_UNUSED(obj);
focusLost();
- d->hideMainWindow();
+ d->hideMainWindow();
delete d->mFocusObject;
d->mFocusObject = 0;
--- a/src/hbcore/inputfw/hbinputmethod.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputmethod.h Wed Jun 23 18:33:25 2010 +0300
@@ -46,9 +46,9 @@
HbInputMethod();
virtual ~HbInputMethod();
- static bool initializeFramework(QApplication& app);
+ static bool initializeFramework(QApplication &app);
static void forceUnfocus();
- static HbInputMethod* activeInputMethod();
+ static HbInputMethod *activeInputMethod();
static QList<HbInputMethodDescriptor> listCustomInputMethods();
virtual void focusReceived();
@@ -56,34 +56,34 @@
bool isActiveMethod() const;
- HbInputFocusObject* focusObject() const;
- void setFocusObject(HbInputFocusObject* focusObject);
+ HbInputFocusObject *focusObject() const;
+ void setFocusObject(HbInputFocusObject *focusObject);
void lockFocus();
void unlockFocus();
// From QInputContext (do not override).
- void widgetDestroyed(QWidget* widget);
- void setFocusWidget(QWidget* widget);
+ void widgetDestroyed(QWidget *widget);
+ void setFocusWidget(QWidget *widget);
HbInputState inputState() const;
- bool activateState(const HbInputState& state);
+ bool activateState(const HbInputState &state);
void updateState();
void editorRootState(HbInputState &result) const;
bool automaticTextCaseNeeded() const;
bool activateInputMethod(const HbInputMethodDescriptor &inputMethod);
protected:
- virtual void inputStateActivated(const HbInputState& newState);
+ virtual void inputStateActivated(const HbInputState &newState);
virtual void inputLanguageChanged(const HbInputLanguage &newLanguage);
- virtual void secondaryInputLanguageChanged(const HbInputLanguage &newLanguage);
+ virtual void secondaryInputLanguageChanged(const HbInputLanguage &newLanguage);
bool stateChangeInProgress() const;
HbInputLanguage activeLanguage() const;
bool modeAllowedInEditor(HbInputModeType mode) const;
- void inputStateToEditor(const HbInputState& source);
+ void inputStateToEditor(const HbInputState &source);
void constructLatinState(HbInputState &result) const;
@@ -92,7 +92,7 @@
public slots:
void globalInputLanguageChanged(const HbInputLanguage &newLanguage);
void globalSecondaryInputLanguageChanged(const HbInputLanguage &newLanguage);
- void activeKeyboardChanged(HbKeyboardType newKeyboard);
+ void activeKeyboardChanged(HbKeyboardType newKeyboard);
void orientationChanged(Qt::Orientation orientation);
virtual void orientationAboutToChange();
void editorDeleted(QObject *obj);
--- a/src/hbcore/inputfw/hbinputmethod_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputmethod_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,9 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputmethod_p.h"
+#include "hbinputmethod.h"
+
#include <QInputMethodEvent>
#include <QGraphicsView>
#include <QGraphicsScene>
@@ -30,16 +33,16 @@
#include <QClipboard>
#include <QPointer>
-#include "hbinputmethod.h"
-#include "hbinputmethod_p.h"
#include "hbinputmodecache_p.h"
#include "hbinputsettingproxy.h"
-#include "hbinputcontextproxy_p.h"
+#include "hbinputcontextproxy_p.h"
#include "hbinputfilter.h"
#include "hbinputmethodnull_p.h"
#include "hbinpututils.h"
#include "hbinputstandardfilters.h"
#include "hbinputmainwindow_p.h"
+#include <hbcssinspector_p.h>
+#include <hbsettingswindow_p.h>
#if defined(Q_OS_SYMBIAN)
#include <coemain.h>
@@ -88,26 +91,26 @@
Reads input state information from focused editor using editor interface and creates a local copy of it.
Finds out correct values for those fields that have not been initialized by the client application.
*/
-void HbInputMethodPrivate::inputStateFromEditor(HbInputState& result)
-{
+void HbInputMethodPrivate::inputStateFromEditor(HbInputState &result)
+{
if (mFocusObject) {
- HbEditorInterface& editorInterface = mFocusObject->editorInterface();
+ HbEditorInterface &editorInterface = mFocusObject->editorInterface();
editorInterface.lastFocusedState(result);
- if (result != HbInputState()) {
+ if (result != HbInputState()) {
// The editor has been focused before. Let's see if the input language has changed since the editor
- // was last focused.
+ // was last focused.
HbInputLanguage language = findStateLanguage();
if (language != result.language()) {
- // Reconstruct the state since we don't know if the last one is valid for the new language.
- editorRootState(result);
+ // Reconstruct the state since we don't know if the last one is valid for the new language.
+ editorRootState(result);
return;
}
// Keyboard may have changed since the last focus. Re-initialize it.
- result.setKeyboard(activeKeyboard());
- return;
- }
+ result.setKeyboard(activeKeyboard());
+ return;
+ }
// this editor has not been focused before, return the root state.
editorRootState(result);
@@ -126,7 +129,7 @@
\internal
Transfers local copy of the input state back to the editor using editor interface.
*/
-void HbInputMethodPrivate::inputStateToEditor(const HbInputState& source)
+void HbInputMethodPrivate::inputStateToEditor(const HbInputState &source)
{
if (mFocusObject) {
mFocusObject->editorInterface().setLastFocusedState(source);
@@ -151,8 +154,8 @@
!ret.isLatinAlphabetLanguage()) {
// This is latin alphabet flagged editor, but the language isn't
// latin alphabet language. Switch to english locally.
- ret = QLocale::English;
- }
+ ret = QLocale::English;
+ }
}
}
@@ -174,7 +177,7 @@
return false;
}
- if (constraints & HbEditorConstraintFixedInputMode){
+ if (constraints & HbEditorConstraintFixedInputMode) {
if (!mFocusObject || mFocusObject->editorInterface().mode() != mode) {
// This is fixed mode editor but proposed mode is something else.
// Reject.
@@ -185,7 +188,7 @@
if ((constraints & HbEditorConstraintLatinAlphabetOnly) && (mode & HbChineseModeMask)) {
// Editor is flagged to be latin-alphabet only but
// the input mode indicates non-latin mode. Reject.
- return false;
+ return false;
}
return true;
}
@@ -194,7 +197,7 @@
\internal
Returns true if given state is valid in focused editor.
*/
-bool HbInputMethodPrivate::stateAllowedInEditor(const HbInputState& state)
+bool HbInputMethodPrivate::stateAllowedInEditor(const HbInputState &state)
{
if (!modeAllowedInEditor(state.inputMode())) {
return false;
@@ -221,8 +224,8 @@
\internal
Finds state handler for given input state.
*/
-HbInputMethod* HbInputMethodPrivate::findStateHandler(HbInputState& state)
-{
+HbInputMethod *HbInputMethodPrivate::findStateHandler(HbInputState &state)
+{
HbInputMethod *stateHandler = 0;
if (mFocusObject &&
@@ -230,13 +233,13 @@
return HbInputMethodNull::Instance();
}
- if (stateAllowedInEditor(state)) {
+ if (stateAllowedInEditor(state)) {
HbInputMethodDescriptor preferredMethod = HbInputSettingProxy::instance()->preferredInputMethod();
if (!preferredMethod.isEmpty()) {
stateHandler = HbInputModeCache::instance()->loadInputMethod(preferredMethod);
if (stateHandler && !HbInputModeCache::instance()->acceptsState(stateHandler, state)) {
- stateHandler = 0;
- }
+ stateHandler = 0;
+ }
}
if (!stateHandler) {
@@ -244,15 +247,15 @@
}
if (!stateHandler &&
- state.inputMode() == HbInputModeNumeric &&
- state.language() != QLocale::English &&
- mFocusObject &&
- (mFocusObject->editorInterface().inputConstraints() & HbEditorConstraintFixedInputMode)) {
- // This is number only editor but there was no numeric handler
- // for specified language. Use default numeric hanlder
- // as a fallback.
- state.setLanguage(QLocale::English);
- stateHandler = HbInputModeCache::instance()->findStateHandler(state);
+ state.inputMode() == HbInputModeNumeric &&
+ state.language() != QLocale::English &&
+ mFocusObject &&
+ (mFocusObject->editorInterface().inputConstraints() & HbEditorConstraintFixedInputMode)) {
+ // This is number only editor but there was no numeric handler
+ // for specified language. Use default numeric hanlder
+ // as a fallback.
+ state.setLanguage(QLocale::English);
+ stateHandler = HbInputModeCache::instance()->findStateHandler(state);
}
}
@@ -272,8 +275,8 @@
// This is latin alphabet flagged editor, but the language isn't
// latin alphabet language. Switch to english locally.
lang = QLocale::English;
- }
-
+ }
+
return lang;
}
@@ -292,7 +295,7 @@
if (mFocusObject) {
if (mFocusObject->inputMethodHints() & (Qt::ImhNoAutoUppercase | Qt::ImhPreferLowercase |
- Qt::ImhPreferUppercase | Qt::ImhDialableCharactersOnly | Qt::ImhEmailCharactersOnly | Qt::ImhUrlCharactersOnly)) {
+ Qt::ImhPreferUppercase | Qt::ImhDialableCharactersOnly | Qt::ImhEmailCharactersOnly | Qt::ImhUrlCharactersOnly)) {
// Input method hint forbids auto-capitalisation or prefers either case.
return false;
}
@@ -310,22 +313,22 @@
QString sText = mFocusObject->editorSurroundingText();
int cursorPosition = mFocusObject->editorCursorPosition();
- if(cursorPosition >= 2) {
- QString previousChar = sText.mid(cursorPosition-1, 1);
- QString previousToPreviousChar = sText.mid(cursorPosition-2, 1);
+ if (cursorPosition >= 2) {
+ QString previousChar = sText.mid(cursorPosition - 1, 1);
+ QString previousToPreviousChar = sText.mid(cursorPosition - 2, 1);
- if (QString::compare( previousChar, " " ) == 0) {
- if (QString::compare( previousToPreviousChar, "." ) == 0) {
+ if (QString::compare(previousChar, " ") == 0) {
+ if (QString::compare(previousToPreviousChar, ".") == 0) {
return true;
}
- if (QString::compare( previousToPreviousChar, "!" ) == 0) {
+ if (QString::compare(previousToPreviousChar, "!") == 0) {
return true;
}
- if (QString::compare( previousToPreviousChar, "?" ) == 0) {
+ if (QString::compare(previousToPreviousChar, "?") == 0) {
return true;
}
}
- } else if(cursorPosition == 0) {
+ } else if (cursorPosition == 0) {
// when the cursor is at the beginning of the editor, auto-capitalisation is needed
return true;
}
@@ -390,7 +393,7 @@
setUpFocusedObjectAsUrlEditor();
} else if (hints & Qt::ImhEmailCharactersOnly) {
setUpFocusedObjectAsEmailEditor();
- }
+ }
if (mFocusObject->editorInterface().editorClass() != HbInputEditorClassUnknown &&
mFocusObject->editorInterface().extraDictionaryId() == 0) {
@@ -399,11 +402,11 @@
}
}
- // Create input state.
+ // Create input state.
inputStateFromEditor(mInputState);
// Find state handler
- HbInputMethod* stateHandler = findStateHandler(mInputState);
+ HbInputMethod *stateHandler = findStateHandler(mInputState);
if (stateHandler == 0) {
// No state handler found (this should never happen under normal circumstances).
// Fall back to null method.
@@ -441,14 +444,14 @@
\internal
Returns true if given focus object is same as currently focused or points to same editor instance.
*/
-bool HbInputMethodPrivate::compareWithCurrentFocusObject(HbInputFocusObject* focusObject) const
+bool HbInputMethodPrivate::compareWithCurrentFocusObject(HbInputFocusObject *focusObject) const
{
// both null pointer
- if ( !mFocusObject ) {
+ if (!mFocusObject) {
return false;
}
- if ( !focusObject ) {
+ if (!focusObject) {
return false;
}
@@ -463,7 +466,7 @@
\internal
Creates and returns new input context proxy.
*/
-QInputContext* HbInputMethodPrivate::proxy()
+QInputContext *HbInputMethodPrivate::proxy()
{
if (!mProxy) {
mProxy = new HbInputContextProxy(q_ptr);
@@ -473,11 +476,11 @@
/*!
\internal
-Returns true if currently focused editor is fixed text case editor.
+Returns true if currently focused editor is fixed text case editor.
*/
bool HbInputMethodPrivate::isFixedCaseEditor() const
{
- if (mFocusObject) {
+ if (mFocusObject) {
return (mFocusObject->inputMethodHints() & (Qt::ImhLowercaseOnly | Qt::ImhUppercaseOnly));
}
@@ -491,7 +494,7 @@
bool HbInputMethodPrivate::isLowerCaseOnlyEditor() const
{
if (mFocusObject) {
- return (mFocusObject->inputMethodHints() & Qt::ImhLowercaseOnly);
+ return (mFocusObject->inputMethodHints() & Qt::ImhLowercaseOnly);
}
return false;
@@ -504,7 +507,7 @@
bool HbInputMethodPrivate::isUpperCaseOnlyEditor() const
{
if (mFocusObject) {
- return (mFocusObject->inputMethodHints() & Qt::ImhUppercaseOnly);
+ return (mFocusObject->inputMethodHints() & Qt::ImhUppercaseOnly);
}
return false;
@@ -515,7 +518,7 @@
This method is needed during context switch operation. It transfers relevant parts of input
method's internal state to the input method that is about to assume control.
*/
-void HbInputMethodPrivate::transfer(HbInputMethod* source)
+void HbInputMethodPrivate::transfer(HbInputMethod *source)
{
Q_Q(HbInputMethod);
@@ -528,8 +531,8 @@
mFocusObject = source->d_ptr->mFocusObject;
source->d_ptr->mFocusObject = 0;
if (mFocusObject) {
- q->disconnect(mFocusObject->object(), SIGNAL(destroyed(QObject*)), source, SLOT(editorDeleted(QObject*)));
- q->connect(mFocusObject->object(), SIGNAL(destroyed(QObject*)), q, SLOT(editorDeleted(QObject*)));
+ q->disconnect(mFocusObject->object(), SIGNAL(destroyed(QObject *)), source, SLOT(editorDeleted(QObject *)));
+ q->connect(mFocusObject->object(), SIGNAL(destroyed(QObject *)), q, SLOT(editorDeleted(QObject *)));
}
// Makes sure there isn't focus lock.
@@ -537,7 +540,7 @@
// Transfer state.
mInputState = source->d_ptr->mInputState;
-
+
// we need to transfer focuswidget from current proxy to the next proxy.
proxy()->QInputContext::setFocusWidget(source->d_ptr->proxy()->focusWidget());
@@ -555,7 +558,7 @@
calls this method to switch active input method. After successful call, the given input method will
be application's active input context.
*/
-void HbInputMethodPrivate::contextSwitch(HbInputMethod* toBeActive)
+void HbInputMethodPrivate::contextSwitch(HbInputMethod *toBeActive)
{
Q_Q(HbInputMethod);
@@ -566,7 +569,7 @@
// Deactivate before focus event. That way input method is able to
// recognize in focus handler that the focus lost event was a result of
// context switch and close all its open UI-elements. This needs to be done
- // even there is no active focus object (to make sure that virtual keyboard &
+ // even there is no active focus object (to make sure that virtual keyboard &
// other potential UI elements will be removed).
mIsActive = false;
q->focusLost(false);
@@ -578,9 +581,10 @@
toBeActive->d_ptr->transfer(q);
// Active new context.
- QInputContext* proxy = toBeActive->d_ptr->proxy();
- if (proxy != qApp->inputContext())
+ QInputContext *proxy = toBeActive->d_ptr->proxy();
+ if (proxy != qApp->inputContext()) {
qApp->setInputContext(proxy);
+ }
if (toBeActive->focusObject()) {
// Notify focus change.
@@ -596,15 +600,15 @@
Constructs the first input state for an editor that hasn't been focused before.
*/
void HbInputMethodPrivate::editorRootState(HbInputState &result) const
-{
+{
- if (mFocusObject) {
+ if (mFocusObject) {
HbInputLanguage language = findStateLanguage();
- HbInputModeType inputMode = initialInputMode(language);
+ HbInputModeType inputMode = initialInputMode(language);
result = HbInputState(inputMode,
initialTextCase(inputMode),
activeKeyboard(),
- language);
+ language);
} else {
result = HbInputState();
}
@@ -653,28 +657,28 @@
}
return ret;
-}
+}
/*!
\internal
Finds the first input mode for an editor that hasn't been focus before.
*/
HbInputModeType HbInputMethodPrivate::initialInputMode(const HbInputLanguage &language) const
-{
+{
HbInputModeType ret = HbInputModeNone;
- if (mFocusObject) {
+ if (mFocusObject) {
if (mFocusObject->editorInterface().inputConstraints() & HbEditorConstraintFixedInputMode) {
// This is fixed mode editor, always trust what editor interface gives us.
ret = (HbInputModeType)mFocusObject->editorInterface().mode();
} else {
- // Editor doesn't have mode asigned. Propose default mode.
+ // Editor doesn't have mode asigned. Propose default mode.
Qt::InputMethodHints hints = mFocusObject->inputMethodHints();
if (mFocusObject->editorInterface().isNumericEditor()) {
// It is fixed numeric editor.
ret = HbInputModeNumeric;
} else {
- ret = defaultInputMode(language);
+ ret = defaultInputMode(language);
}
}
}
@@ -689,10 +693,10 @@
*/
void HbInputMethodPrivate::constructLatinState(HbInputState &result) const
{
- result.setLanguage(HbInputLanguage(QLocale::English));
- result.setInputMode(HbInputModeDefault);
- result.setKeyboard(activeKeyboard());
- result.setTextCase(initialTextCase(HbInputModeDefault));
+ result.setLanguage(HbInputLanguage(QLocale::English));
+ result.setInputMode(HbInputModeDefault);
+ result.setKeyboard(activeKeyboard());
+ result.setTextCase(initialTextCase(HbInputModeDefault));
}
/*!
@@ -712,10 +716,10 @@
*/
void HbInputMethodPrivate::setUpFocusedObjectAsDigitsOnlyEditor()
{
- if(mFocusObject) {
+ if (mFocusObject) {
mFocusObject->editorInterface().setMode(HbInputModeNumeric);
mFocusObject->editorInterface().setInputConstraints(HbEditorConstraintFixedInputMode);
- if(!mFocusObject->editorInterface().filter()) {
+ if (!mFocusObject->editorInterface().filter()) {
mFocusObject->editorInterface().setFilter(HbDigitsOnlyFilter::instance());
}
mFocusObject->setInputMethodHints(Qt::ImhDigitsOnly | Qt::ImhNoPredictiveText);
@@ -728,10 +732,10 @@
*/
void HbInputMethodPrivate::setUpFocusedObjectAsFormattedNumberEditor()
{
- if(mFocusObject) {
+ if (mFocusObject) {
mFocusObject->editorInterface().setMode(HbInputModeNumeric);
mFocusObject->editorInterface().setInputConstraints(HbEditorConstraintFixedInputMode);
- if(!mFocusObject->editorInterface().filter()) {
+ if (!mFocusObject->editorInterface().filter()) {
mFocusObject->editorInterface().setFilter(HbFormattedNumbersFilter::instance());
}
mFocusObject->setInputMethodHints(Qt::ImhFormattedNumbersOnly | Qt::ImhNoPredictiveText);
@@ -744,10 +748,10 @@
*/
void HbInputMethodPrivate::setUpFocusedObjectAsPhoneNumberEditor()
{
- if(mFocusObject) {
+ if (mFocusObject) {
mFocusObject->editorInterface().setMode(HbInputModeNumeric);
mFocusObject->editorInterface().setInputConstraints(HbEditorConstraintFixedInputMode);
- if(!mFocusObject->editorInterface().filter()) {
+ if (!mFocusObject->editorInterface().filter()) {
mFocusObject->editorInterface().setFilter(HbPhoneNumberFilter::instance());
}
mFocusObject->setInputMethodHints(Qt::ImhDialableCharactersOnly | Qt::ImhNoPredictiveText);
@@ -760,14 +764,14 @@
*/
void HbInputMethodPrivate::setUpFocusedObjectAsEmailEditor()
{
- if(mFocusObject) {
+ if (mFocusObject) {
mFocusObject->editorInterface().setMode(HbInputModeNone);
mFocusObject->editorInterface().setInputConstraints(HbEditorConstraintLatinAlphabetOnly);
- if(!mFocusObject->editorInterface().filter()) {
+ if (!mFocusObject->editorInterface().filter()) {
mFocusObject->editorInterface().setFilter(HbEmailAddressFilter::instance());
}
- mFocusObject->setInputMethodHints(Qt::ImhEmailCharactersOnly | Qt::ImhNoPredictiveText
- | Qt::ImhPreferLowercase);
+ mFocusObject->setInputMethodHints(Qt::ImhEmailCharactersOnly | Qt::ImhNoPredictiveText
+ | Qt::ImhPreferLowercase);
}
}
/*!
@@ -776,14 +780,14 @@
*/
void HbInputMethodPrivate::setUpFocusedObjectAsUrlEditor()
{
- if(mFocusObject) {
+ if (mFocusObject) {
mFocusObject->editorInterface().setMode(HbInputModeNone);
mFocusObject->editorInterface().setInputConstraints(HbEditorConstraintLatinAlphabetOnly);
- if(!mFocusObject->editorInterface().filter()) {
+ if (!mFocusObject->editorInterface().filter()) {
mFocusObject->editorInterface().setFilter(HbUrlFilter::instance());
}
- mFocusObject->setInputMethodHints(Qt::ImhUrlCharactersOnly | Qt::ImhNoPredictiveText
- | Qt::ImhPreferLowercase);
+ mFocusObject->setInputMethodHints(Qt::ImhUrlCharactersOnly | Qt::ImhNoPredictiveText
+ | Qt::ImhPreferLowercase);
}
}
@@ -815,6 +819,24 @@
return;
}
+#if defined(HB_CSS_INSPECTOR) || defined(HB_SETTINGS_WINDOW)
+ QWidget *owningWindow = focusedWidget->window();
+ // combo box lists spawn a new window for the popup
+ if (owningWindow->parentWidget()) {
+ owningWindow = owningWindow->parentWidget()->window();
+ }
+#ifdef HB_CSS_INSPECTOR
+ if (owningWindow == HbCssInspectorWindow::instance()->window()){
+ return;
+ }
+#endif
+#ifdef HB_SETTINGS_WINDOW
+ if (owningWindow == HbSettingsWindow::instance()->window()){
+ return;
+ }
+#endif
+#endif
+
// in symbian while launching a window on top of another
// there is a CCoeControl::FocusChange call on the vanilla window.
// causing it to lots of wiered problem.
--- a/src/hbcore/inputfw/hbinputmethod_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputmethod_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -44,44 +44,45 @@
Q_DECLARE_PUBLIC(HbInputMethod)
public:
- explicit HbInputMethodPrivate(HbInputMethod* owner)
+ explicit HbInputMethodPrivate(HbInputMethod *owner)
: q_ptr(owner),
- mProxy(0),
- mIsActive(false),
- mFocusObject(0),
- mInputState(HbInputModeNone, HbTextCaseNone, HbKeyboardNone),
- mFocusLocked(false),
- mStateChangeInProgress(false),
- mInsideVanillaWindow(false)
+ mProxy(0),
+ mIsActive(false),
+ mFocusObject(0),
+ mOldFocusObject(0),
+ mInputState(HbInputModeNone, HbTextCaseNone, HbKeyboardNone),
+ mFocusLocked(false),
+ mStateChangeInProgress(false),
+ mInsideVanillaWindow(false)
{}
~HbInputMethodPrivate();
HbInputFilter *editorFilter() const;
int editorConstraints() const;
- void inputStateFromEditor(HbInputState& result);
- void inputStateToEditor(const HbInputState& source);
+ void inputStateFromEditor(HbInputState &result);
+ void inputStateToEditor(const HbInputState &source);
HbInputLanguage activeLanguage() const;
bool modeAllowedInEditor(HbInputModeType mode) const;
- bool stateAllowedInEditor(const HbInputState& state);
- HbInputMethod* findStateHandler(HbInputState& startingState);
+ bool stateAllowedInEditor(const HbInputState &state);
+ HbInputMethod *findStateHandler(HbInputState &startingState);
HbInputLanguage findStateLanguage() const;
bool automaticTextCaseNeeded() const;
bool textCaseApplies() const;
HbKeyboardType activeKeyboard() const;
void setFocusCommon();
void refreshState();
- bool compareWithCurrentFocusObject(HbInputFocusObject* focusObject) const;
- QInputContext* proxy();
+ bool compareWithCurrentFocusObject(HbInputFocusObject *focusObject) const;
+ QInputContext *proxy();
bool isFixedCaseEditor() const;
bool isLowerCaseOnlyEditor() const;
bool isUpperCaseOnlyEditor() const;
- void transfer(HbInputMethod* source);
- void contextSwitch(HbInputMethod* toBeActive);
+ void transfer(HbInputMethod *source);
+ void contextSwitch(HbInputMethod *toBeActive);
void editorRootState(HbInputState &result) const;
void constructLatinState(HbInputState &result) const;
- HbTextCase initialTextCase(HbInputModeType inputMode) const;
+ HbTextCase initialTextCase(HbInputModeType inputMode) const;
HbInputModeType initialInputMode(const HbInputLanguage &language) const;
- HbInputModeType defaultInputMode(const HbInputLanguage &inputLanguage) const;
+ HbInputModeType defaultInputMode(const HbInputLanguage &inputLanguage) const;
void setUpFocusedObjectAsDigitsOnlyEditor();
void setUpFocusedObjectAsFormattedNumberEditor();
void setUpFocusedObjectAsPhoneNumberEditor();
@@ -95,8 +96,9 @@
HbInputMethod *q_ptr;
QPointer<HbInputContextProxy > mProxy;
bool mIsActive;
- HbInputFocusObject* mFocusObject;
- HbInputState mInputState;
+ HbInputFocusObject *mFocusObject;
+ HbInputFocusObject *mOldFocusObject;
+ HbInputState mInputState;
bool mFocusLocked;
bool mStateChangeInProgress;
QList<HbInputModeProperties> mInputModes;
--- a/src/hbcore/inputfw/hbinputmethoddescriptor.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputmethoddescriptor.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -128,7 +128,7 @@
void HbInputMethodDescriptor::setDefault()
{
mPluginNameAndPath = HbInputDefaultMethodString;
- mKey = QString();
+ mKey.clear();
mDisplayName = QString("Default");
}
--- a/src/hbcore/inputfw/hbinputmethodnull.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputmethodnull.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -29,7 +29,7 @@
/*!
\internal
*/
-HbInputMethodNull* HbInputMethodNull::Instance()
+HbInputMethodNull *HbInputMethodNull::Instance()
{
static HbInputMethodNull myInstance;
return &myInstance;
@@ -83,7 +83,7 @@
/*!
\internal
*/
-bool HbInputMethodNull::filterEvent(const QEvent* event)
+bool HbInputMethodNull::filterEvent(const QEvent *event)
{
Q_UNUSED(event);
return false;
@@ -92,7 +92,7 @@
/*!
\internal
*/
-void HbInputMethodNull::mouseHandler(int x, QMouseEvent* event)
+void HbInputMethodNull::mouseHandler(int x, QMouseEvent *event)
{
Q_UNUSED(x);
Q_UNUSED(event);
--- a/src/hbcore/inputfw/hbinputmethodnull_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputmethodnull_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -31,7 +31,7 @@
class HB_CORE_PRIVATE_EXPORT HbInputMethodNull : public HbInputMethod
{
public:
- static HbInputMethodNull* Instance();
+ static HbInputMethodNull *Instance();
private: // This is singleton
HbInputMethodNull();
@@ -43,7 +43,7 @@
QString language();
void reset();
bool filterEvent(const QEvent *event);
- void mouseHandler(int x, QMouseEvent* event);
+ void mouseHandler(int x, QMouseEvent *event);
};
#endif // HB_INPUT_METHOD_NULL_H
--- a/src/hbcore/inputfw/hbinputmodecache.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputmodecache.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,8 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputmodecache_p.h"
+
#include <QInputContextPlugin>
#include <QLocale>
#include <QFileSystemWatcher>
@@ -29,7 +31,6 @@
#include <QPluginLoader>
#include <QDir>
-#include "hbinputmodecache_p.h"
#include "hbinpututils.h"
#include "hbinputmethod.h"
#include "hbinputsettingproxy.h"
@@ -69,7 +70,7 @@
HbInputModeCachePrivate() : mWatcher(new QFileSystemWatcher()), mShuttingDown(false) {}
~HbInputModeCachePrivate() {}
void refresh(const QString &directory = QString());
- QInputContextPlugin *pluginInstance(const QString& pluginFileName) const;
+ QInputContextPlugin *pluginInstance(const QString &pluginFileName) const;
HbInputMethod *methodInstance(const QString &pluginFileName, const QString &key) const;
HbInputModeProperties propertiesFromString(const QString &entry) const;
HbInputModeProperties propertiesFromState(const HbInputState &state) const;
@@ -83,13 +84,13 @@
bool mShuttingDown;
};
-QInputContextPlugin* HbInputModeCachePrivate::pluginInstance(const QString& pluginFileName) const
+QInputContextPlugin *HbInputModeCachePrivate::pluginInstance(const QString &pluginFileName) const
{
if (QLibrary::isLibrary(pluginFileName)) {
QPluginLoader loader(pluginFileName);
- QObject* plugin = loader.instance();
+ QObject *plugin = loader.instance();
if (plugin) {
- return qobject_cast<QInputContextPlugin*>(plugin);
+ return qobject_cast<QInputContextPlugin *>(plugin);
}
}
@@ -101,12 +102,12 @@
QInputContextPlugin *plugin = pluginInstance(pluginFileName);
if (plugin) {
QInputContext *instance = plugin->create(key);
- HbInputMethod *result = qobject_cast<HbInputMethod*>(instance);
+ HbInputMethod *result = qobject_cast<HbInputMethod *>(instance);
if (result) {
QStringList languages = plugin->languages(key);
QList<HbInputModeProperties> modeList;
- foreach (QString language, languages) {
- modeList.append(propertiesFromString(language));
+ foreach(const QString &language, languages) {
+ modeList.append(propertiesFromString(language));
}
result->d_ptr->mInputModes = modeList;
}
@@ -130,7 +131,7 @@
// Query plugin paths and scan the folders.
QStringList folders = HbInputSettingProxy::instance()->inputMethodPluginPaths();
- foreach (QString folder, folders) {
+ foreach(const QString &folder, folders) {
QDir dir(folder);
for (unsigned int i = 0; i < dir.count(); i++) {
QString path = QString(dir.absolutePath());
@@ -138,7 +139,7 @@
path += QDir::separator();
}
path += dir[i];
- QInputContextPlugin* inputContextPlugin = pluginInstance(path);
+ QInputContextPlugin *inputContextPlugin = pluginInstance(path);
if (inputContextPlugin) {
HbInputMethodListItem listItem;
listItem.descriptor.setPluginNameAndPath(dir.absolutePath() + QDir::separator() + dir[i]);
@@ -146,7 +147,7 @@
// For each found plugin, check if there is already a list item for it.
// If not, then add one.
QStringList contextKeys = inputContextPlugin->keys();
- foreach (QString key, contextKeys) {
+ foreach(const QString &key, contextKeys) {
listItem.descriptor.setKey(key);
listItem.descriptor.setDisplayName(inputContextPlugin->displayName(key));
@@ -184,9 +185,10 @@
// Replace it with null input context.
HbInputMethod *master = HbInputMethodNull::Instance();
master->d_ptr->mIsActive = true;
- QInputContext* proxy = master->d_ptr->proxy();
- if (proxy != qApp->inputContext())
+ QInputContext *proxy = master->d_ptr->proxy();
+ if (proxy != qApp->inputContext()) {
qApp->setInputContext(proxy);
+ }
}
delete mMethods[i].cached;
mMethods.removeAt(i);
@@ -199,7 +201,7 @@
{
HbInputModeProperties result;
- QStringList parts = entry.split(" ");
+ QStringList parts = entry.split(' ');
if (parts.count() == 4) {
// See HbInputModeProperties::toString() for details,
QString languageStr = parts[0] + QString(" ") + parts[1];
@@ -241,7 +243,7 @@
}
QStringList paths = HbInputSettingProxy::instance()->inputMethodPluginPaths();
- foreach (QString path, paths) {
+ foreach(const QString &path, paths) {
QDir dir(path);
if (!dir.exists() && path.left(1) == "f") {
mWatcher->addPath(QString("f:") + QDir::separator());
@@ -255,7 +257,7 @@
{
if (language.defined()) {
QList<HbInputLanguage> languages = HbKeymapFactory::instance()->availableLanguages();
- foreach (const HbInputLanguage mappedLanguage, languages) {
+ foreach(const HbInputLanguage &mappedLanguage, languages) {
if (mappedLanguage == language) {
return true;
}
@@ -271,7 +273,7 @@
\internal
Returns the singleton instance.
*/
-HbInputModeCache* HbInputModeCache::instance()
+HbInputModeCache *HbInputModeCache::instance()
{
static HbInputModeCache theCache;
return &theCache;
@@ -329,7 +331,7 @@
Q_D(HbInputModeCache);
d->mShuttingDown = true;
- foreach (HbInputMethodListItem method, d->mMethods) {
+ foreach(HbInputMethodListItem method, d->mMethods) {
delete method.cached;
method.cached = 0;
}
@@ -342,7 +344,7 @@
\internal
Loads given input method and caches it.
*/
-HbInputMethod* HbInputModeCache::loadInputMethod(const HbInputMethodDescriptor &inputMethod)
+HbInputMethod *HbInputModeCache::loadInputMethod(const HbInputMethodDescriptor &inputMethod)
{
Q_D(HbInputModeCache);
@@ -370,8 +372,8 @@
QList<HbInputMethodDescriptor> result;
- foreach (HbInputMethodListItem item, d->mMethods) {
- foreach (QString language, item.languages) {
+ foreach(const HbInputMethodListItem &item, d->mMethods) {
+ foreach(const QString &language, item.languages) {
HbInputModeProperties properties = d->propertiesFromString(language);
if (properties.inputMode() == HbInputModeCustom) {
result.append(item.descriptor);
@@ -387,17 +389,17 @@
\internal
Find correct handler for given input state.
*/
-HbInputMethod* HbInputModeCache::findStateHandler(const HbInputState& state)
+HbInputMethod *HbInputModeCache::findStateHandler(const HbInputState &state)
{
Q_D(HbInputModeCache);
HbInputModeProperties stateProperties = d->propertiesFromState(state);
- int languageRangeIndex = -1;
+ int languageRangeIndex = -1;
// First check if there is a method that matches excatly (ie. also specifies
// the language).
for (int i = 0; i < d->mMethods.count(); i++) {
- foreach (QString language, d->mMethods[i].languages) {
+ foreach(const QString &language, d->mMethods[i].languages) {
HbInputModeProperties properties = d->propertiesFromString(language);
if (properties.language().undefined() &&
properties.keyboard() == stateProperties.keyboard() &&
@@ -421,12 +423,12 @@
if (languageRangeIndex >= 0) {
QList<HbInputLanguage> languages = HbKeymapFactory::instance()->availableLanguages();
- foreach(HbInputLanguage language, languages) {
+ foreach(const HbInputLanguage &language, languages) {
// exact match is returned If the country variant is specified in state language,
// otherwise a method that matches to only language range is returned.
bool exactMatchFound = (stateProperties.language().variant() != QLocale::AnyCountry) ?
- (language == stateProperties.language()) :
- (language.language() == stateProperties.language().language());
+ (language == stateProperties.language()) :
+ (language.language() == stateProperties.language().language());
if (exactMatchFound) {
return d->cachedMethod(d->mMethods[languageRangeIndex]);
}
@@ -442,11 +444,11 @@
\sa HbInputMethod
*/
-HbInputMethod* HbInputModeCache::activeMethod() const
+HbInputMethod *HbInputModeCache::activeMethod() const
{
Q_D(const HbInputModeCache);
- foreach (HbInputMethodListItem item, d->mMethods) {
+ foreach(const HbInputMethodListItem &item, d->mMethods) {
if (item.cached && item.cached->isActiveMethod()) {
return item.cached;
}
@@ -465,15 +467,15 @@
QList<HbInputLanguage> result;
- foreach (HbInputMethodListItem item, d->mMethods) {
- foreach (QString language, item.languages) {
+ foreach(const HbInputMethodListItem &item, d->mMethods) {
+ foreach(const QString &language, item.languages) {
HbInputModeProperties mode = d->propertiesFromString(language);
if (mode.inputMode() != HbInputModeCustom) {
if (mode.language().undefined()) {
// This is language range. Let's add everything
// we have key mappings for.
QList<HbInputLanguage> languages = HbKeymapFactory::instance()->availableLanguages();
- foreach (HbInputLanguage mappedLanguage, languages) {
+ foreach(const HbInputLanguage &mappedLanguage, languages) {
if (!result.contains(mappedLanguage)) {
result.append(mappedLanguage);
}
@@ -498,9 +500,9 @@
{
Q_D(const HbInputModeCache);
- foreach (const HbInputMethodListItem item, d->mMethods) {
- if (item.cached == inputMethod) {
- foreach (const QString language, item.languages) {
+ foreach(const HbInputMethodListItem &item, d->mMethods) {
+ if (item.cached == inputMethod) {
+ foreach(const QString &language, item.languages) {
HbInputModeProperties mode = d->propertiesFromString(language);
// Check if keyboard type matches.
if (mode.keyboard() == state.keyboard()) {
@@ -533,7 +535,7 @@
{
Q_D(const HbInputModeCache);
- foreach (HbInputMethodListItem item, d->mMethods) {
+ foreach(const HbInputMethodListItem &item, d->mMethods) {
if (item.cached == inputMethod) {
return item.descriptor;
}
--- a/src/hbcore/inputfw/hbinputmodecache_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputmodecache_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -41,17 +41,17 @@
Q_OBJECT
public:
- static HbInputModeCache* instance();
+ static HbInputModeCache *instance();
private:
HbInputModeCache();
~HbInputModeCache();
-public:
- HbInputMethod* loadInputMethod(const HbInputMethodDescriptor &inputMethod);
+public:
+ HbInputMethod *loadInputMethod(const HbInputMethodDescriptor &inputMethod);
QList<HbInputMethodDescriptor> listCustomInputMethods();
- HbInputMethod* findStateHandler(const HbInputState& state);
- HbInputMethod* activeMethod() const;
+ HbInputMethod *findStateHandler(const HbInputState &state);
+ HbInputMethod *activeMethod() const;
QList<HbInputLanguage> listInputLanguages() const;
bool acceptsState(const HbInputMethod *inputMethod, const HbInputState &state) const;
HbInputMethodDescriptor descriptor(const HbInputMethod *inputMethod) const;
@@ -61,7 +61,7 @@
void directoryChanged(const QString &directory);
private:
- HbInputModeCachePrivate * const d_ptr;
+ HbInputModeCachePrivate *const d_ptr;
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbInputModeCache)
--- a/src/hbcore/inputfw/hbinputmodeproperties.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputmodeproperties.h Wed Jun 23 18:33:25 2010 +0300
@@ -37,7 +37,7 @@
This class is needed when the framework resolves input state handler. An input method
plugin reports a set of implemented input modes as an array of HbInputModeProperties
-coverted to strings.
+converted to strings.
This class is not needed in application code.
@@ -47,36 +47,34 @@
class HbInputModeProperties
{
public:
- HbInputModeProperties()
- {
+ HbInputModeProperties() {
}
HbInputModeProperties(HbInputModeType mode, const HbInputLanguage &language, HbKeyboardType keyboard)
- : iMode(mode), iLanguage(language), iKeyboard(keyboard)
- {
+ : mMode(mode), mLanguage(language), mKeyboard(keyboard) {
}
- HbInputModeProperties& operator=(const HbInputModeProperties& other) {
- iMode = other.iMode;
- iLanguage = other.iLanguage;
- iKeyboard = other.iKeyboard;
+ HbInputModeProperties &operator=(const HbInputModeProperties &other) {
+ mMode = other.mMode;
+ mLanguage = other.mLanguage;
+ mKeyboard = other.mKeyboard;
return *this;
}
- bool operator==(const HbInputModeProperties& other) const {
- if (iMode == other.iMode
- && iLanguage == other.iLanguage
- && iKeyboard == other.iKeyboard) {
- return true;
+ bool operator==(const HbInputModeProperties &other) const {
+ if (mMode == other.mMode
+ && mLanguage == other.mLanguage
+ && mKeyboard == other.mKeyboard) {
+ return true;
}
return false;
}
- bool operator!=(const HbInputModeProperties& other) const {
- if (iMode != other.iMode
- || iLanguage != other.iLanguage
- || iKeyboard != other.iKeyboard) {
- return true;
+ bool operator!=(const HbInputModeProperties &other) const {
+ if (mMode != other.mMode
+ || mLanguage != other.mLanguage
+ || mKeyboard != other.mKeyboard) {
+ return true;
}
return false;
}
@@ -84,45 +82,57 @@
/*!
Returns input mode.
*/
- HbInputModeType inputMode() const { return iMode; }
+ HbInputModeType inputMode() const {
+ return mMode;
+ }
/*!
Sets input mode.
*/
- void setInputMode(HbInputModeType newInputMode) { iMode = newInputMode; }
+ void setInputMode(HbInputModeType newInputMode) {
+ mMode = newInputMode;
+ }
/*!
Return language.
*/
- HbInputLanguage language() const { return HbInputLanguage(iLanguage); }
+ HbInputLanguage language() const {
+ return HbInputLanguage(mLanguage);
+ }
/*!
Sets language.
*/
- void setLanguage(const HbInputLanguage &newLanguage) { iLanguage = newLanguage; }
+ void setLanguage(const HbInputLanguage &newLanguage) {
+ mLanguage = newLanguage;
+ }
/*!
Returns keyboard type.
*/
- HbKeyboardType keyboard() const { return iKeyboard; }
+ HbKeyboardType keyboard() const {
+ return mKeyboard;
+ }
/*!
Sets keyboard type.
*/
- void setKeyboard(HbKeyboardType newKeyboard) { iKeyboard = newKeyboard; }
+ void setKeyboard(HbKeyboardType newKeyboard) {
+ mKeyboard = newKeyboard;
+ }
/*!
Returns mode properties in string format. This is used for input method resolving and
only needed by input method developers.
*/
QString asString() const {
- return iLanguage.asString() + QString(" ") + QString::number(iMode) + QString(" ") + QString::number(iKeyboard);
+ return mLanguage.asString() + QString(" ") + QString::number(mMode) + QString(" ") + QString::number(mKeyboard);
}
private:
- HbInputModeType iMode;
- HbInputLanguage iLanguage;
- HbKeyboardType iKeyboard;
+ HbInputModeType mMode;
+ HbInputLanguage mLanguage;
+ HbKeyboardType mKeyboard;
};
#endif // HB_INPUT_MODE_PROPERTIES_H
--- a/src/hbcore/inputfw/hbinputpredictioncallback.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputpredictioncallback.h Wed Jun 23 18:33:25 2010 +0300
@@ -47,8 +47,7 @@
virtual QString surroundingText() = 0;
virtual int cursorPosition() = 0;
- virtual QList<HbKeyPressProbability> probableKeypresses()
- {
+ virtual QList<HbKeyPressProbability> probableKeypresses() {
return QList<HbKeyPressProbability>();
}
};
--- a/src/hbcore/inputfw/hbinputpredictionengine.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputpredictionengine.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -46,7 +46,7 @@
/*!
\fn virtual void HbPredictionBase::setWord(const QString& word, HbPredictionCallback* callback = 0)
-Sets current word. Given word will be the active word.
+Sets current word. Given word will be the active word.
*/
/*!
@@ -59,7 +59,7 @@
\fn bool HbPredictionBase::updateCandidates(int& bestGuessLocation)
Updates the candidate list to match active input sequence. Typically appendKeyPress and deleteKeyPress
do that automatically but in same cases it may be required to update the situation explicitly.
-Paramter bestGuessLocation specifies the best match index in the candidate list. Typically it is
+Parameter bestGuessLocation specifies the best match index in the candidate list. Typically it is
the first location but with some engines it may vary.
Returns true if active input sequence produces valid candidates. Otherwise returns false and
doesn not update the existing candidate list (in other words HbPredictionEngine::candidates() will
@@ -71,7 +71,7 @@
Handles a key press event.
\sa appendCharacter
-*/
+*/
/*!
\fn virtual void HbPredictionBase::deleteKeyPress(HbPredictionCallback* callback = 0)
@@ -86,7 +86,7 @@
/*!
\fn virtual void HbPredictionBase::clear()
-Clears the active word without commiting it.
+Clears the active word without committing it.
*/
/*!
@@ -115,7 +115,7 @@
*/
/*!
-\fn virtual bool HbPredictionBase::supportsKeyboardType(const HbInputLanguage &language, HbKeyboardType keyboard)
+\fn virtual bool HbPredictionBase::supportsKeyboardType(const HbInputLanguage& language, HbKeyboardType keyboard) const
Returns true if the engine supports given combination of language and keyboard type.
*/
@@ -155,31 +155,31 @@
/*!
Returns pointer to active user dictionary. There are two kind of user dictionaries, default and
-extra. This one returns the default user dictionary. Default implementation of this method is empty,
+extra. This one returns the default user dictionary. Default implementation of this method is empty,
override if the engine supports user dictionaries.
\sa setExtraUserDictionary
\sa HbExtraUserDictionary
*/
-HbUserDictionary* HbPredictionBase::userDictionary() const
+HbUserDictionary *HbPredictionBase::userDictionary() const
{
return 0;
}
/*!
Sets active prediction language. Returns true if given language is recognized
-by the engine and was succesfully activated.
+by the engine and was successfully activated.
*/
bool HbPredictionBase::setLanguage(const HbInputLanguage &language, HbInputModeType inputMode)
{
- Q_UNUSED(language);
+ Q_UNUSED(language);
Q_UNUSED(inputMode);
return false;
}
/*!
-Returns active prediction language.
+Returns active prediction language.
*/
HbInputLanguage HbPredictionBase::language() const
{
@@ -198,7 +198,7 @@
\class HbPredictionEngine
\brief Prediction API for latin based langauges.
-This interface defines abstract prediction API for latin-based languages.
+This interface defines abstract prediction API for latin-based languages.
Also some non-latin languages whose prediction features are functionally similar to
latin-based languages use this API. Those are for example Arabic and Hebrew.
*/
@@ -267,16 +267,16 @@
/*!
Sets active secondary language for prediction engine. Returns true if given language is recognized
-by the engine and was succesfully activated.
+by the engine and was successfully activated.
*/
-bool HbPredictionEngine::setSecondaryLanguage(const HbInputLanguage& language)
+bool HbPredictionEngine::setSecondaryLanguage(const HbInputLanguage &language)
{
Q_UNUSED(language);
return false;
}
/*!
-Returns active secondary prediction language.
+Returns active secondary prediction language.
*/
HbInputLanguage HbPredictionEngine::secondaryLanguage() const
{
@@ -294,7 +294,7 @@
}
/*!
-Enables a specified feature for the prediction engine.
+Enables a specified feature for the prediction engine.
Returns true if the engine supports the feature and is able to enable the feature,
otherwise, returns false.
@@ -321,7 +321,7 @@
}
/*!
-Disables a specified feature for the prediction engine.
+Disables a specified feature for the prediction engine.
Returns true if the engine supports the feature and is able to disable the feature,
otherwise, returns false.
Note: There is temporary default implementation for this method. It will be made
@@ -343,7 +343,7 @@
\sa supportedFeatures
*/
-QStringList HbPredictionEngine::nextWordCandidateList(HbPredictionCallback* callback)
+QStringList HbPredictionEngine::nextWordCandidateList(HbPredictionCallback *callback)
{
Q_UNUSED(callback);
return QStringList();
--- a/src/hbcore/inputfw/hbinputpredictionengine.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputpredictionengine.h Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef HB_PREDICTION_ENGINE_H
-#define HB_PREDICTION_ENGINE_H
+#ifndef HB_INPUT_PREDICTION_ENGINE_H
+#define HB_INPUT_PREDICTION_ENGINE_H
#include <QStringList>
#include <QKeyEvent>
@@ -74,20 +74,20 @@
public:
virtual QList<HbInputLanguage> languages() const = 0;
- virtual void setWord(const QString& word, HbPredictionCallback* callback = 0) = 0;
- virtual void updateCandidates(int& bestGuessLocation, bool& noMoreCandidates) = 0;
- virtual bool updateCandidates(int& bestGuessLocation) = 0;
- virtual void appendKeyPress(const int keycode, const Qt::KeyboardModifiers modifiers, const HbTextCase textCase = HbTextCaseNone, HbPredictionCallback* callback = 0) = 0;
- virtual void deleteKeyPress(HbPredictionCallback* callback = 0) = 0;
+ virtual void setWord(const QString &word, HbPredictionCallback *callback = 0) = 0;
+ virtual void updateCandidates(int &bestGuessLocation, bool &noMoreCandidates) = 0;
+ virtual bool updateCandidates(int &bestGuessLocation) = 0;
+ virtual void appendKeyPress(const int keycode, const Qt::KeyboardModifiers modifiers, const HbTextCase textCase = HbTextCaseNone, HbPredictionCallback *callback = 0) = 0;
+ virtual void deleteKeyPress(HbPredictionCallback *callback = 0) = 0;
virtual void commit(const QString &word = QString()) = 0;
virtual void clear() = 0;
- virtual void addUsedWord(const QString& word) = 0;
+ virtual void addUsedWord(const QString &word) = 0;
virtual HbInputPredictionFeature features() const = 0;
virtual QString vendorIdString() const = 0;
virtual QString engineVersion() const = 0;
- virtual bool supportsKeyboardType(const HbInputLanguage& language, HbKeyboardType keyboard) const = 0;
+ virtual bool supportsKeyboardType(const HbInputLanguage &language, HbKeyboardType keyboard) const = 0;
- virtual HbUserDictionary* userDictionary() const;
+ virtual HbUserDictionary *userDictionary() const;
virtual void setExtraUserDictionary(int id);
virtual void setExtraUserDictionaries(const QList<int>& idList);
virtual bool setLanguage(const HbInputLanguage &language, HbInputModeType inputMode = HbInputModeNone);
@@ -111,16 +111,16 @@
};
public:
- virtual void setCandidateList(QStringList* candidateList) = 0;
+ virtual void setCandidateList(QStringList *candidateList) = 0;
virtual QStringList candidateList() = 0;
virtual QStringList candidates() = 0;
virtual int inputLength() = 0;
- virtual void appendCharacter(const QChar character, const HbTextCase textCase = HbTextCaseNone, HbPredictionCallback* callback = 0) = 0;
+ virtual void appendCharacter(const QChar character, const HbTextCase textCase = HbTextCaseNone, HbPredictionCallback *callback = 0) = 0;
- virtual QStringList nextWordCandidateList(HbPredictionCallback* callback = 0);
+ virtual QStringList nextWordCandidateList(HbPredictionCallback *callback = 0);
virtual bool setErrorCorrectionLevel(HbErrorCorrectionLevel level);
virtual HbErrorCorrectionLevel errorCorrectionLevel() const;
- virtual bool setSecondaryLanguage(const HbInputLanguage& language);
+ virtual bool setSecondaryLanguage(const HbInputLanguage &language);
virtual HbInputLanguage secondaryLanguage() const;
virtual QString currentWord() const;
virtual bool enableFeature(HbInputPredictionFeature feature);
@@ -142,7 +142,7 @@
virtual QStringList getCandidates(int startIndex, int count) = 0;
virtual bool selectCandidate(int index) = 0;
- virtual bool selectCandidate(const QString& candidate) = 0;
+ virtual bool selectCandidate(const QString &candidate) = 0;
virtual bool candidateExist(int index) = 0;
virtual bool pressKey(const int keycode, const Qt::KeyboardModifiers modifiers, const int textCase = 0) = 0;
@@ -152,6 +152,6 @@
virtual bool inlineSpelling(int idx, QString &out) = 0;
};
-#endif // HB_PREDICTION_ENGINE
+#endif // HB_INPUT_PREDICTION_ENGINE_H
// End of file
--- a/src/hbcore/inputfw/hbinputpredictionfactory.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputpredictionfactory.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,8 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputpredictionfactory.h"
+
#include <QLocale>
#include <QPluginLoader>
#include <QDir>
@@ -31,7 +33,6 @@
#include <QApplication>
#include <QList>
-#include "hbinputpredictionfactory.h"
#include "hbinputsettingproxy.h"
#include "hbinputpredictionengine.h"
@@ -55,11 +56,9 @@
{
public:
HbEngineData()
- : cachedInstance(0)
- {
+ : cachedInstance(0) {
}
- ~HbEngineData()
- {
+ ~HbEngineData() {
delete cachedInstance;
}
@@ -67,7 +66,7 @@
QList<HbInputLanguage> languages;
HbPredictionInterfaceType type;
int handle;
- HbPredictionEngine* cachedInstance;
+ HbPredictionEngine *cachedInstance;
QString filename;
QString vendorId;
};
@@ -78,13 +77,15 @@
HbPredictionFactoryPrivate() : leadingHandle(0) {}
~HbPredictionFactoryPrivate();
void initialize();
- HbPredictionEngine* predictionEngineForLanguage(const HbInputLanguage &language);
+ HbPredictionEngine *predictionEngineForLanguage(const HbInputLanguage &language);
void clearEngineData();
- HbPredictionEngine* createInstance(int index);
- int newHandle() { return ++leadingHandle; }
+ HbPredictionEngine *createInstance(int index);
+ int newHandle() {
+ return ++leadingHandle;
+ }
public:
- QList<HbPredictionPlugin*> activePlugins;
+ QList<HbPredictionPlugin *> activePlugins;
QList<HbEngineData> engines;
int leadingHandle;
QMutex mutex;
@@ -121,10 +122,10 @@
}
QPluginLoader loader(dir.absoluteFilePath(fileName));
- QObject* engine_base = loader.instance();
+ QObject *engine_base = loader.instance();
if (engine_base) {
- HbPredictionPlugin* plugin = qobject_cast<HbPredictionPlugin*>(engine_base);
- if (plugin) {
+ HbPredictionPlugin *plugin = qobject_cast<HbPredictionPlugin *>(engine_base);
+ if (plugin) {
HbEngineData data;
data.languages = plugin->languages();
data.type = plugin->type();
@@ -144,19 +145,19 @@
}
void HbPredictionFactoryPrivate::clearEngineData()
-{
+{
engines.clear();
}
-HbPredictionEngine* HbPredictionFactoryPrivate::predictionEngineForLanguage(const HbInputLanguage &language)
+HbPredictionEngine *HbPredictionFactoryPrivate::predictionEngineForLanguage(const HbInputLanguage &language)
{
bool anyVariant = (language.variant() == QLocale::AnyCountry);
for (int i = 0; i < engines.count(); ++i) {
for (int j = 0; j < engines[i].languages.count(); ++j) {
if ((engines[i].type & HbPredInterfaceHidden) == 0) { // Include only those that are not hidden.
bool checkLangOnly = (anyVariant || (engines[i].languages[j].variant() == QLocale::AnyCountry));
- if ((checkLangOnly && (engines[i].languages[j].language() == language.language()))
- || engines[i].languages[j] == language) {
+ if ((checkLangOnly && (engines[i].languages[j].language() == language.language()))
+ || engines[i].languages[j] == language) {
return createInstance(i);
}
}
@@ -166,7 +167,7 @@
return 0;
}
-HbPredictionEngine* HbPredictionFactoryPrivate::createInstance(int index)
+HbPredictionEngine *HbPredictionFactoryPrivate::createInstance(int index)
{
if (index < engines.count()) {
if (engines[index].cachedInstance) {
@@ -181,17 +182,17 @@
fullName += engines[index].filename;
QPluginLoader loader(fullName);
- QObject* plugin_base = loader.instance();
+ QObject *plugin_base = loader.instance();
if (plugin_base) {
- HbPredictionPlugin* plugin = qobject_cast<HbPredictionPlugin*>(plugin_base);
+ HbPredictionPlugin *plugin = qobject_cast<HbPredictionPlugin *>(plugin_base);
if (plugin) {
- HbPredictionEngine* newEngine = plugin->createInterface();
+ HbPredictionEngine *newEngine = plugin->createInterface();
if (newEngine) {
engines[index].cachedInstance = newEngine;
activePlugins.append(plugin);
return newEngine;
}
- }
+ }
}
}
}
@@ -204,7 +205,7 @@
/*!
Returns reference to singleton object.
*/
-HbPredictionFactory* HbPredictionFactory::instance()
+HbPredictionFactory *HbPredictionFactory::instance()
{
static HbPredictionFactory myInstance;
return &myInstance;
@@ -235,7 +236,7 @@
\sa allPredictionEnginesForLanguage
\sa allPredictionEngines
*/
-HbPredictionEngine* HbPredictionFactory::predictionEngineForLanguage(const HbInputLanguage &language)
+HbPredictionEngine *HbPredictionFactory::predictionEngineForLanguage(const HbInputLanguage &language)
{
QMutexLocker locker(&d->mutex);
return d->predictionEngineForLanguage(language);
@@ -328,7 +329,7 @@
\sa allPredictionEnginesForLanguage
\sa allPredictionEngines
*/
-HbPredictionEngine* HbPredictionFactory::createEngine(int handle)
+HbPredictionEngine *HbPredictionFactory::createEngine(int handle)
{
QMutexLocker locker(&d->mutex);
@@ -350,7 +351,7 @@
\sa HbPredictionEngine
\sa HbPredictionPlugin
*/
-HbPredictionEngine* HbPredictionFactory::createEngine(const QString& vendorIdString)
+HbPredictionEngine *HbPredictionFactory::createEngine(const QString &vendorIdString)
{
QMutexLocker locker(&d->mutex);
--- a/src/hbcore/inputfw/hbinputpredictionfactory.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputpredictionfactory.h Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef HB_PREDICTION_FACTORY_H
-#define HB_PREDICTION_FACTORY_H
+#ifndef HB_INPUT_PREDICTION_FACTORY_H
+#define HB_INPUT_PREDICTION_FACTORY_H
#include <QObject>
#include <QList>
@@ -39,7 +39,7 @@
{
public:
virtual ~HbPredictionPlugin() {}
- virtual HbPredictionEngine* createInterface() = 0;
+ virtual HbPredictionEngine *createInterface() = 0;
virtual HbPredictionInterfaceType type() const = 0;
virtual QList<HbInputLanguage> languages() const = 0;
virtual QString vendorId() const = 0;
@@ -49,15 +49,15 @@
class HB_CORE_EXPORT HbPredictionFactory : public QObject
{
-Q_OBJECT
+ Q_OBJECT
public:
- static HbPredictionFactory* instance();
+ static HbPredictionFactory *instance();
- HbPredictionEngine* predictionEngineForLanguage(const HbInputLanguage &language);
+ HbPredictionEngine *predictionEngineForLanguage(const HbInputLanguage &language);
QList<int> allPredictionEnginesForLanguage(const HbInputLanguage &language);
QList<int> allPredictionEngines();
- HbPredictionEngine* createEngine(int handle);
- HbPredictionEngine* createEngine(const QString& vendorIdString);
+ HbPredictionEngine *createEngine(int handle);
+ HbPredictionEngine *createEngine(const QString &vendorIdString);
void initialize();
void clearEngineData();
@@ -70,13 +70,13 @@
HbPredictionFactory();
// Prevent copying
- HbPredictionFactory(const HbPredictionFactory&);
- HbPredictionFactory& operator = (const HbPredictionFactory& other);
+ HbPredictionFactory(const HbPredictionFactory &);
+ HbPredictionFactory &operator = (const HbPredictionFactory &other);
private:
- HbPredictionFactoryPrivate* d;
+ HbPredictionFactoryPrivate *d;
};
-#endif // HB_PREDICTION_FACTORY_H
+#endif // HB_INPUT_PREDICTION_FACTORY_H
// End of file
--- a/src/hbcore/inputfw/hbinputregioncollector.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputregioncollector.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,12 +22,12 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputregioncollector_p.h"
#include <QRegion>
#include <QTransform>
#include <QPointer>
-#include "hbinputregioncollector_p.h"
#include "hbwidget.h"
#include "hbmainwindow.h"
#include "hbpopup.h"
@@ -51,10 +51,11 @@
{
public:
HbWidgetFilterList(HbWidget *w)
- :mWidget (w), mIsVisible (false)
- {
+ : mWidget(w), mIsVisible(false) {
}
- bool operator ==(const HbWidgetFilterList &other) const {return mWidget == other.mWidget;}
+ bool operator ==(const HbWidgetFilterList &other) const {
+ return mWidget == other.mWidget;
+ }
QPointer <HbWidget> mWidget;
// visibility is needed as the time when we get show event inside eventFilter
// widget is not visible.
@@ -65,7 +66,7 @@
{
public:
HbInputRegionCollectorPrivate()
- :mEnabled(false), mModalDialogs(0){}
+ : mEnabled(false), mModalDialogs(0) {}
QList < HbWidgetFilterList > mInputWidgets;
bool mEnabled;
int mModalDialogs;
@@ -85,7 +86,7 @@
Constructor.
*/
HbInputRegionCollector::HbInputRegionCollector()
- :d_ptr(new HbInputRegionCollectorPrivate())
+ : d_ptr(new HbInputRegionCollectorPrivate())
{
}
@@ -100,7 +101,7 @@
/*!
Installs a even filter on the passed widget.
*/
-void HbInputRegionCollector::attach (HbWidget *widget)
+void HbInputRegionCollector::attach(HbWidget *widget)
{
if (widget && !d_ptr->mInputWidgets.contains(widget)) {
if (d_ptr->mEnabled) {
@@ -113,7 +114,7 @@
/*!
Detaches widget from region collection and updates current region if region collection is enabled.
*/
-void HbInputRegionCollector::detach (HbWidget *widget)
+void HbInputRegionCollector::detach(HbWidget *widget)
{
if (widget && d_ptr->mInputWidgets.contains(widget)) {
widget->removeEventFilter(this);
@@ -127,7 +128,7 @@
/*!
Observes size, position and move events of all attached widgets and calls update().
*/
-bool HbInputRegionCollector::eventFilter (QObject *obj, QEvent *event)
+bool HbInputRegionCollector::eventFilter(QObject *obj, QEvent *event)
{
HbWidget *widget = qobject_cast<HbWidget *>(obj);
if (widget) {
@@ -136,44 +137,42 @@
case QEvent::GraphicsSceneMove:
update();
break;
- case QEvent::Show:
- {
- // We can not query for HbWidget visiblility at this point
- // so have to set it inside the strcuture variable.
- int pos = d_ptr->mInputWidgets.indexOf(widget);
- if (pos != -1) {
- // Temporary TODO ++
- // TODO write a HbInputWidgetStore class which will hold all the
- // active widgets and will emit signals for example sceneBlocked()
- // sceneUnBlocked(). And then connect to region collector.
- HbPopup *popup = qobject_cast<HbPopup *>(obj);
- // since there is a bug in Qt that QGraphicsItem geenrates two show events
- // once when you do a show() and once when you added it to the scene(),
- // so need a check on visibility.
- if (popup && popup->isModal() && !d_ptr->mInputWidgets[pos].mIsVisible) {
- d_ptr->mModalDialogs++;
- }
- // Temporary TODO --
- d_ptr->mInputWidgets[pos].mIsVisible = true;
- update();
+ case QEvent::Show: {
+ // We can not query for HbWidget visiblility at this point
+ // so have to set it inside the strcuture variable.
+ int pos = d_ptr->mInputWidgets.indexOf(widget);
+ if (pos != -1) {
+ // Temporary TODO ++
+ // TODO write a HbInputWidgetStore class which will hold all the
+ // active widgets and will emit signals for example sceneBlocked()
+ // sceneUnBlocked(). And then connect to region collector.
+ HbPopup *popup = qobject_cast<HbPopup *>(obj);
+ // since there is a bug in Qt that QGraphicsItem geenrates two show events
+ // once when you do a show() and once when you added it to the scene(),
+ // so need a check on visibility.
+ if (popup && popup->isModal() && !d_ptr->mInputWidgets[pos].mIsVisible) {
+ d_ptr->mModalDialogs++;
}
- break;
+ // Temporary TODO --
+ d_ptr->mInputWidgets[pos].mIsVisible = true;
+ update();
}
- case QEvent::Hide:
- {
- int pos = d_ptr->mInputWidgets.indexOf(widget);
- if (pos != -1) {
- // Temporary TODO ++
- HbPopup *popup = qobject_cast<HbPopup *>(obj);
- if (popup && popup->isModal()) {
- d_ptr->mModalDialogs--;
- }
- // Temporary TODO --
- d_ptr->mInputWidgets[pos].mIsVisible = false;
- update();
+ break;
+ }
+ case QEvent::Hide: {
+ int pos = d_ptr->mInputWidgets.indexOf(widget);
+ if (pos != -1) {
+ // Temporary TODO ++
+ HbPopup *popup = qobject_cast<HbPopup *>(obj);
+ if (popup && popup->isModal()) {
+ d_ptr->mModalDialogs--;
}
- break;
+ // Temporary TODO --
+ d_ptr->mInputWidgets[pos].mIsVisible = false;
+ update();
}
+ break;
+ }
default:
break;
};
@@ -210,13 +209,12 @@
// is 270 degree. We should map it to get transformed rectangle.
QTransform t = window->viewportTransform();
QRectF tRect = t.mapRect(rect);
- region += tRect.toRect();
QRectF intersection = QRectF(window->geometry()).intersected(tRect);
region += intersection.toRect();
}
}
}
- }
+ }
emit updateRegion(region);
}
--- a/src/hbcore/inputfw/hbinputregioncollector_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputregioncollector_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -41,16 +41,16 @@
static HbInputRegionCollector *instance();
~HbInputRegionCollector();
- void attach (HbWidget *widget);
- void detach (HbWidget *widget);
- void setEnabled ( bool enabled );
- void update ();
+ void attach(HbWidget *widget);
+ void detach(HbWidget *widget);
+ void setEnabled(bool enabled);
+ void update();
protected:
- bool eventFilter (QObject *obj, QEvent *event);
+ bool eventFilter(QObject *obj, QEvent *event);
signals:
- void updateRegion (QRegion region);
+ void updateRegion(QRegion region);
private:
HbInputRegionCollector();
--- a/src/hbcore/inputfw/hbinputsettingproxy.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputsettingproxy.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,9 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputsettingproxy.h"
+#include "hbinputsettingproxy_p.h"
+
#include <qbytearray.h>
#include <QFile>
#include <QBuffer>
@@ -31,8 +34,6 @@
#include <QVector>
#include <QDir>
-#include "hbinputsettingproxy.h"
-#include "hbinputsettingproxy_p.h"
#include "hbinputmodecache_p.h"
#include "hbinputfilter.h"
@@ -89,16 +90,16 @@
if (!descriptor.pluginNameAndPath().isEmpty() &&
(descriptor.pluginNameAndPath().size() * sizeof(QChar) < HbActiveMethodNameMax)) {
pluginNameAndPathSize = descriptor.pluginNameAndPath().size();
- memcpy((void*)pluginNameAndPath, (void*)descriptor.pluginNameAndPath().unicode(), descriptor.pluginNameAndPath().size() * sizeof(QChar));
+ memcpy((void *)pluginNameAndPath, (void *)descriptor.pluginNameAndPath().unicode(), descriptor.pluginNameAndPath().size() * sizeof(QChar));
}
if (!descriptor.key().isEmpty() &&
(descriptor.key().size() * sizeof(QChar) < HbActiveMethodKeyMax)) {
- memcpy((void*)key, (void*)descriptor.key().unicode(), descriptor.key().size() * sizeof(QChar));
+ memcpy((void *)key, (void *)descriptor.key().unicode(), descriptor.key().size() * sizeof(QChar));
keySize = descriptor.key().size();
}
if (!descriptor.displayName().isEmpty() &&
(descriptor.displayName().size() * sizeof(QChar) < HbActiveMethodKeyMax)) {
- memcpy((void*)displayName, (void*)descriptor.displayName().unicode(), descriptor.displayName().size() * sizeof(QChar));
+ memcpy((void *)displayName, (void *)descriptor.displayName().unicode(), descriptor.displayName().size() * sizeof(QChar));
displayNameSize = descriptor.displayName().size();
}
}
@@ -145,12 +146,10 @@
{
public:
HbScClassifier(QChar aChar = 0, int aCount = 0)
- : mChar(aChar), mCount(aCount)
- {
+ : mChar(aChar), mCount(aCount) {
}
- void operator=(const HbScClassifier& aOther)
- {
+ void operator=(const HbScClassifier &aOther) {
mChar = aOther.mChar;
mCount = aOther.mCount;
}
@@ -160,8 +159,6 @@
int mCount;
};
-/// @endcond
-
HbInputSettingProxyPrivate::HbInputSettingProxyPrivate()
{
iSharedMemory = new QSharedMemory(KInputSettingProxyKey);
@@ -182,7 +179,7 @@
lock();
- HbSettingProxyInternalData* prData = proxyData();
+ HbSettingProxyInternalData *prData = proxyData();
if (prData) {
++prData->iReferences;
}
@@ -201,7 +198,7 @@
void HbInputSettingProxyPrivate::shutdownDataArea()
{
lock();
- HbSettingProxyInternalData* prData = proxyData();
+ HbSettingProxyInternalData *prData = proxyData();
if (prData) {
prData->iReferences--;
if (prData->iReferences <= 0) {
@@ -213,12 +210,12 @@
QString HbInputSettingProxyPrivate::dataFilePath()
{
- return HbInputSettingProxy::writablePath()+QDir::separator()+QString("settings");
+ return HbInputSettingProxy::writablePath() + QDir::separator() + QString("settings");
}
QString HbInputSettingProxyPrivate::dataFileNameAndPath()
{
- return dataFilePath()+QDir::separator()+QString("proxy.dat");
+ return dataFilePath() + QDir::separator() + QString("proxy.dat");
}
void HbInputSettingProxyPrivate::initializeDataArea()
@@ -226,7 +223,7 @@
lock();
bool wasLoaded = load();
- HbSettingProxyInternalData* prData = proxyData();
+ HbSettingProxyInternalData *prData = proxyData();
if (prData) {
prData->iReferences = 0;
prData->iOrientationChangeCompleted = true;
@@ -240,8 +237,8 @@
prData->iGlobalSecondaryInputLanguage = QLocale::Language(0);
prData->iActiveKeyboard = HbKeyboardVirtual12Key;
prData->iTouchKeyboard = HbKeyboardVirtual12Key;
- prData->iHwKeyboard = HbKeyboardQwerty;
- prData->iPredictiveInputState = (HbKeyboardSettingFlags)HbKeyboardSetting12key|HbKeyboardSettingQwerty;
+ prData->iHwKeyboard = HbKeyboardQwerty;
+ prData->iPredictiveInputState = (HbKeyboardSettingFlags)HbKeyboardSetting12key | HbKeyboardSettingQwerty;
prData->iDigitType = HbDigitTypeLatin;
prData->iQwertyTextCasing = true;
prData->iQwertyCharacterPreview = true;
@@ -249,7 +246,7 @@
prData->iKeypressTimeout = 1000;
prData->iAutocompletion = (HbKeyboardSettingFlags)(HbKeyboardSetting12key | HbKeyboardSettingQwerty);
prData->iTypingCorrectionLevel = HbTypingCorrectionLevelHigh;
- prData->iPrimaryCandidateMode = HbPrimaryCandidateModeBestPrediction;
+ prData->iPrimaryCandidateMode = HbPrimaryCandidateModeBestPrediction;
prData->iPreferredMethodHorizontal = HbInputMethodDescriptor();
prData->iPreferredMethodHorizontal.setData(QByteArray());
prData->iPreferredMethodVertical = HbInputMethodDescriptor();
@@ -268,12 +265,12 @@
QByteArray rawData = file.read(sizeof(HbSettingProxyInternalData));
if (rawData.size() == sizeof(HbSettingProxyInternalData)) {
- HbSettingProxyInternalData* ldData = (HbSettingProxyInternalData*)rawData.constData();
+ HbSettingProxyInternalData *ldData = (HbSettingProxyInternalData *)rawData.constData();
if (ldData) {
if (ldData->iVersion == HbProxyDataRequiredVersion) {
- HbSettingProxyInternalData* prData = proxyData();
- memcpy((void*)prData, (void*)ldData, sizeof(HbSettingProxyInternalData));
+ HbSettingProxyInternalData *prData = proxyData();
+ memcpy((void *)prData, (void *)ldData, sizeof(HbSettingProxyInternalData));
prData->iActiveKeyboard = ldData->iActiveKeyboard;
// Temporarily like this, will be moved as part of shared data later...
@@ -282,7 +279,7 @@
iTopScs.clear();
for (int jj = 0; jj < numItems; jj++) {
HbScClassifier tmpItem;
- file.read((char*)&tmpItem, sizeof(HbScClassifier));
+ file.read((char *)&tmpItem, sizeof(HbScClassifier));
iTopScs.append(tmpItem);
}
@@ -302,19 +299,19 @@
QDir settingDir;
settingDir.mkpath(dataFilePath());
- HbSettingProxyInternalData* prData = proxyData();
+ HbSettingProxyInternalData *prData = proxyData();
if (prData) {
QFile file(iSaveFile);
if (!file.open(QIODevice::WriteOnly)) {
return;
}
- file.write((const char*)prData, sizeof(HbSettingProxyInternalData));
+ file.write((const char *)prData, sizeof(HbSettingProxyInternalData));
// Temporarily like this, will be moved to shared data later...
int numItems = iTopScs.count();
- file.write((const char*)&numItems, sizeof(int));
- file.write((const char*)iTopScs.constData(), numItems * sizeof(HbScClassifier));
+ file.write((const char *)&numItems, sizeof(int));
+ file.write((const char *)iTopScs.constData(), numItems * sizeof(HbScClassifier));
file.close();
}
}
@@ -338,9 +335,9 @@
string[i] = 0;
}
-HbSettingProxyInternalData* HbInputSettingProxyPrivate::proxyData() const
+HbSettingProxyInternalData *HbInputSettingProxyPrivate::proxyData() const
{
- return static_cast<HbSettingProxyInternalData*>(iSharedMemory->data());
+ return static_cast<HbSettingProxyInternalData *>(iSharedMemory->data());
}
void HbInputSettingProxyPrivate::flipToggle()
@@ -350,13 +347,13 @@
bool HbInputSettingProxyPrivate::flipStatus()
{
- HbSettingProxyInternalData* prData = proxyData();
+ HbSettingProxyInternalData *prData = proxyData();
return prData->iFlipStatus;
}
void HbInputSettingProxyPrivate::setFlipStatus(bool flipStatus)
{
- HbSettingProxyInternalData* prData = proxyData();
+ HbSettingProxyInternalData *prData = proxyData();
prData->iFlipStatus = flipStatus;
handleDeviceSpecificOriantationAndFlipChange();
@@ -369,7 +366,7 @@
if (HbInputSettingProxy::instance()->screenOrientation() == Qt::Vertical) {
keyboard = HbKeyboardVirtual12Key;
} else {
- if(flipStatus()) {
+ if (flipStatus()) {
keyboard = HbKeyboardQwerty;
} else {
keyboard = HbKeyboardVirtualQwerty;
@@ -379,14 +376,12 @@
HbInputSettingProxy::instance()->setActiveKeyboard(keyboard);
}
-//
-// HbInputSettingProxy
-//
+/// @endcond
/*!
Returns pointer to the singleton object.
*/
-HbInputSettingProxy* HbInputSettingProxy::instance()
+HbInputSettingProxy *HbInputSettingProxy::instance()
{
static HbInputSettingProxy theProxy;
return &theProxy;
@@ -449,7 +444,7 @@
\sa typingCorrectionLevelChanged
\sa primaryCandidateModeChanged
*/
-void HbInputSettingProxy::connectObservingObject(QObject* aObserver)
+void HbInputSettingProxy::connectObservingObject(QObject *aObserver)
{
if (aObserver) {
connect(this, SIGNAL(globalInputLanguageChanged(const HbInputLanguage &)), aObserver, SLOT(globalInputLanguageChanged(const HbInputLanguage &)));
@@ -465,7 +460,7 @@
\sa connectObservingObject
*/
-void HbInputSettingProxy::disconnectObservingObject(QObject* aObserver)
+void HbInputSettingProxy::disconnectObservingObject(QObject *aObserver)
{
if (aObserver) {
disconnect(this, SIGNAL(globalInputLanguageChanged(const HbInputLanguage &)), aObserver, SLOT(globalInputLanguageChanged(const HbInputLanguage &)));
@@ -489,7 +484,7 @@
HbInputLanguage res;
d->lock();
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
res = prData->iGlobalPrimaryInputLanguage;
}
@@ -510,7 +505,7 @@
HbInputLanguage res;
d->lock();
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
res = prData->iGlobalSecondaryInputLanguage;
}
@@ -539,7 +534,7 @@
Q_D(const HbInputSettingProxy);
HbKeyboardType res = HbKeyboardNone;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
res = prData->iHwKeyboard;
}
@@ -558,7 +553,7 @@
Q_D(const HbInputSettingProxy);
HbKeyboardType res = HbKeyboardNone;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
res = prData->iTouchKeyboard;
}
@@ -576,7 +571,7 @@
Q_D(const HbInputSettingProxy);
HbKeyboardType res = HbKeyboardNone;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
res = prData->iActiveKeyboard;
}
@@ -596,7 +591,7 @@
HbInputMethodDescriptor result;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
d->lock();
if (orientation == Qt::Horizontal) {
@@ -622,7 +617,7 @@
HbInputMethodDescriptor result;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
d->lock();
if (prData->iScreenOrientation == Qt::Horizontal) {
@@ -647,7 +642,7 @@
QByteArray result;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
d->lock();
if (orientation == Qt::Horizontal) {
@@ -673,7 +668,7 @@
void HbInputSettingProxy::setPreferredInputMethod(Qt::Orientation orientation, const HbInputMethodDescriptor &inputMethod, const QByteArray &customData)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
d->lock();
if (orientation == Qt::Horizontal) {
@@ -692,10 +687,10 @@
\sa globalInputLanguage
*/
-void HbInputSettingProxy::setGlobalInputLanguage(const HbInputLanguage& language)
+void HbInputSettingProxy::setGlobalInputLanguage(const HbInputLanguage &language)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
bool notify = false;
d->lock();
@@ -718,7 +713,7 @@
void HbInputSettingProxy::setGlobalSecondaryInputLanguage(const HbInputLanguage &language)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
bool notify = false;
d->lock();
@@ -744,7 +739,7 @@
void HbInputSettingProxy::setActiveHwKeyboard(HbKeyboardType keyboard)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
bool notify = false;
d->lock();
@@ -770,7 +765,7 @@
void HbInputSettingProxy::setActiveTouchKeyboard(HbKeyboardType keyboard)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
bool notify = false;
d->lock();
@@ -796,7 +791,7 @@
void HbInputSettingProxy::setActiveKeyboard(HbKeyboardType keyboard)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
bool notify = false;
d->lock();
@@ -823,7 +818,7 @@
Q_D(const HbInputSettingProxy);
bool res = false;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
res = prData->iPredictiveInputState & keyboardType;
}
@@ -839,11 +834,11 @@
void HbInputSettingProxy::setPredictiveInputStatus(HbKeyboardSettingFlags keyboardType, bool newStatus)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
bool notify = false;
d->lock();
-
+
HbKeyboardSettingFlags newValue = prData->iPredictiveInputState;
if (newStatus) {
newValue |= keyboardType;
@@ -872,7 +867,7 @@
Q_D(const HbInputSettingProxy);
bool res = false;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
if (activeKeyboard() & HbQwertyKeyboardMask) {
res = prData->iPredictiveInputState & HbKeyboardSettingQwerty;
@@ -912,7 +907,7 @@
return QString(HB_INSTALL_DIR) + QDir::separator() + QString(".hbinputs");
} else {
#ifdef Q_OS_UNIX
- return QDir::homePath() + QDir::separator() + QString(".hbinputs");
+ return QDir::homePath() + QDir::separator() + QString(".hbinputs");
#else
return HBI_BASE_WRITABLE_PATH ;
#endif
@@ -948,12 +943,12 @@
QFileInfoList list = QDir::drives();
#ifdef Q_OS_SYMBIAN
- for(int counter = 0; counter < list.count(); counter ++) {
+ for (int counter = 0; counter < list.count(); counter ++) {
result.append(list.at(counter).absoluteFilePath() + QString("/resource/keymaps"));
}
#else
result.append(HB_RESOURCES_DIR + (QDir::separator() + QString("keymaps")));
- for(int counter = 0; counter < list.count(); counter ++) {
+ for (int counter = 0; counter < list.count(); counter ++) {
result.append(list.at(counter).absoluteFilePath() + QString("resource/keymaps"));
}
#endif
@@ -1026,7 +1021,7 @@
Q_D(const HbInputSettingProxy);
HbInputDigitType res = HbDigitTypeLatin;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
res = prData->iDigitType;
}
@@ -1042,7 +1037,7 @@
void HbInputSettingProxy::setGlobalDigitType(HbInputDigitType digitType)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
d->lock();
if (prData->iDigitType != digitType) {
@@ -1062,7 +1057,7 @@
Q_D(HbInputSettingProxy);
bool res = false;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
res = prData->iQwertyTextCasing;
}
@@ -1078,7 +1073,7 @@
void HbInputSettingProxy::setAutomaticTextCasingForQwerty(bool status)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
bool notify = false;
d->lock();
@@ -1091,7 +1086,7 @@
emit automaticTextCasingStateForQwertyChanged(status);
}
}
-
+
}
/*!
@@ -1102,7 +1097,7 @@
void HbInputSettingProxy::setCharacterPreviewForQwerty(bool previewEnabled)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
bool notify = false;
d->lock();
@@ -1115,7 +1110,7 @@
emit characterPreviewStateForQwertyChanged(previewEnabled);
}
}
-
+
}
/*!
@@ -1129,7 +1124,7 @@
bool res = false;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
res = prData->iQwertyCharacterPreview;
}
@@ -1138,6 +1133,8 @@
}
/*!
+\deprecated HbInputSettingProxy::activeCustomInputMethod() const
+ is deprecated. Use preferredInputMethod instead.
Returns active custom input method. The pluginNameAndPath field is empty if no custom input methid is active.
\sa setActiveCustomInputMethod
@@ -1148,6 +1145,8 @@
}
/*!
+\deprecated HbInputSettingProxy::setActiveCustomInputMethod(const HbInputMethodDescriptor&)
+ is deprecated. Use setPreferredInputMethod instead.
\sa activeCustomInputMethod
*/
void HbInputSettingProxy::setActiveCustomInputMethod(const HbInputMethodDescriptor &inputMethod)
@@ -1156,14 +1155,14 @@
}
/*!
-Returns the current screen orientation in settings
+Returns the current screen orientation in settings
*/
Qt::Orientation HbInputSettingProxy::screenOrientation()
{
Q_D(HbInputSettingProxy);
Qt::Orientation orientation = Qt::Vertical;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
orientation = prData->iScreenOrientation;
}
@@ -1172,32 +1171,31 @@
/*!
Sets the current screen orientation in settings. This completes orientation change
-started with notifyScreenOrientationChange.
+started with notifyScreenOrientationChange. Nothing is done, If
+ notifyScreenOrientationChange has not been called before calling this.
*/
void HbInputSettingProxy::setScreenOrientation(Qt::Orientation screenOrientation)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
- bool notify = false;
-
d->lock();
- if (screenOrientation != prData->iScreenOrientation) {
- prData->iScreenOrientation = screenOrientation;
- notify = true;
+ if (prData->iOrientationChangeCompleted) {
+ d->unlock();
+ return;
}
+ prData->iScreenOrientation = screenOrientation;
d->unlock();
- if (notify) {
- // notify everyone that the orientation has changed.
- d->handleDeviceSpecificOriantationAndFlipChange();
- emit orientationChanged(screenOrientation);
- // set orientation change operation completed.
- d->lock();
- prData->iOrientationChangeCompleted = true;
- d->unlock();
- }
+ // notify everyone that the orientation has changed.
+ d->handleDeviceSpecificOriantationAndFlipChange();
+ emit orientationChanged(screenOrientation);
+
+ // set orientation change operation completed.
+ d->lock();
+ prData->iOrientationChangeCompleted = true;
+ d->unlock();
}
}
@@ -1213,13 +1211,20 @@
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
+ bool notify = false;
d->lock();
- prData->iOrientationChangeCompleted = false;
+ if (prData->iOrientationChangeCompleted) {
+ prData->iOrientationChangeCompleted = false;
+ notify = true;
+ }
d->unlock();
+ if (notify) {
+ emit orientationAboutToChange();
+ }
}
- emit orientationAboutToChange();
+
}
/*!
@@ -1230,7 +1235,7 @@
Q_D(const HbInputSettingProxy);
bool completed = true;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
completed = prData->iOrientationChangeCompleted;
}
@@ -1246,7 +1251,7 @@
Q_D(HbInputSettingProxy);
// call handleDeviceSpecificOriantationAndFlipChange method
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
d->lock();
prData->iScreenOrientation = screenOrientation;
@@ -1260,7 +1265,7 @@
}
/*!
-Returns the status of regional input correction feature.
+Returns the status of regional input correction feature.
\sa enableRegionalCorrection.
*/
@@ -1268,7 +1273,7 @@
{
Q_D(const HbInputSettingProxy);
bool res = false;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
res = prData->iRegionalCorrectionStatus;
}
@@ -1283,7 +1288,7 @@
void HbInputSettingProxy::enableRegionalCorrection(bool newStatus)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
bool notify = false;
d->lock();
@@ -1306,7 +1311,7 @@
void HbInputSettingProxy::setKeypressTimeout(int timeout)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
bool notify = false;
d->lock();
@@ -1322,7 +1327,7 @@
}
/*!
-Returns the keypress timeout value.
+Returns the keypress timeout value.
\sa setKeypressTimeout.
*/
@@ -1330,7 +1335,7 @@
{
Q_D(const HbInputSettingProxy);
int res = 0;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
res = prData->iKeypressTimeout;
}
@@ -1345,7 +1350,7 @@
void HbInputSettingProxy::setAutocompletionStatus(HbKeyboardSettingFlags keyboardType, bool state)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
bool notify = false;
d->lock();
@@ -1376,7 +1381,7 @@
{
Q_D(const HbInputSettingProxy);
bool res = false;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
res = prData->iAutocompletion & keyboardType;
}
@@ -1391,7 +1396,7 @@
void HbInputSettingProxy::setTypingCorrectionLevel(HbTypingCorrectionLevel level)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
bool notify = false;
d->lock();
@@ -1416,7 +1421,7 @@
{
Q_D(const HbInputSettingProxy);
HbTypingCorrectionLevel res = HbTypingCorrectionLevelHigh;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
res = prData->iTypingCorrectionLevel;
}
@@ -1431,7 +1436,7 @@
void HbInputSettingProxy::setPrimaryCandidateMode(HbPrimaryCandidateMode mode)
{
Q_D(HbInputSettingProxy);
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
bool notify = false;
d->lock();
@@ -1455,7 +1460,7 @@
{
Q_D(const HbInputSettingProxy);
HbPrimaryCandidateMode res = HbPrimaryCandidateModeExactTyping;
- HbSettingProxyInternalData* prData = d->proxyData();
+ HbSettingProxyInternalData *prData = d->proxyData();
if (prData) {
res = prData->iPrimaryCandidateMode;
}
--- a/src/hbcore/inputfw/hbinputsettingproxy.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputsettingproxy.h Wed Jun 23 18:33:25 2010 +0300
@@ -40,7 +40,7 @@
Q_OBJECT
public:
- static HbInputSettingProxy* instance();
+ static HbInputSettingProxy *instance();
static QStringList inputMethodPluginPaths();
static QStringList keymapPluginPaths();
static QString languageDatabasePath();
@@ -54,8 +54,8 @@
virtual ~HbInputSettingProxy();
public:
- void connectObservingObject(QObject* observer);
- void disconnectObservingObject(QObject* observer);
+ void connectObservingObject(QObject *observer);
+ void disconnectObservingObject(QObject *observer);
HbInputLanguage globalInputLanguage() const;
void availableHwKeyboard(QList<HbKeyboardType>& listOfAvailableKeyboards) const;
HbInputLanguage globalSecondaryInputLanguage() const;
@@ -124,7 +124,7 @@
friend class ContentWidget;
private:
- HbInputSettingProxyPrivate * const d_ptr;
+ HbInputSettingProxyPrivate *const d_ptr;
private:
Q_DISABLE_COPY(HbInputSettingProxy)
--- a/src/hbcore/inputfw/hbinputsettingproxy_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputsettingproxy_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -27,6 +27,7 @@
#include <QSharedMemory>
#include <QString>
+#include <QVector>
#include "hbinputmethoddescriptor.h"
#include "hbinputlanguage.h"
@@ -63,8 +64,7 @@
// REMEMBER to increase HbProxyDataRequiredVersion every time you add fields
// to this class or change related constants!
-struct HbSettingProxyInternalData
-{
+struct HbSettingProxyInternalData {
int iVersion;
int iReferences;
HbInputLanguage iGlobalPrimaryInputLanguage;
@@ -75,7 +75,7 @@
HbKeyboardSettingFlags iPredictiveInputState;
HbInputDigitType iDigitType;
bool iQwertyTextCasing;
- bool iQwertyCharacterPreview;
+ bool iQwertyCharacterPreview;
Qt::Orientation iScreenOrientation;
bool iOrientationChangeCompleted;
bool iFlipStatus;
@@ -101,12 +101,12 @@
bool load();
void save();
void shutdownDataArea();
- HbSettingProxyInternalData* proxyData() const;
+ HbSettingProxyInternalData *proxyData() const;
void flipToggle();
bool flipStatus();
void setFlipStatus(bool flipStatus);
-
+
void handleDeviceSpecificOriantationAndFlipChange();
void lock() const {
--- a/src/hbcore/inputfw/hbinputstandardfilters.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputstandardfilters.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -46,37 +46,37 @@
/* Returns true if the character is a valid number in the current input language
*/
-
+
static bool isValidNumber(QChar aChar)
{
bool ret = false;
QLocale::Language language = HbInputSettingProxy::instance()->globalInputLanguage().language();
- QLocale::Language systemLanguage = QLocale::system().language();
+ QLocale::Language systemLanguage = QLocale::system().language();
- // If both phone language and writing language are same, then language specific
- // digits should be allowed in phone number and digits only editors. If the current
- // language is Arabic, then Arabic-indic digits are supported. Eastern-Arabic digits
- // are supported in Persian and Urdu languages.
- if (language == systemLanguage) {
- if (language == QLocale::Arabic &&
- (aChar >= HB_DIGIT_ARABIC_INDIC_START_VALUE &&
- aChar <= HB_DIGIT_ARABIC_INDIC_END_VALUE)) {
+ // If both phone language and writing language are same, then language specific
+ // digits should be allowed in phone number and digits only editors. If the current
+ // language is Arabic, then Arabic-indic digits are supported. Eastern-Arabic digits
+ // are supported in Persian and Urdu languages.
+ if (language == systemLanguage) {
+ if (language == QLocale::Arabic &&
+ (aChar >= HB_DIGIT_ARABIC_INDIC_START_VALUE &&
+ aChar <= HB_DIGIT_ARABIC_INDIC_END_VALUE)) {
ret = true;
} else if ((language == QLocale::Persian ||
- language == QLocale::Urdu) &&
- (aChar >= HB_DIGIT_EASTERN_ARABIC_START_VALUE &&
- aChar <= HB_DIGIT_EASTERN_ARABIC_END_VALUE)) {
+ language == QLocale::Urdu) &&
+ (aChar >= HB_DIGIT_EASTERN_ARABIC_START_VALUE &&
+ aChar <= HB_DIGIT_EASTERN_ARABIC_END_VALUE)) {
ret = true;
} else if (aChar >= '0' && aChar <= '9') {
ret = true;
- }
+ }
} else if (aChar >= '0' && aChar <= '9') {
ret = true;
- }
- return ret;
+ }
+ return ret;
}
-HbPhoneNumberFilter* HbPhoneNumberFilter::instance()
+HbPhoneNumberFilter *HbPhoneNumberFilter::instance()
{
static HbPhoneNumberFilter myInstance;
return &myInstance;
@@ -101,7 +101,7 @@
return true;
} else if (isValidNumber(character)) {
return true;
- }
+ }
return false;
}
@@ -118,7 +118,7 @@
\sa HbEditorInterface
*/
-HbFormattedNumbersFilter* HbFormattedNumbersFilter::instance()
+HbFormattedNumbersFilter *HbFormattedNumbersFilter::instance()
{
static HbFormattedNumbersFilter myInstance;
return &myInstance;
@@ -157,7 +157,7 @@
\sa HbEditorInterface
*/
-HbDigitsOnlyFilter* HbDigitsOnlyFilter::instance()
+HbDigitsOnlyFilter *HbDigitsOnlyFilter::instance()
{
static HbDigitsOnlyFilter myInstance;
return &myInstance;
@@ -194,7 +194,7 @@
\sa HbEditorInterface
*/
-HbUrlFilter* HbUrlFilter::instance()
+HbUrlFilter *HbUrlFilter::instance()
{
static HbUrlFilter myInstance;
return &myInstance;
@@ -233,7 +233,7 @@
\sa HbEditorInterface
*/
-HbEmailAddressFilter* HbEmailAddressFilter::instance()
+HbEmailAddressFilter *HbEmailAddressFilter::instance()
{
static HbEmailAddressFilter myInstance;
return &myInstance;
@@ -255,10 +255,10 @@
if ((character >= 'a' && character <= 'z') ||
(character >= 'A' && character <= 'Z') ||
(character >= '0' && character <= '9')) {
- return true;
+ return true;
}
- const QString others(".@,;?'-_&/~*+=");
+ const QString others(".@,;?'-_&/~*+=");
for (int i = 0; i < others.size(); i++) {
if (others[i] == character) {
return true;
@@ -283,7 +283,7 @@
/*!
Returns the singleton instance.
*/
-HbInputLowerCaseFilter* HbInputLowerCaseFilter::instance()
+HbInputLowerCaseFilter *HbInputLowerCaseFilter::instance()
{
static HbInputLowerCaseFilter theInstance;
return &theInstance;
@@ -317,7 +317,7 @@
/*!
Returns the singleton instance.
*/
-HbInputUpperCaseFilter* HbInputUpperCaseFilter::instance()
+HbInputUpperCaseFilter *HbInputUpperCaseFilter::instance()
{
static HbInputUpperCaseFilter theInstance;
return &theInstance;
--- a/src/hbcore/inputfw/hbinputstandardfilters.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputstandardfilters.h Wed Jun 23 18:33:25 2010 +0300
@@ -34,7 +34,7 @@
class HB_CORE_EXPORT HbPhoneNumberFilter : public HbInputFilter
{
public:
- static HbPhoneNumberFilter* instance();
+ static HbPhoneNumberFilter *instance();
virtual ~HbPhoneNumberFilter();
bool filter(QChar character);
@@ -51,12 +51,12 @@
class HB_CORE_EXPORT HbFormattedNumbersFilter : public HbInputFilter
{
public:
- static HbFormattedNumbersFilter* instance();
+ static HbFormattedNumbersFilter *instance();
virtual ~HbFormattedNumbersFilter();
bool filter(QChar character);
private:
- HbFormattedNumbersFilter();
+ HbFormattedNumbersFilter();
private:
Q_DISABLE_COPY(HbFormattedNumbersFilter)
@@ -68,12 +68,12 @@
class HB_CORE_EXPORT HbDigitsOnlyFilter : public HbInputFilter
{
public:
- static HbDigitsOnlyFilter* instance();
+ static HbDigitsOnlyFilter *instance();
virtual ~HbDigitsOnlyFilter();
bool filter(QChar character);
private:
- HbDigitsOnlyFilter();
+ HbDigitsOnlyFilter();
private:
Q_DISABLE_COPY(HbDigitsOnlyFilter)
@@ -84,13 +84,13 @@
//
class HB_CORE_EXPORT HbUrlFilter : public HbInputFilter
{
-public:
- static HbUrlFilter* instance();
+public:
+ static HbUrlFilter *instance();
virtual ~HbUrlFilter();
bool filter(QChar character);
private:
- HbUrlFilter();
+ HbUrlFilter();
private:
Q_DISABLE_COPY(HbUrlFilter)
@@ -102,8 +102,8 @@
//
class HB_CORE_EXPORT HbEmailAddressFilter : public HbInputFilter
{
-public:
- static HbEmailAddressFilter* instance();
+public:
+ static HbEmailAddressFilter *instance();
virtual ~HbEmailAddressFilter();
bool filter(QChar character);
@@ -120,7 +120,7 @@
class HB_CORE_EXPORT HbInputLowerCaseFilter : public HbInputFilter
{
public:
- static HbInputLowerCaseFilter* instance();
+ static HbInputLowerCaseFilter *instance();
virtual ~HbInputLowerCaseFilter() {}
bool filter(QChar character);
@@ -137,7 +137,7 @@
class HB_CORE_EXPORT HbInputUpperCaseFilter : public HbInputFilter
{
public:
- static HbInputUpperCaseFilter* instance();
+ static HbInputUpperCaseFilter *instance();
virtual ~HbInputUpperCaseFilter() {}
bool filter(QChar character);
--- a/src/hbcore/inputfw/hbinputstate.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputstate.h Wed Jun 23 18:33:25 2010 +0300
@@ -36,7 +36,7 @@
This class describes the state of the input framework.
Active input method is notified every time the state changes.
-If the active input method cannot handle new state, the framework will find
+If the active input method cannot handle new state, the framework will find
suitable handler for it. The input state is a combination of input mode, text case,
keyboard type and language.
@@ -61,19 +61,19 @@
mLanguage(language)
{}
- void operator=(const HbInputState& other) {
+ void operator=(const HbInputState &other) {
mModeType = other.mModeType;
mTextCase = other.mTextCase;
mKeyboardType = other.mKeyboardType;
mLanguage = other.mLanguage;
}
- bool operator==(const HbInputState& other) {
+ bool operator==(const HbInputState &other) const {
if (mModeType == other.mModeType
&& mTextCase == other.mTextCase
&& mKeyboardType == other.mKeyboardType
&& mLanguage == other.mLanguage) {
- return true;
+ return true;
}
return false;
}
@@ -83,24 +83,24 @@
states being compared has undefined language value, it will match to any language.
If both language values are defined, then they are compared directly.
*/
- bool isMatch(const HbInputState& other) {
+ bool isMatch(const HbInputState &other) const {
if (mModeType == other.mModeType
&& mTextCase == other.mTextCase
&& mKeyboardType == other.mKeyboardType
&& (mLanguage == other.mLanguage ||
mLanguage.undefined() || // Undefined matches to anything.
- other.mLanguage.undefined())) {
- return true;
+ other.mLanguage.undefined())) {
+ return true;
}
return false;
}
- bool operator!=(const HbInputState& other) {
+ bool operator!=(const HbInputState &other) const {
if (mModeType != other.mModeType
|| mTextCase != other.mTextCase
|| mKeyboardType != other.mKeyboardType
|| mLanguage != other.mLanguage) {
- return true;
+ return true;
}
return false;
}
@@ -108,42 +108,58 @@
/*!
Returns input mode.
*/
- HbInputModeType inputMode() const { return mModeType; }
+ HbInputModeType inputMode() const {
+ return mModeType;
+ }
/*!
Sets input mode.
*/
- void setInputMode(HbInputModeType newMode) { mModeType = newMode; }
+ void setInputMode(HbInputModeType newMode) {
+ mModeType = newMode;
+ }
/*!
Returns text case.
*/
- HbTextCase textCase() const { return mTextCase; }
+ HbTextCase textCase() const {
+ return mTextCase;
+ }
/*!
Sets text case.
*/
- void setTextCase(HbTextCase newCase) { mTextCase = newCase; }
+ void setTextCase(HbTextCase newCase) {
+ mTextCase = newCase;
+ }
/*!
Returns keyboard type.
*/
- HbKeyboardType keyboard() const { return mKeyboardType; }
+ HbKeyboardType keyboard() const {
+ return mKeyboardType;
+ }
/*!
Sets keyboard type.
*/
- void setKeyboard(HbKeyboardType newKeyboard) { mKeyboardType = newKeyboard; }
+ void setKeyboard(HbKeyboardType newKeyboard) {
+ mKeyboardType = newKeyboard;
+ }
/*!
Returns language.
*/
- HbInputLanguage language() const { return HbInputLanguage(mLanguage); }
+ HbInputLanguage language() const {
+ return HbInputLanguage(mLanguage);
+ }
/*!
- Sets language.
+ Sets language.
*/
- void setLanguage(const HbInputLanguage &newLanguage) { mLanguage = newLanguage; }
+ void setLanguage(const HbInputLanguage &newLanguage) {
+ mLanguage = newLanguage;
+ }
private:
HbInputModeType mModeType;
--- a/src/hbcore/inputfw/hbinputuserdictionary.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputuserdictionary.h Wed Jun 23 18:33:25 2010 +0300
@@ -45,13 +45,13 @@
virtual ~HbUserDictionary() {}
virtual int id() const = 0;
- virtual bool addWord(const QString& word, HbPredictionCallback* callback = 0) = 0;
- virtual bool addWords(const QStringList& wordList) = 0;
- virtual bool removeWord(const QString& word) = 0;
+ virtual bool addWord(const QString &word, HbPredictionCallback *callback = 0) = 0;
+ virtual bool addWords(const QStringList &wordList) = 0;
+ virtual bool removeWord(const QString &word) = 0;
virtual int numberOfWords() const = 0;
virtual QStringList listWords() = 0;
virtual void clear() = 0;
- virtual HbPredictionBase* hostEngine() const = 0;
+ virtual HbPredictionBase *hostEngine() const = 0;
};
#endif // HB_INPUT_USER_DICTIONARY_H
--- a/src/hbcore/inputfw/hbinpututils.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinpututils.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,8 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinpututils.h"
+
#include <QObject>
#include <QLocale>
#include <QDir>
@@ -40,7 +42,6 @@
#include "hbinputlanguagedatabase.h"
#include "hbinputmodecache_p.h"
#include "hbinputlanguage.h"
-#include "hbinpututils.h"
#define HB_DIGIT_ARABIC_INDIC_START_VALUE 0x0660
#define HB_DIGIT_EASTERN_ARABIC_START_VALUE 0x06F0
@@ -50,7 +51,7 @@
\class HbInputUtils
\brief A collection input related utility methods.
-This class contains a collection of static input related utility methods that do not
+This class contains a collection of static input related utility methods that do not
naturally belong to any other scope. There are convenience methods for testing
attributes of keyboard and input mode types, instantiating plugins etc.
@@ -60,17 +61,13 @@
/*!
Finds the fist number character bound to key using given mapping data.
-@param keyboardType Type of the keyboard
-@param key Key code where to look for number character
-@param keymapData Pointer to keymap data where to look
-@param digitType Type of digit if not latin
*/
-QChar HbInputUtils::findFirstNumberCharacterBoundToKey(const HbMappedKey* key,
- const HbInputLanguage language,
- const HbInputDigitType digitType)
+QChar HbInputUtils::findFirstNumberCharacterBoundToKey(const HbMappedKey *key,
+ const HbInputLanguage language,
+ const HbInputDigitType digitType)
{
Q_UNUSED(language);
-
+
if (key) {
QString chars = key->characters(HbModifierNone);
if (digitType == HbDigitTypeLatin) {
@@ -89,14 +86,14 @@
for (int i = 0; i < chars.length(); i++) {
if (chars.at(i) >= '0' && chars.at(i) <= '9') {
return HB_DIGIT_ARABIC_INDIC_START_VALUE +
- (chars.at(i).unicode() - '0');
+ (chars.at(i).unicode() - '0');
}
}
} else if (digitType == HbDigitTypeEasternArabic) {
for (int i = 0; i < chars.length(); i++) {
if (chars.at(i) >= '0' && chars.at(i) <= '9') {
return HB_DIGIT_EASTERN_ARABIC_START_VALUE +
- (chars.at(i).unicode() - '0');
+ (chars.at(i).unicode() - '0');
}
}
}
@@ -110,7 +107,7 @@
For example Chinese and Japanese modes do not have text case.
*/
bool HbInputUtils::isCaseSensitiveMode(HbInputModeType inputMode)
-{
+{
if (isChineseInputMode(inputMode)) {
return false;
}
@@ -125,7 +122,7 @@
\sa languageDatabasePluginInstance
*/
-void HbInputUtils::listAvailableLanguageDatabasePlugins(QStringList& result, const QString& subfolder)
+void HbInputUtils::listAvailableLanguageDatabasePlugins(QStringList &result, const QString &subfolder)
{
QString path(HbInputSettingProxy::languageDatabasePath());
path += QDir::separator();
@@ -143,14 +140,14 @@
/*!
Creates an instance of given language database plugin, if valid.
*/
-HbLanguageDatabaseInterface* HbInputUtils::languageDatabasePluginInstance(const QString& pluginFileName, const QString& subfolder)
+HbLanguageDatabaseInterface *HbInputUtils::languageDatabasePluginInstance(const QString &pluginFileName, const QString &subfolder)
{
if (!QLibrary::isLibrary(pluginFileName)) {
qDebug("HbInputUtils::languageDatabasePluginInstance: Not a library!");
return NULL;
}
- HbLanguageDatabaseInterface* res = NULL;
+ HbLanguageDatabaseInterface *res = NULL;
QString fullName(HbInputSettingProxy::languageDatabasePath());
fullName += QDir::separator();
@@ -161,10 +158,10 @@
fullName += pluginFileName;
QPluginLoader loader(fullName);
- QObject* plugin = loader.instance();
+ QObject *plugin = loader.instance();
if (plugin) {
- res = qobject_cast<HbLanguageDatabaseInterface*>(plugin);
+ res = qobject_cast<HbLanguageDatabaseInterface *>(plugin);
} else {
qDebug("HbInputUtils::languageDatabasePluginInstance: Unable to instantiate plugin");
}
@@ -185,7 +182,7 @@
It creates QGraphicsScene, adds given widget there and creates a view to the scene
inside returned QWidget. This is utility method is mainly for internal use.
*/
-QWidget* HbInputUtils::createWrapperWidget(QGraphicsWidget* graphicsWidget)
+QWidget *HbInputUtils::createWrapperWidget(QGraphicsWidget *graphicsWidget)
{
QWidget *ret = 0;
@@ -207,10 +204,10 @@
}
/*!
-A convinience method that wraps given widget inside QGraphicsProxyWidget
+A convenience method that wraps given widget inside QGraphicsProxyWidget
and returns it. This is utility method is mainly for internal use.
*/
-QGraphicsWidget* HbInputUtils::createGraphicsProxyWidget(QWidget* widget)
+QGraphicsWidget *HbInputUtils::createGraphicsProxyWidget(QWidget *widget)
{
QGraphicsProxyWidget *proxy = 0;
@@ -232,19 +229,19 @@
HbInputDigitType digitType = HbDigitTypeNone;
switch (language.language()) {
- case QLocale::Arabic:
- digitType = HbDigitTypeArabicIndic;
- break;
- case QLocale::Persian:
- case QLocale::Urdu:
- digitType = HbDigitTypeEasternArabic;
- break;
- case QLocale::Hindi:
- digitType = HbDigitTypeDevanagari;
- break;
- default:
- digitType = HbDigitTypeLatin;
- break;
+ case QLocale::Arabic:
+ digitType = HbDigitTypeArabicIndic;
+ break;
+ case QLocale::Persian:
+ case QLocale::Urdu:
+ digitType = HbDigitTypeEasternArabic;
+ break;
+ case QLocale::Hindi:
+ digitType = HbDigitTypeDevanagari;
+ break;
+ default:
+ digitType = HbDigitTypeLatin;
+ break;
}
return digitType;
}
@@ -255,7 +252,7 @@
if widget does not have the proxy widget then it returns the proxy widget of its window.
otherwise returns 0.
*/
-QGraphicsProxyWidget* HbInputUtils::graphicsProxyWidget(const QWidget* w)
+QGraphicsProxyWidget *HbInputUtils::graphicsProxyWidget(const QWidget *w)
{
QGraphicsProxyWidget *pw = w ? w->graphicsProxyWidget() : 0;
if (w && !pw) {
--- a/src/hbcore/inputfw/hbinpututils.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinpututils.h Wed Jun 23 18:33:25 2010 +0300
@@ -38,8 +38,7 @@
class QGraphicsWidget;
class QGraphicsProxyWidget;
-struct HbInputMethodList
-{
+struct HbInputMethodList {
QStringList dllName;
QStringList key;
};
@@ -51,19 +50,19 @@
static inline bool isQwertyKeyboard(HbKeyboardType keyboardType);
static inline bool isTouchKeyboard(HbKeyboardType keyboardType);
static bool isCaseSensitiveMode(HbInputModeType inputMode);
- static QChar findFirstNumberCharacterBoundToKey(const HbMappedKey* key,
- const HbInputLanguage language,
- const HbInputDigitType digitType = HbDigitTypeLatin);
+ static QChar findFirstNumberCharacterBoundToKey(const HbMappedKey *key,
+ const HbInputLanguage language,
+ const HbInputDigitType digitType = HbDigitTypeLatin);
- static void listAvailableLanguageDatabasePlugins(QStringList& result, const QString& subfolder);
- static HbLanguageDatabaseInterface* languageDatabasePluginInstance(const QString& pluginFileName, const QString& subfolder);
+ static void listAvailableLanguageDatabasePlugins(QStringList &result, const QString &subfolder);
+ static HbLanguageDatabaseInterface *languageDatabasePluginInstance(const QString &pluginFileName, const QString &subfolder);
static void listSupportedInputLanguages(QList<HbInputLanguage>& results);
- static QWidget* createWrapperWidget(QGraphicsWidget* graphicsWidget);
- static QGraphicsWidget* createGraphicsProxyWidget(QWidget* widget);
+ static QWidget *createWrapperWidget(QGraphicsWidget *graphicsWidget);
+ static QGraphicsWidget *createGraphicsProxyWidget(QWidget *widget);
static HbInputDigitType inputDigitType(HbInputLanguage language);
- static QGraphicsProxyWidget* graphicsProxyWidget(const QWidget* w);
+ static QGraphicsProxyWidget *graphicsProxyWidget(const QWidget *w);
};
/*!
@@ -87,7 +86,7 @@
*/
inline bool HbInputUtils::isTouchKeyboard(HbKeyboardType keyboardType)
{
- return (keyboardType & HbTouchInputMask) != 0;
+ return (keyboardType & HbTouchInputMask) != 0;
}
#endif // HB_INPUT_UTILS_H
--- a/src/hbcore/inputfw/hbinputvirtualkeyboard.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputvirtualkeyboard.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -36,7 +36,7 @@
class will fill and layout the keyboard contents.
The virtual keyboard host calls aboutToOpen() method when it is about to open the keyboard
-and aboutToClose() when it is about to close it. Similarily, it calls keyboardOpened()
+and aboutToClose() when it is about to close it. Similarly, it calls keyboardOpened()
and keyboardClosed() methods when open and close operations have been completed.
Every time the host runs keyboard related animations, it calls keyboardAnimationFrame()
--- a/src/hbcore/inputfw/hbinputvirtualkeyboard.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputvirtualkeyboard.h Wed Jun 23 18:33:25 2010 +0300
@@ -39,7 +39,7 @@
public:
/*!
Specifies known virtual keyboard animation types.
- */
+ */
enum HbVkbAnimationType {
HbVkbAnimOpen,
HbVkbAnimClose
@@ -47,9 +47,11 @@
public:
virtual ~HbVirtualKeyboard() {}
- virtual HbKeyboardType keyboardType() const { return HbKeyboardNone; }
- virtual QWidget* asWidget() = 0;
- virtual QGraphicsWidget* asGraphicsWidget() = 0;
+ virtual HbKeyboardType keyboardType() const {
+ return HbKeyboardNone;
+ }
+ virtual QWidget *asWidget() = 0;
+ virtual QGraphicsWidget *asGraphicsWidget() = 0;
virtual QSizeF preferredKeyboardSize() = 0;
virtual QSizeF minimizedKeyboardSize() = 0;
--- a/src/hbcore/inputfw/hbinputvkbhost.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputvkbhost.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,9 +22,10 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputvkbhost.h"
+
#include <QVariant>
-#include "hbinputvkbhost.h"
#include "hbinputmethod.h"
const char HbVkbHostPropertyName[] = "HbVkbHost";
@@ -47,7 +48,7 @@
developer doesn't need to care about that.
There can be several vkb hosts in the system because in some situations the keyboard
-needs to behave differently than in others.
+needs to behave differently than in others.
The input framework finds active vkb host by traversing editor widget's parent chain
to see if there is a host attached to editor widget or any of its parents. If
@@ -61,7 +62,7 @@
*/
/*!
-\fn virtual void HbVkbHost::openKeypad(HbVirtualKeyboard *vkb, bool animationAllowed = true)
+\fn virtual void HbVkbHost::openKeypad(HbVirtualKeyboard *vkb, HbInputMethod *owner, bool animationAllowed = true)
Opens given virtual keyboard. If animation is used, emits signal
keypadOpened after animation is completed.
*/
@@ -78,9 +79,9 @@
/*!
\fn virtual QSizeF HbVkbHost::keyboardArea() const
-Returns the size of a rectangular area of the screen where virtual keyboard will be displayed. If
+Returns the size of a rectangular area of the screen where virtual keyboard will be displayed. If
virtual keyboard's preferredKeyboardSize method returns larger area than returned by this method,
-the vkb host will shrink keyboard to fit into this rectangle.
+the vkb host will shrink keyboard to fit into this rectangle.
*/
/*!
@@ -115,7 +116,7 @@
/*!
Attaches given host to given object. Deletes previously attached host.
*/
-void HbVkbHost::attachHost(HbVkbHost* host, QObject* object)
+void HbVkbHost::attachHost(HbVkbHost *host, QObject *object)
{
if (object) {
delete getVkbHost(object); // delete previous host.
@@ -128,7 +129,7 @@
/*!
Removes (possible) vkb host from given object.
*/
-void HbVkbHost::detachHost(QObject* object)
+void HbVkbHost::detachHost(QObject *object)
{
if (object) {
QObject *hostObject = 0;
@@ -146,8 +147,8 @@
if (object) {
QVariant variant = object->property(HbVkbHostPropertyName);
if (variant.isValid()) {
- QObject *hostObject = variant.value<QObject*>();
- HbVkbHost *host = static_cast<HbVkbHost*>(hostObject);
+ QObject *hostObject = variant.value<QObject *>();
+ HbVkbHost *host = static_cast<HbVkbHost *>(hostObject);
return host;
}
}
@@ -156,7 +157,7 @@
}
/*!
-Returns active virtual keyboard host if there is one currently available.
+Returns active virtual keyboard host if there is one currently available.
*/
HbVkbHost *HbVkbHost::activeVkbHost()
{
--- a/src/hbcore/inputfw/hbinputvkbhost.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputvkbhost.h Wed Jun 23 18:33:25 2010 +0300
@@ -43,29 +43,29 @@
Q_OBJECT
public:
- /*!
- Enumerates different keypad states.
- */
- enum HbVkbStatus {
+ /*!
+ Enumerates different keypad states.
+ */
+ enum HbVkbStatus {
HbVkbStatusClosed,
HbVkbStatusMinimized,
HbVkbStatusOpened,
- };
+ };
public:
virtual ~HbVkbHost() {}
- virtual void openKeypad(HbVirtualKeyboard *vkb = 0, HbInputMethod* owner = 0, bool animationAllowed = true) = 0;
- virtual void openMinimizedKeypad(HbVirtualKeyboard *vkb, HbInputMethod* owner) = 0;
+ virtual void openKeypad(HbVirtualKeyboard *vkb = 0, HbInputMethod *owner = 0, bool animationAllowed = true) = 0;
+ virtual void openMinimizedKeypad(HbVirtualKeyboard *vkb, HbInputMethod *owner) = 0;
virtual void closeKeypad(bool animationAllowed = true) = 0;
virtual void minimizeKeypad(bool animationAllowed = true) = 0;
- virtual HbVkbStatus keypadStatus() const = 0;
+ virtual HbVkbStatus keypadStatus() const = 0;
virtual QSizeF keyboardArea() const = 0;
- virtual HbVirtualKeyboard* activeKeypad() const = 0;
+ virtual HbVirtualKeyboard *activeKeypad() const = 0;
virtual QRectF applicationArea() const = 0;
virtual HbVkbStatus keypadStatusBeforeOrientationChange() const = 0;
- static void attachHost(HbVkbHost* host, QObject* object);
- static void detachHost(QObject* object);
+ static void attachHost(HbVkbHost *host, QObject *object);
+ static void detachHost(QObject *object);
static HbVkbHost *getVkbHost(QObject *object);
static HbVkbHost *activeVkbHost();
--- a/src/hbcore/inputfw/hbinputvkbhostbridge.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputvkbhostbridge.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,11 +22,11 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputvkbhostbridge.h"
+
#include <QVariant>
#include <QPointer>
-#include "hbinputvkbhostbridge.h"
-
/*!
\proto
\class HbVkbHostBridge
@@ -42,7 +42,7 @@
Note that there is active host only when editor widget is focused.
The bridge virtual keyboard host also has has an important internal role in synchronising state transitions between several
-active virtual keyboard hosts.
+active virtual keyboard hosts.
\sa HbVkbHost
*/
@@ -75,7 +75,7 @@
/*!
\reimp
*/
-void HbVkbHostBridge::openKeypad(HbVirtualKeyboard *vkb, HbInputMethod* owner, bool animationAllowed)
+void HbVkbHostBridge::openKeypad(HbVirtualKeyboard *vkb, HbInputMethod *owner, bool animationAllowed)
{
Q_D(HbVkbHostBridge);
if (d->mActiveHost) {
@@ -86,7 +86,7 @@
/*!
\reimp
*/
-void HbVkbHostBridge::openMinimizedKeypad(HbVirtualKeyboard *vkb, HbInputMethod* owner)
+void HbVkbHostBridge::openMinimizedKeypad(HbVirtualKeyboard *vkb, HbInputMethod *owner)
{
Q_D(HbVkbHostBridge);
if (d->mActiveHost) {
@@ -132,7 +132,7 @@
/*!
\reimp
-*/
+*/
QSizeF HbVkbHostBridge::keyboardArea() const
{
Q_D(const HbVkbHostBridge);
@@ -146,7 +146,7 @@
/*!
\reimp
*/
-HbVirtualKeyboard* HbVkbHostBridge::activeKeypad() const
+HbVirtualKeyboard *HbVkbHostBridge::activeKeypad() const
{
Q_D(const HbVkbHostBridge);
if (d->mActiveHost) {
@@ -203,13 +203,13 @@
{
Q_D(HbVkbHostBridge);
- if (d->mActiveHost && d->mActiveHost->stateTransitionOngoing()) {
+ if (d->mActiveHost && d->mActiveHost->stateTransitionOngoing()) {
return false;
}
if (d->mActiveHost != host) {
if (d->mActiveHost) {
- // Closing the previous vkb hosts keypad so that if necessary can be launched again for that same vkb host.
+ // Closing the previous vkb hosts keypad so that if necessary can be launched again for that same vkb host.
d->mActiveHost->closeKeypad(false);
disconnect(d->mActiveHost, SIGNAL(aboutToOpen()), this, SIGNAL(aboutToOpen()));
disconnect(d->mActiveHost, SIGNAL(aboutToClose()), this, SIGNAL(aboutToClose()));
@@ -217,7 +217,7 @@
disconnect(d->mActiveHost, SIGNAL(keypadClosed()), this, SIGNAL(keypadClosed()));
disconnect(d->mActiveHost, SIGNAL(keypadOpened()), this, SIGNAL(stateTransitionCompleted()));
disconnect(d->mActiveHost, SIGNAL(keypadClosed()), this, SIGNAL(stateTransitionCompleted()));
- }
+ }
d->mActiveHost = host;
if (d->mActiveHost) {
--- a/src/hbcore/inputfw/hbinputvkbhostbridge.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/inputfw/hbinputvkbhostbridge.h Wed Jun 23 18:33:25 2010 +0300
@@ -38,13 +38,13 @@
static HbVkbHostBridge *instance();
~HbVkbHostBridge();
- void openKeypad(HbVirtualKeyboard *vkb, HbInputMethod* owner, bool animationAllowed);
- void openMinimizedKeypad(HbVirtualKeyboard *vkb, HbInputMethod* owner);
+ void openKeypad(HbVirtualKeyboard *vkb, HbInputMethod *owner, bool animationAllowed);
+ void openMinimizedKeypad(HbVirtualKeyboard *vkb, HbInputMethod *owner);
void closeKeypad(bool animationAllowed);
void minimizeKeypad(bool animationAllowed);
HbVkbStatus keypadStatus() const;
- QSizeF keyboardArea() const;
- HbVirtualKeyboard* activeKeypad() const;
+ QSizeF keyboardArea() const;
+ HbVirtualKeyboard *activeKeypad() const;
QRectF applicationArea() const;
HbVkbStatus keypadStatusBeforeOrientationChange() const;
--- a/src/hbcore/layouts/hbanchor_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/layouts/hbanchor_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -43,8 +43,10 @@
QGraphicsLayoutItem *mStartItem;
Hb::Edge mStartEdge;
+ QString mStartId;
QGraphicsLayoutItem *mEndItem;
Hb::Edge mEndEdge;
+ QString mEndId;
qreal mValue;
};
--- a/src/hbcore/layouts/hbanchorlayout.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/layouts/hbanchorlayout.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -29,64 +29,76 @@
#include "hbanchorlayoutengine_p.h"
#include <QLayout>
+#include <QDebug>
#include "hblayoututils_p.h"
+
//Uncomment next define in order to get more debug prints.
//Similar define exists also in the engine side.
//#define HBANCHORLAYOUT_DEBUG
-#include <QDebug>
+#ifdef HBANCHORLAYOUT_DEBUG
+#ifndef Q_WS_S60
+#include "hbspaceritem_p.h"
+#endif
+#endif
/*!
- @stable
- @hbcore
\class HbAnchorLayout
- \brief HbAnchorLayout manages geometries of its child items with anchors that
+ \brief HbAnchorLayout manages geometries of its child items with anchors
that connect the layout items with each other.
- The anchors have a start edge, an end edge and a value. The start and
- end edges are defined by (layout item, edge) pairs. See setAnchor() for
- more details.
+ It also allows layout items to be missing and can fix anchor attachments.
+ Here are some simple rules how anchor fixation can be created (the example
+ is only for horizontal direction - the same needs to be done for portrait as well).
- If anchors set allow ambiguos positioning of items, then layout tries to set items size as
+ If anchors set allow ambiguos positioning of items, then layout tries to set items size as
close to preferred as possible.
- Example code:
- \snippet{anchorlayoutsample.cpp,1}
+ \image html hbmeshlayout1.png
+
+ From the image above, we have decided that the green node is always present. This
+ means that all the other nodes in the horizontal graph can be optional.
+
+ \image html hbmeshlayout2.png
+
+ Then, we create the anchors starting from the non-optional node and point towards
+ the edges of the layout. The mesh layout definition in the WidgetML would look like:
+
+ \code
- The picture below illustrates the anchors defined by the above example code.
+ <meshitem src="green_item" srcEdge="LEFT" dst="blue_item" dstEdge="RIGHT" />
+ <meshitem src="blue_item" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="green_item" srcEdge="RIGHT" dst="red_item" dstEdge="LEFT" />
+ <meshitem src="red_item" srcEdge="RIGHT" dst="yellow_item" dstEdge="LEFT" />
+ <meshitem src="yellow_item" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+
+ \endcode
- \image html hbanchorlayout.png
+ As mentioned, the green node needs be present always. In practice, this means that the
+ parent widget, which owns this anchor layout, needs to have a child widget with item
+ name "green_item". \c HbStyle::setItemName for more details.
+
+ If an optional node is missing, the anchors pointing to the node are
+ changed to point to the node after (=towards the parent layout) the missing one - this
+ is called "fixing the mesh".
+
+ \image html hbmeshlayout3.png
+
+ In the picture above, the blue and yellow items are missing. The anchor is fixed by removing
+ the anchor definitions starting from the missing nodes.
+
+ \stable
*/
/*!
- \enum Hb::Edge
+ \enum HbAnchorLayout::Edge
This enum defines the edges of a layout item.
*/
-/*!
- \var HbAnchorLayout::Left
- Left edge.
-*/
-
-/*!
- \var HbAnchorLayout::Top
- Top edge.
-*/
-
-/*!
- \var HbAnchorLayout::Right
- Right edge.
-*/
-
-/*!
- \var HbAnchorLayout::Bottom
- Bottom edge.
-*/
-
-/*!
+/*
\enum EdgeType
\internal
*/
@@ -95,6 +107,112 @@
Vertical
};
+/*
+ Type for mapping from layout item to node identifier.
+ \internal
+*/
+typedef QMap<QGraphicsLayoutItem*, QString> HbMeshItemMap;
+typedef HbMeshItemMap::iterator HbMeshItemMapIterator;
+typedef HbMeshItemMap::const_iterator HbMeshItemMapConstIterator;
+
+
+/*
+ Result of findEndItem.
+*/
+struct HbMeshEndItemResult
+{
+ QGraphicsLayoutItem *mItem;
+ HbAnchorLayout::Edge mEdge;
+ qreal mValue;
+};
+
+class HbAnchorLayoutPrivate
+{
+public:
+ Q_DECLARE_PUBLIC( HbAnchorLayout )
+
+ HbAnchorLayoutPrivate();
+ ~HbAnchorLayoutPrivate();
+
+ void addItemIfNeeded(QGraphicsLayoutItem *item);
+
+ static EdgeType edgeType( HbAnchorLayout::Edge edge );
+ void setItemGeometries();
+ void updateAnchorsAndItems();
+
+ void createEquations( EdgeType type );
+
+ int getEdgeIndex(QGraphicsLayoutItem *item, Hb::Edge edge);
+
+ bool findEndItem(
+ QList<HbMeshEndItemResult> &resultList,
+ const HbAnchor *anchor,
+ QStringList &ids) const;
+ void resolveAnchors();
+ void removeItemIfNeeded( QGraphicsLayoutItem *item );
+
+ bool setAnchor( HbAnchor *anchor );
+
+ void setSizeProp( SizeProperty *v, QGraphicsLayoutItem *item, EdgeType type );
+ GraphVertex *createCenterEdge( EdgeType type, QGraphicsLayoutItem *item, Hb::Edge edge );
+ void defineNextGeometry( const int itemIndexStart, const int itemIndexEnd, const int anchorIndex, const int definedItemIndex );
+
+
+ QSizeF sizeHint(Qt::SizeHint which);
+
+public:
+ HbAnchorLayout * q_ptr;
+
+ bool mEquationsDirty; // if true, we needed to re-create the equations (e.g. when new anchor is set)
+ bool mValid; // result of the calculations. false, if the equations cannot be solved.
+ bool mInvalidateCalled; // set true in ::invalidate() and cleared after geometry is set in ::setGeometry
+ bool mWrongAnchors;
+
+ QList<HbAnchor*> mAllAnchors; // anchors that are set by user
+ QList<HbAnchor*> mResolvedDynamicAnchors; // references to generated anchors
+ QList<HbAnchor*> mResolvedStaticAnchors; // references to anchors, that remains the same after resolving
+ QList<HbAnchor*> mResolvedAnchors; // anchors that are passed to engine
+
+ // mesh layout data
+ QList<QGraphicsLayoutItem*> mItems; // for addItem
+ QList<QGraphicsLayoutItem*> mActualItems; // layouted items
+ HbMeshItemMap mMeshMap;
+
+ QRectF mUsedRect;
+
+ // new items
+
+ QList<GraphEdge*> mEdgesVertical;
+ QList<GraphEdge*> mEdgesHorizontal;
+ QList<GraphVertex*> mVerticesVertical;
+ QList<GraphVertex*> mVerticesHorizontal;
+
+ QList<Expression*> mEquationsHorizontal;
+ QList<Expression*> mEquationsVertical;
+ VariableSet mVariablesHorizontal;
+ VariableSet mVariablesVertical;
+
+ Variable *mLayoutVarH;
+ Variable *mLayoutVarV;
+
+ QVector< bool > mAnchorsVisited;
+ QVector< bool > mGeometryDefinedH;
+ QVector< bool > mGeometryDefinedV;
+ typedef struct {
+ qreal x1, y1, x2, y2;
+ } ItemGeometry;
+
+ QVector< ItemGeometry > mItemsGeometry;
+
+ Solution mSolutionHorizontal;
+ Solution mSolutionVertical;
+
+};
+
+
+
+
+
/*!
\internal
@@ -111,8 +229,10 @@
HbAnchor::HbAnchor(const HbAnchor &anchor)
: mStartItem(anchor.mStartItem),
mStartEdge(anchor.mStartEdge),
+ mStartId(anchor.mStartId),
mEndItem(anchor.mEndItem),
mEndEdge(anchor.mEndEdge),
+ mEndId(anchor.mEndId),
mValue(anchor.mValue)
{
}
@@ -135,8 +255,10 @@
{
if (this != &anchor) {
mStartItem = anchor.mStartItem;
+ mStartId = anchor.mStartId;
mStartEdge = anchor.mStartEdge;
mEndItem = anchor.mEndItem;
+ mEndId = anchor.mEndId;
mEndEdge = anchor.mEndEdge;
mValue = anchor.mValue;
}
@@ -144,85 +266,38 @@
}
-class HbAnchorLayoutPrivate
-{
-public:
- Q_DECLARE_PUBLIC( HbAnchorLayout )
-
- HbAnchorLayoutPrivate();
- ~HbAnchorLayoutPrivate();
-
- void addItemIfNeeded( QGraphicsLayoutItem *item );
- EdgeType edgeType( const Hb::Edge edge ) const;
- HbAnchor* getAnchor( QGraphicsLayoutItem *startItem,
- Hb::Edge startEdge,
- QGraphicsLayoutItem *endItem,
- Hb::Edge endEdge );
-
- void setItemGeometries();
-
- void createEquations( EdgeType type );
- void setSizeProp( SizeProperty *v, QGraphicsLayoutItem *item, EdgeType type );
- GraphVertex *createCenterEdge( EdgeType type, QGraphicsLayoutItem *item, Hb::Edge edge );
- void defineNextGeometry( const int itemIndexStart, const int itemIndexEnd,
- const int anchorIndex, const int definedItemIndex );
-
- QSizeF sizeHint( Qt::SizeHint which );
-
-public:
- HbAnchorLayout * q_ptr;
- QList<QGraphicsLayoutItem*> mItems;
- QList<HbAnchor*> mAnchors;
- bool mEquationsDirty; // if true, we needed to re-create the equations (e.g. when new anchor is set)
- bool mValid; // result of the calculations. false, if the equations cannot be solved.
- bool mWrongAnchors; // need to recreate anchors, these ones are unsolvable with any layout geometry
- bool mInvalidateCalled; // set true in ::invalidate() and cleared after geometry is set in ::setGeometry
- QRectF mUsedRect;
-
- QList<GraphEdge*> mEdgesVertical;
- QList<GraphEdge*> mEdgesHorizontal;
- QList<GraphVertex*> mVerticesVertical;
- QList<GraphVertex*> mVerticesHorizontal;
-
- QList<Expression*> mEquationsHorizontal;
- QList<Expression*> mEquationsVertical;
- VariableSet mVariablesHorizontal;
- VariableSet mVariablesVertical;
-
- Variable *mLayoutVarH;
- Variable *mLayoutVarV;
-
- QVector<bool> mAnchorsVisited;
- QVector< bool > mGeometryDefinedH;
- QVector< bool > mGeometryDefinedV;
- typedef struct {
- qreal x1, y1, x2, y2;
- } ItemGeometry;
-
- QVector< ItemGeometry > mItemsGeometry;
-
- Solution mSolutionHorizontal;
- Solution mSolutionVertical;
-};
/*!
\internal
*/
-HbAnchorLayoutPrivate::HbAnchorLayoutPrivate() :
- mEquationsDirty( false ), mValid( true ), mWrongAnchors( false ), mInvalidateCalled(false),
- mLayoutVarH( 0 ), mLayoutVarV( 0 )
+QList<HbAnchor*> HbAnchorLayoutDebug::getAnchors( HbAnchorLayout* layout )
+{
+ layout->d_ptr->resolveAnchors();
+ return layout->d_ptr->mResolvedAnchors;
+}
+
+QList<HbAnchor*> HbAnchorLayoutDebug::getOriginalAnchors( HbAnchorLayout* layout )
+{
+ return layout->d_ptr->mAllAnchors;
+}
+
+/*
+ \class HbAnchorLayoutPrivate
+ \internal
+*/
+HbAnchorLayoutPrivate::HbAnchorLayoutPrivate() : mEquationsDirty(false), mValid(true), mInvalidateCalled( false ), mWrongAnchors( false ),
+ mUsedRect( 0, 0, 0, 0 ), mLayoutVarH( 0 ), mLayoutVarV( 0 )
+
{
}
-/*!
+/*
\internal
*/
HbAnchorLayoutPrivate::~HbAnchorLayoutPrivate()
{
- qDeleteAll( mAnchors );
-
qDeleteAll( mEdgesVertical );
qDeleteAll( mEdgesHorizontal );
@@ -231,58 +306,312 @@
qDeleteAll( mEquationsHorizontal );
qDeleteAll( mEquationsVertical );
+
+ qDeleteAll( mAllAnchors );
+ qDeleteAll( mResolvedDynamicAnchors );
}
-/*!
+/*
\internal
*/
-void HbAnchorLayoutPrivate::addItemIfNeeded( QGraphicsLayoutItem *item )
-{
- Q_Q(HbAnchorLayout);
- if ( item != q && !mItems.contains(item) ) {
- HbLayoutUtils::addChildItem(q, item);
-
- mItems.append( item );
- }
-}
-
-/*!
- \internal
-*/
-EdgeType HbAnchorLayoutPrivate::edgeType( const Hb::Edge edge ) const
+EdgeType HbAnchorLayoutPrivate::edgeType( HbAnchorLayout::Edge edge )
{
EdgeType type( Horizontal );
- if ( edge == Hb::TopEdge || edge == Hb::BottomEdge || edge == Hb::CenterVEdge) {
+ if( edge == Hb::TopEdge || edge == Hb::BottomEdge || edge == Hb::CenterVEdge ) {
type = Vertical;
}
return type;
}
-/*!
+#ifdef HBANCHORLAYOUT_DEBUG
+/*
+ Returns string representation of value in \c Edge enumeration.
+ \internal
+*/
+static QString edgeAsText(HbAnchorLayout::Edge edge)
+{
+ QString result;
+ switch (edge) {
+ case Hb::LeftEdge:
+ result = "LEFT";
+ break;
+
+ case Hb::RightEdge:
+ result = "RIGHT";
+ break;
+
+ case Hb::CenterHEdge:
+ result = "CENTERH";
+ break;
+
+ case Hb::TopEdge:
+ result = "TOP";
+ break;
+
+ case Hb::BottomEdge:
+ result = "BOTTOM";
+ break;
+
+ case Hb::CenterVEdge:
+ result = "CENTERV";
+ break;
+
+ default:
+ result = "<UNDEFINED>";
+ break;
+ }
+
+ return result;
+}
+
+static QString itemAsText(QGraphicsLayoutItem* item, QGraphicsLayout *layout)
+{
+ QString result = "<emtpy>";
+ if ( item ) {
+ result = (item == layout) ? "HbAnchorLayout" : "<unknown>";
+ QGraphicsItem *gItem = item->graphicsItem();
+ if (gItem) {
+ if (gItem->isWidget()) {
+ result = static_cast<QGraphicsWidget*>(gItem)->metaObject()->className();
+ }
+#ifndef Q_WS_S60
+ } else {
+ HbSpacerItem *spacer = dynamic_cast<HbSpacerItem *>(item);
+ if ( spacer ) {
+ result = "HbSpacerItem";
+ }
+#endif
+ }
+ }
+ return result;
+}
+
+#endif // HBANCHORLAYOUT_DEBUG
+
+/*
\internal
*/
-HbAnchor* HbAnchorLayoutPrivate::getAnchor(
- QGraphicsLayoutItem *startItem,
- Hb::Edge startEdge,
- QGraphicsLayoutItem *endItem,
- Hb::Edge endEdge )
+void HbAnchorLayoutPrivate::updateAnchorsAndItems()
{
- for ( int i = mAnchors.count()-1 ; i >= 0; i-- ) {
- HbAnchor* anchor = mAnchors.at(i);
- if ( anchor->mStartItem == startItem &&
- anchor->mStartEdge == startEdge &&
- anchor->mEndItem == endItem &&
- anchor->mEndEdge == endEdge ) {
- return anchor;
+ Q_Q(HbAnchorLayout);
+ resolveAnchors();
+
+#ifdef HBANCHORLAYOUT_DEBUG
+ QGraphicsWidget* w = HbLayoutUtils::parentWidget( q );
+ if ( w ) {
+ qDebug() << "MeshLayout: Mesh anchors for" << w->metaObject()->className();
+ }
+ const QString parentId =
+ mMeshMap.contains(q) ? mMeshMap.value(q) : QString();
+ qDebug() << "-- -- resolved";
+ qDebug() << "-- count: " << mResolvedAnchors.size() << ", parent: " << parentId;
+ foreach (const HbAnchor *item, mResolvedAnchors) {
+ const QString itemTemplate("-- (%1 [%2], %3) - (%4 [%5], %6) = %7");
+ qDebug() <<
+ itemTemplate
+ .arg(item->mStartId)
+ .arg(itemAsText(item->mStartItem, q))
+ .arg(edgeAsText(item->mStartEdge))
+ .arg(item->mEndId)
+ .arg(itemAsText(item->mEndItem, q))
+ .arg(edgeAsText(item->mEndEdge))
+ .arg(item->mValue).toAscii().data();
+ }
+ qDebug() << "-- -- all";
+ qDebug() << "-- count: " << mAllAnchors.size() << ", parent: " << parentId;
+ foreach (const HbAnchor *item, mAllAnchors) {
+ const QString itemTemplate("-- (%1 [%2], %3) - (%4 [%5], %6) = %7");
+ qDebug() <<
+ itemTemplate
+ .arg(item->mStartId)
+ .arg(itemAsText(item->mStartItem, q))
+ .arg(edgeAsText(item->mStartEdge))
+ .arg(item->mEndId)
+ .arg(itemAsText(item->mEndItem, q))
+ .arg(edgeAsText(item->mEndEdge))
+ .arg(item->mValue).toAscii().data();
+ }
+ qDebug() << "-- ";
+#endif // HBANCHORLAYOUT_DEBUG
+
+ // HbAnchorLayout will only touch items that have anchors defined.
+ mActualItems.clear();
+ for (QList<HbAnchor*>::const_iterator it = mResolvedAnchors.constBegin();
+ it != mResolvedAnchors.constEnd();
+ ++it) {
+
+ const HbAnchor* item = *it;
+
+ if (item->mStartItem != q && !mActualItems.contains(item->mStartItem)) {
+ mActualItems.append(item->mStartItem);
+ }
+ if (item->mEndItem != q && !mActualItems.contains(item->mEndItem)) {
+ mActualItems.append(item->mEndItem);
}
}
- return 0;
+
+}
+
+
+void HbAnchorLayoutPrivate::setSizeProp( SizeProperty *v, QGraphicsLayoutItem *item, EdgeType type )
+{
+ if( type == Vertical ) {
+ const QSizePolicy::Policy verticalPolicy = item->sizePolicy().verticalPolicy();
+
+ if ( verticalPolicy & QSizePolicy::ShrinkFlag ) {
+ v->min = item->minimumHeight();
+ } else {
+ v->min = item->preferredHeight();
+ }
+
+ if ( verticalPolicy & (QSizePolicy::GrowFlag | QSizePolicy::ExpandFlag) ) {
+ v->max = item->maximumHeight();
+ } else {
+ v->max = item->preferredHeight();
+ }
+
+ v->pref = qBound( v->min, item->preferredHeight(), v->max );
+
+ v->flags |= (v->min == v->max) ? SizeProperty::FlagFixed : 0;
+ v->flags |= (verticalPolicy & QSizePolicy::ExpandFlag) ? SizeProperty::FlagExpanding : 0;
+
+ if( verticalPolicy & QSizePolicy::IgnoreFlag ) {
+ v->pref = v->min;
+ v->flags |= SizeProperty::FlagExpanding;
+ }
+ } else {
+ const QSizePolicy::Policy horizontalPolicy = item->sizePolicy().horizontalPolicy();
+
+ if ( horizontalPolicy & QSizePolicy::ShrinkFlag ) {
+ v->min = item->minimumWidth();
+ } else {
+ v->min = item->preferredWidth();
+ }
+
+ if ( horizontalPolicy & (QSizePolicy::GrowFlag | QSizePolicy::ExpandFlag) ) {
+ v->max = item->maximumWidth();
+ } else {
+ v->max = item->preferredWidth();
+ }
+
+ v->pref = qBound( v->min, item->preferredWidth(), v->max );
+
+ v->flags |= (v->min == v->max) ? SizeProperty::FlagFixed : 0;
+ v->flags |= (horizontalPolicy & QSizePolicy::ExpandFlag) ? SizeProperty::FlagExpanding : 0;
+
+ if( horizontalPolicy & QSizePolicy::IgnoreFlag ) {
+ v->pref = v->min;
+ v->flags |= SizeProperty::FlagExpanding;
+ }
+ }
}
-void HbAnchorLayoutPrivate::defineNextGeometry(
- const int itemIndexStart,
- const int itemIndexEnd,
- const int anchorIndex,
+
+GraphVertex *HbAnchorLayoutPrivate::createCenterEdge( EdgeType type, QGraphicsLayoutItem *item, Hb::Edge edge )
+{
+ GraphVertex *middle;
+ GraphVertex *start = 0;
+ GraphVertex *end = 0;
+
+ QList<GraphEdge*> *edges = &mEdgesHorizontal;
+ QList<GraphVertex*> *vertices = &mVerticesHorizontal;
+
+ if( type == Vertical ) {
+ if( edge != Hb::CenterVEdge ) {
+ qWarning() << "HbAnchorLayout: something wrong " << __LINE__;
+ return 0;
+ }
+
+ edges = &mEdgesVertical;
+ vertices = &mVerticesVertical;
+
+ for( int j = 0; j < vertices->size(); j++ ) {
+ GraphVertex *current = vertices->at(j);
+ if( current->itemRef == item ) {
+ if( current->itemSide == Hb::TopEdge ) {
+ start = current;
+ } else if( current->itemSide == Hb::BottomEdge ) {
+ end = current;
+ }
+ }
+ }
+ } else {
+ if( edge != Hb::CenterHEdge ) {
+ qWarning() << "HbAnchorLayout: something wrong " << __LINE__;
+ return 0;
+ }
+
+ for( int j = 0; j < vertices->size(); j++ ) {
+ GraphVertex *current = vertices->at(j);
+ if( current->itemRef == item ) {
+ if( current->itemSide == Hb::LeftEdge ) {
+ start = current;
+ } else if( current->itemSide == Hb::RightEdge ) {
+ end = current;
+ }
+ }
+ }
+ }
+
+ if( !( start && end ) ) {
+ qWarning() << "HbAnchorLayout: something wrong " << __LINE__;
+ return 0;
+ }
+
+ GraphEdge *oldEdge = 0;
+
+ for( int i = 0; i < edges->size(); i++ ) {
+ oldEdge = edges->at(i);
+ if( ( oldEdge->ref == item ) && ( oldEdge->startVertex == start ) && ( oldEdge->endVertex == end ) ){
+ break;
+ }
+ }
+
+ if( !oldEdge ) {
+ qWarning() << "HbAnchorLayout: something wrong " << __LINE__;
+ return 0;
+ }
+
+ middle = new GraphVertex();
+ middle->itemRef = ( void* )item;
+ middle->itemSide = edge;
+ middle->special = false;
+
+ GraphEdge *newEdge1 = new GraphEdge();
+ GraphEdge *newEdge2 = new GraphEdge();
+
+ newEdge1->startVertex = start;
+ newEdge1->endVertex = middle;
+ newEdge1->ref = ( void* )item;
+
+ newEdge1->expr->plusExpression( oldEdge->expr );
+ newEdge1->expr->multiply( 0.5 );
+
+
+ newEdge2->startVertex = middle;
+ newEdge2->endVertex = end;
+ newEdge2->ref = ( void* )item;
+ newEdge2->expr->plusExpression( oldEdge->expr );
+ newEdge2->expr->multiply( 0.5 );
+
+
+ middle->edges.append( newEdge1 );
+ start->edges.append( newEdge1 );
+ middle->edges.append( newEdge2 );
+ end->edges.append( newEdge2 );
+
+ edges->append( newEdge1 );
+ edges->append( newEdge2 );
+ vertices->append( middle );
+
+
+ return middle;
+}
+
+void HbAnchorLayoutPrivate::defineNextGeometry(
+ const int itemIndexStart,
+ const int itemIndexEnd,
+ const int anchorIndex,
const int definedItemIndex )
{
ItemGeometry *knownItemGeom, *unKnownItemGeom;
@@ -290,7 +619,7 @@
int sign;
qreal itemSize;
bool isHorizontal;
- HbAnchor *anchor = mAnchors.at( anchorIndex );
+ HbAnchor *anchor = mResolvedAnchors.at( anchorIndex );
qreal leftPoint(0), rightPoint(0), sourcePoint(0), dstPointLeft(0);
mAnchorsVisited[ anchorIndex ] = true;
@@ -310,12 +639,10 @@
if( isHorizontal ) {
mGeometryDefinedH[itemIndexEnd] = true;
- itemSize = mSolutionHorizontal.value(
- mVariablesHorizontal.findVariable( mItems.at(itemIndexEnd) ) );
+ itemSize = mSolutionHorizontal.value( mVariablesHorizontal.findVariable( mActualItems.at(itemIndexEnd) ) );
} else {
mGeometryDefinedV[itemIndexEnd] = true;
- itemSize = mSolutionVertical.value(
- mVariablesVertical.findVariable( mItems.at(itemIndexEnd) ) );
+ itemSize = mSolutionVertical.value( mVariablesVertical.findVariable( mActualItems.at(itemIndexEnd) ) );
}
sign = 1;
@@ -328,12 +655,10 @@
if( isHorizontal ) {
mGeometryDefinedH[itemIndexStart] = true;
- itemSize = mSolutionHorizontal.value(
- mVariablesHorizontal.findVariable( mItems.at(itemIndexStart) ) );
+ itemSize = mSolutionHorizontal.value( mVariablesHorizontal.findVariable( mActualItems.at(itemIndexStart) ) );
} else {
mGeometryDefinedV[itemIndexStart] = true;
- itemSize = mSolutionVertical.value(
- mVariablesVertical.findVariable( mItems.at(itemIndexStart) ) );
+ itemSize = mSolutionVertical.value( mVariablesVertical.findVariable( mActualItems.at(itemIndexStart) ) );
}
sign = -1;
@@ -401,7 +726,8 @@
}
-/*!
+
+/*
\internal
*/
void HbAnchorLayoutPrivate::setItemGeometries()
@@ -409,16 +735,18 @@
Q_Q(HbAnchorLayout);
const QRectF newRect = q->geometry();
- if( mWrongAnchors || ( mItems.isEmpty() ) ) {
+ if( mWrongAnchors || ( mActualItems.isEmpty() ) ) {
return;
}
- if ( (newRect != mUsedRect) || mInvalidateCalled ) {
+ if( (newRect != mUsedRect) || mInvalidateCalled ) {
+ mInvalidateCalled = false;
mUsedRect = newRect;
if ( mEquationsDirty ) {
+ updateAnchorsAndItems();
createEquations( Horizontal );
createEquations( Vertical );
mEquationsDirty = false;
@@ -498,25 +826,27 @@
mGeometryDefinedV[i] = false;
}
- int layoutIndex = mItems.size();
+ int layoutIndex = mActualItems.size();
- mItemsGeometry[ layoutIndex ].x1 = 0;
- mItemsGeometry[ layoutIndex ].x2 = newRect.width();
- mItemsGeometry[ layoutIndex ].y1 = 0;
- mItemsGeometry[ layoutIndex ].y2 = newRect.height();
+ mItemsGeometry[ layoutIndex ].x1 = 0;//newRect.left();
+ mItemsGeometry[ layoutIndex ].x2 = newRect.width();//newRect.right();
+ mItemsGeometry[ layoutIndex ].y1 = 0;//newRect.top();
+ mItemsGeometry[ layoutIndex ].y2 = newRect.height();//newRect.bottom();
+ mGeometryDefinedH[ layoutIndex ] = true;
+ mGeometryDefinedV[ layoutIndex ] = true;
for( int i = 0; i < mAnchorsVisited.size(); i++ ) {
- HbAnchor *anchor = mAnchors.at(i);
+ HbAnchor *anchor = mResolvedAnchors.at(i);
if( ( anchor->mStartItem != q ) && ( anchor->mEndItem != q ) ) {
continue;
}
- int startIndex = mItems.indexOf( anchor->mStartItem ); // returns -1 if not found => this is layout
- int endIndex = mItems.indexOf( anchor->mEndItem );
+ int startIndex = mActualItems.indexOf( anchor->mStartItem ); // returns -1 if not found => this is layout
+ int endIndex = mActualItems.indexOf( anchor->mEndItem );
mAnchorsVisited[i] = true; // Temporary overkill, if both anchors connected to layout. Must be restricted on setAnchor() level
@@ -555,10 +885,10 @@
if( mAnchorsVisited.at(i) ) {
continue;
}
- HbAnchor *anchor = mAnchors.at(i);
+ HbAnchor *anchor = mResolvedAnchors.at(i);
- startIndex = mItems.indexOf( anchor->mStartItem );
- endIndex = mItems.indexOf( anchor->mEndItem );
+ startIndex = mActualItems.indexOf( anchor->mStartItem );
+ endIndex = mActualItems.indexOf( anchor->mEndItem );
#ifdef HBANCHORLAYOUT_DEBUG
qDebug() << "startIndex:" << startIndex << " endIndex" << endIndex;
#endif //HBANCHORLAYOUT_DEBUG
@@ -580,9 +910,16 @@
}
}
+#ifdef HBANCHORLAYOUT_DEBUG
+ QGraphicsWidget* w = HbLayoutUtils::parentWidget( q );
+ if ( w ) {
+ qDebug() << "Items of " << w->metaObject()->className();
+ }
+#endif
+
Qt::LayoutDirection layoutDir = HbLayoutUtils::visualDirection(q);
- for( int i = 0; i < layoutIndex; i++ ) {
+ for( int i = 0; i < mActualItems.size(); i++ ) {
QRectF geom;
ItemGeometry calcGeom = mItemsGeometry.at(i);
if( mGeometryDefinedH.at(i) ) {
@@ -590,197 +927,28 @@
geom.setRight( mUsedRect.left() + calcGeom.x2 );
} else {
geom.setLeft( mUsedRect.left() );
- geom.setRight( mUsedRect.left() + mItems.at(i)->preferredWidth() );
+ geom.setRight( mUsedRect.left() + mActualItems.at(i)->preferredWidth() );
}
if( mGeometryDefinedV.at(i) ) {
geom.setTop( mUsedRect.top() + calcGeom.y1 );
geom.setBottom( mUsedRect.top() + calcGeom.y2 );
} else {
geom.setTop( mUsedRect.top() );
- geom.setBottom( mUsedRect.top() + mItems.at(i)->preferredHeight() );
+ geom.setBottom( mUsedRect.top() + mActualItems.at(i)->preferredHeight() );
}
- HbLayoutUtils::visualRect(layoutDir, geom, newRect);
+ HbLayoutUtils::visualRect( layoutDir, geom, newRect );
#ifdef HBANCHORLAYOUT_DEBUG
qDebug( "Item %d: (%lf, %lf) : (%lf %lf)", i, calcGeom.x1, calcGeom.y1, calcGeom.x2, calcGeom.y2 );
+ // qDebug() << "Item " << i << "(" << ((QGraphicsWidget*)mActualItems.at(i))->metaObject()->className() << ")" << " geom " << geom;
#endif // HBANCHORLAYOUT_DEBUG
-
- mItems.at(i)->setGeometry( geom );
+ mActualItems.at(i)->setGeometry( geom );
}
}
}
}
-void HbAnchorLayoutPrivate::setSizeProp( SizeProperty *v, QGraphicsLayoutItem *item, EdgeType type )
-{
- if( type == Vertical ) {
- const QSizePolicy::Policy verticalPolicy = item->sizePolicy().verticalPolicy();
-
- if ( verticalPolicy & QSizePolicy::ShrinkFlag ) {
- v->min = item->minimumHeight();
- } else {
- v->min = item->preferredHeight();
- }
-
- if ( verticalPolicy & (QSizePolicy::GrowFlag | QSizePolicy::ExpandFlag) ) {
- v->max = item->maximumHeight();
- } else {
- v->max = item->preferredHeight();
- }
-
- v->pref = qBound( v->min, item->preferredHeight(), v->max );
-
- v->flags |= (v->min == v->max) ? SizeProperty::FlagFixed : 0;
- v->flags |= (verticalPolicy & QSizePolicy::ExpandFlag) ? SizeProperty::FlagExpanding : 0;
-
- if( verticalPolicy & QSizePolicy::IgnoreFlag ) {
- v->pref = v->min;
- v->flags |= SizeProperty::FlagExpanding;
- }
- } else {
- const QSizePolicy::Policy horizontalPolicy = item->sizePolicy().horizontalPolicy();
-
- if ( horizontalPolicy & QSizePolicy::ShrinkFlag ) {
- v->min = item->minimumWidth();
- } else {
- v->min = item->preferredWidth();
- }
-
- if ( horizontalPolicy & (QSizePolicy::GrowFlag | QSizePolicy::ExpandFlag) ) {
- v->max = item->maximumWidth();
- } else {
- v->max = item->preferredWidth();
- }
-
- v->pref = qBound( v->min, item->preferredWidth(), v->max );
-
- v->flags |= (v->min == v->max) ? SizeProperty::FlagFixed : 0;
- v->flags |= (horizontalPolicy & QSizePolicy::ExpandFlag) ? SizeProperty::FlagExpanding : 0;
-
- if( horizontalPolicy & QSizePolicy::IgnoreFlag ) {
- v->pref = v->min;
- v->flags |= SizeProperty::FlagExpanding;
- }
- }
-}
-
-
-GraphVertex *HbAnchorLayoutPrivate::createCenterEdge(
- EdgeType type, QGraphicsLayoutItem *item, Hb::Edge edge )
-{
- GraphVertex *middle;
- GraphVertex *start = 0;
- GraphVertex *end = 0;
-
- QList<GraphEdge*> *edges = &mEdgesHorizontal;
- QList<GraphVertex*> *vertices = &mVerticesHorizontal;
-
- if( type == Vertical ) {
- if( edge != Hb::CenterVEdge ) {
-#ifdef HBANCHORLAYOUT_DEBUG
- qDebug() << "something wrong " << __LINE__;
-#endif //HBANCHORLAYOUT_DEBUG
- return 0;
- }
-
- edges = &mEdgesVertical;
- vertices = &mVerticesVertical;
-
- for( int j = 0; j < vertices->size(); j++ ) {
- GraphVertex *current = vertices->at(j);
- if( current->itemRef == item ) {
- if( current->itemSide == Hb::TopEdge ) {
- start = current;
- } else if( current->itemSide == Hb::BottomEdge ) {
- end = current;
- }
- }
- }
- } else {
- if( edge != Hb::CenterHEdge ) {
-#ifdef HBANCHORLAYOUT_DEBUG
- qDebug() << "something wrong " << __LINE__;
-#endif //HBANCHORLAYOUT_DEBUG
- return 0;
- }
-
- for( int j = 0; j < vertices->size(); j++ ) {
- GraphVertex *current = vertices->at(j);
- if( current->itemRef == item ) {
- if( current->itemSide == Hb::LeftEdge ) {
- start = current;
- } else if( current->itemSide == Hb::RightEdge ) {
- end = current;
- }
- }
- }
- }
-
- if( !( start && end ) ) {
-#ifdef HBANCHORLAYOUT_DEBUG
- qDebug() << "something wrong " << __LINE__;
-#endif //HBANCHORLAYOUT_DEBUG
- return 0;
- }
-
- GraphEdge *oldEdge = 0;
-
- for( int i = 0; i < edges->size(); i++ ) {
- oldEdge = edges->at(i);
- if( oldEdge->ref == item ) {
- if( ( oldEdge->startVertex == start ) && ( oldEdge->endVertex == end ) ){
-/* edges->removeOne( oldEdge );
- start->edges.removeOne( oldEdge );
- end->edges.removeOne( oldEdge );*/
- break;
- }
- }
- }
-
- if( !oldEdge ) {
-#ifdef HBANCHORLAYOUT_DEBUG
- qDebug() << "something wrong " << __LINE__;
-#endif //HBANCHORLAYOUT_DEBUG
- return 0;
- }
-
- middle = new GraphVertex();
- middle->itemRef = ( void* )item;
- middle->itemSide = edge;
- middle->special = false;
-
- GraphEdge *newEdge1 = new GraphEdge();
- GraphEdge *newEdge2 = new GraphEdge();
-
- newEdge1->startVertex = start;
- newEdge1->endVertex = middle;
- newEdge1->ref = ( void* )item;
-
- newEdge1->expr->plusExpression( oldEdge->expr );
- newEdge1->expr->multiply( 0.5 );
-
-
- newEdge2->startVertex = middle;
- newEdge2->endVertex = end;
- newEdge2->ref = ( void* )item;
- newEdge2->expr->plusExpression( oldEdge->expr );
- newEdge2->expr->multiply( 0.5 );
-
-
- middle->edges.append( newEdge1 );
- start->edges.append( newEdge1 );
- middle->edges.append( newEdge2 );
- end->edges.append( newEdge2 );
-
- edges->append( newEdge1 );
- edges->append( newEdge2 );
- vertices->append( middle );
-
-
- return middle;
-}
-
/*!
\internal
*/
@@ -845,8 +1013,8 @@
}
- for ( int i = 0; i < mItems.count(); i++ ) {
- QGraphicsLayoutItem *item = mItems.at( i );
+ for ( int i = 0; i < mActualItems.count(); i++ ) {
+ QGraphicsLayoutItem *item = mActualItems.at( i );
itemStart = new GraphVertex();
itemEnd = new GraphVertex();
newEdge = new GraphEdge();
@@ -891,16 +1059,16 @@
v1->sizeProp.flags = SizeProperty::FlagFixed;
- for( int i = 0; i < mAnchors.count(); i++) {
- HbAnchor* anchor = mAnchors.at(i);
+ for( int i = 0; i < mResolvedAnchors.count(); i++) {
+ HbAnchor* anchor = mResolvedAnchors.at(i);
if ( edgeType( anchor->mStartEdge ) == type ) {
itemStart = 0;
itemEnd = 0;
for( int j = 0; j < vertices->size(); j++ ) {
- if( ( vertices->at(j)->itemRef == anchor->mStartItem ) &&
+ if( ( vertices->at(j)->itemRef == anchor->mStartItem ) &&
( vertices->at(j)->itemSide == anchor->mStartEdge ) ) {
itemStart = vertices->at(j);
- } else if( ( vertices->at(j)->itemRef == anchor->mEndItem ) &&
+ } else if( ( vertices->at(j)->itemRef == anchor->mEndItem ) &&
( vertices->at(j)->itemSide == anchor->mEndEdge ) ) {
itemEnd = vertices->at(j);
}
@@ -913,6 +1081,19 @@
itemEnd = createCenterEdge( type, anchor->mEndItem, anchor->mEndEdge );
}
+ if( !itemStart ){
+ qWarning() << "HbAnchorLayout: internal error, line " << __LINE__;
+ mWrongAnchors = true;
+ AnchorLayoutEngine::instance()->cleanUp( layoutStart, layoutMiddle, layoutEnd, edges, vertices, el );
+ return;
+ }
+ if( !itemEnd ) {
+ qWarning() << "HbAnchorLayout: internal error, line " << __LINE__;
+ mWrongAnchors = true;
+ AnchorLayoutEngine::instance()->cleanUp( layoutStart, layoutMiddle, layoutEnd, edges, vertices, el );
+ return;
+ }
+
newEdge = new GraphEdge();
itemStart->edges.append( newEdge );
itemEnd->edges.append( newEdge );
@@ -965,11 +1146,10 @@
if( ! AnchorLayoutEngine::instance()->processItems( edges, vertices, vs, el ) ) {
mWrongAnchors = true;
- AnchorLayoutEngine::instance()->cleanUp(
- layoutStart, layoutMiddle, layoutEnd, edges, vertices, el );
-//#ifdef HBANCHORLAYOUT_DEBUG
- qDebug() << "FAIL line:" << __LINE__;
-//#endif //HBANCHORLAYOUT_DEBUG
+ AnchorLayoutEngine::instance()->cleanUp( layoutStart, layoutMiddle, layoutEnd, edges, vertices, el );
+#ifdef HBANCHORLAYOUT_DEBUG
+ qDebug() << "FAIL! " << __LINE__;
+#endif //HBANCHORLAYOUT_DEBUG
return;
}
@@ -1000,16 +1180,16 @@
layoutVar->sizeProp.pref = 100;
layoutVar->sizeProp.flags = 0;
- AnchorLayoutEngine::instance()->attachToLayout(
+ AnchorLayoutEngine::instance()->attachToLayout(
layoutStart, layoutMiddle, layoutEnd, layoutVar, el );
- AnchorLayoutEngine::instance()->cleanUp(
+ AnchorLayoutEngine::instance()->cleanUp(
layoutStart, layoutMiddle, layoutEnd, edges, vertices, el );
- mAnchorsVisited.resize( mAnchors.size() * sizeof( bool ) );
- mGeometryDefinedH.resize( mItems.size() * sizeof( bool ) );
- mGeometryDefinedV.resize( mItems.size() * sizeof( bool ) );
- mItemsGeometry.resize( ( mItems.size() + 1 ) * sizeof( ItemGeometry ) );
+ mAnchorsVisited.resize( mResolvedAnchors.size() * sizeof( bool ) );
+ mGeometryDefinedH.resize( ( mActualItems.size() + 1 ) * sizeof( bool ) );
+ mGeometryDefinedV.resize( ( mActualItems.size() + 1 ) * sizeof( bool ) );
+ mItemsGeometry.resize( ( mActualItems.size() + 1 ) * sizeof( ItemGeometry ) );
if( type == Vertical ) {
mLayoutVarV = layoutVar;
@@ -1019,15 +1199,231 @@
}
}
+/*
+ Finds new end item for problematic anchor.
-/*!
- \internal
+ Follows the anchor that have the same start edge
+ as the problematic anchor.
+
+ Invariant:
+ \a ids must be the exactly same in return. It is the array
+ which nodes have already been visited - so in order to avoid
+ infinite recursion, don't visit already visited.
+*/
+bool HbAnchorLayoutPrivate::findEndItem(
+ QList<HbMeshEndItemResult> &resultList,
+ const HbAnchor *problem,
+ QStringList &ids) const
+{
+ HbMeshEndItemResult result;
+ bool found = false;
+
+ for (QList<HbAnchor*>::const_iterator it = mAllAnchors.constBegin();
+ it != mAllAnchors.constEnd();
+ ++it) {
+
+ const HbAnchor* currentItem = *it;
+
+ if (!currentItem->mStartId.isNull() &&
+ currentItem->mStartId == problem->mEndId &&
+ currentItem->mStartEdge == problem->mStartEdge &&
+ !ids.contains(currentItem->mStartId)) {
+
+ qreal currentSpacing = currentItem->mValue;
+
+ QGraphicsLayoutItem *item = currentItem->mEndItem;
+
+
+ if (item) {
+ found = true;
+ result.mEdge = currentItem->mEndEdge;
+ result.mItem = item;
+ result.mValue = currentSpacing;
+ resultList.append( result );
+ } else {
+ ids.append(currentItem->mStartId);
+ found |= findEndItem(resultList, currentItem, ids);
+ ids.takeLast();
+ }
+ /*
+ if (found) {
+ // We have found an end item. There can be multiple end items,
+ // but (for now) the first one is selected.
+ return true;
+ }*/
+ }
+ }
+
+ return found;
+}
+
+/*
+ Resolves anchors to be used in anchor layout calculations.
+
+ For each anchor x with start id, start edge, end id, end edge:
+
+ If there is layout items corresponding to both start id and end id,
+ anchor is used automatically.
+ If there is layout item corresponding to start id, then we try to
+ "fix" anchor by looking for a path of anchors (same direction, with spacing defined)
+ from anchor x's end id as starting point to such end id that has layout item.
+ If found, anchor is fixed by replacing end id with found end id.
+
+ So direction of anchors affect this resolution process, but not in the
+ anchor layout calculations.
+
+ \sa findEndItem
*/
-QList<HbAnchor*> HbAnchorLayoutDebug::getAnchors( HbAnchorLayout* layout )
+void HbAnchorLayoutPrivate::resolveAnchors()
+{
+ HbAnchor *item;
+
+ qDeleteAll( mResolvedDynamicAnchors );
+ mResolvedDynamicAnchors.clear();
+ mResolvedStaticAnchors.clear();
+
+ for ( int i = 0; i < mAllAnchors.size(); i++ ) {
+
+ HbAnchor *anchor = mAllAnchors.at(i);
+
+ if( ( anchor->mStartItem ) && ( anchor->mEndItem ) ) {
+ mResolvedStaticAnchors.append( anchor );
+ continue;
+ }
+
+ if (anchor->mStartItem && !anchor->mEndId.isNull()) {
+ QList<HbMeshEndItemResult> resultList;
+
+ QStringList ids;
+ ids.append(anchor->mStartId);
+
+ if (findEndItem(resultList, anchor, ids)) {
+ for( int j = 0; j < resultList.size(); j++ ) {
+ item = new HbAnchor();
+ item->mStartItem = anchor->mStartItem;
+ item->mStartId = anchor->mStartId;
+ item->mStartEdge = anchor->mStartEdge;
+ item->mEndEdge = resultList.at(j).mEdge;
+ item->mEndItem = resultList.at(j).mItem;
+ item->mValue = resultList.at(j).mValue;
+ mResolvedDynamicAnchors.append(item);
+ }
+ }
+ } else {
+ // Nothing needed.
+ }
+ }
+
+ mResolvedAnchors = mResolvedDynamicAnchors + mResolvedStaticAnchors;
+}
+
+bool HbAnchorLayoutPrivate::setAnchor( HbAnchor *anchor )
{
- return layout->d_ptr->mAnchors;
+ // This method is called from HbAnchorLayout::setAnchor.
+
+ if (HbAnchorLayoutPrivate::edgeType(anchor->mStartEdge) !=
+ HbAnchorLayoutPrivate::edgeType(anchor->mEndEdge)) {
+ qWarning() << "HbAnchorLayout::setAnchor : You can't connect different type of edges";
+ return false;
+ }
+
+ if ( ( anchor->mStartId.isNull() && ( anchor->mStartItem == 0 ) ) ||
+ ( anchor->mEndId.isNull() && ( anchor->mEndItem == 0 ) ) ){
+ qWarning() << "HbAnchorLayout::setAnchor : Both ids must be valid";
+ return false;
+ }
+
+ if ( ( anchor->mStartId == anchor->mEndId ) && ( ( anchor->mStartItem == anchor->mEndItem ) ) &&
+ ( anchor->mStartEdge == anchor->mEndEdge ) ) {
+ qWarning() << "HbAnchorLayout::setAnchor : You cannot set anchor between the same edge";
+ return false;
+ }
+
+ bool modified = false;
+
+ const int count = mAllAnchors.size();
+ for (int i = 0; i < count; ++i) {
+ HbAnchor *item = mAllAnchors.at(i);
+
+
+ bool idConditionStartStart = ( !item->mStartId.isNull() ) && ( item->mStartId == anchor->mStartId );
+ bool idConditionEndEnd = ( !item->mEndId.isNull() ) && ( item->mEndId == anchor->mEndId );
+ bool idConditionStartEnd = ( !item->mStartId.isNull() ) && ( item->mStartId == anchor->mEndId );
+ bool idConditionEndStart = ( !item->mEndId.isNull() ) && ( item->mEndId == anchor->mStartId );
+
+ bool itemConditionStartStart = ( item->mStartItem != 0 ) && ( item->mStartItem == anchor->mStartItem );
+ bool itemConditionEndEnd = ( item->mEndItem != 0 ) && ( item->mEndItem == anchor->mEndItem );
+ bool itemConditionStartEnd = ( item->mStartItem != 0 ) && ( item->mStartItem == anchor->mEndItem );
+ bool itemConditionEndStart = ( item->mEndItem != 0 ) && ( item->mEndItem == anchor->mStartItem );
+
+ bool edgeConditionStartStart = item->mStartEdge == anchor->mStartEdge;
+ bool edgeConditionEndEnd = item->mEndEdge == anchor->mEndEdge;
+ bool edgeConditionStartEnd = item->mStartEdge == anchor->mEndEdge;
+ bool edgeConditionEndStart = item->mEndEdge == anchor->mStartEdge;
+
+
+ if((idConditionStartStart || itemConditionStartStart) &&
+ (idConditionEndEnd || itemConditionEndEnd) &&
+ (edgeConditionStartStart) &&
+ (edgeConditionEndEnd) ){
+ modified = true;
+ item->mValue = anchor->mValue;
+ delete anchor;
+ break;
+ } else if( (idConditionStartEnd || itemConditionStartEnd) &&
+ (idConditionEndStart || itemConditionEndStart) &&
+ (edgeConditionStartEnd) &&
+ (edgeConditionEndStart) ){
+ modified = true;
+ item->mValue = -anchor->mValue;
+ delete anchor;
+ break;
+ }
+ }
+
+ if (!modified) {
+ if( anchor->mStartItem != 0 ){
+ anchor->mStartId = mMeshMap.value( anchor->mStartItem );
+ } else if( ! anchor->mStartId.isNull() ) {
+ anchor->mStartItem = mMeshMap.key( anchor->mStartId );
+ }
+
+ if( anchor->mEndItem != 0 ){
+ anchor->mEndId = mMeshMap.value( anchor->mEndItem );
+ } else if( ! anchor->mEndId.isNull() ) {
+ anchor->mEndItem = mMeshMap.key( anchor->mEndId );
+ }
+
+ addItemIfNeeded( anchor->mStartItem );
+ addItemIfNeeded( anchor->mEndItem );
+
+ mAllAnchors.append(anchor);
+ }
+
+ return true;
}
+void HbAnchorLayoutPrivate::removeItemIfNeeded( QGraphicsLayoutItem *item )
+{
+ Q_Q( HbAnchorLayout );
+
+ if( ( item == 0 ) || ( item == q ) ) {
+ return;
+ }
+
+ for ( int i = 0; i < mAllAnchors.size(); i++ ) {
+ HbAnchor *anchor = mAllAnchors.at(i);
+ if ( ( anchor->mStartItem == item ) || ( anchor->mEndItem == item ) ) {
+ return;
+ }
+ }
+
+ item->setParentLayoutItem( 0 );
+ mItems.removeAt(q->indexOf( item ));
+}
+
+
+
/*!
Constructor.
*/
@@ -1062,6 +1458,7 @@
delete d_ptr;
}
+
/*!
Creates an anchor, or updates an existing one, between the edges described by
(\a startItem, \a startEdge) and (\a endItem, \a endEdge).
@@ -1071,9 +1468,9 @@
That is, it is not allowed to connect e.g. top edge of an item to the
left edge of another one. Also there are horizontal and vertical center edges.
- The distance between the two edges is defined by \a value.
- If \a value is positive the end edge is to the right or below the start edge.
- If \a value is negative the end edge is to the left or above the start edge.
+ The distance between the two edges is defined by \a length.
+ If \a length is positive the end edge is to the right or below the start edge.
+ If \a length is negative the end edge is to the left or above the start edge.
Anchors can be created between the parent layout and a child layout item,
or between two child layout items, or even between two edges of the same
@@ -1092,48 +1489,95 @@
\param startEdge source edge.
\param endItem target item.
\param endEdge target edge.
- \param value spacing (in pixels).
+ \param length spacing (in pixels).
\return true if anchor was successfully added, false otherwise
*/
-bool HbAnchorLayout::setAnchor( QGraphicsLayoutItem *startItem,
- Hb::Edge startEdge,
- QGraphicsLayoutItem *endItem,
- Hb::Edge endEdge,
- qreal value )
+bool HbAnchorLayout::setAnchor( QGraphicsLayoutItem *startItem, Edge startEdge, QGraphicsLayoutItem *endItem, Edge endEdge, qreal length )
{
Q_D( HbAnchorLayout );
- if ( d->edgeType(startEdge) != d->edgeType(endEdge) ) {
- qWarning() << "HbAnchorLayout::setAnchor : You can't connect different type of edges";
- return false;
- }
- if ( !startItem || !endItem ) {
- qWarning() << "HbAnchorLayout::setAnchor : One of the items is NULL";
- return false;
+ HbAnchor *anchor = new HbAnchor();
+ anchor->mStartItem = startItem;
+ anchor->mStartEdge = startEdge;
+ anchor->mEndItem = endItem;
+ anchor->mEndEdge = endEdge;
+ anchor->mValue = length;
+
+ if (d->setAnchor(anchor)) {
+ invalidate();
+ return true;
}
- if ( ( startItem == endItem ) && ( startEdge == endEdge ) ) {
- qWarning() << "HbAnchorLayout::setAnchor : You cannot set anchor between the same edge";
- return false;
+ delete anchor;
+
+ return false;
+}
+
+/*!
+ Same as previous, but here it operates with node ids, instead of items itself.
+
+ \param startId start id.
+ \param startEdge start edge.
+ \param endId end id.
+ \param endEdge end edge.
+ \param length spacing value for all edges starting from (\a startId, \a startEdge).
+ \return true if success, false otherwise.
+*/
+bool HbAnchorLayout::setAnchor( const QString& startId, Edge startEdge, const QString& endId, Edge endEdge, qreal length )
+{
+ Q_D( HbAnchorLayout );
+
+ HbAnchor *anchor = new HbAnchor();
+ anchor->mStartId = startId;
+ anchor->mStartEdge = startEdge;
+ anchor->mEndId = endId;
+ anchor->mEndEdge = endEdge;
+ anchor->mValue = length;
+
+ if (d->setAnchor(anchor)) {
+ invalidate();
+ return true;
}
- d->addItemIfNeeded(startItem);
- d->addItemIfNeeded(endItem);
+ delete anchor;
- HbAnchor* anchor = d->getAnchor(startItem, startEdge, endItem, endEdge);
- HbAnchor* anchor2 = d->getAnchor(endItem, endEdge, startItem, startEdge);
+ return false;
+}
+
+
+/*!
+ Removes anchor (\a startId, \a startEdge, \a endNodeId, \a endEdge).
- if ( anchor ) {
- anchor->mValue = value;
- } else if ( anchor2 ) {
- anchor2->mValue = -value;
- } else {
- anchor = new HbAnchor(startItem, startEdge, endItem, endEdge, value);
- d->mAnchors.append(anchor);
+ \param startId start id.
+ \param startEdge start edge.
+ \param endId end id.
+ \param endEdge end edge.
+ \return true if success, false otherwise.
+*/
+bool HbAnchorLayout::removeAnchor( const QString& startNodeId, Edge startEdge, const QString& endNodeId, Edge endEdge )
+{
+ Q_D( HbAnchorLayout );
+ bool modified = false;
+
+ for (int i = d->mAllAnchors.size() - 1; i >= 0; --i) {
+ HbAnchor* anchor = d->mAllAnchors[i];
+ if( ( anchor->mStartId == startNodeId && anchor->mStartEdge == startEdge &&
+ anchor->mEndId == endNodeId && anchor->mEndEdge == endEdge ) ||
+ ( anchor->mStartId == endNodeId && anchor->mStartEdge == endEdge &&
+ anchor->mEndId == startNodeId && anchor->mEndEdge == startEdge ) ){
+ delete d->mAllAnchors.takeAt(i);
+ modified = true;
+ break;
+ }
}
- invalidate();
- return true;
+ if (modified) {
+ d->removeItemIfNeeded( d->mMeshMap.key( startNodeId ) );
+ d->removeItemIfNeeded( d->mMeshMap.key( endNodeId ) );
+ invalidate();
+ return true;
+ }
+ return false;
}
/*!
@@ -1150,95 +1594,284 @@
\param edge2 second edge.
\return true if anchor was successfully removed, false otherwise
*/
-bool HbAnchorLayout::removeAnchor( QGraphicsLayoutItem *item1,
- Hb::Edge edge1,
- QGraphicsLayoutItem *item2,
- Hb::Edge edge2 )
+bool HbAnchorLayout::removeAnchor( QGraphicsLayoutItem *startItem, Edge startEdge, QGraphicsLayoutItem *endItem, Edge endEdge )
+{
+ Q_D( HbAnchorLayout );
+ bool modified = false;
+
+ for (int i = d->mAllAnchors.size() - 1; i >= 0; --i) {
+ HbAnchor* anchor = d->mAllAnchors[i];
+ if( ( anchor->mStartItem == startItem && anchor->mStartEdge == startEdge &&
+ anchor->mEndItem == endItem && anchor->mEndEdge == endEdge ) ||
+ ( anchor->mStartItem == endItem && anchor->mStartEdge == endEdge &&
+ anchor->mEndItem == startItem && anchor->mEndEdge == startEdge ) ){
+ delete d->mAllAnchors.takeAt(i);
+ modified = true;
+ break;
+ }
+ }
+
+ if (modified) {
+ d->removeItemIfNeeded( startItem );
+ d->removeItemIfNeeded( endItem );
+ invalidate();
+ return true;
+ }
+ return false;
+}
+
+
+
+/*!
+ Removes all anchors starting or ending to \a nodeId.
+ Same is done with associated item
+
+ \param id id to be removed.
+ \return true if success, false otherwise.
+*/
+bool HbAnchorLayout::removeNodeId( const QString& nodeId )
{
Q_D( HbAnchorLayout );
- HbAnchor *anchor = d->getAnchor( item1, edge1, item2, edge2 );
- if( !anchor ) {
- anchor = d->getAnchor( item2, edge2, item1, edge1 );
- }
- if ( anchor ) {
- d->mAnchors.removeAll( anchor );
+ bool modified = false;
+
+ // if association, do removal
+
+ for (int i = d->mAllAnchors.size() - 1; i >= 0; --i) {
+ HbAnchor *anchor = d->mAllAnchors.at(i);
+ if (anchor->mStartId == nodeId || anchor->mEndId == nodeId) {
+ QGraphicsLayoutItem *startItem = anchor->mStartItem;
+ QGraphicsLayoutItem *endItem = anchor->mEndItem;
- // Remove non-anchored items
- bool startFound = false;
- bool endFound = false;
- for ( int i = d->mAnchors.count() - 1; i >= 0; i-- ) {
- if ( d->mAnchors.at(i)->mStartItem == item1 ||
- d->mAnchors.at(i)->mEndItem == item1 ) {
- startFound = true;
- }
- if ( d->mAnchors.at(i)->mStartItem == item2 ||
- d->mAnchors.at(i)->mEndItem == item2 ) {
- endFound = true;
- }
+ delete d->mAllAnchors.takeAt(i);
+ d->removeItemIfNeeded( startItem );
+ d->removeItemIfNeeded( endItem );
+
+ modified = true;
}
- if ( !startFound && item1 != this ) {
- item1->setParentLayoutItem( 0 );
- d->mItems.removeAt(indexOf(item1));
- }
- if ( !endFound && item2 != this) {
- item2->setParentLayoutItem( 0 );
- d->mItems.removeAt(indexOf(item2));
- }
- delete anchor;
+ }
+
+ removeMapping( nodeId );
+
+ if (modified) {
invalidate();
return true;
- } else {
- return false;
+ }
+ return false;
+}
+
+/*!
+ Clears all anchors.
+ Note that this does not affect on mappings.
+*/
+void HbAnchorLayout::removeAnchors()
+{
+ Q_D( HbAnchorLayout );
+
+ if( d->mAllAnchors.size() ) {
+ qDeleteAll( d->mResolvedDynamicAnchors );
+ qDeleteAll( d->mAllAnchors );
+ d->mResolvedDynamicAnchors.clear();
+ d->mResolvedStaticAnchors.clear();
+ d->mResolvedAnchors.clear();
+ d->mAllAnchors.clear();
+ invalidate();
}
}
/*!
- From QGraphicsLayoutItem.
- Sets the geometry of all the child items of this layout.
-
- In case the layout is not valid geometry will not be set
- to any of the child items.
-
- \param rect rectangle for this layout.
- \sa isValid
+ Sets identifier for \a item.
+ \param item layout item.
+ \param nodeId new id corresponding to \a item.
+ \return true if success, false otherwise.
*/
-void HbAnchorLayout::setGeometry(const QRectF &rect)
+bool HbAnchorLayout::setMapping( QGraphicsLayoutItem *item, const QString& nodeId )
{
Q_D( HbAnchorLayout );
- QGraphicsLayout::setGeometry(rect);
- d->setItemGeometries();
- d->mInvalidateCalled = false;
+ bool modified = false;
+
+ if ( !nodeId.isNull() && ( item != 0 ) ) {
+
+ for( int i = 0; i < d->mAllAnchors.size(); i++ ) {
+ HbAnchor *anchor = d->mAllAnchors.at(i);
+ if( anchor->mStartItem == item ) {
+ anchor->mStartId = nodeId;
+ modified = true;
+ } else if( anchor->mStartId == nodeId ) {
+ anchor->mStartItem = item;
+ modified = true;
+ }
+
+ if( anchor->mEndItem == item ) {
+ anchor->mEndId = nodeId;
+ modified = true;
+ } else if( anchor->mEndId == nodeId ) {
+ anchor->mEndItem = item;
+ modified = true;
+ }
+
+ }
+
+ // Remove previous item -> id.
+ HbMeshItemMapIterator it = d->mMeshMap.begin();
+ while ( it != d->mMeshMap.end() ) {
+ if ( it.value() == nodeId ) {
+ it = d->mMeshMap.erase( it );
+ } else {
+ ++it;
+ }
+ }
+ d->addItemIfNeeded( item );
+ d->mMeshMap.insert( item, nodeId );
+ } else {
+ return false;
+ }
+
+ if( modified ){
+ invalidate();
+ }
+ return true;
+}
+
+/*!
+ Resets mapping for \a item. All anchors are updated after that.
+
+ item <=> "someId" ----> item <=> null
+
+ \param item layout item.
+ \return true if success, false otherwise.
+*/
+bool HbAnchorLayout::removeMapping( QGraphicsLayoutItem *item )
+{
+ Q_D( HbAnchorLayout );
+
+ bool modified = false;
+
+ if( ! item ) {
+ return false;
+ }
+
+ for( int i = 0; i < d->mAllAnchors.size(); i++ ) {
+ HbAnchor *anchor = d->mAllAnchors.at(i);
+
+ if( anchor->mStartItem == item ) {
+ anchor->mStartId = QString();
+ modified = true;
+ }
+
+ if( anchor->mEndItem == item ) {
+ anchor->mEndId = QString();
+ modified = true;
+ }
+ }
+
+
+ d->mMeshMap.remove(item);
+
+ if( modified ){
+ invalidate();
+ }
+ return true;
}
/*!
- From QGraphicsLayoutItem.
- Removes the item at index, \a index, without destroying it.
+ Resets mapping for \a nodeId. All anchors are updated after that.
+
+ item <=> "nodeId" ----> 0 <=> "nodeId"
- Removes all the anchors connected to the removed item.
-
- \param index index of item to be removed.
+ \param nodeId node id
+ \return true if success, false otherwise.
*/
-void HbAnchorLayout::removeAt(int index)
+bool HbAnchorLayout::removeMapping( const QString& nodeId )
{
Q_D( HbAnchorLayout );
- if ( index < 0 || index > d->mItems.count()-1 ) {
+
+ bool modified = false;
+
+ if( nodeId.isNull() ) {
+ return false;
+ }
+
+ for( int i = 0; i < d->mAllAnchors.size(); i++ ) {
+ HbAnchor *anchor = d->mAllAnchors.at(i);
+
+ if( anchor->mStartId == nodeId ) {
+ anchor->mStartItem = 0;
+ modified = true;
+ }
+
+ if( anchor->mEndId == nodeId ) {
+ anchor->mEndItem = 0;
+ modified = true;
+ }
+ }
+
+
+ HbMeshItemMapIterator it = d->mMeshMap.begin();
+ while ( it != d->mMeshMap.end() ) {
+ if ( it.value() == nodeId ) {
+ it = d->mMeshMap.erase( it );
+ } else {
+ ++it;
+ }
+ }
+
+ if( modified ){
+ invalidate();
+ }
+ return true;
+}
+
+
+/*!
+ Clears all item id mappings.
+*/
+void HbAnchorLayout::removeMappings()
+{
+ Q_D( HbAnchorLayout );
+ d->mMeshMap.clear();
+
+ for( int i = 0; i < d->mAllAnchors.size(); i++ ) {
+ HbAnchor *anchor = d->mAllAnchors.at(i);
+
+ if( !anchor->mStartId.isNull() ) {
+ anchor->mStartItem = 0;
+ }
+
+ if( !anchor->mEndId.isNull() ) {
+ anchor->mEndItem = 0;
+ }
+
+ }
+}
+
+/*!
+ Adds \a item.
+
+ \param item item to be added.
+ \param id id of this item.
+*/
+void HbAnchorLayoutPrivate::addItemIfNeeded(QGraphicsLayoutItem *item)
+{
+ Q_Q(HbAnchorLayout);
+
+ if (!item) {
+ //qWarning() << "HbAnchorLayout::addItemIfNeeded : item is NULL";
return;
}
- QGraphicsLayoutItem *item = itemAt( index );
- if ( item ) {
- for ( int i = d->mAnchors.count() - 1; i >= 0; i-- ) {
- if ( d->mAnchors.at(i)->mStartItem == item ||
- d->mAnchors.at(i)->mEndItem == item ) {
- d->mAnchors.removeAt(i);
- }
- }
- item->setParentLayoutItem( 0 );
- d->mItems.removeAt(index);
+ if (item == q) {
+ //qWarning() << "HbAnchorLayout::addItemIfNeeded : layout cannot be added";
+ return;
}
- invalidate();
+ if (mItems.contains(item)) {
+ //qWarning() << "HbAnchorLayout::addItemIfNeeded : item is already in layout";
+ return;
+ }
+
+ HbLayoutUtils::addChildItem(q, item);
+ mItems.append(item);
}
/*!
@@ -1247,35 +1880,12 @@
\param item item to be removed.
*/
-void HbAnchorLayout::removeItem(QGraphicsLayoutItem* item)
+void HbAnchorLayout::removeItem(QGraphicsLayoutItem *item)
{
removeAt(indexOf(item));
}
/*!
- From QGraphicsLayoutItem.
- Returns the count of the child items in anchor layout.
- \return amount of items in this layout.
-*/
-int HbAnchorLayout::count() const
-{
- Q_D( const HbAnchorLayout );
- return d->mItems.count();
-}
-
-/*!
- From QGraphicsLayoutItem.
- Returns a pointer to the item at an index \a index.
- \param index position of desired item.
- \return item at specified index.
-*/
-QGraphicsLayoutItem *HbAnchorLayout::itemAt(int index) const
-{
- Q_D( const HbAnchorLayout );
- return d->mItems.value(index);
-}
-
-/*!
Returns the index of given layout \a item, or -1 if not found.
\param item item to look for.
\return index of item or -1 if not found.
@@ -1283,8 +1893,8 @@
int HbAnchorLayout::indexOf(const QGraphicsLayoutItem* item) const
{
Q_D( const HbAnchorLayout );
- for ( int i=0; i< d->mItems.count(); i++) {
- if ( d->mItems.at(i) == item ) {
+ for (int i=0; i < d->mItems.count(); i++) {
+ if (d->mItems.at(i) == item) {
return i;
}
}
@@ -1303,14 +1913,117 @@
return ( d->mValid && ( ! d->mWrongAnchors ) );
}
+
/*!
- From QGraphicsLayoutItem.
+ Returns node id for given item, or default constructed string if no mapping exist.
+ \param item item to check.
+ \return node id for given item.
+*/
+QString HbAnchorLayout::nodeId( QGraphicsLayoutItem *item ) const
+{
+ Q_D( const HbAnchorLayout );
+ if( d->mMeshMap.contains( item ) ) {
+ return d->mMeshMap.value( item );
+ }
+ return QString();
+}
+
+/*!
+ Returns list of node ids that are mentioned in anchors list.
+ \return list of node ids.
+*/
+QStringList HbAnchorLayout::nodeIds() const
+{
+ Q_D( const HbAnchorLayout );
+ QStringList list;
+ int c = d->mAllAnchors.count();
+ while (c--) {
+ QString id = d->mAllAnchors.at(c)->mStartId;
+ if (!list.contains(id) && !id.isNull()) {
+ list.append(id);
+ }
+ id = d->mAllAnchors.at(c)->mEndId;
+ if (!list.contains(id) && !id.isNull()) {
+ list.append(id);
+ }
+ }
+ return list;
+}
+
+/*!
+ Returns item reference for given node id, or zero if no mapping exist.
+ \param nodeId node id to check.
+ \return item reference for given item.
+*/
+QGraphicsLayoutItem *HbAnchorLayout::itemByNodeId( const QString& nodeId ) const
+{
+ Q_D( const HbAnchorLayout );
+ return d->mMeshMap.key( nodeId );
+}
+
+
+/*!
+ \reimp
+*/
+void HbAnchorLayout::removeAt(int index)
+{
+ Q_D( HbAnchorLayout );
+ if ( index < 0 || index > d->mItems.count()-1 ) {
+ return;
+ }
+ QGraphicsLayoutItem *item = itemAt( index );
+ if ( item ) {
+ for ( int i = d->mAllAnchors.count() - 1; i >= 0; i-- ) {
+ if ( ( ( d->mAllAnchors.at(i)->mStartItem == item ) && ( d->mAllAnchors.at(i)->mStartId.isNull() ) ) ||
+ ( ( d->mAllAnchors.at(i)->mEndItem == item ) && ( d->mAllAnchors.at(i)->mEndId.isNull() ) ) ) {
+ delete d->mAllAnchors.takeAt(i);
+ }
+ }
+
+ removeMapping( d->mMeshMap.value(item) );
+ item->setParentLayoutItem( 0 );
+ d->mItems.removeAt( index );
+ }
+
+ invalidate();
+}
+
+/*!
+ \reimp
+*/
+void HbAnchorLayout::setGeometry(const QRectF &rect)
+{
+ Q_D( HbAnchorLayout );
+ QGraphicsLayout::setGeometry(rect);
+ d->setItemGeometries();
+}
+
+/*!
+ \reimp
+*/
+int HbAnchorLayout::count() const
+{
+ Q_D( const HbAnchorLayout );
+ return d->mItems.count();
+}
+
+/*!
+ \reimp
+*/
+QGraphicsLayoutItem *HbAnchorLayout::itemAt(int index) const
+{
+ Q_D( const HbAnchorLayout );
+ return d->mItems.value(index);
+}
+
+/*!
+ \reimp
*/
void HbAnchorLayout::invalidate()
{
Q_D( HbAnchorLayout );
+ d->mInvalidateCalled = true;
d->mWrongAnchors = false;
- d->mInvalidateCalled = true;
d->mEquationsDirty = true;
QGraphicsLayout::invalidate();
}
@@ -1322,9 +2035,8 @@
{
QGraphicsLayout::widgetEvent(e);
}
-
/*!
- From QGraphicsLayoutItem. If size hint for certain set of items cannot be defined,
+ From QGraphicsLayoutItem. If size hint for certain set of items cannot be defined,
then it returns default size hint (0/100/1000)
\param which desired size hint.
\param constraint optional constraint.
@@ -1338,15 +2050,15 @@
return const_cast<HbAnchorLayoutPrivate*>(d)->sizeHint( which );
}
-QSizeF HbAnchorLayoutPrivate::sizeHint( Qt::SizeHint which )
+QSizeF HbAnchorLayoutPrivate::sizeHint(Qt::SizeHint which)
{
if ( mEquationsDirty ) {
- mEquationsDirty = false;
+ updateAnchorsAndItems();
createEquations( Horizontal );
createEquations( Vertical );
+ mEquationsDirty = false;
}
-
if( mLayoutVarH && mLayoutVarV ) {
QSizeF res;
@@ -1386,4 +2098,3 @@
}
}
}
-
--- a/src/hbcore/layouts/hbanchorlayout.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/layouts/hbanchorlayout.h Wed Jun 23 18:33:25 2010 +0300
@@ -31,51 +31,60 @@
#include <hbglobal.h>
#include <hbnamespace.h>
+class HbAnchorLayoutDebug;
class HbAnchorLayoutPrivate;
class HbAnchor;
class HB_CORE_EXPORT HbAnchorLayout : public QGraphicsLayout
{
public:
- typedef Hb::Edge Edge;
- explicit HbAnchorLayout(QGraphicsLayoutItem *parent = 0);
+ typedef Hb::Edge Edge; // need to remove later...
+
+ explicit HbAnchorLayout( QGraphicsLayoutItem *parent = 0 );
virtual ~HbAnchorLayout();
- bool setAnchor(
- QGraphicsLayoutItem *startItem,
- Hb::Edge startEdge,
- QGraphicsLayoutItem *endItem,
- Hb::Edge endEdge,
- qreal value);
+ bool setAnchor( const QString &startNodeId, Edge startEdge, const QString &endNodeId, Edge endEdge, qreal length = 0 );
+ bool setAnchor( QGraphicsLayoutItem *startItem, Edge startEdge, QGraphicsLayoutItem *endItem, Edge endEdge, qreal length = 0 );
+
+ bool removeAnchor( const QString &startNodeId, Edge startEdge, const QString &endNodeId, Edge endEdge );
+ bool removeAnchor( QGraphicsLayoutItem *startItem, Edge startEdge, QGraphicsLayoutItem *endItem, Edge endEdge );
+
+ void removeAnchors();
- bool removeAnchor(
- QGraphicsLayoutItem *startItem,
- Hb::Edge startEdge,
- QGraphicsLayoutItem *endItem,
- Hb::Edge endEdge);
+ bool setMapping( QGraphicsLayoutItem *item, const QString& nodeId );
+ bool removeMapping( QGraphicsLayoutItem *item );
+ bool removeMapping( const QString &nodeId );
+ void removeMappings();
- void removeAt(int index);
- void removeItem(QGraphicsLayoutItem* item);
- void setGeometry(const QRectF &rect);
- int count() const;
- QGraphicsLayoutItem *itemAt(int index) const;
- int indexOf(const QGraphicsLayoutItem* item) const;
+ QString nodeId( QGraphicsLayoutItem *item ) const;
+ QGraphicsLayoutItem *itemByNodeId( const QString &nodeId ) const;
+ QStringList nodeIds() const;
+
+ void removeItem( QGraphicsLayoutItem *item );
+ bool removeNodeId( const QString &nodeId );
+
+ int indexOf(const QGraphicsLayoutItem *item) const;
+
bool isValid() const;
- void invalidate();
- virtual void widgetEvent(QEvent *e);
+ virtual void removeAt( int index );
+ virtual void setGeometry( const QRectF &rect );
+ virtual int count() const;
+ virtual QGraphicsLayoutItem *itemAt( int index ) const;
+ virtual void invalidate();
+ virtual void widgetEvent( QEvent *e );
protected:
- QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const;
+ virtual QSizeF sizeHint( Qt::SizeHint which, const QSizeF &constraint = QSizeF() ) const;
protected:
- HbAnchorLayoutPrivate * const d_ptr;
+ HbAnchorLayoutPrivate *const d_ptr;
private:
- Q_DISABLE_COPY(HbAnchorLayout)
- Q_DECLARE_PRIVATE_D(d_ptr, HbAnchorLayout)
+ Q_DISABLE_COPY( HbAnchorLayout )
+ Q_DECLARE_PRIVATE_D( d_ptr, HbAnchorLayout )
friend class HbAnchorLayoutDebug;
};
--- a/src/hbcore/layouts/hbanchorlayoutdebug_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/layouts/hbanchorlayoutdebug_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -33,6 +33,7 @@
{
public:
static QList<HbAnchor*> getAnchors( HbAnchorLayout* layout );
+ static QList<HbAnchor*> getOriginalAnchors( HbAnchorLayout* layout );
};
#endif
--- a/src/hbcore/primitives/hbiconitem.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/primitives/hbiconitem.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -249,6 +249,10 @@
icon displayed by the HbIconItem. Use the setters in HbIconItem instead. Of course
the settings set on \a icon before calling setIcon() will all be taken into account.
+ The icon-specific parameters (flags, color, mirroring mode) set via the HbIconItem
+ setters before are lost as this function causes the entire underlying icon to be
+ replaced with a new one.
+
\param icon the HbIcon instance that this HbIconItem displays.
\sa icon()
@@ -291,6 +295,7 @@
void HbIconItem::setAlignment(Qt::Alignment alignment)
{
Q_D(HbIconItem);
+ d->setApiProtectionFlag(HbWidgetBasePrivate::AC_IconAlign, true);
if (d->mAlignment != alignment) {
d->mAlignment = alignment;
update();
--- a/src/hbcore/primitives/hbmarqueeitem.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/primitives/hbmarqueeitem.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -30,7 +30,7 @@
#ifdef HB_TEXT_MEASUREMENT_UTILITY
#include "hbtextmeasurementutility_p.h"
-#include "hbfeaturemanager_p.h"
+#include "hbfeaturemanager_r.h"
#endif //HB_TEXT_MEASUREMENT_UTILITY
#include "hbdeviceprofile.h"
--- a/src/hbcore/primitives/hbtextitem.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/primitives/hbtextitem.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -38,15 +38,20 @@
#ifdef HB_TEXT_MEASUREMENT_UTILITY
#include "hbtextmeasurementutility_p.h"
-#include "hbfeaturemanager_p.h"
+#include "hbfeaturemanager_r.h"
#endif
+// #define HB_TEXT_ITEM_LOGS
#define EPSILON 0.01
+#ifdef HB_TEXT_ITEM_LOGS
+# include <QDebug>
+#endif // HB_TEXT_ITEM_LOGS
+
bool HbTextItemPrivate::outlinesEnabled = false;
static const QString KDefaultColorThemeName = "qtc_view_normal";
-const int MinimumWidth = 5; // minimum width if there is some text.
+const qreal MinimumWidth = 5.0; // minimum width if there is some text.
const int KLayoutCacheLimit = 64;
const qreal KFadeTolerance = 1.0;
@@ -58,11 +63,13 @@
mPaintFaded(false),
mFadeLengthX(30),
mFadeLengthY(15),
- mPrefHeight(0),
- mMinLines(0),
+ mMinLines(1),
mMaxLines(0),
- mNeedToAdjustSizeHint(false),
- mUpdateColor(true)
+ mMinWidthForAdjust(-1),
+ mMaxWidthForAdjust(-1),
+ mDefaultHeight(-1),
+ mUpdateColor(true),
+ mEventPosted(false)
{
}
@@ -79,6 +86,7 @@
textOption.setWrapMode(QTextOption::WordWrap);
mTextLayout.setTextOption(textOption);
mTextLayout.setCacheEnabled(true);
+ mTextLayout.setFont(q->font());
}
void HbTextItemPrivate::clear()
@@ -86,57 +94,36 @@
// no implementation needed
}
-bool HbTextItemPrivate::doLayout(const QString& text, const qreal lineWidth, qreal leading)
+bool HbTextItemPrivate::doLayout(const QString& text, const qreal lineWidth, qreal lineSpacing)
{
bool textTruncated = false;
- mInvalidateShownText = false;
mTextLayout.setText(text);
- mTextLayout.setFont( q_func()->font() );
- qreal height = 0;
+ qreal yLinePos = 0;
mTextLayout.beginLayout();
while (1) {
QTextLine line = mTextLayout.createLine();
if (!line.isValid())
break;
- if( ( mMaxLines > 0 ) && ( mTextLayout.lineCount() > mMaxLines ) ) {
- textTruncated = true;
+
+ line.setLineWidth(lineWidth);
+ line.setPosition(QPointF(0, yLinePos));
+
+ if( ( mMaxLines > 0 ) && ( mTextLayout.lineCount() >= mMaxLines ) ) {
+ textTruncated = (line.textStart()+line.textLength() < text.length());
break;
}
-
- line.setLineWidth(lineWidth);
- height += leading;
- line.setPosition(QPointF(0, height));
- height += line.height();
+ yLinePos += lineSpacing;
}
mTextLayout.endLayout();
- if( textTruncated ) {
- mTextLayout.setText(text);
- mTextLayout.setFont( q_func()->font() );
-
- qreal height = 0;
- mTextLayout.beginLayout();
- while ( mTextLayout.lineCount() < mMaxLines ) {
- QTextLine line = mTextLayout.createLine();
- line.setLineWidth(lineWidth);
- height += leading;
- line.setPosition(QPointF(0, height));
- height += line.height();
- }
- mTextLayout.endLayout();
- }
-
return textTruncated;
}
-void HbTextItemPrivate::setSize(const QSizeF &newSize)
+void HbTextItemPrivate::rebuildTextLayout(const QSizeF &newSize)
{
- Q_Q(HbTextItem);
-
- QFont usedFont = q->font();
- QFontMetricsF fontMetrics(usedFont);
+ QFontMetricsF fontMetrics(mTextLayout.font());
const qreal lineWidth = qRound( newSize.width() + 0.5 ); // round up to integer
@@ -148,11 +135,10 @@
tempText.replace('\n', QChar::LineSeparator);
}
- // function does the layout only when needed
- mTextLayout.setFont(usedFont);
// Need to call elidedText explicitly to enable multiple length translations.
tempText = fontMetrics.elidedText(tempText, Qt::ElideNone, lineWidth);
- bool textTruncated = doLayout(tempText, lineWidth, fontMetrics.leading());
+ bool textTruncated = doLayout(tempText, lineWidth, fontMetrics.lineSpacing());
+
if(mElideMode!=Qt::ElideNone && !tempText.isEmpty()) {
if( ( mTextLayout.boundingRect().height() - newSize.height() > EPSILON ) ||
( mTextLayout.boundingRect().width() - lineWidth > EPSILON ) ||
@@ -160,12 +146,15 @@
// TODO: Multiple length translations with multiline text
doLayout(elideLayoutedText(newSize, fontMetrics),
lineWidth,
- fontMetrics.leading());
+ fontMetrics.lineSpacing());
}
}
+
calculateVerticalOffset();
calculateFadeRects();
- q->update();
+
+ // build of text layout is completed
+ mInvalidateShownText = false;
}
/*
@@ -194,6 +183,25 @@
return i;
}
+QSizeF HbTextItemPrivate::respectSizeLimits(QSizeF size) const
+{
+ QFontMetricsF metrics(mTextLayout.font());
+
+ Q_ASSERT(mMinLines>0);
+ qreal minHeight = metrics.lineSpacing()*mMinLines - metrics.leading();
+ if (size.height()<minHeight) {
+ size.setHeight(minHeight);
+ }
+
+ if (mMaxLines>0) {
+ qreal maxHeight = metrics.lineSpacing()*mMaxLines - metrics.leading();
+ if (size.height()>maxHeight) {
+ size.setHeight(maxHeight);
+ }
+ }
+ return size;
+}
+
QString HbTextItemPrivate::elideLayoutedText(const QSizeF& size, const QFontMetricsF& metrics) const
{
int lastVisibleLine =findIndexOfLastLineBeforeY(size.height());
@@ -280,38 +288,134 @@
return flags;
}
-bool HbTextItemPrivate::adjustSizeHint()
-{
- Q_Q( HbTextItem );
+/*!
+ This method check spetial case of calculating sizeHint.
+ By default prefferedSize returns size of text which has lots of free space.
+ But there can be situaltion that text has less avaible free width ther requred.
+ In such cases prefered hight of HbTextItem should be recaculated because wrapping
+ of the line may requre more space in vertical direction.
- mNeedToAdjustSizeHint = false;
-
- if ( !(q->sizePolicy().verticalPolicy()&QSizePolicy::IgnoreFlag) ) {
- // only calculated if the vertical sizeHint is taken into account
-
- const QFontMetricsF metrics(q->font());
+ In such case bigger hight should be cached for sizeHint calculations.
+ */
+bool HbTextItemPrivate::isAdjustHightNeeded(const QSizeF& newSize,
+ const QSizeF& prefSize)
+{
+#ifdef HB_TEXT_ITEM_LOGS
+ qDebug() << "isAdjustHightNeeded for: " << q_ptr->objectName()
+ << " text=" << mText.left(20)
+ << " adjusted=" << mAdjustedSize
+ << " pref=" << prefSize
+ << mTextLayout.font();
+#endif // HB_TEXT_ITEM_LOGS
- if ( mMinLines > 0 && (mMinLines == mMaxLines) ) {
- // if the number of lines if fixed: optimize
- const qreal newPrefHeight = ( metrics.height() + metrics.leading() ) * mMinLines - metrics.leading();
- if( qAbs( mPrefHeight - newPrefHeight ) > EPSILON ) {
- mPrefHeight = newPrefHeight;
- return true;
- }
- return false;
- }
+ // first check if wrapping of text is not active
+ QTextOption::WrapMode wrapMode = mTextLayout.textOption().wrapMode();
+ if (wrapMode==QTextOption::NoWrap
+ || wrapMode==QTextOption::ManualWrap) {
+ return false;
+ }
+
+ // check if line count is fixed
+ if (mMaxLines == mMinLines) {
+ return false;
+ }
- QSizeF currSize = q->size();
- // do the heavy calculation
- QRectF desiredRect = metrics.boundingRect( QRectF( 0, 0 , currSize.width(), QWIDGETSIZE_MAX ), textFlagsFromTextOption(), mText );
+ // check if preffered height is defined by user
+ // so check if preff height is same as value returned by sizeHint
+ if (!qFuzzyCompare(prefSize.height(), mAdjustedSize.height())) {
+ return false;
+ }
- if( qAbs( desiredRect.height() - mPrefHeight ) > EPSILON ) {
- mPrefHeight = desiredRect.height();
- return true;
- }
+ // check if adjusted size has been already calculated
+ // new width is bigger then last estimated range of same height
+ if ((mMaxWidthForAdjust>=newSize.width()
+ // new width is smaller then last estimated range of same height
+ && newSize.width()>=mMinWidthForAdjust)) {
+ return false;
+ }
+
+ if (!mAdjustedSize.isValid()) {
+ // this means that preferred size is set outside of class by setPreferredSize
+ // so sizeHint(Qt::Preferredsize) was not called and size adjustment is useless
+ return false;
}
- return false;
+ // if preconditions are met test if current hight is enough
+ const QFontMetricsF metrics(mTextLayout.font());
+
+ // heavy calculation: check if text fits in current size and cache result
+ QSizeF newAdjust = metrics.boundingRect(QRectF(0, 0, newSize.width(), QWIDGETSIZE_MAX),
+ textFlagsFromTextOption(),
+ mText).size();
+
+ if (qFuzzyCompare(newAdjust.height(), mAdjustedSize.height())) {
+ // height is same as last time update range of same height
+ mMaxWidthForAdjust = qMax(mMaxWidthForAdjust, newSize.width());
+ mMinWidthForAdjust = qMin(mMinWidthForAdjust, newSize.width());
+
+ // and don't update geometry
+ return false;
+ }
+
+ // new height was calculated create new range for which
+ // current mAdjustedSize.height is valid
+ mMaxWidthForAdjust = newSize.width();
+ mMinWidthForAdjust = newAdjust.width();
+
+ // store new hieght use don't change width
+ mAdjustedSize.setHeight(newAdjust.height());
+ Q_ASSERT_X(mAdjustedSize.width()>=newAdjust.width(),
+ "HbTextItemPrivate::isAdjustHightNeeded",
+ QString("Fail for string: \"%1\"").arg(mText).toAscii().data());
+
+ if (respectSizeLimits(mAdjustedSize)==prefSize) {
+ // updateGeometry has no effect
+ return false;
+ }
+
+ // all conditions for calling updateGeometry are meet
+ return true;
+}
+
+void HbTextItemPrivate::clearAdjustedSizeCache()
+{
+ // clear cache of size
+ mMinWidthForAdjust = -1;
+ mMaxWidthForAdjust = -1;
+ mAdjustedSize.setHeight(-1);
+}
+
+QSizeF HbTextItemPrivate::calculatePrefferedSize(const QSizeF& constraint) const
+{
+ const QFontMetricsF metrics(mTextLayout.font());
+
+ if (mAdjustedSize.isValid() &&
+ (constraint.height()<0 || qFuzzyCompare(constraint.height(), mAdjustedSize.height())) &&
+ (constraint.width()<0 || qFuzzyCompare(constraint.width(), mAdjustedSize.width()))) {
+ // return cached value, see more in:
+ // - HbTextItemPrivate::isAdjustHightNeeded
+ // - HbTextItem::resizeEvent
+ return mAdjustedSize;
+ }
+
+ QSizeF maxSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
+ if(constraint.width()>0) {
+ maxSize.setWidth(constraint.width());
+ }
+ if(constraint.height()>0) {
+ maxSize.setHeight(constraint.height());
+ }
+
+ QSizeF size = metrics.boundingRect(QRectF(QPointF(),maxSize),
+ textFlagsFromTextOption(),
+ mText).size();
+
+ mAdjustedSize = size;
+ mDefaultHeight = size.height();
+ mMinWidthForAdjust = size.width();
+ mMaxWidthForAdjust = QWIDGETSIZE_MAX;
+
+ return size;
}
bool HbTextItemPrivate::fadeNeeded(const QRectF& contentRect) const
@@ -532,7 +636,6 @@
// #define SEE_FADE_RECTANGLES
#ifdef SEE_FADE_RECTANGLES
- painter->setClipRect(mFadeToRect);
painter->setBrush(QBrush(QColor(215, 0, 0, 30)));
painter->drawRect(mFadeToRect);
painter->setBrush(QBrush(QColor(0, 0, 200, 30)));
@@ -743,6 +846,11 @@
return result;
}
+void HbTextItemPrivate::scheduleTextBuild()
+{
+ mInvalidateShownText = true;
+}
+
/*!
@alpha
@hbcore
@@ -757,7 +865,6 @@
/*!
Constructor for the class with no content.
*/
-
HbTextItem::HbTextItem (QGraphicsItem *parent) :
HbWidgetBase(*new HbTextItemPrivate, parent)
{
@@ -872,21 +979,30 @@
#endif //HB_TEXT_MEASUREMENT_UTILITY
if (d->mText != txt) {
- d->mInvalidateShownText = true;
+ d->scheduleTextBuild();
prepareGeometryChange();
d->mText = txt;
d->mTextLayout.setCacheEnabled(KLayoutCacheLimit >= d->mText.length());
- bool onlyHorizontalSizeHintChanged = false;
- if ( d->mMinLines > 0 && (d->mMinLines == d->mMaxLines) ) {
- onlyHorizontalSizeHintChanged = true;
+ d->clearAdjustedSizeCache();
+ update();
+
+ // check if call of updateGeometry can be ignored
+ // don't call it when minimum and maximum lines are equal (height is fixed) or ...
+ if ((d->mMinLines == d->mMaxLines)
+ // or when preferred height is ignored
+ || (sizePolicy().verticalPolicy()&QSizePolicy::IgnoreFlag)) {
+
+ // and when preferred width is ignored or ...
+ if (sizePolicy().horizontalPolicy()&QSizePolicy::IgnoreFlag
+ // or when preferred width is defined from outside
+ || !qFuzzyCompare(preferredWidth(), d->mAdjustedSize.width())) {
+ // TODO: looking for better solution since preferredWidth() can cause call of sizeHint
+
+ // in those cases skip updateGeometry
+ return;
+ }
}
- if ( (sizePolicy().horizontalPolicy()&QSizePolicy::IgnoreFlag) && onlyHorizontalSizeHintChanged ) {
- // suppress updateGeometry() and use the same geometry
- d->setSize( size() );
- } else {
- updateGeometry();
- }
- update();
+ updateGeometry();
}
}
@@ -952,8 +1068,9 @@
{
Q_D(HbTextItem);
if (elideMode != d->mElideMode) {
- d->mInvalidateShownText = true;
d->mElideMode = elideMode;
+ d->scheduleTextBuild();
+ prepareGeometryChange();
update();
}
}
@@ -986,6 +1103,10 @@
painter->drawRect(rect);
}
+ if (d->mInvalidateShownText) {
+ d->rebuildTextLayout(size());
+ }
+
painter->setPen(textColor());
@@ -1011,15 +1132,16 @@
*/
void HbTextItem::setGeometry(const QRectF & rect)
{
- Q_D(HbTextItem);
-
HbWidgetBase::setGeometry(rect);
- // needed when there was no size change and some things
- // need to relayout text
- if(d->mInvalidateShownText) {
- prepareGeometryChange();
- d->setSize(rect.size());
+ if (parentLayoutItem() && parentLayoutItem()->isLayout()) {
+ // rect.size can't be used here since size can be limited inside of
+ // called method HbWidgetBase::setGeometry(rect) so size is used which
+ // holds current size
+ Q_D(HbTextItem);
+ if (d->isAdjustHightNeeded(size(), preferredSize())) {
+ updateGeometry();
+ }
}
}
@@ -1032,6 +1154,9 @@
{
Q_D(const HbTextItem);
+ if (d->mInvalidateShownText) {
+ const_cast<HbTextItemPrivate*>(d)->rebuildTextLayout(size());
+ }
return d->boundingRect(contentsRect());
} // boundingRect()
@@ -1044,6 +1169,21 @@
QSizeF size(0,0);
+ // TODO: Temporary work-around - font change event are not always received
+ // so updating font here (this is needed because of sizeHint adjustments).
+ if (d->mTextLayout.font()!=font()) {
+#ifdef HB_TEXT_ITEM_LOGS
+ qWarning() << "Font change was not recieved on time: work-around is active"
+ << objectName()
+ << " test: " << d->mText.left(20)
+ << " oldFont:" << d->mTextLayout.font()
+ << " newFont:" << font();
+#endif // HB_TEXT_ITEM_LOGS
+
+ const_cast<HbTextItemPrivate *>(d)->mTextLayout.setFont(font());
+ const_cast<HbTextItemPrivate *>(d)->clearAdjustedSizeCache();
+ }
+
Qt::Orientations effectiveOrientations(0);
if ( !(sizePolicy().horizontalPolicy()&QSizePolicy::IgnoreFlag) ) {
effectiveOrientations |= Qt::Horizontal;
@@ -1058,71 +1198,32 @@
return HbWidgetBase::sizeHint( which, constraint );
}
- const QFontMetricsF metrics(font());
- QSizeF maxSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
-
- if(constraint.width()>0) {
- maxSize.setWidth(constraint.width());
- }
- if(constraint.height()>0) {
- maxSize.setHeight(constraint.height());
- }
-
switch(which) {
case Qt::MinimumSize:
{
if ( !d->mText.isEmpty() ) {
- size.setWidth( MinimumWidth ); // just to show something -- should not matter in read use-case
-
- if( d->mMinLines > 1 ) {
- size.setHeight( ( metrics.height() + metrics.leading() ) * d->mMinLines - metrics.leading() );
- } else {
- size.setHeight( metrics.height() );
- }
+ size.setWidth(MinimumWidth); // just to show something -- should not matter in read use-case
+ size = d->respectSizeLimits(size);
}
-
break;
}
case Qt::PreferredSize:
{
- if ( !(effectiveOrientations&Qt::Horizontal) && d->mMinLines > 0 && (d->mMinLines == d->mMaxLines) ) {
+ if ( !effectiveOrientations.testFlag(Qt::Horizontal)
+ && (d->mMinLines == d->mMaxLines) ) {
//optimize single line if the horizontal sizeHint is ignored
- size.setHeight( ( metrics.height() + metrics.leading() ) * d->mMinLines - metrics.leading() );
+ size = d->respectSizeLimits(size);
break;
}
- // do the heavy calculation
- size = metrics.boundingRect(QRectF(QPointF(),maxSize),
- d->textFlagsFromTextOption(),
- d->mText).size();
-
-
- if( ( constraint.width() < 0 ) && ( constraint.height() < 0 ) ) {
-
- if( ( d->mNeedToAdjustSizeHint ) || ( d->oldSize != size ) ) {
- const_cast<HbTextItemPrivate*>(d)->adjustSizeHint();
- }
-
- qreal pref = d->mPrefHeight;
-
- if( d->mMaxLines > 0 ) {
- qreal maxLimit = ( metrics.height() + metrics.leading() ) * d->mMaxLines - metrics.leading();
- if( maxLimit < pref ) {
- pref = maxLimit;
- }
-
- }
-
- const_cast<HbTextItemPrivate*>(d)->oldSize = size;
- size.setHeight( pref );
- }
-
+ size = d->calculatePrefferedSize(constraint);
+ size = d->respectSizeLimits(size);
break;
}
default:
- size = HbWidgetBase::sizeHint( which, constraint );
+ size = HbWidgetBase::sizeHint(which, constraint);
}
return size;
@@ -1140,16 +1241,30 @@
switch(event->type()) {
case QEvent::LayoutDirectionChange: {
Q_D(HbTextItem);
- d->mInvalidateShownText = true;
- updateGeometry();
+ d->scheduleTextBuild();
}
break;
case QEvent::FontChange: {
Q_D(HbTextItem);
- d->mInvalidateShownText = true;
- prepareGeometryChange();
- updateGeometry();
+
+ if (!d->mTextLayout.font().isCopyOf(font())) {
+
+#ifdef HB_TEXT_ITEM_LOGS
+ qDebug() << "fontChangeEvent: " << objectName()
+ << " text: " << text().left(20)
+ << " font: " << font();
+#endif // HB_TEXT_ITEM_LOGS
+
+ d->mTextLayout.setFont(font());
+ d->clearAdjustedSizeCache();
+ d->scheduleTextBuild();
+ prepareGeometryChange();
+ updateGeometry();
+ } else {
+ // ignoring event since it has no effect
+ return;
+ }
}
break;
@@ -1170,20 +1285,13 @@
/*!
\reimp
*/
-void HbTextItem::resizeEvent ( QGraphicsSceneResizeEvent * event )
+void HbTextItem::resizeEvent (QGraphicsSceneResizeEvent *event)
{
Q_D(HbTextItem);
HbWidgetBase::resizeEvent(event);
- d->setSize(event->newSize());
-
- if( ( qAbs(event->oldSize().width() - event->newSize().width()) > EPSILON ) &&
- ( ( event->oldSize().width() < preferredWidth() ) || ( event->newSize().width() < preferredWidth() ) ) ){
- if( d->adjustSizeHint() ) {
- updateGeometry();
- }
- }
+ d->scheduleTextBuild();
}
/*!
@@ -1205,9 +1313,23 @@
textOption.setWrapMode(textWrapMode);
d->mTextLayout.setTextOption(textOption);
if(!d->mText.isEmpty()) {
- d->mInvalidateShownText = true;
- d->mNeedToAdjustSizeHint = true;
- updateGeometry();
+ d->scheduleTextBuild();
+ prepareGeometryChange();
+ update();
+ }
+
+ // is size hint adjustable?
+ if (parentLayoutItem() && parentLayoutItem()->isLayout()) {
+ if (d->mAdjustedSize.isValid() &&
+ d->mAdjustedSize.width() > size().width()) {
+ // restore default size hint
+ d->mAdjustedSize = d->respectSizeLimits(
+ QSizeF(d->mAdjustedSize.width(), d->mDefaultHeight));
+ d->mMinWidthForAdjust = d->mAdjustedSize.width();
+ d->mMaxWidthForAdjust = QWIDGETSIZE_MAX;
+
+ updateGeometry();
+ }
}
}
}
@@ -1261,7 +1383,8 @@
}
/*!
- Returns true if text is cliped when item geometry is to small.
+ Returns true if text is clipped when item geometry is too small.
+
\sa HbTextItem::setTextClip(bool)
Equvalent of QGraphicsItem::flags().testFlag(QGraphicsItem::ItemClipsToShape)
@@ -1287,14 +1410,17 @@
void HbTextItem::setMinimumLines( int minLines )
{
Q_D( HbTextItem );
+ minLines = qMax(minLines, 1); // zero or nagative values are meanless and are restoring 1
+
d->setApiProtectionFlag(HbWidgetBasePrivate::AC_TextLinesMin, true);
if( minLines != d->mMinLines ) {
if( ( d->mMaxLines > 0 ) && ( minLines > d->mMaxLines ) ) {
d->mMaxLines = minLines;
}
+ d->mMinLines = minLines;
- d->mMinLines = minLines;
+ // not needed?: d->clearAdjustedSizeCache(); // some condition?
updateGeometry();
}
}
@@ -1317,12 +1443,18 @@
Q_D( HbTextItem );
d->setApiProtectionFlag(HbWidgetBasePrivate::AC_TextLinesMax, true);
+ maxLines = qMax(maxLines, 0);
+
if( maxLines != d->mMaxLines ) {
- if( ( d->mMinLines > 0 ) && ( maxLines > 0 ) && ( maxLines < d->mMinLines ) ){
+ if ((maxLines > 0) && (maxLines < d->mMinLines)){
d->mMinLines = maxLines;
}
+ d->mMaxLines = maxLines;
- d->mMaxLines = maxLines;
+ d->scheduleTextBuild();
+ prepareGeometryChange();
+ update();
+
updateGeometry();
#ifdef HB_TEXT_MEASUREMENT_UTILITY
if ( HbFeatureManager::instance()->featureStatus( HbFeatureManager::TextMeasurement ) ) {
@@ -1336,7 +1468,7 @@
\sa HbTextItem::setMinimumLines()
\sa HbTextItem::setMaximumLines()
\sa HbTextItem::maximumLines()
- \return "minimum lines" parameter
+ \return "minimum lines" parameter (zero value means unset)
*/
int HbTextItem::minimumLines() const
{
--- a/src/hbcore/primitives/hbtextitem_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/primitives/hbtextitem_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -54,8 +54,8 @@
void init(QGraphicsItem *parent);
void clear();
- bool doLayout(const QString& text, const qreal lineWidth, qreal leading);
- void setSize(const QSizeF &newSize);
+ bool doLayout(const QString& text, const qreal lineWidth, qreal lineSpacing);
+ void rebuildTextLayout(const QSizeF &newSize);
void updateTextOption();
void calculateVerticalOffset();
void updateLayoutDirection();
@@ -65,7 +65,12 @@
int findIndexOfLastLineBeforeY(qreal y) const;
QString elideLayoutedText(const QSizeF& size, const QFontMetricsF& metrics) const;
- bool adjustSizeHint();
+ bool isAdjustHightNeeded(const QSizeF& newSize, const QSizeF& prefSize);
+ void clearAdjustedSizeCache();
+
+ QSizeF respectSizeLimits(QSizeF size) const;
+
+ inline QSizeF calculatePrefferedSize(const QSizeF& constraint) const;
bool fadeNeeded(const QRectF& contentRect) const;
static inline void setupGradient(QLinearGradient *gradient, QColor color);
@@ -112,6 +117,8 @@
QRectF layoutBoundingRect() const;
QRectF boundingRect(const QRectF& contentsRect) const;
+ inline void scheduleTextBuild();
+
QString mText;
Qt::Alignment mAlignment;
Qt::TextElideMode mElideMode;
@@ -132,13 +139,17 @@
QRectF mFadeToRect;
QRectF mFadeFromRect;
- qreal mPrefHeight;
int mMinLines;
int mMaxLines;
- bool mNeedToAdjustSizeHint;
- QSizeF oldSize;
+ mutable QSizeF mAdjustedSize;
+ mutable qreal mMinWidthForAdjust;
+ mutable qreal mMaxWidthForAdjust;
+ mutable qreal mDefaultHeight;
mutable bool mUpdateColor;
+
+ bool mEventPosted;
+
static bool outlinesEnabled;
};
--- a/src/hbcore/primitives/hbtoucharea.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/primitives/hbtoucharea.h Wed Jun 23 18:33:25 2010 +0300
@@ -32,6 +32,7 @@
class HbTouchAreaPrivate;
class HB_CORE_EXPORT HbTouchArea: public HbWidgetBase {
+ //Q_OBJECT
public:
explicit HbTouchArea (QGraphicsItem *parent = 0);
virtual ~HbTouchArea ();
Binary file src/hbcore/resources/keymaps/100.txt has changed
Binary file src/hbcore/resources/keymaps/108.txt has changed
Binary file src/hbcore/resources/keymaps/109.txt has changed
Binary file src/hbcore/resources/keymaps/111_197.txt has changed
Binary file src/hbcore/resources/keymaps/111_225.txt has changed
Binary file src/hbcore/resources/keymaps/114.txt has changed
Binary file src/hbcore/resources/keymaps/115.txt has changed
Binary file src/hbcore/resources/keymaps/125.txt has changed
Binary file src/hbcore/resources/keymaps/129.txt has changed
Binary file src/hbcore/resources/keymaps/130.txt has changed
Binary file src/hbcore/resources/keymaps/14.txt has changed
Binary file src/hbcore/resources/keymaps/20.txt has changed
Binary file src/hbcore/resources/keymaps/24.txt has changed
Binary file src/hbcore/resources/keymaps/27.txt has changed
Binary file src/hbcore/resources/keymaps/28.txt has changed
Binary file src/hbcore/resources/keymaps/29.txt has changed
Binary file src/hbcore/resources/keymaps/30.txt has changed
Binary file src/hbcore/resources/keymaps/31_224.txt has changed
Binary file src/hbcore/resources/keymaps/31_225.txt has changed
Binary file src/hbcore/resources/keymaps/33.txt has changed
Binary file src/hbcore/resources/keymaps/36.txt has changed
Binary file src/hbcore/resources/keymaps/37_38.txt has changed
Binary file src/hbcore/resources/keymaps/37_74.txt has changed
Binary file src/hbcore/resources/keymaps/40.txt has changed
Binary file src/hbcore/resources/keymaps/42.txt has changed
Binary file src/hbcore/resources/keymaps/43.txt has changed
Binary file src/hbcore/resources/keymaps/48.txt has changed
Binary file src/hbcore/resources/keymaps/50.txt has changed
Binary file src/hbcore/resources/keymaps/51.txt has changed
Binary file src/hbcore/resources/keymaps/52.txt has changed
Binary file src/hbcore/resources/keymaps/58.txt has changed
Binary file src/hbcore/resources/keymaps/66.txt has changed
Binary file src/hbcore/resources/keymaps/71.txt has changed
Binary file src/hbcore/resources/keymaps/73.txt has changed
Binary file src/hbcore/resources/keymaps/76.txt has changed
Binary file src/hbcore/resources/keymaps/8.txt has changed
Binary file src/hbcore/resources/keymaps/85.txt has changed
Binary file src/hbcore/resources/keymaps/89.txt has changed
Binary file src/hbcore/resources/keymaps/90.txt has changed
Binary file src/hbcore/resources/keymaps/91_173.txt has changed
Binary file src/hbcore/resources/keymaps/91_30.txt has changed
Binary file src/hbcore/resources/keymaps/95.txt has changed
Binary file src/hbcore/resources/keymaps/96.txt has changed
--- a/src/hbcore/resources/themes/animations/hbdefault/qtg_status_progress.axml Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<animations>
-<icon name="qtg_status_progress" frame_duration="50" playmode="loop">
-<frame>qtg_status_progress_1</frame>
-<frame>qtg_status_progress_2</frame>
-<frame>qtg_status_progress_3</frame>
-<frame>qtg_status_progress_4</frame>
-<frame>qtg_status_progress_5</frame>
-</icon>
-</animations>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/effects/hbdefault/HS_friend_expand.fxml Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,28 @@
+<layers>
+<visual>
+ <param name="scale_x" type="anim">
+ <duration>0.3</duration>
+ <style>outback</style>
+ <keyframe at="0.0">0</keyframe>
+ <keyframe at="1.0">1</keyframe>
+ <start ref="visual.width">0.5</start>
+ <end ref="visual.width">1.0</end>
+ </param>
+ <param name="scale_y" type="anim">
+ <duration>0.3</duration>
+ <style>outback</style>
+ <keyframe at="0.0">0</keyframe>
+ <keyframe at="1.0">1</keyframe>
+ <start ref="visual.height">0.5</start>
+ <end ref="visual.height">1.0</end>
+ </param>
+ <param name="opacity" type="anim">
+ <style>linear</style>
+ <duration>0.3</duration>
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
+ </param>
+ <param name="scale_origin_x" ref="visual.width">0.5</param>
+ <param name="scale_origin_y" ref="visual.height">0.5</param>
+ </visual>
+</layers>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/effects/hbdefault/HS_friend_expand_bl.fxml Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<layers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="http://www.nokia.com/FXML/10.1">
+ <comment>Created using carbide.fx 1.5.0; FxML revision 0.84; Platform 10.1 </comment>
+ <visual src="Item">
+ <param name="scale_x" type="anim">
+ <duration>0.3</duration>
+ <style>outback</style>
+ <keyframe at="0.0">0</keyframe>
+ <keyframe at="1.0">1</keyframe>
+ </param>
+ <param name="scale_y" type="anim">
+ <duration>0.3</duration>
+ <style>outback</style>
+ <keyframe at="0.0">0</keyframe>
+ <keyframe at="1.0">1</keyframe>
+ </param>
+ <param name="opacity" type="anim">
+ <duration>0.3</duration>
+ <style>outback</style>
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
+ </param>
+ <param name="scale_origin_x" ref="visual.width">1.0</param>
+ <param name="scale_origin_y" ref="visual.height">0.0</param>
+ </visual>
+</layers>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/effects/hbdefault/HS_friend_expand_br.fxml Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<layers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="http://www.nokia.com/FXML/10.1">
+ <comment>Created using carbide.fx 1.5.0; FxML revision 0.84; Platform 10.1 </comment>
+ <visual src="Item">
+ <param name="scale_x" type="anim">
+ <duration>0.3</duration>
+ <style>outback</style>
+ <keyframe at="0.0">0</keyframe>
+ <keyframe at="1.0">1</keyframe>
+ </param>
+ <param name="scale_y" type="anim">
+ <duration>0.3</duration>
+ <style>outback</style>
+ <keyframe at="0.0">0</keyframe>
+ <keyframe at="1.0">1</keyframe>
+ </param>
+ <param name="opacity" type="anim">
+ <duration>0.3</duration>
+ <style>outback</style>
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
+ </param>
+ <param name="scale_origin_x" ref="visual.width">0.0</param>
+ <param name="scale_origin_y" ref="visual.height">0.0</param>
+ </visual>
+</layers>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/effects/hbdefault/HS_friend_expand_tl.fxml Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<layers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="http://www.nokia.com/FXML/10.1">
+ <comment>Created using carbide.fx 1.5.0; FxML revision 0.84; Platform 10.1 </comment>
+ <visual src="Item">
+ <param name="scale_x" type="anim">
+ <duration>0.3</duration>
+ <style>outback</style>
+ <keyframe at="0.0">0</keyframe>
+ <keyframe at="1.0">1</keyframe>
+ </param>
+ <param name="scale_y" type="anim">
+ <duration>0.3</duration>
+ <style>outback</style>
+ <keyframe at="0.0">0</keyframe>
+ <keyframe at="1.0">1</keyframe>
+ </param>
+ <param name="opacity" type="anim">
+ <duration>0.3</duration>
+ <style>outback</style>
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
+ </param>
+ <param name="scale_origin_x" ref="visual.width">1.0</param>
+ <param name="scale_origin_y" ref="visual.height">1.0</param>
+ </visual>
+</layers>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/effects/hbdefault/HS_friend_expand_tr.fxml Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<layers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="http://www.nokia.com/FXML/10.1">
+ <comment>Created using carbide.fx 1.5.0; FxML revision 0.84; Platform 10.1 </comment>
+ <visual src="Item">
+ <param name="scale_x" type="anim">
+ <duration>0.3</duration>
+ <style>outback</style>
+ <keyframe at="0.0">0</keyframe>
+ <keyframe at="1.0">1</keyframe>
+ </param>
+ <param name="scale_y" type="anim">
+ <duration>0.3</duration>
+ <style>outback</style>
+ <keyframe at="0.0">0</keyframe>
+ <keyframe at="1.0">1</keyframe>
+ </param>
+ <param name="opacity" type="anim">
+ <duration>0.3</duration>
+ <style>outback</style>
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
+ </param>
+ <param name="scale_origin_x" ref="visual.width">0.0</param>
+ <param name="scale_origin_y" ref="visual.height">1.0</param>
+ </visual>
+</layers>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/effects/hbdefault/HS_friend_minimize.fxml Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,10 @@
+<layers>
+<visual>
+ <param name="opacity" type="anim">
+ <style>linear</style>
+ <duration>0.3</duration>
+ <keyframe at="0.0">1.0</keyframe>
+ <keyframe at="1.0">0.0</keyframe>
+ </param>
+ </visual>
+</layers>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/effects/hbdefault/chatincoming_appear.fxml Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,11 @@
+<layers>
+ <visual>
+ <param name="translation_x" type="anim">
+ <duration>0.5</duration>
+ <keyframe at="0.0">-1.0</keyframe>
+ <keyframe at="1.0">0.0</keyframe>
+ <style>outquad</style>
+ <end ref="screen.width">1.0</end>
+ </param>
+ </visual>
+</layers>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/effects/hbdefault/chatoutgoing_appear.fxml Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,11 @@
+<layers>
+ <visual>
+ <param name="translation_x" type="anim">
+ <duration>0.5</duration>
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
+ <style>outquad</style>
+ <start ref="screen.width">1.0</start>
+ </param>
+ </visual>
+</layers>
\ No newline at end of file
--- a/src/hbcore/resources/themes/effects/hbdefault/gridviewitem_disappear.fxml Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/effects/hbdefault/gridviewitem_disappear.fxml Wed Jun 23 18:33:25 2010 +0300
@@ -8,7 +8,7 @@
</param>
<param name="scale_y" type="anim">
<duration>0.3</duration>
- <style>outquad</style>
+ <style>inoutquad</style>
<keyframe at="0.0">1.0</keyframe>
<keyframe at="1.0">0.8</keyframe>
</param>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/effects/hbdefault/mail_delete.fxml Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,25 @@
+<layers>
+ <visual>
+ <param name="scale_x" type="anim">
+ <duration>0.3</duration>
+ <style>inoutquad</style>
+ <keyframe at="0.0">1.0</keyframe>
+ <keyframe at="1.0">0.5</keyframe>
+ </param>
+ <param name="scale_y" type="anim">
+ <duration>0.3</duration>
+ <style>inoutquad</style>
+ <keyframe at="0.0">1.0</keyframe>
+ <keyframe at="1.0">0.5</keyframe>
+ </param>
+
+ <param name="opacity" type="anim">
+ <duration>0.3</duration>
+ <keyframe at="0.0">1.0</keyframe>
+ <keyframe at="1.0">0.0</keyframe>
+ </param>
+
+ <param name="scale_origin_x" ref="visual.width">0.5</param>
+ <param name="scale_origin_y" ref="visual.height">0.5</param>
+ </visual>
+</layers>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/effects/hbdefault/mail_send.fxml Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,49 @@
+<layers>
+ <visual>
+ <param name="opacity" type="anim">
+ <duration>0.5</duration>
+ <keyframe at="0.0">1.0</keyframe>
+ <keyframe at="1.0">0.0</keyframe>
+ <style>linear</style>
+ </param>
+ <param name="rotation_angle" type="anim">
+ <style>outquad</style>
+ <duration>0.5</duration>
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">60.0</keyframe>
+ </param>
+ <param name="rotation_origin_x" ref="visual.width">0.5</param>
+ <param name="rotation_origin_y" ref="visual.height">0.5</param>
+ <param name="rotation_axis_x">1</param>
+ <param name="scale_x" type="anim">
+ <style>outquad</style>
+ <duration>0.5</duration>
+ <keyframe at="0.0">1.0</keyframe>
+ <keyframe at="1.0">0.5</keyframe>
+ </param>
+ <param name="scale_origin_x" ref="visual.width">0.5</param>
+ <param name="scale_origin_y" ref="visual.height">0.5</param>
+ <param name="scale_y" type="anim">
+ <style>outquad</style>
+ <duration>0.5</duration>
+ <keyframe at="0.0">1.0</keyframe>
+ <keyframe at="1.0">0.5</keyframe>
+ </param>
+ <param name="translation_y" type="anim">
+ <duration>0.5</duration>
+ <style>inoutquad</style>
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">-1.0</keyframe>
+ <start ref="visual.top">1.0</start>
+ <end ref="screen.bottom">1.0</end>
+ </param>
+ <param name="translation_x" type="anim">
+ <duration>0.5</duration>
+ <style>outquad</style>
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
+ <start ref="visual.left">1.0</start>
+ <end ref="screen.left">1.0</end>
+ </param>
+ </visual>
+</layers>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/effects/hbdefault/taskswapper_appear.fxml Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,47 @@
+<layers>
+<visual>
+ <param name="scale_x" type="anim">
+ <duration>0.3</duration>
+ <style>outquad</style>
+ <keyframe at="0.0">0</keyframe>
+ <keyframe at="1.0">1</keyframe>
+ <start ref="visual.width">0.5</start>
+ <end ref="visual.width">1.0</end>
+ </param>
+ <param name="scale_y" type="anim">
+ <duration>0.3</duration>
+ <style>outquad</style>
+ <keyframe at="0.0">0</keyframe>
+ <keyframe at="1.0">1</keyframe>
+ <start ref="visual.height">0.5</start>
+ <end ref="visual.height">1.0</end>
+ </param>
+ <param name="opacity" type="anim">
+ <style>linear</style>
+ <duration>0.3</duration>
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
+ </param>
+ <param name="scale_origin_x" ref="visual.width">0.5</param>
+ <param name="scale_origin_y" ref="visual.height">0.5</param>
+ </visual>
+ <filter name="Drop Shadow" type="drop_shadow">
+ <param name="offset_x">0.0</param>
+ <param name="offset_y">5.0</param>
+ <param name="opacity" type="anim">
+ <style>linear</style>
+ <duration>0.4</duration>
+ <keyframe at="0.0">0.0</keyframe>
+ <keyframe at="0.5">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
+ </param>
+ <param name="steepness">8.0</param>
+ <param name="outline_x">1.0</param>
+ <param name="outline_y">1.0</param>
+ <param name="color">#000000</param>
+ </filter>
+</layers>
+
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/effects/hbdefault/taskswapper_disappear.fxml Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,43 @@
+<layers>
+<visual>
+
+ <param name="scale_x" type="anim">
+ <duration>0.3</duration>
+ <style>inoutquad</style>
+ <keyframe at="0.0">0</keyframe>
+ <keyframe at="1.0">1</keyframe>
+ <start ref="visual.width">1.0</start>
+ <end ref="visual.width">0.5</end>
+ </param>
+ <param name="scale_y" type="anim">
+ <duration>0.3</duration>
+ <style>inoutquad</style>
+ <keyframe at="0.0">0</keyframe>
+ <keyframe at="1.0">1</keyframe>
+ <start ref="visual.height">1.0</start>
+ <end ref="visual.height">0.5</end>
+ </param>
+ <param name="scale_origin_x" ref="visual.width">0.5</param>
+ <param name="scale_origin_y" ref="visual.height">0.5</param>
+ <param name="opacity" type="anim">
+ <style>linear</style>
+ <duration>0.3</duration>
+ <keyframe at="0.0">1.0</keyframe>
+ <keyframe at="1.0">0.0</keyframe>
+ </param>
+ </visual>
+ <filter name="Drop Shadow" type="drop_shadow">
+ <param name="offset_x">0.0</param>
+ <param name="offset_y">5.0</param>
+ <param name="opacity" type="anim">
+ <style>linear</style>
+ <duration>0.2</duration>
+ <keyframe at="0.0">1.0</keyframe>
+ <keyframe at="1.0">0.0</keyframe>
+ </param>
+ <param name="steepness">8.0</param>
+ <param name="outline_x">1.0</param>
+ <param name="outline_y">1.0</param>
+ <param name="color">#000000</param>
+ </filter>
+</layers>
--- a/src/hbcore/resources/themes/effects/hbdefault/viewitem_disappear.fxml Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/effects/hbdefault/viewitem_disappear.fxml Wed Jun 23 18:33:25 2010 +0300
@@ -8,7 +8,7 @@
</param>
<param name="scale_y" type="anim">
<duration>0.3</duration>
- <style>outquad</style>
+ <style>inoutquad</style>
<keyframe at="0.0">1.0</keyframe>
<keyframe at="1.0">0.8</keyframe>
</param>
Binary file src/hbcore/resources/themes/hbdefault.themeindex has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_highlight_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 50 10" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="10" stroke-opacity="0.2" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="9" stroke-opacity="0.2" width="50"/>
+<rect fill="url(#SVGID_1_)" height="8" width="50"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="6"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="7"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="24.9995" x2="24.9995" y1="-38.9995" y2="8.0244">
+<stop offset="0" style="stop-color:#9BD94A"/>
+<stop offset="1" style="stop-color:#15A62D"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_highlight_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v4c0,3.299,2.7,6,6,6h4V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v4c0,2.756,2.243,5,5,5h4V0H1z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v3c0,2.756,2.243,5,5,5h4V0H1z" fill="url(#SVGID_1_)"/>
+<path d="M6,6C4.346,6,3,4.654,3,3V0H2v3c0,2.205,1.794,4,4,4h4V6H6z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,7C3.794,7,2,5.205,2,3V0H1v3c0,2.756,2.243,5,5,5h4V7H6z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="-38.9995" y2="8.0244">
+<stop offset="0" style="stop-color:#9BD94A"/>
+<stop offset="1" style="stop-color:#15A62D"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_highlight_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v10h4c3.301,0,6-2.701,6-6V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v9h4c2.758,0,5-2.244,5-5V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v8h4c2.758,0,5-2.244,5-5V0H0z" fill="url(#SVGID_1_)"/>
+<path d="M7,0v3c0,1.654-1.346,3-3,3H0v1h4c2.206,0,4-1.795,4-4V0H7z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M8,0v3c0,2.205-1.794,4-4,4H0v1h4c2.758,0,5-2.244,5-5V0H8z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="-38.9995" y2="8.0244">
+<stop offset="0" style="stop-color:#9BD94A"/>
+<stop offset="1" style="stop-color:#15A62D"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_highlight_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 50 30" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="50"/>
+<rect fill="url(#SVGID_1_)" height="30" width="50"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="24.9995" x2="24.9995" y1="-9" y2="38.0247">
+<stop offset="0" style="stop-color:#9BD94A"/>
+<stop offset="1" style="stop-color:#15A62D"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_highlight_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 10 30" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="10"/>
+<rect fill="url(#SVGID_1_)" height="30" width="9" x="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="2"/>
+<rect fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="-9" y2="38.0247">
+<stop offset="0" style="stop-color:#9BD94A"/>
+<stop offset="1" style="stop-color:#15A62D"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_highlight_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 10 30" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="10"/>
+<rect fill="url(#SVGID_1_)" height="30" width="9"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="7"/>
+<rect fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="8"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="-9" y2="38.0247">
+<stop offset="0" style="stop-color:#9BD94A"/>
+<stop offset="1" style="stop-color:#15A62D"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_highlight_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 50 10" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="10" stroke-opacity="0.2" width="50"/>
+<rect fill="url(#SVGID_1_)" height="9" width="50" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="2"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="24.9995" x2="24.9995" y1="1" y2="48.0239">
+<stop offset="0" style="stop-color:#9BD94A"/>
+<stop offset="1" style="stop-color:#15A62D"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_highlight_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M6,0C2.7,0,0,2.699,0,6v4h10V0H6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.242,1,6v4h9V1H6z" fill="url(#SVGID_1_)"/>
+<path d="M6,2C3.794,2,2,3.793,2,6v4h1V6c0-1.654,1.346-3,3-3h4V2H6z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.242,1,6v4h1V6c0-2.207,1.794-4,4-4h4V1H6z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="1" y2="48.0239">
+<stop offset="0" style="stop-color:#9BD94A"/>
+<stop offset="1" style="stop-color:#15A62D"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_highlight_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,6c0-3.301-2.699-6-6-6H0v10h10V6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M9,6c0-2.758-2.242-5-5-5H0v9h9V6z" fill="url(#SVGID_1_)"/>
+<path d="M4,2H0v1h4c1.654,0,3,1.346,3,3v4h1V6C8,3.793,6.206,2,4,2z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M4,1H0v1h4c2.206,0,4,1.793,4,4v4h1V6C9,3.242,6.758,1,4,1z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="1" y2="48.0239">
+<stop offset="0" style="stop-color:#9BD94A"/>
+<stop offset="1" style="stop-color:#15A62D"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_normal_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 50 10" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="10" stroke-opacity="0.2" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="9" stroke-opacity="0.2" width="50"/>
+<rect fill="url(#SVGID_1_)" height="8" width="50"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="6"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="7"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="24.9995" x2="24.9995" y1="-38.9995" y2="8.0244">
+<stop offset="0" style="stop-color:#66CC69"/>
+<stop offset="1" style="stop-color:#2D993F"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_normal_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v4c0,3.299,2.7,6,6,6h4V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v4c0,2.756,2.243,5,5,5h4V0H1z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v3c0,2.756,2.243,5,5,5h4V0H1z" fill="url(#SVGID_1_)"/>
+<path d="M6,6C4.346,6,3,4.654,3,3V0H2v3c0,2.205,1.794,4,4,4h4V6H6z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,7C3.794,7,2,5.205,2,3V0H1v3c0,2.756,2.243,5,5,5h4V7H6z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="-38.9995" y2="8.0244">
+<stop offset="0" style="stop-color:#66CC69"/>
+<stop offset="1" style="stop-color:#2D993F"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_normal_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v10h4c3.301,0,6-2.701,6-6V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v9h4c2.758,0,5-2.244,5-5V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v8h4c2.758,0,5-2.244,5-5V0H0z" fill="url(#SVGID_1_)"/>
+<path d="M7,0v3c0,1.654-1.346,3-3,3H0v1h4c2.206,0,4-1.795,4-4V0H7z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M8,0v3c0,2.205-1.794,4-4,4H0v1h4c2.758,0,5-2.244,5-5V0H8z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="-38.9995" y2="8.0244">
+<stop offset="0" style="stop-color:#66CC69"/>
+<stop offset="1" style="stop-color:#2D993F"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_normal_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 50 30" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="50"/>
+<rect fill="url(#SVGID_1_)" height="30" width="50"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="24.9995" x2="24.9995" y1="-9" y2="38.0247">
+<stop offset="0" style="stop-color:#66CC69"/>
+<stop offset="1" style="stop-color:#2D993F"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_normal_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 10 30" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="10"/>
+<rect fill="url(#SVGID_1_)" height="30" width="9" x="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="2"/>
+<rect fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="-9" y2="38.0247">
+<stop offset="0" style="stop-color:#66CC69"/>
+<stop offset="1" style="stop-color:#2D993F"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_normal_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 10 30" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="10"/>
+<rect fill="url(#SVGID_1_)" height="30" width="9"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="7"/>
+<rect fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="8"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="-9" y2="38.0247">
+<stop offset="0" style="stop-color:#66CC69"/>
+<stop offset="1" style="stop-color:#2D993F"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_normal_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 50 10" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="10" stroke-opacity="0.2" width="50"/>
+<rect fill="url(#SVGID_1_)" height="9" width="50" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="2"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="24.9995" x2="24.9995" y1="1" y2="48.0239">
+<stop offset="0" style="stop-color:#66CC69"/>
+<stop offset="1" style="stop-color:#2D993F"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_normal_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M6,0C2.7,0,0,2.699,0,6v4h10V0H6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.242,1,6v4h9V1H6z" fill="url(#SVGID_1_)"/>
+<path d="M6,2C3.794,2,2,3.793,2,6v4h1V6c0-1.654,1.346-3,3-3h4V2H6z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.242,1,6v4h1V6c0-2.207,1.794-4,4-4h4V1H6z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="1" y2="48.0239">
+<stop offset="0" style="stop-color:#66CC69"/>
+<stop offset="1" style="stop-color:#2D993F"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_normal_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,6c0-3.301-2.699-6-6-6H0v10h10V6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M9,6c0-2.758-2.242-5-5-5H0v9h9V6z" fill="url(#SVGID_1_)"/>
+<path d="M4,2H0v1h4c1.654,0,3,1.346,3,3v4h1V6C8,3.793,6.206,2,4,2z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M4,1H0v1h4c2.206,0,4,1.793,4,4v4h1V6C9,3.242,6.758,1,4,1z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="1" y2="48.0239">
+<stop offset="0" style="stop-color:#66CC69"/>
+<stop offset="1" style="stop-color:#2D993F"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_pressed_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 50 10" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="10" stroke-opacity="0.2" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="9" stroke-opacity="0.2" width="50"/>
+<rect fill="url(#SVGID_1_)" height="8" width="50"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="6"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="7"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="25.0005" x2="25.0005" y1="8" y2="-38.8404">
+<stop offset="0" style="stop-color:#59B35C"/>
+<stop offset="1" style="stop-color:#217330"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_pressed_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v4c0,3.299,2.7,6,6,6h4V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v4c0,2.756,2.243,5,5,5h4V0H1z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v3c0,2.756,2.243,5,5,5h4V0H1z" fill="url(#SVGID_1_)"/>
+<path d="M6,6C4.346,6,3,4.654,3,3V0H2v3c0,2.205,1.794,4,4,4h4V6H6z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,7C3.794,7,2,5.205,2,3V0H1v3c0,2.756,2.243,5,5,5h4V7H6z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="8" y2="-38.8404">
+<stop offset="0" style="stop-color:#59B35C"/>
+<stop offset="1" style="stop-color:#217330"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_pressed_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v10h4c3.301,0,6-2.701,6-6V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v9h4c2.758,0,5-2.244,5-5V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v8h4c2.758,0,5-2.244,5-5V0H0z" fill="url(#SVGID_1_)"/>
+<path d="M7,0v3c0,1.654-1.346,3-3,3H0v1h4c2.206,0,4-1.795,4-4V0H7z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M8,0v3c0,2.205-1.794,4-4,4H0v1h4c2.758,0,5-2.244,5-5V0H8z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="8" y2="-38.8404">
+<stop offset="0" style="stop-color:#59B35C"/>
+<stop offset="1" style="stop-color:#217330"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_pressed_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 50 30" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="50"/>
+<rect fill="url(#SVGID_1_)" height="30" width="50"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="25.0005" x2="25.0005" y1="38" y2="-8.8397">
+<stop offset="0" style="stop-color:#59B35C"/>
+<stop offset="1" style="stop-color:#217330"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_pressed_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 10 30" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="10"/>
+<rect fill="url(#SVGID_1_)" height="30" width="9" x="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="2"/>
+<rect fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="38" y2="-8.8397">
+<stop offset="0" style="stop-color:#59B35C"/>
+<stop offset="1" style="stop-color:#217330"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_pressed_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 10 30" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="10"/>
+<rect fill="url(#SVGID_1_)" height="30" width="9"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="7"/>
+<rect fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="8"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="38" y2="-8.8397">
+<stop offset="0" style="stop-color:#59B35C"/>
+<stop offset="1" style="stop-color:#217330"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_pressed_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 50 10" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="10" stroke-opacity="0.2" width="50"/>
+<rect fill="url(#SVGID_1_)" height="9" width="50" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="2"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="25.0005" x2="25.0005" y1="48.001" y2="1.1606">
+<stop offset="0" style="stop-color:#59B35C"/>
+<stop offset="1" style="stop-color:#217330"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_pressed_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M6,0C2.7,0,0,2.699,0,6v4h10V0H6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.242,1,6v4h9V1H6z" fill="url(#SVGID_1_)"/>
+<path d="M6,2C3.794,2,2,3.793,2,6v4h1V6c0-1.654,1.346-3,3-3h4V2H6z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.242,1,6v4h1V6c0-2.207,1.794-4,4-4h4V1H6z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="48.001" y2="1.1606">
+<stop offset="0" style="stop-color:#59B35C"/>
+<stop offset="1" style="stop-color:#217330"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_green_pressed_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,6c0-3.301-2.699-6-6-6H0v10h10V6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M9,6c0-2.758-2.242-5-5-5H0v9h9V6z" fill="url(#SVGID_1_)"/>
+<path d="M4,2H0v1h4c1.654,0,3,1.346,3,3v4h1V6C8,3.793,6.206,2,4,2z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M4,1H0v1h4c2.206,0,4,1.793,4,4v4h1V6C9,3.242,6.758,1,4,1z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="48.001" y2="1.1606">
+<stop offset="0" style="stop-color:#59B35C"/>
+<stop offset="1" style="stop-color:#217330"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_highlight_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 50 10" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="10" stroke-opacity="0.2" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="9" stroke-opacity="0.2" width="50"/>
+<rect fill="url(#SVGID_1_)" height="8" width="50"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="6"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="7"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="24.9995" x2="24.9995" y1="-38.9995" y2="8.0244">
+<stop offset="0" style="stop-color:#FA6464"/>
+<stop offset="1" style="stop-color:#D62700"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_highlight_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v4c0,3.299,2.7,6,6,6h4V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v4c0,2.756,2.243,5,5,5h4V0H1z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v3c0,2.756,2.243,5,5,5h4V0H1z" fill="url(#SVGID_1_)"/>
+<path d="M6,6C4.346,6,3,4.654,3,3V0H2v3c0,2.205,1.795,4,4,4h4V6H6z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,7C3.795,7,2,5.205,2,3V0H1v3c0,2.756,2.243,5,5,5h4V7H6z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="-38.9995" y2="8.0244">
+<stop offset="0" style="stop-color:#FA6464"/>
+<stop offset="1" style="stop-color:#D62700"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_highlight_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v10h4c3.301,0,6-2.701,6-6V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v9h4c2.758,0,5-2.244,5-5V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v8h4c2.758,0,5-2.244,5-5V0H0z" fill="url(#SVGID_1_)"/>
+<path d="M7,0v3c0,1.654-1.346,3-3,3H0v1h4c2.206,0,4-1.795,4-4V0H7z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M8,0v3c0,2.205-1.794,4-4,4H0v1h4c2.758,0,5-2.244,5-5V0H8z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="-38.9995" y2="8.0244">
+<stop offset="0" style="stop-color:#FA6464"/>
+<stop offset="1" style="stop-color:#D62700"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_highlight_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 50 30" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="50"/>
+<rect fill="url(#SVGID_1_)" height="30" width="50"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="24.9995" x2="24.9995" y1="-9" y2="38.0247">
+<stop offset="0" style="stop-color:#FA6464"/>
+<stop offset="1" style="stop-color:#D62700"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_highlight_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 10 30" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="10"/>
+<rect fill="url(#SVGID_1_)" height="30" width="9" x="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="2"/>
+<rect fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="-9" y2="38.0247">
+<stop offset="0" style="stop-color:#FA6464"/>
+<stop offset="1" style="stop-color:#D62700"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_highlight_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 10 30" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="10"/>
+<rect fill="url(#SVGID_1_)" height="30" width="9"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="7"/>
+<rect fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="8"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="-9" y2="38.0247">
+<stop offset="0" style="stop-color:#FA6464"/>
+<stop offset="1" style="stop-color:#D62700"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_highlight_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 50 10" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="10" stroke-opacity="0.2" width="50"/>
+<rect fill="url(#SVGID_1_)" height="9" width="50" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="2"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="24.9995" x2="24.9995" y1="1" y2="48.0239">
+<stop offset="0" style="stop-color:#FA6464"/>
+<stop offset="1" style="stop-color:#D62700"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_highlight_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M6,0C2.7,0,0,2.699,0,6v4h10V0H6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.242,1,6v4h9V1H6z" fill="url(#SVGID_1_)"/>
+<path d="M6,2C3.795,2,2,3.793,2,6v4h1V6c0-1.654,1.346-3,3-3h4V2H6z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.242,1,6v4h1V6c0-2.207,1.795-4,4-4h4V1H6z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="1" y2="48.0239">
+<stop offset="0" style="stop-color:#FA6464"/>
+<stop offset="1" style="stop-color:#D62700"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_highlight_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,6c0-3.301-2.699-6-6-6H0v10h10V6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M9,6c0-2.758-2.242-5-5-5H0v9h9V6z" fill="url(#SVGID_1_)"/>
+<path d="M4,2H0v1h4c1.654,0,3,1.346,3,3v4h1V6C8,3.793,6.206,2,4,2z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M4,1H0v1h4c2.206,0,4,1.793,4,4v4h1V6C9,3.242,6.758,1,4,1z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="1" y2="48.0239">
+<stop offset="0" style="stop-color:#FA6464"/>
+<stop offset="1" style="stop-color:#D62700"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_normal_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 50 10" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="10" stroke-opacity="0.2" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="9" stroke-opacity="0.2" width="50"/>
+<rect fill="url(#SVGID_1_)" height="8" width="50"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="6"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="7"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="24.9995" x2="24.9995" y1="-38.9995" y2="8.0244">
+<stop offset="0" style="stop-color:#D45B5B"/>
+<stop offset="1" style="stop-color:#A82222"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_normal_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v4c0,3.299,2.7,6,6,6h4V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v4c0,2.756,2.243,5,5,5h4V0H1z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v3c0,2.756,2.243,5,5,5h4V0H1z" fill="url(#SVGID_1_)"/>
+<path d="M6,6C4.346,6,3,4.654,3,3V0H2v3c0,2.205,1.794,4,4,4h4V6H6z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,7C3.794,7,2,5.205,2,3V0H1v3c0,2.756,2.243,5,5,5h4V7H6z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="-38.9995" y2="8.0244">
+<stop offset="0" style="stop-color:#D45B5B"/>
+<stop offset="1" style="stop-color:#A82222"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_normal_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v10h4c3.301,0,6-2.701,6-6V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v9h4c2.758,0,5-2.244,5-5V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v8h4c2.758,0,5-2.244,5-5V0H0z" fill="url(#SVGID_1_)"/>
+<path d="M7,0v3c0,1.654-1.346,3-3,3H0v1h4c2.206,0,4-1.795,4-4V0H7z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M8,0v3c0,2.205-1.794,4-4,4H0v1h4c2.758,0,5-2.244,5-5V0H8z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="-38.9995" y2="8.0244">
+<stop offset="0" style="stop-color:#D45B5B"/>
+<stop offset="1" style="stop-color:#A82222"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_normal_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 50 30" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="50"/>
+<rect fill="url(#SVGID_1_)" height="30" width="50"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="24.9995" x2="24.9995" y1="-9" y2="38.0247">
+<stop offset="0" style="stop-color:#D45B5B"/>
+<stop offset="1" style="stop-color:#A82222"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_normal_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 10 30" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="10"/>
+<rect fill="url(#SVGID_1_)" height="30" width="9" x="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="2"/>
+<rect fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="-9" y2="38.0247">
+<stop offset="0" style="stop-color:#D45B5B"/>
+<stop offset="1" style="stop-color:#A82222"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_normal_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 10 30" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="10"/>
+<rect fill="url(#SVGID_1_)" height="30" width="9"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="7"/>
+<rect fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="8"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="-9" y2="38.0247">
+<stop offset="0" style="stop-color:#D45B5B"/>
+<stop offset="1" style="stop-color:#A82222"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_normal_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 50 10" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="10" stroke-opacity="0.2" width="50"/>
+<rect fill="url(#SVGID_1_)" height="9" width="50" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="2"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="24.9995" x2="24.9995" y1="1" y2="48.0239">
+<stop offset="0" style="stop-color:#D45B5B"/>
+<stop offset="1" style="stop-color:#A82222"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_normal_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M6,0C2.7,0,0,2.699,0,6v4h10V0H6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.242,1,6v4h9V1H6z" fill="url(#SVGID_1_)"/>
+<path d="M6,2C3.794,2,2,3.793,2,6v4h1V6c0-1.654,1.346-3,3-3h4V2H6z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.242,1,6v4h1V6c0-2.207,1.794-4,4-4h4V1H6z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="1" y2="48.0239">
+<stop offset="0" style="stop-color:#D45B5B"/>
+<stop offset="1" style="stop-color:#A82222"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_normal_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,6c0-3.301-2.699-6-6-6H0v10h10V6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M9,6c0-2.758-2.242-5-5-5H0v9h9V6z" fill="url(#SVGID_1_)"/>
+<path d="M4,2H0v1h4c1.654,0,3,1.346,3,3v4h1V6C8,3.793,6.206,2,4,2z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M4,1H0v1h4c2.206,0,4,1.793,4,4v4h1V6C9,3.242,6.758,1,4,1z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="1" y2="48.0239">
+<stop offset="0" style="stop-color:#D45B5B"/>
+<stop offset="1" style="stop-color:#A82222"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_pressed_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 50 10" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="10" stroke-opacity="0.2" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="9" stroke-opacity="0.2" width="50"/>
+<rect fill="url(#SVGID_1_)" height="8" width="50"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="6"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="7"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="25.0005" x2="25.0005" y1="8" y2="-39.0326">
+<stop offset="0" style="stop-color:#B34D4D"/>
+<stop offset="1" style="stop-color:#731717"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_pressed_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v4c0,3.299,2.7,6,6,6h4V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v4c0,2.756,2.243,5,5,5h4V0H1z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v3c0,2.756,2.243,5,5,5h4V0H1z" fill="url(#SVGID_1_)"/>
+<path d="M6,6C4.346,6,3,4.654,3,3V0H2v3c0,2.205,1.795,4,4,4h4V6H6z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,7C3.795,7,2,5.205,2,3V0H1v3c0,2.756,2.243,5,5,5h4V7H6z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="8" y2="-39.0326">
+<stop offset="0" style="stop-color:#B34D4D"/>
+<stop offset="1" style="stop-color:#731717"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_pressed_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v10h4c3.301,0,6-2.701,6-6V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v9h4c2.758,0,5-2.244,5-5V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v8h4c2.758,0,5-2.244,5-5V0H0z" fill="url(#SVGID_1_)"/>
+<path d="M7,0v3c0,1.654-1.346,3-3,3H0v1h4c2.206,0,4-1.795,4-4V0H7z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M8,0v3c0,2.205-1.794,4-4,4H0v1h4c2.758,0,5-2.244,5-5V0H8z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="8" y2="-39.0326">
+<stop offset="0" style="stop-color:#B34D4D"/>
+<stop offset="1" style="stop-color:#731717"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_pressed_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 50 30" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="50"/>
+<rect fill="url(#SVGID_1_)" height="30" width="50"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="25.0005" x2="25.0005" y1="38" y2="-9.0318">
+<stop offset="0" style="stop-color:#B34D4D"/>
+<stop offset="1" style="stop-color:#731717"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_pressed_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 10 30" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="10"/>
+<rect fill="url(#SVGID_1_)" height="30" width="9" x="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="2"/>
+<rect fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="38" y2="-9.0318">
+<stop offset="0" style="stop-color:#B34D4D"/>
+<stop offset="1" style="stop-color:#731717"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_pressed_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 10 30" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="10"/>
+<rect fill="url(#SVGID_1_)" height="30" width="9"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="7"/>
+<rect fill-opacity="0.2" height="30" stroke-opacity="0.2" width="1" x="8"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="38" y2="-9.0318">
+<stop offset="0" style="stop-color:#B34D4D"/>
+<stop offset="1" style="stop-color:#731717"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_pressed_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 50 10" width="50px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="50"/>
+<rect fill="#14141E" fill-opacity="0.2" height="10" stroke-opacity="0.2" width="50"/>
+<rect fill="url(#SVGID_1_)" height="9" width="50" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="2"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="50" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="25.0005" x2="25.0005" y1="48.001" y2="0.9684">
+<stop offset="0" style="stop-color:#B34D4D"/>
+<stop offset="1" style="stop-color:#731717"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_pressed_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M6,0C2.7,0,0,2.699,0,6v4h10V0H6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.242,1,6v4h9V1H6z" fill="url(#SVGID_1_)"/>
+<path d="M6,2C3.795,2,2,3.793,2,6v4h1V6c0-1.654,1.346-3,3-3h4V2H6z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.242,1,6v4h1V6c0-2.207,1.795-4,4-4h4V1H6z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="48.001" y2="0.9684">
+<stop offset="0" style="stop-color:#B34D4D"/>
+<stop offset="1" style="stop-color:#731717"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_btn_red_pressed_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,6c0-3.301-2.699-6-6-6H0v10h10V6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M9,6c0-2.758-2.242-5-5-5H0v9h9V6z" fill="url(#SVGID_1_)"/>
+<path d="M4,2H0v1h4c1.654,0,3,1.346,3,3v4h1V6C8,3.793,6.206,2,4,2z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M4,1H0v1h4c2.206,0,4,1.793,4,4v4h1V6C9,3.242,6.758,1,4,1z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="48.001" y2="0.9684">
+<stop offset="0" style="stop-color:#B34D4D"/>
+<stop offset="1" style="stop-color:#731717"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_focused_day_ind_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 80 10" width="80px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="80"/>
+<rect fill="url(#SVGID_1_)" height="10" width="80"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="39.9995" x2="39.9995" y1="-89.9995" y2="10.6015">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_focused_day_ind_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,4c0,3.3,2.7,6,6,6h4V0H0V4z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="10" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5" x2="5" y1="-89.9995" y2="10.6015">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_focused_day_ind_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,10h4c3.3,0,6-2.7,6-6V0H0V10z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="10" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5" x2="5" y1="-89.9995" y2="10.6015">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_focused_day_ind_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="80px" version="1.1" viewBox="0 0 80 80" width="80px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="80" width="80"/>
+<rect fill="url(#SVGID_1_)" height="80" width="80"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="39.9995" x2="39.9995" y1="-10" y2="90.6014">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_focused_day_ind_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="80px" version="1.1" viewBox="0 0 10 80" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="80" width="10"/>
+<rect fill="url(#SVGID_1_)" height="80" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5" x2="5" y1="-10" y2="90.6014">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_focused_day_ind_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="80px" version="1.1" viewBox="0 0 10 80" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="80" width="10"/>
+<rect fill="url(#SVGID_1_)" height="80" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5" x2="5" y1="-10" y2="90.6014">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_focused_day_ind_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 80 10" width="80px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="80"/>
+<rect fill="url(#SVGID_1_)" height="10" width="80"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="39.9995" x2="39.9995" y1="0" y2="100.601">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_focused_day_ind_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,0H6C2.7,0,0,2.7,0,6v4h10V0z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="10" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5" x2="5" y1="0" y2="100.601">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_focused_day_ind_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,6c0-3.3-2.7-6-6-6H0v10h10V6z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="10" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5" x2="5" y1="0" y2="100.601">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_monthgrid_bg_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 80 10" width="80px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="80"/>
+<g>
+<rect fill="#FFFFFF" height="10" width="80"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_monthgrid_bg_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<g>
+<rect fill="#FFFFFF" height="10" width="10"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_monthgrid_bg_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<g>
+<rect fill="#FFFFFF" height="10" width="10"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_monthgrid_bg_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="80px" version="1.1" viewBox="0 0 80 80" width="80px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="80" width="80"/>
+<g>
+<rect fill="#FFFFFF" height="80" width="80"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_monthgrid_bg_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="80px" version="1.1" viewBox="0 0 10 80" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="80" width="10"/>
+<g>
+<rect fill="#FFFFFF" height="80" width="10"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_monthgrid_bg_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="80px" version="1.1" viewBox="0 0 10 80" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="80" width="10"/>
+<g>
+<rect fill="#FFFFFF" height="80" width="10"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_monthgrid_bg_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 80 10" width="80px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="80"/>
+<g>
+<rect fill="#FFFFFF" height="10" width="80"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_monthgrid_bg_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<g>
+<rect fill="#FFFFFF" height="10" width="10"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_monthgrid_bg_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<g>
+<rect fill="#FFFFFF" height="10" width="10"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_monthgrid_title_bg_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="34px" version="1.1" viewBox="0 0 34 34" width="34px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#7D7D82" height="34" width="34"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_monthgrid_title_bg_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="34px" version="1.1" viewBox="0 0 34 34" width="34px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#7D7D82" height="34" width="34"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_monthgrid_title_bg_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="34px" version="1.1" viewBox="0 0 34 34" width="34px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#7D7D82" height="34" width="34"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_preview_bg_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 80 10" width="80px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="80"/>
+<rect fill="#14141E" fill-opacity="0.1" height="10" stroke-opacity="0.1" width="80"/>
+<rect fill="#14141E" fill-opacity="0.2" height="9" stroke-opacity="0.2" width="80"/>
+<rect fill="#FFFFFF" height="8" width="80"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_preview_bg_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v3c0,3.859,3.141,7,7,7h3V0H0z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M1,0v3c0,3.301,2.7,6,6,6h3V0H1z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v2c0,3.301,2.7,6,6,6h3V0H1z" fill="#FFFFFF"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_preview_bg_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v10h3c3.859,0,7-3.141,7-7V0H0z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M0,0v9h3c3.3,0,6-2.699,6-6V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v8h3c3.3,0,6-2.699,6-6V0H0z" fill="#FFFFFF"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_preview_bg_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="80px" version="1.1" viewBox="0 0 80 80" width="80px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="80" width="80"/>
+<rect fill="#FFFFFF" height="80" width="80"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_preview_bg_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="80px" version="1.1" viewBox="0 0 10 80" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="80" width="10"/>
+<rect fill="#14141E" fill-opacity="0.1" height="80" stroke-opacity="0.1" width="10"/>
+<rect fill="#FFFFFF" height="80" width="9" x="1"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_preview_bg_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="80px" version="1.1" viewBox="0 0 10 80" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="80" width="10"/>
+<rect fill="#14141E" fill-opacity="0.1" height="80" stroke-opacity="0.1" width="10"/>
+<rect fill="#FFFFFF" height="80" width="9"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_preview_bg_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 80 10" width="80px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="80"/>
+<rect fill="#14141E" fill-opacity="0.1" height="10" stroke-opacity="0.1" width="80"/>
+<rect fill="#FFFFFF" height="9" width="80" y="1"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_preview_bg_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M7,0C3.141,0,0,3.141,0,7v3h10V0H7z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M7,1C3.7,1,1,3.701,1,7v3h9V1H7z" fill="#FFFFFF"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_preview_bg_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,7c0-3.859-3.141-7-7-7H0v10h10V7z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M9,8c0-3.299-2.7-6-6-6H0v8h9V8z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M9,7c0-3.299-2.7-6-6-6H0v9h9V7z" fill="#FFFFFF"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_preview_title_bg_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="34px" version="1.1" viewBox="0 0 34 34" width="34px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="34" width="33.999" y="0"/>
+<rect fill="url(#SVGID_1_)" height="34" width="34"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="16.9995" x2="16.9995" y1="0" y2="34.0005">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_preview_title_bg_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="34px" version="1.1" viewBox="0 0 34 34" width="34px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="34" width="34" y="0"/>
+<path d="M6,0C2.7,0,0,2.7,0,6v28h34V0H6z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="34" width="34"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="17" x2="17" y1="0" y2="34.0005">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_cal_preview_title_bg_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="34px" version="1.1" viewBox="0 0 34 34" width="34px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="34" width="33.999" x="0.001" y="0"/>
+<path d="M34,6c0-3.3-2.7-6-6-6H0v34h34V6z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="34" width="34"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="17" x2="17" y1="0" y2="34.0005">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_highlight_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 315 15" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="315"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="15" stroke-opacity="0.1" width="315"/>
+<rect fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" height="14" stroke-opacity="0.2" width="315"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="13" width="315"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="12"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="11"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.4995" x2="157.4995" y1="-37.999" y2="12.7608">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_highlight_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" height="15" width="15"/>
+<path d="M0,0v6c0,4.963,4.038,9,9,9h6V0H0z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M1,0v6c0,4.412,3.589,8,8,8h6V0H1z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M1,0v5c0,4.41,3.589,8,8,8h6V0H1z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M9,12c-3.86,0-7-3.139-7-7V0H1v5c0,4.412,3.589,8,8,8h6v-1H9z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M9,11c-3.309,0-6-2.691-6-6V0H2v5 c0,3.861,3.14,7,7,7h6v-1H9z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="8" x2="8" y1="-37.999" y2="12.7608">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_highlight_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="15"/>
+<path d="M0,0v15h6c4.963,0,9-4.037,9-9V0H0z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M0,0v14h6c4.411,0,8-3.588,8-8V0H0z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M0,0v13h6c4.411,0,8-3.59,8-8V0H0z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M13,0v5c0,3.861-3.141,7-7,7H0v1h6c4.411,0,8-3.588,8-8V0H13z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M12,0v5c0,3.309-2.691,6-6,6H0v1h6 c3.859,0,7-3.139,7-7V0H12z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="7" x2="7" y1="-37.999" y2="12.7608">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_highlight_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 315 30" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="315"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="315"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.4995" x2="157.4995" y1="-7.9995" y2="42.7613">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_highlight_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="30" stroke-opacity="0.1" width="15"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="14" x="1"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="1" x="1" y="0"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="1" x="2" y="0"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="7.9995" x2="7.9995" y1="-7.9995" y2="42.7613">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_highlight_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="30" stroke-opacity="0.1" width="15"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="14"/>
+<polygon fill-opacity="0.2" fill-rule="evenodd" points="14,0 13,0 13,30 14,30 14,0.001 " stroke-opacity="0.2"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="1" x="12" y="0"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="6.9995" x2="6.9995" y1="-7.9995" y2="42.7613">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_highlight_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 315 15" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="315"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="315"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="9" stroke-opacity="0.1" width="315" y="6"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="8" width="315" y="7"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="7"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="8"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.4995" x2="157.4995" y1="6.9995" y2="57.7593">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_highlight_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="15"/>
+<path d="M11,6c-4.611,0-7.485-2.655-8.638-5.14 C2.032,0.149,1.552,0,1.207,0C0.652,0,0.191,0.406,0.031,1.036L0,1.157V15h15V6H11z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M11,7C6,7,2.797,4.173,1.455,1.281 C1.161,0.648,1,1.282,1,1.282V15h14V7H11z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M11,7C6,7,2.797,4.174,1.455,1.282C1.161,0.649,1,1.283,1,1.283V15 h1V3.971C3.843,6.177,6.843,8,11,8h4V7H11z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M11,8C6.843,8,3.843,6.177,2,3.971V15h1V6.334 C5.191,8.067,7.957,9,11,9h4V8H11z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="8" x2="8" y1="7.0005" y2="57.7603">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_highlight_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="15"/>
+<path d="M15,15c0-4.962-4.037-9-9-9H0v9L15,15L15,15z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M6,7H0v8h14v0C14,10.588,10.411,7,6,7z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M6,7H0v1h6c3.859,0,7,3.14,7,7h1C14,10.589,10.411,7,6,7z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M6,8H0v1h6c3.309,0,6,2.691,6,6h1 C13,11.141,9.859,8,6,8z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="7" x2="7" y1="6.9995" y2="57.7593">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_normal_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 315 15" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="315"/>
+<rect fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" height="14" stroke-opacity="0.2" width="315"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="15" stroke-opacity="0.1" width="315"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="315"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.4995" x2="157.4995" y1="-35.6665" y2="10.8687">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="11" width="315"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="157.4995" x2="157.4995" y1="-43.7495" y2="13.3054">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" fill-rule="evenodd" height="3" width="315" y="10"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_normal_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<path d="M1,0v6c0,4.412,3.589,8,8,8h6V0H1z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M0,6c0,4.963,4.038,9,9,9h6V0H0V6z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="15"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="9" x2="9" y1="-35.6665" y2="10.8687">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M3,5c0,3.309,2.691,6,6,6h6V0H3V5z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="8" x2="8" y1="-43.7495" y2="13.3053">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+<path d="M1,0v5c0,4.41,3.589,8,8,8h6v-3H9c-2.757,0-5-2.244-5-5V0H1 z" fill="url(#SVGID_2_)" fill-rule="evenodd"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_normal_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<path d="M0,0v14h6c4.411,0,8-3.588,8-8V0H0z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M0,15h6c4.963,0,9-4.037,9-9V0H0V15z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="15"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="6" x2="6" y1="-35.6665" y2="10.8687">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M0,11h6c3.309,0,6-2.691,6-6V0H0V11z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="7" x2="7" y1="-43.7495" y2="13.3053">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+<path d="M11,5c0,2.756-2.243,5-5,5H0v3h6c4.411,0,8-3.59,8-8V0h-3V5 z" fill="url(#SVGID_2_)" fill-rule="evenodd"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_normal_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 315 30" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="315"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="315"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.4995" x2="157.4995" y1="-5.667" y2="40.8689">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_normal_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="15"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="30" stroke-opacity="0.1" width="15"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="9" x2="9" y1="-5.667" y2="40.8689">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="12" x="3"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="2.5" x2="2.5" y1="-13.75" y2="43.3058">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" fill-rule="evenodd" height="30" width="3" x="1"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_normal_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="15"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="30" stroke-opacity="0.1" width="15"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="6" x2="6" y1="-5.667" y2="40.8689">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="12"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="12.5" x2="12.5" y1="-13.75" y2="43.3058">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" fill-rule="evenodd" height="30" width="3" x="11"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_normal_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 315 15" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="315"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="9" stroke-opacity="0.1" width="315" y="6"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="315"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.4995" x2="157.4995" y1="9.333" y2="55.8682">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="6" width="315" y="9"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="157.4995" x2="157.4995" y1="1.25" y2="58.3049">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" fill-rule="evenodd" height="3" width="315" y="7"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_normal_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<path d="M15,6h-4C6.389,6,3.515,3.344,2.362,0.859 C2.032,0.148,1.552,0,1.207,0C0.652,0,0.191,0.406,0.031,1.035L0,1.156V15h15V6z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="15"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="9" x2="9" y1="9.333" y2="55.8683">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M15,9h-4C9.141,9,7.384,8.656,5.779,7.979L3,6.804V15h12V9z " fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="8" x2="8" y1="1.25" y2="58.3048">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+<path d="M4,8.313L5.39,8.9C7.116,9.629,9.004,10,11,10h4V7h-4 C6,7,2.797,4.174,1.455,1.281C1.161,0.648,1,1.281,1,1.281V15h3V8.313z" fill="url(#SVGID_2_)" fill-rule="evenodd"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_normal_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<path d="M6,6H0v9h15C15,10.037,10.963,6,6,6z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="15"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="6" x2="6" y1="9.333" y2="55.8682">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M6,9H0v6h12C12,11.691,9.309,9,6,9z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="7" x2="7" y1="1.25" y2="58.3048">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+<path d="M6,7H0v3h6c2.757,0,5,2.242,5,5h3C14,10.588,10.411,7,6,7z" fill="url(#SVGID_2_)" fill-rule="evenodd"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_pressed_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 315 15" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="315"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="15" stroke-opacity="0.1" width="315"/>
+<rect fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" height="14" stroke-opacity="0.2" width="315"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="13" width="315"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="12"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="11"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.5005" x2="157.5005" y1="13" y2="-37.8115">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_pressed_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" height="15" width="15"/>
+<path d="M0,0v6c0,4.963,4.038,9,9,9h6V0H0z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M1,0v6c0,4.412,3.589,8,8,8h6V0H1z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M1,0v5c0,4.411,3.589,8,8,8h6V0H1z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M9,12.001c-3.86,0-7-3.14-7-7V0H1v5.001c0,4.411,3.589,8,8,8h6v-1H9 z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M9,11.001c-3.309,0-6-2.691-6-6V0H2v5.001 c0,3.86,3.14,7,7,7h6v-1H9z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="8" x2="8" y1="13" y2="-37.8115">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_pressed_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="15"/>
+<path d="M0,0v15h6c4.963,0,9-4.037,9-9V0H0z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M0,0v14h6c4.411,0,8-3.588,8-8V0H0z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M0,0v13h6c4.411,0,8-3.589,8-8V0H0z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M13,0v5.001c0,3.86-3.141,7-7,7H0v1h6c4.411,0,8-3.589,8-8V0H13z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M12,0v5.001c0,3.309-2.691,6-6,6H0v1h6 c3.859,0,7-3.14,7-7V0H12z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="7" x2="7" y1="13" y2="-37.8115">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_pressed_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 315 30" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="315"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="315"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.5005" x2="157.5005" y1="43" y2="-7.8108">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_pressed_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="30" stroke-opacity="0.1" width="15"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="14" x="1"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="1" x="1" y="0"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="1" x="2" y="0"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="8" x2="8" y1="43" y2="-7.8108">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_pressed_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="30" stroke-opacity="0.1" width="15"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="14"/>
+<polygon fill-opacity="0.2" fill-rule="evenodd" points="14,0 13,0 13,30 14,30 14,0.001 " stroke-opacity="0.2"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="1" x="12" y="0"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="7.0005" x2="7.0005" y1="43" y2="-7.8108">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_pressed_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 315 15" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="315"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="315"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="9" stroke-opacity="0.1" width="315" y="6"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="8" width="315" y="7"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="7"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="8"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.5005" x2="157.5005" y1="58" y2="7.1885">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_pressed_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="15"/>
+<path d="M11,6c-4.611,0-7.485-2.655-8.638-5.14 C2.032,0.149,1.552,0,1.207,0C0.652,0,0.191,0.406,0.031,1.036L0,1.157V15h15V6H11z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M11,7C6,7,2.797,4.173,1.455,1.281 C1.161,0.648,1,1.282,1,1.282V15h14V7H11z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M11,7C6,7,2.797,4.174,1.455,1.282C1.161,0.649,1,1.283,1,1.283V15 h1V3.971C3.843,6.177,6.843,8,11,8h4V7H11z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M11,8C6.843,8,3.843,6.177,2,3.971V15h1V6.334 C5.191,8.067,7.957,9,11,9h4V8H11z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="8" x2="8" y1="58.001" y2="7.1894">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_received_pressed_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="15"/>
+<path d="M15,15c0-4.962-4.037-9-9-9H0v9L15,15L15,15z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M6,7H0v8h14v0C14,10.588,10.411,7,6,7z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M6,7H0v1h6c3.859,0,7,3.14,7,7h1C14,10.589,10.411,7,6,7z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M6,8H0v1h6c3.309,0,6,2.691,6,6h1 C13,11.141,9.859,8,6,8z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="7" x2="7" y1="58" y2="7.1885">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_highlight_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 315 15" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="315"/>
+<rect fill="none" fill-opacity="0.1" fill-rule="evenodd" height="15" stroke-opacity="0.1" width="315"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="9" stroke-opacity="0.1" width="315"/>
+<rect fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" height="8" stroke-opacity="0.2" width="315"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="7" width="315"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="6"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="5"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.4995" x2="157.4995" y1="-43.3301" y2="7.1102">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_highlight_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" height="15" width="15"/>
+<path d="M0,0c0,4.963,4.038,9,9,9h6V0H0z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M1,0c0,4.411,3.589,8,8,8h6V0H1z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M1,0c0,4.411,3.589,7,8,7h6V0H1z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M9,6C5.516,6,2,4.145,2,0H1c0,4.411,3.589,7,8,7h6V6H9z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M9,5C6.232,5,3,3.691,3,0H2c0,4.145,3.516,6,7,6h6V5 H9z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="8" x2="8" y1="-43.3301" y2="7.1102">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_highlight_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" height="15" width="15"/>
+<path d="M0,0v9h4c4.611,0,7.485,2.655,8.639,5.141 C12.968,14.852,13.448,15,13.793,15l0,0c0.555,0,1.016-0.406,1.176-1.035L15,13.844V0H0z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M0,0v8h4c5,0,8.203,2.826,9.545,5.719 C13.839,14.352,14,13.718,14,13.718V0H0z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M0,0v7h4c5,0,8.203,2.826,9.545,5.719 c0.294,0.633,0.455,0,0.455,0V0H0z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M13,0v10.029C11.156,7.824,8.157,6,4,6H0v1h4 c5,0,8.203,2.826,9.545,5.719c0.294,0.633,0.455,0,0.455,0V0H13z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M12,0v7.666C9.809,5.934,7.043,5,4,5H0v1h4 c4.157,0,7.156,1.824,9,4.029V0H12z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="7" x2="7" y1="-43.333" y2="7.1108">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_highlight_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 315 30" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="315"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="315"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.4995" x2="157.4995" y1="-13.3335" y2="37.1111">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_highlight_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="15"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="30" stroke-opacity="0.1" width="15"/>
+<rect fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="14" x="1"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="14" x="1"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="1" x="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="1" x="2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="8" x2="8" y1="-13.3335" y2="37.1111">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_highlight_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="15"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="30" stroke-opacity="0.1" width="15"/>
+<rect fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="14"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="14"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="1" x="13"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="1" x="12"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="7" x2="7" y1="-13.3335" y2="37.1111">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_highlight_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 315 15" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="315"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="15" stroke-opacity="0.1" width="315"/>
+<rect fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" height="13" stroke-opacity="0.2" width="315" y="2"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="14" width="315" y="1"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.4995" x2="157.4995" y1="1.6665" y2="52.1102">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_highlight_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="15"/>
+<path d="M9,0C4.038,0,0,4.038,0,9v6h15V0H9z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M9,2c-4.411,0-8,3.589-8,8v5h14V2H9z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M9,1C4.589,1,1,4.589,1,9v6h14V1H9z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M9,1C4.589,1,1,4.589,1,9v6h1V9c0-3.86,3.14-7,7-7h6V1H9z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M9,2c-3.86,0-7,3.14-7,7v6h1V9c0-3.309,2.691-6,6-6 h6V2H9z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="8" x2="8" y1="1.6665" y2="52.1102">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_highlight_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" height="15" width="15"/>
+<path d="M15,9c0-4.962-4.037-9-9-9H0v15h15V9z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M14,10c0-4.411-3.589-8-8-8H0v13h14V10z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M14,9c0-4.411-3.589-8-8-8H0v14h14V9z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M6,1H0v1h6c3.859,0,7,3.14,7,7v6h1V9C14,4.589,10.411,1,6,1z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M6,2H0v1h6c3.309,0,6,2.691,6,6v6h1V9 C13,5.141,9.859,2,6,2z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="7" x2="7" y1="1.6665" y2="52.1102">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_normal_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 315 15" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="315"/>
+<rect fill="none" height="15" width="315"/>
+<rect fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" height="8" stroke-opacity="0.2" width="315"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="9" stroke-opacity="0.1" width="315"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.5005" x2="157.5005" y1="5" y2="-41.506">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="5" width="315"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="157.4995" x2="157.4995" y1="-43.9995" y2="13.77">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" fill-rule="evenodd" height="3" width="315" y="4"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_normal_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" height="15" width="15"/>
+<path d="M1,0c0,4.41,3.589,8,8,8h6V0H1z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M0,0c0,4.963,4.038,9,9,9h6V0H0z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="9" x2="9" y1="5" y2="-41.506">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M3,0c0,3.037,2.355,5,6,5h6V0H3z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="8" x2="8" y1="-43.9995" y2="13.7699">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+<path d="M9,4C6.243,4,4,2.756,4,0H1c0,4.41,3.589,7,8,7h6V4H9z" fill="url(#SVGID_2_)" fill-rule="evenodd"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_normal_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" height="15" width="15"/>
+<path d="M0,0v8h4c5,0,8.203,2.826,9.545,5.719 C13.839,14.352,14,13.717,14,13.717V0H0z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M0,0v9h4c4.611,0,7.485,2.654,8.639,5.141 c0.329,0.71,0.81,0.859,1.154,0.859l0,0c0.555,0,1.016-0.406,1.176-1.036L15,13.843V0H0z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="6" x2="6" y1="5" y2="-41.506">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M0,0v5h4c1.861,0,3.618,0.344,5.221,1.021L12,7.196V0H0z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="7" x2="7" y1="-43.9995" y2="13.77">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+<path d="M11,0v5.688L9.61,5.1C7.884,4.37,5.996,4,4,4H0v3h4 c5,0,8.203,2.826,9.545,5.719C13.839,13.352,14,12.718,14,12.718V0H11z" fill="url(#SVGID_2_)" fill-rule="evenodd"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_normal_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 315 30" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="315"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="315"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.5005" x2="157.5005" y1="35" y2="-11.5052">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_normal_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="15"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="30" stroke-opacity="0.1" width="15"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="9" x2="9" y1="35" y2="-11.5052">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="12" x="3"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="2.5" x2="2.5" y1="-14" y2="43.7704">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" fill-rule="evenodd" height="30" width="3" x="1"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_normal_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="15"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="30" stroke-opacity="0.1" width="15"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="6" x2="6" y1="35" y2="-11.5052">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="12"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="12.5" x2="12.5" y1="-14" y2="43.7704">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" fill-rule="evenodd" height="30" width="3" x="11"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_normal_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 315 15" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="315"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="15" stroke-opacity="0.1" width="315"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.5005" x2="157.5005" y1="50.001" y2="3.495">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="12" width="315" y="3"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="157.4995" x2="157.4995" y1="1" y2="58.7695">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" fill-rule="evenodd" height="3" width="315" y="1"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_normal_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" height="15" width="15"/>
+<path d="M9,0C4.038,0,0,4.037,0,9v6h15V0H9z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="9" x2="9" y1="50.001" y2="3.495">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M9,3C5.691,3,3,5.691,3,9v6h12V3H9z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="8" x2="8" y1="1" y2="58.7695">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+<path d="M9,1C4.589,1,1,4.589,1,9v6h3V9c0-2.757,2.243-5,5-5h6V1H9z " fill="url(#SVGID_2_)" fill-rule="evenodd"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_normal_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" height="15" width="15"/>
+<path d="M15,9c0-4.963-4.037-9-9-9H0v15h15V9z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="6" x2="6" y1="50.001" y2="3.495">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M12,9c0-3.309-2.691-6-6-6H0v12h12V9z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="7" x2="7" y1="1" y2="58.7695">
+<stop offset="0" style="stop-color:#66CCAD"/>
+<stop offset="1" style="stop-color:#3FA990"/>
+</linearGradient>
+<path d="M6,1H0v3h6c2.757,0,5,2.243,5,5v6h3V9 C14,4.589,10.411,1,6,1z" fill="url(#SVGID_2_)" fill-rule="evenodd"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_pressed_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 315 15" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="315"/>
+<rect fill="none" fill-opacity="0.1" fill-rule="evenodd" height="15" stroke-opacity="0.1" width="315"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="9" stroke-opacity="0.1" width="315"/>
+<rect fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" height="8" stroke-opacity="0.2" width="315"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="7" width="315"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="6"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="5"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.5005" x2="157.5005" y1="7.249" y2="-43.5196">
+<stop offset="0" style="stop-color:#59B397"/>
+<stop offset="1" style="stop-color:#2A7362"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_pressed_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" height="15" width="15"/>
+<path d="M0,0c0,4.963,4.038,9,9,9h6V0H0z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M1,0c0,4.411,3.589,8,8,8h6V0H1z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M1,0c0,4.411,3.589,7,8,7h6V0H1z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M9,6C5.516,6,2,4.145,2,0H1c0,4.411,3.589,7,8,7h6V6H9z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M9,5C6.232,5,3,3.691,3,0H2c0,4.145,3.516,6,7,6h6V5 H9z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="8" x2="8" y1="7.249" y2="-43.5196">
+<stop offset="0" style="stop-color:#59B397"/>
+<stop offset="1" style="stop-color:#2A7362"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_pressed_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" height="15" width="15"/>
+<path d="M0,0v9h4c4.611,0,7.485,2.655,8.639,5.141 C12.968,14.852,13.448,15,13.793,15l0,0c0.555,0,1.016-0.406,1.176-1.035L15,13.844V0H0z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M0,0v8h4c5,0,8.203,2.826,9.545,5.719 C13.839,14.352,14,13.718,14,13.718V0H0z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M0,0v7h4c5,0,8.203,2.826,9.545,5.719 c0.294,0.633,0.455,0,0.455,0V0H0z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M13,0v10.029C11.156,7.824,8.157,6,4,6H0v1h4 c5,0,8.203,2.826,9.545,5.719c0.294,0.633,0.455,0,0.455,0V0H13z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M12,0v7.666C9.809,5.934,7.043,5,4,5H0v1h4 c4.157,0,7.156,1.824,9,4.029V0H12z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="7" x2="7" y1="7.25" y2="-43.5221">
+<stop offset="0" style="stop-color:#59B397"/>
+<stop offset="1" style="stop-color:#2A7362"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_pressed_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 315 30" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="315"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="315"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.5005" x2="157.5005" y1="37.25" y2="-13.5215">
+<stop offset="0" style="stop-color:#59B397"/>
+<stop offset="1" style="stop-color:#2A7362"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_pressed_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="15"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="30" stroke-opacity="0.1" width="15"/>
+<rect fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="14" x="1"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="14" x="1"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="1" x="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="1" x="2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="8" x2="8" y1="37.25" y2="-13.5215">
+<stop offset="0" style="stop-color:#59B397"/>
+<stop offset="1" style="stop-color:#2A7362"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_pressed_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="15"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="30" stroke-opacity="0.1" width="15"/>
+<rect fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="14"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="30" width="14"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="1" x="13"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="30" stroke-opacity="0.2" width="1" x="12"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="7" x2="7" y1="37.25" y2="-13.5215">
+<stop offset="0" style="stop-color:#59B397"/>
+<stop offset="1" style="stop-color:#2A7362"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_pressed_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 315 15" width="315px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="315"/>
+<rect fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" height="15" stroke-opacity="0.1" width="315"/>
+<rect fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" height="13" stroke-opacity="0.2" width="315" y="2"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="14" width="315" y="1"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="315" y="2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="157.5005" x2="157.5005" y1="52.252" y2="1.478">
+<stop offset="0" style="stop-color:#59B397"/>
+<stop offset="1" style="stop-color:#2A7362"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_pressed_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" fill-rule="evenodd" height="15" width="15"/>
+<path d="M9,0C4.038,0,0,4.037,0,9v6h15V0H9z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M9,2c-4.411,0-8,3.589-8,8v5h14V2H9z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M9,1C4.589,1,1,4.59,1,9v6h14V1H9z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M9,1C4.589,1,1,4.59,1,9v6h1V9c0-3.859,3.14-7,7-7h6V1H9z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M9,2C5.14,2,2,5.141,2,9v6h1V9c0-3.309,2.691-6,6-6 h6V2H9z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="8" x2="8" y1="52.252" y2="1.478">
+<stop offset="0" style="stop-color:#59B397"/>
+<stop offset="1" style="stop-color:#2A7362"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_convlist_sent_pressed_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 15 15" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="15" width="15"/>
+<rect fill="none" height="15" width="15"/>
+<path d="M15,9c0-4.963-4.037-9-9-9H0v15h15V9z" fill="#14141E" fill-opacity="0.1" fill-rule="evenodd" stroke-opacity="0.1"/>
+<path d="M14,10c0-4.411-3.589-8-8-8H0v13h14V10z" fill="#14141E" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M14,9c0-4.41-3.589-8-8-8H0v14h14V9z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M6,1H0v1h6c3.859,0,7,3.141,7,7v6h1V9C14,4.59,10.411,1,6,1z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<path d="M6,2H0v1h6c3.309,0,6,2.691,6,6v6h1V9 C13,5.141,9.859,2,6,2z" fill="#FFFFFF" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="7" x2="7" y1="52.252" y2="1.478">
+<stop offset="0" style="stop-color:#59B397"/>
+<stop offset="1" style="stop-color:#2A7362"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_fullscreen_heading_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 60 60" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="60"/>
+<rect fill="url(#SVGID_1_)" height="60" width="60"/>
+<rect fill="#AAAAAF" height="1" width="60" y="59"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="60" y="58"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="29.9995" x2="29.9995" y1="-0.5" y2="59.7705">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_fullscreen_heading_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 60 60" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="60"/>
+<rect fill="url(#SVGID_1_)" height="60" width="60"/>
+<rect fill="#AAAAAF" height="1" width="60" y="59"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="60" y="58"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="-0.5" y2="59.7705">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_fullscreen_heading_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 60 60" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="60"/>
+<rect fill="url(#SVGID_1_)" height="60" width="60"/>
+<rect fill="#AAAAAF" height="1" width="60" y="59"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="60" y="58"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="-0.5" y2="59.7705">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_disabled_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" style="enable-background:new 0 0 30 60;" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<g>
+<g>
+<rect height="59" style="fill:url(#SVGID_1_);" width="30" y="0.5"/>
+<rect height="1" style="fill:#E0E0E0;" width="30"/>
+<rect height="1" style="fill:#E0E0E0;" width="30" y="59"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="15.0005" x2="15.0005" y1="59.2354" y2="-0.6073">
+<stop offset="0" style="stop-color:#D2D2D2"/>
+<stop offset="1" style="stop-color:#AAAAAA"/>
+</linearGradient>
+</defs>
+</g>
+<g>
+<rect height="60" style="fill:none;" width="30"/>
+</g>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_disabled_cl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" style="enable-background:new 0 0 30 60;" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<g>
+<rect height="59" style="fill:url(#SVGID_1_);" width="30.006" x="-0.003" y="0.5"/>
+<rect height="1" style="fill:#E0E0E0;" width="30" x="0.003"/>
+<rect height="1" style="fill:#E0E0E0;" width="30" x="0.003" y="59"/>
+<g>
+<polygon points="1.003,58 0.003,58 0.003,2 1.003,2 1.003,58 " style="fill:#FFFFFF;"/>
+</g>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="15" x2="15" y1="59.2354" y2="-0.6073">
+<stop offset="0" style="stop-color:#D2D2D2"/>
+<stop offset="1" style="stop-color:#AAAAAA"/>
+</linearGradient>
+</defs>
+</g>
+<g>
+<rect height="60" style="fill:none;" width="30"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_disabled_cr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" style="enable-background:new 0 0 30 60;" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<g>
+<rect height="59" style="fill:url(#SVGID_1_);" width="29.993" x="0.003" y="0.5"/>
+<rect height="1" style="fill:#E0E0E0;" width="30.006" x="-0.003"/>
+<rect height="1" style="fill:#E0E0E0;" width="30.006" x="-0.003" y="59"/>
+<g>
+<polygon points="30.003,58 29.003,58 29.003,2 30.003,2 30.003,58 " style="fill:#E0E0E0;"/>
+</g>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="14.9995" x2="14.9995" y1="59.2354" y2="-0.6073">
+<stop offset="0" style="stop-color:#D2D2D2"/>
+<stop offset="1" style="stop-color:#AAAAAA"/>
+</linearGradient>
+</defs>
+</g>
+<g>
+<rect height="60" style="fill:none;" width="30"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_disabled_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" style="enable-background:new 0 0 30 60;" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<g>
+<path d="M30,0.5H3.131C1.68,0.5,0.5,2.07,0.5,4v52c0,1.93,1.18,3.5,2.631,3.5H30V0.5z" style="fill:url(#SVGID_1_);"/>
+<path d="M29.993,59H3.131C1.976,59,1,57.626,1,56V4c0-1.626,0.976-3,2.131-3h26.862V0H3.131 C1.402,0,0,1.791,0,4v52c0,2.207,1.402,4,3.131,4h26.862V59z" style="fill:#E0E0E0;"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="15.2505" x2="15.2505" y1="59.2354" y2="-0.6073">
+<stop offset="0" style="stop-color:#D2D2D2"/>
+<stop offset="1" style="stop-color:#AAAAAA"/>
+</linearGradient>
+</defs>
+</g>
+<g>
+<polygon points="29.993,60 0,60 0,0 30,0 " style="fill:none;"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_disabled_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" style="enable-background:new 0 0 30 60;" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<g>
+<path d="M0,0.5h26.869c1.45,0,2.631,1.57,2.631,3.5v52c0,1.93-1.181,3.5-2.631,3.5H0V0.5z" style="fill:url(#SVGID_1_);"/>
+<path d="M0.007,59h26.862C28.024,59,29,57.626,29,56V4c0-1.626-0.976-3-2.131-3H0.007V0h26.862 C28.598,0,30,1.791,30,4v52c0,2.207-1.402,4-3.131,4H0.007V59z" style="fill:#E0E0E0;"/>
+<defs>
+<linearGradient gradientTransform="matrix(-1 0 0 1 30 0)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="15.2505" x2="15.2505" y1="59.2354" y2="-0.6073">
+<stop offset="0" style="stop-color:#D2D2D2"/>
+<stop offset="1" style="stop-color:#AAAAAA"/>
+</linearGradient>
+</defs>
+</g>
+<g>
+<polygon points="0.007,60 30,60 30,0 0,0 " style="fill:none;"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_latched_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<rect fill="#14141E" fill-opacity="0.2" height="60" stroke-opacity="0.2" width="30"/>
+<rect fill="url(#SVGID_1_)" height="58" width="30" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="30" y="58"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="30" y="1"/>
+<defs>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -57.48 -41.0195)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="72.4795" x2="72.4795" y1="-42.0195" y2="-100.0195">
+<stop offset="0" style="stop-color:#C8C8D2"/>
+<stop offset="0.9" style="stop-color:#9696A0"/>
+<stop offset="0.9" style="stop-color:#8C8C96"/>
+<stop offset="1" style="stop-color:#82828C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_latched_cl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<rect fill="#14141E" fill-opacity="0.2" height="60" stroke-opacity="0.2" width="30"/>
+<rect fill="url(#SVGID_1_)" height="58" width="30" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="30" y="58"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="30" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="58" stroke-opacity="0.4" width="1" y="1"/>
+<defs>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -57.48 -41.0195)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="72.4795" x2="72.4795" y1="-42.0195" y2="-100.0195">
+<stop offset="0" style="stop-color:#C8C8D2"/>
+<stop offset="0.9" style="stop-color:#9696A0"/>
+<stop offset="0.9" style="stop-color:#8C8C96"/>
+<stop offset="1" style="stop-color:#82828C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_latched_cr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<rect fill="#14141E" fill-opacity="0.2" height="60" stroke-opacity="0.2" width="30"/>
+<rect fill="url(#SVGID_1_)" height="58" width="30" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="30" y="58"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="30" y="1"/>
+<rect fill="#9696A0" fill-opacity="0.5" height="58" stroke-opacity="0.5" width="1" x="29" y="1"/>
+<defs>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -57.48 -41.0195)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="72.4795" x2="72.4795" y1="-42.0195" y2="-100.0195">
+<stop offset="0" style="stop-color:#C8C8D2"/>
+<stop offset="0.9" style="stop-color:#9696A0"/>
+<stop offset="0.9" style="stop-color:#8C8C96"/>
+<stop offset="1" style="stop-color:#82828C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_latched_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<path d="M6,0C2.7,0,0,2.7,0,6v48c0,3.3,2.7,6,6,6h24V0H6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.243,1,6v48c0,2.757,2.243,5,5,5h24V1H6z" fill="url(#SVGID_1_)"/>
+<path d="M6,58c-2.206,0-4-1.795-4-4V6c0-2.205,1.794-4,4-4h24V1H6 C3.243,1,1,3.243,1,6v48c0,2.757,2.243,5,5,5h24v-1H6z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -57.48 -41.0195)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="72.9795" x2="72.9795" y1="-42.0195" y2="-100.0195">
+<stop offset="0" style="stop-color:#C8C8D2"/>
+<stop offset="0.9" style="stop-color:#9696A0"/>
+<stop offset="0.9" style="stop-color:#8C8C96"/>
+<stop offset="1" style="stop-color:#82828C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_latched_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<path d="M24,0H0v60h24c3.3,0,6-2.7,6-6V6C30,2.7,27.3,0,24,0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M24,1H0v58h24c2.757,0,5-2.243,5-5V6C29,3.243,26.757,1,24,1z" fill="url(#SVGID_1_)"/>
+<path d="M24,1H0v1h24c2.205,0,4,1.795,4,4v48c0,2.205-1.795,4-4,4H0v1h24 c2.757,0,5-2.243,5-5V6C29,3.243,26.757,1,24,1z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -57.48 -41.0195)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="71.9795" x2="71.9795" y1="-42.0195" y2="-100.0195">
+<stop offset="0" style="stop-color:#C8C8D2"/>
+<stop offset="0.9" style="stop-color:#9696A0"/>
+<stop offset="0.9" style="stop-color:#8C8C96"/>
+<stop offset="1" style="stop-color:#82828C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_normal_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<rect fill="#14141E" fill-opacity="0.2" height="60" stroke-opacity="0.2" width="30"/>
+<rect fill="url(#SVGID_1_)" height="58" width="30" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="30" y="58"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="30" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="14.9995" x2="14.9995" y1="1" y2="59.0005">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="1" style="stop-color:#D2D2DC"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_normal_cl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<rect fill="#14141E" fill-opacity="0.2" height="60" stroke-opacity="0.2" width="30"/>
+<rect fill="url(#SVGID_1_)" height="58" width="30" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="30" y="58"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="30" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="58" stroke-opacity="0.4" width="1" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="15" x2="15" y1="1" y2="59.0005">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="1" style="stop-color:#D2D2DC"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_normal_cr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<rect fill="#14141E" fill-opacity="0.2" height="60" stroke-opacity="0.2" width="30"/>
+<rect fill="url(#SVGID_1_)" height="58" width="30" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="30" y="58"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="30" y="1"/>
+<rect fill="#9696A0" fill-opacity="0.5" height="58" stroke-opacity="0.5" width="1" x="29" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="15" x2="15" y1="1" y2="59.0005">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="1" style="stop-color:#D2D2DC"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_normal_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<path d="M6,0C2.7,0,0,2.7,0,6v48c0,3.3,2.7,6,6,6h24V0H6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.243,1,6v48c0,2.757,2.243,5,5,5h24V1H6z" fill="url(#SVGID_1_)"/>
+<path d="M6,58c-2.206,0-4-1.795-4-4V6c0-2.205,1.794-4,4-4h24V1H6C3.243,1,1,3.243,1,6v48 c0,2.757,2.243,5,5,5h24v-1H6z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="15.5" x2="15.5" y1="1" y2="59.0005">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="1" style="stop-color:#D2D2DC"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_normal_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<path d="M24,0H0v60h24c3.3,0,6-2.7,6-6V6C30,2.7,27.3,0,24,0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M24,1H0v58h24c2.757,0,5-2.243,5-5V6C29,3.243,26.757,1,24,1z" fill="url(#SVGID_1_)"/>
+<path d="M24,1H0v1h24c2.205,0,4,1.795,4,4v48c0,2.205-1.795,4-4,4H0v1h24c2.757,0,5-2.243,5-5V6 C29,3.243,26.757,1,24,1z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="14.5" x2="14.5" y1="1" y2="59.0005">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="1" style="stop-color:#D2D2DC"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_pressed_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<rect fill="#14141E" fill-opacity="0.2" height="60" stroke-opacity="0.2" width="30"/>
+<rect fill="url(#SVGID_1_)" height="58" width="30" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="30" y="2"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="30" y="57"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="30" y="1"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="30" y="58"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="15.0005" x2="15.0005" y1="59" y2="1.0005">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_pressed_cl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<rect fill="#14141E" fill-opacity="0.2" height="60" stroke-opacity="0.2" width="30"/>
+<rect fill="url(#SVGID_1_)" height="58" width="30" y="1"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="30" y="1"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="30" y="58"/>
+<polygon fill="#FFFFFF" fill-opacity="0.2" points="30,3 30,2 0,2 0,58 30,58 30,57 1,57 1,3 " stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="15" x2="15" y1="59" y2="1.0005">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_pressed_cr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<rect fill="#14141E" fill-opacity="0.2" height="60" stroke-opacity="0.2" width="30"/>
+<rect fill="url(#SVGID_1_)" height="58" width="30" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="29" y="2"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="29" y="57"/>
+<polygon fill-opacity="0.2" points="0,1 0,2 29,2 29,58 0,58 0,59 30,59 30,1 " stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="15" x2="15" y1="59" y2="1.0005">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_pressed_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<path d="M6,0C2.7,0,0,2.7,0,6v48c0,3.3,2.7,6,6,6h24V0H6z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,1C3.243,1,1,3.243,1,6v48c0,2.757,2.243,5,5,5h24V1H6z" fill="url(#SVGID_1_)"/>
+<path d="M6,57c-1.654,0-3-1.346-3-3V6c0-1.654,1.346-3,3-3h24V2H6C3.794,2,2,3.794,2,6v48 c0,2.206,1.794,4,4,4h24v-1H6z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6,58c-2.206,0-4-1.795-4-4V6c0-2.205,1.794-4,4-4h24V1H6C3.243,1,1,3.243,1,6v48c0,2.757,2.243,5,5,5h24v-1 H6z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="15.5" x2="15.5" y1="59" y2="1.0005">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsbutton_pressed_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 30 60" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="60" width="30"/>
+<path d="M24,0H0v60h24c3.3,0,6-2.7,6-6V6C30,2.7,27.3,0,24,0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M24,1H0v58h24c2.757,0,5-2.243,5-5V6C29,3.243,26.757,1,24,1z" fill="url(#SVGID_1_)"/>
+<path d="M24,2H0v1h24c1.654,0,3,1.346,3,3v48c0,1.654-1.346,3-3,3H0v1h24c2.205,0,4-1.794,4-4V6 C28,3.794,26.205,2,24,2z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M24,1H0v1h24c2.205,0,4,1.795,4,4v48c0,2.205-1.795,4-4,4H0v1h24c2.757,0,5-2.243,5-5V6 C29,3.243,26.757,1,24,1z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="14.5" x2="14.5" y1="59" y2="1.0005">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems2_pressed_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="10 0 162 10" width="162px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<rect fill="none" height="10" width="162" x="10"/>
+<g fill-opacity="0.1" stroke-opacity="0.1">
+<rect fill="#14141E" height="10" width="162" x="10"/>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<rect fill="#14141E" height="9" width="162" x="10"/>
+</g>
+<g>
+<rect fill="url(#SVGID_1_)" height="8" width="162" x="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="91" x2="91" y1="8" y2="-70.836">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<rect fill="#FFFFFF" height="1" width="162" x="10" y="6"/>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<rect height="1" width="162" x="10" y="7"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems2_pressed_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10" x="0"/>
+<g fill-opacity="0.1" stroke-opacity="0.1">
+<rect fill="#14141E" height="10" width="10"/>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<rect fill="#14141E" height="9" width="10"/>
+</g>
+<g>
+<rect fill="url(#SVGID_1_)" height="8" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5" x2="5" y1="8" y2="-70.836">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<polygon fill="#FFFFFF" points="1,0 1,7 10,7 10,6 2,6 2,0 "/>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<polygon points="0,0 0,8 10,8 10,7 1,7 1,0 "/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems2_pressed_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<g fill-opacity="0.1" stroke-opacity="0.1">
+<rect fill="#14141E" height="10" width="10"/>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<rect fill="#14141E" height="9" width="10"/>
+</g>
+<g>
+<rect fill="url(#SVGID_1_)" height="8" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5" x2="5" y1="8" y2="-70.836">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<polygon fill="#FFFFFF" points="8,6 0,6 0,7 9,7 9,0 8,0 "/>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<polygon points="9,7 0,7 0,8 10,8 10,0 9,0 "/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems2_pressed_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 62 62" width="62px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="url(#SVGID_1_)" height="62" width="62"/>
+<defs>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -101.0195 -54.4805)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="132.0205" x2="132.0205" y1="-124.4795" y2="-45.644">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems2_pressed_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 10 62" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="62" width="10" x="0"/>
+<g fill-opacity="0.1" stroke-opacity="0.1">
+<rect fill="#14141E" height="62" width="10"/>
+</g>
+<g>
+<rect fill="url(#SVGID_1_)" height="62" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5" x2="5" y1="70" y2="-8.8355">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<rect fill="#FFFFFF" height="62" width="1" x="1"/>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<rect height="62" width="1"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems2_pressed_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 10 62" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="62" width="10"/>
+<g fill-opacity="0.1" stroke-opacity="0.1">
+<rect fill="#14141E" height="62" width="10"/>
+</g>
+<g>
+<rect fill="url(#SVGID_1_)" height="62" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5" x2="5" y1="70" y2="-8.8355">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<rect fill="#FFFFFF" height="62" width="1" x="8"/>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<rect height="62" width="1" x="9"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems2_pressed_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="10 0 162 10" width="162px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<rect fill="none" height="10" width="162" x="10"/>
+<g fill-opacity="0.1" stroke-opacity="0.1">
+<rect fill="#14141E" height="10" width="162" x="10"/>
+</g>
+<g>
+<rect fill="url(#SVGID_1_)" height="9" width="162" x="10" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="91" x2="91" y1="80.001" y2="1.165">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<rect fill="#FFFFFF" height="1" width="162" x="10" y="2"/>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<rect height="1" width="162" x="10" y="1"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems2_pressed_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10" x="0"/>
+<g fill-opacity="0.1" stroke-opacity="0.1">
+<rect fill="#14141E" height="10" width="10"/>
+</g>
+<g>
+<rect fill="url(#SVGID_1_)" height="9" width="10" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5" x2="5" y1="80.001" y2="1.165">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<polygon fill="#FFFFFF" points="2,3 10,3 10,2 1,2 1,10 2,10 "/>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<polygon points="1,2 10,2 10,1 0,1 0,10 1,10 "/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems2_pressed_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<g fill-opacity="0.1" stroke-opacity="0.1">
+<rect fill="#14141E" height="10" width="10"/>
+</g>
+<g>
+<rect fill="url(#SVGID_1_)" height="9" width="10" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5" x2="5" y1="80.001" y2="1.165">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<polygon fill="#FFFFFF" points="9,2 0,2 0,3 8,3 8,10 9,10 "/>
+</g>
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<polygon points="10,1 0,1 0,2 9,2 9,10 10,10 "/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 62 10" width="62px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="62"/>
+<rect fill="#14141E" fill-opacity="0.1" height="10" stroke-opacity="0.1" width="62"/>
+<rect fill="#14141E" fill-opacity="0.2" height="9" stroke-opacity="0.2" width="62"/>
+<rect fill="url(#SVGID_1_)" height="8" width="62"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="62" y="6"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="62" y="7"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="31.0005" x2="31.0005" y1="8" y2="-70.6289">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v3c0,3.859,3.141,7,7,7h3V0H0z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M1,0v3c0,3.3,2.7,6,6,6h3V0H1z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v2c0,3.3,2.7,6,6,6h3V0H1z" fill="url(#SVGID_1_)"/>
+<path d="M7,6C4.794,6,3,4.205,3,2V0H2v2c0,2.757,2.243,5,5,5h3V6H7z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M7,7C4.243,7,2,4.757,2,2V0H1v2c0,3.3,2.7,6,6,6h3V7H7z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="8" y2="-70.6289">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v10h3c3.859,0,7-3.141,7-7V0H0z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M0,0v9h3c3.3,0,6-2.7,6-6V0H0z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v8h3c3.3,0,6-2.7,6-6V0H0z" fill="url(#SVGID_1_)"/>
+<path d="M7,0v2c0,2.205-1.794,4-4,4H0v1h3c2.757,0,5-2.243,5-5V0H7z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M8,0v2c0,2.757-2.243,5-5,5H0v1h3c3.3,0,6-2.7,6-6V0H8z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="8" y2="-70.6289">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 62 62" width="62px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="62" width="62"/>
+<rect fill="url(#SVGID_1_)" height="62" width="62"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="31.0005" x2="31.0005" y1="70" y2="-8.6284">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 10 62" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="62" width="10"/>
+<rect fill="#14141E" fill-opacity="0.1" height="62" stroke-opacity="0.1" width="10"/>
+<rect fill="url(#SVGID_1_)" height="62" width="9" x="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="62" stroke-opacity="0.2" width="1" x="2"/>
+<rect fill-opacity="0.2" height="62" stroke-opacity="0.2" width="1" x="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="70" y2="-8.6284">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 10 62" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="62" width="10"/>
+<rect fill="#14141E" fill-opacity="0.1" height="62" stroke-opacity="0.1" width="10"/>
+<rect fill="url(#SVGID_1_)" height="62" width="9"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="62" stroke-opacity="0.2" width="1" x="7"/>
+<rect fill-opacity="0.2" height="62" stroke-opacity="0.2" width="1" x="8"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="70" y2="-8.6284">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 62 10" width="62px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="62"/>
+<rect fill="#14141E" fill-opacity="0.1" height="10" stroke-opacity="0.1" width="62"/>
+<rect fill="url(#SVGID_1_)" height="9" width="62" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="62" y="2"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="62" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="31.0005" x2="31.0005" y1="80.001" y2="1.3721">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M7,0C3.141,0,0,3.14,0,7v3h10V0H7z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M7,1C3.7,1,1,3.7,1,7v3h9V1H7z" fill="url(#SVGID_1_)"/>
+<path d="M7,2C4.243,2,2,4.243,2,7v3h1V7c0-2.206,1.794-4,4-4h3V2H7z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M7,1C3.7,1,1,3.7,1,7v3h1V7c0-2.757,2.243-5,5-5h3V1H7z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="80.001" y2="1.3721">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,7c0-3.86-3.141-7-7-7H0v10h10V7z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M9,7c0-3.3-2.7-6-6-6H0v9h9V7z" fill="url(#SVGID_1_)"/>
+<path d="M3,2H0v1h3c2.206,0,4,1.794,4,4v3h1V7C8,4.243,5.757,2,3,2z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M3,1H0v1h3c2.757,0,5,2.243,5,5v3h1V7C9,3.7,6.3,1,3,1z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="80.001" y2="1.3721">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 62 10" width="62px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="62"/>
+<rect fill="#14141E" fill-opacity="0.1" height="10" stroke-opacity="0.1" width="62"/>
+<rect fill="#14141E" fill-opacity="0.2" height="9" stroke-opacity="0.2" width="62"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="8" stroke-opacity="0.9" width="62"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="62" y="7"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30.9995" x2="30.9995" y1="-70.8745" y2="7.9514">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,3c0,3.859,3.14,7,7,7h3V0H0V3z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M1,3c0,3.3,2.7,6,6,6h3V0H1V3z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,2c0,3.3,2.7,6,6,6h3V0H1V2z" fill="url(#SVGID_1_)" fill-opacity="0.9" stroke-opacity="0.9"/>
+<path d="M1,0v2c0,3.3,2.7,6,6,6h3V7H7C4.243,7,2,4.757,2,2V0H1z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="-70.8745" y2="7.9514">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,10h3c3.859,0,7-3.141,7-7V0H0V10z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M0,9h3c3.3,0,6-2.7,6-6V0H0V9z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,8h3c3.3,0,6-2.7,6-6V0H0V8z" fill="url(#SVGID_1_)" fill-opacity="0.9" stroke-opacity="0.9"/>
+<path d="M8,2c0,2.757-2.243,5-5,5H0v1h3c3.3,0,6-2.7,6-6V0H8V2z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="-70.8745" y2="7.9514">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 62 62" width="62px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="62" width="62"/>
+<rect fill="#14141E" fill-opacity="0.1" height="62" stroke-opacity="0.1" width="62"/>
+<rect fill="#14141E" fill-opacity="0.2" height="62" stroke-opacity="0.2" width="62"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="62" stroke-opacity="0.9" width="62"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30.9995" x2="30.9995" y1="-8.875" y2="69.9518">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 10 62" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="62" width="10"/>
+<rect fill="#14141E" fill-opacity="0.1" height="62" stroke-opacity="0.1" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="62" stroke-opacity="0.2" width="9" x="1"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="62" stroke-opacity="0.9" width="9" x="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="62" stroke-opacity="0.4" width="1" x="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="-8.875" y2="69.9518">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 10 62" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="62" width="10"/>
+<rect fill="#14141E" fill-opacity="0.1" height="62" stroke-opacity="0.1" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="62" stroke-opacity="0.2" width="9"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="62" stroke-opacity="0.9" width="9"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="62" stroke-opacity="0.4" width="1" x="8"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="-8.875" y2="69.9518">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 62 10" width="62px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="62"/>
+<rect fill="#14141E" fill-opacity="0.1" height="10" stroke-opacity="0.1" width="62"/>
+<rect fill="#14141E" fill-opacity="0.2" height="8" stroke-opacity="0.2" width="62" y="2"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="9" stroke-opacity="0.9" width="62" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="62" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30.9995" x2="30.9995" y1="1.125" y2="79.951">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,0H7C3.14,0,0,3.14,0,7v3h10V0z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M10,2H7C3.7,2,1,4.7,1,8v2h9V2z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M10,1H7C3.7,1,1,3.7,1,7v3h9V1z" fill="url(#SVGID_1_)" fill-opacity="0.9" stroke-opacity="0.9"/>
+<path d="M2,7c0-2.757,2.243-5,5-5h3V1H7C3.7,1,1,3.7,1,7v3h1V7z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="1.125" y2="79.951">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,7c0-3.86-3.141-7-7-7H0v10h10V7z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M9,8c0-3.3-2.7-6-6-6H0v8h9V8z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M9,7c0-3.3-2.7-6-6-6H0v9h9V7z" fill="url(#SVGID_1_)" fill-opacity="0.9" stroke-opacity="0.9"/>
+<path d="M9,7c0-3.3-2.7-6-6-6H0v1h3c2.757,0,5,2.243,5,5v3h1V7z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="1.125" y2="79.951">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hswidget_normal_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 62 10" width="62px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="62"/>
+<rect fill="#14141E" fill-opacity="0.1" height="10" stroke-opacity="0.1" width="62"/>
+<rect fill="#14141E" fill-opacity="0.2" height="9" stroke-opacity="0.2" width="62"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="8" stroke-opacity="0.9" width="62"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="62" y="7"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30.9995" x2="30.9995" y1="-70.8745" y2="7.9514">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hswidget_normal_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,3c0,3.859,3.14,7,7,7h3V0H0V3z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M1,3c0,3.3,2.7,6,6,6h3V0H1V3z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,2c0,3.3,2.7,6,6,6h3V0H1V2z" fill="url(#SVGID_1_)" fill-opacity="0.9" stroke-opacity="0.9"/>
+<path d="M1,0v2c0,3.3,2.7,6,6,6h3V7H7C4.243,7,2,4.757,2,2V0H1z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="-70.8745" y2="7.9514">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hswidget_normal_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,10h3c3.859,0,7-3.141,7-7V0H0V10z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M0,9h3c3.3,0,6-2.7,6-6V0H0V9z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,8h3c3.3,0,6-2.7,6-6V0H0V8z" fill="url(#SVGID_1_)" fill-opacity="0.9" stroke-opacity="0.9"/>
+<path d="M8,2c0,2.757-2.243,5-5,5H0v1h3c3.3,0,6-2.7,6-6V0H8V2z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="-70.8745" y2="7.9514">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hswidget_normal_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 62 62" width="62px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="62" width="62"/>
+<rect fill="#14141E" fill-opacity="0.1" height="62" stroke-opacity="0.1" width="62"/>
+<rect fill="#14141E" fill-opacity="0.2" height="62" stroke-opacity="0.2" width="62"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="62" stroke-opacity="0.9" width="62"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30.9995" x2="30.9995" y1="-8.875" y2="69.9518">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hswidget_normal_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 10 62" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="62" width="10"/>
+<rect fill="#14141E" fill-opacity="0.1" height="62" stroke-opacity="0.1" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="62" stroke-opacity="0.2" width="9" x="1"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="62" stroke-opacity="0.9" width="9" x="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="62" stroke-opacity="0.4" width="1" x="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="-8.875" y2="69.9518">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hswidget_normal_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 10 62" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="62" width="10"/>
+<rect fill="#14141E" fill-opacity="0.1" height="62" stroke-opacity="0.1" width="10"/>
+<rect fill="#14141E" fill-opacity="0.2" height="62" stroke-opacity="0.2" width="9"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="62" stroke-opacity="0.9" width="9"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="62" stroke-opacity="0.4" width="1" x="8"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="-8.875" y2="69.9518">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hswidget_normal_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 62 10" width="62px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="62"/>
+<rect fill="#14141E" fill-opacity="0.1" height="10" stroke-opacity="0.1" width="62"/>
+<rect fill="#14141E" fill-opacity="0.2" height="8" stroke-opacity="0.2" width="62" y="2"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="9" stroke-opacity="0.9" width="62" y="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="62" y="1"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30.9995" x2="30.9995" y1="1.125" y2="79.951">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hswidget_normal_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,0H7C3.14,0,0,3.14,0,7v3h10V0z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M10,2H7C3.7,2,1,4.7,1,8v2h9V2z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M10,1H7C3.7,1,1,3.7,1,7v3h9V1z" fill="url(#SVGID_1_)" fill-opacity="0.9" stroke-opacity="0.9"/>
+<path d="M2,7c0-2.757,2.243-5,5-5h3V1H7C3.7,1,1,3.7,1,7v3h1V7z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="1.125" y2="79.951">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_hswidget_normal_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,7c0-3.86-3.141-7-7-7H0v10h10V7z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M9,8c0-3.3-2.7-6-6-6H0v8h9V8z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M9,7c0-3.3-2.7-6-6-6H0v9h9V7z" fill="url(#SVGID_1_)" fill-opacity="0.9" stroke-opacity="0.9"/>
+<path d="M9,7c0-3.3-2.7-6-6-6H0v1h3c2.757,0,5,2.243,5,5v3h1V7z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="1.125" y2="79.951">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 318 10" width="318px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="318" x="0"/>
+<rect fill="#141414" fill-opacity="0.2" height="10" stroke-opacity="0.2" width="318"/>
+<rect fill="#141414" fill-opacity="0.2" height="9" stroke-opacity="0.2" width="318"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-9.333" x2="327.3366" y1="4" y2="4">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#78787D"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" height="8" width="318"/>
+<rect fill="#FFFFFF" fill-opacity="0.5" height="1" stroke-opacity="0.5" width="318" y="6"/>
+<rect fill-opacity="0.3" height="1" width="318" y="7"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="-6.333" x2="324.0545" y1="5" y2="5">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" fill-opacity="0.7" height="2" width="318" y="4"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v3c0,3.859,3.141,7,7,7h3V0H0z" fill="#141414" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,0v3c0,3.3,2.7,6,6,6h3V0H1z" fill="#141414" fill-opacity="0.2" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0.667" x2="337.3366" y1="4" y2="4">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#78787D"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<path d="M1,0v2c0,3.3,2.7,6,6,6h3V0H1z" fill="url(#SVGID_1_)"/>
+<path d="M7,6C4.795,6,3,4.206,3,2V0H2v2c0,2.757,2.243,5,5,5h3V6H7z" fill="#FFFFFF" fill-opacity="0.5" stroke-opacity="0.5"/>
+<path d="M7,7C4.243,7,2,4.757,2,2V0H1v2c0,3.3,2.7,6,6,6h3V7H7z" fill-opacity="0.3"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="3.667" x2="334.0545" y1="5" y2="5">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<path d="M3.557,4C4.25,5.189,5.526,6,7,6h3V4H3.557z" fill="url(#SVGID_2_)" fill-opacity="0.7"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v10h3c3.859,0,7-3.141,7-7V0H0z" fill="#141414" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v9h3c3.3,0,6-2.7,6-6V0H0z" fill="#141414" fill-opacity="0.2" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-327.333" x2="9.3366" y1="4" y2="4">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#78787D"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<path d="M0,0v8h3c3.3,0,6-2.7,6-6V0H0z" fill="url(#SVGID_1_)"/>
+<path d="M7,0v2c0,2.206-1.795,4-4,4H0v1h3c2.757,0,5-2.243,5-5V0H7z" fill="#FFFFFF" fill-opacity="0.5" stroke-opacity="0.5"/>
+<path d="M8,0v2c0,2.757-2.243,5-5,5H0v1h3c3.3,0,6-2.7,6-6V0H8z" fill-opacity="0.3"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="-324.333" x2="6.0545" y1="5" y2="5">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<path d="M0,4v2h3c1.475,0,2.75-0.811,3.443-2H0z" fill="url(#SVGID_2_)" fill-opacity="0.7"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="204px" version="1.1" viewBox="0 0 318 204" width="318px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="204" width="318"/>
+<rect fill="#141414" fill-opacity="0.2" height="204" stroke-opacity="0.2" width="318"/>
+<rect fill="#141414" fill-opacity="0.2" height="204" stroke-opacity="0.2" width="318"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-9.333" x2="327.3366" y1="102" y2="102">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#78787D"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" height="204" width="318"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="159" x2="159" y1="101" y2="-7.4161">
+<stop offset="0" style="stop-color:#DCDCDC"/>
+<stop offset="1" style="stop-color:#141414"/>
+</linearGradient>
+<path d="M0,0v89.6c46.1,7.22,100.591,11.4,159,11.4s112.9-4.181,159-11.4V0H0z" fill="url(#SVGID_2_)" fill-opacity="0.3"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="204px" version="1.1" viewBox="0 0 10 204" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="204" width="10"/>
+<rect fill="#141414" fill-opacity="0.2" height="204" stroke-opacity="0.2" width="10"/>
+<rect fill="#141414" fill-opacity="0.2" height="204" stroke-opacity="0.2" width="9" x="1"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0.667" x2="337.3366" y1="102" y2="102">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#78787D"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" height="204" width="9" x="1"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="6" x2="6" y1="101" y2="-7.4162">
+<stop offset="0" style="stop-color:#DCDCDC"/>
+<stop offset="1" style="stop-color:#141414"/>
+</linearGradient>
+<path d="M2,0v88.305c2.636,0.442,5.306,0.873,8,1.295V0H2z" fill="url(#SVGID_2_)" fill-opacity="0.3"/>
+<rect fill="#FFFFFF" fill-opacity="0.5" height="204" stroke-opacity="0.5" width="1" x="2"/>
+<rect fill-opacity="0.3" height="204" width="1" x="1"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_overlay_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 318 10" width="318px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="318" x="0"/>
+<rect fill="url(#SVGID_1_)" height="5" width="318"/>
+<rect fill="none" height="10" width="318"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-6.999" x2="324.7274" y1="2.5" y2="2.5">
+<stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/>
+<stop offset="0.2" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="0.4" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.6" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.8" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="1" style="stop-color:#000000;stop-opacity:0.8"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_overlay_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M3,0v1c0,2.205,1.795,4,4,4h3V0H3z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="10" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="3" x2="334.7265" y1="2.5" y2="2.5">
+<stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/>
+<stop offset="0.2" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="0.4" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.6" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.8" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="1" style="stop-color:#000000;stop-opacity:0.8"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_overlay_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M0,0v5h3c2.206,0,4-1.795,4-4V0H0z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="10" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-324.999" x2="6.7274" y1="2.5" y2="2.5">
+<stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/>
+<stop offset="0.2" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="0.4" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.6" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.8" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="1" style="stop-color:#000000;stop-opacity:0.8"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_overlay_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="204px" version="1.1" viewBox="0 0 318 204" width="318px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="204" width="318"/>
+<rect fill="url(#SVGID_1_)" height="204" width="318"/>
+<rect fill="none" height="204" width="318"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-6.999" x2="324.7274" y1="102" y2="102">
+<stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/>
+<stop offset="0.2" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="0.4" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.6" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.8" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="1" style="stop-color:#000000;stop-opacity:0.8"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_overlay_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="204px" version="1.1" viewBox="0 0 10 204" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="204" width="10"/>
+<rect fill="url(#SVGID_1_)" height="204" width="7" x="3"/>
+<rect fill="none" height="204" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="3" x2="334.7265" y1="102" y2="102">
+<stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/>
+<stop offset="0.2" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="0.4" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.6" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.8" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="1" style="stop-color:#000000;stop-opacity:0.8"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_overlay_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="204px" version="1.1" viewBox="0 0 10 204" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="204" width="10"/>
+<rect fill="url(#SVGID_1_)" height="204" width="7"/>
+<rect fill="none" height="204" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-324.999" x2="6.7274" y1="102" y2="102">
+<stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/>
+<stop offset="0.2" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="0.4" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.6" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.8" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="1" style="stop-color:#000000;stop-opacity:0.8"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_overlay_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 318 10" width="318px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="318" x="0"/>
+<rect fill="url(#SVGID_1_)" height="8" width="318" y="2"/>
+<rect fill="none" height="10" width="318"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-6.999" x2="324.7274" y1="6" y2="6">
+<stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/>
+<stop offset="0.2" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="0.4" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.6" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.8" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="1" style="stop-color:#000000;stop-opacity:0.8"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_overlay_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M7,2C4.795,2,3,3.794,3,6v4h7V2H7z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="10" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="3" x2="334.7265" y1="6" y2="6">
+<stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/>
+<stop offset="0.2" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="0.4" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.6" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.8" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="1" style="stop-color:#000000;stop-opacity:0.8"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_overlay_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M7,6c0-2.206-1.794-4-4-4H0v8h7V6z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="10" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-324.999" x2="6.7274" y1="6" y2="6">
+<stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/>
+<stop offset="0.2" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="0.4" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.6" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.8" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="1" style="stop-color:#000000;stop-opacity:0.8"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="204px" version="1.1" viewBox="0 0 10 204" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="204" width="10"/>
+<rect fill="#141414" fill-opacity="0.2" height="204" stroke-opacity="0.2" width="10"/>
+<rect fill="#141414" fill-opacity="0.2" height="204" stroke-opacity="0.2" width="9"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-327.333" x2="9.3366" y1="102" y2="102">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#78787D"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" height="204" width="9"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="4" x2="4" y1="101" y2="-7.4162">
+<stop offset="0" style="stop-color:#DCDCDC"/>
+<stop offset="1" style="stop-color:#141414"/>
+</linearGradient>
+<path d="M8,0H0v89.6c2.694-0.422,5.364-0.853,8-1.295V0z" fill="url(#SVGID_2_)" fill-opacity="0.3"/>
+<rect fill="#FFFFFF" fill-opacity="0.5" height="204" stroke-opacity="0.5" width="1" x="7"/>
+<rect fill-opacity="0.3" height="204" width="1" x="8"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 318 10" width="318px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="318" x="0"/>
+<rect fill="#141414" fill-opacity="0.2" height="10" stroke-opacity="0.2" width="318"/>
+<rect fill="#141414" fill-opacity="0.2" height="8" stroke-opacity="0.2" width="318" y="2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-9.333" x2="327.3366" y1="5.5" y2="5.5">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#78787D"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" height="9" width="318" y="1"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="159" x2="159" y1="111" y2="2.5838">
+<stop offset="0" style="stop-color:#DCDCDC"/>
+<stop offset="1" style="stop-color:#141414"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" fill-opacity="0.3" height="8" width="318" y="2"/>
+<rect fill="#FFFFFF" fill-opacity="0.5" height="1" stroke-opacity="0.5" width="318" y="2"/>
+<rect fill-opacity="0.3" height="1" width="318" y="1"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="-6.333" x2="324.0545" y1="4" y2="4">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<rect fill="url(#SVGID_3_)" fill-opacity="0.7" height="2" width="318" y="3"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M7,0C3.141,0,0,3.141,0,7v3h10V0H7z" fill="#141414" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M7,2C3.7,2,1,4.7,1,8v2h9V2H7z" fill="#141414" fill-opacity="0.2" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0.667" x2="337.3366" y1="5.5" y2="5.5">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#78787D"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<path d="M7,1C3.7,1,1,3.7,1,7v3h9V1H7z" fill="url(#SVGID_1_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="6" x2="6" y1="111" y2="2.5838">
+<stop offset="0" style="stop-color:#DCDCDC"/>
+<stop offset="1" style="stop-color:#141414"/>
+</linearGradient>
+<path d="M7,2C4.243,2,2,4.243,2,7v3h8V2H7z" fill="url(#SVGID_2_)" fill-opacity="0.3"/>
+<path d="M7,2C4.243,2,2,4.243,2,7v3h1V7c0-2.206,1.795-4,4-4h3V2H7z" fill="#FFFFFF" fill-opacity="0.5" stroke-opacity="0.5"/>
+<path d="M7,1C3.7,1,1,3.7,1,7v3h1V7c0-2.757,2.243-5,5-5h3V1H7z" fill-opacity="0.3"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="3.667" x2="334.0545" y1="4" y2="4">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<path d="M7,3C5.526,3,4.25,3.811,3.557,5H10V3H7z" fill="url(#SVGID_3_)" fill-opacity="0.7"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_lcd_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<path d="M10,7c0-3.859-3.141-7-7-7H0v10h10V7z" fill="#141414" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M9,8c0-3.3-2.7-6-6-6H0v8h9V8z" fill="#141414" fill-opacity="0.2" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-327.333" x2="9.3366" y1="5.5" y2="5.5">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#78787D"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<path d="M9,7c0-3.3-2.7-6-6-6H0v9h9V7z" fill="url(#SVGID_1_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="4" x2="4" y1="111" y2="2.5838">
+<stop offset="0" style="stop-color:#DCDCDC"/>
+<stop offset="1" style="stop-color:#141414"/>
+</linearGradient>
+<path d="M8,7c0-2.757-2.243-5-5-5H0v8h8V7z" fill="url(#SVGID_2_)" fill-opacity="0.3"/>
+<path d="M3,2H0v1h3c2.205,0,4,1.794,4,4v3h1V7C8,4.243,5.757,2,3,2z" fill="#FFFFFF" fill-opacity="0.5" stroke-opacity="0.5"/>
+<path d="M3,1H0v1h3c2.757,0,5,2.243,5,5v3h1V7C9,3.7,6.3,1,3,1z" fill-opacity="0.3"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="-324.333" x2="6.0545" y1="4" y2="4">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<path d="M6.443,5C5.75,3.811,4.475,3,3,3H0v2H6.443z" fill="url(#SVGID_3_)" fill-opacity="0.7"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_messaging_char_count_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="15"/>
+<rect fill="#AAAAAF" height="30" width="15"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_messaging_char_count_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="15"/>
+<path d="M4,0C1.8,0,0,1.8,0,4v22c0,2.2,1.8,4,4,4h11V0H4z" fill="#AAAAAF"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_messaging_char_count_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 15 30" width="15px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="15"/>
+<path d="M11,0H0v30h11c2.2,0,4-1.8,4-4V4C15,1.8,13.2,0,11,0z" fill="#AAAAAF"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_multimedia_trans_b.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 80 10" width="80px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="80"/>
+<rect fill-opacity="0.8" height="10" stroke-opacity="0.8" width="80"/>
+<rect height="1" width="80" y="9"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_multimedia_trans_bl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<rect fill-opacity="0.8" height="10" stroke-opacity="0.8" width="10"/>
+<polygon points="0,0 0,10 10,10 10,9 1,9 1,0 "/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_multimedia_trans_br.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<rect fill-opacity="0.8" height="10" stroke-opacity="0.8" width="10"/>
+<polygon points="0,10 10,10 10,0 9,0 9,9 0,9 "/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_multimedia_trans_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="80px" version="1.1" viewBox="0 0 80 80" width="80px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="80" width="80"/>
+<rect fill-opacity="0.8" height="80" stroke-opacity="0.8" width="80"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_multimedia_trans_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="80px" version="1.1" viewBox="0 0 10 80" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="80" width="10"/>
+<rect fill-opacity="0.8" height="80" stroke-opacity="0.8" width="10"/>
+<rect height="80" width="1"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_multimedia_trans_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="80px" version="1.1" viewBox="0 0 10 80" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="80" width="10"/>
+<rect fill-opacity="0.8" height="80" stroke-opacity="0.8" width="10"/>
+<rect height="80" width="1" x="9"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_multimedia_trans_t.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 80 10" width="80px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="80"/>
+<rect fill-opacity="0.8" height="10" stroke-opacity="0.8" width="80"/>
+<rect height="1" width="80"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_multimedia_trans_tl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<rect fill-opacity="0.8" height="10" stroke-opacity="0.8" width="10"/>
+<polygon points="10,0 0,0 0,10 1,10 1,1 10,1 "/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_multimedia_trans_tr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="10" width="10"/>
+<rect fill-opacity="0.8" height="10" stroke-opacity="0.8" width="10"/>
+<polygon points="10,10 10,0 0,0 0,1 9,1 9,10 "/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_progslider_loaded_disabled_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="20px" version="1.1" viewBox="0 0 20 20" width="20px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="20" width="20"/>
+<rect fill="none" fill-rule="evenodd" height="20" width="20"/>
+<rect fill="#969696" fill-opacity="0.4" fill-rule="evenodd" height="12" width="20" y="4"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_progslider_loaded_disabled_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="20px" version="1.1" viewBox="0 0 20 20" width="20px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="20" width="20"/>
+<rect fill="none" fill-rule="evenodd" height="20" width="20"/>
+<path d="M7,4c-3.309,0-6,2.691-6,6s2.691,6,6,6h13V4H7z " fill="#969696" fill-opacity="0.4" fill-rule="evenodd"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_progslider_loaded_disabled_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="20px" version="1.1" viewBox="0 0 20 20" width="20px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="20" width="20"/>
+<rect fill="none" fill-rule="evenodd" height="20" width="20"/>
+<path d="M13,4H0v12h13c3.309,0,6-2.691,6-6 S16.309,4,13,4z" fill="#969696" fill-opacity="0.4" fill-rule="evenodd"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_progslider_played_disabled_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="20px" version="1.1" viewBox="0 0 20 20" width="20px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="20" width="20"/>
+<rect fill="none" fill-rule="evenodd" height="20" width="20"/>
+<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="12" width="20" y="4"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="20" y="15"/>
+<rect fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="20" y="4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="9.9995" x2="9.9995" y1="4" y2="16.0005">
+<stop offset="0" style="stop-color:#CCCCCC"/>
+<stop offset="1" style="stop-color:#A9A9A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_progslider_played_disabled_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="20px" version="1.1" viewBox="0 0 20 20" width="20px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="20" width="20"/>
+<rect fill="none" fill-rule="evenodd" height="20" width="20"/>
+<path d="M7,4c-3.309,0-6,2.691-6,6s2.691,6,6,6h13V4H7z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M7,15c-2.757,0-5-2.243-5-5s2.243-5,5-5h13V4H7 c-3.309,0-6,2.691-6,6s2.691,6,6,6h13v-1H7z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="10.5" x2="10.5" y1="4" y2="16.0005">
+<stop offset="0" style="stop-color:#CCCCCC"/>
+<stop offset="1" style="stop-color:#A9A9A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_progslider_played_disabled_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="20px" version="1.1" viewBox="0 0 20 20" width="20px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="20" width="20"/>
+<rect fill="none" fill-rule="evenodd" height="20" width="20"/>
+<path d="M13,4H0v12h13c3.309,0,6-2.691,6-6S16.309,4,13,4z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
+<path d="M13,4H0v1h13c2.757,0,5,2.243,5,5s-2.243,5-5,5H0v1h13 c3.309,0,6-2.691,6-6S16.309,4,13,4z" fill-opacity="0.2" fill-rule="evenodd" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="9.5" x2="9.5" y1="4" y2="16.0005">
+<stop offset="0" style="stop-color:#CCCCCC"/>
+<stop offset="1" style="stop-color:#A9A9A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_shortcut_badge_bg_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="28px" version="1.1" viewBox="0 0 14 28" width="14px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#14141E" fill-opacity="0.1" height="28" stroke-opacity="0.1" width="14"/>
+<rect fill="#FFFFFF" height="26" width="14" y="1"/>
+<rect fill="url(#SVGID_1_)" height="24" width="14" y="2"/>
+<rect fill="none" height="28" width="14"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="6.9995" x2="6.9995" y1="2" y2="26.0005">
+<stop offset="0" style="stop-color:#A0F800"/>
+<stop offset="1" style="stop-color:#319E00"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_shortcut_badge_bg_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="28px" version="1.1" viewBox="0 0 14 28" width="14px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M0,14c0,7.72,6.28,14,14,14V0C6.28,0,0,6.28,0,14z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M1,14c0,7.18,5.82,13,13,13V1C6.82,1,1,6.82,1,14z" fill="#FFFFFF"/>
+<path d="M2,14c0,6.617,5.383,12,12,12V2C7.383,2,2,7.383,2,14z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="28" width="14"/>
+<rect fill="none" height="28" width="14"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="8" x2="8" y1="2" y2="26.0005">
+<stop offset="0" style="stop-color:#A0F800"/>
+<stop offset="1" style="stop-color:#319E00"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_shortcut_badge_bg_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="28px" version="1.1" viewBox="0 0 14 28" width="14px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M14,14C14,6.28,7.72,0,0,0v28C7.72,28,14,21.72,14,14z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M13,14C13,6.82,7.18,1,0,1v26C7.18,27,13,21.18,13,14z" fill="#FFFFFF"/>
+<path d="M12,14C12,7.383,6.617,2,0,2v24C6.617,26,12,20.617,12,14z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="28" width="14"/>
+<rect fill="none" height="28" width="14"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="6" x2="6" y1="2" y2="26.0005">
+<stop offset="0" style="stop-color:#A0F800"/>
+<stop offset="1" style="stop-color:#319E00"/>
+</linearGradient>
+</defs>
+</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_statusbar_l.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_statusbar_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,6 +2,5 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="20px" version="1.1" viewBox="0 0 20 20" width="20px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="20" width="20"/>
-<rect height="20" width="19" x="1"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="20" stroke-opacity="0.1" width="2"/>
+<rect height="20" width="20"/>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_statusbar_r.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_statusbar_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,6 +2,5 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="20px" version="1.1" viewBox="0 0 20 20" width="20px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="20" width="20"/>
-<rect height="20" width="19"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="20" stroke-opacity="0.1" width="2" x="18"/>
+<rect height="20" width="20"/>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_statusbar_trans_c.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_statusbar_trans_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,5 +2,5 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="20px" version="1.1" viewBox="0 0 20 20" width="20px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="20" width="20"/>
-<rect fill-opacity="0.6" height="20" stroke-opacity="0.6" width="20"/>
+<rect fill-opacity="0.8" height="20" stroke-opacity="0.8" width="20"/>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_statusbar_trans_l.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_statusbar_trans_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,6 +2,5 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="20px" version="1.1" viewBox="0 0 20 20" width="20px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="20" width="20"/>
-<rect fill-opacity="0.6" height="20" stroke-opacity="0.6" width="19" x="1"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="20" stroke-opacity="0.1" width="2"/>
+<rect fill-opacity="0.8" height="20" stroke-opacity="0.8" width="20"/>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_statusbar_trans_r.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_statusbar_trans_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,6 +2,5 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="20px" version="1.1" viewBox="0 0 20 20" width="20px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="20" width="20"/>
-<rect fill-opacity="0.6" height="20" stroke-opacity="0.6" width="19"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="20" stroke-opacity="0.1" width="2" x="18"/>
+<rect fill-opacity="0.8" height="20" stroke-opacity="0.8" width="20"/>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tab_active_c.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<rect fill="none" height="55" width="55"/>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.5" fill-rule="evenodd" height="55" stroke-opacity="0.5" width="55"/>
-<rect fill="#FFFFFF" fill-opacity="0.4" fill-rule="evenodd" height="1" stroke-opacity="0.4" width="55"/>
-<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="27.4995" x2="27.4995" y1="0" y2="55.0005">
-<stop offset="0" style="stop-color:#1E1E1E"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-</defs>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tab_active_l.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<rect fill="none" height="55" width="55"/>
-<path d="M55,0H30c-6.627,0-11.016,4.881-12,12l-6,32 c-1.723,6.381-5.377,11-12,11h55V0z" fill="url(#SVGID_1_)" fill-opacity="0.5" fill-rule="evenodd" stroke-opacity="0.5"/>
-<path d="M1.203,54.914C0.813,54.949,0.412,54.967,0,54.967 C0,54.967,0.48,54.962,1.203,54.914z M30,0c-6.627,0-11.016,4.877-12,11.992l-6,31.98c-1.615,5.978-4.928,10.409-10.791,10.94 c1.551-0.104,4.217-0.411,5.696-1.313c2.985-1.82,4.95-4.822,6.173-9.365l6.02-32.057C20.053,5.264,24.273,1,30.114,1H55V0H30z" fill="#FFFFFF" fill-opacity="0.4" fill-rule="evenodd" stroke-opacity="0.4"/>
-<rect fill="none" fill-rule="evenodd" height="55" width="55"/>
-<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="27.5" x2="27.5" y1="0" y2="55.0005">
-<stop offset="0" style="stop-color:#1E1E1E"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-</defs>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tab_active_r.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<rect fill="none" height="55" width="55"/>
-<path d="M0,0h25c6.627,0,11.016,4.881,11.999,12 l6.002,32C44.723,50.381,48.377,55,55,55H0V0z" fill="url(#SVGID_1_)" fill-opacity="0.5" fill-rule="evenodd" stroke-opacity="0.5"/>
-<path d="M53.797,54.914c0.389,0.035,0.79,0.053,1.203,0.053 C55,54.967,54.521,54.962,53.797,54.914z M25,0c6.627,0,11.016,4.877,11.999,11.992l6.002,31.98 c1.614,5.978,4.926,10.409,10.79,10.94c-1.552-0.104-4.217-0.411-5.697-1.313c-2.984-1.82-4.949-4.822-6.172-9.365l-6.02-32.057 C34.947,5.264,30.727,1,24.886,1H0V0H25z" fill="#FFFFFF" fill-opacity="0.4" fill-rule="evenodd" stroke-opacity="0.4"/>
-<rect fill="none" height="55" width="55"/>
-<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="27.5" x2="27.5" y1="0" y2="55.0005">
-<stop offset="0" style="stop-color:#1E1E1E"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-</defs>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tab_mask_c.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<rect fill="none" height="55" width="55"/>
-<rect fill-rule="evenodd" height="55" width="55"/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tab_mask_l.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<rect fill="none" height="55" width="55"/>
-<path d="M55,0H30c-6.627,0-11.016,4.881-12,12l-6,32c-1.723,6.381-5.377,11-12,11h55V0z" fill-rule="evenodd"/>
-<rect fill="none" fill-rule="evenodd" height="55" width="55"/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tab_mask_r.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<rect fill="none" height="55" width="55"/>
-<path d="M0,0h25c6.627,0,11.016,4.881,11.999,12l6.002,32C44.723,50.381,48.377,55,55,55H0 V0z" fill-rule="evenodd"/>
-<rect fill="none" fill-rule="evenodd" height="55" width="55"/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tab_passive_normal_c.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<rect fill="none" height="55" width="55"/>
-<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="55" width="55"/>
-<rect fill="#FFFFFF" fill-opacity="0.4" fill-rule="evenodd" height="1" stroke-opacity="0.4" width="55"/>
-<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="27.4995" x2="27.4995" y1="1" y2="55">
-<stop offset="0" style="stop-color:#787878"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
-</linearGradient>
-</defs>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tab_passive_normal_l.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<rect fill="none" height="55" width="55"/>
-<path d="M55,0H30c-6.627,0-11.016,4.881-12,12l-6,32 c-1.723,6.381-5.377,11-12,11h55V0z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
-<path d="M1.203,54.914C0.813,54.949,0.412,54.967,0,54.967 C0,54.967,0.48,54.962,1.203,54.914z M30,0c-6.627,0-11.016,4.877-12,11.992l-6,31.98c-1.615,5.978-4.928,10.409-10.791,10.94 c1.551-0.104,4.217-0.411,5.696-1.313c2.985-1.82,4.95-4.822,6.173-9.365l6.02-32.057C20.053,5.264,24.273,1,30.114,1H55V0H30z" fill="#FFFFFF" fill-opacity="0.4" fill-rule="evenodd" stroke-opacity="0.4"/>
-<rect fill="none" fill-rule="evenodd" height="55" width="55"/>
-<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="27.5" x2="27.5" y1="1" y2="55">
-<stop offset="0" style="stop-color:#787878"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
-</linearGradient>
-</defs>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tab_passive_normal_r.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<rect fill="none" height="55" width="55"/>
-<path d="M0,0h25c6.627,0,11.016,4.881,11.999,12l6.002,32 C44.723,50.381,48.377,55,55,55H0V0z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
-<path d="M53.797,54.914c0.389,0.035,0.79,0.053,1.203,0.053 C55,54.967,54.521,54.962,53.797,54.914z M25,0c6.627,0,11.016,4.877,11.999,11.992l6.002,31.98 c1.614,5.978,4.926,10.409,10.79,10.94c-1.552-0.104-4.217-0.411-5.697-1.313c-2.984-1.82-4.949-4.822-6.172-9.365l-6.02-32.057 C34.947,5.264,30.727,1,24.886,1H0V0H25z" fill="#FFFFFF" fill-opacity="0.4" fill-rule="evenodd" stroke-opacity="0.4"/>
-<rect fill="none" fill-rule="evenodd" height="55" width="55"/>
-<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="27.5" x2="27.5" y1="1" y2="55">
-<stop offset="0" style="stop-color:#787878"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
-</linearGradient>
-</defs>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tab_passive_pressed_c.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<rect fill="none" height="55" width="55"/>
-<rect fill="url(#SVGID_1_)" fill-rule="evenodd" height="55" width="55"/>
-<rect fill="#FFFFFF" fill-opacity="0.4" fill-rule="evenodd" height="1" stroke-opacity="0.4" width="55"/>
-<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="27.5005" x2="27.5005" y1="54.666" y2="1.2289">
-<stop offset="0" style="stop-color:#787878"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
-</linearGradient>
-</defs>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tab_passive_pressed_l.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<rect fill="none" height="55" width="55"/>
-<path d="M55,0H30c-6.627,0-11.016,4.881-12,12l-6,32 c-1.723,6.381-5.377,11-12,11h55V0z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
-<path d="M1.203,54.914C0.813,54.949,0.412,54.967,0,54.967 C0,54.967,0.48,54.962,1.203,54.914z M30,0c-6.627,0-11.016,4.877-12,11.992l-6,31.98c-1.615,5.978-4.928,10.409-10.791,10.94 c1.551-0.104,4.217-0.411,5.696-1.313c2.985-1.82,4.95-4.822,6.173-9.365l6.02-32.057C20.053,5.264,24.273,1,30.114,1H55V0H30z" fill="#FFFFFF" fill-opacity="0.4" fill-rule="evenodd" stroke-opacity="0.4"/>
-<rect fill="none" fill-rule="evenodd" height="55" width="55"/>
-<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="27.5" x2="27.5" y1="54.666" y2="1.2289">
-<stop offset="0" style="stop-color:#787878"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
-</linearGradient>
-</defs>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tab_passive_pressed_r.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<rect fill="none" height="55" width="55"/>
-<path d="M0,0h25c6.627,0,11.016,4.881,11.999,12l6.002,32 C44.723,50.381,48.377,55,55,55H0V0z" fill="url(#SVGID_1_)" fill-rule="evenodd"/>
-<path d="M53.797,54.914c0.389,0.035,0.79,0.053,1.203,0.053 C55,54.967,54.521,54.962,53.797,54.914z M25,0c6.627,0,11.016,4.877,11.999,11.992l6.002,31.98 c1.614,5.978,4.926,10.409,10.79,10.94c-1.552-0.104-4.217-0.411-5.697-1.313c-2.984-1.82-4.949-4.822-6.172-9.365l-6.02-32.057 C34.947,5.264,30.727,1,24.886,1H0V0H25z" fill="#FFFFFF" fill-opacity="0.4" fill-rule="evenodd" stroke-opacity="0.4"/>
-<rect fill="none" fill-rule="evenodd" height="55" width="55"/>
-<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="27.5" x2="27.5" y1="54.666" y2="1.2289">
-<stop offset="0" style="stop-color:#787878"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
-</linearGradient>
-</defs>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_highlight_c.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_highlight_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,20 +2,17 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="19.9995" x2="19.9995" y1="0.2319" y2="39.2324">
-<stop offset="0" style="stop-color:#00BAFF"/>
-<stop offset="0.9835" style="stop-color:#0075BD"/>
-<stop offset="1" style="stop-color:#0075BD"/>
+<rect fill="url(#SVGID_1_)" height="40" width="40"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="40" y="38"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="3" stroke-opacity="0.2" width="40" y="1"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="40"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="40" y="39"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="19.9995" x2="19.9995" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="0.9" style="stop-color:#3F89A9"/>
+<stop offset="0.9" style="stop-color:#3880A4"/>
+<stop offset="1" style="stop-color:#3278A0"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" height="39" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="-39.3335" x2="79.1721" y1="37" y2="37">
-<stop offset="0" style="stop-color:#3AB9E0"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#3AB9E0"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.8" height="2" stroke-opacity="0.8" width="40" y="36"/>
-<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="40"/>
-<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.5" height="1" stroke-opacity="0.5" width="40" y="1"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_highlight_cl.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_highlight_cl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,27 +2,15 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0.5" x2="0.5" y1="2" y2="38.0005">
-<stop offset="0" style="stop-color:#808080"/>
-<stop offset="0.0988" style="stop-color:#BEBEBE"/>
-<stop offset="0.1832" style="stop-color:#EDEDED"/>
-<stop offset="0.2253" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#262626"/>
+<rect fill="url(#SVGID_1_)" height="40" width="40"/>
+<polygon fill="#FFFFFF" fill-opacity="0.2" points="1,1 1,39 40,39 40,38 2,38 2,4 40,4 40,2 40,1 " stroke-opacity="0.2"/>
+<polygon fill-opacity="0.2" points="40,39 1,39 1,1 40,1 40,0 0,0 0,40 40,40 " stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="0.9" style="stop-color:#3F89A9"/>
+<stop offset="0.9" style="stop-color:#3880A4"/>
+<stop offset="1" style="stop-color:#3278A0"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.4" height="36" stroke-opacity="0.4" width="1" y="2"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="20" x2="20" y1="0.2319" y2="39.2324">
-<stop offset="0" style="stop-color:#00BAFF"/>
-<stop offset="0.9835" style="stop-color:#0075BD"/>
-<stop offset="1" style="stop-color:#0075BD"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" height="39" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.5" height="1" stroke-opacity="0.5" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="1" x2="118.5015" y1="37" y2="37">
-<stop offset="0" style="stop-color:#3AB9E0"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#3AB9E0"/>
-</linearGradient>
-<rect fill="url(#SVGID_3_)" fill-opacity="0.8" height="2" stroke-opacity="0.8" width="39" x="1" y="36"/>
-<polygon fill-opacity="0.2" points="1,38 1,1 40,1 40,0 0,0 0,39 40,39 40,38 " stroke-opacity="0.2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_highlight_cr.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_highlight_cr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,19 +2,15 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="0.2319" y2="39.2324">
-<stop offset="0" style="stop-color:#00BAFF"/>
-<stop offset="0.9835" style="stop-color:#0075BD"/>
-<stop offset="1" style="stop-color:#0075BD"/>
+<rect fill="url(#SVGID_1_)" height="40" width="40"/>
+<polygon fill="#FFFFFF" fill-opacity="0.2" points="0,1 0,2 0,4 38,4 38,38 0,38 0,39 39,39 39,1 " stroke-opacity="0.2"/>
+<polygon fill-opacity="0.2" points="0,39 39,39 39,1 0,1 0,0 40,0 40,40 0,40 " stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="0.9" style="stop-color:#3F89A9"/>
+<stop offset="0.9" style="stop-color:#3880A4"/>
+<stop offset="1" style="stop-color:#3278A0"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" height="39" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.5" height="1" stroke-opacity="0.5" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="-78.6611" x2="38.8404" y1="37" y2="37">
-<stop offset="0" style="stop-color:#3AB9E0"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#3AB9E0"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.8" height="2" stroke-opacity="0.8" width="39" y="36"/>
-<polygon fill-opacity="0.2" points="0,1 39,1 39,38 0,38 0,39 40,39 40,0 0,0 " stroke-opacity="0.2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_highlight_l.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_highlight_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,19 +2,15 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<path d="M2,30V0H0v30c0,5.5,4.5,10,10,10h50v-2H10C5.589,38,2,34.411,2,30z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30.5" x2="30.5" y1="0.2319" y2="39.2319">
-<stop offset="0" style="stop-color:#00BAFF"/>
-<stop offset="0.9835" style="stop-color:#0075BD"/>
-<stop offset="1" style="stop-color:#0075BD"/>
+<rect fill="url(#SVGID_1_)" height="40" width="60"/>
+<path d="M0,0v40h60V0H0z M59,39H1V1h58V39z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,1v38h58V1H1z M58,38H2V4h56V38z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="0.9" style="stop-color:#3F89A9"/>
+<stop offset="0.9" style="stop-color:#3880A4"/>
+<stop offset="1" style="stop-color:#3278A0"/>
</linearGradient>
-<path d="M60,0H1v30c0,4.963,4.037,9,9,9h50V0z" fill="url(#SVGID_1_)"/>
-<rect fill="#FFFFFF" fill-opacity="0.5" height="1" stroke-opacity="0.5" width="58" x="2" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="2" x2="59" y1="33" y2="33">
-<stop offset="0" style="stop-color:#3AB9E0"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#3AB9E0"/>
-</linearGradient>
-<path d="M2,28v2c0,4.411,3.589,8,8,8h49v-2H10C5.589,36,2,32.411,2,28z" fill="url(#SVGID_2_)" fill-opacity="0.8" stroke-opacity="0.8"/>
-<path d="M1,0v30c0,4.963,4.037,9,9,9h50V0H1z M59,38H10c-4.411,0-8-3.589-8-8V1h57V38z" fill-opacity="0.2" stroke-opacity="0.2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_highlight_r.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_highlight_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,19 +2,16 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<path d="M58,0v30c0,4.411-3.589,8-8,8H0v2h50c5.5,0,10-4.5,10-10V0H58z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientTransform="matrix(-1 0 0 1 -1619 0)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-1648.5" x2="-1648.5" y1="0.2319" y2="39.2319">
-<stop offset="0" style="stop-color:#00BAFF"/>
-<stop offset="0.9835" style="stop-color:#0075BD"/>
-<stop offset="1" style="stop-color:#0075BD"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1" x="59"/>
+<rect fill="url(#SVGID_1_)" height="40" width="60"/>
+<path d="M0,0v40h60V0H0z M59,39H1V1h58V39z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,1v38h58V1H1z M58,38H2V4h56V38z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="0.9" style="stop-color:#3F89A9"/>
+<stop offset="0.9" style="stop-color:#3880A4"/>
+<stop offset="1" style="stop-color:#3278A0"/>
</linearGradient>
-<path d="M0,0h59v30c0,4.963-4.037,9-9,9H0V0z" fill="url(#SVGID_1_)"/>
-<rect fill="#FFFFFF" fill-opacity="0.5" height="1" stroke-opacity="0.5" width="58" y="1"/>
-<linearGradient gradientTransform="matrix(-1 0 0 1 -1619 0)" gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="-1677" x2="-1620" y1="33" y2="33">
-<stop offset="0" style="stop-color:#3AB9E0"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#3AB9E0"/>
-</linearGradient>
-<path d="M58,28v2c0,4.411-3.589,8-8,8H1v-2h49C54.411,36,58,32.411,58,28z" fill="url(#SVGID_2_)" fill-opacity="0.8" stroke-opacity="0.8"/>
-<path d="M0,0v39h50c4.963,0,9-4.037,9-9V0H0z M1,1h57v29c0,4.411-3.589,8-8,8H1V1z" fill-opacity="0.2" stroke-opacity="0.2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_latched_c.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_latched_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,25 +2,16 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="19.9995" x2="19.9995" y1="-0.1704" y2="38.8301">
-<stop offset="0" style="stop-color:#646464"/>
-<stop offset="0.2679" style="stop-color:#585858"/>
-<stop offset="0.75" style="stop-color:#464646"/>
-<stop offset="0.8457" style="stop-color:#525252"/>
-<stop offset="1" style="stop-color:#6E6E6E"/>
+<rect fill="url(#SVGID_1_)" height="40" width="40"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="40" y="39"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="40" y="38"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="3" stroke-opacity="0.4" width="40"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="19.9995" x2="19.9995" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#C8C8D2"/>
+<stop offset="0.9" style="stop-color:#9696A0"/>
+<stop offset="0.9" style="stop-color:#8C8C96"/>
+<stop offset="1" style="stop-color:#82828C"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" height="39" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.7" height="1" stroke-opacity="0.7" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="19.9995" x2="19.9995" y1="1.769" y2="18.0023">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#999999"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.1" height="16" stroke-opacity="0.1" width="40" y="2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="-39.3335" x2="79.2265" y1="37" y2="37">
-<stop offset="0" style="stop-color:#666666"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#666666"/>
-</linearGradient>
-<rect fill="url(#SVGID_3_)" fill-opacity="0.4" height="2" stroke-opacity="0.4" width="40" y="36"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_latched_cl.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_latched_cl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,33 +2,16 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="-0.1704" y2="38.8301">
-<stop offset="0" style="stop-color:#646464"/>
-<stop offset="0.2679" style="stop-color:#585858"/>
-<stop offset="0.75" style="stop-color:#464646"/>
-<stop offset="0.8457" style="stop-color:#525252"/>
-<stop offset="1" style="stop-color:#6E6E6E"/>
-</linearGradient>
-<rect fill="url(#SVGID_1_)" height="39" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.7" height="1" stroke-opacity="0.7" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="20" x2="20" y1="1.769" y2="18.0023">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#999999"/>
+<rect fill="url(#SVGID_1_)" height="40" width="40"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="39" x="1" y="39"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="1,0 1,39 40,39 40,38 2,38 2,3 40,3 40,1 40,0 " stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#C8C8D2"/>
+<stop offset="0.9" style="stop-color:#9696A0"/>
+<stop offset="0.9" style="stop-color:#8C8C96"/>
+<stop offset="1" style="stop-color:#82828C"/>
</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.1" height="16" stroke-opacity="0.1" width="40" y="2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="0.5" x2="0.5" y1="2" y2="38.0005">
-<stop offset="0" style="stop-color:#828282"/>
-<stop offset="0.0971" style="stop-color:#BEBEBE"/>
-<stop offset="0.1826" style="stop-color:#EDEDED"/>
-<stop offset="0.2253" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#505050"/>
-</linearGradient>
-<rect fill="url(#SVGID_3_)" fill-opacity="0.4" height="36" stroke-opacity="0.4" width="1" y="2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="1" x2="118.555" y1="37" y2="37">
-<stop offset="0" style="stop-color:#666666"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#666666"/>
-</linearGradient>
-<rect fill="url(#SVGID_4_)" fill-opacity="0.4" height="2" stroke-opacity="0.4" width="39" x="1" y="36"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_latched_cr.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_latched_cr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,33 +2,16 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="-0.1704" y2="38.8301">
-<stop offset="0" style="stop-color:#646464"/>
-<stop offset="0.2679" style="stop-color:#585858"/>
-<stop offset="0.75" style="stop-color:#464646"/>
-<stop offset="0.8457" style="stop-color:#525252"/>
-<stop offset="1" style="stop-color:#6E6E6E"/>
-</linearGradient>
-<rect fill="url(#SVGID_1_)" height="39" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.7" height="1" stroke-opacity="0.7" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="20" x2="20" y1="1.769" y2="18.0023">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#999999"/>
+<rect fill="url(#SVGID_1_)" height="40" width="40"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="39" y="39"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1" x="39"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="0,0 0,1 0,3 38,3 38,38 0,38 0,39 39,39 39,0 " stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#C8C8D2"/>
+<stop offset="0.9" style="stop-color:#9696A0"/>
+<stop offset="0.9" style="stop-color:#8C8C96"/>
+<stop offset="1" style="stop-color:#82828C"/>
</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.1" height="16" stroke-opacity="0.1" width="40" y="2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="39.5" x2="39.5" y1="2" y2="38.0005">
-<stop offset="0" style="stop-color:#828282"/>
-<stop offset="0.0971" style="stop-color:#BEBEBE"/>
-<stop offset="0.1826" style="stop-color:#EDEDED"/>
-<stop offset="0.2253" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#505050"/>
-</linearGradient>
-<rect fill="url(#SVGID_3_)" fill-opacity="0.4" height="36" stroke-opacity="0.4" width="1" x="39" y="2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="-78.6611" x2="38.8938" y1="37" y2="37">
-<stop offset="0" style="stop-color:#666666"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#666666"/>
-</linearGradient>
-<rect fill="url(#SVGID_4_)" fill-opacity="0.4" height="2" stroke-opacity="0.4" width="39" y="36"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_latched_l.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_latched_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,37 +2,17 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30.5" x2="30.5" y1="-0.1704" y2="38.8301">
-<stop offset="0" style="stop-color:#646464"/>
-<stop offset="0.2679" style="stop-color:#585858"/>
-<stop offset="0.75" style="stop-color:#464646"/>
-<stop offset="0.8457" style="stop-color:#525252"/>
-<stop offset="1" style="stop-color:#6E6E6E"/>
-</linearGradient>
-<path d="M1,0v30c0,4.963,4.037,9,9,9h50V0H1z" fill="url(#SVGID_1_)"/>
-<path d="M2,30V0H0v30c0,5.5,4.5,10,10,10h50v-2H10C5.589,38,2,34.411,2,30z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="31.5" x2="31.5" y1="2.125" y2="20.8817">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#505050"/>
+<rect fill="url(#SVGID_1_)" height="40" width="60"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="58" x="1" y="39"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1" x="59"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1"/>
+<path d="M1,0v39h58V0H1z M58,38H2V3h56V38z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#C8C8D2"/>
+<stop offset="0.9" style="stop-color:#9696A0"/>
+<stop offset="0.9" style="stop-color:#8C8C96"/>
+<stop offset="1" style="stop-color:#82828C"/>
</linearGradient>
-<polygon fill="url(#SVGID_2_)" fill-opacity="0.7" points="3,1 3,21 4,21 4,2 60,2 60,1 " stroke-opacity="0.7"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="32" x2="32" y1="1.769" y2="18.0023">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#999999"/>
-</linearGradient>
-<rect fill="url(#SVGID_3_)" fill-opacity="0.1" height="16" stroke-opacity="0.1" width="56" x="4" y="2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="59.5" x2="59.5" y1="2" y2="38.0005">
-<stop offset="0" style="stop-color:#828282"/>
-<stop offset="0.0971" style="stop-color:#BEBEBE"/>
-<stop offset="0.1826" style="stop-color:#EDEDED"/>
-<stop offset="0.2253" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#505050"/>
-</linearGradient>
-<rect fill="url(#SVGID_4_)" fill-opacity="0.4" height="36" stroke-opacity="0.4" width="1" x="59" y="2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="3" x2="59" y1="33" y2="33">
-<stop offset="0" style="stop-color:#666666"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#666666"/>
-</linearGradient>
-<path d="M3,28v2c0,4.411,3.589,8,8,8h48v-2H11C6.589,36,3,32.411,3,28z" fill="url(#SVGID_5_)" fill-opacity="0.4" stroke-opacity="0.4"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_latched_r.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_latched_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,37 +2,17 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="29.5" x2="29.5" y1="-0.1704" y2="38.8301">
-<stop offset="0" style="stop-color:#646464"/>
-<stop offset="0.2679" style="stop-color:#585858"/>
-<stop offset="0.75" style="stop-color:#464646"/>
-<stop offset="0.8457" style="stop-color:#525252"/>
-<stop offset="1" style="stop-color:#6E6E6E"/>
-</linearGradient>
-<path d="M0,0v39h50c4.963,0,9-4.037,9-9V0H0z" fill="url(#SVGID_1_)"/>
-<path d="M58,0v30c0,4.411-3.589,8-8,8H0v2h50c5.5,0,10-4.5,10-10V0H58z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="28.5" x2="28.5" y1="2.125" y2="20.8817">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#505050"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1" x="59"/>
+<rect fill="url(#SVGID_1_)" height="40" width="60"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="58" x="1" y="39"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1"/>
+<path d="M1,0v39h58V0H1z M58,38H2V3h56V38z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#C8C8D2"/>
+<stop offset="0.9" style="stop-color:#9696A0"/>
+<stop offset="0.9" style="stop-color:#8C8C96"/>
+<stop offset="1" style="stop-color:#82828C"/>
</linearGradient>
-<polygon fill="url(#SVGID_2_)" fill-opacity="0.7" points="0,1 0,2 56,2 56,21 57,21 57,1 " stroke-opacity="0.7"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="28" x2="28" y1="1.769" y2="18.0023">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#999999"/>
-</linearGradient>
-<rect fill="url(#SVGID_3_)" fill-opacity="0.1" height="16" stroke-opacity="0.1" width="56" y="2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="0.5" x2="0.5" y1="2" y2="38.0005">
-<stop offset="0" style="stop-color:#828282"/>
-<stop offset="0.0971" style="stop-color:#BEBEBE"/>
-<stop offset="0.1826" style="stop-color:#EDEDED"/>
-<stop offset="0.2253" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#505050"/>
-</linearGradient>
-<rect fill="url(#SVGID_4_)" fill-opacity="0.4" height="36" stroke-opacity="0.4" width="1" y="2"/>
-<linearGradient gradientTransform="matrix(-1 0 0 1 -1619 0)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="-1676" x2="-1620" y1="33" y2="33">
-<stop offset="0" style="stop-color:#666666"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#666666"/>
-</linearGradient>
-<path d="M57,28v2c0,4.411-3.589,8-8,8H1v-2h48C53.411,36,57,32.411,57,28z" fill="url(#SVGID_5_)" fill-opacity="0.4" stroke-opacity="0.4"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_normal_c.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_normal_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,18 +2,15 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="19.9995" x2="19.9995" y1="0" y2="38.79">
-<stop offset="0" style="stop-color:#0D0D0D"/>
-<stop offset="0.7418" style="stop-color:#000000"/>
-<stop offset="0.8629" style="stop-color:#0C0C0C"/>
-<stop offset="1" style="stop-color:#1F1F1F"/>
+<rect fill="url(#SVGID_1_)" height="40" width="40"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="40" y="39"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="40" y="38"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="19.9995" x2="19.9995" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D2D2DC"/>
+<stop offset="0.9" style="stop-color:#C8C8D2"/>
+<stop offset="1" style="stop-color:#BEBEC8"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" height="39" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.7" height="1" stroke-opacity="0.7" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="19.9995" x2="19.9995" y1="2" y2="18.1051">
-<stop offset="0" style="stop-color:#666666"/>
-<stop offset="1" style="stop-color:#262626"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.5" height="16" stroke-opacity="0.5" width="40" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_normal_cl.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_normal_cl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,26 +2,16 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="0" y2="38.79">
-<stop offset="0" style="stop-color:#0D0D0D"/>
-<stop offset="0.7418" style="stop-color:#000000"/>
-<stop offset="0.8629" style="stop-color:#0C0C0C"/>
-<stop offset="1" style="stop-color:#1F1F1F"/>
+<rect fill="url(#SVGID_1_)" height="40" width="40"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="40" y="39"/>
+<rect fill="#FFFFFF" fill-opacity="0.5" height="39" stroke-opacity="0.5" width="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="39" x="1" y="38"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D2D2DC"/>
+<stop offset="0.9" style="stop-color:#C8C8D2"/>
+<stop offset="1" style="stop-color:#BEBEC8"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" height="39" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.7" height="1" stroke-opacity="0.7" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="20" x2="20" y1="2" y2="18.1051">
-<stop offset="0" style="stop-color:#666666"/>
-<stop offset="1" style="stop-color:#262626"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.5" height="16" stroke-opacity="0.5" width="40" y="2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="0.5" x2="0.5" y1="2" y2="38.0005">
-<stop offset="0" style="stop-color:#808080"/>
-<stop offset="0.0988" style="stop-color:#BEBEBE"/>
-<stop offset="0.1832" style="stop-color:#EDEDED"/>
-<stop offset="0.2253" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#262626"/>
-</linearGradient>
-<rect fill="url(#SVGID_3_)" fill-opacity="0.4" height="36" stroke-opacity="0.4" width="1" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_normal_cr.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_normal_cr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,26 +2,16 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="0" y2="38.79">
-<stop offset="0" style="stop-color:#0D0D0D"/>
-<stop offset="0.7418" style="stop-color:#000000"/>
-<stop offset="0.8629" style="stop-color:#0C0C0C"/>
-<stop offset="1" style="stop-color:#1F1F1F"/>
+<rect fill="url(#SVGID_1_)" height="40" width="40"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="40" y="39"/>
+<rect fill="#9696A0" fill-opacity="0.5" height="39" stroke-opacity="0.5" width="1" x="39"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="39" y="38"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D2D2DC"/>
+<stop offset="0.9" style="stop-color:#C8C8D2"/>
+<stop offset="1" style="stop-color:#BEBEC8"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" height="39" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.7" height="1" stroke-opacity="0.7" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="20" x2="20" y1="2" y2="18.1051">
-<stop offset="0" style="stop-color:#666666"/>
-<stop offset="1" style="stop-color:#262626"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.5" height="16" stroke-opacity="0.5" width="40" y="2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="39.5" x2="39.5" y1="2" y2="38.0005">
-<stop offset="0" style="stop-color:#808080"/>
-<stop offset="0.0988" style="stop-color:#BEBEBE"/>
-<stop offset="0.1832" style="stop-color:#EDEDED"/>
-<stop offset="0.2253" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#262626"/>
-</linearGradient>
-<rect fill="url(#SVGID_3_)" fill-opacity="0.4" height="36" stroke-opacity="0.4" width="1" x="39" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_normal_l.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_normal_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,30 +2,16 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30.5" x2="30.5" y1="0" y2="38.79">
-<stop offset="0" style="stop-color:#0D0D0D"/>
-<stop offset="0.7418" style="stop-color:#000000"/>
-<stop offset="0.8629" style="stop-color:#0C0C0C"/>
-<stop offset="1" style="stop-color:#1F1F1F"/>
-</linearGradient>
-<path d="M1,0v30c0,4.963,4.038,9,9,9h50V0H1z" fill="url(#SVGID_1_)"/>
-<path d="M2,30V0H0v30c0,5.5,4.5,10,10,10h50v-2H10C5.589,38,2,34.411,2,30z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="31.5" x2="31.5" y1="2.0415" y2="21.0016">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#262626"/>
+<rect fill="url(#SVGID_1_)" height="40" width="60"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="60" y="39"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="1,38 1,0 0,0 0,39 59,39 59,38 " stroke-opacity="0.4"/>
+<rect fill="#9696A0" fill-opacity="0.5" height="39" stroke-opacity="0.5" width="1" x="59"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D2D2DC"/>
+<stop offset="0.9" style="stop-color:#C8C8D2"/>
+<stop offset="1" style="stop-color:#BEBEC8"/>
</linearGradient>
-<polygon fill="url(#SVGID_2_)" fill-opacity="0.7" points="3,1 3,21 4,21 4,2 60,2 60,1 " stroke-opacity="0.7"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="32" x2="32" y1="2" y2="18.1051">
-<stop offset="0" style="stop-color:#666666"/>
-<stop offset="1" style="stop-color:#262626"/>
-</linearGradient>
-<rect fill="url(#SVGID_3_)" fill-opacity="0.5" height="16" stroke-opacity="0.5" width="56" x="4" y="2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="59.5" x2="59.5" y1="2" y2="38.0005">
-<stop offset="0" style="stop-color:#808080"/>
-<stop offset="0.0988" style="stop-color:#BEBEBE"/>
-<stop offset="0.1832" style="stop-color:#EDEDED"/>
-<stop offset="0.2253" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#262626"/>
-</linearGradient>
-<rect fill="url(#SVGID_4_)" fill-opacity="0.2" height="36" stroke-opacity="0.2" width="1" x="59" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_normal_r.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_normal_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,30 +2,16 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="29.5" x2="29.5" y1="0" y2="38.79">
-<stop offset="0" style="stop-color:#0D0D0D"/>
-<stop offset="0.7418" style="stop-color:#000000"/>
-<stop offset="0.8629" style="stop-color:#0C0C0C"/>
-<stop offset="1" style="stop-color:#1F1F1F"/>
-</linearGradient>
-<path d="M0,0v39h50c4.963,0,9-4.037,9-9V0H0z" fill="url(#SVGID_1_)"/>
-<path d="M58,0v30c0,4.411-3.589,8-8,8H0v2h50c5.5,0,10-4.5,10-10V0H58z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="28.5" x2="28.5" y1="2.0415" y2="21.0016">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#262626"/>
+<rect fill="url(#SVGID_1_)" height="40" width="60"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="60" y="39"/>
+<rect fill="#FFFFFF" fill-opacity="0.5" height="39" stroke-opacity="0.5" width="1"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="59,0 59,38 1,38 1,39 60,39 60,0 " stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D2D2DC"/>
+<stop offset="0.9" style="stop-color:#C8C8D2"/>
+<stop offset="1" style="stop-color:#BEBEC8"/>
</linearGradient>
-<polygon fill="url(#SVGID_2_)" fill-opacity="0.7" points="0,1 0,2 56,2 56,21 57,21 57,1 " stroke-opacity="0.7"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="28" x2="28" y1="2" y2="18.1051">
-<stop offset="0" style="stop-color:#666666"/>
-<stop offset="1" style="stop-color:#262626"/>
-</linearGradient>
-<rect fill="url(#SVGID_3_)" fill-opacity="0.5" height="16" stroke-opacity="0.5" width="56" y="2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="0.5" x2="0.5" y1="2" y2="38.0005">
-<stop offset="0" style="stop-color:#808080"/>
-<stop offset="0.0988" style="stop-color:#BEBEBE"/>
-<stop offset="0.1832" style="stop-color:#EDEDED"/>
-<stop offset="0.2253" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#262626"/>
-</linearGradient>
-<rect fill="url(#SVGID_4_)" fill-opacity="0.2" height="36" stroke-opacity="0.2" width="1" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_pressed_c.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_pressed_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,19 +2,14 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20.0005" x2="20.0005" y1="39" y2="4.882813e-004">
-<stop offset="0" style="stop-color:#009DD9"/>
-<stop offset="1" style="stop-color:#004F80"/>
+<rect fill="url(#SVGID_1_)" height="40" width="40"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="40" y="39"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="40" y="38"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="40"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20.0005" x2="20.0005" y1="39.7783" y2="-0.0051">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" height="39" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="-39.3335" x2="79.1721" y1="37" y2="37">
-<stop offset="0" style="stop-color:#3AB9E0"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#3AB9E0"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.7" height="2" stroke-opacity="0.7" width="40" y="36"/>
-<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="40"/>
-<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.3" height="1" stroke-opacity="0.3" width="40" y="1"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_pressed_cl.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_pressed_cl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,26 +2,14 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0.5" x2="0.5" y1="2" y2="38.0005">
-<stop offset="0" style="stop-color:#808080"/>
-<stop offset="0.0988" style="stop-color:#BEBEBE"/>
-<stop offset="0.1832" style="stop-color:#EDEDED"/>
-<stop offset="0.2253" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#262626"/>
+<rect fill="url(#SVGID_1_)" height="40" width="40"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="39" x="1" y="39"/>
+<polygon fill="#FFFFFF" fill-opacity="0.2" points="40,1 40,0 1,0 1,39 40,39 40,38 2,38 2,1 " stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="39.7783" y2="-0.0051">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.4" height="36" stroke-opacity="0.4" width="1" y="2"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="20" x2="20" y1="39" y2="4.882813e-004">
-<stop offset="0" style="stop-color:#009DD9"/>
-<stop offset="1" style="stop-color:#004F80"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" height="39" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="1" x2="118.5015" y1="37" y2="37">
-<stop offset="0" style="stop-color:#3AB9E0"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#3AB9E0"/>
-</linearGradient>
-<rect fill="url(#SVGID_3_)" fill-opacity="0.7" height="2" stroke-opacity="0.7" width="39" x="1" y="36"/>
-<polygon fill-opacity="0.2" points="1,38 1,1 40,1 40,0 0,0 0,39 40,39 40,38 " stroke-opacity="0.2"/>
-<rect fill="#FFFFFF" fill-opacity="0.3" height="1" stroke-opacity="0.3" width="40" y="1"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_pressed_cr.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_pressed_cr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,18 +2,14 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="39" y2="4.882813e-004">
-<stop offset="0" style="stop-color:#009DD9"/>
-<stop offset="1" style="stop-color:#004F80"/>
+<rect fill="url(#SVGID_1_)" height="40" width="40"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="39" y="39"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1" x="39"/>
+<polygon fill="#FFFFFF" fill-opacity="0.2" points="0,0 0,1 38,1 38,38 0,38 0,39 39,39 39,0 " stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="39.7783" y2="-0.0051">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" height="39" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="-78.6611" x2="38.8404" y1="37" y2="37">
-<stop offset="0" style="stop-color:#3AB9E0"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#3AB9E0"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.7" height="2" stroke-opacity="0.7" width="39" y="36"/>
-<polygon fill-opacity="0.2" points="0,1 39,1 39,38 0,38 0,39 40,39 40,0 0,0 " stroke-opacity="0.2"/>
-<rect fill="#FFFFFF" fill-opacity="0.3" height="1" stroke-opacity="0.3" width="40" y="1"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_pressed_l.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_pressed_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,18 +2,15 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<path d="M2,30V0H0v30c0,5.5,4.5,10,10,10h50v-2H10C5.589,38,2,34.411,2,30z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30.5" x2="30.5" y1="39" y2="0">
-<stop offset="0" style="stop-color:#009DD9"/>
-<stop offset="1" style="stop-color:#004F80"/>
+<rect fill="url(#SVGID_1_)" height="40" width="60"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="58" x="1" y="39"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1" x="59"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1"/>
+<path d="M1,0v39h58V0H1z M58,38H2V1h56V38z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="39.7783" y2="-0.0051">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
</linearGradient>
-<path d="M60,0H1v30c0,4.963,4.038,9,9,9h50V0z" fill="url(#SVGID_1_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="2" x2="59" y1="33" y2="33">
-<stop offset="0" style="stop-color:#3AB9E0"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#3AB9E0"/>
-</linearGradient>
-<path d="M2,28v2c0,4.411,3.589,8,8,8h49v-2H10C5.589,36,2,32.411,2,28z" fill="url(#SVGID_2_)" fill-opacity="0.7" stroke-opacity="0.7"/>
-<path d="M1,0v30c0,4.963,4.038,9,9,9h50V0H1z M59,38H10c-4.411,0-8-3.589-8-8V1h57V38z" fill-opacity="0.2" stroke-opacity="0.2"/>
-<rect fill="#FFFFFF" fill-opacity="0.3" height="1" stroke-opacity="0.3" width="58" x="2" y="1"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_pressed_r.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_pressed_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,18 +2,15 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<path d="M58,0v30c0,4.411-3.589,8-8,8H0v2h50c5.5,0,10-4.5,10-10V0H58z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientTransform="matrix(-1 0 0 1 -1619 0)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-1648.5" x2="-1648.5" y1="39" y2="0">
-<stop offset="0" style="stop-color:#009DD9"/>
-<stop offset="1" style="stop-color:#004F80"/>
+<rect fill="url(#SVGID_1_)" height="40" width="60"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="58" x="1" y="39"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1" x="59"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1"/>
+<path d="M1,0v39h58V0H1z M58,38H2V1h56V38z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="39.7783" y2="-0.0051">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
</linearGradient>
-<path d="M0,0h59v30c0,4.963-4.037,9-9,9H0V0z" fill="url(#SVGID_1_)"/>
-<linearGradient gradientTransform="matrix(-1 0 0 1 -1619 0)" gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="-1677" x2="-1620" y1="33" y2="33">
-<stop offset="0" style="stop-color:#3AB9E0"/>
-<stop offset="0.5055" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#3AB9E0"/>
-</linearGradient>
-<path d="M58,28v2c0,4.411-3.589,8-8,8H1v-2h49C54.411,36,58,32.411,58,28z" fill="url(#SVGID_2_)" fill-opacity="0.7" stroke-opacity="0.7"/>
-<path d="M0,0v39h50c4.963,0,9-4.037,9-9V0H0z M1,1h57v29c0,4.411-3.589,8-8,8H1V1z" fill-opacity="0.2" stroke-opacity="0.2"/>
-<rect fill="#FFFFFF" fill-opacity="0.3" height="1" stroke-opacity="0.3" width="58" y="1"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_highlight_c.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_highlight_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,22 +2,19 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="19.9995" x2="19.9995" y1="3.6216" y2="38.7848">
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="19.9995" x2="19.9995" y1="0" y2="40.1089">
<stop offset="0" style="stop-color:#4D4D4D"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="38" stroke-opacity="0.6" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="19.9995" x2="19.9995" y1="-19.7495" y2="40.0889">
-<stop offset="0" style="stop-color:#00BAFF"/>
-<stop offset="0.9835" style="stop-color:#0075BD"/>
-<stop offset="1" style="stop-color:#0075BD"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="40"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="19.9995" x2="19.9995" y1="0" y2="60.2536">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
</linearGradient>
-<rect fill="url(#SVGID_2_)" height="2" width="40" y="38"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="19.9995" x2="19.9995" y1="0.25" y2="60.0884">
-<stop offset="0" style="stop-color:#00BAFF"/>
-<stop offset="0.9835" style="stop-color:#0075BD"/>
-<stop offset="1" style="stop-color:#0075BD"/>
+<rect fill="url(#SVGID_2_)" height="2" width="40"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="19.9995" x2="19.9995" y1="-19.9995" y2="40.2541">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
</linearGradient>
-<rect fill="url(#SVGID_3_)" height="2" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.25" height="1" stroke-opacity="0.25" width="40" y="3"/>
+<rect fill="url(#SVGID_3_)" height="2" width="40" y="38"/>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_highlight_cl.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_highlight_cl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,27 +2,14 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="3.6216" y2="38.7848">
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="0" y2="40.1089">
<stop offset="0" style="stop-color:#4D4D4D"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="38" stroke-opacity="0.6" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="20" x2="20" y1="-19.7495" y2="40.0889">
-<stop offset="0" style="stop-color:#00BAFF"/>
-<stop offset="0.9835" style="stop-color:#0075BD"/>
-<stop offset="1" style="stop-color:#0075BD"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="40"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="20" x2="20" y1="0" y2="40.1693">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
</linearGradient>
-<rect fill="url(#SVGID_2_)" height="2" width="40" y="38"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="20" x2="20" y1="0.25" y2="60.0884">
-<stop offset="0" style="stop-color:#00BAFF"/>
-<stop offset="0.9835" style="stop-color:#0075BD"/>
-<stop offset="1" style="stop-color:#0075BD"/>
-</linearGradient>
-<rect fill="url(#SVGID_3_)" height="2" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.25" height="1" stroke-opacity="0.25" width="40" y="3"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="0.5" x2="0.5" y1="4" y2="38.0005">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#505050"/>
-</linearGradient>
-<rect fill="url(#SVGID_4_)" fill-opacity="0.4" height="34" stroke-opacity="0.4" width="1" y="4"/>
+<polygon fill="url(#SVGID_2_)" points="40,38 2,38 2,2 40,2 40,0 0,0 0,40 40,40 "/>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_highlight_cr.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_highlight_cr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,27 +2,14 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="3.6216" y2="38.7848">
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="0" y2="40.1089">
<stop offset="0" style="stop-color:#4D4D4D"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="38" stroke-opacity="0.6" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="20" x2="20" y1="-19.7495" y2="40.0889">
-<stop offset="0" style="stop-color:#00BAFF"/>
-<stop offset="0.9835" style="stop-color:#0075BD"/>
-<stop offset="1" style="stop-color:#0075BD"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="40"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="20" x2="20" y1="0" y2="40.1693">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
</linearGradient>
-<rect fill="url(#SVGID_2_)" height="2" width="40" y="38"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="20" x2="20" y1="0.25" y2="60.0884">
-<stop offset="0" style="stop-color:#00BAFF"/>
-<stop offset="0.9835" style="stop-color:#0075BD"/>
-<stop offset="1" style="stop-color:#0075BD"/>
-</linearGradient>
-<rect fill="url(#SVGID_3_)" height="2" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.25" height="1" stroke-opacity="0.25" width="40" y="3"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="39.5" x2="39.5" y1="4" y2="38.0005">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#505050"/>
-</linearGradient>
-<rect fill="url(#SVGID_4_)" fill-opacity="0.4" height="34" stroke-opacity="0.4" width="1" x="39" y="4"/>
+<polygon fill="url(#SVGID_2_)" points="0,38 38,38 38,2 0,2 0,0 40,0 40,40 0,40 "/>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_highlight_l.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_highlight_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,22 +2,14 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30.5" x2="30.5" y1="3.6216" y2="38.7848">
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="0" y2="40.1089">
<stop offset="0" style="stop-color:#4D4D4D"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<path d="M1,1v29c0,4.963,4.037,9,9,9h50V1H1z" fill="url(#SVGID_1_)" fill-opacity="0.6" stroke-opacity="0.6"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="30" x2="30" y1="0.1665" y2="40.0592">
-<stop offset="0" style="stop-color:#00BAFF"/>
-<stop offset="0.9835" style="stop-color:#0075BD"/>
-<stop offset="1" style="stop-color:#0075BD"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="60"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="30" x2="30" y1="0" y2="40.1693">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
</linearGradient>
-<path d="M10,38c-4.411,0-8-3.59-8-8V2h58V0H0v30c0,5.5,4.5,10,10,10h50v-2H10z" fill="url(#SVGID_2_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="31.5" x2="31.5" y1="4" y2="21.0194">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.011" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
-</linearGradient>
-<polygon fill="url(#SVGID_3_)" fill-opacity="0.25" points="3,3 3,21 4,21 4,4 60,4 60,3 " stroke-opacity="0.25"/>
-<rect fill-opacity="0.2" height="34" stroke-opacity="0.2" width="1" x="59" y="4"/>
+<path d="M0,0v40h60V0H0z M58,38H2V2h56V38z" fill="url(#SVGID_2_)"/>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_highlight_r.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_highlight_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,22 +2,14 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="29.5" x2="29.5" y1="3.6216" y2="38.7848">
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="0" y2="40.1089">
<stop offset="0" style="stop-color:#4D4D4D"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<path d="M0,1v38h50c4.963,0,9-4.037,9-9V1H0z" fill="url(#SVGID_1_)" fill-opacity="0.6" stroke-opacity="0.6"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="30" x2="30" y1="0.1665" y2="40.0592">
-<stop offset="0" style="stop-color:#00BAFF"/>
-<stop offset="0.9835" style="stop-color:#0075BD"/>
-<stop offset="1" style="stop-color:#0075BD"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="60"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="30" x2="30" y1="0" y2="40.1693">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
</linearGradient>
-<path d="M0,0v2h58v28c0,4.41-3.589,8-8,8H0v2h50c5.5,0,10-4.5,10-10V0H0z" fill="url(#SVGID_2_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="28.5" x2="28.5" y1="4" y2="21.0194">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.011" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
-</linearGradient>
-<polygon fill="url(#SVGID_3_)" fill-opacity="0.25" points="0,3 0,4 56,4 56,21 57,21 57,3 " stroke-opacity="0.25"/>
-<rect fill-opacity="0.2" height="34" stroke-opacity="0.2" width="1" y="4"/>
+<path d="M0,0v40h60V0H0z M58,38H2V2h56V38z" fill="url(#SVGID_2_)"/>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_latched_c.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_latched_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,13 +2,13 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.7" height="39" stroke-opacity="0.7" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.3" height="1" stroke-opacity="0.3" width="40" y="1"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="40"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="40"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="40" y="39"/>
<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="19.9995" x2="19.9995" y1="0" y2="38.5553">
-<stop offset="0" style="stop-color:#828282"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="19.9995" x2="19.9995" y1="0" y2="40.1089">
+<stop offset="0" style="stop-color:#4D4D4D"/>
+<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_latched_cl.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_latched_cl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,16 +2,12 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="0" y2="38.5553">
-<stop offset="0" style="stop-color:#828282"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="40"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="40,39 1,39 1,1 40,1 40,0 0,0 0,40 40,40 " stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="0" y2="40.1089">
+<stop offset="0" style="stop-color:#4D4D4D"/>
+<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.7" height="39" stroke-opacity="0.7" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.3" height="1" stroke-opacity="0.3" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="0.5" x2="0.5" y1="2" y2="38.0005">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#505050"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.5" height="36" stroke-opacity="0.5" width="1" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_latched_cr.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_latched_cr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,19 +2,12 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="0" y2="38.5553">
-<stop offset="0" style="stop-color:#828282"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="40"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="0,39 39,39 39,1 0,1 0,0 40,0 40,40 0,40 " stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="0" y2="40.1089">
+<stop offset="0" style="stop-color:#4D4D4D"/>
+<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.7" height="39" stroke-opacity="0.7" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.3" height="1" stroke-opacity="0.3" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="39.5" x2="39.5" y1="2" y2="38.0005">
-<stop offset="0" style="stop-color:#828282"/>
-<stop offset="0.0971" style="stop-color:#BEBEBE"/>
-<stop offset="0.1826" style="stop-color:#EDEDED"/>
-<stop offset="0.2253" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#282828"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.4" height="36" stroke-opacity="0.4" width="1" x="39" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_latched_l.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_latched_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,17 +2,12 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30.5" x2="30.5" y1="0" y2="38.5553">
-<stop offset="0" style="stop-color:#828282"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="60"/>
+<path d="M0,0v40h60V0H0z M59,39H1V1h58V39z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="0" y2="40.1089">
+<stop offset="0" style="stop-color:#4D4D4D"/>
+<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<path d="M1,0v30c0,4.963,4.037,9,9,9h50V0H1z" fill="url(#SVGID_1_)" fill-opacity="0.7" stroke-opacity="0.7"/>
-<path d="M2,30V0H0v30c0,5.5,4.5,10,10,10h50v-2H10C5.589,38,2,34.41,2,30z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="31.5" x2="31.5" y1="2.2119" y2="21.0297">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.011" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2_)" fill-opacity="0.3" points="3,1 3,21 4,21 4,2 60,2 60,1 " stroke-opacity="0.3"/>
-<rect fill-opacity="0.2" height="36" stroke-opacity="0.2" width="1" x="59" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_latched_r.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_latched_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,17 +2,13 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="29.5" x2="29.5" y1="0" y2="38.5553">
-<stop offset="0" style="stop-color:#828282"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1" x="59"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="60"/>
+<path d="M0,0v40h60V0H0z M59,39H1V1h58V39z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="0" y2="40.1089">
+<stop offset="0" style="stop-color:#4D4D4D"/>
+<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<path d="M0,0v39h50c4.963,0,9-4.037,9-9V0H0z" fill="url(#SVGID_1_)" fill-opacity="0.7" stroke-opacity="0.7"/>
-<path d="M58,0v30c0,4.41-3.589,8-8,8H0v2h50c5.5,0,10-4.5,10-10V0H58z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="28.5" x2="28.5" y1="2.2119" y2="21.0297">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.011" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#3C3C3C"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2_)" fill-opacity="0.3" points="0,1 0,2 56,2 56,21 57,21 57,1 " stroke-opacity="0.3"/>
-<rect fill-opacity="0.2" height="36" stroke-opacity="0.2" width="1" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_normal_c.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_normal_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,17 +2,13 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="19.9995" x2="19.9995" y1="2.6904" y2="38.7789">
-<stop offset="0" style="stop-color:#6E6E6E"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="40"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="40"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="40" y="39"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="19.9995" x2="19.9995" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#4D4D4D"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="39" stroke-opacity="0.6" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="19.9995" x2="19.9995" y1="1" y2="17.5058">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.011" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#262626"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.25" height="1" stroke-opacity="0.25" width="40" y="1"/>
-<rect fill="#C8C8C8" fill-opacity="0.05" height="16" stroke-opacity="0.05" width="40" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_normal_cl.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_normal_cl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,17 +2,12 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="2.6904" y2="38.7789">
-<stop offset="0" style="stop-color:#6E6E6E"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="40"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="40,39 1,39 1,1 40,1 40,0 0,0 0,40 40,40 " stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#4D4D4D"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="39" stroke-opacity="0.6" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.25" height="1" stroke-opacity="0.25" width="40" y="1"/>
-<rect fill="#C8C8C8" fill-opacity="0.05" height="16" stroke-opacity="0.05" width="40" y="2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="0.5" x2="0.5" y1="2" y2="38.0005">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#505050"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.4" height="36" stroke-opacity="0.4" width="1" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_normal_cr.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_normal_cr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,22 +2,12 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="2.6904" y2="38.7789">
-<stop offset="0" style="stop-color:#6E6E6E"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="40"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="0,39 39,39 39,1 0,1 0,0 40,0 40,40 0,40 " stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#4D4D4D"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="39" stroke-opacity="0.6" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="20" x2="20" y1="1" y2="17.5058">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.011" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#262626"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.25" height="1" stroke-opacity="0.25" width="40" y="1"/>
-<rect fill="#C8C8C8" fill-opacity="0.05" height="16" stroke-opacity="0.05" width="40" y="2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="39.5" x2="39.5" y1="2" y2="38.0005">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#505050"/>
-</linearGradient>
-<rect fill="url(#SVGID_3_)" fill-opacity="0.4" height="36" stroke-opacity="0.4" width="1" x="39" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_normal_l.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_normal_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,17 +2,12 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30.5" x2="30.5" y1="2.6904" y2="38.7789">
-<stop offset="0" style="stop-color:#6E6E6E"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="60"/>
+<path d="M0,0v40h60V0H0z M59,39H1V1h58V39z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#4D4D4D"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<path d="M1,0v30c0,4.963,4.037,9,9,9h50V0H1z" fill="url(#SVGID_1_)" fill-opacity="0.6" stroke-opacity="0.6"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="31.5" x2="31.5" y1="1.917" y2="20.9353">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#323232"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2_)" fill-opacity="0.25" points="3,1 3,21 4,21 4,2 60,2 60,1 " stroke-opacity="0.25"/>
-<rect fill="#C8C8C8" fill-opacity="0.05" height="16" stroke-opacity="0.05" width="56" x="4" y="2"/>
-<rect fill-opacity="0.2" height="36" stroke-opacity="0.2" width="1" x="59" y="2"/>
-<path d="M2,30V0H0v30c0,5.5,4.5,10,10,10h50v-2H10C5.589,38,2,34.41,2,30z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_normal_r.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_normal_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,17 +2,13 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="29.5" x2="29.5" y1="2.6904" y2="38.7789">
-<stop offset="0" style="stop-color:#6E6E6E"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1" x="59"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="40" stroke-opacity="0.6" width="60"/>
+<path d="M0,0v40h60V0H0z M59,39H1V1h58V39z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="-0.3335" y2="39.847">
+<stop offset="0" style="stop-color:#4D4D4D"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<path d="M0,0v39h50c4.963,0,9-4.037,9-9V0H0z" fill="url(#SVGID_1_)" fill-opacity="0.6" stroke-opacity="0.6"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="28.5" x2="28.5" y1="1.917" y2="20.9353">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#323232"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2_)" fill-opacity="0.25" points="0,1 0,2 56,2 56,21 57,21 57,1 " stroke-opacity="0.25"/>
-<rect fill="#C8C8C8" fill-opacity="0.05" height="16" stroke-opacity="0.05" width="56" y="2"/>
-<rect fill-opacity="0.2" height="36" stroke-opacity="0.2" width="1" y="2"/>
-<path d="M58,0v30c0,4.41-3.589,8-8,8H0v2h50c5.5,0,10-4.5,10-10V0H58z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_pressed_c.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_pressed_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,12 +2,12 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="39" stroke-opacity="0.6" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.25" height="1" stroke-opacity="0.25" width="40" y="1"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="40" stroke-opacity="0.9" width="40"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="40"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="40" y="39"/>
<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20.0005" x2="20.0005" y1="36.3096" y2="0.222">
-<stop offset="0" style="stop-color:#6E6E6E"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20.0005" x2="20.0005" y1="40" y2="4.882813e-004">
+<stop offset="0" style="stop-color:#333333"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
</defs>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_pressed_cl.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_pressed_cl.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,16 +2,12 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="36.3096" y2="0.222">
-<stop offset="0" style="stop-color:#6E6E6E"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="40" stroke-opacity="0.9" width="40"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="40,39 1,39 1,1 40,1 40,0 0,0 0,40 40,40 " stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="40" y2="4.882813e-004">
+<stop offset="0" style="stop-color:#333333"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="39" stroke-opacity="0.6" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.25" height="1" stroke-opacity="0.25" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="0.5" x2="0.5" y1="38" y2="2.0005">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#505050"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.5" height="36" stroke-opacity="0.5" width="1" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_pressed_cr.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_pressed_cr.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,16 +2,12 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="40"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="36.3096" y2="0.222">
-<stop offset="0" style="stop-color:#6E6E6E"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="40" stroke-opacity="0.9" width="40"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="0,39 39,39 39,1 0,1 0,0 40,0 40,40 0,40 " stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20" x2="20" y1="40" y2="4.882813e-004">
+<stop offset="0" style="stop-color:#333333"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<rect fill="url(#SVGID_1_)" fill-opacity="0.6" height="39" stroke-opacity="0.6" width="40"/>
-<rect fill="#FFFFFF" fill-opacity="0.1" height="2" stroke-opacity="0.1" width="40" y="38"/>
-<rect fill="#FFFFFF" fill-opacity="0.25" height="1" stroke-opacity="0.25" width="40" y="1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="39.5" x2="39.5" y1="38" y2="2.0005">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#505050"/>
-</linearGradient>
-<rect fill="url(#SVGID_2_)" fill-opacity="0.5" height="36" stroke-opacity="0.5" width="1" x="39" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_pressed_l.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_pressed_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,17 +2,12 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30.5" x2="30.5" y1="36.3096" y2="0.222">
-<stop offset="0" style="stop-color:#6E6E6E"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="40" stroke-opacity="0.9" width="60"/>
+<path d="M0,0v40h60V0H0z M59,39H1V1h58V39z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="40" y2="4.882813e-004">
+<stop offset="0" style="stop-color:#333333"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<path d="M1,0v30c0,4.963,4.037,9,9,9h50V0H1z" fill="url(#SVGID_1_)" fill-opacity="0.6" stroke-opacity="0.6"/>
-<path d="M2,30V0H0v30c0,5.5,4.5,10,10,10h50v-2H10C5.589,38,2,34.41,2,30z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="31.5" x2="31.5" y1="2.001" y2="20.948">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.011" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#282828"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2_)" fill-opacity="0.25" points="3,1 3,21 4,21 4,2 60,2 60,1 " stroke-opacity="0.25"/>
-<rect fill-opacity="0.2" height="36" stroke-opacity="0.2" width="1" x="59" y="2"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_pressed_r.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_titlebar_trans_pressed_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,16 +2,13 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 60 40" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="40" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="29.5" x2="29.5" y1="36.3096" y2="0.222">
-<stop offset="0" style="stop-color:#6E6E6E"/>
+<rect fill-opacity="0.2" height="40" stroke-opacity="0.2" width="1" x="59"/>
+<rect fill="url(#SVGID_1_)" fill-opacity="0.9" height="40" stroke-opacity="0.9" width="60"/>
+<path d="M0,0v40h60V0H0z M59,39H1V1h58V39z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="40" y2="4.882813e-004">
+<stop offset="0" style="stop-color:#333333"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
-<path d="M0,0v39h50c4.963,0,9-4.037,9-9V0H0z" fill="url(#SVGID_1_)" fill-opacity="0.6" stroke-opacity="0.6"/>
-<path d="M58,0v30c0,4.41-3.589,8-8,8H0v2h50c5.5,0,10-4.5,10-10V0H58z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="28.5" x2="28.5" y1="2.001" y2="20.948">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#282828"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2_)" fill-opacity="0.25" points="0,1 0,2 56,2 56,21 57,21 57,1 " stroke-opacity="0.25"/>
-<rect fill-opacity="0.2" height="36" stroke-opacity="0.2" width="1" y="2"/>
+</defs>
</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tuner_c.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="34px" version="1.1" viewBox="0 0 34 34" width="34px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="34" width="34"/>
+<rect fill="#141414" fill-opacity="0.2" height="34" stroke-opacity="0.2" width="34"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-33.166" x2="66.8408" y1="17" y2="17">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#78787D"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" height="32" width="34" y="1"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="-32.999" x2="67.1671" y1="32" y2="32">
+<stop offset="0" style="stop-color:#505050"/>
+<stop offset="0.5" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#505050"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" fill-opacity="0.8" height="2" width="34" y="31"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="17" x2="17" y1="15" y2="1">
+<stop offset="0" style="stop-color:#DCDCDC"/>
+<stop offset="1" style="stop-color:#141414"/>
+</linearGradient>
+<rect fill="url(#SVGID_3_)" fill-opacity="0.3" height="14" width="34" y="1"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="-33.166" x2="67.0032" y1="17" y2="17">
+<stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/>
+<stop offset="0.2" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="0.4" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.6" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.8" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="1" style="stop-color:#000000;stop-opacity:0.8"/>
+</linearGradient>
+<rect fill="url(#SVGID_4_)" height="32" width="34" y="1"/>
+<rect fill-opacity="0.1" height="5" width="34" y="1"/>
+<rect fill-opacity="0.1" height="4" width="34" y="1"/>
+<rect fill-opacity="0.1" height="3" width="34" y="1"/>
+<rect fill-opacity="0.1" height="2" width="34" y="1"/>
+<rect fill-opacity="0.1" height="1" width="34" y="1"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tuner_l.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="34px" version="1.1" viewBox="0 0 34 34" width="34px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="34" width="34" y="0"/>
+<rect fill="#141414" fill-opacity="0.2" height="34" stroke-opacity="0.2" width="34"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0.834" x2="100.8408" y1="17" y2="17">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#78787D"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" height="32" width="33" x="1" y="1"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="1" x2="101.1662" y1="32" y2="32">
+<stop offset="0" style="stop-color:#505050"/>
+<stop offset="0.5" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#505050"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" fill-opacity="0.8" height="2" width="33" x="1" y="31"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="17.5" x2="17.5" y1="15" y2="1">
+<stop offset="0" style="stop-color:#DCDCDC"/>
+<stop offset="1" style="stop-color:#141414"/>
+</linearGradient>
+<rect fill="url(#SVGID_3_)" fill-opacity="0.3" height="14" width="33" x="1" y="1"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="0.834" x2="101.0032" y1="17" y2="17">
+<stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/>
+<stop offset="0.2" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="0.4" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.6" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.8" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="1" style="stop-color:#000000;stop-opacity:0.8"/>
+</linearGradient>
+<rect fill="url(#SVGID_4_)" height="32" width="33" x="1" y="1"/>
+<polygon fill-opacity="0.1" points="1,1 1,33 3,33 4,6 34,6 34,1 "/>
+<polygon fill-opacity="0.1" points="1,1 1,33 2,33 2,5 34,5 34,1 "/>
+<rect fill-opacity="0.1" height="3" width="33" x="1" y="1"/>
+<rect fill-opacity="0.1" height="2" width="33" x="1" y="1"/>
+<rect fill-opacity="0.1" height="1" width="33" x="1" y="1"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_fr_tuner_r.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="34px" version="1.1" viewBox="0 0 34 34" width="34px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="34" width="34"/>
+<rect fill="#141414" fill-opacity="0.2" height="34" stroke-opacity="0.2" width="34"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-67.166" x2="32.8408" y1="17" y2="17">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.5" style="stop-color:#78787D"/>
+<stop offset="1" style="stop-color:#282828"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" height="32" width="33" y="1"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="-66.999" x2="33.1671" y1="32" y2="32">
+<stop offset="0" style="stop-color:#505050"/>
+<stop offset="0.5" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#505050"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" fill-opacity="0.8" height="2" width="33" y="31"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="16.5" x2="16.5" y1="15" y2="1">
+<stop offset="0" style="stop-color:#DCDCDC"/>
+<stop offset="1" style="stop-color:#141414"/>
+</linearGradient>
+<rect fill="url(#SVGID_3_)" fill-opacity="0.3" height="14" width="33" y="1"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="-67.166" x2="33.0032" y1="17" y2="17">
+<stop offset="0" style="stop-color:#000000;stop-opacity:0.8"/>
+<stop offset="0.2" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="0.4" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.6" style="stop-color:#000000;stop-opacity:0"/>
+<stop offset="0.8" style="stop-color:#000000;stop-opacity:0.2"/>
+<stop offset="1" style="stop-color:#000000;stop-opacity:0.8"/>
+</linearGradient>
+<rect fill="url(#SVGID_4_)" height="32" width="33" y="1"/>
+<polygon fill-opacity="0.1" points="0,1 0,6 30,6 31,33 33,33 33,1 "/>
+<polygon fill-opacity="0.1" points="0,1 0,5 32,5 32,33 33,33 33,1 "/>
+<rect fill-opacity="0.1" height="3" width="33" y="1"/>
+<rect fill-opacity="0.1" height="2" width="33" y="1"/>
+<rect fill-opacity="0.1" height="1" width="33" y="1"/>
+<rect fill="none" height="34" width="34"/>
+</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_battery_bg.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_battery_bg.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,10 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 30 15" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<polygon fill="url(#SVGID_1_)" points="3,4 1,4 1,11 3,11 3,15 29,15 29,0 3,0 "/>
+<rect fill-opacity="0.2" height="8" stroke-opacity="0.2" width="2" x="22" y="3.5"/>
+<polygon fill-opacity="0.2" points="9,3.5 9,6.5 6,6.5 6,8.5 9,8.5 9,11.5 11,11.5 11,8.5 14,8.5 14,6.5 11,6.5 11,3.5 " stroke-opacity="0.2"/>
<rect fill="none" height="15" width="30"/>
-<path d="M5.5,14C4.675,14,4,13.325,4,12.5v-10C4,1.675,4.675,1,5.5,1l0,0C6.325,1,7,1.675,7,2.5v10 C7,13.325,6.325,14,5.5,14L5.5,14z" fill="#BEBEBE"/>
-<path d="M10.5,14C9.675,14,9,13.325,9,12.5v-10C9,1.675,9.675,1,10.5,1l0,0C11.325,1,12,1.675,12,2.5v10 C12,13.325,11.325,14,10.5,14L10.5,14z" fill="#BEBEBE"/>
-<path d="M15.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C14,1.675,14.675,1,15.5,1l0,0C16.325,1,17,1.675,17,2.5v10 C17,13.325,16.325,14,15.5,14L15.5,14z" fill="#BEBEBE"/>
-<path d="M20.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C19,1.675,19.675,1,20.5,1l0,0C21.325,1,22,1.675,22,2.5v10 C22,13.325,21.325,14,20.5,14L20.5,14z" fill="#BEBEBE"/>
-<path d="M25.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C24,1.675,24.675,1,25.5,1l0,0C26.325,1,27,1.675,27,2.5v10 C27,13.325,26.325,14,25.5,14L25.5,14z" fill="#BEBEBE"/>
+<defs>
+<linearGradient gradientTransform="matrix(0 -1 1 0 -1172 -152)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-167" x2="-152" y1="1187" y2="1187">
+<stop offset="0" style="stop-color:#C8C8C8"/>
+<stop offset="1" style="stop-color:#B4B4B4"/>
+</linearGradient>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_battery_full.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_battery_full.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,10 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 30 15" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<polygon fill="url(#SVGID_1_)" points="3,4 1,4 1,11 3,11 3,15 29,15 29,0 3,0 "/>
+<rect fill-opacity="0.2" height="8" stroke-opacity="0.2" width="2" x="22" y="3.5"/>
+<polygon fill-opacity="0.2" points="9,3.5 9,6.5 6,6.5 6,8.5 9,8.5 9,11.5 11,11.5 11,8.5 14,8.5 14,6.5 11,6.5 11,3.5 " stroke-opacity="0.2"/>
<rect fill="none" height="15" width="30"/>
-<path d="M5.5,14C4.675,14,4,13.325,4,12.5v-10C4,1.675,4.675,1,5.5,1l0,0C6.325,1,7,1.675,7,2.5v10 C7,13.325,6.325,14,5.5,14L5.5,14z" fill="#88FF00"/>
-<path d="M10.5,14C9.675,14,9,13.325,9,12.5v-10C9,1.675,9.675,1,10.5,1l0,0C11.325,1,12,1.675,12,2.5v10 C12,13.325,11.325,14,10.5,14L10.5,14z" fill="#88FF00"/>
-<path d="M15.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C14,1.675,14.675,1,15.5,1l0,0C16.325,1,17,1.675,17,2.5v10 C17,13.325,16.325,14,15.5,14L15.5,14z" fill="#88FF00"/>
-<path d="M20.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C19,1.675,19.675,1,20.5,1l0,0C21.325,1,22,1.675,22,2.5v10 C22,13.325,21.325,14,20.5,14L20.5,14z" fill="#88FF00"/>
-<path d="M25.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C24,1.675,24.675,1,25.5,1l0,0C26.325,1,27,1.675,27,2.5v10 C27,13.325,26.325,14,25.5,14L25.5,14z" fill="#88FF00"/>
+<defs>
+<linearGradient gradientTransform="matrix(0 -1 1 0 -407.5 -1291.5)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-1291.4995" x2="-1306.4995" y1="422.499" y2="422.499">
+<stop offset="0" style="stop-color:#92DE2F"/>
+<stop offset="1" style="stop-color:#19B016"/>
+</linearGradient>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_battery_low.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_battery_low.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,10 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 30 15" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<polygon fill="url(#SVGID_1_)" points="3,4 1,4 1,11 3,11 3,15 29,15 29,0 3,0 "/>
+<rect fill-opacity="0.2" height="8" stroke-opacity="0.2" width="2" x="22" y="3.5"/>
+<polygon fill-opacity="0.2" points="9,3.5 9,6.5 6,6.5 6,8.5 9,8.5 9,11.5 11,11.5 11,8.5 14,8.5 14,6.5 11,6.5 11,3.5 " stroke-opacity="0.2"/>
<rect fill="none" height="15" width="30"/>
-<path d="M5.5,14C4.675,14,4,13.325,4,12.5v-10C4,1.675,4.675,1,5.5,1l0,0C6.325,1,7,1.675,7,2.5v10 C7,13.325,6.325,14,5.5,14L5.5,14z" fill="#E34D15"/>
-<path d="M10.5,14C9.675,14,9,13.325,9,12.5v-10C9,1.675,9.675,1,10.5,1l0,0C11.325,1,12,1.675,12,2.5v10 C12,13.325,11.325,14,10.5,14L10.5,14z" fill="#E34D15"/>
-<path d="M15.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C14,1.675,14.675,1,15.5,1l0,0C16.325,1,17,1.675,17,2.5v10 C17,13.325,16.325,14,15.5,14L15.5,14z" fill="#E34D15"/>
-<path d="M20.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C19,1.675,19.675,1,20.5,1l0,0C21.325,1,22,1.675,22,2.5v10 C22,13.325,21.325,14,20.5,14L20.5,14z" fill="#E34D15"/>
-<path d="M25.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C24,1.675,24.675,1,25.5,1l0,0C26.325,1,27,1.675,27,2.5v10 C27,13.325,26.325,14,25.5,14L25.5,14z" fill="#E34D15"/>
+<defs>
+<linearGradient gradientTransform="matrix(0 -1 1 0 -999 57)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="57" x2="42" y1="1013.999" y2="1013.999">
+<stop offset="0" style="stop-color:#FA772B"/>
+<stop offset="1" style="stop-color:#CC2500"/>
+</linearGradient>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_battery_medium.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_battery_medium.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,10 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 30 15" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<polygon fill="url(#SVGID_1_)" points="3,4 1,4 1,11 3,11 3,15 29,15 29,0 3,0 "/>
+<rect fill-opacity="0.2" height="8" stroke-opacity="0.2" width="2" x="22" y="3.5"/>
+<polygon fill-opacity="0.2" points="9,3.5 9,6.5 6,6.5 6,8.5 9,8.5 9,11.5 11,11.5 11,8.5 14,8.5 14,6.5 11,6.5 11,3.5 " stroke-opacity="0.2"/>
<rect fill="none" height="15" width="30"/>
-<path d="M5.5,14C4.675,14,4,13.325,4,12.5v-10C4,1.675,4.675,1,5.5,1l0,0C6.325,1,7,1.675,7,2.5v10 C7,13.325,6.325,14,5.5,14L5.5,14z" fill="#FACD40"/>
-<path d="M10.5,14C9.675,14,9,13.325,9,12.5v-10C9,1.675,9.675,1,10.5,1l0,0C11.325,1,12,1.675,12,2.5v10 C12,13.325,11.325,14,10.5,14L10.5,14z" fill="#FACD40"/>
-<path d="M15.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C14,1.675,14.675,1,15.5,1l0,0C16.325,1,17,1.675,17,2.5v10 C17,13.325,16.325,14,15.5,14L15.5,14z" fill="#FACD40"/>
-<path d="M20.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C19,1.675,19.675,1,20.5,1l0,0C21.325,1,22,1.675,22,2.5v10 C22,13.325,21.325,14,20.5,14L20.5,14z" fill="#FACD40"/>
-<path d="M25.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C24,1.675,24.675,1,25.5,1l0,0C26.325,1,27,1.675,27,2.5v10 C27,13.325,26.325,14,25.5,14L25.5,14z" fill="#FACD40"/>
+<defs>
+<linearGradient gradientTransform="matrix(0 -1 1 0 -407.5 -1291.5)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-1291.4995" x2="-1306.4995" y1="422.499" y2="422.499">
+<stop offset="0" style="stop-color:#FAD347"/>
+<stop offset="1" style="stop-color:#FA9600"/>
+</linearGradient>
+</defs>
</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_cal_event_ind.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<polygon fill="#66CCAD" points="10,0 0,10 10,10 "/>
+<rect fill="none" height="10" width="10"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_clock_day_bg.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="216px" version="1.1" viewBox="0 0 216 216" width="216px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<path d="M108,216C48.448,216,0,167.553,0,108C0,48.448,48.448,0,108,0c59.553,0,108,48.448,108,108 C216,167.553,167.553,216,108,216L108,216z"/>
+</g>
+<g>
+<linearGradient gradientTransform="matrix(1 0 0 1 205.04 -626.0391)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-97.0405" x2="-97.0405" y1="627.5244" y2="841.1494">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#DCDCDC"/>
+</linearGradient>
+<path d="M108,214.813C49.102,214.813,1.187,166.896,1.187,108C1.187,49.104,49.102,1.187,108,1.187 c58.898,0,106.813,47.917,106.813,106.813C214.813,166.896,166.898,214.813,108,214.813L108,214.813z" fill="url(#SVGID_1_)"/>
+</g>
+<linearGradient gradientTransform="matrix(1 0 0 1 205.04 -626.0391)" gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="-97.04" x2="-97.04" y1="631.0742" y2="837.5801">
+<stop offset="0" style="stop-color:#F0F0FA"/>
+<stop offset="1" style="stop-color:#B4B4B9"/>
+</linearGradient>
+<path d="M108,211.253C51.066,211.253,4.747,164.934,4.747,108C4.747,51.066,51.066,4.747,108,4.747 c56.934,0,103.253,46.319,103.253,103.253C211.253,164.934,164.934,211.253,108,211.253L108,211.253z" fill="url(#SVGID_2_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 1 205.04 -626.0391)" gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="-97.0405" x2="-97.0405" y1="636.9922" y2="831.6289">
+<stop offset="0" style="stop-color:#64646E"/>
+<stop offset="1" style="stop-color:#282832"/>
+</linearGradient>
+<path d="M108,205.318c-53.662,0-97.319-43.656-97.319-97.318S54.338,10.681,108,10.681 S205.318,54.338,205.318,108S161.662,205.318,108,205.318L108,205.318z" fill="url(#SVGID_3_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 1 205.04 -626.0391)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="-97.04" x2="-97.04" y1="638.1758" y2="830.4395">
+<stop offset="0" style="stop-color:#FAFAFA"/>
+<stop offset="0" style="stop-color:#E6E6EB"/>
+<stop offset="1" style="stop-color:#BEBEC3"/>
+</linearGradient>
+<path d="M108,204.132c-53.007,0-96.132-43.124-96.132-96.132S54.993,11.868,108,11.868 S204.132,54.992,204.132,108S161.007,204.132,108,204.132L108,204.132z" fill="url(#SVGID_4_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 1 205.04 -626.0391)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="-97.04" x2="-97.04" y1="648.8262" y2="819.7285">
+<stop offset="0" style="stop-color:#FAFAFA"/>
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="1" style="stop-color:#D2D2D7"/>
+</linearGradient>
+<path d="M108,193.451c-47.117,0-85.451-38.334-85.451-85.451S60.883,22.549,108,22.549 S193.451,60.883,193.451,108S155.117,193.451,108,193.451L108,193.451z" fill="url(#SVGID_5_)"/>
+<path d="M108,110.5c-1.378,0-2.5-1.121-2.5-2.5s1.122-2.5,2.5-2.5 c1.379,0,2.5,1.121,2.5,2.5S109.379,110.5,108,110.5L108,110.5z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M108,21.362c-47.771,0-86.637,38.865-86.637,86.638 c0,47.771,38.866,86.637,86.637,86.637c47.771,0,86.637-38.865,86.637-86.637C194.637,60.228,155.771,21.362,108,21.362z M108,193.451c-47.117,0-85.451-38.334-85.451-85.451S60.883,22.549,108,22.549S193.451,60.883,193.451,108 S155.117,193.451,108,193.451z" fill-opacity="0.3" stroke-opacity="0.3"/>
+<rect fill="#3C3C3C" height="3.559" transform="matrix(-0.5 -0.866 0.866 -0.5 68.4609 406.6086)" width="15.43" x="143.893" y="181.762"/>
+<rect fill="#3C3C3C" height="3.56" transform="matrix(0.5 0.866 -0.866 0.5 60.2984 -39.5302)" width="15.428" x="56.669" y="30.675"/>
+<rect fill="#3C3C3C" height="3.559" transform="matrix(-0.866 -0.5 0.5 -0.866 266.7078 374.6873)" width="15.428" x="175.837" y="149.833"/>
+<rect fill="#3C3C3C" height="3.56" transform="matrix(0.866 0.5 -0.5 0.866 36.5413 -7.6013)" width="15.427" x="24.741" y="62.604"/>
+<rect fill="#3C3C3C" height="3.559" width="15.428" x="187.518" y="106.22"/>
+<rect fill="#3C3C3C" height="3.561" width="15.427" x="13.055" y="106.22"/>
+<rect fill="#3C3C3C" height="3.559" transform="matrix(-0.866 0.5 -0.5 -0.866 374.6927 28.3759)" width="15.43" x="175.83" y="62.611"/>
+<rect fill="#3C3C3C" height="3.559" transform="matrix(0.866 -0.5001 0.5001 0.866 -71.4675 36.5472)" width="15.428" x="24.741" y="149.836"/>
+<rect fill="#3C3C3C" height="3.559" transform="matrix(-0.5 0.866 -0.866 -0.5 255.5207 -82.6233)" width="15.426" x="143.899" y="30.673"/>
+<rect fill="#3C3C3C" height="3.56" transform="matrix(0.5 -0.866 0.866 0.5 -126.7627 147.5275)" width="15.426" x="56.671" y="181.766"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(0.9945 -0.1045 0.1045 0.9945 -12.172 2.5552)" width="9.494" x="13.55" y="116.835"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.9945 0.1045 -0.1045 -0.9945 404.624 175.9475)" width="9.493" x="192.955" y="97.982"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.185" stroke-opacity="0.4" transform="matrix(0.9781 -0.2081 0.2081 0.9781 -25.9399 6.8879)" width="9.495" x="15.025" y="126.157"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(-0.9781 0.2081 -0.2081 -0.9781 406.7398 135.6946)" width="9.493" x="191.485" y="88.65"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.951 -0.3091 0.3091 0.951 -40.9071 13.5191)" width="9.495" x="17.469" y="135.279"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.951 0.3091 -0.3091 -0.951 402.8447 96.429)" width="9.493" x="189.037" y="79.535"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.9135 -0.4069 0.4069 0.9135 -56.6546 22.9349)" width="9.495" x="20.854" y="144.091"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.9135 0.4068 -0.4068 -0.9135 393.347 59.0183)" width="9.493" x="185.653" y="70.728"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.188" stroke-opacity="0.4" transform="matrix(0.809 -0.5878 0.5878 0.809 -87.9595 51.3425)" width="9.496" x="30.277" y="160.428"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(-0.809 0.5879 -0.5879 -0.809 359.6953 -6.954)" width="9.493" x="176.231" y="54.374"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.7431 -0.6692 0.6692 0.7431 -102.1394 70.6601)" width="9.496" x="36.208" y="167.76"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.188" stroke-opacity="0.4" transform="matrix(-0.7431 0.6692 -0.6692 -0.7431 336.9637 -34.0923)" width="9.494" x="170.279" y="47.045"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(0.6693 -0.743 0.743 0.6693 -114.2852 93.2842)" width="9.495" x="42.902" y="174.433"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.188" stroke-opacity="0.4" transform="matrix(-0.6691 0.7431 -0.7431 -0.6691 311.4429 -56.7351)" width="9.492" x="163.605" y="40.371"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.5879 -0.8089 0.8089 0.5879 -123.7347 119.0488)" width="9.496" x="50.226" y="180.371"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.19" stroke-opacity="0.4" transform="matrix(-0.5877 0.8091 -0.8091 -0.5877 283.9651 -74.6803)" width="9.494" x="156.265" y="34.423"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.188" stroke-opacity="0.4" transform="matrix(0.4068 -0.9135 0.9135 0.4068 -131.6361 178.0922)" width="9.495" x="66.567" y="189.813"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.4068 0.9135 -0.9135 -0.4068 226.9329 -96.1835)" width="9.495" x="139.949" y="24.999"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.309 -0.9511 0.9511 0.309 -128.9221 210.1123)" width="9.497" x="75.378" y="193.179"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.309 0.9511 -0.9511 -0.309 198.983 -100.1454)" width="9.495" x="131.126" y="21.624"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(0.2079 -0.9781 0.9781 0.2079 -121.2426 242.7201)" width="9.498" x="84.496" y="195.628"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(-0.2078 0.9782 -0.9782 -0.2078 172.4302 -100.1058)" width="9.495" x="122.006" y="19.181"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.1045 -0.9945 0.9945 0.1045 -108.351 275.0744)" width="9.494" x="93.824" y="197.11"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.185" stroke-opacity="0.4" transform="matrix(-0.1044 0.9945 -0.9945 -0.1044 147.8838 -96.5788)" width="9.493" x="112.68" y="17.703"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(-0.1045 -0.9945 0.9945 -0.1045 -66.9229 335.1464)" width="9.495" x="112.68" y="197.11"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.185" stroke-opacity="0.4" transform="matrix(0.1048 0.9945 -0.9945 0.1048 106.4455 -81.6544)" width="9.494" x="93.83" y="17.704"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(-0.2079 -0.9782 0.9782 -0.2079 -38.8436 360.9971)" width="9.495" x="122.005" y="195.634"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(0.208 0.9781 -0.9781 0.208 90.0209 -71.635)" width="9.494" x="84.5" y="19.18"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.185" stroke-opacity="0.4" transform="matrix(-0.3089 -0.9511 0.9511 -0.3089 -6.4807 382.8722)" width="9.496" x="131.111" y="193.198"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.3091 0.951 -0.951 0.3091 76.4876 -60.8538)" width="9.494" x="75.38" y="21.623"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(-0.4066 -0.9136 0.9136 -0.4066 29.5685 400.0058)" width="9.494" x="139.941" y="189.807"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.4068 0.9135 -0.9135 0.4068 65.6878 -49.9597)" width="9.493" x="66.567" y="25.006"/>
+<polygon fill="#50505A" fill-opacity="0.4" points="157.745,177.479 163.326,185.161 164.288,184.465 158.707,176.785 " stroke-opacity="0.4"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.5877 0.8091 -0.8091 0.5877 51.0092 -30.0421)" width="9.493" x="50.235" y="34.435"/>
+<polygon fill="#50505A" fill-opacity="0.4" points="164.734,171.898 171.089,178.955 171.973,178.162 165.619,171.107 " stroke-opacity="0.4"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(0.6691 0.7432 -0.7432 0.6691 46.2126 -21.8499)" width="9.494" x="42.896" y="40.377"/>
+<polygon fill="#50505A" fill-opacity="0.4" points="171.104,165.618 178.16,171.973 178.955,171.091 171.9,164.738 " stroke-opacity="0.4"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.7431 0.6692 -0.6692 0.7431 42.4082 -15.1748)" width="9.493" x="36.221" y="47.052"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.188" stroke-opacity="0.4" transform="matrix(-0.809 -0.5878 0.5878 -0.809 232.7322 397.6849)" width="9.496" x="176.228" y="160.437"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.809 0.5878 -0.5878 0.809 39.0125 -10.0897)" width="9.494" x="30.284" y="54.39"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(-0.9135 -0.4067 0.4067 -0.9135 305.4916 354.3081)" width="9.494" x="185.654" y="144.094"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.9135 0.4068 -0.4068 0.9135 31.2234 -4.2442)" width="9.494" x="20.847" y="70.72"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.9511 -0.309 0.309 -0.9511 336.1146 324.9646)" width="9.495" x="189.04" y="135.276"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.951 0.3091 -0.3091 0.951 25.8537 -2.9432)" width="9.495" x="17.469" y="79.535"/>
+<polygon fill="#50505A" fill-opacity="0.4" points="191.458,126.348 200.746,128.32 200.994,127.16 191.709,125.188 " stroke-opacity="0.4"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.9781 0.208 -0.208 0.9781 18.9976 -2.1597)" width="9.495" x="15.02" y="88.654"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.9945 -0.1045 0.1045 -0.9945 382.0551 254.872)" width="9.496" x="192.955" y="116.836"/>
+<rect fill="#50505A" fill-opacity="0.4" height="1.188" stroke-opacity="0.4" transform="matrix(0.9945 0.1046 -0.1046 0.9945 10.4121 -1.3735)" width="9.494" x="13.553" y="97.979"/>
+<rect fill="#3C3C3C" height="15.428" width="3.561" x="106.22" y="187.518"/>
+<rect fill="#3C3C3C" height="15.429" width="3.561" x="106.22" y="13.055"/>
+<linearGradient gradientTransform="matrix(1 0 0 1 205.04 -626.0391)" gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="-62.1353" x2="-62.1353" y1="729.041" y2="673.397">
+<stop offset="0" style="stop-color:#FAFAFA"/>
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="1" style="stop-color:#D2D2D7"/>
+</linearGradient>
+<path d="M112.538,72.408c0,0,0,17.998,0,21.79s1.226,8.864,8.374,8.864c7.146,0,12.288,0,18.814,0 c6.527,0,9.225-4.021,11.047-6.262c1.561-1.922,4.435-4.383,11.449-4.383c7.84,0,11.566-7.127,10.991-12.402 c-1.231-11.309-12.544-29.426-34.063-33.137c0,0-9.769-2.158-9.76,9.759c0.004,5.232-2.896,7.687-6.205,7.804 c-0.724,0.025-0.479,0.022-1.477,0.022C117.299,64.464,112.538,66.523,112.538,72.408z" fill="url(#SVGID_6_)"/>
+<path d="M101.353,35.367h-0.048l-2.712,1.464l-0.408-1.608l3.408-1.824h1.8V49h-2.04V35.367z" fill="#505050"/>
+<path d="M109.08,49v-1.296l1.656-1.608c3.984-3.792,5.809-5.809,5.809-8.161c0-1.584-0.744-3.048-3.072-3.048 c-1.416,0-2.592,0.72-3.313,1.32l-0.672-1.488c1.057-0.888,2.615-1.584,4.393-1.584c3.359,0,4.775,2.304,4.775,4.536 c0,2.88-2.088,5.208-5.377,8.377l-1.223,1.152v0.048h6.982V49H109.08z" fill="#505050"/>
+<path d="M36.148,113.557c0.456,0.047,0.984,0,1.704-0.072c1.224-0.168,2.376-0.646,3.264-1.512 c1.032-0.938,1.776-2.305,2.064-4.127h-0.072c-0.864,1.055-2.112,1.657-3.696,1.657c-2.784,0-4.584-2.113-4.584-4.777 c0-2.952,2.136-5.544,5.329-5.544c3.193,0,5.161,2.568,5.161,6.601c0,3.41-1.152,5.809-2.688,7.297 c-1.2,1.176-2.856,1.896-4.536,2.088c-0.768,0.12-1.44,0.146-1.944,0.12v-1.729h-0.002V113.557z M36.917,104.603 c0,1.944,1.176,3.313,3,3.313c1.416,0,2.52-0.696,3.072-1.632c0.12-0.216,0.192-0.432,0.192-0.792c0-2.665-0.984-4.705-3.216-4.705 C38.188,100.787,36.917,102.371,36.917,104.603z" fill="#505050"/>
+<path d="M111.829,168.932c-0.433-0.025-0.983,0.023-1.584,0.119c-3.336,0.527-5.064,2.928-5.425,5.521h0.048 c0.744-1.01,2.064-1.824,3.792-1.824c2.76,0,4.705,2.018,4.705,5.04c0,2.881-1.944,5.521-5.208,5.521 c-3.312,0-5.497-2.593-5.497-6.647c0-3.072,1.08-5.496,2.64-7.032c1.296-1.271,3.024-2.063,4.993-2.307 c0.624-0.096,1.152-0.117,1.536-0.117V168.932z M111.229,177.932c0-2.23-1.271-3.576-3.214-3.576c-1.272,0-2.472,0.77-3.048,1.92 c-0.12,0.24-0.216,0.527-0.216,0.912c0.024,2.568,1.224,4.488,3.456,4.488C110.005,181.676,111.229,180.164,111.229,177.932z" fill="#505050"/>
+<path d="M171.428,112.645c0.602,0.359,1.969,0.959,3.457,0.959c2.688,0,3.553-1.703,3.528-3.021 c-0.024-2.185-1.992-3.121-4.032-3.121h-1.176v-1.584h1.176c1.536,0,3.48-0.792,3.48-2.64c0-1.248-0.793-2.352-2.736-2.352 c-1.248,0-2.449,0.552-3.121,1.032l-0.576-1.536c0.842-0.6,2.426-1.2,4.105-1.2c3.072,0,4.464,1.824,4.464,3.72 c0,1.632-0.983,3-2.88,3.696v0.048c1.92,0.36,3.455,1.8,3.48,3.984c0,2.497-1.971,4.684-5.689,4.684 c-1.752,0-3.287-0.555-4.057-1.059L171.428,112.645z" fill="#505050"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_clock_day_hour.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="216px" version="1.1" viewBox="0 0 216 216" width="216px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M108,115c-3.859,0-7-3.141-7-7c0-2.064,0.926-4.029,2.5-5.354V52h9v50.646c1.574,1.324,2.5,3.289,2.5,5.354 C115,111.859,111.859,115,108,115L108,115z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M111.5,103.134V53h-7v50.134c-1.512,1.089-2.5,2.86-2.5,4.866c0,3.313,2.687,6,6,6s6-2.687,6-6 C114,105.994,113.012,104.223,111.5,103.134z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="216" width="216"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="107.9995" x2="107.9995" y1="53.5806" y2="114.0006">
+<stop offset="0" style="stop-color:#505050"/>
+<stop offset="1" style="stop-color:#3C3C3C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_clock_day_min.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="216px" version="1.1" viewBox="0 0 216 216" width="216px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M108,113c-2.757,0-5-2.243-5-5c0-1.065,0.353-2.107,1-2.973V29h8v76.027c0.647,0.865,1,1.907,1,2.973 C113,110.757,110.757,113,108,113L108,113z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M111,105.38V30h-6v75.38c-0.615,0.703-1,1.612-1,2.62c0,2.209,1.791,4,4,4s4-1.791,4-4 C112,106.992,111.615,106.083,111,105.38z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="216" width="216"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="107.9995" x2="107.9995" y1="30" y2="112.0005">
+<stop offset="0" style="stop-color:#505050"/>
+<stop offset="1" style="stop-color:#3C3C3C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_clock_day_sec.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="216px" version="1.1" viewBox="0 0 216 216" width="216px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<linearGradient gradientTransform="matrix(-1 0 0 -1 -475.6777 -632.6445)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-583.6777" x2="-583.6777" y1="-659.3721" y2="-763.5606">
+<stop offset="0" style="stop-color:#FF0000"/>
+<stop offset="1" style="stop-color:#A8000B"/>
+</linearGradient>
+<path d="M98.182,108c0.001,3.633,1.978,6.797,4.909,8.494l0.001,9.506c-0.001,2.701,2.207,4.91,4.908,4.91 c2.701-0.001,4.909-2.209,4.908-4.908l0.001-9.506c2.933-1.698,4.908-4.863,4.909-8.496c-0.001-4.863-3.54-8.889-8.182-9.67V26.182 h-3.273V98.33C101.723,99.107,98.183,103.137,98.182,108z" fill="url(#SVGID_1_)"/>
+<path d="M108,132c-3.309,0-6-2.691-6-6v-8.79c-3.098-2.022-5-5.499-5-9.21c0-4.934,3.318-9.26,8-10.584V25h6v72.416 c4.682,1.324,8,5.65,8,10.584c0,3.711-1.902,7.188-5,9.21V126C114,129.309,111.309,132,108,132L108,132z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="108.0005" x2="107.9992" y1="26.5474" y2="131.0065">
+<stop offset="0" style="stop-color:#FF0000"/>
+<stop offset="1" style="stop-color:#C10007"/>
+</linearGradient>
+<path d="M118,108c0-4.838-3.436-8.873-8-9.799V26h-4v72.201c-4.564,0.926-8,4.961-8,9.799 c0,3.699,2.014,6.922,5,8.651V126c0,2.762,2.238,5,5,5s5-2.238,5-5v-9.349C115.986,114.922,118,111.699,118,108z" fill="url(#SVGID_2_)"/>
+<circle cx="108" cy="108" fill="#1E1E28" fill-opacity="0.2" r="6" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="107.9995" x2="107.9995" y1="103.2773" y2="113.0161">
+<stop offset="0" style="stop-color:#FAFAFA"/>
+<stop offset="0" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#E6E6E6"/>
+</linearGradient>
+<circle cx="108" cy="108" fill="url(#SVGID_3_)" r="5"/>
+<rect fill="none" height="216" width="216"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_clock_night_bg.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="216px" version="1.1" viewBox="0 0 216 216" width="216px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<g fill-opacity="0.2" stroke-opacity="0.2">
+<path d="M108,216C48.448,216,0,167.551,0,108C0,48.448,48.448,0,108,0c59.553,0,108,48.448,108,108 C216,167.551,167.553,216,108,216L108,216z"/>
+</g>
+<g>
+<linearGradient gradientTransform="matrix(1 0 0 1 205.04 -626.0391)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-97.0405" x2="-97.0405" y1="627.5244" y2="841.1494">
+<stop offset="0" style="stop-color:#7D7D8A"/>
+<stop offset="0.7" style="stop-color:#51515C"/>
+<stop offset="1" style="stop-color:#535361"/>
+</linearGradient>
+<path d="M108,214.813C49.102,214.813,1.187,166.896,1.187,108C1.187,49.103,49.102,1.187,108,1.187 c58.898,0,106.813,47.917,106.813,106.814C214.813,166.896,166.898,214.813,108,214.813L108,214.813z" fill="url(#SVGID_1_)"/>
+</g>
+<linearGradient gradientTransform="matrix(1 0 0 1 205.04 -626.0391)" gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="-97.04" x2="-97.04" y1="631.0742" y2="837.5791">
+<stop offset="0" style="stop-color:#63636D"/>
+<stop offset="1" style="stop-color:#3C3C46"/>
+</linearGradient>
+<path d="M108,211.252C51.066,211.252,4.747,164.934,4.747,108C4.747,51.066,51.066,4.747,108,4.747 c56.934,0,103.253,46.319,103.253,103.253C211.253,164.934,164.934,211.252,108,211.252L108,211.252z" fill="url(#SVGID_2_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 1 205.04 -626.0391)" gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="-97.0405" x2="-97.0405" y1="636.9922" y2="831.6289">
+<stop offset="0" style="stop-color:#64646E"/>
+<stop offset="1" style="stop-color:#282832"/>
+</linearGradient>
+<path d="M108,205.318c-53.662,0-97.319-43.656-97.319-97.318c0-53.663,43.657-97.319,97.319-97.319 S205.318,54.338,205.318,108S161.662,205.318,108,205.318L108,205.318z" fill="url(#SVGID_3_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 1 205.04 -626.0391)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="-97.04" x2="-97.04" y1="638.1758" y2="830.4375">
+<stop offset="0" style="stop-color:#8C8C96"/>
+<stop offset="1" style="stop-color:#464650"/>
+</linearGradient>
+<path d="M108,204.131c-53.007,0-96.132-43.123-96.132-96.13c0-53.008,43.125-96.132,96.132-96.132 S204.132,54.993,204.132,108C204.132,161.008,161.007,204.131,108,204.131L108,204.131z" fill="url(#SVGID_4_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 1 205.04 -626.0391)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="-97.04" x2="-97.04" y1="648.8271" y2="819.7295">
+<stop offset="0" style="stop-color:#63636D"/>
+<stop offset="1" style="stop-color:#3C3C46"/>
+</linearGradient>
+<path d="M108,193.451c-47.117,0-85.451-38.334-85.451-85.451c0-47.118,38.334-85.451,85.451-85.451 S193.451,60.882,193.451,108C193.451,155.117,155.117,193.451,108,193.451L108,193.451z" fill="url(#SVGID_5_)"/>
+<path d="M108,110.5c-1.379,0-2.5-1.121-2.5-2.5s1.121-2.5,2.5-2.5s2.5,1.122,2.5,2.5 C110.5,109.379,109.379,110.5,108,110.5L108,110.5z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M108,21.362c-47.771,0-86.637,38.865-86.637,86.638 c0,47.771,38.866,86.637,86.637,86.637c47.771,0,86.637-38.865,86.637-86.637C194.637,60.228,155.771,21.362,108,21.362z M108,193.451c-47.117,0-85.451-38.334-85.451-85.451c0-47.118,38.334-85.451,85.451-85.451S193.451,60.882,193.451,108 C193.451,155.117,155.117,193.451,108,193.451z" fill-opacity="0.3" stroke-opacity="0.3"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="3.56" stroke-opacity="0.8" transform="matrix(-0.5 -0.866 0.866 -0.5 68.4681 406.6088)" width="15.431" x="143.892" y="181.76"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="3.56" stroke-opacity="0.8" transform="matrix(0.5 0.866 -0.866 0.5 60.2984 -39.5302)" width="15.428" x="56.669" y="30.675"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="3.559" stroke-opacity="0.8" transform="matrix(-0.866 -0.5 0.5 -0.866 266.6895 374.6906)" width="15.43" x="175.83" y="149.836"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="3.561" stroke-opacity="0.8" transform="matrix(0.866 0.5 -0.5 0.866 36.5441 -7.6019)" width="15.426" x="24.743" y="62.605"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="3.559" stroke-opacity="0.8" width="15.428" x="187.518" y="106.22"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="3.559" stroke-opacity="0.8" width="15.427" x="13.055" y="106.22"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="3.56" stroke-opacity="0.8" transform="matrix(-0.866 0.5 -0.5 -0.866 374.6954 28.3853)" width="15.428" x="175.831" y="62.611"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="3.559" stroke-opacity="0.8" transform="matrix(0.866 -0.5001 0.5001 0.866 -71.4675 36.5472)" width="15.428" x="24.741" y="149.836"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="3.559" stroke-opacity="0.8" transform="matrix(-0.5 0.866 -0.866 -0.5 255.5207 -82.6233)" width="15.426" x="143.899" y="30.673"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="3.559" stroke-opacity="0.8" transform="matrix(0.5 -0.866 0.866 0.5 -126.7609 147.5267)" width="15.426" x="56.671" y="181.764"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(0.9945 -0.1045 0.1045 0.9945 -12.172 2.5552)" width="9.494" x="13.55" y="116.835"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.9945 0.1046 -0.1046 -0.9945 404.6251 175.9457)" width="9.493" x="192.951" y="97.991"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.185" stroke-opacity="0.4" transform="matrix(0.9781 -0.2081 0.2081 0.9781 -25.9399 6.8879)" width="9.495" x="15.025" y="126.157"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.185" stroke-opacity="0.4" transform="matrix(-0.9781 0.208 -0.208 -0.9781 406.7261 135.7319)" width="9.493" x="191.48" y="88.658"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.951 -0.3093 0.3093 0.951 -40.9299 13.531)" width="9.495" x="17.467" y="135.275"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.951 0.3091 -0.3091 -0.951 402.8447 96.429)" width="9.493" x="189.037" y="79.535"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.9135 -0.4069 0.4069 0.9135 -56.6546 22.9349)" width="9.495" x="20.854" y="144.091"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.9135 0.4068 -0.4068 -0.9135 393.347 59.0183)" width="9.493" x="185.653" y="70.728"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(0.809 -0.5878 0.5878 0.809 -87.9594 51.3471)" width="9.496" x="30.28" y="160.424"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.809 0.5878 -0.5878 -0.809 359.6845 -6.925)" width="9.495" x="176.22" y="54.378"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(0.7431 -0.6692 0.6692 0.7431 -102.1351 70.6538)" width="9.495" x="36.209" y="167.761"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(-0.7431 0.6691 -0.6691 -0.7431 336.9733 -34.0724)" width="9.496" x="170.278" y="47.048"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.188" stroke-opacity="0.4" transform="matrix(0.6692 -0.7431 0.7431 0.6692 -114.3025 93.2898)" width="9.494" x="42.884" y="174.434"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.669 0.7432 -0.7432 -0.669 311.4287 -56.7255)" width="9.492" x="163.598" y="40.383"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.588 -0.8089 0.8089 0.588 -123.7234 119.0539)" width="9.495" x="50.252" y="180.378"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.5878 0.809 -0.809 -0.5878 283.9982 -74.6479)" width="9.495" x="156.269" y="34.435"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.188" stroke-opacity="0.4" transform="matrix(0.4068 -0.9135 0.9135 0.4068 -131.6285 178.0948)" width="9.495" x="66.566" y="189.803"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.188" stroke-opacity="0.4" transform="matrix(-0.4068 0.9135 -0.9135 -0.4068 226.9239 -96.162)" width="9.495" x="139.937" y="25.005"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.309 -0.9511 0.9511 0.309 -128.9304 210.1194)" width="9.497" x="75.379" y="193.189"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.309 0.9511 -0.9511 -0.309 198.9847 -100.1457)" width="9.495" x="131.127" y="21.624"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.2079 -0.9781 0.9781 0.2079 -121.2481 242.7239)" width="9.495" x="84.5" y="195.633"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(-0.2078 0.9782 -0.9782 -0.2078 172.4302 -100.1058)" width="9.495" x="122.006" y="19.181"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.1045 -0.9945 0.9945 0.1045 -108.3508 275.0743)" width="9.493" x="93.826" y="197.111"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.185" stroke-opacity="0.4" transform="matrix(-0.1044 0.9945 -0.9945 -0.1044 147.8838 -96.5788)" width="9.493" x="112.68" y="17.703"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="116.342,193.043 117.334,202.486 118.516,202.363 117.521,192.924 " stroke-opacity="0.4"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.185" stroke-opacity="0.4" transform="matrix(0.1047 0.9945 -0.9945 0.1047 106.4509 -81.6482)" width="9.494" x="93.824" y="17.704"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(-0.2079 -0.9781 0.9781 -0.2079 -38.8295 361.0101)" width="9.497" x="122.005" y="195.634"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(0.208 0.9781 -0.9781 0.208 90.0204 -71.6354)" width="9.494" x="84.5" y="19.18"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="133.841,189.451 136.775,198.48 137.904,198.115 134.971,189.088 " stroke-opacity="0.4"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(0.3091 0.951 -0.951 0.3091 76.4874 -60.8562)" width="9.493" x="75.383" y="21.624"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(-0.4066 -0.9136 0.9136 -0.4066 29.5685 400.0058)" width="9.494" x="139.941" y="189.807"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.4068 0.9135 -0.9135 0.4068 65.6923 -49.9613)" width="9.493" x="66.568" y="25.007"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="157.745,177.479 163.326,185.16 164.288,184.465 158.707,176.785 " stroke-opacity="0.4"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.5877 0.8091 -0.8091 0.5877 51.0088 -30.0413)" width="9.493" x="50.234" y="34.435"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="164.734,171.898 171.089,178.955 171.973,178.162 165.619,171.107 " stroke-opacity="0.4"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.6691 0.7431 -0.7431 0.6691 46.2112 -21.8523)" width="9.494" x="42.899" y="40.376"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="171.104,165.617 178.16,171.971 178.955,171.09 171.9,164.738 " stroke-opacity="0.4"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.7431 0.6692 -0.6692 0.7431 42.4082 -15.1748)" width="9.493" x="36.221" y="47.052"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(-0.8092 -0.5876 0.5876 -0.8092 232.7833 397.6518)" width="9.493" x="176.22" y="160.431"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.809 0.5878 -0.5878 0.809 39.0091 -10.0882)" width="9.494" x="30.281" y="54.389"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.186" stroke-opacity="0.4" transform="matrix(-0.9135 -0.4067 0.4067 -0.9135 305.4916 354.3081)" width="9.494" x="185.654" y="144.094"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.9135 0.4068 -0.4068 0.9135 31.2216 -4.2494)" width="9.494" x="20.859" y="70.717"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(-0.9511 -0.309 0.309 -0.9511 336.1028 324.9706)" width="9.495" x="189.035" y="135.28"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.9511 0.309 -0.309 0.9511 25.8467 -2.9442)" width="9.495" x="17.471" y="79.534"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="191.458,126.348 200.746,128.32 200.994,127.16 191.709,125.188 " stroke-opacity="0.4"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.9781 0.208 -0.208 0.9781 18.9976 -2.1597)" width="9.495" x="15.02" y="88.654"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.188" stroke-opacity="0.4" transform="matrix(-0.9945 -0.1045 0.1045 -0.9945 382.0598 254.8752)" width="9.496" x="192.957" y="116.837"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1.187" stroke-opacity="0.4" transform="matrix(0.9945 0.1046 -0.1046 0.9945 10.4121 -1.3735)" width="9.494" x="13.553" y="97.979"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="15.43" stroke-opacity="0.8" width="3.561" x="106.22" y="187.516"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="15.429" stroke-opacity="0.8" width="3.561" x="106.22" y="13.055"/>
+<linearGradient gradientTransform="matrix(1 0 0 1 205.04 -626.0391)" gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="-62.1353" x2="-62.1353" y1="729.0391" y2="673.3951">
+<stop offset="0" style="stop-color:#63636D"/>
+<stop offset="1" style="stop-color:#3C3C46"/>
+</linearGradient>
+<path d="M112.538,72.409c0,0,0,17.998,0,21.79s1.226,8.864,8.374,8.864c7.146,0,12.288,0,18.814,0 c6.527,0,9.225-4.02,11.047-6.262c1.561-1.921,4.435-4.382,11.449-4.382c7.84,0,11.566-7.127,10.991-12.403 c-1.231-11.308-12.544-29.426-34.063-33.137c0,0-9.769-2.158-9.76,9.759c0.004,5.232-2.896,7.687-6.205,7.803 c-0.724,0.025-0.479,0.023-1.477,0.023C117.299,64.464,112.538,66.524,112.538,72.409z" fill="url(#SVGID_6_)"/>
+<path d="M101.353,35.367h-0.048l-2.712,1.464l-0.408-1.608l3.408-1.824h1.8V49h-2.04V35.367z" fill="#FFFFFF"/>
+<path d="M109.08,49v-1.296l1.656-1.608c3.984-3.792,5.809-5.809,5.809-8.161c0-1.584-0.744-3.048-3.072-3.048 c-1.416,0-2.592,0.72-3.313,1.32l-0.672-1.488c1.057-0.888,2.615-1.584,4.393-1.584c3.359,0,4.775,2.304,4.775,4.536 c0,2.88-2.088,5.208-5.377,8.377l-1.223,1.152v0.048h6.982V49H109.08z" fill="#FFFFFF"/>
+<path d="M36.148,113.557c0.456,0.047,0.984,0,1.704-0.072c1.224-0.168,2.376-0.646,3.264-1.512 c1.032-0.938,1.776-2.305,2.064-4.127h-0.072c-0.864,1.055-2.112,1.657-3.696,1.657c-2.784,0-4.584-2.113-4.584-4.777 c0-2.952,2.136-5.544,5.329-5.544c3.193,0,5.161,2.568,5.161,6.601c0,3.41-1.152,5.809-2.688,7.297 c-1.2,1.176-2.856,1.896-4.536,2.088c-0.768,0.12-1.44,0.146-1.944,0.12v-1.729h-0.002V113.557z M36.917,104.603 c0,1.944,1.176,3.313,3,3.313c1.416,0,2.52-0.696,3.072-1.632c0.12-0.216,0.192-0.432,0.192-0.792c0-2.665-0.984-4.705-3.216-4.705 C38.188,100.787,36.917,102.371,36.917,104.603z" fill="#FFFFFF"/>
+<path d="M111.829,168.932c-0.433-0.025-0.983,0.023-1.584,0.119c-3.336,0.527-5.064,2.928-5.425,5.521h0.048 c0.744-1.01,2.064-1.824,3.792-1.824c2.76,0,4.705,2.018,4.705,5.04c0,2.881-1.944,5.521-5.208,5.521 c-3.312,0-5.497-2.593-5.497-6.647c0-3.072,1.08-5.496,2.64-7.032c1.296-1.271,3.024-2.063,4.993-2.307 c0.624-0.096,1.152-0.117,1.536-0.117V168.932z M111.229,177.932c0-2.23-1.271-3.576-3.214-3.576c-1.272,0-2.472,0.77-3.048,1.92 c-0.12,0.24-0.216,0.527-0.216,0.912c0.024,2.568,1.224,4.488,3.456,4.488C110.005,181.676,111.229,180.164,111.229,177.932z" fill="#FFFFFF"/>
+<path d="M171.428,112.645c0.602,0.359,1.969,0.959,3.457,0.959c2.688,0,3.553-1.703,3.528-3.021 c-0.024-2.185-1.992-3.121-4.032-3.121h-1.176v-1.584h1.176c1.536,0,3.48-0.792,3.48-2.64c0-1.248-0.793-2.352-2.736-2.352 c-1.248,0-2.449,0.552-3.121,1.032l-0.576-1.536c0.842-0.6,2.426-1.2,4.105-1.2c3.072,0,4.464,1.824,4.464,3.72 c0,1.632-0.983,3-2.88,3.696v0.048c1.92,0.36,3.455,1.8,3.48,3.984c0,2.497-1.971,4.684-5.689,4.684 c-1.752,0-3.287-0.555-4.057-1.059L171.428,112.645z" fill="#FFFFFF"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_clock_night_hour.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="216px" version="1.1" viewBox="0 0 216 216" width="216px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M108,115c-3.859,0-7-3.141-7-7c0-2.064,0.926-4.029,2.5-5.354V52h9v50.646c1.574,1.325,2.5,3.29,2.5,5.354 C115,111.859,111.859,115,108,115L108,115z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M111.5,103.134V53h-7v50.134c-1.512,1.089-2.5,2.86-2.5,4.866c0,3.313,2.687,6,6,6s6-2.687,6-6 C114,105.994,113.012,104.223,111.5,103.134z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="216" width="216"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="107.9995" x2="107.9995" y1="53.5806" y2="114.0006">
+<stop offset="0" style="stop-color:#FAFAFA"/>
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_clock_night_min.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="216px" version="1.1" viewBox="0 0 216 216" width="216px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M108,113c-2.757,0-5-2.243-5-5c0-1.065,0.353-2.107,1-2.973V29h8v76.027c0.647,0.865,1,1.907,1,2.973 C113,110.757,110.757,113,108,113L108,113z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M111,105.38V30h-6v75.38c-0.615,0.703-1,1.613-1,2.62c0,2.209,1.791,4,4,4s4-1.791,4-4 C112,106.993,111.615,106.083,111,105.38z" fill="url(#SVGID_1_)"/>
+<rect fill="none" height="216" width="216"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="107.9985" x2="107.9995" y1="30" y2="110.0819">
+<stop offset="0" style="stop-color:#FAFAFA"/>
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_clock_night_sec.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="216px" version="1.1" viewBox="0 0 216 216" width="216px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<linearGradient gradientTransform="matrix(-1 0 0 -1 -475.6777 -632.6445)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-583.6777" x2="-583.6777" y1="-659.3726" y2="-763.5606">
+<stop offset="0" style="stop-color:#FF0000"/>
+<stop offset="1" style="stop-color:#A8000B"/>
+</linearGradient>
+<path d="M98.182,108c0.001,3.632,1.978,6.796,4.909,8.494l0.001,9.506c-0.001,2.701,2.207,4.91,4.908,4.91 c2.701-0.001,4.909-2.209,4.908-4.908l0.001-9.506c2.933-1.698,4.908-4.863,4.909-8.496c-0.001-4.864-3.54-8.89-8.182-9.671V26.182 h-3.273V98.33C101.723,99.108,98.183,103.136,98.182,108z" fill="url(#SVGID_1_)"/>
+<path d="M108,132c-3.309,0-6-2.691-6-6v-8.79c-3.098-2.022-5-5.499-5-9.21c0-4.934,3.318-9.26,8-10.584V25h6v72.416 c4.682,1.324,8,5.651,8,10.584c0,3.711-1.902,7.188-5,9.21V126C114,129.309,111.309,132,108,132L108,132z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="108.0005" x2="107.9992" y1="26.5474" y2="131.0065">
+<stop offset="0" style="stop-color:#FF0000"/>
+<stop offset="1" style="stop-color:#C10007"/>
+</linearGradient>
+<path d="M118,108c0-4.838-3.436-8.873-8-9.799V26h-4v72.201c-4.564,0.926-8,4.961-8,9.799 c0,3.699,2.014,6.922,5,8.651V126c0,2.762,2.239,5,5,5c2.762,0,5-2.238,5-5v-9.349C115.986,114.922,118,111.699,118,108z" fill="url(#SVGID_2_)"/>
+<circle cx="108" cy="108" fill="#1E1E28" fill-opacity="0.2" r="6" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="107.9995" x2="107.9995" y1="103.2773" y2="113.0161">
+<stop offset="0" style="stop-color:#FAFAFA"/>
+<stop offset="0" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#E6E6E6"/>
+</linearGradient>
+<circle cx="108" cy="108" fill="url(#SVGID_3_)" r="5"/>
+<rect fill="none" height="216" width="216"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_divider_h_thin.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="2px" version="1.1" viewBox="0 0 100 2" width="100px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#DCDCDC" height="1" width="100" y="1"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="100"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_divider_v_thin.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="100px" version="1.1" viewBox="0 0 2 100" width="2px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#DCDCDC" height="100" width="1" x="1"/>
+<rect fill-opacity="0.2" height="100" stroke-opacity="0.2" width="1"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_hs_delete_highlight.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="84px" version="1.1" viewBox="0 0 84 84" width="84px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<g>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="41.9995" x2="41.9995" y1="7.0425" y2="80.7841">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+<path d="M16.435,18.82l17.105-3.017l-0.98-5.552l16.053-2.831l0.979,5.553l16.803-2.963l1.171,6.634 l-49.961,8.811L16.435,18.82z M36.408,15.299l10.315-1.819l-0.473-2.682l-10.315,1.819L36.408,15.299z" fill="url(#SVGID_1_)"/>
+<path d="M48.207,8l0.98,5.553l16.802-2.963l0.997,5.649L18.01,24.876l-0.997-5.65l17.105-3.017l-0.98-5.552 L48.207,8 M36.002,15.878l11.301-1.993l-0.646-3.666l-11.3,1.993L36.002,15.878 M49.018,6.842l-0.984,0.174L32.965,9.673 L31.98,9.846l0.174,0.985l0.807,4.566L16.84,18.241l-0.985,0.173l0.174,0.985l0.997,5.65l0.174,0.984l0.985-0.174l48.976-8.637 l0.984-0.173l-0.174-0.985l-0.997-5.649L66.8,9.432l-0.984,0.174l-15.817,2.789l-0.807-4.568L49.018,6.842L49.018,6.842z M36.514,13.023l9.332-1.646l0.299,1.696l-9.332,1.646L36.514,13.023L36.514,13.023z" fill="#FFFFFF"/>
+</g>
+<g>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="43.3232" x2="43.3232" y1="6.7163" y2="77.1645">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+<path d="M19.87,76.5V27.684h46.905V76.5H19.87z M57.169,69.76V32.509h-4.74V69.76H57.169z M45.69,69.76 V32.509h-4.739V69.76H45.69z M34.215,69.76V32.509h-4.738V69.76H34.215z" fill="url(#SVGID_2_)"/>
+<path d="M66.275,28.184V76H20.37V28.184H66.275 M51.929,70.26h5.74V32.009h-5.74V70.26 M40.452,70.26h5.739V32.009 h-5.739V70.26 M28.977,70.26h5.738V32.009h-5.738V70.26 M67.275,27.184h-1H20.37h-1v1V76v1h1h45.905h1v-1V28.184V27.184 L67.275,27.184z M52.929,33.009h3.74V69.26h-3.74V33.009L52.929,33.009z M41.452,33.009h3.739V69.26h-3.739V33.009L41.452,33.009z M29.977,33.009h3.738V69.26h-3.738V33.009L29.977,33.009z" fill="#FFFFFF"/>
+</g>
+<rect fill="none" height="84" width="84"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_hs_delete_normal.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="84px" version="1.1" viewBox="0 0 84 84" width="84px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<g>
+<path d="M15.036,21.192v-7.106h18.484V8.085h17.285v6.001h18.158v7.106H15.036z M47.769,14.086v-2.962H36.556v2.962 H47.769z" fill="#3C3C3C"/>
+<path d="M50.306,8.585v6.001h18.158v6.106H15.536v-6.106h18.484V8.585H50.306 M36.056,14.586h12.213v-3.962H36.056 V14.586 M51.306,7.585h-1H34.021h-1v1v5.001H15.536h-1v1v6.106v1h1h52.928h1v-1v-6.106v-1h-1H51.306V8.585V7.585L51.306,7.585z M37.056,11.624h10.213v1.962H37.056V11.624L37.056,11.624z" fill="#FFFFFF"/>
+</g>
+<g>
+<path d="M17.071,75.915V24.023h49.857v51.892H17.071z M56.769,68.806V29.095h-5.109v39.711H56.769z M44.552,68.806 V29.095h-5.107v39.711H44.552z M32.339,68.806V29.095h-5.107v39.711H32.339z" fill="#3C3C3C"/>
+<path d="M66.429,24.523v50.892H17.571V24.523H66.429 M51.159,69.306h6.109V28.595h-6.109V69.306 M38.944,69.306 h6.107V28.595h-6.107V69.306 M26.731,69.306h6.107V28.595h-6.107V69.306 M67.429,23.523h-1H17.571h-1v1v50.892v1h1h48.857h1v-1 V24.523V23.523L67.429,23.523z M52.159,29.595h4.109v38.711h-4.109V29.595L52.159,29.595z M39.944,29.595h4.107v38.711h-4.107 V29.595L39.944,29.595z M27.731,29.595h4.107v38.711h-4.107V29.595L27.731,29.595z" fill="#FFFFFF"/>
+</g>
+<rect fill="none" height="84" width="84"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_hs_dialer_normal.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="82px" version="1.1" viewBox="0 0 82 82" width="82px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M7,82c-3.86,0-7-3.141-7-7V7c0-3.86,3.14-7,7-7h68c3.859,0,7,3.14,7,7v68c0,3.859-3.141,7-7,7 H7z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M81,75c0,3.3-2.7,6-6,6H7c-3.3,0-6-2.7-6-6V8c0-3.3,2.7-6,6-6h68c3.3,0,6,2.7,6,6V75z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M81,74c0,3.3-2.7,6-6,6H7c-3.3,0-6-2.7-6-6V7c0-3.3,2.7-6,6-6h68c3.3,0,6,2.7,6,6V74z" fill="url(#SVGID_1_)" fill-opacity="0.9" stroke-opacity="0.9"/>
+<path d="M75,1H7C3.7,1,1,3.7,1,7v67c0,3.3,2.7,6,6,6h68c3.3,0,6-2.7,6-6V7C81,3.7,78.3,1,75,1z M80,74 c0,2.757-2.243,5-5,5H7c-2.757,0-5-2.243-5-5V7c0-2.757,2.243-5,5-5h68c2.757,0,5,2.243,5,5V74z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<g>
+<g>
+<path d="M29.049,20.702c0,1.813-1.472,3.284-3.284,3.284h-7.116c-1.813,0-3.284-1.471-3.284-3.284V16.87 c0-1.814,1.471-3.284,3.284-3.284h7.116c1.813,0,3.284,1.47,3.284,3.284V20.702z" fill="#3C3C3C"/>
+<path d="M47.844,20.702c0,1.813-1.472,3.284-3.285,3.284h-7.115c-1.815,0-3.284-1.471-3.284-3.284V16.87 c0-1.814,1.469-3.284,3.284-3.284h7.115c1.813,0,3.285,1.47,3.285,3.284V20.702z" fill="#3C3C3C"/>
+<path d="M66.636,20.702c0,1.813-1.471,3.284-3.284,3.284h-7.115c-1.813,0-3.284-1.471-3.284-3.284V16.87 c0-1.814,1.471-3.284,3.284-3.284h7.115c1.813,0,3.284,1.47,3.284,3.284V20.702z" fill="#3C3C3C"/>
+<path d="M29.049,35.755c0,1.813-1.472,3.284-3.284,3.284h-7.116c-1.813,0-3.284-1.471-3.284-3.284v-3.831 c0-1.815,1.471-3.284,3.284-3.284h7.116c1.813,0,3.284,1.469,3.284,3.284V35.755z" fill="#3C3C3C"/>
+<path d="M47.844,35.755c0,1.813-1.472,3.284-3.285,3.284h-7.115c-1.815,0-3.284-1.471-3.284-3.284v-3.831 c0-1.815,1.469-3.284,3.284-3.284h7.115c1.813,0,3.285,1.469,3.285,3.284V35.755z" fill="#3C3C3C"/>
+<path d="M66.636,35.755c0,1.813-1.471,3.284-3.284,3.284h-7.115c-1.813,0-3.284-1.471-3.284-3.284v-3.831 c0-1.815,1.471-3.284,3.284-3.284h7.115c1.813,0,3.284,1.469,3.284,3.284V35.755z" fill="#3C3C3C"/>
+<path d="M29.049,50.534c0,1.813-1.472,3.284-3.284,3.284h-7.116c-1.813,0-3.284-1.471-3.284-3.284v-3.831 c0-1.815,1.471-3.284,3.284-3.284h7.116c1.813,0,3.284,1.469,3.284,3.284V50.534z" fill="#3C3C3C"/>
+<path d="M47.844,50.534c0,1.813-1.472,3.284-3.285,3.284h-7.115c-1.815,0-3.284-1.471-3.284-3.284v-3.831 c0-1.815,1.469-3.284,3.284-3.284h7.115c1.813,0,3.285,1.469,3.285,3.284V50.534z" fill="#3C3C3C"/>
+<path d="M47.844,65.13c0,1.815-1.472,3.284-3.285,3.284h-7.115c-1.815,0-3.284-1.469-3.284-3.284v-3.831 c0-1.813,1.469-3.284,3.284-3.284h7.115c1.813,0,3.285,1.471,3.285,3.284V65.13z" fill="#3C3C3C"/>
+<path d="M66.636,50.534c0,1.813-1.471,3.284-3.284,3.284h-7.115c-1.813,0-3.284-1.471-3.284-3.284v-3.831 c0-1.815,1.471-3.284,3.284-3.284h7.115c1.813,0,3.284,1.469,3.284,3.284V50.534z" fill="#3C3C3C"/>
+</g>
+</g>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="40.9995" x2="40.9995" y1="1" y2="80.0005">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0" style="stop-color:#FDFDFE"/>
+<stop offset="0.9" style="stop-color:#E6E6F0"/>
+<stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_hs_dialer_pressed.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="82px" version="1.1" viewBox="0 0 82 82" width="82px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M7,82c-3.859,0-7-3.141-7-7V7c0-3.86,3.141-7,7-7h68c3.859,0,7,3.14,7,7v68 c0,3.859-3.141,7-7,7H7z" fill="#14141E" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M81,75c0,3.3-2.7,6-6,6H7c-3.3,0-6-2.7-6-6V8c0-3.3,2.7-6,6-6h68c3.3,0,6,2.7,6,6V75z" fill="#14141E" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M81,74c0,3.3-2.7,6-6,6H7c-3.3,0-6-2.7-6-6V7c0-3.3,2.7-6,6-6h68c3.3,0,6,2.7,6,6V74z" fill="url(#SVGID_1_)"/>
+<path d="M75,2H7C4.243,2,2,4.243,2,7v67c0,2.757,2.243,5,5,5h68c2.757,0,5-2.243,5-5V7 C80,4.243,77.757,2,75,2z M79,74c0,2.205-1.794,4-4,4H7c-2.206,0-4-1.795-4-4V7c0-2.206,1.794-4,4-4h68c2.206,0,4,1.794,4,4V74z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M75,1H7C3.7,1,1,3.7,1,7v67c0,3.3,2.7,6,6,6h68c3.3,0,6-2.7,6-6V7C81,3.7,78.3,1,75,1z M80,74 c0,2.757-2.243,5-5,5H7c-2.757,0-5-2.243-5-5V7c0-2.757,2.243-5,5-5h68c2.757,0,5,2.243,5,5V74z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<g>
+<g>
+<path d="M29.049,20.702c0,1.813-1.472,3.284-3.284,3.284h-7.116c-1.813,0-3.284-1.471-3.284-3.284V16.87 c0-1.814,1.471-3.284,3.284-3.284h7.116c1.813,0,3.284,1.47,3.284,3.284V20.702z" fill="#FFFFFF"/>
+<path d="M47.844,20.702c0,1.813-1.472,3.284-3.285,3.284h-7.115c-1.815,0-3.284-1.471-3.284-3.284V16.87 c0-1.814,1.469-3.284,3.284-3.284h7.115c1.813,0,3.285,1.47,3.285,3.284V20.702z" fill="#FFFFFF"/>
+<path d="M66.636,20.702c0,1.813-1.471,3.284-3.284,3.284h-7.115c-1.813,0-3.284-1.471-3.284-3.284V16.87 c0-1.814,1.471-3.284,3.284-3.284h7.115c1.813,0,3.284,1.47,3.284,3.284V20.702z" fill="#FFFFFF"/>
+<path d="M29.049,35.755c0,1.813-1.472,3.284-3.284,3.284h-7.116c-1.813,0-3.284-1.471-3.284-3.284v-3.831 c0-1.815,1.471-3.284,3.284-3.284h7.116c1.813,0,3.284,1.469,3.284,3.284V35.755z" fill="#FFFFFF"/>
+<path d="M47.844,35.755c0,1.813-1.472,3.284-3.285,3.284h-7.115c-1.815,0-3.284-1.471-3.284-3.284v-3.831 c0-1.815,1.469-3.284,3.284-3.284h7.115c1.813,0,3.285,1.469,3.285,3.284V35.755z" fill="#FFFFFF"/>
+<path d="M66.636,35.755c0,1.813-1.471,3.284-3.284,3.284h-7.115c-1.813,0-3.284-1.471-3.284-3.284v-3.831 c0-1.815,1.471-3.284,3.284-3.284h7.115c1.813,0,3.284,1.469,3.284,3.284V35.755z" fill="#FFFFFF"/>
+<path d="M29.049,50.534c0,1.813-1.472,3.284-3.284,3.284h-7.116c-1.813,0-3.284-1.471-3.284-3.284v-3.831 c0-1.815,1.471-3.284,3.284-3.284h7.116c1.813,0,3.284,1.469,3.284,3.284V50.534z" fill="#FFFFFF"/>
+<path d="M47.844,50.534c0,1.813-1.472,3.284-3.285,3.284h-7.115c-1.815,0-3.284-1.471-3.284-3.284v-3.831 c0-1.815,1.469-3.284,3.284-3.284h7.115c1.813,0,3.285,1.469,3.285,3.284V50.534z" fill="#FFFFFF"/>
+<path d="M47.844,65.13c0,1.815-1.472,3.284-3.285,3.284h-7.115c-1.815,0-3.284-1.469-3.284-3.284v-3.831 c0-1.813,1.469-3.284,3.284-3.284h7.115c1.813,0,3.285,1.471,3.285,3.284V65.13z" fill="#FFFFFF"/>
+<path d="M66.636,50.534c0,1.813-1.471,3.284-3.284,3.284h-7.115c-1.813,0-3.284-1.471-3.284-3.284v-3.831 c0-1.815,1.471-3.284,3.284-3.284h7.115c1.813,0,3.284,1.469,3.284,3.284V50.534z" fill="#FFFFFF"/>
+</g>
+</g>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="41.0005" x2="41.0005" y1="80" y2="1.0005">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_hspage_highlight.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="16px" version="1.1" viewBox="0 0 16 16" width="16px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="16" width="16"/>
+<path d="M8,14c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S11.309,14,8,14L8,14z" fill="url(#SVGID_1_)"/>
+<path d="M8,2C4.691,2,2,4.691,2,8s2.691,6,6,6s6-2.691,6-6S11.309,2,8,2z M8,13c-2.757,0-5-2.243-5-5s2.243-5,5-5 s5,2.243,5,5S10.757,13,8,13z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="7.9995" x2="7.9995" y1="2" y2="14.0005">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_hspage_normal.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="16px" version="1.1" viewBox="0 0 16 16" width="16px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="16" width="16"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="7.9995" x2="7.9995" y1="2" y2="14.0005">
+<stop offset="0" style="stop-color:#B4B4BE"/>
+<stop offset="1" style="stop-color:#E6E6F0"/>
+</linearGradient>
+<path d="M8,14c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S11.309,14,8,14L8,14z" fill="url(#SVGID_1_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="7.9995" x2="7.9995" y1="2" y2="14.0005">
+<stop offset="0" style="stop-color:#9696A0"/>
+<stop offset="1" style="stop-color:#E6E6F0"/>
+</linearGradient>
+<path d="M8,2C4.691,2,2,4.691,2,8s2.691,6,6,6s6-2.691,6-6S11.309,2,8,2z M8,13c-2.757,0-5-2.243-5-5 s2.243-5,5-5s5,2.243,5,5S10.757,13,8,13z" fill="url(#SVGID_2_)"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_hsradio_bg.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="178px" version="1.1" viewBox="0 0 248 178" width="248px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="178" width="248"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="240" x2="240" y1="81.5" y2="49.5">
+<stop offset="0" style="stop-color:#282828"/>
+<stop offset="0.0043" style="stop-color:#282828"/>
+<stop offset="0.65" style="stop-color:#828282"/>
+<stop offset="1" style="stop-color:#505050"/>
+</linearGradient>
+<path d="M247,78.5c0,1.65-1.35,3-3,3h-8c-1.65,0-3-1.35-3-3v-26c0-1.65,1.35-3,3-3h8c1.65,0,3,1.35,3,3V78.5z " fill="url(#SVGID_1_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="240" x2="240" y1="80.5" y2="50.5">
+<stop offset="0" style="stop-color:#3C3C3C"/>
+<stop offset="0.0043" style="stop-color:#3C3C3C"/>
+<stop offset="0.65" style="stop-color:#969696"/>
+<stop offset="1" style="stop-color:#646464"/>
+</linearGradient>
+<path d="M236,80.5c-1.103,0-2-0.897-2-2v-26c0-1.103,0.897-2,2-2h8c1.103,0,2,0.897,2,2v26 c0,1.103-0.897,2-2,2H236z" fill="url(#SVGID_2_)"/>
+<rect fill-opacity="0.2" height="1" width="6" x="240" y="53"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" width="6" x="240" y="54"/>
+<rect fill-opacity="0.2" height="1" width="6" x="240" y="57"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" width="6" x="240" y="58"/>
+<rect fill-opacity="0.2" height="1" width="6" x="240" y="61"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" width="6" x="240" y="62"/>
+<rect fill-opacity="0.2" height="1" width="6" x="240" y="65"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" width="6" x="240" y="66"/>
+<rect fill-opacity="0.2" height="1" width="6" x="240" y="69"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" width="6" x="240" y="70"/>
+<rect fill-opacity="0.2" height="1" width="6" x="240" y="73"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" width="6" x="240" y="74"/>
+<rect fill-opacity="0.2" height="1" width="6" x="240" y="77"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" width="6" x="240" y="78"/>
+<path d="M230,26h-6V15c0-2.206-1.794-4-4-4h-4c-2.206,0-4,1.794-4,4v0.734L109.307,8.554l-0.07,0.997 L31.428,4.109l0.14-1.994l-6.983-0.489l-0.698,9.976l6.983,0.489l0.14-1.996l77.81,5.441l-0.069,0.997L212,23.754V26H18 c-6.065,0-11,4.935-11,11v126c0,6.065,4.935,11,11,11h212c6.065,0,11-4.935,11-11V37C241,30.935,236.065,26,230,26z" fill-opacity="0.15"/>
+<linearGradient gradientTransform="matrix(0.9976 0.0698 -0.0698 0.9976 414.4381 -95.1283)" gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="-243.1411" x2="-243.1411" y1="125.7158" y2="131.7197">
+<stop offset="0" style="stop-color:#BEBEC3"/>
+<stop offset="0.0567" style="stop-color:#D5D5D8"/>
+<stop offset="0.1295" style="stop-color:#ECECEE"/>
+<stop offset="0.1981" style="stop-color:#FAFAFB"/>
+<stop offset="0.2576" style="stop-color:#FFFFFF"/>
+<stop offset="0.7091" style="stop-color:#6E6E73"/>
+<stop offset="1" style="stop-color:#AAAAAF"/>
+</linearGradient>
+<polygon fill="url(#SVGID_3_)" points="109.816,15.605 215.559,23 215.977,17.015 110.234,9.621 "/>
+<linearGradient gradientTransform="matrix(0.9976 0.0698 -0.0698 0.9976 414.4381 -95.1283)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="-336.1372" x2="-336.1372" y1="126.7207" y2="130.7227">
+<stop offset="0" style="stop-color:#BEBEC3"/>
+<stop offset="0.0567" style="stop-color:#D5D5D8"/>
+<stop offset="0.1295" style="stop-color:#ECECEE"/>
+<stop offset="0.1981" style="stop-color:#FAFAFB"/>
+<stop offset="0.2576" style="stop-color:#FFFFFF"/>
+<stop offset="0.7091" style="stop-color:#6E6E73"/>
+<stop offset="1" style="stop-color:#AAAAAF"/>
+</linearGradient>
+<polygon fill="url(#SVGID_4_)" points="30.081,9.027 109.887,14.608 110.165,10.618 30.36,5.037 "/>
+<linearGradient gradientTransform="matrix(0.9976 0.0698 -0.0698 0.9976 414.4381 -95.1283)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="-378.6362" x2="-378.6362" y1="124.7236" y2="132.7236">
+<stop offset="0" style="stop-color:#BEBEC3"/>
+<stop offset="0.0567" style="stop-color:#D5D5D8"/>
+<stop offset="0.1295" style="stop-color:#ECECEE"/>
+<stop offset="0.1981" style="stop-color:#FAFAFB"/>
+<stop offset="0.2576" style="stop-color:#FFFFFF"/>
+<stop offset="0.7091" style="stop-color:#6E6E73"/>
+<stop offset="1" style="stop-color:#AAAAAF"/>
+</linearGradient>
+<polygon fill="url(#SVGID_5_)" points="24.953,10.674 29.941,11.023 30.5,3.043 25.512,2.693 "/>
+<rect fill-opacity="0.2" height="4" transform="matrix(-0.9976 -0.0693 0.0693 -0.9976 217.9186 32.7177)" width="1" x="109.027" y="10.579"/>
+<rect fill-opacity="0.2" height="4" transform="matrix(0.9975 0.0703 -0.0703 0.9975 0.5732 -2.1434)" width="1" x="30.219" y="5.067"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="213" x2="223" y1="22.5" y2="22.5">
+<stop offset="0" style="stop-color:#BEBEC3"/>
+<stop offset="0.0567" style="stop-color:#D5D5D8"/>
+<stop offset="0.1295" style="stop-color:#ECECEE"/>
+<stop offset="0.1981" style="stop-color:#FAFAFB"/>
+<stop offset="0.2576" style="stop-color:#FFFFFF"/>
+<stop offset="0.7091" style="stop-color:#6E6E73"/>
+<stop offset="1" style="stop-color:#AAAAAF"/>
+</linearGradient>
+<path d="M223,30c0,1.65-1.35,3-3,3h-4c-1.65,0-3-1.35-3-3V15c0-1.65,1.35-3,3-3h4c1.65,0,3,1.35,3,3V30z" fill="url(#SVGID_6_)"/>
+<polygon fill-opacity="0.2" points="212,22.751 213,22.821 213,16.807 212,16.736 "/>
+<path d="M240,163c0,5.5-4.5,10-10,10H18c-5.5,0-10-4.5-10-10V38c0-5.5,4.5-10,10-10h212c5.5,0,10,4.5,10,10V163z " fill-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="123.9995" x2="123.9995" y1="27" y2="172.0005">
+<stop offset="0" style="stop-color:#C8C8CD"/>
+<stop offset="1" style="stop-color:#78787D"/>
+</linearGradient>
+<path d="M240,162c0,5.5-4.5,10-10,10H18c-5.5,0-10-4.5-10-10V37c0-5.5,4.5-10,10-10h212c5.5,0,10,4.5,10,10 V162z" fill="url(#SVGID_7_)"/>
+<path d="M230,28H18c-4.963,0-9,4.037-9,9v125c0,4.963,4.037,9,9,9h212c4.963,0,9-4.037,9-9V37 C239,32.037,234.963,28,230,28z M238,162c0,4.411-3.589,8-8,8H18c-4.411,0-8-3.589-8-8V37c0-4.411,3.589-8,8-8h212 c4.411,0,8,3.589,8,8V162z" fill="#FFFFFF" fill-opacity="0.2"/>
+<path d="M230,27H18c-5.5,0-10,4.5-10,10v125c0,5.5,4.5,10,10,10h212c5.5,0,10-4.5,10-10V37 C240,31.5,235.5,27,230,27z M239,162c0,4.963-4.037,9-9,9H18c-4.963,0-9-4.037-9-9V37c0-4.963,4.037-9,9-9h212c4.963,0,9,4.037,9,9 V162z" fill-opacity="0.2"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_hsscreen_bg_lsc.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="360px" version="1.1" viewBox="0 0 640 360" width="640px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="url(#SVGID_1_)" height="360" width="640"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="319.9995" x2="319.9995" y1="0" y2="360.0005">
+<stop offset="0" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#E6E6F0"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_hsscreen_bg_prt.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="640px" version="1.1" viewBox="0 0 360 640" width="360px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="url(#SVGID_1_)" height="640" width="360"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="179.9995" x2="179.9995" y1="0" y2="640.0005">
+<stop offset="0" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#E6E6F0"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_ratingslider_rated_pressed.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="25px" version="1.1" viewBox="0 0 25 25" width="25px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M15.313,9.813L12.506,1.13L9.689,9.813H0.545l7.416,5.367L5.109,23.87l7.396-5.396l7.385,5.396 l-2.844-8.689l7.408-5.367H15.313z" fill="url(#SVGID_1_)"/>
+<path d="M24.455,9.813h-9.143L12.506,1.13L9.689,9.813H0.545l7.416,5.367L5.109,23.87l7.396-5.396l7.385,5.396 l-2.844-8.689L24.455,9.813z M17.977,21.235l-5.471-4l-5.477,3.994l2.111-6.431l-5.506-3.984h6.783l2.084-6.436l2.082,6.436h6.787 l-5.5,3.984L17.977,21.235z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<rect fill="none" height="25" width="25"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="12.5005" x2="12.5005" y1="23.8701" y2="1.1304">
+<stop offset="0" style="stop-color:#F0A25D"/>
+<stop offset="1" style="stop-color:#E85826"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_ratingslider_unrated_pressed.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="25px" version="1.1" viewBox="0 0 25 25" width="25px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M15.312,9.813L12.506,1.13L9.689,9.813H0.545l7.416,5.367L5.109,23.87l7.396-5.396l7.385,5.396 l-2.844-8.689l7.408-5.367H15.312z" fill="url(#SVGID_1_)"/>
+<path d="M24.455,9.813h-9.144L12.506,1.13L9.689,9.813H0.545l7.416,5.367L5.109,23.87l7.396-5.396l7.385,5.396 l-2.844-8.689L24.455,9.813z M17.977,21.235l-5.472-4l-5.477,3.994l2.111-6.431l-4.124-2.985h6.128l1.358-4.189l1.354,4.189h6.136 l-4.121,2.985L17.977,21.235z" fill-opacity="0.1"/>
+<rect fill="none" height="25" width="25"/>
+<polygon fill-opacity="0.3" points="10.417,10.814 12.502,4.379 14.583,10.814 23.073,10.814 24.455,9.813 15.312,9.813 12.506,1.13 9.689,9.813 0.545,9.813 1.928,10.814 "/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="12.5005" x2="12.5005" y1="23.8701" y2="1.1304">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#999999"/>
+</linearGradient>
+</defs>
+</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_signal_bg.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_signal_bg.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 1.524 30 15" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M24.5,15.524c-0.825,0-1.5-0.675-1.5-1.5v-10c0-0.825,0.675-1.5,1.5-1.5l0,0c0.825,0,1.5,0.675,1.5,1.5v10 C26,14.85,25.325,15.524,24.5,15.524L24.5,15.524z" fill="#BEBEBE"/>
-<path d="M19.5,15.024c-0.825,0-1.5-0.675-1.5-1.5v-9c0-0.825,0.675-1.5,1.5-1.5l0,0c0.825,0,1.5,0.675,1.5,1.5v9 C21,14.35,20.325,15.024,19.5,15.024L19.5,15.024z" fill="#BEBEBE"/>
-<path d="M14.5,14.524c-0.825,0-1.5-0.675-1.5-1.5v-8c0-0.825,0.675-1.5,1.5-1.5l0,0c0.825,0,1.5,0.675,1.5,1.5v8 C16,13.85,15.325,14.524,14.5,14.524L14.5,14.524z" fill="#BEBEBE"/>
-<path d="M9.5,14.024c-0.825,0-1.5-0.675-1.5-1.5v-7c0-0.825,0.675-1.5,1.5-1.5l0,0c0.825,0,1.5,0.675,1.5,1.5v7 C11,13.35,10.325,14.024,9.5,14.024L9.5,14.024z" fill="#BEBEBE"/>
-<path d="M4.5,13.524c-0.825,0-1.5-0.675-1.5-1.5v-6c0-0.825,0.675-1.5,1.5-1.5l0,0c0.825,0,1.5,0.675,1.5,1.5v6 C6,12.85,5.325,13.524,4.5,13.524L4.5,13.524z" fill="#BEBEBE"/>
-<rect fill="none" height="15" width="30" y="1.524"/>
+<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 30 15" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#BEBEBE" height="3" width="4" x="1" y="6"/>
+<rect fill="#BEBEBE" height="6" width="4" x="7" y="4.5"/>
+<rect fill="#BEBEBE" height="9" width="4" x="13" y="3"/>
+<rect fill="#BEBEBE" height="12" width="4" x="19" y="1.5"/>
+<rect fill="#BEBEBE" height="15" width="4" x="25"/>
+<rect fill="none" height="15" width="30"/>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_signal_full.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_signal_full.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,10 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 30 15" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M24.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C23,1.675,23.675,1,24.5,1l0,0C25.325,1,26,1.675,26,2.5v10 C26,13.325,25.325,14,24.5,14L24.5,14z" fill="#01EEFF"/>
-<path d="M19.5,13.5c-0.825,0-1.5-0.675-1.5-1.5V3c0-0.825,0.675-1.5,1.5-1.5l0,0C20.325,1.5,21,2.175,21,3v9 C21,12.825,20.325,13.5,19.5,13.5L19.5,13.5z" fill="#01EEFF"/>
-<path d="M14.5,13c-0.825,0-1.5-0.675-1.5-1.5v-8C13,2.675,13.675,2,14.5,2l0,0C15.325,2,16,2.675,16,3.5v8 C16,12.325,15.325,13,14.5,13L14.5,13z" fill="#01EEFF"/>
-<path d="M9.5,12.5C8.675,12.5,8,11.825,8,11V4c0-0.825,0.675-1.5,1.5-1.5l0,0C10.325,2.5,11,3.175,11,4v7 C11,11.825,10.325,12.5,9.5,12.5L9.5,12.5z" fill="#01EEFF"/>
-<path d="M4.5,12C3.675,12,3,11.325,3,10.5v-6C3,3.675,3.675,3,4.5,3l0,0C5.325,3,6,3.675,6,4.5v6 C6,11.325,5.325,12,4.5,12L4.5,12z" fill="#01EEFF"/>
+<rect fill="url(#SVGID_1_)" height="3" width="4" x="1" y="6"/>
+<rect fill="url(#SVGID_1_)" height="6" width="4" x="7" y="4.5"/>
+<rect fill="url(#SVGID_1_)" height="9" width="4" x="13" y="3"/>
+<rect fill="url(#SVGID_1_)" height="12" width="4" x="19" y="1.5"/>
+<rect fill="url(#SVGID_1_)" height="15" width="4" x="25"/>
<rect fill="none" height="15" width="30"/>
+<defs>
+<linearGradient gradientTransform="matrix(0 1 -1 0 -1287.5 291.5005)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-284.001" x2="-284.001" y1="-1316.4995" y2="-1288.578">
+<stop offset="0" style="stop-color:#47DAFA"/>
+<stop offset="1" style="stop-color:#0070FA"/>
+</linearGradient>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_signal_low.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_signal_low.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,10 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 30 15" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M24.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C23,1.675,23.675,1,24.5,1l0,0C25.325,1,26,1.675,26,2.5v10 C26,13.325,25.325,14,24.5,14L24.5,14z" fill="#E34D15"/>
-<path d="M19.5,13.5c-0.825,0-1.5-0.675-1.5-1.5V3c0-0.825,0.675-1.5,1.5-1.5l0,0C20.325,1.5,21,2.175,21,3v9 C21,12.825,20.325,13.5,19.5,13.5L19.5,13.5z" fill="#E34D15"/>
-<path d="M14.5,13c-0.825,0-1.5-0.675-1.5-1.5v-8C13,2.675,13.675,2,14.5,2l0,0C15.325,2,16,2.675,16,3.5v8 C16,12.325,15.325,13,14.5,13L14.5,13z" fill="#E34D15"/>
-<path d="M9.5,12.5C8.675,12.5,8,11.825,8,11V4c0-0.825,0.675-1.5,1.5-1.5l0,0C10.325,2.5,11,3.175,11,4v7 C11,11.825,10.325,12.5,9.5,12.5L9.5,12.5z" fill="#E34D15"/>
-<path d="M4.5,12C3.675,12,3,11.325,3,10.5v-6C3,3.675,3.675,3,4.5,3l0,0C5.325,3,6,3.675,6,4.5v6 C6,11.325,5.325,12,4.5,12L4.5,12z" fill="#E34D15"/>
+<rect fill="url(#SVGID_1_)" height="3" width="4" x="1" y="6"/>
+<rect fill="url(#SVGID_1_)" height="6" width="4" x="7" y="4.5"/>
+<rect fill="url(#SVGID_1_)" height="9" width="4" x="13" y="3"/>
+<rect fill="url(#SVGID_1_)" height="12" width="4" x="19" y="1.5"/>
+<rect fill="url(#SVGID_1_)" height="15" width="4" x="25"/>
<rect fill="none" height="15" width="30"/>
+<defs>
+<linearGradient gradientTransform="matrix(0 1 -1 0 253 659.0005)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-651.501" x2="-651.501" y1="223.834" y2="251.8419">
+<stop offset="0" style="stop-color:#FA772B"/>
+<stop offset="1" style="stop-color:#CC2500"/>
+</linearGradient>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_signal_medium.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_signal_medium.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,10 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="15px" version="1.1" viewBox="0 0 30 15" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M24.5,14c-0.825,0-1.5-0.675-1.5-1.5v-10C23,1.675,23.675,1,24.5,1l0,0C25.325,1,26,1.675,26,2.5v10 C26,13.325,25.325,14,24.5,14L24.5,14z" fill="#FACD40"/>
-<path d="M19.5,13.5c-0.825,0-1.5-0.675-1.5-1.5V3c0-0.825,0.675-1.5,1.5-1.5l0,0C20.325,1.5,21,2.175,21,3v9 C21,12.825,20.325,13.5,19.5,13.5L19.5,13.5z" fill="#FACD40"/>
-<path d="M14.5,13c-0.825,0-1.5-0.675-1.5-1.5v-8C13,2.675,13.675,2,14.5,2l0,0C15.325,2,16,2.675,16,3.5v8 C16,12.325,15.325,13,14.5,13L14.5,13z" fill="#FACD40"/>
-<path d="M9.5,12.5C8.675,12.5,8,11.825,8,11V4c0-0.825,0.675-1.5,1.5-1.5l0,0C10.325,2.5,11,3.175,11,4v7 C11,11.825,10.325,12.5,9.5,12.5L9.5,12.5z" fill="#FACD40"/>
-<path d="M4.5,12C3.675,12,3,11.325,3,10.5v-6C3,3.675,3.675,3,4.5,3l0,0C5.325,3,6,3.675,6,4.5v6 C6,11.325,5.325,12,4.5,12L4.5,12z" fill="#FACD40"/>
+<rect fill="url(#SVGID_1_)" height="3" width="4" x="1" y="6"/>
+<rect fill="url(#SVGID_1_)" height="6" width="4" x="7" y="4.5"/>
+<rect fill="url(#SVGID_1_)" height="9" width="4" x="13" y="3"/>
+<rect fill="url(#SVGID_1_)" height="12" width="4" x="19" y="1.5"/>
+<rect fill="url(#SVGID_1_)" height="15" width="4" x="25"/>
<rect fill="none" height="15" width="30"/>
+<defs>
+<linearGradient gradientTransform="matrix(0 1 -1 0 28 886.0005)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-878.501" x2="-878.501" y1="-1.0825" y2="26.9175">
+<stop offset="0" style="stop-color:#FAD347"/>
+<stop offset="1" style="stop-color:#FA9600"/>
+</linearGradient>
+</defs>
</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_taskswitcher_camcorder.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="194.3px" version="1.1" viewBox="0 0 194.3 194.3" width="194.3px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#231F20" height="194.458" width="194.458" x="-0.079" y="-0.079"/>
+<g>
+<g>
+<polygon fill="#FFFFFF" points="143.369,67.896 119.082,67.896 119.082,69.833 143.369,69.833 143.369,94.119 145.305,94.119 145.305,69.833 145.305,67.896 "/>
+<polygon fill="#FFFFFF" points="145.305,136.471 145.305,112.184 143.367,112.184 143.367,136.471 119.082,136.471 119.082,138.406 143.367,138.406 145.305,138.406 "/>
+</g>
+<g>
+<polygon fill="#FFFFFF" points="50.931,138.406 75.218,138.406 75.218,136.469 50.931,136.469 50.931,112.184 48.996,112.184 48.996,136.469 48.996,138.406 "/>
+<polygon fill="#FFFFFF" points="48.996,69.832 48.996,94.119 50.933,94.119 50.933,69.832 75.219,69.832 75.219,67.896 50.933,67.896 48.996,67.896 "/>
+</g>
+</g>
+<rect fill="none" height="38.115" width="38.116" x="9.27" y="6.712"/>
+<g>
+<polygon fill="#FFFFFF" points="46.114,24.499 41.032,20.687 46.114,16.876 "/>
+<path d="M16.927,15.637V34.63h25.375V15.637H16.927z M39.795,32.122H19.434V18.146h20.362V32.122z" fill="#FFFFFF"/>
+<polygon fill="#FFFFFF" points="15.623,18.146 11.811,15.605 11.811,32.122 15.623,29.581 "/>
+<rect fill="#FFFFFF" height="1.271" width="15.246" x="21.974" y="21.958"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_taskswitcher_camera.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="194.3px" version="1.1" viewBox="0 0 194.3 194.3" width="194.3px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#231F20" height="194.458" width="194.458" x="-0.079" y="-0.079"/>
+<g>
+<polygon fill="#FFFFFF" points="143.369,67.895 119.082,67.895 119.082,69.833 143.369,69.833 143.369,94.119 145.305,94.119 145.305,69.833 145.305,67.895 "/>
+<polygon fill="#FFFFFF" points="145.305,136.471 145.305,112.184 143.367,112.184 143.367,136.471 119.082,136.471 119.082,138.406 143.367,138.406 145.305,138.406 "/>
+</g>
+<g>
+<polygon fill="#FFFFFF" points="50.931,138.406 75.219,138.406 75.219,136.469 50.931,136.469 50.931,112.184 48.996,112.184 48.996,136.469 48.996,138.406 "/>
+<polygon fill="#FFFFFF" points="48.996,69.832 48.996,94.119 50.933,94.119 50.933,69.832 75.219,69.832 75.219,67.895 50.933,67.895 48.996,67.895 "/>
+</g>
+<g>
+<rect fill="#FFFFFF" height="2.42" stroke="#231F20" width="6.05" x="33.678" y="11.039"/>
+<path d="M11.898,14.669v24.2h31.46v-24.2H11.898z M39.728,35.239h-24.2v-16.94h24.2V35.239z" fill="#FFFFFF" stroke="#231F20"/>
+<path d="M28.233,19.509c-4.01,0-7.26,3.25-7.26,7.26s3.25,7.26,7.26,7.26 c4.011,0,7.26-3.25,7.26-7.26S32.239,19.509,28.233,19.509z M28.233,30.399c-2.004,0-3.63-1.626-3.63-3.63 c0-2.003,1.626-3.63,3.63-3.63s3.63,1.627,3.63,3.63C31.863,28.773,30.242,30.399,28.233,30.399z" fill="#FFFFFF" stroke="#231F20"/>
+<circle cx="18.781" cy="21.53" fill="#FFFFFF" r="1.815" stroke="#231F20"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_theme_preview_lsc.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,479 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="205px" version="1.1" viewBox="0 0 640 205" width="640px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#FFFFFF" height="205" width="640"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="610" x2="610" y1="19.6665" y2="59.8465">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" height="40" width="60" x="580" y="20"/>
+<rect fill="#AAAAAF" height="1" width="60" x="580" y="59"/>
+<rect fill="#FFFFFF" fill-opacity="0.6" height="39" width="1" x="580" y="20"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="639,20 639,58 581,58 581,59 640,59 640,20 " stroke-opacity="0.4"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="30" x2="30" y1="19.6665" y2="59.8465">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" height="40" width="60" y="20"/>
+<rect fill="#AAAAAF" height="1" width="60" y="59"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="1,58 1,20 0,20 0,59 59,59 59,58 " stroke-opacity="0.4"/>
+<rect fill-opacity="0.2" height="39" width="1" x="59" y="20"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="319.9995" x2="319.9995" y1="19.6665" y2="59.8465">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_3_)" height="40" width="520" x="60" y="20"/>
+<rect fill="#AAAAAF" height="1" width="520" x="60" y="59"/>
+<rect fill="#FFFFFF" fill-opacity="0.6" height="39" width="1" x="60" y="20"/>
+<rect fill-opacity="0.2" height="39" width="1" x="579" y="20"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="518" x="61" y="58"/>
+<rect height="20" width="640"/>
+<g>
+<path d="M38,32c1.65,0,2.234,1.112,1.301,2.472l-7.602,11.056c-0.934,1.36-2.465,1.36-3.398,0l-7.602-11.056 C19.766,33.112,20.35,32,22,32H38z" fill="#3C3C3C"/>
+</g>
+<g>
+<path d="M568,32c1.65,0,2.234,1.112,1.301,2.472l-7.602,11.056c-0.934,1.36-2.465,1.36-3.398,0l-7.602-11.056 C549.766,33.112,550.35,32,552,32H568z" fill="#3C3C3C"/>
+</g>
+<linearGradient gradientTransform="matrix(0 -1 1 0 -197.5 -891.5)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="-894.5" x2="-909.5" y1="801.499" y2="801.499">
+<stop offset="0" style="stop-color:#92DE2F"/>
+<stop offset="1" style="stop-color:#19B016"/>
+</linearGradient>
+<polygon fill="url(#SVGID_4_)" points="592,7 590,7 590,14 592,14 592,18 618,18 618,3 592,3 "/>
+<rect fill-opacity="0.2" height="8" stroke-opacity="0.2" width="2" x="611" y="6.5"/>
+<polygon fill-opacity="0.2" points="598,6.5 598,9.5 595,9.5 595,11.5 598,11.5 598,14.5 600,14.5 600,11.5 603,11.5 603,9.5 600,9.5 600,6.5 " stroke-opacity="0.2"/>
+<rect fill="none" height="15" width="30" x="589" y="3"/>
+<rect fill="url(#SVGID_5_)" height="3" width="4" x="24" y="9"/>
+<rect fill="url(#SVGID_5_)" height="6" width="4" x="30" y="7.5"/>
+<rect fill="url(#SVGID_7_)" height="9" width="4" x="36" y="6"/>
+<rect fill="url(#SVGID_5_)" height="12" width="4" x="42" y="4.5"/>
+<rect fill="url(#SVGID_7_)" height="15" width="4" x="48" y="3"/>
+<rect fill="none" height="15" width="30" x="23" y="3"/>
+<path d="M13.53,15h1.942v-4.838L19,5.91V5h-9v0.91l3.53,4.252V15L13.53,15z" fill="#FFFFFF"/>
+<path d="M623,16h7V5.176h-2.042V4h-2.992v1.176H623V16z" fill="#FFFFFF"/>
+<g>
+<path d="M610,41.5c0,1.65-1.09,2.204-2.422,1.23l-8.156-5.96c-1.332-0.974-1.332-2.566,0-3.54l8.156-5.96 C608.91,26.296,610,26.85,610,28.5V41.5z" fill="#3C3C3C"/>
+</g>
+<path d="M604.5,35h12c3.85,0,7,3.15,7,7l0,0 c0,3.85-3.15,7-7,7h-15" fill="none" stroke="#3C3C3C" stroke-linecap="round" stroke-width="5"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10_" x1="106.5" x2="106.5" y1="144" y2="204.27">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="0.9" style="stop-color:#3F89A9"/>
+<stop offset="0.9" style="stop-color:#3880A4"/>
+<stop offset="1" style="stop-color:#3278A0"/>
+</linearGradient>
+<rect fill="url(#SVGID_10_)" height="60" width="213" y="144.5"/>
+<path d="M0,144.5v60h213v-60H0z M212,203.5H1v-58h211V203.5z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11_" x1="319.9995" x2="319.9995" y1="144" y2="204.27">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_11_)" height="60" width="214" x="213" y="144.5"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_12_" x1="533.5" x2="533.5" y1="144" y2="204.27">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_12_)" height="60" width="213" x="427" y="144.5"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="427" x="213" y="203.5"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="427" x="213" y="202.5"/>
+<rect fill="#FFFFFF" fill-opacity="0.9" height="58" stroke-opacity="0.9" width="1" x="213" y="145.5"/>
+<rect fill="none" height="40" width="40" x="86.5" y="154.5"/>
+<g>
+<g>
+<path d="M87.876,174.5c0.019,10.268,8.353,18.605,18.624,18.624c10.268-0.019,18.607-8.356,18.624-18.624 c-0.017-10.268-8.356-18.607-18.624-18.625C96.229,155.893,87.895,164.232,87.876,174.5z M95.939,177.984l-0.924,1.229 c0,0-0.086,2.324-0.092,2.423c-0.076,0.225-0.693,0.148-0.932,0.148c-0.807,0.761,0.421,1.424,0.217,1.895 c-0.197,0.457-0.454,0.971-0.773,1.432c-2.256-2.883-4.664-8.228-3.11-14.514c0.196,0.094,0.442,0.332,0.75,0.756 c0.337,0.467,0.313,1.104,0.631,1.394c0.378,0.347,0.784,1.573,0.784,1.573l1.043,1.125l2.408,1.56v0.979H95.939z M118.841,183.507c-0.702,0.229-0.458-0.546-0.458-0.546s0.629-1.391,0.643-1.501c0.033-0.263,0.863-0.524,0.863-0.524 l0.553-0.877C121.262,179.893,120.305,183.027,118.841,183.507z M113.113,159.548c0.264,0.034,0.184,0.284,0.479,0.284 c0.101,0,0.53-0.111,1.054-0.258c4.179,2.173,7.342,6.029,8.584,10.674c-0.055-0.003-0.088-0.008-0.088-0.008 s-0.1-0.065-0.246-0.16l-0.516-1.021l-0.816-0.066l-1.664-1.402c0,0,0.44,1.131,1.172,1.664c0.476,0.033,0.799-0.031,0.822-0.008 c0.521,1.373-0.594,3.061-1.887,3.372c-0.162-0.704-0.306-0.979-0.512-1.58l-2.266-3.081l-0.131,0.324l1.045,1.591 c0,0,0.74,1.241,1.047,1.961c0.588,0.522,0.703,0.739,0.763,1.272c0.207,0.066,0.37,0.078,1.022-0.162 c0.988-0.363,0.424,1.162,0.262,1.588c-0.592,1.445-0.723,1.332-1.655,2.279c-1.44,1.019-0.668,2.793-0.731,4.229 c0,0-1.455,0.979-1.994,1.192c-0.5,0.713-0.01,1.389-0.262,1.406c-0.766,0.25-1.925,1.437-2.123,1.6 c-0.688,0.889-1.113,1.017-1.923,0.945c-2.257-0.638-1.577-2.983-1.678-3.244c-0.276-0.898-1.153-1.029-0.013-2.746 c0.479-0.564,0.045-1.822-0.827-3.043c-0.4-0.563,0.28-1.869,0.229-1.877c-1.462-0.272-1.765-0.93-1.828-1.096 c0,0-2.975,0.594-4.002,0.508c-0.787-0.063-2.488-2.101-2.816-2.854c-0.327-0.755,0.619-3.301,0.654-3.496 c0.033-0.197,2.244-1.732,2.244-1.732l1.504-1.465l-0.9-0.443c0,0,0.186-1.838,1.014-1.373c0.087,0.05,0.555,0.146,1.082,0.1 c0.559-0.352-0.611-0.813-0.484-1.288c0.029-0.112,0.463-0.165,0.026-0.56c-0.696-0.631-0.194-1.09,0.239-1.198 c0.48,0.177,0.785,0.608,0.785,1.198c0,0.592,1.559-0.27,1.654-0.37c-0.695-0.501-1.045-1.294-0.785-1.327 c0.268-0.036,1.422-0.335,1.717-0.633C110.657,158.949,112.848,159.518,113.113,159.548z M104.124,159.23 c0.215-0.104,0.614,0.104,0.89,0.063c0.276-0.041,0.521,0.063,0.521,0.063s-0.491,0.23-0.705,0.271 C104.615,159.669,104.309,159.459,104.124,159.23z M101.986,158.366c1.533-0.454,3.158-0.699,4.836-0.699 c1.305,0,2.576,0.147,3.796,0.427c-1.636,0.352-3.429-0.07-3.429-0.07c-0.164,0.263-0.905,0.125-1.101,0.125 c-0.198,0-1.213,0.838-2.168,0.758c-0.459,0.295-0.864,0.623-1.358,0.46c-0.492-0.164-1.436,0.653-1.795,0.688 c-0.49,0.154-0.725,0.118-0.793-0.025C101.1,159.341,101.559,158.779,101.986,158.366z M98.775,159.691l-0.95,1.119 c0,0-0.196,0.588-0.306,0.74c-0.108,0.152-0.653,0.742-0.653,0.742l-0.457-0.195l-0.066-0.24c0,0-0.502,0.152-0.502,0.457 c0,0.306-1.938,1.574-2.522,2.037C94.781,162.436,96.643,160.842,98.775,159.691z" fill="#FFFFFF"/>
+<path d="M111.05,161.109c0.171,0.152,0.739,0.465,0.825-0.047c0.085-0.514-0.452-1.293-0.452-1.293 s-0.54,0.131-0.403,0.48S110.881,160.959,111.05,161.109z" fill="#FFFFFF"/>
+<path d="M115.268,164.363c0,0,0.515-0.094,1.015,0.1c1.418,0.286,0.977-0.234,0.304-0.6 c-0.238-0.129-0.583-0.316-0.4-0.559c-0.158-0.255-0.5-0.074-0.742,0.191c-0.243,0.266-0.771-0.121-0.932,0.37 C114.35,164.355,115.152,164.585,115.268,164.363z" fill="#FFFFFF"/>
+<path d="M108.725,163.534c-0.348,0.296-1.313,1.204-1.313,1.204l-1.345,0.479l1.213,0.189l1.244-0.368l1.951,0.129 l0.318,0.919c0,0,2.137,1.059,2.342,0.844c0.316-0.326,0.486-0.795,0.963-0.469c0.478,0.328,1.252,0.329,1.812,0.329 c0.231,0.067,1.053,0.61,1.03-0.739c-0.362-0.304-2.353-0.177-2.916-1.48l-0.285,0.041c0,0,0.189,0.92-0.041,0.902 c-0.536-0.039-1.096-1-1.096-1l-0.104-0.408l-1.4-0.793c0,0-0.008,0.233,1.084,1.19c0,0-0.369,0.631-0.857,0.664 c0.123-0.164,0.216-0.655,0.216-0.655l-1.345-1.076C110.193,163.436,109.02,163.284,108.725,163.534z" fill="#FFFFFF"/>
+<path d="M118.58,164.814c0.381,0.356,0.218,0.623,0.471,0.848c0.252,0.225,0.842,0.25,0.463-0.262 c-0.459-0.616-0.938-1.096-1.045-1.248c-0.203-0.283,0.115-0.879-0.42-0.625C117.734,164.086,118.034,164.307,118.58,164.814z" fill="#FFFFFF"/>
+</g>
+</g>
+<path d="M336.674,185.854l-5.824-5.83c1.336-2.258,2.119-4.891,2.119-7.705c0-8.369-6.787-15.152-15.152-15.152 c-8.367,0-15.15,6.783-15.15,15.15c0,8.365,6.783,15.152,15.15,15.152c3.111,0,5.998-0.939,8.404-2.549l5.693,5.693 c0.875,0.875,2.297,0.875,3.172,0l1.588-1.588C337.553,188.15,337.553,186.73,336.674,185.854z M317.816,183.682 c-6.273,0-11.361-5.088-11.361-11.363s5.088-11.363,11.361-11.363c6.275,0,11.363,5.088,11.363,11.363 C329.182,178.592,324.092,183.682,317.816,183.682z M319.334,165.834h-2.668v5.332h-5.332v2.668h5.332v5.332h2.668v-5.332h5.332 v-2.668h-5.332V165.834z" fill="#3C3C3C"/>
+<rect fill="none" height="40" width="40" x="300" y="154.5"/>
+<path d="M550.174,185.854l-5.824-5.83c1.336-2.258,2.119-4.891,2.119-7.705c0-8.369-6.787-15.152-15.152-15.152 c-8.367,0-15.15,6.783-15.15,15.15c0,8.365,6.783,15.152,15.15,15.152c3.111,0,5.998-0.939,8.404-2.549l5.693,5.693 c0.875,0.875,2.297,0.875,3.172,0l1.588-1.588C551.053,188.15,551.053,186.73,550.174,185.854z M531.316,183.682 c-6.273,0-11.361-5.088-11.361-11.363s5.088-11.363,11.361-11.363c6.275,0,11.363,5.088,11.363,11.363 C542.682,178.592,537.592,183.682,531.316,183.682z M530.166,171.166h-5.332v2.668h5.332h2.668h5.332v-2.668h-5.332H530.166z" fill="#3C3C3C"/>
+<rect fill="none" height="40" width="40" x="513.5" y="154.5"/>
+<rect fill="#FFFFFF" fill-opacity="0.9" height="58" stroke-opacity="0.9" width="1" x="427" y="145.5"/>
+<rect fill="#9696A0" fill-opacity="0.5" height="58" stroke-opacity="0.5" width="1" x="426" y="145.5"/>
+<path d="M1,145.5v3v55h211v-55v-3H1z M211,202.5H2v-54h209V202.5z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<rect fill="none" height="71.71" width="71.63" x="171.249" y="66.645"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_13_" x1="-678.8013" x2="-678.8013" y1="-905.832" y2="-950.8316">
+<stop offset="0" style="stop-color:#D1D7D9"/>
+<stop offset="0.07" style="stop-color:#D1D7D9"/>
+<stop offset="0.26" style="stop-color:#BDC2C4"/>
+<stop offset="0.66" style="stop-color:#949DA1"/>
+<stop offset="0.96" style="stop-color:#ADB3B5"/>
+<stop offset="1" style="stop-color:#595C5E"/>
+</linearGradient>
+<path d="M208.521,117.863c0,1.617-1.313,2.928-2.923,2.928H182.21c-1.612,0-2.923-1.314-2.923-2.928V78.348 c0-1.615,1.313-2.927,2.923-2.927h23.39c1.61,0,2.925,1.313,2.925,2.927L208.521,117.863L208.521,117.863z" fill="url(#SVGID_13_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_14_" x1="-678.8022" x2="-678.8022" y1="-905.2769" y2="-949.6078">
+<stop offset="0" style="stop-color:#D5D7DB"/>
+<stop offset="0.67" style="stop-color:#85878A"/>
+<stop offset="1" style="stop-color:#808184"/>
+</linearGradient>
+<path d="M205.596,75.423H182.21c-1.612,0-2.923,1.315-2.923,2.927v39.515c0,0.775,0.313,1.484,0.811,2.012 c-0.045-0.176-0.078-0.355-0.078-0.549v-1.463V79.816V78.35c0-1.21,0.98-2.191,2.19-2.191h23.388c1.209,0,2.188,0.981,2.188,2.191 v1.466v38.049v1.463c0,0.189-0.027,0.373-0.076,0.549c0.498-0.521,0.813-1.232,0.813-2.012V78.35 C208.521,76.735,207.212,75.423,205.596,75.423z" fill="url(#SVGID_14_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_15_" x1="-678.8018" x2="-678.8018" y1="-908.9756" y2="-937.4838">
+<stop offset="0" style="stop-color:#878B8C"/>
+<stop offset="1" style="stop-color:#B1BABD"/>
+</linearGradient>
+<rect fill="url(#SVGID_15_)" fill-opacity="0.6" height="28.54" width="24.85" x="181.48" y="79.082"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_16_" x1="-678.8022" x2="-678.8022" y1="-909.7046" y2="-936.743">
+<stop offset="0" style="stop-color:#3D3D3D"/>
+<stop offset="1" style="stop-color:#1A1A1A"/>
+</linearGradient>
+<rect fill="url(#SVGID_16_)" height="27.075" width="23.39" x="182.21" y="79.812"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_17_" x1="-678.8022" x2="-678.8022" y1="-910.436" y2="-936.0117">
+<stop offset="0" style="stop-color:#3BC8EB"/>
+<stop offset="0.39" style="stop-color:#2D9BD2"/>
+<stop offset="0.89" style="stop-color:#1347BA"/>
+<stop offset="1" style="stop-color:#1347BA"/>
+</linearGradient>
+<rect fill="url(#SVGID_17_)" height="25.609" width="21.925" x="182.942" y="80.547"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_18_" x1="-678.8022" x2="-678.8022" y1="-911.0093" y2="-921.3372">
+<stop offset="0" style="stop-color:#85EFFF"/>
+<stop offset="1" style="stop-color:#3BA1D9"/>
+</linearGradient>
+<polygon fill="url(#SVGID_18_)" points="204.867,89.326 182.942,92.255 182.942,81.277 204.867,81.277 "/>
+<rect fill="#9FE4FF" height="0.729" width="21.925" x="182.942" y="80.547"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_19_" x1="-678.4209" x2="-678.4209" y1="-908.9771" y2="-906.0483">
+<stop offset="0" style="stop-color:#CFCFCF"/>
+<stop offset="1" style="stop-color:#808385"/>
+</linearGradient>
+<path d="M191.678,79.082c-0.818,0-1.461-0.534-1.461-1.219v-0.486c0-0.687,0.643-1.22,1.461-1.22h5.216 c0.815,0,1.462,0.533,1.462,1.22v0.486c0,0.687-0.646,1.223-1.462,1.223h-5.216V79.082z" fill="url(#SVGID_19_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_20_" x1="-678.4209" x2="-678.4209" y1="-906.4424" y2="-908.3323">
+<stop offset="0" style="stop-color:#343838"/>
+<stop offset="1" style="stop-color:#7D8182"/>
+</linearGradient>
+<path d="M197.623,77.863c0,0.272-0.322,0.487-0.728,0.487h-5.218c-0.402,0-0.729-0.219-0.729-0.487v-0.486 c0-0.271,0.326-0.485,0.729-0.485h5.218c0.399,0,0.728,0.222,0.728,0.485V77.863z" fill="url(#SVGID_20_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_21_" x1="-678.8018" x2="-678.8018" y1="-938.2363" y2="-948.3815">
+<stop offset="0" style="stop-color:#878B8C"/>
+<stop offset="1" style="stop-color:#B1BABD"/>
+</linearGradient>
+<path d="M191.629,118.594c-1.564,0-2.84-1.264-2.84-2.814v-4.617 c0-1.549,1.271-2.813,2.84-2.813h4.554c1.563,0,2.839,1.264,2.839,2.813v4.617c0,1.553-1.273,2.814-2.841,2.814H191.629 L191.629,118.594z" fill="url(#SVGID_21_)" fill-opacity="0.6"/>
+<path d="M191.623,117.863c-1.16,0-2.104-0.939-2.104-2.082v-4.615c0-1.146,0.941-2.08,2.104-2.08 h4.562c1.159,0,2.104,0.938,2.104,2.08v4.615c0,1.145-0.941,2.082-2.104,2.082H191.623L191.623,117.863z" fill="#020202" fill-opacity="0.5"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_22_" x1="-678.8037" x2="-678.8037" y1="-939.6357" y2="-946.9964">
+<stop offset="0" style="stop-color:#D1D7D9"/>
+<stop offset="0.07" style="stop-color:#D1D7D9"/>
+<stop offset="0.26" style="stop-color:#BDC2C4"/>
+<stop offset="0.66" style="stop-color:#949DA1"/>
+<stop offset="0.96" style="stop-color:#ADB3B5"/>
+<stop offset="1" style="stop-color:#595C5E"/>
+</linearGradient>
+<path d="M197.557,115.781c0,0.744-0.612,1.352-1.366,1.352h-4.571c-0.756,0-1.369-0.607-1.369-1.352v-4.617 c0-0.742,0.613-1.35,1.369-1.35h4.571c0.754,0,1.366,0.604,1.366,1.35V115.781z" fill="url(#SVGID_22_)"/>
+<path d="M193.174,115.668c-0.81,0-1.465-0.654-1.465-1.463v-1.465 c0-0.811,0.654-1.463,1.465-1.463h1.46c0.807,0,1.463,0.652,1.463,1.463v1.465c0,0.809-0.654,1.463-1.463,1.463H193.174z" fill="#020202" fill-opacity="0.5"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_23_" x1="-678.8042" x2="-678.8042" y1="-941.8574" y2="-944.7953">
+<stop offset="0" style="stop-color:#A6A8AB"/>
+<stop offset="0.7" style="stop-color:#58595B"/>
+<stop offset="1" style="stop-color:#808184"/>
+</linearGradient>
+<path d="M193.174,114.932c-0.404,0-0.73-0.326-0.73-0.729v-1.465c0-0.398,0.328-0.729,0.73-0.729h1.46 c0.4,0,0.729,0.328,0.729,0.729v1.465c0,0.4-0.328,0.729-0.729,0.729H193.174z" fill="url(#SVGID_23_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_24_" x1="-688.3027" x2="-688.3027" y1="-938.9053" y2="-946.9969">
+<stop offset="0" style="stop-color:#878B8C"/>
+<stop offset="1" style="stop-color:#B1BABD"/>
+</linearGradient>
+<path d="M184.405,117.133c-1.611,0-2.925-1.264-2.925-2.818v-2.42 c0-1.551,1.313-2.814,2.925-2.814l0,0c1.61,0,2.923,1.264,2.923,2.814v2.42C187.328,115.869,186.014,117.133,184.405,117.133 L184.405,117.133z" fill="url(#SVGID_24_)" fill-opacity="0.6"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_25_" x1="-688.3008" x2="-688.3008" y1="-939.6338" y2="-946.2672">
+<stop offset="0" style="stop-color:#231F20"/>
+<stop offset="1" style="stop-color:#6D6E70"/>
+</linearGradient>
+<path d="M184.405,116.396c-1.193,0-2.162-0.932-2.162-2.082v-2.42 c0-1.148,0.969-2.08,2.162-2.08l0,0c1.192,0,2.163,0.932,2.163,2.084v2.42C186.566,115.467,185.598,116.396,184.405,116.396 L184.405,116.396z" fill="url(#SVGID_25_)" fill-opacity="0.7"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_26_" x1="-688.3032" x2="-688.3032" y1="-940.3721" y2="-945.5241">
+<stop offset="0" style="stop-color:#C6FF45"/>
+<stop offset="0.73" style="stop-color:#66A00E"/>
+<stop offset="1" style="stop-color:#387300"/>
+</linearGradient>
+<path d="M185.805,114.314c0,0.748-0.627,1.354-1.399,1.354l0,0c-0.775,0-1.402-0.605-1.402-1.354v-2.42 c0-0.744,0.627-1.352,1.402-1.352l0,0c0.772,0,1.399,0.605,1.399,1.355V114.314z" fill="url(#SVGID_26_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_27_" x1="-669.3008" x2="-669.3008" y1="-938.9053" y2="-946.9969">
+<stop offset="0" style="stop-color:#878B8C"/>
+<stop offset="1" style="stop-color:#B1BABD"/>
+</linearGradient>
+<path d="M203.457,117.133c-1.641,0-2.977-1.264-2.977-2.818v-2.42 c0-1.551,1.336-2.814,2.977-2.814h-0.104c1.643,0,2.979,1.264,2.979,2.814v2.42c0,1.555-1.336,2.818-2.977,2.818H203.457 L203.457,117.133z" fill="url(#SVGID_27_)" fill-opacity="0.6"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_28_" x1="-669.2998" x2="-669.2998" y1="-939.6338" y2="-946.2672">
+<stop offset="0" style="stop-color:#231F20"/>
+<stop offset="1" style="stop-color:#6D6E70"/>
+</linearGradient>
+<path d="M203.457,116.396c-1.215,0-2.199-0.932-2.199-2.082v-2.42 c0-1.148,0.984-2.08,2.199-2.08h-0.104c1.217,0,2.203,0.932,2.203,2.08v2.42c0,1.148-0.986,2.082-2.203,2.082H203.457z" fill="url(#SVGID_28_)" fill-opacity="0.7"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_29_" x1="-669.3018" x2="-669.3018" y1="-940.373" y2="-945.5237">
+<stop offset="0" style="stop-color:#FFC142"/>
+<stop offset="0.75" style="stop-color:#CF4E18"/>
+<stop offset="1" style="stop-color:#B52100"/>
+</linearGradient>
+<path d="M204.781,114.314c0,0.748-0.641,1.354-1.43,1.354h0.105c-0.789,0-1.428-0.605-1.428-1.354v-2.42 c0-0.744,0.639-1.352,1.428-1.352h-0.105c0.789,0,1.43,0.605,1.43,1.352V114.314z" fill="url(#SVGID_29_)"/>
+<rect fill="#020202" fill-opacity="0.2" height="45.364" width="1.46" x="196.829" y="75.423"/>
+<rect fill="#020202" fill-opacity="0.1" height="45.364" width="2.924" x="197.557" y="75.423"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_30_" x1="-657.2446" x2="-657.2446" y1="-905.2808" y2="-957.8218">
+<stop offset="0" style="stop-color:#D1D7D9"/>
+<stop offset="0.07" style="stop-color:#D1D7D9"/>
+<stop offset="0.26" style="stop-color:#BDC2C4"/>
+<stop offset="0.66" style="stop-color:#949DA1"/>
+<stop offset="0.96" style="stop-color:#ADB3B5"/>
+<stop offset="1" style="stop-color:#595C5E"/>
+</linearGradient>
+<path d="M232.636,125.182c0,1.615-1.31,2.928-2.921,2.928h-28.504c-1.611,0-2.924-1.313-2.924-2.928V78.354 c0-1.615,1.313-2.927,2.924-2.927h28.506c1.611,0,2.921,1.315,2.921,2.927L232.636,125.182L232.636,125.182z" fill="url(#SVGID_30_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_31_" x1="-657.2446" x2="-657.2446" y1="-905.2769" y2="-956.9106">
+<stop offset="0" style="stop-color:#E4EBED"/>
+<stop offset="0.07" style="stop-color:#E4EBED"/>
+<stop offset="0.26" style="stop-color:#D6DCDE"/>
+<stop offset="0.66" style="stop-color:#B2BEC2"/>
+<stop offset="1" style="stop-color:#ADB3B5"/>
+</linearGradient>
+<path d="M229.715,75.423h-28.504c-1.611,0-2.924,1.315-2.924,2.927v46.828c0,0.777,0.313,1.482,0.813,2.014 c-0.045-0.178-0.078-0.355-0.078-0.549v-1.465V79.816V78.35c0-1.21,0.98-2.191,2.189-2.191h28.504c1.209,0,2.188,0.981,2.188,2.191 v1.466v45.362v1.465c0,0.188-0.031,0.373-0.076,0.549c0.498-0.523,0.811-1.23,0.811-2.014V78.35 C232.636,76.735,231.328,75.423,229.715,75.423z" fill="url(#SVGID_31_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_32_" x1="-657.2441" x2="-657.2441" y1="-908.9863" y2="-944.0677">
+<stop offset="0" style="stop-color:#B6BBBD"/>
+<stop offset="1" style="stop-color:#F0FBFF"/>
+</linearGradient>
+<rect fill="url(#SVGID_32_)" fill-opacity="0.6" height="35.124" width="29.965" x="200.48" y="79.082"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_33_" x1="-657.2432" x2="-657.2432" y1="-909.7163" y2="-943.3259">
+<stop offset="0" style="stop-color:#6E6E6E"/>
+<stop offset="1" style="stop-color:#333333"/>
+</linearGradient>
+<rect fill="url(#SVGID_33_)" height="33.659" width="28.506" x="201.211" y="79.812"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_34_" x1="-657.2432" x2="-657.2432" y1="-910.4478" y2="-942.5959">
+<stop offset="0" style="stop-color:#3BC8EB"/>
+<stop offset="0.39" style="stop-color:#2D9BD2"/>
+<stop offset="0.89" style="stop-color:#1347BA"/>
+<stop offset="1" style="stop-color:#1347BA"/>
+</linearGradient>
+<rect fill="url(#SVGID_34_)" height="32.193" width="27.041" x="201.943" y="80.547"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_35_" x1="-657.2432" x2="-657.2432" y1="-910.9858" y2="-923.3784">
+<stop offset="0" style="stop-color:#85EFFF"/>
+<stop offset="1" style="stop-color:#3BA1D9"/>
+</linearGradient>
+<polygon fill="url(#SVGID_35_)" points="228.984,91.522 201.943,94.449 201.943,81.277 228.984,81.277 "/>
+<rect fill="#9FE4FF" height="0.729" width="27.041" x="201.943" y="80.547"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_36_" x1="-657.3574" x2="-657.3574" y1="-944.8184" y2="-955.6969">
+<stop offset="0" style="stop-color:#B6BBBD"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M212.707,125.91c-1.564,0-2.84-1.264-2.84-2.814v-5.352 c0-1.553,1.271-2.816,2.84-2.816h5.285c1.563,0,2.839,1.268,2.839,2.816v5.352c0,1.551-1.271,2.814-2.839,2.814H212.707 L212.707,125.91z" fill="url(#SVGID_36_)" fill-opacity="0.6"/>
+<path d="M212.705,125.182c-1.162,0-2.104-0.936-2.104-2.08v-5.352 c0-1.148,0.941-2.082,2.104-2.082h5.293c1.162,0,2.104,0.938,2.104,2.082v5.352c0,1.146-0.942,2.08-2.104,2.08H212.705z" fill="#020202" fill-opacity="0.5"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_37_" x1="-657.3569" x2="-657.3569" y1="-946.2168" y2="-954.3099">
+<stop offset="0" style="stop-color:#A6A8AB"/>
+<stop offset="0.7" style="stop-color:#58595B"/>
+<stop offset="1" style="stop-color:#808184"/>
+</linearGradient>
+<path d="M219.37,123.098c0,0.74-0.61,1.35-1.364,1.35h-5.307c-0.756,0-1.369-0.604-1.369-1.35v-5.352 c0-0.746,0.613-1.355,1.369-1.355h5.307c0.754,0,1.364,0.607,1.364,1.355V123.098z" fill="url(#SVGID_37_)"/>
+<path d="M214.254,122.986c-0.809,0-1.465-0.658-1.465-1.467v-2.193 c0-0.811,0.656-1.465,1.465-1.465h2.189c0.811,0,1.463,0.654,1.463,1.465v2.193c0,0.809-0.652,1.467-1.463,1.467H214.254z" fill="#020202" fill-opacity="0.2"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_38_" x1="-657.3574" x2="-657.3574" y1="-948.4297" y2="-952.1101">
+<stop offset="0" style="stop-color:#D1D7D9"/>
+<stop offset="0.07" style="stop-color:#D1D7D9"/>
+<stop offset="0.26" style="stop-color:#BDC2C4"/>
+<stop offset="0.66" style="stop-color:#949DA1"/>
+<stop offset="0.96" style="stop-color:#ADB3B5"/>
+<stop offset="1" style="stop-color:#595C5E"/>
+</linearGradient>
+<path d="M214.254,122.252c-0.4,0-0.729-0.328-0.729-0.729v-2.193c0-0.398,0.328-0.73,0.729-0.73h2.189 c0.402,0,0.73,0.33,0.73,0.73v2.193c0,0.398-0.328,0.729-0.73,0.729H214.254z" fill="url(#SVGID_38_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_39_" x1="-668.9922" x2="-668.9922" y1="-945.4766" y2="-954.3237">
+<stop offset="0" style="stop-color:#B6BBBD"/>
+<stop offset="1" style="stop-color:#F0FBFF"/>
+</linearGradient>
+<path d="M203.293,124.445c-1.549,0-2.813-1.264-2.813-2.814v-3.15 c0-1.553,1.262-2.814,2.813-2.814h0.846c1.551,0,2.812,1.264,2.812,2.814v3.15c0,1.555-1.263,2.814-2.812,2.814H203.293 L203.293,124.445z" fill="url(#SVGID_39_)" fill-opacity="0.4"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_40_" x1="-668.9922" x2="-668.9922" y1="-946.2188" y2="-953.5802">
+<stop offset="0" style="stop-color:#231F20"/>
+<stop offset="1" style="stop-color:#6D6E70"/>
+</linearGradient>
+<path d="M203.293,123.717c-1.146,0-2.082-0.934-2.082-2.082v-3.15 c0-1.146,0.936-2.082,2.082-2.082h0.846c1.146,0,2.08,0.936,2.08,2.084v3.15c0,1.148-0.936,2.082-2.08,2.082L203.293,123.717 L203.293,123.717z" fill="url(#SVGID_40_)" fill-opacity="0.7"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_41_" x1="-668.9941" x2="-668.9941" y1="-946.959" y2="-952.8542">
+<stop offset="0" style="stop-color:#C6FF45"/>
+<stop offset="0.73" style="stop-color:#66A00E"/>
+<stop offset="1" style="stop-color:#387300"/>
+</linearGradient>
+<path d="M205.486,121.635c0,0.744-0.604,1.355-1.352,1.355h-0.846c-0.74,0-1.35-0.607-1.35-1.355v-3.15 c0-0.742,0.605-1.354,1.35-1.354h0.846c0.746,0,1.352,0.604,1.352,1.354V121.635z" fill="url(#SVGID_41_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_42_" x1="-646.123" x2="-646.123" y1="-945.4766" y2="-954.3237">
+<stop offset="0" style="stop-color:#B6BBBD"/>
+<stop offset="1" style="stop-color:#F0FBFF"/>
+</linearGradient>
+<path d="M226.162,124.445c-1.551,0-2.814-1.264-2.814-2.814v-3.15 c0-1.553,1.266-2.814,2.814-2.814h0.846c1.549,0,2.813,1.264,2.813,2.814v3.15c0,1.555-1.266,2.814-2.813,2.814H226.162z" fill="url(#SVGID_42_)" fill-opacity="0.4"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_43_" x1="-646.123" x2="-646.123" y1="-946.2188" y2="-953.5803">
+<stop offset="0" style="stop-color:#231F20"/>
+<stop offset="1" style="stop-color:#6D6E70"/>
+</linearGradient>
+<path d="M226.162,123.717c-1.146,0-2.08-0.934-2.08-2.082v-3.15 c0-1.146,0.934-2.082,2.08-2.082h0.846c1.146,0,2.078,0.936,2.078,2.082v3.15c0,1.148-0.934,2.082-2.078,2.082H226.162z" fill="url(#SVGID_43_)" fill-opacity="0.7"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_44_" x1="-646.124" x2="-646.124" y1="-946.96" y2="-952.855">
+<stop offset="0" style="stop-color:#FFC142"/>
+<stop offset="0.75" style="stop-color:#CF4E18"/>
+<stop offset="1" style="stop-color:#B52100"/>
+</linearGradient>
+<path d="M228.355,121.635c0,0.744-0.604,1.355-1.35,1.355h-0.846c-0.746,0-1.352-0.607-1.352-1.355v-3.15 c0-0.744,0.605-1.354,1.352-1.354h0.846c0.742,0,1.352,0.604,1.352,1.354L228.355,121.635L228.355,121.635z" fill="url(#SVGID_44_)"/>
+<rect fill="none" height="71.707" width="71.622" x="171.249" y="66.645"/>
+<polygon fill-opacity="0.1" points="200.236,109.592 190.482,109.594 190.486,98.289 200.236,98.289 200.236,90.972 213.938,104.305 200.236,116.773 "/>
+<polygon fill-opacity="0.2" points="200.965,108.861 191.215,108.863 191.217,99.024 200.965,99.022 200.965,92.705 212.887,104.301 200.967,115.053 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_45_" x1="-670.8164" x2="-670.8164" y1="-923.6294" y2="-942.5151">
+<stop offset="0" style="stop-color:#C6FF45"/>
+<stop offset="0.73" style="stop-color:#66A00E"/>
+<stop offset="1" style="stop-color:#387300"/>
+</linearGradient>
+<polygon fill="url(#SVGID_45_)" points="201.697,113.338 211.834,103.568 201.697,93.702 201.697,99.02 191.948,99.022 191.947,108.133 201.697,108.129 "/>
+<polygon fill="#FFFFFF" points="211.834,103.568 201.697,93.702 201.697,94.435 211.457,103.932 "/>
+<polygon fill="#FFFFFF" points="191.948,99.754 201.697,99.749 201.697,99.02 191.948,99.022 191.947,108.133 191.947,108.133 "/>
+<rect fill="none" height="71.71" width="71.627" x="284.188" y="66.645"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_46_" x1="-551.9785" x2="-551.9785" y1="-907.2324" y2="-955.5307">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#CCCCCC"/>
+</linearGradient>
+<path d="M341.924,125.182c0,0.074-0.654,0.729-1.467,0.729h-39.463c-0.811,0-1.461-0.654-1.461-1.465V78.348 c0-0.81,0.65-1.463,1.461-1.463h39.467c0.809,0,1.463,0.651,1.463,2.19V125.182L341.924,125.182z" fill="url(#SVGID_46_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_47_" x1="-533.3447" x2="-529.5009" y1="-919.5034" y2="-919.5034">
+<stop offset="0" style="stop-color:#808080"/>
+<stop offset="0.9" style="stop-color:#F0F0F0"/>
+<stop offset="0.91" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M342.739,94.648c0.397-0.201,0.646-0.606,0.646-1.054v-8.329c0-0.439-0.248-0.853-0.646-1.054 l-3.062-1.067v13.012L342.739,94.648z" fill="url(#SVGID_47_)"/>
+<polygon fill="#231F20" fill-opacity="0.35" points="339.6,93.456 342.578,94.619 340.268,95.749 339.6,95.729 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_48_" x1="-529.644" x2="-533.6714" y1="-931.7222" y2="-931.7222">
+<stop offset="0" style="stop-color:#AFE865"/>
+<stop offset="0.05" style="stop-color:#AFE865"/>
+<stop offset="0.06" style="stop-color:#68B339"/>
+<stop offset="1" style="stop-color:#136101"/>
+</linearGradient>
+<path d="M342.594,107.084c0.395-0.201,0.645-0.609,0.645-1.055v-8.328c0-0.439-0.249-0.854-0.645-1.056 l-3.383-1.282v13.011L342.594,107.084z" fill="url(#SVGID_48_)"/>
+<polygon fill="#231F20" fill-opacity="0.35" points="338.58,106.084 342.266,107.357 339.652,108.375 338.572,108.348 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_49_" x1="-529.6938" x2="-533.8968" y1="-944.4565" y2="-944.4565">
+<stop offset="0" style="stop-color:#B8D6E9"/>
+<stop offset="0.07" style="stop-color:#5CB2E9"/>
+<stop offset="1" style="stop-color:#005BCC"/>
+</linearGradient>
+<path d="M342.684,120.254c0.395-0.197,0.645-0.604,0.645-1.051v-9.205c0-0.438-0.25-0.854-0.645-1.053 l-3.758-1.285v13.887L342.684,120.254z" fill="url(#SVGID_49_)"/>
+<rect fill="#404041" fill-opacity="0.2" height="49.025" width="16.811" x="323.65" y="76.887"/>
+<rect fill="#404041" fill-opacity="0.2" height="49.025" width="16.811" x="322.92" y="76.887"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_50_" x1="-554.9043" x2="-554.9043" y1="-905.9194" y2="-955.7691">
+<stop offset="0" style="stop-color:#B2F56E"/>
+<stop offset="0.53" style="stop-color:#439020"/>
+<stop offset="1" style="stop-color:#0D4D07"/>
+</linearGradient>
+<path d="M338.996,125.182c0,0.811-0.65,1.467-1.463,1.467h-39.465c-0.807,0-1.461-0.656-1.461-1.467V77.621 c0-0.812,0.654-1.464,1.461-1.464h39.467c0.813,0,1.463,0.652,1.463,1.464L338.996,125.182L338.996,125.182z" fill="url(#SVGID_50_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_51_" x1="-552.3457" x2="-552.3457" y1="-905.7646" y2="-969.5499">
+<stop offset="0" style="stop-color:#CDEDBD"/>
+<stop offset="0.99" style="stop-color:#139900"/>
+<stop offset="1" style="stop-color:#139900"/>
+</linearGradient>
+<path d="M337.533,76.887c0.402,0,0.73,0.329,0.73,0.729v47.561c0,0.402-0.328,0.729-0.73,0.729h-35.078 V76.883L337.533,76.887 M337.533,76.157h-35.807v50.49h35.807c0.813,0,1.463-0.654,1.463-1.467V77.621 C338.996,76.809,338.346,76.157,337.533,76.157L337.533,76.157z" fill="url(#SVGID_51_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_52_" x1="-573.5391" x2="-573.5391" y1="-905.7646" y2="-957.2268">
+<stop offset="0" style="stop-color:#F2F2F2"/>
+<stop offset="1" style="stop-color:#A0A0A0"/>
+</linearGradient>
+<path d="M298.07,76.157c-0.807,0-1.461,0.652-1.461,1.464v47.561c0,0.811,0.654,1.465,1.461,1.465h3.656 v-50.49H298.07z" fill="url(#SVGID_52_)"/>
+<rect fill="#737373" height="50.49" width="0.729" x="300.996" y="76.157"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_53_" x1="-572.0771" x2="-572.0771" y1="-905.7646" y2="-957.2278">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#E6E6E6"/>
+</linearGradient>
+<rect fill="url(#SVGID_53_)" height="50.49" width="0.729" x="300.266" y="76.157"/>
+<rect fill="none" height="71.707" width="71.623" x="284.188" y="66.645"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_54_" x1="-551.9897" x2="-551.9897" y1="-923.4507" y2="-946.9707">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#CFCFCF"/>
+</linearGradient>
+<path d="M328.385,107.891c-0.969-0.504-3.568-2.188-3.66-2.287l0,0c-0.543-0.625-0.521-2-0.25-2.598l0,0 c0.02-0.042,0.039-0.08,0.063-0.113c0.064-0.105,0.127-0.21,0.189-0.315l0,0c0.475-0.77,0.867-1.542,1.189-2.268 c0.588,0.203,1.344-0.342,1.719-1.271c0.387-0.956,0.221-1.949-0.375-2.22c-0.033-0.018-0.07-0.02-0.105-0.025v-0.002 c0.074-0.305,0.107-0.479,0.107-0.479c1.023-4.612-1.209-8.276-6.626-8.452c-2.228,0-3.3,1.017-4.124,2.068 c-1.346,0.209-3.477,1.441-1.973,6.843c-0.061,0.014-0.111,0.021-0.168,0.043c-0.604,0.257-0.789,1.24-0.422,2.2 c0.367,0.962,1.148,1.538,1.752,1.284c0.037-0.018,0.066-0.043,0.104-0.063c0.33,0.743,0.734,1.537,1.229,2.34h-0.002 c0.016,0.023,0.031,0.055,0.051,0.08c0.012,0.02,0.02,0.029,0.025,0.05c0,0.002,0,0.002,0.002,0.004 c0.035,0.061,0.07,0.117,0.105,0.178c0.309,0.478,0.387,1.875-0.098,2.589c-0.111,0.166-2.959,1.82-4.057,2.406 c-1.256,0.666-3.307,2.201-3.307,5.654h21.927C331.688,110.09,329.352,108.396,328.385,107.891z M317.625,92.878 c0,0-0.018-0.004-0.02-0.004C317.611,92.875,317.617,92.878,317.625,92.878z M317.715,92.898c-0.006-0.002-0.014-0.004-0.018-0.006 C317.701,92.894,317.709,92.896,317.715,92.898z M317.484,92.896c-0.006,0.006-0.014,0.008-0.021,0.01 C317.471,92.9,317.479,92.898,317.484,92.896z M317.547,92.876c0,0-0.016,0-0.021,0.002 C317.531,92.876,317.539,92.876,317.547,92.876z M317.432,92.941c-0.002,0.006-0.012,0.008-0.016,0.016 C317.42,92.949,317.428,92.943,317.432,92.941z M314.555,96.777c0.012-0.014,0.021-0.021,0.035-0.031 c0.002,0.008,0.004,0.016,0.006,0.021C314.578,96.771,314.564,96.777,314.555,96.777z" fill="url(#SVGID_54_)"/>
+<rect fill="#DEFEAC" fill-opacity="0.5" height="0.729" width="21.923" x="309.766" y="113.549"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_55_" x1="-430.3711" x2="-430.3711" y1="-912.6265" y2="-957.54">
+<stop offset="0" style="stop-color:#4FB7EB"/>
+<stop offset="1" style="stop-color:#1755B3"/>
+</linearGradient>
+<polygon fill="url(#SVGID_55_)" points="451.775,82.773 459.246,83.795 459.246,125.564 446.09,127.367 432.935,124.748 425.426,126.162 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_56_" x1="-433.1948" x2="-433.1948" y1="-925.855" y2="-957.5087">
+<stop offset="0" style="stop-color:#8EFFF5"/>
+<stop offset="1" style="stop-color:#1D9DD8"/>
+</linearGradient>
+<polygon fill="url(#SVGID_56_)" points="446.09,94.921 446.09,127.367 432.935,124.748 432.935,113.984 "/>
+<polygon fill-opacity="0.25" points="452.648,82.902 446.09,96.773 432.935,115.855 426.492,125.98 423.422,126.551 450.332,82.579 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_57_" x1="-445.3931" x2="-445.3931" y1="-912.2295" y2="-957.2112">
+<stop offset="0" style="stop-color:#FEEFA7"/>
+<stop offset="1" style="stop-color:#FFC501"/>
+</linearGradient>
+<polygon fill="url(#SVGID_57_)" points="448,84.658 445.99,95.495 432.935,114.447 425.473,126.17 419.05,127.367 406.628,125.025 406.628,82.896 418.685,81.993 432.935,83.973 446.09,81.993 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_58_" x1="-446.7148" x2="-446.7148" y1="-955.374" y2="-913.3823">
+<stop offset="0" style="stop-color:#E69400"/>
+<stop offset="1" style="stop-color:#F9DE4F"/>
+</linearGradient>
+<polygon fill="url(#SVGID_58_)" points="432.935,83.973 432.935,114.447 425.473,126.17 419.05,127.367 419.05,82.045 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_59_" x1="-423.7646" x2="-423.7646" y1="-924.9121" y2="-912.5868">
+<stop offset="0" style="stop-color:#E69400"/>
+<stop offset="1" style="stop-color:#F9DE4F"/>
+</linearGradient>
+<polygon fill="url(#SVGID_59_)" points="446.09,81.993 446.09,95.344 451.795,82.773 "/>
+<path d="M419.78,127.227l11.182-16.789l-4.71-2.346l-7.144,9.893l-6.978,8.066l-2.23-0.412 l9.153-10.789l5.374-7.65l-5.63-2.773l-12.18-2.499v-1.287l12.645,2.616l5.903,2.9l6.655-9.354l-12.977-6.485l-12.229-2.148v-1.99 l12.623,2.115l13.592,6.794l3.896-6.627l-3.804-1.338l-5.647-3.908l2.691,0.373l2.972,2.173l4.427,1.614l2.615-4.447l2.563-0.364 l-3.408,5.76l4.86,2.618l2.128-3.374l2.195-5.256l1.232,0.168l-3.453,7.467c0,0-8.451,13.117-13.153,20.162l-11.388,16.799 L419.78,127.227z M431.802,109.459l-4.769-2.428l6.551-9.228l4.387,2.13L431.802,109.459z M434.633,95.979l4.596,2.294l4.099-6.269 l-4.825-2.6L434.633,95.979L434.633,95.979z" fill="#FFFFFF" fill-opacity="0.25"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_60_" x1="-444.7378" x2="-444.7378" y1="-956.7871" y2="-923.8752">
+<stop offset="0" style="stop-color:#FCE28D"/>
+<stop offset="0.8121" style="stop-color:#FEF7DF"/>
+<stop offset="1" style="stop-color:#FEF7DF"/>
+</linearGradient>
+<path d="M448.527,82.323l-2.408,5.777c0,0-1.302,2.063-2.021,3.193l-5.339-2.875l3.434-5.793l-1.74,0.235 l-2.975,4.868l-4.503-1.654l-3.323-2.565l-2.061-0.281l5.362,3.656l4.149,1.462l-4.163,7.088l-13.754-6.868l-12.564-2.126v1.443 l12.277,2.146l13.311,6.653l-0.156,0.271l-6.79,9.543l-6.192-3.025l-12.447-2.556l0.004,0.727l12.41,2.585l5.806,2.857l-5.767,8.098 l-8.864,10.518l1.646,0.311l7.218-8.367l7.087-9.898l5.269,2.6l-11.268,16.82l1.022-0.191l11.767-17.664l13.185-19.873l3.178-6.996 L448.527,82.323z M432.944,107.883l-1.23,1.898l-5.126-2.627l6.429-9.143l0.505-0.667l5,2.496L432.944,107.883z M439.316,98.623 l-5.063-2.527l4.145-7.047l5.313,2.858L439.316,98.623z" fill="url(#SVGID_60_)"/>
+<polygon fill="#FFFFFF" points="440.967,120.436 446.1,109.609 450.711,120.436 446.1,117.641 "/>
+<polygon fill-opacity="0.4" points="450.711,120.436 446.1,109.609 446.1,117.641 "/>
+<path d="M424.105,80.51c-1.02,0-1.842,0.813-1.842,1.813c0,0.993,0.822,1.809,1.842,1.809 c1.016,0,1.84-0.815,1.84-1.809C425.947,81.32,425.121,80.51,424.105,80.51z" fill="none"/>
+<rect fill="none" height="71.71" width="71.628" x="397.123" y="66.645"/>
+<path d="M424.217,107.9l5.246-9.09l9.076-5.251l-9.076-5.246l-2.563-5.179l-4.963-0.69l-2.962,5.863 l-9.079,5.246l9.081,5.251L424.217,107.9z M426.553,88.585h2.637v2.635h-2.637V88.585z M426.553,95.901h2.637v2.636h-2.637V95.901z M419.251,88.585h2.632v2.635h-2.632V88.585z M419.251,95.901h2.632v2.636h-2.632V95.901z" fill-opacity="0.25"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_61_" x1="-448.4883" x2="-448.4883" y1="-910.2275" y2="-935.7228">
+<stop offset="0" style="stop-color:#DAFF8C"/>
+<stop offset="0.1879" style="stop-color:#DAFF8C"/>
+<stop offset="1" style="stop-color:#77C949"/>
+</linearGradient>
+<polygon fill="url(#SVGID_61_)" points="437.082,92.824 429.92,88.687 429.92,91.22 425.822,91.22 425.822,87.121 428.354,87.121 424.217,79.952 420.083,87.121 422.611,87.121 422.611,91.22 418.519,91.22 418.519,88.687 411.355,92.824 418.519,96.968 418.519,94.437 422.611,94.437 422.611,98.533 420.083,98.533 424.217,105.705 428.354,98.533 425.822,98.533 425.822,94.437 429.92,94.437 429.92,96.968 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_62_" x1="-448.4883" x2="-448.4883" y1="-911.4136" y2="-934.3834">
+<stop offset="0" style="stop-color:#AEE737"/>
+<stop offset="0.7273" style="stop-color:#66A00E"/>
+<stop offset="1" style="stop-color:#387300"/>
+</linearGradient>
+<polygon fill="url(#SVGID_62_)" points="421.348,99.264 423.342,99.264 423.342,93.702 417.791,93.702 417.791,95.7 412.818,92.824 417.791,89.954 417.791,91.95 423.342,91.95 423.342,86.391 421.348,86.391 424.217,81.414 427.088,86.391 425.094,86.391 425.094,91.95 430.647,91.95 430.647,89.954 435.619,92.824 430.647,95.7 430.647,93.702 425.094,93.702 425.094,99.264 427.088,99.264 424.217,104.24 "/>
+<path d="M424.217,97.161c-1.979,0-3.597-1.613-3.597-3.605c0-1.984,1.61-3.604,3.597-3.604 s3.604,1.615,3.604,3.604C427.816,95.545,426.203,97.161,424.217,97.161L424.217,97.161z" fill-opacity="0.25"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_63_" x1="-448.4893" x2="-448.4893" y1="-919.8521" y2="-925.7917">
+<stop offset="0" style="stop-color:#DAFF8C"/>
+<stop offset="0.1879" style="stop-color:#DAFF8C"/>
+<stop offset="1" style="stop-color:#77C949"/>
+</linearGradient>
+<circle cx="424.217" cy="92.911" fill="url(#SVGID_63_)" r="2.953"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -829.8535)" gradientUnits="userSpaceOnUse" id="SVGID_64_" x1="-448.4873" x2="-448.4873" y1="-920.4897" y2="-925.13">
+<stop offset="0" style="stop-color:#AEE737"/>
+<stop offset="0.7273" style="stop-color:#66A00E"/>
+<stop offset="1" style="stop-color:#387300"/>
+</linearGradient>
+<path d="M424.217,95.215c-1.27,0-2.299-1.034-2.299-2.308c0-1.272,1.029-2.307,2.299-2.307 c1.271,0,2.305,1.032,2.305,2.307C426.518,94.181,425.488,95.215,424.217,95.215L424.217,95.215z" fill="url(#SVGID_64_)"/>
+<rect fill="none" height="35.856" width="35.813" x="432.935" y="102.5"/>
+<rect fill="none" height="35.854" width="35.811" x="432.935" y="102.5"/>
+<path d="M451.018,115.621c0.584,0,1.055-0.145,1.408-0.434c0.354-0.291,0.529-0.688,0.529-1.197 c0-0.49-0.182-0.889-0.547-1.184c-0.363-0.295-0.826-0.445-1.391-0.445c-0.594,0-1.063,0.146-1.408,0.439 c-0.344,0.293-0.514,0.689-0.514,1.189c0,0.508,0.176,0.906,0.531,1.197C449.973,115.475,450.439,115.621,451.018,115.621z" fill-opacity="0.1"/>
+<path d="M451.018,115.254c0.584,0,1.055-0.143,1.408-0.434c0.354-0.289,0.529-0.686,0.529-1.195 c0-0.492-0.182-0.887-0.547-1.184c-0.363-0.297-0.826-0.445-1.391-0.445c-0.594,0-1.063,0.146-1.408,0.438 c-0.344,0.295-0.514,0.691-0.514,1.191c0,0.508,0.176,0.906,0.531,1.195C449.973,115.111,450.439,115.254,451.018,115.254z" fill-opacity="0.2"/>
+<linearGradient gradientTransform="matrix(0.0078 0 0 -0.0078 -976.8069 -704.5683)" gradientUnits="userSpaceOnUse" id="SVGID_65_" x1="338.4209" x2="338.4209" y1="-109524.8438" y2="-109576">
+<stop offset="0" style="stop-color:#E5FFB2"/>
+<stop offset="0.39" style="stop-color:#6AAB18"/>
+<stop offset="0.68" style="stop-color:#247307"/>
+<stop offset="1" style="stop-color:#C2FF4A"/>
+</linearGradient>
+<ellipse cx="450.84" cy="120.426" fill="url(#SVGID_65_)" rx="12.791" ry="12.805"/>
+<radialGradient cx="450.8408" cy="120.4268" gradientTransform="matrix(0.0078 0 0 -0.0078 -976.8792 -713.227)" gradientUnits="userSpaceOnUse" id="SVGID_66_" r="12.4316">
+<stop offset="0" style="stop-color:#AFED23"/>
+<stop offset="0.81" style="stop-color:#358C0C"/>
+<stop offset="1" style="stop-color:#67AD1A"/>
+</radialGradient>
+<path d="M450.84,132.865c-6.849,0-12.424-5.578-12.424-12.438s5.573-12.439,12.424-12.439 s12.426,5.578,12.426,12.438C463.264,127.285,457.69,132.865,450.84,132.865L450.84,132.865z" fill="url(#SVGID_66_)"/>
+<polygon fill-opacity="0.1" points="448.006,119.137 449.227,119.137 449.227,129.715 452.781,129.715 452.781,117.113 448.006,117.113 "/>
+<polygon fill-opacity="0.2" points="448.006,118.768 449.227,118.768 449.227,129.35 452.781,129.35 452.781,116.744 448.006,116.744 "/>
+<linearGradient gradientTransform="matrix(0.0078 0 0 -0.0078 -976.8069 -704.5683)" gradientUnits="userSpaceOnUse" id="SVGID_67_" x1="340.6816" x2="340.6816" y1="-16408.0059" y2="-16412.7813">
+<stop offset="0" style="stop-color:#F6FDFF"/>
+<stop offset="1" style="stop-color:#ADB3B5"/>
+</linearGradient>
+<polygon fill="url(#SVGID_67_)" points="448.006,118.406 449.227,118.406 449.227,128.984 452.781,128.984 452.781,116.379 448.006,116.379 "/>
+<linearGradient gradientTransform="matrix(0.0078 0 0 -0.0078 -976.8069 -704.5683)" gradientUnits="userSpaceOnUse" id="SVGID_68_" x1="331.4443" x2="331.4443" y1="-16409.0781" y2="-16412.9414">
+<stop offset="0" style="stop-color:#F6FDFF"/>
+<stop offset="1" style="stop-color:#ADB3B5"/>
+</linearGradient>
+<path d="M451.004,115.074c0.586,0,1.055-0.146,1.408-0.436c0.354-0.291,0.529-0.689,0.529-1.195 c0-0.494-0.18-0.889-0.545-1.186c-0.363-0.295-0.828-0.443-1.393-0.443c-0.592,0-1.061,0.145-1.406,0.438 c-0.348,0.291-0.52,0.689-0.52,1.191c0,0.506,0.176,0.904,0.529,1.195C449.961,114.928,450.426,115.074,451.004,115.074z" fill="url(#SVGID_68_)"/>
+<defs>
+<linearGradient gradientTransform="matrix(0 1 -1 0 -887.5 81.5005)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="-71.001" x2="-71.001" y1="-939.4995" y2="-911.578">
+<stop offset="0" style="stop-color:#47DAFA"/>
+<stop offset="1" style="stop-color:#0070FA"/>
+</linearGradient>
+</defs>
+<defs>
+<linearGradient gradientTransform="matrix(0 1 -1 0 -887.5 81.5005)" gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="-71.001" x2="-71.001" y1="-939.4995" y2="-911.578">
+<stop offset="0" style="stop-color:#47DAFA"/>
+<stop offset="1" style="stop-color:#0070FA"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_theme_preview_prt.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,553 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="486px" version="1.1" viewBox="0 0 360 486" width="360px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#FFFFFF" height="486" width="360"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="330" x2="330" y1="19.6665" y2="59.8465">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" height="40" width="60" x="300" y="20"/>
+<rect fill="#AAAAAF" height="1" width="60" x="300" y="59"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="39" width="1" x="300" y="20"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="359,20 359,58 301,58 301,59 360,59 360,20 " stroke-opacity="0.4"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="30" x2="30" y1="19.6665" y2="59.8465">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" height="40" width="60" y="20"/>
+<rect fill="#AAAAAF" height="1" width="60" y="59"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="1,58 1,20 0,20 0,59 59,59 59,58 " stroke-opacity="0.4"/>
+<rect fill-opacity="0.2" height="39" width="1" x="59" y="20"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="179.9995" x2="179.9995" y1="19.6665" y2="59.8465">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_3_)" height="40" width="240" x="60" y="20"/>
+<rect fill="#AAAAAF" height="1" width="240" x="60" y="59"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="39" width="1" x="60" y="20"/>
+<rect fill-opacity="0.2" height="39" width="1" x="299" y="20"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="238" x="61" y="58"/>
+<rect height="20" width="360"/>
+<g>
+<path d="M38,32c1.65,0,2.235,1.112,1.301,2.472l-7.602,11.056c-0.935,1.36-2.464,1.36-3.398,0l-7.602-11.056 C19.765,33.112,20.35,32,22,32H38z" fill="#3C3C3C"/>
+</g>
+<g>
+<path d="M288,32c1.65,0,2.234,1.112,1.301,2.472l-7.602,11.056c-0.934,1.36-2.465,1.36-3.398,0l-7.602-11.056 C269.766,33.112,270.35,32,272,32H288z" fill="#3C3C3C"/>
+</g>
+<linearGradient gradientTransform="matrix(0 -1 1 0 -478.5 -890.5)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="-893.4995" x2="-908.4995" y1="802.499" y2="802.499">
+<stop offset="0" style="stop-color:#92DE2F"/>
+<stop offset="1" style="stop-color:#19B016"/>
+</linearGradient>
+<polygon fill="url(#SVGID_4_)" points="312,7 310,7 310,14 312,14 312,18 338,18 338,3 312,3 "/>
+<rect fill-opacity="0.2" height="8" stroke-opacity="0.2" width="2" x="331" y="6.5"/>
+<polygon fill-opacity="0.2" points="318,6.5 318,9.5 315,9.5 315,11.5 318,11.5 318,14.5 320,14.5 320,11.5 323,11.5 323,9.5 320,9.5 320,6.5 " stroke-opacity="0.2"/>
+<rect fill="none" height="15" width="30" x="309" y="3"/>
+<rect fill="url(#SVGID_5_)" height="3" width="4" x="24" y="9"/>
+<rect fill="url(#SVGID_5_)" height="6" width="4" x="30" y="7.5"/>
+<rect fill="url(#SVGID_7_)" height="9" width="4" x="36" y="6"/>
+<rect fill="url(#SVGID_5_)" height="12" width="4" x="42" y="4.5"/>
+<rect fill="url(#SVGID_7_)" height="15" width="4" x="48" y="3"/>
+<rect fill="none" height="15" width="30" x="23" y="3"/>
+<path d="M13.53,15h1.942v-4.838L19,5.91V5h-9v0.91l3.53,4.252V15L13.53,15z" fill="#FFFFFF"/>
+<path d="M343,16h7V5.176h-2.042V4h-2.992v1.176H343V16z" fill="#FFFFFF"/>
+<g>
+<path d="M330,41.5c0,1.65-1.09,2.204-2.422,1.23l-8.156-5.96c-1.332-0.974-1.332-2.566,0-3.54l8.156-5.96 C328.91,26.296,330,26.85,330,28.5V41.5z" fill="#3C3C3C"/>
+</g>
+<path d="M324.5,35h12c3.85,0,7,3.15,7,7l0,0 c0,3.85-3.15,7-7,7h-15" fill="none" stroke="#3C3C3C" stroke-linecap="round" stroke-width="5"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10_" x1="179.9995" x2="179.9995" y1="60" y2="110">
+<stop offset="0" style="stop-color:#E6E6EB"/>
+<stop offset="1" style="stop-color:#CDCDD2"/>
+</linearGradient>
+<rect fill="url(#SVGID_10_)" height="50" width="360" y="60"/>
+<rect fill="#B4B4B4" height="1" width="360" y="109"/>
+<rect fill="#FFFFFF" fill-opacity="0.9" height="1" stroke-opacity="0.9" width="360" y="60"/>
+<rect fill-opacity="0.6" height="30" stroke-opacity="0.6" width="30" x="12" y="70"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11_" x1="27" x2="27" y1="71.1748" y2="99.1748">
+<stop offset="0" style="stop-color:#4EDEFF"/>
+<stop offset="1" style="stop-color:#048CC6"/>
+</linearGradient>
+<rect fill="url(#SVGID_11_)" height="28" width="28" x="13" y="71"/>
+<polygon fill-opacity="0.2" points="36,83.879 29.99,83.879 29.99,78 25.99,78 25.99,83.879 20,83.879 20,87.879 25.99,87.879 25.99,94 29.99,94 29.99,87.879 36,87.879 " stroke-opacity="0.2"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="28" x="13" y="71"/>
+<rect fill-opacity="0.2" height="1" stroke-opacity="0.2" width="28" x="13" y="98"/>
+<polygon fill="#FFFFFF" points="35,82.879 28.99,82.879 28.99,77 24.99,77 24.99,82.879 19,82.879 19,86.879 24.99,86.879 24.99,93 28.99,93 28.99,86.879 35,86.879 "/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_12_" x1="179.9995" x2="179.9995" y1="110" y2="160">
+<stop offset="0" style="stop-color:#FAFAFA"/>
+<stop offset="0.83" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#EBEBF0"/>
+</linearGradient>
+<rect fill="url(#SVGID_12_)" height="50" width="360" y="110"/>
+<rect fill="#DCDCDC" height="1" width="360" y="159"/>
+<rect fill="#FFFFFF" height="1" width="360" y="158"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_13_" x1="179.9995" x2="179.9995" y1="160" y2="210">
+<stop offset="0" style="stop-color:#FAFAFA"/>
+<stop offset="0.83" style="stop-color:#FAFAFA"/>
+<stop offset="1" style="stop-color:#EBEBF0"/>
+</linearGradient>
+<rect fill="url(#SVGID_13_)" height="50" width="360" y="160"/>
+<rect fill="#DCDCDC" height="1" width="360" y="209"/>
+<rect fill="#FFFFFF" height="1" width="360" y="208"/>
+<rect fill-opacity="0.8" height="23.133" width="30.037" x="12" y="121.044"/>
+<linearGradient gradientTransform="matrix(1 0 0 1 990.3379 -184.3555)" gradientUnits="userSpaceOnUse" id="SVGID_14_" x1="-963.3193" x2="-963.3193" y1="288.9365" y2="329.0609">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#A5A5A5"/>
+</linearGradient>
+<rect fill="url(#SVGID_14_)" height="21.131" width="28.037" x="13" y="122.045"/>
+<rect fill="#FFFFFF" fill-opacity="0.5" height="1.001" width="28.037" x="13" y="122.045"/>
+<rect fill-opacity="0.3" height="1.001" width="28.037" x="13" y="142.175"/>
+<rect fill="#FFFFFF" height="16.795" width="23.703" x="15.166" y="124.213"/>
+<linearGradient gradientTransform="matrix(1 0 0 1 990.3379 -184.3555)" gradientUnits="userSpaceOnUse" id="SVGID_15_" x1="-963.3203" x2="-963.3203" y1="308.4102" y2="327.536">
+<stop offset="0" style="stop-color:#1C1C1C"/>
+<stop offset="0.5" style="stop-color:#636363"/>
+<stop offset="1" style="stop-color:#808080"/>
+</linearGradient>
+<rect fill="url(#SVGID_15_)" height="14.793" width="21.703" x="16.166" y="125.214"/>
+<linearGradient gradientTransform="matrix(1 0 0 1 990.3379 -184.3555)" gradientUnits="userSpaceOnUse" id="SVGID_16_" x1="-963.3213" x2="-963.3213" y1="313.3691" y2="325.6874">
+<stop offset="0" style="stop-color:#C6FF45"/>
+<stop offset="1" style="stop-color:#4B8B00"/>
+</linearGradient>
+<path d="M37.869,134.086c-1.313-2.563-3.679-4.275-6.389-4.275c-3.396,0-6.262,2.688-7.178,6.362 c-0.893-1.84-2.446-3.064-4.228-3.064c-1.581,0-2.991,0.97-3.911,2.481v4.411h21.703L37.869,134.086L37.869,134.086z" fill="url(#SVGID_16_)"/>
+<rect fill-opacity="0.8" height="21.021" width="27.871" x="13.082" y="174.099"/>
+<linearGradient gradientTransform="matrix(1 0 0 1 990.3379 -184.3555)" gradientUnits="userSpaceOnUse" id="SVGID_17_" x1="-963.3203" x2="-963.3203" y1="358.3281" y2="379.7901">
+<stop offset="0" style="stop-color:#FEAB0E"/>
+<stop offset="0.3091" style="stop-color:#FEAB0E"/>
+<stop offset="0.7879" style="stop-color:#FFDA33"/>
+<stop offset="1" style="stop-color:#FFE692"/>
+</linearGradient>
+<rect fill="url(#SVGID_17_)" height="19.02" width="25.871" x="14.082" y="175.1"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="27.016,182.106 14.32,194.119 15.482,194.119 27.016,184.108 38.551,194.119 39.713,194.119 "/>
+<linearGradient gradientTransform="matrix(1 0 0 1 990.3379 -184.3555)" gradientUnits="userSpaceOnUse" id="SVGID_18_" x1="-963.3203" x2="-963.3203" y1="359.7939" y2="398.7026">
+<stop offset="0" style="stop-color:#C9700B"/>
+<stop offset="0.1576" style="stop-color:#C9700B"/>
+<stop offset="0.7333" style="stop-color:#FFDA33"/>
+<stop offset="1" style="stop-color:#FFE692"/>
+</linearGradient>
+<polygon fill="url(#SVGID_18_)" fill-opacity="0.5" points="39.953,175.1 27.152,176.101 14.082,175.1 14.082,175.27 22.898,185.121 14.082,194.055 14.082,194.223 14.221,194.213 23.361,185.562 27.016,189.217 30.672,185.562 39.813,194.213 39.953,194.223 39.953,194.055 31.158,185.121 39.953,175.27 "/>
+<linearGradient gradientTransform="matrix(1 0 0 1 990.3379 -184.3555)" gradientUnits="userSpaceOnUse" id="SVGID_19_" x1="-963.3213" x2="-963.3213" y1="358.9834" y2="376.1277">
+<stop offset="0" style="stop-color:#FFF273"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<polygon fill="url(#SVGID_19_)" points="14.209,175.1 27.016,187.215 39.824,175.1 "/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_20_" x1="60" x2="60" y1="425.5" y2="485.77">
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="0.9" style="stop-color:#3F89A9"/>
+<stop offset="0.9" style="stop-color:#3880A4"/>
+<stop offset="1" style="stop-color:#3278A0"/>
+</linearGradient>
+<rect fill="url(#SVGID_20_)" height="60" width="120" y="426"/>
+<path d="M0,426v60h120v-60H0z M119,485H1v-58h118V485z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_21_" x1="179.9995" x2="179.9995" y1="425.5" y2="485.77">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_21_)" height="60" width="120" x="120" y="426"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_22_" x1="300" x2="300" y1="425.5" y2="485.77">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_22_)" height="60" width="120" x="240" y="426"/>
+<rect fill-opacity="0.1" height="1" stroke-opacity="0.1" width="240" x="120" y="485"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="240" x="120" y="484"/>
+<rect fill="#FFFFFF" fill-opacity="0.9" height="58" stroke-opacity="0.9" width="1" x="120" y="427"/>
+<rect fill="none" height="40" width="40" x="40" y="436"/>
+<g>
+<g>
+<path d="M41.376,456c0.019,10.268,8.353,18.605,18.624,18.624c10.268-0.019,18.607-8.356,18.624-18.624 c-0.017-10.268-8.356-18.607-18.624-18.625C49.729,437.393,41.395,445.732,41.376,456z M49.439,459.484l-0.924,1.229 c0,0-0.086,2.324-0.092,2.423c-0.076,0.225-0.693,0.148-0.932,0.148c-0.807,0.761,0.421,1.424,0.217,1.895 c-0.197,0.457-0.454,0.971-0.773,1.432c-2.256-2.883-4.664-8.228-3.11-14.514c0.196,0.094,0.442,0.332,0.75,0.756 c0.337,0.467,0.313,1.104,0.631,1.394c0.378,0.347,0.784,1.573,0.784,1.573l1.043,1.125l2.408,1.56v0.979H49.439z M72.341,465.007 c-0.702,0.229-0.458-0.546-0.458-0.546s0.629-1.391,0.643-1.501c0.033-0.263,0.863-0.524,0.863-0.524l0.553-0.877 C74.762,461.393,73.805,464.527,72.341,465.007z M66.613,441.048c0.264,0.034,0.184,0.284,0.479,0.284 c0.101,0,0.53-0.111,1.054-0.258c4.179,2.173,7.342,6.029,8.584,10.674c-0.055-0.003-0.088-0.008-0.088-0.008 s-0.1-0.065-0.246-0.16l-0.516-1.021l-0.816-0.066L73.4,449.09c0,0,0.44,1.131,1.172,1.664c0.476,0.033,0.799-0.031,0.822-0.008 c0.521,1.373-0.594,3.061-1.887,3.372c-0.162-0.704-0.306-0.979-0.512-1.58l-2.266-3.081l-0.131,0.324l1.045,1.591 c0,0,0.74,1.241,1.047,1.961c0.588,0.522,0.703,0.739,0.763,1.272c0.207,0.066,0.37,0.078,1.022-0.162 c0.988-0.363,0.424,1.162,0.262,1.588c-0.592,1.445-0.723,1.332-1.655,2.279c-1.44,1.019-0.668,2.793-0.731,4.229 c0,0-1.455,0.979-1.994,1.192c-0.5,0.713-0.01,1.389-0.262,1.406c-0.766,0.25-1.925,1.437-2.123,1.6 c-0.688,0.889-1.113,1.017-1.923,0.945c-2.257-0.638-1.577-2.983-1.678-3.244c-0.276-0.898-1.153-1.029-0.013-2.746 c0.479-0.564,0.045-1.822-0.827-3.043c-0.4-0.563,0.28-1.869,0.229-1.877c-1.462-0.272-1.765-0.93-1.828-1.096 c0,0-2.975,0.594-4.002,0.508c-0.787-0.063-2.488-2.101-2.816-2.854c-0.327-0.755,0.619-3.301,0.654-3.496 c0.033-0.197,2.244-1.732,2.244-1.732l1.504-1.465l-0.9-0.443c0,0,0.186-1.838,1.014-1.373c0.087,0.05,0.555,0.146,1.082,0.1 c0.559-0.352-0.611-0.813-0.484-1.288c0.029-0.112,0.463-0.165,0.026-0.56c-0.696-0.631-0.194-1.09,0.239-1.198 c0.48,0.177,0.785,0.608,0.785,1.198c0,0.592,1.559-0.27,1.654-0.37c-0.695-0.501-1.045-1.294-0.785-1.327 c0.268-0.036,1.422-0.335,1.717-0.633C64.157,440.449,66.348,441.018,66.613,441.048z M57.624,440.73 c0.215-0.104,0.614,0.104,0.89,0.063c0.276-0.041,0.521,0.063,0.521,0.063s-0.491,0.23-0.705,0.271 C58.115,441.169,57.809,440.959,57.624,440.73z M55.486,439.866c1.533-0.454,3.158-0.699,4.836-0.699 c1.305,0,2.576,0.147,3.796,0.427c-1.636,0.352-3.429-0.07-3.429-0.07c-0.164,0.263-0.905,0.125-1.101,0.125 c-0.198,0-1.213,0.838-2.168,0.758c-0.459,0.295-0.864,0.623-1.358,0.46c-0.492-0.164-1.436,0.653-1.795,0.688 c-0.49,0.154-0.725,0.118-0.793-0.025C54.6,440.841,55.059,440.279,55.486,439.866z M52.275,441.191l-0.95,1.119 c0,0-0.196,0.588-0.306,0.74c-0.108,0.152-0.653,0.742-0.653,0.742l-0.457-0.195l-0.066-0.24c0,0-0.502,0.152-0.502,0.457 c0,0.306-1.938,1.574-2.522,2.037C48.281,443.936,50.143,442.342,52.275,441.191z" fill="#FFFFFF"/>
+<path d="M64.55,442.609c0.171,0.152,0.739,0.465,0.825-0.047c0.085-0.514-0.452-1.293-0.452-1.293 s-0.54,0.131-0.403,0.48S64.381,442.459,64.55,442.609z" fill="#FFFFFF"/>
+<path d="M68.768,445.863c0,0,0.515-0.094,1.015,0.1c1.418,0.286,0.977-0.234,0.304-0.6 c-0.238-0.129-0.583-0.316-0.4-0.559c-0.158-0.255-0.5-0.074-0.742,0.191c-0.243,0.266-0.771-0.121-0.932,0.37 C67.85,445.855,68.652,446.085,68.768,445.863z" fill="#FFFFFF"/>
+<path d="M62.225,445.034c-0.348,0.296-1.313,1.204-1.313,1.204l-1.345,0.479l1.213,0.189l1.244-0.368l1.951,0.129 l0.318,0.919c0,0,2.137,1.059,2.342,0.844c0.316-0.326,0.486-0.795,0.963-0.469c0.478,0.328,1.252,0.329,1.812,0.329 c0.231,0.067,1.053,0.61,1.03-0.739c-0.362-0.304-2.353-0.177-2.916-1.48l-0.285,0.041c0,0,0.189,0.92-0.041,0.902 c-0.536-0.039-1.096-1-1.096-1l-0.104-0.408l-1.4-0.793c0,0-0.008,0.233,1.084,1.19c0,0-0.369,0.631-0.857,0.664 c0.123-0.164,0.216-0.655,0.216-0.655l-1.345-1.076C63.693,444.936,62.52,444.784,62.225,445.034z" fill="#FFFFFF"/>
+<path d="M72.08,446.314c0.381,0.356,0.218,0.623,0.471,0.848c0.252,0.225,0.842,0.25,0.463-0.262 c-0.459-0.616-0.938-1.096-1.045-1.248c-0.203-0.283,0.115-0.879-0.42-0.625C71.234,445.586,71.534,445.807,72.08,446.314z" fill="#FFFFFF"/>
+</g>
+</g>
+<path d="M196.674,467.354l-5.824-5.83c1.336-2.258,2.119-4.891,2.119-7.705c0-8.369-6.787-15.152-15.152-15.152 c-8.367,0-15.15,6.783-15.15,15.15c0,8.365,6.783,15.152,15.15,15.152c3.111,0,5.998-0.939,8.404-2.549l5.693,5.693 c0.875,0.875,2.297,0.875,3.172,0l1.588-1.588C197.553,469.65,197.553,468.23,196.674,467.354z M177.816,465.182 c-6.273,0-11.361-5.088-11.361-11.363s5.088-11.363,11.361-11.363c6.275,0,11.363,5.088,11.363,11.363 C189.182,460.092,184.092,465.182,177.816,465.182z M179.334,447.334h-2.668v5.332h-5.332v2.668h5.332v5.332h2.668v-5.332h5.332 v-2.668h-5.332V447.334z" fill="#3C3C3C"/>
+<rect fill="none" height="40" width="40" x="160" y="436"/>
+<path d="M316.674,467.354l-5.824-5.83c1.336-2.258,2.119-4.891,2.119-7.705c0-8.369-6.787-15.152-15.152-15.152 c-8.367,0-15.15,6.783-15.15,15.15c0,8.365,6.783,15.152,15.15,15.152c3.111,0,5.998-0.939,8.404-2.549l5.693,5.693 c0.875,0.875,2.297,0.875,3.172,0l1.588-1.588C317.553,469.65,317.553,468.23,316.674,467.354z M297.816,465.182 c-6.273,0-11.361-5.088-11.361-11.363s5.088-11.363,11.361-11.363c6.275,0,11.363,5.088,11.363,11.363 C309.182,460.092,304.092,465.182,297.816,465.182z M296.666,452.666h-5.332v2.668h5.332h2.668h5.332v-2.668h-5.332H296.666z" fill="#3C3C3C"/>
+<rect fill="none" height="40" width="40" x="280" y="436"/>
+<rect fill="#FFFFFF" fill-opacity="0.9" height="58" stroke-opacity="0.9" width="1" x="240" y="427"/>
+<rect fill="#9696A0" fill-opacity="0.5" height="58" stroke-opacity="0.5" width="1" x="239" y="427"/>
+<path d="M1,427v3v55h118v-55v-3H1z M118,484H2v-54h116V484z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<rect fill="none" height="71.71" width="71.63" x="31.249" y="304.29"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_23_" x1="-818.8013" x2="-818.8013" y1="-861.4771" y2="-906.4761">
+<stop offset="0" style="stop-color:#D1D7D9"/>
+<stop offset="0.07" style="stop-color:#D1D7D9"/>
+<stop offset="0.26" style="stop-color:#BDC2C4"/>
+<stop offset="0.66" style="stop-color:#949DA1"/>
+<stop offset="0.96" style="stop-color:#ADB3B5"/>
+<stop offset="1" style="stop-color:#595C5E"/>
+</linearGradient>
+<path d="M68.521,355.508c0,1.617-1.313,2.928-2.923,2.928H42.21c-1.612,0-2.923-1.314-2.923-2.928v-39.515 c0-1.615,1.313-2.927,2.923-2.927H65.6c1.61,0,2.925,1.313,2.925,2.927L68.521,355.508L68.521,355.508z" fill="url(#SVGID_23_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_24_" x1="-818.8022" x2="-818.8022" y1="-860.9219" y2="-905.2533">
+<stop offset="0" style="stop-color:#D5D7DB"/>
+<stop offset="0.67" style="stop-color:#85878A"/>
+<stop offset="1" style="stop-color:#808184"/>
+</linearGradient>
+<path d="M65.596,313.068H42.21c-1.612,0-2.923,1.315-2.923,2.927v39.515c0,0.776,0.313,1.484,0.811,2.013 c-0.045-0.177-0.078-0.356-0.078-0.55v-1.463v-38.049v-1.466c0-1.21,0.98-2.191,2.19-2.191h23.388c1.209,0,2.188,0.981,2.188,2.191 v1.466v38.049v1.463c0,0.189-0.027,0.373-0.076,0.55c0.498-0.522,0.813-1.232,0.813-2.013v-39.515 C68.521,314.38,67.212,313.068,65.596,313.068z" fill="url(#SVGID_24_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_25_" x1="-818.8018" x2="-818.8018" y1="-864.6211" y2="-893.1293">
+<stop offset="0" style="stop-color:#878B8C"/>
+<stop offset="1" style="stop-color:#B1BABD"/>
+</linearGradient>
+<rect fill="url(#SVGID_25_)" fill-opacity="0.6" height="28.539" width="24.85" x="41.48" y="316.727"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_26_" x1="-818.8022" x2="-818.8022" y1="-865.3496" y2="-892.3885">
+<stop offset="0" style="stop-color:#3D3D3D"/>
+<stop offset="1" style="stop-color:#1A1A1A"/>
+</linearGradient>
+<rect fill="url(#SVGID_26_)" height="27.075" width="23.39" x="42.21" y="317.457"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_27_" x1="-818.8022" x2="-818.8022" y1="-866.0811" y2="-891.6562">
+<stop offset="0" style="stop-color:#3BC8EB"/>
+<stop offset="0.39" style="stop-color:#2D9BD2"/>
+<stop offset="0.89" style="stop-color:#1347BA"/>
+<stop offset="1" style="stop-color:#1347BA"/>
+</linearGradient>
+<rect fill="url(#SVGID_27_)" height="25.608" width="21.925" x="42.942" y="318.192"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_28_" x1="-818.8022" x2="-818.8022" y1="-866.6543" y2="-876.9822">
+<stop offset="0" style="stop-color:#85EFFF"/>
+<stop offset="1" style="stop-color:#3BA1D9"/>
+</linearGradient>
+<polygon fill="url(#SVGID_28_)" points="64.867,326.971 42.942,329.9 42.942,318.922 64.867,318.922 "/>
+<rect fill="#9FE4FF" height="0.729" width="21.925" x="42.942" y="318.192"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_29_" x1="-818.4209" x2="-818.4209" y1="-864.6221" y2="-861.6934">
+<stop offset="0" style="stop-color:#CFCFCF"/>
+<stop offset="1" style="stop-color:#808385"/>
+</linearGradient>
+<path d="M51.678,316.727c-0.818,0-1.461-0.534-1.461-1.219v-0.486c0-0.687,0.643-1.22,1.461-1.22h5.216 c0.815,0,1.462,0.533,1.462,1.22v0.486c0,0.687-0.646,1.223-1.462,1.223h-5.216V316.727z" fill="url(#SVGID_29_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_30_" x1="-818.4209" x2="-818.4209" y1="-862.0874" y2="-863.9773">
+<stop offset="0" style="stop-color:#343838"/>
+<stop offset="1" style="stop-color:#7D8182"/>
+</linearGradient>
+<path d="M57.623,315.508c0,0.272-0.322,0.487-0.728,0.487h-5.218c-0.402,0-0.729-0.219-0.729-0.487v-0.486 c0-0.271,0.326-0.485,0.729-0.485h5.218c0.399,0,0.728,0.222,0.728,0.485V315.508z" fill="url(#SVGID_30_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_31_" x1="-818.8018" x2="-818.8018" y1="-893.8818" y2="-904.027">
+<stop offset="0" style="stop-color:#878B8C"/>
+<stop offset="1" style="stop-color:#B1BABD"/>
+</linearGradient>
+<path d="M51.629,356.239c-1.564,0-2.84-1.265-2.84-2.815v-4.616 c0-1.55,1.271-2.813,2.84-2.813h4.554c1.563,0,2.839,1.264,2.839,2.813v4.616c0,1.553-1.273,2.815-2.841,2.815H51.629 L51.629,356.239z" fill="url(#SVGID_31_)" fill-opacity="0.6"/>
+<path d="M51.623,355.508c-1.16,0-2.104-0.938-2.104-2.082v-4.614c0-1.147,0.941-2.08,2.104-2.08 h4.562c1.159,0,2.104,0.937,2.104,2.08v4.614c0,1.146-0.941,2.082-2.104,2.082H51.623L51.623,355.508z" fill="#020202" fill-opacity="0.5"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_32_" x1="-818.8037" x2="-818.8037" y1="-895.2803" y2="-902.6409">
+<stop offset="0" style="stop-color:#D1D7D9"/>
+<stop offset="0.07" style="stop-color:#D1D7D9"/>
+<stop offset="0.26" style="stop-color:#BDC2C4"/>
+<stop offset="0.66" style="stop-color:#949DA1"/>
+<stop offset="0.96" style="stop-color:#ADB3B5"/>
+<stop offset="1" style="stop-color:#595C5E"/>
+</linearGradient>
+<path d="M57.557,353.426c0,0.745-0.612,1.352-1.366,1.352h-4.571c-0.756,0-1.369-0.606-1.369-1.352v-4.616 c0-0.742,0.613-1.351,1.369-1.351h4.571c0.754,0,1.366,0.604,1.366,1.351V353.426z" fill="url(#SVGID_32_)"/>
+<path d="M53.174,353.313c-0.81,0-1.465-0.653-1.465-1.462v-1.465 c0-0.812,0.654-1.464,1.465-1.464h1.46c0.807,0,1.463,0.652,1.463,1.464v1.465c0,0.809-0.654,1.462-1.463,1.462H53.174z" fill="#020202" fill-opacity="0.5"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_33_" x1="-818.8042" x2="-818.8042" y1="-897.502" y2="-900.4408">
+<stop offset="0" style="stop-color:#A6A8AB"/>
+<stop offset="0.7" style="stop-color:#58595B"/>
+<stop offset="1" style="stop-color:#808184"/>
+</linearGradient>
+<path d="M53.174,352.577c-0.404,0-0.73-0.326-0.73-0.729v-1.465c0-0.398,0.328-0.729,0.73-0.729h1.46 c0.4,0,0.729,0.329,0.729,0.729v1.465c0,0.4-0.328,0.729-0.729,0.729H53.174z" fill="url(#SVGID_33_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_34_" x1="-828.3027" x2="-828.3027" y1="-894.5508" y2="-902.6424">
+<stop offset="0" style="stop-color:#878B8C"/>
+<stop offset="1" style="stop-color:#B1BABD"/>
+</linearGradient>
+<path d="M44.405,354.777c-1.611,0-2.925-1.264-2.925-2.817v-2.421 c0-1.55,1.313-2.813,2.925-2.813l0,0c1.61,0,2.923,1.264,2.923,2.813v2.421C47.328,353.514,46.014,354.777,44.405,354.777 L44.405,354.777z" fill="url(#SVGID_34_)" fill-opacity="0.6"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_35_" x1="-828.3008" x2="-828.3008" y1="-895.2793" y2="-901.9127">
+<stop offset="0" style="stop-color:#231F20"/>
+<stop offset="1" style="stop-color:#6D6E70"/>
+</linearGradient>
+<path d="M44.405,354.042c-1.193,0-2.162-0.933-2.162-2.082v-2.421 c0-1.147,0.969-2.08,2.162-2.08l0,0c1.192,0,2.163,0.933,2.163,2.084v2.421C46.566,353.111,45.598,354.042,44.405,354.042 L44.405,354.042z" fill="url(#SVGID_35_)" fill-opacity="0.7"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_36_" x1="-828.3032" x2="-828.3032" y1="-896.0176" y2="-901.1686">
+<stop offset="0" style="stop-color:#C6FF45"/>
+<stop offset="0.73" style="stop-color:#66A00E"/>
+<stop offset="1" style="stop-color:#387300"/>
+</linearGradient>
+<path d="M45.805,351.96c0,0.748-0.627,1.353-1.399,1.353l0,0c-0.775,0-1.402-0.604-1.402-1.353v-2.421 c0-0.743,0.627-1.351,1.402-1.351l0,0c0.772,0,1.399,0.605,1.399,1.354V351.96z" fill="url(#SVGID_36_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_37_" x1="-809.3008" x2="-809.3008" y1="-894.5508" y2="-902.6424">
+<stop offset="0" style="stop-color:#878B8C"/>
+<stop offset="1" style="stop-color:#B1BABD"/>
+</linearGradient>
+<path d="M63.457,354.777c-1.641,0-2.977-1.264-2.977-2.817v-2.421 c0-1.55,1.336-2.813,2.977-2.813h-0.104c1.643,0,2.979,1.264,2.979,2.813v2.421c0,1.554-1.336,2.817-2.977,2.817H63.457 L63.457,354.777z" fill="url(#SVGID_37_)" fill-opacity="0.6"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_38_" x1="-809.2998" x2="-809.2998" y1="-895.2793" y2="-901.9127">
+<stop offset="0" style="stop-color:#231F20"/>
+<stop offset="1" style="stop-color:#6D6E70"/>
+</linearGradient>
+<path d="M63.457,354.042c-1.215,0-2.199-0.933-2.199-2.082v-2.421 c0-1.147,0.984-2.08,2.199-2.08h-0.104c1.217,0,2.203,0.933,2.203,2.08v2.421c0,1.147-0.986,2.082-2.203,2.082H63.457z" fill="url(#SVGID_38_)" fill-opacity="0.7"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_39_" x1="-809.3018" x2="-809.3018" y1="-896.0186" y2="-901.1683">
+<stop offset="0" style="stop-color:#FFC142"/>
+<stop offset="0.75" style="stop-color:#CF4E18"/>
+<stop offset="1" style="stop-color:#B52100"/>
+</linearGradient>
+<path d="M64.781,351.96c0,0.748-0.641,1.353-1.43,1.353h0.105c-0.789,0-1.428-0.604-1.428-1.353v-2.421 c0-0.743,0.639-1.351,1.428-1.351h-0.105c0.789,0,1.43,0.605,1.43,1.351V351.96z" fill="url(#SVGID_39_)"/>
+<rect fill="#020202" fill-opacity="0.2" height="45.363" width="1.46" x="56.829" y="313.068"/>
+<rect fill="#020202" fill-opacity="0.1" height="45.363" width="2.924" x="57.557" y="313.068"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_40_" x1="-797.2446" x2="-797.2446" y1="-860.9258" y2="-913.4673">
+<stop offset="0" style="stop-color:#D1D7D9"/>
+<stop offset="0.07" style="stop-color:#D1D7D9"/>
+<stop offset="0.26" style="stop-color:#BDC2C4"/>
+<stop offset="0.66" style="stop-color:#949DA1"/>
+<stop offset="0.96" style="stop-color:#ADB3B5"/>
+<stop offset="1" style="stop-color:#595C5E"/>
+</linearGradient>
+<path d="M92.636,362.826c0,1.615-1.31,2.929-2.921,2.929H61.211c-1.611,0-2.924-1.313-2.924-2.929v-46.827 c0-1.615,1.313-2.927,2.924-2.927h28.506c1.611,0,2.921,1.315,2.921,2.927L92.636,362.826L92.636,362.826z" fill="url(#SVGID_40_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_41_" x1="-797.2446" x2="-797.2446" y1="-860.9219" y2="-912.5552">
+<stop offset="0" style="stop-color:#E4EBED"/>
+<stop offset="0.07" style="stop-color:#E4EBED"/>
+<stop offset="0.26" style="stop-color:#D6DCDE"/>
+<stop offset="0.66" style="stop-color:#B2BEC2"/>
+<stop offset="1" style="stop-color:#ADB3B5"/>
+</linearGradient>
+<path d="M89.715,313.068H61.211c-1.611,0-2.924,1.315-2.924,2.927v46.827c0,0.778,0.313,1.482,0.813,2.014 c-0.045-0.178-0.078-0.355-0.078-0.549v-1.465v-45.361v-1.466c0-1.21,0.98-2.191,2.189-2.191h28.504 c1.209,0,2.188,0.981,2.188,2.191v1.466v45.361v1.465c0,0.188-0.031,0.373-0.076,0.549c0.498-0.523,0.811-1.229,0.811-2.014v-46.827 C92.636,314.38,91.328,313.068,89.715,313.068z" fill="url(#SVGID_41_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_42_" x1="-797.2441" x2="-797.2441" y1="-864.6318" y2="-899.7132">
+<stop offset="0" style="stop-color:#B6BBBD"/>
+<stop offset="1" style="stop-color:#F0FBFF"/>
+</linearGradient>
+<rect fill="url(#SVGID_42_)" fill-opacity="0.6" height="35.124" width="29.965" x="60.48" y="316.727"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_43_" x1="-797.2432" x2="-797.2432" y1="-865.3613" y2="-898.9704">
+<stop offset="0" style="stop-color:#6E6E6E"/>
+<stop offset="1" style="stop-color:#333333"/>
+</linearGradient>
+<rect fill="url(#SVGID_43_)" height="33.658" width="28.506" x="61.211" y="317.457"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_44_" x1="-797.2432" x2="-797.2432" y1="-866.0928" y2="-898.2414">
+<stop offset="0" style="stop-color:#3BC8EB"/>
+<stop offset="0.39" style="stop-color:#2D9BD2"/>
+<stop offset="0.89" style="stop-color:#1347BA"/>
+<stop offset="1" style="stop-color:#1347BA"/>
+</linearGradient>
+<rect fill="url(#SVGID_44_)" height="32.193" width="27.041" x="61.943" y="318.192"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_45_" x1="-797.2432" x2="-797.2432" y1="-866.6309" y2="-879.0234">
+<stop offset="0" style="stop-color:#85EFFF"/>
+<stop offset="1" style="stop-color:#3BA1D9"/>
+</linearGradient>
+<polygon fill="url(#SVGID_45_)" points="88.984,329.167 61.943,332.094 61.943,318.922 88.984,318.922 "/>
+<rect fill="#9FE4FF" height="0.729" width="27.041" x="61.943" y="318.192"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_46_" x1="-797.3574" x2="-797.3574" y1="-900.4639" y2="-911.3424">
+<stop offset="0" style="stop-color:#B6BBBD"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M72.707,363.556c-1.564,0-2.84-1.265-2.84-2.815v-5.352 c0-1.552,1.271-2.815,2.84-2.815h5.285c1.563,0,2.839,1.268,2.839,2.815v5.352c0,1.551-1.271,2.815-2.839,2.815H72.707 L72.707,363.556z" fill="url(#SVGID_46_)" fill-opacity="0.6"/>
+<path d="M72.705,362.826c-1.162,0-2.104-0.935-2.104-2.08v-5.352 c0-1.147,0.941-2.082,2.104-2.082h5.293c1.162,0,2.104,0.938,2.104,2.082v5.352c0,1.147-0.942,2.08-2.104,2.08H72.705z" fill="#020202" fill-opacity="0.5"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_47_" x1="-797.3569" x2="-797.3569" y1="-901.8623" y2="-909.9554">
+<stop offset="0" style="stop-color:#A6A8AB"/>
+<stop offset="0.7" style="stop-color:#58595B"/>
+<stop offset="1" style="stop-color:#808184"/>
+</linearGradient>
+<path d="M79.37,360.742c0,0.741-0.61,1.351-1.364,1.351h-5.307c-0.756,0-1.369-0.604-1.369-1.351v-5.352 c0-0.746,0.613-1.354,1.369-1.354h5.307c0.754,0,1.364,0.606,1.364,1.354V360.742z" fill="url(#SVGID_47_)"/>
+<path d="M74.254,360.631c-0.809,0-1.465-0.657-1.465-1.467v-2.193 c0-0.81,0.656-1.465,1.465-1.465h2.189c0.811,0,1.463,0.655,1.463,1.465v2.193c0,0.81-0.652,1.467-1.463,1.467H74.254z" fill="#020202" fill-opacity="0.2"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_48_" x1="-797.3574" x2="-797.3574" y1="-904.0752" y2="-907.7556">
+<stop offset="0" style="stop-color:#D1D7D9"/>
+<stop offset="0.07" style="stop-color:#D1D7D9"/>
+<stop offset="0.26" style="stop-color:#BDC2C4"/>
+<stop offset="0.66" style="stop-color:#949DA1"/>
+<stop offset="0.96" style="stop-color:#ADB3B5"/>
+<stop offset="1" style="stop-color:#595C5E"/>
+</linearGradient>
+<path d="M74.254,359.897c-0.4,0-0.729-0.328-0.729-0.729v-2.193c0-0.398,0.328-0.729,0.729-0.729h2.189 c0.402,0,0.73,0.329,0.73,0.729v2.193c0,0.399-0.328,0.729-0.73,0.729H74.254z" fill="url(#SVGID_48_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_49_" x1="-808.9922" x2="-808.9922" y1="-901.1221" y2="-909.9692">
+<stop offset="0" style="stop-color:#B6BBBD"/>
+<stop offset="1" style="stop-color:#F0FBFF"/>
+</linearGradient>
+<path d="M63.293,362.091c-1.549,0-2.813-1.265-2.813-2.815v-3.149 c0-1.553,1.262-2.815,2.813-2.815h0.846c1.551,0,2.812,1.265,2.812,2.815v3.149c0,1.555-1.263,2.815-2.812,2.815H63.293 L63.293,362.091z" fill="url(#SVGID_49_)" fill-opacity="0.4"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_50_" x1="-808.9922" x2="-808.9922" y1="-901.8643" y2="-909.2257">
+<stop offset="0" style="stop-color:#231F20"/>
+<stop offset="1" style="stop-color:#6D6E70"/>
+</linearGradient>
+<path d="M63.293,361.362c-1.146,0-2.082-0.935-2.082-2.083v-3.149 c0-1.147,0.936-2.082,2.082-2.082h0.846c1.146,0,2.08,0.935,2.08,2.084v3.149c0,1.148-0.936,2.083-2.08,2.083L63.293,361.362 L63.293,361.362z" fill="url(#SVGID_50_)" fill-opacity="0.7"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_51_" x1="-808.9941" x2="-808.9941" y1="-902.6035" y2="-908.4987">
+<stop offset="0" style="stop-color:#C6FF45"/>
+<stop offset="0.73" style="stop-color:#66A00E"/>
+<stop offset="1" style="stop-color:#387300"/>
+</linearGradient>
+<path d="M65.486,359.279c0,0.745-0.604,1.355-1.352,1.355h-0.846c-0.74,0-1.35-0.606-1.35-1.355v-3.149 c0-0.743,0.605-1.354,1.35-1.354h0.846c0.746,0,1.352,0.604,1.352,1.354V359.279z" fill="url(#SVGID_51_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_52_" x1="-786.123" x2="-786.123" y1="-901.1221" y2="-909.9692">
+<stop offset="0" style="stop-color:#B6BBBD"/>
+<stop offset="1" style="stop-color:#F0FBFF"/>
+</linearGradient>
+<path d="M86.162,362.091c-1.551,0-2.814-1.265-2.814-2.815v-3.149 c0-1.553,1.266-2.815,2.814-2.815h0.846c1.549,0,2.813,1.265,2.813,2.815v3.149c0,1.555-1.266,2.815-2.813,2.815H86.162z" fill="url(#SVGID_52_)" fill-opacity="0.4"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_53_" x1="-786.123" x2="-786.123" y1="-901.8643" y2="-909.2258">
+<stop offset="0" style="stop-color:#231F20"/>
+<stop offset="1" style="stop-color:#6D6E70"/>
+</linearGradient>
+<path d="M86.162,361.362c-1.146,0-2.08-0.935-2.08-2.083v-3.149 c0-1.147,0.934-2.082,2.08-2.082h0.846c1.146,0,2.078,0.935,2.078,2.082v3.149c0,1.148-0.934,2.083-2.078,2.083H86.162z" fill="url(#SVGID_53_)" fill-opacity="0.7"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_54_" x1="-786.124" x2="-786.124" y1="-902.6045" y2="-908.4996">
+<stop offset="0" style="stop-color:#FFC142"/>
+<stop offset="0.75" style="stop-color:#CF4E18"/>
+<stop offset="1" style="stop-color:#B52100"/>
+</linearGradient>
+<path d="M88.355,359.279c0,0.745-0.604,1.355-1.35,1.355H86.16c-0.746,0-1.352-0.606-1.352-1.355v-3.149 c0-0.745,0.605-1.354,1.352-1.354h0.846c0.742,0,1.352,0.604,1.352,1.354L88.355,359.279L88.355,359.279z" fill="url(#SVGID_54_)"/>
+<rect fill="none" height="71.706" width="71.622" x="31.249" y="304.29"/>
+<polygon fill-opacity="0.1" points="60.236,347.236 50.482,347.238 50.486,335.934 60.236,335.934 60.236,328.617 73.938,341.949 60.236,354.419 "/>
+<polygon fill-opacity="0.2" points="60.965,346.507 51.215,346.509 51.217,336.669 60.965,336.667 60.965,330.35 72.887,341.945 60.967,352.698 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_55_" x1="-810.8164" x2="-810.8164" y1="-879.2744" y2="-898.1596">
+<stop offset="0" style="stop-color:#C6FF45"/>
+<stop offset="0.73" style="stop-color:#66A00E"/>
+<stop offset="1" style="stop-color:#387300"/>
+</linearGradient>
+<polygon fill="url(#SVGID_55_)" points="61.697,350.982 71.834,341.214 61.697,331.347 61.697,336.665 51.948,336.667 51.947,345.777 61.697,345.773 "/>
+<polygon fill="#FFFFFF" points="71.834,341.214 61.697,331.347 61.697,332.08 71.457,341.576 "/>
+<polygon fill="#FFFFFF" points="51.948,337.399 61.697,337.394 61.697,336.665 51.948,336.667 51.947,345.777 51.947,345.777 "/>
+<rect fill="none" height="71.71" width="71.627" x="144.188" y="304.29"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_56_" x1="-691.9785" x2="-691.9785" y1="-862.8774" y2="-911.1762">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#CCCCCC"/>
+</linearGradient>
+<path d="M201.924,362.826c0,0.074-0.654,0.729-1.467,0.729h-39.463c-0.811,0-1.461-0.655-1.461-1.465 v-46.098c0-0.81,0.65-1.463,1.461-1.463h39.467c0.809,0,1.463,0.651,1.463,2.19V362.826L201.924,362.826z" fill="url(#SVGID_56_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_57_" x1="-673.3447" x2="-669.5009" y1="-875.1484" y2="-875.1484">
+<stop offset="0" style="stop-color:#808080"/>
+<stop offset="0.9" style="stop-color:#F0F0F0"/>
+<stop offset="0.91" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M202.739,332.293c0.397-0.201,0.646-0.606,0.646-1.054v-8.329c0-0.439-0.248-0.853-0.646-1.054 l-3.062-1.067v13.012L202.739,332.293z" fill="url(#SVGID_57_)"/>
+<polygon fill="#231F20" fill-opacity="0.35" points="199.6,331.101 202.578,332.264 200.268,333.394 199.6,333.374 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_58_" x1="-669.644" x2="-673.6714" y1="-887.3672" y2="-887.3672">
+<stop offset="0" style="stop-color:#AFE865"/>
+<stop offset="0.05" style="stop-color:#AFE865"/>
+<stop offset="0.06" style="stop-color:#68B339"/>
+<stop offset="1" style="stop-color:#136101"/>
+</linearGradient>
+<path d="M202.594,344.729c0.395-0.201,0.645-0.61,0.645-1.056v-8.327c0-0.439-0.249-0.854-0.645-1.056 l-3.383-1.282v13.011L202.594,344.729z" fill="url(#SVGID_58_)"/>
+<polygon fill="#231F20" fill-opacity="0.35" points="198.58,343.729 202.266,345.003 199.652,346.02 198.572,345.992 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_59_" x1="-669.6938" x2="-673.8968" y1="-900.1011" y2="-900.1011">
+<stop offset="0" style="stop-color:#B8D6E9"/>
+<stop offset="0.07" style="stop-color:#5CB2E9"/>
+<stop offset="1" style="stop-color:#005BCC"/>
+</linearGradient>
+<path d="M202.684,357.899c0.395-0.197,0.645-0.604,0.645-1.052v-9.205c0-0.438-0.25-0.853-0.645-1.052 l-3.758-1.286v13.887L202.684,357.899z" fill="url(#SVGID_59_)"/>
+<rect fill="#404041" fill-opacity="0.2" height="49.025" width="16.811" x="183.65" y="314.532"/>
+<rect fill="#404041" fill-opacity="0.2" height="49.025" width="16.811" x="182.92" y="314.532"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_60_" x1="-694.9043" x2="-694.9043" y1="-861.5645" y2="-911.4137">
+<stop offset="0" style="stop-color:#B2F56E"/>
+<stop offset="0.53" style="stop-color:#439020"/>
+<stop offset="1" style="stop-color:#0D4D07"/>
+</linearGradient>
+<path d="M198.996,362.826c0,0.812-0.65,1.467-1.463,1.467h-39.465c-0.807,0-1.461-0.655-1.461-1.467v-47.561 c0-0.812,0.654-1.464,1.461-1.464h39.467c0.813,0,1.463,0.652,1.463,1.464L198.996,362.826L198.996,362.826z" fill="url(#SVGID_60_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_61_" x1="-692.3457" x2="-692.3457" y1="-861.4097" y2="-925.1943">
+<stop offset="0" style="stop-color:#CDEDBD"/>
+<stop offset="0.99" style="stop-color:#139900"/>
+<stop offset="1" style="stop-color:#139900"/>
+</linearGradient>
+<path d="M197.533,314.532c0.402,0,0.73,0.329,0.73,0.729v47.561c0,0.403-0.328,0.729-0.73,0.729h-35.078 v-49.023L197.533,314.532 M197.533,313.802h-35.807v50.489h35.807c0.813,0,1.463-0.653,1.463-1.467v-47.559 C198.996,314.454,198.346,313.802,197.533,313.802L197.533,313.802z" fill="url(#SVGID_61_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_62_" x1="-713.5391" x2="-713.5391" y1="-861.4097" y2="-912.8713">
+<stop offset="0" style="stop-color:#F2F2F2"/>
+<stop offset="1" style="stop-color:#A0A0A0"/>
+</linearGradient>
+<path d="M158.07,313.802c-0.807,0-1.461,0.652-1.461,1.464v47.561c0,0.812,0.654,1.465,1.461,1.465h3.656 v-50.489H158.07z" fill="url(#SVGID_62_)"/>
+<rect fill="#737373" height="50.489" width="0.729" x="160.996" y="313.802"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_63_" x1="-712.0771" x2="-712.0771" y1="-861.4097" y2="-912.8724">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#E6E6E6"/>
+</linearGradient>
+<rect fill="url(#SVGID_63_)" height="50.489" width="0.729" x="160.266" y="313.802"/>
+<rect fill="none" height="71.706" width="71.623" x="144.188" y="304.29"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_64_" x1="-691.9897" x2="-691.9897" y1="-879.0957" y2="-902.6153">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#CFCFCF"/>
+</linearGradient>
+<path d="M188.385,345.535c-0.969-0.503-3.568-2.188-3.66-2.287l0,0c-0.543-0.624-0.521-1.999-0.25-2.597l0,0 c0.02-0.043,0.039-0.08,0.063-0.113c0.064-0.105,0.127-0.21,0.189-0.315l0,0c0.475-0.77,0.867-1.542,1.189-2.268 c0.588,0.203,1.344-0.342,1.719-1.271c0.387-0.956,0.221-1.949-0.375-2.22c-0.033-0.018-0.07-0.02-0.105-0.025v-0.002 c0.074-0.305,0.107-0.479,0.107-0.479c1.023-4.612-1.209-8.276-6.626-8.452c-2.228,0-3.3,1.017-4.124,2.068 c-1.346,0.209-3.477,1.441-1.973,6.843c-0.061,0.014-0.111,0.021-0.168,0.043c-0.604,0.257-0.789,1.24-0.422,2.2 c0.367,0.962,1.148,1.538,1.752,1.284c0.037-0.018,0.066-0.043,0.104-0.063c0.33,0.743,0.734,1.537,1.229,2.34h-0.002 c0.016,0.023,0.031,0.055,0.051,0.08c0.012,0.02,0.02,0.029,0.025,0.05c0,0.002,0,0.002,0.002,0.004 c0.035,0.061,0.07,0.117,0.105,0.178c0.309,0.479,0.387,1.875-0.098,2.59c-0.111,0.165-2.959,1.82-4.057,2.405 c-1.256,0.667-3.307,2.201-3.307,5.654h21.927C191.688,347.734,189.352,346.041,188.385,345.535z M177.625,330.523 c0,0-0.018-0.004-0.02-0.004C177.611,330.52,177.617,330.523,177.625,330.523z M177.715,330.543 c-0.006-0.002-0.014-0.004-0.018-0.006C177.701,330.539,177.709,330.541,177.715,330.543z M177.484,330.541 c-0.006,0.006-0.014,0.008-0.021,0.01C177.471,330.545,177.479,330.543,177.484,330.541z M177.547,330.521c0,0-0.016,0-0.021,0.002 C177.531,330.521,177.539,330.521,177.547,330.521z M177.432,330.586c-0.002,0.006-0.012,0.008-0.016,0.016 C177.42,330.594,177.428,330.588,177.432,330.586z M174.555,334.422c0.012-0.014,0.021-0.021,0.035-0.031 c0.002,0.008,0.004,0.016,0.006,0.021C174.578,334.416,174.564,334.422,174.555,334.422z" fill="url(#SVGID_64_)"/>
+<rect fill="#DEFEAC" fill-opacity="0.5" height="0.729" width="21.923" x="169.766" y="351.193"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_65_" x1="-570.3711" x2="-570.3711" y1="-868.2715" y2="-913.1845">
+<stop offset="0" style="stop-color:#4FB7EB"/>
+<stop offset="1" style="stop-color:#1755B3"/>
+</linearGradient>
+<polygon fill="url(#SVGID_65_)" points="311.775,320.418 319.246,321.44 319.246,363.21 306.09,365.012 292.935,362.393 285.426,363.808 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_66_" x1="-573.1948" x2="-573.1948" y1="-881.5" y2="-913.1532">
+<stop offset="0" style="stop-color:#8EFFF5"/>
+<stop offset="1" style="stop-color:#1D9DD8"/>
+</linearGradient>
+<polygon fill="url(#SVGID_66_)" points="306.09,332.566 306.09,365.012 292.935,362.393 292.935,351.629 "/>
+<polygon fill-opacity="0.25" points="312.648,320.547 306.09,334.418 292.935,353.5 286.492,363.626 283.422,364.195 310.332,320.224 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_67_" x1="-585.3931" x2="-585.3931" y1="-867.8745" y2="-912.8557">
+<stop offset="0" style="stop-color:#FEEFA7"/>
+<stop offset="1" style="stop-color:#FFC501"/>
+</linearGradient>
+<polygon fill="url(#SVGID_67_)" points="308,322.303 305.99,333.14 292.935,352.093 285.473,363.815 279.05,365.012 266.628,362.67 266.628,320.541 278.685,319.638 292.935,321.618 306.09,319.638 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_68_" x1="-586.7148" x2="-586.7148" y1="-911.0186" y2="-869.0273">
+<stop offset="0" style="stop-color:#E69400"/>
+<stop offset="1" style="stop-color:#F9DE4F"/>
+</linearGradient>
+<polygon fill="url(#SVGID_68_)" points="292.935,321.618 292.935,352.093 285.473,363.815 279.05,365.012 279.05,319.69 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_69_" x1="-563.7646" x2="-563.7646" y1="-880.5571" y2="-868.2318">
+<stop offset="0" style="stop-color:#E69400"/>
+<stop offset="1" style="stop-color:#F9DE4F"/>
+</linearGradient>
+<polygon fill="url(#SVGID_69_)" points="306.09,319.638 306.09,332.989 311.795,320.418 "/>
+<path d="M279.78,364.871l11.182-16.788l-4.71-2.347l-7.144,9.894l-6.978,8.066l-2.23-0.412 l9.153-10.789l5.374-7.65l-5.63-2.774l-12.18-2.498v-1.287l12.645,2.616l5.903,2.899l6.655-9.354l-12.977-6.485l-12.229-2.148v-1.99 l12.623,2.115l13.592,6.794l3.896-6.627l-3.804-1.338l-5.647-3.908l2.691,0.373l2.972,2.173l4.427,1.614l2.615-4.447l2.563-0.364 l-3.408,5.76l4.86,2.618l2.128-3.374l2.195-5.256l1.232,0.168l-3.453,7.467c0,0-8.451,13.117-13.153,20.161l-11.388,16.799 L279.78,364.871z M291.802,347.104l-4.769-2.427l6.551-9.229l4.387,2.13L291.802,347.104z M294.633,333.624l4.596,2.294l4.099-6.269 l-4.825-2.6L294.633,333.624L294.633,333.624z" fill="#FFFFFF" fill-opacity="0.25"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_70_" x1="-584.7378" x2="-584.7378" y1="-912.4316" y2="-879.5201">
+<stop offset="0" style="stop-color:#FCE28D"/>
+<stop offset="0.8121" style="stop-color:#FEF7DF"/>
+<stop offset="1" style="stop-color:#FEF7DF"/>
+</linearGradient>
+<path d="M308.527,319.968l-2.408,5.777c0,0-1.302,2.063-2.021,3.193l-5.339-2.875l3.434-5.793l-1.74,0.235 l-2.975,4.868l-4.503-1.654l-3.323-2.565l-2.061-0.281l5.362,3.656l4.149,1.462l-4.163,7.088l-13.754-6.868l-12.564-2.126v1.443 l12.277,2.146l13.311,6.653l-0.156,0.271l-6.79,9.543l-6.192-3.024l-12.447-2.557l0.004,0.727l12.41,2.585l5.806,2.858l-5.767,8.097 l-8.864,10.519l1.646,0.311l7.218-8.368l7.087-9.898l5.269,2.601l-11.268,16.819l1.022-0.191l11.767-17.663l13.185-19.873 l3.178-6.996L308.527,319.968z M292.944,345.527l-1.23,1.898l-5.126-2.626l6.429-9.144l0.505-0.667l5,2.496L292.944,345.527z M299.316,336.268l-5.063-2.527l4.145-7.047l5.313,2.858L299.316,336.268z" fill="url(#SVGID_70_)"/>
+<polygon fill="#FFFFFF" points="300.967,358.081 306.1,347.254 310.711,358.081 306.1,355.285 "/>
+<polygon fill-opacity="0.4" points="310.711,358.081 306.1,347.254 306.1,355.285 "/>
+<path d="M284.105,318.155c-1.02,0-1.842,0.813-1.842,1.813c0,0.993,0.822,1.809,1.842,1.809 c1.016,0,1.84-0.815,1.84-1.809C285.947,318.965,285.121,318.155,284.105,318.155z" fill="none"/>
+<rect fill="none" height="71.71" width="71.628" x="257.123" y="304.29"/>
+<path d="M284.217,345.545l5.246-9.09l9.076-5.251l-9.076-5.246l-2.563-5.179l-4.963-0.69l-2.962,5.863 l-9.079,5.246l9.081,5.251L284.217,345.545z M286.553,326.23h2.637v2.635h-2.637V326.23z M286.553,333.546h2.637v2.636h-2.637 V333.546z M279.251,326.23h2.632v2.635h-2.632V326.23z M279.251,333.546h2.632v2.636h-2.632V333.546z" fill-opacity="0.25"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_71_" x1="-588.4883" x2="-588.4883" y1="-865.8726" y2="-891.3674">
+<stop offset="0" style="stop-color:#DAFF8C"/>
+<stop offset="0.1879" style="stop-color:#DAFF8C"/>
+<stop offset="1" style="stop-color:#77C949"/>
+</linearGradient>
+<polygon fill="url(#SVGID_71_)" points="297.082,330.469 289.92,326.332 289.92,328.865 285.822,328.865 285.822,324.766 288.354,324.766 284.217,317.597 280.083,324.766 282.611,324.766 282.611,328.865 278.519,328.865 278.519,326.332 271.355,330.469 278.519,334.613 278.519,332.082 282.611,332.082 282.611,336.178 280.083,336.178 284.217,343.35 288.354,336.178 285.822,336.178 285.822,332.082 289.92,332.082 289.92,334.613 "/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_72_" x1="-588.4883" x2="-588.4883" y1="-867.0586" y2="-890.0279">
+<stop offset="0" style="stop-color:#AEE737"/>
+<stop offset="0.7273" style="stop-color:#66A00E"/>
+<stop offset="1" style="stop-color:#387300"/>
+</linearGradient>
+<polygon fill="url(#SVGID_72_)" points="281.348,336.909 283.342,336.909 283.342,331.347 277.791,331.347 277.791,333.345 272.818,330.469 277.791,327.599 277.791,329.595 283.342,329.595 283.342,324.036 281.348,324.036 284.217,319.059 287.088,324.036 285.094,324.036 285.094,329.595 290.647,329.595 290.647,327.599 295.619,330.469 290.647,333.345 290.647,331.347 285.094,331.347 285.094,336.909 287.088,336.909 284.217,341.885 "/>
+<path d="M284.217,334.806c-1.979,0-3.597-1.613-3.597-3.605c0-1.984,1.61-3.604,3.597-3.604 s3.604,1.615,3.604,3.604C287.816,333.19,286.203,334.806,284.217,334.806L284.217,334.806z" fill-opacity="0.25"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_73_" x1="-588.4893" x2="-588.4893" y1="-875.4971" y2="-881.4367">
+<stop offset="0" style="stop-color:#DAFF8C"/>
+<stop offset="0.1879" style="stop-color:#DAFF8C"/>
+<stop offset="1" style="stop-color:#77C949"/>
+</linearGradient>
+<circle cx="284.217" cy="330.556" fill="url(#SVGID_73_)" r="2.953"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 872.707 -547.8535)" gradientUnits="userSpaceOnUse" id="SVGID_74_" x1="-588.4873" x2="-588.4873" y1="-876.1348" y2="-880.775">
+<stop offset="0" style="stop-color:#AEE737"/>
+<stop offset="0.7273" style="stop-color:#66A00E"/>
+<stop offset="1" style="stop-color:#387300"/>
+</linearGradient>
+<path d="M284.217,332.86c-1.27,0-2.299-1.034-2.299-2.308c0-1.272,1.029-2.307,2.299-2.307 c1.271,0,2.305,1.032,2.305,2.307C286.518,331.826,285.488,332.86,284.217,332.86L284.217,332.86z" fill="url(#SVGID_74_)"/>
+<rect fill="none" height="35.855" width="35.813" x="292.935" y="340.145"/>
+<rect fill="none" height="35.854" width="35.811" x="292.935" y="340.145"/>
+<path d="M311.018,353.266c0.584,0,1.055-0.145,1.408-0.434c0.354-0.29,0.529-0.687,0.529-1.197 c0-0.49-0.182-0.888-0.547-1.183c-0.363-0.295-0.826-0.445-1.391-0.445c-0.594,0-1.063,0.146-1.408,0.439 c-0.344,0.293-0.514,0.688-0.514,1.188c0,0.509,0.176,0.907,0.531,1.197C309.973,353.119,310.439,353.266,311.018,353.266z" fill-opacity="0.1"/>
+<path d="M311.018,352.898c0.584,0,1.055-0.143,1.408-0.433c0.354-0.289,0.529-0.686,0.529-1.196 c0-0.491-0.182-0.886-0.547-1.183c-0.363-0.298-0.826-0.446-1.391-0.446c-0.594,0-1.063,0.146-1.408,0.438 c-0.344,0.295-0.514,0.691-0.514,1.19c0,0.509,0.176,0.907,0.531,1.196C309.973,352.756,310.439,352.898,311.018,352.898z" fill-opacity="0.2"/>
+<linearGradient gradientTransform="matrix(0.0078 0 0 -0.0078 -1115.7148 -562.4685)" gradientUnits="userSpaceOnUse" id="SVGID_75_" x1="295.0654" x2="295.0654" y1="-109383.8438" y2="-109435">
+<stop offset="0" style="stop-color:#E5FFB2"/>
+<stop offset="0.39" style="stop-color:#6AAB18"/>
+<stop offset="0.68" style="stop-color:#247307"/>
+<stop offset="1" style="stop-color:#C2FF4A"/>
+</linearGradient>
+<ellipse cx="310.84" cy="358.071" fill="url(#SVGID_75_)" rx="12.791" ry="12.805"/>
+<radialGradient cx="310.8408" cy="358.0713" gradientTransform="matrix(0.0078 0 0 -0.0078 -1115.7871 -571.1272)" gradientUnits="userSpaceOnUse" id="SVGID_76_" r="12.4316">
+<stop offset="0" style="stop-color:#AFED23"/>
+<stop offset="0.81" style="stop-color:#358C0C"/>
+<stop offset="1" style="stop-color:#67AD1A"/>
+</radialGradient>
+<path d="M310.84,370.51c-6.849,0-12.424-5.578-12.424-12.437c0-6.86,5.573-12.44,12.424-12.44 s12.426,5.578,12.426,12.438C323.264,364.93,317.69,370.51,310.84,370.51L310.84,370.51z" fill="url(#SVGID_76_)"/>
+<polygon fill-opacity="0.1" points="308.006,356.781 309.227,356.781 309.227,367.36 312.781,367.36 312.781,354.758 308.006,354.758 "/>
+<polygon fill-opacity="0.2" points="308.006,356.413 309.227,356.413 309.227,366.995 312.781,366.995 312.781,354.39 308.006,354.39 "/>
+<linearGradient gradientTransform="matrix(0.0078 0 0 -0.0078 -1115.7148 -562.4685)" gradientUnits="userSpaceOnUse" id="SVGID_77_" x1="297.3262" x2="297.3262" y1="-16267.0059" y2="-16271.7813">
+<stop offset="0" style="stop-color:#F6FDFF"/>
+<stop offset="1" style="stop-color:#ADB3B5"/>
+</linearGradient>
+<polygon fill="url(#SVGID_77_)" points="308.006,356.052 309.227,356.052 309.227,366.629 312.781,366.629 312.781,354.024 308.006,354.024 "/>
+<linearGradient gradientTransform="matrix(0.0078 0 0 -0.0078 -1115.7148 -562.4685)" gradientUnits="userSpaceOnUse" id="SVGID_78_" x1="288.0889" x2="288.0889" y1="-16268.0781" y2="-16271.9414">
+<stop offset="0" style="stop-color:#F6FDFF"/>
+<stop offset="1" style="stop-color:#ADB3B5"/>
+</linearGradient>
+<path d="M311.004,352.719c0.586,0,1.055-0.146,1.408-0.435c0.354-0.291,0.529-0.69,0.529-1.196 c0-0.493-0.18-0.888-0.545-1.185c-0.363-0.296-0.828-0.444-1.393-0.444c-0.592,0-1.061,0.145-1.406,0.438 c-0.348,0.291-0.52,0.689-0.52,1.19c0,0.506,0.176,0.905,0.529,1.196C309.961,352.573,310.426,352.719,311.004,352.719z" fill="url(#SVGID_78_)"/>
+<defs>
+<linearGradient gradientTransform="matrix(0 1 -1 0 -886.5 362.5005)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="-352.001" x2="-352.001" y1="-938.4995" y2="-910.578">
+<stop offset="0" style="stop-color:#47DAFA"/>
+<stop offset="1" style="stop-color:#0070FA"/>
+</linearGradient>
+</defs>
+<defs>
+<linearGradient gradientTransform="matrix(0 1 -1 0 -886.5 362.5005)" gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="-352.001" x2="-352.001" y1="-938.4995" y2="-910.578">
+<stop offset="0" style="stop-color:#47DAFA"/>
+<stop offset="1" style="stop-color:#0070FA"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_theme_preview_thumbnail.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 60 60" width="60px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="#FFFFFF" height="60" width="60"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="55" x2="55" y1="3.2778" y2="9.9743">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" height="6.667" width="10" x="50" y="3.333"/>
+<rect fill="#AAAAAF" height="0.167" width="10" x="50" y="9.833"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="6.5" width="0.166" x="50" y="3.333"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="59.834,3.333 59.834,9.667 50.166,9.667 50.166,9.833 60,9.833 60,3.333 " stroke-opacity="0.4"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="5" x2="5" y1="3.2778" y2="9.9743">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_2_)" height="6.667" width="10" y="3.333"/>
+<rect fill="#AAAAAF" height="0.167" width="10" y="9.833"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="0.166,9.667 0.166,3.333 0,3.333 0,9.833 9.834,9.833 9.834,9.667 " stroke-opacity="0.4"/>
+<rect fill-opacity="0.2" height="6.5" width="0.166" x="9.834" y="3.333"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="29.9995" x2="29.9995" y1="3.2778" y2="9.9743">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_3_)" height="6.667" width="40" x="10" y="3.333"/>
+<rect fill="#AAAAAF" height="0.167" width="40" x="10" y="9.833"/>
+<rect fill="#FFFFFF" fill-opacity="0.8" height="6.5" width="0.166" x="10" y="3.333"/>
+<rect fill-opacity="0.2" height="6.5" width="0.166" x="49.834" y="3.333"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="0.167" stroke-opacity="0.4" width="39.668" x="10.166" y="9.667"/>
+<rect height="3.333" width="60"/>
+<path d="M6.334,5.333c0.274,0,0.372,0.186,0.217,0.412L5.283,7.588c-0.156,0.227-0.41,0.227-0.566,0L3.449,5.746 C3.294,5.519,3.392,5.333,3.666,5.333H6.334z" fill="#3C3C3C"/>
+<path d="M48,5.333c0.275,0,0.373,0.186,0.217,0.412l-1.268,1.842c-0.154,0.227-0.41,0.227-0.566,0l-1.266-1.842 c-0.156-0.227-0.059-0.412,0.217-0.412H48z" fill="#3C3C3C"/>
+<linearGradient gradientTransform="matrix(0 -1 1 0 -415.5 -1253.5)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="-1253.9995" x2="-1256.4995" y1="469.499" y2="469.499">
+<stop offset="0" style="stop-color:#92DE2F"/>
+<stop offset="1" style="stop-color:#19B016"/>
+</linearGradient>
+<polygon fill="url(#SVGID_4_)" points="52,1.167 51.666,1.167 51.666,2.333 52,2.333 52,3 56.334,3 56.334,0.5 52,0.5 "/>
+<rect fill-opacity="0.2" height="1.333" stroke-opacity="0.2" width="0.334" x="55.166" y="1.083"/>
+<polygon fill-opacity="0.2" points="53,1.083 53,1.583 52.5,1.583 52.5,1.917 53,1.917 53,2.417 53.334,2.417 53.334,1.917 53.834,1.917 53.834,1.583 53.334,1.583 53.334,1.083 " stroke-opacity="0.2"/>
+<rect fill="none" height="2.5" width="5" x="51.5" y="0.5"/>
+<linearGradient gradientTransform="matrix(0 1 -1 0 -1249.5 299.5005)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="-297.751" x2="-297.751" y1="-1258.1616" y2="-1253.5126">
+<stop offset="0" style="stop-color:#47DAFA"/>
+<stop offset="1" style="stop-color:#0070FA"/>
+</linearGradient>
+<rect fill="url(#SVGID_5_)" height="0.5" width="0.666" x="4" y="1.5"/>
+<linearGradient gradientTransform="matrix(0 1 -1 0 -1249.5 299.5005)" gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="-297.751" x2="-297.751" y1="-1258.1626" y2="-1253.5135">
+<stop offset="0" style="stop-color:#47DAFA"/>
+<stop offset="1" style="stop-color:#0070FA"/>
+</linearGradient>
+<rect fill="url(#SVGID_6_)" height="1" width="0.666" x="5" y="1.25"/>
+<linearGradient gradientTransform="matrix(0 1 -1 0 -1249.5 299.5005)" gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="-297.751" x2="-297.751" y1="-1258.1636" y2="-1253.5145">
+<stop offset="0" style="stop-color:#47DAFA"/>
+<stop offset="1" style="stop-color:#0070FA"/>
+</linearGradient>
+<rect fill="url(#SVGID_7_)" height="1.5" width="0.666" x="6" y="1"/>
+<linearGradient gradientTransform="matrix(0 1 -1 0 -1249.5 299.5005)" gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="-297.751" x2="-297.751" y1="-1258.1646" y2="-1253.5155">
+<stop offset="0" style="stop-color:#47DAFA"/>
+<stop offset="1" style="stop-color:#0070FA"/>
+</linearGradient>
+<rect fill="url(#SVGID_8_)" height="2" width="0.666" x="7" y="0.75"/>
+<linearGradient gradientTransform="matrix(0 1 -1 0 -1249.5 299.5005)" gradientUnits="userSpaceOnUse" id="SVGID_9_" x1="-297.751" x2="-297.751" y1="-1258.1655" y2="-1253.5165">
+<stop offset="0" style="stop-color:#47DAFA"/>
+<stop offset="1" style="stop-color:#0070FA"/>
+</linearGradient>
+<rect fill="url(#SVGID_9_)" height="2.5" width="0.666" x="8" y="0.5"/>
+<rect fill="none" height="2.5" width="5" x="3.834" y="0.5"/>
+<path d="M2.255,2.5h0.323V1.694l0.588-0.708V0.833h-1.5v0.152l0.589,0.708V2.5L2.255,2.5z" fill="#FFFFFF"/>
+<path d="M57.166,2.667h1.168V0.863h-0.341V0.667h-0.499v0.196h-0.328V2.667z" fill="#FFFFFF"/>
+<path d="M56.084,5.417H55V4.75c0-0.275-0.182-0.367-0.404-0.205l-1.359,0.994c-0.221,0.162-0.221,0.428,0,0.59 l1.359,0.993C54.818,7.284,55,7.192,55,6.917V6.25h1.084c0.413,0,0.75,0.336,0.75,0.75s-0.337,0.75-0.75,0.75h-2.5 c-0.23,0-0.418,0.187-0.418,0.417c0,0.23,0.188,0.417,0.418,0.417h2.5c0.873,0,1.582-0.71,1.582-1.583S56.957,5.417,56.084,5.417z" fill="#3C3C3C"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10_" x1="22.5" x2="22.5" y1="49.917" y2="59.962">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_10_)" height="10" width="15" x="15" y="50"/>
+<rect fill="#FFFFFF" fill-opacity="0.9" height="9.667" stroke-opacity="0.9" width="0.166" x="15" y="50.167"/>
+<rect fill="#9696A0" fill-opacity="0.5" height="9.667" stroke-opacity="0.5" width="0.166" x="29.834" y="50.167"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11_" x1="37.5" x2="37.5" y1="49.917" y2="59.962">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_11_)" height="10" width="15" x="30" y="50"/>
+<rect fill="#FFFFFF" fill-opacity="0.9" height="9.667" stroke-opacity="0.9" width="0.166" x="30" y="50.167"/>
+<rect fill="#9696A0" fill-opacity="0.5" height="9.667" stroke-opacity="0.5" width="0.166" x="44.834" y="50.167"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_12_" x1="52.5" x2="52.5" y1="49.917" y2="59.962">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_12_)" height="10" width="15" x="45" y="50"/>
+<rect fill="#FFFFFF" fill-opacity="0.9" height="9.667" stroke-opacity="0.9" width="0.166" x="45" y="50.167"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_13_" x1="7.5" x2="7.5" y1="49.917" y2="59.962">
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D7D7DC"/>
+<stop offset="0.9" style="stop-color:#CDCDD2"/>
+<stop offset="1" style="stop-color:#C3C3C8"/>
+</linearGradient>
+<rect fill="url(#SVGID_13_)" height="10" width="15" y="50"/>
+<rect fill-opacity="0.1" height="0.166" stroke-opacity="0.1" width="60" y="59.834"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="0.167" stroke-opacity="0.4" width="60" y="59.667"/>
+<rect fill="#9696A0" fill-opacity="0.5" height="9.667" stroke-opacity="0.5" width="0.166" x="14.834" y="50.167"/>
+<circle cx="7.354" cy="55" fill="none" r="2.928" stroke="#505050" stroke-width="0.9352"/>
+<circle cx="22.544" cy="55" fill="none" r="2.928" stroke="#505050" stroke-width="0.9352"/>
+<circle cx="37.595" cy="55" fill="none" r="2.928" stroke="#505050" stroke-width="0.9352"/>
+<circle cx="52.645" cy="55" fill="none" r="2.928" stroke="#505050" stroke-width="0.9352"/>
+</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_titlebar_handle_normal.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_titlebar_handle_normal.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,29 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 20 60" width="20px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M20,60H4c-2.209,0-4-1.791-4-4V4c0-2.209,1.791-4,4-4h16V60z" fill="url(#SVGID_1_)"/>
+<path d="M4,1C2.346,1,1,2.346,1,4v52c0,1.654,1.346,3,3,3h15V1H4z M18,58H4c-1.103,0-2-0.897-2-2V4 c0-1.103,0.897-2,2-2h14V58z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<path d="M4,0C1.791,0,0,1.791,0,4v52c0,2.209,1.791,4,4,4h16V0H4z M19,59H4c-1.652,0-2.998-1.346-2.998-3.001V4 c0-1.654,1.346-3,2.998-3h15V59z" fill-opacity="0.1" stroke-opacity="0.1"/>
+<rect fill="#FFFFFF" fill-opacity="0.7" fill-rule="evenodd" height="1" stroke-opacity="0.7" width="8" x="6" y="21"/>
+<rect fill-opacity="0.1" fill-rule="evenodd" height="1" stroke-opacity="0.1" width="8" x="6" y="20"/>
+<rect fill="#FFFFFF" fill-opacity="0.7" fill-rule="evenodd" height="1" stroke-opacity="0.7" width="8" x="6" y="31"/>
+<rect fill-opacity="0.1" fill-rule="evenodd" height="1" stroke-opacity="0.1" width="8" x="6" y="30"/>
+<rect fill="#FFFFFF" fill-opacity="0.7" fill-rule="evenodd" height="1" stroke-opacity="0.7" width="8" x="6" y="41"/>
+<rect fill-opacity="0.1" fill-rule="evenodd" height="1" stroke-opacity="0.1" width="8" x="6" y="40"/>
+<defs>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="9.9995" x2="9.9995" y1="0" y2="59.3335">
-<stop offset="0" style="stop-color:#0D0D0D"/>
-<stop offset="0.7418" style="stop-color:#000000"/>
-<stop offset="0.8629" style="stop-color:#0C0C0C"/>
-<stop offset="1" style="stop-color:#1F1F1F"/>
-</linearGradient>
-<path d="M20,60H4c-2.209,0-4-1.791-4-4V4c0-2.209,1.791-4,4-4h16V60z" fill="url(#SVGID_1_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="9.9995" x2="9.9995" y1="3.5562" y2="26.6996">
-<stop offset="0" style="stop-color:#666666"/>
-<stop offset="1" style="stop-color:#262626"/>
+<stop offset="0" style="stop-color:#FAFAFF"/>
+<stop offset="0.9" style="stop-color:#D2D2DC"/>
+<stop offset="0.9" style="stop-color:#C8C8D2"/>
+<stop offset="1" style="stop-color:#BEBEC8"/>
</linearGradient>
-<path d="M4,1C2.346,1,1,2.346,1,4v23h18V1H4z" fill="url(#SVGID_2_)" fill-opacity="0.5" stroke-opacity="0.5"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="9.9995" x2="9.9995" y1="1" y2="59.0005">
-<stop offset="0" style="stop-color:#666666"/>
-<stop offset="0.011" style="stop-color:#666666"/>
-<stop offset="1" style="stop-color:#262626"/>
-</linearGradient>
-<path d="M4,1C2.346,1,1,2.346,1,4v52c0,1.654,1.346,3,3,3h15V1H4z M18,58H4 c-1.103,0-2-0.898-2-2V4c0-1.104,0.897-2,2-2h14V58z" fill="url(#SVGID_3_)" fill-opacity="0.5" stroke-opacity="0.5"/>
-<path d="M4,0C1.791,0,0,1.791,0,4v52c0,2.209,1.791,4,4,4h16V0H4z M19,59H4c-1.652,0-2.998-1.346-2.998-3.002V4 c0-1.654,1.346-3,2.998-3h15V59z" fill-opacity="0.1" stroke-opacity="0.1"/>
-<rect fill="#FFFFFF" fill-opacity="0.5" fill-rule="evenodd" height="1" stroke-opacity="0.5" width="8" x="6" y="21"/>
-<rect fill="#646464" fill-opacity="0.5" fill-rule="evenodd" height="1" stroke-opacity="0.5" width="8" x="6" y="20"/>
-<rect fill="#FFFFFF" fill-opacity="0.5" fill-rule="evenodd" height="1" stroke-opacity="0.5" width="8" x="6" y="31"/>
-<rect fill="#646464" fill-opacity="0.5" fill-rule="evenodd" height="1" stroke-opacity="0.5" width="8" x="6" y="30"/>
-<rect fill="#FFFFFF" fill-opacity="0.5" fill-rule="evenodd" height="1" stroke-opacity="0.5" width="8" x="6" y="41"/>
-<rect fill="#646464" fill-opacity="0.5" fill-rule="evenodd" height="1" stroke-opacity="0.5" width="8" x="6" y="40"/>
+</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_titlebar_handle_pressed.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_titlebar_handle_pressed.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,8 +2,8 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="60px" version="1.1" viewBox="0 0 20 60" width="20px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<path d="M20,60H4c-2.209,0-4-1.791-4-4V4c0-2.209,1.791-4,4-4h16V60z" fill="url(#SVGID_1_)"/>
-<path d="M4,1C2.346,1,1,2.346,1,4v52c0,1.654,1.346,3,3,3h15V1H4z M18,58H4c-1.103,0-2-0.898-2-2V4 c0-1.104,0.897-2,2-2h14V58z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M4,0C1.791,0,0,1.791,0,4v52c0,2.209,1.791,4,4,4h16V0H4z M19,59H4c-1.652,0-2.998-1.346-2.998-3.002V4 c0-1.654,1.346-3,2.998-3h15V59z" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M4,1C2.346,1,1,2.346,1,4v52c0,1.654,1.346,3,3,3h15V1H4z M18,58H4c-1.104,0-2-0.897-2-2V4 c0-1.103,0.896-2,2-2h14V58z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M4,0C1.791,0,0,1.791,0,4v52c0,2.209,1.791,4,4,4h16V0H4z M19,59H4c-1.652,0-2.998-1.346-2.998-3.001V4 c0-1.654,1.346-3,2.998-3h15V59z" fill-opacity="0.2" stroke-opacity="0.2"/>
<rect fill="#FFFFFF" fill-opacity="0.4" fill-rule="evenodd" height="1" stroke-opacity="0.4" width="8" x="6" y="21"/>
<rect fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="8" x="6" y="20"/>
<rect fill="#FFFFFF" fill-opacity="0.4" fill-rule="evenodd" height="1" stroke-opacity="0.4" width="8" x="6" y="31"/>
@@ -11,9 +11,9 @@
<rect fill="#FFFFFF" fill-opacity="0.4" fill-rule="evenodd" height="1" stroke-opacity="0.4" width="8" x="6" y="41"/>
<rect fill-opacity="0.2" fill-rule="evenodd" height="1" stroke-opacity="0.2" width="8" x="6" y="40"/>
<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="10.0005" x2="10.0005" y1="60" y2="0.6675">
-<stop offset="0" style="stop-color:#009DD9"/>
-<stop offset="1" style="stop-color:#004F80"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="10.0005" x2="10.0005" y1="60" y2="0.3326">
+<stop offset="0" style="stop-color:#65B8CC"/>
+<stop offset="1" style="stop-color:#306D8C"/>
</linearGradient>
</defs>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_titlebar_minimize.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_titlebar_minimize.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,18 +2,18 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 10 40" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.9995" x2="4.9995" y1="8" y2="12">
-<stop offset="0" style="stop-color:#969696"/>
-<stop offset="1" style="stop-color:#323232"/>
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
</linearGradient>
<circle cx="5" cy="10" fill="url(#SVGID_1_)" r="2"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="4.9995" x2="4.9995" y1="28" y2="32">
-<stop offset="0" style="stop-color:#969696"/>
-<stop offset="1" style="stop-color:#323232"/>
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
</linearGradient>
<circle cx="5" cy="30" fill="url(#SVGID_2_)" r="2"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="4.9995" x2="4.9995" y1="18" y2="22.0005">
-<stop offset="0" style="stop-color:#969696"/>
-<stop offset="1" style="stop-color:#323232"/>
+<stop offset="0" style="stop-color:#66B8CC"/>
+<stop offset="1" style="stop-color:#3F89A9"/>
</linearGradient>
<circle cx="5" cy="20" fill="url(#SVGID_3_)" r="2"/>
<rect fill="none" height="40" width="10"/>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_tuner_selected.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<circle cx="5" cy="5" fill-opacity="0.5" r="5" stroke-opacity="0.5"/>
+<circle cx="5" cy="5" fill="#FFFF00" r="4"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_graf_tuner_unselected.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M5,0C2.239,0,0,2.239,0,5c0,2.762,2.239,5,5,5c2.762,0,5-2.238,5-5C10,2.239,7.762,0,5,0z M5,6.5 C4.172,6.5,3.5,5.828,3.5,5c0-0.828,0.672-1.5,1.5-1.5c0.828,0,1.5,0.672,1.5,1.5C6.5,5.828,5.828,6.5,5,6.5z" fill-opacity="0.5" stroke-opacity="0.5"/>
+<path d="M5,1C2.791,1,1,2.791,1,5s1.791,4,4,4s4-1.791,4-4S7.209,1,5,1z M5,7.5C3.619,7.5,2.5,6.38,2.5,5 c0-1.381,1.119-2.5,2.5-2.5c1.38,0,2.5,1.119,2.5,2.5C7.5,6.38,6.38,7.5,5,7.5z" fill="#FFFF00"/>
+</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_large_bluetooth_hide.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_large_bluetooth_hide.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,28 +1,29 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60">
+<?xml version="1.0" ?>
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
+<svg height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g opacity="0.5">
+<defs>
+</defs>
<rect fill="none" height="60" width="60"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="2" y2="58.0739">
-<stop offset="0" style="stop-color:#F2F2F2"/>
-<stop offset="0.2545" style="stop-color:#4F88BD"/>
-<stop offset="0.7333" style="stop-color:#0055A3"/>
-<stop offset="1" style="stop-color:#64AEFB"/>
+ <stop offset="0" style="stop-color:#F2F2F2"/>
+ <stop offset="0.2545" style="stop-color:#4F88BD"/>
+ <stop offset="0.7333" style="stop-color:#0055A3"/>
+ <stop offset="1" style="stop-color:#64AEFB"/>
</linearGradient>
<path d="M30,2C18.142,2,9.945,7.973,9.945,30.001C9.945,52.03,18.145,58,30,58 c11.857,0,20.054-5.97,20.054-27.999C50.054,7.973,41.857,2,30,2z" fill="url(#SVGID_1_)"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="30" x2="30" y1="3.2363" y2="56.7637">
-<stop offset="0" style="stop-color:#36B5FF"/>
-<stop offset="0.1576" style="stop-color:#36B5FF"/>
-<stop offset="0.8242" style="stop-color:#1B66D8"/>
-<stop offset="1" style="stop-color:#2183E0"/>
+ <stop offset="0.1576" style="stop-color:#36B5FF"/>
+ <stop offset="0.8242" style="stop-color:#1B66D8"/>
+ <stop offset="1" style="stop-color:#2183E0"/>
</linearGradient>
<path d="M30,56.764c-9.305,0-18.818-3.179-18.818-26.763C11.182,6.415,20.695,3.236,30,3.236 c9.306,0,18.817,3.179,18.817,26.765C48.817,53.585,39.306,56.764,30,56.764L30,56.764z" fill="url(#SVGID_2_)"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="17.6924" x2="42.3066" y1="30.2065" y2="30.2065">
-<stop offset="0" style="stop-color:#0B81FA"/>
-<stop offset="1" style="stop-color:#47DAFA"/>
+ <stop offset="0" style="stop-color:#0B81FA"/>
+ <stop offset="1" style="stop-color:#47DAFA"/>
</linearGradient>
<path d="M42.307,20.702L28.242,6.305v18.972l-7.728-7.912l-2.822,2.881l9.712,9.961l-9.712,9.96l2.815,2.879 l7.734-7.91v18.974l14.064-14.396l-9.287-9.506L42.307,20.702z M36.689,20.734l-4.49,4.59l-0.006-9.188L36.689,20.734z M36.689,39.686l-4.496,4.584l0.006-9.185L36.689,39.686z" fill="url(#SVGID_3_)"/>
<path d="M29.479,32.103l-8.971,9.175l-1.087-1.112l9.71-9.959l-9.71-9.96l1.091-1.113l8.967,9.179V9.339l11.1,11.363 l-9.287,9.504l9.287,9.506l-11.1,11.362V32.103z M30.955,47.297l7.464-7.61l-7.454-7.636L30.955,47.297z M30.965,28.353l7.454-7.618 l-7.464-7.632L30.965,28.353z" fill="#FFFFFF"/>
<rect fill="none" height="60" width="60"/>
</g>
-</svg>
+</svg>
\ No newline at end of file
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_large_bluetooth_hide_connection.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_large_bluetooth_hide_connection.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,59 +1,57 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60">
+<?xml version="1.0" ?>
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
+<svg height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g opacity="0.5">
+<defs>
+</defs>
<rect fill="none" height="60" width="60"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="2" y2="58.0739">
-<stop offset="0" style="stop-color:#F2F2F2"/>
-<stop offset="0.2545" style="stop-color:#4F88BD"/>
-<stop offset="0.7333" style="stop-color:#0055A3"/>
-<stop offset="1" style="stop-color:#64AEFB"/>
+ <stop offset="0" style="stop-color:#F2F2F2"/>
+ <stop offset="0.2545" style="stop-color:#4F88BD"/>
+ <stop offset="0.7333" style="stop-color:#0055A3"/>
+ <stop offset="1" style="stop-color:#64AEFB"/>
</linearGradient>
<path d="M30,2C18.142,2,9.945,7.973,9.945,30.001C9.945,52.03,18.145,58,30,58 c11.857,0,20.054-5.97,20.054-27.999C50.054,7.973,41.857,2,30,2z" fill="url(#SVGID_1_)"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="30" x2="30" y1="3.2363" y2="56.7637">
-<stop offset="0" style="stop-color:#36B5FF"/>
-<stop offset="0.1576" style="stop-color:#36B5FF"/>
-<stop offset="0.8242" style="stop-color:#1B66D8"/>
-<stop offset="1" style="stop-color:#2183E0"/>
+ <stop offset="0.1576" style="stop-color:#36B5FF"/>
+ <stop offset="0.8242" style="stop-color:#1B66D8"/>
+ <stop offset="1" style="stop-color:#2183E0"/>
</linearGradient>
<path d="M30,56.764c-9.305,0-18.818-3.179-18.818-26.763C11.182,6.415,20.695,3.236,30,3.236 c9.306,0,18.817,3.179,18.817,26.765C48.817,53.585,39.306,56.764,30,56.764L30,56.764z" fill="url(#SVGID_2_)"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="17.6924" x2="42.3066" y1="30.2065" y2="30.2065">
-<stop offset="0" style="stop-color:#0B81FA"/>
-<stop offset="1" style="stop-color:#47DAFA"/>
+ <stop offset="0" style="stop-color:#0B81FA"/>
+ <stop offset="1" style="stop-color:#47DAFA"/>
</linearGradient>
<path d="M42.307,20.702L28.242,6.305v18.972l-7.728-7.912l-2.822,2.881l9.712,9.961l-9.712,9.96l2.815,2.879 l7.734-7.91v18.974l14.064-14.396l-9.287-9.506L42.307,20.702z M36.689,20.734l-4.49,4.59l-0.006-9.188L36.689,20.734z M36.689,39.686l-4.496,4.584l0.006-9.185L36.689,39.686z" fill="url(#SVGID_3_)"/>
<path d="M29.479,32.103l-8.971,9.175l-1.087-1.112l9.71-9.959l-9.71-9.96l1.091-1.113l8.967,9.179V9.339l11.1,11.363 l-9.287,9.504l9.287,9.506l-11.1,11.362V32.103z M30.955,47.297l7.464-7.61l-7.454-7.636L30.955,47.297z M30.965,28.353l7.454-7.618 l-7.464-7.632L30.965,28.353z" fill="#FFFFFF"/>
<rect fill="none" height="60" width="60"/>
</g>
<g transform="matrix(1 0 0 1 30 30)">
+<defs>
+</defs>
<rect fill="none" height="30" width="30" x="0.002"/>
-<path d="M20.752,15.001H1.27c-0.555,0-0.998,0.273-1.186,0.73c-0.186,0.459-0.059,0.966,0.34,1.355l10.515,10.314 c0.339,0.335,0.687,0.404,0.918,0.404c0.565,0,1.165-0.448,1.165-1.28v-4.398h7.73c0.842,0,1.527-0.69,1.527-1.538v-4.051 C22.279,15.69,21.594,15.001,20.752,15.001z" fill-opacity="0.35" stroke-opacity="0.35"/>
-<path d="M29.58,12.911L19.063,2.596c-0.339-0.333-0.685-0.402-0.916-0.402c-0.564,0-1.165,0.449-1.165,1.281v4.399 h-7.73c-0.842,0-1.525,0.689-1.525,1.537v4.051c0,0.847,0.684,1.535,1.525,1.535h19.482c0.555,0,0.998-0.273,1.186-0.73 C30.105,13.808,29.979,13.301,29.58,12.911z" fill-opacity="0.35" stroke-opacity="0.35"/>
+<path d="M20.752,15.001H1.27c-0.555,0-0.998,0.273-1.186,0.73c-0.186,0.459-0.059,0.966,0.34,1.355l10.515,10.314 c0.339,0.335,0.687,0.404,0.918,0.404c0.565,0,1.165-0.448,1.165-1.28v-4.398h7.73c0.842,0,1.527-0.69,1.527-1.538v-4.051 C22.279,15.69,21.594,15.001,20.752,15.001z" fill-opacity="0.35"/>
+<path d="M29.58,12.911L19.063,2.596c-0.339-0.333-0.685-0.402-0.916-0.402c-0.564,0-1.165,0.449-1.165,1.281v4.399 h-7.73c-0.842,0-1.525,0.689-1.525,1.537v4.051c0,0.847,0.684,1.535,1.525,1.535h19.482c0.555,0,0.998-0.273,1.186-0.73 C30.105,13.808,29.979,13.301,29.58,12.911z" fill-opacity="0.35"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1__" x1="11.1406" x2="11.1406" y1="16.103" y2="27.0009">
-<stop offset="0" style="stop-color:#CDEDBD"/>
-<stop offset="0.9879" style="stop-color:#139900"/>
-<stop offset="1" style="stop-color:#139900"/>
+ <stop offset="0" style="stop-color:#CDEDBD"/>
+ <stop offset="0.9879" style="stop-color:#139900"/>
</linearGradient>
<path d="M21.279,20.589c0,0.294-0.236,0.538-0.527,0.538h-8.205c-0.287,0-0.525,0.241-0.525,0.537v4.861 c0,0.295-0.172,0.37-0.38,0.165L1.125,16.373c-0.211-0.205-0.144-0.372,0.145-0.372h19.482c0.289,0,0.527,0.241,0.527,0.537V20.589z " fill="url(#SVGID_1__)"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2__" x1="11.7783" x2="11.7783" y1="17.0737" y2="24.8819">
-<stop offset="0" style="stop-color:#82C94C"/>
-<stop offset="0.2545" style="stop-color:#439020"/>
-<stop offset="0.5091" style="stop-color:#0D4D07"/>
-<stop offset="1" style="stop-color:#0D4D07"/>
+ <stop offset="0" style="stop-color:#82C94C"/>
+ <stop offset="0.2545" style="stop-color:#439020"/>
+ <stop offset="0.5091" style="stop-color:#0D4D07"/>
</linearGradient>
<path d="M3.336,17.06h16.885v3.009h-7.674c-0.872,0-1.584,0.715-1.584,1.596v2.878L3.336,17.06z" fill="url(#SVGID_2__)"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3__" x1="18.8643" x2="18.8643" y1="3.2227" y2="14.1618">
-<stop offset="0" style="stop-color:#CDEDBD"/>
-<stop offset="0.4909" style="stop-color:#CDEDBD"/>
-<stop offset="0.9879" style="stop-color:#139900"/>
-<stop offset="1" style="stop-color:#139900"/>
+ <stop offset="0.4909" style="stop-color:#CDEDBD"/>
+ <stop offset="0.9879" style="stop-color:#139900"/>
</linearGradient>
<path d="M8.727,9.411c0-0.296,0.235-0.537,0.525-0.537h8.206c0.288,0,0.524-0.242,0.524-0.538V3.475 c0-0.297,0.172-0.37,0.381-0.165l10.516,10.315c0.211,0.205,0.144,0.372-0.145,0.372H9.252c-0.289,0-0.525-0.241-0.525-0.535V9.411z " fill="url(#SVGID_3__)"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="18.2266" x2="18.2266" y1="5.4292" y2="12.9712">
-<stop offset="0" style="stop-color:#B2F56E"/>
-<stop offset="0.703" style="stop-color:#439020"/>
-<stop offset="0.9879" style="stop-color:#0D4D07"/>
-<stop offset="1" style="stop-color:#0D4D07"/>
+ <stop offset="0" style="stop-color:#B2F56E"/>
+ <stop offset="0.703" style="stop-color:#439020"/>
+ <stop offset="0.9879" style="stop-color:#0D4D07"/>
</linearGradient>
<path d="M9.785,12.938V9.933h7.673c0.872,0,1.583-0.718,1.583-1.597V5.458l7.627,7.48H9.785z" fill="url(#SVGID_4_)"/>
<rect fill="none" height="30" width="30" x="0.002"/>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_large_car.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_large_car.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="12.8" x2="12.8" y1="35.35" y2="50.07">
<stop offset="0" stop-color="#7B7B7B"/>
<stop offset="0.1455" stop-color="#565656"/>
@@ -76,4 +77,5 @@
<path d="M47.27,23.35c-0.226-0.722-2.567-8.243-2.567-8.243s-0.067-0.812-1.081-1.014c-0.992-0.198-5.62-1.284-13.73-1.284-8.106,0-12.52,1.086-13.51,1.284-1.014,0.202-1.081,1.014-1.081,1.014s-2.341,7.521-2.566,8.243c-0.169,0.539,0.473,0.473,0.473,0.473s5.519,0.811,16.6,0.811,16.99-0.811,16.99-0.811,0.65,0.07,0.48-0.47z" fill="url(#SVGID_11_)"/>
<path d="M43.51,14.62l-0.249-0.052c-3.887-0.811-8.385-1.222-13.37-1.222-7.414,0-11.7,0.91-13.1,1.21-0.123,0.025-0.224,0.047-0.304,0.063-0.563,0.112-0.641,0.47-0.649,0.541l-0.009,0.06-0.013,0.043s-0.959,3.078-1.71,5.489l30.53-4.027c-0.271-0.868-0.456-1.462-0.456-1.462l-0.015-0.059-0.006-0.044c0-0.07-0.07-0.43-0.64-0.54z" fill="#FFFFFF" fill-opacity="0.25" stroke-opacity="0.25"/>
<rect fill="none" height="60" width="60"/>
+</g>
</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_large_dictionary.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="31.7607" x2="31.7607" y1="4.3042" y2="55.9593">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#CCCCCC"/>
+</linearGradient>
+<path d="M54.456,54.343c0,1.435-0.699,1.874-1.564,1.874H10.63c-0.863,0-1.565-0.699-1.565-1.564V5.347 c0-0.863,0.702-1.564,1.565-1.564h42.262c0.865,0,1.564,0.408,1.564,1.713C54.456,5.495,54.456,52.908,54.456,54.343z" fill="url(#SVGID_1_)"/>
+<rect fill="#404041" fill-opacity="0.2" height="52.435" stroke-opacity="0.2" width="18" x="34.501" y="3.782"/>
+<rect fill="#404041" fill-opacity="0.2" height="52.435" stroke-opacity="0.2" width="18" x="33.718" y="3.782"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="28.2397" x2="28.2397" y1="3" y2="56.75">
+<stop offset="0" style="stop-color:#59C2FF"/>
+<stop offset="1" style="stop-color:#1B66D8"/>
+</linearGradient>
+<path d="M50.937,55.435C50.937,56.3,50.235,57,49.37,57H7.109c-0.863,0-1.565-0.7-1.565-1.565V4.564 C5.544,3.701,6.246,3,7.109,3H49.37c0.865,0,1.566,0.701,1.566,1.564V55.435z" fill="url(#SVGID_2_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="30.979" x2="30.979" y1="2.7393" y2="70.9575">
+<stop offset="0" style="stop-color:#73E3FF"/>
+<stop offset="1" style="stop-color:#0B2C73"/>
+</linearGradient>
+<path d="M49.37,3.782c0.434,0,0.783,0.351,0.783,0.782v50.87c0,0.433-0.35,0.782-0.783,0.782H11.805V3.782 H49.37 M49.37,3H11.022v54H49.37c0.865,0,1.566-0.7,1.566-1.565V4.564C50.937,3.701,50.235,3,49.37,3L49.37,3z" fill="url(#SVGID_3_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="8.2832" x2="8.2832" y1="2.7393" y2="57.7841">
+<stop offset="0" style="stop-color:#F2F2F2"/>
+<stop offset="1" style="stop-color:#A0A0A0"/>
+</linearGradient>
+<path d="M7.109,3C6.246,3,5.544,3.701,5.544,4.564v50.87C5.544,56.3,6.246,57,7.109,57h3.913V3H7.109z" fill="url(#SVGID_4_)"/>
+<rect fill="#737373" height="54" width="0.783" x="10.239" y="3"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="9.8481" x2="9.8481" y1="2.7393" y2="57.7841">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#E6E6E6"/>
+</linearGradient>
+<rect fill="url(#SVGID_5_)" height="54" width="0.782" x="9.457" y="3"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="17.0967" x2="42.3057" y1="29.3286" y2="29.3286">
+<stop offset="0" style="stop-color:#14588C"/>
+<stop offset="0.0434" style="stop-color:#13588F"/>
+<stop offset="0.3599" style="stop-color:#0D5AA3"/>
+<stop offset="0.6785" style="stop-color:#095CAF"/>
+<stop offset="1" style="stop-color:#085CB3"/>
+</linearGradient>
+<path d="M17.097,21.179h11.284v-6.39h2.521v6.39h11.403v13.367h-2.402v-1.582h-9.001v10.904h-2.521V32.964 h-8.88v1.582h-2.404V21.179z M19.501,30.795h8.88v-7.446h-8.88V30.795z M39.903,23.349h-9.001v7.446h9.001V23.349z" fill="url(#SVGID_6_)"/>
+<path d="M18.096,22.18h11.286v-6.392h2.521v6.392h11.402v13.367h-2.402v-1.584h-9v10.906h-2.521V33.963h-8.883v1.584 h-2.403V22.18z M20.499,31.794h8.883v-7.445h-8.883V31.794z M40.903,24.349h-9v7.445h9V24.349z" fill="#FFFFFF"/>
+<rect fill="none" height="60" width="60.001"/>
+</g>
+</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_large_mmc_removed.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_large_mmc_removed.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,79 +1,125 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60">
+<?xml version="1.0" ?>
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
+<svg height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g opacity="0.5">
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="29.54" x2="29.54" y1="8.111" y2="49.9">
+
<stop offset="0" stop-color="#666666"/>
+
<stop offset="1" stop-color="#000000"/>
+
</linearGradient>
<path d="M22.91,9.039c0.511-0.425,1.472-0.771,2.136-0.771h20.48c0.664,0,1.207,0.542,1.207,1.206v39.21c0,0.663-0.543,1.206-1.207,1.206h-31.98c-0.663,0-1.207-0.543-1.207-1.206v-29.69c0-0.663,0.418-1.553,0.929-1.977l9.63-7.991z" fill="url(#SVGID_1_)"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="29.54" x2="29.54" y1="7.959" y2="50.51">
+
<stop offset="0" stop-color="#999999"/>
+
<stop offset="1" stop-color="#333333"/>
+
</linearGradient>
<path d="M45.77,8.571c0.338,0,0.611,0.274,0.611,0.612v39.8c0,0.338-0.273,0.612-0.611,0.612h-32.45c-0.338,0-0.612-0.274-0.612-0.612v-30.13c0-0.49,0.344-1.222,0.721-1.535l9.78-8.105c0.412-0.342,1.242-0.642,1.777-0.642h20.79m0.004-0.614h-20.79c-0.674,0-1.648,0.352-2.167,0.781l-9.78,8.107c-0.519,0.43-0.943,1.332-0.943,2.006v30.13c0,0.673,0.551,1.225,1.225,1.225h32.45c0.673,0,1.225-0.552,1.225-1.225v-39.82c-0.01-0.674-0.56-1.225-1.23-1.225z" fill="url(#SVGID_2_)"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="29.54" x2="29.54" y1="9.65" y2="48.37">
+
<stop offset="0" stop-color="#A0A3A6"/>
+
<stop offset="0.2606" stop-color="#7B7E80"/>
+
<stop offset="0.8182" stop-color="#474B4D"/>
+
<stop offset="1" stop-color="#707577"/>
+
</linearGradient>
<path d="M15.15,48.37c-0.673,0-1.224-0.551-1.224-1.225v-27.35c0-0.673,0.423-1.577,0.94-2.009l8.629-7.198c0.517-0.432,1.491-0.784,2.165-0.784h18.26c0.673,0,1.224,0.552,1.224,1.225v36.12c0,0.674-0.551,1.225-1.224,1.225h-28.77z" fill="url(#SVGID_3_)"/>
<path d="M43.93,47.76h-28.78c-0.673,0-1.224-0.552-1.224-1.224v0.611c0,0.674,0.551,1.225,1.224,1.225h28.78c0.673,0,1.224-0.551,1.224-1.225v-0.611c0,0.65-0.55,1.21-1.22,1.21z" fill="#808080"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="29.54" x2="29.54" y1="39.8" y2="45.46">
+
<stop offset="0" stop-color="#242626"/>
+
<stop offset="1" stop-color="#585C5E"/>
+
</linearGradient>
<rect fill="url(#SVGID_4_)" height="5.511" width="27.55" x="15.76" y="39.8"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="42.09" x2="42.09" y1="19.59" y2="11.02">
+
<stop offset="0" stop-color="#666666"/>
+
<stop offset="1" stop-color="#282828"/>
+
</linearGradient>
<rect fill="url(#SVGID_5_)" height="8.571" width="3.674" x="40.26" y="11.02"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="42.09" x2="42.09" y1="11.49" y2="19.86">
+
<stop offset="0" stop-color="#FFF173"/>
+
<stop offset="0.33" stop-color="#F1BC35"/>
+
<stop offset="0.66" stop-color="#E5B029"/>
+
<stop offset="1" stop-color="#FFA102"/>
+
</linearGradient>
<rect fill="url(#SVGID_6_)" height="7.959" width="2.449" x="40.87" y="11.63"/>
<rect fill="#CBCBCB" height="0.612" width="3.674" x="40.26" y="18.98"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="36.58" x2="36.58" y1="19.59" y2="11.02">
+
<stop offset="0" stop-color="#666666"/>
+
<stop offset="1" stop-color="#282828"/>
+
</linearGradient>
<rect fill="url(#SVGID_7_)" height="8.571" width="3.673" x="34.74" y="11.02"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="36.58" x2="36.58" y1="11.49" y2="19.86">
+
<stop offset="0" stop-color="#FFF173"/>
+
<stop offset="0.33" stop-color="#F1BC35"/>
+
<stop offset="0.66" stop-color="#E5B029"/>
+
<stop offset="1" stop-color="#FFA102"/>
+
</linearGradient>
<rect fill="url(#SVGID_8_)" height="7.959" width="2.449" x="35.36" y="11.63"/>
<rect fill="#CBCBCB" height="0.612" width="3.673" x="34.74" y="18.98"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_9_" x1="31.07" x2="31.07" y1="19.59" y2="11.02">
+
<stop offset="0" stop-color="#666666"/>
+
<stop offset="1" stop-color="#282828"/>
+
</linearGradient>
<rect fill="url(#SVGID_9_)" height="8.571" width="3.673" x="29.24" y="11.02"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10_" x1="31.07" x2="31.07" y1="11.49" y2="19.86">
+
<stop offset="0" stop-color="#FFF173"/>
+
<stop offset="0.33" stop-color="#F1BC35"/>
+
<stop offset="0.66" stop-color="#E5B029"/>
+
<stop offset="1" stop-color="#FFA102"/>
+
</linearGradient>
<rect fill="url(#SVGID_10_)" height="7.959" width="2.449" x="29.85" y="11.63"/>
<rect fill="#CBCBCB" height="0.612" width="3.673" x="29.24" y="18.98"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11_" x1="25.56" x2="25.56" y1="19.59" y2="11.02">
+
<stop offset="0" stop-color="#666666"/>
+
<stop offset="1" stop-color="#282828"/>
+
</linearGradient>
<rect fill="url(#SVGID_11_)" height="8.571" width="3.673" x="23.72" y="11.02"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_12_" x1="25.56" x2="25.56" y1="11.49" y2="19.86">
+
<stop offset="0" stop-color="#FFF173"/>
+
<stop offset="0.33" stop-color="#F1BC35"/>
+
<stop offset="0.66" stop-color="#E5B029"/>
+
<stop offset="1" stop-color="#FFA102"/>
+
</linearGradient>
<rect fill="url(#SVGID_12_)" height="7.959" width="2.449" x="24.34" y="11.63"/>
<rect fill="#CBCBCB" height="0.612" width="3.673" x="23.72" y="18.98"/>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_large_ovi_suite.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g>
-<rect fill="#44A51C" height="37.72" width="52" x="4" y="11.14"/>
-<path d="M17.38,22.47c-5.662,0-8.649,3.887-8.649,9.426,0,5.611,2.19,10.02,8.586,10.02,5.891,0,8.623-3.99,8.623-9.893,0-5.65-2.69-9.56-8.56-9.56zm-0.07,16.41c-3.012,0-3.148-4.285-3.148-7.092,0-2.734,0.234-6.293,3.148-6.293,2.793,0,3.184,3.758,3.184,6.293,0.01,3.27-0.15,7.09-3.18,7.09z" fill="#FFFFFF"/>
-<path d="M33.17,41.91c2.304,0,3.116-1.152,3.665-2.83l4.954-16.36h-4.624l-3.548,14.15-3.339-14.15h-5.479l4.704,16.36c0.51,1.68,1.37,2.83,3.67,2.83z" fill="#FFFFFF"/>
-<path d="M46.56,15.86c-1.707,0-2.875,0.857-2.875,2.441s1.206,2.438,2.875,2.438c1.676,0,2.882-0.854,2.882-2.438,0-1.55-1.27-2.44-2.88-2.44z" fill="#FFFFFF"/>
-<path d="M44.65,41.39c0.39,0.279,0.999,0.523,1.859,0.523,0.905,0,1.492-0.244,1.879-0.523,0.746-0.523,0.746-1.41,0.746-1.893v-16.77h-5.167-0.355c-0.502,0-0.92,0.01-1.209,0.41-0.134,0.184-0.327,0.51-0.327,1.107,0,0.621,0.203,0.924,0.327,1.109,0.289,0.398,0.707,0.4,1.209,0.4,0.162,0,0.302-0.002,0.302-0.002v13.75c-0.01,0.47-0.01,1.36,0.73,1.88z" fill="#FFFFFF"/>
-<rect fill="none" height="60" width="60"/>
-</g>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_large_ovistore.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g>
-<rect fill="none" height="60" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="29.9971" x2="29.9971" y1="11.1475" y2="59">
-<stop offset="0" style="stop-color:#36B5FF"/>
-<stop offset="1" style="stop-color:#1B66D8"/>
-</linearGradient>
-<polygon fill="url(#SVGID_1_)" points="49.745,33.13 50.37,11.55 9.624,11.55 10.797,33.03 3.996,59 55.998,59 "/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="29.9971" x2="29.9971" y1="64.0889" y2="49.3909">
-<stop offset="0" style="stop-color:#36B5FF"/>
-<stop offset="1" style="stop-color:#1B66D8"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2_)" points="3.996,59 10.967,54.038 49.429,54.038 55.998,59 "/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="9.3125" x2="9.3125" y1="11.248" y2="59.7255">
-<stop offset="0" style="stop-color:#5ED2FF"/>
-<stop offset="1" style="stop-color:#277ADF"/>
-</linearGradient>
-<polygon fill="url(#SVGID_3_)" points="9.624,11.55 14.628,16.712 12.73,49.303 3.996,59 "/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="50.6777" x2="50.6777" y1="12.5122" y2="59.2981">
-<stop offset="0" style="stop-color:#5ED2FF"/>
-<stop offset="1" style="stop-color:#277ADF"/>
-</linearGradient>
-<polygon fill="url(#SVGID_4_)" points="50.37,11.55 45.357,16.712 47.254,49.303 55.998,59 "/>
-<polygon fill="#FFFFFF" fill-opacity="0.15" points="50.934,23.129 49.654,12.354 10.34,12.354 8.508,27.796 " stroke-opacity="0.15"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="29.9971" x2="29.9971" y1="12.0908" y2="58.4598">
-<stop offset="0" style="stop-color:#8AD4FF"/>
-<stop offset="0.7697" style="stop-color:#2078FF"/>
-<stop offset="1" style="stop-color:#369EFF"/>
-</linearGradient>
-<path d="M48.939,13.157l5.248,44.234H5.808l5.247-44.234H48.939 M49.654,12.354H10.34L4.902,58.195h50.189 L49.654,12.354L49.654,12.354z" fill="url(#SVGID_5_)"/>
-<polygon fill="#FFFFFF" fill-opacity="0.15" points="4.902,58.195 55.092,58.195 53.709,46.528 5.659,51.811 " stroke-opacity="0.15"/>
-<path d="M42.791,46.192c-0.918,0-1.534-0.296-1.89-0.545c-0.911-0.646-0.911-1.666-0.911-2.101v-9.719 c-0.273-0.046-0.563-0.15-0.813-0.383l-3.05,10.015c-0.444,1.356-1.214,2.733-3.579,2.733c-2.435,0-3.191-1.46-3.578-2.733 l-1.232-4.256c-0.434,4.462-3.059,6.989-7.354,6.989c-4.768,0-7.393-3-7.393-8.448c0-4.933,2.852-7.997,7.441-7.997 c2.109,0,3.829,0.606,5.08,1.773l-0.457-1.572h5.904l1.957,8.226l2.067-8.226h5.257l-0.005,0.011 c0.118-0.008,0.228-0.008,0.325-0.008c0.122,0,0.25-0.003,0.25-0.003h1.143c-1.311-0.291-2.142-1.252-2.142-2.572 c0-1.594,1.212-2.665,3.015-2.665c1.773,0,3.013,1.096,3.013,2.665c0,1.32-0.831,2.282-2.142,2.572h1.902v13.597 c0,0.436,0,1.455-0.904,2.099C44.176,46.008,43.535,46.192,42.791,46.192L42.791,46.192z M20.385,33.666 c-1.146,0-1.613,1.161-1.613,4.005c0,3.184,0.496,4.604,1.613,4.604c1.195,0,1.639-1.247,1.639-4.604 C22.023,35.843,21.738,33.666,20.385,33.666L20.385,33.666z" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M42.791,45.791c-0.812,0-1.352-0.255-1.66-0.472c-0.74-0.525-0.74-1.368-0.74-1.773V33.46 c-0.365-0.008-0.781-0.063-1.078-0.466c-0.086-0.113-0.189-0.277-0.258-0.523l-3.307,10.872c-0.42,1.276-1.096,2.448-3.199,2.448 c-2.158,0-2.828-1.236-3.193-2.448l-2.051-7.079c0.064,0.5,0.096,1.027,0.096,1.582c0,5.049-2.557,7.946-7.016,7.946 c-4.574,0-6.992-2.783-6.992-8.046c0-4.685,2.699-7.597,7.041-7.597c2.898,0,4.986,1.202,6.086,3.404l-0.927-3.201h5.053l2.259,9.51 l2.395-9.51H39.7l-0.054,0.172c0.295-0.169,0.631-0.169,0.916-0.169c0.125,0,0.263-0.002,0.263-0.002h4.374v13.196 c0,0.405,0,1.248-0.734,1.771C44.014,45.632,43.453,45.791,42.791,45.791L42.791,45.791z M20.385,33.265 c-1.771,0-2.015,2.117-2.015,4.406c0,2.475,0.239,5.006,2.015,5.006c1.698,0,2.039-1.916,2.039-5.006 C22.424,34.747,21.738,33.265,20.385,33.265L20.385,33.265z M42.828,29.641c-1.588,0-2.615-0.889-2.615-2.264 c0-1.375,1.027-2.263,2.615-2.263c1.538,0,2.613,0.931,2.613,2.263C45.441,28.752,44.414,29.641,42.828,29.641L42.828,29.641z" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M20.385,44.989c-4.905,0-6.592-3.367-6.592-7.645c0-4.229,2.289-7.196,6.641-7.196 c4.505,0,6.566,2.994,6.566,7.295C27,41.947,24.911,44.989,20.385,44.989z M20.385,32.464c-2.238,0-2.416,2.716-2.416,4.805 c0,2.135,0.104,5.408,2.416,5.408s2.439-2.918,2.439-5.408C22.824,35.329,22.523,32.464,20.385,32.464z M26.126,30.35h4.202 l2.567,10.796l2.716-10.796h3.548l-3.797,12.476c-0.421,1.285-1.046,2.163-2.813,2.163c-1.764,0-2.42-0.878-2.81-2.163L26.126,30.35 z M42.828,28.838c-1.285,0-2.213-0.656-2.213-1.864c0-1.206,0.904-1.861,2.213-1.861c1.232,0,2.21,0.68,2.21,1.861 C45.038,28.182,44.109,28.838,42.828,28.838z M40.791,43.146c0,0.364,0,1.041,0.57,1.443c0.299,0.209,0.767,0.4,1.43,0.4 c0.689,0,1.139-0.189,1.439-0.4c0.57-0.402,0.57-1.079,0.57-1.443V30.35h-3.969c0,0-0.14,0.002-0.27,0.002 c-0.389,0-0.705,0.01-0.928,0.311c-0.106,0.14-0.25,0.394-0.25,0.844c0,0.475,0.144,0.708,0.25,0.848 c0.223,0.3,0.539,0.304,0.928,0.304c0.13,0,0.229,0,0.229,0V43.146z" fill="#FFFFFF"/>
-<path d="M13.822,21.03c4.524,0,6.193-4.23,7.807-8.321c0.154-0.39,0.308-0.776,0.462-1.159h-2.562 c-0.044,0.109-0.088,0.22-0.131,0.327c-1.678,4.25-2.889,6.831-5.576,6.831c-0.659,0-1.195,0.521-1.195,1.162 S13.163,21.03,13.822,21.03z" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M38.071,12.709c1.612,4.091,3.282,8.321,7.806,8.321c0.66,0,1.195-0.52,1.195-1.161s-0.535-1.162-1.195-1.162 c-2.686,0-3.898-2.581-5.574-6.831c-0.043-0.107-0.088-0.218-0.133-0.327h-2.561C37.764,11.933,37.918,12.319,38.071,12.709z" fill-opacity="0.2" stroke-opacity="0.2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="13.1113" x2="46.5898" y1="10.6279" y2="10.6279">
-<stop offset="0" style="stop-color:#F4F4F4"/>
-<stop offset="0.5" style="stop-color:#E1E2E3"/>
-<stop offset="1" style="stop-color:#F4F4F4"/>
-</linearGradient>
-<path d="M45.428,17.934c-2.612,0-3.791-2.581-5.419-6.831C38.283,6.604,35.686,1,29.848,1 s-8.432,5.604-10.158,10.103c-1.627,4.25-2.805,6.831-5.418,6.831c-0.641,0-1.16,0.521-1.16,1.162s0.52,1.161,1.16,1.161 c4.398,0,6.021-4.231,7.588-8.322c1.698-4.429,3.303-8.611,7.99-8.613c4.689,0.002,6.293,4.184,7.99,8.613 c1.568,4.091,3.189,8.322,7.588,8.322c0.641,0,1.162-0.52,1.162-1.161S46.068,17.934,45.428,17.934z" fill="url(#SVGID_6_)"/>
-<rect fill="none" height="60" width="60"/>
-</g>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_large_ovisync.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="29.9995" x2="29.9995" y1="0.3882" y2="59.6489">
-<stop offset="0" style="stop-color:#A6A8AB"/>
-<stop offset="1" style="stop-color:#231F20"/>
-</linearGradient>
-<path d="M0,60V0.306h60V60H0z M50.246,54.316L30,34.174L9.754,54.316H50.246z M54.286,50.297 V10.011L34.04,30.152L54.286,50.297z M5.714,50.297L25.96,30.152L5.714,10.011V50.297z M30,26.133L50.246,5.991H9.754L30,26.133z" fill="url(#SVGID_1_)" fill-opacity="0.2" stroke-opacity="0.2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="30.0005" x2="30.0005" y1="1.0972" y2="58.9473">
-<stop offset="0" style="stop-color:#A9AAAD"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path d="M0.714,59.29V1.017h58.573V59.29 M51.97,55.026L30,33.169L8.03,55.026H51.97z M55.001,52.011V8.295L33.03,30.152L55.001,52.011z M5,52.011l21.97-21.858L5,8.295V52.011z M30,27.138L51.97,5.281H8.03L30,27.138z " fill="url(#SVGID_2_)" fill-opacity="0.4" stroke-opacity="0.4"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="29.9995" x2="29.9995" y1="1.0952" y2="57.5348">
-<stop offset="0" style="stop-color:#F4FCFF"/>
-<stop offset="0.6242" style="stop-color:#C9CED1"/>
-<stop offset="1" style="stop-color:#9CA4A7"/>
-</linearGradient>
-<path d="M1.428,1.017v56.853h57.145V1.017H1.428z M27.98,29.442L4.285,53.018V5.869L27.98,29.442z M6.305,3.859h47.39L30,27.433L6.305,3.859z M30,31.452l23.695,23.574H6.305L30,31.452z M32.021,29.442L55.715,5.869v47.148 L32.021,29.442z" fill="url(#SVGID_3_)"/>
-<g>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="30.0005" x2="30.0005" y1="4.5698" y2="53.605">
-<stop offset="0" style="stop-color:#A6A8AB"/>
-<stop offset="1" style="stop-color:#231F20"/>
-</linearGradient>
-<path d="M20,53.604c-1.924,0-3.583-1.555-3.698-3.462L15.17,32.285H15 c-1.576,0-2.856-1.276-2.856-2.843v-4.264c0-1.567,1.281-2.842,2.856-2.842H27.5v-3.604c-0.361,0.029-0.728,0.043-1.099,0.043 c-2.795,0-5.822-0.82-8.524-2.312c-4.18-2.304-7.19-6.002-7.856-9.653L9.806,5.62l1.147-0.402c1.227-0.43,2.592-0.647,4.056-0.647 c2.797,0,5.831,0.823,8.541,2.317c2.809,1.548,5.054,3.648,6.45,6.008c1.396-2.36,3.642-4.461,6.45-6.009 c2.709-1.494,5.743-2.317,8.54-2.317c1.464,0,2.829,0.218,4.056,0.647l1.149,0.402l-0.217,1.192 c-0.666,3.65-3.676,7.349-7.855,9.654c-2.703,1.49-5.73,2.31-8.523,2.31c-0.372,0-0.738-0.014-1.1-0.043v3.604h12.501 c1.575,0,2.855,1.275,2.855,2.842v4.264c0,1.567-1.28,2.843-2.855,2.843H44.83l-1.132,17.857c-0.115,1.907-1.773,3.462-3.698,3.462 H20z" fill="url(#SVGID_4_)" fill-opacity="0.2" stroke-opacity="0.2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="30" x2="30" y1="5.2808" y2="52.896">
-<stop offset="0" style="stop-color:#A9AAAD"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path d="M33.598,18.065c0.002,0,0.002,0,0.002,0c2.675,0,5.578-0.788,8.177-2.221 c3.998-2.204,6.871-5.714,7.499-9.159l0.107-0.596L48.81,5.888c-1.151-0.403-2.437-0.607-3.819-0.607 c-2.678,0-5.589,0.791-8.194,2.228C33.617,9.26,31.198,11.758,30,14.444c-1.199-2.687-3.617-5.185-6.795-6.936 c-2.607-1.438-5.518-2.228-8.195-2.228c-1.383,0-2.668,0.204-3.819,0.607l-0.573,0.201l0.107,0.596 c0.628,3.445,3.501,6.955,7.499,9.159c2.599,1.433,5.503,2.221,8.178,2.221c0.622,0,1.229-0.042,1.813-0.125v5.106H15 c-1.182,0-2.143,0.957-2.143,2.132v4.264c0,1.176,0.961,2.131,2.143,2.131h0.843L17.014,50.1c0.094,1.54,1.434,2.796,2.986,2.796 h20c1.553,0,2.893-1.256,2.986-2.796l1.171-18.526h0.844c1.181,0,2.143-0.955,2.143-2.131v-4.264c0-1.175-0.962-2.132-2.143-2.132 H31.785V17.94C32.37,18.023,32.976,18.065,33.598,18.065z" fill="url(#SVGID_5_)" fill-opacity="0.4" stroke-opacity="0.4"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="43.3672" x2="16.6225" y1="39.7471" y2="39.7471">
-<stop offset="0" style="stop-color:#BC5800"/>
-<stop offset="0.3" style="stop-color:#A23600"/>
-<stop offset="1" style="stop-color:#D07100"/>
-</linearGradient>
-<path d="M43.572,28.021H16.428l1.299,21.323c0.072,1.17,1.094,2.129,2.273,2.129h20 c1.18,0,2.201-0.959,2.273-2.129L43.572,28.021z" fill="url(#SVGID_6_)"/>
-<path d="M40.272,50.762H19.728c-0.795,0-1.515-0.419-1.939-1.04c0.242,0.992,1.162,1.752,2.211,1.752 h20c1.05,0,1.97-0.76,2.212-1.752C41.788,50.343,41.068,50.762,40.272,50.762z" fill="#600909" fill-opacity="0.7" stroke-opacity="0.7"/>
-<path d="M30,30.864c6.11,0,10.076,0.573,13.367,1.227l0.205-3.359H16.428l0.205,3.359 C19.924,31.438,23.89,30.864,30,30.864z" fill="#600909" fill-opacity="0.4" stroke-opacity="0.4"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="28.8701" x2="31.0122" y1="21.27" y2="21.27">
-<stop offset="0" style="stop-color:#8BC53F"/>
-<stop offset="0.3758" style="stop-color:#33773B"/>
-<stop offset="0.6303" style="stop-color:#004F3C"/>
-<stop offset="1" style="stop-color:#007338"/>
-</linearGradient>
-<rect fill="url(#SVGID_7_)" height="9.238" width="2.142" x="28.929" y="16.651"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="46.4297" x2="13.5703" y1="26.5991" y2="26.5991">
-<stop offset="0" style="stop-color:#BC5800"/>
-<stop offset="0.3" style="stop-color:#A23600"/>
-<stop offset="1" style="stop-color:#D07100"/>
-</linearGradient>
-<path d="M46.43,28.732c0,0.781-0.645,1.42-1.429,1.42H15c-0.785,0-1.429-0.639-1.429-1.42v-4.264 c0-0.782,0.644-1.421,1.429-1.421h30.001c0.784,0,1.429,0.64,1.429,1.421V28.732z" fill="url(#SVGID_8_)"/>
-<path d="M45.001,29.442H15c-0.785,0-1.429-0.64-1.429-1.42v0.71c0,0.781,0.644,1.42,1.429,1.42 h30.001c0.784,0,1.429-0.639,1.429-1.42v-0.71C46.43,28.802,45.785,29.442,45.001,29.442z" fill="#600909" fill-opacity="0.7" stroke-opacity="0.7"/>
-<path d="M45.001,23.046H15c-0.785,0-1.429,0.64-1.429,1.421v0.71c0-0.781,0.644-1.421,1.429-1.421 h30.001c0.784,0,1.429,0.64,1.429,1.421v-0.71C46.43,23.686,45.785,23.046,45.001,23.046z" fill="#FFFFFF" fill-opacity="0.6" stroke-opacity="0.6"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_9_" x1="10.4175" x2="30.0361" y1="5.9038" y2="16.902">
-<stop offset="0" style="stop-color:#A7FF00"/>
-<stop offset="1" style="stop-color:#138F00"/>
-</linearGradient>
-<path d="M22.858,8.13c-3.974-2.19-8.299-2.669-11.43-1.572c0.57,3.138,3.167,6.474,7.142,8.665 c3.973,2.19,8.299,2.669,11.43,1.572C29.429,13.657,26.833,10.32,22.858,8.13z" fill="url(#SVGID_9_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10_" x1="42.1152" x2="39.5384" y1="18.2144" y2="12.261">
-<stop offset="0" style="stop-color:#A7FF00"/>
-<stop offset="1" style="stop-color:#138F00"/>
-</linearGradient>
-<path d="M37.142,8.13c3.974-2.19,8.299-2.669,11.43-1.572c-0.569,3.138-3.167,6.474-7.142,8.665 c-3.973,2.19-8.299,2.669-11.43,1.572C30.571,13.657,33.167,10.32,37.142,8.13z" fill="url(#SVGID_10_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11_" x1="18.8848" x2="20.6575" y1="18.1733" y2="11.8801">
-<stop offset="0" style="stop-color:#A7FF00"/>
-<stop offset="1" style="stop-color:#138F00"/>
-</linearGradient>
-<path d="M18.57,15.223c3.973,2.19,8.299,2.669,11.43,1.572c0,0-7.308-3.236-9.777-4.551 c-3.304-1.759-8.794-5.685-8.794-5.685C11.999,9.696,14.596,13.032,18.57,15.223z" fill="url(#SVGID_11_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_12_" x1="48.8037" x2="29.4835" y1="4.1372" y2="15.7295">
-<stop offset="0" style="stop-color:#A7FF00"/>
-<stop offset="1" style="stop-color:#138F00"/>
-</linearGradient>
-<path d="M37.142,8.13c-3.975,2.19-6.57,5.527-7.142,8.665c0,0,6.843-2.558,9.867-4.285 c3.393-1.937,8.704-5.952,8.704-5.952C45.44,5.461,41.115,5.94,37.142,8.13z" fill="url(#SVGID_12_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_13_" x1="20.7144" x2="20.7144" y1="6.3657" y2="15.8773">
-<stop offset="0" style="stop-color:#D2FF8A"/>
-<stop offset="1" style="stop-color:#138F00"/>
-</linearGradient>
-<path d="M22.858,8.13c-3.974-2.19-8.299-2.669-11.43-1.572c3.953-0.562,7.701,0.2,11.083,2.193 c3.334,1.965,5.657,4.691,7.488,8.043C29.429,13.657,26.833,10.32,22.858,8.13z" fill="url(#SVGID_13_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_14_" x1="39.2861" x2="39.2861" y1="6.0693" y2="16.0647">
-<stop offset="0" style="stop-color:#D2FF8A"/>
-<stop offset="1" style="stop-color:#138F00"/>
-</linearGradient>
-<path d="M37.487,8.751c5.281-3.037,11.084-2.193,11.084-2.193C45.44,5.461,41.115,5.94,37.142,8.13 c-3.975,2.19-6.57,5.527-7.142,8.665C30,16.794,31.95,11.937,37.487,8.751z" fill="url(#SVGID_14_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_15_" x1="18.8848" x2="20.6575" y1="18.1733" y2="11.8801">
-<stop offset="0" style="stop-color:#A7FF00"/>
-<stop offset="0.2303" style="stop-color:#D6FF61"/>
-<stop offset="1" style="stop-color:#138F00"/>
-</linearGradient>
-<path d="M18.916,14.601c-5.35-2.86-7.487-8.042-7.487-8.042 c0.57,3.138,3.167,6.474,7.142,8.665c3.973,2.19,8.299,2.669,11.43,1.572C30,16.794,25,17.854,18.916,14.601z" fill="url(#SVGID_15_)" fill-opacity="0.6" stroke-opacity="0.6"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_16_" x1="40.8457" x2="39.6931" y1="17.7969" y2="13.275">
-<stop offset="0" style="stop-color:#A7FF00"/>
-<stop offset="0.2303" style="stop-color:#D6FF61"/>
-<stop offset="1" style="stop-color:#138F00"/>
-</linearGradient>
-<path d="M41.085,14.601c-3.312,1.95-6.667,2.734-11.085,2.194 c3.131,1.097,7.457,0.618,11.43-1.572c3.975-2.19,6.572-5.527,7.142-8.665C47.307,9.783,45.313,12.11,41.085,14.601z" fill="url(#SVGID_16_)" fill-opacity="0.6" stroke-opacity="0.6"/>
-</g>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_17_" x1="29.9995" x2="29.9995" y1="1.0952" y2="57.5348">
-<stop offset="0" style="stop-color:#C9CDCE"/>
-<stop offset="1" style="stop-color:#6E7273"/>
-</linearGradient>
-<path d="M1.428,1.017v56.853h57.145V1.017H1.428z M57.858,57.157H2.142V1.727h55.716V57.157z" fill="url(#SVGID_17_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_18_" x1="30" x2="30" y1="1.8057" y2="57.1214">
-<stop offset="0" style="stop-color:#E6E9E8"/>
-<stop offset="1" style="stop-color:#ADB2B5"/>
-</linearGradient>
-<path d="M2.142,1.727v55.43h55.716V1.727H2.142z M57.144,56.447H2.856V2.438h54.287V56.447z" fill="url(#SVGID_18_)"/>
-</g>
-</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_large_psm.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g>
+<rect fill="none" height="60" width="60"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -126 -15.001)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="137.4561" x2="174.9032" y1="-47.1479" y2="-47.1479">
+<stop offset="0" style="stop-color:#AFB6BA"/>
+<stop offset="0.2667" style="stop-color:#DDE3E6"/>
+<stop offset="0.6545" style="stop-color:#949DA1"/>
+<stop offset="0.8788" style="stop-color:#D9DFE1"/>
+<stop offset="1" style="stop-color:#ADB3B5"/>
+</linearGradient>
+<path d="M48.544,55.771c0,0.678-0.55,1.229-1.228,1.229H12.685c-0.679,0-1.229-0.551-1.229-1.229V8.522 c0-0.678,0.55-1.228,1.229-1.228h34.632c0.679,0,1.229,0.55,1.229,1.228L48.544,55.771L48.544,55.771z" fill="url(#SVGID_1_)"/>
+<rect fill-opacity="0.4" height="36.815" width="29.726" x="15.138" y="12.204"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -126 -15.001)" gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="137.4561" x2="174.5449" y1="-70.772" y2="-70.772">
+<stop offset="0" style="stop-color:#808080"/>
+<stop offset="0.5" style="stop-color:#231F20"/>
+<stop offset="1" style="stop-color:#808080"/>
+</linearGradient>
+<path d="M47.316,55.771H12.685c-0.679,0-1.229-0.551-1.229-1.229v0.615v0.611 c0,0.68,0.55,1.229,1.229,1.229h34.632c0.679,0,1.229-0.549,1.229-1.229v-0.611v-0.615C48.544,55.222,47.995,55.771,47.316,55.771z" fill="url(#SVGID_2_)" fill-opacity="0.4"/>
+<path d="M47.316,7.295H12.685c-0.679,0-1.229,0.55-1.229,1.228v0.613 c0-0.678,0.55-1.227,1.229-1.227h34.632c0.679,0,1.229,0.549,1.229,1.227V8.522C48.544,7.845,47.995,7.295,47.316,7.295z" fill="#FFFFFF" fill-opacity="0.3"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -126 -15.001)" gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="148.2314" x2="163.7695" y1="-20.1479" y2="-20.1479">
+<stop offset="0" style="stop-color:#A8B1B3"/>
+<stop offset="0.303" style="stop-color:#FFFFFF"/>
+<stop offset="0.7212" style="stop-color:#909496"/>
+<stop offset="1" style="stop-color:#D1D6D7"/>
+</linearGradient>
+<path d="M37.77,7.295V4.839c0-1.016-0.793-1.84-1.769-1.84H23.999c-0.977,0-1.768,0.824-1.768,1.84v2.456 H37.77z" fill="url(#SVGID_3_)"/>
+<path d="M36.001,2.999H23.999c-0.977,0-1.768,0.824-1.768,1.84v0.615 c0-1.018,0.791-1.842,1.768-1.842h12.003c0.977,0,1.768,0.824,1.768,1.842V4.839C37.77,3.823,36.977,2.999,36.001,2.999z" fill="#FFFFFF" fill-opacity="0.4"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -126 -15.001)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="141.6563" x2="170.6951" y1="-54.5112" y2="-54.5112">
+<stop offset="0" style="stop-color:#5AA913"/>
+<stop offset="0.3212" style="stop-color:#A8F222"/>
+<stop offset="0.7697" style="stop-color:#58A813"/>
+<stop offset="1" style="stop-color:#8FD31D"/>
+</linearGradient>
+<rect fill="url(#SVGID_4_)" height="19.021" width="29.726" x="15.138" y="30"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="0.613" width="29.726" x="15.138" y="30"/>
+<rect fill="#FFFFFF" fill-opacity="0.1" height="19.021" width="2.455" x="41.793" y="30"/>
+<rect fill-opacity="0.4" height="0.613" width="15.538" x="22.231" y="6.682"/>
+<rect fill-opacity="0.2" height="0.614" width="15.538" x="22.231" y="6.067"/>
+<rect fill-opacity="0.4" height="0.613" width="29.726" x="15.138" y="48.408"/>
+<rect fill-opacity="0.2" height="0.613" width="29.726" x="15.138" y="47.794"/>
+<rect fill="#FFFFFF" fill-opacity="0.3" height="0.613" width="29.726" x="15.138" y="49.021"/>
+<rect fill-opacity="0.3" height="0.613" width="29.726" x="15.138" y="11.591"/>
+<path d="M15.138,12.204v36.815h29.726V12.204H15.138z M44.249,48.408H15.751v-35.59h28.497L44.249,48.408 L44.249,48.408z" fill-opacity="0.1"/>
+<rect fill-opacity="0.3" height="1.227" width="29.726" x="15.138" y="12.204"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -126 -15.001)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="137.4561" x2="174.5449" y1="-68.0103" y2="-68.0103">
+<stop offset="0" style="stop-color:#A6A8AB"/>
+<stop offset="0.5" style="stop-color:#231F20"/>
+<stop offset="1" style="stop-color:#A6A8AB"/>
+</linearGradient>
+<rect fill="url(#SVGID_5_)" fill-opacity="0.3" height="0.611" width="37.089" x="11.456" y="52.705"/>
+<rect fill="#FFFFFF" fill-opacity="0.3" height="0.613" width="37.089" x="11.456" y="53.316"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="34.363" width="12.542" x="20.047" y="13.431"/>
+<path d="M31.69,41.021c-4.318,0-8.339-2.324-10.49-6.063c-3.324-5.779-1.327-13.185,4.451-16.51 c1.828-1.051,3.904-1.606,6.006-1.606c1.105,0,2.208,0.151,3.277,0.449c0.316,0.088,0.537,0.374,0.545,0.702 c0.006,0.328-0.203,0.622-0.516,0.723c-0.549,0.178-1.029,0.387-1.471,0.641c-3.531,2.031-4.752,6.558-2.72,10.09 c1.314,2.287,3.772,3.707,6.413,3.707c1.285,0,2.558-0.342,3.679-0.986c0.44-0.256,0.876-0.576,1.292-0.951 c0.141-0.127,0.319-0.191,0.499-0.191c0.133,0,0.266,0.035,0.385,0.107c0.281,0.17,0.418,0.504,0.336,0.822 c-0.818,3.174-2.83,5.82-5.665,7.453C35.877,40.462,33.796,41.021,31.69,41.021L31.69,41.021z" fill-opacity="0.3"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="31.4941" x2="31.4941" y1="17.105" y2="40.8411">
+<stop offset="0" style="stop-color:#F1D152"/>
+<stop offset="0.4788" style="stop-color:#E39700"/>
+<stop offset="1" style="stop-color:#EDBA00"/>
+</linearGradient>
+<path d="M41.237,32.812c-3.896,2.242-8.87,0.9-11.109-2.994c-2.24-3.896-0.898-8.867,2.994-11.106 c0.522-0.299,1.066-0.526,1.612-0.703c-2.831-0.79-5.962-0.497-8.712,1.084c-5.433,3.126-7.303,10.062-4.178,15.494 c3.126,5.432,10.063,7.301,15.496,4.176c2.747-1.582,4.581-4.145,5.315-6.994C42.227,32.156,41.757,32.511,41.237,32.812z" fill="url(#SVGID_6_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="31.1113" x2="31.1113" y1="18.7026" y2="41.0685">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0.5" style="stop-color:#FFE34F"/>
+<stop offset="1" style="stop-color:#FCEE21"/>
+</linearGradient>
+<path d="M31.69,39.533c-3.788,0-7.313-2.037-9.201-5.316c-2.914-5.067-1.163-11.562,3.904-14.478 c1.603-0.921,3.422-1.408,5.264-1.408c0.211,0,0.424,0.006,0.635,0.02c-3.887,2.559-5.159,7.753-2.809,11.839 c1.579,2.746,4.531,4.453,7.703,4.453c1.37,0,2.727-0.322,3.956-0.936c-0.919,1.836-2.353,3.363-4.173,4.41 C35.36,39.042,33.536,39.533,31.69,39.533L31.69,39.533z" fill="url(#SVGID_7_)"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_import.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="30" width="30"/>
+<polygon points="26,6 26,1 20,1 20,6 17,6 23,14 29,6 "/>
+<path d="M21,21H7V3h11.006V1H8C6.35,1,5,2.35,5,4v22c0,1.65,1.35,3,3,3h12c1.65,0,3-1.35,3-3v-8.865l-2-2.667V21z M10,26H7v-2h3V26z M14,27c-1.104,0-2-0.896-2-2s0.896-2,2-2c1.105,0,2,0.896,2,2S15.105,27,14,27z M21,26h-3v-2h3V26z"/>
+</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_ovistore.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<path d="M14.54,22.262c-0.276,0-0.479,0.133-0.639,0.418c-0.175,0.316-0.265,0.792-0.265,1.413c0,1.836,0.68,1.836,0.903,1.836 c0.278,0,0.479-0.134,0.635-0.421c0.171-0.316,0.257-0.792,0.257-1.415c0-0.622-0.086-1.099-0.257-1.415 C15.021,22.394,14.818,22.262,14.54,22.262z"/>
-<path d="M23.822,22.263c-0.183,0-0.339,0.11-0.479,0.336c-0.13,0.212-0.207,0.476-0.229,0.786h1.362 c-0.021-0.313-0.094-0.578-0.215-0.793C24.074,22.263,23.885,22.263,23.822,22.263z"/>
-<path d="M8.616,10.402c-1.563,0-1.686,1.897-1.686,3.354c0,1.493,0.069,3.776,1.686,3.776c1.614,0,1.703-2.038,1.703-3.776 C10.319,12.404,10.109,10.402,8.616,10.402z"/>
-<path d="M21.452,4C20.397,1.653,17.91,0,15,0S9.603,1.653,8.548,4H2v25h26V4H21.452z M24.5,5.399c0.836,0,1.5,0.475,1.5,1.3 C26,7.543,25.37,8,24.5,8S23,7.543,23,6.7C23,5.856,23.613,5.399,24.5,5.399z M22.574,9.173c0.154-0.211,0.377-0.218,0.647-0.218 c0.09,0,0.188,0,0.188,0L26,9v8.711c0,0.255,0,0.728-0.397,1.008C25.396,18.867,25.079,19,24.598,19c-0.463,0-0.612-0.18-0.82-0.326 c-0.395-0.279-0.395-0.753-0.395-1.008v-7.098c0,0-0.071,0-0.161,0c-0.271,0-0.493-0.001-0.647-0.212 c-0.073-0.098-0.174-0.262-0.174-0.592C22.4,9.448,22.501,9.271,22.574,9.173z M15,1.625c1.813,0,3.377,0.96,4.249,2.375h-8.498 C11.623,2.585,13.188,1.625,15,1.625z M7.36,26.744c-0.371,0.301-0.935,0.455-1.676,0.455c-0.413,0-0.758-0.029-1.026-0.084 c-0.26-0.055-0.486-0.123-0.67-0.203l-0.12-0.053v-1.4l0.298,0.166c0.167,0.094,0.378,0.177,0.625,0.246 c0.25,0.07,0.521,0.105,0.806,0.105c0.223,0,0.389-0.045,0.492-0.137c0.098-0.086,0.145-0.219,0.145-0.409 c0-0.089-0.016-0.168-0.048-0.243c-0.03-0.066-0.087-0.139-0.168-0.209c-0.06-0.051-0.21-0.152-0.574-0.337 c-0.469-0.23-0.788-0.43-0.972-0.608c-0.188-0.183-0.319-0.379-0.387-0.585c-0.067-0.194-0.101-0.429-0.101-0.696 c0-0.555,0.201-0.996,0.598-1.309c0.379-0.305,0.872-0.459,1.466-0.459c0.356,0,0.667,0.029,0.926,0.085 c0.263,0.058,0.482,0.126,0.668,0.208l0.12,0.053v1.392l-0.296-0.161c-0.174-0.094-0.384-0.178-0.625-0.249 c-0.238-0.073-0.454-0.108-0.645-0.108c-0.184,0-0.319,0.041-0.411,0.129c-0.092,0.086-0.134,0.193-0.134,0.338 c0,0.078,0.015,0.143,0.044,0.188c0.042,0.061,0.095,0.119,0.159,0.172c0.072,0.055,0.248,0.154,0.524,0.295 c0.438,0.219,0.747,0.4,0.942,0.557c0.212,0.17,0.371,0.371,0.471,0.6c0.1,0.226,0.148,0.504,0.148,0.851 C7.94,25.957,7.745,26.432,7.36,26.744z M11.795,26.958l-0.129,0.05c-0.117,0.044-0.268,0.088-0.453,0.128 c-0.178,0.042-0.403,0.062-0.703,0.062c-0.598,0-1.053-0.18-1.351-0.537c-0.289-0.347-0.436-0.843-0.436-1.475v-2.827H7.969v-1.291 h0.754v-0.675l1.71-0.893v1.567h1.277v1.291h-1.276v2.705c0,0.438,0.06,0.636,0.11,0.724c0.033,0.059,0.103,0.137,0.319,0.137 c0.114,0,0.228-0.017,0.338-0.049c0.119-0.032,0.22-0.07,0.304-0.113l0.289-0.143V26.958z M8.491,19C5.147,19,4,16.729,4,13.847 C4,11,5.559,9,8.525,9C11.594,9,13,11.017,13,13.916C12.998,16.95,11.576,19,8.491,19z M16.461,26.398 c-0.473,0.531-1.119,0.801-1.921,0.801c-0.8,0-1.448-0.27-1.927-0.801c-0.471-0.526-0.71-1.302-0.71-2.305 c0-0.995,0.234-1.768,0.695-2.297c0.469-0.538,1.122-0.812,1.942-0.812c0.813,0,1.465,0.278,1.934,0.825 c0.461,0.536,0.694,1.305,0.694,2.283C17.168,25.097,16.93,25.872,16.461,26.398z M15.383,17.523L12.859,9h2.934l1.793,7.375 L19.484,9h2.477l-2.652,8.523C19.016,18.4,18.578,19,17.346,19C16.112,19,15.656,18.4,15.383,17.523z M21.17,22.447l-0.25-0.063 c-0.121-0.029-0.238-0.045-0.359-0.045c-0.383,0-0.629,0.097-0.752,0.295c-0.098,0.156-0.213,0.488-0.213,1.179v3.309h-1.71v-4.786 c0-0.252-0.011-0.607-0.028-1.061l-0.008-0.208h1.64c0,0,0.038,0.28,0.045,0.332c0.05-0.054,0.104-0.103,0.161-0.147 c0.227-0.176,0.49-0.267,0.785-0.267c0.189,0,0.373,0.026,0.545,0.076l0.145,0.042V22.447z M26.203,24.67h-3.102 c0.022,0.383,0.115,0.683,0.275,0.893c0.179,0.232,0.434,0.346,0.779,0.346c0.344,0,0.644-0.024,0.893-0.072 c0.245-0.051,0.463-0.117,0.645-0.201l0.283-0.129v1.35l-0.116,0.053c-0.216,0.099-0.47,0.172-0.756,0.219 c-0.284,0.049-0.688,0.073-1.2,0.073c-0.833,0-1.477-0.271-1.911-0.803c-0.425-0.521-0.64-1.284-0.64-2.267 c0-0.972,0.207-1.742,0.617-2.292c0.423-0.566,1.046-0.854,1.852-0.854c0.821,0,1.434,0.271,1.818,0.802 c0.373,0.509,0.563,1.277,0.563,2.281V24.67z"/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_page_1_2.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M6.249,10.773H6.213l-2.035,1.098l-0.306-1.206l2.557-1.368H7.78V21H6.249V10.773z"/>
-<path d="M19.811,21v-0.973l1.242-1.206c2.988-2.845,4.357-4.357,4.357-6.122c0-1.188-0.559-2.286-2.305-2.286 c-1.063,0-1.945,0.54-2.484,0.99l-0.505-1.116c0.792-0.666,1.963-1.188,3.295-1.188c2.521,0,3.583,1.729,3.583,3.403 c0,2.16-1.566,3.906-4.033,6.283l-0.918,0.864v0.036h5.239V21H19.811z"/>
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<polygon points="14,23 13,23 16,7 17,7 14,23 "/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_page_1_3.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M6.249,10.773H6.213l-2.034,1.098l-0.306-1.206L6.43,9.297h1.35V21h-1.53V10.773z"/>
-<path d="M20.188,19.199c0.45,0.271,1.477,0.721,2.593,0.721c2.017,0,2.664-1.278,2.646-2.269c-0.018-1.639-1.494-2.341-3.025-2.341 h-0.882v-1.188h0.882c1.152,0,2.611-0.595,2.611-1.98c0-0.937-0.594-1.765-2.053-1.765c-0.936,0-1.836,0.414-2.34,0.774 l-0.433-1.152c0.63-0.45,1.818-0.9,3.079-0.9c2.305,0,3.349,1.368,3.349,2.791c0,1.224-0.738,2.25-2.161,2.772v0.036 c1.441,0.27,2.594,1.351,2.611,2.989c0,1.872-1.477,3.511-4.268,3.511c-1.314,0-2.467-0.414-3.043-0.792L20.188,19.199z"/>
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<polygon points="14,23 13,23 16,7 17,7 14,23 "/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_page_1_4.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M6.249,10.773H6.213l-2.034,1.098l-0.306-1.206L6.43,9.297h1.35V21h-1.53V10.773z"/>
-<path d="M24.707,21v-3.205H19.27v-1.026l5.223-7.472h1.71v7.273h1.639v1.225h-1.639V21H24.707z M24.707,16.57v-3.907 c0-0.611,0.019-1.224,0.055-1.836h-0.055c-0.359,0.684-0.647,1.188-0.972,1.729l-2.862,3.979v0.035H24.707z"/>
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<polygon points="14,23 13,23 16,7 17,7 14,23 "/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_page_1_5.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M6.249,10.773H6.213l-2.034,1.098l-0.306-1.206L6.43,9.297h1.35V21h-1.53V10.773z"/>
-<path d="M26.797,10.629h-4.466l-0.45,3.007c0.27-0.036,0.521-0.054,0.954-0.054c0.919,0,1.801,0.18,2.521,0.63 c0.919,0.504,1.675,1.53,1.675,2.989c0,2.286-1.818,3.997-4.357,3.997c-1.278,0-2.341-0.36-2.917-0.721l0.396-1.206 c0.486,0.288,1.44,0.648,2.521,0.648c1.477,0,2.772-0.973,2.755-2.539c0-1.513-1.026-2.574-3.349-2.574 c-0.685,0-1.206,0.054-1.639,0.107l0.757-5.617h5.6V10.629z"/>
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<polygon points="14,23 13,23 16,7 17,7 14,23 "/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_page_2_2.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M2.81,21v-0.973l1.243-1.206c2.989-2.845,4.357-4.357,4.357-6.122c0-1.188-0.559-2.286-2.305-2.286 c-1.063,0-1.945,0.54-2.485,0.99l-0.504-1.116c0.792-0.666,1.963-1.188,3.295-1.188c2.521,0,3.583,1.729,3.583,3.403 c0,2.16-1.566,3.906-4.033,6.283l-0.918,0.864v0.036h5.239V21H2.81z"/>
-<path d="M19.811,21v-0.973l1.242-1.206c2.988-2.845,4.357-4.357,4.357-6.122c0-1.188-0.559-2.286-2.305-2.286 c-1.063,0-1.945,0.54-2.484,0.99l-0.505-1.116c0.792-0.666,1.963-1.188,3.295-1.188c2.521,0,3.583,1.729,3.583,3.403 c0,2.16-1.566,3.906-4.033,6.283l-0.918,0.864v0.036h5.239V21H19.811z"/>
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<polygon points="14,23 13,23 16,7 17,7 14,23 "/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_page_2_3.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M2.811,21v-0.973l1.242-1.206c2.988-2.845,4.357-4.357,4.357-6.122c0-1.188-0.559-2.286-2.305-2.286 c-1.063,0-1.945,0.54-2.484,0.99l-0.505-1.116c0.792-0.666,1.963-1.188,3.295-1.188c2.521,0,3.583,1.729,3.583,3.403 c0,2.16-1.566,3.906-4.033,6.283l-0.918,0.864v0.036h5.239V21H2.811z"/>
-<path d="M20.188,19.199c0.45,0.271,1.477,0.721,2.593,0.721c2.017,0,2.664-1.278,2.646-2.269c-0.018-1.639-1.494-2.341-3.025-2.341 h-0.882v-1.188h0.882c1.152,0,2.611-0.595,2.611-1.98c0-0.937-0.594-1.765-2.053-1.765c-0.936,0-1.836,0.414-2.34,0.774 l-0.433-1.152c0.63-0.45,1.818-0.9,3.079-0.9c2.305,0,3.349,1.368,3.349,2.791c0,1.224-0.738,2.25-2.161,2.772v0.036 c1.441,0.27,2.594,1.351,2.611,2.989c0,1.872-1.477,3.511-4.268,3.511c-1.314,0-2.467-0.414-3.043-0.792L20.188,19.199z"/>
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<polygon points="14,23 13,23 16,7 17,7 14,23 "/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_page_2_4.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M2.811,21v-0.973l1.242-1.206c2.988-2.845,4.357-4.357,4.357-6.122c0-1.188-0.559-2.286-2.305-2.286 c-1.063,0-1.945,0.54-2.484,0.99l-0.505-1.116c0.792-0.666,1.963-1.188,3.295-1.188c2.521,0,3.583,1.729,3.583,3.403 c0,2.16-1.566,3.906-4.033,6.283l-0.918,0.864v0.036h5.239V21H2.811z"/>
-<path d="M24.707,21v-3.205H19.27v-1.026l5.223-7.472h1.71v7.273h1.639v1.225h-1.639V21H24.707z M24.707,16.57v-3.907 c0-0.611,0.019-1.224,0.055-1.836h-0.055c-0.359,0.684-0.647,1.188-0.972,1.729l-2.862,3.979v0.035H24.707z"/>
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<polygon points="14,23 13,23 16,7 17,7 14,23 "/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_page_2_5.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M2.811,21v-0.973l1.242-1.206c2.988-2.845,4.357-4.357,4.357-6.122c0-1.188-0.559-2.286-2.305-2.286 c-1.063,0-1.945,0.54-2.484,0.99l-0.505-1.116c0.792-0.666,1.963-1.188,3.295-1.188c2.521,0,3.583,1.729,3.583,3.403 c0,2.16-1.566,3.906-4.033,6.283l-0.918,0.864v0.036h5.239V21H2.811z"/>
-<path d="M26.797,10.629h-4.466l-0.45,3.007c0.27-0.036,0.521-0.054,0.954-0.054c0.919,0,1.801,0.18,2.521,0.63 c0.919,0.504,1.675,1.53,1.675,2.989c0,2.286-1.818,3.997-4.357,3.997c-1.278,0-2.341-0.36-2.917-0.721l0.396-1.206 c0.486,0.288,1.44,0.648,2.521,0.648c1.477,0,2.772-0.973,2.755-2.539c0-1.513-1.026-2.574-3.349-2.574 c-0.685,0-1.206,0.054-1.639,0.107l0.757-5.617h5.6V10.629z"/>
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<polygon points="14,23 13,23 16,7 17,7 14,23 "/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_page_3_3.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M3.188,19.199c0.45,0.271,1.477,0.721,2.593,0.721c2.017,0,2.664-1.278,2.646-2.269c-0.018-1.639-1.494-2.341-3.025-2.341 H4.521v-1.188h0.882c1.152,0,2.611-0.595,2.611-1.98c0-0.937-0.594-1.765-2.053-1.765c-0.936,0-1.836,0.414-2.34,0.774L3.188,9.999 c0.63-0.45,1.818-0.9,3.079-0.9c2.305,0,3.349,1.368,3.349,2.791c0,1.224-0.738,2.25-2.161,2.772v0.036 c1.441,0.27,2.594,1.351,2.611,2.989c0,1.872-1.477,3.511-4.268,3.511c-1.314,0-2.467-0.414-3.043-0.792L3.188,19.199z"/>
-<path d="M20.188,19.199c0.45,0.271,1.477,0.721,2.593,0.721c2.017,0,2.664-1.278,2.646-2.269c-0.018-1.639-1.494-2.341-3.025-2.341 h-0.882v-1.188h0.882c1.152,0,2.611-0.595,2.611-1.98c0-0.937-0.594-1.765-2.053-1.765c-0.936,0-1.836,0.414-2.34,0.774 l-0.433-1.152c0.63-0.45,1.818-0.9,3.079-0.9c2.305,0,3.349,1.368,3.349,2.791c0,1.224-0.738,2.25-2.161,2.772v0.036 c1.441,0.27,2.594,1.351,2.611,2.989c0,1.872-1.477,3.511-4.268,3.511c-1.314,0-2.467-0.414-3.043-0.792L20.188,19.199z"/>
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<polygon points="14,23 13,23 16,7 17,7 14,23 "/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_page_3_4.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M3.188,19.199c0.45,0.271,1.477,0.721,2.593,0.721c2.017,0,2.664-1.278,2.646-2.269c-0.018-1.639-1.494-2.341-3.025-2.341 H4.521v-1.188h0.882c1.152,0,2.611-0.595,2.611-1.98c0-0.937-0.594-1.765-2.053-1.765c-0.936,0-1.836,0.414-2.34,0.774L3.188,9.999 c0.63-0.45,1.818-0.9,3.079-0.9c2.305,0,3.349,1.368,3.349,2.791c0,1.224-0.738,2.25-2.161,2.772v0.036 c1.441,0.27,2.594,1.351,2.611,2.989c0,1.872-1.477,3.511-4.268,3.511c-1.314,0-2.467-0.414-3.043-0.792L3.188,19.199z"/>
-<path d="M24.707,21v-3.205H19.27v-1.026l5.223-7.472h1.71v7.273h1.639v1.225h-1.639V21H24.707z M24.707,16.57v-3.907 c0-0.611,0.019-1.224,0.055-1.836h-0.055c-0.359,0.684-0.647,1.188-0.972,1.729l-2.862,3.979v0.035H24.707z"/>
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<polygon points="14,23 13,23 16,7 17,7 14,23 "/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_page_3_5.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M3.188,19.199c0.45,0.271,1.477,0.721,2.593,0.721c2.017,0,2.664-1.278,2.646-2.269c-0.018-1.639-1.494-2.341-3.025-2.341 H4.521v-1.188h0.882c1.152,0,2.611-0.595,2.611-1.98c0-0.937-0.594-1.765-2.053-1.765c-0.936,0-1.836,0.414-2.34,0.774L3.188,9.999 c0.63-0.45,1.818-0.9,3.079-0.9c2.305,0,3.349,1.368,3.349,2.791c0,1.224-0.738,2.25-2.161,2.772v0.036 c1.441,0.27,2.594,1.351,2.611,2.989c0,1.872-1.477,3.511-4.268,3.511c-1.314,0-2.467-0.414-3.043-0.792L3.188,19.199z"/>
-<path d="M26.797,10.629h-4.466l-0.45,3.007c0.27-0.036,0.521-0.054,0.954-0.054c0.919,0,1.801,0.18,2.521,0.63 c0.919,0.504,1.675,1.53,1.675,2.989c0,2.286-1.818,3.997-4.357,3.997c-1.278,0-2.341-0.36-2.917-0.721l0.396-1.206 c0.486,0.288,1.44,0.648,2.521,0.648c1.477,0,2.772-0.973,2.755-2.539c0-1.513-1.026-2.574-3.349-2.574 c-0.685,0-1.206,0.054-1.639,0.107l0.757-5.617h5.6V10.629z"/>
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<polygon points="14,23 13,23 16,7 17,7 14,23 "/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_page_4_4.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M7.707,21v-3.205H2.27v-1.026l5.223-7.472h1.71v7.273h1.639v1.225H9.202V21H7.707z M7.707,16.57v-3.907 c0-0.611,0.019-1.224,0.055-1.836H7.707c-0.359,0.684-0.647,1.188-0.972,1.729l-2.862,3.979v0.035H7.707z"/>
-<path d="M24.707,21v-3.205H19.27v-1.026l5.223-7.472h1.71v7.273h1.639v1.225h-1.639V21H24.707z M24.707,16.57v-3.907 c0-0.611,0.019-1.224,0.055-1.836h-0.055c-0.359,0.684-0.647,1.188-0.972,1.729l-2.862,3.979v0.035H24.707z"/>
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<polygon points="14,23 13,23 16,7 17,7 14,23 "/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_page_4_5.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M7.707,21v-3.205H2.27v-1.026l5.223-7.472h1.71v7.273h1.639v1.225H9.202V21H7.707z M7.707,16.57v-3.907 c0-0.611,0.019-1.224,0.055-1.836H7.707c-0.359,0.684-0.647,1.188-0.972,1.729l-2.862,3.979v0.035H7.707z"/>
-<path d="M26.797,10.629h-4.466l-0.45,3.007c0.27-0.036,0.521-0.054,0.954-0.054c0.919,0,1.801,0.18,2.521,0.63 c0.919,0.504,1.675,1.53,1.675,2.989c0,2.286-1.818,3.997-4.357,3.997c-1.278,0-2.341-0.36-2.917-0.721l0.396-1.206 c0.486,0.288,1.44,0.648,2.521,0.648c1.477,0,2.772-0.973,2.755-2.539c0-1.513-1.026-2.574-3.349-2.574 c-0.685,0-1.206,0.054-1.639,0.107l0.757-5.617h5.6V10.629z"/>
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<polygon points="14,23 13,23 16,7 17,7 14,23 "/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_page_5_5.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M9.797,10.629H5.331l-0.45,3.007c0.27-0.036,0.521-0.054,0.954-0.054c0.919,0,1.801,0.18,2.521,0.63 c0.919,0.504,1.675,1.53,1.675,2.989c0,2.286-1.818,3.997-4.357,3.997c-1.278,0-2.341-0.36-2.917-0.721l0.396-1.206 c0.486,0.288,1.44,0.648,2.521,0.648c1.477,0,2.772-0.973,2.755-2.539c0-1.513-1.026-2.574-3.349-2.574 c-0.685,0-1.206,0.054-1.639,0.107l0.757-5.617h5.6V10.629z"/>
-<path d="M26.797,10.629h-4.466l-0.45,3.007c0.27-0.036,0.521-0.054,0.954-0.054c0.919,0,1.801,0.18,2.521,0.63 c0.919,0.504,1.675,1.53,1.675,2.989c0,2.286-1.818,3.997-4.357,3.997c-1.278,0-2.341-0.36-2.917-0.721l0.396-1.206 c0.486,0.288,1.44,0.648,2.521,0.648c1.477,0,2.772-0.973,2.755-2.539c0-1.513-1.026-2.574-3.349-2.574 c-0.685,0-1.206,0.054-1.639,0.107l0.757-5.617h5.6V10.629z"/>
-<g fill-opacity="0.5" stroke-opacity="0.5">
-<rect fill="none" height="30" width="30"/>
-</g>
-<polygon points="14,23 13,23 16,7 17,7 14,23 "/>
-</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_mono_swap_call.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<g fill-opacity="0.5" stroke-opacity="0.5">
+<rect fill="none" height="30" width="30"/>
+</g>
+<path d="M21,15c0-3.309-2.691-6-6-6c-1.206,0-2.327,0.361-3.269,0.976l1.21,1.613C13.545,11.223,14.244,11,15,11 c2.206,0,4,1.795,4,4h-2l3,4l3-4H21z"/>
+<path d="M15,19c-2.206,0-4-1.794-4-4h2l-3-4l-3,4h2c0,3.309,2.691,6,6,6c1.206,0,2.327-0.36,3.269-0.975l-1.21-1.613 C16.455,18.777,15.756,19,15,19z"/>
+<path d="M8.205,19.919c-0.063-0.329-0.366-0.549-0.673-0.484l-2.431,0.519c-0.007,0.004-0.011,0.008-0.017,0.014 c0.001-0.001-0.001-0.01-0.001-0.01c-0.498-1.825-0.628-3.556-0.63-5.283c0-1.66,0.467-3.848,0.76-4.748l0.002,0.003 c0.001-0.002-0.002-0.005-0.001-0.006l1.862,0.456c0.268,0.066,0.542-0.097,0.656-0.369l1.692-6.137 C9.514,3.556,9.347,3.232,9.05,3.155c0,0-0.276-0.053-1.019-0.128L8.027,3.024C7.649,2.986,7.619,3,7.202,3.016 c-1.252,0.055-2.21,0.527-2.21,0.527C4.613,3.717,3.619,4.576,2.792,6.075C1.965,7.572,0.997,11.86,1,15.225 s0.865,7.081,1.324,8.074c0.727,1.568,2.054,2.781,2.526,3.05c0,0,0.37,0.182,0.962,0.345c0.004,0.001,0.013,0.004,0.021,0.007 c0.058,0.017,0.114,0.03,0.177,0.046l0.004-0.002c0.305,0.074,0.65,0.142,1.032,0.177c0.449,0.039,0.529,0.098,0.929,0.073 c0.001-0.001,0.001-0.001,0.001-0.001c0.742-0.048,1.008-0.103,1.008-0.103c0.308-0.063,0.504-0.383,0.442-0.711L8.205,19.919z"/>
+<path d="M27.207,6.075c-0.826-1.499-1.82-2.358-2.198-2.532c0,0-0.958-0.473-2.21-0.527C22.381,3,22.352,2.986,21.973,3.024 l-0.004,0.003c-0.742,0.075-1.019,0.128-1.019,0.128c-0.297,0.077-0.464,0.4-0.376,0.718l1.693,6.137 c0.114,0.272,0.388,0.436,0.656,0.369l1.861-0.456c0.001,0.001-0.003,0.004-0.002,0.006l0.003-0.003 c0.293,0.9,0.76,3.088,0.76,4.748c-0.001,1.728-0.132,3.458-0.63,5.283c0,0-0.002,0.009-0.001,0.01 c-0.006-0.006-0.01-0.01-0.017-0.014l-2.431-0.519c-0.307-0.064-0.609,0.155-0.673,0.484l-1.223,6.261 c-0.062,0.328,0.135,0.648,0.442,0.711c0,0,0.267,0.055,1.009,0.103c0,0,0,0,0.001,0.001c0.4,0.024,0.48-0.034,0.929-0.073 c0.382-0.035,0.727-0.103,1.032-0.177l0.004,0.002c0.063-0.016,0.119-0.029,0.177-0.046c0.008-0.003,0.017-0.006,0.021-0.007 c0.592-0.163,0.962-0.345,0.962-0.345c0.473-0.269,1.8-1.481,2.526-3.05c0.459-0.993,1.321-4.71,1.324-8.074 S28.035,7.572,27.207,6.075z"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_small_dictionary.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30" viewBox="0 0 30 30" width="30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g>
+<rect fill="none" height="30" width="30"/>
+<path d="M6,1C4.346,1,3,2.346,3,4v22c0,1.654,1.346,3,3,3h21V1H6z" fill-opacity="0.6"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -276 -336)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="293" x2="293" y1="-338" y2="-364">
+<stop offset="0" style="stop-color:#4EDEFF"/>
+<stop offset="1" style="stop-color:#048CC6"/>
+</linearGradient>
+<rect fill="url(#SVGID_1_)" height="26" width="18" x="8" y="2"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="18" x="8" y="2"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -276 -336)" gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="282" x2="282" y1="-338" y2="-364">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#A5A5A5"/>
+</linearGradient>
+<path d="M8,2H6C4.9,2,4,2.9,4,4v22c0,1.1,0.9,2,2,2h2V2z" fill="url(#SVGID_2_)"/>
+<path d="M10.822,12.006h5.533V8.873h1.235v3.133h5.589v6.551h-1.178v-0.775H17.59v5.346h-1.235v-5.346H12v0.775 h-1.178V12.006z M12,16.718h4.354v-3.649H12V16.718z M22.001,13.068H17.59v3.649h4.411V13.068z" fill-opacity="0.2"/>
+<g>
+<path d="M10.822,11.006h5.533V7.873h1.235v3.133h5.589v6.551h-1.178v-0.775H17.59v5.346h-1.235v-5.346H12v0.775 h-1.178V11.006z M12,15.718h4.354v-3.649H12V15.718z M22.001,12.068H17.59v3.649h4.411V12.068z" fill="#FFFFFF"/>
+</g>
+</g>
+</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_small_drm_rights_expired.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_small_drm_rights_expired.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,42 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30" viewBox="0 0 30 30" width="30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g>
-<path d="M23.984,8.778c-0.472-3.282-0.868-5.2-1.181-5.701C22.725,2.951,20.813,0,14.888,0 C8.912,0,7.265,3.002,7.227,3.079C6.853,3.7,6.363,6.517,6.012,8.826c-0.098,1.013,0.428,2.248,1.291,2.927 c1.198,0.784,2.063,1.291,2.696,1.623v2.622h1V25l4,4.824l4-4.825V23l-0.635-0.616l1.211-1.303l-1.244-1.34l1.351-1.388 l-1.302-1.276L19,16.43v-0.432h1v-2.632c0.646-0.34,1.527-0.859,2.756-1.665C23.544,11.078,24.075,9.847,23.984,8.778z M12.5,5h5 C17.771,5,18,5.229,18,5.5S17.771,6,17.5,6h-5C12.229,6,12,5.771,12,5.5S12.229,5,12.5,5z" fill-opacity="0.6"/>
+<svg baseProfile="tiny" height="30px" version="1.1" viewBox="0 0 30 30" width="30px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M23.984,8.778c-0.473-3.282-0.868-5.2-1.182-5.701C22.725,2.951,20.813,0,14.888,0 C8.912,0,7.265,3.002,7.227,3.079C6.853,3.7,6.363,6.517,6.012,8.826c-0.098,1.013,0.428,2.248,1.291,2.927 c1.198,0.784,2.063,1.291,2.696,1.623v2.622h1V25l4,4.824l4-4.825V23l-0.636-0.616l1.212-1.303l-1.244-1.34l1.351-1.388 l-1.302-1.276L19,16.43v-0.432h1v-2.632c0.646-0.34,1.527-0.859,2.756-1.665C23.544,11.078,24.075,9.847,23.984,8.778z M12.5,5h5 C17.771,5,18,5.229,18,5.5S17.771,6,17.5,6h-5C12.229,6,12,5.771,12,5.5S12.229,5,12.5,5z" fill-opacity="0.6"/>
<polygon fill="url(#SVGID_1_)" points="12,24.641 12,14.998 11,14.998 11,12 19,12 19,14.998 18,14.998 18,16.027 16.977,17.102 18.271,18.37 16.952,19.727 18.211,21.081 16.967,22.42 18,23.423 18,24.639 15,28.258 "/>
<polygon fill="url(#SVGID_1_)" points="12,24.641 12,14.998 11,14.998 11,12 19,12 19,14.998 18,14.998 18,16.027 16.977,17.102 18.271,18.37 16.952,19.727 18.211,21.081 16.967,22.42 18,23.423 18,24.639 15,28.258 "/>
<rect fill-opacity="0.3" height="2" width="8" x="11" y="12"/>
-<linearGradient gradientTransform="matrix(1 0 0 -1 -208.8501 -268.8496)" gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="222.8494" x2="222.8494" y1="-283.8496" y2="-297.1074">
+<linearGradient gradientTransform="matrix(1 0 0 1 -334.8496 -984.8496)" gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="348.8506" x2="348.8506" y1="999.8496" y2="1013.1074">
<stop offset="0" style="stop-color:#D0D2D3"/>
<stop offset="1" style="stop-color:#F1F1F2"/>
</linearGradient>
<polygon fill="url(#SVGID_3_)" points="13,15 13,25.846 15,28.258 15,15 "/>
<polygon fill-opacity="0.3" points="14,15 14,27.053 15,28.258 15,15 "/>
-<linearGradient gradientTransform="matrix(1 0 0 -1 -208.8501 -268.8496)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="223.8494" x2="223.8494" y1="-269.8496" y2="-281.8496">
+<linearGradient gradientTransform="matrix(1 0 0 1 -334.8496 -984.8496)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="349.8496" x2="349.8496" y1="985.8496" y2="997.8496">
<stop offset="0" style="stop-color:#919191"/>
<stop offset="1" style="stop-color:#0D0D0D"/>
</linearGradient>
<path d="M21.955,3.606c0,0-1.628-2.606-7.066-2.606c-5.44,0-6.806,2.595-6.806,2.595 C7.732,4.177,7.007,8.921,7.007,8.921C6.942,9.6,7.322,10.498,7.851,10.916c0,0,3.186,2.084,3.854,2.084h6.578 c0.668,0,3.854-2.084,3.854-2.084c0.528-0.418,0.914-1.316,0.857-1.996C22.994,8.92,22.314,4.183,21.955,3.606z M17.5,7h-5 C11.675,7,11,6.325,11,5.5S11.675,4,12.5,4h5C18.325,4,19,4.675,19,5.5S18.325,7,17.5,7z" fill="url(#SVGID_4_)"/>
-<path d="M8.083,4.595c0,0,1.364-2.595,6.806-2.595 c5.438,0,7.066,2.606,7.066,2.606c0.297,0.476,0.812,3.783,0.981,4.923c0.048-0.21,0.072-0.418,0.058-0.609 c0,0-0.68-4.737-1.039-5.313c0,0-1.628-2.606-7.066-2.606c-5.44,0-6.806,2.595-6.806,2.595C7.732,4.177,7.007,8.921,7.007,8.921 c-0.019,0.197,0.01,0.413,0.059,0.63C7.242,8.432,7.791,5.078,8.083,4.595z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
-<path d="M12.5,8h5C18.325,8,19,7.325,19,6.5 c0-0.176-0.036-0.343-0.093-0.5c-0.208,0.58-0.758,1-1.407,1h-5c-0.648,0-1.199-0.42-1.407-1C11.036,6.157,11,6.324,11,6.5 C11,7.325,11.675,8,12.5,8z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
-<rect fill="none" height="30" width="30" x="0"/>
+<path d="M8.083,4.595c0,0,1.364-2.595,6.806-2.595 c5.438,0,7.066,2.606,7.066,2.606c0.297,0.476,0.813,3.783,0.98,4.923c0.049-0.21,0.072-0.418,0.059-0.609 c0,0-0.68-4.737-1.039-5.313c0,0-1.628-2.606-7.066-2.606c-5.44,0-6.806,2.595-6.806,2.595C7.732,4.177,7.007,8.921,7.007,8.921 c-0.019,0.197,0.01,0.413,0.059,0.63C7.242,8.432,7.791,5.078,8.083,4.595z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<path d="M12.5,8h5C18.325,8,19,7.325,19,6.5 c0-0.176-0.036-0.343-0.093-0.5c-0.208,0.58-0.759,1-1.407,1h-5c-0.648,0-1.199-0.42-1.407-1C11.036,6.157,11,6.324,11,6.5 C11,7.325,11.675,8,12.5,8z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<rect fill="none" height="30" width="30"/>
+<rect fill-opacity="0.6" height="34.272" stroke-opacity="0.6" transform="matrix(-0.7073 0.707 -0.707 -0.7073 36.2215 14.9987)" width="3.17" x="13.421" y="-2.137"/>
+<linearGradient gradientTransform="matrix(0.8824 0 0 0.8824 -430.2275 -1024.9561)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="504.5674" x2="504.5674" y1="1164.0771" y2="1192.0762">
+<stop offset="0" style="stop-color:#DE8029"/>
+<stop offset="0.2606" style="stop-color:#DE4E29"/>
+<stop offset="1" style="stop-color:#D82E09"/>
+</linearGradient>
+<polygon fill="url(#SVGID_5_)" points="26,26.99 3.015,4.005 4.006,3.014 26.99,26 "/>
+<rect fill="none" height="30" width="30"/>
<defs>
-<linearGradient gradientTransform="matrix(1 0 0 -1 -208.8501 -268.8496)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="223.8494" x2="223.8494" y1="-280.8496" y2="-297.1074">
+<linearGradient gradientTransform="matrix(1 0 0 1 -334.8496 -984.8496)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="349.8506" x2="349.8506" y1="996.8496" y2="1013.1074">
<stop offset="0" style="stop-color:#8C8E8F"/>
<stop offset="1" style="stop-color:#D9D9D9"/>
</linearGradient>
</defs>
-</g>
-<g>
-<rect fill-opacity="0.6" height="34.27" stroke-opacity="0.6" style="enable-background:new;" transform="matrix(0.7073 -0.707 0.707 0.7073 -6.2126 14.9968)" width="3.169" x="13.42" y="-2.134"/>
-<polygon fill="url(#SVGID_1__)" points="26,26.99,3.015,4.005,4.006,3.014,26.99,26"/>
-<rect fill="none" height="30" width="30"/>
-<defs>
-<linearGradient gradientTransform="matrix(0.8824 0 0 -0.8824 -284.8232 -348.3516)" gradientUnits="userSpaceOnUse" id="SVGID_1__" x1="339.8" x2="339.8" y1="-397.3" y2="-425.3">
-<stop offset="0" stop-color="#DE8029"/>
-<stop offset="0.2606" stop-color="#DE4E29"/>
-<stop offset="1" stop-color="#D82E09"/>
-</linearGradient>
-</defs>
-</g>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_small_ovi.svg Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30" viewBox="0 0 30 30" width="30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<rect fill="none" height="30" width="30"/>
-<rect fill="none" height="30" width="30"/>
-<rect fill="#44A51C" height="30" width="30"/>
-<path d="M7.069,9.857c-3.87,0-5.903,2.655-5.903,6.435,0,3.829,1.497,6.84,5.863,6.84,4.022,0,5.882-2.724,5.882-6.754,0-3.85-1.83-6.523-5.841-6.523zm-0.042,11.2c-2.063,0-2.152-2.928-2.152-4.844,0-1.868,0.156-4.297,2.152-4.297,1.901,0,2.169,2.567,2.169,4.297,0.001,2.23-0.112,4.84-2.169,4.84z" fill="#FFFFFF"/>
-<path d="M17.85,23.13c1.57,0,2.125-0.788,2.498-1.933l3.385-11.16h-3.158l-2.42,9.658-2.282-9.658h-3.739l3.212,11.16c0.35,1.14,0.93,1.93,2.5,1.93z" fill="#FFFFFF"/>
-<path d="M26.99,5.348c-1.162,0-1.969,0.587-1.969,1.667,0,1.082,0.827,1.667,1.969,1.667,1.143,0,1.967-0.585,1.967-1.667,0-1.058-0.87-1.667-1.97-1.667z" fill="#FFFFFF"/>
-<path d="M25.69,22.77c0.263,0.191,0.681,0.358,1.27,0.358,0.615,0,1.018-0.169,1.282-0.358,0.507-0.357,0.507-0.963,0.507-1.289v-11.44h-3.525-0.244c-0.341,0-0.626,0.007-0.818,0.275-0.098,0.124-0.229,0.351-0.229,0.759,0,0.424,0.132,0.628,0.229,0.756,0.192,0.272,0.478,0.273,0.818,0.273,0.115,0,0.209-0.001,0.209-0.001v9.385c-0.01,0.31-0.01,0.92,0.5,1.27z" fill="#FFFFFF"/>
-</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_small_shuffle.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_small_shuffle.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,48 +2,25 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="30" viewBox="0 0 30 30" width="30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g>
-<g>
-<path d="M0,30V0h30v30H0z M23.599,26.25l-8.732-8.732L6.134,26.25H23.599z M26.25,23.599V6.134l-8.732,8.732 L26.25,23.599z M3.75,23.331l8.465-8.465L3.75,6.401V23.331z M14.866,12.215L23.33,3.75H6.402L14.866,12.215z" fill-opacity="0.6" stroke-opacity="0.6"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="14.9995" x2="14.9995" y1="0.9941" y2="29.1902">
-<stop offset="0" style="stop-color:#E6E6E6"/>
-<stop offset="0.6182" style="stop-color:#A8A8A8"/>
-<stop offset="1" style="stop-color:#CCCCCC"/>
-</linearGradient>
-<path d="M0.938,0.938v28.125h28.125V0.938H0.938z M13.541,14.866L2.813,25.595V4.138L13.541,14.866z M4.139,2.813h21.455L14.866,13.541L4.139,2.813z M14.866,16.192l10.995,10.995H3.871L14.866,16.192z M16.192,14.866L27.188,3.871 v21.99L16.192,14.866z" fill="url(#SVGID_1_)"/>
-<g>
-<polygon fill-opacity="0.6" points="8.547,25.313 7.61,17.813 5.625,17.813 5.625,12.199 24.375,12.199 24.375,17.813 22.391,17.813 21.453,25.313 " stroke-opacity="0.6"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="14.9995" x2="14.9995" y1="12.103" y2="23.9943">
-<stop offset="0" style="stop-color:#A0F800"/>
-<stop offset="1" style="stop-color:#319E00"/>
+<polygon fill-opacity="0.6" points="0.149,23.029 10.737,16.228 10.737,20.374 20.562,20.374 20.562,14 26,14 26,25.687 10.737,25.687 10.737,29.831 "/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="13.4995" x2="13.4995" y1="2.3745" y2="28.1255">
+<stop offset="0" style="stop-color:#FFC144"/>
+<stop offset="1" style="stop-color:#EF6902"/>
</linearGradient>
-<polygon fill="url(#SVGID_2_)" points="6.563,13.137 6.563,16.875 8.438,16.875 9.375,24.375 20.625,24.375 21.563,16.875 23.438,16.875 23.438,13.137 "/>
-<path d="M13.125,14.063v-2.886c-0.348,0.048-0.692,0.073-1.03,0.073c-0.804,0-1.568-0.139-2.272-0.414 C5.866,9.294,5.955,6.329,5.96,6.204l0.019-0.408l0.312-0.265c0.103-0.088,1.06-0.855,2.881-0.855c0.958,0,1.99,0.212,3.066,0.632 c1.3,0.506,2.174,1.126,2.762,1.716c0.588-0.589,1.462-1.209,2.762-1.716c1.076-0.42,2.108-0.632,3.066-0.632 c1.82,0,2.777,0.767,2.881,0.855l0.313,0.265l0.019,0.408c0.005,0.125,0.094,3.091-3.862,4.632 c-0.704,0.275-1.469,0.414-2.272,0.414c-0.338,0-0.683-0.025-1.03-0.073v2.886H13.125z" fill-opacity="0.6" stroke-opacity="0.6"/>
-<path d="M10.163,9.963c1.436,0.559,2.896,0.346,3.899,0.057v3.105h1.875V10.02 c1.003,0.289,2.464,0.502,3.899-0.057c3.375-1.316,3.267-3.717,3.267-3.717s-1.627-1.379-5.002-0.064 C16.242,6.907,15.392,7.849,15,8.551c-0.392-0.702-1.242-1.644-3.102-2.369C8.523,4.866,6.896,6.246,6.896,6.246 S6.788,8.647,10.163,9.963z" fill="url(#SVGID_3_)"/>
-<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="14.9995" x2="14.9995" y1="4.9224" y2="12.8702">
-<stop offset="0" style="stop-color:#A0F800"/>
-<stop offset="1" style="stop-color:#319E00"/>
-</linearGradient>
-</defs>
-</g>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="14.9995" x2="14.9995" y1="12.5542" y2="17.3683">
-<stop offset="0" style="stop-color:#D07100"/>
-<stop offset="1" style="stop-color:#A23600"/>
+<polygon fill="url(#SVGID_1_)" points="21.562,15 21.562,21.374 9.737,21.374 9.737,18.059 2,23.029 9.737,28 9.737,24.687 25,24.687 25,15 "/>
+<polygon fill-opacity="0.6" points="4,16 4,4.313 19.263,4.313 19.263,0.169 29.851,6.971 19.263,13.772 19.263,9.626 9.438,9.626 9.438,16 "/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="16.5" x2="16.5" y1="2.375" y2="28.125">
+<stop offset="0" style="stop-color:#FFC144"/>
+<stop offset="1" style="stop-color:#EF6902"/>
</linearGradient>
-<rect fill="url(#SVGID_4_)" height="3.738" width="16.875" x="6.563" y="13.137"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="14.9995" x2="14.9995" y1="16.8408" y2="24.5597">
-<stop offset="0" style="stop-color:#D07100"/>
-<stop offset="1" style="stop-color:#A23600"/>
-</linearGradient>
-<polygon fill="url(#SVGID_5_)" points="20.625,24.375 9.375,24.375 8.438,16.875 21.563,16.875 "/>
-<path d="M23.104,6.246c0,0-1.627-1.379-5.002-0.064C16.242,6.907,15.392,7.849,15,8.551 c-0.392-0.702-1.242-1.644-3.102-2.369C8.523,4.866,6.896,6.246,6.896,6.246s-0.109,2.401,3.267,3.717 c1.436,0.559,2.896,0.346,3.899,0.057v3.105h1.875V10.02c1.003,0.289,2.464,0.502,3.899-0.057 C23.212,8.647,23.104,6.246,23.104,6.246z" fill="url(#SVGID_3_)"/>
-<g fill-opacity="0.2" stroke-opacity="0.2">
-<path d="M14.063,9.082c-1.003,0.289-2.464,0.502-3.899-0.057C8.06,8.205,7.31,6.963,7.042,6.144 c-0.094,0.06-0.146,0.102-0.146,0.102s-0.109,2.401,3.267,3.717c1.436,0.559,2.896,0.346,3.899,0.057V9.082z"/>
-<path d="M22.958,6.144c-0.268,0.819-1.018,2.061-3.121,2.881c-1.436,0.559-2.896,0.346-3.899,0.057v0.938 c1.003,0.289,2.464,0.502,3.899-0.057c3.375-1.316,3.267-3.717,3.267-3.717S23.052,6.204,22.958,6.144z"/>
-<rect height="0.938" width="1.875" x="14.063" y="12.188"/>
-</g>
-<rect fill="#FFFFFF" fill-opacity="0.3" height="0.926" stroke-opacity="0.3" width="16.875" x="6.563" y="13.137"/>
-<polygon fill-opacity="0.2" points="21.445,17.813 21.563,16.875 8.438,16.875 8.555,17.813 " stroke-opacity="0.2"/>
+<polygon fill="url(#SVGID_2_)" points="8.438,15 8.438,8.626 20.263,8.626 20.263,11.941 28,6.971 20.263,2 20.263,5.313 5,5.313 5,15 "/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="3.438" x="21.562" y="15"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="11.824" x="9.737" y="21.374"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="9.737,19.059 9.737,18.059 2,23.029 2.778,23.529 " stroke-opacity="0.4"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="28,6.971 20.263,2 20.263,3 27.222,7.471 " stroke-opacity="0.4"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="15.263" x="5" y="5.313"/>
+<g fill-opacity="0.5" stroke-opacity="0.5">
+<rect fill="none" height="30" width="30"/>
</g>
</g>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_small_shuffle_off.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_small_shuffle_off.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,48 +2,25 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="30" viewBox="0 0 30 30" width="30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g>
-<g>
-<path d="M0,30V0h30v30H0z M23.599,26.25l-8.732-8.732L6.134,26.25H23.599z M26.25,23.599V6.134l-8.732,8.732 L26.25,23.599z M3.75,23.331l8.465-8.465L3.75,6.401V23.331z M14.866,12.215L23.33,3.75H6.402L14.866,12.215z" fill-opacity="0.6" stroke-opacity="0.6"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="14.9995" x2="14.9995" y1="0.9941" y2="29.1902">
-<stop offset="0" style="stop-color:#E6E6E6"/>
-<stop offset="0.6182" style="stop-color:#A8A8A8"/>
-<stop offset="1" style="stop-color:#CCCCCC"/>
-</linearGradient>
-<path d="M0.938,0.938v28.125h28.125V0.938H0.938z M13.541,14.866L2.813,25.595V4.138L13.541,14.866z M4.139,2.813h21.455L14.866,13.541L4.139,2.813z M14.866,16.192l10.995,10.995H3.871L14.866,16.192z M16.192,14.866L27.188,3.871 v21.99L16.192,14.866z" fill="url(#SVGID_1_)"/>
-<g>
-<polygon fill-opacity="0.6" points="8.547,25.313 7.61,17.813 5.625,17.813 5.625,12.199 24.375,12.199 24.375,17.813 22.391,17.813 21.453,25.313 " stroke-opacity="0.6"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="14.9995" x2="14.9995" y1="12.103" y2="23.9943">
-<stop offset="0" style="stop-color:#A0F800"/>
-<stop offset="1" style="stop-color:#319E00"/>
+<polygon fill-opacity="0.6" points="0.149,23.029 10.737,16.228 10.737,20.374 20.562,20.374 20.562,14 26,14 26,25.687 10.737,25.687 10.737,29.831 "/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="13.4995" x2="13.4995" y1="2.3745" y2="28.1255">
+<stop offset="0" style="stop-color:#FFC144"/>
+<stop offset="1" style="stop-color:#EF6902"/>
</linearGradient>
-<polygon fill="url(#SVGID_2_)" points="6.563,13.137 6.563,16.875 8.438,16.875 9.375,24.375 20.625,24.375 21.563,16.875 23.438,16.875 23.438,13.137 "/>
-<path d="M13.125,14.063v-2.886c-0.348,0.048-0.692,0.073-1.03,0.073c-0.804,0-1.568-0.139-2.272-0.414 C5.866,9.294,5.955,6.329,5.96,6.204l0.019-0.408l0.312-0.265c0.103-0.088,1.06-0.855,2.881-0.855c0.958,0,1.99,0.212,3.066,0.632 c1.3,0.506,2.174,1.126,2.762,1.716c0.588-0.589,1.462-1.209,2.762-1.716c1.076-0.42,2.108-0.632,3.066-0.632 c1.82,0,2.777,0.767,2.881,0.855l0.313,0.265l0.019,0.408c0.005,0.125,0.094,3.091-3.862,4.632 c-0.704,0.275-1.469,0.414-2.272,0.414c-0.338,0-0.683-0.025-1.03-0.073v2.886H13.125z" fill-opacity="0.6" stroke-opacity="0.6"/>
-<path d="M10.163,9.963c1.436,0.559,2.896,0.346,3.899,0.057v3.105h1.875V10.02 c1.003,0.289,2.464,0.502,3.899-0.057c3.375-1.316,3.267-3.717,3.267-3.717s-1.627-1.379-5.002-0.064 C16.242,6.907,15.392,7.849,15,8.551c-0.392-0.702-1.242-1.644-3.102-2.369C8.523,4.866,6.896,6.246,6.896,6.246 S6.788,8.647,10.163,9.963z" fill="url(#SVGID_3_)"/>
-<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="14.9995" x2="14.9995" y1="4.9224" y2="12.8702">
-<stop offset="0" style="stop-color:#A0F800"/>
-<stop offset="1" style="stop-color:#319E00"/>
-</linearGradient>
-</defs>
-</g>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="14.9995" x2="14.9995" y1="12.5542" y2="17.3683">
-<stop offset="0" style="stop-color:#D07100"/>
-<stop offset="1" style="stop-color:#A23600"/>
+<polygon fill="url(#SVGID_1_)" points="21.562,15 21.562,21.374 9.737,21.374 9.737,18.059 2,23.029 9.737,28 9.737,24.687 25,24.687 25,15 "/>
+<polygon fill-opacity="0.6" points="4,16 4,4.313 19.263,4.313 19.263,0.169 29.851,6.971 19.263,13.772 19.263,9.626 9.438,9.626 9.438,16 "/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="16.5" x2="16.5" y1="2.375" y2="28.125">
+<stop offset="0" style="stop-color:#FFC144"/>
+<stop offset="1" style="stop-color:#EF6902"/>
</linearGradient>
-<rect fill="url(#SVGID_4_)" height="3.738" width="16.875" x="6.563" y="13.137"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="14.9995" x2="14.9995" y1="16.8408" y2="24.5597">
-<stop offset="0" style="stop-color:#D07100"/>
-<stop offset="1" style="stop-color:#A23600"/>
-</linearGradient>
-<polygon fill="url(#SVGID_5_)" points="20.625,24.375 9.375,24.375 8.438,16.875 21.563,16.875 "/>
-<path d="M23.104,6.246c0,0-1.627-1.379-5.002-0.064C16.242,6.907,15.392,7.849,15,8.551 c-0.392-0.702-1.242-1.644-3.102-2.369C8.523,4.866,6.896,6.246,6.896,6.246s-0.109,2.401,3.267,3.717 c1.436,0.559,2.896,0.346,3.899,0.057v3.105h1.875V10.02c1.003,0.289,2.464,0.502,3.899-0.057 C23.212,8.647,23.104,6.246,23.104,6.246z" fill="url(#SVGID_3_)"/>
-<g fill-opacity="0.2" stroke-opacity="0.2">
-<path d="M14.063,9.082c-1.003,0.289-2.464,0.502-3.899-0.057C8.06,8.205,7.31,6.963,7.042,6.144 c-0.094,0.06-0.146,0.102-0.146,0.102s-0.109,2.401,3.267,3.717c1.436,0.559,2.896,0.346,3.899,0.057V9.082z"/>
-<path d="M22.958,6.144c-0.268,0.819-1.018,2.061-3.121,2.881c-1.436,0.559-2.896,0.346-3.899,0.057v0.938 c1.003,0.289,2.464,0.502,3.899-0.057c3.375-1.316,3.267-3.717,3.267-3.717S23.052,6.204,22.958,6.144z"/>
-<rect height="0.938" width="1.875" x="14.063" y="12.188"/>
-</g>
-<rect fill="#FFFFFF" fill-opacity="0.3" height="0.926" stroke-opacity="0.3" width="16.875" x="6.563" y="13.137"/>
-<polygon fill-opacity="0.2" points="21.445,17.813 21.563,16.875 8.438,16.875 8.555,17.813 " stroke-opacity="0.2"/>
+<polygon fill="url(#SVGID_2_)" points="8.438,15 8.438,8.626 20.263,8.626 20.263,11.941 28,6.971 20.263,2 20.263,5.313 5,5.313 5,15 "/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="3.438" x="21.562" y="15"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="11.824" x="9.737" y="21.374"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="9.737,19.059 9.737,18.059 2,23.029 2.778,23.529 " stroke-opacity="0.4"/>
+<polygon fill="#FFFFFF" fill-opacity="0.4" points="28,6.971 20.263,2 20.263,3 27.222,7.471 " stroke-opacity="0.4"/>
+<rect fill="#FFFFFF" fill-opacity="0.4" height="1" stroke-opacity="0.4" width="15.263" x="5" y="5.313"/>
+<g fill-opacity="0.5" stroke-opacity="0.5">
+<rect fill="none" height="30" width="30"/>
</g>
</g>
<g>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_small_star_non_favourited.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_small_star_non_favourited.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="30" viewBox="0 0 30 30" width="30">
+<?xml version="1.0" ?>
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
+<svg height="30" viewBox="0 0 30 30" width="30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g opacity="0.5">
-<polygon fill-opacity="0.6" points="15,0.734 19.635,10.126 30,11.632 22.5,18.943 24.27,29.266 15,24.393 5.73,29.266 7.5,18.943 0,11.632 10.365,10.126 " stroke-opacity="0.6"/>
+<defs>
+</defs>
+<polygon fill-opacity="0.6" points="15,0.734 19.635,10.126 30,11.632 22.5,18.943 24.27,29.266 15,24.393 5.73,29.266 7.5,18.943 0,11.632 10.365,10.126 "/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="15" x2="15" y1="2.9937" y2="27.438">
+ <stop offset="0" style="stop-color:#FFE896"/>
+ <stop offset="1" style="stop-color:#FFB701"/>
+</linearGradient>
<polygon fill="url(#SVGID_1_)" points="15,23.262 7.058,27.438 8.574,18.594 2.149,12.331 11.029,11.04 15,2.994 18.971,11.04 27.852,12.331 21.426,18.594 22.941,27.438 "/>
<polygon fill="#FFFFFF" fill-opacity="0.4" points="11.693,11.954 15,5.253 18.307,11.954 26.959,13.201 27.852,12.331 18.971,11.04 15,2.994 11.029,11.04 2.149,12.331 3.042,13.201 "/>
<rect fill="none" height="30" width="30"/>
-<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="15" x2="15" y1="2.9937" y2="27.438">
-<stop offset="0" style="stop-color:#FFE896"/>
-<stop offset="1" style="stop-color:#FFB701"/>
-</linearGradient>
-</defs>
</g>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_small_tag_inactive.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_small_tag_inactive.svg Wed Jun 23 18:33:25 2010 +0300
@@ -1,21 +1,21 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="30" viewBox="0 0 30 30" width="30">
+<?xml version="1.0" ?>
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
+<svg height="30" viewBox="0 0 30 30" width="30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g opacity="0.5">
+<defs>
+</defs>
<rect fill="none" height="30" width="30"/>
-<path d="M2,12.731V4.094L4.094,2h8.638l15.683,15.683L17.683,28.414L2,12.731z M6.904,5.952 c-0.525,0-0.952,0.427-0.952,0.952s0.427,0.953,0.952,0.953S7.857,7.43,7.857,6.904S7.43,5.952,6.904,5.952L6.904,5.952z" fill-opacity="0.6" stroke-opacity="0.6"/>
+<path d="M2,12.731V4.094L4.094,2h8.638l15.683,15.683L17.683,28.414L2,12.731z M6.904,5.952 c-0.525,0-0.952,0.427-0.952,0.952s0.427,0.953,0.952,0.953S7.857,7.43,7.857,6.904S7.43,5.952,6.904,5.952L6.904,5.952z" opacity="0.6"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="14.9995" x2="14.9995" y1="3" y2="27.0005">
+ <stop offset="0" style="stop-color:#4EDEFF"/>
+ <stop offset="1" style="stop-color:#048CC6"/>
+</linearGradient>
<path d="M27,17.683L12.317,3h-7.81L3,4.508v7.81L17.683,27L27,17.683z M6.904,8.857 c-1.078,0-1.952-0.875-1.952-1.953s0.874-1.952,1.952-1.952s1.953,0.874,1.953,1.952S7.982,8.857,6.904,8.857z" fill="url(#SVGID_1_)"/>
-<path d="M6.904,9.857c1.078,0,1.953-0.875,1.953-1.953c0-0.174-0.03-0.34-0.072-0.5 C8.563,8.239,7.809,8.857,6.904,8.857S5.247,8.239,5.025,7.404c-0.043,0.16-0.073,0.326-0.073,0.5 C4.952,8.982,5.826,9.857,6.904,9.857z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
-<polygon fill="#FFFFFF" fill-opacity="0.4" points="12.317,4 26.5,18.183 27,17.683 12.317,3 4.508,3 3,4.508 3,5.508 4.508,4 " stroke-opacity="0.4"/>
+<path d="M6.904,9.857c1.078,0,1.953-0.875,1.953-1.953c0-0.174-0.03-0.34-0.072-0.5 C8.563,8.239,7.809,8.857,6.904,8.857S5.247,8.239,5.025,7.404c-0.043,0.16-0.073,0.326-0.073,0.5 C4.952,8.982,5.826,9.857,6.904,9.857z" fill="#FFFFFF" opacity="0.4"/>
+<polygon fill="#FFFFFF" opacity="0.4" points="12.317,4 26.5,18.183 27,17.683 12.317,3 4.508,3 3,4.508 3,5.508 4.508,4 "/>
<rect fill="#FFFFFF" height="7.321" transform="matrix(0.7071 0.7071 -0.7071 0.7071 16.0459 -6.6464)" width="11.95" x="10.071" y="12.385"/>
-<polygon fill="#FFFFFF" fill-opacity="0.4" points="17.683,22.859 9.232,14.43 8.662,15 17.683,24 23.43,18.253 22.859,17.683 " stroke-opacity="0.4"/>
-<polygon fill-opacity="0.15" points="14.409,10.373 22.289,18.253 22.859,17.683 14.409,9.232 9.232,14.409 9.803,14.979 " stroke-opacity="0.15"/>
+<polygon fill="#FFFFFF" opacity="0.4" points="17.683,22.859 9.232,14.43 8.662,15 17.683,24 23.43,18.253 22.859,17.683 "/>
+<polygon opacity="0.15" points="14.409,10.373 22.289,18.253 22.859,17.683 14.409,9.232 9.232,14.409 9.803,14.979 "/>
<rect fill="none" height="30" width="30"/>
-<defs>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="14.9995" x2="14.9995" y1="3" y2="27.0005">
-<stop offset="0" style="stop-color:#4EDEFF"/>
-<stop offset="1" style="stop-color:#048CC6"/>
-</linearGradient>
-</defs>
</g>
</svg>
--- a/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_status_battery.svg Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_status_battery.svg Wed Jun 23 18:33:25 2010 +0300
@@ -2,6 +2,5 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg baseProfile="tiny" height="16px" version="1.1" viewBox="0 0 16 16" width="16px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<rect fill="none" height="16" width="16"/>
-<path d="M3,3.5v11.5h10v-11.5h-10zm8,9.5h-6v-7.5h6v7.5z"/>
-<rect height="2" width="5" x="5.5" y="1"/>
+<path d="M10.75,2.758V1h-5.5v1.758H3.461V15h9.078V2.758H10.75z M11.039,13.5H4.961V4.258H6.75V2.5h2.5v1.758h1.789V13.5z"/>
</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/icons/hbdefault/scalable/qtg_status_psm.svg Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="16px" version="1.1" viewBox="0 0 16 16" width="16px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="16" width="16"/>
+<path d="M10.75,2.758V1h-5.5v1.758H3.461V15h9.078V2.758H10.75z M9.664,11.92c-1.645,0.83-3.655,0.172-4.488-1.477 C4.341,8.799,5.004,6.792,6.65,5.958C7.487,5.537,8.411,5.503,9.23,5.779c-0.162,0.043-0.328,0.1-0.484,0.178 c-1.181,0.597-1.653,2.04-1.059,3.217c0.6,1.184,2.043,1.654,3.219,1.059c0.16-0.08,0.302-0.178,0.434-0.285 C11.08,10.771,10.498,11.499,9.664,11.92z"/>
+</svg>
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbcolorgridviewitem/hbcolorgridviewitem.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbcolorgridviewitem/hbcolorgridviewitem.css Wed Jun 23 18:33:25 2010 +0300
@@ -8,8 +8,8 @@
top: -var(hb-param-margin-gene-popup);
bottom: var(hb-param-margin-gene-popup);
right: var(hb-param-margin-gene-popup);
-/* fixed-width: var(hb-param-graphic-size-primary-small);
- fixed-height: var(hb-param-graphic-size-primary-small); */
+ fixed-width: var(hb-param-graphic-size-primary-small);
+ fixed-height: var(hb-param-graphic-size-primary-small);
}
HbColorGridViewItem::cg-color-icon
@@ -18,11 +18,12 @@
top: -var(hb-param-margin-gene-popup);
bottom: var(hb-param-margin-gene-popup);
right: var(hb-param-margin-gene-popup);
-/* fixed-width: var(hb-param-graphic-size-primary-small);
- fixed-height: var(hb-param-graphic-size-primary-small); */
+ fixed-width: var(hb-param-graphic-size-primary-small);
+ fixed-height: var(hb-param-graphic-size-primary-small);
}
HbColorGridViewItem::cg-selection-icon
{
fixed-width: var(hb-param-graphic-size-secondary);
+ fixed-height: var(hb-param-graphic-size-secondary);
}
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbcolorgridviewitem/hbcolorgridviewitem.widgetml Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbcolorgridviewitem/hbcolorgridviewitem.widgetml Wed Jun 23 18:33:25 2010 +0300
@@ -1,23 +1,19 @@
<hbwidget version="0.1" type="HbColorGridViewItem">
<layout name="colorgriditem_layout" type="mesh">
- <meshitem src="cg-border-icon" srcEdge="LEFT" dst="" dstEdge="LEFT" />
- <meshitem src="cg-border-icon" srcEdge="TOP" dst="" dstEdge="TOP" />
- <meshitem src="cg-border-icon" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
- <meshitem src="cg-border-icon" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
-
- <meshitem src="cg-color-icon" srcEdge="LEFT" dst="" dstEdge="LEFT" />
- <meshitem src="cg-color-icon" srcEdge="TOP" dst="" dstEdge="TOP" />
- <meshitem src="cg-color-icon" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
- <meshitem src="cg-color-icon" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
-
- <meshitem src="cg-selection-icon" srcEdge="CENTERV" dst="" dstEdge="CENTERV" />
- <meshitem src="cg-selection-icon" srcEdge="CENTERH" dst="" dstEdge="CENTERH" />
-
<meshitem src="frame" srcEdge="LEFT" dst="" dstEdge="LEFT" />
<meshitem src="frame" srcEdge="TOP" dst="" dstEdge="TOP" />
<meshitem src="frame" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
<meshitem src="frame" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+
+ <meshitem src="cg-border-icon" srcEdge="CENTERV" dst="" dstEdge="CENTERV" />
+ <meshitem src="cg-border-icon" srcEdge="CENTERH" dst="" dstEdge="CENTERH" />
+
+ <meshitem src="cg-color-icon" srcEdge="CENTERH" dst="" dstEdge="CENTERH" />
+ <meshitem src="cg-color-icon" srcEdge="CENTERV" dst="" dstEdge="CENTERV" />
+
+ <meshitem src="cg-selection-icon" srcEdge="CENTERV" dst="" dstEdge="CENTERV" />
+ <meshitem src="cg-selection-icon" srcEdge="CENTERH" dst="" dstEdge="CENTERH" />
</layout>
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbcombobox/hbcombobox.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbcombobox/hbcombobox.css Wed Jun 23 18:33:25 2010 +0300
@@ -2,6 +2,7 @@
HbComboBox
{
layout:combobox_layout_noneditable;
+ size-policy-horizontal:expanding;
}
HbComboBox[editable]
@@ -23,7 +24,6 @@
{
fixed-width:var(hb-param-widget-combobox-height);
fixed-height:var(hb-param-widget-combobox-height);
-
}
HbComboBox::combobox_labelfield
@@ -33,12 +33,13 @@
text-align:left center;
font-variant:primary;
text-height:var(hb-param-text-height-secondary);
-
}
HbComboBox[!editable]::combobox_labelfield
{
text-line-count-max:1;
+
}
+
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbcombobox/hbcombobox_color.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbcombobox/hbcombobox_color.css Wed Jun 23 18:33:25 2010 +0300
@@ -1,5 +1,5 @@
/* Colors for different comboBox states for text */
-HbComboBox[!editable][state = "normal"]::combobox_labelfield
+HbComboBox[!editable]::combobox_labelfield
{
color:var(qtc_combobox_normal);
}
@@ -9,11 +9,21 @@
color:var(qtc_combobox_pressed);
}
-HbComboBox[!enabled]::combobox_labelfield
+HbComboBox[!editable][!enabled]::combobox_labelfield
{
color:var(qtc_combobox_disabled);
}
+HbComboBox[!editable][state = "latched"]::combobox_labelfield
+{
+ color:var(qtc_combobox_latched);
+}
+
+HbComboBox[!editable][state = "highlight"]::combobox_labelfield
+{
+ color:var(qtc_combobox_highlight);
+}
+
HbComboBox[editable]::combobox_labelfield
{
color:var(qtc_combobox_edit);
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbdataformviewitem/hbdataformviewitem_color.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbdataformviewitem/hbdataformviewitem_color.css Wed Jun 23 18:33:25 2010 +0300
@@ -6,4 +6,19 @@
HbDataFormViewItem::dataItem_Description
{
color:var(qtc_list_item_content_normal);
-}
\ No newline at end of file
+}
+
+HbDataFormViewItem[!enabled]::dataItem_Label
+{
+ color:var(qtc_list_item_disabled);
+}
+
+
+HbDataFormViewItem[!enabled]::dataItem_Description
+{
+ color:var(qtc_list_item_disabled);
+}
+
+
+
+
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbdatagroupheadingwidget/hbdatagroupheadingwidget_color.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbdatagroupheadingwidget/hbdatagroupheadingwidget_color.css Wed Jun 23 18:33:25 2010 +0300
@@ -6,4 +6,14 @@
HbDataGroupHeadingWidget::dataGroup_Description
{
color:var(qtc_list_item_content_normal);
+}
+
+HbDataGroupHeadingWidget[!enabled]::dataGroup_HeadingLabel
+{
+ color:var(qtc_list_item_disabled);
+}
+
+HbDataGroupHeadingWidget[!enabled]::dataGroup_Description
+{
+ color:var(qtc_list_item_disabled);
}
\ No newline at end of file
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbdatetimepicker/hbdatetimepicker.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbdatetimepicker/hbdatetimepicker.css Wed Jun 23 18:33:25 2010 +0300
@@ -13,5 +13,5 @@
}
HbDateTimePicker::highlight{
- fixed-height: expr(var(hb-param-text-height-secondary)+2*var(hb-param-margin-gene-middle-vertical));
+ fixed-height: expr(var(hb-param-text-height-primary) + var(hb-param-margin-gene-bottom) + var(hb-param-margin-gene-top));
}
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbdialog/hbdialog.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbdialog/hbdialog.css Wed Jun 23 18:33:25 2010 +0300
@@ -1,14 +1,37 @@
HbDialog {
max-width:expr(var(hb-param-screen-width)-2*var(hb-param-margin-gene-screen));
max-height:expr(var(hb-param-screen-height)-2*var(hb-param-margin-gene-screen));
+ layout:default;
+}
+
+HbDialog[heading_layout] {
+ layout:content_header;
+}
+
+HbDialog[controls_layout] {
+ layout:content_controls;
+}
+
+HbDialog[heading_layout][controls_layout] {
+ layout:content_header_controls;
}
HbDialog::heading {
+ left:-var(hb-param-margin-gene-popup);
+ right:var(hb-param-margin-gene-popup);
+ top:-var(hb-param-margin-gene-popup);
+ bottom:var(hb-param-margin-gene-popup);
+ text-height:var(hb-param-text-height-primary);
+ text-align:left;
+ font-variant:primary;
max-height:expr(var(hb-param-text-height-primary)+2*var(hb-param-margin-gene-popup));
+ bottom:var(hb-param-margin-gene-popup);
}
-HbDialog::controls {
+HbDialog::controls {
+ top:-var(hb-param-margin-gene-popup);
min-width:expr(var(hb-param-screen-short-edge)-2*var(hb-param-margin-gene-screen));
+ fixed-height:var(hb-param-widget-popup-softkey-height);
}
HbDialog::content {
@@ -16,6 +39,7 @@
right:var(hb-param-margin-gene-popup);
top:-var(hb-param-margin-gene-popup);
bottom:var(hb-param-margin-gene-popup);
+
}
HbDialog > HbListWidget {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbdialog/hbdialog.widgetml Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,58 @@
+<hbwidget version="0.1" type="HbDialog">
+
+ <layout name="default" type="mesh">
+ <meshitem src="content" srcEdge="TOP" dst="" dstEdge="TOP" />
+ <meshitem src="content" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="content" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+ <meshitem src="content" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+
+ <meshitem src="heading" srcEdge="TOP" dst="" dstEdge="TOP" />
+ <meshitem src="heading" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+ <meshitem src="heading" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="heading" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+
+ <meshitem src="controls" srcEdge="TOP" dst="" dstEdge="TOP" />
+ <meshitem src="controls" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+ <meshitem src="controls" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="controls" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+ </layout>
+
+ <layout name="content_header" type="mesh">
+ <meshitem src="content" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="content" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+ <meshitem src="content" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+
+ <meshitem src="heading" srcEdge="TOP" dst="" dstEdge="TOP" />
+ <meshitem src="heading" srcEdge="BOTTOM" dst="content" dstEdge="TOP" />
+ <meshitem src="heading" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="heading" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+ </layout>
+
+ <layout name="content_controls" type="mesh">
+ <meshitem src="content" srcEdge="TOP" dst="" dstEdge="TOP" />
+ <meshitem src="content" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="content" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+
+ <meshitem src="controls" srcEdge="TOP" dst="content" dstEdge="BOTTOM" />
+ <meshitem src="controls" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+ <meshitem src="controls" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="controls" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+ </layout>
+
+ <layout name="content_header_controls" type="mesh">
+ <meshitem src="content" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="content" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+
+ <meshitem src="heading" srcEdge="TOP" dst="" dstEdge="TOP" />
+ <meshitem src="heading" srcEdge="BOTTOM" dst="content" dstEdge="TOP" />
+ <meshitem src="heading" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="heading" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+
+ <meshitem src="controls" srcEdge="TOP" dst="content" dstEdge="BOTTOM" />
+ <meshitem src="controls" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+ <meshitem src="controls" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="controls" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+ </layout>
+
+</hbwidget>
+
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbgroupboxheadingwidget/hbgroupboxheadingwidget.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbgroupboxheadingwidget/hbgroupboxheadingwidget.css Wed Jun 23 18:33:25 2010 +0300
@@ -34,12 +34,9 @@
/* Collapsing container groupBox */
HbGroupBoxHeadingWidget[groupBoxType="3"]::icon
{
- top:-var(hb-param-margin-gene-top);
- bottom:var(hb-param-margin-gene-bottom);
right:var(hb-param-margin-gene-right);
-
- fixed-width:var(hb-param-graphic-size-primary-small);
- fixed-height:var(hb-param-graphic-size-primary-small);
+ fixed-width:var(hb-param-graphic-size-secondary);
+ fixed-height:var(hb-param-graphic-size-secondary);
}
HbGroupBoxHeadingWidget[groupBoxType="3"]::text
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbgroupboxheadingwidget/hbgroupboxheadingwidget.widgetml Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbgroupboxheadingwidget/hbgroupboxheadingwidget.widgetml Wed Jun 23 18:33:25 2010 +0300
@@ -34,9 +34,8 @@
background: [ TOP,LEFT,BOTTOM,RIGHT ]anchored w.r.t to layout
-->
<layout name="collapsing_container" type="mesh">
- <meshitem src="icon" srcEdge="TOP" dst="" dstEdge="TOP" />
+ <meshitem src="icon" srcEdge="CENTERV" dst="text" dstEdge="CENTERV" />
<meshitem src="icon" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
- <meshitem src="icon" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
<meshitem src="text" srcEdge="TOP" dst="" dstEdge="TOP" />
<meshitem src="text" srcEdge="LEFT" dst="" dstEdge="LEFT" />
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbindicatorbutton/hbindicatorbutton.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbindicatorbutton/hbindicatorbutton.css Wed Jun 23 18:33:25 2010 +0300
@@ -1,9 +1,23 @@
-HbIndicatorButton
+HbIndicatorButton[layout="1"]
{
- layout:indicatorbuttonlayout;
+ layout:indicatorbuttonlayout1;
+}
+
+HbIndicatorButton[layout="2"]
+{
+ layout:indicatorbuttonlayout2;
}
HbIndicatorButton::handleindication
{
- fixed-width: expr(var(hb-param-widget-chrome-height)/6);
+ fixed-width: expr((1/6)*var(hb-param-widget-chrome-height));
+ fixed-height: expr((2/3)*var(hb-param-widget-chrome-height));
}
+
+HbIndicatorButton::eventindication
+{
+ top: -expr(((2/3)*var(hb-param-widget-chrome-height) - var(hb-param-graphic-size-primary-small))*(1/2));
+ left: -expr((var(hb-param-widget-chrome-height) - var(hb-param-graphic-size-primary-small)*2 - 0.5un)*(1/2));
+ fixed-width:var(hb-param-graphic-size-primary-small);
+ fixed-height:var(hb-param-graphic-size-primary-small);
+}
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbindicatorbutton/hbindicatorbutton.widgetml Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbindicatorbutton/hbindicatorbutton.widgetml Wed Jun 23 18:33:25 2010 +0300
@@ -1,6 +1,6 @@
<hbwidget version="0.1" type="indicatorbutton">
- <layout name="indicatorbuttonlayout" type="mesh">
+ <layout name="indicatorbuttonlayout1" type="mesh">
<meshitem src="background" srcEdge="TOP" dst="" dstEdge="TOP" />
<meshitem src="background" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
<meshitem src="background" srcEdge="LEFT" dst="" dstEdge="LEFT" />
@@ -13,5 +13,22 @@
<meshitem src="handleindication" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
<meshitem src="handleindication" srcEdge="LEFT" dst="" dstEdge="LEFT" />
</layout>
+
+ <layout name="indicatorbuttonlayout2" type="mesh">
+ <meshitem src="background" srcEdge="TOP" dst="" dstEdge="TOP" />
+ <meshitem src="background" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+ <meshitem src="background" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="background" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+
+ <meshitem src="eventindication" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="eventindication" srcEdge="TOP" dst="" dstEdge="TOP" />
+
+ <meshitem src="icon" srcEdge="TOP" dst="eventindication" dstEdge="TOP" />
+ <meshitem src="icon" srcEdge="LEFT" dst="eventindication" dstEdge="RIGHT" spacing="-0.5un"/>
+
+ <meshitem src="handleindication" srcEdge="TOP" dst="" dstEdge="TOP" />
+ <meshitem src="handleindication" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+ <meshitem src="handleindication" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ </layout>
</hbwidget>
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbindicatorbutton/hbindicatorbutton_color.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbindicatorbutton/hbindicatorbutton_color.css Wed Jun 23 18:33:25 2010 +0300
@@ -1,4 +1,4 @@
-HbIndicatoButton::icon {
+HbIndicatorButton::eventindication {
color: var(qtc_title_pane_normal);
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbinputdialog/hbinputdialog.css Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,9 @@
+HbInputDialog::content {
+ left:0 un;
+ right:0 un;
+ top:0 un;
+ bottom:0 un;
+}
+HbInputDialog::controls {
+ top:0 un;
+}
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hblabel/hblabel.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hblabel/hblabel.css Wed Jun 23 18:33:25 2010 +0300
@@ -16,13 +16,3 @@
top:-var(hb-param-margin-label);
bottom:var(hb-param-margin-label);
}
-
-HbDialog::heading > HbLabel::text {
- left:-var(hb-param-margin-gene-popup);
- right:var(hb-param-margin-gene-popup);
- top:-var(hb-param-margin-gene-popup);
- bottom:var(hb-param-margin-gene-popup);
- text-height:var(hb-param-text-height-primary);
- text-align:left;
- font-variant:primary;
-}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbmessagebox/hbmessagebox.css Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,10 @@
+HbMessageBox::content {
+ left:0 un;
+ right:0 un;
+ top:0 un;
+ bottom:0 un;
+}
+
+HbMessageBox::controls {
+ top:0 un;
+}
\ No newline at end of file
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbmessageboxcontentwidget/hbmessageboxcontentwidget.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbmessageboxcontentwidget/hbmessageboxcontentwidget.css Wed Jun 23 18:33:25 2010 +0300
@@ -9,30 +9,31 @@
HbMessageBoxContentWidget::text {
- top: -var(hb-param-margin-gene-popup);
- bottom: var(hb-param-margin-gene-popup);
- left: -var(hb-param-margin-gene-popup);
- right: 0 un;/*var(hb-param-margin-gene-popup);*/
- font-variant:primary;
- text-height:var(hb-param-text-height-primary);
- text-line-count-max: 5;
- text-line-count-min: 3;
- text-align: left;
+
+ top: -var(hb-param-margin-gene-popup);
+ bottom: var(hb-param-margin-gene-popup);
+ left: -var(hb-param-margin-gene-popup);
+ right: 0 un;/*var(hb-param-margin-gene-popup);*/
+ font-variant:primary;
+ text-height:var(hb-param-text-height-primary);
+ text-line-count-max: 5;
+ text-line-count-min: 3;
+ text-align: left;
}
HbMessageBoxContentWidget::text[hasIcon="true"]
{
- min-width: expr(var(hb-param-screen-short-edge)-4*var(hb-param-margin-gene-screen)-var(hb-param-graphic-size-primary-large))
+ min-width: expr(var(hb-param-screen-short-edge)-2*var(hb-param-margin-gene-screen)-2*var(hb-param-margin-gene-popup)-var(hb-param-graphic-size-primary-large));
}
HbMessageBoxContentWidget::text[hasIcon="false"]
{
- min-width: expr(var(hb-param-screen-short-edge)-2*var(hb-param-margin-gene-screen))
+ min-width: expr(var(hb-param-screen-short-edge)-*2var(hb-param-margin-gene-screen)-var(hb-param-margin-gene-popup));
}
HbMessageBoxContentWidget::icon
{
- top: -var(hb-param-margin-gene-popup);
- left: -var(hb-param-margin-gene-popup);
- fixed-width: var(hb-param-graphic-size-primary-large);
- fixed-height: var(hb-param-graphic-size-primary-large);
+ top: -var(hb-param-margin-gene-popup);
+ left: -var(hb-param-margin-gene-popup);
+ fixed-width: var(hb-param-graphic-size-primary-large);
+ fixed-height: var(hb-param-graphic-size-primary-large);
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbmessageboxeditor/hbmessageboxeditor.css Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,6 @@
+HbMessageBoxEditor::text{
+ left: 0un;
+ right: 0un;
+ top: 0un;
+ bottom: 0un;
+}
\ No newline at end of file
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbprogressbar/hbprogressbar.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbprogressbar/hbprogressbar.css Wed Jun 23 18:33:25 2010 +0300
@@ -40,6 +40,7 @@
pref-height: var(hb-param-widget-progress-bar-height);
size-policy-vertical: fixed;
size-policy-horizontal: preferred;
+ pref-width:var(hb-param-screen-short-edge);
}
@@ -48,6 +49,7 @@
pref-width: var(hb-param-widget-progress-bar-height);
size-policy-vertical: preferred;
size-policy-horizontal: fixed;
+ pref-height:var(hb-param-screen-short-edge);
}
HbProgressBar[orientation="Horizontal"]::toucharea
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbprogressbar/hbprogressbar.widgetml Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbprogressbar/hbprogressbar.widgetml Wed Jun 23 18:33:25 2010 +0300
@@ -251,7 +251,6 @@
<meshitem src="toucharea" srcEdge="CENTERV" dst="frame" dstEdge="CENTERV" />
<meshitem src="toucharea" srcEdge="CENTERH" dst="frame" dstEdge="CENTERH" />
-
</layout>
</hbwidget>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbprogressdialog/hbprogressdialog.css Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,10 @@
+HbProgressDialog::content {
+ left:0 un;
+ right:0 un;
+ top:0 un;
+ bottom:0 un;
+}
+
+HbProgressDialog::controls {
+ top:0 un;
+}
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbprogressdialogcontentwidget/hbprogressdialogcontentwidget.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbprogressdialogcontentwidget/hbprogressdialogcontentwidget.css Wed Jun 23 18:33:25 2010 +0300
@@ -47,6 +47,7 @@
{
text-line-count-min:1;
text-line-count-max:3;
+ min-width: expr(var(hb-param-screen-short-edge)-2*var(hb-param-margin-gene-screen)-3*var(hb-param-margin-gene-popup)-var(hb-param-graphic-size-primary-large));
}
/* Text line count for only text Layout use cases */
@@ -54,5 +55,6 @@
{
text-line-count-min:1;
text-line-count-max:5;
+ min-width: expr(var(hb-param-screen-short-edge)-2*var(hb-param-margin-gene-screen)-2*var(hb-param-margin-gene-popup));
}
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbpushbutton/hbpushbutton.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbpushbutton/hbpushbutton.css Wed Jun 23 18:33:25 2010 +0300
@@ -16,7 +16,8 @@
*/
HbPushButton[icon][!text][!additionalText]{
layout:icon_button;
- min-height:expr(var(hb-param-margin-gene-top)+var(hb-param-margin-gene-bottom)+var(hb-param-text-height-secondary));/* we are specifying pref -height for icon ,so need to see what could be min height so that it will suits for all usecases*/
+ /* we are specifying pref -height for icon ,so need to see what could be min height so that it will suits for all usecases*/
+ min-height:expr(var(hb-param-margin-gene-top)+var(hb-param-margin-gene-bottom)+var(hb-param-text-height-secondary));
}
HbPushButton[text][!icon][!additionalText]{
@@ -29,7 +30,8 @@
HbPushButton[!stretched][icon][text][!additionalText]{
layout:icon_text_Vertical;
- min-height:expr(var(hb-param-margin-gene-center-align)+var(hb-param-margin-gene-center-align)+var(hb-param-margin-gene-middle-vertical)+var(hb-param-text-height-tiny)); /* we are using pref height for icon, so not included in calculation*/
+ /* we are using pref height for icon, so not included in calculation*/
+ min-height:expr(var(hb-param-margin-gene-center-align)+var(hb-param-margin-gene-center-align)+var(hb-param-margin-gene-middle-vertical)+var(hb-param-text-height-tiny));
}
HbPushButton[stretched][icon][text][!additionalText]{
@@ -49,7 +51,7 @@
HbPushButton[!stretched][additionalText][text][!icon]{
layout:text_additionalText_vertical;
- min-height:expr(var(hb-param-margin-gene-center-align)+var(hb-param-margin-gene-center-align)+var(hb-param-margin-gene-middle-vertical)+var(hb-param-text-height-title)+var(hb-param-text-height-tiny));
+ min-height:expr(var(hb-param-margin-gene-center-align)+var(hb-param-margin-gene-center-align)+var(hb-param-margin-gene-middle-vertical)+var(hb-param-text-height-title)+var(hb-param-text-height-tiny));
}
/*
@@ -158,6 +160,9 @@
top: -var(hb-param-margin-gene-top);
right:var(hb-param-margin-gene-right);
text-height:var(hb-param-text-height-primary);
+ /* set width pref */
+ /*pref-width: 0.0un;
+ size-policy-vertical:fixed;*/
text-align:left;
text-line-count-max:1;
}
@@ -170,6 +175,9 @@
right:var(hb-param-margin-gene-right);
font-variant:secondary;
text-height:var(hb-param-text-height-secondary);
+ /* set width pref */
+ /*pref-width: 0.0un;
+ size-policy-vertical:fixed;*/
text-align:left;
text-line-count-max:1;
}
@@ -189,6 +197,9 @@
{
left:-var(hb-param-margin-gene-middle-horizontal);
text-height:var(hb-param-text-height-primary);
+ /* set width pref */
+ pref-width: 10.0un;
+ size-policy-vertical:fixed;
text-align:left;
text-line-count-max:1;
}
@@ -199,6 +210,8 @@
right:var(hb-param-margin-gene-right);
font-variant:secondary;
text-height:var(hb-param-text-height-secondary);
+ pref-width: 10.0un;
+ size-policy-vertical:fixed;
text-align:left;
text-line-count-max:1;
}
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbratingslider/hbratingslider.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbratingslider/hbratingslider.css Wed Jun 23 18:33:25 2010 +0300
@@ -11,6 +11,7 @@
top:0.0un;
bottom: 0.0un;
fixed-height: var(hb-param-graphic-size-primary-small);
+ pref-width:var(hb-param-screen-short-edge);
}
HbRatingSlider::toucharea{
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbslidertickmarkslabel/hbslidertickmarkslabel.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbslidertickmarkslabel/hbslidertickmarkslabel.css Wed Jun 23 18:33:25 2010 +0300
@@ -15,33 +15,33 @@
text-line-count-max:1;
}
-HbSliderTickmarksLabel[orientation="1"]::tickmark-majorlabel
+HbSlider[orientation="Horizontal"] > HbSliderTickmarksLabel::tickmark-majorlabel
{
text-align: center center;
}
-HbSliderTickmarksLabel[orientation="1"]::tickmark-minorlabel
+HbSlider[orientation="Horizontal"] > HbSliderTickmarksLabel::tickmark-minorlabel
{
text-align: center center;
}
/*Vertical orientation major and minor label*/
-HbSliderTickmarksLabel[orientation="2"][TicksLeft="true"]::tickmark-majorlabel
+HbSlider[orientation="Vertical"] > HbSliderTickmarksLabel[TicksLeft="true"]::tickmark-majorlabel
{
text-align: right center;
}
-HbSliderTickmarksLabel[orientation="2"][TicksRight="true"]::tickmark-majorlabel
+HbSlider[orientation="Vertical"] > HbSliderTickmarksLabel[TicksRight="true"]::tickmark-majorlabel
{
text-align: left center;
}
-HbSliderTickmarksLabel[orientation="2"][TicksLeft="true"]::tickmark-minorlabel
+HbSlider[orientation="Vertical"] >HbSliderTickmarksLabel[TicksLeft="true"]::tickmark-minorlabel
{
text-align: right center;
}
-HbSliderTickmarksLabel[orientation="2"][TicksRight="true"]::tickmark-minorlabel
+HbSlider[orientation="Vertical"] >HbSliderTickmarksLabel[TicksRight="true"]::tickmark-minorlabel
{
text-align: left center;
}
\ No newline at end of file
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbslidertickmarkslabel/hbslidertickmarkslabel_color.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbslidertickmarkslabel/hbslidertickmarkslabel_color.css Wed Jun 23 18:33:25 2010 +0300
@@ -1,9 +1,19 @@
-HbSliderTickmarksLabel[state= "normal"]::tickmark-majorlabel
+HbSliderPopupContentWidget > HbSlider > HbSliderTickmarksLabel::tickmark-majorlabel
+{
+ color: var(qtc_popup_trans_normal);
+}
+
+HbSliderPopupContentWidget > HbSlider > HbSliderTickmarksLabel::tickmark-minorlabel
{
color: var(qtc_popup_trans_normal);
}
-HbSliderTickmarksLabel[state= "normal"]::tickmark-minorlabel
+HbSliderTickmarksLabel::tickmark-majorlabel
{
- color: var(qtc_popup_trans_normal);
+ color: var(qtc_default_main_pane_normal);
}
+
+HbSliderTickmarksLabel::tickmark-minorlabel
+{
+ color: var(qtc_default_main_pane_normal);
+}
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbtoolbarextension/hbtoolbarextension.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbtoolbarextension/hbtoolbarextension.css Wed Jun 23 18:33:25 2010 +0300
@@ -8,17 +8,3 @@
max-height:var(hb-param-screen-height);
min-width:0un;
}
-
-HbToolBarExtension::heading {
- left:-var(hb-param-margin-gene-popup);
- right:var(hb-param-margin-gene-popup);
- top:-var(hb-param-margin-gene-popup);
- bottom:var(hb-param-margin-gene-popup);
-}
-
-HbToolBarExtension::heading::text {
- text-height:var(hb-param-text-height-primary);
- text-align:left;
- text-line-count-max: 1;
- font-variant:primary;
-}
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbtoolbutton/hbtoolbutton.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbtoolbutton/hbtoolbutton.css Wed Jun 23 18:33:25 2010 +0300
@@ -113,10 +113,6 @@
text-line-count-max: 1;
}
-HbToolButton[dialogtoolbar]{
- fixed-height:var(hb-param-widget-popup-softkey-height);
-}
-
HbToolBar > HbToolButton[dialogtoolbar]::text {
left:-0.75un;
right:0.75un;
@@ -125,3 +121,23 @@
text-align:center center;
text-line-count-max: 1;
}
+
+HbTitleBar > HbToolButton[buttonStyle="0"]::icon{
+ fixed-width:var(hb-param-graphic-size-secondary);
+ fixed-height:var(hb-param-graphic-size-secondary);
+}
+
+HbTitleBar > HbToolButton[buttonStyle="1"]::icon{
+ fixed-width:var(hb-param-graphic-size-function);
+ fixed-height:var(hb-param-graphic-size-function);
+}
+
+HbTitleBar > HbToolButton[buttonStyle="2"]::icon{
+ fixed-width:var(hb-param-graphic-size-function);
+ fixed-height:var(hb-param-graphic-size-function);
+}
+
+HbTitleBar > HbToolButton[buttonStyle="3"]::icon{
+ fixed-width:var(hb-param-graphic-size-primary-small);
+ fixed-height:var(hb-param-graphic-size-primary-small);
+}
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbtoolbutton/hbtoolbutton_color.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbtoolbutton/hbtoolbutton_color.css Wed Jun 23 18:33:25 2010 +0300
@@ -88,5 +88,5 @@
}
HbTitleBar > HbNavigationButton::icon {
- color:(qtc_title_pane_normal);
+ color:var(qtc_title_pane_normal);
}
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbtooltiplabel/hbtooltiplabel.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbtooltiplabel/hbtooltiplabel.css Wed Jun 23 18:33:25 2010 +0300
@@ -16,4 +16,5 @@
text-line-count-max: 1;
font-variant:secondary;
text-height:var(hb-param-text-height-tiny);
+ text-wrap-mode:no-wrap;
}
--- a/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbtumbleview/hbtumbleview.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/rules/widgets/hbtumbleview/hbtumbleview.css Wed Jun 23 18:33:25 2010 +0300
@@ -15,8 +15,7 @@
}
HbTumbleView::highlight {
- fixed-height: expr(var(hb-param-text-height-secondary)+2*var(hb-param-margin-gene-middle-vertical));
-
+ fixed-height: expr(var(hb-param-text-height-primary)+var(hb-param-margin-gene-bottom)+var(hb-param-margin-gene-top));
}
HbTumbleView::separator{
--- a/src/hbcore/resources/themes/style/hbdefault/variables/color/hbcolorgroup.css Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/resources/themes/style/hbdefault/variables/color/hbcolorgroup.css Wed Jun 23 18:33:25 2010 +0300
@@ -39,6 +39,7 @@
qtc_hs_list_item_highlight:#FFFFFF; /* Added 05.02.2010 */
qtc_hs_badge:#FFFFFF; /* Added 01.03.2010 */
qtc_hs_cal:#3C3C3C; /* Added 18.03.2010 */
+qtc_hs_snapguide:#f7931e; /* Added 24.05.2010 */
/* Application specific - Radio & Calculator */
qtc_lcd_title_normal:#505050; /* Added 11.02.2010 */
@@ -79,10 +80,10 @@
qtc_default_popup_disabled:#9B9B9B;
/* Title pane */
-qtc_title_pane_normal:#FFFFFF;
+qtc_title_pane_normal:#3C3C3C; /* Modified 26.05.2010 */
qtc_title_pane_pressed:#FFFFFF;
qtc_title_pane_highlight:#FFFFFF;
-qtc_title_pane_latched:#FFFFFF;
+qtc_title_pane_latched:#000000; /* Modified 26.05.2010 */
qtc_title_pane_trans_normal:#FFFFFF;
qtc_title_pane_trans_pressed:#FFFFFF;
qtc_title_pane_trans_highlight:#FFFFFF;
@@ -101,11 +102,6 @@
/* Main area - View title */
qtc_viewtitle_normal:#3C3C3C;
-/* Main area - Tab */
-qtc_tab_active_normal:#3C3C3C;
-qtc_tab_passive_normal:#3C3C3C;
-qtc_tab_passive_Pressed:#3C3C3C;
-
/* Main area - Grid */
qtc_grid_normal:#595B5D;
qtc_grid_pressed:#FFFFFF;
--- a/src/hbcore/style/hbstyle.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/style/hbstyle.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -99,7 +99,9 @@
#include "hbnamespace_p.h"
-#include "hbmeshlayout_p.h"
+#include "hbanchorlayout.h"
+#include "hbanchorlayoutdebug_p.h"
+#include "hbanchor_p.h"
#include <QGraphicsWidget>
#include <hbwidget.h>
@@ -138,7 +140,7 @@
*/
/*!
-
+
\deprecated P_PushButton_icon
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
@@ -146,7 +148,7 @@
\deprecated P_PushButton_text
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
-
+
\deprecated P_PushButton_additionaltext
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
@@ -346,7 +348,7 @@
\deprecated P_ListViewItem_icon
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
-
+
\deprecated P_ItemHighlight_background
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
@@ -402,11 +404,11 @@
\deprecated P_IndicatorGrou\deprecated P_signalicon
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
-
+
\deprecated P_IndicatorGrou\deprecated P_batteryicon
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
-
+
\deprecated P_SignalIndicator_icon
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
@@ -458,7 +460,7 @@
\deprecated P_ProgressBar_waittrack
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
-
+
\deprecated P_ProgressBar_mintext
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
@@ -470,7 +472,7 @@
\deprecated P_Softkey_background
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
-
+
\deprecated P_NavigationButton_background
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
@@ -486,7 +488,7 @@
\deprecated P_ItemViewItem_frame
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
-
+
\deprecated P_SelectionControl_selectionstart
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
@@ -534,7 +536,7 @@
\deprecated P_ProgressSliderHandle_background
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
-
+
\deprecated P_ProgressSliderHandle_icon
is deprecated. HbStyle::Primitive enums are deprecated. Primitives can be accessed by item names using HbWidget::primitive(const QString).
@@ -791,6 +793,19 @@
static const QString GLOBAL_PARAMETERS_LOCATION = QLatin1String(":/themes/style/hbdefault/variables/layout/zoom/0/hbglobalparameters.css");
+inline void overrideSpacing( HbAnchorLayout *layout, const QString &name, Hb::Edge edge, qreal val )
+{
+ if( name.isNull() ) {
+ return;
+ }
+ QList<HbAnchor*> list = HbAnchorLayoutDebug::getOriginalAnchors( layout );
+ for( int i = 0; i < list.size(); i++ ) {
+ HbAnchor *anchor = list.at(i);
+ if( ( anchor->mStartId == name ) && ( anchor->mStartEdge == edge ) ) {
+ layout->setAnchor( anchor->mStartId, anchor->mStartEdge, anchor->mEndId, anchor->mEndEdge, val );
+ }
+ }
+}
/*!
Constructor
@@ -800,7 +815,6 @@
{
Q_D( HbStyle );
d->q_ptr = this;
- QObject::connect(hbInstance->theme(), SIGNAL(changed()), this, SLOT(_q_onThemeChanged()));
}
/*!
@@ -902,7 +916,7 @@
// register associated style files
HbWidgetStyleLoader::instance()->addFilePath(
stylePlugin->layoutPath(),
- HbLayeredStyleLoader::Concern_Layouts,
+ HbLayeredStyleLoader::Concern_Layouts,
HbLayeredStyleLoader::Priority_Core);
d->pluginStylePaths.insert(pluginName, stylePlugin->layoutPath());
@@ -941,7 +955,7 @@
// unregister associated style files
HbWidgetStyleLoader::instance()->removeFilePath(
d->pluginStylePaths.value(pluginName),
- HbLayeredStyleLoader::Concern_Layouts,
+ HbLayeredStyleLoader::Concern_Layouts,
HbLayeredStyleLoader::Priority_Core);
d->pluginStylePaths.remove(pluginName);
@@ -957,9 +971,9 @@
/*!
- \deprecated HbStyle::createPrimitive(HbStyle::Primitive, QGraphicsItem*)
+ \deprecated HbStyle::createPrimitive(HbStyle::Primitive, QGraphicsItem*)
is deprecated. This method will be replaced with an altered version which will use new base primitive enumerations.
-
+
Creates instances of primitive graphics items. This method should be used by all widgets that support styling.
When changing the style the returned primitives can be replaced with an altered version of the primitives, or with a completely
different primitive, to create a custom appearance. This shouldn't cause changes to the widget if the functional design
@@ -1014,7 +1028,7 @@
case P_ProgressDialog_icon: {
HbIconItem *iconItem = new HbIconItem(HbIcon(),parent);
setItemName(iconItem, QLatin1String("icon"));
- return iconItem;
+ return iconItem;
}
case P_CheckBox_icon:
@@ -1023,19 +1037,19 @@
case P_GridViewItem_icon: {
HbIconItem *item = q_check_ptr(new HbIconItem(HbIcon(),parent));
setItemName(item, QLatin1String("icon"));
- return item;
+ return item;
}
case P_DataGroup_icon:
{
HbIconItem *item = new HbIconItem(HbIcon(), parent);
setItemName(item, QLatin1String("dataGroup_Icon"));
- return item;
+ return item;
}
case P_DataItem_icon:
{
HbIconItem *item = new HbIconItem(HbIcon(), parent);
setItemName(item, QLatin1String("dataItem_Icon"));
- return item;
+ return item;
}
case P_ComboBox_text:
{
@@ -1096,14 +1110,14 @@
ta->setZValue(TOUCHAREA_ZVALUE);
return ta;
}
- case P_ProgressSliderHandle_toucharea:
+ case P_ProgressSliderHandle_toucharea:
{
HbTouchArea *ta = new HbTouchArea(parent);
ta->setFlag(QGraphicsItem::ItemIsFocusable);
setItemName(ta, QLatin1String("toucharea"));
ta->setZValue(TOUCHAREA_ZVALUE);
if(parent){
- parent->setHandlesChildEvents(true);
+ parent->setHandlesChildEvents(true);
}
return ta;
}
@@ -1117,13 +1131,13 @@
case P_PushButton_toucharea: // Generic implementation, can add other cases here
case P_CheckBox_toucharea:
case P_RatingSlider_toucharea:
- case P_SliderElement_touchhandle:
+ case P_SliderElement_touchhandle:
{
HbTouchArea *ta = new HbTouchArea(parent);
ta->setFlag(QGraphicsItem::ItemIsFocusable);
setItemName(ta, QLatin1String("toucharea"));
if(parent){
- parent->setHandlesChildEvents(true);
+ parent->setHandlesChildEvents(true);
}
return ta;
}
@@ -1134,7 +1148,7 @@
setItemName(ta, QLatin1String("toucharea"));
// NOTE:: This is a temporary fix
//if(parent){
- // parent->setHandlesChildEvents(true);
+ // parent->setHandlesChildEvents(true);
//}
return ta;
}
@@ -1144,7 +1158,7 @@
ta->setFlag(QGraphicsItem::ItemIsFocusable);
setItemName(ta, QLatin1String("combobox_button_toucharea"));
/*if(parent){
- parent->setHandlesChildEvents(true);
+ parent->setHandlesChildEvents(true);
}*/
return ta;
}
@@ -1161,7 +1175,7 @@
HbTouchArea *ta = new HbTouchArea(parent);
ta->setFlag(QGraphicsItem::ItemIsFocusable);
if(parent){
- //parent->setHandlesChildEvents(true);
+ //parent->setHandlesChildEvents(true);
}
return ta;
}
@@ -1201,8 +1215,8 @@
ti->setAlignment(Qt::AlignCenter);
return ti;
}
-
- case P_Label_richtext:
+
+ case P_Label_richtext:
{
HbRichTextItem *rti = new HbRichTextItem(parent);
setItemName(rti, QLatin1String("text"));
@@ -1244,6 +1258,7 @@
{
HbFrameItem *n = new HbFrameItem(parent);
n->setZValue(-1);
+ n->frameDrawer().setFillWholeRect(true);
setItemName(n, "frame");
return n;
}
@@ -1273,7 +1288,7 @@
case P_DateTimePicker_separator:{
HbFrameItem *frameItem= new HbFrameItem(parent);//TODO:make it icon once iconitem setGeomoetry works for tumbleview
return frameItem;
- }
+ }
case P_DataGroup_background :
{
HbFrameItem *n = new HbFrameItem(parent);
@@ -1314,6 +1329,7 @@
case P_ProgressBar_track:
{
HbProgressTrackItem *n = new HbProgressTrackItem(parent);
+ n->frameDrawer().setFillWholeRect(true);
n->setZValue(-2);
return n;
}
@@ -1350,6 +1366,13 @@
setItemName(n, QLatin1String("handleindication"));
return n;
}
+ case P_IndicatorButton_eventindication:
+ {
+ HbIconItem *n = new HbIconItem(parent);
+ n->setFlags(HbIcon::Colorized);
+ setItemName(n, QLatin1String("eventindication"));
+ return n;
+ }
case P_IndicatorGroup_icon1:
{
HbIconItem *n = new HbIconItem(parent);
@@ -1433,7 +1456,7 @@
HbFrameItem *n = new HbFrameItem(parent);
n->setZValue(-1);
return n;
- }
+ }
case P_GroupBoxMarquee_text:
case P_TitlePane_text:
{
@@ -1498,7 +1521,7 @@
case P_RatingSlider_track:
return new HbRepeatMaskItem(parent);
-
+
case P_RatingSlider_layout: {
HbWidgetBase *layout = new HbWidgetBase(parent);
setItemName(layout, "frame");
@@ -1618,7 +1641,7 @@
//setItemName(item, QLatin1String("focus-indicator"));
return item;
}
- case P_ItemHighlight_background:
+ case P_ItemHighlight_background:
return new HbFrameItem(parent);
case P_ItemViewItem_frame: {
@@ -1706,11 +1729,11 @@
is deprecated. This method will be made private and finally removed since primitive updating will be done in the widgets.
Updates the state and content of widget's child primitives. Update for a styled primitive should happen always when
- a state change that affects drawing occurs. Such a situation can be for example pressing of a button (change background image), or
- changing a text for a widget having text content. The updatePrimitive() implementation for each primitive element can be considered
- as a part of widget's implementation. Note that it's up to the widget to decide what the styleoption contains and what the updatePrimitive() method
+ a state change that affects drawing occurs. Such a situation can be for example pressing of a button (change background image), or
+ changing a text for a widget having text content. The updatePrimitive() implementation for each primitive element can be considered
+ as a part of widget's implementation. Note that it's up to the widget to decide what the styleoption contains and what the updatePrimitive() method
uses the styleoption data for.
-
+
\sa HbStyle::createPrimitive
\param item Primitive graphicsitem.
\param primitive To identify the primitive to create.
@@ -1732,19 +1755,20 @@
switch(primitive){
case P_PushButton_icon:
{
- if (const HbStyleOptionPushButton *opt =
+ if (const HbStyleOptionPushButton *opt =
qstyleoption_cast<const HbStyleOptionPushButton*>(option)) {
HbIconItem *iconItem = static_cast<HbIconItem*>(item);
//iconItem->setIconName(opt->icon.iconName());
- iconItem->setIcon(opt->icon); // with this call iconitem refresh issue is there
+ iconItem->setIcon(opt->icon); // with this call iconitem refresh issue is there
iconItem->setMode(d->iconMode(opt->state));
iconItem->setState(d->iconState(opt->state));
+ iconItem->setAlignment(Qt::AlignCenter);
}
break;
}
case P_GroupBoxHeading_icon:
{
- if (const HbStyleOptionGroupBox *opt =
+ if (const HbStyleOptionGroupBox *opt =
qstyleoption_cast<const HbStyleOptionGroupBox*>(option)) {
HbIconItem *iconItem = static_cast<HbIconItem*>(item);
if (opt->collapsed) {
@@ -1757,7 +1781,7 @@
}
case P_DataGroup_icon:
{
- if (const HbStyleOptionDataGroupHeadingWidget *opt =
+ if (const HbStyleOptionDataGroupHeadingWidget *opt =
qstyleoption_cast<const HbStyleOptionDataGroupHeadingWidget*>(option)) {
HbIconItem *iconItem = static_cast<HbIconItem*>(item);
if (opt->expanded) {
@@ -1799,45 +1823,46 @@
if (const HbStyleOptionComboBox *opt = qstyleoption_cast<const HbStyleOptionComboBox*>(option)) {
HbTextItem *comboTextItem = static_cast<HbTextItem*>(item);
comboTextItem->setText(opt->text);
+ comboTextItem->setTextWrapping(Hb::TextNoWrap);
}
- break;
+ break;
case P_PushButton_text:
{
- if (const HbStyleOptionPushButton *opt =
+ if (const HbStyleOptionPushButton *opt =
qstyleoption_cast<const HbStyleOptionPushButton*>(option)) {
HbTextItem *textItem = static_cast<HbTextItem*>(item);
textItem->setText(opt->text);
//default alignment will come from css,
//if api flag is set ,then alignment from style is taken.
if (opt->hasTextAlignment) {
- textItem->setAlignment( opt->textAlignment );
- }
+ textItem->setAlignment( opt->textAlignment );
+ }
textItem->setTextWrapping(Hb::TextWordWrap);
}
}
break;
case P_ProgressDialog_text:
{
- if (const HbStyleOptionProgressDialog *opt =
+ if (const HbStyleOptionProgressDialog *opt =
qstyleoption_cast<const HbStyleOptionProgressDialog*>(option)) {
HbTextItem *textItem = static_cast<HbTextItem*>(item);
- textItem->setText(opt->text);
+ textItem->setText(opt->text);
}
break;
}
case P_PushButton_additionaltext:
{
- if (const HbStyleOptionPushButton *opt =
+ if (const HbStyleOptionPushButton *opt =
qstyleoption_cast<const HbStyleOptionPushButton*>(option)) {
HbTextItem *additionalTextItem = static_cast<HbTextItem*>(item);
additionalTextItem->setText(opt->additionalText);
//default alignment will come from css,
//if api flag is set ,then alignment from style is taken.
if (opt->hasAdditionalTextAlignment) {
- additionalTextItem->setAlignment( opt->additionalTextAlignment );
- }
+ additionalTextItem->setAlignment( opt->additionalTextAlignment );
+ }
additionalTextItem->setTextWrapping(Hb::TextWordWrap);
- }
+ }
}
break;
case P_PushButton_toucharea: // Generic implementation, can add other cases here
@@ -1856,16 +1881,17 @@
break;
case P_DataGroup_heading:
{
- if (const HbStyleOptionDataGroupHeadingWidget *opt =
+ if (const HbStyleOptionDataGroupHeadingWidget *opt =
qstyleoption_cast<const HbStyleOptionDataGroupHeadingWidget*>(option)) {
HbTextItem *textItem = static_cast<HbTextItem*>(item);
textItem->setText(opt->heading);
+ textItem->setTextWrapping(Hb::TextNoWrap);
}
break;
}
case P_DataGroup_description:
{
- if (const HbStyleOptionDataGroupHeadingWidget *opt =
+ if (const HbStyleOptionDataGroupHeadingWidget *opt =
qstyleoption_cast<const HbStyleOptionDataGroupHeadingWidget*>(option)) {
HbTextItem *textItem = static_cast<HbTextItem*>(item);
textItem->setText(opt->description);
@@ -1874,7 +1900,7 @@
}
case P_DataForm_heading:
{
- if (const HbStyleOptionDataForm *opt =
+ if (const HbStyleOptionDataForm *opt =
qstyleoption_cast<const HbStyleOptionDataForm*>(option)) {
HbTextItem *textItem = static_cast<HbTextItem*>(item);
textItem->setText(opt->heading);
@@ -1883,7 +1909,7 @@
}
case P_DataForm_description:
{
- if (const HbStyleOptionDataForm *opt =
+ if (const HbStyleOptionDataForm *opt =
qstyleoption_cast<const HbStyleOptionDataForm*>(option)) {
HbTextItem *textItem = static_cast<HbTextItem*>(item);
HbFontSpec spec(HbFontSpec::Secondary);
@@ -1911,24 +1937,38 @@
textItem->setText(opt->text);
}
break;
- case P_ProgressBar_text: {
- if (const HbStyleOptionProgressBar *opt = qstyleoption_cast<const HbStyleOptionProgressBar*>(option)) {
- HbTextItem *textItem = static_cast<HbTextItem*>(item);
- textItem->setAlignment(Qt::AlignCenter);
- textItem->setZValue(100);
- textItem->setText(opt->text);
- }
- break;
- }
+ case P_ProgressBar_text: {
+ if (const HbStyleOptionProgressBar *opt = qstyleoption_cast<const HbStyleOptionProgressBar*>(option)) {
+ HbTextItem *textItem = static_cast<HbTextItem*>(item);
+ textItem->setAlignment(Qt::AlignCenter);
+ textItem->setZValue(100);
+ textItem->setText(opt->text);
+ }
+ break;
+ }
case P_DataGroup_background: {
- if (const HbStyleOptionDataGroupHeadingWidget *opt =
+ if (const HbStyleOptionDataGroupHeadingWidget *opt =
qstyleoption_cast<const HbStyleOptionDataGroupHeadingWidget *>(option)) {
HbFrameItem *frameItem = static_cast<HbFrameItem*>( item );
if(!frameItem){
return;
}
+ QString frameGraphicsName;
+ QIcon::Mode mode = QIcon::Disabled;
+ if (opt->state & QStyle::State_Enabled) {
+ mode = QIcon::Normal;
+ }
+ if (opt->state & QStyle::State_Active) {
+ mode = QIcon::Active;
+ }
+ if (opt->state & QStyle::State_Selected) {
+ mode = QIcon::Selected;
+ }
frameItem->setZValue(-1.0);
- if(opt->pressed) {
+ if(mode == QIcon::Disabled) {
+ frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_list_disabled"));
+ }
+ else if(opt->pressed ) {
frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_list_pressed"));
} else {
frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_list_parent_normal"));
@@ -1939,19 +1979,37 @@
break;
}
case P_DataGroupComboBackground: {
- HbFrameItem *frameItem = static_cast<HbFrameItem*>( item );
- if(!frameItem){
- return;
+ if (const HbStyleOptionDataGroup *opt = qstyleoption_cast<const HbStyleOptionDataGroup *>(option)) {
+ QString frameGraphicsName;
+ QIcon::Mode mode = QIcon::Disabled;
+ HbFrameItem *frameItem = static_cast<HbFrameItem*>( item );
+ if(!frameItem){
+ return;
+ }
+ if (opt->state & QStyle::State_Enabled) {
+ mode = QIcon::Normal;
+ }
+ if (opt->state & QStyle::State_Active) {
+ mode = QIcon::Active;
+ }
+ if (opt->state & QStyle::State_Selected) {
+ mode = QIcon::Selected;
+ }
+ if (mode == QIcon::Disabled ) {
+ frameGraphicsName = QLatin1String("qtg_fr_list_disabled");
+ } else {
+ frameGraphicsName = QLatin1String("qtg_fr_list_parent_normal");
+ }
+ frameItem->frameDrawer().setFrameGraphicsName(frameGraphicsName);
+ frameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
}
- frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_list_parent_normal"));
- frameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
break;
}
case P_GroupBoxHeading_background: {
if (const HbStyleOptionGroupBox *opt = qstyleoption_cast<const HbStyleOptionGroupBox *>(option)) {
HbFrameItem *frameItem = static_cast<HbFrameItem*>( item );
-
+
if(!frameItem){
return;
}
@@ -1967,7 +2025,7 @@
frameGraphicsName = QLatin1String("qtg_fr_list_highlight");
}
}
- frameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
+ frameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
frameItem->frameDrawer().setFrameGraphicsName(frameGraphicsName);
}
break;
@@ -1976,7 +2034,7 @@
case P_GroupBoxContent_background: {
if (const HbStyleOption *opt = qstyleoption_cast<const HbStyleOption *>(option)) {
HbFrameItem *frameItem = static_cast<HbFrameItem*>( item );
-
+
if(!frameItem){
return;
}
@@ -1989,26 +2047,44 @@
} else {
frameGraphicsName = QLatin1String("qtg_fr_groupbox_highlight");
}
- frameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
+ frameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
frameItem->frameDrawer().setFrameGraphicsName(frameGraphicsName);
}
break;
}
-
+
case P_DataItem_background: {
- HbFrameItem *frameItem = static_cast<HbFrameItem*>( item );
- if(!frameItem){
- return;
+ if (const HbStyleOptionDataFormViewItem *opt = qstyleoption_cast<const HbStyleOptionDataFormViewItem *>(option)) {
+ QString frameGraphicsName;
+ HbFrameItem *frameItem = static_cast<HbFrameItem*>( item );
+ if(!frameItem){
+ return;
+ }
+ QIcon::Mode mode = QIcon::Disabled;
+ if (opt->state & QStyle::State_Enabled) {
+ mode = QIcon::Normal;
+ }
+ if (opt->state & QStyle::State_Active) {
+ mode = QIcon::Active;
+ }
+ if (opt->state & QStyle::State_Selected) {
+ mode = QIcon::Selected;
+ }
+ if (mode == QIcon::Disabled ) {
+ frameGraphicsName = QLatin1String("qtg_fr_list_disabled");
+ } else {
+ frameGraphicsName = QLatin1String("qtg_fr_list_parent_normal");
+ }
+ frameItem->frameDrawer().setFrameGraphicsName(frameGraphicsName);
+ frameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
}
-
- frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_list_normal"));
- frameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
break;
}
case P_DataItem_label: {
if (const HbStyleOptionDataFormViewItem *opt = qstyleoption_cast<const HbStyleOptionDataFormViewItem *>(option)) {
HbTextItem *textitem = static_cast<HbTextItem*>( item );
textitem->setText(opt->label);
+ textitem->setTextWrapping(Hb::TextNoWrap);
}
break;
}
@@ -2020,7 +2096,7 @@
break;
}
case P_PushButton_background: {
- if (const HbStyleOptionPushButton *opt =
+ if (const HbStyleOptionPushButton *opt =
qstyleoption_cast<const HbStyleOptionPushButton *>(option)) {
HbFrameItem *frameItem = static_cast<HbFrameItem*>( item );
QString frameGraphicsName;
@@ -2111,19 +2187,19 @@
break;
}
case P_StatusBar_timetext: {
- if (const HbStyleOptionStatusBar *opt =
+ if (const HbStyleOptionStatusBar *opt =
qstyleoption_cast<const HbStyleOptionStatusBar*>(option)) {
HbTextItem *textItem = static_cast<HbTextItem*>(item);
textItem->setText(opt->timeText);
}
break;
}
-
- case P_IndicatorGroup_icon1:
- case P_IndicatorGroup_icon2:
- case P_IndicatorGroup_icon3:
- case P_IndicatorGroup_icon4:
- {
+
+ case P_IndicatorGroup_icon1:
+ case P_IndicatorGroup_icon2:
+ case P_IndicatorGroup_icon3:
+ case P_IndicatorGroup_icon4:
+ {
const HbStyleOptionIndicatorGroup *opt = qstyleoption_cast<const HbStyleOptionIndicatorGroup *>(option);
if (opt) {
HbIconItem *iconItem = qgraphicsitem_cast<HbIconItem*>(item);
@@ -2132,7 +2208,7 @@
break;
}
- case P_IndicatorButton_handleindication: {
+ case P_IndicatorButton_handleindication: {
const HbStyleOptionIndicatorButton *opt = qstyleoption_cast<const HbStyleOptionIndicatorButton *>(option);
if (opt) {
HbIconItem *iconItem = static_cast<HbIconItem*>(item);
@@ -2141,6 +2217,20 @@
break;
}
+ case P_IndicatorButton_eventindication: {
+ const HbStyleOptionIndicatorButton *opt = qstyleoption_cast<const HbStyleOptionIndicatorButton *>(option);
+ if (opt) {
+ HbIconItem *iconItem = static_cast<HbIconItem*>(item);
+ if (opt->twoIcons) {
+ iconItem->setIconName("qtg_mono_new_event");
+ iconItem->setVisible(true);
+ } else {
+ iconItem->setVisible(false);
+ }
+ }
+ break;
+ }
+
case P_SignalIndicator_icon: {
const HbStyleOptionSignalIndicator *opt = qstyleoption_cast<const HbStyleOptionSignalIndicator *>(option);
if (opt) {
@@ -2351,7 +2441,7 @@
break;
}
case P_PushButton_focus: {
- if (const HbStyleOptionPushButton *opt =
+ if (const HbStyleOptionPushButton *opt =
qstyleoption_cast<const HbStyleOptionPushButton *>(option)) {
HbFrameItem *iconItem = static_cast<HbFrameItem*>(item);
iconItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_btn_highlight"));
@@ -2435,9 +2525,9 @@
switch (opt->toolBarPosition) {
case HbStyleOptionToolButton::TB_OnlyOne:
if (opt->orientation == Qt::Vertical) {
- list << QLatin1String("_l") << QLatin1String("_c") << QLatin1String("_r");
+ list << QLatin1String("_l") << QLatin1String("_c") << QLatin1String("_r");
} else {
- list << QLatin1String("_t") << QLatin1String("_c") << QLatin1String("_b");
+ list << QLatin1String("_t") << QLatin1String("_c") << QLatin1String("_b");
}
break;
case HbStyleOptionToolButton::TB_Beginning:
@@ -2463,7 +2553,7 @@
break;
default:
- break;
+ break;
}
frameItem->frameDrawer().setFileNameSuffixList(list);
if (mode == QIcon::Disabled && state == QIcon::Off) {
@@ -2481,6 +2571,7 @@
}
frameItem->frameDrawer().setFrameGraphicsName(QString ("%0%1").arg(frameGraphicsHeader).arg(frameGraphicsFooter));
+ frameItem->frameDrawer().setMirroringMode(HbIcon::LayoutDirection);
break;
}
@@ -2488,7 +2579,7 @@
case P_SliderTickMark_majoricon: {
- if (const HbStyleOptionSlider *opt =
+ if (const HbStyleOptionSlider *opt =
qstyleoption_cast<const HbStyleOptionSlider*>(option)) {
HbIconItem *iconItem = qgraphicsitem_cast<HbIconItem*>(item);
iconItem->setMode(d->iconMode(opt->state));
@@ -2500,11 +2591,11 @@
iconItem->setState(d->iconState(opt->state));
}
break;
-
+
}
case P_SliderTickMark_minoricon: {
- if (const HbStyleOptionSlider *opt =
+ if (const HbStyleOptionSlider *opt =
qstyleoption_cast<const HbStyleOptionSlider*>(option)) {
HbIconItem *iconItem = qgraphicsitem_cast<HbIconItem*>(item);
iconItem->setMode(d->iconMode(opt->state));
@@ -2516,30 +2607,30 @@
iconItem->setState(d->iconState(opt->state));
}
break;
-
- }
+
+ }
case P_SliderTickMark_majorlabel: {
- if (const HbStyleOptionSlider *opt =
+ if (const HbStyleOptionSlider *opt =
qstyleoption_cast<const HbStyleOptionSlider*>(option)) {
HbTextItem *textItem = qgraphicsitem_cast<HbTextItem*>(item);
-
+
textItem->setText( opt->text );
}
break;
-
+
}
case P_SliderTickMark_minorlabel: {
- if (const HbStyleOptionSlider *opt =
+ if (const HbStyleOptionSlider *opt =
qstyleoption_cast<const HbStyleOptionSlider*>(option)) {
HbTextItem *textItem = qgraphicsitem_cast<HbTextItem*>(item);
textItem->setText( opt->text );
}
break;
-
- }
+
+ }
case P_Slider_progressgroove: {
if (const HbStyleOptionSlider *opt = qstyleoption_cast<const HbStyleOptionSlider *>(option)) {
@@ -2556,7 +2647,7 @@
frameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical);
frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_slider_v_filled"));
frameItem->setInverted(!opt->upsideDown);
- frameItem->frameDrawer().setMirroringMode(HbIcon::Prevented);
+ frameItem->frameDrawer().setMirroringMode(HbIcon::Prevented);
}
frameItem->frameDrawer().setFillWholeRect(true);
frameItem->setMaximum(opt->maximum);
@@ -2577,18 +2668,27 @@
if (opt->orientation == Qt::Horizontal) {
type = HbFrameDrawer::ThreePiecesHorizontal;
- if(!opt->groovePressed){
- name = QLatin1String("qtg_fr_slider_h_frame_normal");
- }
- else {
- name = QLatin1String("qtg_fr_slider_h_frame_pressed");
+ if (opt->state & QStyle::State_Enabled) {
+ if(!opt->groovePressed){
+ name = QLatin1String("qtg_fr_slider_h_frame_normal");
+ }
+ else {
+ name = QLatin1String("qtg_fr_slider_h_frame_pressed");
+ }
+ } else {
+ name = QLatin1String("qtg_fr_slider_h_frame_disabled");
}
} else if (opt->orientation == Qt::Vertical) {
- if(!opt->groovePressed){
- name = QLatin1String("qtg_fr_slider_v_frame_normal");
- }
- else {
- name = QLatin1String("qtg_fr_slider_v_frame_pressed");
+ if (opt->state & QStyle::State_Enabled) {
+ if(!opt->groovePressed){
+ name = QLatin1String("qtg_fr_slider_v_frame_normal");
+ }
+ else {
+ name = QLatin1String("qtg_fr_slider_v_frame_pressed");
+ }
+ } else {
+ name = QLatin1String("qtg_fr_slider_v_frame_disabled");
+
}
type = HbFrameDrawer::ThreePiecesVertical;
}
@@ -2612,6 +2712,7 @@
else
{
thumbPath=opt->thumbPath;
+ iconItem->setAlignment(Qt::AlignCenter);
}
iconItem->setIconName(thumbPath);
iconItem->setAspectRatioMode(Qt::KeepAspectRatio);
@@ -2667,7 +2768,7 @@
} else {
iconItem->setIconName(QLatin1String("qtg_mono_speaker"));
}
- }
+ }
}
break;
}
@@ -2693,15 +2794,28 @@
case P_CheckBox_icon: {
if (const HbStyleOptionCheckBox *opt = qstyleoption_cast<const HbStyleOptionCheckBox *>(option)){
HbIconItem *iconItem = static_cast<HbIconItem *>(item);
- if (opt->state.testFlag(QStyle::State_On)) {
- iconItem->setState(QIcon::On);
- iconItem->setIconName(QLatin1String("qtg_small_selected"));
- } else if (opt->state.testFlag(QStyle::State_Off)) {
- iconItem->setState(QIcon::Off);
- iconItem->setIconName(QLatin1String("qtg_small_unselected"));
- } else if (opt->state.testFlag(QStyle::State_NoChange)) {
- iconItem->setState(QIcon::On);
- iconItem->setIconName(QLatin1String("qtg_small_selected_partial"));
+ if (opt->state.testFlag(QStyle::State_Selected) ) {
+ if (opt->state.testFlag(QStyle::State_On)) {
+ iconItem->setState(QIcon::On);
+ iconItem->setIconName(QLatin1String("qtg_small_selected_highlight"));
+ } else if (opt->state.testFlag(QStyle::State_Off)) {
+ iconItem->setState(QIcon::Off);
+ iconItem->setIconName(QLatin1String("qtg_small_unselected_highlight"));
+ } else if (opt->state.testFlag(QStyle::State_NoChange)) {
+ iconItem->setState(QIcon::On);
+ iconItem->setIconName(QLatin1String("qtg_small_selected_partial"));
+ }
+ } else {
+ if (opt->state.testFlag(QStyle::State_On)) {
+ iconItem->setState(QIcon::On);
+ iconItem->setIconName(QLatin1String("qtg_small_selected"));
+ } else if (opt->state.testFlag(QStyle::State_Off)) {
+ iconItem->setState(QIcon::Off);
+ iconItem->setIconName(QLatin1String("qtg_small_unselected"));
+ } else if (opt->state.testFlag(QStyle::State_NoChange)) {
+ iconItem->setState(QIcon::On);
+ iconItem->setIconName(QLatin1String("qtg_small_selected_partial"));
+ }
}
}
break;
@@ -2795,7 +2909,7 @@
} else {
frameGraphicsName = QLatin1String("qtg_fr_combobox_normal");
}
- } else {
+ } else {
frameGraphicsName = QLatin1String("qtg_fr_combobox_disabled");
}
frameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesHorizontal);
@@ -2816,7 +2930,7 @@
} else {
iconGraphicsName = QLatin1String("qtg_graf_combobox_button_normal");
}
- } else {
+ } else {
iconGraphicsName = QLatin1String("qtg_graf_combobox_button_disabled");
}
iconItem->setIconName(iconGraphicsName);
@@ -2861,7 +2975,7 @@
case P_Label_richtext:
if (const HbStyleOptionLabel *opt = qstyleoption_cast<const HbStyleOptionLabel*>(option)) {
HbRichTextItem *textItem = static_cast<HbRichTextItem*>(item);
- textItem->setAlignment(opt->alignment);
+ textItem->setAlignment(opt->alignment);
textItem->setTextWrapping(opt->textWrapMode);
if(!opt->fontSpec.isNull()) {
textItem->setFontSpec(opt->fontSpec);
@@ -2885,7 +2999,7 @@
if (const HbStyleOptionMenuItem *opt = qstyleoption_cast<const HbStyleOptionMenuItem *>(option)) {
HbIconItem *iconItem = static_cast<HbIconItem*>(item);
if (opt->checked) {
- iconItem->setIconName(QLatin1String("qtg_small_selected"));
+ iconItem->setIconName(QLatin1String("qtg_small_tick"));
} else {
iconItem->setIcon(HbIcon());
}
@@ -3111,7 +3225,7 @@
default:
break;
}
- } else {
+ } else {
icon->setIcon(opt->icon);
}
}
@@ -3119,7 +3233,7 @@
case P_ListViewItem_text:
if (const HbStyleOptionListViewItem *opt = qstyleoption_cast<const HbStyleOptionListViewItem *>(option)) {
HbTextItem *textItem = static_cast<HbTextItem*>(item);
-
+
if (opt->index == 1) {
if (opt->multilineSecondaryTextSupported) {
if (opt->minimumLines != -1) {
@@ -3163,7 +3277,7 @@
case P_ListViewItem_icon:
if (const HbStyleOptionListViewItem *opt = qstyleoption_cast<const HbStyleOptionListViewItem *>(option)) {
HbIconItem *iconItem = static_cast<HbIconItem*>(item);
-
+
setItemName(iconItem, QLatin1String("icon-") + QString::number(opt->index + 1));
iconItem->setZValue(opt->index + 1);
@@ -3259,7 +3373,7 @@
frameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical);
frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progbar_v_frame"));
}
- frameItem->frameDrawer().setFillWholeRect(true);
+ // frameItem->frameDrawer().setFillWholeRect(true);
}
break;
case P_ProgressBar_track:
@@ -3269,15 +3383,16 @@
if(!frameItem->isVisible()) {
break;
}
- frameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesHorizontal);
+
if(opt->orientation == Qt::Horizontal){
- frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progbar_h_filled"));
+ frameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesHorizontal);
+ frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progbar_h_filled"));
}
else{
frameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical);
frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progbar_v_filled"));
}
- frameItem->frameDrawer().setFillWholeRect(true);
+
frameItem->setMaximum(opt->maximum);
frameItem->setMinimum(opt->minimum);
frameItem->setValue(opt->progressValue);
@@ -3288,7 +3403,7 @@
}
break;
case P_ProgressBar_waittrack:
- if (const HbStyleOptionProgressBar *opt = qstyleoption_cast<const HbStyleOptionProgressBar *>(option)) {
+ if (const HbStyleOptionProgressBar *opt = qstyleoption_cast<const HbStyleOptionProgressBar *>(option)) {
HbRepeatIconItem *iconItem = static_cast<HbRepeatIconItem*>(item);
iconItem->setOrientation(opt->orientation);
if( !iconItem->isVisible() ) {
@@ -3305,12 +3420,12 @@
}
}
break;
-
+
case P_ProgressSlider_frame:
if (const HbStyleOptionProgressSlider *opt = qstyleoption_cast<const HbStyleOptionProgressSlider *>(option)) {
HbFrameItem *frameItem = static_cast<HbFrameItem*>(item);
frameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesHorizontal);
- if (opt->disableState ) {
+ if (opt->disableState ) {
frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progslider_frame_disabled"));
}
else {
@@ -3321,7 +3436,7 @@
frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progslider_frame_normal"));
}
}
- frameItem->frameDrawer().setFillWholeRect(true);
+ frameItem->frameDrawer().setFillWholeRect(true);
//frameItem->update();
}
break;
@@ -3329,7 +3444,13 @@
if (const HbStyleOptionProgressSlider *opt = qstyleoption_cast<const HbStyleOptionProgressSlider *>(option)) {
HbProgressTrackItem* frameItem = static_cast<HbProgressTrackItem*>(item);
frameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesHorizontal);
- frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progslider_loaded"));
+
+ if (opt->disableState ) {
+ frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progslider_loaded_disabled"));
+ }
+ else {
+ frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progslider_loaded"));
+ }
frameItem->frameDrawer().setFillWholeRect(true);
frameItem->setMaximum(opt->maximum);
frameItem->setMinimum(opt->minimum);
@@ -3337,58 +3458,76 @@
frameItem->setInverted(opt->inverted);
frameItem->setOrientation(opt->orientation);
frameItem->update();
- }
+ }
break;
case P_ProgressSlider_slidertrack: // The Slider Position Mask
if (const HbStyleOptionProgressSlider *opt = qstyleoption_cast<const HbStyleOptionProgressSlider *>(option)) {
HbProgressTrackItem* frameItem = static_cast<HbProgressTrackItem*>(item);
frameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesHorizontal);
- frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progslider_played"));
+ if (opt->disableState ) {
+ frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progslider_played_disabled"));
+ }
+ else {
+ frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_progslider_played"));
+ }
frameItem->frameDrawer().setFillWholeRect(true);
frameItem->setMaximum(opt->maximum);
frameItem->setMinimum(opt->minimum);
frameItem->setValue(opt->progressSliderValue);
frameItem->setInverted(opt->inverted);
frameItem->setOrientation(opt->orientation);
- //frameItem->update();
- }
+ frameItem->update();
+ }
break;
case P_ProgressBar_mintext: {
- if (const HbStyleOptionProgressBar *opt =
+ if (const HbStyleOptionProgressBar *opt =
qstyleoption_cast<const HbStyleOptionProgressBar*>(option)) {
HbTextItem *textItem = static_cast<HbTextItem*>(item);
if(!item) {
return;
}
textItem->setTextWrapping(Hb::TextWrapAnywhere);
- textItem->setText(opt->minText);
+ textItem->setText(opt->minText);
}
break;
}
case P_ProgressBar_maxtext: {
- if (const HbStyleOptionProgressBar *opt =
+ if (const HbStyleOptionProgressBar *opt =
qstyleoption_cast<const HbStyleOptionProgressBar*>(option)) {
HbTextItem *textItem = static_cast<HbTextItem*>(item);
if(!item) {
return;
}
textItem->setTextWrapping(Hb::TextWrapAnywhere);
- textItem->setText(opt->maxText);
+ textItem->setText(opt->maxText);
}
break;
}
case P_RatingSlider_frame:{
- if (const HbStyleOptionRatingSlider *opt = qstyleoption_cast<const HbStyleOptionRatingSlider *>(option)) {
+ if (const HbStyleOptionRatingSlider *opt = qstyleoption_cast<const HbStyleOptionRatingSlider *>(option)) {
HbRepeatItem *repeatItem = static_cast<HbRepeatItem*>(item);
repeatItem->setRepeatingNumber(opt->noOfStars);
if (!opt->unRatedGraphicsName.isEmpty()) {
repeatItem->setName(opt->unRatedGraphicsName);
}
else {
- repeatItem->setName(QLatin1String("qtg_graf_ratingslider_unrated"));
+ if(opt->disableState) {
+ repeatItem->setName(QLatin1String("qtg_graf_ratingslider_unrated_disabled"));
+
+ }
+ else {
+ if(opt->pressedState) {
+
+ repeatItem->setName(QLatin1String("qtg_graf_ratingslider_unrated_pressed"));
+ }
+ else {
+
+ repeatItem->setName(QLatin1String("qtg_graf_ratingslider_unrated"));
+ }
+ }
}
repeatItem->setGeometry(opt->boundingRect);
repeatItem->update();
@@ -3397,7 +3536,7 @@
}
case P_RatingSlider_track:{
- if (const HbStyleOptionRatingSlider *opt = qstyleoption_cast<const HbStyleOptionRatingSlider *>(option)) {
+ if (const HbStyleOptionRatingSlider *opt = qstyleoption_cast<const HbStyleOptionRatingSlider *>(option)) {
HbRepeatMaskItem *repeatItem = static_cast<HbRepeatMaskItem*>(item);
repeatItem->setMaskValue(opt->progressValue);
repeatItem->setMaximum(opt->noOfIntervals);
@@ -3407,7 +3546,21 @@
repeatItem->setName(opt->ratedGraphicsName);
}
else {
- repeatItem->setName(QLatin1String("qtg_graf_ratingslider_rated"));
+ if(opt->disableState) {
+ repeatItem->setName(QLatin1String("qtg_graf_ratingslider_rated_disabled"));
+
+
+ }
+ else {
+
+ if(opt->pressedState) {
+
+ repeatItem->setName(QLatin1String("qtg_graf_ratingslider_rated_pressed"));
+ }
+ else {
+ repeatItem->setName(QLatin1String("qtg_graf_ratingslider_rated"));
+ }
+ }
}
repeatItem->setGeometry(opt->boundingRect);
repeatItem->update();
@@ -3453,7 +3606,7 @@
}
break;
- case P_ItemViewItem_frame:
+ case P_ItemViewItem_frame:
if (const HbStyleOptionAbstractViewItem *opt = qstyleoption_cast<const HbStyleOptionAbstractViewItem *>(option)) {
HbFrameItem *frameItem = static_cast<HbFrameItem*>(item);
frameItem->setZValue(-4.0);
@@ -3466,14 +3619,14 @@
} else if (opt->viewItemType == Hb::ItemType_TreeViewItem) {
if (opt->modelItemType == Hb::ParentItem) {
frameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
- frameItem->frameDrawer().setFrameGraphicsName( opt->insidePopup ?
+ frameItem->frameDrawer().setFrameGraphicsName( opt->insidePopup ?
QLatin1String("qtg_fr_popup_list_parent_normal") : QLatin1String("qtg_fr_list_parent_normal"));
} else if (opt->modelItemType == Hb::SeparatorItem) {
frameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_list_separator"));
} else {
frameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
- frameItem->frameDrawer().setFrameGraphicsName( opt->insidePopup ?
+ frameItem->frameDrawer().setFrameGraphicsName( opt->insidePopup ?
QLatin1String("qtg_fr_popup_list_normal") : QLatin1String("qtg_fr_list_normal"));
}
} else if ( opt->viewItemType == Hb::ItemType_ListViewItem
@@ -3483,13 +3636,13 @@
frameItem->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_list_separator"));
} else {
frameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
- frameItem->frameDrawer().setFrameGraphicsName( opt->insidePopup ?
+ frameItem->frameDrawer().setFrameGraphicsName( opt->insidePopup ?
QLatin1String("qtg_fr_popup_list_normal") : QLatin1String("qtg_fr_list_normal"));
}
} else if (opt->viewItemType == Hb::ItemType_GridViewItem
|| opt->viewItemType == HbPrivate::ItemType_ColorGridViewItem) {
frameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
- frameItem->frameDrawer().setFrameGraphicsName( opt->insidePopup ?
+ frameItem->frameDrawer().setFrameGraphicsName( opt->insidePopup ?
QLatin1String("qtg_fr_popup_grid_normal") : QLatin1String("qtg_fr_grid_normal"));
}
else{
@@ -3579,7 +3732,7 @@
}
}
break;
- case P_TumbleView_frame:
+ case P_TumbleView_frame:
if (const HbStyleOption *opt = qstyleoption_cast<const HbStyleOption*>(option)) {
if(HbFrameItem *frameItem = qgraphicsitem_cast<HbFrameItem*>(item)) {
frameItem->frameDrawer().setFrameGraphicsName("qtg_fr_tumbler_overlay");
@@ -3599,11 +3752,11 @@
frameItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesHorizontal);
frameItem->setZValue(3);
//TODO:temp fix, issue with css rule picking in derived class
-
+
//frameItem->setGeometry(0,(opt->boundingRect.height()-frameItem->boundingRect().height())/2,opt->boundingRect.width(),opt->boundingRect.height());
Q_UNUSED(opt);
}
-
+
}
break;
@@ -3634,7 +3787,7 @@
}
}
break;
- case P_DateTimePicker_frame:
+ case P_DateTimePicker_frame:
if (const HbStyleOption *opt = qstyleoption_cast<const HbStyleOption*>(option)) {
if(HbFrameItem *frameItem = qgraphicsitem_cast<HbFrameItem*>(item)) {
frameItem->frameDrawer().setFrameGraphicsName("qtg_fr_tumbler_overlay");
@@ -3661,26 +3814,26 @@
}
break;
case P_InputDialog_text:
- if (const HbStyleOptionInputDialog *opt =
+ if (const HbStyleOptionInputDialog *opt =
qstyleoption_cast<const HbStyleOptionInputDialog*>(option)) {
HbTextItem *textItem = static_cast<HbTextItem*>(item);
if(!item) {
return;
}
textItem->setTextWrapping(Hb::TextWrapAnywhere);
- textItem->setText(opt->text);
+ textItem->setText(opt->text);
}
break;
case P_InputDialog_additionaltext:
- if (const HbStyleOptionInputDialog *opt =
+ if (const HbStyleOptionInputDialog *opt =
qstyleoption_cast<const HbStyleOptionInputDialog*>(option)) {
HbTextItem *textItem = static_cast<HbTextItem*>(item);
if(!item) {
return;
}
textItem->setTextWrapping(Hb::TextWrapAnywhere);
- textItem->setText(opt->additionalText);
- }
+ textItem->setText(opt->additionalText);
+ }
break;
default:
return;
@@ -3767,7 +3920,7 @@
lItem = widget->layoutPrimitive(name);
if ( lItem && !lItem->graphicsItem() ) {
// assume it is spacer
- static_cast<HbMeshLayout*>(widget->layout())->setItemId( lItem, name );
+ static_cast<HbAnchorLayout*>(widget->layout())->setMapping( lItem, name );
}
}
@@ -3847,6 +4000,14 @@
icon->setAspectRatioMode(prop.mAspectRatioMode);
hbWidget_p->setApiProtectionFlag(HbWidgetBasePrivate::AC_IconAspectRatioMode, false);
}
+ if ( prop.mFlags & HbCss::ExtractedAlignment
+ && !hbWidget_p->testApiProtectionFlag(HbWidgetBasePrivate::AC_IconAlign)) {
+#ifdef HBSTYLE_DEBUG
+ qDebug() << "HbStyle::polishItem : -- Setting icon alignment: " << prop.mAlignment;
+#endif
+ icon->setAlignment( prop.mAlignment );
+ hbWidget_p->setApiProtectionFlag(HbWidgetBasePrivate::AC_IconAlign, false);
+ }
}
HbTextItem* text = qobject_cast<HbTextItem*>(hbWidget);
@@ -3867,15 +4028,15 @@
text->setMaximumLines( prop.mMaxLines );
hbWidget_p->setApiProtectionFlag(HbWidgetBasePrivate::AC_TextLinesMax, false);
}
- if ( prop.mFlags & HbCss::ExtractedTextAlign
+ if ( prop.mFlags & HbCss::ExtractedAlignment
&& !hbWidget_p->testApiProtectionFlag(HbWidgetBasePrivate::AC_TextAlign)) {
#ifdef HBSTYLE_DEBUG
- qDebug() << "HbStyle::polishItem : -- Setting text alignment: " << prop.mTextAlignment;
+ qDebug() << "HbStyle::polishItem : -- Setting text alignment: " << prop.mAlignment;
#endif
- text->setAlignment( prop.mTextAlignment );
+ text->setAlignment( prop.mAlignment );
hbWidget_p->setApiProtectionFlag(HbWidgetBasePrivate::AC_TextAlign, false);
}
- if ( prop.mFlags & HbCss::ExtractedWrapMode
+ if ( prop.mFlags & HbCss::ExtractedWrapMode
&& !hbWidget_p->testApiProtectionFlag(HbWidgetBasePrivate::AC_TextWrapMode)) {
#ifdef HBSTYLE_DEBUG
qDebug() << "HbStyle::polishItem : -- Setting wrap mode : " << prop.mTextWrapMode;
@@ -3887,15 +4048,15 @@
HbRichTextItem* richtext = qobject_cast<HbRichTextItem*>(hbWidget);
if (richtext) {
- if ( prop.mFlags & HbCss::ExtractedTextAlign
+ if ( prop.mFlags & HbCss::ExtractedAlignment
&& !hbWidget_p->testApiProtectionFlag(HbWidgetBasePrivate::AC_TextAlign)) {
#ifdef HBSTYLE_DEBUG
- qDebug() << "HbStyle::polishItem : -- Setting text alignment: " << prop.mTextAlignment;
+ qDebug() << "HbStyle::polishItem : -- Setting text alignment: " << prop.mAlignment;
#endif
- richtext->setAlignment( prop.mTextAlignment );
+ richtext->setAlignment( prop.mAlignment );
hbWidget_p->setApiProtectionFlag(HbWidgetBasePrivate::AC_TextAlign, false);
}
- if ( prop.mFlags & HbCss::ExtractedWrapMode
+ if ( prop.mFlags & HbCss::ExtractedWrapMode
&& !hbWidget_p->testApiProtectionFlag(HbWidgetBasePrivate::AC_TextWrapMode)) {
#ifdef HBSTYLE_DEBUG
qDebug() << "HbStyle::polishItem : -- Setting wrap mode : " << prop.mTextWrapMode;
@@ -3997,43 +4158,43 @@
}
if (layoutDefined) {
- HbMeshLayout *layout = static_cast<HbMeshLayout*>(widget->layout());
+ HbAnchorLayout *layout = static_cast<HbAnchorLayout*>(widget->layout());
if ( layout ) {
if (prop.mFlags & HbCss::ExtractedLeft) {
#ifdef HBSTYLE_DEBUG
qDebug() << "HbStyle::polishItem : -- Setting left override: " << prop.mLeft;
#endif
- layout->overrideSpacing(name, Hb::LeftEdge, prop.mLeft);
+ overrideSpacing(layout, name, Hb::LeftEdge, prop.mLeft);
}
if (prop.mFlags & HbCss::ExtractedRight) {
#ifdef HBSTYLE_DEBUG
qDebug() << "HbStyle::polishItem : -- Setting right override: " << prop.mRight;
#endif
- layout->overrideSpacing(name, Hb::RightEdge, prop.mRight);
+ overrideSpacing(layout, name, Hb::RightEdge, prop.mRight);
}
if (prop.mFlags & HbCss::ExtractedTop) {
#ifdef HBSTYLE_DEBUG
qDebug() << "HbStyle::polishItem : -- Setting top override: " << prop.mTop;
#endif
- layout->overrideSpacing(name, Hb::TopEdge, prop.mTop);
+ overrideSpacing(layout, name, Hb::TopEdge, prop.mTop);
}
if (prop.mFlags & HbCss::ExtractedBottom) {
#ifdef HBSTYLE_DEBUG
qDebug() << "HbStyle::polishItem : -- Setting bottom override: " << prop.mBottom;
#endif
- layout->overrideSpacing(name, Hb::BottomEdge, prop.mBottom);
+ overrideSpacing(layout, name, Hb::BottomEdge, prop.mBottom);
}
if (prop.mFlags & HbCss::ExtractedCenterH) {
#ifdef HBSTYLE_DEBUG
qDebug() << "HbStyle::polishItem : -- Setting centerh override: " << prop.mCenterH;
#endif
- layout->overrideSpacing(name, Hb::CenterHEdge, prop.mCenterH);
+ overrideSpacing(layout, name, Hb::CenterHEdge, prop.mCenterH);
}
if (prop.mFlags & HbCss::ExtractedCenterV) {
#ifdef HBSTYLE_DEBUG
qDebug() << "HbStyle::polishItem : -- Setting centerv override: " << prop.mCenterV;
#endif
- layout->overrideSpacing(name, Hb::CenterVEdge, prop.mCenterV);
+ overrideSpacing(layout, name, Hb::CenterVEdge, prop.mCenterV);
}
}
}
@@ -4047,14 +4208,14 @@
This method should be called only by HbWidget (base class). The inherited
classes should not call this method directly, but use the HbWidget's
polish loop instead.
-
+
This method reads the CSS and WidgetML definition for a given widget and positions
the sub-elements inside it. Note you need to set the names for the sub-elements
with HbStyle::setItemName method before this method is called.
Note that this method is heavy on the system resources and should be called
absolutely when necessary by the widget.
-
+
\param widget, HbWidget to be polished
\param params, style parameters to be returned to the caller
*/
@@ -4129,7 +4290,7 @@
#endif
QStringList meshIds;
- HbMeshLayout *meshLayout(0);
+ HbAnchorLayout *meshLayout(0);
if (layoutDefined) {
QString cachedLayoutName = widgetLayoutNames[widget];
@@ -4143,7 +4304,7 @@
#ifdef HBSTYLE_DEBUG
qDebug() << "HbStyle::polish : Failed to load WidgetML";
#endif
- return;
+ return;
}
widgetLayoutNames[widget] = layoutName;
if (cachedLayoutName.isNull()) {
@@ -4156,15 +4317,15 @@
#endif
}
}
- meshLayout = static_cast<HbMeshLayout*>(widget->layout());
+ meshLayout = static_cast<HbAnchorLayout*>(widget->layout());
if (cached) {
#ifdef HBSTYLE_DEBUG
qDebug() << "LayoutName cache hit.";
#endif
- meshLayout->clearItemIds();
+ meshLayout->removeMappings();
}
- meshLayout->setItemId(meshLayout, "");
+ meshLayout->setMapping(meshLayout, "");
meshIds = meshLayout->nodeIds();
}
@@ -4176,7 +4337,7 @@
QString name = HbStyle::itemName(item);
if ( meshLayout && !name.isEmpty() ) {
// Assuming that all items with "itemName" are widgets.
- meshLayout->setItemId(static_cast<QGraphicsWidget*>(item), name);
+ meshLayout->setMapping(static_cast<QGraphicsWidget*>(item), name);
// Remove from "meshIds" so that we don't call polishItem
// twice for this item.
meshIds.removeAll(name);
@@ -4204,28 +4365,28 @@
void HbStylePrivate::updateThemedItems( const HbVector<HbCss::StyleRule> &styleRules,
QGraphicsItem *item ) const
{
-
+
QString name = HbStyle::itemName(item);
if (name.isEmpty() ) {
return;
}
-
+
HbTextItem* text = qgraphicsitem_cast<HbTextItem*>( item );
HbIconItem* iconItem = qgraphicsitem_cast<HbIconItem*>( item );
HbMarqueeItem* marqueeItem = qgraphicsitem_cast<HbMarqueeItem*>( item );
if(! (text || iconItem || marqueeItem ) ){
return;
}
-
+
HbDeviceProfile profile;
const HbVector<HbCss::Declaration> decl = declarations(styleRules, name, 0, profile);
#ifdef HBSTYLE_DEBUG
qDebug() << "HbStyle::updateThemedItems : -- Number of matching CSS declarations: " << decl.count();
#endif
- ensureColorParameters();
- HbCss::ValueExtractor extractor(decl, colorParameters, profile);
-
+
+ HbCss::ValueExtractor extractor(decl, profile);
+
QColor col;
bool extracted = extractor.extractColor( col );
if (!extracted || !col.isValid()) {
@@ -4233,17 +4394,17 @@
col.setRgb(255,0,255);
}
//apply the themed color to text-item
- if(text) {
+ if(text) {
#ifdef HBSTYLE_DEBUG
if ( !extracted ) {
qDebug() << "HbStyle::getColor : -- No color information found";
}
-#endif
+#endif
if ( !HbWidgetBasePrivate::d_ptr(text)->testApiProtectionFlag(HbWidgetBasePrivate::AC_TextColor ) ){
text->setTextColor(col);
HbWidgetBasePrivate::d_ptr(text)->setApiProtectionFlag(HbWidgetBasePrivate::AC_TextColor, false);
}
- }
+ }
if (iconItem) {
// Applying color to mono-colorised icons from theme. Using setColor()
// here would be wrong. It would lead to loosing the user-supplied color
@@ -4253,12 +4414,12 @@
if(marqueeItem){
//applying color to the marquee-item from theme
if(!HbWidgetBasePrivate::d_ptr(marqueeItem)->testApiProtectionFlag(HbWidgetBasePrivate::AC_TextColor)) {
- marqueeItem->setTextColor( col );
+ marqueeItem->setTextColor( col );
HbWidgetBasePrivate::d_ptr(marqueeItem)->setApiProtectionFlag(HbWidgetBasePrivate::AC_TextColor, false);
}
}
}
-
+
/*!
HbStyle::updateThemedParams()
@@ -4298,7 +4459,7 @@
#endif
return;
}
-
+
// update themed items
QList<QGraphicsItem*> list = widget->childItems();
foreach (QGraphicsItem* item, list) {
@@ -4307,12 +4468,12 @@
}
/*!
- Checkes whether given widget has orienation specific style
+ Checkes whether given widget has orienation specific style
rules. This can be used for optimizing orientation switch.
*/
bool HbStyle::hasOrientationSpecificStyleRules(HbWidget *widget)
{
- HbLayeredStyleLoader *styleLoader =
+ HbLayeredStyleLoader *styleLoader =
HbLayeredStyleLoader::getStack(HbLayeredStyleLoader::Concern_Layouts);
NODEPTR_N(widget);
return styleLoader->hasOrientationSpecificStyleRules(n);
@@ -4343,16 +4504,24 @@
*/
void HbStyle::setItemName( QGraphicsItem *item, const QString &name )
{
- if (item && itemName(item) != name) {
+ QString originalName = itemName(item);
+ if (item && originalName != name) {
item->setData( ItemName, name );
QGraphicsItem* parent = item->parentItem();
QGraphicsLayoutItem* lItem = (item->isWidget()) ? (QGraphicsLayoutItem*)static_cast<QGraphicsWidget*>(item) : 0;
if (lItem && parent && parent->isWidget()) {
QGraphicsWidget* parentW = static_cast<QGraphicsWidget*>(parent);
if ( parentW->layout() && widgetLayoutNames.contains(parentW) ) {
- HbMeshLayout* layout = static_cast<HbMeshLayout*>(parentW->layout());
+ HbAnchorLayout* layout = static_cast<HbAnchorLayout*>(parentW->layout());
if ( layout->indexOf(lItem) != -1 ) {
- layout->setItemId(lItem, name.isEmpty() ? QString() : name);
+ if( name.isEmpty() ) {
+ layout->removeMapping(originalName);
+ } else {
+ if ( !originalName.isEmpty() ) {
+ layout->removeMapping(originalName);
+ }
+ layout->setMapping(lItem, name);
+ }
}
}
}
@@ -4375,7 +4544,7 @@
}
/*!
- Returns a value of a global style parameter. The value is returned in pixels.
+ Returns a value of a global style parameter. The value is returned in pixels.
Available parameters can be found from hbglobalparameters.css. By using these
parameters applications get consistent look.
@@ -4413,11 +4582,11 @@
return retVal;
}
- return valueExtractor.extractVariableValue(param, value);
+ return valueExtractor.extractVariableValue(param, value);
}
/*!
- Returns copy of all global style parameters. Both names and values
+ Returns copy of all global style parameters. Both names and values
of the parameters are returned. The values are returned in pixels.
Available parameters can be found from hbglobalparameters.css. By using these
@@ -4451,7 +4620,7 @@
/*!
Returns values for widget specific style parameters. The names of the parameters
- are passed in with \a params.
+ are passed in with \a params.
This method should be used only if you need to access widget specific parameters out
of the polish loop. It is more efficient to use HbWidget::polish(HbStyleParameters ¶ms)
@@ -4508,9 +4677,9 @@
nextAvailableId = HbStyle::P_CustomBase;
HbWidgetStyleLoader *loader = HbWidgetStyleLoader::instance();
if(loader){
- loader->addFilePath(STYLE_LOCATION, HbLayeredStyleLoader::Concern_Layouts,
+ loader->addFilePath(STYLE_LOCATION, HbLayeredStyleLoader::Concern_Layouts,
HbLayeredStyleLoader::Priority_Core);
- loader->addFilePath(COLOR_STYLE_LOCATION, HbLayeredStyleLoader::Concern_Colors,
+ loader->addFilePath(COLOR_STYLE_LOCATION, HbLayeredStyleLoader::Concern_Colors,
HbLayeredStyleLoader::Priority_Core);
}
}
@@ -4521,22 +4690,16 @@
HbStylePrivate::~HbStylePrivate()
{
layoutParameters.clear();
- colorParameters.clear();
HbWidgetStyleLoader *loader = HbWidgetStyleLoader::instance();
if(loader){
- loader->removeFilePath(STYLE_LOCATION, HbLayeredStyleLoader::Concern_Layouts,
+ loader->removeFilePath(STYLE_LOCATION, HbLayeredStyleLoader::Concern_Layouts,
HbLayeredStyleLoader::Priority_Core);
- loader->removeFilePath(COLOR_STYLE_LOCATION, HbLayeredStyleLoader::Concern_Colors,
+ loader->removeFilePath(COLOR_STYLE_LOCATION, HbLayeredStyleLoader::Concern_Colors,
HbLayeredStyleLoader::Priority_Core);
}
}
-void HbStylePrivate::_q_onThemeChanged()
-{
- colorParameters.clear();
-}
-
/*!
\internal
*/
@@ -4573,7 +4736,7 @@
default:
break;
-
+
}
return QString();
@@ -4610,7 +4773,7 @@
*/
HbStyleInterface *HbStylePrivate::stylePluginInterface( HbStyle::Primitive primitive ) const
{
-
+
if (customPrimitives.contains(primitive)) {
HbStyleInterfaceInfo* info = customPrimitives.value(primitive);
QObject* pluginInstance = info->loader->instance();
@@ -4687,14 +4850,6 @@
}
}
-void HbStylePrivate::ensureColorParameters() const
-{
- if (colorParameters.isEmpty()) {
- HbLayeredStyleLoader *styleLoader = HbLayeredStyleLoader::getStack(HbLayeredStyleLoader::Concern_Colors);
- styleLoader->variableRuleSets(&colorParameters);
- }
-}
-
/*!
\internal
*/
@@ -4702,7 +4857,6 @@
{
widgetLayoutNames.clear();
styleRulesCache.clear();
- colorParameters.clear();
}
HbWidgetBasePrivate *HbStylePrivate::widgetBasePrivate(HbWidgetBase *widgetBase) const
--- a/src/hbcore/style/hbstyle.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/style/hbstyle.h Wed Jun 23 18:33:25 2010 +0300
@@ -133,6 +133,7 @@
P_NavigationButton_background,
P_IndicatorButton_background,
P_IndicatorButton_handleindication,
+ P_IndicatorButton_eventindication,
P_ItemViewItem_frame,
P_SelectionControl_selectionstart,
P_SelectionControl_selectionend,
@@ -251,8 +252,6 @@
private:
Q_DISABLE_COPY( HbStyle )
Q_DECLARE_PRIVATE_D( d_ptr, HbStyle )
-
- Q_PRIVATE_SLOT(d_func(), void _q_onThemeChanged())
};
--- a/src/hbcore/style/hbstyle_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/style/hbstyle_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -83,9 +83,7 @@
QGraphicsItem *item ) const;
void ensureLayoutParameters(const HbDeviceProfile &profile) const;
- void ensureColorParameters() const;
- void _q_onThemeChanged();
void clearStyleSheetCaches();
HbWidgetBasePrivate *widgetBasePrivate(HbWidgetBase *widgetBase) const;
@@ -97,7 +95,6 @@
mutable QHash<QString, QString> pluginStylePaths;
mutable int nextAvailableId;
- mutable QHash<QString, HbCss::Declaration> colorParameters;
mutable QHash<QString, HbCss::Declaration> layoutParameters;
mutable QString layoutParametersProfileName;
--- a/src/hbcore/style/hbstyleoptionindicatorbutton.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/style/hbstyleoptionindicatorbutton.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -31,14 +31,14 @@
*/
HbStyleOptionIndicatorButton::HbStyleOptionIndicatorButton() :
- HbStyleOption(), mode(QIcon::Normal), transparent(false)
+ HbStyleOption(), mode(QIcon::Normal), transparent(false), twoIcons(false)
{
type = Type;
version = Version;
}
HbStyleOptionIndicatorButton::HbStyleOptionIndicatorButton(const HbStyleOptionIndicatorButton &other) :
- HbStyleOption(other), mode(other.mode), transparent(other.transparent)
+ HbStyleOption(other), mode(other.mode), transparent(other.transparent), twoIcons(other.twoIcons)
{
type = Type;
version = Version;
--- a/src/hbcore/style/hbstyleoptionindicatorbutton_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/style/hbstyleoptionindicatorbutton_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -41,6 +41,7 @@
QIcon::Mode mode;
bool transparent;
+ bool twoIcons;
};
#endif // HBSTYLEOPTIONINDICATORBUTTON_H
--- a/src/hbcore/style/hbstyleoptionmessagebox_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/style/hbstyleoptionmessagebox_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -47,6 +47,7 @@
Qt::Alignment iconAlignment; //deprecated
bool textWrapping; //deprecated
enum MessageBoxType {
+ MessageTypeNone,
MessageTypeInformation,
MessageTypeQuestion,
MessageTypeWarning
--- a/src/hbcore/style/hbstyleoptionratingslider.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/style/hbstyleoptionratingslider.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -46,7 +46,10 @@
noOfIntervals(other.noOfIntervals),
noOfStars(other.noOfStars),
unRatedGraphicsName(other.unRatedGraphicsName),
- ratedGraphicsName(other.ratedGraphicsName)
+ ratedGraphicsName(other.ratedGraphicsName),
+ disableState(false),
+ pressedState(false)
+
{
type = Type;
version = Version;
--- a/src/hbcore/style/hbstyleoptionratingslider_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/style/hbstyleoptionratingslider_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -45,6 +45,8 @@
int noOfStars;
QString unRatedGraphicsName;
QString ratedGraphicsName;
+ bool disableState;
+ bool pressedState;
};
#endif
--- a/src/hbcore/theme/hbcolorscheme.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/theme/hbcolorscheme.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -31,7 +31,8 @@
\class HbColorScheme
\brief HbColorScheme class is used to query colors from theme.
- HbColorScheme class has a single static functions to query colors from theme.
+ HbColorScheme class has a single static functions to query colors from current theme. If
+ color is not found from current theme then it is queried from base theme.
\sa QColor HbColorScheme::color(const QString &colorRole)
@@ -39,9 +40,9 @@
look and feel and be themable. For example, a custom widget may want to have background color
same as that of HbDialog. In such scenario the widget can query standard "popupbackground" color
from theme.
- Following code queries color of popoup forground and applies it to a text item.
+ Following code queries color of HbTextEdit's normal text color and applies it to a text item.
\code
- QColor col = HbColorScheme::color("popupforeground");
+ QColor col = HbColorScheme::color("qtc_textedit_normal");
if (col.isValid()) {
mytextitem->setTextColor(col);
}
@@ -52,23 +53,21 @@
need not to do it again by themselves. It is sufficient that widgets make sure that colors being
used to paint the graphics item has been updated in the handler of HbEvent::ThemeChanged.
- - The color-role may contain information about the state also, e.g. "foreground_enabled".
-
- \warning List of standard color roles is not yet finalized
+ - The color-role may contain information about the state also, e.g. "qtc_button_pressed".
*/
/*!
* \fn QColor HbColorScheme::color(const QString &colorRole))
- * This function returns value of some predefined \a colorRole.
+ * This function returns value of \a colorRole.
*
* See class level document for detailed example
*.
*/
#include <hbcolorscheme.h>
-#include "hbcolortheme_p.h"
+#include <hbtheme.h>
QColor HbColorScheme::color( const QString &colorRole )
{
- return HbColorTheme::instance()->color(colorRole);
+ return HbTheme::instance()->color(colorRole);
}
--- a/src/hbcore/theme/hbcolortheme_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (developer.feedback@nokia.com)
-**
-** This file is part of the HbCore module of the UI Extensions for Mobile.
-**
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this file.
-** Please review the following information to ensure the GNU Lesser General
-** Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at developer.feedback@nokia.com.
-**
-****************************************************************************/
-
-#include "hbcolortheme_p.h"
-#include "hbcolortheme_p_p.h"
-#include "hbstandarddirs_p.h"
-#include "hbinstance.h"
-#include "hbthemeutils_p.h"
-
-#include <QDebug>
-#include <QGraphicsWidget>
-
-/*!
- * Private class Constructor
- */
-HbColorThemePrivate::HbColorThemePrivate()
-{
-
-}
-
-void HbColorThemePrivate::setCurrentTheme(const QString &themeName)
-{
- // If new theme is not empty set theme
- if (!themeName.isEmpty()) {
- bool reloadAll = currentTheme.isEmpty();
- currentTheme = themeName;
- reloadColorFiles( reloadAll );
- }
-}
-
-/*!
- * HbColorThemePrivate::reloadColorFiles
- *
- * \a sender can be true or false depending upon whether all css files need to be reloaded or is done selectively
- */
-void HbColorThemePrivate::reloadColorFiles(bool sender)
-{
- QMap<int,QString> hierarchyVariableListWithPathInfo =
- HbThemeUtils::constructHierarchyListWithPathInfo(
- "variables/color/hbcolorgroup.css", currentTheme, Hb::StyleSheetResource);
- HbStandardDirs::findResourceList(hierarchyVariableListWithPathInfo,
- Hb::StyleSheetResource, true);
-
-#ifdef THEME_SERVER_TRACES
- qDebug() << "CSS files:";
- foreach(const QString &file, hierarchyVariableListWithPathInfo) {
- qDebug() << file;
- }
-#endif // THEME_SERVER_TRACES
-
- cssif.initialise(hierarchyVariableListWithPathInfo, sender);
-}
-
-/*!
- * HbColorThemePrivate::resolveColor
- *
- * \a values vector containing color information
- */
-QColor HbColorThemePrivate::resolveColor( HbCss::Value value ) const
-{
- return value.variant.toColor();
-}
-
-/*!
- * Destructor
- */
-HbColorThemePrivate::~HbColorThemePrivate()
-{
-
-}
-
-Q_GLOBAL_STATIC(HbColorTheme, globalColorTheme)
-HbColorTheme *HbColorTheme::self = 0;
-
-HbColorTheme *HbColorTheme::instance ()
-{
- return globalColorTheme();
-}
-
-/*!
- * HbColorTheme::color
- *
- * \a widget parent widget
- * \a colorAttribute attribute for which color information is being requested
- */
-QColor HbColorTheme::color( const QGraphicsWidget * widget,
- const QString &colorAttribute ) const
-{
- Q_D(const HbColorTheme);
-
- HbCss::Value value = d->cssif.findAttribute( widget, colorAttribute );
- return d->resolveColor( value );
-}
-
-/*!
- * HbColorTheme::color
- *
- * \a colorRole colorRole can be either "foreground" or "background" etc.
- */
-QColor HbColorTheme::color( const QString &colorRole ) const
-{
- Q_D(const HbColorTheme);
- HbCss::Value value = d->cssif.findVariable( colorRole );
- return d->resolveColor( value );
-}
-
-/*!
- * HbColorTheme::HbColorTheme()
- *
- * Constructor
- */
-HbColorTheme::HbColorTheme (): d_ptr( new HbColorThemePrivate )
-{
- self = this;
-}
-
-/*!
- * HbColorTheme::~HbColorTheme()
- *
- * Destructor
- */
-HbColorTheme::~HbColorTheme ()
-{
- delete d_ptr;
-}
-
-/*!
- * HbColorTheme::setCurrentTheme()
- *
- * \a themeName name of the new theme to be set
- */
-void HbColorTheme::setCurrentTheme(const QString &themeName)
-{
- Q_D(HbColorTheme);
- d->setCurrentTheme(themeName);
-}
-
-/*!
- * HbColorTheme::reloadCss()
- *
- * Reloads the color-related css files for the current theme
- */
-void HbColorTheme::reloadCss()
-{
- Q_D(HbColorTheme);
- d->cssif.flush();
- d->reloadColorFiles( true );
-}
-
-void HbColorTheme::flushVariableCache()
-{
- Q_D(HbColorTheme);
- d->cssif.flushVariableCache();
-}
--- a/src/hbcore/theme/hbcolortheme_p.h Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (developer.feedback@nokia.com)
-**
-** This file is part of the HbCore module of the UI Extensions for Mobile.
-**
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this file.
-** Please review the following information to ensure the GNU Lesser General
-** Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at developer.feedback@nokia.com.
-**
-****************************************************************************/
-
-#ifndef HBCOLORTHEME_H
-#define HBCOLORTHEME_H
-
-#include <QColor>
-#include <hbglobal.h>
-
-QT_BEGIN_NAMESPACE
- class QObject;
- class QGraphicsWidget;
-QT_END_NAMESPACE
-
- class HbColorThemePrivate;
-class TestHbColorTheme;
-
-class HB_AUTOTEST_EXPORT HbColorTheme
-{
- friend class TestHbColorTheme;
-public:
-
- HbColorTheme();
- ~HbColorTheme();
-
- void setCurrentTheme(const QString& currentTheme);
- static HbColorTheme *instance();
-
- QColor color(const QGraphicsWidget * wid, const QString &prop) const;
- QColor color(const QString &colorRole) const;
- void reloadCss();
- void flushVariableCache();
-
-private:
- HbColorThemePrivate * const d_ptr;
- static HbColorTheme *self;
- Q_DISABLE_COPY (HbColorTheme)
- Q_DECLARE_PRIVATE_D(d_ptr, HbColorTheme)
-};
-
-#endif // HBCOLORTHEME_H
--- a/src/hbcore/theme/hbcolortheme_p_p.h Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (developer.feedback@nokia.com)
-**
-** This file is part of the HbCore module of the UI Extensions for Mobile.
-**
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this file.
-** Please review the following information to ensure the GNU Lesser General
-** Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at developer.feedback@nokia.com.
-**
-****************************************************************************/
-
-#ifndef HBCOLORTHEME_P_H
-#define HBCOLORTHEME_P_H
-
-#include <QString>
-#include <hbglobal.h>
-#include "hbcssthemeinterface_p.h"
-#include "hbcssparser_p.h"
-
-class HB_AUTOTEST_EXPORT HbColorThemePrivate
-{
-public:
- HbColorThemePrivate();
- void setCurrentTheme(const QString &themeName);
- void reloadColorFiles(bool sender);
- QColor resolveColor(HbCss::Value values) const;
- ~HbColorThemePrivate();
-
- QString currentTheme;
- HbCssThemeInterface cssif;
-};
-
-#endif // HBCOLORTHEME_P_H
--- a/src/hbcore/theme/hbcssthemeinterface_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (developer.feedback@nokia.com)
-**
-** This file is part of the HbCore module of the UI Extensions for Mobile.
-**
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this file.
-** Please review the following information to ensure the GNU Lesser General
-** Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at developer.feedback@nokia.com.
-**
-****************************************************************************/
-
-#include "hbcssthemeinterface_p.h" //class header
-#include <QGraphicsWidget>
-
-#define FILE_VERSION(major, minor) (int)((major<<16)|minor)
-
-/*!
- \class HbCssThemeInterface
- \brief HbCssThemeInterface is an internal class.
- *
- */
-
- /*!
- * \fn HbCssThemeInterface::initialise(const QStringList& list,bool loadAllFiles,bool enableBinarySupport =false)
- * Function to populate the interface with css files
- * \a list list of css files, priority wise
- * \a loadAllFiles ,On application launch all files are loaded and on theme change unchanged files are not loaded.
- * \a enableBinarySupport optional flag for using the binary functionality
- */
-void HbCssThemeInterface::initialise(const QMap<int, QString> &list, bool loadAllFiles)
-{
- int handle;
- flushVariableCache();
- HbLayeredStyleLoader *loader =
- HbLayeredStyleLoader::getStack(HbLayeredStyleLoader::Concern_Colors);
-
- //first unload the layers, for which the contents are different after theme change
- if (handles.size() != 0) {
- QMap<int,HbLayeredStyleLoader::LayerPriority>::const_iterator itr;
- for (itr = handles.constBegin(); itr != handles.constEnd(); ++itr){
- loader->unload(itr.key(), itr.value());
- }
- handles.clear();
- }
-
- QMap<int, QString>::const_iterator i;
- for (i = list.constBegin(); i != list.constEnd(); ++i){
- HbLayeredStyleLoader::LayerPriority layerPriority =
- static_cast<HbLayeredStyleLoader::LayerPriority>(i.key());
- if(loadAllFiles) {
- handle = loader->load(i.value(), layerPriority);
- if (layerPriority != HbLayeredStyleLoader::Priority_Core
- && layerPriority != HbLayeredStyleLoader::Priority_Operator) {
- handles.insertMulti(handle, layerPriority);
- }
- } else if (layerPriority != HbLayeredStyleLoader::Priority_Core
- && layerPriority != HbLayeredStyleLoader::Priority_Operator) {
- handle = loader->load(i.value(), layerPriority);
- handles.insertMulti(handle, layerPriority);
- }
- }
-}
-
-/*!
- * \fn HbCssThemeInterface::flush()
- *
- */
-void HbCssThemeInterface::flush()
-{
- HbLayeredStyleLoader *loader =
- HbLayeredStyleLoader::getStack(HbLayeredStyleLoader::Concern_Colors);
- loader->clear();
- flushVariableCache();
-}
-
-void HbCssThemeInterface::flushVariableCache()
-{
- mVariables.clear();
-}
-
-/*!
- * \fn HbCssThemeInterface::findAttribute(const QGraphicsWidget* w, QString attribute)
- * Function for finding an attribute
- * \a w widget pointer of QGraphicsWidget which will act as a selector
- * For Universal Selector (*) pass NULL.
- * \a attribute name of attribute
- * \return list of values.
- */
-HbCss::Value HbCssThemeInterface::findAttribute(
- const QGraphicsWidget *w, const QString& attribute) const
-{
- StyleSelector::NodePtr n;
- n.ptr = (void *)w;
- HbCss::Value value;
-
- HbLayeredStyleLoader *loader =
- HbLayeredStyleLoader::getStack(HbLayeredStyleLoader::Concern_Colors);
- HbDeviceProfile profile(HbDeviceProfile::profile(w));
- HbCss::ValueExtractor valueExtractor(
- loader->declarationsForNode(n, profile.orientation()), true);
- valueExtractor.extractVariableValue(attribute, value);
-
- if ( value.type == Value::Variable) {
- value = findVariable ( value.variant.toString ());
- }
-
- return value;
-}
-
-/*!
- * \fn HbCssThemeInterface::findVariable(const QString& variableName) const
- * Function for finding an attribute
- * \a variableName name of color group
- * \return list of values.
- */
-HbCss::Value HbCssThemeInterface::findVariable(
- const QString& variableName) const
-{
- if ( mVariables.isEmpty() ) {
- HbLayeredStyleLoader *loader =
- HbLayeredStyleLoader::getStack(HbLayeredStyleLoader::Concern_Colors);
- loader->variableRuleSets(&mVariables);
- }
-
- HbCss::Value value;
- HbCss::ValueExtractor valueExtractor(mVariables, true);
- valueExtractor.extractVariableValue(variableName, value);
-
- //for varibale cascading support
- if ( value.type == Value::Variable){
- value = findVariable ( value.variant.toString ());
- }
-
- return value;
-}
--- a/src/hbcore/theme/hbcssthemeinterface_p.h Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (developer.feedback@nokia.com)
-**
-** This file is part of the HbCore module of the UI Extensions for Mobile.
-**
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this file.
-** Please review the following information to ensure the GNU Lesser General
-** Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at developer.feedback@nokia.com.
-**
-****************************************************************************/
-
-#ifndef HBCSSTHEMEINTERFACE_P_H
-#define HBCSSTHEMEINTERFACE_P_H
-
-#include <hbglobal.h>
-#include "hblayeredstyleloader_p.h"
-
-using namespace HbCss;
-
-class HB_AUTOTEST_EXPORT HbCssThemeInterface
-{
-public:
-
- HbCssThemeInterface(){};
-
- void initialise( const QMap<int,QString>& alist, bool loadAllFiles);
-
- HbCss::Value findAttribute( const QGraphicsWidget * aWidget,
- const QString& attributeName ) const;
-
- HbCss::Value findVariable( const QString& variableName )const;
-
- void flush();
- void flushVariableCache();
-
-private:
- QMap<int,HbLayeredStyleLoader::LayerPriority> handles;
- mutable QHash<QString, HbCss::Declaration> mVariables;
-
-};
-#endif //HBCSSTHEMEINTERFACE_P_H
--- a/src/hbcore/theme/hbtheme.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/theme/hbtheme.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -25,14 +25,12 @@
#include "hbtheme.h"
#include "hbtheme_p.h"
#include "hbthemeclient_p.h"
-#include "hbstandarddirs_p.h"
#include "hbicontheme_p.h"
#include "hbthemeutils_p.h"
#include "hbiconloader_p.h"
-#include "hbcolortheme_p_p.h"
-#include "hbcolortheme_p.h"
#include "hbeffecttheme_p.h"
#include "hbeffectinternal_p.h"
+#include "hbthemeindex_p.h"
#include <QSettings>
/*!
@@ -97,13 +95,24 @@
}
/*!
+ Returns the color for definition \a colorRole
+ */
+QColor HbTheme::color(const QString &colorRole) const
+{
+ HbThemeIndexResource resource(colorRole);
+ if (resource.isValid()) {
+ return resource.colorValue();
+ }
+ return QColor();
+}
+
+/*!
Constructor
*/
HbTheme::HbTheme() : d_ptr(new HbThemePrivate)
{
d_ptr->q_ptr = this;
d_ptr->fetchCurrentThemeFromSettings();
- HbThemeUtils::initSettings();
d_ptr->handleThemeChange();
}
@@ -146,7 +155,7 @@
void HbThemePrivate::fetchCurrentThemeFromSettings()
{
HbThemeIndexInfo info = HbThemeUtils::getThemeIndexInfo(ActiveTheme);
- if (info.themeIndexOffset > 0) {
+ if (info.address) {
currentTheme = info.name;
return;
}
@@ -167,7 +176,7 @@
QString newTheme;
if (str.isEmpty()) {
HbThemeIndexInfo info = HbThemeUtils::getThemeIndexInfo(ActiveTheme);
- if (info.themeIndexOffset > 0) {
+ if (info.address) {
newTheme = info.name;
} else {
newTheme = HbThemeUtils::getThemeSetting(HbThemeUtils::CurrentThemeSetting);
@@ -179,7 +188,6 @@
}
iconTheme.setCurrentTheme(newTheme);
- HbColorTheme::instance()->setCurrentTheme(newTheme);
HbEffectTheme::instance()->setCurrentTheme(newTheme);
// The server sends the signal only if the theme is changed from the previous theme
@@ -199,9 +207,6 @@
*/
void HbThemePrivate::updateTheme(const QStringList &updatedFiles)
{
- // Reload the CSS
- HbColorTheme::instance()->reloadCss();
-
// Reload effects
HbEffectInternal::reloadFxmlFiles();
--- a/src/hbcore/theme/hbtheme.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/theme/hbtheme.h Wed Jun 23 18:33:25 2010 +0300
@@ -27,6 +27,7 @@
#define HBTHEME_H
#include <QObject>
+#include <QColor>
#include <QString>
#include <hbglobal.h>
@@ -38,12 +39,14 @@
class HB_CORE_EXPORT HbTheme : public QObject
{
-Q_OBJECT
+ Q_OBJECT
public:
static HbTheme *instance();
QString name() const;
QString description() const;
+ QColor color(const QString &colorRole) const;
+
signals:
void changed();
void changeFinished();
--- a/src/hbcore/theme/hbthemecommon_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/theme/hbthemecommon_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -278,7 +278,7 @@
EInvalidServerRequest = 0,
EIconLookup = 1,
EStyleSheetLookup,
- EThemeSelection,
+ EThemeSelection = 4,
EMultiPieceIcon,
EMultiIcon,
EWidgetMLLookup,
--- a/src/hbcore/theme/hbthemecommon_symbian_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/theme/hbthemecommon_symbian_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -75,7 +75,7 @@
};
// server name
-_LIT(KThemeServerName,"hbthemeserver");
+_LIT(KThemeServerName,"!hbthemeserver");
const TUid KServerUid3={0x20022E82};
// Common unique ID for Pub/Sub
const TInt KNewThemeForThemeChanger = 9;
--- a/src/hbcore/theme/hbthemelistener_symbian_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/theme/hbthemelistener_symbian_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -68,7 +68,7 @@
mRepository->NotifyRequest(HbThemeUtils::CurrentThemeSetting, iStatus);
SetActive();
HbThemeIndexInfo info = HbThemeUtils::getThemeIndexInfo(ActiveTheme);
- if (info.themeIndexOffset > 0) {
+ if (info.address) {
themeClient->handleThemeChange(info.name);
return;
}
--- a/src/hbcore/theme/hbthemeutils_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/theme/hbthemeutils_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,6 @@
**
****************************************************************************/
-#include "hbthemeutils_p.h"
-
#include <QLocale>
#include <QSettings>
#include <QFile>
@@ -33,54 +31,37 @@
#include <QMap>
#include <QVariant>
-#include <hbapplication.h>
-#include <hbtheme.h>
-#include "hbstandarddirs_p.h"
-#include "hbiniparser_p.h"
-#include "hblayeredstyleloader_p.h"
-#include "hbthemecommon_p.h"
-
#ifdef Q_OS_SYMBIAN
#include "hbthemecommon_symbian_p.h"
#include <e32std.h>
#include <centralrepository.h>
#endif
+#include "hbthemeutils_p.h"
+#include "hbtheme.h"
+#include "hbiniparser_p.h"
+#include "hbthemecommon_p.h"
+#include "hbthemeclient_p.h"
+
+
// Standard folder names
-
+const char *HbThemeUtils::themeResourceFolder = "theme";
+const char *HbThemeUtils::platformHierarchy = "themes";
+const char *HbThemeUtils::operatorHierarchy = "prioritytheme";
const char *HbThemeUtils::iconsResourceFolder = "icons";
const char *HbThemeUtils::effectsResourceFolder = "effects";
const char *HbThemeUtils::styleResourceFolder = "style";
-const char *HbThemeUtils::themeResourceFolder = "theme";
-const char *HbThemeUtils::operatorHierarchy = "prioritytheme";
-const char *HbThemeUtils::appHierarchy = "apptheme";
-const char *HbThemeUtils::platformHierarchy = "themes";
-const char *operatorNameKey = "OperatorName";
static const char *themeSettingFile = "theme.theme";
static const char *baseThemeVariable = "BaseTheme";
static const char *defaultThemeVariable = "DefaultActiveTheme";
+// Core resource root dir
+static const char *coreResourcesRootDir = ":";
+
// These are the used setting names corresponding to HbThemeUtils::Setting enumeration.
static const QString settingNames[6] = {"", "basetheme", "defaulttheme",
"defaultthemedir", "currenttheme", "operatorbasepath"};
-static const char *getResourceFolderName(Hb::ResourceType resType)
-{
- switch(resType) {
- case Hb::IconResource:
- return HbThemeUtils::iconsResourceFolder;
- case Hb::EffectResource:
- return HbThemeUtils::effectsResourceFolder;
- case Hb::ThemeResource:
- return HbThemeUtils::themeResourceFolder;
- case Hb::StyleSheetResource:
- return HbThemeUtils::styleResourceFolder;
- default:
- break;
- }
- // This just to avoid warning
- return HbThemeUtils::iconsResourceFolder;
-}
/*!
@proto
@@ -98,57 +79,34 @@
class HbThemeUtilsPrivate
{
public:
- HbThemeUtilsPrivate() : settingsRetrieved(false)
+ HbThemeUtilsPrivate() : settingsRetrieved(false), mHeapThemeOffset(0)
{
- // add the operator level, app level and platform level hierarchies in the hierarchy list.
- hierarchies << HbHierarchy(HbThemeUtils::operatorHierarchy,
- HbLayeredStyleLoader::Priority_Operator)
-#ifdef USE_APPTHEMES
- << HbHierarchy(HbThemeUtils::appHierarchy,
- HbLayeredStyleLoader::Priority_Application)
-#endif
- << HbHierarchy(HbThemeUtils::platformHierarchy,
- HbLayeredStyleLoader::Priority_Theme);
}
- QString constructOperatorPath(const QString &operatorPath, const QString &fileName) const
- {
- return operatorPath + '/' + fileName;
- }
- void initSettings();
+
+ ~HbThemeUtilsPrivate();
void readSettings();
+ int heapThemeOffset(const HbThemeIndexInfo &info);
public: // data
- QString operatorName;
- QVector<HbHierarchy> hierarchies;
-
bool settingsRetrieved;
// Setting values are stored here to avoid overhead of reading from QSettings every time.
QString currentTheme;
QString defaultTheme;
QString defaultThemeRootDir;
QString baseTheme;
- QString operatorPath;
+ QString operatorName;
+
+private:
+ int mHeapThemeOffset;
};
-void HbThemeUtilsPrivate::initSettings()
+HbThemeUtilsPrivate::~HbThemeUtilsPrivate()
{
- // read the operator name from settings
- operatorName = HbThemeUtils::getThemeSetting(HbThemeUtils::OperatorNameSetting).trimmed();
-
- // construct operator path
- if (!operatorName.isEmpty()) {
- QStringList operatorPaths;
- operatorPaths << QLatin1String(HbThemeUtils::operatorHierarchy) + '/';
- operatorPaths = HbStandardDirs::findExistingFolderList(operatorPaths, QString(),
- Hb::IconResource);
- for (int i=0;i < operatorPaths.size();i++) {
- if (operatorPaths[i] == operatorName) {
- operatorPath = operatorPaths[i] + '/' + operatorName;
- break;
- }
- }
- }
+ if (mHeapThemeOffset > 0) {
+ GET_MEMORY_MANAGER(HbMemoryManager::HeapMemory);
+ manager->free(mHeapThemeOffset);
+ }
}
void HbThemeUtilsPrivate::readSettings()
@@ -176,7 +134,7 @@
defaultThemeRootDir = qvalue.trimmed();
} else {
// Use the default value
- defaultThemeRootDir = HbStandardDirs::themesDir();
+ defaultThemeRootDir = HbThemeUtils::themesDir();
}
value.Zero();
if (KErrNone == repository->Get(HbThemeUtils::BaseThemeSetting, value)) {
@@ -204,188 +162,26 @@
}
}
-static HbThemeUtilsPrivate d;
-
-void HbThemeUtils::initSettings()
+int HbThemeUtilsPrivate::heapThemeOffset(const HbThemeIndexInfo &info)
{
- d.initSettings();
-}
-
-/* Adds a new hierarchy level to be used for attribute look-up
- *
- * @param newHierrachy the name of the new hierrachy
- * @param priorityOrder priority order of the new hierarchy top be added.
- * if priorityOrder is greater than the currently existing hierarchies, this hierarchy will be appended
- * at the end of the hierarchy list
- *
- * @return the position in the new hierarchy in the hierarchy list. -1 if the new hierarchy is not added.
- */
-
-int HbThemeUtils::addHierarchy(const QString &newHierarchy, int priorityOrder)
-{
- int retValue = -1;
- if (priorityOrder >= 0) {
- // check that the hierarchy to be added is neither of opertor level,app level and platform level.
- if(newHierarchy != HbThemeUtils::operatorHierarchy
- && newHierarchy != HbThemeUtils::appHierarchy
- && newHierarchy != HbThemeUtils::platformHierarchy){
-
- // if priority given is more than the number of hierarchies already existing, append the new
- // hierarchy at end.
- HbHierarchy add(newHierarchy, HbLayeredStyleLoader::Priority_Theme);
- if (priorityOrder > d.hierarchies.count()) {
- d.hierarchies.append(add);
- retValue = d.hierarchies.count() - 1;
- } else { // insert at the correct position
- d.hierarchies.insert(priorityOrder, add);
- retValue = priorityOrder;
- }
- }
- }
- return retValue;
-}
-
-/* Removes a hierarchy level from the hierarchy list
- *
- * @param newHierrachy the name of the hierrachy to be removed.
- *
- * @ret true if the hierarchy has been removed, else false.
- */
-bool HbThemeUtils::removeHierarchy(const QString &hierarchyName)
-{
- bool retValue = false;
- // check whether an attempt is made to remove operator level, app level or platform level hierarchy
- if (hierarchyName != HbThemeUtils::operatorHierarchy
- && hierarchyName != HbThemeUtils::appHierarchy
- && hierarchyName != HbThemeUtils::platformHierarchy) {
- QVector<HbHierarchy>::iterator end = d.hierarchies.end();
- for (QVector<HbHierarchy>::iterator i = d.hierarchies.begin(); i != end; ++i) {
- if (i->name == hierarchyName) {
- d.hierarchies.erase(i);
- retValue = true;
- break;
+ if (mHeapThemeOffset == 0) {
+ QString themeindexfile = info.path + "/" + info.name +".themeindex";
+ QFile indexFile(themeindexfile);
+ if (indexFile.open(QIODevice::ReadOnly)) {
+ GET_MEMORY_MANAGER(HbMemoryManager::HeapMemory);
+ qint64 byteSize = indexFile.size();
+ mHeapThemeOffset = manager->alloc(byteSize);
+ if (mHeapThemeOffset >= 0) {
+ char *address = HbMemoryUtils::getAddress<char>(HbMemoryManager::HeapMemory, mHeapThemeOffset);
+ indexFile.read(address, byteSize);
+ indexFile.close();
}
}
}
- return retValue;
-}
-
-QString HbThemeUtils::operatorBasePath()
-{
- return d.operatorPath;
-}
-/* @ret hierarchy of themes in priority.
- */
-QVector<HbHierarchy> HbThemeUtils::hierarchies()
-{
- return d.hierarchies;
+ return mHeapThemeOffset;
}
-/* It constructs the hierarchy list with complete path info using the existing hierarchy list.
- *
- * @param fileName name of the file to be appended at end of all hierarchy levels
- * @param currentTheme Name of the currently used theme
- * @param resType type of Resource whether "style" or "icons"
- *
- * @ret list of hierarchy of themes in priority.Also appends the default path with least priority.
- */
-QMap<int, QString> HbThemeUtils::constructHierarchyListWithPathInfo(const QString &fileName,
- const QString ¤tTheme,
- const Hb::ResourceType resType)
-{
- QMap<int,QString> hierarchyListWithPathInfo;
-
- // Map the resource enum to string here
- const QString &resourcePath = getResourceFolderName(resType);
-#ifdef Q_OS_SYMBIAN
- foreach (const HbHierarchy &hierarchy, d.hierarchies) {
- switch(hierarchy.layerPriority) {
- case HbLayeredStyleLoader::Priority_Operator: {
- // Operator C drive path
- HbThemeIndexInfo info = HbThemeUtils::getThemeIndexInfo(OperatorC);
- if (info.themeIndexOffset > 0) {
-
- hierarchyListWithPathInfo.insert(HbLayeredStyleLoader::Priority_Operator,
- (info.path + '/' + resourcePath + '/' + info.name + '/' + fileName));
- }
- // Operator ROM path
- info = HbThemeUtils::getThemeIndexInfo(OperatorROM);
- if (info.themeIndexOffset > 0) {
- hierarchyListWithPathInfo.insert(HbLayeredStyleLoader::Priority_Operator,
- (info.path + '/' + resourcePath + '/' + info.name + '/' + fileName));
- }
- break;
- }
- case HbLayeredStyleLoader::Priority_Theme: {
- HbThemeIndexInfo info = HbThemeUtils::getThemeIndexInfo(ActiveTheme);
- if (info.themeIndexOffset > 0) {
- hierarchyListWithPathInfo.insert(HbLayeredStyleLoader::Priority_Theme,
- (info.path + '/' + resourcePath + '/' + info.name + '/' + fileName));
- }
- break;
- }
- default: {
- // this is for a new hierarchy level and for the time being HbLayeredStyleLoader::Priority_Theme prirority
- // is used,since there is no enum defined in hblayeredstyleloader_p.h
- // priority should be replaced with respective enum.
- hierarchyListWithPathInfo.insert(HbLayeredStyleLoader::Priority_Theme,
- (hierarchy.name + '/' + resourcePath + '/' + currentTheme + '/' + fileName));
- }
- }
- }
- // lets add base CSS path too in this list for now
- // This comes last in base hierarchy
- HbThemeIndexInfo info = HbThemeUtils::getThemeIndexInfo(BaseTheme);
- if (info.themeIndexOffset > 0) {
- hierarchyListWithPathInfo.insert(HbLayeredStyleLoader::Priority_Core,
- (info.path + '/' + resourcePath + '/' + info.name + '/' + fileName));
- }
-
-#else
- foreach (const HbHierarchy &hierarchy, d.hierarchies) {
- switch(hierarchy.layerPriority) {
- case HbLayeredStyleLoader::Priority_Operator: {
- if (!d.operatorPath.isEmpty()) {
- hierarchyListWithPathInfo.insert(HbLayeredStyleLoader::Priority_Operator,
- d.constructOperatorPath(operatorBasePath(), fileName));
- }
- break;
- }
- case HbLayeredStyleLoader::Priority_Application: {
- hierarchyListWithPathInfo.insert(HbLayeredStyleLoader::Priority_Application,
- (hierarchy.name + '/' + HbMemoryUtils::getCleanAppName() + '/' +
- resourcePath + '/' + currentTheme + '/' + fileName));
- break;
- }
- case HbLayeredStyleLoader::Priority_Theme: {
- if (currentTheme != baseTheme().name) {
- // Add platform theme folder only if it is different from base theme
- // Base theme is anyway added at the core priority
- hierarchyListWithPathInfo.insert(HbLayeredStyleLoader::Priority_Theme,
- (hierarchy.name + '/' + resourcePath + '/' + currentTheme + '/' + fileName));
- }
- break;
- }
- default: {
- // this is for a new hierarchy level and for the time being
- // HbLayeredStyleLoader::Priority_Theme prirority is used,
- // since there is no enum defined in hblayeredstyleloader_p.h
- // priority should be replaced with respective enum.
- hierarchyListWithPathInfo.insert(HbLayeredStyleLoader::Priority_Theme,
- (hierarchy.name + '/' + resourcePath + '/' + currentTheme + '/' + fileName));
- }
- }
- }
-
- if (resType == Hb::StyleSheetResource || resType == Hb::EffectResource) {
- // lets add base CSS path too in this list for now
- // This comes last in base hierarchy
- hierarchyListWithPathInfo.insert(HbLayeredStyleLoader::Priority_Core,
- (QLatin1String("themes/") + resourcePath + '/' + baseTheme().name + '/' + fileName));
- }
-#endif // Q_OS_SYMBIAN
- return hierarchyListWithPathInfo;
-}
+static HbThemeUtilsPrivate d;
/* returns information of base theme
*/
@@ -400,11 +196,11 @@
if ( baseThemeInfo.name.isEmpty() ) {
// Settings not yet initialized
// Check if Base theme is defined in theme.theme
- baseThemeInfo = getBaseThemeFromFile(HbStandardDirs::themesDir());
+ baseThemeInfo = getBaseThemeFromFile(HbThemeUtils::themesDir());
if (baseThemeInfo.name.isEmpty()) {
// Base theme does not exists in rom
// Get the base theme info from core resources
- baseThemeInfo = getBaseThemeFromFile(CoreResourcesRootDir);
+ baseThemeInfo = getBaseThemeFromFile(coreResourcesRootDir);
}
} else {
// So settings are initialized, it will have other value as well
@@ -414,7 +210,7 @@
// moved meanwhile and that usually results in a changed HB_THEMES_DIR but nobody will
// update the our settings stored via QSettings.
#ifndef Q_OS_SYMBIAN
- QString themesDirFromEnv = HbStandardDirs::themesDir();
+ QString themesDirFromEnv = HbThemeUtils::themesDir();
if (!themesDirFromEnv.isEmpty()) {
baseThemeInfo.rootDir = themesDirFromEnv;
}
@@ -557,14 +353,32 @@
{
// If the theme contains index.theme in icons resources
// it will be assumed valid
- QFile themeIndexFile(themeInfo.rootDir + '/' + platformHierarchy + '/' +
+ return QFile::exists(themeInfo.rootDir + '/' + platformHierarchy + '/' +
iconsResourceFolder + '/' + themeInfo.name + "/index.theme");
- return themeIndexFile.open(QIODevice::ReadOnly);
}
HbThemeIndexInfo HbThemeUtils::getThemeIndexInfo(const HbThemeType &type)
{
HbThemeIndexInfo info;
+
+#ifndef Q_OS_SYMBIAN
+ // If there is no themeserver connection load theme to client's heap
+ if (!HbThemeClient::global()->clientConnected()) {
+ HbThemeInfo baseinfo = baseTheme();
+ if (baseinfo.name.isEmpty() || baseinfo.name == "hbdefault") {
+ info.name = "hbdefault";
+ info.path = ":/themes";
+ } else {
+ info.name = baseinfo.name;
+ info.path = baseinfo.rootDir + "/themes";
+ }
+
+ info.address = HbMemoryUtils::getAddress<char>(HbMemoryManager::HeapMemory,
+ d.heapThemeOffset(info));
+ return info;
+ }
+#endif // Q_OS_SYMBIAN
+
GET_MEMORY_MANAGER(HbMemoryManager::SharedMemory);
if (manager) {
HbSharedChunkHeader *chunkHeader = (HbSharedChunkHeader*)(manager->base());
@@ -576,7 +390,8 @@
chunkHeader->baseThemeNameOffset));
info.path = QString(HbMemoryUtils::getAddress<char>(HbMemoryManager::SharedMemory,
chunkHeader->baseThemePathOffset));
- info.themeIndexOffset = chunkHeader->baseThemeIndexOffset;
+ info.address = HbMemoryUtils::getAddress<char>(HbMemoryManager::SharedMemory,
+ chunkHeader->baseThemeIndexOffset);
}
break;
case OperatorC:
@@ -585,7 +400,8 @@
chunkHeader->operatorThemeDriveCNameOffset));
info.path = QString(HbMemoryUtils::getAddress<char>(HbMemoryManager::SharedMemory,
chunkHeader->operatorThemeDriveCPathOffset));
- info.themeIndexOffset = chunkHeader->operatorThemeDriveCIndexOffset;
+ info.address = HbMemoryUtils::getAddress<char>(HbMemoryManager::SharedMemory,
+ chunkHeader->operatorThemeDriveCIndexOffset);
}
break;
case OperatorROM:
@@ -594,7 +410,8 @@
chunkHeader->operatorThemeRomNameOffset));
info.path = QString(HbMemoryUtils::getAddress<char>(HbMemoryManager::SharedMemory,
chunkHeader->operatorThemeRomPathOffset));
- info.themeIndexOffset = chunkHeader->operatorThemeRomIndexOffset;
+ info.address = HbMemoryUtils::getAddress<char>(HbMemoryManager::SharedMemory,
+ chunkHeader->operatorThemeRomIndexOffset);
}
break;
case ActiveTheme:
@@ -603,7 +420,8 @@
chunkHeader->activeThemeNameOffset));
info.path = QString(HbMemoryUtils::getAddress<char>(HbMemoryManager::SharedMemory,
chunkHeader->activeThemePathOffset));
- info.themeIndexOffset = chunkHeader->activeThemeIndexOffset;
+ info.address = HbMemoryUtils::getAddress<char>(HbMemoryManager::SharedMemory,
+ chunkHeader->activeThemeIndexOffset);
}
break;
default:
@@ -617,3 +435,18 @@
{
return !(fileName.contains(QChar('/'), Qt::CaseSensitive) || fileName.contains(QChar('\\'), Qt::CaseSensitive));
}
+
+QString HbThemeUtils::themesDir()
+{
+#ifdef Q_OS_SYMBIAN
+ static QString mainThemesDir("Z:/resource/hb");
+#else
+ static QString mainThemesDir = QDir::fromNativeSeparators(qgetenv("HB_THEMES_DIR"));
+ // Do not call absolutePath if the path is empty,
+ // because it would return current path in that case.
+ if (!mainThemesDir.isEmpty()) {
+ mainThemesDir = QDir(mainThemesDir).absolutePath();
+ }
+#endif
+ return mainThemesDir;
+}
--- a/src/hbcore/theme/hbthemeutils_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/theme/hbthemeutils_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -33,19 +33,6 @@
#include <hblayeredstyleloader_p.h>
#include <QPair>
-#undef USE_APPTHEMES
-
-struct HbHierarchy
-{
- HbHierarchy() {}
- HbHierarchy(QString name,
- HbLayeredStyleLoader::LayerPriority layerPriority)
- : name(name),
- layerPriority(layerPriority) {}
- QString name;
- HbLayeredStyleLoader::LayerPriority layerPriority;
-};
-
struct HbThemeInfo
{
HbThemeInfo()
@@ -63,36 +50,23 @@
HbThemeIndexInfo() :
name(),
path(),
- themeIndexOffset(0)
+ address(0)
{
}
- HbThemeIndexInfo(const QString &themeName, const QString &path, quint32 themeIndexOffset) :
+ HbThemeIndexInfo(const QString &themeName, const QString &path, char *address) :
name(themeName),
path(path),
- themeIndexOffset(themeIndexOffset)
+ address(address)
{
}
QString name;
QString path;
- quint32 themeIndexOffset;
+ char *address;
};
class HB_CORE_PRIVATE_EXPORT HbThemeUtils
{
public:
- static QVector<HbHierarchy> hierarchies();
- static void initSettings();
-
-//following methods for unittests only
- static int addHierarchy(const QString& newHierarchy, int priorityOrder);
- static bool removeHierarchy(const QString &hierarchy);
- static QString operatorBasePath();
-//unittest functions end.
- static QMap<int, QString> constructHierarchyListWithPathInfo(
- const QString &fileName,
- const QString ¤tTheme,
- const Hb::ResourceType resType );
-
enum Setting {
BaseThemeSetting = 0x1,
DefaultThemeSetting = 0x2,
@@ -111,15 +85,14 @@
static HbThemeIndexInfo getThemeIndexInfo(const HbThemeType& type);
static bool isLogicalName(const QString &fileName);
+ static QString themesDir();
- // Standard folder names
+ static const char *themeResourceFolder;
+ static const char *platformHierarchy;
+ static const char *operatorHierarchy;
static const char *iconsResourceFolder;
static const char *effectsResourceFolder;
static const char *styleResourceFolder;
- static const char *themeResourceFolder;
- static const char *operatorHierarchy;
- static const char *appHierarchy;
- static const char *platformHierarchy;
private:
static HbThemeInfo getBaseThemeFromFile(const QString &rootDir);
--- a/src/hbcore/theme/theme.pri Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/theme/theme.pri Wed Jun 23 18:33:25 2010 +0300
@@ -32,18 +32,13 @@
SOURCES += $$PWD/hbtheme.cpp
SOURCES += $$PWD/hbthemeutils_p.cpp
-SOURCES += $$PWD/hbcolortheme_p.cpp
SOURCES += $$PWD/hbcolorscheme.cpp
-SOURCES += $$PWD/hbcssthemeinterface_p.cpp
SOURCES += $$PWD/hbthemeclient_p.cpp
SOURCES += $$PWD/hbeffecttheme_p.cpp
PRIVATE_HEADERS += $$PWD/hbthemecommon_p.h
PRIVATE_HEADERS += $$PWD/hbtheme_p.h
PRIVATE_HEADERS += $$PWD/hbthemeutils_p.h
-PRIVATE_HEADERS += $$PWD/hbcolortheme_p.h
-PRIVATE_HEADERS += $$PWD/hbcolortheme_p_p.h
-PRIVATE_HEADERS += $$PWD/hbcssthemeinterface_p.h
PRIVATE_HEADERS += $$PWD/hbthemeclient_p.h
PRIVATE_HEADERS += $$PWD/hbeffecttheme_p.h
PRIVATE_HEADERS += $$PWD/hbthemeclient_p_p.h
--- a/src/hbcore/utils/hbdeviceprofiledatabase_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/utils/hbdeviceprofiledatabase_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -57,10 +57,8 @@
from the themeserver.
This class is not supposed to use directly. Instead, use \c HbDeviceProfile
- and \c HbExtendedDeviceProfile.
-
+
\sa HbDeviceProfile
- \sa HbExtendedDeviceProfile
\internal
\proto
*/
--- a/src/hbcore/utils/hbextendeddeviceprofile_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (developer.feedback@nokia.com)
-**
-** This file is part of the HbCore module of the UI Extensions for Mobile.
-**
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this file.
-** Please review the following information to ensure the GNU Lesser General
-** Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at developer.feedback@nokia.com.
-**
-****************************************************************************/
-
-#include "hbextendeddeviceprofile_p.h"
-#include "hbdeviceprofile_p.h"
-
-/*
- \class HbExtendedDeviceProfile
- \brief HbExtendedDeviceProfile provides setter methods for \c HbDeviceProfile and
- additional internal parameter accessors & setters.
-
- Note that it's assumed that each device profile has unique name. In addition,
- each device profile has 'alternate' profile for the other orientation.
-
- \sa HbDeviceProfile
- \internal
- \proto
-*/
-
-
-/*!
- Constructor.
-*/
-HbExtendedDeviceProfile::HbExtendedDeviceProfile()
-: HbDeviceProfile()
-{
-}
-
-/*!
- Copy constructor.
- \param other source profile.
-*/
-HbExtendedDeviceProfile::HbExtendedDeviceProfile(const HbExtendedDeviceProfile &other)
-: HbDeviceProfile(other)
-{
-}
-
-/*!
- Conversion constructor from \c HbDeviceProfile to \c HbExtendedDeviceProfile.
- \param other source profile.
-*/
-HbExtendedDeviceProfile::HbExtendedDeviceProfile(const HbDeviceProfile &other)
-: HbDeviceProfile(other)
-{
-}
-
-/*!
- Constructor for information based on profile name.
- If there is no profile with that name, result is default constructed instance.
-*/
-HbExtendedDeviceProfile::HbExtendedDeviceProfile(const QString &name)
-: HbDeviceProfile(name)
-{
-}
-
-/*!
- Assignment operator.
- \param other source profile.
- \return reference to this profile.
-*/
-HbExtendedDeviceProfile &HbExtendedDeviceProfile::operator=(const HbExtendedDeviceProfile &other)
-{
- if (this != &other) {
- d_ptr = other.d_ptr;
- }
- return *this;
-}
-
-/*!
- Sets name of this profile.
- \param name name.
-*/
-void HbExtendedDeviceProfile::setName(const QString &name)
-{
- d_ptr->mProfile.mName = name;
-}
-
-/*!
- Sets logical screen size in pixels.
- \param size logical screen size.
-*/
-void HbExtendedDeviceProfile::setLogicalSize(const QSize &size)
-{
- d_ptr->mProfile.mLogicalSize = size;
-}
-
-/*!
- Sets name of alternate profile.
- Typically, orientation of alternative profile is opposite of this profile.
- \param name name of alternate profile.
-*/
-void HbExtendedDeviceProfile::setAlternateProfileName(const QString &name)
-{
- d_ptr->mProfile.mAltName = name;
-}
-
-/*!
- Sets unit value.
- \param value desired new value.
-*/
-void HbExtendedDeviceProfile::setUnitValue(qreal value)
-{
- d_ptr->mProfile.mUnitValue = value;
-}
-
-/*!
- Sets ppi (points per inc) value.
- \param value desired new value.
-*/
-void HbExtendedDeviceProfile::setPpiValue(qreal value)
-{
- d_ptr->mProfile.mPpiValue = value;
-}
-
-// end of file
--- a/src/hbcore/utils/hbextendeddeviceprofile_p.h Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (developer.feedback@nokia.com)
-**
-** This file is part of the HbCore module of the UI Extensions for Mobile.
-**
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this file.
-** Please review the following information to ensure the GNU Lesser General
-** Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at developer.feedback@nokia.com.
-**
-****************************************************************************/
-
-#ifndef HBEXTENDEDDEVICEPROFILE_H
-#define HBEXTENDEDDEVICEPROFILE_H
-
-#include <hbglobal.h>
-#include <QtGlobal>
-#include <QSizeF>
-#include <hbdeviceprofile.h>
-
-class HB_AUTOTEST_EXPORT HbExtendedDeviceProfile : public HbDeviceProfile
-{
-public:
- HbExtendedDeviceProfile();
- HbExtendedDeviceProfile(const HbExtendedDeviceProfile &other);
- explicit HbExtendedDeviceProfile(const HbDeviceProfile &other);
- explicit HbExtendedDeviceProfile(const QString &name);
-
- HbExtendedDeviceProfile &operator=(const HbExtendedDeviceProfile &other);
-
- void setName(const QString &name);
- void setLogicalSize(const QSize &size);
- void setAlternateProfileName(const QString &name);
- void setUnitValue(qreal value);
- void setPpiValue(qreal value);
-};
-
-
-#endif // HBEXTENDEDDEVICEPROFILE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/utils/hbfeaturemanager.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,211 @@
+/****************************************************************************
+**
+** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (developer.feedback@nokia.com)
+**
+** This file is part of the HbCore module of the UI Extensions for Mobile.
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at developer.feedback@nokia.com.
+**
+****************************************************************************/
+
+#include "hbfeaturemanager_r.h"
+
+#include <QString>
+
+#if defined(Q_WS_S60)
+#include <centralrepository.h>
+#else
+#include <QSettings>
+#endif // Q_WS_S60
+
+/*!
+ @alpha
+ @hbcore
+ \class HbFeatureManager
+ \brief HbFeatureManager is used to control hb internal features.
+*/
+
+/*!
+ \enum HbFeatureManager::Feature
+
+ This enum defines the hb internal features.
+*/
+
+/*!
+ \var HbFeatureManager::TextMeasurement
+
+ Runtime variation flag for text measurement feature.
+
+ This needs to be enabled if you want to get the localization layout
+ metrics from your application.
+
+ Zero means disabled, non-zero means enabled.
+*/
+
+/*!
+ \var HbFeatureManager::TheTestUtility
+
+ Runtime variation flag for "the test utility"
+
+ This needs to be enabled if you want to utilize "the test utility"
+ (the four floating buttons) in your application.
+
+ Zero means disabled, non-zero means enabled.
+*/
+
+/*!
+ \var HbFeatureManager::LanguageSwitch
+*/
+
+
+#if defined(Q_WS_S60)
+const TUid HBFM_CREPO_ID = {0x2002C304};
+#endif
+
+
+class HbFeatureManagerPrivate
+{
+public:
+ HbFeatureManagerPrivate();
+ virtual ~HbFeatureManagerPrivate();
+
+ QString toString( HbFeatureManager::Feature feature );
+
+#if defined(Q_WS_S60)
+ CRepository *mRepo;
+#else
+ QSettings *mSettings;
+#endif // Q_WS_S60
+};
+
+/*!
+\internal
+*/
+HbFeatureManagerPrivate::HbFeatureManagerPrivate()
+{
+#if defined(Q_WS_S60)
+ TRAPD( err, mRepo = CRepository::NewL( HBFM_CREPO_ID ) );
+ if( err ) {
+ qWarning( "HbFeatureManager construction fails, error code = %d", err );
+ }
+ // Default values defined in cenrep file.
+#else
+ mSettings = new QSettings( "Nokia", "Hb feature manager" );
+ // Set default values:
+ if( !mSettings->contains( toString( HbFeatureManager::TextMeasurement ) ) ) {
+ mSettings->setValue( toString( HbFeatureManager::TextMeasurement ), 0 );
+ }
+ if( !mSettings->contains( toString( HbFeatureManager::TheTestUtility ) ) ) {
+ mSettings->setValue( toString( HbFeatureManager::TheTestUtility ), 0 );
+ }
+#endif // Q_WS_S60
+}
+
+/*!
+\internal
+*/
+HbFeatureManagerPrivate::~HbFeatureManagerPrivate()
+{
+#if defined(Q_WS_S60)
+ delete mRepo;
+#else
+ delete mSettings;
+#endif // Q_WS_S60
+}
+
+/*!
+\internal
+*/
+QString HbFeatureManagerPrivate::toString( HbFeatureManager::Feature feature )
+{
+ return QString( "HbFeature_" ) + QString::number( ( int )feature );
+}
+
+/*!
+ Default constructor.
+*/
+HbFeatureManager::HbFeatureManager() :
+ d(new HbFeatureManagerPrivate)
+{
+}
+
+/*!
+ Returns singleton instance
+*/
+HbFeatureManager *HbFeatureManager::instance()
+{
+ static HbFeatureManager theManager;
+ return &theManager;
+}
+
+/*!
+ Destructor
+*/
+HbFeatureManager::~HbFeatureManager()
+{
+ delete d;
+}
+
+/*!
+ Returns the status of requested feature.
+*/
+int HbFeatureManager::featureStatus( Feature feature )
+{
+#if defined(Q_WS_S60)
+ if (!d->mRepo) {
+ return 0;
+ }
+ TUint32 key = (TUint32)feature;
+ TInt value = 0;
+ TInt error = d->mRepo->Get( key, value );
+ if( error != KErrNone ) {
+ qWarning( "HbFeatureManager getting the feature fails, error code = %d", error );
+ } else {
+ return (int)value;
+ }
+
+#else
+ if( d->mSettings->contains( d->toString( feature ) ) ) {
+ return d->mSettings->value( d->toString( feature ) ).toInt();
+ }
+#endif
+ return 0;
+}
+
+
+/*!
+ Sets the status of requested feature to given value.
+*/
+void HbFeatureManager::setFeatureStatus( Feature feature, int status )
+{
+#if defined(Q_WS_S60)
+ if (!d->mRepo) {
+ return;
+ }
+ TUint32 key = (TUint32)feature;
+ TInt value = (TInt)status;
+ TInt error = d->mRepo->Set( key, value );
+ if( error != KErrNone ) {
+ qWarning( "HbFeatureManager setting the feature fails, error code = %d", error );
+ }
+
+#else
+ d->mSettings->setValue( d->toString( feature ), status );
+#endif
+}
+
--- a/src/hbcore/utils/hbfeaturemanager_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (developer.feedback@nokia.com)
-**
-** This file is part of the HbCore module of the UI Extensions for Mobile.
-**
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this file.
-** Please review the following information to ensure the GNU Lesser General
-** Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at developer.feedback@nokia.com.
-**
-****************************************************************************/
-
-#include "hbfeaturemanager_p.h"
-
-#include <QSettings>
-
-HbFeatureManager::HbFeatureManager()
-{
-#if defined(Q_WS_S60)
- TRAPD( err, mRepo = CRepository::NewL( HBFM_CREPO_ID ) );
- if( err ) {
- qWarning( "HbFeatureManager construction fails, error code = %d", err );
- }
- // Default values defined in cenrep file.
-#else
- mSettings = new QSettings( "Nokia", "Hb feature manager" );
- // Set default values:
- if( !mSettings->contains( toString( TextMeasurement ) ) ) {
- mSettings->setValue( toString( TextMeasurement ), 0 );
- }
- if( !mSettings->contains( toString( TheTestUtility ) ) ) {
- mSettings->setValue( toString( TheTestUtility ), 0 );
- }
-#endif // Q_WS_S60
-}
-
-HbFeatureManager *HbFeatureManager::instance()
-{
- static HbFeatureManager theManager;
- return &theManager;
-}
-
-
-HbFeatureManager::~HbFeatureManager()
-{
-#if defined(Q_WS_S60)
- delete mRepo;
-#else
- delete mSettings;
-#endif // Q_WS_S60
-}
-
-int HbFeatureManager::featureStatus( HbFeature feature )
-{
-#if defined(Q_WS_S60)
- if (!mRepo) {
- return 0;
- }
- TUint32 aKey = (TUint32)feature;
- TInt aValue = 0;
- TInt error = mRepo->Get( aKey, aValue );
- if( error != KErrNone ) {
- qWarning( "HbFeatureManager getting the feature fails, error code = %d", error );
- } else {
- return (int)aValue;
- }
-
-#else
- if( mSettings->contains( toString( feature ) ) ) {
- return mSettings->value( toString( feature ) ).toInt();
- }
-#endif
- return 0;
-}
-
-
-void HbFeatureManager::setFeatureStatus( HbFeature feature, int status )
-{
-#if defined(Q_WS_S60)
- if (!mRepo) {
- return;
- }
- TUint32 aKey = (TUint32)feature;
- TInt aValue = (TInt)status;
- TInt error = mRepo->Set( aKey, aValue );
- if( error != KErrNone ) {
- qWarning( "HbFeatureManager setting the feature fails, error code = %d", error );
- }
-
-#else
- mSettings->setValue( toString( feature ), status );
-#endif
-}
-
-QString HbFeatureManager::toString( HbFeature feature )
-{
- return QString( "HbFeature_" ) + QString::number( ( int )feature );
-}
--- a/src/hbcore/utils/hbfeaturemanager_p.h Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (developer.feedback@nokia.com)
-**
-** This file is part of the HbCore module of the UI Extensions for Mobile.
-**
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this file.
-** Please review the following information to ensure the GNU Lesser General
-** Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at developer.feedback@nokia.com.
-**
-****************************************************************************/
-
-
-#ifndef HBFEATUREMANAGER_P_H
-#define HBFEATUREMANAGER_P_H
-
-#include <hbglobal.h>
-
-#if defined(Q_WS_S60)
-
-#include <centralrepository.h>
-
-const TUid HBFM_CREPO_ID = {0x2002C304};
-
-#else
-
-class QSettings;
-
-#endif // Q_WS_S60
-
-
-class HB_CORE_PRIVATE_EXPORT HbFeatureManager
-{
-
-public:
-
- typedef enum {
- TextMeasurement = 0x1,
- TheTestUtility = 0x2,
- LanguageSwitch = 0x4
- } HbFeature;
-
-
- static HbFeatureManager *instance();
- ~HbFeatureManager();
-
- int featureStatus( HbFeature feature );
- void setFeatureStatus( HbFeature feature, int status );
-
-private:
- HbFeatureManager();
-
- QString toString( HbFeature feature );
-
-#if defined(Q_WS_S60)
- CRepository *mRepo;
-#else
- QSettings *mSettings;
-#endif // Q_WS_S60
-
-};
-
-#endif // HBFEATUREMANAGER_P_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbcore/utils/hbfeaturemanager_r.h Wed Jun 23 18:33:25 2010 +0300
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (developer.feedback@nokia.com)
+**
+** This file is part of the HbCore module of the UI Extensions for Mobile.
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at developer.feedback@nokia.com.
+**
+****************************************************************************/
+
+
+#ifndef HBFEATUREMANAGER_R_H
+#define HBFEATUREMANAGER_R_H
+
+#include <hbglobal.h>
+
+class HbFeatureManagerPrivate;
+
+class HB_CORE_RESTRICTED_EXPORT HbFeatureManager
+{
+
+public:
+
+ enum Feature {
+ TextMeasurement = 0x1,
+ TheTestUtility = 0x2,
+ LanguageSwitch = 0x4
+ };
+
+
+ static HbFeatureManager *instance();
+ ~HbFeatureManager();
+
+ int featureStatus( Feature feature );
+ void setFeatureStatus( Feature feature, int status );
+
+private:
+ Q_DISABLE_COPY(HbFeatureManager)
+ HbFeatureManager();
+
+ HbFeatureManagerPrivate *const d;
+};
+
+#endif // HBFEATUREMANAGER_R_H
--- a/src/hbcore/utils/hbtextmeasurementutility_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/utils/hbtextmeasurementutility_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -27,7 +27,7 @@
#include "hbwidgetbase.h"
#include "hbfontspec.h"
#include "hbinstance.h"
-#include "hbfeaturemanager_p.h"
+#include "hbfeaturemanager_r.h"
#include <QGraphicsWidget>
#include <QTextStream>
--- a/src/hbcore/utils/hbthetestwidget_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/utils/hbthetestwidget_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -50,6 +50,7 @@
#include <QFile>
#include <QDir>
#include <QTimer>
+#include <QProcess>
#include <hbaction.h>
#include <QDebug> // for qWarning
@@ -68,6 +69,11 @@
// how much must button be dragged before it is actually moved
const int KThreshold = 16;
+const QString KDriveFPath("F:\\data\\log\\");
+const QString KDriveEPath("E:\\data\\log\\");
+const QString KDriveCPath("C:\\data\\log\\");
+const QString KTheAppLaunchConfigureFile("app_launch_config.txt");
+
HbTheTestButton::HbTheTestButton(QGraphicsItem *parent)
: HbToolButton(parent),
mPressedDown(false)
@@ -396,6 +402,62 @@
#endif
}
+void HbTheTestWidget::launchThemeChanger()
+{
+ QProcess::startDetached("hbthemechanger.exe");
+}
+
+void HbTheTestWidget::launchApplications()
+{
+ // Find config file
+ QString filePath = findAppLaunchConfigFile();
+
+ QStringList commandLines;
+
+ if (!filePath.isEmpty()) {
+ // Try to read file
+ QFile file(filePath);
+ if (file.open(QIODevice::ReadOnly)) {
+ QString line;
+
+ while (!file.atEnd()) {
+ QByteArray dirtyLine = file.readLine();
+ line = QString(dirtyLine).trimmed();
+ // Skip empty lines and comment lines
+ if (line.isEmpty() || line.at(0) == '#') {
+ continue;
+ }
+ commandLines.append(line);
+ }
+ }
+ }
+
+ for (int i=0; i<commandLines.count(); i++) {
+ int index = 0;
+ // Parse program name and arguments from the command line
+ QString cmdLine = commandLines.at(i);
+ QStringList args;
+
+ while (index < cmdLine.count()) {
+ int startIndex = index;
+ // Find empty space
+ while (index < cmdLine.count() && !cmdLine[index].isSpace()) index++;
+ args.append(cmdLine.mid(startIndex, index-startIndex));
+ // Find non-empty space
+ while (index < cmdLine.count() && cmdLine[index].isSpace()) index++;
+ }
+
+ if (!args.count()) {
+ continue;
+ }
+
+ QString program = args.at(0);
+ args.removeFirst();
+
+ QProcess::startDetached(program, args);
+ }
+}
+
void HbTheTestWidget::screenCapture()
{
setVisible(false);
@@ -432,6 +494,7 @@
dir.mkpath(filePath);
}
+ filePath.append(QDir::separator());
if (!HbApplication::applicationName().isEmpty()) {
filePath.append(HbApplication::applicationName());
} else {
@@ -439,20 +502,9 @@
}
filePath.append(".png");
-//#ifdef Q_OS_SYMBIAN
- // todo: not fail-safe code
-// TSize screenSize = CCoeEnv::Static()->ScreenDevice()->SizeInPixels();
-// TDisplayMode displayMode = CCoeEnv::Static()->ScreenDevice()->DisplayMode();
-
-// CFbsBitmap *bitmap = new (ELeave) CFbsBitmap();
-// User::LeaveIfError(bitmap->Create(screenSize, displayMode));
-
-// CCoeEnv::Static()->ScreenDevice()->CopyScreenToBitmap(bitmap);
-// QPixmap screenPixmap = QPixmap::fromSymbianCFbsBitmap(bitmap);
-//#else
QPixmap screenPixmap = QPixmap::grabWindow(
QApplication::activeWindow()->winId()); //krazy:exclude=qclasses
-//#endif
+
QString format = "png";
screenPixmap.save(filePath.toLatin1(), format.toLatin1());
setVisible(true);
@@ -472,4 +524,25 @@
dialog->show();
}
+QString HbTheTestWidget::findAppLaunchConfigFile()
+{
+ QString filePath;
+#if defined (Q_OS_SYMBIAN)
+ if (QFile::exists(KDriveFPath + KTheAppLaunchConfigureFile)) {
+ filePath = KDriveFPath + KTheAppLaunchConfigureFile;
+ } else if (QFile::exists(KDriveEPath + KTheAppLaunchConfigureFile)) {
+ filePath = KDriveEPath + KTheAppLaunchConfigureFile;
+ } else if (QFile::exists(KDriveCPath + KTheAppLaunchConfigureFile)) {
+ filePath = KDriveCPath + KTheAppLaunchConfigureFile;
+ }
+#elif defined (Q_OS_WIN32)
+ if (QFile::exists(KDriveCPath + KTheAppLaunchConfigureFile)) {
+ filePath = KDriveCPath + KTheAppLaunchConfigureFile;
+ }
+ // only Symbian and Windows are supported
+#endif
+
+ return filePath;
+}
+
--- a/src/hbcore/utils/hbthetestwidget_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/utils/hbthetestwidget_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -82,6 +82,8 @@
void showThemeServerMemoryInfo();
void screenCapture(); // not working on HW
void createSharedMemoryReport() const;
+ void launchThemeChanger();
+ void launchApplications(); // Reads exe names and parameters in config file
protected:
QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint) const;
@@ -92,6 +94,7 @@
private:
void showWarning(QString text);
+ QString findAppLaunchConfigFile();
private:
HbTheTestWidgetPrivate *d;
--- a/src/hbcore/utils/hbwidgetloaderactions_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/utils/hbwidgetloaderactions_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -38,7 +38,7 @@
/*!
\internal
*/
-HbWidgetLoaderActions::HbWidgetLoaderActions()
+HbWidgetLoaderActions::HbWidgetLoaderActions()
: HbXmlLoaderBaseActions(), mWidget(0), mLayout(0)
{
}
@@ -57,18 +57,17 @@
bool HbWidgetLoaderActions::createMeshLayout( const QString &widget )
{
Q_UNUSED( widget );
- HbMeshLayout *layout = static_cast<HbMeshLayout*>(mWidget->layout());
+ HbAnchorLayout *layout = static_cast<HbAnchorLayout*>(mWidget->layout());
if (!layout) {
- layout = new HbMeshLayout();
+ layout = new HbAnchorLayout();
mWidget->setLayout(layout);
} else {
// Reset layout's state
while (layout->count()) {
layout->removeAt(0);
}
- layout->clearAnchors();
- layout->clearSpacingOverrides();
- layout->clearItemIds();
+ layout->removeAnchors();
+ layout->removeMappings();
}
mLayout = layout;
return true;
@@ -77,7 +76,7 @@
/*!
\internal
*/
-bool HbWidgetLoaderActions::addMeshLayoutEdge( const QString &src, Hb::Edge srcEdge,
+bool HbWidgetLoaderActions::addMeshLayoutEdge( const QString &src, Hb::Edge srcEdge,
const QString &dst, Hb::Edge dstEdge,
const HbXmlLengthValue &spacing, const QString &spacer )
{
@@ -87,16 +86,16 @@
// divide original mesh definition into two. src->dst becomes src->spacer->dst
if ( src.isEmpty() ) {
// if the starting item is layout
- // "layout --(spacing)--> item"
- // becomes
+ // "layout --(spacing)--> item"
+ // becomes
// "layout --(spacing)--> spacer --(0)--> item"
ok &= addMeshLayoutEdge( src, srcEdge, spacer, srcEdge, spacing, QString() );
HbXmlLengthValue val(0, HbXmlLengthValue::Pixel);
ok &= addMeshLayoutEdge( spacer, getAnchorOppositeEdge(srcEdge), dst, dstEdge, val, QString() );
} else {
// between two items, or if end item is layout
- // "item1 --(spacing)--> item2"
- // becomes
+ // "item1 --(spacing)--> item2"
+ // becomes
// "item1 --(spacing)--> spacer --(0)--> item2"
ok &= addMeshLayoutEdge( src, srcEdge, spacer, getAnchorOppositeEdge(srcEdge), spacing, QString() );
HbXmlLengthValue val(0, HbXmlLengthValue::Pixel);
@@ -151,20 +150,20 @@
/*!
\internal
*/
-bool HbWidgetLoaderMemoryActions::addMeshLayoutEdge( const QString &src, Hb::Edge srcEdge,
+bool HbWidgetLoaderMemoryActions::addMeshLayoutEdge( const QString &src, Hb::Edge srcEdge,
const QString &dst, Hb::Edge dstEdge,
const HbXmlLengthValue &spacing, const QString &spacer )
-{
+{
HbWidgetLoader::MeshItem item(mLayoutDef->type);
item.src = src;
- item.dst = dst;
- item.srcEdge = srcEdge;
+ item.dst = dst;
+ item.srcEdge = srcEdge;
item.dstEdge = dstEdge;
item.spacingType = spacing.mType;
item.spacingVal = spacing.mValue;
item.spacingText = spacing.mString;
item.spacer = spacer;
-
+
mLayoutDef->meshItems.append(item);
return true;
--- a/src/hbcore/utils/hbwidgetloaderactions_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/utils/hbwidgetloaderactions_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -30,7 +30,7 @@
#include <hbglobal.h>
#include <hbwidget.h>
#include <hbstring_p.h>
-#include <hbmeshlayout_p.h>
+#include <hbanchorlayout.h>
#include <hbmemorymanager_p.h>
#include "hbwidgetloader_p.h"
#include "hbwidgetloaderactions_p.h"
@@ -41,9 +41,9 @@
// Uncomment the following in order to get additional debug prints
//#define HB_DOCUMENTLOADER_DEBUG
-
+
#ifndef HB_DOCUMENTLOADER_DEBUG
-#define HB_DOCUMENTLOADER_PRINT(a)
+#define HB_DOCUMENTLOADER_PRINT(a)
#else
#include <QDebug>
#define HB_DOCUMENTLOADER_PRINT(a) qDebug() << QString(a);
@@ -58,7 +58,7 @@
void setWidget( HbWidget *widget );
#ifndef HB_BIN_CSS
bool createMeshLayout( const QString &widget );
- bool addMeshLayoutEdge( const QString &src, Hb::Edge srcEdge,
+ bool addMeshLayoutEdge( const QString &src, Hb::Edge srcEdge,
const QString &dst, Hb::Edge dstEdge,
const HbXmlLengthValue &spacing, const QString &spacer = QString() );
#endif
@@ -68,7 +68,7 @@
HbWidget *mWidget;
private:
- HbMeshLayout *mLayout;
+ HbAnchorLayout *mLayout;
};
class HbWidgetLoaderMemoryActions : public HbXmlLoaderAbstractActions
@@ -77,7 +77,7 @@
HbWidgetLoaderMemoryActions();
virtual ~HbWidgetLoaderMemoryActions();
bool createMeshLayout( const QString &widget );
- bool addMeshLayoutEdge( const QString &src, Hb::Edge srcEdge,
+ bool addMeshLayoutEdge( const QString &src, Hb::Edge srcEdge,
const QString &dst, Hb::Edge dstEdge,
const HbXmlLengthValue &spacing, const QString &spacer = QString() );
--- a/src/hbcore/utils/hbxmlloaderabstractsyntax_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/utils/hbxmlloaderabstractsyntax_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -130,8 +130,10 @@
"anchoritem", // AL_ANCHOR
"src", // AL_SRC_NAME
+ "srcId", // AL_SRC_ID
"srcEdge", // AL_SRC_EDGE
"dst", // AL_DST_NAME
+ "dstId", // AL_DST_ID
"dstEdge", // AL_DST_EDGE
"spacing", // AL_SPACING
"spacer", // AL_SPACER
--- a/src/hbcore/utils/hbxmlloaderabstractsyntax_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/utils/hbxmlloaderabstractsyntax_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -258,8 +258,10 @@
AL_ANCHOR,
AL_SRC_NAME,
+ AL_SRC_ID,
AL_SRC_EDGE,
AL_DST_NAME,
+ AL_DST_ID,
AL_DST_EDGE,
AL_SPACING,
AL_SPACER,
--- a/src/hbcore/utils/hbxmlloaderbaseactions_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/utils/hbxmlloaderbaseactions_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -57,11 +57,11 @@
QList<QObject *> result;
while (objects.size()) {
ObjectMapItem item = objects.takeLast();
- if (item.first.data()) {
- result.append(item.first.data());
+ if (item.mObject.data()) {
+ result.append(item.mObject.data());
}
}
-
+ mTopObjectMap.clear();
return result;
}
@@ -70,9 +70,9 @@
{
QGraphicsWidget *result = 0;
- ObjectMap::iterator it = mObjectMap.find(name);
- if (it != mObjectMap.end() && it.value().second == HbXml::WIDGET ) {
- result = static_cast<QGraphicsWidget *>(it.value().first.data());
+ ObjectMap::const_iterator it = mObjectMap.find(name);
+ if (it != mObjectMap.end() && it.value().mType == HbXml::WIDGET ) {
+ result = static_cast<QGraphicsWidget *>(it.value().mObject.data());
}
return result;
@@ -82,7 +82,7 @@
QObject* HbXmlLoaderBaseActions::findObject( const QString &name )
{
if( mObjectMap.contains(name) ) {
- return mObjectMap.value(name).first.data();
+ return mObjectMap.value(name).mObject.data();
}
return 0;
}
@@ -141,20 +141,22 @@
mStack.clear();
// Create mTopObjectMap
- for (ObjectMap::const_iterator it = mObjectMap.constBegin();
- it != mObjectMap.constEnd();
- ++it ) {
- QObject *object = it.value().first.data();
-
- if (object && it.value().second == HbXml::WIDGET) {
- QGraphicsWidget *asWidget = static_cast<QGraphicsWidget *>(object);
- if (!asWidget->parentItem() && !asWidget->parent()) {
+ for (ObjectMap::iterator it = mObjectMap.begin();
+ it != mObjectMap.end();
+ ++it ) {
+ QObject *object = it.value().mObject.data();
+ if ( it.value().mOwned ) {
+ if (object && it.value().mType == HbXml::WIDGET) {
+ QGraphicsWidget *asWidget = static_cast<QGraphicsWidget *>(object);
+ if (!asWidget->parentItem() && !asWidget->parent()) {
+ mTopObjectMap.insert(it.key(), it.value());
+ }
+ } else if (object && !object->parent()) {
mTopObjectMap.insert(it.key(), it.value());
+ } else {
+ // not added - owned by another object.
}
- } else if (object && !object->parent()) {
- mTopObjectMap.insert(it.key(), it.value());
- } else {
- // not added - owned by another object.
+ it.value().mOwned = false;
}
}
}
@@ -173,39 +175,39 @@
const bool nameNotEmpty = name.size() != 0;
bool doLookUp = true;
ObjectMapItem current;
- current.first = 0;
- current.second = HbXml::OBJECT;
+ current.mObject = 0;
+ current.mType = HbXml::OBJECT;
if (nameNotEmpty) {
- ObjectMap::iterator it = mObjectMap.find(name);
+ ObjectMap::const_iterator it = mObjectMap.find(name);
if (it != mObjectMap.end()) {
current = it.value();
- if (!current.first) {
+ if (!current.mObject) {
mObjectMap.remove(name);
}
// CHECK DISABLED FOR NOW.
/*
- if (current.first && !type.isEmpty()) {
+ if (current.mObject && !type.isEmpty()) {
const QByteArray array = type.toUtf8();
- if (!current.first->inherits(array.data())) {
+ if (!current.mObject->inherits(array.data())) {
HB_DOCUMENTLOADER_PRINT( QString( "Existing object requested with invalid type" ) );
// We have object already in mObjectMap, but it does not fulfill
// all needs. So object look up has failed.
doLookUp = false;
- current.first = 0;
+ current.mObject = 0;
}
}
*/
}
}
- if (doLookUp && !current.first) {
+ if (doLookUp && !current.mObject) {
QObject *obj = createObject(type, name, plugin);
if (obj) {
- current.first = obj;
- current.second = qobject_cast<QGraphicsWidget*>(obj) ? HbXml::WIDGET : HbXml::OBJECT;
+ current.mObject = obj;
+ current.mType = qobject_cast<QGraphicsWidget*>(obj) ? HbXml::WIDGET : HbXml::OBJECT;
}
if (nameNotEmpty) {
mObjectMap.insert(name, current);
@@ -266,32 +268,23 @@
bool HbXmlLoaderBaseActions::setObjectTree( QList<QObject *> roots )
{
reset();
-
- for( int i = 0; i < roots.size(); i++ ) {
- QObject *obj = roots.at(i);
- ObjectMapItem item;
- item.first = obj;
- item.second = qobject_cast<QGraphicsWidget*>(obj) ? HbXml::WIDGET : HbXml::OBJECT;
- mTopObjectMap.insert( roots.at(i)->objectName(), item );
- }
-
addToObjectMap( roots );
-
return true;
}
void HbXmlLoaderBaseActions::addToObjectMap( QList<QObject *> objects )
{
- for( int i = 0; i < objects.size(); i++ ) {
+ for ( int i = 0; i < objects.size(); i++ ) {
QObject *obj = objects.at(i);
QGraphicsWidget *widget = qobject_cast<QGraphicsWidget*>(obj);
ObjectMapItem item;
- item.first = obj;
- item.second = widget ? HbXml::WIDGET : HbXml::OBJECT;
+ item.mObject = obj;
+ item.mType = widget ? HbXml::WIDGET : HbXml::OBJECT;
+ item.mOwned = false;
mObjectMap.insert( obj->objectName(), item );
- if( widget ) {
+ if ( widget ) {
addToObjectMap( widget->childItems() );
} else {
addToObjectMap( obj->children() );
@@ -301,12 +294,13 @@
void HbXmlLoaderBaseActions::addToObjectMap( QList<QGraphicsItem *> objects )
{
- for( int i = 0; i < objects.size(); i++ ) {
- if( objects.at(i)->isWidget() ) {
+ for ( int i = 0; i < objects.size(); i++ ) {
+ if ( objects.at(i)->isWidget() ) {
QGraphicsWidget *widget = static_cast<QGraphicsWidget *>( objects.at(i) );
ObjectMapItem item;
- item.first = widget;
- item.second = HbXml::WIDGET;
+ item.mObject = widget;
+ item.mType = HbXml::WIDGET;
+ item.mOwned = false;
mObjectMap.insert( widget->objectName(), item );
addToObjectMap( widget->childItems() );
}
--- a/src/hbcore/utils/hbxmlloaderbaseactions_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/utils/hbxmlloaderbaseactions_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -54,7 +54,14 @@
{
public:
- typedef QPair<QPointer<QObject>, HbXml::ElementType> ObjectMapItem;
+ struct ObjectMapItem
+ {
+ ObjectMapItem() : mObject(0), mType(HbXml::UNKNOWN), mOwned(true) {};
+
+ QPointer<QObject> mObject;
+ HbXml::ElementType mType;
+ bool mOwned;
+ };
typedef QMap<QString, ObjectMapItem> ObjectMap;
public:
--- a/src/hbcore/utils/hbxmlloaderbasesyntax_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/utils/hbxmlloaderbasesyntax_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -40,6 +40,7 @@
HbXmlLoaderBaseSyntax::~HbXmlLoaderBaseSyntax()
{
+ qDeleteAll(mCurrentContainer);
}
bool HbXmlLoaderBaseSyntax::load( QIODevice *device, const QString §ion )
@@ -309,8 +310,9 @@
{
HB_DOCUMENTLOADER_PRINT( "TOP_STATE ERROR" );
result = false;
- mTopState = TS_EXIT;
+ mActions->cleanUp();
mActions->deleteAll();
+ exit = true;
break;
}
case TS_EXIT:
@@ -386,15 +388,15 @@
return false;
}
- HB_DOCUMENTLOADER_PRINT( QString( "READ ALIEN SECTION: LEAVING SECTION " ) + ''' + mCurrentSection.join(' ') + ''' );
+ HB_DOCUMENTLOADER_PRINT( QString( "READ ALIEN SECTION: LEAVING SECTION " ) + "'" + mCurrentSection.join(" ") + "'" );
mCurrentSection << name;
- HB_DOCUMENTLOADER_PRINT( QString("READ ALIEN SECTION: ENTERING SECTION " ) + ''' + mCurrentSection.join(' ') + ''' );
+ HB_DOCUMENTLOADER_PRINT( QString("READ ALIEN SECTION: ENTERING SECTION " ) + "'" + mCurrentSection.join(" ") + "'" );
} else if( mCurrentTokenType == QXmlStreamReader::EndElement ) {
- HB_DOCUMENTLOADER_PRINT( QString( "READ ALIEN SECTION: LEAVING SECTION " ) + ''' + mCurrentSection.join(' ') + ''' );
+ HB_DOCUMENTLOADER_PRINT( QString( "READ ALIEN SECTION: LEAVING SECTION " ) + "'" + mCurrentSection.join(" ") + "'" );
mCurrentSection.removeLast();
- HB_DOCUMENTLOADER_PRINT( QString( "READ ALIEN SECTION: ENTERING SECTION " ) + ''' + mCurrentSection.join(' ') + ''' );
+ HB_DOCUMENTLOADER_PRINT( QString( "READ ALIEN SECTION: ENTERING SECTION " ) + "'" + mCurrentSection.join(" ") + "'" );
} else {
@@ -527,9 +529,9 @@
break;
}
- HB_DOCUMENTLOADER_PRINT( QString( "GENERAL START ITEM: LEAVING SECTION " ) + ''' + mCurrentSection.join(' ') + ''' );
+ HB_DOCUMENTLOADER_PRINT( QString( "GENERAL START ITEM: LEAVING SECTION " ) + "'" + mCurrentSection.join(" ") + "'" );
mCurrentSection << name;
- HB_DOCUMENTLOADER_PRINT( QString( "GENERAL START ITEM: ENTERING SECTION " ) + ''' + mCurrentSection.join(' ') + ''' );
+ HB_DOCUMENTLOADER_PRINT( QString( "GENERAL START ITEM: ENTERING SECTION " ) + "'" + mCurrentSection.join(" ") + "'" );
result = true;
break;
@@ -566,9 +568,9 @@
{
HB_DOCUMENTLOADER_PRINT( "GENERAL END ITEM: SECTION" );
- HB_DOCUMENTLOADER_PRINT( QString( "GENERAL END ITEM: LEAVING SECTION " ) + ''' + mCurrentSection.join(' ') + ''' );
+ HB_DOCUMENTLOADER_PRINT( QString( "GENERAL END ITEM: LEAVING SECTION " ) + "'" + mCurrentSection.join(" ") + "'" );
mCurrentSection.removeLast();
- HB_DOCUMENTLOADER_PRINT( QString( "GENERAL END ITEM: ENTERING SECTION " ) + ''' + mCurrentSection.join(' ') + ''' );
+ HB_DOCUMENTLOADER_PRINT( QString( "GENERAL END ITEM: ENTERING SECTION " ) + "'" + mCurrentSection.join(" ") + "'" );
result = true;
break;
--- a/src/hbcore/utils/hbxmlloaderbinarysyntax_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/utils/hbxmlloaderbinarysyntax_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -287,7 +287,7 @@
HbXmlVariable buffer;
mIn >> propertyName >> buffer;
bool res = mActions->pushProperty(propertyName, buffer);
- delete propertyName;
+ delete[] propertyName;
return res;
}
@@ -310,10 +310,10 @@
container.append(variable);
}
-
bool res = mActions->pushContainer(propertyName, (HbXmlLoaderAbstractSyntax::DocumentLexems)type, container);
- delete propertyName;
+ delete[] propertyName;
+ qDeleteAll(container);
return res;
}
--- a/src/hbcore/utils/utils.pri Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/utils/utils.pri Wed Jun 23 18:33:25 2010 +0300
@@ -31,13 +31,14 @@
PUBLIC_HEADERS += $$PWD/hbdeviceprofile.h
PUBLIC_HEADERS += $$PWD/hbsmileytheme.h
+RESTRICTED_HEADERS += $$PWD/hbfeaturemanager_r.h
+
PRIVATE_HEADERS += $$PWD/hbdeviceprofile_p.h
PRIVATE_HEADERS += $$PWD/hbtypefaceinfo_p.h
PRIVATE_HEADERS += $$PWD/hbtypefaceinfodatabase_p.h
PRIVATE_HEADERS += $$PWD/hbdeviceprofiledatabase_p.h
PRIVATE_HEADERS += $$PWD/hbdeviceprofilemanager_p.h
PRIVATE_HEADERS += $$PWD/hbdeviceprofilereader_p.h
-PRIVATE_HEADERS += $$PWD/hbextendeddeviceprofile_p.h
PRIVATE_HEADERS += $$PWD/hbiniparser_p.h
PRIVATE_HEADERS += $$PWD/hbtextmeasurementutility_p.h
PRIVATE_HEADERS += $$PWD/hbthetestwidget_p.h
@@ -50,11 +51,9 @@
PRIVATE_HEADERS += $$PWD/hbwidgetloader_p.h
PRIVATE_HEADERS += $$PWD/hbforegroundwatcher_p.h
PRIVATE_HEADERS += $$PWD/hboogmwatcher_p.h
-PRIVATE_HEADERS += $$PWD/hbfeaturemanager_p.h
PRIVATE_HEADERS += $$PWD/hbsleepmodelistener_p.h
PRIVATE_HEADERS += $$PWD/hbsleepmodelistener_p_p.h
-
symbian {
PRIVATE_HEADERS += $$PWD/hboogmwatcher_sym_p.h
} else {
@@ -77,7 +76,6 @@
SOURCES += $$PWD/hbdeviceprofiledatabase_p.cpp
SOURCES += $$PWD/hbdeviceprofilemanager_p.cpp
SOURCES += $$PWD/hbdeviceprofilereader_p.cpp
-SOURCES += $$PWD/hbextendeddeviceprofile_p.cpp
SOURCES += $$PWD/hbfontspec.cpp
SOURCES += $$PWD/hbiniparser.cpp
SOURCES += $$PWD/hbtextmeasurementutility_p.cpp
@@ -108,6 +106,6 @@
SOURCES += $$PWD/hbtimer.cpp
SOURCES += $$PWD/hbsmileytheme.cpp
SOURCES += $$PWD/hbsmileythemeparser_p.cpp
-SOURCES += $$PWD/hbfeaturemanager_p.cpp
+SOURCES += $$PWD/hbfeaturemanager.cpp
SOURCES += $$PWD/hbsleepmodelistener_p.cpp
--- a/src/hbcore/vkbhosts/hbabstractvkbhost.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/vkbhosts/hbabstractvkbhost.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -44,9 +44,13 @@
const qreal HbHeightVerticalFactor = 0.5;
const qreal HbHeightHorizFactor = 0.7;
const QString KHandWritingName("Handwriting");
+// see hbpopup.cpp for this
+extern const char* KPositionManagedByVKB;
+
+/// @cond
HbVkbHostContainerWidget::HbVkbHostContainerWidget(QObject *containterWidget)
-:mContainerWidget(containterWidget)
+ : mContainerWidget(containterWidget)
{
}
@@ -63,11 +67,11 @@
QWidget *qWidget = qobject_cast<QWidget *>(mContainerWidget);
if (qWidget) {
#ifdef Q_WS_WIN
- QPoint finalPosition = newPosition.toPoint();
- finalPosition -= qWidget->geometry().topLeft() - qWidget->frameGeometry().topLeft();
- qWidget->move(finalPosition);
-#else
- qWidget->move(newPosition.toPoint());
+ QPoint finalPosition = newPosition.toPoint();
+ finalPosition -= qWidget->geometry().topLeft() - qWidget->frameGeometry().topLeft();
+ qWidget->move(finalPosition);
+#else
+ qWidget->move(newPosition.toPoint());
#endif
return;
}
@@ -82,11 +86,11 @@
QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject *>(mContainerWidget);
if (graphicsObject) {
return graphicsObject->pos();;
- }
+ }
QWidget *qWidget = qobject_cast<QWidget *>(mContainerWidget);
if (qWidget) {
- return qWidget->mapToGlobal(QPoint(0,0));
+ return qWidget->mapToGlobal(QPoint(0, 0));
}
}
@@ -101,11 +105,11 @@
QGraphicsObject *graphicsObject = qobject_cast<QGraphicsObject *>(mContainerWidget);
if (graphicsObject) {
return graphicsObject->sceneBoundingRect();;
- }
+ }
QWidget *qWidget = qobject_cast<QWidget *>(mContainerWidget);
if (qWidget) {
- return QRectF(qWidget->mapToGlobal(QPoint(0,0)), qWidget->size());
+ return QRectF(qWidget->mapToGlobal(QPoint(0, 0)), qWidget->size());
}
}
@@ -113,45 +117,47 @@
}
// connect container specific signals here.
-void HbVkbHostContainerWidget::connectSignals(QObject *reciever)
+void HbVkbHostContainerWidget::connectSignals(QObject *receiver)
{
- if (qobject_cast<QGraphicsObject*> (mContainerWidget)) {
- QObject::connect(mContainerWidget, SIGNAL(yChanged())
- , reciever, SLOT(ensureCursorVisibility()));
+ if (qobject_cast<QGraphicsObject *> (mContainerWidget)) {
+ QObject::connect(mContainerWidget, SIGNAL(yChanged()),
+ receiver, SLOT(ensureCursorVisibility()));
}
- HbPopup *popup = qobject_cast<HbPopup*>(mContainerWidget);
+ HbPopup *popup = qobject_cast<HbPopup *>(mContainerWidget);
if (popup) {
- QObject::connect(popup, SIGNAL(aboutToHide()), reciever, SLOT(containerAboutToClose()));
+ QObject::connect(popup, SIGNAL(aboutToHide()), receiver, SLOT(containerAboutToClose()));
}
- HbView *view = qobject_cast<HbView*>(mContainerWidget);
+ HbView *view = qobject_cast<HbView *>(mContainerWidget);
if (view) {
- QObject::connect(view->mainWindow(), SIGNAL(currentViewChanged(HbView *))
- , reciever, SLOT(currentViewChanged(HbView *)));
+ QObject::connect(view->mainWindow(), SIGNAL(currentViewChanged(HbView *)),
+ receiver, SLOT(currentViewChanged(HbView *)));
}
}
// disconnect container specific signals here.
-void HbVkbHostContainerWidget::disconnectSignals(QObject *reciever)
+void HbVkbHostContainerWidget::disconnectSignals(QObject *receiver)
{
- if (qobject_cast<QGraphicsObject*> (mContainerWidget)) {
- QObject::disconnect(mContainerWidget, SIGNAL(yChanged())
- , reciever, SLOT(ensureCursorVisibility()));
+ if (qobject_cast<QGraphicsObject *> (mContainerWidget)) {
+ QObject::disconnect(mContainerWidget, SIGNAL(yChanged()),
+ receiver, SLOT(ensureCursorVisibility()));
}
- HbPopup *popup = qobject_cast<HbPopup*>(mContainerWidget);
+ HbPopup *popup = qobject_cast<HbPopup *>(mContainerWidget);
if (popup) {
- QObject::disconnect(popup, SIGNAL(aboutToHide()), reciever, SLOT(containerAboutToClose()));
+ QObject::disconnect(popup, SIGNAL(aboutToHide()), receiver, SLOT(containerAboutToClose()));
}
-
- HbPopup *view = qobject_cast<HbPopup*>(mContainerWidget);
+
+ HbPopup *view = qobject_cast<HbPopup *>(mContainerWidget);
if (view) {
- QObject::disconnect(view->mainWindow(), SIGNAL(currentViewChanged(HbView *))
- , reciever, SLOT(currentViewChanged(HbView *)));
+ QObject::disconnect(view->mainWindow(), SIGNAL(currentViewChanged(HbView *)),
+ receiver, SLOT(currentViewChanged(HbView *)));
}
}
+/// @endcond
+
/*!
\proto
\class HbAbstractVkbHost
@@ -163,20 +169,20 @@
/// @cond
HbAbstractVkbHostPrivate::HbAbstractVkbHostPrivate(HbAbstractVkbHost *myHost, QObject *containerWidget)
-: q_ptr(myHost),
-mCallback(0),
-mKeypad(0),
-mContainerWidget(new HbVkbHostContainerWidget(containerWidget)),
-mTimeLine(HbAnimationTime),
-mKeypadStatus(HbVkbHost::HbVkbStatusClosed),
-mKeypadOperationOngoing(false),
-mOriginalContainerPosition(QPointF(0,0)),
-mContainerMovementStartingPoint(QPointF(0, 0)),
-mContainerMovementVector(QPointF(0, 0)),
-mKeypadMovementStartingPoint(QPointF(0, 0)),
-mKeypadMovementVector(QPointF(0, 0)),
-mInputMethod(0),
-mKeypadStatusBeforeOrientationChange(HbVkbHost::HbVkbStatusClosed)
+ : q_ptr(myHost),
+ mCallback(0),
+ mKeypad(0),
+ mContainerWidget(new HbVkbHostContainerWidget(containerWidget)),
+ mTimeLine(HbAnimationTime),
+ mKeypadStatus(HbVkbHost::HbVkbStatusClosed),
+ mKeypadOperationOngoing(false),
+ mOriginalContainerPosition(QPointF(0, 0)),
+ mContainerMovementStartingPoint(QPointF(0, 0)),
+ mContainerMovementVector(QPointF(0, 0)),
+ mKeypadMovementStartingPoint(QPointF(0, 0)),
+ mKeypadMovementVector(QPointF(0, 0)),
+ mInputMethod(0),
+ mKeypadStatusBeforeOrientationChange(HbVkbHost::HbVkbStatusClosed)
{
mTimeLine.setUpdateInterval(16);
}
@@ -305,18 +311,18 @@
{
if (status == HbVkbHost::HbVkbStatusOpened) {
if (mKeypadStatus == HbVkbHost::HbVkbStatusClosed) {
- // Set up keyboard open animation.
- mKeypadMovementStartingPoint.setY(mScreenSize.height());
- mKeypadMovementVector.setY(-mKeypad->size().height());
- if (!disableCursorShift()) {
- // Initialize keypad position
- mKeypad->setPos(mKeypadMovementStartingPoint);
- }
- return true;
- } else if (mKeypadStatus == HbVkbHost::HbVkbStatusMinimized && mCallback) {
- mKeypadMovementVector.setY(-(mKeypad->size().height() - mCallback->minimizedKeyboardSize().height()));
- return true;
- }
+ // Set up keyboard open animation.
+ mKeypadMovementStartingPoint.setY(mScreenSize.height());
+ mKeypadMovementVector.setY(-mKeypad->size().height());
+ if (!disableCursorShift()) {
+ // Initialize keypad position
+ mKeypad->setPos(mKeypadMovementStartingPoint);
+ }
+ return true;
+ } else if (mKeypadStatus == HbVkbHost::HbVkbStatusMinimized && mCallback) {
+ mKeypadMovementVector.setY(-(mKeypad->size().height() - mCallback->minimizedKeyboardSize().height()));
+ return true;
+ }
} else if (status == HbVkbHost::HbVkbStatusMinimized && mCallback) {
mKeypadMovementVector = QPointF(0, mKeypad->size().height() - mCallback->minimizedKeyboardSize().height());
return true;
@@ -352,11 +358,11 @@
mContainerWidget->connectSignals(q_ptr);
// global signal not specific to any containter widget, can be connected now.
- HbMainWindow* mainWindow = this->mainWindow();
+ HbMainWindow *mainWindow = this->mainWindow();
if (mainWindow) {
q_ptr->connect(mainWindow, SIGNAL(aboutToChangeOrientation()), q_ptr, SLOT(orientationAboutToChange()));
q_ptr->connect(mainWindow, SIGNAL(orientationChanged(Qt::Orientation)), q_ptr, SLOT(orientationChanged(Qt::Orientation)));
- q_ptr->connect(mainWindow, SIGNAL(currentViewChanged(HbView*)), q_ptr, SLOT(currentViewChanged(HbView*)));
+ q_ptr->connect(mainWindow, SIGNAL(currentViewChanged(HbView *)), q_ptr, SLOT(currentViewChanged(HbView *)));
}
}
@@ -365,18 +371,18 @@
mContainerWidget->disconnectSignals(q_ptr);
// global signal not specific to any containter widget, can be connected now.
- HbMainWindow* mainWindow = this->mainWindow();
+ HbMainWindow *mainWindow = this->mainWindow();
if (mainWindow) {
q_ptr->disconnect(mainWindow, SIGNAL(aboutToChangeOrientation()), q_ptr, SLOT(orientationAboutToChange()));
q_ptr->disconnect(mainWindow, SIGNAL(orientationChanged(Qt::Orientation)), q_ptr, SLOT(orientationChanged(Qt::Orientation)));
- q_ptr->disconnect(mainWindow, SIGNAL(currentViewChanged(HbView*)), q_ptr, SLOT(currentViewChanged(HbView*)));
+ q_ptr->disconnect(mainWindow, SIGNAL(currentViewChanged(HbView *)), q_ptr, SLOT(currentViewChanged(HbView *)));
}
}
void HbAbstractVkbHostPrivate::openKeypad()
-{
+{
if (mContainerWidget->widgetObject()) {
- HbMainWindow* mainWin = mainWindow();
+ HbMainWindow *mainWin = mainWindow();
if (mainWin && mKeypad) {
if (mKeypad->scene() != mainWin->scene()) {
// Add keypad to scene if it is not already in there.
@@ -430,7 +436,7 @@
void HbAbstractVkbHostPrivate::openKeypadWithoutAnimation()
{
HbMainWindow *mainWin = mainWindow();
- if (mKeypadStatus!= HbVkbHost::HbVkbStatusOpened && mKeypad && mContainerWidget->widgetObject() && mainWin) {
+ if (mKeypadStatus != HbVkbHost::HbVkbStatusOpened && mKeypad && mContainerWidget->widgetObject() && mainWin) {
if (mKeypad->scene() != mainWin->scene()) {
// Add item to scene if it is not already in there.
mainWin->scene()->addItem(mKeypad);
@@ -444,7 +450,7 @@
if (!disableCursorShift()) {
// Move the container widget to keep the focused line visible.
mContainerWidget->setPos(mContainerWidget->pos() + mContainerMovementVector);
-
+
// Move the keypad
mKeypad->setPos(mKeypadMovementStartingPoint + mKeypadMovementVector);
}
@@ -467,11 +473,11 @@
}
if (mKeypadStatus != HbVkbHost::HbVkbStatusMinimized) {
- mCallback->aboutToOpen(q_ptr);
+ mCallback->aboutToOpen(q_ptr);
q_ptr->resizeKeyboard(); // Make sure that the keyboard doesn't exceed given boundaries.
}
- if (prepareAnimations(HbVkbHost::HbVkbStatusMinimized)) {
+ if (prepareAnimations(HbVkbHost::HbVkbStatusMinimized)) {
if (!disableCursorShift()) {
mKeypad->setPos(0.0, mScreenSize.height() - mCallback->minimizedKeyboardSize().height());
}
@@ -491,6 +497,7 @@
if (!disableCursorShift()) {
// Return the container widget to original position.
mContainerWidget->setPos(mOriginalContainerPosition);
+ mContainerWidget->widgetObject()->setProperty(KPositionManagedByVKB, false );
}
// Hide the keypad
@@ -504,7 +511,7 @@
{
HbMainWindow *mainWin = mainWindow();
if (mKeypadStatus != HbVkbHost::HbVkbStatusMinimized && mKeypad && mainWin) {
- mCallback->aboutToClose(q_ptr);
+ mCallback->aboutToClose(q_ptr);
if (mKeypad->scene() != mainWin->scene()) {
// Add item to scene if it is not already in there.
mainWin->scene()->addItem(mKeypad);
@@ -528,6 +535,7 @@
if (!disableCursorShift()) {
mContainerWidget->setPos(mOriginalContainerPosition);
+ mContainerWidget->widgetObject()->setProperty(KPositionManagedByVKB, false );
}
if (mKeypad) {
@@ -545,15 +553,16 @@
HbMainWindow *HbAbstractVkbHostPrivate::mainWindow() const
{
- HbWidget *hbWidget = qobject_cast<HbWidget*>(mContainerWidget->widgetObject());
+ HbWidget *hbWidget = qobject_cast<HbWidget *>(mContainerWidget->widgetObject());
if (hbWidget) {
return hbWidget->mainWindow();
}
// below is the case when we have a pure vanilla application.
// there should be one hbmainwindow to show all the widgets.
- if (hbInstance->allMainWindows().size())
+ if (hbInstance->allMainWindows().size()) {
return hbInstance->allMainWindows().at(0);
+ }
// no mainwindow.
return 0;
@@ -565,7 +574,7 @@
QSizeF result = static_cast<QSizeF>(HbDeviceProfile::profile(mainWin).logicalSize());
// do some sanity checking for the size got from device profile
- if( result.isNull() || result.width() < 200 || result.height() < 200 ) {
+ if (result.isNull() || result.width() < 200 || result.height() < 200) {
qWarning("VkbHost error: size from device profile is faulty, using fallback!");
if (mainWin) {
if (mainWin->orientation() == Qt::Horizontal) {
@@ -581,7 +590,8 @@
return result;
}
-bool HbAbstractVkbHostPrivate::disableCursorShift() {
+bool HbAbstractVkbHostPrivate::disableCursorShift()
+{
if (!mInputMethod
|| mainWindow()) {
@@ -683,8 +693,7 @@
/*!
\reimp
*/
-
-void HbAbstractVkbHost::openKeypad(HbVirtualKeyboard *vkb, HbInputMethod* owner, bool animationAllowed)
+void HbAbstractVkbHost::openKeypad(HbVirtualKeyboard *vkb, HbInputMethod *owner, bool animationAllowed)
{
Q_D(HbAbstractVkbHost);
@@ -701,12 +710,10 @@
if (!HbVkbHostBridge::instance()->connectHost(this)) {
// Do not set open call pending if orientation change is ongoing
- if (HbInputSettingProxy::instance()->orientationChangeCompleted()) {
- connect(HbVkbHostBridge::instance(), SIGNAL(stateTransitionCompleted()), this, SLOT(stateTransitionCompleted()));
- // The previous keyboard is still closing. Set the call pending and return.
- d->mPendingCall.vkb = vkb;
- d->mPendingCall.animationAllowed = animationAllowed;
- }
+ connect(HbVkbHostBridge::instance(), SIGNAL(stateTransitionCompleted()), this, SLOT(stateTransitionCompleted()));
+ // The previous keyboard is still closing. Set the call pending and return.
+ d->mPendingCall.vkb = vkb;
+ d->mPendingCall.animationAllowed = animationAllowed;
return;
}
@@ -728,13 +735,17 @@
emit aboutToOpen();
+ if (d->mContainerWidget && d->mContainerWidget->widgetObject()) {
+ d->mContainerWidget->widgetObject()->setProperty(KPositionManagedByVKB, true );
+ }
+
if (animationAllowed) {
d->openKeypad();
} else {
d->openKeypadWithoutAnimation();
emit keypadOpened();
}
- HbWidgetFeedback::triggered(qobject_cast<const HbWidget*>(d->mKeypad), Hb::InstantPopupOpened);
+ HbWidgetFeedback::triggered(qobject_cast<const HbWidget *>(d->mKeypad), Hb::InstantPopupOpened);
d->connectSignals();
d->mKeypadOperationOngoing = false;
@@ -775,7 +786,7 @@
if (!d->disableCursorShift()) {
// Move the container.
- if (d->mContainerWidget->widgetObject()) {
+ if (d->mContainerWidget->widgetObject()) {
d->mContainerWidget->setPos(d->mContainerMovementStartingPoint + (d->mContainerMovementVector * value));
}
@@ -811,7 +822,7 @@
if (d->mInputMethod->focusObject()) {
// This is hopefully temporary...
- QTextEdit *textEdit = qobject_cast<QTextEdit*>(d->mInputMethod->focusObject()->object());
+ QTextEdit *textEdit = qobject_cast<QTextEdit *>(d->mInputMethod->focusObject()->object());
if (textEdit) {
textEdit->ensureCursorVisible();
}
@@ -829,6 +840,7 @@
d->mKeypad->hide();
// Return the container where it was.
d->mContainerWidget->setPos(d->mOriginalContainerPosition);
+ d->mContainerWidget->widgetObject()->setProperty(KPositionManagedByVKB, false );
d->mCallback->keyboardClosed(this);
emit keypadClosed();
HbVkbHostBridge::instance()->connectHost(0);
@@ -866,7 +878,6 @@
{
Q_D(HbAbstractVkbHost);
d->mKeypadStatusBeforeOrientationChange = d->mKeypadStatus;
- HbInputSettingProxy::instance()->notifyScreenOrientationChange();
}
/*!
@@ -876,13 +887,13 @@
*/
void HbAbstractVkbHost::orientationChanged(Qt::Orientation orientation)
{
- HbInputSettingProxy::instance()->setScreenOrientation(orientation);
+ Q_UNUSED(orientation);
}
/*!
\reimp
*/
-HbVirtualKeyboard* HbAbstractVkbHost::activeKeypad() const
+HbVirtualKeyboard *HbAbstractVkbHost::activeKeypad() const
{
Q_D(const HbAbstractVkbHost);
return d->mCallback;
@@ -899,7 +910,7 @@
(d->mKeypadStatus == HbVkbStatusClosed) ||
(d->mKeypadStatus == HbVkbStatusMinimized) ||
!d->mContainerWidget->widgetObject()) {
- return;
+ return;
}
// This will refresh the situation if needed.
@@ -939,7 +950,7 @@
Q_D(const HbAbstractVkbHost);
if (d->mCallback && d->mKeypad) {
- QSizeF kbArea = keyboardArea();
+ QSizeF kbArea = keyboardArea();
QSizeF confirmed = d->mCallback->preferredKeyboardSize();
if (confirmed.width() > kbArea.width()) {
@@ -1009,7 +1020,7 @@
/*!
\reimp
*/
-void HbAbstractVkbHost::openMinimizedKeypad(HbVirtualKeyboard *vkb, HbInputMethod* owner)
+void HbAbstractVkbHost::openMinimizedKeypad(HbVirtualKeyboard *vkb, HbInputMethod *owner)
{
Q_D(HbAbstractVkbHost);
d->mInputMethod = owner;
@@ -1053,11 +1064,11 @@
Q_D(HbAbstractVkbHost);
if (view != d->mContainerWidget->widgetObject()) {
- if (d->mTimeLine.state() == QTimeLine::Running) {
+ if (d->mTimeLine.state() == QTimeLine::Running) {
d->cancelAnimationAndHideVkbWidget();
if (d->mCallback) {
d->mCallback->keyboardClosed(this);
- }
+ }
} else if (d->mKeypadStatus != HbVkbStatusClosed) {
d->closeKeypadWithoutAnimation();
emit keypadClosed();
@@ -1070,16 +1081,16 @@
*/
void HbAbstractVkbHost::refresh()
{
- Q_D(HbAbstractVkbHost);
+ Q_D(HbAbstractVkbHost);
- if (d->mKeypadStatus == HbVkbHost::HbVkbStatusOpened &&
- d->mTimeLine.state() != QTimeLine::Running) {
- d->prepareAnimationsCommon();
- if (d->prepareContainerAnimation(HbVkbHost::HbVkbStatusOpened)) {
- // Container status needs to be updated. Run the animation.
- d->mTimeLine.start();
- }
- }
+ if (d->mKeypadStatus == HbVkbHost::HbVkbStatusOpened &&
+ d->mTimeLine.state() != QTimeLine::Running) {
+ d->prepareAnimationsCommon();
+ if (d->prepareContainerAnimation(HbVkbHost::HbVkbStatusOpened)) {
+ // Container status needs to be updated. Run the animation.
+ d->mTimeLine.start();
+ }
+ }
}
/*!
@@ -1087,8 +1098,8 @@
*/
bool HbAbstractVkbHost::stateTransitionOngoing() const
{
- Q_D(const HbAbstractVkbHost);
- return (d->mTimeLine.state() == QTimeLine::Running);
+ Q_D(const HbAbstractVkbHost);
+ return (d->mTimeLine.state() == QTimeLine::Running);
}
/*!
--- a/src/hbcore/vkbhosts/hbabstractvkbhost.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/vkbhosts/hbabstractvkbhost.h Wed Jun 23 18:33:25 2010 +0300
@@ -41,20 +41,20 @@
Q_OBJECT
public:
- HbAbstractVkbHost(HbWidget* containerWidget);
- HbAbstractVkbHost(QWidget* containerWidget);
- HbAbstractVkbHost(QGraphicsWidget* containerWidget);
- HbAbstractVkbHost(QGraphicsObject* containerWidget);
+ HbAbstractVkbHost(HbWidget *containerWidget);
+ HbAbstractVkbHost(QWidget *containerWidget);
+ HbAbstractVkbHost(QGraphicsWidget *containerWidget);
+ HbAbstractVkbHost(QGraphicsObject *containerWidget);
~HbAbstractVkbHost();
public: // From HbVkbHost
- void openKeypad(HbVirtualKeyboard *vkb = 0, HbInputMethod* owner = 0, bool animationAllowed = true);
- void openMinimizedKeypad(HbVirtualKeyboard *vkb, HbInputMethod* owner);
+ void openKeypad(HbVirtualKeyboard *vkb = 0, HbInputMethod *owner = 0, bool animationAllowed = true);
+ void openMinimizedKeypad(HbVirtualKeyboard *vkb, HbInputMethod *owner);
void closeKeypad(bool animationAllowed = true);
void minimizeKeypad(bool animationAllowed = true);
- HbVkbStatus keypadStatus() const;
+ HbVkbStatus keypadStatus() const;
HbVirtualKeyboard *activeKeypad() const;
- QRectF applicationArea() const;
+ QRectF applicationArea() const;
QSizeF keyboardArea() const;
HbVkbStatus keypadStatusBeforeOrientationChange() const;
@@ -72,8 +72,8 @@
virtual void orientationAboutToChange();
virtual void orientationChanged(Qt::Orientation orientation);
virtual void animValueChanged(qreal aValue);
- virtual void animationFinished();
- virtual void currentViewChanged(HbView*);
+ virtual void animationFinished();
+ virtual void currentViewChanged(HbView *);
virtual void stateTransitionCompleted();
protected:
@@ -81,7 +81,7 @@
HbAbstractVkbHost(HbAbstractVkbHostPrivate *dd);
protected:
- HbAbstractVkbHostPrivate* const d_ptr;
+ HbAbstractVkbHostPrivate *const d_ptr;
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbAbstractVkbHost)
--- a/src/hbcore/vkbhosts/hbabstractvkbhost_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/vkbhosts/hbabstractvkbhost_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -45,18 +45,20 @@
};
-// This class is to handle all the specific widget actions in an ,
+// This class is to handle all the specific widget actions in an,
// abstract way, put all such widget specific code in below class.
class HbVkbHostContainerWidget
{
- public:
+public:
HbVkbHostContainerWidget(QObject *containterWidget);
void setPos(QPointF newPosition);
QPointF pos();
QRectF sceneBoundingRect();
- QObject *widgetObject() {return mContainerWidget;}
- void connectSignals(QObject *reciever);
- void disconnectSignals(QObject *reciever);
+ QObject *widgetObject() {
+ return mContainerWidget;
+ }
+ void connectSignals(QObject *receiver);
+ void disconnectSignals(QObject *receiver);
private:
QPointer<QObject> mContainerWidget;
};
@@ -90,7 +92,7 @@
public:
HbAbstractVkbHost *q_ptr;
- HbVirtualKeyboard *mCallback;
+ HbVirtualKeyboard *mCallback;
QPointer<QGraphicsWidget> mKeypad;
HbVkbHostContainerWidget *mContainerWidget;
QSizeF mScreenSize;
--- a/src/hbcore/vkbhosts/hbshrinkingvkbhost.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/vkbhosts/hbshrinkingvkbhost.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -67,7 +67,7 @@
};
HbShrinkingVkbHostPrivate::HbShrinkingVkbHostPrivate(HbAbstractVkbHost *myHost, HbWidget *widget)
-: HbAbstractVkbHostPrivate(myHost, widget)
+ : HbAbstractVkbHostPrivate(myHost, widget)
{
}
@@ -80,13 +80,13 @@
}
void HbShrinkingVkbHostPrivate::closeKeypad()
-{
+{
resetViewSize();
HbAbstractVkbHostPrivate::closeKeypad();
}
void HbShrinkingVkbHostPrivate::closeKeypadWithoutAnimation()
-{
+{
resetViewSize();
HbAbstractVkbHostPrivate::closeKeypadWithoutAnimation();
}
@@ -104,7 +104,7 @@
}
void HbShrinkingVkbHostPrivate::resetViewSize()
-{
+{
HbMainWindow *mainWin = mainWindow();
if (mainWin && mContainerOriginalSize.isValid()) {
HbMainWindowPrivate::d_ptr(mainWin)->setViewportSize(mContainerOriginalSize);
@@ -131,8 +131,8 @@
Constructs the object.
*/
HbShrinkingVkbHost::HbShrinkingVkbHost(HbWidget *widget) : HbAbstractVkbHost(new HbShrinkingVkbHostPrivate(this, widget))
-{
- setParent(widget);
+{
+ setParent(widget);
}
/*!
@@ -146,7 +146,7 @@
\reimp
*/
int HbShrinkingVkbHost::priority() const
-{
+{
return 0;
}
--- a/src/hbcore/vkbhosts/hbstaticvkbhost.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbcore/vkbhosts/hbstaticvkbhost.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -36,7 +36,7 @@
\class HbStaticVkbHost
\brief Static virtual keyboard host
-The virtual keyboard host takes care of keyboard animations.
+The virtual keyboard host takes care of keyboard animations.
This version, unlike other vkb host implementations, only brings up the virtual keyboard but does not
move the underlying view or reposition the editor in case it is fully or partially covered by the virtual
keyboard. In other words, it does not gurantee that the editor cursor remains visible.
@@ -59,7 +59,7 @@
};
HbStaticVkbHostPrivate::HbStaticVkbHostPrivate(HbAbstractVkbHost *myHost, HbWidget *widget)
-: HbAbstractVkbHostPrivate(myHost, widget)
+ : HbAbstractVkbHostPrivate(myHost, widget)
{
}
@@ -77,8 +77,8 @@
Constructs the object.
*/
HbStaticVkbHost::HbStaticVkbHost(HbWidget *widget) : HbAbstractVkbHost(new HbStaticVkbHostPrivate(this, widget))
-{
- setParent(widget);
+{
+ setParent(widget);
}
/*!
--- a/src/hbfeedback/player/hbfeedbackplayer_symbian.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbfeedback/player/hbfeedbackplayer_symbian.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -204,8 +204,13 @@
break;
case HbFeedback::ItemPick:
instantFeedbackSymbian = ETouchFeedbackItemPick;
+ break;
case HbFeedback::LongPress:
+#ifdef HB_TOUCHFEEDBACK_TYPE_IS_LONGPRESS
+ instantFeedbackSymbian = ETouchFeedbackLongPress;
+#else
instantFeedbackSymbian = ETouchFeedbackLongTap;
+#endif
break;
default:
break;
--- a/src/hbinput/inputwidgets/hbinputbutton.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputbutton.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -51,8 +51,8 @@
};
HbInputButtonPrivate::HbInputButtonPrivate()
- : mType(HbInputButton::ButtonTypeNormal), mState(HbInputButton::ButtonStateReleased),
- mPosition(0, 0), mSize(1, 1), mKeyCode(-1), mAutoRepeat(false)
+ : mType(HbInputButton::ButtonTypeNormal), mState(HbInputButton::ButtonStateReleased),
+ mPosition(0, 0), mSize(1, 1), mKeyCode(-1), mAutoRepeat(false)
{
for (int i = 0; i < HbInputButton::ButtonTextIndexCount; ++i) {
mTexts.append("");
@@ -64,8 +64,8 @@
}
HbInputButtonPrivate::HbInputButtonPrivate(int keyCode, const QPoint &position, const QSize &size)
- : mType(HbInputButton::ButtonTypeNormal), mState(HbInputButton::ButtonStateReleased),
- mPosition(position), mSize(size), mKeyCode(keyCode), mAutoRepeat(false)
+ : mType(HbInputButton::ButtonTypeNormal), mState(HbInputButton::ButtonStateReleased),
+ mPosition(position), mSize(size), mKeyCode(keyCode), mAutoRepeat(false)
{
for (int i = 0; i < HbInputButton::ButtonTextIndexCount; ++i) {
mTexts.append("");
@@ -94,10 +94,10 @@
}
HbInputButtonPrivate::HbInputButtonPrivate(HbInputButton::HbInputButtonType type, HbInputButton::HbInputButtonState state,
- const QPoint &position, const QSize &size, int keyCode, bool autoRepeat,
- const QList<QString> &texts, const QString &mappedCharacters, const QList<HbIcon> &icons)
- : mType(type), mState(state), mPosition(position), mSize(size), mKeyCode(keyCode), mAutoRepeat(autoRepeat),
- mMappedCharacters(mappedCharacters)
+ const QPoint &position, const QSize &size, int keyCode, bool autoRepeat,
+ const QList<QString> &texts, const QString &mappedCharacters, const QList<HbIcon> &icons)
+ : mType(type), mState(state), mPosition(position), mSize(size), mKeyCode(keyCode), mAutoRepeat(autoRepeat),
+ mMappedCharacters(mappedCharacters)
{
for (int i = 0; i < HbInputButton::ButtonTextIndexCount; ++i) {
if (i < texts.count()) {
@@ -150,7 +150,7 @@
Constructor
*/
HbInputButton::HbInputButton()
- : d_ptr(new HbInputButtonPrivate)
+ : d_ptr(new HbInputButtonPrivate)
{
}
@@ -163,7 +163,7 @@
size is button's size in grid cell units.
*/
HbInputButton::HbInputButton(int keyCode, const QPoint &position, const QSize &size)
- : d_ptr(new HbInputButtonPrivate(keyCode, position, size))
+ : d_ptr(new HbInputButtonPrivate(keyCode, position, size))
{
}
@@ -357,7 +357,7 @@
if (i < texts.count()) {
d->mTexts.replace(i, texts.at(i));
} else {
- d->mTexts.replace(i, QString());
+ d->mTexts[i].clear();
}
}
}
@@ -434,7 +434,7 @@
/*!
Updates all button icons.
-Button can have three different icons. Icon position
+Button can have three different icons. Icon position
will depend of other buttons icons and texts. If list contains
more icons, then the rest will be ignored. Icon with same index
than text will override the text.
--- a/src/hbinput/inputwidgets/hbinputbutton.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputbutton.h Wed Jun 23 18:33:25 2010 +0300
@@ -87,7 +87,7 @@
ButtonTypeNormal,
ButtonTypeFunction,
ButtonTypeLabel,
- ButtonTypeCount
+ ButtonTypeCount
};
enum HbInputButtonState {
@@ -152,7 +152,7 @@
QRectF boundingRect() const;
protected:
- HbInputButtonPrivate * const d_ptr;
+ HbInputButtonPrivate *const d_ptr;
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbInputButton)
--- a/src/hbinput/inputwidgets/hbinputbuttongroup.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputbuttongroup.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,8 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputbuttongroup.h"
+#include "hbinputbuttongroup_p.h"
#include <QPainter>
#include <QTextLayout>
@@ -42,8 +44,6 @@
#include <hbinputregioncollector_p.h>
#include "hbframedrawerpool_p.h"
-#include "hbinputbuttongroup.h"
-#include "hbinputbuttongroup_p.h"
#include "hbinputbutton.h"
/// @cond
@@ -94,9 +94,9 @@
const qreal HbTouchAreaSizeInUnits = 8;
HbInputButtonGroupPrivate::HbInputButtonGroupPrivate()
- : mUnitValue(0), mGridSize(1, 1), mButtonBorderSize(1.0), mEnabled(true),
- mButtonPreviewEnabled(false), mCharacterSelectionPreviewEnabled(false),
- mMultiTouchEnabled(true), mCharacterSelectionPreview(0), mBackground(0)
+ : mUnitValue(0), mGridSize(1, 1), mButtonBorderSize(1.0), mEnabled(true),
+ mButtonPreviewEnabled(false), mCharacterSelectionPreviewEnabled(false),
+ mMultiTouchEnabled(true), mCharacterSelectionPreview(0), mBackground(0)
{
for (int i = 0; i < HbTextLayoutCount; ++i) {
mTextLayouts.append(0);
@@ -111,16 +111,16 @@
HbFrameDrawerPool::release(drawer);
}
- foreach (HbInputButton *button, mButtonData) {
+ foreach(HbInputButton *button, mButtonData) {
delete button;
}
mButtonData.clear();
- foreach (QTextLayout *layout, mTextLayouts) {
+ foreach(QTextLayout *layout, mTextLayouts) {
delete layout;
}
- foreach (QTimer *timer, mLongPressTimers) {
+ foreach(QTimer *timer, mLongPressTimers) {
delete timer;
}
@@ -309,7 +309,7 @@
}
}
-void HbInputButtonGroupPrivate::showButtonPreview(HbInputButton * const item)
+void HbInputButtonGroupPrivate::showButtonPreview(HbInputButton *const item)
{
Q_Q(HbInputButtonGroup);
@@ -319,7 +319,7 @@
HbInputButtonGroup *group = new HbInputButtonGroup(QSize(1, 1));
mButtonPreview.insert(index, group);
- QList<HbInputButton*> buttons;
+ QList<HbInputButton *> buttons;
HbInputButton *previewItem = 0;
if (!item->icon(HbInputButton::ButtonIconIndexPrimary).isNull()) {
int keyCode = -1;
@@ -340,7 +340,7 @@
qreal cellHeight = q->boundingRect().height() / mGridSize.height();
QFont font = HbFontSpec(HbFontSpec::Primary).font();
- font.setPixelSize(int(fontSize(ButtonTextTypeLabel)));
+ font.setPixelSize(int(fontSize(HbInputButtonGroup::ButtonTextTypeLabel)));
QFontMetricsF fontMetrics(font);
qreal textWidth = fontMetrics.width(item->text(HbInputButton::ButtonTextIndexPrimary));
@@ -371,7 +371,7 @@
}
}
-void HbInputButtonGroupPrivate::hideButtonPreview(HbInputButton * const item)
+void HbInputButtonGroupPrivate::hideButtonPreview(HbInputButton *const item)
{
int index = mButtonData.indexOf(item);
if (mButtonPreview.contains(index)) {
@@ -379,7 +379,7 @@
}
}
-void HbInputButtonGroupPrivate::showCharacterSelectionPreview(HbInputButton * const item)
+void HbInputButtonGroupPrivate::showCharacterSelectionPreview(HbInputButton *const item)
{
Q_Q(HbInputButtonGroup);
@@ -387,10 +387,10 @@
item->mappedCharacters().count() > 1) {
HbWidgetFeedback::triggered(q, Hb::InstantLongPressed);
-
+
mProbabilities.clear();
q->cancelButtonPress();
-
+
if (!mCharacterSelectionPreview) {
mCharacterSelectionPreview = new HbDialog();
HbInputRegionCollector::instance()->attach(mCharacterSelectionPreview);
@@ -405,17 +405,17 @@
}
HbInputButtonGroup *group = new HbInputButtonGroup(QSize(item->mappedCharacters().count(), 1));
- QObject::connect(group, SIGNAL(buttonPressed(const QKeyEvent&)), q, SLOT(emitButtonPressed(const QKeyEvent&)));
- QObject::connect(group, SIGNAL(buttonDoublePressed(const QKeyEvent&)), q, SLOT(emitButtonDoublePressed(const QKeyEvent&)));
- QObject::connect(group, SIGNAL(buttonReleased(const QKeyEvent&)), q, SLOT(emitButtonReleased(const QKeyEvent&)));
- QObject::connect(group, SIGNAL(buttonLongPressed(const QKeyEvent&)), q, SLOT(emitButtonLongPressed(const QKeyEvent&)));
- QObject::connect(group, SIGNAL(pressedButtonChanged(const QKeyEvent&, const QKeyEvent&)), q, SLOT(emitPressedButtonChanged(const QKeyEvent&, const QKeyEvent&)));
-
+ QObject::connect(group, SIGNAL(buttonPressed(const QKeyEvent &)), q, SLOT(emitButtonPressed(const QKeyEvent &)));
+ QObject::connect(group, SIGNAL(buttonDoublePressed(const QKeyEvent &)), q, SLOT(emitButtonDoublePressed(const QKeyEvent &)));
+ QObject::connect(group, SIGNAL(buttonReleased(const QKeyEvent &)), q, SLOT(emitButtonReleased(const QKeyEvent &)));
+ QObject::connect(group, SIGNAL(buttonLongPressed(const QKeyEvent &)), q, SLOT(emitButtonLongPressed(const QKeyEvent &)));
+ QObject::connect(group, SIGNAL(pressedButtonChanged(const QKeyEvent &, const QKeyEvent &)), q, SLOT(emitPressedButtonChanged(const QKeyEvent &, const QKeyEvent &)));
+
qreal cellWidth = q->boundingRect().width() / mGridSize.width();
qreal cellHeight = q->boundingRect().height() / mGridSize.height();
QFont font = HbFontSpec(HbFontSpec::Primary).font();
- font.setPixelSize(int(fontSize(ButtonTextTypeLabel)));
+ font.setPixelSize(int(fontSize(HbInputButtonGroup::ButtonTextTypeLabel)));
QFontMetricsF fontMetrics(font);
qreal textWidth = fontMetrics.width(item->mappedCharacters());
@@ -424,7 +424,7 @@
qreal x = q->scenePos().x() + (item->position().x() + 0.5 * item->size().width()) * cellWidth;
qreal y = q->scenePos().y() + item->position().y() * cellHeight;
- QList<HbInputButton*> buttons;
+ QList<HbInputButton *> buttons;
for (int i = 0; i < item->mappedCharacters().count(); ++i) {
HbInputButton *previewItem = new HbInputButton(item->keyCode(), QPoint(i, 0));
previewItem->setType(HbInputButton::ButtonTypeLabel);
@@ -451,7 +451,7 @@
Q_Q(HbInputButtonGroup);
if (!(position.x() >= 0 && position.x() < q->boundingRect().width() &&
- position.y() >= 0 && position.y() < q->boundingRect().height())) {
+ position.y() >= 0 && position.y() < q->boundingRect().height())) {
return;
}
@@ -463,8 +463,8 @@
if (index >= 0 && index < mButtonData.count()) {
HbInputButton *item = mButtonData.at(index);
- if ((item->state() != HbInputButton::ButtonStateReleased &&
- item->state() != HbInputButton::ButtonStateLatched) ||
+ if ((item->state() != HbInputButton::ButtonStateReleased &&
+ item->state() != HbInputButton::ButtonStateLatched) ||
(mCharacterSelectionPreview && mCharacterSelectionPreview->isVisible())) {
if (item->state() == HbInputButton::ButtonStateDisabled) {
startLongPress(index);
@@ -501,7 +501,7 @@
Q_Q(HbInputButtonGroup);
if (!(position.x() >= 0 && position.x() < q->boundingRect().width() &&
- position.y() >= 0 && position.y() < q->boundingRect().height())) {
+ position.y() >= 0 && position.y() < q->boundingRect().height())) {
return;
}
@@ -513,8 +513,8 @@
if (index >= 0 && index < mButtonData.count()) {
HbInputButton *item = mButtonData.at(index);
- if ((item->state() != HbInputButton::ButtonStateReleased &&
- item->state() != HbInputButton::ButtonStateLatched) ||
+ if ((item->state() != HbInputButton::ButtonStateReleased &&
+ item->state() != HbInputButton::ButtonStateLatched) ||
(mCharacterSelectionPreview && mCharacterSelectionPreview->isVisible())) {
if (item->state() == HbInputButton::ButtonStateDisabled) {
startLongPress(index);
@@ -562,7 +562,7 @@
newPosition.y() >= 0 && newPosition.y() < q->boundingRect().height() &&
oldPosition.x() >= 0 && oldPosition.x() < q->boundingRect().width() &&
oldPosition.y() >= 0 && oldPosition.y() < q->boundingRect().height()) {
-
+
if (oldIndex != newIndex) {
releaseEvent(oldPosition, false);
pressEvent(newPosition, false);
@@ -593,7 +593,7 @@
Q_Q(HbInputButtonGroup);
if (!(position.x() >= 0 && position.x() < q->boundingRect().width() &&
- position.y() >= 0 && position.y() < q->boundingRect().height())) {
+ position.y() >= 0 && position.y() < q->boundingRect().height())) {
return;
}
@@ -658,7 +658,7 @@
if (item->autoRepeat() &&
(item->state() == HbInputButton::ButtonStatePressed ||
- item->state() == HbInputButton::ButtonStateLatched)) {
+ item->state() == HbInputButton::ButtonStateLatched)) {
mLongPressButtons.append(index);
mLongPressTimers.append(timer);
timer->start(HbAutoRepeatTimeout);
@@ -705,7 +705,7 @@
HbTouchAreaSizeInUnits * mUnitValue, HbTouchAreaSizeInUnits * mUnitValue);
qreal probabilities = 0;
- foreach (HbInputButton *button, mButtonData) {
+ foreach(HbInputButton *button, mButtonData) {
QRectF intersection = button->boundingRect().intersected(touchArea);
if (intersection.isValid()) {
@@ -734,9 +734,9 @@
int typeIndex = index % HbTextTypeCount / HbInputButton::ButtonStateCount;
if (typeIndex == HbInputButton::ButtonTypeLabel) {
- font.setPixelSize(int(fontSize(ButtonTextTypeLabel)));
+ font.setPixelSize(int(fontSize(HbInputButtonGroup::ButtonTextTypeLabel)));
} else {
- font.setPixelSize(int(fontSize(ButtonTextTypeSingle)));
+ font.setPixelSize(int(fontSize(HbInputButtonGroup::ButtonTextTypeSingle)));
}
mTextLayouts[index] = new QTextLayout(textContent.value(index), font);
@@ -745,7 +745,7 @@
// Create text line for each button with primary text and correct type and state. Layout it
// to correct position
mTextLayouts.at(index)->beginLayout();
- foreach (HbInputButton *item, mButtonData) {
+ foreach(HbInputButton *item, mButtonData) {
int layoutIndex = item->type() * HbInputButton::ButtonStateCount + item->state() + HbTextTypeCount;
if (!mEnabled) {
layoutIndex = item->type() * HbInputButton::ButtonStateCount + HbInputButton::ButtonStateDisabled + HbTextTypeCount;
@@ -758,14 +758,14 @@
item->icon(HbInputButton::ButtonIconIndexSecondarySecondRow).isNull()) {
qreal textWidth = fontMetrics.width(item->text(HbInputButton::ButtonTextIndexPrimary));
qreal textHeight = fontMetrics.height();
-
+
QTextLine line = mTextLayouts.at(index)->createLine();
line.setNumColumns(item->text(HbInputButton::ButtonTextIndexPrimary).length());
if (typeIndex == HbInputButton::ButtonTypeLabel) {
- layoutTextLine(ButtonTextTypeLabel, item, QSizeF(cellWidth, cellHeight), line, QSizeF(textWidth, textHeight));
+ layoutTextLine(HbInputButtonGroup::ButtonTextTypeLabel, item, QSizeF(cellWidth, cellHeight), line, QSizeF(textWidth, textHeight));
} else {
- layoutTextLine(ButtonTextTypeSingle, item, QSizeF(cellWidth, cellHeight), line, QSizeF(textWidth, textHeight));
+ layoutTextLine(HbInputButtonGroup::ButtonTextTypeSingle, item, QSizeF(cellWidth, cellHeight), line, QSizeF(textWidth, textHeight));
}
}
}
@@ -779,7 +779,7 @@
qreal cellHeight = size.height() / mGridSize.height();
QFont font = HbFontSpec(HbFontSpec::Primary).font();
- font.setPixelSize(int(fontSize(ButtonTextTypePrimary)));
+ font.setPixelSize(int(fontSize(HbInputButtonGroup::ButtonTextTypePrimary)));
mTextLayouts[index] = new QTextLayout(textContent.value(index), font);
QFontMetricsF fontMetrics(font);
@@ -787,7 +787,7 @@
// Create text line for each button with primary text and correct type and state. Layout it
// to correct position
mTextLayouts.at(index)->beginLayout();
- foreach (HbInputButton *item, mButtonData) {
+ foreach(HbInputButton *item, mButtonData) {
int layoutIndex = item->type() * HbInputButton::ButtonStateCount + item->state();
if (!mEnabled) {
layoutIndex = item->type() * HbInputButton::ButtonStateCount + HbInputButton::ButtonStateDisabled;
@@ -795,16 +795,16 @@
if (index == layoutIndex && !item->text(HbInputButton::ButtonTextIndexPrimary).isEmpty() &&
item->icon(HbInputButton::ButtonIconIndexPrimary).isNull() &&
!(item->text(HbInputButton::ButtonTextIndexSecondaryFirstRow).isEmpty() &&
- item->icon(HbInputButton::ButtonIconIndexSecondaryFirstRow).isNull() &&
- item->text(HbInputButton::ButtonTextIndexSecondarySecondRow).isEmpty() &&
- item->icon(HbInputButton::ButtonIconIndexSecondarySecondRow).isNull())) {
+ item->icon(HbInputButton::ButtonIconIndexSecondaryFirstRow).isNull() &&
+ item->text(HbInputButton::ButtonTextIndexSecondarySecondRow).isEmpty() &&
+ item->icon(HbInputButton::ButtonIconIndexSecondarySecondRow).isNull())) {
qreal textWidth = fontMetrics.width(item->text(HbInputButton::ButtonTextIndexPrimary));
qreal textHeight = fontMetrics.height();
QTextLine line = mTextLayouts.at(index)->createLine();
line.setNumColumns(item->text(HbInputButton::ButtonTextIndexPrimary).length());
- layoutTextLine(ButtonTextTypePrimary, item, QSizeF(cellWidth, cellHeight), line, QSizeF(textWidth, textHeight));
+ layoutTextLine(HbInputButtonGroup::ButtonTextTypePrimary, item, QSizeF(cellWidth, cellHeight), line, QSizeF(textWidth, textHeight));
}
}
mTextLayouts.at(index)->endLayout();
@@ -817,7 +817,7 @@
qreal cellHeight = size.height() / mGridSize.height();
QFont font = HbFontSpec(HbFontSpec::Primary).font();
- font.setPixelSize(int(fontSize(ButtonTextTypeSecondaryFirstRow)));
+ font.setPixelSize(int(fontSize(HbInputButtonGroup::ButtonTextTypeSecondaryFirstRow)));
mTextLayouts[index] = new QTextLayout(textContent.value(index), font);
QFontMetricsF fontMetrics(font);
@@ -825,13 +825,13 @@
// Create text line for each button with secondary first row or second row text and correct type and state.
// Layout it to correct position
mTextLayouts.at(index)->beginLayout();
- foreach (HbInputButton *item, mButtonData) {
+ foreach(HbInputButton *item, mButtonData) {
int layoutIndex = item->type() * HbInputButton::ButtonStateCount + item->state() + HbTextTypeCount * 2;
if (!mEnabled) {
layoutIndex = item->type() * HbInputButton::ButtonStateCount + HbInputButton::ButtonStateDisabled + HbTextTypeCount * 2;
}
if (index == layoutIndex) {
- if (!item->text(HbInputButton::ButtonTextIndexSecondaryFirstRow).isEmpty() &&
+ if (!item->text(HbInputButton::ButtonTextIndexSecondaryFirstRow).isEmpty() &&
item->icon(HbInputButton::ButtonIconIndexSecondaryFirstRow).isNull()) {
qreal textWidth = fontMetrics.width(item->text(HbInputButton::ButtonTextIndexSecondaryFirstRow));
qreal textHeight = fontMetrics.height();
@@ -839,10 +839,10 @@
QTextLine line = mTextLayouts.at(index)->createLine();
line.setNumColumns(item->text(HbInputButton::ButtonTextIndexSecondaryFirstRow).length());
- layoutTextLine(ButtonTextTypeSecondaryFirstRow, item, QSizeF(cellWidth, cellHeight), line, QSizeF(textWidth, textHeight));
+ layoutTextLine(HbInputButtonGroup::ButtonTextTypeSecondaryFirstRow, item, QSizeF(cellWidth, cellHeight), line, QSizeF(textWidth, textHeight));
}
- if (!item->text(HbInputButton::ButtonTextIndexSecondarySecondRow).isEmpty() &&
+ if (!item->text(HbInputButton::ButtonTextIndexSecondarySecondRow).isEmpty() &&
item->icon(HbInputButton::ButtonIconIndexSecondarySecondRow).isNull()) {
qreal textWidth = fontMetrics.width(item->text(HbInputButton::ButtonTextIndexSecondarySecondRow));
qreal textHeight = fontMetrics.height();
@@ -850,7 +850,7 @@
QTextLine line = mTextLayouts.at(index)->createLine();
line.setNumColumns(item->text(HbInputButton::ButtonTextIndexSecondarySecondRow).length());
- layoutTextLine(ButtonTextTypeSecondarySecondRow, item, QSizeF(cellWidth, cellHeight), line, QSizeF(textWidth, textHeight));
+ layoutTextLine(HbInputButtonGroup::ButtonTextTypeSecondarySecondRow, item, QSizeF(cellWidth, cellHeight), line, QSizeF(textWidth, textHeight));
}
}
}
@@ -858,26 +858,26 @@
mTextLayouts.at(index)->setCacheEnabled(true);
}
-void HbInputButtonGroupPrivate::layoutTextLine(HbInputButtonTextType textType, const HbInputButton *button, const QSizeF &cellSize,
- QTextLine &textLine, const QSizeF &textSize)
+void HbInputButtonGroupPrivate::layoutTextLine(HbInputButtonGroup::HbInputButtonTextType textType, const HbInputButton *button, const QSizeF &cellSize,
+ QTextLine &textLine, const QSizeF &textSize)
{
qreal textPositionX = 0.0;
qreal textPositionY = 0.0;
- if (textType == ButtonTextTypeSingle ||
- textType == ButtonTextTypeLabel) {
+ if (textType == HbInputButtonGroup::ButtonTextTypeSingle ||
+ textType == HbInputButtonGroup::ButtonTextTypeLabel) {
textPositionX = (button->position().x() + 0.5 * button->size().width()) * cellSize.width() - 0.5 * textSize.width();
textPositionY = (button->position().y() + 0.5 * button->size().height()) * cellSize.height() - 0.5 * textSize.height();
- } else if (textType == ButtonTextTypePrimary) {
+ } else if (textType == HbInputButtonGroup::ButtonTextTypePrimary) {
textPositionX = button->position().x() * cellSize.width() + HbHorizontalMarginInUnits * mUnitValue + mButtonBorderSize;
textPositionY = (button->position().y() + 0.5 * button->size().height()) * cellSize.height() - 0.5 * textSize.height();
- } else if (textType == ButtonTextTypeSecondaryFirstRow) {
+ } else if (textType == HbInputButtonGroup::ButtonTextTypeSecondaryFirstRow) {
textPositionX = (button->position().x() + button->size().width()) * cellSize.width() -
- textSize.width() - HbHorizontalMarginInUnits * mUnitValue - mButtonBorderSize;
+ textSize.width() - HbHorizontalMarginInUnits * mUnitValue - mButtonBorderSize;
textPositionY = (button->position().y() + button->size().height()) * cellSize.height() -
- textSize.height() - HbVerticalMarginInUnits * mUnitValue - mButtonBorderSize;
- } else if (textType == ButtonTextTypeSecondarySecondRow) {
+ textSize.height() - HbVerticalMarginInUnits * mUnitValue - mButtonBorderSize;
+ } else if (textType == HbInputButtonGroup::ButtonTextTypeSecondarySecondRow) {
textPositionX = (button->position().x() + button->size().width()) * cellSize.width() -
- textSize.width() - HbHorizontalMarginInUnits * mUnitValue - mButtonBorderSize;
+ textSize.width() - HbHorizontalMarginInUnits * mUnitValue - mButtonBorderSize;
textPositionY = button->position().y() * cellSize.height() + HbVerticalMarginInUnits * mUnitValue + mButtonBorderSize;
}
textLine.setPosition(QPointF(textPositionX, textPositionY));
@@ -941,16 +941,16 @@
return QString("");
}
-qreal HbInputButtonGroupPrivate::fontSize(HbInputButtonTextType textType)
+qreal HbInputButtonGroupPrivate::fontSize(HbInputButtonGroup::HbInputButtonTextType textType)
{
- if (textType == ButtonTextTypeSingle) {
+ if (textType == HbInputButtonGroup::ButtonTextTypeSingle) {
return HbTextSizeInUnits * mUnitValue;
- } else if (textType == ButtonTextTypePrimary) {
+ } else if (textType == HbInputButtonGroup::ButtonTextTypePrimary) {
return HbPrimaryTextSizeInUnits * mUnitValue;
- } else if (textType == ButtonTextTypeSecondaryFirstRow ||
- textType == ButtonTextTypeSecondarySecondRow) {
+ } else if (textType == HbInputButtonGroup::ButtonTextTypeSecondaryFirstRow ||
+ textType == HbInputButtonGroup::ButtonTextTypeSecondarySecondRow) {
return HbSecondaryTextSizeInUnits * mUnitValue;
- } else if (textType == ButtonTextTypeLabel) {
+ } else if (textType == HbInputButtonGroup::ButtonTextTypeLabel) {
return HbLabelTextSizeInUnits * mUnitValue;
}
return 0;
@@ -993,56 +993,60 @@
Constructor
*/
HbInputButtonGroup::HbInputButtonGroup(QGraphicsItem *parent)
- : HbWidget(*new HbInputButtonGroupPrivate, parent)
+ : HbWidget(*new HbInputButtonGroupPrivate, parent)
{
Q_D(HbInputButtonGroup);
d->mUnitValue = HbDeviceProfile::profile(mainWindow()).unitValue();
setAcceptedMouseButtons(Qt::LeftButton);
+ setFlag(QGraphicsItem::ItemHasNoContents,false);
}
/*!
Constructor
*/
HbInputButtonGroup::HbInputButtonGroup(HbInputButtonGroupPrivate &dd, QGraphicsItem *parent)
- : HbWidget(dd, parent)
+ : HbWidget(dd, parent)
{
Q_D(HbInputButtonGroup);
d->mUnitValue = HbDeviceProfile::profile(mainWindow()).unitValue();
setAcceptedMouseButtons(Qt::LeftButton);
+ setFlag(QGraphicsItem::ItemHasNoContents,false);
}
/*!
Constructor
*/
HbInputButtonGroup::HbInputButtonGroup(const QSize &size, QGraphicsItem *parent)
- : HbWidget(*new HbInputButtonGroupPrivate, parent)
+ : HbWidget(*new HbInputButtonGroupPrivate, parent)
{
Q_D(HbInputButtonGroup);
d->mUnitValue = HbDeviceProfile::profile(mainWindow()).unitValue();
setAcceptedMouseButtons(Qt::LeftButton);
-
+
setGridSize(size);
+ setFlag(QGraphicsItem::ItemHasNoContents,false);
}
/*!
Constructor
*/
HbInputButtonGroup::HbInputButtonGroup(HbInputButtonGroupPrivate &dd, const QSize &size, QGraphicsItem *parent)
- : HbWidget(dd, parent)
+ : HbWidget(dd, parent)
{
Q_D(HbInputButtonGroup);
d->mUnitValue = HbDeviceProfile::profile(mainWindow()).unitValue();
setAcceptedMouseButtons(Qt::LeftButton);
-
+
setGridSize(size);
+ setFlag(QGraphicsItem::ItemHasNoContents,false);
}
/*!
@@ -1090,17 +1094,17 @@
/*!
Sets the button data and updates button group based on the new data.
-Takes ownership of the button items. Button items that are not in the new list
+Takes ownership of the button items. Button items that are not in the new list
will be destroyed.
\sa buttons
\sa button
*/
-void HbInputButtonGroup::setButtons(const QList<HbInputButton*> &data)
+void HbInputButtonGroup::setButtons(const QList<HbInputButton *> &data)
{
Q_D(HbInputButtonGroup);
- foreach (HbInputButton *button, d->mButtonData) {
+ foreach(HbInputButton *button, d->mButtonData) {
if (!data.contains(button)) {
delete button;
}
@@ -1186,7 +1190,7 @@
break;
}
}
-
+
setButton(data, index);
}
@@ -1197,7 +1201,7 @@
\sa setButtons
\sa setButton
*/
-QList<HbInputButton*> HbInputButtonGroup::buttons() const
+QList<HbInputButton *> HbInputButtonGroup::buttons() const
{
Q_D(const HbInputButtonGroup);
@@ -1231,7 +1235,7 @@
HbInputButton *HbInputButtonGroup::button(int column, int row) const
{
Q_D(const HbInputButtonGroup);
-
+
int index = -1;
if (d->mButtonGridPositions.contains(QPair<int, int>(column, row))) {
index = d->mButtonGridPositions.value(QPair<int, int>(column, row), -1);
@@ -1250,7 +1254,7 @@
{
Q_D(const HbInputButtonGroup);
- foreach (HbInputButton *button, d->mButtonData) {
+ foreach(HbInputButton *button, d->mButtonData) {
if (button->keyCode() == keyCode) {
return button;
}
@@ -1265,7 +1269,7 @@
\sa customButtonActions
*/
-void HbInputButtonGroup::setCustomButtonActions(const QList<HbAction*> &actions)
+void HbInputButtonGroup::setCustomButtonActions(const QList<HbAction *> &actions)
{
Q_D(HbInputButtonGroup);
@@ -1274,7 +1278,7 @@
d->mCustomActions = actions;
- foreach (HbAction *action, d->mCustomActions) {
+ foreach(HbAction *action, d->mCustomActions) {
connect(action, SIGNAL(changed()), this, SLOT(updateCustomButtons()));
connect(action, SIGNAL(destroyed(QObject *)), this, SLOT(_q_customActionDestroyed(QObject *)));
}
@@ -1291,7 +1295,7 @@
\sa setCustomButtonActions
*/
-QList<HbAction*> HbInputButtonGroup::customButtonActions() const
+QList<HbAction *> HbInputButtonGroup::customButtonActions() const
{
Q_D(const HbInputButtonGroup);
@@ -1407,7 +1411,7 @@
bool HbInputButtonGroup::isMultiTouchEnabled() const
{
Q_D(const HbInputButtonGroup);
-
+
return d->mMultiTouchEnabled;
}
@@ -1424,6 +1428,16 @@
}
/*!
+Returns font size for given text type
+*/
+qreal HbInputButtonGroup::fontSize(HbInputButtonTextType textType)
+{
+ Q_D(HbInputButtonGroup);
+
+ return d->fontSize(textType);
+}
+
+/*!
Returns all possible buttons the user could have intended to press
for the last registered touch along with their corresponding probabilities.
*/
@@ -1464,7 +1478,7 @@
/*!
Draws the button group.
*/
-void HbInputButtonGroup::paint(QPainter* painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+void HbInputButtonGroup::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
@@ -1489,7 +1503,7 @@
painter->save();
painter->translate(x, y);
- d->mButtonDrawers.at(i)->paint(painter, QRectF(0, 0, width, height));
+ d->mButtonDrawers.at(i)->paint(painter, QRectF(0, 0, width, height));
painter->restore();
}
@@ -1513,9 +1527,9 @@
if (!item->icon(HbInputButton::ButtonIconIndexSecondaryFirstRow).isNull()) {
qreal x = (item->position().x() + item->size().width()) * cellWidth -
- HbSecondaryIconSizeInUnits * d->mUnitValue - HbHorizontalMarginInUnits * d->mUnitValue - d->mButtonBorderSize;
+ HbSecondaryIconSizeInUnits * d->mUnitValue - HbHorizontalMarginInUnits * d->mUnitValue - d->mButtonBorderSize;
qreal y = (item->position().y() + item->size().height()) * cellHeight -
- HbSecondaryIconSizeInUnits * d->mUnitValue - HbVerticalMarginInUnits * d->mUnitValue - d->mButtonBorderSize;
+ HbSecondaryIconSizeInUnits * d->mUnitValue - HbVerticalMarginInUnits * d->mUnitValue - d->mButtonBorderSize;
qreal width = HbSecondaryIconSizeInUnits * d->mUnitValue;
qreal height = HbSecondaryIconSizeInUnits * d->mUnitValue;
@@ -1525,7 +1539,7 @@
if (!item->icon(HbInputButton::ButtonIconIndexSecondarySecondRow).isNull()) {
qreal x = (item->position().x() + item->size().width()) * cellWidth -
- HbSecondaryIconSizeInUnits * d->mUnitValue - HbHorizontalMarginInUnits * d->mUnitValue - d->mButtonBorderSize;
+ HbSecondaryIconSizeInUnits * d->mUnitValue - HbHorizontalMarginInUnits * d->mUnitValue - d->mButtonBorderSize;
qreal y = item->position().y() * cellHeight + HbVerticalMarginInUnits * d->mUnitValue + d->mButtonBorderSize;
qreal width = HbSecondaryIconSizeInUnits * d->mUnitValue;
qreal height = HbSecondaryIconSizeInUnits * d->mUnitValue;
@@ -1562,15 +1576,15 @@
}
if (event->type() == QEvent::TouchBegin) {
- QTouchEvent *touchEvent = static_cast<QTouchEvent*>(event);
- foreach (QTouchEvent::TouchPoint point, touchEvent->touchPoints()) {
- if (!point.isPrimary() && d->mMultiTouchEnabled) {
+ QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
+ foreach(const QTouchEvent::TouchPoint &point, touchEvent->touchPoints()) {
+ if (!point.isPrimary() && d->mMultiTouchEnabled) {
d->pressEvent(point.pos());
}
}
} else if (event->type() == QEvent::TouchUpdate) {
- QTouchEvent *touchEvent = static_cast<QTouchEvent*>(event);
- foreach (QTouchEvent::TouchPoint point, touchEvent->touchPoints()) {
+ QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
+ foreach(const QTouchEvent::TouchPoint &point, touchEvent->touchPoints()) {
if (!point.isPrimary() && d->mMultiTouchEnabled) {
if (point.state() & Qt::TouchPointPressed) {
d->pressEvent(point.pos());
@@ -1582,23 +1596,23 @@
}
}
} else if (event->type() == QEvent::TouchEnd) {
- QTouchEvent *touchEvent = static_cast<QTouchEvent*>(event);
- foreach (QTouchEvent::TouchPoint point, touchEvent->touchPoints()) {
- if (!point.isPrimary() && d->mMultiTouchEnabled) {
+ QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
+ foreach(const QTouchEvent::TouchPoint &point, touchEvent->touchPoints()) {
+ if (!point.isPrimary() && d->mMultiTouchEnabled) {
d->releaseEvent(point.pos());
}
}
} else if (event->type() == QEvent::GraphicsSceneMousePress) {
- QGraphicsSceneMouseEvent *mouseEvent = static_cast<QGraphicsSceneMouseEvent*>(event);
+ QGraphicsSceneMouseEvent *mouseEvent = static_cast<QGraphicsSceneMouseEvent *>(event);
d->pressEvent(mouseEvent->pos());
} else if (event->type() == QEvent::GraphicsSceneMouseDoubleClick) {
- QGraphicsSceneMouseEvent *mouseEvent = static_cast<QGraphicsSceneMouseEvent*>(event);
+ QGraphicsSceneMouseEvent *mouseEvent = static_cast<QGraphicsSceneMouseEvent *>(event);
d->doublePressEvent(mouseEvent->pos());
} else if (event->type() == QEvent::GraphicsSceneMouseMove) {
- QGraphicsSceneMouseEvent *mouseEvent = static_cast<QGraphicsSceneMouseEvent*>(event);
+ QGraphicsSceneMouseEvent *mouseEvent = static_cast<QGraphicsSceneMouseEvent *>(event);
d->moveEvent(mouseEvent->lastPos(), mouseEvent->pos());
} else if (event->type() == QEvent::GraphicsSceneMouseRelease) {
- QGraphicsSceneMouseEvent *mouseEvent = static_cast<QGraphicsSceneMouseEvent*>(event);
+ QGraphicsSceneMouseEvent *mouseEvent = static_cast<QGraphicsSceneMouseEvent *>(event);
d->releaseEvent(mouseEvent->pos());
cancelButtonPress();
} else {
@@ -1632,13 +1646,13 @@
void HbInputButtonGroup::changeEvent(QEvent *event)
{
Q_D(HbInputButtonGroup);
-
+
if (event->type() == HbEvent::ThemeChanged) {
if (d->mBackground) {
d->mBackground->themeChanged();
}
- foreach (HbFrameDrawer *drawer, d->mButtonDrawers) {
+ foreach(HbFrameDrawer *drawer, d->mButtonDrawers) {
drawer->themeChanged();
}
--- a/src/hbinput/inputwidgets/hbinputbuttongroup.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputbuttongroup.h Wed Jun 23 18:33:25 2010 +0300
@@ -40,6 +40,14 @@
Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled)
public:
+ enum HbInputButtonTextType {
+ ButtonTextTypeSingle,
+ ButtonTextTypePrimary,
+ ButtonTextTypeSecondaryFirstRow,
+ ButtonTextTypeSecondarySecondRow,
+ ButtonTextTypeLabel
+ };
+
explicit HbInputButtonGroup(QGraphicsItem *parent = 0);
explicit HbInputButtonGroup(const QSize &size, QGraphicsItem *parent = 0);
~HbInputButtonGroup();
@@ -47,17 +55,17 @@
void setGridSize(const QSize &size);
QSize gridSize() const;
- void setButtons(const QList<HbInputButton*> &data);
+ void setButtons(const QList<HbInputButton *> &data);
void setButton(HbInputButton *data, int index);
void setButton(HbInputButton *data, int column, int row);
void setButton(HbInputButton *data, HbInputButton::HbInputButtonKeyCode keyCode);
- QList<HbInputButton*> buttons() const;
+ QList<HbInputButton *> buttons() const;
HbInputButton *button(int index) const;
HbInputButton *button(int column, int row) const;
HbInputButton *button(HbInputButton::HbInputButtonKeyCode keyCode) const;
- void setCustomButtonActions(const QList<HbAction*> &actions);
- QList<HbAction*> customButtonActions() const;
+ void setCustomButtonActions(const QList<HbAction *> &actions);
+ QList<HbAction *> customButtonActions() const;
void setButtonBorderSize(qreal borderSize);
qreal buttonBorderSize() const;
@@ -72,22 +80,26 @@
void setBackground(HbFrameDrawer *background);
+ qreal fontSize(HbInputButtonTextType textType);
+
QList<HbKeyPressProbability> buttonProbabilities() const;
-
+
public: // From QGraphicsItem
void setEnabled(bool enabled);
bool isEnabled() const;
-
+
public: // From QGraphicsLayoutItem
void setGeometry(const QRectF &rect);
protected: // From QGraphicsItem
- void paint(QPainter* painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
bool sceneEvent(QEvent *event);
void changeEvent(QEvent *event);
void showEvent(QShowEvent *event);
void hideEvent(QHideEvent *event);
- int type() const { return Hb::ItemType_InputButtonGroup; }
+ int type() const {
+ return Hb::ItemType_InputButtonGroup;
+ }
protected:
HbInputButtonGroup(HbInputButtonGroupPrivate &dd, QGraphicsItem *parent = 0);
--- a/src/hbinput/inputwidgets/hbinputbuttongroup_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputbuttongroup_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -31,20 +31,15 @@
#include "hbinputbuttongroup.h"
#include "hbinputbutton.h"
+class HbDialog;
+class QTextLine;
+class QTextLayout;
+
class HB_INPUT_PRIVATE_EXPORT HbInputButtonGroupPrivate : public HbWidgetPrivate
{
Q_DECLARE_PUBLIC(HbInputButtonGroup)
public:
-
- enum HbInputButtonTextType {
- ButtonTextTypeSingle,
- ButtonTextTypePrimary,
- ButtonTextTypeSecondaryFirstRow,
- ButtonTextTypeSecondarySecondRow,
- ButtonTextTypeLabel
- };
-
HbInputButtonGroupPrivate();
~HbInputButtonGroupPrivate();
@@ -54,9 +49,9 @@
virtual void updateButtonGrid(const QSizeF &size);
virtual void updateColorArray();
- virtual void showButtonPreview(HbInputButton * const item);
- virtual void hideButtonPreview(HbInputButton * const item);
- virtual void showCharacterSelectionPreview(HbInputButton * const item);
+ virtual void showButtonPreview(HbInputButton *const item);
+ virtual void hideButtonPreview(HbInputButton *const item);
+ virtual void showCharacterSelectionPreview(HbInputButton *const item);
virtual void pressEvent(const QPointF &position, bool emitSignal = true);
virtual void doublePressEvent(const QPointF &position, bool emitSignal = true);
@@ -73,35 +68,35 @@
virtual void createPrimaryTextLayout(int index, const QHash<int, QString> &textContent, const QSizeF &size);
virtual void createSecondaryTextLayout(int index, const QHash<int, QString> &textContentt, const QSizeF &size);
- virtual void layoutTextLine(HbInputButtonTextType textType, const HbInputButton *button, const QSizeF &cellSize,
+ virtual void layoutTextLine(HbInputButtonGroup::HbInputButtonTextType textType, const HbInputButton *button, const QSizeF &cellSize,
QTextLine &textLine, const QSizeF &textSize);
virtual QString buttonGraphics(HbInputButton::HbInputButtonType type, HbInputButton::HbInputButtonState state);
virtual QString buttonColor(HbInputButton::HbInputButtonType type, HbInputButton::HbInputButtonState state);
- virtual qreal fontSize(HbInputButtonTextType textType);
+ virtual qreal fontSize(HbInputButtonGroup::HbInputButtonTextType textType);
void startLongPress(int index);
void cancelLongPress(int index);
public:
qreal mUnitValue;
- QList<HbFrameDrawer*> mButtonDrawers;
- QList<QTextLayout*> mTextLayouts;
+ QList<HbFrameDrawer *> mButtonDrawers;
+ QList<QTextLayout *> mTextLayouts;
QList<QColor> mColors;
- QList<QTimer*> mLongPressTimers;
+ QList<QTimer *> mLongPressTimers;
QList<int> mLongPressButtons;
QSize mGridSize;
- QList<HbInputButton*> mButtonData;
+ QList<HbInputButton *> mButtonData;
QList<int> mUsedCustomButtons;
- QList<HbAction*> mCustomActions;
+ QList<HbAction *> mCustomActions;
QHash<QPair<int, int>, int> mButtonGridPositions;
qreal mButtonBorderSize;
bool mEnabled;
bool mButtonPreviewEnabled;
bool mCharacterSelectionPreviewEnabled;
bool mMultiTouchEnabled;
- QHash<int, HbInputButtonGroup*> mButtonPreview;
+ QHash<int, HbInputButtonGroup *> mButtonPreview;
HbDialog *mCharacterSelectionPreview;
HbFrameDrawer *mBackground;
QList<HbKeyPressProbability> mProbabilities;
--- a/src/hbinput/inputwidgets/hbinputcandidatelist.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputcandidatelist.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,7 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputcandidatelist.h"
#include <QLabel>
#include <QGraphicsLayout>
@@ -38,8 +39,6 @@
#include <hbinputvkbhost.h>
#include <hbinputregioncollector_p.h>
-#include "hbinputcandidatelist.h"
-
#include "hbdialog_p.h"
const int HbCandListDefaultNumRows = 5;
@@ -53,27 +52,27 @@
class HbCandidateListPrivate : public HbDialogPrivate
{
- Q_DECLARE_PUBLIC(HbCandidateList)
+ Q_DECLARE_PUBLIC(HbCandidateList)
public:
- HbCandidateListPrivate(HbInputMethod* input);
+ HbCandidateListPrivate(HbInputMethod *input);
~HbCandidateListPrivate();
void calculateAndSetSize(qreal maxWidth);
void initFrameIcon();
public:
- HbListWidget* mList;
- HbInputMethod* mInput;
+ HbListWidget *mList;
+ HbInputMethod *mInput;
int numRows;
int numCandidates;
int longestStringWidth;
HbFrameItem *mFrameBackground;
- HbListWidgetItem* mSpellQueryItem;
+ HbListWidgetItem *mSpellQueryItem;
bool mCandidateCommitted;
bool mSpellQueryOpenIsPending;
};
-HbCandidateListPrivate::HbCandidateListPrivate(HbInputMethod* input)
+HbCandidateListPrivate::HbCandidateListPrivate(HbInputMethod *input)
: mInput(input),
numRows(HbCandListDefaultNumRows),
numCandidates(0),
@@ -97,10 +96,10 @@
{
Q_Q(HbCandidateList);
- mFrameBackground = static_cast<HbFrameItem*>( q->primitive( HbStyle::P_Popup_background ));
+ mFrameBackground = static_cast<HbFrameItem *>(q->primitive(HbStyle::P_Popup_background));
- if( mFrameBackground == 0 ) {
- mFrameBackground = static_cast<HbFrameItem*>( q->style()->createPrimitive(( HbStyle::Primitive )( HbStyle::P_Popup_background ), q ));
+ if (mFrameBackground == 0) {
+ mFrameBackground = static_cast<HbFrameItem *>(q->style()->createPrimitive((HbStyle::Primitive)(HbStyle::P_Popup_background), q));
}
}
@@ -128,11 +127,11 @@
finalWidth = finalWidth + l + r ;
finalHeight = (qreal)numLines * oneLineHeight + 5.0 + t + b;
- if(mSpellQueryItem) {
+ if (mSpellQueryItem) {
finalHeight += oneLineHeight ; // for spell button
}
- if(finalHeight > HbDeviceProfile::current().logicalSize().height() - 30) {
+ if (finalHeight > HbDeviceProfile::current().logicalSize().height() - 30) {
finalHeight = HbDeviceProfile::current().logicalSize().height() - 30;
}
@@ -162,7 +161,7 @@
@param input The input method that uses this widget.
@param parent parent of the widget.
*/
-HbCandidateList::HbCandidateList(HbInputMethod* input, QGraphicsItem* parent)
+HbCandidateList::HbCandidateList(HbInputMethod *input, QGraphicsItem *parent)
: HbDialog(*new HbCandidateListPrivate(input), parent)
{
Q_D(HbCandidateList);
@@ -178,8 +177,8 @@
setTimeout(NoTimeout);
setAttribute(Qt::WA_InputMethodEnabled, false);
- connect(d->mList, SIGNAL(activated(HbListWidgetItem*)), this, SLOT(itemActivated(HbListWidgetItem*)));
- connect(d->mList, SIGNAL(longPressed(HbListWidgetItem*, const QPointF&)), this, SLOT(itemActivated(HbListWidgetItem*)));
+ connect(d->mList, SIGNAL(activated(HbListWidgetItem *)), this, SLOT(itemActivated(HbListWidgetItem *)));
+ connect(d->mList, SIGNAL(longPressed(HbListWidgetItem *, const QPointF &)), this, SLOT(itemActivated(HbListWidgetItem *)));
setBackgroundFaded(false);
}
@@ -193,10 +192,8 @@
/*!
Populates the candidate list with text strings given as parameter.
-
-@param
*/
-void HbCandidateList::populateList(const QStringList& candidates,bool addSpellQuery)
+void HbCandidateList::populateList(const QStringList &candidates, bool addSpellQuery)
{
Q_D(HbCandidateList);
@@ -208,7 +205,7 @@
int longestwidth = 0;
int finalWidth = 250;
for (int i = 0; i < candidates.count(); i++) {
- HbListWidgetItem* item = new HbListWidgetItem();
+ HbListWidgetItem *item = new HbListWidgetItem();
item->setText(candidates[i]);
d->mList->addItem(item);
@@ -219,9 +216,9 @@
longestwidth = finalWidth;
}
}
-
+
d->mSpellQueryItem = 0;
- if(addSpellQuery) {
+ if (addSpellQuery) {
d->mSpellQueryItem = new HbListWidgetItem();
d->mSpellQueryItem->setText(tr("Spell"));
d->mList->addItem(d->mSpellQueryItem);
@@ -246,7 +243,7 @@
/*!
Inherited from HbDialog.
*/
-void HbCandidateList::keyPressEvent(QKeyEvent* event)
+void HbCandidateList::keyPressEvent(QKeyEvent *event)
{
Q_D(HbCandidateList);
@@ -279,9 +276,9 @@
{
Q_D(HbCandidateList);
if (!d->mCandidateCommitted) {
- if(d->mSpellQueryItem != item) {
+ if (d->mSpellQueryItem != item) {
emit candidateSelected(0, currentCandidate());
- } else if(d->mSpellQueryItem){
+ } else if (d->mSpellQueryItem) {
d->mSpellQueryOpenIsPending = true;
}
d->mCandidateCommitted = true;
@@ -295,7 +292,11 @@
QString HbCandidateList::currentCandidate()
{
Q_D(HbCandidateList);
- return d->mList->currentItem()->text();
+ if (d->mList->currentItem()) {
+ return d->mList->currentItem()->text();
+ }
+
+ return QString();
}
/*!
@@ -312,16 +313,16 @@
/*!
this event handler is called, for Hide events, is delivered after the widget has been hidden.
*/
-void HbCandidateList::hideEvent(QHideEvent * event)
+void HbCandidateList::hideEvent(QHideEvent *event)
{
- Q_D(HbCandidateList);
- d->mCandidateCommitted = false;
+ Q_D(HbCandidateList);
+ d->mCandidateCommitted = false;
HbDialog::hideEvent(event);
- // If we try to open spell query in itemActivated, first spell query tries to
- // open, and then candidatel list is closed. This creates problems if we
+ // If we try to open spell query in itemActivated, first spell query tries to
+ // open, and then candidatel list is closed. This creates problems if we
// quickly double click on the Spell button. So open spell query only after candidate
// list is closed.
- if(d->mSpellQueryOpenIsPending) {
+ if (d->mSpellQueryOpenIsPending) {
d->mSpellQueryOpenIsPending = false;
emit launchSpellQueryDialog();
}
@@ -369,7 +370,7 @@
return true;
}
} else {
- if (bottomRect.height() > HbAutoComplPopupMinAllowedHeight) {
+ if (bottomRect.height() > HbAutoComplPopupMinAllowedHeight) {
qreal finalHeight = (size().height() < bottomRect.height() ? size().height() : bottomRect.height());
bottomRect.setHeight(finalHeight);
resize(bottomRect.width(), bottomRect.height());
--- a/src/hbinput/inputwidgets/hbinputcandidatelist.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputcandidatelist.h Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef HB_CANDIDATE_LIST_H
-#define HB_CANDIDATE_LIST_H
+#ifndef HB_INPUT_CANDIDATE_LIST_H
+#define HB_INPUT_CANDIDATE_LIST_H
#include <hbdialog.h>
@@ -41,10 +41,10 @@
Q_OBJECT
public:
- explicit HbCandidateList(HbInputMethod* input, QGraphicsItem* parent = 0);
+ explicit HbCandidateList(HbInputMethod *input, QGraphicsItem *parent = 0);
virtual ~HbCandidateList();
- void populateList(const QStringList& candidates,bool addSpellQuery = false);
+ void populateList(const QStringList &candidates, bool addSpellQuery = false);
QString currentCandidate();
void setNumberOfVisibleLines(int numLines);
bool setSizeAndPositionForAutoCompletion(HbVkbHost *vkbHost);
@@ -55,9 +55,9 @@
void launchSpellQueryDialog();
protected:
- void closeEvent(QCloseEvent* event);
- void keyPressEvent(QKeyEvent* event);
- void hideEvent(QHideEvent * event);
+ void closeEvent(QCloseEvent *event);
+ void keyPressEvent(QKeyEvent *event);
+ void hideEvent(QHideEvent *event);
void updatePrimitives();
public slots:
@@ -68,6 +68,6 @@
Q_DISABLE_COPY(HbCandidateList)
};
-#endif // HB_CANDIDATE_LIST_H
+#endif // HB_INPUT_CANDIDATE_LIST_H
// End of file
--- a/src/hbinput/inputwidgets/hbinputcheckboxlist.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputcheckboxlist.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,14 +22,13 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputcheckboxlist_p.h"
#include <hblistwidget.h>
#include <hblistwidgetitem.h>
#include <hbdataformmodelitem.h>
#include <hbdataformmodel.h>
-#include "hbinputcheckboxlist_p.h"
-
/// @cond
class HbInputCheckBoxListPrivate
@@ -44,7 +43,7 @@
Constructs checkbox list
*/
HbInputCheckBoxList::HbInputCheckBoxList(QGraphicsItem *parent)
- : HbDataFormViewItem(parent), d_ptr(new HbInputCheckBoxListPrivate())
+ : HbDataFormViewItem(parent), d_ptr(new HbInputCheckBoxListPrivate())
{
}
@@ -59,21 +58,21 @@
/*!
Returns a new copy of this object
*/
-HbAbstractViewItem* HbInputCheckBoxList::createItem()
+HbAbstractViewItem *HbInputCheckBoxList::createItem()
{
return new HbInputCheckBoxList(*this);
}
/*!
\reimp
-Returns true if \a model index is supported, otherwise returns false.
+Returns true if \a index is supported, otherwise returns false.
*/
bool HbInputCheckBoxList::canSetModelIndex(const QModelIndex &index) const
{
- HbDataFormModelItem::DataItemType itemType =
+ HbDataFormModelItem::DataItemType itemType =
static_cast<HbDataFormModelItem::DataItemType>(index.data(HbDataFormModelItem::ItemTypeRole).toInt());
- if(itemType == HbDataFormModelItem::CustomItemBase) {
+ if (itemType == HbDataFormModelItem::CustomItemBase) {
return true;
} else {
return false;
@@ -87,8 +86,8 @@
{
Q_D(HbInputCheckBoxList);
QModelIndex itemIndex = modelIndex();
- HbDataFormModelItem *modelItem = static_cast<HbDataFormModelItem*>(
- static_cast<HbDataFormModel*>(itemView()->model())->itemFromIndex(itemIndex));
+ HbDataFormModelItem *modelItem = static_cast<HbDataFormModelItem *>(
+ static_cast<HbDataFormModel *>(itemView()->model())->itemFromIndex(itemIndex));
QList<QVariant> selectedValues = modelItem->contentWidgetData(QString("selectedItems")).toList();
selectedValues.replace(index.row(), !selectedValues.at(index.row()).toBool());
@@ -100,27 +99,27 @@
} else {
d->mListWidget->setCurrentIndex(viewItem->modelIndex(), QItemSelectionModel::Deselect);
}
- }
+}
/*!
Creates a widget for showing checkbox list
*/
-HbWidget* HbInputCheckBoxList::createCustomWidget()
+HbWidget *HbInputCheckBoxList::createCustomWidget()
{
Q_D(HbInputCheckBoxList);
QModelIndex itemIndex = modelIndex();
- HbDataFormModelItem *modelItem = static_cast<HbDataFormModelItem*>(
- static_cast<HbDataFormModel*>(itemView()->model())->itemFromIndex(itemIndex));
+ HbDataFormModelItem *modelItem = static_cast<HbDataFormModelItem *>(
+ static_cast<HbDataFormModel *>(itemView()->model())->itemFromIndex(itemIndex));
d->mListWidget = new HbListWidget();
d->mListWidget->setSelectionMode(HbAbstractItemView::MultiSelection);
d->mListWidget->contentWidget()->setContentsMargins(10, 10, 10, 10);
d->mListWidget->setBackgroundItem(HbStyle::P_DataItem_background);
d->mListWidget->setScrollDirections(0);
-
+
QStringList items = modelItem->contentWidgetData(QString("items")).toStringList();
- foreach(QString itemName, items) {
+ foreach(const QString &itemName, items) {
HbListWidgetItem *item = new HbListWidgetItem();
item->setData(QVariant(itemName), Qt::DisplayRole);
d->mListWidget->addItem(item);
@@ -139,14 +138,14 @@
connect(d->mListWidget, SIGNAL(activated(const QModelIndex &)), this, SLOT(itemActivated(const QModelIndex &)));
- return d->mListWidget;
+ return d->mListWidget;
}
/*!
Copy constructor for private use.
*/
HbInputCheckBoxList::HbInputCheckBoxList(const HbInputCheckBoxList &other)
- : HbDataFormViewItem(other), d_ptr(new HbInputCheckBoxListPrivate())
+ : HbDataFormViewItem(other), d_ptr(new HbInputCheckBoxListPrivate())
{
}
--- a/src/hbinput/inputwidgets/hbinputcheckboxlist_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputcheckboxlist_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -38,16 +38,16 @@
explicit HbInputCheckBoxList(QGraphicsItem *parent = 0);
~HbInputCheckBoxList();
- HbAbstractViewItem* createItem();
+ HbAbstractViewItem *createItem();
bool canSetModelIndex(const QModelIndex &index) const;
public slots:
void itemActivated(const QModelIndex &index);
protected:
- HbWidget* createCustomWidget();
+ HbWidget *createCustomWidget();
- HbInputCheckBoxListPrivate * const d_ptr;
+ HbInputCheckBoxListPrivate *const d_ptr;
private:
HbInputCheckBoxList(const HbInputCheckBoxList &other);
--- a/src/hbinput/inputwidgets/hbinputcommondialogs.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputcommondialogs.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,8 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputcommondialogs.h"
+
#include <QDir>
#include <QtAlgorithms>
@@ -33,8 +35,6 @@
#include <hbinputmethod.h>
#include <hbinputregioncollector_p.h>
-#include "hbinputcommondialogs.h"
-
/// @cond
bool caseInsensitiveLessThanForHbInputLanguage(const HbInputLanguage &s1, const HbInputLanguage &s2)
@@ -52,35 +52,33 @@
*/
HbInputLanguage HbInputCommonDialogs::showLanguageSelectionDialog(QLocale::Language selectedLanguage, const QList<HbInputLanguage> languageList)
{
- HbSelectionDialog* langDialog = new HbSelectionDialog();
+ HbSelectionDialog *langDialog = new HbSelectionDialog();
langDialog->setObjectName("Language dialog");
-#if QT_VERSION >= 0x040600
// Make sure the language dialog never steals focus.
langDialog->setFlag(QGraphicsItem::ItemIsPanel, true);
langDialog->setActive(false);
-#endif
- HbInputSettingProxy* settings = HbInputSettingProxy::instance();
+ HbInputSettingProxy *settings = HbInputSettingProxy::instance();
HbInputLanguage currentLang = settings->globalInputLanguage();
QList<HbInputLanguage> languages;
if (languageList.count() == 0) {
HbInputUtils::listSupportedInputLanguages(languages);
} else {
- languages=languageList;
+ languages = languageList;
}
-
- qStableSort(languages.begin(), languages.end(), caseInsensitiveLessThanForHbInputLanguage);
- QList<HbListWidgetItem*> listItems;
- HbListWidgetItem* item = 0;
- foreach( HbInputLanguage language, languages ) {
- QString langName = language.localisedName();
+
+ qStableSort(languages.begin(), languages.end(), caseInsensitiveLessThanForHbInputLanguage);
+ QList<HbListWidgetItem *> listItems;
+ HbListWidgetItem *item = 0;
+ foreach(HbInputLanguage language, languages) {
+ QString langName = language.localisedName();
if (langName.length() == 0) {
langName = QString("Unknown");
}
item = new HbListWidgetItem();
item->setText(langName);
- if (language == currentLang ) {
+ if (language == currentLang) {
QList<QVariant> selected;
selected.append(listItems.count());
langDialog->setSelectedItems(selected);
@@ -104,7 +102,7 @@
if (langDialog->selectedItems().count()) {
int selection = langDialog->selectedItems().at(0).toInt();
HbInputLanguage result;
- if(languages.at(selection).language() == QLocale::Chinese) {
+ if (languages.at(selection).language() == QLocale::Chinese) {
result = languages.at(selection);
} else {
result = languages.at(selection).language();
@@ -124,26 +122,24 @@
{
Q_UNUSED(language);
- HbSelectionDialog* methodDialog = new HbSelectionDialog();
+ HbSelectionDialog *methodDialog = new HbSelectionDialog();
methodDialog->setObjectName("Input method dialog");
-#if QT_VERSION >= 0x040600
// Make sure the language dialog never steals focus.
methodDialog->setFlag(QGraphicsItem::ItemIsPanel, true);
methodDialog->setActive(false);
-#endif
QList<HbInputMethodDescriptor> customList = HbInputMethod::listCustomInputMethods();
- QList<HbListWidgetItem*> listItems;
- HbListWidgetItem* item = new HbListWidgetItem();
+ QList<HbListWidgetItem *> listItems;
+ HbListWidgetItem *item = new HbListWidgetItem();
QString methodName("Default");
item->setText(methodName);
listItems.append(item);
//for (int i=0; i<customList.dllName.count() ; i++) {
- foreach (HbInputMethodDescriptor descriptor, customList) {
- QString displayName = descriptor.displayName();
+ foreach(const HbInputMethodDescriptor &descriptor, customList) {
+ QString displayName = descriptor.displayName();
if (displayName.length() == 0) {
displayName = QString("Unknown");
}
@@ -164,9 +160,9 @@
if (methodDialog->selectedItems().count()) {
int selection = methodDialog->selectedItems().first().toInt();
if (selection == 0) {
- result.setDefault();
+ result.setDefault();
} else {
- result = customList[selection-1];
+ result = customList[selection-1];
}
}
--- a/src/hbinput/inputwidgets/hbinputcommondialogs.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputcommondialogs.h Wed Jun 23 18:33:25 2010 +0300
@@ -26,14 +26,16 @@
#ifndef HB_INPUT_COMMON_DIALOGS_H
#define HB_INPUT_COMMON_DIALOGS_H
+#include <QLocale>
+#include <QList>
+#include <hbinputmethoddescriptor.h>
+
class HbInputLanguage;
-#include <QLocale>
-#include <hbinputmethoddescriptor.h>
class HB_INPUT_EXPORT HbInputCommonDialogs
{
public:
- static HbInputLanguage showLanguageSelectionDialog(const QLocale::Language selectedLanguage, const QList<HbInputLanguage> languageList=QList<HbInputLanguage>());
+ static HbInputLanguage showLanguageSelectionDialog(const QLocale::Language selectedLanguage, const QList<HbInputLanguage> languageList = QList<HbInputLanguage>());
static HbInputMethodDescriptor showCustomInputMethodSelectionDialog(const HbInputLanguage &language);
};
--- a/src/hbinput/inputwidgets/hbinputexactwordpopup.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputexactwordpopup.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -42,8 +42,7 @@
#include "hbcolorscheme.h"
#include "hbdialog_p.h"
-const QSizeF HbExactWordPopupSize(10,10);
-const QPointF HbExactWordPopupStartupDisplay(12, 33);
+const qreal HbExactWordPopupHeight = 50.0;
class HbExactWordPopupPrivate : public HbDialogPrivate
{
@@ -57,45 +56,36 @@
public:
HbLabel *mText;
- HbStyleOptionLabel *mOption;
- HbIconItem *iconPrim;
HbFrameItem *mPopupBackground;
};
-HbExactWordPopupPrivate::HbExactWordPopupPrivate(){
- mText = 0;
- mOption = 0;
- iconPrim = 0;
+HbExactWordPopupPrivate::HbExactWordPopupPrivate()
+ : mText(0), mPopupBackground(0)
+{
}
-HbExactWordPopupPrivate::~HbExactWordPopupPrivate(){
- delete mOption;
- mOption = 0;
+HbExactWordPopupPrivate::~HbExactWordPopupPrivate()
+{
}
void HbExactWordPopupPrivate::initBackground()
{
Q_Q(HbExactWordPopup);
- mPopupBackground = static_cast<HbFrameItem*>(q->primitive( HbStyle::P_Popup_background));
+ mPopupBackground = static_cast<HbFrameItem*>(q->primitive(HbStyle::P_Popup_background));
- if( mPopupBackground == 0 ) {
+ if (!mPopupBackground) {
mPopupBackground = static_cast<HbFrameItem*>(q->style()->createPrimitive((HbStyle::Primitive)(HbStyle::P_Popup_background), q));
}
- if ( mPopupBackground->frameDrawer().isNull()) {
- HbFrameDrawer* fd = new HbFrameDrawer("qtg_fr_popup_secondary", HbFrameDrawer::NinePieces);
+ if (mPopupBackground->frameDrawer().isNull()) {
+ HbFrameDrawer *fd = new HbFrameDrawer("qtg_fr_popup_secondary", HbFrameDrawer::NinePieces);
mPopupBackground->setFrameDrawer(fd);
}
-
- // the size of the layout in the base class has been set to 0, reset it by passing an invalid size to setMinimumSize
- if(mainLayout) {
- mainLayout->setMinimumSize(-1, -1);
- }
-
}
-HbExactWordPopup* HbExactWordPopup::instance( HbExactWordPopupIndicator indicatorArrow ) {
+HbExactWordPopup* HbExactWordPopup::instance(HbExactWordPopupIndicator indicatorArrow)
+{
static QPointer<HbExactWordPopup> exactWordPopup;
if (!exactWordPopup) {
// HbExactWordPopup is owned by the scene
@@ -108,47 +98,33 @@
Constructor.
\param parent An optional parameter.
*/
-HbExactWordPopup::HbExactWordPopup(QGraphicsWidget *parent, HbExactWordPopupIndicator indicatorArrow ) :
- HbDialog(*new HbExactWordPopupPrivate(), parent)
+HbExactWordPopup::HbExactWordPopup(QGraphicsWidget *parent, HbExactWordPopupIndicator indicatorArrow)
+ : HbDialog(*new HbExactWordPopupPrivate(), parent)
{
Q_D(HbExactWordPopup);
HbInputRegionCollector::instance()->attach(this);
- d->mText = new HbLabel(this);
+
+ d->mText = new HbLabel();
d->mText->setAlignment(Qt::AlignCenter);
+ d->mText->setFontSpec(HbFontSpec(HbFontSpec::Primary));
+ d->mText->setContentsMargins(0, 0, 0, 0);
- d->setPriority(HbPopupPrivate::VirtualKeyboard + 1); // Should be shown on top of virtual keyboard.
+ setContentWidget(d->mText);
d->initBackground();
setTimeout(HbPopup::NoTimeout);
setBackgroundFaded(false);
- setVisible(false);
setDismissPolicy(HbPopup::TapInside);
setFocusPolicy(Qt::ClickFocus);
- setContentWidget(d->mText);
setModal(false);
+ setContentsMargins(0, 0, 0, 0);
-#if QT_VERSION >= 0x040600
// Make sure the exact word popup never steals focus.
setFlag(QGraphicsItem::ItemIsPanel, true);
setActive(false);
-#endif
- d->mOption = new HbStyleOptionLabel();
- if(d->mOption != 0 ) {
- d->mOption->text = QString(" ");
- d->mOption->boundingRect = QRectF(HbExactWordPopupStartupDisplay,HbExactWordPopupSize);
- // for hardware keypad, we need to show the arrow to indicate the word
- // and in virtual keypad this is not needed, so set the image accordingly
- setIndicatorArrow( indicatorArrow );
- d->mOption->alignment = Qt::AlignCenter;
- }
-
- d->iconPrim = static_cast<HbIconItem*>(primitive(HbStyle::P_Label_icon));
- if(d->iconPrim == 0) {
- d->iconPrim = static_cast<HbIconItem*>(style()->createPrimitive((HbStyle::Primitive)(HbStyle::P_Label_icon), this));
- }
- style()->updatePrimitive(d->iconPrim, (HbStyle::Primitive)(HbStyle::P_Label_icon), d->mOption);
+ setIndicatorArrow(indicatorArrow);
}
/*!
@@ -172,9 +148,6 @@
{
Q_D(HbExactWordPopup);
d->mText->setPlainText(newText);
-
- QRectF ps=QRectF(QPointF(0,0), d->mText->preferredSize()).adjusted(-9,-9,9,9);
- resize(ps.size());
}
/*!
@@ -184,37 +157,17 @@
*/
void HbExactWordPopup::showText(QPointF pos)
{
- // the popup should know at this stage in which main window/scene it's been launched at.
- int screenWidth = 0;
- if ( mainWindow() ) {
- screenWidth = HbDeviceProfile::profile(this).logicalSize().width();
- } else {
- // this is the fall-back if the main window is not know - can be removed when popup
- // is not relying on the primary window anymore.
- screenWidth = HbDeviceProfile::profile(mainWindow()).logicalSize().width();
- }
+ Q_D(HbExactWordPopup);
+
+ QFontMetrics fontMetrics(HbFontSpec(HbFontSpec::Primary).font());
+ qreal width = fontMetrics.width(text());
- const QRectF br = boundingRect();
- const qreal brCenter = br.width()/2;
- pos.setX(pos.x()-brCenter);
- // fix x position to keep tooltip visible
- const qreal requiredWidth = pos.x()+br.width();
- if (requiredWidth > screenWidth) {
- pos.setX(pos.x()-(requiredWidth-screenWidth));
- } else if (0 > pos.x()) {
- pos.setX(0);
- }
- pos.setY(pos.y()-br.height());
+ d->mText->setMinimumWidth(width);
+ d->mText->setMaximumWidth(width);
+
+ pos.setY(pos.y() - HbExactWordPopupHeight);
setPos(pos);
- QSizeF mySize = size();
- mySize.setHeight(HbExactWordPopupSize.height());
- resize(mySize);
-
- Q_D(HbExactWordPopup);
- d->mOption->boundingRect = QRectF(rect().center().x() - (HbExactWordPopupSize.width()/2),rect().bottom(),HbExactWordPopupSize.width(),HbExactWordPopupSize.height());
- style()->updatePrimitive(d->iconPrim, (HbStyle::Primitive)(HbStyle::P_Label_icon), d->mOption);
-
show();
}
@@ -243,7 +196,7 @@
void HbExactWordPopup::updatePrimitives()
{
- Q_D( HbExactWordPopup );
+ Q_D(HbExactWordPopup);
d->mPopupBackground->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
d->mPopupBackground->frameDrawer().setFrameGraphicsName("qtg_fr_popup_secondary");
@@ -257,13 +210,13 @@
// this method is called whenever there is a switch of keypad usage from h/w to virtual
// h/w keypad needs an indicator, whereas virtual does not, hence set the image appropriately.
-void HbExactWordPopup::setIndicatorArrow( HbExactWordPopupIndicator indicatorArrow )
+void HbExactWordPopup::setIndicatorArrow(HbExactWordPopupIndicator indicatorArrow)
{
- Q_D( HbExactWordPopup );
+ Q_D(HbExactWordPopup);
if (indicatorArrow == HbNoIndicatorArrow) {
- d->mOption->icon = (QString(""));
+ d->mText->setIcon(HbIcon());
} else {
- d->mOption->icon = (QString("qtg_graf_inpu_swipe"));
+ d->mText->setIcon(HbIcon("qtg_graf_inpu_swipe"));
}
}
--- a/src/hbinput/inputwidgets/hbinputexactwordpopup.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputexactwordpopup.h Wed Jun 23 18:33:25 2010 +0300
@@ -21,10 +21,10 @@
** If you have questions regarding the use of this file, please contact
** Nokia at developer.feedback@nokia.com.
**
-****************************************************************************/
+****************************************************************************/
-#ifndef HBEXACTWORDPOPUP_H
-#define HBEXACTWORDPOPUP_H
+#ifndef HB_INPUT_EXACT_WORD_POPUP_H
+#define HB_INPUT_EXACT_WORD_POPUP_H
#include <hbdialog.h>
#include <hbinputdef.h>
@@ -36,15 +36,17 @@
Q_OBJECT
public:
- enum HbExactWordPopupIndicator{
+ enum HbExactWordPopupIndicator {
HbNoIndicatorArrow,
HbIndicatorArrow
};
- static HbExactWordPopup* instance(HbExactWordPopupIndicator indicatorArrow = HbNoIndicatorArrow);
+ static HbExactWordPopup *instance(HbExactWordPopupIndicator indicatorArrow = HbNoIndicatorArrow);
QString text();
- int type() const {return Type;}
+ int type() const {
+ return Type;
+ }
public slots:
void setText(const QString &text);
@@ -65,5 +67,5 @@
Q_DISABLE_COPY(HbExactWordPopup)
};
-#endif // HBEXACTWORDPOPUP_H
+#endif // HB_INPUT_EXACT_WORD_POPUP_H
--- a/src/hbinput/inputwidgets/hbinputhwtoolcluster.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputhwtoolcluster.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,7 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputhwtoolcluster.h"
#include <QGraphicsGridLayout>
@@ -36,7 +37,6 @@
#include <hbdataform.h>
#include "hbinputvkbwidget_p.h"
-#include "hbinputhwtoolcluster.h"
#include "hbinputmodeindicator.h"
const QString HbCustomButtonObjName = "Mini VKB custom button ";
@@ -81,9 +81,9 @@
/*!
Constructs the object.
*/
-HbHwToolCluster::HbHwToolCluster(HbInputMethod* owner,
- QGraphicsItem* parent)
- : HbInputVkbWidget(*new HbHwToolClusterPrivate, parent)
+HbHwToolCluster::HbHwToolCluster(HbInputMethod *owner,
+ QGraphicsItem *parent)
+ : HbInputVkbWidget(*new HbHwToolClusterPrivate, parent)
{
if (0 == owner) {
return;
@@ -136,7 +136,7 @@
qreal height = size.height() - HbCloseHandleHeight;
qreal width = size.width() / (qreal)HbMiniVirtualKeypadNumberOfColumn;
- for (int i=0; i < HbMiniVirtualKeypadNumberOfColumn ;i++) {
+ for (int i = 0; i < HbMiniVirtualKeypadNumberOfColumn ; i++) {
d->mButtonLayout->setColumnFixedWidth(i, width);
}
//There is only one row
@@ -157,7 +157,7 @@
ret = d->mCurrentHost->keyboardArea();
//Since this is a mini VKB, it has a lesser size than the available
//area for the keypad.
- ret.setHeight(ret.height()/HbMiniVirtualKeypadReductionFactor);
+ ret.setHeight(ret.height() / HbMiniVirtualKeypadReductionFactor);
return ret;
}
@@ -172,7 +172,7 @@
Q_D(HbHwToolCluster);
HbInputMethodDescriptor method
- = HbInputCommonDialogs::showCustomInputMethodSelectionDialog(HbInputSettingProxy::instance()->globalInputLanguage());
+ = HbInputCommonDialogs::showCustomInputMethodSelectionDialog(HbInputSettingProxy::instance()->globalInputLanguage());
if (!method.isEmpty() && d->mOwner) {
d->mOwner->activateInputMethod(method);
}
--- a/src/hbinput/inputwidgets/hbinputhwtoolcluster.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputhwtoolcluster.h Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef _HBINPUT_HW_TOOL_CLUSTER_H
-#define _HBINPUT_HW_TOOL_CLUSTER_H
+#ifndef HB_INPUT_HW_TOOL_CLUSTER_H
+#define HB_INPUT_HW_TOOL_CLUSTER_H
#include "hbinputvkbwidget.h"
@@ -37,7 +37,7 @@
Q_OBJECT
public:
- HbHwToolCluster(HbInputMethod* owner, QGraphicsItem* parent = NULL);
+ explicit HbHwToolCluster(HbInputMethod *owner, QGraphicsItem *parent = NULL);
~HbHwToolCluster();
public: // From HbVirtualKeyboard
@@ -46,7 +46,7 @@
QSizeF preferredKeyboardSize();
void createLayout();
void setupToolCluster();
-
+
public slots:
void showMethodDialog();
void showLanguageDialog();
--- a/src/hbinput/inputwidgets/hbinputmodeindicator.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputmodeindicator.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,13 +22,13 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include <hbinputmodeindicator.h>
#include <QPainter>
#include <QPointer>
#include <hbicon.h>
#include <hbinputmethod.h>
#include <hbinputeditorinterface.h>
-#include <hbinputmodeindicator.h>
#include <hbinputfocusobject.h>
#include <hbinputsettingproxy.h>
@@ -36,19 +36,19 @@
class HbInputModeIndicatorPrivate
{
-public:
+public:
HbInputModeIndicatorPrivate(HbInputButton *button);
~HbInputModeIndicatorPrivate();
void updatePrediction();
-public:
+public:
HbInputButton *mButtonItem;
QPointer<HbInputFocusObject> mFocusObject;
};
HbInputModeIndicatorPrivate::HbInputModeIndicatorPrivate(HbInputButton *button)
- : mButtonItem(button), mFocusObject(0)
+ : mButtonItem(button), mFocusObject(0)
{
if (HbInputMethod::activeInputMethod()) {
mFocusObject = HbInputMethod::activeInputMethod()->focusObject();
@@ -72,7 +72,7 @@
if (HbInputSettingProxy::instance()->predictiveInputStatusForActiveKeyboard() &&
mFocusObject && mFocusObject->editorInterface().isPredictionAllowed()) {
icon = HbIcon(predictionOnIcon);
- } else {
+ } else {
icon = HbIcon(predictionOffIcon);
}
icon.setColor(color);
@@ -99,7 +99,7 @@
{
mPrivate = new HbInputModeIndicatorPrivate(button);
if (mPrivate->mFocusObject) {
- connect (&mPrivate->mFocusObject->editorInterface(), SIGNAL(modified()), this, SLOT(updateIndicator()));
+ connect(&mPrivate->mFocusObject->editorInterface(), SIGNAL(modified()), this, SLOT(updateIndicator()));
}
connect(HbInputSettingProxy::instance(), SIGNAL(predictiveInputStateChanged(HbKeyboardSettingFlags, bool)),
this, SLOT(updatePredictionStatus(HbKeyboardSettingFlags, bool)));
@@ -123,7 +123,7 @@
if (HbInputMethod::activeInputMethod()) {
mPrivate->mFocusObject = HbInputMethod::activeInputMethod()->focusObject();
if (mPrivate->mFocusObject) {
- connect( &mPrivate->mFocusObject->editorInterface(), SIGNAL(modified()), this, SLOT(updateIndicator()));
+ connect(&mPrivate->mFocusObject->editorInterface(), SIGNAL(modified()), this, SLOT(updateIndicator()));
} else {
return;
}
--- a/src/hbinput/inputwidgets/hbinputmodeindicator.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputmodeindicator.h Wed Jun 23 18:33:25 2010 +0300
@@ -37,7 +37,7 @@
{
Q_OBJECT
public:
- HbInputModeIndicator(HbInputButton *button, QGraphicsWidget *parent = 0);
+ explicit HbInputModeIndicator(HbInputButton *button, QGraphicsWidget *parent = 0);
virtual ~HbInputModeIndicator();
public slots:
@@ -46,7 +46,7 @@
private:
Q_DISABLE_COPY(HbInputModeIndicator)
- HbInputModeIndicatorPrivate* mPrivate;
+ HbInputModeIndicatorPrivate *mPrivate;
};
#endif // HB_INPUT_MODE_INDICATOR_H
--- a/src/hbinput/inputwidgets/hbinputqwertytouchkeyboard_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputqwertytouchkeyboard_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -44,7 +44,7 @@
class HB_INPUT_PRIVATE_EXPORT HbQwertyKeyboardPrivate : public HbInputVkbWidgetPrivate
{
- Q_DECLARE_PUBLIC(HbQwertyKeyboard)
+ Q_DECLARE_PUBLIC(HbQwertyKeyboard)
public:
@@ -58,8 +58,8 @@
void initializeKeyboard(bool refreshButtonText);
void initializeNumericKeyboard();
bool showPreview(int keycode);
- void setButtonObjectName(HbTouchKeypadButton& button, int row, int column, Qt::Key specialKey);
- void launchPreviewPane(const QStringList& list);
+ void setButtonObjectName(HbTouchKeypadButton &button, int row, int column, Qt::Key specialKey);
+ void launchPreviewPane(const QStringList &list);
void applyEditorConstraints();
void setRockerPosition();
@@ -71,11 +71,11 @@
int indexForKeycode(int keyCode);
int keyCode(int buttonId);
int keyCode(HbTouchKeypadButton *button);
- void getAllowedSctCharcters(QString & allowedSctCharacters);
+ void getAllowedSctCharcters(QString &allowedSctCharacters);
void updateButtonsTextAndMappers();
public:
- QList<HbTouchKeypadButton*> mButtons;
- QList<HbStyleOptionLabel*> mKeypadButtonOption;
+ QList<HbTouchKeypadButton *> mButtons;
+ QList<HbStyleOptionLabel *> mKeypadButtonOption;
int mCtrlBtnIndex;
int mPressedButtonIndex;
--- a/src/hbinput/inputwidgets/hbinputscreenshotwidget.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputscreenshotwidget.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,8 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputscreenshotwidget.h"
+
#include <QPixmap>
#include <QPainter>
@@ -30,11 +32,8 @@
#include <hbinputregioncollector_p.h>
#include "hbframedrawerpool_p.h"
-
-#include "hbinputscreenshotwidget.h"
#include "hbinputvkbwidget.h"
-
/*!
@proto
@hbinput
@@ -66,7 +65,7 @@
};
HbInputScreenshotWidgetPrivate::HbInputScreenshotWidgetPrivate()
- : mIconDrawer(0), mCloseHandleHeight(0), mCloseHandleWidth(0)
+ : mIconDrawer(0), mCloseHandleHeight(0), mCloseHandleWidth(0)
{
}
@@ -81,31 +80,30 @@
/*!
Costructs the object.
*/
-HbInputScreenshotWidget::HbInputScreenshotWidget(QGraphicsItem* parent)
+HbInputScreenshotWidget::HbInputScreenshotWidget(QGraphicsItem *parent)
: HbWidget(*new HbInputScreenshotWidgetPrivate, parent)
{
Q_D(HbInputScreenshotWidget);
d->q_ptr = this;
HbInputRegionCollector::instance()->attach(this);
- setPos(QPointF(0,0));
+ setPos(QPointF(0, 0));
#ifdef HB_EFFECTS
HbEffect::disable(this);
#endif // HB_EFFECTS
-#if QT_VERSION >= 0x040600
// Make sure the keypad never steals focus.
setFlag(QGraphicsItem::ItemIsPanel, true);
setActive(false);
-#endif
+ setFlag(QGraphicsItem::ItemHasNoContents, false);
}
/*!
Destructs the object.
*/
HbInputScreenshotWidget::~HbInputScreenshotWidget()
-{
+{
}
void HbInputScreenshotWidget::setScreenshot(QPixmap &pixmap)
@@ -127,7 +125,7 @@
/*!
handles mouse press event.
*/
-void HbInputScreenshotWidget::mousePressEvent(QGraphicsSceneMouseEvent* event)
+void HbInputScreenshotWidget::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(event);
}
@@ -135,7 +133,7 @@
/*!
Handles mouse release event.
*/
-void HbInputScreenshotWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent* event)
+void HbInputScreenshotWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(event);
}
@@ -143,13 +141,13 @@
/*!
The paint method. Draws the widget.
*/
-void HbInputScreenshotWidget::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
+void HbInputScreenshotWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
Q_D(HbInputScreenshotWidget);
- if (!d->mPixmap.isNull()){
+ if (!d->mPixmap.isNull()) {
QRectF rect = boundingRect();
painter->save();
@@ -161,7 +159,7 @@
painter->save();
painter->translate(0, d->mCloseHandleHeight);
- painter->drawPixmap(0, 0, d->mPixmap);
+ painter->drawPixmap(0, 0, d->mPixmap);
painter->restore();
}
}
--- a/src/hbinput/inputwidgets/hbinputscreenshotwidget.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputscreenshotwidget.h Wed Jun 23 18:33:25 2010 +0300
@@ -44,11 +44,13 @@
void setScreenshot(QPixmap &pixmap);
protected: // From QGraphicsItem
- virtual QPainterPath shape () const;
- virtual void mousePressEvent(QGraphicsSceneMouseEvent* event);
- virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent* event);
- virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget);
- virtual int type() const { return Hb::ItemType_InputVkbWidget; }
+ virtual QPainterPath shape() const;
+ virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
+ virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+ virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
+ virtual int type() const {
+ return Hb::ItemType_InputVkbWidget;
+ }
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbInputScreenshotWidget)
--- a/src/hbinput/inputwidgets/hbinputsctkeyboard.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputsctkeyboard.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,8 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputsctkeyboard.h"
+#include "hbinputsctkeyboard_p.h"
#include <math.h>
@@ -33,8 +35,6 @@
#include <hbframedrawer.h>
#include <hbinputsettingproxy.h>
-#include "hbinputsctkeyboard.h"
-#include "hbinputsctkeyboard_p.h"
#include "hbinputbuttongroup.h"
#include "hbinputbutton.h"
@@ -45,8 +45,7 @@
const int HbSctPortraitNumberOfRows = 5;
const int HbSctPortraitNumberOfColumns = 5;
-const int HbPortraitButtonKeyCodeTable[HbSctPortraitNumberOfRows * HbSctPortraitNumberOfColumns] =
-{
+const int HbPortraitButtonKeyCodeTable[HbSctPortraitNumberOfRows *HbSctPortraitNumberOfColumns] = {
HbInputButton::ButtonKeyCodeCharacter,
HbInputButton::ButtonKeyCodeCharacter,
HbInputButton::ButtonKeyCodeCharacter,
@@ -76,8 +75,7 @@
const int HbSctLandscapeNumberOfRows = 4;
const int HbSctLandscapeNumberOfColumns = 10;
-const int HbLandscapeButtonKeyCodeTable[HbSctLandscapeNumberOfRows * HbSctLandscapeNumberOfColumns] =
-{
+const int HbLandscapeButtonKeyCodeTable[HbSctLandscapeNumberOfRows *HbSctLandscapeNumberOfColumns] = {
HbInputButton::ButtonKeyCodeCharacter,
HbInputButton::ButtonKeyCodeCharacter,
HbInputButton::ButtonKeyCodeCharacter,
@@ -132,8 +130,8 @@
*/
HbSctKeyboardPrivate::HbSctKeyboardPrivate()
- : mType(HbKeyboardSctPortrait), mColumns(0), mRows(0),
- mCharacterButtons(0), mPages(0), mActivePage(0)
+ : mType(HbKeyboardSctPortrait), mColumns(0), mRows(0),
+ mCharacterButtons(0), mPages(0), mActivePage(0)
{
}
@@ -151,7 +149,7 @@
mType = HbKeyboardSctLandscape;
}
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(q->contentItem());
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(q->contentItem());
if (buttonGroup) {
mColumns = HbSctPortraitNumberOfColumns;
mRows = HbSctPortraitNumberOfRows;
@@ -165,11 +163,11 @@
buttonGroup->setGridSize(QSize(mColumns, mRows));
int key = 0;
- QList<HbInputButton*> buttons;
+ QList<HbInputButton *> buttons;
for (int i = 0; i < mColumns * mRows; ++i) {
HbInputButton *item = new HbInputButton(keyCode(i), QPoint(key % mColumns, key / mColumns));
buttons.append(item);
-
+
if (keyCode(i) == HbInputButton::ButtonKeyCodeCharacter) {
++mCharacterButtons;
} else if (keyCode(i) == HbInputButton::ButtonKeyCodeSpace) {
@@ -186,13 +184,13 @@
}
buttonGroup->setButtons(buttons);
- QObject::connect(buttonGroup, SIGNAL(buttonPressed(const QKeyEvent&)), q, SLOT(sendKeyPressEvent(const QKeyEvent&)));
- QObject::connect(buttonGroup, SIGNAL(buttonDoublePressed(const QKeyEvent&)), q, SLOT(sendKeyDoublePressEvent(const QKeyEvent&)));
- QObject::connect(buttonGroup, SIGNAL(buttonReleased(const QKeyEvent&)), q, SLOT(sendKeyReleaseEvent(const QKeyEvent&)));
- QObject::connect(buttonGroup, SIGNAL(buttonLongPressed(const QKeyEvent&)), q, SLOT(sendLongPressEvent(const QKeyEvent&)));
- QObject::connect(buttonGroup, SIGNAL(pressedButtonChanged(const QKeyEvent&, const QKeyEvent&)), q, SLOT(sendKeyChangeEvent(const QKeyEvent&, const QKeyEvent&)));
+ QObject::connect(buttonGroup, SIGNAL(buttonPressed(const QKeyEvent &)), q, SLOT(sendKeyPressEvent(const QKeyEvent &)));
+ QObject::connect(buttonGroup, SIGNAL(buttonDoublePressed(const QKeyEvent &)), q, SLOT(sendKeyDoublePressEvent(const QKeyEvent &)));
+ QObject::connect(buttonGroup, SIGNAL(buttonReleased(const QKeyEvent &)), q, SLOT(sendKeyReleaseEvent(const QKeyEvent &)));
+ QObject::connect(buttonGroup, SIGNAL(buttonLongPressed(const QKeyEvent &)), q, SLOT(sendLongPressEvent(const QKeyEvent &)));
+ QObject::connect(buttonGroup, SIGNAL(pressedButtonChanged(const QKeyEvent &, const QKeyEvent &)), q, SLOT(sendKeyChangeEvent(const QKeyEvent &, const QKeyEvent &)));
}
-
+
QObject::connect(q, SIGNAL(flickEvent(HbInputVkbWidget::HbFlickDirection)), buttonGroup, SLOT(cancelButtonPress()));
}
@@ -214,9 +212,9 @@
return;
}
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(q->contentItem());
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(q->contentItem());
if (buttonGroup) {
- QList<HbInputButton*> buttons = buttonGroup->buttons();
+ QList<HbInputButton *> buttons = buttonGroup->buttons();
for (int i = 0; i < buttons.count(); ++i) {
HbInputButton *item = buttons.at(i);
@@ -257,10 +255,10 @@
mFlickAnimation = true;
}
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(q->contentItem());
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(q->contentItem());
if (buttonGroup) {
int key = mActivePage * mCharacterButtons;
- QList<HbInputButton*> buttons = buttonGroup->buttons();
+ QList<HbInputButton *> buttons = buttonGroup->buttons();
for (int i = 0; i < buttons.count(); ++i) {
if (keyCode(i) == HbInputButton::ButtonKeyCodeCharacter) {
HbInputButton *item = buttons.at(i);
@@ -280,16 +278,16 @@
{
Q_Q(HbSctKeyboard);
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(q->contentItem());
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(q->contentItem());
if (buttonGroup) {
int key = mActivePage * mCharacterButtons;
- QList<HbInputButton*> buttons = buttonGroup->buttons();
+ QList<HbInputButton *> buttons = buttonGroup->buttons();
for (int i = 0; i < buttons.count(); ++i) {
if (keyCode(i) == HbInputButton::ButtonKeyCodeCharacter) {
HbInputButton *item = buttons.at(i);
const HbKeyboardMap *keyboardMap = mKeymap->keyboard(q->keyboardType());
- if (keyboardMap && key < keyboardMap->keys.count() && keyboardMap->keys.at(key)->characters(HbModifierNone)!= QString("")) {
+ if (keyboardMap && key < keyboardMap->keys.count() && keyboardMap->keys.at(key)->characters(HbModifierNone) != QString("")) {
QString keydata = keyboardMap->keys.at(key)->characters(HbModifierNone);
item->setText(keydata.at(0), HbInputButton::ButtonTextIndexPrimary);
} else {
@@ -310,13 +308,13 @@
setKeymap.
*/
HbSctKeyboard::HbSctKeyboard(HbInputMethod *owner, const HbKeymap *keymap, QGraphicsItem *parent)
- : HbInputVkbWidget(*new HbSctKeyboardPrivate, parent)
+ : HbInputVkbWidget(*new HbSctKeyboardPrivate, parent)
{
if (!owner) {
return;
}
Q_D(HbSctKeyboard);
- d->mOwner = owner;
+ d->mOwner = owner;
setKeymap(keymap);
const HbKeyboardMap *keyboardMap = keymap->keyboard(keyboardType());
@@ -341,14 +339,14 @@
setKeymap.
*/
HbSctKeyboard::HbSctKeyboard(HbSctKeyboardPrivate &dd, HbInputMethod *owner,
- const HbKeymap *keymap, QGraphicsItem* parent)
- : HbInputVkbWidget(dd, parent)
+ const HbKeymap *keymap, QGraphicsItem *parent)
+ : HbInputVkbWidget(dd, parent)
{
if (!owner) {
return;
}
Q_D(HbSctKeyboard);
- d->mOwner = owner;
+ d->mOwner = owner;
setKeymap(keymap);
const HbKeyboardMap *keyboardMap = keymap->keyboard(keyboardType());
@@ -422,9 +420,9 @@
*/
void HbSctKeyboard::updateButtonPreviewStatus(bool status)
{
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(contentItem());
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(contentItem());
if (buttonGroup) {
- buttonGroup->setButtonPreviewEnabled(status);
+ buttonGroup->setButtonPreviewEnabled(status);
}
}
@@ -485,7 +483,7 @@
*/
void HbSctKeyboard::sendKeyChangeEvent(const QKeyEvent &releaseEvent, const QKeyEvent &pressEvent)
{
- if (pressEvent.key() != HbInputButton::ButtonKeyCodePageChange &&
+ if (pressEvent.key() != HbInputButton::ButtonKeyCodePageChange &&
pressEvent.key() != HbInputButton::ButtonKeyCodeSmiley) {
HbInputVkbWidget::sendKeyChangeEvent(releaseEvent, pressEvent);
}
--- a/src/hbinput/inputwidgets/hbinputsctkeyboard.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputsctkeyboard.h Wed Jun 23 18:33:25 2010 +0300
@@ -53,7 +53,7 @@
void sendKeyChangeEvent(const QKeyEvent &pressEvent, const QKeyEvent &releaseEvent);
protected:
- HbSctKeyboard(HbSctKeyboardPrivate &dd, HbInputMethod *owner, const HbKeymap *keymap, QGraphicsItem* parent);
+ HbSctKeyboard(HbSctKeyboardPrivate &dd, HbInputMethod *owner, const HbKeymap *keymap, QGraphicsItem *parent);
private slots:
void updateButtonPreviewStatus(bool status);
--- a/src/hbinput/inputwidgets/hbinputsctlandscape_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputsctlandscape_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -59,7 +59,7 @@
void getSpecialCharacters();
- void setSctButtons(const QString& characters);
+ void setSctButtons(const QString &characters);
void setAsFunctionButton(int index, const HbIcon &icon, const QString &text);
void latchRangeButton(int buttonId);
--- a/src/hbinput/inputwidgets/hbinputsettinglist.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputsettinglist.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,7 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputsettinglist.h"
#include <QGraphicsLinearLayout>
#include <QGraphicsGridLayout>
@@ -36,7 +37,6 @@
#include <hbinputpredictionfactory.h>
#include <hbinputregioncollector_p.h>
-#include "hbinputsettinglist.h"
#include "hbdialog_p.h"
const QString settingsIcon("qtg_mono_settings");
@@ -61,7 +61,7 @@
};
HbInputSettingListPrivate::HbInputSettingListPrivate()
- : mLanguageButton(0), mPredictionButton(0), mOptionList(0)
+ : mLanguageButton(0), mPredictionButton(0), mOptionList(0)
{
}
@@ -72,7 +72,7 @@
HbInputUtils::listSupportedInputLanguages(languages);
QFontMetrics fontMetrics(mLanguageButton->font());
- foreach (HbInputLanguage language, languages) {
+ foreach(HbInputLanguage language, languages) {
qreal width = fontMetrics.width(language.localisedName());
if (width > nameWidth) {
nameWidth = width;
@@ -87,15 +87,15 @@
/*!
Constructs input setting list
*/
-HbInputSettingList::HbInputSettingList(QGraphicsWidget* parent)
- : HbDialog(*new HbInputSettingListPrivate(), parent)
+HbInputSettingList::HbInputSettingList(QGraphicsWidget *parent)
+ : HbDialog(*new HbInputSettingListPrivate(), parent)
{
Q_D(HbInputSettingList);
HbInputRegionCollector::instance()->attach(this);
QGraphicsLinearLayout *mainLayout = new QGraphicsLinearLayout(Qt::Vertical);
QGraphicsGridLayout *gridLayout = new QGraphicsGridLayout();
-
+
HbLabel *languageLabel = new HbLabel(tr("Language"), this);
languageLabel->setFontSpec(HbFontSpec(HbFontSpec::Primary));
d->mLanguageButton = new HbPushButton(QString(), this);
@@ -130,7 +130,9 @@
mainLayout->addItem(gridLayout);
mainLayout->addItem(d->mOptionList);
- setLayout(mainLayout);
+ QGraphicsWidget *content = new QGraphicsWidget(this);
+ content->setLayout(mainLayout);
+ setContentWidget(content);
d->mPredictionValues.append(tr("Off"));
d->mPredictionValues.append(tr("On"));
@@ -140,16 +142,14 @@
setBackgroundFaded(false);
setDismissPolicy(TapOutside);
-#if QT_VERSION >= 0x040600
// Make sure the custom button list never steals focus.
setFlag(QGraphicsItem::ItemIsPanel, true);
setActive(false);
-#endif
connect(d->mLanguageButton, SIGNAL(clicked(bool)), this, SLOT(languageButtonClicked()));
connect(d->mPredictionButton, SIGNAL(clicked(bool)), this, SLOT(predictionButtonClicked()));
- connect(d->mOptionList, SIGNAL(activated(HbListWidgetItem*)), this, SLOT(listItemActivated(HbListWidgetItem*)));
- connect(d->mOptionList, SIGNAL(longPressed(HbListWidgetItem*, const QPointF&)), this, SLOT(listItemActivated(HbListWidgetItem*)));
+ connect(d->mOptionList, SIGNAL(activated(HbListWidgetItem *)), this, SLOT(listItemActivated(HbListWidgetItem *)));
+ connect(d->mOptionList, SIGNAL(longPressed(HbListWidgetItem *, const QPointF &)), this, SLOT(listItemActivated(HbListWidgetItem *)));
HbInputSettingProxy *settings = HbInputSettingProxy::instance();
connect(settings, SIGNAL(globalInputLanguageChanged(const HbInputLanguage &)), this, SLOT(primaryLanguageChanged(const HbInputLanguage &)));
@@ -218,23 +218,23 @@
{
Q_D(HbInputSettingList);
- HbInputSettingProxy *settings = HbInputSettingProxy::instance();
+ HbInputSettingProxy *settings = HbInputSettingProxy::instance();
HbPredictionFactory *predFactory = HbPredictionFactory::instance();
if (d->mSecondaryLanguage == HbInputLanguage()) {
emit inputSettingsButtonClicked();
} else {
- HbInputLanguage language = d->mPrimaryLanguage;
- bool oldPLangSupportsPrediction = (predFactory->predictionEngineForLanguage(language) != NULL);
+ HbInputLanguage language = d->mPrimaryLanguage;
+ bool oldPLangSupportsPrediction = (predFactory->predictionEngineForLanguage(language) != NULL);
d->mPrimaryLanguage = d->mSecondaryLanguage;
d->mSecondaryLanguage = language;
HbInputSettingProxy::instance()->setGlobalInputLanguage(d->mPrimaryLanguage);
- bool langSupportsPrediction = (predFactory->predictionEngineForLanguage(d->mPrimaryLanguage) != NULL);
+ bool langSupportsPrediction = (predFactory->predictionEngineForLanguage(d->mPrimaryLanguage) != NULL);
HbInputSettingProxy::instance()->setGlobalSecondaryInputLanguage(d->mSecondaryLanguage);
-
- if( oldPLangSupportsPrediction != langSupportsPrediction) {
+
+ if (oldPLangSupportsPrediction != langSupportsPrediction) {
settings->setPredictiveInputStatusForActiveKeyboard(langSupportsPrediction);
- }
+ }
}
close();
--- a/src/hbinput/inputwidgets/hbinputsettinglist.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputsettinglist.h Wed Jun 23 18:33:25 2010 +0300
@@ -38,7 +38,7 @@
Q_OBJECT
public:
- HbInputSettingList(QGraphicsWidget* parent = 0);
+ HbInputSettingList(QGraphicsWidget *parent = 0);
virtual ~HbInputSettingList();
public:
@@ -60,7 +60,7 @@
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbInputSettingList)
- Q_DISABLE_COPY(HbInputSettingList)
+ Q_DISABLE_COPY(HbInputSettingList)
};
#endif // HB_INPUT_SETTING_LIST_H
--- a/src/hbinput/inputwidgets/hbinputsettingwidget.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputsettingwidget.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,7 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputsettingwidget.h"
#include <hbdataform.h>
#include <hbdataformmodel.h>
@@ -30,7 +31,6 @@
#include <hbinputpredictionfactory.h>
#include <QtAlgorithms>
-#include "hbinputsettingwidget.h"
#include "hbinputcheckboxlist_p.h"
const QString statusOff = QObject::tr("Off");
@@ -54,7 +54,7 @@
int languageToIndex(const HbInputLanguage &language, const QList<HbInputLanguage> &languageList);
HbInputLanguage indexToLanguage(int index, const QList<HbInputLanguage> &languageList);
void createSecondaryLanguageList();
-
+ void updateContentWidgetData();
public:
HbDataForm *mForm;
HbDataFormModelItem *mPrimaryLanguageItem;
@@ -78,6 +78,7 @@
HbTypingCorrectionLevel mTypingCorrectionLevel;
HbPrimaryCandidateMode mPrimaryCandidateMode;
HbInputSettingWidget *q_ptr;
+ HbDataFormModel *mModel;
};
/*!
@@ -88,7 +89,7 @@
mSecondaryLanguageItem(NULL), mKeypressTimeoutItem(NULL),
mCharacterPreviewItem(NULL), mPredictionItem(NULL),
mAutoCompletionItem(NULL), mCorrectionLevelItem(NULL),
- mPrimaryCandidateItem(NULL), q_ptr(NULL)
+ mPrimaryCandidateItem(NULL), q_ptr(NULL), mModel(0)
{
}
@@ -111,8 +112,54 @@
HbInputUtils::listSupportedInputLanguages(mPrimaryLanguages);
createSecondaryLanguageList();
+ // if the model is already constructed we do not need to recreate the setting items
+ if (!mModel) {
+ createSettingItems();
+ } else {
+ // simply update the settings dependant content widget data of all the items
+ updateContentWidgetData();
+ //make sure that the items are not expanded
+ QModelIndex index = mModel->indexFromItem(mSecondaryLanguageItem->parent());
+ mForm->setExpanded(index, false);
+ index = mModel->indexFromItem(mKeypressTimeoutItem->parent());
+ mForm->setExpanded(index, false);
+ index = mModel->indexFromItem(mPredictionItem->parent());
+ mForm->setExpanded(index, false);
+ }
+}
- createSettingItems();
+void HbInputSettingWidgetPrivate::updateContentWidgetData()
+{
+ // current primary language
+ mPrimaryLanguageItem->setContentWidgetData(QString("currentIndex"), languageToIndex(mPrimaryInputLanguage, mPrimaryLanguages));
+
+ mSecondaryLanguageItem->setContentWidgetData(QString("currentIndex"), languageToIndex(mSecondaryInputLanguage, mSecondaryLanguages));
+ // key press timeout
+ mKeypressTimeoutItem->setContentWidgetData(QString("sliderPosition"), mKeypressTimeout);
+ if (mCharacterPreviewEnabled) {
+ mCharacterPreviewItem->setContentWidgetData(QString("text"), statusOn);
+ mCharacterPreviewItem->setContentWidgetData(QString("additionalText"), statusOff);
+ } else {
+ mCharacterPreviewItem->setContentWidgetData(QString("text"), statusOff);
+ mCharacterPreviewItem->setContentWidgetData(QString("additionalText"), statusOn);
+ }
+ QList<QVariant> predictionEnabled;
+ predictionEnabled << mPredictionStatusForQwerty << mPredictionStatusForITUT;
+ mPredictionItem->setContentWidgetData(QString("selectedItems"), predictionEnabled);
+
+ QList<QVariant> autocompletionEnabled;
+ autocompletionEnabled << mAutocompletionForQwerty << mAutocompletionForITUT;
+ mAutoCompletionItem->setContentWidgetData(QString("selectedItems"), autocompletionEnabled);
+
+ mCorrectionLevelItem->setContentWidgetData(QString("selected"), mTypingCorrectionLevel);
+
+ if (mPrimaryCandidateMode == HbPrimaryCandidateModeBestPrediction) {
+ mPrimaryCandidateItem->setContentWidgetData(QString("text"), bestPrediction);
+ mPrimaryCandidateItem->setContentWidgetData(QString("additionalText"), exactTyping);
+ } else {
+ mPrimaryCandidateItem->setContentWidgetData(QString("text"), exactTyping);
+ mPrimaryCandidateItem->setContentWidgetData(QString("additionalText"), bestPrediction);
+ }
}
/*!
@@ -122,14 +169,14 @@
{
Q_Q(HbInputSettingWidget);
- HbDataFormModel *model = new HbDataFormModel();
+ mModel = new HbDataFormModel();
HbInputCheckBoxList *customPrototype = new HbInputCheckBoxList(mForm);
QList<HbAbstractViewItem*> prototypes = mForm->itemPrototypes();
prototypes.append(customPrototype);
mForm->setItemPrototypes(prototypes);
- HbDataFormModelItem *languageGroup = model->appendDataFormGroup(QObject::tr("Language"));
+ HbDataFormModelItem *languageGroup = mModel->appendDataFormGroup(QObject::tr("Language"));
mPrimaryLanguageItem = new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem, QObject::tr("Primary Writing language"));
languageGroup->appendChild(mPrimaryLanguageItem);
@@ -149,7 +196,7 @@
mSecondaryLanguageItem->setContentWidgetData(QString("objectName"), QString("secondary_writing_language"));
mForm->addConnection(mSecondaryLanguageItem, SIGNAL(currentIndexChanged(int)), q, SLOT(setSecondaryLanguage(int)));
- HbDataFormModelItem *keyboardGroup = model->appendDataFormGroup(QObject::tr("Keyboard"));
+ HbDataFormModelItem *keyboardGroup = mModel->appendDataFormGroup(QObject::tr("Keyboard"));
mKeypressTimeoutItem = new HbDataFormModelItem(HbDataFormModelItem::SliderItem, QObject::tr("Keypress Timeout"));
keyboardGroup->appendChild(mKeypressTimeoutItem);
@@ -169,9 +216,10 @@
mCharacterPreviewItem->setContentWidgetData(QString("additionalText"), statusOn);
}
mCharacterPreviewItem->setContentWidgetData(QString("objectName"), QString("character_bubble"));
- mForm->addConnection(mCharacterPreviewItem, SIGNAL(clicked(bool)), q, SLOT(setCharacterPreviewState()));
+
- HbDataFormModelItem *textInputGroup = model->appendDataFormGroup(QObject::tr("Intelligent Text Input"));
+
+ HbDataFormModelItem *textInputGroup = mModel->appendDataFormGroup(QObject::tr("Intelligent Text Input"));
HbDataFormModelItem::DataItemType checkboxList =
static_cast<HbDataFormModelItem::DataItemType>(HbDataFormModelItem::CustomItemBase);
@@ -217,9 +265,8 @@
mPrimaryCandidateItem->setContentWidgetData(QString("additionalText"), bestPrediction);
}
mPrimaryCandidateItem->setContentWidgetData(QString("objectName"), QString("primary_candidate"));
- mForm->addConnection(mPrimaryCandidateItem, SIGNAL(clicked(bool)), q, SLOT(setPrimaryCandidateMode()));
-
- mForm->setModel(model);
+ mForm->setModel(mModel);
+ QObject::connect(mModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), q, SLOT(dataChange(QModelIndex, QModelIndex)));
}
/*!
@@ -584,5 +631,37 @@
}
HbInputSettingProxy::instance()->setPrimaryCandidateMode(d->mPrimaryCandidateMode);
}
+/*
+ This slot is called when ever data in the form model is changed
+*/
+void HbInputSettingWidget::dataChange(const QModelIndex &startIn, const QModelIndex &endIn)
+{
+ Q_D(HbInputSettingWidget);
+ Q_UNUSED(endIn);
+ HbDataFormModelItem *item = d->mModel->itemFromIndex(startIn);
+ if(item == d->mPrimaryCandidateItem) {
+ setPrimaryCandidateMode();
+ } else if(item == d->mCharacterPreviewItem) {
+ setCharacterPreviewState();
+ }
+}
+
+/*
+ Resets the widget and disconnects the signals connected to the settings proxy
+*/
+
+void HbInputSettingWidget::resetWidget()
+{
+ HbInputSettingProxy *settings = HbInputSettingProxy::instance();
+ disconnect(settings, SIGNAL(globalInputLanguageChanged(const HbInputLanguage &)), this, SLOT(updateGlobalInputLanguage(const HbInputLanguage &)));
+ disconnect(settings, SIGNAL(globalSecondaryInputLanguageChanged(const HbInputLanguage &)), this, SLOT(updateGlobalSecondaryInputLanguage(const HbInputLanguage &)));
+ disconnect(settings, SIGNAL(predictiveInputStateChanged(HbKeyboardSettingFlags, bool)), this, SLOT(updatePredictiveInputState(HbKeyboardSettingFlags, bool)));
+ disconnect(settings, SIGNAL(characterPreviewStateForQwertyChanged(bool)), this, SLOT(updateCharacterPreviewStateForQwerty(bool)));
+ disconnect(settings, SIGNAL(keypressTimeoutChanged(int)), this, SLOT(updateKeypressTimeout(int)));
+ disconnect(settings, SIGNAL(autocompletionStateChanged(HbKeyboardSettingFlags, bool)), this, SLOT(updateAutocompletionState(HbKeyboardSettingFlags, bool)));
+ disconnect(settings, SIGNAL(typingCorrectionLevelChanged(HbTypingCorrectionLevel)), this, SLOT(updateTypingCorrectionLevel(HbTypingCorrectionLevel)));
+ disconnect(settings, SIGNAL(primaryCandidateModeChanged(HbPrimaryCandidateMode)), this, SLOT(updatePrimaryCandidateMode(HbPrimaryCandidateMode)));
+}
+
// End of file
--- a/src/hbinput/inputwidgets/hbinputsettingwidget.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputsettingwidget.h Wed Jun 23 18:33:25 2010 +0300
@@ -41,10 +41,12 @@
Q_OBJECT
public:
- explicit HbInputSettingWidget(HbDataForm *dataForm, QGraphicsWidget* parent = 0);
+ explicit HbInputSettingWidget(HbDataForm *dataForm, QGraphicsWidget *parent = 0);
virtual ~HbInputSettingWidget();
void initializeWidget();
+
+ void resetWidget();
public slots:
void updateGlobalInputLanguage(const HbInputLanguage &newLanguage);
@@ -64,9 +66,10 @@
void setAutocompletionState(const QModelIndex &index);
void setCorrectionLevel(int index);
void setPrimaryCandidateMode();
+ void dataChange(const QModelIndex &startIn, const QModelIndex &endIn);
protected:
- HbInputSettingWidgetPrivate * const d_ptr;
+ HbInputSettingWidgetPrivate *const d_ptr;
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbInputSettingWidget)
--- a/src/hbinput/inputwidgets/hbinputsmileypicker.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputsmileypicker.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,7 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputsmileypicker.h"
#include <hbgridview.h>
#include <hbview.h>
@@ -37,8 +38,6 @@
#include <hbdialog_p.h>
#include <hbinputregioncollector_p.h>
-#include "hbinputsmileypicker.h"
-
/// @cond
class HbInputSmileyPickerPrivate: public HbDialogPrivate
@@ -49,8 +48,8 @@
HbInputSmileyPickerPrivate(int rows, int columns);
~HbInputSmileyPickerPrivate();
- void getSmilies(const QStringList& smileys);
- void _q_activated(const QModelIndex& index);
+ void getSmilies(const QStringList &smileys);
+ void _q_activated(const QModelIndex &index);
// member variables.
HbGridView *mView;
@@ -58,7 +57,7 @@
};
HbInputSmileyPickerPrivate::HbInputSmileyPickerPrivate(int rows, int columns)
-:mView(0), mModel(0)
+ : mView(0), mModel(0)
{
Q_Q(HbInputSmileyPicker);
// we should make sure that it comes above vkb
@@ -78,18 +77,18 @@
{
}
-void HbInputSmileyPickerPrivate::getSmilies(const QStringList& smileys)
+void HbInputSmileyPickerPrivate::getSmilies(const QStringList &smileys)
{
mModel->clear();
- QStandardItem* item = 0;
- foreach (QString smiley, smileys) {
+ QStandardItem *item = 0;
+ foreach(const QString &smiley, smileys) {
item = new QStandardItem();
item->setData(HbIcon(smiley), Qt::DecorationRole);
mModel->appendRow(item);
}
}
-void HbInputSmileyPickerPrivate::_q_activated(const QModelIndex& index)
+void HbInputSmileyPickerPrivate::_q_activated(const QModelIndex &index)
{
Q_Q(HbInputSmileyPicker);
if (!hidingInProgress) {
@@ -118,11 +117,10 @@
{
Q_D(HbInputSmileyPicker);
HbInputRegionCollector::instance()->attach(this);
-#if QT_VERSION >= 0x040600
+
// Make sure the smiley picker never steals focus.
setFlag(QGraphicsItem::ItemIsPanel, true);
setActive(false);
-#endif
// set dialog properties
setFocusPolicy(Qt::ClickFocus);
@@ -136,7 +134,7 @@
d->getSmilies(smileys);
// connect signals
- connect(d->mView, SIGNAL(activated(QModelIndex )), this, SLOT(_q_activated(QModelIndex )));
+ connect(d->mView, SIGNAL(activated(QModelIndex)), this, SLOT(_q_activated(QModelIndex)));
}
/*!
@@ -147,11 +145,11 @@
}
/*!
-This a virtual functions in QGraphicsWidget. It is called whenever the smiley picker widgets is shown.
-Here in this function we are are scrolling to a position where we can see
+This a virtual functions in QGraphicsWidget. It is called whenever the smiley picker widgets is shown.
+Here in this function we are are scrolling to a position where we can see
first row and column
*/
-void HbInputSmileyPicker::showEvent( QShowEvent * event )
+void HbInputSmileyPicker::showEvent(QShowEvent *event)
{
Q_D(HbInputSmileyPicker);
QStandardItem *item = d->mModel->item(0);
--- a/src/hbinput/inputwidgets/hbinputsmileypicker.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputsmileypicker.h Wed Jun 23 18:33:25 2010 +0300
@@ -38,7 +38,7 @@
HbInputSmileyPicker(int rows, int columns, QGraphicsItem *parent = 0, QStringList smileys = QStringList());
~HbInputSmileyPicker();
- void showEvent( QShowEvent *event );
+ void showEvent(QShowEvent *event);
signals:
void selected(QString smileyText);
@@ -46,7 +46,7 @@
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbInputSmileyPicker)
Q_DISABLE_COPY(HbInputSmileyPicker)
- Q_PRIVATE_SLOT(d_func(), void _q_activated(const QModelIndex & ))
+ Q_PRIVATE_SLOT(d_func(), void _q_activated(const QModelIndex &))
};
#endif // HB_INPUT_SMILEYPICKER_H
--- a/src/hbinput/inputwidgets/hbinputvirtualrocker.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputvirtualrocker.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,8 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputvirtualrocker.h"
+
#include <QGraphicsSceneMouseEvent>
#include <QPixmap>
#include <QBitmap>
@@ -33,7 +35,6 @@
#include <hbwidgetfeedback.h>
#include "hbinputvkbwidget.h"
-#include "hbinputvirtualrocker.h"
/// @cond
@@ -49,37 +50,35 @@
class HbInputVirtualRockerPrivate
{
public:
- explicit HbInputVirtualRockerPrivate(HbInputVirtualRocker *rocker, HbInputVkbWidget* parent = 0);
+ explicit HbInputVirtualRockerPrivate(HbInputVirtualRocker *rocker);
~HbInputVirtualRockerPrivate();
int rockerEventRepeats(qreal distance);
void setCenter();
public:
HbInputVirtualRocker *q_ptr;
- HbIcon* mIconNormal;
+ HbIcon *mIconNormal;
HbInputVirtualRocker::RockerSelectionMode mShifted;
QPointF mLastPoint;
QPointF mCenterPosition;
QPointF mPointerPosition;
QPointF mMousePressPoint;
- HbInputVkbWidget* mKeyboard;
bool mPressed;
};
-HbInputVirtualRockerPrivate::HbInputVirtualRockerPrivate(HbInputVirtualRocker *rocker, HbInputVkbWidget* parent)
- : q_ptr(rocker),
- mIconNormal(0),
- mShifted(HbInputVirtualRocker::RockerSelectionModeOff),
- mLastPoint(0.0,0.0),
- mCenterPosition(0.0,0.0),
- mMousePressPoint(0.0,0.0),
- mKeyboard(parent),
- mPressed(false)
-{
- mIconNormal = new HbIcon("qtg_graf_trackpoint_normal" );
- mIconNormal->setSize( QSizeF( HbIconWidth, HbIconWidth ));
+HbInputVirtualRockerPrivate::HbInputVirtualRockerPrivate(HbInputVirtualRocker *rocker)
+ : q_ptr(rocker),
+ mIconNormal(0),
+ mShifted(HbInputVirtualRocker::RockerSelectionModeOff),
+ mLastPoint(0.0, 0.0),
+ mCenterPosition(0.0, 0.0),
+ mMousePressPoint(0.0, 0.0),
+ mPressed(false)
+{
+ mIconNormal = new HbIcon("qtg_graf_trackpoint_normal");
+ mIconNormal->setSize(QSizeF(HbIconWidth, HbIconWidth));
- q_ptr->grabGesture(Qt::SwipeGesture);
+ q_ptr->grabGesture(Qt::SwipeGesture);
q_ptr->grabGesture(Qt::TapGesture);
q_ptr->grabGesture(Qt::PanGesture);
}
@@ -93,11 +92,11 @@
{
// cursor move multiplier for cursor moving signals, depending on the rocker move speed
int repeats = 1;
- if (distance > 30){
+ if (distance > 30) {
repeats = 30;
} else if (distance > 20) {
repeats = 10;
- } else if(distance > 10) {
+ } else if (distance > 10) {
repeats = 2;
}
return repeats;
@@ -105,12 +104,12 @@
void HbInputVirtualRockerPrivate::setCenter()
{
- if(mCenterPosition.isNull()){
- mCenterPosition.setX(q_ptr->pos().x()+HbRockerWidth/2);
- mCenterPosition.setY(q_ptr->pos().y()+HbRockerWidth/2);
+ if (mCenterPosition.isNull()) {
+ mCenterPosition.setX(q_ptr->pos().x() + HbRockerWidth / 2);
+ mCenterPosition.setY(q_ptr->pos().y() + HbRockerWidth / 2);
}
- mPointerPosition.setX((HbRockerWidth - HbPointerWidth)/2);
- mPointerPosition.setY((HbRockerWidth - HbPointerWidth)/2);
+ mPointerPosition.setX((HbRockerWidth - HbPointerWidth) / 2);
+ mPointerPosition.setY((HbRockerWidth - HbPointerWidth) / 2);
}
/// @endcond
@@ -148,19 +147,21 @@
/*!
Constructs the object.
*/
-HbInputVirtualRocker::HbInputVirtualRocker(HbInputVkbWidget* parent)
- : HbWidget(parent), d_ptr(new HbInputVirtualRockerPrivate(this, parent))
+HbInputVirtualRocker::HbInputVirtualRocker(HbInputVkbWidget *parent)
+ : HbWidget(parent), d_ptr(new HbInputVirtualRockerPrivate(this))
{
setOpacity(HbRockerDimOpacity);
+ setFlag(QGraphicsItem::ItemHasNoContents, false);
}
/*!
Constructs the object.
*/
-HbInputVirtualRocker::HbInputVirtualRocker(HbInputVirtualRockerPrivate &dd, QGraphicsWidget* parent)
+HbInputVirtualRocker::HbInputVirtualRocker(HbInputVirtualRockerPrivate &dd, QGraphicsWidget *parent)
: HbWidget(parent), d_ptr(&dd)
{
setOpacity(HbRockerDimOpacity);
+ setFlag(QGraphicsItem::ItemHasNoContents, false);
}
/*!
@@ -175,23 +176,21 @@
\reimp
\sa QGraphicsWidget.
*/
-void HbInputVirtualRocker::mousePressEvent(QGraphicsSceneMouseEvent* event)
+void HbInputVirtualRocker::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(HbInputVirtualRocker);
QPointF position = event->pos();
- QPointF delta = position - QPointF(HbRockerWidth/2, HbRockerWidth/2);
+ QPointF delta = position - QPointF(HbRockerWidth / 2, HbRockerWidth / 2);
- qreal squareDistance = delta.y()*delta.y() + delta.x()*delta.x();
- qreal squareRadius = HbRockerWidth*HbRockerWidth/4;
+ qreal squareDistance = delta.y() * delta.y() + delta.x() * delta.x();
+ qreal squareRadius = HbRockerWidth * HbRockerWidth / 4;
if (squareRadius > squareDistance) {
// the touch point is inside circle which diameter is HbRockerWidth
d->setCenter();
d->mLastPoint = position;
d->mMousePressPoint = position;
- if (d->mKeyboard) {
- d->mKeyboard->setKeyboardDimmed(true);
- }
+ emit rockerDirection(HbRockerDirectionPress, d->mShifted);
HbWidgetFeedback::triggered(this, Hb::InstantPressed);
setOpacity(HbRockerNormalOpacity);
d->mPressed = true;
@@ -205,15 +204,13 @@
\reimp
\sa QGraphicsWidget.
*/
-void HbInputVirtualRocker::mouseReleaseEvent(QGraphicsSceneMouseEvent* event)
+void HbInputVirtualRocker::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(event)
Q_D(HbInputVirtualRocker);
- if (d->mKeyboard) {
- d->mKeyboard->setKeyboardDimmed(false);
- setOpacity(HbRockerDimOpacity);
- }
+ emit rockerDirection(HbRockerDirectionRelease, d->mShifted);
+ setOpacity(HbRockerDimOpacity);
d->mPressed = false;
update();
d->setCenter();
@@ -225,7 +222,7 @@
\reimp
\sa QGraphicsWidget.
*/
-void HbInputVirtualRocker::mouseMoveEvent(QGraphicsSceneMouseEvent* event)
+void HbInputVirtualRocker::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(HbInputVirtualRocker);
@@ -237,13 +234,13 @@
HbWidgetFeedback::triggered(this, Hb::InstantDraggedOver);
if (delta.x() > HbRockerXThreshold) {
- repeats = d->rockerEventRepeats( delta.x() );
+ repeats = d->rockerEventRepeats(delta.x());
for (int i = 0; i < repeats; i++) {
emit rockerDirection(HbRockerDirectionRight, d->mShifted);
}
d->mLastPoint = event->pos();
} else if (delta.x() < -HbRockerXThreshold) {
- repeats = d->rockerEventRepeats( -delta.x() );
+ repeats = d->rockerEventRepeats(-delta.x());
for (int i = 0; i < repeats; i++) {
emit rockerDirection(HbRockerDirectionLeft, d->mShifted);
}
@@ -260,7 +257,7 @@
}
d->mPointerPosition = HbIconWidth * deltaPressLoc / d->mCenterPosition.x() / 2
- + QPointF((HbRockerWidth-HbPointerWidth)/2, (HbRockerWidth-HbPointerWidth)/2);
+ + QPointF((HbRockerWidth - HbPointerWidth) / 2, (HbRockerWidth - HbPointerWidth) / 2);
update();
@@ -271,7 +268,7 @@
\reimp
\sa QGraphicsWidget.
*/
-void HbInputVirtualRocker::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event)
+void HbInputVirtualRocker::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(event)
Q_D(HbInputVirtualRocker);
@@ -282,10 +279,7 @@
d->mShifted = RockerSelectionModeOff;
}
- // dim the keypad.
- if (d->mKeyboard) {
- d->mKeyboard->setKeyboardDimmed(true);
- }
+ emit rockerDirection(HbRockerDirectionDoubleClick, d->mShifted);
setOpacity(HbRockerNormalOpacity);
}
@@ -293,7 +287,7 @@
\reimp
\sa QGraphicsWidget.
*/
-void HbInputVirtualRocker::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
+void HbInputVirtualRocker::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(option)
Q_UNUSED(widget)
@@ -334,7 +328,7 @@
void HbInputVirtualRocker::gestureEvent(QGestureEvent *event)
{
- Q_UNUSED (event);
+ Q_UNUSED(event);
}
// End of file
--- a/src/hbinput/inputwidgets/hbinputvirtualrocker.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputvirtualrocker.h Wed Jun 23 18:33:25 2010 +0300
@@ -41,7 +41,10 @@
HbRockerDirectionLeft,
HbRockerDirectionRight,
HbRockerDirectionUp,
- HbRockerDirectionDown
+ HbRockerDirectionDown,
+ HbRockerDirectionPress,
+ HbRockerDirectionDoubleClick,
+ HbRockerDirectionRelease,
};
enum RockerSelectionMode {
@@ -56,22 +59,24 @@
RockerSelectionMode selectionMode() const;
enum { Type = Hb::ItemType_VirtualTrackPoint };
- int type() const { return Type; }
+ int type() const {
+ return Type;
+ }
protected: // From QGraphicsItem
void mousePressEvent(QGraphicsSceneMouseEvent *event);
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
- void mouseMoveEvent ( QGraphicsSceneMouseEvent *event);
+ void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
- void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget);
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
virtual void gestureEvent(QGestureEvent *event);
signals:
void rockerDirection(int aDirection, HbInputVirtualRocker::RockerSelectionMode aSelectionMode);
protected:
- HbInputVirtualRocker(HbInputVirtualRockerPrivate &dd, QGraphicsWidget* parent = 0);
- HbInputVirtualRockerPrivate* const d_ptr;
+ HbInputVirtualRocker(HbInputVirtualRockerPrivate &dd, QGraphicsWidget *parent = 0);
+ HbInputVirtualRockerPrivate *const d_ptr;
private:
Q_DISABLE_COPY(HbInputVirtualRocker)
--- a/src/hbinput/inputwidgets/hbinputvkbwidget.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputvkbwidget.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,6 +22,9 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+#include "hbinputvkbwidget.h"
+#include "hbinputvkbwidget_p.h"
+
#include <QPixmap>
#include <QBitmap>
#include <QPainter>
@@ -63,9 +66,8 @@
#include <HbTapGesture>
#include <HbSelectionDialog>
#include <HbListWidgetItem>
+
#include "hbinputvirtualrocker.h"
-#include "hbinputvkbwidget.h"
-#include "hbinputvkbwidget_p.h"
#include "hbinputsettinglist.h"
#include "hbinputmodeindicator.h"
#include <hbfeedbackmanager.h>
@@ -95,48 +97,49 @@
/// @cond
-inline HbWidget* hbwidget_cast(QGraphicsItem *item)
+inline HbWidget *hbwidget_cast(QGraphicsItem *item)
{
- if( item->isWidget() && static_cast<QGraphicsWidget*>(item)->inherits("HbWidget") ) {
- return static_cast<HbWidget*>(item);
+ if (item->isWidget() && static_cast<QGraphicsWidget *>(item)->inherits("HbWidget")) {
+ return static_cast<HbWidget *>(item);
}
return 0;
}
HbInputVkbWidgetPrivate::HbInputVkbWidgetPrivate()
-: mOwner(0),
-mMode(EModeAbc),
-mKeymap(0),
-mModifiers(0),
-mInputModeIndicator(0),
-mSettingList(0),
-mButtonLayout(0),
-mRocker(0),
-mBackgroundDrawer(0),
-mIconDrawer(0),
-mMainWinConnected(false),
-mShowRocker(false),
-mLayout(0),
-mCurrentHost(0),
-mDrawbackground(true),
-mMouseButtonPressedDown(false),
-mFlickDirection(HbInputVkbWidget::HbFlickDirectionNone),
-mSmileyPicker(0),
-mScreenshotWidget(0),
-mScreenshotTimeLine(250),
-mMostRecentlyAccessedButton(0),
-mMostRecentlyClickedLocation(0.0,0.0),
-mFocusedObject(0),
-mFlickAnimation(false),
-mSettingsListOpen(false),
-mAnimateWhenDialogCloses(false),
-mKeyboardSize(HbQwerty4x10),
-mCloseHandleHeight(0),
-mCloseHandle(0),
-mSettingView(0),
-mCurrentView(0),
-mKeyboardDimmed(false),
-mImSelectionDialog(0)
+ : mOwner(0),
+ mMode(EModeAbc),
+ mKeymap(0),
+ mModifiers(0),
+ mInputModeIndicator(0),
+ mSettingList(0),
+ mButtonLayout(0),
+ mRocker(0),
+ mBackgroundDrawer(0),
+ mIconDrawer(0),
+ mMainWinConnected(false),
+ mShowRocker(false),
+ mLayout(0),
+ mCurrentHost(0),
+ mDrawbackground(true),
+ mMouseButtonPressedDown(false),
+ mFlickDirection(HbInputVkbWidget::HbFlickDirectionNone),
+ mSmileyPicker(0),
+ mScreenshotWidget(0),
+ mScreenshotTimeLine(250),
+ mMostRecentlyAccessedButton(0),
+ mMostRecentlyClickedLocation(0.0, 0.0),
+ mFocusedObject(0),
+ mFlickAnimation(false),
+ mSettingsListOpen(false),
+ mAnimateWhenDialogCloses(false),
+ mKeyboardSize(HbQwerty4x10),
+ mCloseHandleHeight(0),
+ mCloseHandle(0),
+ mSettingView(0),
+ mCurrentView(0),
+ mKeyboardDimmed(false),
+ mImSelectionDialog(0),
+ mSettingWidget(0)
{
mScreenshotTimeLine.setUpdateInterval(16);
}
@@ -148,7 +151,8 @@
delete mBackgroundDrawer;
delete mIconDrawer;
delete mSmileyPicker;
- delete mScreenshotWidget;
+ delete mScreenshotWidget;
+ delete mRocker;
delete mImSelectionDialog;
}
@@ -177,20 +181,24 @@
void HbInputVkbWidgetPrivate::init()
{
Q_Q(HbInputVkbWidget);
+ q->setFlag(QGraphicsItem::ItemHasNoContents, false);
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(q->contentItem());
- QObject::connect(buttonGroup,SIGNAL(aboutToActivateCustomAction(HbAction*)),
- q,SIGNAL(aboutToActivateCustomAction(HbAction*)));
+ mRocker = new HbInputVirtualRocker();
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(q->contentItem());
+ QObject::connect(buttonGroup, SIGNAL(aboutToActivateCustomAction(HbAction *)),
+ q, SIGNAL(aboutToActivateCustomAction(HbAction *)));
- mRocker = new HbInputVirtualRocker(q);
mRocker->setObjectName("VirtualRocker");
QSizeF rockerSize(HbRockerWidth, HbRockerWidth);
mRocker->resize(rockerSize);
mRocker->setMinimumSize(HbRockerWidth, HbRockerWidth);
- mRocker->setMaximumSize(HbRockerWidth*20, HbRockerWidth*20);
+ mRocker->setMaximumSize(HbRockerWidth * 20, HbRockerWidth * 20);
+ if (q->mainWindow()) {
+ q->mainWindow()->scene()->addItem(mRocker);
+ }
QObject::connect(mRocker, SIGNAL(rockerDirection(int, HbInputVirtualRocker::RockerSelectionMode)),
- q, SIGNAL(rockerDirection(int, HbInputVirtualRocker::RockerSelectionMode)));
+ q, SLOT(_q_handleRockerChange(int, HbInputVirtualRocker::RockerSelectionMode)));
mRocker->setVisible(false);
@@ -257,8 +265,8 @@
}
}
-void HbInputVkbWidgetPrivate::addCustomButtonToLayout( HbTouchKeypadButton* button,
- int index)
+void HbInputVkbWidgetPrivate::addCustomButtonToLayout(HbTouchKeypadButton *button,
+ int index)
{
Q_UNUSED(button);
Q_UNUSED(index);
@@ -283,10 +291,10 @@
{
Q_Q(HbInputVkbWidget);
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(q->contentItem());
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(q->contentItem());
if (buttonGroup) {
int key = 0;
- QList<HbInputButton*> buttons = buttonGroup->buttons();
+ QList<HbInputButton *> buttons = buttonGroup->buttons();
for (int i = 0; i < buttons.count(); ++i) {
if (keyCode(i) == HbInputButton::ButtonKeyCodeCharacter) {
HbInputButton *item = buttons.at(i);
@@ -307,16 +315,16 @@
{
Q_Q(HbInputVkbWidget);
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(q->contentItem());
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(q->contentItem());
if (buttonGroup) {
int key = 0;
- QList<HbInputButton*> buttons = buttonGroup->buttons();
+ QList<HbInputButton *> buttons = buttonGroup->buttons();
for (int i = 0; i < buttons.count(); ++i) {
if (keyCode(i) == HbInputButton::ButtonKeyCodeCharacter) {
HbInputButton *item = buttons.at(i);
const HbKeyboardMap *keyboardMap = mKeymap->keyboard(q->keyboardType());
- if (keyboardMap && key < keyboardMap->keys.count() && keyboardMap->keys.at(key)->characters(mModifiers)!= QString("")) {
+ if (keyboardMap && key < keyboardMap->keys.count() && keyboardMap->keys.at(key)->characters(mModifiers) != QString("")) {
QString keydata = keyboardMap->keys.at(key)->characters(mModifiers);
item->setText(keydata.at(0), HbInputButton::ButtonTextIndexPrimary);
@@ -344,7 +352,7 @@
{
Q_Q(HbInputVkbWidget);
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(q->contentItem());
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(q->contentItem());
if (buttonGroup) {
HbInputButton *item = buttonGroup->button(HbInputButton::ButtonKeyCodeSettings);
if (item) {
@@ -358,14 +366,7 @@
void HbInputVkbWidgetPrivate::setRockerPosition()
{
Q_Q(HbInputVkbWidget);
-
- // Set rocker position.
- QSizeF padArea = q->keypadButtonAreaSize();
- QPointF point((padArea.width() * 0.5) - (mRocker->size().width() * 0.5),
- (padArea.height() * 0.5) - (mRocker->size().height() * 0.5));
- point.setY(point.y() + mCloseHandleHeight);
-
- mRocker->setPos(point);
+ mRocker->setPos(q->rockerPosition());
}
void HbInputVkbWidgetPrivate::captureScreenshot()
@@ -380,7 +381,7 @@
}
QPointF position = q->pos();
- QRectF rect = QRectF(position.x(), position.y()+ mCloseHandleHeight, q->boundingRect().width(), q->boundingRect().height()- mCloseHandleHeight);
+ QRectF rect = QRectF(position.x(), position.y() + mCloseHandleHeight, q->boundingRect().width(), q->boundingRect().height() - mCloseHandleHeight);
QTransform rotateTrans;
rotateTrans = q->mainWindow()->viewportTransform();
QRectF transRect = rotateTrans.mapRect(rect);
@@ -400,11 +401,11 @@
void HbInputVkbWidgetPrivate::normalizeProbabilities(QList<HbKeyPressProbability> &allProbableKeys)
{
qreal sum = 0.0;
- foreach (HbKeyPressProbability key, allProbableKeys) {
+ foreach(const HbKeyPressProbability &key, allProbableKeys) {
sum += key.probability;
}
- for (int count=0;count<allProbableKeys.size();count++) {
+ for (int count = 0; count < allProbableKeys.size(); count++) {
allProbableKeys[count].probability = allProbableKeys[count].probability / sum;
}
}
@@ -429,6 +430,86 @@
return ret;
}
+void HbInputVkbWidgetPrivate::showInputMethodSelectionDialog()
+{
+ Q_Q(HbInputVkbWidget);
+
+ delete mImSelectionDialog;
+ mImSelectionDialog = new HbSelectionDialog();
+
+ mImSelectionDialog->setObjectName("Input method dialog");
+
+ // Make sure the language dialog never steals focus.
+ mImSelectionDialog->setFlag(QGraphicsItem::ItemIsPanel, true);
+ mImSelectionDialog->setActive(false);
+
+ QList<HbInputMethodDescriptor> customList = HbInputMethod::listCustomInputMethods();
+
+ QList<HbListWidgetItem *> listItems;
+ HbListWidgetItem *item = new HbListWidgetItem();
+ QString methodName("Default");
+ item->setText(methodName);
+ listItems.append(item);
+
+ foreach(const HbInputMethodDescriptor &descriptor, customList) {
+ QString displayName = descriptor.displayName();
+ if (displayName.length() == 0) {
+ displayName = QString("Unknown");
+ }
+ item = new HbListWidgetItem();
+ item->setText(displayName);
+ listItems.append(item);
+ }
+ mImSelectionDialog->setWidgetItems(listItems, true);
+ mImSelectionDialog->setSelectionMode(HbAbstractItemView::SingleSelection);
+ mImSelectionDialog->setDismissPolicy(HbPopup::NoDismiss);
+ mImSelectionDialog->setModal(true);
+
+ q->connect(mImSelectionDialog, SIGNAL(finished(HbAction *)), q, SLOT(_q_inputMethodSelectionDialogFinished(HbAction *)));
+
+ mImSelectionDialog->open();
+}
+
+void HbInputVkbWidgetPrivate::_q_inputMethodSelectionDialogFinished(HbAction *action)
+{
+ Q_UNUSED(action);
+
+ QList<QVariant> selectedItems = mImSelectionDialog->selectedItems();
+ if (selectedItems.count()) {
+ HbInputMethodDescriptor result;
+ int selection = selectedItems.first().toInt();
+ if (selection == 0) {
+ result.setDefault();
+ } else {
+ QList<HbInputMethodDescriptor> customList = HbInputMethod::listCustomInputMethods();
+ if (customList.count() <= selection) {
+ result = customList[selection-1];
+ }
+ }
+
+ if (!result.isEmpty() && mOwner) {
+ // Set as active custom input method.
+ HbInputSettingProxy::instance()->setPreferredInputMethod(Qt::Horizontal, result);
+ HbInputSettingProxy::instance()->setPreferredInputMethod(Qt::Vertical, result);
+ // And finally activate immediately.
+ mOwner->activateInputMethod(result);
+ }
+ }
+}
+
+void HbInputVkbWidgetPrivate::_q_handleRockerChange(int direction, HbInputVirtualRocker::RockerSelectionMode selectionMode)
+{
+ Q_Q(HbInputVkbWidget);
+
+ if (direction == HbInputVirtualRocker::HbRockerDirectionRelease) {
+ q->setKeyboardDimmed(false);
+ } else if (direction == HbInputVirtualRocker::HbRockerDirectionPress ||
+ direction == HbInputVirtualRocker::HbRockerDirectionDoubleClick) {
+ q->setKeyboardDimmed(true);
+ }
+ emit q->rockerDirection(direction, selectionMode);
+}
+
QChar HbInputVkbWidgetPrivate::numberCharacterBoundToKey(int key)
{
QChar numChr;
@@ -439,26 +520,26 @@
HbInputFocusObject *focusObject = mOwner->focusObject();
if (!focusObject) {
return numChr;
- }
+ }
HbInputLanguage language = mKeymap->language();
if (language.language() != (QLocale::Language)0) {
HbInputDigitType digitType = HbInputUtils::inputDigitType(language);
-
+
// In number editors, show the native digits only when both device and writing languages are same,
// else show latin digits
if (focusObject->editorInterface().isNumericEditor()) {
QLocale::Language systemLanguage = QLocale::system().language();
if (language.language() != systemLanguage) {
digitType = HbDigitTypeLatin;
- }
+ }
}
-
+
HbKeyboardType keyboardType = mOwner->inputState().keyboard();
-
+
if (keyboardType == HbKeyboardVirtual12Key) {
numChr = HbInputUtils::findFirstNumberCharacterBoundToKey(
- mKeymap->keyboard(keyboardType)->keys.at(key),
- language, digitType);
+ mKeymap->keyboard(keyboardType)->keys.at(key),
+ language, digitType);
} else if (keyboardType == HbKeyboardVirtualQwerty) {
switch (digitType) {
case HbDigitTypeLatin:
@@ -481,67 +562,12 @@
return numChr;
}
-void HbInputVkbWidgetPrivate::showInputMethodSelectionDialog()
+void HbInputVkbWidgetPrivate::_q_settingsClosed(HbAction* action)
{
+ Q_UNUSED(action);
Q_Q(HbInputVkbWidget);
- delete mImSelectionDialog;
- mImSelectionDialog = new HbSelectionDialog();
-
- mImSelectionDialog->setObjectName("Input method dialog");
-
- // Make sure the language dialog never steals focus.
- mImSelectionDialog->setFlag(QGraphicsItem::ItemIsPanel, true);
- mImSelectionDialog->setActive(false);
-
- QList<HbInputMethodDescriptor> customList = HbInputMethod::listCustomInputMethods();
-
- QList<HbListWidgetItem*> listItems;
- HbListWidgetItem* item = new HbListWidgetItem();
- QString methodName("Default");
- item->setText(methodName);
- listItems.append(item);
-
- foreach (HbInputMethodDescriptor descriptor, customList) {
- QString displayName = descriptor.displayName();
- if (displayName.length() == 0) {
- displayName = QString("Unknown");
- }
- item = new HbListWidgetItem();
- item->setText(displayName);
- listItems.append(item);
- }
- mImSelectionDialog->setWidgetItems(listItems, true);
- mImSelectionDialog->setSelectionMode(HbAbstractItemView::SingleSelection);
- mImSelectionDialog->setDismissPolicy(HbPopup::NoDismiss);
- mImSelectionDialog->setModal(true);
-
- q->connect(mImSelectionDialog, SIGNAL(finished(HbAction*)), q, SLOT(_q_inputMethodSelectionDialogFinished(HbAction*)));
-
- mImSelectionDialog->open();
-}
-
-void HbInputVkbWidgetPrivate::_q_inputMethodSelectionDialogFinished(HbAction *action)
-{
- Q_UNUSED(action);
-
- QList<QVariant> selectedItems = mImSelectionDialog->selectedItems();
- if (selectedItems.count()) {
- HbInputMethodDescriptor result;
- int selection = selectedItems.first().toInt();
- if (selection == 0) {
- result.setDefault();
- } else {
- QList<HbInputMethodDescriptor> customList = HbInputMethod::listCustomInputMethods();
- if (customList.count() <= selection) {
- result = customList[selection-1];
- }
- }
-
- if (!result.isEmpty() && mOwner) {
- mOwner->activateInputMethod(result);
- }
- }
+ q->settingsClosed();
}
/// @endcond
@@ -549,7 +575,7 @@
/*!
Costructs the object.
*/
-HbInputVkbWidget::HbInputVkbWidget(QGraphicsItem* parent)
+HbInputVkbWidget::HbInputVkbWidget(QGraphicsItem *parent)
: HbWidget(*new HbInputVkbWidgetPrivate, parent)
{
Q_D(HbInputVkbWidget);
@@ -558,7 +584,7 @@
d->init();
setFocusPolicy(Qt::ClickFocus);
- setPos(QPointF(0,0));
+ setPos(QPointF(0, 0));
#ifdef HB_EFFECTS
HbEffect::disable(this);
@@ -572,8 +598,8 @@
/*!
Constructs the object.
*/
-HbInputVkbWidget::HbInputVkbWidget(HbInputVkbWidgetPrivate& dd, QGraphicsItem* parent)
- : HbWidget(dd, parent)
+HbInputVkbWidget::HbInputVkbWidget(HbInputVkbWidgetPrivate &dd, QGraphicsItem *parent)
+ : HbWidget(dd, parent)
{
Q_D(HbInputVkbWidget);
d->q_ptr = this;
@@ -581,7 +607,7 @@
d->init();
setFocusPolicy(Qt::ClickFocus);
- setPos(QPointF(0,0));
+ setPos(QPointF(0, 0));
#ifdef HB_EFFECTS
HbEffect::disable(this);
@@ -641,7 +667,7 @@
/*!
The paint method. Draws the widget.
*/
-void HbInputVkbWidget::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
+void HbInputVkbWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
@@ -750,10 +776,10 @@
d->mModifiers = modifiers;
d->updateButtons();
- d->updateKeyCodes();
+ d->updateKeyCodes();
d->applyEditorConstraints();
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(contentItem());
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(contentItem());
if (buttonGroup && d->mOwner->focusObject()) {
buttonGroup->setCustomButtonActions(d->mOwner->focusObject()->editorInterface().actions());
}
@@ -767,7 +793,7 @@
Sets key map data object. Given key map data will be used as a source for button titles.
Usually the key map data for active input language is used.
*/
-void HbInputVkbWidget::setKeymap(const HbKeymap* keymap)
+void HbInputVkbWidget::setKeymap(const HbKeymap *keymap)
{
Q_D(HbInputVkbWidget);
if (keymap) {
@@ -812,7 +838,7 @@
if (d->mSmileyPicker && d->mSmileyPicker->isVisible()) {
d->mSmileyPicker->hide();
- }
+ }
d->mRocker->setVisible(false);
if (d->mSettingList) {
d->mSettingList->close();
@@ -824,7 +850,7 @@
*/
void HbInputVkbWidget::setKeyboardDimmed(bool dimmed)
{
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(contentItem());
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(contentItem());
if (buttonGroup) {
buttonGroup->setEnabled(!dimmed);
}
@@ -863,7 +889,7 @@
}
}
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(contentItem());
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(contentItem());
if (buttonGroup) {
HbInputButton *item = buttonGroup->button(HbInputButton::ButtonKeyCodeSettings);
if (item) {
@@ -877,7 +903,7 @@
d->settingListPosition(position, placement);
d->mSettingList->setPreferredPos(position, placement);
d->mSettingList->updateSettingList();
- d->mSettingList->open(this, SLOT(settingsClosed()));
+ d->mSettingList->open(this, SLOT(_q_settingsClosed(HbAction*)));
}
/*!
@@ -887,7 +913,7 @@
{
Q_D(HbInputVkbWidget);
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(contentItem());
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(contentItem());
if (buttonGroup) {
HbInputButton *item = buttonGroup->button(HbInputButton::ButtonKeyCodeSettings);
if (item) {
@@ -897,10 +923,10 @@
}
d->mSettingsListOpen = false;
- if ( d->mAnimateWhenDialogCloses ) {
+ if (d->mAnimateWhenDialogCloses) {
animKeyboardChange();
d->mAnimateWhenDialogCloses = false;
- } else if(d->mScreenshotTimeLine.state() != QTimeLine::Running) {
+ } else if (d->mScreenshotTimeLine.state() != QTimeLine::Running) {
keypadLanguageChangeFinished();
}
}
@@ -920,7 +946,7 @@
void HbInputVkbWidget::showSettingsView()
{
Q_D(HbInputVkbWidget);
-
+
//HbVkbHostBridge::instance()->minimizeKeypad(true);
/*
Added for vanilla input
@@ -937,22 +963,20 @@
closeSettingList();
hide();
-
- d->mSettingView = new HbView(this);
+ if(!d->mSettingView) {
+ d->mSettingView = new HbView(this);
+ HbAction *backAction = new HbAction(Hb::BackNaviAction, d->mSettingView);
+ backAction->setText(tr("Back"));
+ connect(backAction, SIGNAL(triggered(bool)), this, SLOT(closeSettingsView()));
+ d->mSettingView->setNavigationAction(backAction);
+ HbDataForm *dataForm = new HbDataForm();
+ d->mSettingView->setWidget(dataForm);
+ d->mSettingWidget = new HbInputSettingWidget(dataForm, d->mSettingView);
+ }
+ d->mSettingWidget->initializeWidget();
HbInputRegionCollector::instance()->attach(d->mSettingView);
d->mSettingView->setTitle(tr("Input Settings"));
mainWindow()->addView(d->mSettingView);
-
- HbAction *backAction = new HbAction(Hb::BackNaviAction, d->mSettingView);
- backAction->setText(tr("Back"));
- connect(backAction, SIGNAL(triggered(bool)), this, SLOT(closeSettingsView()));
- d->mSettingView->setNavigationAction(backAction);
-
- HbDataForm *dataForm = new HbDataForm();
- d->mSettingView->setWidget(dataForm);
- HbInputSettingWidget *settingWidget = new HbInputSettingWidget(dataForm, d->mSettingView);
- settingWidget->initializeWidget();
-
d->mCurrentView = mainWindow()->currentView();
mainWindow()->clearFocus();
mainWindow()->setCurrentView(d->mSettingView);
@@ -968,9 +992,8 @@
mainWindow()->setCurrentView(d->mCurrentView);
mainWindow()->removeView(d->mSettingView);
HbInputRegionCollector::instance()->detach(d->mSettingView);
- delete d->mSettingView;
- d->mSettingView = 0;
-
+ d->mSettingWidget->resetWidget();
+
/***** To be removed, Added for vanilla input.
HbInputFocusObject *focusObject = 0;
if (!d->mOwner || !(focusObject = d->mOwner->focusObject())) {
@@ -997,7 +1020,7 @@
/*!
\reimp
*/
-QWidget* HbInputVkbWidget::asWidget()
+QWidget *HbInputVkbWidget::asWidget()
{
return HbInputUtils::createWrapperWidget(this);
}
@@ -1005,7 +1028,7 @@
/*!
\reimp
*/
-QGraphicsWidget* HbInputVkbWidget::asGraphicsWidget()
+QGraphicsWidget *HbInputVkbWidget::asGraphicsWidget()
{
return this;
}
@@ -1053,6 +1076,26 @@
}
/*!
+Returns the virtual rocker position. The default psition is in the middle
+of keypad button area.
+*/
+QPointF HbInputVkbWidget::rockerPosition()
+{
+ Q_D(const HbInputVkbWidget);
+
+ QPointF result;
+
+ if (d->mRocker) {
+ QSizeF padArea = keypadButtonAreaSize();
+ result = QPointF(scenePos().x() + (padArea.width() * 0.5) - (d->mRocker->size().width() * 0.5),
+ scenePos().y() + (padArea.height() * 0.5) - (d->mRocker->size().height() * 0.5));
+ result.setY(result.y() + d->mCloseHandleHeight);
+ }
+
+ return result;
+}
+
+/*!
Sets the status of the background drawing. This method can be used to
optimize vkb widget drawing. If it is known that the widget will cover whole
vkb area and there are no places where the background shows through, then the background
@@ -1072,9 +1115,9 @@
QList<HbKeyPressProbability> HbInputVkbWidget::probableKeypresses()
{
QList<HbKeyPressProbability> probabilities;
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(contentItem());
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(contentItem());
if (buttonGroup) {
- probabilities = buttonGroup->buttonProbabilities();
+ probabilities = buttonGroup->buttonProbabilities();
}
return probabilities;
}
@@ -1132,10 +1175,10 @@
if (d->mSmileyPicker) {
d->mSmileyPicker->setGeometry(QRectF(0, pos().y(), geometry().width(),
- geometry().height()));
+ geometry().height()));
d->mSmileyPicker->show();
- HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup*>(contentItem());
+ HbInputButtonGroup *buttonGroup = static_cast<HbInputButtonGroup *>(contentItem());
if (buttonGroup) {
buttonGroup->cancelButtonPress();
}
@@ -1179,13 +1222,13 @@
{
Q_D(HbInputVkbWidget);
- if (d->mOwner && event.key() > 0) {
- d->mOwner->filterEvent(&event);
- }
-
if (event.key() == HbInputButton::ButtonKeyCodeSettings) {
showSettingList();
- }
+ } else if (d->mOwner && event.key() > 0) {
+ d->mOwner->filterEvent(&event);
+ }
+
+
}
/*!
@@ -1225,10 +1268,10 @@
QRectF rect = boundingRect();
QPointF position = pos();
- position.setX(direction * (-rect.width() + rect.width() * value));
+ position.setX(direction *(-rect.width() + rect.width() * value));
if (d->mScreenshotWidget) {
- d->mScreenshotWidget->setPos(position.x() + direction * rect.width(), position.y());
- setPos(position);
+ d->mScreenshotWidget->setPos(position.x() + direction * rect.width(), position.y());
+ setPos(position);
}
}
@@ -1244,7 +1287,7 @@
{
Q_D(HbInputVkbWidget);
if (mainWindow()) {
- if (d->mSettingsListOpen){
+ if (d->mSettingsListOpen) {
d->mAnimateWhenDialogCloses = true;
} else {
if (!d->mAnimateWhenDialogCloses) {
@@ -1267,20 +1310,20 @@
QSizeF sh;
switch (which) {
- case Qt::MinimumSize:
- sh = QSizeF(0, 0);
- break;
- case Qt::PreferredSize:
- if (d->mCurrentHost) {
- sh = d->mCurrentHost->keyboardArea();
- }
- break;
- case Qt::MaximumSize:
- sh = QSizeF(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
- break;
- default:
- qWarning("HbInputVkbWidget::sizeHint(): Don't know how to handle the value of 'which'");
- break;
+ case Qt::MinimumSize:
+ sh = QSizeF(0, 0);
+ break;
+ case Qt::PreferredSize:
+ if (d->mCurrentHost) {
+ sh = d->mCurrentHost->keyboardArea();
+ }
+ break;
+ case Qt::MaximumSize:
+ sh = QSizeF(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
+ break;
+ default:
+ qWarning("HbInputVkbWidget::sizeHint(): Don't know how to handle the value of 'which'");
+ break;
}
return sh;
}
@@ -1305,7 +1348,7 @@
{
Q_D(HbInputVkbWidget);
- if(HbSwipeGesture *gesture = qobject_cast<HbSwipeGesture *>(event->gesture(Qt::SwipeGesture))) {
+ if (HbSwipeGesture *gesture = qobject_cast<HbSwipeGesture *>(event->gesture(Qt::SwipeGesture))) {
if (gesture->state() == Qt::GestureFinished) {
HbWidgetFeedback::triggered(this, Hb::InstantFlicked);
// vertical swipes
@@ -1320,16 +1363,16 @@
} else {
d->mFlickDirection = (HbInputVkbWidget::HbFlickDirection)gesture->sceneHorizontalDirection();
// horizontal swipes
- if (d->mFlickAnimation){
+ if (d->mFlickAnimation) {
animKeyboardChange();
}
emit flickEvent(d->mFlickDirection);
}
}
- } else if(HbTapGesture *gesture = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) {
- if (gesture->state() == Qt::GestureFinished) {
- // if keypad is minimized, open it
- if (d->mCurrentHost && d->mCurrentHost->keypadStatus() == HbVkbHost::HbVkbStatusMinimized ) {
+ } else if (HbTapGesture *gesture = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) {
+ if (gesture->state() == Qt::GestureFinished) {
+ // if keypad is minimized, open it
+ if (d->mCurrentHost && d->mCurrentHost->keypadStatus() == HbVkbHost::HbVkbStatusMinimized) {
d->mCurrentHost->openKeypad(this, d->mOwner);
}
}
@@ -1337,4 +1380,5 @@
}
#include "moc_hbinputvkbwidget.cpp"
+
// End of file
--- a/src/hbinput/inputwidgets/hbinputvkbwidget.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputvkbwidget.h Wed Jun 23 18:33:25 2010 +0300
@@ -51,8 +51,7 @@
Q_OBJECT
public:
- enum HbFlickDirection
- {
+ enum HbFlickDirection {
HbFlickDirectionNone = 0,
HbFlickDirectionLeft,
HbFlickDirectionRight,
@@ -60,15 +59,14 @@
HbFlickDirectionDown
};
- enum HbVkbCloseMethod
- {
+ enum HbVkbCloseMethod {
HbVkbCloseMethodButtonDrag = 0x1,
HbVkbCloseMethodCloseButton = 0x2,
HbVkbCloseMethodCloseButtonDrag = HbVkbCloseMethodCloseButton | HbVkbCloseMethodButtonDrag,
HbVkbCloseMethodCloseGesture = 0x4,
};
- enum HbSctView {
+ enum HbSctView {
HbSctViewSpecialCharacter,
HbSctViewSmiley
};
@@ -77,8 +75,8 @@
virtual ~HbInputVkbWidget();
public: // From HbVirtualKeyboard
- QWidget* asWidget();
- QGraphicsWidget* asGraphicsWidget();
+ QWidget *asWidget();
+ QGraphicsWidget *asGraphicsWidget();
QSizeF preferredKeyboardSize();
QSizeF minimizedKeyboardSize();
virtual void aboutToOpen(HbVkbHost *host);
@@ -88,7 +86,7 @@
virtual void keyboardMinimized(HbVkbHost *host);
virtual void keyboardAnimationFrame(HbVkbAnimationType type, qreal x);
- virtual void setKeymap(const HbKeymap* keymap);
+ virtual void setKeymap(const HbKeymap *keymap);
virtual void setMode(HbKeypadMode mode, HbModifiers modifiers);
virtual HbKeypadMode mode() const;
@@ -108,16 +106,19 @@
HbFlickDirection flickDirection();
protected: // From QGraphicsItem
- virtual QPainterPath shape () const;
+ virtual QPainterPath shape() const;
virtual void changeEvent(QEvent *event);
- virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget);
- virtual int type() const {return Hb::ItemType_InputVkbWidget;}
+ virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
+ virtual int type() const {
+ return Hb::ItemType_InputVkbWidget;
+ }
QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const;
virtual void gestureEvent(QGestureEvent *event);
protected:
// layout
QSizeF keypadButtonAreaSize();
+ virtual QPointF rockerPosition();
public slots:
void showSettingList();
@@ -144,12 +145,14 @@
void mouseMovedOutOfButton();
void aboutToActivateCustomAction(HbAction *custAction);
protected:
- HbInputVkbWidget(HbInputVkbWidgetPrivate &dd, QGraphicsItem* parent);
+ HbInputVkbWidget(HbInputVkbWidgetPrivate &dd, QGraphicsItem *parent);
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbInputVkbWidget)
Q_DISABLE_COPY(HbInputVkbWidget)
Q_PRIVATE_SLOT(d_func(), void _q_inputMethodSelectionDialogFinished(HbAction *))
+ Q_PRIVATE_SLOT(d_func(), void _q_handleRockerChange(int direction, HbInputVirtualRocker::RockerSelectionMode selectionMode))
+ Q_PRIVATE_SLOT(d_func(), void _q_settingsClosed(HbAction *action))
friend class HbTouchKeypadButton;
friend class HbInputUsedSymbolPane;
--- a/src/hbinput/inputwidgets/hbinputvkbwidget_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputvkbwidget_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -68,6 +68,7 @@
class HbInputFocusObject;
class HbInputSettingList;
class HbSelectionDialog;
+class HbInputSettingWidget;
const qreal VerticalSpacing = 0.0, HorizontalSpacing = 0.0; //vertical and horizontal spacing for buttons in layout
@@ -76,11 +77,10 @@
Q_DECLARE_PUBLIC(HbInputVkbWidget)
public:
- enum HbQwertyKeyboardSize
- {
- HbQwerty4x10,
- HbQwerty4x11
- };
+ enum HbQwertyKeyboardSize {
+ HbQwerty4x10,
+ HbQwerty4x11
+ };
HbInputVkbWidgetPrivate();
virtual ~HbInputVkbWidgetPrivate();
@@ -93,8 +93,8 @@
virtual void handleStandardButtonPress(int aButtonId);
virtual void handleStandardButtonRelease(int aButtonId);
- virtual void addCustomButtonToLayout( HbTouchKeypadButton* button,
- int index);
+ virtual void addCustomButtonToLayout(HbTouchKeypadButton *button,
+ int index);
void redirectMousePressEvent(QGraphicsSceneMouseEvent *aEvent);
void redirectMouseReleaseEvent(QGraphicsSceneMouseEvent *aEvent);
@@ -112,9 +112,11 @@
bool isSmileysEnabled();
bool isKeyboardDimmed();
-
+
void showInputMethodSelectionDialog();
void _q_inputMethodSelectionDialogFinished(HbAction *action);
+ void _q_handleRockerChange(int direction, HbInputVirtualRocker::RockerSelectionMode selectionMode);
+ void _q_settingsClosed(HbAction *action);
virtual QChar numberCharacterBoundToKey(int key);
friend class HbTouchKeypadButton;
@@ -137,13 +139,13 @@
QPointer<HbTouchKeypadButton> mSettingsButton;
QPointer<HbInputSettingList> mSettingList;
- QGraphicsGridLayout* mButtonLayout;
+ QGraphicsGridLayout *mButtonLayout;
QSignalMapper *mPressMapper;
QSignalMapper *mReleaseMapper;
QSignalMapper *mActionMapper;
- HbInputVirtualRocker *mRocker;
+ QPointer<HbInputVirtualRocker> mRocker;
HbFrameDrawer *mBackgroundDrawer;
HbFrameDrawer *mIconDrawer;
@@ -158,7 +160,7 @@
HbInputVkbWidget::HbFlickDirection mFlickDirection;
HbInputSmileyPicker *mSmileyPicker;
- HbInputScreenshotWidget* mScreenshotWidget;
+ HbInputScreenshotWidget *mScreenshotWidget;
QTimeLine mScreenshotTimeLine;
HbTouchKeypadButton *mMostRecentlyAccessedButton;
QPointF mMostRecentlyClickedLocation;
@@ -174,6 +176,7 @@
HbView *mCurrentView;
bool mKeyboardDimmed;
HbSelectionDialog *mImSelectionDialog;
+ HbInputSettingWidget *mSettingWidget;
};
#endif //HB_INPUT_VKB_WIDGET_PRIVATE_H
--- a/src/hbplugins/devicedialogs/indicatormenuplugin/hbindicatormenu.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/devicedialogs/indicatormenuplugin/hbindicatormenu.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -243,11 +243,11 @@
menuContent->indicatorActivated(activatedIndicator);
}
-void HbIndicatorMenu::indicatorRemoved(
- HbIndicatorInterface *indicatorRemoved)
+void HbIndicatorMenu::indicatorDeactivated(
+ HbIndicatorInterface *indicator)
{
//forward to content widget.
HbIndicatorMenuContent *menuContent =
qobject_cast<HbIndicatorMenuContent*>(contentWidget());
- menuContent->indicatorRemoved(indicatorRemoved);
+ menuContent->indicatorRemoved(indicator);
}
--- a/src/hbplugins/devicedialogs/indicatormenuplugin/hbindicatormenu_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/devicedialogs/indicatormenuplugin/hbindicatormenu_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -66,7 +66,7 @@
void indicatorsActivated(QList<HbIndicatorInterface*> activatedIndicators);
void indicatorActivated(HbIndicatorInterface *activatedIndicator);
- void indicatorRemoved(HbIndicatorInterface *indicatorRemoved);
+ void indicatorDeactivated(HbIndicatorInterface *indicator);
private:
bool constructMenu(const QVariantMap ¶meters);
--- a/src/hbplugins/devicedialogs/indicatormenuplugin/hbindicatormenuplugin.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/devicedialogs/indicatormenuplugin/hbindicatormenuplugin.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -110,7 +110,7 @@
Q_UNUSED(parameters)
info->group = IndicatorGroup;
- info->flags = NoDeviceDialogFlags;
+ info->flags = ReceiveIndicatorStatus;
info->priority = DefaultPriority;
TRACE_EXIT
--- a/src/hbplugins/feedback/feedbackeffectplugin/hbfeedbackeffectengine.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/feedback/feedbackeffectplugin/hbfeedbackeffectengine.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -697,51 +697,6 @@
}
break;
}
- case HbFeedbackEffectUtils::List:
- case HbFeedbackEffectUtils::Grid:
- {
- if (interaction == Hb::ContinuousScrolled) {
- if (const HbAbstractItemView * itemView = qobject_cast<const HbAbstractItemView *>(widget)) {
- feedbackPlayed = true;
- QList<HbAbstractViewItem *> visibleItems = itemView->visibleItems();
- bool newItemFound(false);
- int index(-1);
- QList<int> visibleIndexes;
- if (widget == activelyScrollingItemView) {
- foreach (HbAbstractViewItem * item, visibleItems) {
- index = item->modelIndex().row();
- if (!oldVisibleIndexes.contains(index)) {
- newItemFound = true;
- }
- visibleIndexes.append(index);
- }
- }
- if (widget != activelyScrollingItemView){
- activelyScrollingItemView = widget;
- newItemFound = false;
- }
- // To prevent the uninitialized list to cause false new item detections
- if (oldVisibleIndexes.empty()) {
- newItemFound = false;
- }
- oldVisibleIndexes.clear();
- oldVisibleIndexes = visibleIndexes;
-
- if (newItemFound) {
- const HbListView* listView = qobject_cast<const HbListView*>(widget);
- if (!( listView &&
- listView->arrangeMode() &&
- listView->draggedItem())){
- if(!widgetOverridesModalities(widget,interaction)) {
- modalities = HbFeedback::Audio | HbFeedback::Tactile;
- }
- playInstantFeedback(widget, HbFeedback::ItemScroll, modalities);
- }
- }
- }
- }
- break;
- }
default:
{
break;
--- a/src/hbplugins/inputmethods/common/hbinputbasichandler.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/common/hbinputbasichandler.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -172,6 +172,8 @@
commitAndUpdate(qc);
}
break;
+ case HbInputButton::ButtonKeyCodeSettings:
+ break;
default:
ret = HbInputModeHandler::filterEvent(event);
break;
--- a/src/hbplugins/inputmethods/common/hbinputmodehandler.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/common/hbinputmodehandler.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -233,7 +233,7 @@
return ;
}
QStringList patterns = focusObject->editorInterface().smileyTheme().patterns(smiley);
- foreach( QString string, patterns) {
+ foreach( const QString string, patterns) {
QString filtered;
focusObject->filterStringWithEditorFilter(string, filtered);
if (filtered == string) {
--- a/src/hbplugins/inputmethods/common/hbinputmodehandler.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/common/hbinputmodehandler.h Wed Jun 23 18:33:25 2010 +0300
@@ -32,6 +32,7 @@
#include <hbinputmodeproperties.h>
#include <hbinputdef.h>
#include <hbinputpredictioncallback.h>
+#include "hbinputspellquerydialog.h"
class HbInputAbstractMethod;
class QMouseEvent;
@@ -68,7 +69,7 @@
HbInputModeActionSetupAutoCompletion, // setting up of autocompletion
// focus change
- HbInputModeActionFocusRecieved, // focus recived state
+ HbInputModeActionFocusRecieved, // focus received state
HbInputModeActionFocusLost, // focus lost state
HbInputModeActionCancelButtonPress,
HbInputModeActionCloseSpellQuery
@@ -187,7 +188,8 @@
virtual void candidatePopupClosed(QString activatedWord, int closingKey);
virtual void showExactWordPopupIfNeeded();
void closeSpellQueryDialog();
- void spellQueryDialogClosed(QObject *savedFocusObject,bool isOk,QString string);
+ void spellQueryDialogClosed(QObject *savedFocusObject,HbInputSpellQuery::HbSpellCloseReason closeReason,const QString &string);
+ void setAutocompletionStatus(bool status);
public slots:
// different utility popup callbacks
virtual void inputQueryPopupClosed(QString activatedWord, int closingKey);
--- a/src/hbplugins/inputmethods/common/hbinputnumerichandler.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/common/hbinputnumerichandler.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -73,6 +73,8 @@
commitAndUpdate(qc);
break;
}
+ case HbInputButton::ButtonKeyCodeSettings:
+ break;
default:
ret = HbInputModeHandler::filterEvent(event);
break;
--- a/src/hbplugins/inputmethods/common/hbinputpredictionhandler.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/common/hbinputpredictionhandler.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -34,13 +34,12 @@
#include <hbcolorscheme.h>
#include <hbinpututils.h>
#include <hbinputbutton.h>
-#include "hbinputspellquerydialog.h"
#include "../touchinput/virtualqwerty.h"
#include "hbinputpredictionhandler_p.h"
#include "hbinputabstractbase.h"
-#define HbDeltaHeight 3.0
+static const qreal HbDeltaHeight = 3.0;
HbInputPredictionHandlerPrivate::HbInputPredictionHandlerPrivate()
:mEngine(0),
@@ -114,16 +113,8 @@
QString commitString;
if (mEngine->inputLength() > 0 && mCandidates->count() > 0) {
- if(mCandidates->count() <= mBestGuessLocation) {
- commitString = mCandidates->at(0);
- mEngine->addUsedWord(mCandidates->at(0));
- } else if (mShowTail == false) {
- commitString = mCandidates->at(mBestGuessLocation).left(mEngine->inputLength());
- mEngine->addUsedWord(mCandidates->at(mBestGuessLocation).left(mEngine->inputLength()));
- } else {
- commitString = mCandidates->at(mBestGuessLocation);
- mEngine->addUsedWord(mCandidates->at(mBestGuessLocation));
- }
+ commitString = getCommitString();
+ mEngine->addUsedWord(commitString);
if (character == QChar(' ') || character == QChar('\n')) {
mAutoAddedSpace = true;
}
@@ -169,15 +160,6 @@
*/
void HbInputPredictionHandlerPrivate::showExactWordPopupIfNeeded()
{
- Q_Q(HbInputPredictionHandler);
- if (mShowTooltip && mBestGuessLocation > 0 && mCandidates->count() > 0
- && mCandidates->at(0).mid(0, mEngine->inputLength()) \
- != mCandidates->at(mBestGuessLocation).mid(0, mEngine->inputLength())) {
- q->processExactWord(mCandidates->at(0));
- } else {
- QString empty;
- q->processExactWord(empty);
- }
}
QList<HbKeyPressProbability> HbInputPredictionHandlerPrivate::probableKeypresses()
@@ -426,18 +408,15 @@
}
//The mouse has been clicked outside of the pre-editing word and hence need to commit the word.
- if ( cursorPosition < 0 || (mCandidates->size()>0 && cursorPosition >= mCandidates->at(mBestGuessLocation).length())) {
- if (mEngine->inputLength() > 0 && mCandidates->count() > 0 && mBestGuessLocation < mCandidates->count()) {
- commit(mCandidates->at(mBestGuessLocation),true);
- }
+ if ( cursorPosition < 0 || cursorPosition >= mInputMethod->focusObject()->preEditString().length()) {
+ commit();
} else if (mCandidates->size() > 0) {
if(!mCanContinuePrediction && (*mCandidates)[mBestGuessLocation].endsWith('?')) {
- // mouse has been clicked on the pre-editing string ends with "?"
+ // mouse has been clicked on the pre-editing string ends with "?"
//Remove the "?" mark
(*mCandidates)[mBestGuessLocation].chop(1);
updateEditor();
q->launchSpellQueryDialog();
- mCanContinuePrediction = true;
} else {
//The mouse has been clicked on the pre-editing word, launch candidate list
@@ -448,7 +427,7 @@
void HbInputPredictionHandlerPrivate::init()
{
- mEngine = NULL;
+ mEngine = 0;
HbInputLanguage language = HbInputSettingProxy::instance()->globalInputLanguage();
mEngine = HbPredictionFactory::instance()->predictionEngineForLanguage(language.language());
if (mEngine && !mCandidates) {
@@ -471,17 +450,28 @@
void HbInputPredictionHandlerPrivate::commit()
{
if (mEngine && mEngine->inputLength() > 0 && mCandidates->count() > 0) {
- if(!mCanContinuePrediction) {
- //Remove the "?" mark
- (*mCandidates)[mBestGuessLocation].chop(1);
- }
// Close exact word pop up in qwerty when the word is committed
if(HbInputUtils::isQwertyKeyboard(mInputMethod->inputState().keyboard())) {
mInputMethod->closeExactWordPopup();
}
- QString commitString;
+ QString commitString = getCommitString();
+
+ // need to update the freq information
+ mEngine->commit(commitString);
+ commit(commitString,false);
+ }
+}
+
+QString HbInputPredictionHandlerPrivate::getCommitString()
+{
+ QString commitString;
+ if(mCandidates->count()) {
+ if(!mCanContinuePrediction) {
+ //Remove the "?" mark
+ (*mCandidates)[mBestGuessLocation].chop(1);
+ }
if(mCandidates->count() <= mBestGuessLocation) {
commitString = mCandidates->at(0);
} else if (mShowTail == false) {
@@ -489,10 +479,8 @@
} else {
commitString = mCandidates->at(mBestGuessLocation);
}
- // need to update the freq information
- mEngine->commit(commitString);
- commit(commitString,false);
}
+ return commitString;
}
/*!
@@ -502,12 +490,8 @@
void HbInputPredictionHandlerPrivate::commit(const QString& string, bool addToUsedWordDict, bool isAsync)
{
Q_Q(HbInputPredictionHandler);
- if(!mCanContinuePrediction) {
- //Remove the "?" mark
- (*mCandidates)[mBestGuessLocation].chop(1);
- }
- // Close exact word pop up in qwerty when the word is committed
+ // Close exact word pop up in qwerty when the word is committed
if(HbInputUtils::isQwertyKeyboard(mInputMethod->inputState().keyboard())) {
mInputMethod->closeExactWordPopup();
}
@@ -516,9 +500,9 @@
if(mEngine) {
if(addToUsedWordDict && !string.isEmpty()) {
- QString separator = " ";
- QStringList stringList = string.split(separator, QString::SkipEmptyParts);
- foreach (QString str, stringList) {
+ QChar spaceChar(' ');
+ QStringList stringList = string.split(spaceChar, QString::SkipEmptyParts);
+ foreach (const QString str, stringList) {
mEngine->addUsedWord(str);
}
}
@@ -612,13 +596,17 @@
}
}
-void HbInputPredictionHandlerPrivate::setPreEditTextToEditor(QString string)
+void HbInputPredictionHandlerPrivate::setPreEditTextToEditor(QString string, bool showAutocompletionPart)
{
//update the editor with pre-edit text
mEngine->setWord(string);
bool used = false;
mEngine->updateCandidates(mBestGuessLocation, used);
- mTailShowing = true;
+ if(showAutocompletionPart) {
+ mShowTail = true;
+ } else {
+ mShowTail = false;
+ }
updateEditor();
}
@@ -656,7 +644,7 @@
case HbInputModeActionReset:
case HbInputModeActionCommit:
case HbInputModeActionFocusLost: {
- //At the moment we are commiting the text with the autocompletion part as it needs to be committed on clicking outside the editor.
+ //At the moment we are committing the text with the autocompletion part as it needs to be committed on clicking outside the editor.
//TO DO : When We back to the application by pressing Application key the inline word should not commit and remain in the inline editing
//d->mShowTail = false;
d->commit();
@@ -875,32 +863,60 @@
}
//
-void HbInputPredictionHandler::spellQueryDialogClosed(QObject *savedFocusObject,bool isOk,QString string)
+void HbInputPredictionHandler::spellQueryDialogClosed(QObject *savedFocusObject
+ ,HbInputSpellQuery::HbSpellCloseReason closeReason,const QString &string)
+{
+ if(!savedFocusObject) {
+ return;
+ }
+
+ Q_D(HbInputPredictionHandler);
+ // set the focus back to the editor which caused the launch of spell dialog.
+ HbInputFocusObject *newFocusObject = new HbInputFocusObject(savedFocusObject);
+ newFocusObject->releaseFocus();
+ newFocusObject->setFocus();
+ HbAbstractEdit *abstractEdit = qobject_cast<HbAbstractEdit*>(savedFocusObject);
+ if(abstractEdit) {
+ abstractEdit->setCursorPosition(abstractEdit->cursorPosition());
+ }
+ d->mInputMethod->setFocusObject(newFocusObject);
+
+ if (closeReason == HbInputSpellQuery::HbOkPressed) {
+ d->commit(string,true);
+ } else if(closeReason == HbInputSpellQuery::HbCancelPressed) {
+ //update the editor with pre-edit text
+ d->setPreEditTextToEditor(string, d->mCanContinuePrediction);
+ // This update is need for below usecase
+ // Editor is empty => enter some data till their is no match => click on word
+ // to launch spell query => now press cancel => testcase of keypad is uppercase,
+ // but it should be lower case
+ d->mInputMethod->updateState();
+ } else if (closeReason == HbInputSpellQuery::HbForceClose) {
+ // Force spell query close happens when oriantation is about to change.
+ // In this case nomal commit() on input method does not seems to work.
+ // So we are directly sending commit even to editor.
+ QList<QInputMethodEvent::Attribute> list;
+ QInputMethodEvent event(QString(), list);
+ event.setCommitString(string);
+ QApplication::sendEvent(savedFocusObject, &event);
+ }
+ // Enable the flag
+ d->mCanContinuePrediction = true;
+}
+
+
+void HbInputPredictionHandler::setAutocompletionStatus(bool status)
{
Q_D(HbInputPredictionHandler);
-
- // set the focus back to the editor which caused the launch of spell dialog.
- if(savedFocusObject) {
- HbInputFocusObject *newFocusObject = new HbInputFocusObject(savedFocusObject);
- newFocusObject->releaseFocus();
- newFocusObject->setFocus();
- HbAbstractEdit *abstractEdit = qobject_cast<HbAbstractEdit*>(savedFocusObject);
- if(abstractEdit) {
- abstractEdit->setCursorPosition(abstractEdit->cursorPosition());
- }
- d->mInputMethod->setFocusObject(newFocusObject);
+ d->mAutocompletionEnabled = status;
+ if(!d->mEngine) {
+ return;
+ }
+ if(!status) {
+ d->mEngine->disableFeature(HbPredFeatureWordCompletion);
+ } else {
+ d->mEngine->enableFeature(HbPredFeatureWordCompletion);
}
- if (isOk) {
- d->commit(string,true);
- } else {
- //update the editor with pre-edit text
- d->setPreEditTextToEditor(string);
- // This update is need for below usecase
- // Editor is empty => enter some data till their is no match => click on word
- // to lauch spell query => now press cancel => testcase of keypad is uppercase,
- // but it should be lower case
- d->mInputMethod->updateState();
- }
}
// EOF
--- a/src/hbplugins/inputmethods/common/hbinputpredictionhandler_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/common/hbinputpredictionhandler_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -55,9 +55,10 @@
virtual void deleteOneCharacter();
void commitExactWord();
void handleEmptyCandidateList();
- void showExactWordPopupIfNeeded();
+ virtual void showExactWordPopupIfNeeded();
QList<HbKeyPressProbability> probableKeypresses();
- void setPreEditTextToEditor(QString string);
+ void setPreEditTextToEditor(QString string, bool showAutocompletionPart);
+ virtual QString getCommitString();
public:
HbPredictionEngine *mEngine;
QStringList *mCandidates;
@@ -69,9 +70,9 @@
bool mShowTooltip;
Qt::KeyboardModifiers mModifiers;
HbInputSpellQuery *mSpellQueryDialog;
-
+ bool mAutocompletionEnabled;
public:
- void updateEditor();
+ virtual void updateEditor();
};
#endif //HB_INPUT_PREDICTION_HANDLER_PRIVATE
--- a/src/hbplugins/inputmethods/common/hbinputspellquerydialog.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/common/hbinputspellquerydialog.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -39,7 +39,7 @@
#include "hbinputspellquerydialog.h"
#include "hbinputmodehandler.h"
-#define MAXUDBWORDSIZE 64
+static const qint16 MAXUDBWORDSIZE = 64;
HbInputSpellQuery::HbInputSpellQuery(HbInputMethod *inputMethod, HbInputPredictionHandler *predictionHandler)
: mOwner(inputMethod), mPredictionHandler(predictionHandler), mPrimaryAction(0)
@@ -109,34 +109,24 @@
mDidHandleFinish = true;
}
- bool isOk = false;
- bool isCancel = false;
- bool isExternalClose = false;
+ HbSpellCloseReason closeReason = HbForceClose;
+ QString string = mSavedEditorText;
// action is null when input query is closed externally , for example by calling
// HbDialog::close() function.
if (action) {
- isOk = mPrimaryAction == action ? true : false;
- isCancel = mPrimaryAction != action ? true : false;
- } else {
- isExternalClose = true;
+ if(mPrimaryAction == action) {
+ closeReason = HbOkPressed;
+ string = value().toString();
+ } else {
+ closeReason = HbCancelPressed;
+ }
}
-
//Need to disable effects as asynchronous hide will commit the word otherwise.
HbEffect::disable(this);
hide();
HbEffect::enable(this);
- QString string = mSavedEditorText;
- bool status = false;
- if (isOk) {
- string = value().toString();
- status = true;
- } else if (isCancel) {
- status = false;
- } else if (isExternalClose) {
- status = true;
- }
- mPredictionHandler->spellQueryDialogClosed(mSavedFocusObject,status,string);
+ mPredictionHandler->spellQueryDialogClosed(mSavedFocusObject,closeReason,string);
mSavedFocusObject = 0;
mSavedEditorText.clear();
mPrimaryAction = 0;
--- a/src/hbplugins/inputmethods/common/hbinputspellquerydialog.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/common/hbinputspellquerydialog.h Wed Jun 23 18:33:25 2010 +0300
@@ -39,6 +39,11 @@
HbInputSpellQuery(HbInputMethod *mOwner,HbInputPredictionHandler *predictionHandler);
~HbInputSpellQuery();
void launch(QString editorText);
+ enum HbSpellCloseReason {
+ HbOkPressed,
+ HbCancelPressed,
+ HbForceClose
+ };
public slots:
void dialogClosed(HbAction* action);
private:
--- a/src/hbplugins/inputmethods/hardwareinput/hbhardwareinputbasicqwertyhandler.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/hardwareinput/hbhardwareinputbasicqwertyhandler.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -131,7 +131,7 @@
break;
case Qt::Key_Backspace:
case Qt::Key_Delete: {
- // let's pass the backspace event to the focussed editor.
+ // let's pass the backspace event to the focused editor.
//return q->HbInputBasicHandler::filterEvent(event);
break;
}
--- a/src/hbplugins/inputmethods/touchinput/hbinput12keytouchkeyboard.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/touchinput/hbinput12keytouchkeyboard.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -39,6 +39,8 @@
const qreal HbKeyboardHeightInUnits = 37.8;
const qreal HbKeyboardWidthInUnits = 53.8;
+const int HbFirstRowIndex = 0;
+const int HbSecondRowIndex = 2;
const int HbVirtual12KeyNumberOfRows = 4;
const int HbVirtual12KeyNumberOfColumns = 4;
const int HbButtonKeyCodeTable[HbVirtual12KeyNumberOfRows * HbVirtual12KeyNumberOfColumns] =
@@ -193,47 +195,58 @@
if (mMode == EModeNumeric) {
QChar numChr;
- const HbKeyboardMap *keyboardMap = mKeymap->keyboard(HbKeyboardVirtual12Key);
- if (keyboardMap && key < keyboardMap->keys.count()) {
+ const HbKeyboardMap *labelMap = mKeymap->keyboard(HbKeyboardVirtual12KeyLabels);
+ const HbKeyboardMap *keyMap = mKeymap->keyboard(HbKeyboardVirtual12Key);
+ if (labelMap && key < labelMap->keys.count()) {
+ numChr = labelMap->keys.at(key)->keycode;
+ }
+
+ // Fallback to normal keymappings if key labels are not present
+ if (keyMap && key < keyMap->keys.count() && numChr.isNull()) {
numChr = numberCharacterBoundToKey(key);
}
- if (numChr > 0) {
- item->setText(numChr, HbInputButton::ButtonTextIndexPrimary);
- } else {
- item->setText(QString(), HbInputButton::ButtonTextIndexPrimary);
- }
+ item->setText(numChr, HbInputButton::ButtonTextIndexPrimary);
item->setText(QString(), HbInputButton::ButtonTextIndexSecondaryFirstRow);
item->setText(QString(), HbInputButton::ButtonTextIndexSecondarySecondRow);
item->setIcon(HbIcon(), HbInputButton::ButtonIconIndexPrimary);
item->setIcon(HbIcon(), HbInputButton::ButtonIconIndexSecondaryFirstRow);
item->setIcon(HbIcon(), HbInputButton::ButtonIconIndexSecondarySecondRow);
} else if (mMode == EModeAbc) {
- QString keydata;
+ QString firstRow;
+ QString secondRow;
QChar numChr;
- const HbKeyboardMap *keyboardMap = mKeymap->keyboard(HbKeyboardVirtual12Key);
- if (keyboardMap && key < keyboardMap->keys.count()) {
- keydata = keyboardMap->keys.at(key)->characters(mModifiers);
- numChr = numberCharacterBoundToKey(key);
+ const HbKeyboardMap *labelMap = mKeymap->keyboard(HbKeyboardVirtual12KeyLabels);
+ const HbKeyboardMap *keyMap = mKeymap->keyboard(HbKeyboardVirtual12Key);
+ if (labelMap && key < labelMap->keys.count()) {
+ firstRow = keyLabel(labelMap->keys.at(key)->chars, HbFirstRowIndex | mModifiers);
+ secondRow = keyLabel(labelMap->keys.at(key)->chars, HbSecondRowIndex | mModifiers);
+ numChr = labelMap->keys.at(key)->keycode;
}
- QString title("");
- if (mOwner->focusObject()) {
- QString allowedData;
- mOwner->focusObject()->filterStringWithEditorFilter(keydata, allowedData);
- title.append(allowedData.left(numberOfCharactersToShow(key)));
- } else {
- title.append(keydata.left(numberOfCharactersToShow(key)));
+ // Fallback to normal keymappings if key labels are not present
+ if (keyMap && key < keyMap->keys.count()) {
+ if (firstRow.isEmpty()) {
+ firstRow = keyMap->keys.at(key)->characters(mModifiers);
+ if (mOwner->focusObject()) {
+ QString allowedData;
+ mOwner->focusObject()->filterStringWithEditorFilter(firstRow, allowedData);
+ firstRow = allowedData.left(3);
+ } else {
+ firstRow = firstRow.left(3);
+ }
+ }
+ if (numChr.isNull()) {
+ numChr = numberCharacterBoundToKey(key);
+ }
}
- if (key == 9 && numChr == numberCharacterBoundToKey(key)) {
+ if (key == 9) {
item->setText(numChr, HbInputButton::ButtonTextIndexPrimary);
item->setIcon(HbIcon(HbInputButtonIconSpace2), HbInputButton::ButtonIconIndexSecondaryFirstRow);
- // Set space as secondaty text so that the layout is correct if icon is not found. This can be removed when
- // new space graphics are included in the main line.
- item->setText(QString(" "), HbInputButton::ButtonTextIndexSecondaryFirstRow);
} else {
- item->setText(title, HbInputButton::ButtonTextIndexSecondaryFirstRow);
+ item->setText(firstRow, HbInputButton::ButtonTextIndexSecondaryFirstRow);
+ item->setText(secondRow, HbInputButton::ButtonTextIndexSecondarySecondRow);
item->setText(numChr, HbInputButton::ButtonTextIndexPrimary);
}
}
@@ -251,19 +264,18 @@
}
}
-int Hb12KeyTouchKeyboardPrivate::numberOfCharactersToShow(int key)
+QString Hb12KeyTouchKeyboardPrivate::keyLabel(const QStringList &labels, int index)
{
- QChar keyCode;
- const HbKeyboardMap *keyboardMap = mKeymap->keyboard(HbKeyboardVirtual12Key);
- if (keyboardMap && key < keyboardMap->keys.count()) {
- keyCode = keyboardMap->keys.at(key)->keycode;
+ if (index == HbFirstRowIndex && labels.count() >= 2) {
+ return labels.at(1);
+ } else if (index == (HbFirstRowIndex | HbModifierShiftPressed) && labels.count() >= 3) {
+ return labels.at(2);
+ } else if (index == HbSecondRowIndex && labels.count() >= 4) {
+ return labels.at(3);
+ } else if (index == (HbSecondRowIndex | HbModifierShiftPressed) && labels.count() >= 5) {
+ return labels.at(4);
}
-
- if (keyCode == QChar('7') || keyCode == QChar('9')) {
- return 4;
- } else {
- return 3;
- }
+ return QString();
}
/*!
--- a/src/hbplugins/inputmethods/touchinput/hbinput12keytouchkeyboard_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/touchinput/hbinput12keytouchkeyboard_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -52,7 +52,8 @@
int keyCode(int buttonId);
void applyEditorConstraints();
void updateButtons();
- int numberOfCharactersToShow(int key);
+
+ QString keyLabel(const QStringList &labels, int index);
};
#endif // HB_INPUT_12KEY_TOUCH_KEYBOARD_PRIVATE_H
--- a/src/hbplugins/inputmethods/touchinput/hbinputbasic12keyhandler.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/touchinput/hbinputbasic12keyhandler.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -161,8 +161,7 @@
*/
bool HbInputBasic12KeyHandlerPrivate::buttonReleased(const QKeyEvent *keyEvent)
{
- HbInputVkbWidget::HbFlickDirection flickDir = static_cast<HbVirtual12Key*>(mInputMethod)->flickDirection();
- if (mInputMethod && flickDir!=HbInputVkbWidget::HbFlickDirectionDown) {
+ if (mInputMethod) {
Q_Q(HbInputBasic12KeyHandler);
int buttonId = keyEvent->key();
HbInputFocusObject *focusObject = mInputMethod->focusObject();
--- a/src/hbplugins/inputmethods/touchinput/hbinputprediction12keyhandler.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/touchinput/hbinputprediction12keyhandler.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -44,8 +44,8 @@
#include "hbinputabstractbase.h"
#include "hbinputprediction12keyhandler_p.h"
-#define HbDeltaHeight 3.0
-#define MAXUDBWORDSIZE 64
+static const qreal HbDeltaHeight = 3.0;
+static const qint16 MAXUDBWORDSIZE = 64;
HbInputPrediction12KeyHandlerPrivate::HbInputPrediction12KeyHandlerPrivate()
:mLastKey(0),
@@ -84,9 +84,10 @@
if (keyEvent->isAutoRepeat() && mLastKey == buttonId) {
if (buttonId == HbInputButton::ButtonKeyCodeAsterisk) {
//Remove the "?" mark if present
- chopQMarkAndUpdateEditor();
- q->actionHandler(HbInputModeHandler::HbInputModeActionCommit);
- mInputMethod->selectSpecialCharacterTableMode();
+ if (!mCanContinuePrediction) {
+ chopQMarkAndUpdateEditor();
+ }
+ mInputMethod->switchMode(buttonId);
mLongPressHappened = true;
} else if (buttonId == HbInputButton::ButtonKeyCodeShift) {
mInputMethod->switchMode(HbInputButton::ButtonKeyCodeShift);
@@ -120,7 +121,7 @@
}
if (buttonId == HbInputButton::ButtonKeyCodeShift) {
- // if we get a second consequtive shift key press,
+ // if we get a second consecutive shift key press,
// we want to handle it in buttonRelease
if (mTimer->isActive() && (mLastKey == buttonId)){
mShiftKeyDoubleTap = true;
@@ -149,6 +150,11 @@
mButtonDown = false;
int buttonId = keyEvent->key();
+ // short key press of character keys should not be handled when "?" is displayed
+ if (!mCanContinuePrediction && !mLongPressHappened &&
+ buttonId >= Qt::Key_1 && buttonId <= Qt::Key_9) {
+ return false;
+ }
// Sym key is handled in this class it self, so not passing it to
// the base mode handlers.
if (buttonId == HbInputButton::ButtonKeyCodeSymbol ||
@@ -170,7 +176,6 @@
(*mCandidates)[mBestGuessLocation].chop(1);
updateEditor();
q->launchSpellQueryDialog();
- mCanContinuePrediction = true;
} else {
mInputMethod->starKeySelected();
}
@@ -213,7 +218,10 @@
}
return true;
}
-
+ // ButtonKeyCodeSettings should not be propagated to the engine
+ if(buttonId == HbInputButton::ButtonKeyCodeSettings) {
+ return true;
+ }
if (buttonId != HbInputButton::ButtonKeyCodeDelete &&
mInputMethod->currentKeyboardType() == HbKeyboardSctPortrait) {
q->sctCharacterSelected(QChar(buttonId));
--- a/src/hbplugins/inputmethods/touchinput/hbinputpredictionqwertyhandler.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/touchinput/hbinputpredictionqwertyhandler.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -1,3 +1,4 @@
+
/****************************************************************************
**
** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -27,7 +28,8 @@
#include <hbinputkeymapfactory.h>
#include <hbinputpredictionengine.h>
#include <hbinputbutton.h>
-
+#include <QTextCharFormat>
+#include <HbColorScheme>
#include "hbinputpredictionqwertyhandler.h"
#include "hbinputpredictionhandler_p.h"
#include "hbinputabstractbase.h"
@@ -44,11 +46,20 @@
bool buttonPressed(const QKeyEvent *event);
bool buttonReleased(const QKeyEvent *event);
void init();
+ void updateEditor();
+ void commitSecondaryWord();
+ QString getCommitString();
+ void showExactWordPopupIfNeeded();
public:
int mButton;
HbFnState mFnState;
bool mExactPopupLaunched;
+ bool mShowExactWordInTooltip;
+ int mPrimaryCandidateIndex;
+ int mSecondaryCandidateIndex;
+ int mTypingCorrectionLevel;
+ HbTypingCorrectionLevel mCorrectionLevel;
};
HbInputPredictionQwertyHandlerPrivate::HbInputPredictionQwertyHandlerPrivate()
@@ -277,6 +288,12 @@
commitExactWord();
}
+void HbInputPredictionQwertyHandler::exactWordSelected()
+{
+ Q_D(HbInputPredictionQwertyHandler);
+ d->commitSecondaryWord();
+}
+
void HbInputPredictionQwertyHandler::sctCharacterSelected(QString character)
{
HbInputPredictionHandler::sctCharacterSelected(character);
@@ -317,11 +334,8 @@
mEngine->deleteKeyPress();
mEngine->updateCandidates(mBestGuessLocation);
}
- if (true == mExactPopupLaunched) {
- mBestGuessLocation = 0 ;
- }
- //When there is a deletion of key press, no need to update the candidate list
- //This is because deletion should not cause reprediction.
+
+ mBestGuessLocation = 0 ;
if(mCandidates->count() && (mCandidates->count()>mBestGuessLocation) && false == mTailShowing && false == mExactPopupLaunched) {
QString currentWord = mCandidates->at(mBestGuessLocation);
if(currentWord.length() > mEngine->inputLength()) {
@@ -359,4 +373,157 @@
}
}
+void HbInputPredictionQwertyHandler::setPrimaryCandidateMode(HbPrimaryCandidateMode mode)
+{
+ Q_D(HbInputPredictionQwertyHandler);
+ if(mode == HbPrimaryCandidateModeExactTyping) {
+ d->mShowExactWordInTooltip = false;
+ } else {
+ d->mShowExactWordInTooltip = true;
+ }
+ // we need to close the exact word popup when this happens.
+ d->mInputMethod->closeExactWordPopup();
+ d->mExactPopupLaunched = false;
+}
+
+void HbInputPredictionQwertyHandlerPrivate::updateEditor()
+{
+ Q_Q(HbInputPredictionQwertyHandler);
+ if (!mEngine) {
+ return;
+ }
+ HbInputFocusObject *focusedObject = 0;
+ QList<QInputMethodEvent::Attribute> list;
+ focusedObject = mInputMethod->focusObject();
+ QTextCharFormat underlined;
+ underlined.setFontUnderline(true);
+
+ Q_ASSERT(focusedObject);
+ if (mEngine->inputLength() == 0) {
+ QInputMethodEvent event(QString(), list);
+ q->sendAndUpdate(event);
+ } else {
+ if (mCandidates->count() > 0) {
+ // index of the candidate that is shown on the typing line
+ mPrimaryCandidateIndex = mBestGuessLocation;
+ // index of the candidate that is shown in the tooltip (if any)
+ mSecondaryCandidateIndex = 0;
+ QString bestGuessWord = mCandidates->at(mBestGuessLocation);
+ QString exactTypedWord = mCandidates->at(0);
+ bool hasAutocompletionPart = (bestGuessWord.length() > exactTypedWord.length()) && (bestGuessWord.left(exactTypedWord.length()) == exactTypedWord);
+ // when we are showing the autocompletion part we generally do not show the tooltip,
+ // both primary and secondary candidates are the same.
+ if(hasAutocompletionPart && mAutocompletionEnabled && mShowTail) {
+ mPrimaryCandidateIndex = mSecondaryCandidateIndex = mBestGuessLocation;
+ }
+ // in case of exact tying, exact typed word in the primary candidate
+ // and the best predicted word is the secondary candidate
+ if(!mShowExactWordInTooltip && !(hasAutocompletionPart && mAutocompletionEnabled)) {
+ mPrimaryCandidateIndex = 0;
+ mSecondaryCandidateIndex = mBestGuessLocation;
+ }
+ if (hasAutocompletionPart && mShowTail && mAutocompletionEnabled) {
+ // showing the word with auto completion
+ int taillength = bestGuessWord.length() - exactTypedWord.length();
+ // TODO: Color from skin should be used
+ QColor col = HbColorScheme::color("qtc_input_hint_normal");
+ QBrush brush(col);
+ // underline formatting is applied to only the input length part of the word
+ QInputMethodEvent::Attribute textstyle(QInputMethodEvent::TextFormat, 0, mEngine->inputLength(), underlined);
+ list.append(textstyle);
+
+ QTextCharFormat gray;
+ gray.setForeground(brush);
+ if((focusedObject->object())->inherits("QGraphicsWebView") || (focusedObject->object())->inherits("QWebView")) {
+ //QGraphicsWebView does not handle partial input length formatting well. Causes crash, a temporary fix provided,
+ //This makes the whole text field grey insted of just the auto-completion part. Anyways, it does not cause crash.
+ //This should be treated as a work around till QGraphicsWebView is fixed.
+ list.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, 0, QInputMethodEvent::TextFormat, gray));
+ } else {
+ list.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, mEngine->inputLength(), taillength, gray));
+ }
+ list.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, mEngine->inputLength(), 0, 0));
+ // the best guess word is sent to the editor
+ QInputMethodEvent event(bestGuessWord, list);
+ focusedObject->sendEvent(event);
+ mTailShowing = true;
+ } else {
+ QInputMethodEvent::Attribute textstyle(QInputMethodEvent::TextFormat, 0, mCandidates->at(mPrimaryCandidateIndex).length(), underlined);
+ list.append(textstyle);
+ list.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, mCandidates->at(mPrimaryCandidateIndex).length(), 0, 0));
+ QInputMethodEvent event(mCandidates->at(mPrimaryCandidateIndex), list);
+ focusedObject->sendEvent(event);
+ mTailShowing = false;
+ }
+
+ if (mShowTooltip && mPrimaryCandidateIndex != mSecondaryCandidateIndex) {
+ q->processExactWord(mCandidates->at(mSecondaryCandidateIndex));
+ } else {
+ QString empty;
+ q->processExactWord(empty);
+ }
+ } else {
+ QInputMethodEvent event(QString(""), list);
+ focusedObject->sendEvent(event);
+ }
+ }
+}
+
+void HbInputPredictionQwertyHandlerPrivate::commitSecondaryWord()
+{
+ if(mCandidates->count()>mSecondaryCandidateIndex) {
+ QString commitString = mCandidates->at(mSecondaryCandidateIndex);
+ commit(commitString, true, false);
+ }
+}
+
+void HbInputPredictionQwertyHandlerPrivate::showExactWordPopupIfNeeded()
+{
+ Q_Q(HbInputPredictionHandler);
+ if (mShowTooltip && mCandidates->count() > mPrimaryCandidateIndex && mCandidates->at(0).mid(0, mEngine->inputLength()) \
+ != mCandidates->at(mPrimaryCandidateIndex).mid(0, mEngine->inputLength())) {
+ q->processExactWord(mCandidates->at(mSecondaryCandidateIndex));
+ } else {
+ QString empty;
+ q->processExactWord(empty);
+ }
+}
+
+QString HbInputPredictionQwertyHandlerPrivate::getCommitString()
+{
+ QString commitString;
+ if(mCandidates->count() <= mPrimaryCandidateIndex) {
+ commitString = mCandidates->at(0);
+ } else {
+ commitString = mCandidates->at(mPrimaryCandidateIndex);
+ }
+ return commitString;
+}
+
+void HbInputPredictionQwertyHandler::setTypingCorrectionLevel(HbTypingCorrectionLevel correctionLevel)
+{
+ Q_D(HbInputPredictionQwertyHandler);
+ HbPredictionEngine::HbErrorCorrectionLevel errorCorrectionLevel = HbPredictionEngine::HbErrorCorrectionLevelMedium;
+ if(d->mCorrectionLevel == correctionLevel) {
+ return;
+ }
+ d->mCorrectionLevel = correctionLevel;
+ switch(correctionLevel) {
+ case HbTypingCorrectionLevelLow:
+ errorCorrectionLevel = HbPredictionEngine::HbErrorCorrectionLevelLow;
+ break;
+ case HbTypingCorrectionLevelMedium:
+ errorCorrectionLevel = HbPredictionEngine::HbErrorCorrectionLevelMedium;
+ break;
+ case HbTypingCorrectionLevelHigh:
+ errorCorrectionLevel = HbPredictionEngine::HbErrorCorrectionLevelHigh;
+ break;
+ default:
+ break;
+ }
+ if(d->mEngine) {
+ d->mEngine->setErrorCorrectionLevel(errorCorrectionLevel);
+ }
+}
+
//EOF
--- a/src/hbplugins/inputmethods/touchinput/hbinputpredictionqwertyhandler.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/touchinput/hbinputpredictionqwertyhandler.h Wed Jun 23 18:33:25 2010 +0300
@@ -43,8 +43,11 @@
void commitAndUpdate(const QString& string, int replaceFrom = 0, int replaceLength = 0);
void deleteOneCharacter();
void smileySelected(QString smiley);
+ void setPrimaryCandidateMode(HbPrimaryCandidateMode mode);
+ void setTypingCorrectionLevel(HbTypingCorrectionLevel correctionLevel);
public slots:
void exactWordPopupClosed();
+ void exactWordSelected();
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbInputPredictionQwertyHandler)
Q_DISABLE_COPY(HbInputPredictionQwertyHandler)
--- a/src/hbplugins/inputmethods/touchinput/virtual12key.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/touchinput/virtual12key.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -98,6 +98,8 @@
mBasicModeHandler, SLOT(actionHandler(HbInputModeAction )));
connect(HbInputSettingProxy::instance(), SIGNAL(predictiveInputStateChanged(HbKeyboardSettingFlags,bool)), this, SLOT(predictiveInputStateChanged(HbKeyboardSettingFlags,bool)));
+ connect(HbInputSettingProxy::instance(), SIGNAL(autocompletionStateChanged(HbKeyboardSettingFlags,bool)), this, SLOT(autocompletionStateChanged(HbKeyboardSettingFlags,bool)));
+ mPredictionModeHandler->setAutocompletionStatus(HbInputSettingProxy::instance()->isAutocompletionEnabled(HbKeyboardSetting12key));
}
bool HbVirtual12Key::isSctModeActive() const
@@ -286,14 +288,15 @@
*/
void HbVirtual12Key::openKeypad(HbInputVkbWidget * keypadToOpen,bool inMinimizedMode)
{
+ // if null is sent, just return.
+ if(!keypadToOpen || !focusObject()) {
+ return;
+ }
+
mKeyboardChangeAlreadyInprogress = true;
HbInputSettingProxy::instance()->setActiveKeyboard(HbKeyboardVirtual12Key);
mKeyboardChangeAlreadyInprogress = false;
- // if null is sent, just return.
- if(!keypadToOpen) {
- return;
- }
bool disableAnimation = false;
// see if we are trying to open a different keypad than what is already opened.
if (mCurrentKeypad != keypadToOpen) {
@@ -329,8 +332,10 @@
} else {
mVkbHost->openKeypad(mCurrentKeypad, this, (!stateChangeInProgress() && !disableAnimation));
}
- connect(&(focusObject()->editorInterface()), SIGNAL(cursorPositionChanged(int, int)),
- mVkbHost, SLOT(ensureCursorVisibility()));
+ if (focusObject()) {
+ connect(&(focusObject()->editorInterface()), SIGNAL(cursorPositionChanged(int, int)),
+ mVkbHost, SLOT(ensureCursorVisibility()));
+ }
}
}
@@ -368,6 +373,13 @@
}
}
+void HbVirtual12Key::autocompletionStateChanged(HbKeyboardSettingFlags keyboardType, bool newState)
+{
+ if (keyboardType & HbKeyboardSetting12key) {
+ mPredictionModeHandler->setAutocompletionStatus(newState);
+ }
+}
+
/*!
Call back indicating that the keypad is closed.
*/
@@ -512,7 +524,7 @@
HbInputModeHandler *previousModeHandler = mActiveModeHandler;
if (newState.inputMode() == HbInputModeDefault && usePrediction()) {
- mActiveModeHandler = mPredictionModeHandler;
+ mActiveModeHandler = mPredictionModeHandler;
// by passing HbInputModeActionFocusRecieved we will be setting the candidate list and keypad
mActiveModeHandler->actionHandler(HbInputModeHandler::HbInputModeActionFocusRecieved);
} else if (newState.inputMode() == HbInputModeDefault) {
@@ -553,7 +565,7 @@
*/
void HbVirtual12Key::loadKeymap(const HbInputLanguage &newLanguage)
{
- //dont try to get the keymappings if we ( mKeyData) already have keymappings for newLanguage
+ //don't try to get the keymappings if we ( mKeyData) already have keymappings for newLanguage
if (!mKeymap || mKeymap->language().language() != newLanguage.language()) {
const HbKeymap* keymap = HbKeymapFactory::instance()->keymap(newLanguage);
if(keymap) {
@@ -809,15 +821,4 @@
return false;
}
-/*!
-This function returns true if the latest mouse release was part of a horizontal flick event
-*/
-HbInputVkbWidget::HbFlickDirection HbVirtual12Key::flickDirection() const
-{
- if (mCurrentKeypad) {
- return mCurrentKeypad->flickDirection();
- } else {
- return HbInputVkbWidget::HbFlickDirectionNone;
- }
-}
// End of file
--- a/src/hbplugins/inputmethods/touchinput/virtual12key.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/touchinput/virtual12key.h Wed Jun 23 18:33:25 2010 +0300
@@ -82,7 +82,6 @@
void showAutoCompletionFieldCandidates();
void initializeModeHandlers();
bool isSctModeActive() const;
- HbInputVkbWidget::HbFlickDirection flickDirection() const;
void launchCandidatePopup(const QStringList& candidates);
void closeKeypad();
void selectSpecialCharacterTableMode();
@@ -111,9 +110,10 @@
void smileySelected(QString smiley);
void predictiveInputStateChanged(HbKeyboardSettingFlags keyboardType, bool newState);
void aboutToActivateCustomAction(HbAction *custAction);
+ void autocompletionStateChanged(HbKeyboardSettingFlags keyboardType, bool newState);
private:
- // mCurrentKeypad contains currently active keypad, we dont need to have
+ // mCurrentKeypad contains currently active keypad, we don't need to have
// anyother variables to tell us which is current keypad
QPointer<HbInputVkbWidget> mCurrentKeypad;
// contains itut keypad
--- a/src/hbplugins/inputmethods/touchinput/virtualqwerty.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/touchinput/virtualqwerty.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -86,6 +86,12 @@
connect(this, SIGNAL(autoCompletionPopupClosed(QString, int)), mBasicModeHandler, SLOT(autoCompletionPopupClosed(QString, int)));
connect(HbInputSettingProxy::instance(), SIGNAL(predictiveInputStateChanged(HbKeyboardSettingFlags,bool)), this, SLOT(predictiveInputStateChanged(HbKeyboardSettingFlags,bool)));
+ connect(HbInputSettingProxy::instance(), SIGNAL(primaryCandidateModeChanged(HbPrimaryCandidateMode)), this, SLOT(primaryCandidateModeChanged(HbPrimaryCandidateMode)));
+ connect(HbInputSettingProxy::instance(), SIGNAL(autocompletionStateChanged(HbKeyboardSettingFlags,bool)), this, SLOT(autocompletionStateChanged(HbKeyboardSettingFlags,bool)));
+ connect(HbInputSettingProxy::instance(), SIGNAL(typingCorrectionLevelChanged(HbTypingCorrectionLevel)), this, SLOT(typingCorrectionLevelChanged(HbTypingCorrectionLevel)));
+ mPredictionModeHandler->setPrimaryCandidateMode(HbInputSettingProxy::instance()->primaryCandidateMode());
+ mPredictionModeHandler->setAutocompletionStatus(HbInputSettingProxy::instance()->isAutocompletionEnabled(HbKeyboardSettingQwerty));
+ mPredictionModeHandler->setTypingCorrectionLevel(HbInputSettingProxy::instance()->typingCorrectionLevel());
}
// ---------------------------------------------------------------------------
@@ -218,6 +224,7 @@
disconnect(&(focusObject()->editorInterface()), SIGNAL(cursorPositionChanged(int, int)), mActiveModeHandler, SLOT(cursorPositionChanged(int, int)));
}
+ closeExactWordPopup();
if (!focusSwitch) {
if (mVkbHost && mVkbHost->keypadStatus() != HbVkbHost::HbVkbStatusClosed) {
// Context switch has happened but the keypad is still open.
@@ -242,7 +249,7 @@
void HbVirtualQwerty::openKeypad(HbInputVkbWidget * keypadToOpen,bool inMinimizedMode )
{
// if null is sent, just return.
- if(!keypadToOpen) {
+ if(!keypadToOpen || !focusObject()) {
return;
}
bool disableAnimation = false;
@@ -279,7 +286,10 @@
mVkbHost->openKeypad(mCurrentKeypad, this, !disableAnimation);
}
- connect(&(focusObject()->editorInterface()), SIGNAL(cursorPositionChanged(int, int)), mVkbHost, SLOT(ensureCursorVisibility()));
+ if (focusObject()) {
+ connect(&(focusObject()->editorInterface()), SIGNAL(cursorPositionChanged(int, int)),
+ mVkbHost, SLOT(ensureCursorVisibility()));
+ }
}
}
@@ -335,8 +345,8 @@
if (mOrientationAboutToChange) {
mOrientationAboutToChange = false;
}
- if (mExactWordPopup && mExactWordPopup->isVisible()) {
- mExactWordPopup->hide();
+ if (mVkbHost->keypadStatus() == HbVkbHost::HbVkbStatusMinimized) {
+ closeExactWordPopup();
}
}
@@ -367,17 +377,14 @@
// load the new key keymappings for newLanguage to all keypads and all mode handlers
loadKeymap(aNewLanguage);
- if (mCurrentKeypad && mCurrentKeypad != mQwertyAlphaKeypad
- && mCurrentKeypad != mQwertyNumericKeypad) {
- mCurrentKeypad->animKeyboardChange();
- openKeypad(mQwertyAlphaKeypad);
- }
-
- mPredictionModeHandler->actionHandler(HbInputModeHandler::HbInputModeActionPrimaryLanguageChanged);
- if (mCurrentKeypad){
+ if (focusObject() && mCurrentKeypad) {
+ if (mCurrentKeypad != mQwertyAlphaKeypad && mCurrentKeypad != mQwertyNumericKeypad) {
+ mCurrentKeypad->animKeyboardChange();
+ openKeypad(mQwertyAlphaKeypad);
+ }
mCurrentKeypad->animKeyboardChange();
}
-
+ mPredictionModeHandler->actionHandler(HbInputModeHandler::HbInputModeActionPrimaryLanguageChanged);
}
void HbVirtualQwerty::inputStateActivated(const HbInputState& newState)
@@ -437,7 +444,7 @@
void HbVirtualQwerty::loadKeymap(const HbInputLanguage &newLanguage)
{
// inform all the mode handler about the language change.
- //dont try to get the keymappings if we ( mKeyData) already have keymappings for newLanguage
+ //don't try to get the keymappings if we ( mKeyData) already have keymappings for newLanguage
if (!mKeymap || mKeymap->language() != newLanguage) {
const HbKeymap* keymap = HbKeymapFactory::instance()->keymap(newLanguage);
@@ -683,6 +690,22 @@
}
}
+void HbVirtualQwerty::primaryCandidateModeChanged(HbPrimaryCandidateMode mode)
+{
+ mPredictionModeHandler->setPrimaryCandidateMode(mode);
+}
+
+void HbVirtualQwerty::autocompletionStateChanged(HbKeyboardSettingFlags keyboardType, bool newState)
+{
+ if (keyboardType & HbKeyboardSettingQwerty) {
+ mPredictionModeHandler->setAutocompletionStatus(newState);
+ }
+}
+
+void HbVirtualQwerty::typingCorrectionLevelChanged(HbTypingCorrectionLevel correctionLevel)
+{
+ mPredictionModeHandler->setTypingCorrectionLevel(correctionLevel);
+}
/*!
this function is called whenever there is a hardware keypress Or virtual keypad button is pressed.
*/
@@ -703,7 +726,7 @@
{
if (!mExactWordPopup) {
mExactWordPopup = HbExactWordPopup::instance();
- connect(mExactWordPopup, SIGNAL(exactWordSelected()), mPredictionModeHandler, SLOT(exactWordPopupClosed()));
+ connect(mExactWordPopup, SIGNAL(exactWordSelected()), mPredictionModeHandler, SLOT(exactWordSelected()));
}
mExactWordPopup->setText(exactWord);
mExactWordPopup->showText(getCursorCoordinatePosition());
--- a/src/hbplugins/inputmethods/touchinput/virtualqwerty.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbplugins/inputmethods/touchinput/virtualqwerty.h Wed Jun 23 18:33:25 2010 +0300
@@ -74,6 +74,8 @@
void mouseMovedOutOfButton();
void smileySelected(QString smiley);
void predictiveInputStateChanged(HbKeyboardSettingFlags keyboardType, bool newState);
+ void autocompletionStateChanged(HbKeyboardSettingFlags keyboardType, bool newState);
+ void typingCorrectionLevelChanged(HbTypingCorrectionLevel typingCorrectionLevel);
void candidatePopupClosed(int closingKey, const QString& candidate);
void aboutToActivateCustomAction(HbAction *custAction);
@@ -105,6 +107,7 @@
private slots:
void candidatePopupCancelled();
+ void primaryCandidateModeChanged(HbPrimaryCandidateMode mode);
private:
void initializePredictiveMode();
@@ -119,7 +122,7 @@
HbInputVkbWidget *constructKeyboard(HbKeypadMode currentInputType);
private:
- // mCurrentKeypad contains currently active keypad, we dont need to have
+ // mCurrentKeypad contains currently active keypad, we don't need to have
// anyother variables to tell us which is current keypad
QPointer<HbInputVkbWidget> mCurrentKeypad;
// contains qwerty alpha keypad
--- a/src/hbservers/hbthemeserver/hbpixmapiconprocessor_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbservers/hbthemeserver/hbpixmapiconprocessor_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -37,7 +37,9 @@
#include "hbthemeserverutils_p.h"
#if defined (Q_OS_SYMBIAN)
-#include <vg/openvg.h>
+// Note: Cases of the following two directory names intentionally differ to
+// match the cases of the corresponding directories in Symbian 4.
+#include <VG/openvg.h>
#include <vg/vgcontext_symbian.h>
#endif //Q_OS_SYMBIAN
--- a/src/hbservers/hbthemeserver/hbthemeserver.pro Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbservers/hbthemeserver/hbthemeserver.pro Wed Jun 23 18:33:25 2010 +0300
@@ -98,9 +98,8 @@
# AllFiles is needed to be able to access icon and effect files in
# an application's private folder for example.
- TARGET.CAPABILITY = CAP_SERVER AllFiles
- # TARGET.CAPABILITY += ProtServ TrustedUI
-
+ TARGET.CAPABILITY = CAP_SERVER AllFiles ProtServ
+
} else {
SOURCES += $$PWD/hbthemeserver_generic.cpp
HEADERS += $$PWD/hbthemeserver_generic_p_p.h
--- a/src/hbservers/hbthemeserver/hbthemeserver_symbian.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbservers/hbthemeserver/hbthemeserver_symbian.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -289,32 +289,25 @@
themeLookupPath.append(themeName);
QString filename(themeLookupPath);
filename.append("\\index.theme");
- QFile file;
filename[0] = 'C';
- file.setFileName(filename);
- if (file.open(QIODevice::ReadOnly)) {
+ if (QFile::exists(filename)) {
themeLookupPath[0] = 'C';
themePath = themeLookupPath;
- file.close();
return true;
}
filename[0] = 'E';
- file.setFileName(filename);
- if (file.open(QIODevice::ReadOnly)) {
+ if (QFile::exists(filename)) {
themeLookupPath[0] = 'E';
themePath = themeLookupPath;
- file.close();
return true;
}
filename[0] = 'F';
- file.setFileName(filename);
- if (file.open(QIODevice::ReadOnly)) {
+ if (QFile::exists(filename)) {
themeLookupPath[0] = 'F';
themePath = themeLookupPath;
- file.close();
return true;
}
@@ -834,10 +827,6 @@
GetSharedIconInfoL(aMessage);
break;
- case EThemeSelection:
- HandleThemeSelectionL(aMessage);
- break;
-
case EMultiPieceIcon:
GetSharedMultiIconInfoL(aMessage);
break;
@@ -1306,30 +1295,6 @@
}
/**
- * handleThemeSelectionL
- */
-void HbThemeServerSession::HandleThemeSelectionL(const RMessage2& aMessage)
-{
- TInt deslen = aMessage.GetDesLength(0);
- RBuf buffer;
- buffer.CreateL(deslen);
- buffer.CleanupClosePushL();
- aMessage.ReadL(0, buffer, 0);
- if (buffer.Length() == 0) {
- User::Leave(ENonNumericString);
- }
- QString newTheme((QChar*)buffer.Ptr(), buffer.Length());
- CleanupStack::PopAndDestroy(); // close the buffer
-
- QString cleanThemeName = newTheme.trimmed();
-
- if (cleanThemeName != iServer->iCurrentThemeName) {
- iServer->HandleThemeSelection(cleanThemeName);
- sessionData.clear();
- }
-}
-
-/**
* Panics the client
*/
void HbThemeServerSession::PanicClient(const RMessage2& aMessage, TInt aPanic) const
--- a/src/hbservers/hbthemeserver/hbthemeserver_symbian_p_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbservers/hbthemeserver/hbthemeserver_symbian_p_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -175,7 +175,6 @@
void HandleWidgetMLLookupL(const RMessage2& aMessage);
void HandleDeviceProfilesReqL(const RMessage2& aMessage);
void HandleEffectAddAndFileLookupL(const RMessage2 &aMessage);
- void HandleThemeSelectionL(const RMessage2 & aMessage);
QColor GetColorFromRgba(TUint32 aRgba, bool aColorFlag);
void GetSharedMultiIconInfoL(const RMessage2& aMessage);
void GetMultiIconInfoL(const RMessage2& aMessage);
--- a/src/hbservers/hbthemeserver/hbthemeserverapplication.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbservers/hbthemeserver/hbthemeserverapplication.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -101,6 +101,8 @@
wgName->SetWindowGroupName(env->RootWin());
CleanupStack::PopAndDestroy();
RThread::RenameMe(KHbThemeServer);
+ User::SetProcessCritical(User::ESystemCritical);
+ User::SetCritical(User::ESystemCritical);
}
#endif
--- a/src/hbservers/hbthemeserver/hbthemewatcher_symbian.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbservers/hbthemeserver/hbthemewatcher_symbian.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -81,10 +81,7 @@
return;
}
- QFile file(iFile);
- if (file.open(QIODevice::ReadOnly)) {
- file.close();
-
+ if (QFile::exists(iFile)) {
// theme exists continue watching
TBuf<256> fileToWatch(iFile.utf16());
iFs.NotifyChange(ENotifyAll, iStatus, fileToWatch);
--- a/src/hbservers/hbthemeserveroogmplugin/hbthemeserveroogmplugin.pro Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbservers/hbthemeserveroogmplugin/hbthemeserveroogmplugin.pro Wed Jun 23 18:33:25 2010 +0300
@@ -53,7 +53,7 @@
myrssrules = \
"START RESOURCE hbthemeserveroogmplugin.rss" \
- "TARGETPATH resource\plugins" \
+ "TARGETPATH resource/plugins" \
"TARGET hbthemeserveroogmplugin.rsc" \
"END"
--- a/src/hbtools/hbthemeindexer/main.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbtools/hbthemeindexer/main.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -158,10 +158,16 @@
if (itemData.flags & HbThemeIndexItemData::Mirrorable) {
std::cout << "Icon is automatically mirrored\n";
}
+ } else if (itemData.itemType == HbThemeIndexItemData::ColorItem) {
+ std::cout << "Color value: " << itemData.colorValue << "\n";
+ if (itemData.flags & HbThemeIndexItemData::Reference) {
+ std::cout << "Item is reference\n";
+ }
}
if (itemData.flags & HbThemeIndexItemData::Locked) {
std::cout << "Item is locked\n";
}
+
std::cout << "----------------------------------------------------------------\n\n";
} else { // Item already added in index with some other extension, do not add duplicates
std::cout << "----------------------------------------------------------------\n";
@@ -306,6 +312,50 @@
return d1.itemNameHash < d2.itemNameHash;
}
+void indexColorVariables(const QString &filename)
+{
+ QFile file(filename);
+
+ // Index only if given CSS file exists in theme.
+ if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ QTextStream in(&file);
+
+ while(!in.atEnd()) {
+ QString line = in.readLine().trimmed();
+
+ if (line.startsWith("qtc_")) {
+ HbThemeIndexItemData itemData;
+
+ // Extract name and value from line
+ QString name = line.mid(0, line.indexOf(':')).trimmed();
+ QString value;
+ if (line.at(line.indexOf(':') + 1) == QChar('#')) {
+ // qtc_conv_list_received_normal:#B5B5B5;
+ int startIndex = line.indexOf('#');
+ int endIndex = line.indexOf(';');
+ value = line.mid(startIndex + 1, endIndex - startIndex - 1).trimmed();
+ } else if (line.indexOf("var(") >= 0) {
+ // qtc_conv_list_received_normal:var(qtc_conv_list_sent_normal);
+ itemData.flags |= HbThemeIndexItemData::Reference;
+ int startIndex = line.indexOf("var(") + 4;
+ int endIndex = line.indexOf(')');
+ value = line.mid(startIndex, endIndex - startIndex).trimmed();
+ }
+
+ itemData.itemNameHash = HbThemeIndex::hash(name);
+ itemData.itemType = HbThemeIndexItemData::ColorItem;
+ bool ok = false;
+ itemData.colorValue = (quint32)value.toUInt(&ok, 16); // Might cause compiler warning in 64 bit systems
+ appendItem(itemData, name);
+ }
+ }
+ file.close();
+ } else if (verboseOn) {
+ std::cout << "No " << filename.toStdString() << " in theme!\n";
+ }
+ return;
+}
+
void processDir(const QDir &dir, const QString &themename, const QString targetName, bool subDir = false)
{
if (!subDir) {
@@ -341,8 +391,25 @@
itemData.flags |= HbThemeIndexItemData::Mirrorable;
appendItem(itemData, mirrored);
}
- QDir targetDir(targetName);
- if (!targetDir.exists()) {
+
+ // Read application and widget color group CSS files and index their content
+ // Temporary check
+ if (QFile::exists(dir.absolutePath() + "/style/" + themename + "/variables/color/hbapplicationcolorgroup.css") &&
+ QFile::exists(dir.absolutePath() + "/style/" + themename + "/variables/color/hbwidgetcolorgroup.css")) {
+ if (verboseOn) {
+ std::cout << "Processing hbapplicationcolorgroup.css and hbwidgetcolorgroup.css";
+ }
+ indexColorVariables(dir.absolutePath() + "/style/" + themename + "/variables/color/hbapplicationcolorgroup.css");
+ indexColorVariables(dir.absolutePath() + "/style/" + themename + "/variables/color/hbwidgetcolorgroup.css");
+ } else {
+ if (verboseOn) {
+ std::cout << "Processing hbcolorgroup.css";
+ }
+ indexColorVariables(dir.absolutePath() + "/style/" + themename + "/variables/color/hbcolorgroup.css");
+ }
+
+ QDir targetDir;
+ if (!targetDir.exists(targetName)) {
targetDir.mkpath(targetName);
}
QString filename = targetName + themename + ".themeindex";
@@ -384,11 +451,12 @@
void showHelp() {
std::cout << "Themeindexer.exe usage:\n\n";
- std::cout << "hbthemeindexer [-v] -f filename OR -n themename -s themes source directory -t theme index file target directory\n\n";
+ std::cout << "hbthemeindexer [-v] -f filename OR (-n themename) -s themes source directory -t theme index file target directory\n\n";
- std::cout << "-n \t\ttheme to be indexed (\"<themename>.themeindex\").\n";
- std::cout << "-s \t\tthemes source directory is scanned recursively and all the";
- std::cout << "\t\t\trecognized resource files for given theme are aded in the theme index.\n";
+ std::cout << "-n \t\ttheme to be indexed (\"<themename>.themeindex\"). If omitted, all found\n";
+ std::cout << "\t\tthemes are indexed.\n";
+ std::cout << "-s \t\tthemes source directory is scanned recursively and all the recognized\n";
+ std::cout << "\t\tresource files for given theme are aded in the theme index.\n";
std::cout << "-t \t\ttarget directory for the index file.\n";
std::cout << "-f <filename>\tfile which contains multiple themes to be indexed. Each in its own row.\n";
@@ -491,7 +559,7 @@
}
}
} else {
- // Index only given theme
+ // Index only given dir
targetname.replace('\\', '/');
// Check that targetname has / at the end
@@ -499,7 +567,22 @@
targetname.append('/');
}
- processDir(basedir, themename, targetname);
+ if (themename.isEmpty()) {
+ // Theme name not given, determine available themes
+ QDir icondir(basedir);
+ if (icondir.cd("icons")) {
+ QStringList entries = icondir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
+ foreach (const QString &entry, entries) {
+ QDir entrydir(icondir.filePath(entry));
+ if (entrydir.exists("index.theme")) {
+ processDir(basedir, entrydir.dirName(), targetname);
+ }
+ }
+ }
+ } else {
+ // Process only given theme
+ processDir(basedir, themename, targetname);
+ }
}
}
--- a/src/hbutils/document/hbdocumentloader.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbutils/document/hbdocumentloader.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -210,8 +210,11 @@
/*!
- Inserts object tree to documentloader. You can pass as an input parameter
+ Inserts object tree to document loader. You can pass as an input parameter
output of "load" mothod.
+
+ Document loader does not take ownership of the objects.
+
\param roots root objects list.
\return true if success, false otherwise.
*/
--- a/src/hbutils/document/hbdocumentloaderactions_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbutils/document/hbdocumentloaderactions_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -100,7 +100,7 @@
return false;
}
- QObject *current = lookUp(type, name).first.data();
+ QObject *current = lookUp(type, name).mObject.data();
if( current == 0 ) {
HB_DOCUMENTLOADER_PRINT( QString( "Not supported object: " ) + type );
@@ -137,7 +137,7 @@
}
ObjectMapItem item = lookUp(type, name, plugin);
- QObject *current = item.first.data();
+ QObject *current = item.mObject.data();
if( current == 0 ) {
HB_DOCUMENTLOADER_PRINT( QString( "Not supported object: " ) + type );
@@ -149,7 +149,7 @@
parentAsWidget = static_cast<QGraphicsWidget *>(parent);
}
QGraphicsWidget *asWidget(0);
- if (item.second == HbXml::WIDGET) {
+ if (item.mType == HbXml::WIDGET) {
asWidget = static_cast<QGraphicsWidget *>(current);
}
@@ -194,8 +194,8 @@
return false;
} else {
ObjectMapItem &item = mObjectMap[ widget ];
- if (item.second == HbXml::WIDGET) {
- parent = qobject_cast<HbWidget *>( item.first.data() );
+ if (item.mType == HbXml::WIDGET) {
+ parent = qobject_cast<HbWidget *>( item.mObject.data() );
}
if( !parent ) {
HB_DOCUMENTLOADER_PRINT( QString( "SPACERITEM: CANNOT SET SPACERITEM TO NON-HBWIDGET " ) );
@@ -237,14 +237,14 @@
return false;
}
- QObject *src = mObjectMap[ srcName ].first;
+ QObject *src = mObjectMap[ srcName ].mObject;
if( !src ) {
HB_DOCUMENTLOADER_PRINT( QString( "Unable to establish signal/slot connection, already destroyed " ) + srcName );
return false;
}
- QObject *dst = mObjectMap[ dstName ].first;
+ QObject *dst = mObjectMap[ dstName ].mObject;
if( !dst ) {
HB_DOCUMENTLOADER_PRINT( QString( "Unable to establish signal/slot connection, already destroyed " ) + dstName );
@@ -295,7 +295,7 @@
bool HbDocumentLoaderActions::pushRef( const QString &name, const QString &role )
{
QObject *current = findFromStack();
- QObject *ref = mObjectMap[ name ].first.data();
+ QObject *ref = mObjectMap[ name ].mObject.data();
if( ( current == 0 ) || ( ref == 0 ) ) {
HB_DOCUMENTLOADER_PRINT( QString( "Wrong role name or role context" ) );
@@ -526,8 +526,8 @@
if( isWidget ) {
parent = static_cast<QGraphicsWidget *>( parentObj );
}
- } else if ( mObjectMap.contains( widget ) && mObjectMap[ widget ].second == HbXml::WIDGET ) {
- parent = static_cast<QGraphicsWidget *>( mObjectMap[ widget ].first.data() );
+ } else if ( mObjectMap.contains( widget ) && mObjectMap[ widget ].mType == HbXml::WIDGET ) {
+ parent = static_cast<QGraphicsWidget *>( mObjectMap[ widget ].mObject.data() );
}
if ( !parent ) {
HB_DOCUMENTLOADER_PRINT( QString( "ANCHORLAYOUT: PARENT NOT FOUND" ) );
@@ -594,8 +594,8 @@
} else if ( !( mObjectMap.contains( src ) ) ) {
item1 = findLayoutItem( *layout, src );
} else {
- if (mObjectMap[ src ].second == HbXml::WIDGET) {
- item1 = static_cast<QGraphicsWidget *>( mObjectMap[ src ].first.data() );
+ if (mObjectMap[ src ].mType == HbXml::WIDGET) {
+ item1 = static_cast<QGraphicsWidget *>( mObjectMap[ src ].mObject.data() );
}
}
if ( !item1 ) {
@@ -608,8 +608,8 @@
} else if( !( mObjectMap.contains( dst ) ) ) {
item2 = findLayoutItem( *layout, dst );
} else {
- if (mObjectMap[ dst ].second == HbXml::WIDGET) {
- item2 = static_cast<QGraphicsWidget *>( mObjectMap[ dst ].first.data() );
+ if (mObjectMap[ dst ].mType == HbXml::WIDGET) {
+ item2 = static_cast<QGraphicsWidget *>( mObjectMap[ dst ].mObject.data() );
}
}
if ( !item2 ) {
@@ -636,8 +636,8 @@
if( isWidget ) {
parent = static_cast<QGraphicsWidget *>( parentObj );
}
- } else if ( mObjectMap.contains( widget ) && mObjectMap[ widget ].second == HbXml::WIDGET ) {
- parent = static_cast<QGraphicsWidget *>( mObjectMap[ widget ].first.data() );
+ } else if ( mObjectMap.contains( widget ) && mObjectMap[ widget ].mType == HbXml::WIDGET ) {
+ parent = static_cast<QGraphicsWidget *>( mObjectMap[ widget ].mObject.data() );
}
if ( !parent ) {
HB_DOCUMENTLOADER_PRINT( QString( "GRIDLAYOUT: PARENT NOT FOUND" ) );
@@ -681,8 +681,8 @@
if( src.isEmpty() ) {
HB_DOCUMENTLOADER_PRINT( QString( "GRIDLAYOUT: TRY TO ADD EMPTY ITEM " ) + src );
return false;
- } else if ( mObjectMap.contains( src ) && mObjectMap[ src ].second == HbXml::WIDGET ) {
- item = static_cast<QGraphicsWidget *>( mObjectMap[ src ].first.data() );
+ } else if ( mObjectMap.contains( src ) && mObjectMap[ src ].mType == HbXml::WIDGET ) {
+ item = static_cast<QGraphicsWidget *>( mObjectMap[ src ].mObject.data() );
} else {
HB_DOCUMENTLOADER_PRINT( QString( "GRIDLAYOUT: NO SUCH ITEM " ) + src );
return false;
@@ -872,8 +872,8 @@
if ( isWidget ) {
parent = static_cast<QGraphicsWidget *>( parentObj );
}
- } else if ( mObjectMap.contains( widget ) && mObjectMap[ widget ].second == HbXml::WIDGET ) {
- parent = static_cast<QGraphicsWidget *>( mObjectMap[ widget ].first.data() );
+ } else if ( mObjectMap.contains( widget ) && mObjectMap[ widget ].mType == HbXml::WIDGET ) {
+ parent = static_cast<QGraphicsWidget *>( mObjectMap[ widget ].mObject.data() );
}
if ( !parent ) {
HB_DOCUMENTLOADER_PRINT( QString( "LINEARLAYOUT: PARENT NOT FOUND" ) );
@@ -919,8 +919,8 @@
if ( itemname.isEmpty() ) {
HB_DOCUMENTLOADER_PRINT( QString( "LINEARLAYOUT: TRY TO ADD EMPTY ITEM " ) + itemname );
return false;
- } else if ( mObjectMap.contains( itemname ) && mObjectMap[ itemname ].second == HbXml::WIDGET ) {
- item = static_cast<QGraphicsWidget *>( mObjectMap[ itemname ].first.data() );
+ } else if ( mObjectMap.contains( itemname ) && mObjectMap[ itemname ].mType == HbXml::WIDGET ) {
+ item = static_cast<QGraphicsWidget *>( mObjectMap[ itemname ].mObject.data() );
} else {
HB_DOCUMENTLOADER_PRINT( QString( "LINEARLAYOUT: NO SUCH ITEM " ) + itemname );
return false;
@@ -1015,8 +1015,8 @@
if( isWidget ) {
parent = static_cast<QGraphicsWidget *>( parentObj );
}
- } else if ( mObjectMap.contains( widget ) && mObjectMap[ widget ].second == HbXml::WIDGET ) {
- parent = static_cast<QGraphicsWidget *>( mObjectMap[ widget ].first.data() );
+ } else if ( mObjectMap.contains( widget ) && mObjectMap[ widget ].mType == HbXml::WIDGET ) {
+ parent = static_cast<QGraphicsWidget *>( mObjectMap[ widget ].mObject.data() );
}
if ( !parent ) {
HB_DOCUMENTLOADER_PRINT( QString( "STACKEDLAYOUT: PARENT NOT FOUND" ) );
@@ -1044,8 +1044,8 @@
if( itemname.isEmpty() ) {
HB_DOCUMENTLOADER_PRINT( QString( "STACKEDLAYOUT: TRY TO ADD EMPTY ITEM " ) + itemname );
return false;
- } else if ( mObjectMap.contains( itemname ) && mObjectMap[ itemname ].second == HbXml::WIDGET ) {
- item = static_cast<QGraphicsWidget *>( mObjectMap[ itemname ].first.data() );
+ } else if ( mObjectMap.contains( itemname ) && mObjectMap[ itemname ].mType == HbXml::WIDGET ) {
+ item = static_cast<QGraphicsWidget *>( mObjectMap[ itemname ].mObject.data() );
} else {
HB_DOCUMENTLOADER_PRINT( QString( "STACKEDLAYOUT: NO SUCH ITEM " ) + itemname );
return false;
@@ -1068,8 +1068,8 @@
if( isWidget ) {
parent = static_cast<QGraphicsWidget *>( parentObj );
}
- } else if ( mObjectMap.contains( widget ) && mObjectMap[ widget ].second == HbXml::WIDGET ) {
- parent = static_cast<QGraphicsWidget *>( mObjectMap[ widget ].first.data() );
+ } else if ( mObjectMap.contains( widget ) && mObjectMap[ widget ].mType == HbXml::WIDGET ) {
+ parent = static_cast<QGraphicsWidget *>( mObjectMap[ widget ].mObject.data() );
}
if ( !parent ) {
HB_DOCUMENTLOADER_PRINT( QString( "NULL LAYOUT: PARENT NOT FOUND" ) );
@@ -1087,7 +1087,18 @@
bool HbDocumentLoaderActions::setWidgetRole(
QGraphicsWidget *parent, QGraphicsWidget *child, const QString &role)
{
- return mFactory.setWidgetRole(parent, child, role);
+ bool roleTransfersOwnership = false;
+
+ // updates roleTransfersOwnership only on succesfull execution
+ const bool result = mFactory.setWidgetRole(parent, child, role, roleTransfersOwnership);
+
+ if ( roleTransfersOwnership ) {
+ // remove ownership from own data structure
+ ObjectMapItem &item = mObjectMap[child->objectName()];
+ item.mOwned = false;
+ }
+
+ return result;
}
bool HbDocumentLoaderActions::setObjectRole(
--- a/src/hbutils/document/hbdocumentloaderfactory_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbutils/document/hbdocumentloaderfactory_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -76,6 +76,8 @@
#include <hbgridviewitem.h>
#include <hbtreeviewitem.h>
#include <hbdataformviewitem.h>
+#include <hbtumbleview.h>
+#include <hbtumbleviewitem.h>
enum HbDocumentLoaderFactoryWidgetRoles {
HbWidgetRoleUnknown, // needs to be the first one = 0
@@ -238,6 +240,8 @@
CHECK_OBJECT_0(HbGridViewItem)
CHECK_OBJECT_0(HbDataFormViewItem)
CHECK_OBJECT_0(HbTreeViewItem)
+ CHECK_OBJECT_0(HbTumbleView)
+ CHECK_OBJECT_0(HbTumbleViewItem)
#if QT_VERSION >= 0x040600 && defined(HBUTILS_WEBKIT)
CHECK_OBJECT_0(QGraphicsWebView)
#endif
@@ -257,11 +261,18 @@
\param parent parent widget.
\param child child widget.
\param role desired role for child widget.
+ \param roleTransfersOwnership Must be updated to 'true' if owership of the child is
+ moved to the parent, but the graphicsitem parent is not
\return true upon success, false on failure.
*/
bool HbDocumentLoaderFactory::setWidgetRole(
- QGraphicsWidget *parent, QGraphicsWidget *child, const QString &role)
+ QGraphicsWidget *parent,
+ QGraphicsWidget *child,
+ const QString &role,
+ bool &roleTransfersOwnership )
{
+ roleTransfersOwnership = false;
+
if (role.isEmpty()) {
child->setParentItem(parent);
return true;
@@ -316,6 +327,7 @@
if (view) {
child->setParentItem(parent);
view->setToolBar(qobject_cast<HbToolBar *>(child));
+ roleTransfersOwnership = true;
}
}
break;
@@ -326,6 +338,7 @@
success = (view != 0);
if (view) {
view->setMenu(qobject_cast<HbMenu *>(child));
+ roleTransfersOwnership = true;
}
}
break;
@@ -336,6 +349,7 @@
success = (menu != 0);
if (menu) {
menu->addMenu(qobject_cast<HbMenu *>(child));
+ roleTransfersOwnership = true;
}
}
break;
--- a/src/hbutils/document/hbdocumentloaderfactory_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbutils/document/hbdocumentloaderfactory_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -40,7 +40,7 @@
HbDocumentLoaderFactory();
virtual ~HbDocumentLoaderFactory();
QObject *create(const QString& type, const QString& name);
- bool setWidgetRole(QGraphicsWidget *parent, QGraphicsWidget *child, const QString &role);
+ bool setWidgetRole(QGraphicsWidget *parent, QGraphicsWidget *child, const QString &role, bool &roleTransfersOwnership );
bool setObjectRole(QObject *parent, QObject *child, const QString &role);
private:
--- a/src/hbutils/document/hbdocumentloadersyntax_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbutils/document/hbdocumentloadersyntax_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -882,6 +882,7 @@
}
if (result) {
mCurrentContainerNames << propertyName;
+ qDeleteAll(mCurrentContainer);
mCurrentContainer.clear();
}
} else {
--- a/src/hbutils/theme/hbthemeservices.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbutils/theme/hbthemeservices.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -80,7 +80,7 @@
{
QString path("");
HbThemeIndexInfo info = HbThemeUtils::getThemeIndexInfo(ActiveTheme);
- if (info.themeIndexOffset > 0) {
+ if (info.address) {
path.append(info.path);
path.append("/icons/");
path.append(info.name);
--- a/src/hbwidgets/dataform/hbdataform.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/dataform/hbdataform.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -23,19 +23,20 @@
**
****************************************************************************/
-#include <hbdataform.h>
-#include <hbdataformmodelitem.h>
-#include <hbdataformmodel.h>
#include "hbdataform_p.h"
#include "hbdataformviewitem_p.h"
#include "hbdataitemcontainer_p.h"
#include "hbdatagroup_p.h"
#include "hbdatagroup_p_p.h"
-#include <hbcombobox.h>
#include "hbdataformheadingwidget_p.h"
#include "hbdataformmodelitem_p.h"
#include "hbtreemodeliterator_p.h"
+#include <hbdataform.h>
+#include <hbdataformmodelitem.h>
+#include <hbdataformmodel.h>
+#include <hbcombobox.h>
+
#include <QGraphicsSceneMouseEvent>
#include <QCoreApplication>
@@ -268,10 +269,10 @@
static_cast<HbDataFormViewItem *>(d->mContainer->itemByIndex(index));
if (item) {
item->setExpanded(expanded);
+ d->mContainer->setModelIndexes();
}
- d->mContainer->setItemTransientStateValue(index, "expanded", expanded);
- d->mContainer->setModelIndexes();
+ d->mContainer->setItemTransientStateValue(index, "expanded", expanded);
}
}
@@ -566,7 +567,7 @@
{
Q_D(HbDataForm);
ItemSignal itemSignal;
- itemSignal.reciever = receiver;
+ itemSignal.receiver = receiver;
itemSignal.signal = signal;
itemSignal.slot = slot;
d->mConnectionList.insertMulti(item, itemSignal);
--- a/src/hbwidgets/dataform/hbdataform_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/dataform/hbdataform_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -27,6 +27,7 @@
#include <hbdataformviewitem.h>
#include "hbdataformviewitem_p.h"
#include "hbdataitemcontainer_p.h"
+#include "hbdatagroup_p_p.h"
#include <hbcombobox.h>
#include <hbapplication.h>
#include <hbdataformmodel.h>
@@ -82,28 +83,43 @@
void HbDataFormPrivate::_q_page_changed(int index)
{
Q_Q(const HbDataForm);
- QStringListModel *model = static_cast<QStringListModel*>(
+ QModelIndex childIndex = q->model()->index(index,0);
+ HbDataFormModelItem::DataItemType itemType =
+ static_cast<HbDataFormModelItem::DataItemType>(
+ (childIndex.data(HbDataFormModelItem::ItemTypeRole)).toInt());
+
+ if(mHeadingWidget->mPageCombo) {
+ if(mHeadingWidget->mPageCombo->currentIndex() != index) {
+ QObject::disconnect(mHeadingWidget->mPageCombo,SIGNAL(currentIndexChanged(int)),
+ q,SLOT(_q_page_changed(int)));
+ mHeadingWidget->mPageCombo->setCurrentIndex(index);
+ QObject::connect(mHeadingWidget->mPageCombo,SIGNAL(currentIndexChanged(int)),
+ q,SLOT(_q_page_changed(int)));
+ }
+ }
+
+ /* QStringListModel *model = static_cast<QStringListModel*>(
mHeadingWidget->mPageCombo->model());
- QModelIndex changedIndex = model->index(index, 0);
- if(changedIndex.isValid()) {
- if(changedIndex.row() != mHeadingWidget->mActivePage) {
+ QModelIndex changedIndex = model->index(index, 0);*/
+ if(itemType == HbDataFormModelItem::FormPageItem) {
+ if(index != mHeadingWidget->mActivePage) {
QModelIndex prevPageIndex = q->model()->index(mHeadingWidget->mActivePage,0);
- QModelIndex newPageIndex = q->model()->index(changedIndex.row(),0);
+ QModelIndex newPageIndex = q->model()->index(index,0);
if(prevPageIndex.isValid()) {
HbDataGroup *prevPage = static_cast<HbDataGroup *>(
q->itemByIndex(prevPageIndex));
if(prevPage) {
- prevPage->setExpanded(false);
+ HbDataGroupPrivate::d_ptr(prevPage)->setExpanded(false);
}
}
if(newPageIndex.isValid()) {
HbDataGroup *newPage = static_cast<HbDataGroup *>(
q->itemByIndex(newPageIndex));
if(newPage) {
- newPage->setExpanded(true);
+ HbDataGroupPrivate::d_ptr(newPage)->setExpanded(true);
}
}
- mHeadingWidget->mActivePage = changedIndex.row();
+ mHeadingWidget->mActivePage = index;
}
}
}
@@ -166,12 +182,7 @@
if(mHeadingWidget && mHeadingWidget->mPageCombo) {
if(mHeadingWidget->mPageCombo->currentText() == page){
- if(mHeadingWidget->mActivePage != 0) {
- mHeadingWidget->mPageCombo->setCurrentIndex(0);
- }
- else {
- mHeadingWidget->mPageCombo->setCurrentIndex(mHeadingWidget->mActivePage+1);
- }
+ mHeadingWidget->mPageCombo->setCurrentIndex(mHeadingWidget->mActivePage+1);
}
}
QObject::disconnect(mHeadingWidget->mPageCombo,SIGNAL(currentIndexChanged(int)),
@@ -195,7 +206,7 @@
"instead itemShown SIGNAL should be used");
}
-void HbDataFormPrivate::makeConnection(QModelIndex index)
+void HbDataFormPrivate::makeConnection(QModelIndex index, HbWidget* widget)
{
Q_Q( HbDataForm);
if(!index.isValid()){
@@ -206,21 +217,17 @@
if(modelItem){
QList<ItemSignal> signalList = mConnectionList.values(modelItem);
if(signalList.count() > 0){
- HbDataFormViewItem *viewItem = static_cast<HbDataFormViewItem*>(q->itemByIndex(index));
- if(viewItem){
- HbWidget *contentWidget = HbDataFormViewItemPrivate::d_ptr(viewItem)->mContentWidget;
- if(contentWidget){
- foreach(ItemSignal signal, signalList) {
- QObject *objct = signal.reciever;
- QString signalName = signal.signal;
- QString slot = signal.slot;
- // Make connection
- if(objct) {
- QObject::connect(contentWidget, signalName.toAscii().data(),
- objct,slot.toAscii().data());
- }
-
+ if(widget){
+ foreach(const ItemSignal& signal, signalList) {
+ QObject *objct = signal.receiver;
+ QString signalName = signal.signal;
+ QString slot = signal.slot;
+ // Make connection
+ if(objct) {
+ QObject::connect(widget, signalName.toAscii().data(),
+ objct,slot.toAscii().data());
}
+
}
}
}
@@ -228,9 +235,10 @@
}
}
+
void HbDataFormPrivate::removeConnection(HbDataFormModelItem * modelItem,
QString signal,
- QObject *reciever,
+ QObject *receiver,
QString slot)
{
Q_Q( HbDataForm);
@@ -248,12 +256,12 @@
//foreach(ItemSignal signalItem, signalList) {
for(int i = 0; i < signalList.count() ;i++){
ItemSignal signalItem = signalList.at(i);
- if(reciever == signalItem.reciever &&
+ if(receiver == signalItem.receiver &&
signal == signalItem.signal &&
slot == signalItem.slot){
// disconnect
QObject::disconnect(contentWidget, signal.toAscii().data(),
- reciever,slot.toAscii().data());
+ receiver,slot.toAscii().data());
signalList.removeAt(i);
for(int j = 0; j < signalList.count(); j++){
mConnectionList.insertMulti(modelItem, signalList.at(j));
@@ -270,7 +278,7 @@
void HbDataFormPrivate::connectNow(HbDataFormModelItem * modelItem,
QString signal,
- QObject *reciever,
+ QObject *receiver,
QString slot)
{
Q_Q( HbDataForm);
@@ -283,7 +291,7 @@
if(HbDataFormViewItemPrivate::d_ptr(viewItem)->mContentWidget) {
// Make connection
QObject::connect(HbDataFormViewItemPrivate::d_ptr(viewItem)->mContentWidget, signal.toAscii().data(),
- reciever,slot.toAscii().data());
+ receiver,slot.toAscii().data());
}
}
}
@@ -309,7 +317,7 @@
ItemSignal signalItem = signalList.takeAt(i);
// Make connection
QObject::disconnect(contentWidget, signalItem.signal.toAscii().data(),
- signalItem.reciever,signalItem.slot.toAscii().data());
+ signalItem.receiver,signalItem.slot.toAscii().data());
}
@@ -336,7 +344,7 @@
ItemSignal signalItem = signalList.takeAt(i);
// Make connection
QObject::disconnect(contentWidget, signalItem.signal.toAscii().data(),
- signalItem.reciever,signalItem.slot.toAscii().data());
+ signalItem.receiver,signalItem.slot.toAscii().data());
}
}
}
--- a/src/hbwidgets/dataform/hbdataform_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/dataform/hbdataform_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -44,7 +44,7 @@
struct ItemSignal
{
- QObject *reciever;
+ QObject *receiver;
QString signal;
QString slot;
};
@@ -64,12 +64,12 @@
void _q_page_changed(int index);
void _q_item_displayed(const QModelIndex &index);
- void makeConnection(QModelIndex index);
+ void makeConnection(QModelIndex index, HbWidget* widget);
void connectNow(HbDataFormModelItem * modelItem, QString signal,
- QObject *reciever, QString slot);
+ QObject *receiver, QString slot);
void removeConnection(HbDataFormModelItem * item,
QString signal,
- QObject *reciever,
+ QObject *receiver,
QString slot);
void removeAllConnection();
void removeAllConnection(HbDataFormModelItem *item);
--- a/src/hbwidgets/dataform/hbdataformmodel.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/dataform/hbdataformmodel.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -23,12 +23,12 @@
**
****************************************************************************/
+#include "hbdataformmodel_p.h"
+#include "hbdataformmodelitem_p.h"
+
#include <hbdataformmodelitem.h>
#include <hbdataformmodel.h>
-#include "hbdataformmodel_p.h"
-#include "hbdataformmodelitem_p.h"
-
/*
\internal
@@ -122,7 +122,7 @@
HbDataFormModel is derived from QAbstractItemModel. So applications can use,
QAbstractItemModel API's to create their datamodel. HbDataFormModel also provides
- convenience API's specific to HbDataForm. These convinience API's are useful in creating
+ convenience API's specific to HbDataForm. These convenience API's are useful in creating
FormPageItem, GroupItem, GroupPageItem and data item.
A HbDataForm can be used to display the contents of the model.
--- a/src/hbwidgets/dataform/hbdataformmodelitem.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/dataform/hbdataformmodelitem.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -23,14 +23,13 @@
**
****************************************************************************/
-#include <QAbstractItemModel>
-
#include "hbdataformmodelitem_p.h"
-#include "hbdataformmodelitem.h"
-#include "hbdataformmodel.h"
#include "hbdataformmodel_p.h"
-class QAbstractItemModel;
+#include <hbdataformmodelitem.h>
+#include <hbdataformmodel.h>
+
+#include <QAbstractItemModel>
HbDataFormModelItemPrivate::HbDataFormModelItemPrivate():
@@ -322,8 +321,11 @@
d_ptr(new HbDataFormModelItemPrivate())
{
Q_D(HbDataFormModelItem);
- d->q_ptr = this ;
- d->mParentItem = const_cast<HbDataFormModelItem*>(parent);
+ d->q_ptr = this ;
+ if( parent ) {
+ d->mParentItem = const_cast<HbDataFormModelItem*>(parent);
+ d->mParentItem->appendChild(this);
+ }
setData(ItemTypeRole, type);
setData(LabelRole, label);
}
@@ -336,7 +338,10 @@
{
Q_D(HbDataFormModelItem);
d->q_ptr = this ;
- d->mParentItem = const_cast<HbDataFormModelItem*>(parent);
+ if( parent ){
+ d->mParentItem = const_cast<HbDataFormModelItem*>(parent);
+ d->mParentItem->appendChild(this);
+ }
}
/*!
@@ -378,7 +383,8 @@
}
else {
d->mChildItems.append(child);
- }
+ }
+
}
}
@@ -450,24 +456,22 @@
Q_D(HbDataFormModelItem);
HbDataFormModel* model = static_cast<HbDataFormModel*>(d->mModel);
- if(model)
- model->d_func()->rowsAboutToBeRemoved(this, index, index);
-
- HbDataFormModelItem *item = d->mChildItems.at(index);
- if( item ) {
- int childCount = item->childCount();
- for ( int childIndex = 0; childIndex <= childCount ;childIndex++) {
- item->removeChild(0);
- }
-
- HbDataFormModelItem *item = d->mChildItems.takeAt(index);
- delete item;
- item = 0;
- }
-
- if(model)
- model->d_func()->rowsRemoved();
-
+ HbDataFormModelItem *item = d->mChildItems.at(index);
+ if( item ) {
+ int childCount = item->childCount();
+ for ( int childIndex = 0; childIndex < childCount ;childIndex++) {
+ item->removeChild(0);
+ }
+ if( model ) {
+ model->d_func()->rowsAboutToBeRemoved(this, index, index);
+ }
+ HbDataFormModelItem *item = d->mChildItems.takeAt(index);
+ delete item;
+ item = 0;
+ if( model ) {
+ model->d_func()->rowsRemoved();
+ }
+ }
}
/*!
@@ -486,26 +490,11 @@
if( startIndex + count > childCount() ) {
return;
- }
-
- Q_D(HbDataFormModelItem);
-
- HbDataFormModel* model = static_cast<HbDataFormModel*>(d->mModel);
- if( model ) {
- model->d_func()->rowsAboutToBeRemoved(this, startIndex, startIndex + count -1);
- }
+ }
for(int index = 0; index < count ;index++) {
- HbDataFormModelItem *item = d->mChildItems.takeAt(0);
- if ( item ) {
- delete item;
- item = 0;
- }
- }
-
- if( model ) {
- model->d_func()->rowsRemoved();
- }
+ removeChild(startIndex);
+ }
}
/*!
@@ -673,7 +662,7 @@
@beta
Sets \a parent as a parent to this item.
- It only sets the parent pointer. It doesnt put the item in the
+ It only sets the parent pointer. It does not put the item in the
hierarchy.
*/
void HbDataFormModelItem::setParent(HbDataFormModelItem* parent)
--- a/src/hbwidgets/dataform/hbdataformmodelitem_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/dataform/hbdataformmodelitem_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -22,12 +22,15 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
-#include <QAbstractItemModel>
+
+#ifndef HBDATAFORMMODELITEM_P_H
+#define HBDATAFORMMODELITEM_P_H
-#include "hbdataformmodelitem.h"
-#include "hbdataformmodel.h"
#include "hbdataformmodel_p.h"
+#include <hbdataformmodelitem.h>
+#include <hbdataformmodel.h>
+
class QAbstractItemModel;
class HbDataFormModelItemPrivate
@@ -63,5 +66,7 @@
Q_ASSERT(item);
return item->d_func();
}
-};
+};
+#endif //HBDATAFORMMODELITEM_P_H
+
--- a/src/hbwidgets/dataform/hbdataformviewitem.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/dataform/hbdataformviewitem.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -23,16 +23,15 @@
**
****************************************************************************/
-
-#include <hbdataformviewitem.h>
-#include <hbstyleoptiondataformviewitem_p.h>
+#include "hbdataformviewitem.h"
+#include "hbdataformviewitem_p.h"
#include "hbdataformmodelitem_p.h"
-#include "hbdataformviewitem_p.h"
#include "hbdataform_p.h"
#include "hbdatagroup_p.h"
+#include "hbstyleoptiondataformviewitem_p.h"
-#include "hbtapgesture.h"
+#include <hbtapgesture.h>
#ifdef HB_EFFECTS
#include "hbeffect.h"
@@ -71,7 +70,7 @@
If group is expanded then all the child items are shown.
If user wants to create a custom data item then he has to derive from this class and set that
- as a protoype for HbDataForm using HbAbstractItemView::setItemPrototype API. While creating
+ as a prototype for HbDataForm using HbAbstractItemView::setItemPrototype API. While creating
data for custom data items user should pass value greater than or equal to
DataItemType::CustomItemBase. When visualization is created and if data item type is
custom item then createCustomWidget() is called. User has to override this API and pass the
@@ -240,7 +239,15 @@
// Establish Signal Connections set in HbDataFormModel to th contentWidget of this item
HbDataFormPrivate::d_ptr(
static_cast<HbDataForm*>(d->mSharedData->mItemView))->makeConnection(
- d->mIndex.operator const QModelIndex & ());
+ d->mIndex.operator const QModelIndex & (),d->mContentWidget);
+ //update only the background primitive
+ HbStyleOptionDataFormViewItem options;
+ initStyleOption(&options);
+ if( d->mBackgroundItem ) {
+ style()->updatePrimitive(
+ d->mBackgroundItem, HbStyle::P_DataItem_background, &options );
+ }
+
}
/*!
@@ -366,6 +373,10 @@
This is a virtual function which by default returns NULL. This function must be overridden
in case user wants to create a data item of type custom item. The user is supposed to pass
the widget which he wants to display in data item.
+ If content widget grabs pan gesture and user wants data form to be scrollable even panning
+ is done on disabled content widget then user is supposed to ungrab pan gesture when content
+ widget is disabled. And again grab pan gesture when state of content widget is changed to
+ enabled.
*/
HbWidget* HbDataFormViewItem::createCustomWidget()
{
@@ -486,5 +497,29 @@
}
}
+/*!
+ \reimp
+ */
+QVariant HbDataFormViewItem::itemChange( GraphicsItemChange change, const QVariant &value )
+{
+ Q_D( HbDataFormViewItem );
+ switch ( static_cast<HbPrivate::HbItemChangeValues>( change ) ) {
+ case QGraphicsItem::ItemEnabledHasChanged: {
+ HbStyleOptionDataFormViewItem options;
+ initStyleOption(&options);
+ if( d->mBackgroundItem ) {
+ style()->updatePrimitive(
+ d->mBackgroundItem, HbStyle::P_DataItem_background, &options );
+ }
+ //We are skipping call to abstractviewitem::itemChange here because updateChildItems is
+ //called in that function which will again create data view item primitives.
+ return HbWidget::itemChange( change, value );
+ }
+ default:
+ break;
+ }
+ return HbAbstractViewItem::itemChange( change, value );
+}
+
#include "moc_hbdataformviewitem.cpp"
--- a/src/hbwidgets/dataform/hbdataformviewitem.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/dataform/hbdataformviewitem.h Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef HBDATAFORMITEM_H
-#define HBDATAFORMITEM_H
+#ifndef HBDATAFORMVIEWITEM_H
+#define HBDATAFORMVIEWITEM_H
#include <hbabstractviewitem.h>
@@ -79,9 +79,10 @@
void initStyleOption(HbStyleOptionDataFormViewItem *option) const;
void showEvent(QShowEvent * event);
+ QVariant itemChange( GraphicsItemChange change, const QVariant &value );
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbDataFormViewItem)
};
-#endif //HBDATAFORMITEM_H
+#endif //HBDATAFORMVIEWITEM_H
--- a/src/hbwidgets/dataform/hbdataformviewitem_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/dataform/hbdataformviewitem_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -72,6 +72,11 @@
mModel->itemFromIndex( mViewItem->modelIndex( ) ) );
QObject::connect(this,SIGNAL(valueChanged(QPersistentModelIndex, QVariant)),mViewItem,
SIGNAL(itemModified(QPersistentModelIndex, QVariant)));
+
+ // make the connetions added by application
+ HbDataFormPrivate* form_priv = HbDataFormPrivate::d_ptr(
+ static_cast<HbDataForm*>(mViewItem->itemView()));
+ form_priv->makeConnection(mViewItem->modelIndex() , mButton);
}
HbToggleItem::~HbToggleItem()
@@ -117,7 +122,7 @@
mModelItem->contentWidgetData( QString("additionalText") ).toString();
QString txt = mModelItem->contentWidgetData(QString("text")).toString();
HbDataFormModelItemPrivate *modelItem_priv = HbDataFormModelItemPrivate::d_ptr(mModelItem);
- // Dont want to emit datachanged for this property so calling private function
+ // Don't want to emit datachanged for this property so calling private function
modelItem_priv->setContentWidgetData( QString("additionalText"), txt );
// will emit datachanged
mModelItem->setContentWidgetData( QString("text"), additionalTxt );
@@ -167,8 +172,7 @@
if(!mRadioButtonList) {
mRadioButtonList = new HbRadioButtonList();
mRadioButtonList->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred));
- QObject::connect(mRadioButtonList, SIGNAL(itemSelected(int)), this, SIGNAL(itemSelected(int)));
- QObject::connect(mRadioButtonList, SIGNAL(startPreview(int)), this, SIGNAL(startPreview(int)));
+
//mRadioButtonList->setClampingStyle(HbScrollArea::StrictClamping);
mRadioButtonList->setItems( mItems );
if( mSelected != -1 ) {
@@ -179,6 +183,11 @@
// only when dialog closed
QObject::connect( mRadioButtonList, SIGNAL(itemSelected(int)),
this, SLOT(updateModel(int)) );
+
+ // make the connetions added by application
+ HbDataFormPrivate* form_priv = HbDataFormPrivate::d_ptr(
+ static_cast<HbDataForm*>(mViewItem->itemView()));
+ form_priv->makeConnection(mViewItem->modelIndex() , mRadioButtonList);
}
return mRadioButtonList;
@@ -203,6 +212,16 @@
if( dynamicPropertyName == "items" || dynamicPropertyName == "displayMode" ) {
// store the items locally
mItems = property("items").toStringList();
+ if(mItems.count() == 0) {
+ mItems = mModelItem->contentWidgetData(QString("items")).toStringList();
+ }
+ if(mItems.count() == 0) {
+ //clear the current slection if all items are deleted
+ updateModel(-1);
+ }/* else {
+ // if new items are populated make the current slection to 0
+ updateModel(0);
+ }*/
// in case of automatic, displayMode (embedded, automatic or popup) will change
// if new items are populated or mode should be changed if mode is set
// explicitly by application at runtime
@@ -236,6 +255,8 @@
createRadioButton();
layout->addItem(mRadioButtonList);
mRadioButtonList->setScrollDirections(0);
+ //Ungrab the pan gesture because we do not want radio button list to scroll
+ mRadioButtonList->ungrabGesture(Qt::PanGesture);
}
void HbRadioItem::makePopup()
@@ -310,7 +331,6 @@
{
if(!mButton) {
mButton = new HbPushButton();
- mButton->setTextAlignment(Qt::AlignLeft);
QObject::connect(mButton, SIGNAL(clicked()), this, SLOT(buttonClicked()));
layout->addItem( mButton );
}
@@ -333,11 +353,17 @@
QObject::connect(mDialog, SIGNAL(aboutToClose()), this, SIGNAL(aboutToClose()));
mDialog->setTimeout(HbPopup::NoTimeout);
mDialog->setAttribute(Qt::WA_DeleteOnClose);
- mDialog->setContentWidget(mRadioButtonList);
- mDialog->addAction(new HbAction(QString("Ok")));
- mDialog->addAction(new HbAction(QString("Cancel")));
- mDialog->open(this,SLOT(dialogClosed(HbAction*)));
- mRadioButtonList->setSelected(mSelected);
+ mDialog->setDismissPolicy(HbPopup::NoDismiss);
+ mDialog->setModal(true);
+ mDialog->setContentWidget(mRadioButtonList);
+ HbAction *ok = new HbAction(QString("Ok"));
+ mDialog->addAction(ok);
+ HbAction *cancel = new HbAction(QString("Cancel"));
+ connect(ok, SIGNAL(triggered()), mDialog,SLOT(accept()));
+ mDialog->addAction(cancel);
+ mDialog->connect(cancel, SIGNAL(triggered()), mDialog, SLOT(reject()));
+ mRadioButtonList->setSelected(mSelected);
+ mDialog->open(this,SLOT(dialogClosed(int)));
}
}
@@ -345,7 +371,9 @@
void HbRadioItem::updateModel( int index )
{
mSelected = index;
- emit valueChanged(mViewItem->modelIndex(), mItems.at(index));
+ if( index > -1 && mItems.count() < index ) {
+ emit valueChanged(mViewItem->modelIndex(), mItems.at(index));
+ }
// Disconnect modelchanged signal since visualization is already updated by user
// so if not disconnected , this will trigger visualization change again
disconnect( mModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
@@ -362,13 +390,13 @@
}
-void HbRadioItem::dialogClosed(HbAction* action)
+void HbRadioItem::dialogClosed(int code)
{
- if(( action ) && ( action->text() == "Ok" )) {
+ if(code == HbDialog::Accepted && mRadioButtonList) {
// store the selected item to model
updateModel(mRadioButtonList->selected());
}
- // dont change selection incase of "Cancel" button click .
+ // don't change selection incase of "Cancel" button click .
mRadioButtonList = 0;
mDialog = 0;
}
@@ -411,7 +439,7 @@
// get selection model
model = mMultiListWidget->selectionModel();
if(model) {
- // disconnect so that the visualization does not get changed when selction
+ // disconnect so that the visualization does not get changed when selection
// model changes
QObject::disconnect(model,
SIGNAL(selectionChanged( const QItemSelection , const QItemSelection )),
@@ -431,7 +459,7 @@
for ( int i = 0; i < mSelectedItems.count() ; i++ ) {
int selectionindex = mSelectedItems.at( i ).toInt();
if( selectionindex< mItems.count()) {
- if( i > 0) {// dont add ; in the starting of the string
+ if( i > 0) {// don't add ; in the starting of the string
newValue.append( "," );
}
newValue.append( mItems.at( mSelectedItems.at( i ).toInt() ) );
@@ -468,6 +496,9 @@
mMultiListWidget->addItem(mItems.at(index));
}
mMultiListWidget->setScrollDirections(0);
+ //ungrab pan gesture because we do not want embedded multi selection list
+ //to scroll
+ mMultiListWidget->ungrabGesture( Qt::PanGesture );
}
void HbMultiSelectionItem::makePopup()
@@ -482,7 +513,6 @@
// and popup will be launched when button is clicked
if(!mButton) {
mButton = new HbPushButton();
- mButton->setTextAlignment(Qt::AlignLeft);
layout->addItem(mButton);
}
QObject::connect(mButton, SIGNAL(clicked()), this, SLOT(launchMultiSelectionList()));
@@ -571,13 +601,19 @@
mSelectionDialog->setStringItems( mItems, -1 );
mSelectionDialog->setSelectedItems( mSelectedItems );
mSelectionDialog->setAttribute(Qt::WA_DeleteOnClose);
- mSelectionDialog->open(this,SLOT(dialogClosed(HbAction*)));
+ mSelectionDialog->open(this,SLOT(dialogClosed(int)));
+
+ // make the connetions added by application
+ HbDataFormPrivate* form_priv = HbDataFormPrivate::d_ptr(
+ static_cast<HbDataForm*>(mViewItem->itemView()));
+ form_priv->makeConnection(mViewItem->modelIndex() , mSelectionDialog);
}
}
-void HbMultiSelectionItem::dialogClosed(HbAction* action)
+void HbMultiSelectionItem::dialogClosed(int code)
{
- if(( action ) && ( action->text() == "Ok" )) {
+
+ if(code == HbDialog::Accepted) {
//fetch the selected items
mSelectedItems = mSelectionDialog->selectedItems();
QString newValue("");
@@ -846,7 +882,7 @@
//update description of either data item or data group
QString description = model_item->description();
if( type == HbDataFormModelItem::GroupItem ) {
- HbDataGroupPrivate::d_ptr(static_cast<HbDataGroup*>(q))->setDescription(description);
+ static_cast<HbDataGroup*>(q)->setDescription(description);
} else if ( type > HbDataFormModelItem::GroupPageItem ) {
setDescription(description);
}
@@ -870,6 +906,7 @@
itemFlags |= QGraphicsItem::ItemIsFocusable;
q->setFocusPolicy(q->prototype()->focusPolicy());
q->setProperty("state", "normal");
+ q->setEnabled(true);
q->grabGesture(Qt::TapGesture);
}
} else {
@@ -877,12 +914,27 @@
itemFlags &= ~QGraphicsItem::ItemIsFocusable;
q->setFocusPolicy(Qt::NoFocus);
q->setProperty("state", "disabled");
+ q->setEnabled(false);
q->ungrabGesture(Qt::TapGesture);
}
}
if( mContentWidget ) {
mContentWidget->setEnabled(enabled);
+ //If slider is disabled then still panning should be possible.
+ if( ( mType == HbDataFormModelItem::SliderItem ) ||
+ ( mType == HbDataFormModelItem::VolumeSliderItem ) ) {
+ HbSlider *slider = static_cast<HbSlider*>( mContentWidget );
+ if( enabled ) {
+ //grab pan gesture
+ slider->primitive(HbStyle::P_SliderElement_touchgroove)->toGraphicsObject()->grabGesture(
+ Qt::PanGesture);
+ } else {
+ //ungrab pan gesture
+ slider->primitive(HbStyle::P_SliderElement_touchgroove)->toGraphicsObject()->ungrabGesture(
+ Qt::PanGesture);
+ }
+ }
}
}
--- a/src/hbwidgets/dataform/hbdataformviewitem_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/dataform/hbdataformviewitem_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -93,7 +93,7 @@
public slots:
void updateModel( int index );
void buttonClicked();
- void dialogClosed(HbAction* action);
+ void dialogClosed(int code);
void makeEmbedded();
void makePopup();
void changeMode();
@@ -101,8 +101,7 @@
void resetSelection();
signals:
void valueChanged(QPersistentModelIndex, QVariant);
- void itemSelected(int index);
- void startPreview(int index);
+
//popup signals
void finished(HbAction*);
void aboutToShow();
@@ -136,7 +135,7 @@
public slots:
void launchMultiSelectionList( );
- void dialogClosed(HbAction*);
+ void dialogClosed(int code);
void updateModel( const QItemSelection & selected, const QItemSelection &deselected );
void makeEmbedded();
void makePopup();
@@ -195,7 +194,7 @@
QString description() const;
void updateData();
- void setEnabled(bool enabled);
+ virtual void setEnabled(bool enabled);
public:
static HbDataFormViewItemPrivate *d_ptr(HbDataFormViewItem *item) {
Q_ASSERT(item);
--- a/src/hbwidgets/dataform/hbdatagroup_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/dataform/hbdatagroup_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -23,16 +23,15 @@
**
****************************************************************************/
+#include "hbdatagroup_p_p.h"
+#include "hbdatagroupheadingwidget_p.h"
+#include "hbdataform_p.h"
+#include "hbstyleoptiondatagroup_p.h"
+#include "hbabstractitemcontainer_p_p.h"
+
#include <hbcombobox.h>
#include <hbdataformmodel.h>
-#include "hbdatagroupheadingwidget_p.h"
-#include "hbstyleoptiondatagroup_p.h"
-#include "hbabstractitemcontainer_p_p.h"
-#include "hbdataform_p.h"
-#include "hbdatagroup_p_p.h"
-
-
#include <QStringListModel>
#include <QCoreApplication>
@@ -44,6 +43,7 @@
mPageComboBackgroundItem( 0 )
{
}
+
HbDataGroupPrivate::HbDataGroupPrivate( const HbDataGroupPrivate &source ):
HbDataFormViewItemPrivate( source ),
mPageCombo( source.mPageCombo ),
@@ -51,6 +51,7 @@
mPageComboBackgroundItem( source.mPageComboBackgroundItem )
{
}
+
HbDataGroupPrivate::~HbDataGroupPrivate( )
{
}
@@ -59,6 +60,90 @@
{
}
+bool HbDataGroupPrivate::setExpanded( bool expanded )
+{
+
+ Q_Q(HbDataGroup);
+ //HB_SD(HbAbstractViewItem);
+ HbAbstractItemContainer *container = 0;
+ HbDataFormModelItem::DataItemType itemType =
+ static_cast<HbDataFormModelItem::DataItemType>(
+ mIndex.data(HbDataFormModelItem::ItemTypeRole).toInt());
+ //emit activated signal for newly expanded group page
+ if(expanded && (itemType == HbDataFormModelItem::GroupPageItem ||
+ itemType == HbDataFormModelItem::FormPageItem)) {
+ q->emitActivated(q->modelIndex());
+ }
+ if(mSharedData->mItemView) {
+ container = qobject_cast<HbAbstractItemContainer *>(
+ static_cast<QGraphicsWidget *>(mSharedData->mItemView->contentWidget()));
+ if(container->itemTransientState(mIndex).value("expanded") == expanded || !mSharedData->mItemView) {
+ return true;
+ }
+ expand(expanded);
+ //if some one exlicitly calls setExpanded for data group then primitives needs to be
+ //updated.
+ if(itemType == HbDataFormModelItem::GroupItem){
+ if(mPageCombo) {
+ if(expanded) {
+ HbStyle::setItemName(mPageCombo,"dataGroup_Combo");
+ HbStyle::setItemName(mPageComboBackgroundItem,"dataGroup_ComboBackground");
+
+ } else {
+
+ HbStyle::setItemName(mPageCombo,"");
+ HbStyle::setItemName(mPageComboBackgroundItem,"");
+ q->setProperty("groupPage", "");
+ mPageString.clear();
+ delete mPageCombo;
+ mPageCombo = 0;
+ delete mPageComboBackgroundItem;
+ mPageComboBackgroundItem = 0;
+
+ QEvent polishEvent(QEvent::Polish);
+ QCoreApplication::sendEvent(q, &polishEvent);
+ }
+ }
+ }
+ container->setModelIndexes(mIndex.operator const QModelIndex & ());
+ }
+ q->updatePrimitives();
+ return true;
+
+}
+
+void HbDataGroupPrivate::setEnabled( bool enabled )
+{
+ Q_Q(HbDataGroup);
+
+ QGraphicsItem::GraphicsItemFlags itemFlags = q->flags( );
+ Qt::ItemFlags indexFlags = mIndex.flags( );
+
+ if ( indexFlags & Qt::ItemIsEnabled ) {
+ if ( !( itemFlags & QGraphicsItem::ItemIsFocusable ) ) {
+ itemFlags |= QGraphicsItem::ItemIsFocusable;
+ q->setFocusPolicy( q->prototype( )->focusPolicy( ) );
+ q->setProperty( "state", "normal" );
+ q->setEnabled( true );
+ q->grabGesture( Qt::TapGesture );
+ }
+ } else {
+ if ( itemFlags & QGraphicsItem::ItemIsFocusable ) {
+ itemFlags &= ~QGraphicsItem::ItemIsFocusable;
+ q->setFocusPolicy( Qt::NoFocus );
+ q->setProperty( "state", "disabled" );
+ q->setEnabled( false );
+ q->ungrabGesture( Qt::TapGesture );
+ }
+ }
+
+ if( mGroupHeading ) {
+ mGroupHeading->setEnabled(enabled);
+ mGroupHeading->updatePrimitives();
+ }
+}
+
+
void HbDataGroupPrivate::expand( bool expanded )
{
Q_Q(HbDataGroup);
@@ -67,17 +152,15 @@
HbDataFormModelItem::DataItemType itemType = static_cast<HbDataFormModelItem::DataItemType>(
( mIndex.operator const QModelIndex & ( )).data( HbDataFormModelItem::ItemTypeRole).toInt( ) );
- if(container->itemTransientState(mIndex).value( "expanded" ) == expanded ) {
+ if(container->itemTransientState(mIndex).value( "expanded" ) == expanded ) {
return;
}
if( !expanded ) {
-
//collapsing all the expanded child Types.
QModelIndex index = mIndex.operator const QModelIndex & ( );
QModelIndex childIndex = index.child(0,0);
while(childIndex.isValid()) {
-
HbDataFormModelItem::DataItemType childType = static_cast<HbDataFormModelItem::DataItemType>(
childIndex.data(HbDataFormModelItem::ItemTypeRole).toInt());
@@ -86,8 +169,11 @@
static_cast<HbDataGroup*>(mSharedData->mItemView->itemByIndex(
childIndex));
if(group_Item && group_Item->isExpanded()) {
- HbDataGroupPrivate::d_ptr(group_Item)->expand(false);
-
+ HbDataGroupPrivate::d_ptr(group_Item)->expand(false);
+ // retaining the item state so that next time when this formpage is activated
+ // previously expanded group will be expanded since we are checking this
+ // expansion state from updatechilditems of group
+ container->setItemTransientStateValue(childIndex, "expanded", true);
}
}
QModelIndex nextChild = index.child(childIndex.row() +1 ,0);
@@ -111,15 +197,16 @@
int activePage;
if(!pageIndex.isValid()) {
activePage = 0;
+ setActivePage(activePage);
} else {
activePage = pageIndex.toInt();
}
//get the group page index
QModelIndex groupPageIndex = mIndex.child(activePage,0);
- q->emitActivated(groupPageIndex);
if(groupPageIndex.isValid()) {
container->setItemTransientStateValue(groupPageIndex, "expanded", true);
+ q->emitActivated(groupPageIndex);
}
}
if (mGroupHeading ) {
@@ -144,7 +231,7 @@
if( !mPageCombo ) {
mPageCombo = new HbComboBox( q );
- mPageString = " ";
+ mPageString = ' ';
q->setProperty("groupPage", page);
HbStyle::setItemName(mPageCombo,"dataGroup_Combo");
@@ -266,58 +353,30 @@
bool HbDataGroup::setExpanded( bool expanded )
{
Q_D(HbDataGroup);
- HB_SD(HbAbstractViewItem);
- HbAbstractItemContainer *container = 0;
- HbDataFormModelItem::DataItemType itemType =
+ if(d->mSharedData->mItemView){
+ HbDataFormModelItem *modelItem = static_cast<HbDataFormModel*>(
+ d->mSharedData->mItemView->model())->itemFromIndex(modelIndex());
+ HbDataFormModelItem::DataItemType contentWidgetType =
static_cast<HbDataFormModelItem::DataItemType>(
- d->mIndex.data(HbDataFormModelItem::ItemTypeRole).toInt());
- //emit activated signal for newly expanded group page
- if(expanded && (itemType == HbDataFormModelItem::GroupPageItem ||
- itemType == HbDataFormModelItem::FormPageItem)) {
- emitActivated(modelIndex());
- }
- if(d->mSharedData->mItemView) {
- container = qobject_cast<HbAbstractItemContainer *>(
- static_cast<QGraphicsWidget *>(d->mSharedData->mItemView->contentWidget()));
- if(container->itemTransientState(d->mIndex).value("expanded") == expanded || !sd->mItemView) {
- return true;
- }
- d->expand(expanded);
-
-
- //if some one exlicitly calls setExpanded for data group then primitives needs to be
- //updated.
- if(itemType == HbDataFormModelItem::GroupItem){
- if(d->mPageCombo) {
- if(expanded) {
-
- HbStyle::setItemName(d->mPageCombo,"dataGroup_Combo");
- HbStyle::setItemName(d->mPageComboBackgroundItem,"dataGroup_ComboBackground");
- //HbStyle::setItemName(d->mGroupDescriptionItem, "dataGroup_Description");
-
- } else {
-
- HbStyle::setItemName(d->mPageCombo,"");
- HbStyle::setItemName(d->mPageComboBackgroundItem,"");
- //HbStyle::setItemName(d->mGroupDescriptionItem, "");
- setProperty("groupPage", "");
- d->mPageString.clear();
- delete d->mPageCombo;
- d->mPageCombo = 0;
- delete d->mPageComboBackgroundItem;
- d->mPageComboBackgroundItem = 0;
- //delete d->mGroupDescriptionItem;
- //d->mGroupDescriptionItem = 0;
-
- QEvent polishEvent(QEvent::Polish);
- QCoreApplication::sendEvent(this, &polishEvent);
- }
+ (d->mIndex.data(HbDataFormModelItem::ItemTypeRole)).toInt());
+ if( contentWidgetType == HbDataFormModelItem::GroupItem ) {
+ d->setExpanded(expanded);
+ } else if (contentWidgetType == HbDataFormModelItem::GroupPageItem) {
+ if(modelItem) {
+ pageChanged(modelItem->parent()->indexOf(modelItem));
}
+ } else if(contentWidgetType == HbDataFormModelItem::FormPageItem) {
+ if(modelItem) {
+ HbDataFormPrivate::d_ptr(
+ static_cast<HbDataForm*>(d->mSharedData->mItemView))->_q_page_changed(
+ modelItem->parent()->indexOf(modelItem));
+ }
+
}
- container->setModelIndexes(d->mIndex.operator const QModelIndex & ());
- }
- updatePrimitives();
- return true;
+ return true;
+ } else {
+ return false;
+ }
}
bool HbDataGroup::isExpanded() const
@@ -378,40 +437,82 @@
}
}
+/*!
+ \reimp
+ */
+QVariant HbDataGroup::itemChange( GraphicsItemChange change, const QVariant &value )
+{
+ switch ( static_cast<HbPrivate::HbItemChangeValues>( change ) ) {
+ case QGraphicsItem::ItemEnabledHasChanged: {
+ updatePrimitives( );
+ //We are skipping call to abstractviewitem::itemChange here because updateChildItems is
+ //called in that function which will again create data group primitives.
+ return HbWidget::itemChange( change, value );
+ }
+ default:
+ break;
+ }
+ return HbDataFormViewItem::itemChange( change, value );
+}
void HbDataGroup::pageChanged(int index)
{
Q_D(HbDataGroup);
- QStringListModel *model = (QStringListModel*)d->mPageCombo->model();
- QModelIndex changedIndex = model->index(index, 0);
+ HbDataFormModelItem::DataItemType itemType =
+ static_cast<HbDataFormModelItem::DataItemType>(
+ (d->mIndex.data(HbDataFormModelItem::ItemTypeRole)).toInt());
+
if(!itemView()) {
return;
}
- if(changedIndex.isValid()) {
- // Get Previous Active Group Page
- QModelIndex previousPageIndex = modelIndex().child(d->activePage(),0);
- if(changedIndex.row() != d->activePage()) {// If the page is different
- // Collapse previous group page
- HbDataGroup* previousPage = static_cast<HbDataGroup*>(itemView()->itemByIndex(previousPageIndex));
- d->setActivePage(changedIndex.row());
- if(previousPage) {
- previousPage->setExpanded(false);
+ // Get Previous Active Group Page
+ QModelIndex previousPageIndex;
+ QModelIndex currentPageIndex;
+ HbDataGroup* group = this;
+ // this function can get called for both group and grouppage
+ // active grouppage is always stored in group modelitem so get the next index and
+ // activepage according to group
+ if(itemType == HbDataFormModelItem::GroupItem) {
+ previousPageIndex = modelIndex().child(d->activePage(),0);
+ currentPageIndex = modelIndex().child(index,0);
+ } else if(itemType == HbDataFormModelItem::GroupPageItem) {
+ // need to fetch group (parent) for getting previus page and active page
+ group = static_cast<HbDataGroup*>(itemView()->itemByIndex(modelIndex().parent()));
+ previousPageIndex = modelIndex().parent().child(HbDataGroupPrivate::d_ptr(group)->activePage(),0);
+ currentPageIndex = modelIndex().parent().child(index,0);
+
+ if(HbDataGroupPrivate::d_ptr(group)->mPageCombo) {
+ if(HbDataGroupPrivate::d_ptr(group)->mPageCombo->currentIndex() != index) {
+ QObject::disconnect(HbDataGroupPrivate::d_ptr(group)->mPageCombo,SIGNAL(currentIndexChanged(int)),
+ group ,SLOT(pageChanged(int)));
+ HbDataGroupPrivate::d_ptr(group)->mPageCombo->setCurrentIndex(index);
+ QObject::connect(d->mPageCombo,SIGNAL(currentIndexChanged(int)),
+ group ,SLOT(pageChanged(int)));
+ }
+ }
+ }
+
+ if(index != HbDataGroupPrivate::d_ptr(group)->activePage()) {// If the page is different
+ // Collapse previous group page
+ HbDataGroup* previousPage = static_cast<HbDataGroup*>(itemView()->itemByIndex(previousPageIndex));
+ HbDataGroupPrivate::d_ptr(group)->setActivePage(index);
+ if(previousPage) {
+ HbDataGroupPrivate::d_ptr(previousPage)->setExpanded(false);
+ }
+ // Expand current selected page set as active page
+
+ if(currentPageIndex.isValid()) {
+ HbDataGroup* currentPage = static_cast<HbDataGroup*>(
+ (itemView())->itemByIndex(currentPageIndex));
+ if(currentPage) {
+ HbDataGroupPrivate::d_ptr(currentPage)->setExpanded(true);
}
- // Expand current selected page set as active page
- QModelIndex currentPageIndex = modelIndex().child(changedIndex.row(),0);
- if(currentPageIndex.isValid()) {
- HbDataGroup* currentPage = static_cast<HbDataGroup*>(
- (itemView())->itemByIndex(currentPageIndex));
- if(currentPage) {
- currentPage->setExpanded(true);
- }
- }
- } else {//If selected page is same then expand it if it is not expanded already
- HbDataGroup* currentPage = static_cast<HbDataGroup*>(
- (itemView())->itemByIndex(previousPageIndex));
- if(currentPage && !currentPage->isExpanded()) {
- currentPage->setExpanded(true);
- }
+ }
+ } else {//If selected page is same then expand it if it is not expanded already
+ HbDataGroup* currentPage = static_cast<HbDataGroup*>(//remove this code
+ (itemView())->itemByIndex(previousPageIndex));
+ if(currentPage && !currentPage->isExpanded()) {
+ HbDataGroupPrivate::d_ptr(currentPage)->setExpanded(true);
}
}
}
@@ -426,6 +527,8 @@
{
Q_D(HbDataGroup);
HB_SD(HbAbstractViewItem);
+ HbAbstractItemContainer *container = qobject_cast<HbAbstractItemContainer *>(
+ static_cast<QGraphicsWidget *>(d->mSharedData->mItemView->contentWidget()));
HbDataFormModelItem::DataItemType contentWidgetType =
static_cast<HbDataFormModelItem::DataItemType>(
@@ -451,7 +554,19 @@
if(!groupDescription.isEmpty()) {
setDescription(groupDescription);
}
-
+
+ //update visualization based on whether item is enabled or disabled
+ HbDataFormModel* data_model = static_cast<HbDataFormModel*>( itemView( )->model( ) );
+ HbDataFormModelItem *model_item =
+ static_cast<HbDataFormModelItem*>( data_model->itemFromIndex( d->mIndex ) );
+ d->setEnabled( model_item->isEnabled( ) );
+
+ if(container) {
+ if(container->itemTransientState(d->mIndex).value("expanded").toBool()) {
+ container->setItemTransientStateValue(d->mIndex, "expanded", false);
+ setExpanded(true);
+ }
+ }
}
else if( contentWidgetType == HbDataFormModelItem::GroupPageItem){
QModelIndex parentIndex = d->mIndex.parent();
@@ -468,7 +583,7 @@
formPageName);
}
- HbAbstractViewItem::updateChildItems();
+ HbAbstractViewItem::updateChildItems();
}
@@ -501,7 +616,6 @@
// TODO: remove this, temporary workaround to return size zero incase of no contentwidget
QSizeF HbDataGroup::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
{
- //TODO: remove this
QSizeF size;
HbDataFormModelItem::DataItemType itemType =
static_cast<HbDataFormModelItem::DataItemType>(
@@ -535,3 +649,4 @@
HbDataFormPrivate::d_ptr(form)->emitActivated(index);
}
}
+
--- a/src/hbwidgets/dataform/hbdatagroup_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/dataform/hbdatagroup_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -68,9 +68,12 @@
void initStyleOption( HbStyleOptionDataGroup *option );
virtual QSizeF sizeHint( Qt::SizeHint which, const QSizeF &constraint ) const;
virtual void pressStateChanged( bool value, bool animate );
+ virtual QVariant itemChange( GraphicsItemChange change, const QVariant &value );
private:
Q_DECLARE_PRIVATE_D( d_ptr, HbDataGroup )
};
#endif // HBDATAGROUP_H
+
+
--- a/src/hbwidgets/dataform/hbdatagroup_p_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/dataform/hbdatagroup_p_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -52,6 +52,8 @@
void removeGroupPage(const QString &page);
int activePage();
void setActivePage(int pageindex);
+ bool setExpanded( bool expanded );
+ void setEnabled( bool enabled );
public:
static HbDataGroupPrivate *d_ptr( HbDataGroup *item ) {
--- a/src/hbwidgets/editors/hbabstractedit.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/editors/hbabstractedit.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -39,7 +39,7 @@
#include "hbmeshlayout_p.h"
#include "hbsmileyengine_p.h"
#include "hbinputeditorinterface.h"
-#include "hbfeaturemanager_p.h"
+#include "hbfeaturemanager_r.h"
#include "hbtextmeasurementutility_p.h"
#include "hbtapgesture.h"
#include "hbpangesture.h"
@@ -688,26 +688,33 @@
void HbAbstractEdit::updatePrimitives()
{
Q_D(HbAbstractEdit);
- HbWidget::updatePrimitives();
+
+ if (d->polished && !d->updatePrimitivesInProgress) {
+
+ d->updatePrimitivesInProgress = true;
+
+ HbWidget::updatePrimitives();
- if (d->scrollArea) {
- d->doc->setTextWidth(d->scrollArea->size().width());
- if(d->placeholderDoc) {
- d->placeholderDoc->setTextWidth(d->scrollArea->size().width());
+ if (d->scrollArea) {
+ d->doc->setTextWidth(d->scrollArea->size().width());
+ if(d->placeholderDoc) {
+ d->placeholderDoc->setTextWidth(d->scrollArea->size().width());
+ }
+ }
+ QRectF canvasGeom(QRectF(QPointF(0,0),d->doc->size()));
+ if(d->scrollArea) {
+ canvasGeom.setHeight(qMax(d->scrollArea->size().height(), d->doc->size().height()));
}
+
+ d->canvas->setGeometry(canvasGeom);
+
+ d->ensureCursorVisible();
+ if (d->selectionControl) {
+ d->selectionControl->updatePrimitives();
+ }
+
+ d->updatePrimitivesInProgress=false;
}
- QRectF canvasGeom(QRectF(QPointF(0,0),d->doc->size()));
- if(d->scrollArea) {
- canvasGeom.setHeight(qMax(d->scrollArea->size().height(), d->doc->size().height()));
- }
- //Changed from setGeometry() to setPreferredSize() because it causes
- //weird input behavior otherwise.
- d->canvas->setPreferredSize(canvasGeom.size());
- d->ensureCursorVisible();
- if (d->selectionControl) {
- d->selectionControl->updatePrimitives();
- }
-
}
/*!
@@ -792,6 +799,7 @@
void HbAbstractEdit::documentSizeChanged(const QSizeF &size)
{
Q_UNUSED(size)
+
updateGeometry();
updatePrimitives();
}
@@ -828,7 +836,6 @@
// QTextCursor operator!= compares only position
if ( cursor.position() != d->cursor.position()
|| cursor.anchor() != d->cursor.anchor() ) {
- const QTextCursor oldCursor = d->cursor;
d->cursor = cursor;
d->updateCurrentCharFormat();
@@ -1087,15 +1094,8 @@
{
Q_D(HbAbstractEdit);
- if(d->validator) {
- delete d->validator;
- d->validator = 0;
- }
-
- if(validator) {
- d->validator = validator;
- d->initValidator();
- }
+ d->validator = validator;
+ d->initValidator();
}
/*!
@@ -1119,7 +1119,6 @@
void HbAbstractEdit::moveCursor(QTextCursor::MoveOperation op, QTextCursor::MoveMode mode)
{
Q_D(HbAbstractEdit);
- //const QTextCursor oldCursor = d->cursor;
d->cursor.movePosition(op, mode);
d->updateCurrentCharFormat();
@@ -1287,35 +1286,35 @@
if (d->cursor.hasSelection() && d->canCut()) {
connect(
- menu->addAction("Cut"), SIGNAL(triggered()),
+ menu->addAction(hbTrId("txt_common_menu_cut")), SIGNAL(triggered()),
this, SLOT(cut()));
}
if (d->cursor.hasSelection() && d->canCopy()) {
connect(
- menu->addAction("Copy"), SIGNAL(triggered()),
+ menu->addAction(hbTrId("txt_common_menu_copy")), SIGNAL(triggered()),
this, SLOT(copy()));
}
if (!d->cursor.hasSelection() && !d->doc->isEmpty() && d->canCopy()){
connect(
- menu->addAction("Select"), SIGNAL(triggered()),
+ menu->addAction(hbTrId("txt_common_menu_select")), SIGNAL(triggered()),
this, SLOT(selectClickedWord()));
connect(
- menu->addAction("Select all"), SIGNAL(triggered()),
+ menu->addAction(hbTrId("txt_common_menu_select_all_contents")), SIGNAL(triggered()),
this, SLOT(selectAll()));
}
if (d->canPaste()) {
connect(
- menu->addAction("Paste"), SIGNAL(triggered()),
+ menu->addAction(hbTrId("txt_common_menu_paste")), SIGNAL(triggered()),
this, SLOT(paste()));
}
if (d->cursor.hasSelection()) {
connect(
- menu->addAction("Deselect"), SIGNAL(triggered()),
+ menu->addAction(hbTrId("txt_common_menu_deselect")), SIGNAL(triggered()),
this, SLOT(deselect()));
}
if (d->canFormat()) {
connect(
- menu->addAction("Format"), SIGNAL(triggered()),
+ menu->addAction(hbTrId("txt_common_menu_format")), SIGNAL(triggered()),
this, SLOT(format()));
}
--- a/src/hbwidgets/editors/hbabstractedit_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/editors/hbabstractedit_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -45,7 +45,7 @@
#include "hbcolorscheme.h"
#include "hbsmileyengine_p.h"
#include "hbtextmeasurementutility_p.h"
-#include "hbfeaturemanager_p.h"
+#include "hbfeaturemanager_r.h"
#include "hbinputeditorinterface.h"
#include "hbinputvkbhost.h"
@@ -198,7 +198,8 @@
wasGesture(false),
smileysEnabled(false),
smileyEngine(0),
- formatDialog(0)
+ formatDialog(0),
+ updatePrimitivesInProgress(false)
{
}
@@ -211,6 +212,8 @@
Q_Q(HbAbstractEdit);
canvas = new HbEditItem(q);
+ canvas->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored);
+
setContent(Qt::RichText, QString());
@@ -238,6 +241,7 @@
q->setFlag(QGraphicsItem::ItemIsFocusable);
q->setFlag(QGraphicsItem::ItemAcceptsInputMethod);
q->setFlag(QGraphicsItem::ItemSendsScenePositionChanges);
+ q->setFlag(QGraphicsItem::ItemHasNoContents, false);
q->setFocusPolicy(Qt::StrongFocus);
q->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
@@ -368,6 +372,10 @@
void HbAbstractEditPrivate::setCursorPosition(int pos, QTextCursor::MoveMode mode)
{
+ if (cursor.isNull()) {
+ cursor = QTextCursor(doc);
+ }
+
cursor.setPosition(pos, mode);
cursorChanged(HbValidator::CursorChangeFromMouse);
@@ -972,7 +980,7 @@
QTextLayout *layout = cursor.block().layout();
int cursorPos = hitTest(tapPos, Qt::ExactHit);
- if (cursorPos == -1) {
+ if (layout && cursorPos == -1) {
cursorPos = cursor.position() + layout->preeditAreaText().length();
}
--- a/src/hbwidgets/editors/hbabstractedit_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/editors/hbabstractedit_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -171,7 +171,7 @@
QTextCursor cursor;
QTextCursor selectionCursor;
- HbValidator* validator;
+ QPointer<HbValidator> validator;
bool imEditInProgress;
int imPosition;
int imAdded;
@@ -210,13 +210,13 @@
HbFormatDialogPointer formatDialog;
QTextCursor nextCharCursor;
+ bool updatePrimitivesInProgress;
private:
static HbAbstractEditPrivate *d_ptr(HbAbstractEdit *edit) {
Q_ASSERT(edit);
return edit->d_func();
}
- friend class HbEditScrollArea;
friend class HbFormatDialog;
friend class HbFormatDialogPrivate;
// To be able to unit test private features
--- a/src/hbwidgets/editors/hbdatetimeedit.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/editors/hbdatetimeedit.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -24,6 +24,7 @@
****************************************************************************/
#include <QDateTime>
+#include <QMetaMethod>
#include "hblineedit.h"
#include "hbdatetimevalidator_p.h"
@@ -235,11 +236,24 @@
*/
void HbDateTimeEdit::focusOutEvent(QFocusEvent *event)
{
- HbAbstractEdit::focusOutEvent(event);
+ Q_D(HbDateTimeEdit);
- Q_D(HbDateTimeEdit);
if(d->validator->fixDate(&d->cursor, true)) {
// fixing so restore focus to editor
- setFocus(event->reason());
+ // do it asynchronously by private slot:
+ int metodIndex = metaObject()->indexOfMethod("_q_regainFocus()");
+ if (metodIndex<0) {
+ qWarning("HbDateTimeEdit::focusOutEvent private method "
+ "_q_regainFocus() NOT FOUND");
+ } else {
+ if (!metaObject()->method(metodIndex).invoke(this, Qt::QueuedConnection)) {
+ qWarning("HbDateTimeEdit::focusOutEvent failed to call "
+ "private method _q_regainFocus()");
+ }
+ }
+ // prevent emmiting signal editingFinished so omnit HbLineEdit
+ HbAbstractEdit::focusOutEvent(event);
+ } else {
+ HbLineEdit::focusOutEvent(event);
}
}
--- a/src/hbwidgets/editors/hbdatetimeedit.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/editors/hbdatetimeedit.h Wed Jun 23 18:33:25 2010 +0300
@@ -75,6 +75,7 @@
private:
Q_DISABLE_COPY(HbDateTimeEdit)
Q_DECLARE_PRIVATE_D(d_ptr, HbDateTimeEdit)
+ Q_PRIVATE_SLOT(d_func(), void _q_regainFocus())
};
#endif // HBDATETIMEEDIT_H
--- a/src/hbwidgets/editors/hbdatetimeedit_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/editors/hbdatetimeedit_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -124,3 +124,10 @@
}
HbLineEditPrivate::_q_textChanged();
}
+
+void HbDateTimeEditPrivate::_q_regainFocus()
+{
+ q_ptr->setFocus(Qt::OtherFocusReason);
+}
+
+#include <moc_hbdatetimeedit.cpp>
--- a/src/hbwidgets/editors/hbdatetimeedit_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/editors/hbdatetimeedit_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -59,6 +59,7 @@
void init(const QDateTime &dateTime);
virtual void _q_textChanged();
+ void _q_regainFocus();
QDateTime dateTime;
HbDateTimeValidator *validator;
--- a/src/hbwidgets/editors/hblineedit.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/editors/hblineedit.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -30,7 +30,7 @@
#include "hbscrollarea.h"
#ifdef HB_TEXT_MEASUREMENT_UTILITY
#include "hbtextmeasurementutility_p.h"
-#include "hbfeaturemanager_p.h"
+#include "hbfeaturemanager_r.h"
#endif //HB_TEXT_MEASUREMENT_UTILITY
#include <QFontMetrics>
--- a/src/hbwidgets/editors/hbselectioncontrol_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/editors/hbselectioncontrol_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -127,8 +127,11 @@
createPrimitives();
q->setVisible(false);
- q->setFlag(QGraphicsItem::ItemIsFocusable,false);
- q->setFlag(QGraphicsItem::ItemIsPanel,true);
+ QGraphicsItem::GraphicsItemFlags itemFlags = q->flags();
+ itemFlags |= QGraphicsItem::ItemSendsGeometryChanges;
+ itemFlags &= ~QGraphicsItem::ItemIsFocusable;
+ itemFlags |= QGraphicsItem::ItemIsPanel;
+ q->setFlags(itemFlags);
q->setFocusPolicy(Qt::NoFocus);
q->setActive(false);
--- a/src/hbwidgets/editors/hbtextedit.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/editors/hbtextedit.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -31,7 +31,7 @@
#ifdef HB_TEXT_MEASUREMENT_UTILITY
#include "hbtextmeasurementutility_p.h"
-#include "hbfeaturemanager_p.h"
+#include "hbfeaturemanager_r.h"
#endif //HB_TEXT_MEASUREMENT_UTILITY
/*!
--- a/src/hbwidgets/editors/hbtextedit.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/editors/hbtextedit.h Wed Jun 23 18:33:25 2010 +0300
@@ -37,9 +37,7 @@
Q_OBJECT
Q_PROPERTY(QString plainText READ toPlainText WRITE setPlainText USER true)
- Q_PROPERTY(bool lined
- READ isLined
- WRITE setLined)
+ Q_PROPERTY(bool lined READ isLined WRITE setLined)
public:
--- a/src/hbwidgets/itemviews/hbabstractitemcontainer_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbabstractitemcontainer_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -279,7 +279,7 @@
}
int itemsAdded = 0;
- // in practise following conditions must apply: itemview is empty and scrollTo() has been called.
+ // in practize following conditions must apply: itemview is empty and scrollTo() has been called.
// Starts populating items from given mFirstItemIndex
if ( !index.isValid()
&& mFirstItemIndex.isValid()) {
@@ -289,7 +289,7 @@
mFirstItemIndex = QModelIndex();
}
-
+
while (itemsAdded < amount) {
index = mItemView->modelIterator()->nextIndex(index);
if (!index.isValid()) {
--- a/src/hbwidgets/itemviews/hbabstractitemview.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbabstractitemview.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -23,10 +23,10 @@
**
****************************************************************************/
+#include "hbabstractitemview.h"
#include "hbabstractitemview_p.h"
#include "hbabstractitemcontainer_p_p.h"
-#include <hbabstractitemview.h>
#include <hbabstractviewitem.h>
#include <hbevent.h>
#include <hbabstractitemcontainer_p.h>
@@ -76,7 +76,7 @@
\fn void HbAbstractItemView::pressed(const QModelIndex &index)
This signal is emitted when a touch down event is received within
- Abstract view item that is representing \a index.
+ view item that is representing \a index.
See also released() and activated().
*/
@@ -84,10 +84,11 @@
/*!
\fn void HbAbstractItemView::released(const QModelIndex &index)
- This signal is emitted when a touch release event is received within
+ This signal is emitted when a release event is received within
Abstract view item that is representing \a index.
See also pressed() and activated().
+ \sa HbAbstractViewItem::released(const QPointF &position)
*/
/*!
@@ -137,18 +138,58 @@
*/
/*!
+ \enum HbAbstractItemView::ScrollHint
+
+ Enumeration specifies positions on the view, onto which an item can be scrolled.
+
+ \sa scrollTo(const QModelIndex &index, HbAbstractItemView::ScrollHint hint = EnsureVisible)
+*/
+
+/*!
+ \var HbAbstractItemView::EnsureVisible
+
+ Item will be fully visible somewhere on the view.
+*/
+
+
+/*!
+ \var HbAbstractItemView::PositionAtTop
+
+ Item will be fully visible as topmost item.
+*/
+
+
+/*!
+ \var HbAbstractItemView::PositionAtBottom
+
+ Item will be fully visible as bottommost item.
+*/
+
+/*!
+ \var HbAbstractItemView::PositionAtCenter
+
+ Item will be centered.
+*/
+
+/*!
\enum HbAbstractItemView::ItemAnimation
animations in HbAbstractItemView that can be disabled. By default all animations are enabled.
*/
/*!
+ \var HbAbstractItemView::None
+
+ Any animation is not applied.
+*/
+
+/*!
\var HbAbstractItemView::Appear
Animation related to item appearance. Disable this animation in cases you expect many model items to appear,
- for example in case like insertion of a new data source, and you do not wish to see animations.
-
- Note that the item appearance animations are not used directly after a setModel call to force non-animated model change.
+ for example in case like insertion of a new data source, and you do not wish to see animations.
+
+ Note that the item appearance animations are not used directly after a setModel call to force non-animated model change.
*/
/*!
@@ -177,6 +218,12 @@
*/
/*!
+ \var HbAbstractItemView::All
+
+ Every animation is applied.
+*/
+
+/*!
Here are the main properties of the class:
\li HbAbstractItemView::itemRecycling: ItemRecycling.
@@ -192,6 +239,8 @@
Scrolls the view if necessary to ensure that the item at \a index is visible
in a position according to \a hint. Default value just guarantees, that item will be fully visible.
+
+ Scrolling is not animated but movement is immediate.
*/
@@ -233,7 +282,7 @@
/*!
Destructs the abstract item view.
- */
+*/
HbAbstractItemView::~HbAbstractItemView()
{
@@ -254,7 +303,7 @@
If no prototype has been passed, default prototype is used.
Note! Itemview may create view items asynchronously.
- */
+*/
void HbAbstractItemView::setModel(QAbstractItemModel *model, HbAbstractViewItem *prototype)
{
Q_D(HbAbstractItemView);
@@ -333,7 +382,7 @@
Sets the current selection model to \a selectionModel.
Note: If setModel() is called after this function, the given selectionModel will be
replaced by default selection model of the view.
- */
+*/
void HbAbstractItemView::setSelectionModel(QItemSelectionModel *selectionModel)
{
Q_D(HbAbstractItemView);
@@ -346,7 +395,7 @@
/*!
If \a newMode is not same as current selection mode of view,
updates selection mode, all viewitems and clears all existing selections.
- */
+*/
void HbAbstractItemView::setSelectionMode(SelectionMode newMode)
{
Q_D(HbAbstractItemView);
@@ -361,7 +410,7 @@
/*!
Selects all items in the view.
- */
+*/
void HbAbstractItemView::selectAll()
{
Q_D(HbAbstractItemView);
@@ -378,7 +427,7 @@
/*!
Deselects all selected items. The current index will not be changed.
- */
+*/
void HbAbstractItemView::clearSelection()
{
Q_D(HbAbstractItemView);
@@ -391,7 +440,7 @@
/*!
Returns current selection mode used by view.
- */
+*/
HbAbstractItemView::SelectionMode HbAbstractItemView::selectionMode() const
{
Q_D(const HbAbstractItemView);
@@ -400,7 +449,7 @@
/*!
Returns index of current item.
- */
+*/
QModelIndex HbAbstractItemView::currentIndex() const
{
Q_D(const HbAbstractItemView);
@@ -411,7 +460,7 @@
Sets current index to \a index. The item is selected depending on the \a selectionFlag.
By default item is not selected. If current selection mode is NoSelection,
item is not selected irrespective of the selection flag.
- */
+*/
void HbAbstractItemView::setCurrentIndex(const QModelIndex &index,
QItemSelectionModel::SelectionFlags selectionFlag)
{
@@ -433,7 +482,7 @@
Returns model index of the model's root item.
The root item is parent item to view's top level items.
The root can be invalid.
- */
+*/
QModelIndex HbAbstractItemView::rootIndex() const
{
Q_D(const HbAbstractItemView);
@@ -445,7 +494,7 @@
All view items are deleted and recreated
Note! View items may be created asynchronously.
- */
+*/
void HbAbstractItemView::setRootIndex(const QModelIndex &index)
{
Q_D(HbAbstractItemView);
@@ -459,7 +508,7 @@
/*!
Resets Item view.
- */
+*/
void HbAbstractItemView::reset()
{
Q_D(HbAbstractItemView);
@@ -472,7 +521,7 @@
/*!
\reimp
- It should be allways called by child class if overriden.
+ It should be always called by child class if overridden.
*/
bool HbAbstractItemView::event(QEvent *e)
{
@@ -550,7 +599,7 @@
/*!
Sets item recycling to \a enabled.
By default recycling is off.
- */
+*/
void HbAbstractItemView::setItemRecycling(bool enabled)
{
Q_D(HbAbstractItemView);
@@ -559,7 +608,7 @@
/*!
Returns whether item recycling feature is in use.
- */
+*/
bool HbAbstractItemView::itemRecycling() const
{
Q_D(const HbAbstractItemView);
@@ -589,7 +638,7 @@
/*!
Returns true if item with model index is fully or partially visible in view.
- */
+*/
bool HbAbstractItemView::isVisible(const QModelIndex & index) const
{
Q_D( const HbAbstractItemView );
@@ -600,7 +649,7 @@
Base class implemmentation. Take care about scrollTo when it was
called before view was visible (first scrollTo can be done after
first layoutRequest).
- It should be always called by child class if overriden.
+ It should be always called by child class if overridden.
Note! If item recycling is enabled, view item may not have reached its final
position, when this function returns. Then its position is fine tuned asynchronously.
@@ -628,16 +677,17 @@
/*!
Returns list of currently visible view items.
- */
+*/
QList<HbAbstractViewItem *> HbAbstractItemView::visibleItems() const
{
Q_D(const HbAbstractItemView);
QList<HbAbstractViewItem *> visibleItems;
- const int count(d->mContainer->items().count());
+ QList<HbAbstractViewItem *> containerItems = d->mContainer->items();
+ const int count(containerItems.count());
for (int i = 0; i < count; ++i) {
- if(d->visible(d->mContainer->items().at(i), false))
- visibleItems.append(d->mContainer->items().at(i));
+ if(d->visible(containerItems.at(i), false))
+ visibleItems.append(containerItems.at(i));
}
return visibleItems;
}
@@ -981,10 +1031,10 @@
}
/*!
- Returns the current name of layout definition of view items of this view
+ Returns the current name of layout definition of view items of this view.
\sa setLayoutName()
- */
+*/
QString HbAbstractItemView::layoutName() const
{
Q_D(const HbAbstractItemView);
@@ -1003,7 +1053,7 @@
is "default".
\sa layoutOption()
- */
+*/
void HbAbstractItemView::setLayoutName(const QString &layoutName)
{
Q_D(HbAbstractItemView);
@@ -1034,10 +1084,10 @@
}
/*!
- Returns the current value of the uniformItemsSizes property
+ Returns the current value of the uniformItemsSizes property.
By default, this property is false.
- */
+*/
bool HbAbstractItemView::uniformItemSizes() const
{
Q_D(const HbAbstractItemView);
@@ -1054,17 +1104,17 @@
}
/*!
- Sets the bitmask controlling the item animations.
- */
- void HbAbstractItemView::setEnabledAnimations(HbAbstractItemView::ItemAnimations flags)
+ Sets the bitmask controlling the item animations.
+*/
+void HbAbstractItemView::setEnabledAnimations(HbAbstractItemView::ItemAnimations flags)
{
Q_D(HbAbstractItemView);
d->mEnabledAnimations = flags;
}
/*!
- Returns the mask controlling the item animations.
- */
+ Returns the mask controlling the item animations.
+*/
HbAbstractItemView::ItemAnimations HbAbstractItemView::enabledAnimations() const
{
Q_D(const HbAbstractItemView);
@@ -1118,7 +1168,7 @@
}
/*!
- This slot is called when touch release event occurs for view item.
+ This slot is called when release event occurs for view item.
Default implementation calls emitReleased().
\sa HbAbstractViewItem::released(const QPointF &position)
@@ -1179,7 +1229,7 @@
/*!
This slot is called when concrete view item has been created. Default implementation connects
- touch event releated signals of HbAbstractViewItem to respective slots in this class.
+ touch event related signals of HbAbstractViewItem to respective slots in this class.
\sa HbAbstractViewItem::pressed(const QPointF &position)
\sa HbAbstractViewItem::released(const QPointF &position)
@@ -1214,13 +1264,13 @@
}
/*!
- * Sets the value of the longPressEnabled property. This value is set
- * to true if the widget is to respond to long press gestures, false otherwise.
- *
- * The default value is true.
- *
- * \sa HbAbstractItemView::longPressEnabled()
- */
+ Sets the value of the longPressEnabled property. This value is set
+ to true if the widget is to respond to long press gestures, false otherwise.
+
+ The default value is true.
+
+ \sa HbAbstractItemView::longPressEnabled()
+*/
void HbAbstractItemView::setLongPressEnabled(bool enabled)
{
Q_D(HbAbstractItemView);
@@ -1228,10 +1278,10 @@
}
/*!
- Returns true if the item view handles long press gestures, false otherwise
-
+ Returns true if the item view handles long press gestures, false otherwise.
+
\sa HbAbstractItemView::setLongPressEnabled()
- */
+*/
bool HbAbstractItemView::longPressEnabled() const
{
Q_D(const HbAbstractItemView);
--- a/src/hbwidgets/itemviews/hbabstractitemview.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbabstractitemview.h Wed Jun 23 18:33:25 2010 +0300
@@ -44,7 +44,7 @@
Q_ENUMS(SelectionMode ScrollHint)
Q_FLAGS(ItemAnimations)
-
+
Q_PROPERTY(bool itemRecycling READ itemRecycling WRITE setItemRecycling)
Q_PROPERTY(SelectionMode selectionMode READ selectionMode WRITE setSelectionMode)
Q_PROPERTY(QString layoutName READ layoutName WRITE setLayoutName)
@@ -124,7 +124,7 @@
bool uniformItemSizes() const;
HbModelIterator *modelIterator() const;
-
+
void setEnabledAnimations(ItemAnimations flags);
ItemAnimations enabledAnimations() const;
--- a/src/hbwidgets/itemviews/hbabstractitemview_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbabstractitemview_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -60,10 +60,10 @@
mPostponedScrollHint(HbAbstractItemView::PositionAtTop),
mPreviousSelectedCommand(QItemSelectionModel::NoUpdate),
mAnimationTimer(0),
- mModelIterator(0),
+ mModelIterator(0),
mEnabledAnimations(HbAbstractItemView::All),
mLongPressEnabled(true),
- mDoingContiguousSelection(false)
+ mDoingContiguousSelection(false)
{
}
@@ -349,7 +349,7 @@
bool HbAbstractItemViewPrivate::panTriggered(QGestureEvent *event)
{
Q_Q(HbAbstractItemView);
-
+ int retVal = false;
HbPanGesture *gesture = static_cast<HbPanGesture *>(event->gesture(Qt::PanGesture));
switch (gesture->state()) {
@@ -359,7 +359,6 @@
case Qt::GestureUpdated: {
QPointF scenePos = event->mapToGraphicsScene(gesture->hotSpot());
if (mDoingContiguousSelection) {
- int retVal = false;
// loop through the items in the scene
qreal scenePosY = scenePos.y();
@@ -380,7 +379,7 @@
mouseMoveEvent.setPos(position);
QItemSelectionModel::SelectionFlags command = q->selectionCommand(item, &mouseMoveEvent);
- // in contiguousselectionarea there shall be no panning from HbScrollArea, thus return true
+ // in contiguousselectionarea there shall be no panning from HbScrollArea, thus return true
if (command != QItemSelectionModel::NoUpdate) {
retVal = true;
}
@@ -427,9 +426,8 @@
break;
}
}
- return retVal;
}
- else if (!mDoingContiguousSelection){
+ else {
HbWidgetFeedback::continuousTriggered(q, Hb::ContinuousScrolled);
}
break;
@@ -440,7 +438,7 @@
if (mDoingContiguousSelection) {
stopAnimating();
mDoingContiguousSelection = false;
- return true;
+ retVal = true;
}
else {
HbWidgetFeedback::continuousStopped(q, Hb::ContinuousScrolled);
@@ -450,8 +448,7 @@
default:
break;
}
-
- return false;
+ return retVal;
}
/*!
@@ -481,7 +478,7 @@
mFrictionEnabled = mOrigFriction;
- QObject::disconnect(q, SIGNAL(scrollPositionChanged(QPointF)), q, SLOT(_q_scrollingI(QPointF)));
+ QObject::disconnect(q, SIGNAL(scrollPositionChanged(QPointF)), q, SLOT(_q_scrolling(QPointF)));
QObject::disconnect(q, SIGNAL(scrollingEnded()), q, SLOT(_q_scrollingEnded()));
QObject::disconnect(q, SIGNAL(scrollingStarted()), q, SLOT(_q_scrollingStarted()));
}
@@ -658,8 +655,8 @@
case QEvent::GraphicsSceneMouseDoubleClick: {
// check if the mouse click is in the multiselectionarea
- if (item->selectionAreaContains(static_cast<const QGraphicsSceneMouseEvent *>(event)->pos(), HbAbstractViewItem::MultiSelection)) {
- mSelectionSettings |= Selection;
+ if (item->selectionAreaContains(static_cast<const QGraphicsSceneMouseEvent *>(event)->pos(), HbAbstractViewItem::MultiSelection)) {
+ mSelectionSettings |= Selection;
if (mSelectionModel && mSelectionModel->isSelected(item->modelIndex())) {
mContSelectionAction = QItemSelectionModel::Deselect;
} else {
--- a/src/hbwidgets/itemviews/hbabstractviewitem.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbabstractviewitem.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -74,9 +74,55 @@
If derived abstract view item has transient state information that is not meaningful to store within model index (child item cursor
position selection areas etc.) this information can be supplied to transient state model. Transient state model is maintained
internally by abstract item view.
+
+
+ \primitives
+ \primitive{background} HbIconItem representing the item background. This primitive exists in cases the model's Qt::BackgroundRole returns HbIcon or QBrush for this item.
+ \primitive{frame} HbFrameItem representing the background frame of the item. This primitive exists if background primitive does not exist and the model's Qt::BackgroundRole returns HbFrameBackground or there is a default frame set with the setDefaultFrame(). An item can have either the frame or the background primitive, but not the both at the same time.
+ \primitive{selection-icon} HbIconItem representing the checkbox in the multi selection mode.
+ \primitive{multiselection-toucharea} HbTouchArea used in extending the touch area of the selection-icon.
*/
/*!
+ \enum HbAbstractViewItem::SelectionAreaType
+
+ Enumeration specifies selection area types.
+
+ Multiselection selection mode may operate in contiguous selection mode, in which items are selected
+ or deselected by panning over items. Normal multiselection functionality is available also in this mode.
+ Location of touch down gesture determines whether contiguous selection mode is activated.
+
+ \sa HbAbstractViewItem::selectionAreaContains(const QPointF &position, SelectionAreaType selectionAreaType) const
+*/
+
+/*!
+ \var HbAbstractViewItem::SingleSelection
+
+ Selection area for single selection mode.
+
+ \sa HbAbstractViewItem::selectionAreaContains(const QPointF &position, SelectionAreaType selectionAreaType) const
+*/
+
+
+/*!
+ \var HbAbstractViewItem::MultiSelection
+
+ Selection area for multiple selection mode.
+
+ \sa HbAbstractViewItem::selectionAreaContains(const QPointF &position, SelectionAreaType selectionAreaType) const
+*/
+
+
+/*!
+ \var HbAbstractViewItem::ContiguousSelection
+
+ Selection area for contiguous selection mode.
+
+ \sa HbAbstractViewItem::selectionAreaContains(const QPointF &position, SelectionAreaType selectionAreaType) const
+*/
+
+
+/*!
\fn void HbAbstractViewItem::pressed(const QPointF &position)
This signal is emitted when a touch down event is received for this view item.
@@ -155,6 +201,11 @@
}
}
+/*!
+ Returns Hb::ModelItemType of this view item.
+
+ \sa Hb::ModelItemType
+*/
int HbAbstractViewItemPrivate::modelItemType() const
{
return mIndex.data(Hb::ItemTypeRole).toInt();
@@ -517,11 +568,11 @@
Default selection areas are for
\li HbAbstractViewItem::SingleSelection mode: whole item
\li HbAbstractViewItem::MultiSelection mode: whole item.
- \li HbAbstractItemView::NoSelection mode: none
+ \li HbAbstractViewItem::ContiguousSelection mode: area of HbStyle::P_ItemViewItem_touchmultiselection icon.
The \a selectionAreaType tells what kind of selection area is requested. The parameter value ContiguousSelection returns
- the area where mouse movement will extend the selection to new items. By default this contiguous selection area is
- the HbStyle::P_ItemViewItem_touchmultiselection.
+ the area where mouse movement will extend the selection to new items. By default this contiguous selection area is
+ the HbStyle::P_ItemViewItem_touchmultiselection.
*/
bool HbAbstractViewItem::selectionAreaContains(const QPointF &position, SelectionAreaType selectionAreaType) const
@@ -613,6 +664,10 @@
}
break;
}
+ case ItemEnabledHasChanged: {
+ updateChildItems();
+ break;
+ }
default:
break;
}
@@ -623,7 +678,7 @@
/*!
\reimp
- To optimise loading css/xml definitions to take place only once, this function should be
+ To optimize loading css/xml definitions to take place only once, this function should be
called only after other primitives (child items) has been created.
*/
@@ -776,7 +831,7 @@
GraphicsItemFlags itemFlags = flags();
Qt::ItemFlags indexFlags = d->mIndex.flags();
- if (indexFlags & Qt::ItemIsEnabled) {
+ if ((indexFlags & Qt::ItemIsEnabled) && sd->mItemView && sd->mItemView->isEnabled()) {
if (!(itemFlags & QGraphicsItem::ItemIsFocusable)) {
itemFlags |= QGraphicsItem::ItemIsFocusable;
setFocusPolicy(sd->mPrototype->focusPolicy());
--- a/src/hbwidgets/itemviews/hbabstractviewitem_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbabstractviewitem_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -88,7 +88,7 @@
public:
- HbAbstractViewItemPrivate(HbAbstractViewItem *prototype, HbAbstractViewItemShared *shared = 0) :
+ explicit HbAbstractViewItemPrivate(HbAbstractViewItem *prototype, HbAbstractViewItemShared *shared = 0) :
HbWidgetPrivate(),
mFocused(false),
mBackgroundItem(0),
--- a/src/hbwidgets/itemviews/hbgriditemcontainer_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbgriditemcontainer_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -154,7 +154,7 @@
Set model indexes starting from \a startIndex. If \a startIndex is not
a index of first item in a row, then it is calculated automatically
(prevent) from different content looking (grid items arrangement should be
- always the same). If there is not enought items function fetch data that
+ always the same). If there is not enough items function fetch data that
are before \a startIndex. After calling this function item, with specified
index is in container but it position depends on model size.
If \a startIndex is invlaid then container is filled starting from first
@@ -528,12 +528,12 @@
/*!
\reimp
- In grid case items are allways same size
+ In grid case items are always same size
*/
void HbGridItemContainer::setUniformItemSizes(bool enable)
{
Q_UNUSED(enable);
- // d->mUniformItemSizes - allways true
+ // d->mUniformItemSizes - always true
}
/*!
--- a/src/hbwidgets/itemviews/hbgriditemcontainer_p_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbgriditemcontainer_p_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -63,7 +63,7 @@
qreal HbGridItemContainerPrivate::getDiffWithoutScrollareaCompensation(const QPointF &delta) const
{
- // substract invisible space from delta - part of scrolling that can
+ // subtract invisible space from delta - part of scrolling that can
// be done by scroll area
Q_Q(const HbGridItemContainer);
const QSizeF containerSize(q->size());
@@ -547,7 +547,7 @@
QModelIndex index;
if (mItems.size() == 0) {
// in case when buffer was empty and to be sure
- // it allways has at least one item - to make rest
+ // it always has at least one item - to make rest
// code simpler
index = mItemView->model()->index(startingIndex, 0);
if (index.isValid()) {
--- a/src/hbwidgets/itemviews/hbgridview.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbgridview.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -49,20 +49,20 @@
Items are arranged according to the scroll direction i.e Qt::Horizontal lays out items
horizontally and Qt::Vertical lays out items vertically.
- By default the HbScrollArea::ClampingStyle used is BounceBackClamping, the HbScrollArea::ScrollingStyle is PanOrFlick,
+ By default the HbScrollArea::ClampingStyle used is BounceBackClamping, the HbScrollArea::ScrollingStyle is PanWithFollowOn,
scrollbars are invisible and recycling and inertia are disabled.
The following code snippet demonstrates the use of HbGridView
\snippet{ultimatecodesnippet/ultimatecodesnippet.cpp,21}
- */
+*/
/*!
GridView recycling is in proto state.
- */
+*/
/*!
See also HbAbstractItemView,HbAbstractViewitem,HbGridViewItem,HbScrollArea
- */
+*/
/*!
\fn void HbGridView::setUniformItemSizes(bool enabled) is public from HbAbstractItemView but for HbGridView
@@ -72,7 +72,7 @@
/*!
Constructs a new HbGridView with \a parent.
- */
+*/
HbGridView::HbGridView(QGraphicsItem *parent) :
HbAbstractItemView(*new HbGridViewPrivate(), new HbGridItemContainer(), new HbModelIterator(), parent)
{
@@ -84,7 +84,7 @@
/*!
Constructs a grid view with a private class object \a dd,
\a container and \a parent.
- */
+*/
HbGridView::HbGridView(HbGridViewPrivate &dd, HbAbstractItemContainer *container, QGraphicsItem *parent) :
HbAbstractItemView(dd, container, new HbModelIterator(), parent)
{
@@ -104,7 +104,7 @@
Returns the total number of rows in the view.
\sa setRowCount()
- */
+*/
int HbGridView::rowCount() const
{
Q_D(const HbGridView);
@@ -115,7 +115,7 @@
Sets the total number of rows to \a rowCount.
\sa HbGridView::rowCount()
- */
+*/
void HbGridView::setRowCount(int rowCount)
{
Q_D(HbGridView);
@@ -131,7 +131,7 @@
Returns the total number of columns in the view.
\sa setColumnCount()
- */
+*/
int HbGridView::columnCount() const
{
Q_D(const HbGridView);
@@ -142,7 +142,7 @@
Sets the total number of columns to \a columnCount.
\sa columnCount()
- */
+*/
void HbGridView::setColumnCount(int columnCount)
{
Q_D(HbGridView);
@@ -159,7 +159,7 @@
Returns true if icons are currently displayed in GridView.
\sa setIconVisible()
- */
+*/
bool HbGridView::iconVisible() const
{
Q_D(const HbGridView);
@@ -172,7 +172,7 @@
By default icons are visible.
\sa iconVisible()
- */
+*/
void HbGridView::setIconVisible(bool visible)
{
Q_D(HbGridView);
@@ -183,7 +183,7 @@
Returns visibility of text in grid view.
\sa setTextVisible()
- */
+*/
bool HbGridView::textVisible() const
{
Q_D(const HbGridView);
@@ -196,16 +196,43 @@
By default text is visible.
\sa HbGridView::textVisible()
- */
+*/
void HbGridView::setTextVisible(bool visible)
{
Q_D(HbGridView);
d->setTextVisible(visible);
}
+
+/*!
+ Returns true if the HbGridView will automatically swap the row and column counts in orientation change.
+
+ \sa HbGridView::setSwapDimensionsOnOrientationChange()
+ */
+bool HbGridView::swapDimensionsOnOrientationChange() const
+{
+ Q_D(const HbGridView);
+ return d->mSwapDimensionsOnOrientationChange;
+}
+
+/*!
+ Sets automatic row and column count swapping in orientatation change to \a swap.
+
+ By default the row and column counts are swapped in orientation change.
+
+ \sa HbGridView::swapDimensionsOnOrientationChange()
+ */
+
+void HbGridView::setSwapDimensionsOnOrientationChange(bool swap)
+{
+ Q_D(HbGridView);
+ d->mSwapDimensionsOnOrientationChange = swap;
+}
+
+
/*!
Returns item at \a row and \a column.
- */
+*/
HbAbstractViewItem *HbGridView::itemAt(int row, int column) const
{
Q_D(const HbGridView);
@@ -221,12 +248,12 @@
/*!
\reimp
- */
+*/
void HbGridView::scrollTo(const QModelIndex &index, ScrollHint hint)
{
Q_D(HbGridView);
// always use container, event if recycling is off and all items are
- // in container, but still aditional action is needed -
+ // in container, but still additional action is needed -
// container::scrollTo is responsible for procesing all
// posponed events (DelayedLayoutRequest)
if ( d->mModelIterator->model()
@@ -248,7 +275,7 @@
/*!
\reimp
- */
+*/
void HbGridView::orientationAboutToBeChanged()
{
Q_D(HbGridView);
@@ -257,14 +284,16 @@
/*!
\reimp
- */
+*/
void HbGridView::orientationChanged(Qt::Orientation newOrientation)
{
Q_D(HbGridView);
d->mContainer->setPos(0,0);
- d->itemContainer()->orientationChanged(newOrientation);
+ if (d->mSwapDimensionsOnOrientationChange) {
+ d->itemContainer()->orientationChanged(newOrientation);
+ }
- // abstract part is enought - container update buffer
+ // abstract part is enough - container update buffer
HbAbstractItemView::scrollTo(d->mVisibleIndex, HbAbstractItemView::PositionAtCenter);
d->mVisibleIndex = QModelIndex();
@@ -361,7 +390,7 @@
/*!
This slot is connected to scrollDirectionsChanged signal emitted from HbScrollArea.
- */
+*/
void HbGridView::scrollDirectionChanged(Qt::Orientations scrollDirection)
{
Q_D(HbGridView);
@@ -371,7 +400,7 @@
d->mContainer->setPos(0,0);
d->itemContainer()->scrollDirectionChanged(scrollDirection);
- // abstract part is enought - container update buffer
+ // abstract part is enough - container update buffer
HbAbstractItemView::scrollTo(d->mVisibleIndex, HbAbstractItemView::PositionAtCenter);
d->mVisibleIndex = QModelIndex();
--- a/src/hbwidgets/itemviews/hbgridview.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbgridview.h Wed Jun 23 18:33:25 2010 +0300
@@ -37,6 +37,7 @@
Q_PROPERTY(int rowCount READ rowCount WRITE setRowCount)
Q_PROPERTY(bool iconVisible READ iconVisible WRITE setIconVisible)
Q_PROPERTY(bool textVisible READ textVisible WRITE setTextVisible)
+ Q_PROPERTY(bool swapDimensionsOnOrientationChange READ swapDimensionsOnOrientationChange WRITE setSwapDimensionsOnOrientationChange)
public:
explicit HbGridView(QGraphicsItem *parent = 0);
@@ -55,6 +56,9 @@
bool textVisible() const;
void setTextVisible(bool visible);
+ bool swapDimensionsOnOrientationChange() const;
+ void setSwapDimensionsOnOrientationChange(bool swap);
+
protected:
void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
void orientationAboutToBeChanged();
--- a/src/hbwidgets/itemviews/hbgridview_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbgridview_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -38,7 +38,8 @@
HbGridViewPrivate::HbGridViewPrivate() :
mIconVisible(true),
- mTextVisible(true)
+ mTextVisible(true),
+ mSwapDimensionsOnOrientationChange(true)
{
}
--- a/src/hbwidgets/itemviews/hbgridview_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbgridview_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -65,6 +65,7 @@
public:
bool mIconVisible;
bool mTextVisible;
+ bool mSwapDimensionsOnOrientationChange;
void relayout();
--- a/src/hbwidgets/itemviews/hbgridviewitem.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbgridviewitem.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -52,6 +52,11 @@
implement the state() and setState() functions in the derived class.
See also HbGridView, HbAbstractItemView, HbAbstractViewItem, HbStyleOptionAbstractViewItem
+
+ \primitives
+ \primitive{icon} HbIconItem representing the icon in the HbGridViewItem.
+ \primitive{text} HbTextItem representing the text in the HbGridViewItem.
+
*/
/*!
@@ -108,7 +113,7 @@
/*!
Assigns the \a source grid view item to this grid view item and returns a reference to this item.
- */
+*/
HbGridViewItem &HbGridViewItem::operator=(const HbGridViewItem &source)
{
Q_D(HbGridViewItem);
--- a/src/hbwidgets/itemviews/hbindexfeedback.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbindexfeedback.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -82,7 +82,7 @@
Index feedback will be the first letter of the contents of Hb::IndexFeedbackRole
cast as a string. It will be displayed using a larger font centered over the list.
- Recomended use is for alphabetically sorted lists.
+ Recommended use is for alphabetically sorted lists.
*/
/*!
@@ -92,7 +92,7 @@
Hb::IndexFeedbackRole cast as a string. It will be displayed using a larger font
centered over the list.
- Recomended us is for month abreviations.
+ Recommended us is for month abreviations.
*/
/*!
@@ -236,7 +236,9 @@
return d->mItemView;
}
-/*
+/*!
+ \reimp
+
A scene event filter. It's purpose is to call calculatePopupRects on
a resize event for the item view.
*/
@@ -251,7 +253,9 @@
return QGraphicsItem::sceneEventFilter(watched, ev);
}
-/*
+/*!
+ \reimp
+
Rather than adding signals to HbScrollBar specifically to implement
index feedback, an event filter is used.
--- a/src/hbwidgets/itemviews/hbindexfeedback_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbindexfeedback_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
+#include "hbindexfeedback_p.h"
#include "hbindexfeedback.h"
-#include "hbindexfeedback_p.h"
#include <hbscrollbar.h>
#include <hbabstractitemview.h>
@@ -189,7 +189,7 @@
*/
QString HbIndexFeedbackPrivate::displayText(const QVariant &data) const
{
- QString retVal = QString();
+ QString retVal;
switch (mIndexFeedbackPolicy) {
case HbIndexFeedback::IndexFeedbackSingleCharacter:
--- a/src/hbwidgets/itemviews/hblistitemcontainer_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hblistitemcontainer_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -169,7 +169,7 @@
if (minHeight == 0.0) {
QModelIndex index;
while (mItems.isEmpty()) {
- // in practise following conditions must apply: itemview is empty and scrollTo() has been called.
+ // in practize following conditions must apply: itemview is empty and scrollTo() has been called.
// Starts populating items from given mFirstItemIndex
if ( mFirstItemIndex.isValid()) {
index = mFirstItemIndex;
@@ -240,8 +240,10 @@
HbAbstractViewItem *viewItem = d->item(index);
if (viewItem) {
- QPair<HbAbstractViewItem *, int> pair(viewItem, d->mapToLayoutIndex(d->mItems.indexOf(viewItem)));
- d->mAnimatedItems.append(pair);
+ if (HbEffect::effectRunning(viewItem)) {
+ QPair<HbAbstractViewItem *, int> pair(viewItem, d->mapToLayoutIndex(d->mItems.indexOf(viewItem)));
+ d->mAnimatedItems.append(pair);
+ }
} else {
return;
}
@@ -393,7 +395,7 @@
// because only then container can go out of bounds
qreal viewSize = itemView()->boundingRect().size().height();
if (layoutPreferredHeight + pos().y() < viewSize) {
- // position is allways negative
+ // position is always negative
// view out of bounds
if (diff > 0.0) {
QPointF posDiff(pos().x(), 0.0);
--- a/src/hbwidgets/itemviews/hblistlayout_p_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hblistlayout_p_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -22,8 +22,8 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
-#ifndef HBLISTITEMLAYOUT_P_P_H
-#define HBLISTITEMLAYOUT_P_P_H
+#ifndef HBLISTLAYOUT_P_P_H
+#define HBLISTLAYOUT_P_P_H
#include "hblistlayout_p.h"
--- a/src/hbwidgets/itemviews/hblistview.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hblistview.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -29,7 +29,6 @@
#include "hblistlayout_p.h"
#include "hblistviewitem.h"
#include "hblistitemcontainer_p.h"
-#include "hblistitemcontainer_p.h"
#include "hbscrollbar.h"
#include <hbwidgetfeedback.h>
#include "hbmodeliterator.h"
@@ -202,7 +201,7 @@
/*!
Returns true if view is in arrange mode. False otherwise.
- */
+*/
bool HbListView::arrangeMode() const
{
Q_D(const HbListView);
@@ -210,8 +209,8 @@
}
/*!
- * Returns the view item being dragged. This is NULL if no item is being dragged.
- */
+ Returns the view item being dragged. This is NULL if no item is being dragged.
+*/
HbAbstractViewItem *HbListView::draggedItem() const
{
Q_D( const HbListView );
@@ -233,24 +232,12 @@
{
Q_D(HbListView);
if (arrangeMode != d->mArrangeMode) {
- if (arrangeMode == true) {
- if (d->mSelectionMode != HbAbstractItemView::NoSelection
- || !d->mModelIterator->model()
- || !(d->mModelIterator->model()->supportedDropActions().testFlag(Qt::MoveAction))) {
- return false;
+ if (d->mSelectionMode != HbAbstractItemView::NoSelection
+ || !d->mModelIterator->model()
+ || !(d->mModelIterator->model()->supportedDropActions().testFlag(Qt::MoveAction))) {
+ return false;
}
- verticalScrollBar()->setInteractive(true);
- } else {
- verticalScrollBar()->setInteractive(false);
- }
- d->mArrangeMode = arrangeMode;
-
- if (d->mArrangeMode == true) {
- d->mOriginalFriction = d->mFrictionEnabled;
- setFrictionEnabled(false);
- } else {
- setFrictionEnabled(d->mOriginalFriction);
- }
+ d->arrangeModeSetup(arrangeMode);
}
return true;
}
--- a/src/hbwidgets/itemviews/hblistview_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hblistview_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -25,6 +25,7 @@
#include "hblistview_p.h"
#include "hblistview.h"
+#include "hbscrollbar.h"
#include "hblistviewitem.h"
#include "hbabstractitemcontainer_p.h"
@@ -288,3 +289,23 @@
return HbAbstractItemViewPrivate::panTriggered(event);
}
+void HbListViewPrivate::arrangeModeSetup(bool newMode)
+{
+ Q_Q(HbListView);
+
+ if (newMode) {
+ mOriginalInteractiveScrollBar = q->verticalScrollBar()->isInteractive();
+ q->verticalScrollBar()->setInteractive(true);
+ mOriginalLongPressEnabled = q->longPressEnabled();
+ q->setLongPressEnabled(false);
+ mOriginalFriction = mFrictionEnabled;
+ q->setFrictionEnabled(false);
+ } else {
+ q->verticalScrollBar()->setInteractive(mOriginalInteractiveScrollBar);
+ q->setLongPressEnabled(mOriginalLongPressEnabled);
+ q->setFrictionEnabled(mOriginalFriction);
+ }
+
+ mArrangeMode = newMode;
+
+}
--- a/src/hbwidgets/itemviews/hblistview_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hblistview_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -68,6 +68,8 @@
virtual bool panTriggered(QGestureEvent *event);
+ void arrangeModeSetup(bool newMode);
+
public:
bool mArrangeMode;
@@ -81,6 +83,8 @@
bool mMoveOngoing;
bool mOriginalFriction;
+ bool mOriginalLongPressEnabled;
+ bool mOriginalInteractiveScrollBar;
};
#endif // HBLISTVIEW_PRIVATE_H
--- a/src/hbwidgets/itemviews/hblistviewitem.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hblistviewitem.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -100,6 +100,14 @@
Below is an example how the layout properties can be configured.
\snippet{ultimatecodesnippet/ultimatecodesnippet.cpp,45}
+
+ \primitives
+ \primitive{icon-1} HbIconItem representing the icon-1 as described in the table above.
+ \primitive{icon-2} HbIconItem representing the icon-2 as described in the table above.
+ \primitive{text-1} HbTextItem or HbRichTextItem representing the text-1 as described in the table above. The type of the return value depends on the textFormat() of the item.
+ \primitive{text-2} HbTextItem or HbRichTextItem representing the text-2 as described in the table above.
+ \primitive{text-3} HbTextItem or HbRichTextItem representing the text-3 as described in the table above.
+
*/
/*!
@@ -419,7 +427,7 @@
styleOption.multilineSecondaryTextSupported = d->isMultilineSupported();
if (i == 1) {
- // criteria of secondary text in middle column is fullfilled
+ // criteria of secondary text in middle column is fulfilled
styleOption.minimumLines = sd->mMinimumSecondaryTextRowCount;
styleOption.maximumLines = sd->mMaximumSecondaryTextRowCount;
}
--- a/src/hbwidgets/itemviews/hblistwidget.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hblistwidget.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -43,67 +43,66 @@
@beta
@hbwidgets
\class HbListWidget
- \brief HbListWidget represents a list
+ \brief The HbListWidget class is for simple lists consisting of single row items of an icon and some text, and together with HbListWidgetItem consisting of icon and at most two-row text items.
- This class has been provided with the class HbListWidgetItem as a convenience
- API. It provides an item-based interface for adding and removing items.
+
+ HbListWidget provides a convenience API for adding, modifying, and removing single row items in simple lists. Single row items consist of some text and an icon in one line. If you want list items with two texts or two icons, that is, with multirow items, then you can create HbListWidgetItem objects and add them to an HbListWidget. See HbListWidgetItem for the detailed description of the multirow item.
- SetModel() function of the base class HbListView cannot be used. If the user wants to start
- using a list view with e.g. a directory model (QDirModel) this convenience API cannot be used.
+ HbListWidget model supports arranging items with drag and drop.
+
+ \link HbAbstractItemView::setModel(QAbstractItemModel *model, HbAbstractViewItem *prototype=0) SetModel()\endlink method of the base class HbAbstractItemView cannot be used. HbListWidget cannot be used for list views with a directory model (QDirModel), for example.
- HbListWidget can be used without HbListWidgetItem to populate
- simple list with single row items consisting of a text and an icon.
-
- If multirow items are needed the HbListWidgetItem must be used.
-
+ \section _usecases_hblistwidget Using the HbListWidget class
+
+ \subsection _uc_hblistwidget_001 Creating a list and adding one single row item into it.
+
+ The following code snippet first creates a list and then adds one item which contains some text and an icon to the list.
+
\snippet{unittest_hblistwidget.cpp,1}
- See HbListWidgetItem for more usage examples.
-
- \sa HbListWidgetItem, HbListView
+ \sa HbListWidgetItem, HbListView for more use cases.
*/
/*!
\fn void HbListWidget::pressed(HbListWidgetItem *item)
- This signal is emitted when a list item is pressed.
- The pressed item is specified by \a item.
+ This signal is emitted when the user presses an item in the list. \a item indicates the pressed item.
- See also released(), longPressed() and activated().
+ \sa released(), longPressed(), activated()
*/
/*!
\fn void HbListWidget::released(HbListWidgetItem *item)
- This signal is emitted when a list item is no more pressed.
- The released item is specified by \a item.
+ This signal is emitted when when release event occurs for \a item.
- See also pressed(), longPressed() and activated().
+ \sa pressed(), longPressed(), activated()
+ \sa HbAbstractViewItem::released(const QPointF &position)
*/
/*!
\fn void HbListWidget::activated(HbListWidgetItem *item)
-
- This signal is emitted when the item specified by \a item is activated by the user.
- How to activate items depends on the input method; e.g., with mouse by clicking the item,
- or with touch input by tapping the item, or with hardware keys by pressing the Return
- or Enter key when the item is current, or with soft keys by pressing choosing "Select"
- when the item is current.
-
- See also pressed(), released() and longPressed().
+
+ This signal is emitted when the user activates an item in the list. \a item indicates the activated item. The activation of the item depends on the input method. An item can be activated in the following ways:
+ - by clicking the item with a mouse
+ - by tapping the item on a touch screen
+ - by pressing Return or Enter hardware keys when the item has focus
+ - by pressing Select soft key when the item has focus
+
+ \sa pressed(), released(), longPressed()
*/
/*!
\fn void HbListWidget::longPressed(HbListWidgetItem *item, const QPointF &coords)
- This signal is emitted when a list item is long pressed.
- The pressed item is specified by \a item and \a coords.
- See also pressed(), released() and activated().
+ This signal is emitted when the user presses an item in the list for a long time. \a item indicates the activated item and \a coords the screen position where the long press happened.
+
+ \sa pressed(), released(), activated()
*/
/*!
Constructs a list widget with \a parent.
- */
+*/
HbListWidget::HbListWidget(QGraphicsItem *parent)
: HbListView( *new HbListWidgetPrivate, new HbListItemContainer, parent )
{
@@ -119,14 +118,14 @@
}
/*!
- Destructs the list view.
- */
+ Destructor.
+*/
HbListWidget::~HbListWidget()
{
}
/*!
- Returns the total number of rows.
+ Returns the total number of rows in the list.
*/
int HbListWidget::count() const
{
@@ -134,17 +133,18 @@
}
/*!
- Returns the current row number
- */
+ Returns the current row number in the list. A current row is a row having focus.
+*/
int HbListWidget::currentRow() const
{
return modelIterator()->indexPosition(currentIndex());
}
/*!
- Sets current \a row. This function sets current index into selection model.
- Selection is never changed.
- */
+ Sets the current row to \a row. A current row is a row having focus.
+
+ \sa currentRow()
+*/
void HbListWidget::setCurrentRow(int row)
{
Q_D(HbListWidget);
@@ -152,10 +152,11 @@
}
/*!
- Returns a pointer to the current HbListWidgetItem.
- Ownership not transferred to the caller.
- Should not be deleted by the caller.
- */
+ Returns a pointer to the current list item. A current list item is a list item having focus.
+ Ownership is not transferred so the item should not be deleted by the caller.
+
+ \sa currentRow()
+*/
HbListWidgetItem *HbListWidget::currentItem() const
{
Q_D( const HbListWidget );
@@ -163,18 +164,17 @@
}
/*!
- Sets the current item to item.
- */
+ Sets the current item to \a item. A current item is an item having focus.
+*/
void HbListWidget::setCurrentItem (HbListWidgetItem *item)
{
setCurrentRow(row(item));
}
/*!
- Returns a pointer to an item specified by \a row.
- Ownership not transferred to the caller.
- Should not be deleted by the caller.
- */
+ Returns a pointer to the list item specified by \a row.
+ Ownership is not transferred to the caller so the item should not be deleted by the caller.
+*/
HbListWidgetItem *HbListWidget::item (int row) const
{
Q_D( const HbListWidget );
@@ -182,8 +182,8 @@
}
/*!
- Creates new one row item based on a string and an icon and append it to the end of the list.
- */
+ Creates a single row item specified by \a icon and \a text and appends it to the end of the list.
+*/
void HbListWidget::addItem (const HbIcon &icon, const QString &text)
{
Q_D( HbListWidget );
@@ -195,8 +195,8 @@
}
/*!
- Creates new one row item based on a string and append it to the end of the list.
- */
+ Creates a new single row item spcified by \a text and appends it to the end of the list.
+*/
void HbListWidget::addItem (const QString &text)
{
Q_D( HbListWidget );
@@ -207,8 +207,8 @@
}
/*!
- Appends an item created by the user to the end of the list.
- */
+ Appends \a item to the end of the list.
+*/
void HbListWidget::addItem (HbListWidgetItem *item)
{
Q_D( HbListWidget );
@@ -219,8 +219,10 @@
}
/*!
- Creates a new item based on the string and an icon into a specified location in the list
- */
+ Creates a list widget item with \a icon and \a text and inserts it into the list at the \a row location. Regarding \a row the following rules apply:
+ - if \a row is negative the item is inserted into the first row
+ - if \a row is greater than the number of list's items the item is added at the last item
+*/
void HbListWidget::insertItem (int row, const HbIcon &icon, const QString &text)
{
Q_D( HbListWidget );
@@ -233,8 +235,10 @@
}
/*!
- Creates a new item based on the string into a specified location in the list.
- */
+ Creates a list widget item with \a text and inserts it into the list at the \a row location. Regarding \a row the following rules apply:
+ - if \a row is negative the item is inserted into the first row
+ - if \a row is greater than the number of list's items the item is added at the last item
+*/
void HbListWidget::insertItem (int row, const QString &text)
{
Q_D( HbListWidget );
@@ -246,8 +250,10 @@
}
/*!
- Inserts an item created by the user to the specified place on the list.
- */
+ Creates a list widget item with \a item and inserts it into the list at the \a row location. Regarding \a row the following rules apply:
+ - if \a row is negative the item is inserted into the first row
+ - if \a row is greater than the number of list's items the item is added at the last item
+*/
void HbListWidget::insertItem (int row, HbListWidgetItem *item)
{
Q_D( HbListWidget );
@@ -258,8 +264,8 @@
}
/*!
- Deletes every item in the list
- */
+ Deletes all the items in the list.
+*/
void HbListWidget::clear()
{
Q_D( HbListWidget );
@@ -270,8 +276,8 @@
}
/*!
- Returns the row containing the given item.
- */
+ Returns the row number of given \a item.
+*/
int HbListWidget::row(const HbListWidgetItem *item) const
{
Q_D( const HbListWidget );
@@ -280,9 +286,7 @@
}
/*!
- \reimp
-
- Setting own model to HbListWidget is not allowed.
+ This method cannot be used. If you call it in debug builds you will get an ASSERT failure i.e. Q_ASSERT_X(). In release builds nothing will happen.
*/
void HbListWidget::setModel(QAbstractItemModel *model, HbAbstractViewItem *prototype)
{
@@ -293,9 +297,11 @@
/*!
- Set the text for a simple one row item or the first text row for a
- multi row item. Only the text is replaced, no icon removed.
- Use HbListWidgetItem to modify multirow items.
+ Replaces the text on the given \a row with the given \a text. Only the text is replaced, the icon stays unchanged. In case of a multi-row only the first text row is replaced. Use HbListWidgetItem to modify multirow items.
+
+ \param text - Text to be shown in the list widget item.
+ \param row - Row of the list widget item.
+
*/
void HbListWidget::setText(int row, const QString &text)
{
@@ -306,9 +312,10 @@
}
/*!
- Set the icon for a simple one row item or the first icon for a
- multi row item. Only the icon is replaced, no text removed.
- Use HbListWidgetItem to modify multirow items.
+ Replaces the icon on the given \a row with the given \a icon. Only the icon is replaced, the text stays unchanged. The item can be a single row or a multirow item. Use HbListWidgetItem to modify multirow items.
+
+ \param icon - Icon to be shown in the list widget item.
+ \param row - Row of the list widget item.
*/
void HbListWidget::setIcon(int row, const HbIcon& icon)
{
@@ -319,9 +326,13 @@
}
/*!
- Removes and returns the item from the given row in the list widget; otherwise returns 0.
- Items removed from a list widget will not be managed, and will need to be deleted manually.
- Use this function to remove items form the list.
+ Returns the list widget item of given row and then removes the item from the list. Items removed from a list must be deleted manually.
+
+ \param row - Row to be removed.
+
+ \return
+ - The list widget item of \a row if it exists in the list.
+ - 0, if \a row doesn't exist in the list.
*/
HbListWidgetItem *HbListWidget::takeItem(int row)
{
@@ -333,36 +344,34 @@
}
/*!
- HbListWidget model supports arranging items with drag and drop, so
- this method returns true unless the widget is in some selection mode.
+ HbListWidget supports arranging items with drag and drop. If \a arrangeMode is \c true and the list is not in the selection mode, the list is put into the arrange list mode which allows the user to rearrange the list by dragging and dropping items. If \a arrangeMode is \c false, then the arrange list mode is cancelled.
+
+ The list can be in either arrange or selection mode but not in both modes at any given time.
+
+ \return
+ - \c True if the arrange list mode is successfully set according to \a arrangeMode. This includes the case where the requested \a arrangeMode is the same as what was already set for the list.
+ - \c False if the requested \a arrangeMode cannot be set.
*/
bool HbListWidget::setArrangeMode(const bool arrangeMode)
{
Q_D( HbListWidget );
if (arrangeMode != d->mArrangeMode) {
- if (arrangeMode == true) {
- if (d->mSelectionMode != HbAbstractItemView::NoSelection) {
- return false;
- }
- verticalScrollBar()->setInteractive(true);
- } else {
- verticalScrollBar()->setInteractive(false);
+ if (d->mSelectionMode != HbAbstractItemView::NoSelection) {
+ return false;
}
-
- d->mArrangeMode = arrangeMode;
-
- if (d->mArrangeMode == true) {
- d->mOriginalFriction = d->mFrictionEnabled;
- setFrictionEnabled(false);
- } else {
- setFrictionEnabled(d->mOriginalFriction);
- }
+ d->arrangeModeSetup(arrangeMode);
}
return true;
}
/*!
+ Moves an item from given source row to given target row. The operation is cancelled in the following cases:
+ - Source and target rows are the same.
+ - Either or both given rows do not exist in the list.
+
+ \param from - Source row that is the row from where the item is moved.
+ \param to - Target row that is the row to where the item is moved.
*/
void HbListWidget::move(const QModelIndex &from, const QModelIndex &to)
{
@@ -383,7 +392,7 @@
/*!
Constructs a list widget with private view widget \a dd and \a parent.
- */
+*/
HbListWidget::HbListWidget( HbListWidgetPrivate& dd, HbAbstractItemContainer *container, QGraphicsItem* parent ):
HbListView( dd, container, parent )
{
--- a/src/hbwidgets/itemviews/hblistwidgetitem.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hblistwidgetitem.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,7 +22,8 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
-#include <hblistwidgetitem.h>
+
+#include "hblistwidgetitem.h"
#include "hblistwidgetitem_p.h"
#include "hblistmodel_p.h"
@@ -35,31 +36,28 @@
@beta
@hbwidgets
\class HbListWidgetItem
- \brief HbListWidgetItem represents a list item. It is part of convenience list API together with HbListWidget.
-
- As this is a convenience API it is supposed to be easy to use. For that reason complicated list items are not possible
- to be created. HbListWidgetItem supports at maximum two text items and two icon items.
- Either primary text or primary icon must always be provided. Icons are shown only in default size.
+ \brief The HbListWidgetItem class provides an item for use with the HbListWidget class.
- A view item created from this item consists of three columns at maximum.
- - First column contains primary icon
- - Middle column has one or two rows to show text(s)
- - Last column contains secondary icon
- - Any column can be empty
+ As HbListWidget by itself supports the use of very basic items in simple lists, HbListWidgetItem provides together with HbListWidget a convenience API for adding, modifying, and removing more versatile items in simple lists. So, if you want to have list items consisting of more than an icon and a text, create HbListWidgetItem objects and add them to an HbListWidget object. The list item of HbListWidgetItem class consists of three columns and its features are as follows:
+ - The left and right columns have one row and they can contain an icon.
+ - The middle column can have two rows and both rows can contain text.
+ - At least the primary text is required.
+
+ \section _usecases_hblistwidgetitem Using the HbListWidgetItem class
+
+ \subsection _uc_hblistwidgetitem_001 Creating a list item and adding two icons and two rows of text into it.
- The following code snippet presents how to create an list item with icons in the left
- and right columns and two rows of text in the middle column.
+ The following code snippet creates a list item with icons in the left and right columns and two rows of text in the middle column.
\snippet{unittest_hblistwidgetitem.cpp,1}
\sa HbListWidget
-
*/
/*!
\fn QBrush HbListWidgetItem::background() const
- Returns item's background.
+ Returns the background of the item.
\sa setBackground
*/
@@ -67,17 +65,18 @@
/*!
\fn void HbListWidgetItem::setBackground(const QVariant &background)
- Sets the item's background to the specified \a background. Supported
- background types are HbIcon and QBrush types plus any type that can be
- converted to those types.
+ Sets the background of the item to the given \a background. Supported types are as follows:
+ - HbIcon
+ - QBrush
+ - any type that can be converted to HbIcon or QBrush
\sa background
*/
/*!
- Constructs an empty list widget item with the given \a type.
+ Constructs an empty list widget item of the given \a type. If no type is specified then Hb::StandardItem is used.
- Default type for item is Hb::StandardItem.
+
*/
HbListWidgetItem::HbListWidgetItem(int type) :
d(new HbListWidgetItemPrivate(this))
@@ -103,8 +102,9 @@
/*!
- Returns the item's application-specific data for the given role,
- or an invalid QVariant if there is no data for the role.
+ Returns
+ - the item's application-specific data of the given \a role if the data exists.
+ - an invalid QVariant if there is no data of the given \a role for the item.
*/
QVariant HbListWidgetItem::data(int role) const
{
@@ -112,16 +112,11 @@
}
/*!
- Sets the item's data for the given role to the specified value.
- Can be used to store application-specific data in an item.
-
- Specialised functions in section 'see also' are recommended setting user data.
+ Sets the item's data for the given \a role to the given \a value. It can be used to store application-specific data into an item.
- \sa setText()
- \sa setSecondaryText()
- \sa setIcon()
- \sa setSecondaryIcon()
-*/
+ Specialized functions in section 'see also' are recommended setting user data.
+ \param role - Role for the data of the item.
+ */
void HbListWidgetItem::setData(const QVariant &value, int role)
{
d->setData(value,role);
@@ -141,7 +136,7 @@
/*!
- Sets the item's primary text to the specified \a text.
+ Sets the item's primary text to the given \a text.
\sa text
*/
@@ -153,7 +148,7 @@
}
/*!
- Returns item's secondary text.
+ Returns the secondary text of the item.
\sa setSecondaryText
*/
@@ -163,7 +158,7 @@
}
/*!
- Sets the item's secondary text to the specified \a text.
+ Sets the item's secondary text to the given \a text.
\sa secondaryText
*/
@@ -175,7 +170,7 @@
}
/*!
- Returns item's icon.
+ Returns the item's icon.
\sa setIcon
*/
@@ -185,7 +180,7 @@
}
/*!
- Sets the item's icon to the specified \a icon.
+ Sets the item's icon to the given \a icon.
\sa icon
*/
@@ -197,7 +192,7 @@
}
/*!
- Returns item's secondary icon.
+ Returns the item's secondary icon.
\sa setSecondaryIcon
*/
@@ -207,7 +202,7 @@
}
/*!
- Sets the item's secondary icon to the specified \a icon.
+ Sets the item's secondary icon to the given \a icon.
\sa secondaryIcon
*/
@@ -219,10 +214,9 @@
}
/*!
- Sets whether the item is enabled.
+ Enables the user interaction with item.
- If enabled is true, the item is \a enabled, meaning that the user can interact with the item; if \a enabled is false,
- the user cannot interact with the item.
+ \param enabled - If the value is \c true, the user can interact with the item. If the value is \c false, the user cannot interact with the item.
*/
void HbListWidgetItem::setEnabled(bool enabled)
{
--- a/src/hbwidgets/itemviews/hbmodeliterator.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbmodeliterator.h Wed Jun 23 18:33:25 2010 +0300
@@ -36,7 +36,7 @@
class HB_WIDGETS_EXPORT HbModelIterator
{
public:
- HbModelIterator(QAbstractItemModel *model = 0, QModelIndex rootIndex = QModelIndex());
+ explicit HbModelIterator(QAbstractItemModel *model = 0, QModelIndex rootIndex = QModelIndex());
virtual ~HbModelIterator();
virtual int indexCount(const QModelIndex &parent = QModelIndex()) const;
--- a/src/hbwidgets/itemviews/hbradiobuttonlistviewitem_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbradiobuttonlistviewitem_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef HBRADIOBUTTONLISTVIEVITEM_H
-#define HBRADIOBUTTONLISTVIEVITEM_H
+#ifndef HBRADIOBUTTONLISTVIEWITEM_P_H
+#define HBRADIOBUTTONLISTVIEWITEM_P_H
#include <hblistviewitem.h>
--- a/src/hbwidgets/itemviews/hbtreeitemcontainer_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbtreeitemcontainer_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -187,7 +187,7 @@
if (minHeight == 0.0) {
QModelIndex index;
while (mItems.isEmpty()) {
- // in practise following conditions must apply: itemview is empty and scrollTo() has been called.
+ // in practize following conditions must apply: itemview is empty and scrollTo() has been called.
// Starts populating items from given mFirstItemIndex
if ( mFirstItemIndex.isValid()) {
index = mFirstItemIndex;
@@ -426,7 +426,7 @@
// because only then container can go out of bounds
qreal viewSize = itemView()->boundingRect().size().height();
if (layoutPreferredHeight + pos().y() < viewSize) {
- // position is allways negative
+ // position is always negative
// view out of bounds
if (diff > 0.0) {
QPointF posDiff(pos().x(), 0.0);
--- a/src/hbwidgets/itemviews/hbtreelayout_p_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbtreelayout_p_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
+#include "hbtreelayout_p_p.h"
#include "hbtreelayout_p.h"
-#include "hbtreelayout_p_p.h"
#include "hbabstractitemcontainer_p.h"
#include <hblayoututils_p.h>
--- a/src/hbwidgets/itemviews/hbtreelayout_p_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbtreelayout_p_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef HBTREELAYOUTPRIVATE_P_P_H
-#define HBTREELAYOUTPRIVATE_P_P_H
+#ifndef HBTREELAYOUT_P_P_H
+#define HBTREELAYOUT_P_P_H
#include <QList>
@@ -65,4 +65,4 @@
static const qreal INVALID_ITEM_HEIGHT;
};
-#endif // HBTREELAYOUTPRIVATE_P_P_H
+#endif // HBTREELAYOUT_P_P_H
--- a/src/hbwidgets/itemviews/hbtreemodeliterator_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbtreemodeliterator_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -97,7 +97,7 @@
\reimp
Returnes index of item, which is visible at pos ordinal under parent.
Indexes in collapsed parents are not taken into account.
- Very slow - need to interate throught whole model in worst case!
+ Very slow - need to interate through whole model in worst case!
*/
QModelIndex HbTreeModelIterator::index(int pos, const QModelIndex &parent) const
{
@@ -295,6 +295,8 @@
this, SLOT(columnsInserted(QModelIndex,int,int)));
connect(d->mModel, SIGNAL(columnsRemoved(QModelIndex,int,int)),
this, SLOT(columnsRemoved(QModelIndex,int,int)));
+ connect(d->mModel, SIGNAL(layoutChanged()),
+ this, SLOT(modelLayoutChanged()));
}
} else {
setRootIndex(rootIndex);
@@ -393,5 +395,11 @@
d->resetCache();
}
+void HbTreeModelIterator::modelLayoutChanged()
+{
+ Q_D(HbTreeModelIterator);
+ d->resetCache();
+}
+
#include "moc_hbtreemodeliterator_p.cpp"
--- a/src/hbwidgets/itemviews/hbtreemodeliterator_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbtreemodeliterator_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -37,7 +37,7 @@
Q_OBJECT
public:
- HbTreeModelIterator(QAbstractItemModel *model = 0, QModelIndex rootIndex = QModelIndex(), bool useCache = true);
+ explicit HbTreeModelIterator(QAbstractItemModel *model = 0, QModelIndex rootIndex = QModelIndex(), bool useCache = true);
~HbTreeModelIterator();
int indexCount(const QModelIndex &parent = QModelIndex()) const;
@@ -63,6 +63,7 @@
void rowsRemoved(const QModelIndex &parent, int start, int end);
void columnsInserted(const QModelIndex &parent, int start, int end);
void columnsRemoved(const QModelIndex &parent, int start, int end);
+ void modelLayoutChanged();
private:
Q_DECLARE_PRIVATE_D(d, HbTreeModelIterator)
--- a/src/hbwidgets/itemviews/hbtreeview.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbtreeview.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -534,7 +534,7 @@
/*!
Returns indentation of tree view items.
- The returned value is either default value or set by setIndentation().
+ The returned value is either default value or value set by setIndentation().
Default value is -1. In this case indentation from style sheet is used.
--- a/src/hbwidgets/itemviews/hbtreeviewitem.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbtreeviewitem.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,9 +22,10 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
+
+#include "hbtreeviewitem.h"
#include "hbtreeviewitem_p.h"
-#include "hbtreeviewitem.h"
#include "hbtreeview.h"
#include "hbabstractitemview.h"
#include "hbabstractitemcontainer_p.h"
@@ -56,6 +57,8 @@
See HbListViewItem for commmon view item subclassing reference.
+ \primitives
+ \primitive{subitem-indicator} HbIconItem representing the expand/collapse icon in an HbTreeViewItem that has child items.
*/
@@ -299,7 +302,7 @@
/*!
Returns true if the item is expanded; otherwise returns false.
- \sa setExpanded
+ \sa setExpanded()
*/
bool HbTreeViewItem::isExpanded() const
{
@@ -352,7 +355,7 @@
This method will change the user expandable value for all view items.
- \sa isUserExpandable
+ \sa isUserExpandable()
*/
void HbTreeViewItem::setUserExpandable(bool expandable)
{
@@ -366,7 +369,7 @@
/*!
Returns true if the items are expandable by the user; otherwise returns false.
- \sa setUserExpandable
+ \sa setUserExpandable()
*/
bool HbTreeViewItem::isUserExpandable() const
{
--- a/src/hbwidgets/itemviews/hbtumbleview.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbtumbleview.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -41,7 +41,7 @@
#define HB_TUMBLE_ITEM_ANIMATION_TIME 500
#define HB_TUMBLE_PREFERRED_ITEMS 3
-#define HBTUMBLE_DEBUG
+//#define HBTUMBLE_DEBUG
#ifdef HBTUMBLE_DEBUG
#include <QDebug>
#endif
@@ -57,6 +57,7 @@
void setLoopingEnabled(bool looping) ;
bool isLoopingEnabled() const ;
+ bool isLoopingNeeded() const;
void removeItem(const QModelIndex &index, bool animate );
void setModelIndexes(const QModelIndex &startIndex);
};
@@ -197,6 +198,12 @@
return d->mIsLooped;
}
+bool HbTumbleViewItemContainer::isLoopingNeeded() const
+{
+ Q_D(const HbTumbleViewItemContainer);
+ return (isLoopingEnabled() && (d->mItems.count() < maxItemCount()));
+}
+
void HbTumbleViewItemContainer::removeItem(const QModelIndex &index, bool animate )
{
Q_D(HbTumbleViewItemContainer);
@@ -277,8 +284,6 @@
} else {
for (int itemCounter = lastUsedItem + 1; itemCounter < d->mItems.count(); itemCounter++) {
HbAbstractViewItem *item2 = d->mItems.at(itemCounter);
- qDebug()<<"containeritemsat("<<itemCounter<<")="<<item2->modelIndex()<<"--indexList.at("
- <<indexCounter<<")="<<indexList.at(indexCounter);
if (item2->modelIndex() == indexList.at(indexCounter)) {
d->mItems.swap(indexCounter, itemCounter);
@@ -292,8 +297,6 @@
}
}
- qDebug()<<"last used item -"<<lastUsedItem;
- qDebug()<<"-------------------------------------------------------";
}
int indexCount(indexList.count());
@@ -454,7 +457,7 @@
q->setHorizontalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOff);
q->setFrictionEnabled(true);
- //dont want this to occupy entire screen. preferred is few items.
+ //don't want this to occupy entire screen. preferred is few items.
q->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
mDelayedSelectTimer.setSingleShot(true);
@@ -541,7 +544,7 @@
if (!d->mModelIterator->model()
|| index.model() != d->mModelIterator->model()) {
- return;
+ return;
}
//If item is in the buffer, just reveal it.
@@ -550,18 +553,19 @@
if (itemRecycling()) {
if ( !d->mContainer->itemByIndex(index)
|| hint != EnsureVisible) {
- //Now the item is not in the buffer.
- //We must first set the item to be in the buffer
- //If the item is above let's put it first and if it is below put it last
+ //Now the item is not in the buffer.
+ //We must first set the item to be in the buffer
+ //If the item is above let's put it first and if it is below put it last
- int newIndex = -1;
+ int newIndex = -1;
- switch (hint) {
- case PositionAtCenter: {
+ switch (hint) {
+ case PositionAtCenter:
+ {
int containerCount = d->mContainer->items().count();
newIndex = index.row() - containerCount / 2 ;
if(newIndex < 0){
- if(isLoopingEnabled()){
+ if(((HbTumbleViewItemContainer*)(d->mContainer))->isLoopingNeeded()){
newIndex = d->mModelIterator->indexCount()+newIndex;
}
else{
@@ -570,13 +574,17 @@
}
break;
}
+
case EnsureVisible:
case PositionAtTop:
case PositionAtBottom:
default: {
- qWarning()<<"Scroll Hint is not supported "; }
- }
- d->mContainer->setModelIndexes(d->mModelIterator->index(newIndex));
+#ifdef HBTUMBLE_DEBUG
+ qWarning()<<"Scroll Hint is not supported ";
+#endif
+ }
+ }
+ d->mContainer->setModelIndexes(d->mModelIterator->index(newIndex));
}
}
HbAbstractItemView::scrollTo(index, hint);
@@ -1089,16 +1097,16 @@
Q_D(const HbListView);
QList<HbAbstractViewItem *> items = d->mContainer->items();
- bool empty = items.isEmpty();
- QModelIndex rootIndex = d->mModelIterator->rootIndex();
- QModelIndex firstIndex = items.first()->modelIndex();
- QModelIndex lastIndex = items.last()->modelIndex();
+ if (!items.isEmpty()) {
+ QModelIndex rootIndex = d->mModelIterator->rootIndex();
+ QModelIndex firstIndex = items.first()->modelIndex();
+ QModelIndex lastIndex = items.last()->modelIndex();
- if (!empty &&
- topLeft.parent() == rootIndex
- /*&& firstIndex.row() <= bottomRight.row()
- && topLeft.row() <= lastIndex.row()*/) {
- HbAbstractItemView::dataChanged(topLeft, bottomRight);
+ if ( topLeft.parent() == rootIndex
+ /*&& firstIndex.row() <= bottomRight.row()
+ && topLeft.row() <= lastIndex.row()*/) {
+ HbAbstractItemView::dataChanged(topLeft, bottomRight);
+ }
}
}
--- a/src/hbwidgets/itemviews/hbtumbleviewitem.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbtumbleviewitem.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -27,6 +27,8 @@
#include "hblistviewitem_p.h"
#include <hbstyleoptionlistviewitem_p.h>
+#include <QGestureEvent>
+
HbTumbleViewItem::HbTumbleViewItem(QGraphicsItem *parent) :
HbListViewItem(parent)
{
@@ -71,5 +73,22 @@
}
}
+void HbTumbleViewItem::gestureEvent(QGestureEvent *event)
+{
+ if (event->gesture(Qt::TapGesture)) {
+ Q_D(HbAbstractViewItem);
+ if(itemView()->isScrolling()){
+ event->ignore();
+ event->ignore(Qt::TapGesture);
+ return;
+ }
+ d->tapTriggered(event);
+
+ } else {
+ HbWidget::gestureEvent(event);
+ }
+}
+
+
#include "moc_hbtumbleviewitem.cpp"
--- a/src/hbwidgets/itemviews/hbtumbleviewitem.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/itemviews/hbtumbleviewitem.h Wed Jun 23 18:33:25 2010 +0300
@@ -30,6 +30,10 @@
class HbListViewItemPrivate;
+QT_BEGIN_NAMESPACE
+class QGestureEvent;
+QT_END_NAMESPACE
+
class HB_WIDGETS_EXPORT HbTumbleViewItem: public HbListViewItem
{
Q_OBJECT
@@ -46,6 +50,9 @@
void updateChildItems();
+protected:
+ void gestureEvent(QGestureEvent *event);
+
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbListViewItem)
};
--- a/src/hbwidgets/popups/hbcolordialog.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbcolordialog.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -217,7 +217,6 @@
*/
-
/*!
@beta
Constructs a new HbColorDialog with \a parent
@@ -344,7 +343,7 @@
}
}
-/*
+/*!
@beta
Returns visibility of NoneBlock.
Default value is false.
--- a/src/hbwidgets/popups/hbcolorgridviewitem.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbcolorgridviewitem.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -29,6 +29,14 @@
#include <hbiconitem.h>
#include <hbevent.h>
+/*!
+ \primitives
+ \primitive{cg-color-icon} HbIconItem representing the icon colored with this color item's color.
+ \primitive{cg-border-icon} HbIconItem representing borders of the color item.
+ \primitive{cg-selection-icon} HbIconItem representing the check mark of a selected color item.
+ \primitive{background} HbFrameBackground representing the background frame.
+ */
+
class HbColorGridViewItemPrivate: public HbGridViewItemPrivate
{
Q_DECLARE_PUBLIC( HbColorGridViewItem )
--- a/src/hbwidgets/popups/hbinputdialog.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbinputdialog.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,9 +22,8 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
-
+#include "hbinputdialog_p.h"
#include <hbinputdialog.h>
-#include "hbinputdialog_p.h"
#include "hbglobal_p.h"
#include <hblineedit.h>
#include <hbaction.h>
@@ -58,42 +57,23 @@
The HbDialog::open( QObject* receiver, const char* member ) method from the HbDialog is used to show the HbInputDialog.
- The open method can be attached with a SLOT of the format finished(HbAction*). When the open is used with a slot then the slot
+ The open method can be attached with a SLOT of the format finished(HbAction*) or finished(int). When the open is used with a slot then the slot
will be invoked once the user does any action such as accept or reject (The Ok or Cancel press).
below is the declaration of the slot.
\code
public slots :
- void dialogClosed(HbAction *action);
+ void dialogClosed(int);
\endcode
below code shows how the open method can be called using this slot.
-
- \code
- HbInputDialog *object = new HbInputDialog(parent);
- object->open(this,SLOT(dialogClosed(HbAction*)));
- \endcode
+ \snipped{ultimatecodesnipped/ultimatecodesnippet.cpp,56}
- A sample slot definition is shown below
-
- \code
- void dialogClosed(HbAction *action)
- {
- HbInputDialog *dlg=static_cast<HbInputDialog*>(sender());
- if(dlg->actions().first() == action) { // user is clicked OK
- //Get the string enter by user
- QString myString = dlg->value().toString();
- //Do the action here
- }
- else if(dlg->actions().at(1) == action) {
- // user is clicked CANCEL
- }
- }
- \endcode
+ A sample slot definition is shown below
+ \snipped{ultimatecodesnipped/ultimatecodesnippet.cpp,55}
-
- In HbInputDialog four static convenience API's are provided: getText(), getInteger(), getDouble(), and getIp()
+ In HbInputDialog four static convenience API's are provided: queryText(), queryInteger(), queryDouble(), and queryIp()
static API's can be used to quickly get an input from user.
\enum HbInputDialog::InputMode
@@ -399,6 +379,35 @@
}
}
+void HbInputDialog::done(int code)
+{
+ Q_D(HbInputDialog);
+ if(code==Accepted) {
+ QString text;
+ if(d->mContentWidget && d->mContentWidget->mEdit1) {
+ text = d->mContentWidget->mEdit1->text();
+ }
+ switch(d->mPrimaryMode) {
+ case HbInputDialog::TextInput:
+ case HbInputDialog::IpInput: {
+ emit textValueSelected(text);
+ break;
+ }
+ case HbInputDialog::IntInput: {
+ emit intValueSelected(text.toInt(0,10));
+ break;
+ }
+ case HbInputDialog::RealInput: {
+ emit doubleValueSelected(text.toDouble());
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ HbDialog::done(code);
+}
+
/*!
Returns the echoMode of the user input field.It returns HbLineEdit::EchoMode.
@@ -419,6 +428,9 @@
}
/*!
+ \deprecated HbInputDialog::getText(const QString&,QObject*,const char*,const QString&,QGraphicsScene*,QGraphicsItem*)
+ is deprecated.
+
This is a static convenience function for creating an Input Dialog and to get a string data from the the user. The Application can use this
function in order to get any text data from user like username,search data etc. This API allows a slot to be passed as a param. This slot will
be invoked when the user does the action like OK press or CANCEL press.
@@ -455,21 +467,10 @@
/*!
- This is a static convenience function for creating an Input Dialog and to get an integer data from the the user. The Application can use this
- function in order to get any integer data from user like year , any number etc. This API allows a slot to be passed as a param. This slot will
- be invoked when the user does the action like OK press or CANCEL press.
-
- HbInputDialog::getInt(iTitle,this,SLOT(dialogClosed(HbAction*)),iText); iTitle is the prompt text.dialogClosed will be invoked when the user does the action.
- Please refer the class documentation to know how to handle the slot.
-
- \param label The prompt text which gives information on user input field.
- \param receiver The instance where the slot is declared.
- \param member The slot which has dialogClosed(HbAction*) signature.
- \param value The default value that should be presented to the user.
- \param scene The scene parameter.
- \param parent The parent widget for the dialog.
-
- \sa getText(), getDouble(), getIp()
+ \deprecated HbInputDialog::getInteger(const QString&,QObject*,const char*,int,QGraphicsScene*,QGraphicsItem*)
+ is deprecated.
+
+ \sa queryInteger(), queryDouble(), queryIp()
*/
void HbInputDialog::getInteger(const QString &label,
QObject *receiver,
@@ -489,21 +490,10 @@
dlg->open(receiver,member);
}
/*!
- This is a static convenience function for creating an Input Dialog and to get a double data from the the user. The Application can use this
- function in order to get any double data from user. This API allows a slot to be passed as a param. This slot will
- be invoked when the user does the action like OK press or CANCEL press.
-
- HbInputDialog::getDouble(iTitle,this,SLOT(dialogClosed(HbAction*)),iText); iTitle is the prompt text.dialogClosed will be invoked when the user does the action.
- Please refer the class documentation to know how to handle the slot.
+ \deprecated HbInputDialog::getDouble(const QString&,QObject*,const char*,double,QGraphicsScene*,QGraphicsItem*)
+ is deprecated.
- \param label The prompt text which gives information on user input field.
- \param receiver the instance where the slot is declared.
- \param member the slot which has dialogClosed(HbAction*) signature.
- \param value the default value that should be presented to the user.
- \param scene the scene parameter.
- \param parent the parent widget for the dialog.
-
- \sa getText(), getInteger(), getIp()
+ \sa queryInteger(), queryDouble(), queryIp()
*/
void HbInputDialog::getDouble(const QString &label,
QObject *receiver,
@@ -522,22 +512,11 @@
dlg->open(receiver,member);
}
+/*!
+ \deprecated HbInputDialog::getIp(const QString &,QObject*,const char*,const QString&,QGraphicsScene*,QGraphicsItem*)
+ is deprecated.
-/*!
- This is a static convenience function for creating an Input Dialog and to get an IP information from the the user. This API allows a slot to be passed as a param. This slot will
- be invoked when the user does the action like OK press or CANCEL press.
-
- HbInputDialog::getIp(iTitle,this,SLOT(dialogClosed(HbAction*)),iText); iTitle is the prompt text.dialogClosed will be invoked when the user does the action.
- Please refer the class documentation to know how to handle the slot.
-
- \param label The prompt text which gives information on user input field.
- \param receiver the instance where the slot is declared.
- \param member the slot which has dialogClosed(HbAction*) signature.
- \param ipaddress the default value that should be presented to the user.
- \param scene the scene parameter.
- \param parent the parent widget for the dialog.
-
- \sa getText(), getInteger(), getDouble()
+ \sa queryInteger(), queryDouble(), queryIp()
*/
void HbInputDialog::getIp(const QString &label,
@@ -556,5 +535,144 @@
dlg->setInputMode(IpInput);
dlg->open(receiver,member);
}
+
+/*!
+ This is a static convenience function for creating an Input Dialog and to get a string data from the the user. The Application can use this
+ function in order to get any text data from user like username,search data etc. This API allows a slot to be passed as a param. This slot will
+ be invoked when the user does the action like OK press or CANCEL press.
+
+ HbInputDialog::queryText(iTitle,this,SLOT(dialogClosed(int)),iText); iTitle is the prompt text.dialogClosed will be invoked when the user does the action.
+ Please refer the class documentation to know how to handle the slot.
+
+ \param promptText The prompt text which gives information on user input field.
+ \param receiver The instance where the slot is declared.
+ \param member The slot which has dialogClosed(HbAction*) or dialogClosed(int) signature.
+ \param defaultText The default text that should be presented to the user.
+ \param scene The scene parameter.
+ \param parent The parent item for the dialog.
+
+ \sa queryInteger(), queryDouble(), queryIp()
+*/
+void HbInputDialog::queryText(const QString &promptText,
+ QObject *receiver,
+ const char* member,
+ const QString &defaultText,
+ QGraphicsScene *scene,
+ QGraphicsItem *parent)
+{
+ HbInputDialog *dlg = new HbInputDialog(parent);
+ if (scene && !parent) {
+ scene->addItem(dlg);
+ }
+ dlg->setPromptText(promptText);
+ dlg->setInputMode(TextInput);
+ dlg->setValue(defaultText);
+ dlg->setAttribute(Qt::WA_DeleteOnClose);
+ dlg->open(receiver,member);
+}
+
+
+/*!
+ This is a static convenience function for creating an Input Dialog and to get an integer data from the the user. The Application can use this
+ function in order to get any integer data from user like year , any number etc. This API allows a slot to be passed as a param. This slot will
+ be invoked when the user does the action like OK press or CANCEL press.
+
+ HbInputDialog::queryInt(iTitle,this,SLOT(dialogClosed(int)),iText); iTitle is the prompt text.dialogClosed will be invoked when the user does the action.
+ Please refer the class documentation to know how to handle the slot.
+
+ \param promptText The prompt text which gives information on user input field.
+ \param receiver The instance where the slot is declared.
+ \param member The slot which has dialogClosed(HbAction*) or dialogClosed(int) signature.
+ \param defaultInt The default value that should be presented to the user.
+ \param scene The scene parameter.
+ \param parent The parent widget for the dialog.
+
+ \sa queryText(), queryDouble(), queryIp()
+*/
+void HbInputDialog::queryInt(const QString &promptText,
+ QObject *receiver,
+ const char *member,
+ int defaultInt,
+ QGraphicsScene *scene,
+ QGraphicsItem *parent)
+{
+ HbInputDialog *dlg = new HbInputDialog(parent);
+ if(scene && !parent) {
+ scene->addItem(dlg);
+ }
+ dlg->setPromptText(promptText);
+ dlg->setInputMode(IntInput);
+ dlg->setValue(QString::number(defaultInt));
+ dlg->setAttribute(Qt::WA_DeleteOnClose);
+ dlg->open(receiver,member);
+}
+/*!
+ This is a static convenience function for creating an Input Dialog and to get a double data from the the user. The Application can use this
+ function in order to get any double data from user. This API allows a slot to be passed as a param. This slot will
+ be invoked when the user does the action like OK press or CANCEL press.
+
+ HbInputDialog::queryDouble(iTitle,this,SLOT(dialogClosed(int)),iText); iTitle is the prompt text.dialogClosed will be invoked when the user does the action.
+ Please refer the class documentation to know how to handle the slot.
+
+ \param promptText The prompt text which gives information on user input field.
+ \param receiver the instance where the slot is declared.
+ \param member the slot which has dialogClosed(HbAction*) or dialogClosed(int) signature.
+ \param defaultDouble the default value that should be presented to the user.
+ \param scene the scene parameter.
+ \param parent the parent widget for the dialog.
+
+ \sa queryText(), queryInteger(), queryIp()
+*/
+void HbInputDialog::queryDouble(const QString &promptText,
+ QObject *receiver,
+ const char *member,
+ double defaultDouble,
+ QGraphicsScene *scene,
+ QGraphicsItem *parent)
+{
+ HbInputDialog *dlg = new HbInputDialog(parent);
+ if(scene && !parent) {
+ scene->addItem(dlg);
+ }
+ dlg->setPromptText(promptText);
+ dlg->setInputMode(RealInput);
+ dlg->setValue(QString::number(defaultDouble));
+ dlg->open(receiver,member);
+}
+
+
+/*!
+ This is a static convenience function for creating an Input Dialog and to get an IP information from the the user. This API allows a slot to be passed as a param. This slot will
+ be invoked when the user does the action like OK press or CANCEL press.
+
+ HbInputDialog::queryIp(iTitle,this,SLOT(dialogClosed(int)),iText); iTitle is the prompt text.dialogClosed will be invoked when the user does the action.
+ Please refer the class documentation to know how to handle the slot.
+
+ \param promptText The prompt text which gives information on user input field.
+ \param receiver the instance where the slot is declared.
+ \param member the slot which has dialogClosed(HbAction*) or dialogClosed(int) signature.
+ \param defaultIp the default value that should be presented to the user.
+ \param scene the scene parameter.
+ \param parent the parent widget for the dialog.
+
+ \sa queryText(), queryInteger(), queryDouble()
+*/
+
+void HbInputDialog::queryIp(const QString &promptText,
+ QObject *receiver,
+ const char *member,
+ const QString &defaultIp,
+ QGraphicsScene *scene,
+ QGraphicsItem *parent)
+{
+ HbInputDialog *dlg = new HbInputDialog(parent);
+ if(scene && !parent) {
+ scene->addItem(dlg);
+ }
+ dlg->setPromptText(promptText);
+ dlg->setValue(defaultIp);
+ dlg->setInputMode(IpInput);
+ dlg->open(receiver,member);
+}
#include "moc_hbinputdialog.cpp"
--- a/src/hbwidgets/popups/hbinputdialog.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbinputdialog.h Wed Jun 23 18:33:25 2010 +0300
@@ -97,6 +97,31 @@
, QGraphicsScene *scene = 0
, QGraphicsItem *parent = 0);
+ static void queryText(const QString &promptText
+ ,QObject *receiver
+ ,const char *member
+ ,const QString &defaultText = QString()
+ ,QGraphicsScene *scene = 0
+ ,QGraphicsItem *parent = 0);
+ static void queryInt(const QString &promptText
+ ,QObject *receiver
+ ,const char *member
+ ,int defaultInt = 0
+ ,QGraphicsScene *scene = 0
+ ,QGraphicsItem *parent = 0);
+ static void queryDouble(const QString &promptText
+ ,QObject *receiver
+ ,const char *member
+ ,double defaultDouble = 0
+ , QGraphicsScene *scene = 0
+ , QGraphicsItem *parent = 0);
+ static void queryIp(const QString &promptText
+ ,QObject *receiver
+ ,const char *member
+ , const QString &defaultIp = QString()
+ , QGraphicsScene *scene = 0
+ , QGraphicsItem *parent = 0);
+
QGraphicsItem* primitive(HbStyle::Primitive primitive) const;
enum { Type = Hb::ItemType_InputDialog };
@@ -104,6 +129,12 @@
public slots:
void updatePrimitives();
+ void done(int code);
+
+signals:
+ void intValueSelected(int value);
+ void doubleValueSelected(double value);
+ void textValueSelected(QString value);
protected:
HbInputDialog(HbDialogPrivate &dd, QGraphicsItem *parent);
@@ -113,6 +144,7 @@
Q_DISABLE_COPY(HbInputDialog)
Q_DECLARE_PRIVATE_D(d_ptr, HbInputDialog)
Q_PRIVATE_SLOT(d_func(), void _q_notesOrientationChanged(Qt::Orientation))
+ Q_PRIVATE_SLOT(d_func(), void textChange(const QString))
};
#endif //HBINPUT_DIALOG_H
--- a/src/hbwidgets/popups/hbinputdialog_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbinputdialog_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -52,10 +52,14 @@
mEdit1 = new HbLineEdit(this);
HbStyle::setItemName(mEdit1, "text-1");
+ connect(mEdit1,SIGNAL(textChanged(const QString)),this,SLOT(emitTextChange(const QString)));
this->setProperty("additionalRowVisible",QVariant(false));
}
-
+void HbInputDialogContentWidget::emitTextChange(const QString & data)
+{
+ emit textChanged(data);
+}
void HbInputDialogContentWidget::setAdditionalRowVisible(bool visible)
{
mAdditionalRowVisible = visible;
@@ -116,10 +120,17 @@
//Populate the widget
mContentWidget = new HbInputDialogContentWidget(this);
+ q->connect(mContentWidget,SIGNAL(textChanged(const QString)),q,SLOT(textChange(const QString)));
q->setContentWidget(mContentWidget);
- q->addAction(new HbAction(q->tr("Ok"), q));
- q->addAction(new HbAction(q->tr("Cancel"), q));
+ action1=new HbAction(hbTrId("txt_common_button_ok"),q);
+ action1->setEnabled(false);
+ q->addAction(action1);
+ q->connect(action1,SIGNAL(triggered()),q,SLOT(accept()));
+
+ HbAction *action2=new HbAction(hbTrId("txt_common_button_cancel"),q);
+ q->addAction(action2);
+ q->connect(action2,SIGNAL(triggered()),q,SLOT(reject()));
q->setTimeout(HbPopup::NoTimeout);
q->setModal(true); // Dialog is modal
@@ -131,6 +142,22 @@
SLOT( _q_notesOrientationChanged(Qt::Orientation) ) );
}
+void HbInputDialogPrivate::textChange(const QString data)
+{
+ Q_UNUSED(data);
+ Q_Q(HbInputDialog);
+
+ if(q->actions().count() == 0) {
+ return;
+ }
+
+ if(mContentWidget->mEdit1->hasAcceptableInput()) {
+ q->actions().at(0)->setEnabled(true);
+ } else {
+ q->actions().at(0)->setEnabled(false);
+ }
+
+}
void HbInputDialogPrivate::setInputMode(HbLineEdit *pEdit, HbInputDialog::InputMode mode)
{
--- a/src/hbwidgets/popups/hbinputdialog_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbinputdialog_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -72,6 +72,9 @@
QString mPromptText;
QString mPromptAdditionalText;
QString mText;
+ HbAction *action1;
+public slots:
+ void textChange(const QString);
};
#endif //HBINPUTDIALOGPRIVATE_H
--- a/src/hbwidgets/popups/hbinputdialogcontent_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbinputdialogcontent_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -43,6 +43,11 @@
int type() const { return Type; }
void setAdditionalRowVisible(bool visible);
+public slots:
+ void emitTextChange(const QString &text);
+
+signals:
+ void textChanged(const QString &text);
public:
HbInputDialogPrivate* d;
--- a/src/hbwidgets/popups/hbmessagebox.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbmessagebox.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -42,6 +42,7 @@
class HbMessageBoxEditor : public HbLineEdit
{
+ Q_OBJECT
public:
HbMessageBoxEditor(QGraphicsItem* parent =0) : HbLineEdit(parent),mText()
{
@@ -50,8 +51,8 @@
HbScrollArea *scroll = scrollArea();
scroll->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAsNeeded);
clearContextMenuFlag(Hb::ShowTextContextMenuOnLongPress);
- clearContextMenuFlag(Hb::ShowTextContextMenuOnSelectionClicked);
- setBackgroundItem(0,0);
+ clearContextMenuFlag(Hb::ShowTextContextMenuOnSelectionClicked);
+ setBackgroundItem(0,0);
}
void focusInEvent(QFocusEvent * event)
@@ -109,15 +110,17 @@
HbDialogPrivate(),
mIcon(),
mMessageBoxContentWidget(0),
- mMessageBoxType(HbMessageBox::MessageTypeInformation),
+ mMessageBoxType(HbMessageBox::MessageTypeNone),
mIconVisible(true)
{
}
-void HbMessageBoxPrivate::_q_closeOnGesture()
+void HbMessageBoxPrivate::_q_buttonClicked()
{
+ Q_Q(HbMessageBox);
+ HbAction *action = static_cast<HbAction*>(q->sender());
+ q->done(mActionList.value(action));
}
-
/*
destructor
*/
@@ -131,101 +134,119 @@
void HbMessageBoxPrivate::init()
{
Q_Q(HbMessageBox);
-
+
+ mMessageBoxContentWidget = new HbMessageBoxContentWidget( this );
+ q->setContentWidget( mMessageBoxContentWidget );
+ q->setDismissPolicy(HbPopup::NoDismiss);
+ q->setTimeout(HbPopup::NoTimeout);
+ q->setStandardButtons(HbMessageBox::Ok);
+
switch(mMessageBoxType) {
+ case HbMessageBox::MessageTypeNone:
+ mMessageBoxContentWidget->mIconItem->hide();
+ mMessageBoxContentWidget->setProperty("hasIcon",false);
+ break;
case HbMessageBox::MessageTypeInformation:
case HbMessageBox::MessageTypeWarning:
- mMessageBoxContentWidget = new HbMessageBoxContentWidget( this );
- q->setContentWidget( mMessageBoxContentWidget );
- q->setDismissPolicy(HbPopup::NoDismiss);
- q->setTimeout(HbPopup::NoTimeout);
- q->addAction(new HbAction(q->tr("OK"),q));
+ case HbMessageBox::MessageTypeQuestion:
break;
+
+ }
- case HbMessageBox::MessageTypeQuestion:
- mMessageBoxContentWidget = new HbMessageBoxContentWidget( this );
- q->setContentWidget( mMessageBoxContentWidget );
- q->setDismissPolicy(HbPopup::NoDismiss);
- q->setTimeout(HbPopup::NoTimeout);
- q->addAction(new HbAction(q->tr("Yes"),q));
- q->addAction(new HbAction(q->tr("No"),q));
- break;
- }
}
/*!
@beta
\class HbMessageBox
- \brief The HbMessageBox class provides a modal dialog for informing the user or for asking the user a question and receiving an answer.
+ \brief HbMessageBox is a convenience modal dialog class. HbMessageBox can be used to launch a information,question,warning or any other
+ general messages.
- \image html information.PNG "An information MessageBox"
- \image html question.PNG "A question MessageBox"
- \image html warning.PNG "A warning MessageBox"
+ \image html information.PNG "An information MessageBox"
+ \image html question.PNG "A question MessageBox"
+ \image html warning.PNG "A warning MessageBox"
Using HbMessageBox, the following dialogs can be created:
- <b>Information:</b> a statement to the user to which dismissed after acknowledging the information ('OK').<br>
+ <b>Information:</b> a statement to the user to which they may respond by acknowledging the information ('Ok').<br>
<b>Question:</b> a query to the user requiring a response. User needs to select between two alternatives, the positive or negative (For example: 'Delete Mailbox?' 'Yes'/'No').<br>
<b>Warning:</b> a statement to the user to which they may respond by acknowledging the warning ('OK').<br>
+ <b>None:</b> Any general messages to which user responds.
- By default, Message box launches an information dialog which contains a description text and user actions visualized as command buttons.
+ By default, Message box launches a None dialog which can contain a text, an icon and action buttons
Default properties for the MessageBox (warning, information and question dialogs) are:
Description text: Text shown to the user as information. The amount of text rows is not limited, but after five rows the text starts scrolling.
- Icon: Default icons are available for each dialog type using the MessageBox template.
- Action buttons (one or two): one button for information and warning MessageBox, two buttons for question MessageBox.
+ Icon: Default icons are available for each dialog type using the MessageBox template. Changing the default icons is not recommended.
+ Action button : One action button ("Ok") for all the types.
- All the three dialogs(information, warning, question) supported by MessageBox are by default modal in nature, with
+ All the four dialogs(information, warning, question and none) supported by MessageBox are by default modal in nature, with
a dismiss policy of NoDismiss, timeout policy of NoTimeout, and with a BackgroundFade property on.
- The user must click the OK/Yes/No buttons to dismiss the Message Box.
Example code for launching MessageBox using static convenience functions:
\code
//Information MessageBox
- HbMessageBox::information(informationText, this, SLOT(onDialogClose(HbAction*)), headWidget, scene, parent);
+ HbMessageBox::information("The file is deleted",0,0,HbMessageBox::Ok);
//Warning MessageBox
- HbMessageBox::warning(warningText, this, SLOT(onDialogClose(HbAction*)), headWidget, scene, parent);
+ HbMessageBox::warning("This will change the name",0,0,HbMessageBox::Ok);
//Question MessageBox
- HbMessageBox::question(questionText, this, SLOT(onDialogClose(HbAction*)), primaryButtonText, secondaryButtonText, headWidget, scene, parent);
+ HbMessageBox::question("Do you want to delete the file ?", this, SLOT(onDialogClose(int)),HbMessageBox::Yes |HbMessageBox::No );
+ \endcode
+
+ Example code to show an information messagebox:
+ \code
+ HbMessageBox *box = new HbMessageBox("This is a general note.");
+ box->setAttribute(Qt::WA_DeleteOnClose);
+ box->open();
\endcode
Example code to show a question messagebox with a return value based action
\code
- HbMessageBox *box = new HbMessageBox(" Delete file IC0002 ? ",HbMessageBox::MessageTypeQuestion);
+ HbMessageBox *box = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
+ box->setText("Delete file IC0002 ? ");
box->setAttribute(Qt::WA_DeleteOnClose);
- box->open(this,SLOT(dialogClosed(HbAction*)));
-
+ box->setStandardButtons(HbMessageBox::Yes | HbMessageBox::No);
+ box->open(this,SLOT(onDialogClosed(int)));
+
//Slot implementation
- void dialogClosed(HbAction *action)
+ void MessageBoxView::onDialogClosed(int action)
{
- HbMessageBox *dlg = static_cast<HbMessageBox*>(sender());
- if(action == dlg->actions().at(0))
- {
- // Delete file
- }
- else
- {
- // Cancellation is done.Dont delete the file
- }
- }
+ if (action == HbMessageBox::Yes) {
+ //User Clicked Yes//
+ //Delete the file//
+ }
+ else if (action == HbMessageBox::No) {
+ //User Clicked No//
+ //do not delete the file//
+ }
+
+ }
+ \endcode
+
+ Example code to show a question messagebox using static API
+ \code
+ HbMessageBox::question("Delete file IC0002 ? ",this,SLOT(onDialogClosed(int)),HbMessageBox::Yes | HbMessageBox::No);
+ // Here the SLOT implementation is same as above
\endcode
+
\enum HbMessageBox::MessageBoxType
- \value \b MessageTypeInformation creates a modal information dialog, which by default will have one OK button
+ \value \b MessageTypeNone creates a modal dialog, which by default will have one OK button
for the user to dismiss the dialog.
\value \b MessageTypeWarning creates a simple modal dialog with a warning icon and a description text.
- Dialog by default will have one OK button, for the user to dismiss the dialog.
+ This Dialog by default will have one Ok button, for the user to dismiss the dialog.
- \value \b MessageTypeQuestion Shows a modal dialog with question icon and a description text. The user can either confirm or
- reject the dialog. By default dialog supports two buttons, using which user can dismiss the dialog.
+ \value \b MessageTypeWarning creates a simple modal dialog with a information icon and a description text.
+ This Dialog by default will have one Ok button, for the user to dismiss the dialog.
+ \value \b MessageTypeQuestion creates a simple modal dialog with a question icon and a description text.
+ This Dialog by default will have one Ok button, for the user to dismiss the dialog.
*/
/*!
@@ -362,6 +383,10 @@
initStyleOption(&option);
style()->updatePrimitive(d->mMessageBoxContentWidget->mIconItem, HbStyle::P_MessageBox_icon, &option);
}
+ if(iconVisible() ) {
+ d->mMessageBoxContentWidget->mIconItem->show();
+ d->mMessageBoxContentWidget->setProperty("hasIcon",true);
+ }
}
}
@@ -412,11 +437,123 @@
return d->mIconVisible;
}
+/*!
+ sets the buttons for the dialog. If the Application wants "Yes" and "No" buttons
+ can set it like setStandardButtons(HbMessageBox::Yes | HbMessageBox::No).
+ If only yes Button then setStandardButtons(HbMessageBox::Yes).
+
+ \param buttons the button set
+ \sa standardButtons()
+*/
+void HbMessageBox::setStandardButtons(HbMessageBox::StandardButtons buttons)
+{
+ Q_D(HbMessageBox);
+ if(d->mStandardButtons == buttons ) {
+ return;
+ }
+ clearActions();
+ d->mStandardButtons = buttons;
+ uint i = HbMessageBox::Ok;
+ int count =0;
+ while (i <= HbMessageBox::Reset) {
+ HbAction *action=0;
+ if (i & buttons) {
+ StandardButton button = HbMessageBox::StandardButton(i);
+ switch(button){
+ case Ok:
+ action = new HbAction(hbTrId("txt_common_button_ok"),this);
+ d->mActionList.insert(action,Ok);
+ break;
+ case Save:
+ action = new HbAction(hbTrId("txt_common_button_save"),this);
+ d->mActionList.insert(action,Save);
+ break;
+ case Open:
+ action = new HbAction(hbTrId("txt_common_button_open"),this);
+ d->mActionList.insert(action,Open);
+ break;
+ case Yes:
+ action = new HbAction(hbTrId("txt_common_button_yes"),this);
+ d->mActionList.insert(action,Yes);
+ break;
+ case No:
+ action = new HbAction(hbTrId("txt_common_button_no"),this);
+ d->mActionList.insert(action,No);
+ break;
+ case Retry:
+ action = new HbAction(hbTrId("txt_common_button_retry"),this);
+ d->mActionList.insert(action,Retry);
+ break;
+ case Continue:
+ action = new HbAction(hbTrId("txt_common_button_continue"),this);
+ d->mActionList.insert(action,Continue);
+ break;
+ case Close:
+ action = new HbAction(hbTrId("txt_common_button_close"),this);
+ d->mActionList.insert(action,Close);
+ break;
+ case Cancel:
+ action = new HbAction(hbTrId("txt_common_button_cancel"),this);
+ d->mActionList.insert(action,Cancel);
+ break;
+ case Help:
+ action = new HbAction(hbTrId("txt_common_button_help"),this);
+ d->mActionList.insert(action,Help);
+ break;
+ case Reset:
+ action = new HbAction(hbTrId("txt_common_button_reset"),this);
+ d->mActionList.insert(action,Reset);
+ break;
+ case Delete:
+ action = new HbAction(hbTrId("txt_common_button_delete"),this);
+ d->mActionList.insert(action,Delete);
+ break;
+ default :
+ break;
+
+ };
+
+ }
+ i = i << 1;
+
+ if(action) {
+ connect(action,SIGNAL(triggered()),this,SLOT(_q_buttonClicked()));
+ addAction(action);
+ count++;
+ }
+
+ }
+}
+/*!
+ Returns the standared button list
+
+ \sa setStandardButtons()
+
+*/
+HbMessageBox::StandardButtons HbMessageBox::standardButtons() const
+{
+ Q_D(const HbMessageBox);
+ return d->mStandardButtons;
+
+}
/*!
- This is a convenience function for showing a question dialog with \a questionText and buttons with specified \a primaryButtonText and
- \a secondaryButtonText.
+
+ \deprecated HbMessageBox::question(const QString&,QObject*,const char*,const QString&,const QString&,QGraphicsWidget*,QGraphicsScene*,QGraphicsItem*)
+ is deprecated.
+
+ Please use
+
+ question(const QString &questionText,
+ QObject *receiver,
+ const char *member,
+ HbMessageBox::StandardButtons buttons,
+ QGraphicsWidget *headWidget,
+ QGraphicsScene *scene,
+ QGraphicsItem *parent)
+
+ This is a convenience function for showing a question dialog with \a questionText with provided buttons.
\param questionText descriptive text for the messagebox
\param receiver Object which has the slot, which acts as a handler once the dialog closes.
\param member the slot, where the control will come, once the dialog is closed.
@@ -457,6 +594,18 @@
}
/*!
+ \deprecated HbMessageBox::information(const QString&,QObject*,const char*,QGraphicsWidget*,QGraphicsScene*,QGraphicsItem*)
+ is deprecated.
+
+ Please use
+
+ information(const QString &questionText,
+ QObject *receiver,
+ const char *member,
+ HbMessageBox::StandardButtons buttons,
+ QGraphicsWidget *headWidget,
+ QGraphicsScene *scene,
+ QGraphicsItem *parent)
This is a convenience function for showing an information dialog with a descriptive text and a default OK button.
\param informationText Descriptive text for the information dialog.
\param receiver Which has the slot, which acts as a handler once the dialog closes.
@@ -485,6 +634,19 @@
}
/*!
+ \deprecated HbMessageBox::warning(const QString&,QObject*,const char*,QGraphicsWidget*,QGraphicsScene*,QGraphicsItem*)
+ is deprecated.
+
+ Please use
+
+ warning(const QString &questionText,
+ QObject *receiver,
+ const char *member,
+ HbMessageBox::StandardButtons buttons,
+ QGraphicsWidget *headWidget,
+ QGraphicsScene *scene,
+ QGraphicsItem *parent)
+
This is a convenience function for showing a warning dialog with a descriptive text and an OK button.
\param warningText Descriptive text for the warning dialog.
\param receiver Which has the slot, which acts as a handler once the dialog closes.
@@ -511,6 +673,105 @@
messageBox->setAttribute(Qt::WA_DeleteOnClose);
messageBox->open(receiver,member);
}
+
+/*!
+ This is a convenience function for showing a question dialog with \a questionText and a default OK button.
+ \param questionText descriptive text for the messagebox
+ \param receiver Object which has the slot, which acts as a handler once the dialog closes.
+ \param member the slot, where the control will come, once the dialog is closed.The signature of member is void dialogClosed(int val);
+ \param buttons The action buttons of the dialog.
+ \param headWidget the heading widget, where the user can set a title, Null by default.
+ \param scene the scene for the MessageBox. Null by default.
+ \param parent the parent widget. Null by default.
+*/
+void HbMessageBox::question(const QString &questionText,
+ QObject *receiver,
+ const char *member,
+ HbMessageBox::StandardButtons buttons,
+ QGraphicsWidget *headingWidget,
+ QGraphicsScene *scene,
+ QGraphicsItem *parent)
+{
+ HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeQuestion, parent);
+ if (scene && !parent) {
+ scene->addItem(messageBox);
+ }
+ messageBox->setText(questionText);
+
+ messageBox->setStandardButtons(buttons);
+
+ if(headingWidget) {
+ messageBox->setHeadingWidget(headingWidget);
+ }
+ messageBox->setAttribute(Qt::WA_DeleteOnClose);
+ messageBox->open(receiver,member);
+}
+
+/*!
+ This is a convenience function for showing an information dialog with a descriptive text and a default OK button.
+ \param informationText Descriptive text for the information dialog.
+ \param receiver Which has the slot, which acts as a handler once the dialog closes.
+ \param member the slot, where the control will come, once the dialog is closed.The signature of member is void dialogClosed(int val);
+ \param buttons The action buttons of the dialog.
+ \param headWidget This can used by the user to set a title widget. Null by default.
+ \param scene the scene for the MessageBox, Null by default.
+ \param parent the parent widget. Null by default
+*/
+void HbMessageBox::information(const QString &informationText,
+ QObject *receiver,
+ const char *member,
+ HbMessageBox::StandardButtons buttons,
+ QGraphicsWidget *headingWidget,
+ QGraphicsScene *scene,
+ QGraphicsItem *parent)
+{
+ HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeInformation, parent);
+ if (scene && !parent) {
+ scene->addItem(messageBox);
+ }
+ messageBox->setText(informationText);
+
+ messageBox->setStandardButtons(buttons);
+
+ if(headingWidget) {
+ messageBox->setHeadingWidget(headingWidget);
+ }
+ messageBox->setAttribute(Qt::WA_DeleteOnClose);
+ messageBox->open(receiver,member);
+}
+
+/*!
+ This is a convenience function for showing a warning dialog with a descriptive text and an OK button.
+ \param warningText Descriptive text for the warning dialog.
+ \param receiver Which has the slot, which acts as a handler once the dialog closes.
+ \param member the slot, where the control will come, once the dialog is closed.The signature of member is void dialogClosed(int val);
+ \param buttons The action buttons of the dialog.
+ \param headWidget This can used by the user to set a title widget, Null by default.
+ \param scene the scene for the messagebox, Null by default.
+ \param parent the parent widget, Null by default.
+*/
+void HbMessageBox::warning(const QString &warningText,
+ QObject *receiver,
+ const char *member,
+ HbMessageBox::StandardButtons buttons,
+ QGraphicsWidget *headingWidget,
+ QGraphicsScene *scene,
+ QGraphicsItem *parent)
+{
+ HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeWarning, parent);
+ if (scene && !parent) {
+ scene->addItem(messageBox);
+ }
+ messageBox->setText(warningText);
+
+ messageBox->setStandardButtons(buttons);
+
+ if(headingWidget) {
+ messageBox->setHeadingWidget(headingWidget);
+ }
+ messageBox->setAttribute(Qt::WA_DeleteOnClose);
+ messageBox->open(receiver,member);
+}
#include "moc_hbmessagebox.cpp"
#include "hbmessagebox.moc"
--- a/src/hbwidgets/popups/hbmessagebox.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbmessagebox.h Wed Jun 23 18:33:25 2010 +0300
@@ -33,20 +33,45 @@
class HbMessageBoxPrivate;
class HbStyleOptionMessageBox;
+
class HB_WIDGETS_EXPORT HbMessageBox : public HbDialog
{
Q_OBJECT
+ Q_FLAGS(StandardButton StandardButtons)
+ Q_ENUMS(MessageBoxType StandardButton )
Q_PROPERTY( QString text READ text WRITE setText )
Q_PROPERTY( HbIcon icon READ icon WRITE setIcon )
Q_PROPERTY( bool iconVisible READ iconVisible WRITE setIconVisible )
+ Q_PROPERTY(StandardButtons standardButtons READ standardButtons WRITE setStandardButtons)
public:
enum MessageBoxType {
+ MessageTypeNone,
MessageTypeInformation,
MessageTypeQuestion,
MessageTypeWarning
};
- explicit HbMessageBox(MessageBoxType type=MessageTypeInformation,QGraphicsItem *parent = 0);
- explicit HbMessageBox(const QString &text,MessageBoxType type =MessageTypeInformation, QGraphicsItem *parent = 0);
+
+ enum StandardButton {
+ NoButton = 0x00000000,
+ Ok = 0x00000400,
+ Save = 0x00000800,
+ Open = 0x00001000,
+ Yes = 0x00002000,
+ Continue = 0x00004000,
+ Delete = 0x00008000,
+ No = 0x00010000,
+ Retry = 0x00020000,
+ Close = 0x00040000,
+ Cancel = 0x00080000,
+ Help = 0x00100000,
+ Apply = 0x00200000,
+ Reset = 0x00400000
+ };
+
+ Q_DECLARE_FLAGS(StandardButtons, StandardButton)
+
+ explicit HbMessageBox(MessageBoxType type=MessageTypeNone,QGraphicsItem *parent = 0);
+ explicit HbMessageBox(const QString &text,MessageBoxType type =MessageTypeNone, QGraphicsItem *parent = 0);
virtual ~HbMessageBox();
void setText(const QString &text);
@@ -58,6 +83,9 @@
void setIconVisible(bool visible);
bool iconVisible() const;
+ void setStandardButtons(StandardButtons buttons);
+ StandardButtons standardButtons() const;
+
QGraphicsItem *primitive(HbStyle::Primitive primitive) const;
enum { Type = Hb::ItemType_MessageBox };
int type() const { return Type; }
@@ -86,6 +114,30 @@
QGraphicsScene *scene = 0,
QGraphicsItem *parent = 0 );
+ static void question(const QString &questionText,
+ QObject *receiver ,
+ const char *member,
+ HbMessageBox::StandardButtons buttons,
+ QGraphicsWidget *headingWidget = 0,
+ QGraphicsScene *scene = 0,
+ QGraphicsItem *parent = 0);
+
+ static void information(const QString &informationText,
+ QObject *receiver,
+ const char *member,
+ HbMessageBox::StandardButtons buttons ,
+ QGraphicsWidget *headingWidget=0,
+ QGraphicsScene *scene = 0,
+ QGraphicsItem *parent = 0 );
+
+ static void warning(const QString &warningText,
+ QObject *receiver ,
+ const char *member,
+ HbMessageBox::StandardButtons buttons,
+ QGraphicsWidget *headingWidget = 0,
+ QGraphicsScene *scene = 0,
+ QGraphicsItem *parent = 0 );
+
public slots:
void updatePrimitives();
@@ -94,11 +146,12 @@
void initStyleOption(HbStyleOptionMessageBox *option) const;
private:
- Q_PRIVATE_SLOT(d_func(), void _q_closeOnGesture())
+ Q_PRIVATE_SLOT(d_func(), void _q_buttonClicked())
Q_DECLARE_PRIVATE_D(d_ptr, HbMessageBox)
Q_DISABLE_COPY(HbMessageBox)
};
+Q_DECLARE_OPERATORS_FOR_FLAGS(HbMessageBox::StandardButtons)
#endif // HB_MESSAGEBOX_H
--- a/src/hbwidgets/popups/hbmessagebox_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbmessagebox_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -28,7 +28,8 @@
#include <hbmessagebox.h>
#include "hbdialog_p.h"
-
+#include <hbaction.h>
+#include <QMap>
class HbMessageBoxContentWidget;
class HbMessageBoxPrivate : public HbDialogPrivate
@@ -44,8 +45,10 @@
HbMessageBoxContentWidget *mMessageBoxContentWidget;
HbMessageBox::MessageBoxType mMessageBoxType;
bool mIconVisible;
+ QMap <HbAction* , HbMessageBox::StandardButton> mActionList;
+ HbMessageBox::StandardButtons mStandardButtons;
public slots:
- void _q_closeOnGesture();
+ void _q_buttonClicked();
};
#endif // HB_MESSAGEBOX_P_H
--- a/src/hbwidgets/popups/hbnotificationdialogcontent.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbnotificationdialogcontent.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -36,7 +36,10 @@
void HbNotificationDialogContent::setIcon(const HbIcon &icon)
{
- if(!mIconItem) {
+ delete mIconItem;
+ mIconItem = 0;
+
+ if(!icon.isNull()) {
mIconItem = style()->createPrimitive(
HbStyle::P_NotificationDialog_icon, this);
Q_CHECK_PTR(mIconItem);
--- a/src/hbwidgets/popups/hbprogressdialog.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbprogressdialog.h Wed Jun 23 18:33:25 2010 +0300
@@ -48,7 +48,7 @@
enum ProgressDialogType { ProgressDialog, WaitDialog };
explicit HbProgressDialog(QGraphicsItem *parent = 0);
- HbProgressDialog(ProgressDialogType type, QGraphicsItem *parent = 0);
+ explicit HbProgressDialog(ProgressDialogType type, QGraphicsItem *parent = 0);
~HbProgressDialog();
int maximum() const;
--- a/src/hbwidgets/popups/hbselectiondialog_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbselectiondialog_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -35,27 +35,20 @@
#include <hbaction.h>
HbSelectionDialogContentWidget::HbSelectionDialogContentWidget(HbSelectionDialogPrivate *priv):HbWidget(),
- mListWidget(0),d(priv),chkMark(0),lbCounter(0)
+ mListView(0),d(priv),chkMark(0),lbCounter(0),markWidgetShown(false)
{
- mListWidget = new HbListWidget(this);
- HbStyle::setItemName(mListWidget, "list");
- QObject::connect(mListWidget,SIGNAL(activated(const QModelIndex&)),this,SLOT(_q_listItemSelected(QModelIndex)));
- QObject::connect(mListWidget,SIGNAL(activated(HbListWidgetItem *)),this,SLOT(_q_listWidgetItemSelected(HbListWidgetItem *)));
+
}
-
void HbSelectionDialogContentWidget::_q_listWidgetItemSelected(HbListWidgetItem *item)
{
- if(item){
- updateCounter();
- }
+ Q_UNUSED(item)
}
void HbSelectionDialogContentWidget::_q_listItemSelected(QModelIndex index)
{
Q_UNUSED(index)
- if(mListWidget->selectionMode()== HbAbstractItemView::SingleSelection ||
- mListWidget->selectionMode()== HbAbstractItemView::NoSelection){
- d->close();
+ if(mListView->selectionMode()== HbAbstractItemView::SingleSelection){
+ d->close();
}
updateCounter();
}
@@ -63,21 +56,28 @@
int HbSelectionDialogContentWidget::selectedItemCount() const
{
int selectedItems = 0;
- QItemSelectionModel* selectionModel = mListWidget->selectionModel();
- if(selectionModel){
- selectedItems = selectionModel->selectedRows().count();
- }
+ if(mListView){
+ QItemSelectionModel* selectionModel = mListView->selectionModel();
+ if(selectionModel){
+ selectedItems = selectionModel->selectedRows().count();
+ }
+ }
return selectedItems;
}
int HbSelectionDialogContentWidget::totalItemCount() const
{
- return mListWidget->count();
+ int nCount = 0;
+ if(mListView && mListView->model()){
+ nCount = mListView->model()->rowCount();
+ }
+ return nCount;
}
void HbSelectionDialogContentWidget::updateCounter()
{
- if(mListWidget->selectionMode()!= HbAbstractItemView::MultiSelection) return;
+ if(!mListView) return;
+ if(mListView->selectionMode()!= HbAbstractItemView::MultiSelection) return;
if(chkMark && lbCounter){
int totalItems = totalItemCount();
int selectedItems = selectedItemCount();
@@ -101,19 +101,17 @@
{
int totalItems = 0;
int selectedItems = 0;
- QAbstractItemModel* itemModel = mListWidget->model();
+ QAbstractItemModel* itemModel = mListView->model();
QModelIndex indexStart,indexEnd;
if(itemModel){
indexStart = itemModel->index(0,0);
indexEnd = itemModel->index(itemModel->rowCount()-1,0);
totalItems = itemModel->rowCount();
- Q_UNUSED( totalItems ); // todo: remove totalItems if not needed
}
- QItemSelectionModel* selectionModel = mListWidget->selectionModel();
+ QItemSelectionModel* selectionModel = mListView->selectionModel();
if(selectionModel){
selectedItems = selectionModel->selectedRows().count();
- Q_UNUSED( selectedItems ); // todo: remove selectedItems if not needed
if(value){ //Select All
selectionModel->select(QItemSelection(indexStart,indexEnd),QItemSelectionModel::Select);
}
@@ -126,7 +124,8 @@
void HbSelectionDialogContentWidget::showMarkWidget(bool bShow)
{
- if(bShow){
+ if(bShow){
+ if(!markWidgetShown){
chkMark = new HbCheckBox(this);
chkMark->setText("Mark All");
lbCounter = new HbTextItem(this);
@@ -135,6 +134,8 @@
setProperty("multiSelection",true);
connect(chkMark,SIGNAL(stateChanged ( int )),this,SLOT(_q_checkboxclicked(int)));
updateCounter();
+ markWidgetShown = true;
+ }
}
else{
delete chkMark;chkMark=0;
@@ -142,9 +143,51 @@
HbStyle::setItemName(chkMark,"");
HbStyle::setItemName(lbCounter,"");
setProperty("multiSelection",false);
+ markWidgetShown = false;
}
}
+void HbSelectionDialogContentWidget::connectSlots()
+{
+ QObject::connect(mListView,SIGNAL(activated(const QModelIndex&)),this,SLOT(_q_listItemSelected(QModelIndex)));
+}
+
+void HbSelectionDialogContentWidget::createListWidget()
+{
+ if(mListView){
+ HbListWidget* mView = qobject_cast<HbListWidget*>(mListView);
+ if(!mView){
+ delete mListView;
+ mListView = new HbListWidget(this);
+ HbStyle::setItemName(mListView, "list");
+ connectSlots();
+ }
+ }
+ else{
+ mListView = new HbListWidget(this);
+ HbStyle::setItemName(mListView, "list");
+ connectSlots();
+ }
+}
+
+void HbSelectionDialogContentWidget::createListView()
+{
+ if(mListView){
+ HbListView* mView = qobject_cast<HbListView*>(mListView);
+ if(!mView){
+ delete mListView;
+ mListView = new HbListView(this);
+ HbStyle::setItemName(mListView, "list");
+ connectSlots();
+ }
+ }
+ else{
+ mListView = new HbListView(this);
+ HbStyle::setItemName(mListView, "list");
+ connectSlots();
+ }
+}
+
HbSelectionDialogPrivate::HbSelectionDialogPrivate()
:HbDialogPrivate()
{
@@ -153,23 +196,7 @@
HbSelectionDialogPrivate::~HbSelectionDialogPrivate()
{
- if(!bOwnItems){
- Q_Q(HbSelectionDialog);
- HbSelectionDialogContentWidget* cWidget = qobject_cast<HbSelectionDialogContentWidget*>(q->contentWidget());
- if(cWidget){
- if(cWidget->mListWidget){
- int nRows = 0;
- QAbstractItemModel* itemModel = cWidget->mListWidget->model();
- if(itemModel){
- nRows = itemModel->rowCount();
- while(nRows){
- cWidget->mListWidget->takeItem(0);
- nRows = itemModel->rowCount();
- }
- }
- }
- }
- }
+ clearItems(bOwnItems);
}
void HbSelectionDialogPrivate::init()
@@ -178,14 +205,21 @@
Q_Q(HbSelectionDialog);
bOwnItems = false;
-
+ mSelectionMode = HbAbstractItemView::SingleSelection;
HbSelectionDialogContentWidget* contentWidget = new HbSelectionDialogContentWidget(this);
q->setContentWidget(contentWidget);
- q->addAction(new HbAction(q->tr("Ok"), q));
+ HbAction *action1=new HbAction(hbTrId("txt_common_button_ok"),q);
+ q->addAction(action1);
+ q->connect(action1,SIGNAL(triggered()),q,SLOT(accept()));
- q->addAction(new HbAction(q->tr("Cancel"), q));
- q->setTimeout(0);
+ HbAction *action2=new HbAction(hbTrId("txt_common_button_cancel"),q);
+ q->addAction(action2);
+ q->connect(action2,SIGNAL(triggered()),q,SLOT(reject()));
+
+
+ q->setDismissPolicy(HbPopup::NoDismiss);
+ q->setTimeout(HbPopup::NoTimeout);
q->setModal(true);
}
@@ -194,23 +228,56 @@
Q_Q(HbSelectionDialog);
mSelectionMode = mode;
- switch(mode)
+ switch(mSelectionMode)
{
case HbAbstractItemView::SingleSelection:
case HbAbstractItemView::MultiSelection:
- case HbAbstractItemView::NoSelection:
{
HbSelectionDialogContentWidget* cWidget = qobject_cast<HbSelectionDialogContentWidget*>(q->contentWidget());
- if(cWidget){
- cWidget->mListWidget->setSelectionMode(mode);
- }
- if(mode == HbAbstractItemView::MultiSelection)
- cWidget->showMarkWidget(true);
- else
- cWidget->showMarkWidget(false);
+ if(cWidget && cWidget->mListView){
+ cWidget->mListView->setSelectionMode(mSelectionMode);
+ if(mode == HbAbstractItemView::MultiSelection)
+ cWidget->showMarkWidget(true);
+ else
+ cWidget->showMarkWidget(false);
+ }
}
break;
- }
+ case HbAbstractItemView::NoSelection:
+ break;
+ }
+}
+
+
+void HbSelectionDialogPrivate::clearItems(bool keepItems)
+{
+ Q_Q(HbSelectionDialog);
+ HbSelectionDialogContentWidget* cWidget = qobject_cast<HbSelectionDialogContentWidget*>(q->contentWidget());
+ if(cWidget){
+ HbListWidget* mWidget = qobject_cast<HbListWidget*>(cWidget->mListView);
+ if(mWidget){
+ if(keepItems){
+ int nRows = 0;
+ QAbstractItemModel* itemModel = mWidget->model();
+ if(itemModel){
+ nRows = itemModel->rowCount();
+ while(nRows){
+ mWidget->takeItem(0);
+ nRows = itemModel->rowCount();
+ }
+ }
+ }
+ else{
+ mWidget->clear();
+ }
+ bOwnItems = false;
+ return;
+ }
+ HbListView* mView = qobject_cast<HbListView*>(cWidget->mListView);
+ if(mView){
+ cWidget->mListView->setModel(0);
+ }
+ }
}
QList<HbListWidgetItem*> HbSelectionDialogPrivate::widgetItems() const
@@ -220,7 +287,7 @@
QList<HbListWidgetItem*> rows;
HbSelectionDialogContentWidget* cWidget = qobject_cast<HbSelectionDialogContentWidget*>(q->contentWidget());
if(cWidget){
- HbListWidget* widget = qobject_cast<HbListWidget*>(cWidget->mListWidget);
+ HbListWidget* widget = qobject_cast<HbListWidget*>(cWidget->mListView);
if(widget){
int count = 0;
QAbstractItemModel* itemModel = widget->model();
@@ -242,16 +309,19 @@
if(!cWidget) return;
int nRows = 0;
-
- if(cWidget->mListWidget){
+ cWidget->createListWidget();
+ setSelectionMode(mSelectionMode);
+ if(cWidget->mListView){
int count = items.size();
+ if(count > 0) clearItems(bOwnItems); //Clear the existing items first
for (int i = 0; i < count; ++i) {
HbListWidgetItem* modelItem = new HbListWidgetItem();
QString str = items.at(i);
modelItem->setText(str);
- cWidget->mListWidget->addItem(modelItem);
+ HbListWidget* widget = (HbListWidget*)cWidget->mListView;
+ widget->addItem(modelItem);
- QAbstractItemModel* itemModel = cWidget->mListWidget->model();
+ QAbstractItemModel* itemModel = cWidget->mListView->model();
if(itemModel)
nRows = itemModel->rowCount();
}
@@ -284,7 +354,9 @@
HbSelectionDialogContentWidget* cWidget = qobject_cast<HbSelectionDialogContentWidget*>(q->contentWidget());
if(cWidget){
- cWidget->mListWidget->HbListView::setModel(model); //HbListView's implementation of setModel()
+ cWidget->createListView();
+ setSelectionMode(mSelectionMode);
+ cWidget->mListView->setModel(model);
}
}
@@ -294,12 +366,16 @@
HbSelectionDialogContentWidget* cWidget = qobject_cast<HbSelectionDialogContentWidget*>(q->contentWidget());
if(cWidget){
- if(cWidget->mListWidget){
+ cWidget->createListWidget();
+ setSelectionMode(mSelectionMode);
+ if(cWidget->mListView){
+ HbListWidget* widget = (HbListWidget*)cWidget->mListView;
int count = items.count();
+ if(count > 0) clearItems(bOwnItems); //Clear the existing items first
for(int i = 0; i < count; i++){
- cWidget->mListWidget->addItem(items[i]);
+ widget->addItem(items[i]);
}
- cWidget->mListWidget->setCurrentRow(currentIndex);
+ widget->setCurrentRow(currentIndex);
}
bOwnItems = transferOwnership;
@@ -311,8 +387,8 @@
Q_Q(const HbSelectionDialog);
HbSelectionDialogContentWidget* cWidget = qobject_cast<HbSelectionDialogContentWidget*>(q->contentWidget());
- if(cWidget){
- return cWidget->mListWidget->HbListView::model(); //HbListView's implementation of model()
+ if(cWidget && cWidget->mListView){
+ return cWidget->mListView->model();
}
return 0;
}
@@ -322,8 +398,8 @@
Q_Q(const HbSelectionDialog);
HbSelectionDialogContentWidget* cWidget = qobject_cast<HbSelectionDialogContentWidget*>(q->contentWidget());
- if(cWidget){
- return cWidget->mListWidget->selectionModel();
+ if(cWidget && cWidget->mListView){
+ return cWidget->mListView->selectionModel();
}
return 0;
}
@@ -334,15 +410,16 @@
QItemSelectionModel *model = 0;
model = selectionModel();
if(model){
+ model->clearSelection();
Q_FOREACH(QVariant i,items) {
model->select(model->model()->index(i.toInt(),0),
QItemSelectionModel::Select);
}
- }
- HbSelectionDialogContentWidget* cWidget = qobject_cast<HbSelectionDialogContentWidget*>(q->contentWidget());
- if(cWidget){
- cWidget->updateCounter();
- }
+ HbSelectionDialogContentWidget* cWidget = qobject_cast<HbSelectionDialogContentWidget*>(q->contentWidget());
+ if(cWidget){
+ cWidget->updateCounter();
+ }
+ }
}
QList<QVariant> HbSelectionDialogPrivate::selectedItems() const
@@ -377,5 +454,6 @@
void HbSelectionDialogPrivate::close()
{
Q_Q(HbSelectionDialog);
- q->close();
+ q->accept(); //emit the signal
}
+
--- a/src/hbwidgets/popups/hbselectiondialog_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbselectiondialog_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -37,7 +37,7 @@
class HbLabel;
class HbListWidgetItem;
-class HbListWidget;
+class HbListView;
class HbCheckBox;
class HbSelectionDialogPrivate : public HbDialogPrivate
@@ -64,6 +64,7 @@
QAbstractItemModel* model() const;
QItemSelectionModel* selectionModel() const;
QModelIndexList selectedModelIndexes() const;
+ void clearItems(bool keepItems);
public:
bool bOwnItems;
HbAbstractItemView::SelectionMode mSelectionMode;
@@ -78,7 +79,10 @@
int selectedItemCount() const;
int totalItemCount() const;
public:
- HbListWidget* mListWidget;
+ void createListWidget();
+ void createListView();
+ void connectSlots();
+ HbListView* mListView;
HbSelectionDialogPrivate* d;
HbSelectionDialogContentWidget(HbSelectionDialogPrivate *priv);
enum { Type = Hb::ItemType_SelectionDialogContentWidget };
@@ -91,6 +95,7 @@
private:
HbCheckBox* chkMark;
HbTextItem* lbCounter;
+ bool markWidgetShown;
private slots:
void _q_listWidgetItemSelected(HbListWidgetItem *item);
void _q_listItemSelected(QModelIndex index);
--- a/src/hbwidgets/popups/hbsliderpopup.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbsliderpopup.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -115,7 +115,6 @@
q->setDismissPolicy(HbDialog::TapOutside);
q->setBackgroundFaded(false);
q->setModal(false);
- mainLayout->setContentsMargins(0,0,0,0);
mSliderPopupContentWidget->slider->setFlags(QGraphicsItem::ItemIsFocusable);
}
@@ -290,6 +289,7 @@
}
/*!
+@beta
Constructs a sliderPopup with a \a orientation and \a parent.
The slider contains only track element by default.
@@ -325,6 +325,7 @@
}
/*!
+ @beta
Returns the slider text.
returns empty text if text element does not exist
@@ -338,6 +339,7 @@
}
/*!
+ @beta
Sets the slider \a text for text element
Slider will not take care of localization.
@@ -353,6 +355,7 @@
}
/*!
+ @beta
Sets whether the tooltip is visible .
\sa isToolTipVisible()
@@ -364,6 +367,7 @@
}
/*!
+ @beta
Returns \c true if tooltip is visible.
The default value is \c false.
@@ -377,6 +381,7 @@
}
/*!
+ @beta
sets the toolTip Alignment with respect to the thumb.
\sa toolTipAlignment()
@@ -388,6 +393,7 @@
}
/*!
+ @beta
returns the tooltip Alignment with respect to the thumb
\sa setToolTipAlignment()
@@ -400,6 +406,7 @@
/*!
+ @beta
Returns the major ticklabels of the slider popup.
\sa setMajorTickLabels()
@@ -411,6 +418,7 @@
}
/*!
+ @beta
Sets the major ticklabels of the slider popup.
Detailed description:
@@ -441,6 +449,7 @@
}
/*!
+ @beta
Returns the minor ticklabels of the slider popup.
\sa setMajorTickLabels()
@@ -452,6 +461,7 @@
}
/*!
+ @beta
Sets the minor ticklabels of the slider popup.
see setMajorTickLabels for detailed description
@@ -499,7 +509,7 @@
/*!
- @proto
+ @beta
Returns the map , which consist of element name as key and icon name as value
returns NULL map if none of the element has icon
@@ -514,7 +524,7 @@
/*!
- @proto
+ @beta
Sets the icons for elements
key of \a elements is element name QString) and value is icon
@@ -544,6 +554,7 @@
/*!
+ @beta
Returns \c true whether the slider track is inverted.
The default value is \c false.
@@ -561,6 +572,7 @@
}
/*!
+ @beta
Sets whether the slider track is \a inverted.
\sa invertedAppearance()
@@ -572,6 +584,7 @@
}
/*!
+ @beta
Returns the list of slider elements as QVariant ( can be type-casted to HbSlider::SliderElement ).
The slider contains only track element by default.
@@ -585,6 +598,7 @@
}
/*!
+ @beta
Sets the elements of the slider.
\note Duplicate elements will be ignored.
@@ -614,6 +628,7 @@
/*!
+ @beta
Returns the maximum value of the slider.
The default value is \c 100.
@@ -627,6 +642,7 @@
}
/*!
+ @beta
Sets the maximum value of the slider.
\note When setting this property, the minimum is adjusted if
@@ -644,6 +660,7 @@
}
/*!
+ @beta
Returns the minimum value of the slider.
The default value is \c 0.
@@ -657,6 +674,7 @@
}
/*!
+ @beta
Sets the minimum value of the slider.
\note When setting this property, the maximum is adjusted if
@@ -672,6 +690,7 @@
}
/*!
+ @beta
This function is provided for convenience.
Sets the slider's minimum to \a min and its maximum to \a max.
@@ -687,6 +706,7 @@
}
/*!
+ @beta
Returns the page step of the slider.
The default value is \c 10.
@@ -703,6 +723,7 @@
}
/*!
+ @beta
Sets the page \a step of the slider.
\sa pageStep()
@@ -714,6 +735,7 @@
}
/*!
+ @beta
Returns the single step of the slider.
The default value is \c 1.
@@ -731,6 +753,7 @@
}
/*!
+ @beta
Sets the single \a step of the slider.
\sa singleStep()
@@ -742,6 +765,7 @@
}
/*!
+ @beta
Returns the current slider position.
If tracking is enabled (the default), this is identical to the value.
@@ -755,6 +779,7 @@
}
/*!
+ @beta
Sets the current slider position.
\sa sliderPosition()
@@ -766,6 +791,7 @@
}
/*!
+ @beta
Returns \c true whether slider tracking is enabled.
The default value is \c true.
@@ -784,6 +810,7 @@
}
/*!
+ @beta
Sets whether the slider tracking is enabled.
\sa hasTracking()
@@ -795,6 +822,7 @@
}
/*!
+ @beta
Returns the current value of the slider.
The default value is \c 0.
@@ -806,6 +834,7 @@
}
/*!
+ @beta
Sets the current value of the slider.
The slider forces the value to be within the legal range: \b
@@ -822,6 +851,7 @@
}
/*!
+ @beta
Returns the tickmark position of the slider.
The default value is \c HbSlider::NoTicks.
@@ -835,6 +865,7 @@
}
/*!
+ @beta
Sets the tickmark position of the slider.
\sa tickPosition()
@@ -846,6 +877,7 @@
}
/*!
+ @beta
Returns the SnappingMode of the slider.
The default value is \c HbSlider::MinorTickSnapping.
@@ -860,6 +892,7 @@
}
/*!
+ @beta
Sets the snappingMode of the slider.
\sa snappingMode()
@@ -871,6 +904,7 @@
}
/*!
+ @beta
Sets the \a orientation of the sliderpopup.
\sa orientation()
@@ -882,6 +916,7 @@
}
/*!
+ @beta
Returns the orientation of the sliderpopup.
The default value is \c Qt::Vertical.
@@ -895,6 +930,7 @@
}
/*!
+ @beta
Returns the interval between major tickmarks.
The default value is \c 0.
@@ -908,6 +944,7 @@
}
/*!
+ @beta
Sets the interval between major tickmarks.
Special values:
@@ -923,6 +960,7 @@
}
/*!
+ @beta
Returns the interval between minor tickmarks.
The default value is \c 0.
@@ -936,6 +974,7 @@
}
/*!
+ @beta
Sets the interval between minor tickmarks.
Special values:
@@ -961,7 +1000,7 @@
}
/*!
- @proto
+ @beta
Sets whether to display progress track or not
\default value is true
@@ -977,7 +1016,7 @@
}
/*!
- @proto
+ @beta
returns whether progress track is visible or not
\sa setTrackFilled( )
--- a/src/hbwidgets/popups/hbvolumesliderpopup.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbvolumesliderpopup.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -52,7 +52,7 @@
\note order of element can not be changed
- Orientation of HbVolumeSliderPopup can not be changed. If orientation change is need,
+ Orientation of HbVolumeSliderPopup can not be changed. If orientation change is needed,
then first create HbSliderPopup and set needed elements.
It is positioned at Right side of the screen in non mirrored layout.
@@ -65,7 +65,7 @@
\endcode
Note:: position and size of these elements cant be change.
- use HbVolumeSlider instead if you want to change position or size
+ use HbSlider and set the elements instead if you want to change position or size
Note:: if setElement is called on this slider , application is reponsible for
inconsitent UI.
@@ -199,7 +199,8 @@
*/
void HbVolumeSliderPopup::keyReleaseEvent(QKeyEvent *keyevent)
{
- switch (keyevent->key()) {
+ Q_D( HbVolumeSliderPopup);
+ switch (keyevent->key()) {
//hide popup for following key press event
case Qt::Key_Enter:
case Qt::Key_Return:
@@ -212,6 +213,11 @@
hide();
break;
case Qt::Key_Left:
+ if (d->keyNavigation()) {
+ hide();
+ keyevent->accept();
+ break;
+ }
case Qt::Key_Backspace:
case Qt::Key_Back:
hide();
@@ -225,13 +231,21 @@
}
/*!
+ \reimp
Reimplemented from QGraphicsItem::keyPressEvent().
*/
void HbVolumeSliderPopup::keyPressEvent(QKeyEvent *keyevent)
{
- switch (keyevent->key()) {
+ Q_D( HbVolumeSliderPopup);
+ switch (keyevent->key()) {
case Qt::Key_Left:
case Qt::Key_Right:
+ if( d->keyNavigation() ) {
+ hide();
+ keyevent->accept();
+ break;
+ }
+
case Qt::Key_Back:
case Qt::Key_Backspace:
hide();
--- a/src/hbwidgets/popups/hbzoomsliderpopup.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/popups/hbzoomsliderpopup.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -51,9 +51,11 @@
The elements can be changed by calling HbSlider::setElements() later at any time.
- Orientation of HbZoomSliderPopup can not be changed. If orientation change is need,
+ Orientation of HbZoomSliderPopup can not be changed. If orientation change is needed,
then first create HbSlider and set needed elements.
+ It is positioned at Right side of the screen in non mirrored layout.
+
Example usage:
\code
HbZoomSliderPopup *slider = new HbZoomSliderPopup();
@@ -62,7 +64,7 @@
Note:: position and size of these elements cant be change.
- use HbZoomSlider instead if you want to change position or size
+ use HbSlider and set the appropriate elements instead if you want to change position or size
Note:: if setElement is called on this slider , application is reponsible for
inconsitent UI.
@@ -193,11 +195,13 @@
/*!
+ \reimp
Reimplemented from QGraphicsItem::keyReleaseEvent().
*/
void HbZoomSliderPopup::keyReleaseEvent(QKeyEvent *keyevent)
{
- switch (keyevent->key()) {
+ Q_D( HbZoomSliderPopup);
+ switch (keyevent->key()) {
case Qt::Key_Enter:
case Qt::Key_Return:
case Qt::Key_Select:
@@ -209,6 +213,11 @@
hide();
break;
case Qt::Key_Left:
+ if ( d->keyNavigation() ) {
+ hide();
+ keyevent->accept();
+ break;
+ }
case Qt::Key_Backspace:
case Qt::Key_Back:
hide();
@@ -221,13 +230,21 @@
}
/*!
+ \reimp
Reimplemented from QGraphicsItem::keyPressEvent().
*/
void HbZoomSliderPopup::keyPressEvent(QKeyEvent *keyevent)
{
- switch (keyevent->key()) {
+ Q_D( HbZoomSliderPopup );
+ switch (keyevent->key()) {
case Qt::Key_Left:
case Qt::Key_Right:
+ if ( d->keyNavigation() )
+ {
+ hide();
+ keyevent->accept();
+ break;
+ }
case Qt::Key_Back:
case Qt::Key_Backspace:
hide();
--- a/src/hbwidgets/sliders/hbabstractslidercontrol.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbabstractslidercontrol.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -100,7 +100,7 @@
/*!
\var HbAbstractSliderControl::SliderSingleStepSub
- Substract a single step.
+ Subtract a single step.
*/
/*!
@@ -112,7 +112,7 @@
/*!
\var HbAbstractSliderControl::SliderPageStepSub
- Substract a page step.
+ Subtract a page step.
*/
/*!
@@ -858,7 +858,7 @@
// It seems we need to use invertedAppearance for Left and right, otherwise, things look weird.
case Qt::Key_Left:
- if(orientation()==Qt::Horizontal){
+ if( d->keyNavigation() && orientation()==Qt::Horizontal){
if (layoutDirection() == Qt::RightToLeft)
action = d->invertedAppearance ? SliderSingleStepSub : SliderSingleStepAdd;
else
@@ -871,7 +871,7 @@
}
break;
case Qt::Key_Right:
- if(orientation()==Qt::Horizontal){
+ if( d->keyNavigation() && orientation()==Qt::Horizontal){
if (layoutDirection() == Qt::RightToLeft)
action = d->invertedAppearance ? SliderSingleStepAdd : SliderSingleStepSub;
else
@@ -883,7 +883,7 @@
}
break;
case Qt::Key_Up:
- if(orientation()==Qt::Vertical){
+ if( d->keyNavigation() && orientation()==Qt::Vertical){
action = d->invertedControls ? SliderSingleStepSub : SliderSingleStepAdd;
event->accept();
}
@@ -892,7 +892,7 @@
}
break;
case Qt::Key_Down:
- if(orientation()==Qt::Vertical){
+ if( d->keyNavigation() && orientation()==Qt::Vertical){
action = d->invertedControls ? SliderSingleStepAdd : SliderSingleStepSub;
event->accept();
}
--- a/src/hbwidgets/sliders/hbprogressbar.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbprogressbar.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -22,10 +22,9 @@
** Nokia at developer.feedback@nokia.com.
**
****************************************************************************/
-
+#include "hbprogressbar_p.h"
#include <hbprogressbar.h>
#include <hbstyleoptionprogressbar_p.h>
-#include "hbprogressbar_p.h"
#include "hbglobal_p.h"
#ifdef HB_EFFECTS
@@ -235,14 +234,23 @@
mProgressValue = mMaximum;
}
+ // update primitve optimization, update only track primitive
+ // incase of normal as well as in infinite progressbar
+ HbStyleOptionProgressBar progressBarOption;
+ q->initStyleOption(&progressBarOption);
+
if( (mMinimum == 0) && (mMaximum == 0) ) {
mWaitTrack->setVisible(true);
mTrack->setVisible(false);
+
+ q->style()->updatePrimitive(mWaitTrack, HbStyle::P_ProgressBar_waittrack, &progressBarOption);
} else {
mWaitTrack->setVisible(false);
mTrack->setVisible(true);
+
+ q->style()->updatePrimitive(mTrack, HbStyle::P_ProgressBar_track, &progressBarOption);
}
- q->updatePrimitives();
+ //q->updatePrimitives();
}
/*!
@@ -317,7 +325,7 @@
/*!
@beta
- Return the inverted appearence property.
+ Return the inverted appearance property.
\sa setInvertedAppearance()
*/
bool HbProgressBar::invertedAppearance() const
@@ -501,7 +509,7 @@
/*!
@beta
Set the MinMaxtext visibility. true for showing text,false for hiding the text.
- The default is false. Min Max text doesnt have a background and would have a transparent background.
+ The default is false. Min Max text does not have a background and would have a transparent background.
\param visible true or false.
\sa isMinMaxTextVisible().
*/
@@ -515,6 +523,15 @@
if(!d->mMinTextItem && !d->mMaxTextItem){
d->createTextPrimitives();
}
+
+ // update primitve optimization, update only text primitives
+ // incase of with and without min-max text
+ HbStyleOptionProgressBar progressBarOption;
+ initStyleOption(&progressBarOption);
+
+ style()->updatePrimitive(d->mMinTextItem,HbStyle::P_ProgressBar_mintext,&progressBarOption);
+ style()->updatePrimitive(d->mMaxTextItem,HbStyle::P_ProgressBar_maxtext,&progressBarOption);
+
d->mMinTextItem->show();
d->mMaxTextItem->show();
} else {
@@ -524,7 +541,7 @@
}
}
repolish();
- updatePrimitives();
+ //updatePrimitives();
}
}
@@ -552,7 +569,7 @@
AlignTop is equivalent to Left
AlignBottom is equivalent to Right
- \param alignment alignement for the min max text
+ \param alignment alignment for the min max text
\sa isMinMaxTextVisible().
*/
@@ -567,7 +584,8 @@
if (d->mMinMaxTextVisible) {
repolish();
}
- updatePrimitives();
+ // no need for primitve updation, only layout change is required
+ //updatePrimitives();
}
}
@@ -684,9 +702,7 @@
option->inverted = d->mInvertedAppearance;
option->stopWaitAnimation = false;
option->minMaxTextAlignment = d->mMinMaxTextAlignment;
- QRect rect((int)d->mFrame->boundingRect().x(),(int)d->mFrame->boundingRect().y(),(int)d->mFrame->boundingRect().width(),
- (int)d->mFrame->boundingRect().height());
- option->rect = rect;
+
}
/*!
--- a/src/hbwidgets/sliders/hbprogressslider.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbprogressslider.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -23,9 +23,8 @@
**
****************************************************************************/
+#include "hbprogressslider_p.h"
#include <hbprogressslider.h>
-#include "hbprogressslider_p.h"
-
#include <hbstyleoptionprogressslider_p.h>
#include <hbtooltip.h>
#include <hbwidgetfeedback.h>
@@ -45,7 +44,7 @@
mDownState=false;
handle = 0;
mSliderValue = 0;
- mHandlePath = QString();
+ mHandlePath.clear();
}
HbProgressSliderPrivate::~HbProgressSliderPrivate()
@@ -86,17 +85,10 @@
void HbProgressSliderPrivate::setEnableFlag(bool flag)
{
Q_Q(HbProgressSlider);
-
+ Q_UNUSED(flag);
HbStyleOptionProgressSlider option;
q->initStyleOption(&option);
-
- if(!flag) {
- q->setProgressValue(q->minimum());
- q->setSliderValue(q->minimum());
- }
- if (mFrame) {
- q->style()->updatePrimitive(mFrame, HbStyle::P_ProgressSlider_frame, &option);
- }
+ q->updatePrimitives();
}
void HbProgressSliderPrivate::init()
@@ -203,9 +195,33 @@
void HbProgressSliderPrivate::setRange(int minimum, int maximum)
{
- Q_Q( HbProgressSlider );
- HbProgressBarPrivate::setRange(minimum, maximum);
- q->setSliderValue(mSliderValue);
+ Q_Q(HbProgressSlider);
+ if( minimum > maximum ){
+ maximum = minimum ;
+ }
+ mMinimum = minimum;
+ mMaximum = maximum;
+
+ if ( mProgressValue < mMinimum){
+ mProgressValue = mMinimum;
+ }
+
+ if(mProgressValue > mMaximum){
+ mProgressValue = mMaximum;
+ }
+
+ HbStyleOptionProgressSlider progressSliderOption;
+ q->initStyleOption(&progressSliderOption);
+
+ if (mSliderGraphicItem) {
+ q->style()->updatePrimitive(mSliderGraphicItem, HbStyle::P_ProgressSlider_slidertrack, &progressSliderOption);
+ }
+
+ if (mTrack) {
+ q->style()->updatePrimitive(mTrack, HbStyle::P_ProgressSlider_track, &progressSliderOption);
+ }
+
+ q->setSliderValue(mSliderValue);
}
/*!
@@ -395,7 +411,7 @@
/*!
@beta
- Sets the inverted appearence of the slider.
+ Sets the inverted appearance of the slider.
If inverted the slider increases from right to left.
\param inverted true or false
@@ -418,6 +434,14 @@
void HbProgressSlider::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(HbProgressSlider);
+
+ QRectF rect = d->mTouchAreaItem->sceneBoundingRect( );
+ // return if point is outside track touch area
+ if ( !rect.contains( event->scenePos( ) ) ) {
+ event->ignore( );
+ return;
+ }
+
if(flags().testFlag(ItemIsFocusable)) {
d->mDownState = true;
HbStyleOptionProgressSlider option;
@@ -425,14 +449,6 @@
if (d->mFrame) {
style()->updatePrimitive(d->mFrame, HbStyle::P_ProgressSlider_frame, &option);
}
- qreal temp = event->scenePos().x();
- if((d->mMinMaxTextVisible) && (d->mMinMaxTextAlignment== Qt::AlignCenter)) {
- temp -= d->mMinTextItem->boundingRect().width();
- }
- if( (temp > d->handle->pos().x()) && (temp < (d->handle->boundingRect().width()+d->handle->pos().x())) ) {
- event->ignore();
- return;
- }
HbWidgetFeedback::triggered(this, Hb::InstantPressed);
d->handle->handleTrackPress(event);
@@ -444,12 +460,14 @@
event->ignore();
}
}
+
/*!
\reimp
*/
void HbProgressSlider::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(HbProgressSlider);
+
if(flags().testFlag(ItemIsFocusable)) {
d->mDownState = false;
--- a/src/hbwidgets/sliders/hbprogresssliderhandle_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbprogresssliderhandle_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -131,18 +131,21 @@
mMousePressPos = event->scenePos();
mItemPosAtPress = pos();
- if(q->textVisible()) {
+
+ HbWidgetFeedback::triggered(q->parentGraphicsWidget(), Hb::InstantPressed, Hb::ModifierSliderHandle);
+
+ event->accept();
+ q->emitSliderPressed();
+
+ if(q->textVisible()) {
HbToolTip::showText(q->toolTipText(),this, QRectF(mItemPosAtPress,QSize(0,0)),q->textAlignment());
}
else {
HbExtendedLocale locale;
- HbToolTip::showText(locale.toString(q->progressValue()),this, QRectF(mItemCurPos,QSize(0,0)),q->textAlignment());
+ HbProgressSlider *slider = (HbProgressSlider*)q->parentGraphicsWidget();
+ HbToolTip::showText(locale.toString(slider->sliderValue()),this, QRectF(mItemCurPos,QSize(0,0)),q->textAlignment());
}
- HbWidgetFeedback::triggered(q->parentGraphicsWidget(), Hb::InstantPressed, Hb::ModifierSliderHandle);
-
- event->accept();
- q->emitSliderPressed();
}
void HbProgressSliderHandle::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
@@ -217,16 +220,18 @@
#endif
}
+ event->accept();
+
+ q->emitSliderMoved(pointToValue(mItemCurPos));
+
if(q->textVisible()) {
HbToolTip::showText(q->toolTipText(),this, QRectF(mItemCurPos,QSize(0,0)),q->textAlignment());
}
else {
HbExtendedLocale locale;
- HbToolTip::showText(locale.toString(q->progressValue()),this, QRectF(mItemCurPos,QSize(0,0)),q->textAlignment());
+ HbProgressSlider *slider = (HbProgressSlider*)q->parentGraphicsWidget();
+ HbToolTip::showText(locale.toString(slider->sliderValue()),this, QRectF(mItemCurPos,QSize(0,0)),q->textAlignment());
}
- event->accept();
-
- q->emitSliderMoved(pointToValue(mItemCurPos));
}
int HbProgressSliderHandle::pointToValue(QPointF point) const
--- a/src/hbwidgets/sliders/hbratingslider.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbratingslider.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -23,7 +23,6 @@
**
****************************************************************************/
-
#include <hbratingslider.h>
#include "hbratingslider_p.h"
#include <hbtooltip.h>
@@ -444,6 +443,7 @@
}
d->mMousePressed = true;
event->accept();
+ updatePrimitives();
}
@@ -477,7 +477,7 @@
int rating=0;
if(rect.contains(xVal,0 )) {
rating = d->calculateProgressValue(xVal);
- if(toolTip() != QString()) {
+ if(!toolTip().isNull()) {
HbToolTip::showText(toolTip(),this);
}
setCurrentRating(rating);
@@ -519,7 +519,7 @@
int rating=0;
if(rect.contains(xVal,0 )) {
rating = d->calculateProgressValue(xVal);
- if(toolTip() != QString()) {
+ if(!toolTip().isNull()) {
HbToolTip::showText(toolTip(),this);
}
setCurrentRating(rating);
@@ -529,6 +529,7 @@
event->accept();
d->mMousePressed = false;
}
+ updatePrimitives();
}
}
@@ -563,9 +564,18 @@
event->ignore();
return;
}
-
- d->mMousePressed = true;
- event->accept();
+ QRectF rect = d->mTouchArea->boundingRect();
+ if(rect.contains(xVal,0 )) {
+ d->mMousePressed = true;
+ updatePrimitives();
+ rating = d->calculateProgressValue(xVal);
+ setCurrentRating(rating);
+ event->accept();
+ }
+ else {
+ event->ignore();
+ }
+
}
break;
@@ -592,7 +602,7 @@
rating = d->calculateProgressValue(xVal);
- if(toolTip() != QString()) {
+ if(!toolTip().isNull()) {
HbToolTip::showText(toolTip(),this);
}
setCurrentRating(rating);
@@ -601,7 +611,24 @@
}
event->accept();
d->mMousePressed = false;
+ updatePrimitives();
+ }
+ else {
+
+ d->mMousePressed = false;
+ updatePrimitives();
+
+ if(xVal <rect.x() ) {
+
+ setCurrentRating(0);
+ emit ratingDone (d->mCurrentValue);
}
+
+ }
+
+
+
+
}
break;
default: break;
@@ -630,7 +657,7 @@
rating = d->calculateProgressValue(xVal);
- if(toolTip() != QString()) {
+ if(!toolTip().isNull()) {
HbToolTip::showText(toolTip(),this);
}
setCurrentRating(rating);
@@ -646,34 +673,34 @@
{
qreal xVal = mapFromScene(event->mapToGraphicsScene( pan->startPos()+pan->offset())).x();
QRectF rect = d->mTouchArea->boundingRect();
+ d->mMousePressed = false;
+ updatePrimitives();
int rating=0;
if(rect.contains(xVal,0 )) {
if(d->mReadOnly) {
event->ignore();
return;
}
- }
+ }
- if(!d->mMousePressed) {
- return;
- }
+ if(xVal <0) {
+ setCurrentRating(0);
+ emit ratingDone (d->mCurrentValue);
+ return;
+ }
- if(xVal <0) {
- setCurrentRating(0);
- emit ratingDone (d->mCurrentValue);
- return;
- }
-
- rating = d->calculateProgressValue(xVal);
- setCurrentRating(rating);
- if(d->mCurrentValue) {
- emit ratingDone (d->mCurrentValue);
- }
- d->mMousePressed = false;
- event->accept();
- }
- default:
- break;
+ rating = d->calculateProgressValue(xVal);
+ setCurrentRating(rating);
+ if(d->mCurrentValue) {
+ emit ratingDone (d->mCurrentValue);
+ }
+ event->accept();
+
+ }
+
+
+ default:
+ break;
}
}
}
@@ -703,6 +730,8 @@
option->unRatedGraphicsName = d->mUnratedIconName;
option->ratedGraphicsName = d->mRatedIconName;
option->progressValue = d->mCurrentValue;
+ option->disableState = !isEnabled();
+ option->pressedState = d->mMousePressed;
}
}
@@ -740,6 +769,9 @@
case QEvent::LayoutDirectionChange:
updatePrimitives();
break;
+ case QEvent::EnabledChange:
+ updatePrimitives();
+ break;
default:
break;
}
--- a/src/hbwidgets/sliders/hbslider.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbslider.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -39,7 +39,9 @@
#include <QGraphicsSceneEvent>
#include <QGraphicsScene>
#include <QDebug>
-
+#ifdef HB_GESTURE_FW
+#include <hbtapgesture.h>
+#endif
#ifdef HB_EFFECTS
#include "hbeffect.h"
#include "hbeffectinternal_p.h"
@@ -89,7 +91,7 @@
\image html verticalslider.png A Custom vertical slider with all elements.
- order in which HbSlider::SliderElement are inserted into QList doesnt matter.
+ order in which HbSlider::SliderElement are inserted into QList does not matter.
HbSlider provides methods for controlling tickmarks. You can use
setTickPosition( ) to indicate where you want the tickmarks to be,
@@ -196,7 +198,7 @@
/*!
\var HbSlider::TrackElement
- The slider track that consists of a groove, ticks and handle.
+ The slider track that consists of a groove and handle.
*/
/*!
@@ -208,7 +210,7 @@
/*!
\var HbSlider::IconElement
- An icon element associated to the slider.
+ An icon element associated to the slider.For example mute icon of volume slider
*/
/*!
@@ -276,13 +278,16 @@
HbStyle::setItemName( q,"this" );
q->setFlags( QGraphicsItem::ItemIsFocusable );
q->setProperty("TickLabelPresent",false);
+#ifdef HB_GESTURE_FW
+ q->grabGesture(Qt::TapGesture);
+#endif
}
void HbSliderPrivate::setElements( QList<HbSlider::SliderElement> elementList)
{
Q_Q( HbSlider);
bool oldElementRemoved = false;
- foreach(HbSlider::SliderElement element,elements){
+ foreach(const HbSlider::SliderElement &element,elements){
if(!elementList.contains(element)&& elementItemMap.contains(element)) {
delete elementItemMap[element].item;
delete elementItemMap[element].touchItem;
@@ -305,6 +310,7 @@
}
/*!
+ \internal
This api creates widget for given element
*/
void HbSliderPrivate::elementWidget( HbSlider::SliderElement element )
@@ -402,6 +408,7 @@
/*!
+ \internal
update element will first delete element which are not required
and then create new element
*/
@@ -415,6 +422,7 @@
}
/*!
+ \internal
This Api will start incrementing slider value by step size
till the time stopReapetAction( ) is not being called or slider
value becomes maximum( )
@@ -432,6 +440,7 @@
}
/*!
+ \internal
This Api will start decrementing slider value by step size
till the time stopReapetAction( ) is not being called or slider
value becomes minimum( )
@@ -447,6 +456,7 @@
}
/*!
+ \internal
stops the reapeating action
reapeat action can be increase slider value by step or decrease slider value by step
*/
@@ -456,27 +466,10 @@
}
-void HbSliderPrivate::setTickLabelPresentProperty( )
-{
- Q_Q ( HbSlider );
- if (q->majorTickInterval( ) > 0 && q->tickPosition( ) !=Hb::NoSliderTicks &&
- (q->majorTickLabels().length() > 0 ||
- (q->minorTickInterval() > 0 && q->minorTickLabels( ).length() > 0))) {
- if(!q->property("TickLabelPresent").toBool()){
- q->setProperty("TickLabelPresent",true);
- q->repolish( );
- }
- } else {
- if( q->property("TickLabelPresent").toBool()){
- q->setProperty("TickLabelPresent",false);
- q->repolish( );
- }
- }
-
-}
-
-
-
+/*!
+ \internal
+ creates either left tickmarks or right tickmarks or both based on tickposition of slider
+ */
void HbSliderPrivate::createTickMarks( )
{
@@ -536,7 +529,11 @@
}
}
-
+/*!
+ \internal
+ creates either left tickmarks or right tickmarksLabel or both based on tickposition of slider
+
+ */
void HbSliderPrivate::createTickLabels( )
{
Q_Q(HbSlider);
@@ -586,7 +583,10 @@
}
}
-
+/*!
+ \internal
+ changes the orientation of slider tick marks or label based on slider's orientation
+ */
void HbSliderPrivate::setTickOrientation()
{
Q_Q(HbSlider);
@@ -637,9 +637,11 @@
void HbSliderPrivate::updateTickMarks( )
{
if (tickmarksLeft) {
+ tickmarksLeft->createTicks();
tickmarksLeft->updateTicks();
}
if (tickmarksRight) {
+ tickmarksRight->createTicks();
tickmarksRight->updateTicks();
}
}
@@ -662,58 +664,45 @@
/*!
\internal
- Updates tick and Label.
+ deletes slidertickmarks.
*/
void HbSliderPrivate::deleteTickMarks( )
{
- Q_Q ( HbSlider );
- bool deleted = false;
if (tickmarksLeft) {
+ HbStyle::setItemName(tickmarksLeft,QString());
delete tickmarksLeft;
tickmarksLeft = 0;
- deleted = true;
}
if (tickmarksRight) {
+ HbStyle::setItemName(tickmarksRight,QString());
delete tickmarksRight;
tickmarksRight = 0;
- deleted = true;
}
- if ( deleted ) {
- q->repolish( );
- }
-
}
/*!
\internal
- Updates tick and Label.
+ deletes ticklabels.
*/
void HbSliderPrivate::deleteTickLabels( )
{
-
- Q_Q(HbSlider);
- bool deleted = false;
if (tickmarkslabelLeft) {
+ HbStyle::setItemName(tickmarkslabelLeft,QString());
delete tickmarkslabelLeft;
tickmarkslabelLeft = 0;
- deleted = true;
-
}
if (tickmarkslabelRight) {
+ HbStyle::setItemName(tickmarkslabelRight,QString());
delete tickmarkslabelRight;
tickmarkslabelRight = 0;
- deleted = true;
}
- if (deleted) {
- q->repolish( );
- }
-
}
#ifdef HB_EFFECTS
/*!
+ \internal
start effect for on icon press
*/
void HbSliderPrivate::_q_startIconPressedEffect( )
@@ -723,6 +712,7 @@
}
/*!
+ \internal
start effect on icon release
*/
void HbSliderPrivate::_q_startIconReleasedEffect( )
@@ -811,7 +801,7 @@
{
Q_D( const HbSlider );
QList<QVariant> elementList;
- foreach(HbSlider::SliderElement element,d->elements){
+ foreach(const HbSlider::SliderElement &element,d->elements){
elementList.append ( QVariant ( element ) );
}
return elementList;
@@ -843,7 +833,7 @@
{
Q_D( HbSlider );
QList<HbSlider::SliderElement> elements;
- foreach ( QVariant elementVar , elementlist ) {
+ foreach (const QVariant &elementVar , elementlist ) {
elements.append( static_cast<HbSlider::SliderElement>(elementVar.toInt()));
}
d->setElements( elements );
@@ -863,8 +853,8 @@
Eg Usage:
HbSlider slider;
QMap<QString , QVariant> map;
- map.insert(QString("IncreaseElement") , QVariant(":/unittest_hbslider/star_on.png"));
- map.insert(QString("DecreaseElement") , QVariant(":/unittest_hbslider/star_on.png"));
+ map.insert(QString("IncreaseElement") , QVariant("example1.png"));
+ map.insert(QString("DecreaseElement") , QVariant("example2.png"));
slider.setElementIcons( map );
\warning Setting icon to a non-existing element has no effect.
@@ -1537,9 +1527,10 @@
{
Q_D( HbSlider );
d->sliderControl->setTickPosition( position );
- d->setTickLabelPresentProperty( );
d->createTickMarks( );
d->createTickLabels( );
+ d->updateTickMarks( );
+ d->updateTickLabels( );
}
/*!
@@ -1606,7 +1597,6 @@
d->updateTickMarks( );
d->updateTickLabels( );
}
- d->setTickLabelPresentProperty( );
}
/*!
@@ -1639,7 +1629,6 @@
d->sliderControl->setMinorTickInterval( interval );
d->updateTickMarks( );
d->updateTickLabels( );
- d->setTickLabelPresentProperty( );
}
/*!
@@ -1734,6 +1723,11 @@
case 4: if both major & minor tickinterval are same,then only majortickLabel
strings are taken into account for drawing the labelItem
+ case 5: If you want to remove the whole tickLabel then set the empty string as the argument.
+
+ Note:: if the major tickinterval of the slider is very small, the tick labels may overlap,
+ application needs to take care of this.
+
\sa majorTickLabels( )
*/
void HbSlider::setMajorTickLabels( const QStringList &majorTickLabels )
@@ -1745,7 +1739,6 @@
} else {
d->createTickLabels( );
d->updateTickLabels( );
- d->setTickLabelPresentProperty( );
}
}
@@ -1764,7 +1757,10 @@
/*!
@beta
Sets the minor ticklabels of the slider.
- see setMajorTickLabels for detailed description
+ see setMajorTickLabels for detailed description.
+ Note:: if the minor tickinterval of the slider is very small, the tick labels may overlap,
+ application needs to take care of this.
+
\sa minorTickLabels( ),setMajorTickLabels( )
*/
@@ -1773,7 +1769,6 @@
Q_D( HbSlider );
d->sliderControl->setMinorTickLabels( minorTickLabels );
d->updateTickLabels( );
- d->setTickLabelPresentProperty( );
}
@@ -1813,6 +1808,8 @@
break;
case HbStyle::P_Slider_groove:
return HbSliderControlPrivate::d_ptr( d->sliderControl )->groove;
+ case HbStyle::P_SliderElement_touchgroove:
+ return HbSliderControlPrivate::d_ptr( d->sliderControl )->grooveTouchArea;
case HbStyle::P_SliderElement_touchhandle:
return HbSliderControlPrivate::d_ptr( d->sliderControl )->handle->primitive(
@@ -1924,6 +1921,42 @@
}
/*!
+ reimp
+
+*/
+
+void HbSlider::gestureEvent(QGestureEvent *event)
+{
+ Q_D(HbSlider);
+ //consume the event if gesture is on increment or decrement,It is being handled in mouse press and mouse release
+ //If it is on mute/control igonore the gesture as they are handled separately by HbAbstractButton and HbSlidercontrol classes
+ if (HbTapGesture *tap = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) {
+ QPointF pos = event->mapToGraphicsScene(tap->position());
+ bool consumeEvent = false;
+ if ( d->elementItemMap.contains (HbSlider::IncreaseElement ) ) {
+ if (d->elementItemMap[HbSlider::IncreaseElement].touchItem ) {
+ if (d->elementItemMap[HbSlider::IncreaseElement].touchItem->sceneBoundingRect().contains(pos)) {
+ consumeEvent = true;
+ }
+ }
+ }
+ if ( d->elementItemMap.contains (HbSlider::DecreaseElement ) ) {
+ if (d->elementItemMap[HbSlider::DecreaseElement].touchItem ) {
+ if (d->elementItemMap[HbSlider::DecreaseElement].touchItem->sceneBoundingRect().contains(pos)) {
+ consumeEvent = true;
+ }
+ }
+ }
+
+ if(!consumeEvent) {
+ event->ignore();
+ HbWidget::gestureEvent(event);
+ }
+ }
+
+}
+
+/*!
\reimp
This api update the primitive when ever item enable has changed
--- a/src/hbwidgets/sliders/hbslider.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbslider.h Wed Jun 23 18:33:25 2010 +0300
@@ -162,6 +162,7 @@
bool isTrackFilled() const;
virtual QGraphicsItem * primitive(HbStyle::Primitive primitive) const;
+ virtual void gestureEvent(QGestureEvent *event);
public slots:
void setOrientation(Qt::Orientation orientation);
--- a/src/hbwidgets/sliders/hbslider_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbslider_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -58,7 +58,6 @@
void startIncrementing();
void startDecrementing();
void stopRepeatAction();
- void setTickLabelPresentProperty();
void updateTickMarks();
void updateTickLabels();
void deleteTickMarks();
--- a/src/hbwidgets/sliders/hbslidercontrol.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbslidercontrol.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -29,7 +29,6 @@
#include "hbsliderhandle_p.h"
#include "hbstyleoptionslider_p.h"
#include "hbslidertickmarkslabel_p.h"
-#include "hbslidertickmarkslabel_p.h"
#include <hbstyle.h>
#include <hbinstance.h>
#include <hbtheme.h>
@@ -96,22 +95,21 @@
Q_Q( HbSliderControl );
q->enableTrackEventHandling( true );
-#ifdef HB_GESTURE_FW
- q->grabGesture(Qt::TapGesture);
- q->grabGesture(Qt::PanGesture,Qt::ReceivePartialGestures);
- q->setFiltersChildEvents(true) ;
-#endif
+
// creating handle
handle = createHandle();
if(handle) {
HbStyle::setItemName( handle, "handle" );
- }
+ }
q->setFocusPolicy( Qt::FocusPolicy( ( qApp->style( ) )->styleHint( QStyle::SH_Button_FocusPolicy ) ) );
- //creating groove
groove = createGroove();
if(groove) {
HbStyle::setItemName( groove, "groove" );
}
+#ifdef HB_GESTURE_FW
+ q->setFiltersChildEvents(true) ;
+#endif
+
//filled item top of groove
if ( enableProgressTrack ) {
progressGroove = createProgressGroove();
@@ -129,7 +127,7 @@
/*!
\internal
- This is used to create the handle, is virtual and can be overridden to create different handle.
+ This is used to create the handle, it is virtual and can be overridden to create different handle.
*/
HbSliderHandle *HbSliderControlPrivate::createHandle()
{
@@ -140,7 +138,7 @@
/*!
\internal
- This is used to create the groove. can be overrideen by derived class
+ This is used to create the groove.It can be overrideen by derived class
*/
QGraphicsItem *HbSliderControlPrivate::createGroove()
{
@@ -151,7 +149,7 @@
}
/*!
\internal
- This is used to create the masked progress groove. can be overrideen by derived class
+ This is used to create the masked progress groove.This can be overrideen by derived class
*/
QGraphicsItem *HbSliderControlPrivate::createProgressGroove()
{
@@ -204,7 +202,7 @@
}
/*!
- This api returns true if pos in on handle rect
+ This api returns true if pos in on handle boundingRect
*/
bool HbSliderControlPrivate::onHandle( QPointF pos )
{
@@ -443,7 +441,10 @@
specify empty string ( "" ) for that item in the string list.
case 4: if both major & minor tickinterval are same,then only majortickLabel
- strings are taken into account for drawing the labelItem
+ strings are taken into account for drawing the labelItem.
+
+ case 5: If you want to remove the majorticklabel from the slider, pass the empty
+ stringlist as the argument
\sa majorTickLabels( )
*/
@@ -509,7 +510,7 @@
}
/*!
- This will enable/disable current value diplay as tooltip
+ This will enable/disable current value display as tooltip
on thumb drag
*/
void HbSliderControl::setToolTipVisible( bool value )
@@ -677,7 +678,7 @@
static_cast<int>( handlePos ),static_cast<int>( span ),opt.upsideDown );
//update the groove and touch item
style( )->updatePrimitive( d->groove, HbStyle::P_Slider_groove, &opt );
- // if default is set then dont increment or decrement slider value
+ // if default is set then do not increment or decrement slider value
// just set default value to slider
if ( d->setDefault ) {
setValue( d->previousValue );
@@ -767,7 +768,10 @@
#endif
}
+/*!
+ reimp
+*/
#ifdef HB_GESTURE_FW
void HbSliderControl::gestureEvent(QGestureEvent *event)
{
@@ -843,7 +847,7 @@
static_cast<int>( handlePos ),static_cast<int>( span ),opt.upsideDown );
- // if default is set then dont increment or decrement slider value
+ // if default is set then don't increment or decrement slider value
// just set default value to slider
setSliderPosition( pressValue );
triggerAction( SliderMove );
@@ -897,6 +901,7 @@
case Qt::GestureStarted:
case Qt::GestureUpdated:{
QPointF startPoint = event->mapToGraphicsScene(panGesture->offset()+panGesture->startPos( ) );
+ //if the position is on thumb , then start moving the thumb
if( ( d->onHandle( startPoint) && d->grooveTouchArea->sceneBoundingRect( ).contains( startPoint))||isSliderDown( ) ) {
qreal handlePos = 0;
qreal span = 0;
@@ -957,6 +962,8 @@
updatePrimitives( );
d->handle->updatePrimitives();
d->handleMoving = false;
+ int pressValue = sliderPosition();
+ setRepeatAction( SliderNoAction,static_cast<int>( pressValue ) );
event->ignore();
HbAbstractSliderControl::gestureEvent(event);
}
@@ -1064,11 +1071,11 @@
QRectF handleBounds = d->handle->boundingRect( );
qreal span = 0;
if ( orientation( ) == Qt::Horizontal ) {
- bounds.adjust( 0, 0, -handleBounds.width( )/2, 0 );
+ bounds.adjust( 0, 0, -handleBounds.width( ), 0 );
// calculating span
span = bounds.width( );
} else {
- bounds.adjust( 0, 0, 0, -handleBounds.height( )/2 );
+ bounds.adjust( 0, 0, 0, -handleBounds.height( ) );
// calculating span
span = bounds.height( );
}
@@ -1264,7 +1271,7 @@
}
/*!
- snapp slider values
+ snap to slider values
*/
void HbSliderControl::updateSliderPosToTick( )
{
@@ -1316,7 +1323,7 @@
ungrabGesture(Qt::TapGesture);
ungrabGesture(Qt::PanGesture);
touchArea->grabGesture(Qt::TapGesture);
- touchArea->grabGesture(Qt::PanGesture,Qt::ReceivePartialGestures);
+ touchArea->grabGesture(Qt::PanGesture);
#endif
}
}
@@ -1342,6 +1349,9 @@
return d->handle->size( ) ;
}
+/*!
+ fills the track upto the current value if \a trackVisible is true
+ */
void HbSliderControl::setTrackFilled(bool trackVisible )
{
@@ -1366,7 +1376,9 @@
}
-
+/*!
+ Returns whether the track is filled upto the current value or not
+ */
bool HbSliderControl::isTrackFilled() const
{
Q_D( const HbSliderControl );
--- a/src/hbwidgets/sliders/hbsliderhandle.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbsliderhandle.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -188,7 +188,7 @@
}
bool HbSliderHandle::sceneEventFilter(QGraphicsItem *obj,QEvent *event)
{
- //TODO: touch area doesnt work with the current filtering mechanism. find better solution
+ //TODO: touch area does not work with the current filtering mechanism. find better solution
if( obj == mHandleItem) {
if(event->type() == QEvent::GraphicsSceneMouseMove){
mouseMoveEvent ( (QGraphicsSceneMouseEvent *) event ) ;
--- a/src/hbwidgets/sliders/hbslidertickmarks.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbslidertickmarks.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -29,7 +29,6 @@
#include "hbslider_p.h"
#include <hbstyle.h>
#include <hbstyleoptionslider_p.h>
-#include <hbstyle.h>
#include <hbapplication.h>
#include <hbiconitem.h>
#include <hbslider.h>
@@ -56,17 +55,16 @@
public:
HbSliderTickmarksPrivate();
- void createTicks( );
HbStyleOptionSlider sliderOption;
QList<QGraphicsWidget *> tickmarkmajorIcons;
QList<QGraphicsWidget *> tickmarkminorIcons;
HbSlider *slider;
Hb::SliderTickPositions tickPosition;
- bool createIcons;
- int majorTickWidth;
- int minorTickWidth;
- int majorTickHeight;
- int minorTickHeight;
+ qreal majorTickWidth;
+ qreal minorTickWidth;
+ qreal majorTickHeight;
+ qreal minorTickHeight;
+ Qt::Orientation sliderOrientation;
};
@@ -75,35 +73,31 @@
tickmarkminorIcons.clear();
slider = 0;
tickPosition = Hb::NoSliderTicks;
- createIcons = true;
majorTickWidth = 0;
minorTickWidth = 0;
majorTickHeight = 0;
minorTickHeight = 0;
+ sliderOrientation = Qt::Vertical;
}
-
-void HbSliderTickmarksPrivate::createTicks( )
+void HbSliderTickmarks::createTicks( )
{
- Q_Q ( HbSliderTickmarks );
- if(!createIcons){
- return;
- }
- int minimum = slider->minimum();
- int maximum = slider->maximum();
- int majorTickInterval = slider->majorTickInterval ( );
- int minorTickInterval = slider->minorTickInterval ( );
+ Q_D ( HbSliderTickmarks );
+ int minimum = d->slider->minimum();
+ int maximum =d->slider->maximum();
+ int majorTickInterval = d->slider->majorTickInterval ( );
+ int minorTickInterval =d-> slider->minorTickInterval ( );
if (majorTickInterval) {
int totalMajorTicks = ((maximum-minimum)/majorTickInterval)+1;
- int majorIconListLength = tickmarkmajorIcons.length();
+ int majorIconListLength = d->tickmarkmajorIcons.length();
for (int i=majorIconListLength;i<totalMajorTicks;i++) {
- QGraphicsItem *iconItem = q->style()->createPrimitive(HbStyle::P_SliderTickMark_majoricon, q);
+ QGraphicsItem *iconItem =style()->createPrimitive(HbStyle::P_SliderTickMark_majoricon, this);
Q_ASSERT(iconItem->isWidget());
- tickmarkmajorIcons.append(static_cast<QGraphicsWidget *>(iconItem));//add newly defind primitive
+ d->tickmarkmajorIcons.append(static_cast<QGraphicsWidget *>(iconItem));//add newly defind primitive
}
- while ( totalMajorTicks < tickmarkmajorIcons.length() ) {
- QGraphicsWidget *iconItem = tickmarkmajorIcons.at(totalMajorTicks);
- tickmarkmajorIcons.removeAll(iconItem);
+ while ( totalMajorTicks < d->tickmarkmajorIcons.length() ) {
+ QGraphicsWidget *iconItem = d->tickmarkmajorIcons.at(totalMajorTicks);
+ d->tickmarkmajorIcons.removeAll(iconItem);
delete iconItem;
}
}
@@ -117,25 +111,25 @@
}
}
}
- int minorIconListLength = tickmarkminorIcons.length();
+ int minorIconListLength = d->tickmarkminorIcons.length();
for (int i=minorIconListLength;i<totalMinorTicks;i++) {
- QGraphicsItem *iconItem = q->style()->createPrimitive(HbStyle::P_SliderTickMark_minoricon, q);
+ QGraphicsItem *iconItem = style()->createPrimitive(HbStyle::P_SliderTickMark_minoricon, this);
Q_ASSERT(iconItem->isWidget());
- tickmarkminorIcons.append(static_cast<QGraphicsWidget *>(iconItem));//add newly defind primitive
+ d->tickmarkminorIcons.append(static_cast<QGraphicsWidget *>(iconItem));//add newly defind primitive
}
- while (totalMinorTicks < tickmarkminorIcons.length() ){
- QGraphicsWidget *iconItem = tickmarkminorIcons.at(totalMinorTicks);
- tickmarkminorIcons.removeAll(iconItem);
+ while (totalMinorTicks < d->tickmarkminorIcons.length() ){
+ QGraphicsWidget *iconItem = d->tickmarkminorIcons.at(totalMinorTicks);
+ d->tickmarkminorIcons.removeAll(iconItem);
delete iconItem;
}
} else {
- while (tickmarkminorIcons.length() > 0 ){
- QGraphicsWidget *iconItem = tickmarkminorIcons.at(0);
- tickmarkminorIcons.removeAll(iconItem);
+ while (d->tickmarkminorIcons.length() > 0 ){
+ QGraphicsWidget *iconItem = d->tickmarkminorIcons.at(0);
+ d->tickmarkminorIcons.removeAll(iconItem);
delete iconItem;
}
}
- q->setProperty("state", "normal");
+ setProperty("state", "normal");
}
@@ -161,7 +155,8 @@
Q_D( HbSliderTickmarks );
d->q_ptr = this;
d->slider=dynamic_cast<HbSlider*>( parentItem() );
- d->createTicks();
+ createTicks();
+ d->sliderOrientation = d->slider->orientation( );
}
/*!
@@ -179,10 +174,6 @@
void HbSliderTickmarks::updateTicks( )
{
Q_D ( HbSliderTickmarks );
- if(!d->createIcons) {
- return;
- }
- d->createTicks();
int minimum = d->slider->minimum();
int maximum = d->slider->maximum();
int majorTickInterval = d->slider->majorTickInterval ( );
@@ -256,6 +247,7 @@
iconItem->update();
}
}
+ update(boundingRect());
}
/* !
@@ -293,16 +285,21 @@
void HbSliderTickmarks::polish( HbStyleParameters& params )
{
Q_D (HbSliderTickmarks);
- params.addParameter("fixed-width-major");
- params.addParameter("fixed-height-major");
- params.addParameter("fixed-width-minor");
- params.addParameter("fixed-height-minor");
- HbWidget::polish(params);
- d->majorTickWidth = params.value("fixed-width-major").toInt();
- d->majorTickHeight = params.value("fixed-height-major").toInt();
- d->minorTickWidth = params.value("fixed-width-minor").toInt();
- d->minorTickHeight = params.value("fixed-height-minor").toInt();
- updateTicks();
+ if (d->majorTickHeight == 0 || d->sliderOrientation!= d->slider->orientation() ) {
+ d->sliderOrientation = d->slider->orientation();
+ params.addParameter("fixed-width-major");
+ params.addParameter("fixed-height-major");
+ params.addParameter("fixed-width-minor");
+ params.addParameter("fixed-height-minor");
+ HbWidget::polish(params);
+ d->majorTickWidth = params.value("fixed-width-major").toReal();
+ d->majorTickHeight = params.value("fixed-height-major").toReal();
+ d->minorTickWidth = params.value("fixed-width-minor").toReal();
+ d->minorTickHeight = params.value("fixed-height-minor").toReal();
+ } else {
+ HbWidget::polish(params);
+ updateTicks();
+ }
}
//end of file
--- a/src/hbwidgets/sliders/hbslidertickmarks_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbslidertickmarks_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -45,7 +45,9 @@
virtual void resizeEvent(QGraphicsSceneResizeEvent *event);
void updateTicks( );
void setTickPosition(Hb::SliderTickPositions position);
- virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
+ virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
+ void createTicks( );
+
protected:
void polish( HbStyleParameters& params );
--- a/src/hbwidgets/sliders/hbslidertickmarkslabel.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbslidertickmarkslabel.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -153,7 +153,15 @@
return;
}
d->createTickLabels();
- setLabelSize( );
+ int totalMajorTicksLabel = d->tickmarkmajorIconItemsLabel.length();
+ for (int i=0;i<totalMajorTicksLabel;i++) {
+ QGraphicsWidget *textItem = d->tickmarkmajorIconItemsLabel.at ( i);
+ HbStyleOptionSlider opt;
+ initStyleOption(&opt);
+ opt.orientation = d->slider->orientation();
+ opt.text = (d->slider->majorTickLabels( )).at(i);
+ style()->updatePrimitive(textItem,HbStyle::P_SliderTickMark_majorlabel,&opt);
+ }
int minimum = d->slider->minimum();
int maximum = d->slider->maximum();
int majorTickInterval = d->slider->majorTickInterval ( );
@@ -289,6 +297,7 @@
d->q_ptr = this;
d->slider=dynamic_cast<HbSlider*>( parentItem() );
d->createTickLabels();
+ setFlag(QGraphicsItem::ItemSendsGeometryChanges,true);
}
/*!
@@ -298,106 +307,9 @@
{
}
-void HbSliderTickmarksLabel::setLabelSize()
-{
- Q_D (HbSliderTickmarksLabel);
-
- int minimum = d->slider->minimum();
- int maximum = d->slider->maximum();
- int majorTickInterval = d->slider->majorTickInterval ( );
- int minorTickInterval = d->slider->minorTickInterval ( );
- qreal span = 0;
- bool rtlLayout = (((d->slider->orientation( ) != Qt::Vertical)
- &&(HbApplication::layoutDirection() == Qt::LeftToRight))?false:true);
- HbSliderPrivate *sliderPrivate = dynamic_cast<HbSliderPrivate*>(HbSliderPrivate::d_ptr(d->slider));
- QSizeF handleSize(0.0,0.0);
- if( sliderPrivate) {
- handleSize = sliderPrivate->getHandleSize( );
- } else {
- return;
- }
- if ( d->slider->orientation() == Qt::Horizontal) {
- span = d->slider->size().width();
- span-=handleSize.width();
- }
- if ( d->slider->orientation() == Qt::Vertical) {
- span = d->slider->size().height();
- span-=handleSize.height();
- }
- int minPos = QStyle::sliderPositionFromValue( minimum, maximum,
- minimum,static_cast<int>( span ), rtlLayout );
- int firstMajorIntervalPos = QStyle::sliderPositionFromValue( minimum, maximum,
- minimum+majorTickInterval,static_cast<int>( span ), rtlLayout );
-
- int firstMinorIntervalPos = QStyle::sliderPositionFromValue( minimum, maximum,
- minimum+minorTickInterval,static_cast<int>( span ), rtlLayout );
-
- qreal totalMajorTextWidth = abs(firstMajorIntervalPos-minPos);
- qreal totalMinorTextWidth = abs(firstMinorIntervalPos-minPos);
- Q_UNUSED(totalMajorTextWidth)
- Q_UNUSED(totalMinorTextWidth)
-
- if (majorTickInterval) {
- int totalMajorTicksLabel = d->tickmarkmajorIconItemsLabel.length();
- for (int i=0;i<totalMajorTicksLabel;i++) {
- QGraphicsWidget *textItem = d->tickmarkmajorIconItemsLabel.at ( i);
- HbStyleOptionSlider opt;
- initStyleOption(&opt);
- opt.orientation = d->slider->orientation();
- opt.text = (d->slider->majorTickLabels( )).at(i);
- style()->updatePrimitive(textItem,HbStyle::P_SliderTickMark_majorlabel,&opt);
- if ( d->slider->orientation() == Qt::Horizontal) {
- /* textItem->setMaximumHeight (boundingRect().height());
- textItem->setMinimumHeight (boundingRect().height());
- textItem->setMinimumWidth(totalMajorTextWidth);
- textItem->setMaximumWidth(totalMajorTextWidth);*/
- textItem->update();
- } else {
- /* textItem->setMinimumWidth(boundingRect().width());
- textItem->setMaximumWidth(boundingRect().width());*/
- textItem->update( );
- }
- }
- }
- if (minorTickInterval) {
- int totalminorTicks = ((maximum-minimum)/minorTickInterval)+1;
- int minorIndex = 0;
- for (int i=0;i<totalminorTicks;i++) {
- if (majorTickInterval ) {
- if (i*minorTickInterval%majorTickInterval== 0) {
- continue;
- }
- }
- if ( minorIndex < d->tickmarkminorIconItemsLabel.length() ) {
- QGraphicsWidget *textItem = d->tickmarkminorIconItemsLabel.at ( minorIndex);
- minorIndex++;
- if ( d->slider->orientation() == Qt::Horizontal) {
- /* textItem->setMaximumHeight (boundingRect().height());
- textItem->setMinimumHeight (boundingRect().height());
- textItem->setMinimumWidth(totalMinorTextWidth);
- textItem->setMaximumWidth(totalMinorTextWidth);*/
- textItem->update();
- } else {
- /* textItem->setMinimumWidth(boundingRect().width());
- textItem->setMaximumWidth(boundingRect().width());*/
- textItem->update( );
- }
- }
- }
- }
- }
-
-
void HbSliderTickmarksLabel::polish( HbStyleParameters& params )
{
- Q_D (HbSliderTickmarksLabel);
- d->createTickLabels();
- if( d->slider->orientation( ) == Qt::Horizontal ) {
- setProperty("orientation",(Qt::Orientation)1);
- } else {
- setProperty("orientation",(Qt::Orientation)2);
- }
HbWidget::polish(params);
updateTickLabels();
}
--- a/src/hbwidgets/sliders/hbslidertickmarkslabel_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbslidertickmarkslabel_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -51,7 +51,6 @@
void updateTickLabels( );
void setTickPosition(Hb::SliderTickPositions position);
- void setLabelSize();
virtual bool event ( QEvent * event );
--- a/src/hbwidgets/sliders/hbvolumeslider_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/sliders/hbvolumeslider_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -245,6 +245,9 @@
}
option.sliderElementIcon = icons.value( HbSlider::IconElement );
q->style( )->updatePrimitive( elementItemMap[HbSlider::IconElement].item,HbStyle::P_SliderElement_icon,&option );
+ q->setProperty("changeincrementState" ,false);
+ q->setProperty("changedecrementState" ,false);
+ q->setProperty("state", "normal");
}
@@ -402,6 +405,8 @@
Q_D( HbVolumeSlider );
HbSlider::mouseReleaseEvent( event );
d->stopRepeatAction( );
+ setProperty("changeincrementState" ,false);
+ setProperty("changedecrementState" ,false);
setProperty("state", "normal");
}
--- a/src/hbwidgets/widgets/hbcombobox.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/widgets/hbcombobox.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -133,7 +133,6 @@
Q_D( HbComboBox );
d->init( );
updatePrimitives( );
- setProperty( "state", "normal" );
setFlag(QGraphicsItem::ItemSendsScenePositionChanges);
}
@@ -153,7 +152,6 @@
Q_D( HbComboBox );
d->init( );
updatePrimitives( );
- setProperty( "state", "normal" );
}
/*!
@@ -679,7 +677,9 @@
{
Q_D( HbComboBox );
d->setEditable( editable );
- setProperty( "state", "normal" );
+ if (!editable ) {
+ setProperty( "state", "normal" );
+ }
}
/*!
@@ -1021,7 +1021,6 @@
{
d->mIsDown = false;
updatePrimitives( );
- setProperty( "state", "normal" );
accepted = true;
break;
}
--- a/src/hbwidgets/widgets/hbcombobox_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/widgets/hbcombobox_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -77,11 +77,14 @@
if( mButtonTouchAreaItem ) {
static_cast<HbTouchArea*>( mButtonTouchAreaItem )->removeEventFilter( q );
}
- if ( !q->scene( ) || !q->scene( )->property( "destructed" ).isValid( ) ) {
- if( mDropDown ) {
- delete mDropDown;
- mDropDown = 0;
- }
+
+ if ( !mDropDown ) {
+ return;
+ }
+
+ if ( !mDropDown->scene() || !mDropDown->scene( )->property( "destructed" ).isValid( ) ) {
+ delete mDropDown;
+ mDropDown = 0;
}
}
@@ -131,7 +134,6 @@
HbWidgetFeedback::triggered( q, Hb::InstantReleased );
}
- q->setProperty( "state", "normal" );
}
void HbComboBoxPrivate::touchAreaClicked( )
@@ -140,6 +142,7 @@
if ( mModel && mModel->rowCount( ) ) {
addDropDownToScene( );
mDropDown->setVisible( true );
+ q->setProperty( "state", "latched" );
if( !mDropDown->mList ) {
mDropDown->createList( );
mDropDown->mList->setModel( mModel );
@@ -203,10 +206,12 @@
void HbComboBoxPrivate::createDropDown( )
{
+ Q_Q ( HbComboBox );
if( !mIsDorpdownCreated ) {
mDropDown = new HbComboDropDown( this );
mIsDorpdownCreated = true;
mDropDown->setVisible( false );
+ q->setProperty( "state", "normal" );
}
}
@@ -407,6 +412,7 @@
}
if ( mDropDown->isVisible( ) ) {
mDropDown->setVisible( false );
+ q->setProperty( "state", "normal" );
}
currentIndexChanged( mCurrentIndex );
}
@@ -447,6 +453,7 @@
createDropDown( );
if ( mDropDown->isVisible( ) ) {
mDropDown->setVisible( false );
+ q->setProperty( "state", "normal" );
}
q->clear( );
delete mModel;
--- a/src/hbwidgets/widgets/hbcombodropdown_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/widgets/hbcombodropdown_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -90,6 +90,7 @@
if( !( this->isUnderMouse( ) ) ) {
HbWidgetFeedback::triggered( this, Hb::InstantPopupClosed );
setVisible( false );
+ comboPrivate->q_ptr->setProperty("state","normal");
backgroundPressed = true;
accepted = true;
}
--- a/src/hbwidgets/widgets/hbdatetimepicker_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/widgets/hbdatetimepicker_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -26,7 +26,7 @@
#include "hbdatetimepicker_p.h"
#include "hbdatetimepicker.h"
#include "hbstyleoption_p.h"
-#include "hbfeaturemanager_p.h"
+#include "hbfeaturemanager_r.h"
//TODO:remove frameitem dependency
#include "hbframeitem.h"
--- a/src/hbwidgets/widgets/hbgroupbox.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/widgets/hbgroupbox.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -52,6 +52,8 @@
:HbWidgetPrivate(),
mContentWidget( 0 ),
mHeadingWidget( 0 ),
+ collapsed( false),
+ collapsable( true ),
mGroupBoxType( GroupBoxTypeUnknown )
{
}
@@ -106,48 +108,19 @@
// set the type and makes necesary primitive creation/deletion
switch(mGroupBoxType) {
case GroupBoxSimpleLabel:
- {
- if(mHeadingWidget){
- mHeadingWidget->setType(type);
- mHeadingWidget->setVisible(true);
-
- }else{
- createHeadingWidget();
- }
-
- if(mContentWidget){
- mContentWidget->setVisible(false);
- HbStyle::setItemName( mContentWidget , "");
- }
-
+ {
+ mHeadingWidget->setType(type);
}
break;
case GroupBoxRichLabel:
{
- if(mHeadingWidget){
- mHeadingWidget->setVisible(false);
-
- }
- if(mContentWidget){
mContentWidget->setType(type);
- mContentWidget->setVisible(true);
HbStyle::setItemName( mContentWidget , "contentwidget");
- }else{
- createContentWidget();
- }
-
}
break;
case GroupBoxCollapsingContainer:
{
- if((mHeadingWidget)){
mHeadingWidget->setType(type);
- mHeadingWidget->setVisible(true);
- }else{
- createHeadingWidget();
- }
-
- if(mContentWidget){
mContentWidget->setType(type);
if(!q->isCollapsed()){
mContentWidget->setVisible(true);
@@ -156,9 +129,6 @@
mContentWidget->setVisible(false);
HbStyle::setItemName( mContentWidget , "");
}
- }else{
- createContentWidget();
- }
}
break;
default:
@@ -307,6 +277,8 @@
Sets the groupbox heading
Note: heading property is valid for simpleLabel & collapsing container type.
+ In case of collapsing container,
+ if empty heading is set on runtime Groupbox will change to RichLabel.
For Collapsing container,
if body content is collapsible ,heading will appear along with Disclosure indicator.
If heading is set on richLabel type groupBox, it will be ignored
@@ -317,15 +289,28 @@
{
Q_D( HbGroupBox );
- if(!d->mHeadingWidget)
- d->createHeadingWidget();
-
- d->mHeadingWidget->setHeading(text);
-
- if(d->mContentWidget){
- d->setGroupBoxType(GroupBoxCollapsingContainer);
- }else
- d->setGroupBoxType(GroupBoxSimpleLabel);
+ if( !text.isEmpty() ){
+ if( !d->mHeadingWidget ){
+ d->createHeadingWidget( );
+ }
+ d->mHeadingWidget->setHeading( text );
+ if( d->mContentWidget ){
+ d->setGroupBoxType(GroupBoxCollapsingContainer);
+ }else {
+ d->setGroupBoxType(GroupBoxSimpleLabel);
+ }
+ }else{
+ if( d->mHeadingWidget ){
+ delete d->mHeadingWidget;
+ d->mHeadingWidget = 0;
+ if( d->mContentWidget ) {
+ d->setGroupBoxType( GroupBoxRichLabel );
+ }else{
+ d->setGroupBoxType( GroupBoxTypeUnknown );
+ }
+ }
+ }
+ repolish();
}
/*!
@@ -365,19 +350,19 @@
Q_D( HbGroupBox );
if(d->mGroupBoxType == GroupBoxCollapsingContainer){
- if(d->mHeadingWidget->collapsable == collapsable)
+ if(d->collapsable == collapsable)
{
return;
}
- d->mHeadingWidget->collapsable = collapsable;
+ d->collapsable = collapsable;
d->mHeadingWidget->createPrimitives();
- // make it expand otherwise groupBox can't be expanded at all, after this scenario
- if(!collapsable && d->mHeadingWidget->collapsed){
+ // make it expand otherwise groupBox can't be collapsed at all, after this scenario
+ if(!collapsable && d->collapsed){
d->mContentWidget->setVisible(true);
HbStyle::setItemName( d->mContentWidget , "contentwidget");
- d->mHeadingWidget->collapsed = false;
+ d->collapsed = false;
}
d->mHeadingWidget->updatePrimitives();
repolish();
@@ -397,7 +382,7 @@
{
Q_D( const HbGroupBox );
if(d->mHeadingWidget && d->mGroupBoxType == GroupBoxCollapsingContainer)
- return d->mHeadingWidget->collapsable;
+ return d->collapsable;
return false;
}
@@ -424,18 +409,18 @@
{
Q_D( HbGroupBox );
if(d->mGroupBoxType == GroupBoxCollapsingContainer){
- if( d->mContentWidget && d->mHeadingWidget->collapsable) {
- if ( d->mHeadingWidget->collapsed == collapsed )
+ if( d->mContentWidget && d->collapsable) {
+ if ( d->collapsed == collapsed )
return;
- d->mHeadingWidget->collapsed = collapsed;
+ d->collapsed = collapsed;
#ifdef HB_EFFECTS
HbEffectInternal::add(HB_GROUPBOX_TYPE,"groupbox_expand", "expand");
//HbEffectInternal::add(HB_GROUPBOX_TYPE,"groupbox_collapse", "collapse");
#endif
- if ( d->mHeadingWidget->collapsed ) {
+ if ( d->collapsed ) {
#ifdef HB_EFFECTS
HbEffect::start( d->mContentWidget, HB_GROUPBOX_TYPE, "collapse");
#endif
@@ -450,7 +435,7 @@
d->mContentWidget->setVisible(true);
}
d->mHeadingWidget->updatePrimitives();
- emit toggled( d->mHeadingWidget->collapsed );
+ emit toggled( d->collapsed );
}
repolish();
}
@@ -469,7 +454,7 @@
{
Q_D ( const HbGroupBox );
if(d->mGroupBoxType == GroupBoxCollapsingContainer)
- return d->mHeadingWidget->collapsed;
+ return d->collapsed;
return false;
}
@@ -523,6 +508,7 @@
Ownership of the content widget is transferred to groupbox.
If \a widget to set is NULL then content is removed.
+ And Groupbox type is changed to simpleLabel , if heading is present.
contentWidget is valid only for richLabel & collapsing container type.
If content Widget is set on simpleLabel type groupBox, it will be ignored
@@ -541,20 +527,30 @@
if(!d->mContentWidget)
d->createContentWidget();
- d->mContentWidget->setContentWidget(widget);
-
- if(d->mHeadingWidget){
- d->setGroupBoxType(GroupBoxCollapsingContainer);
- }else
- d->setGroupBoxType(GroupBoxRichLabel);
+ if(widget){
+ d->mContentWidget->setContentWidget(widget);
+ if(d->mHeadingWidget){
+ d->setGroupBoxType(GroupBoxCollapsingContainer);
+ }else
+ d->setGroupBoxType(GroupBoxRichLabel);
- // collapsed property is set before setContentWidget
- if ( d->mGroupBoxType == GroupBoxCollapsingContainer && d->mHeadingWidget->collapsed ) {
- d->mContentWidget->setVisible(false);
- HbStyle::setItemName( d->mContentWidget , "");
+ // collapsed property is set before setContentWidget
+ if ( d->mGroupBoxType == GroupBoxCollapsingContainer && d->collapsed ) {
+ d->mContentWidget->setVisible(false);
+ HbStyle::setItemName( d->mContentWidget , "");
+ }
+ // update content widget primitve
+ d->mContentWidget->updatePrimitives();
+
+ }else{
+ delete d->mContentWidget;
+ d->mContentWidget = 0;
+ if(d->mHeadingWidget){
+ d->setGroupBoxType(GroupBoxSimpleLabel);
+ }else{
+ d->setGroupBoxType(GroupBoxTypeUnknown);
+ }
}
- // update content widget primitve
- d->mContentWidget->updatePrimitives();
repolish();
}
@@ -612,6 +608,21 @@
/*!
\reimp
+*/
+
+QSizeF HbGroupBox::sizeHint( Qt::SizeHint which, const QSizeF &constraint ) const
+{
+ Q_D( const HbGroupBox );
+
+ //group box will have size zero in case contentwidget and heading not their.
+ if( !d->mHeadingWidget && !d->mContentWidget )
+ return QSizeF( 0.f, 0.f );
+ return HbWidget::sizeHint(which, constraint);
+}
+
+
+/*!
+ \reimp
*/
void HbGroupBox::updatePrimitives()
{
--- a/src/hbwidgets/widgets/hbgroupbox.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/widgets/hbgroupbox.h Wed Jun 23 18:33:25 2010 +0300
@@ -64,6 +64,9 @@
int type( ) const {
return Type;
}
+protected:
+
+ QSizeF sizeHint( Qt::SizeHint which, const QSizeF &constraint = QSizeF() ) const;
public slots:
--- a/src/hbwidgets/widgets/hbgroupbox_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/widgets/hbgroupbox_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -57,9 +57,12 @@
void createContentWidget();
void setGroupBoxType(GroupBoxType type);
+public:
HbGroupBoxContentWidget *mContentWidget;
HbGroupBoxHeadingWidget *mHeadingWidget;
+ bool collapsed;
+ bool collapsable;
GroupBoxType mGroupBoxType;
};
--- a/src/hbwidgets/widgets/hbgroupboxheadingwidget_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/widgets/hbgroupboxheadingwidget_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -55,8 +55,6 @@
mIconItem( 0 ),
mTextItem( 0 ),
mBackgroundItem( 0 ),
- collapsable( true ),
- collapsed( false),
marqueeEnabled( false ),
headingPressed(false),
groupBoxType( GroupBoxTypeUnknown )
@@ -80,7 +78,6 @@
*/
void HbGroupBoxHeadingWidget::init( )
{
-
createPrimitives( );
if ( groupBoxType == GroupBoxCollapsingContainer ){
createConnection( );
@@ -95,7 +92,7 @@
*/
void HbGroupBoxHeadingWidget::createPrimitives()
{
- if( groupBoxType == GroupBoxCollapsingContainer && collapsable ){
+ if( groupBoxType == GroupBoxCollapsingContainer && groupBox->isCollapsable() ){
if ( !mIconItem ) {
mIconItem = style( )->createPrimitive( HbStyle::P_GroupBoxHeading_icon , this );
}
@@ -181,7 +178,7 @@
if( groupBoxType == GroupBoxCollapsingContainer ){
createConnection();
// collapsed is false by default for CollapsingContainer
- collapsed = false;
+ //collapsed = false;
// marquee is disabled by default for CollapsingContainer
marqueeEnabled = false;
}
@@ -263,7 +260,8 @@
void HbGroupBoxHeadingWidget::initStyleOption( HbStyleOptionGroupBox *option ) const
{
HbWidget::initStyleOption( option );
- option->collapsed = collapsed;
+ //option->collapsed = collapsed;
+ option->collapsed = groupBox->isCollapsed();
option->heading = headingText;
option->marqueeEnabled = marqueeEnabled;
// state & type info reqd fo background primitve updation
@@ -322,7 +320,7 @@
Q_UNUSED( event )
#else
HbWidget::mousePressEvent( event );
- if ( !collapsable ){
+ if ( !( groupBox->isCollapsable( ) ) ){
event->ignore();
return;
}
@@ -389,11 +387,11 @@
switch( tap->state() ) {
case Qt::GestureStarted: //
{
- if ( !collapsable ){
+ if ( !(groupBox->isCollapsable( )) ){
event->ignore( tap );
return;
}
- if ( collapsable ) {
+ if ( groupBox->isCollapsable( ) ) {
HbWidgetFeedback::triggered( this, Hb::InstantPressed, Hb::ModifierCollapsedItem );
}
else {
@@ -424,7 +422,7 @@
}
case Qt::GestureFinished: // emit clicked
{
- if ( collapsable ) {
+ if ( groupBox->isCollapsable( ) ) {
HbWidgetFeedback::triggered( this, Hb::InstantReleased, Hb::ModifierCollapsedItem );
} else {
HbWidgetFeedback::triggered( this, Hb::InstantReleased );
@@ -436,7 +434,7 @@
HbEffect::start( mIconItem, HB_GROUPBOX_HEADING_TYPE, "iconclick" );
#endif
}
- emit clicked( !collapsed );
+ emit clicked( !(groupBox->isCollapsed()) );
}
// background primitive updation, upon mouse release
headingPressed = false;
--- a/src/hbwidgets/widgets/hbgroupboxheadingwidget_p.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/widgets/hbgroupboxheadingwidget_p.h Wed Jun 23 18:33:25 2010 +0300
@@ -63,8 +63,6 @@
QGraphicsItem *mBackgroundItem;
QString headingText;
- bool collapsable;
- bool collapsed;
bool marqueeEnabled;
bool headingPressed;
GroupBoxType groupBoxType;
--- a/src/hbwidgets/widgets/hblabel.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/widgets/hblabel.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -30,13 +30,13 @@
#include <QTextDocument>
#include <QGraphicsSceneResizeEvent>
-#include "hblabel.h"
#include "hbiconitem.h"
#include "hbinstance.h"
#include "hbcolorscheme.h"
#include "hbwidget_p.h"
#include "hbstyleoptionlabel_p.h"
#include "hbwidgetbase.h"
+#include "hblabel.h"
/*!
@alpha
@@ -125,7 +125,7 @@
mElideMode(Qt::ElideRight),
mTextWrapping(Hb::TextNoWrap),
mAspectRatioMode(Qt::KeepAspectRatio),
- mPrimitiveItem(NULL),
+ mPrimitiveItem(0),
mActivePrimitive(HbStyle::P_None)
{
}
@@ -134,7 +134,7 @@
{
if (mPrimitiveItem) {
delete mPrimitiveItem;
- mPrimitiveItem = NULL;
+ mPrimitiveItem = 0;
mActivePrimitive = HbStyle::P_None;
}
@@ -199,7 +199,7 @@
{
Q_Q(HbLabel);
- Q_ASSERT(mPrimitiveItem==NULL);
+ Q_ASSERT(mPrimitiveItem==0);
if (mActivePrimitive != HbStyle::P_None) {
mPrimitiveItem = q->style()->createPrimitive(mActivePrimitive, q);
@@ -544,6 +544,14 @@
}
}
+QSizeF HbLabel::sizeHint ( Qt::SizeHint which, const QSizeF & constraint ) const
+{
+ if (isEmpty()) {
+ return QSizeF(0,0);
+ }
+ return HbWidget::sizeHint(which,constraint);
+}
+
/*!
Slot to be called when the style primitives need to be updated.
This function does not initiate redrawing this widget.
--- a/src/hbwidgets/widgets/hblabel.h Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/widgets/hblabel.h Wed Jun 23 18:33:25 2010 +0300
@@ -93,6 +93,7 @@
HbLabel(HbLabelPrivate &dd, QGraphicsItem *parent);
void initStyleOption(HbStyleOptionLabel *option) const;
+ QSizeF sizeHint ( Qt::SizeHint which, const QSizeF & constraint = QSizeF() ) const;
private:
Q_DECLARE_PRIVATE_D(d_ptr, HbLabel)
--- a/src/hbwidgets/widgets/hbpushbutton.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/widgets/hbpushbutton.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -42,7 +42,8 @@
#include <QTimer>
#include <QGraphicsItem>
#include <QDebug>
-
+#include <QCoreApplication>
+#include <QApplication>
/*!
@beta
@@ -371,6 +372,9 @@
HbStyleOptionPushButton buttonOption;
initStyleOption( &buttonOption );
style( )->updatePrimitive( d->textItem, HbStyle::P_PushButton_text, &buttonOption);
+ if ( isEnabled() ) {
+ setProperty("state", "normal");
+ }
}
if(doPolish) {
repolish( );
@@ -459,7 +463,13 @@
}
if( doPolish ) {
- repolish();
+ //Instead of posting an event we are directly sending polish and layout request
+ //event because during runtime if icon is set for the first time some
+ //flickering was coming. That was coming because icon was getting painted
+ //before polish.
+ QEvent* polishEvent = new QEvent( QEvent::Polish );
+ QCoreApplication::sendEvent(this, polishEvent);
+ QApplication::sendPostedEvents(this, QEvent::LayoutRequest);
}
}
}
@@ -740,7 +750,8 @@
case Qt::Key_Up:
case Qt::Key_Left:
case Qt::Key_Right:
- case Qt::Key_Down:{
+ case Qt::Key_Down:
+ if( d->keyNavigation()) {
d->navigationKeyPress = true;
}
break;
@@ -772,7 +783,8 @@
case Qt::Key_Up:
case Qt::Key_Left:
case Qt::Key_Right:
- case Qt::Key_Down:{
+ case Qt::Key_Down:
+ if ( d->keyNavigation() ) {
d->navigationKeyPress = false;
}
break;
@@ -851,46 +863,46 @@
{
Q_D(HbPushButton);
if(HbTapGesture *tap = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) {
+ bool hit = hitButton(mapFromScene(event->mapToGraphicsScene(tap->position())));
switch(tap->state()) {
- case Qt::GestureStarted:{
+ case Qt::GestureStarted:
+ if( hit ){
#ifdef HB_EFFECTS
- HbEffect::start( this, HB_PUSHBUTTON_TYPE, "pressed" );
+ HbEffect::start( this, HB_PUSHBUTTON_TYPE, "pressed" );
#endif
+ if( d->checkable && !d->checked) {
+ setProperty( "state", "latched" );
+ }else if(!d->checkable) {
+ setProperty( "state", "pressed" );
+ }
+ }
+ break;
+ case Qt::GestureUpdated:
+ if(tap->tapStyleHint() == HbTapGesture::TapAndHold && hit) {
+ d->longPress = true;
+ emit longPress( event->mapToGraphicsScene(tap->position()) );
+ }
+ break;
+ case Qt::GestureCanceled:
+ setProperty( "state", "normal" );
+ break;
+ case Qt::GestureFinished:
+ if( hit ){
+#ifdef HB_EFFECTS
+ HbEffect::start( this, HB_PUSHBUTTON_TYPE, "released" );
+#endif
+ }
if( d->checkable && !d->checked) {
setProperty( "state", "latched" );
- }else if(!d->checkable) {
- setProperty( "state", "pressed" );
- }
- }
- break;
- case Qt::GestureUpdated:
- if(tap->tapStyleHint() == HbTapGesture::TapAndHold) {
- d->longPress = true;
- emit longPress( event->mapToGraphicsScene(tap->position()) );
- }
- break;
- case Qt::GestureCanceled:
- setProperty( "state", "normal" );
- break;
- case Qt::GestureFinished:{
-#ifdef HB_EFFECTS
- HbEffect::start( this, HB_PUSHBUTTON_TYPE, "released" );
-#endif
- if( d->checkable && !d->checked) {
- setProperty( "state", "latched" );
- }else {
+ }else {
setProperty( "state", "normal" );
}
-
- }
- break;
- default:
- break;
+ break;
+ default:
+ break;
}
}
-
HbAbstractButton::gestureEvent( event );
-
}
#endif
--- a/src/hbwidgets/widgets/hbsearchpanel_p.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/widgets/hbsearchpanel_p.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -163,6 +163,7 @@
if(mCancelEnabled) {
addCancelButton();
}
+ q->setFocusProxy(mLineEdit);
}
void HbSearchPanelPrivate::_q_hideClicked()
--- a/src/hbwidgets/widgets/hbtransparentwindow.cpp Fri Jun 11 13:58:22 2010 +0300
+++ b/src/hbwidgets/widgets/hbtransparentwindow.cpp Wed Jun 23 18:33:25 2010 +0300
@@ -60,6 +60,7 @@
HbTransparentWindow::HbTransparentWindow(QGraphicsItem *parent) :
HbWidget(parent)
{
+ setFlag(QGraphicsItem::ItemHasNoContents, false);
}
--- a/src/src.pro Fri Jun 11 13:58:22 2010 +0300
+++ b/src/src.pro Wed Jun 23 18:33:25 2010 +0300
@@ -83,3 +83,4 @@
}
include(hbcommon.pri)
+include(symbian_installs/symbian_installs.pri)
--- a/tsrc/resources/cssTestdata/css1.css Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-@variables
-{
- BodyColor: #000000, #000000, #000000, #000000, #000000;
- BackgroundColor: #00ff00, #ff0000, #0000ff, #00ff00, #ff0000;
- BorderColor: #00ff00, #ff0000, #0000ff, #ff0000, #0000ff;
- HighlightColor: var(BorderColor);
- label_disabled: #555555;
-}
-
-HbWidget
-{
- body-color: #00ff00, #ff0000, #0000ff;
- background-color: var(BackgroundColor);
- hcolor: var(HighlightColor);
- text-color: var(BorderColor);
-}
-
-HbWidget#TestWidget
-{
- body-color: #010200, #ff0000, #0000ff;
- background-color: var(BackgroundColor);
- hcolor: var(HighlightColor);
- text-color: var(BorderColor);
-}
-
-HbLabel
-{
- body-color: #000000, #000000, #000000, #000000, #000000;
- background-color: #000000, #000000, #000000, #000000, #000000;
- hcolor: #000000, #000000, #000000, #000000, #000000;
- text-color: #000000, #000000, #000000, #000000, #000000;
-}
-
-HbLabel[plainText="TestLabel"]
-{
- body-color: var(HighlightColor);
- background-color: #010200, #ff0000, #0000ff;
- hcolor: var(BackgroundColor);
- text-color: var(BorderColor);
-}
-
-HbLabel[!enabled]
-{
- body-color: var(label_disabled);
- background-color: #010200, #ff0000, #0000ff;
- hcolor: var(BackgroundColor);
- text-color: var(BorderColor);
-}
-
-HbWidget HbToolBar
-{
- body-color: #000000, #234567, #345678, #456789, #567890;
-}
-
-
-
-HbLabel > HbToolBar
-{
- body-color: #123456, #234567, #345678, #456789, #567890;
-}
-
-
-HbWidget HbDialog
-{
- body-color: #010101, #234567, #345678, #456789, #567890;
-}
-
-
-HbLabel HbDialog
-{
- body-color: #010203, #234567, #345678, #456789, #567890;
-}
--- a/tsrc/resources/cssTestdata/css2.css Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-* {
- border-color: black;
- }
-
-* {
- Float: black ;
- UnknownProperty: red ;
- BackgroundColor: blue ;
- Color: green ;
- Font: white ;
- FontFamily: red ;
- FontSize: blue ;
- FontStyle: green ;
- FontWeight: black ;
- Margin: white ;
- MarginBottom: red ;
- MarginLeft: blue ;
- MarginRight: green ;
- MarginTop: black ;
- QtBlockIndent: white ;
- QtListIndent: red ;
- QtParagraphType: blue ;
- QtTableType: green ;
- QtUserState: black ;
- TextDecoration: white ;
- TextIndent: red ;
- TextUnderlineStyle: blue ;
- VerticalAlignment: green ;
- Whitespace: black ;
- QtSelectionForeground: white ;
- QtSelectionBackground: red ;
- Border: blue ;
- BorderLeft: green ;
- BorderRight: black ;
- BorderTop: white ;
- BorderBottom: red ;
- Padding: blue ;
- PaddingLeft: green ;
- PaddingRight: black ;
- PaddingTop: white ;
- PaddingBottom: red ;
- PageBreakBefore: blue ;
- PageBreakAfter: green ;
- QtAlternateBackground: black ;
- BorderLeftStyle: white ;
- BorderRightStyle: red ;
- BorderTopStyle: blue ;
- BorderBottomStyle: green ;
- BorderStyles: black ;
- BorderLeftColor: white ;
- BorderRightColor: red ;
- BorderTopColor: blue ;
- BorderBottomColor: green ;
- BorderColor: black ;
- BorderLeftWidth: white ;
- BorderRightWidth: red ;
- BorderTopWidth: blue ;
- BorderBottomWidth: green ;
- BorderWidth: black ;
- BorderTopLeftRadius: white ;
- BorderTopRightRadius: red ;
- BorderBottomLeftRadius: blue ;
- BorderBottomRightRadius: green ;
- BorderRadius: black ;
- Background: white ;
- BackgroundOrigin: red ;
- BackgroundClip: blue ;
- BackgroundRepeat: green ;
- BackgroundPosition: black ;
- BackgroundAttachment: white ;
- BackgroundImage: red ;
- BorderImage: blue ;
- QtSpacing: green ;
- Width: black ;
- Height: white ;
- MinimumWidth: red ;
- MinimumHeight: blue ;
- MaximumWidth: green ;
- MaximumHeight: black ;
- QtImage: white ;
- Left: red ;
- Right: blue ;
- Top: green ;
- Bottom: black ;
- QtOrigin: white ;
- QtPosition: red ;
- Position: blue ;
- QtStyleFeatures: green ;
- QtBackgroundRole: black ;
- ListStyleType: white ;
- ListStyle: red ;
- QtImageAlignment: blue ;
- TextAlignment: green ;
- Outline: black ;
- OutlineOffset: white ;
- OutlineWidth: red ;
- OutlineColor: blue ;
- OutlineStyle: green ;
- OutlineRadius: black ;
- OutlineTopLeftRadius: white ;
- OutlineTopRightRadius: red ;
- OutlineBottomLeftRadius: blue ;
- OutlineBottomRightRadius: green ;
- FontVariant: black ;
- TextTransform: white ;
- HbSpacingHorizontal: red ;
- HbSpacingVertical: blue ;
- HbColumnNarrowWidth: green ;
- HbColumnWideWidth: black ;
- HbIndent: white ;
- HbSmallIconSize: red ;
- HbLargeIconSize: blue ;
- HbTopMarginWeight: green ;
- HbIconLeftAlignmentWeight: black ;
- HbStretchable: white ;
- NumProperties red ;
- }
--- a/tsrc/resources/cssTestdata/css3.css Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-.MyWidget {
- border-color: black;
- }
-
-.MyWidget {
- body-color: blue;
- }
\ No newline at end of file
--- a/tsrc/resources/cssTestdata/testcsssharing.css Fri Jun 11 13:58:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-HbWidget
-{
-width: 45;
-height: 45;
-}
\ No newline at end of file