after migration to new svn server
26
ChangeLog
@@ -1,3 +1,29 @@
|
|||||||
|
2015-11-16 12:37 marc
|
||||||
|
|
||||||
|
* doc/doxyfile.in: SVG must not be interactive for embedding in
|
||||||
|
redmine
|
||||||
|
|
||||||
|
2015-11-12 13:38 marc
|
||||||
|
|
||||||
|
* ax_init_standard_project.m4, bootstrap.sh, configure.ac,
|
||||||
|
debian/surfer-dev.install, debian/surfer-dev.install.in,
|
||||||
|
sql-to-dot.sed, surfer.desktop.in: flexible qt plugin path
|
||||||
|
|
||||||
|
2015-11-12 10:45 marc
|
||||||
|
|
||||||
|
* ChangeLog, bootstrap.sh, debian/surfer-dev.install,
|
||||||
|
sql-to-dot.sed: add designer plugins to installation
|
||||||
|
|
||||||
|
2015-11-11 15:25 marc
|
||||||
|
|
||||||
|
* src/qbrowserlib/downloadmanager.hxx: qt designer crashed when
|
||||||
|
loading WebViewWidget plugin
|
||||||
|
|
||||||
|
2015-11-10 14:42 marc
|
||||||
|
|
||||||
|
* debian/control.in: libqt4-webkit is named libqtwebkit-dev in
|
||||||
|
precise
|
||||||
|
|
||||||
2015-11-09 13:26 marc
|
2015-11-09 13:26 marc
|
||||||
|
|
||||||
* ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
|
* ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
|
||||||
|
@@ -90,16 +90,19 @@ AC_DEFUN([AX_ADD_MAKEFILE_TARGET_DEP], [
|
|||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
# Same as AC_SUBST, but adds -Dname="value" option to CPPFLAGS
|
# Same as AC_SUBST, but adds -Dname="value" option to CPPFLAGS and a
|
||||||
|
# notz only a @name@ replacement, but also a @name_ENCODED@ one to be
|
||||||
|
# used in code.
|
||||||
# - parameters:
|
# - parameters:
|
||||||
# $1 = variable name
|
# $1 = variable name
|
||||||
AC_DEFUN([AX_SUBST], [
|
AC_DEFUN([AX_SUBST], [
|
||||||
|
[$1]_ENCODED=$(echo "${$1}" | awk 1 ORS='\\n' | sed 's,\\n$,,')
|
||||||
|
[$1]_ENCODED=${[$1]_ENCODED//\"/\\\"}
|
||||||
|
[$1]_ENCODED=${[$1]_ENCODED//\'/\'\"\'\"\'}
|
||||||
|
[$1]_ENCODED=${[$1]_ENCODED//#/\\#}
|
||||||
|
AM_CPPFLAGS+=" '-D$1=\"${[$1]_ENCODED}\"'"
|
||||||
AC_SUBST([$1])
|
AC_SUBST([$1])
|
||||||
tmp_var=$(echo "${$1}" | awk 1 ORS='\\n' | sed 's,\\n$,,')
|
AC_SUBST([$1]_ENCODED)
|
||||||
tmp_var=${tmp_var//\"/\\\"}
|
|
||||||
tmp_var=${tmp_var//\'/\'\"\'\"\'}
|
|
||||||
tmp_var=${tmp_var//#/\\#}
|
|
||||||
AM_CPPFLAGS+=" '-D$1=\"${tmp_var}\"'"
|
|
||||||
AC_SUBST(AM_CPPFLAGS)
|
AC_SUBST(AM_CPPFLAGS)
|
||||||
])
|
])
|
||||||
|
|
||||||
@@ -167,16 +170,22 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [
|
|||||||
AX_SUBST(BUILD_NUMBER)
|
AX_SUBST(BUILD_NUMBER)
|
||||||
BUILD_DATE=$(LANG= date +"%a, %d %b %Y %H:%M:%S %z")
|
BUILD_DATE=$(LANG= date +"%a, %d %b %Y %H:%M:%S %z")
|
||||||
AX_SUBST(BUILD_DATE)
|
AX_SUBST(BUILD_DATE)
|
||||||
if test -f "${PACKAGE_NAME}.dektop.in"; then
|
if test -f "${PACKAGE_NAME}.desktop.in"; then
|
||||||
PACKAGE_DESKTOP="${PACKAGE_NAME}.dektop"
|
PACKAGE_DESKTOP="${PACKAGE_NAME}.desktop"
|
||||||
fi
|
fi
|
||||||
AX_SUBST(PACKAGE_DESKTOP)
|
AX_SUBST(PACKAGE_DESKTOP)
|
||||||
if test -f "${PACKAGE_NAME}-logo.png"; then
|
if test -f "${PACKAGE_NAME}-logo.png"; then
|
||||||
PACKAGE_LOGO="${PACKAGE_NAME}-logo.png"
|
PACKAGE_LOGO="${PACKAGE_NAME}-logo.png"
|
||||||
fi
|
fi
|
||||||
AX_SUBST(PACKAGE_LOGO)
|
AX_SUBST(PACKAGE_LOGO)
|
||||||
if test -f "${PACKAGE_NAME}-icon.png"; then
|
if test -f "${PACKAGE_NAME}-icon.svg"; then
|
||||||
|
PACKAGE_ICON="${PACKAGE_NAME}-icon.svg"
|
||||||
|
elif test -f "${PACKAGE_NAME}-icon.png"; then
|
||||||
PACKAGE_ICON="${PACKAGE_NAME}-icon.png"
|
PACKAGE_ICON="${PACKAGE_NAME}-icon.png"
|
||||||
|
elif test -f "${PACKAGE_NAME}.svg"; then
|
||||||
|
PACKAGE_ICON="${PACKAGE_NAME}.svg"
|
||||||
|
elif test -f "${PACKAGE_NAME}.png"; then
|
||||||
|
PACKAGE_ICON="${PACKAGE_NAME}.png"
|
||||||
fi
|
fi
|
||||||
AX_SUBST(PACKAGE_ICON)
|
AX_SUBST(PACKAGE_ICON)
|
||||||
|
|
||||||
|
13
bootstrap.sh
@@ -20,7 +20,7 @@ DEFAULT_PROJECT_NAME=${PROJECT_PATH##*/}
|
|||||||
configure=0
|
configure=0
|
||||||
build=0
|
build=0
|
||||||
docker=0
|
docker=0
|
||||||
buildtarget="distcheck"
|
buildtarget=""
|
||||||
overwrite=0
|
overwrite=0
|
||||||
rebuild=0
|
rebuild=0
|
||||||
rebuildfiles=()
|
rebuildfiles=()
|
||||||
@@ -28,8 +28,9 @@ while test $# -gt 0; do
|
|||||||
case "$1" in
|
case "$1" in
|
||||||
(--configure|-c) configure=1;;
|
(--configure|-c) configure=1;;
|
||||||
(--docker|-d) docker=1;;
|
(--docker|-d) docker=1;;
|
||||||
(--build|-b) configure=1; build=1;;
|
(--build|-b) configure=1; build=1; buildtarget+=" distcheck";;
|
||||||
(--target|-t) shift; configure=1; build=1; buildtarget="$1";;
|
(--target|-t) shift; configure=1; build=1; buildtarget+=" $1";;
|
||||||
|
(--clean) shift; configure=1; build=1; buildtarget+=" maintainer-clean";;
|
||||||
(--overwrite|-o) overwrite=1;;
|
(--overwrite|-o) overwrite=1;;
|
||||||
(--rebuild|-r) rebuild=1;;
|
(--rebuild|-r) rebuild=1;;
|
||||||
(--rebuild-file|-f) shift; rebuildfiles+=("$1");;
|
(--rebuild-file|-f) shift; rebuildfiles+=("$1");;
|
||||||
@@ -1043,10 +1044,10 @@ done
|
|||||||
to makefile.am<<EOF
|
to makefile.am<<EOF
|
||||||
${HEADER}SUBDIRS =${SUBDIRS}
|
${HEADER}SUBDIRS =${SUBDIRS}
|
||||||
|
|
||||||
desktopdir = ${datadir}/applications
|
desktopdir = \${datadir}/applications
|
||||||
desktop_DATA = @PACKAGE_DESKTOP@
|
desktop_DATA = @PACKAGE_DESKTOP@
|
||||||
pkgdata_DATA = @PACKAGE_ICON@
|
dist_pkgdata_DATA = @PACKAGE_ICON@
|
||||||
doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
|
dist_doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = makefile.in
|
MAINTAINERCLEANFILES = makefile.in
|
||||||
EOF
|
EOF
|
||||||
|
@@ -1,15 +1,177 @@
|
|||||||
#! /bin/bash -ex
|
#! /bin/bash -e
|
||||||
|
set -o errtrace
|
||||||
|
|
||||||
# build and test everything in a fresh docker installation
|
# build and test everything in a fresh docker installation
|
||||||
|
img="ubuntu:latest"
|
||||||
|
repos=()
|
||||||
|
keys=()
|
||||||
|
envs=()
|
||||||
|
dirs=("-v $(pwd):/workdir")
|
||||||
|
packages=()
|
||||||
|
targets="all check distcheck"
|
||||||
|
commands=()
|
||||||
|
if test -e ./build-in-docker.conf; then
|
||||||
|
# you can preconfigure the variables in file build-in-docker.conf
|
||||||
|
# if you do so, add the file to EXTRA_DIST in makefile.am
|
||||||
|
source ./build-in-docker.conf
|
||||||
|
fi
|
||||||
|
while test $# -gt 0; do
|
||||||
|
case "$1" in
|
||||||
|
(-h|--help)
|
||||||
|
echo "$0 [OPTIONS]"
|
||||||
|
echo
|
||||||
|
echo "OPTIONS:"
|
||||||
|
echo
|
||||||
|
echo " -h, --help show this help"
|
||||||
|
echo " -i, --image <image> use given docker image instead of ${img}"
|
||||||
|
echo " -t, --targets targets specify build targets, default: ${targets}"
|
||||||
|
echo " -r, --repo <url> add given apt repository"
|
||||||
|
echo " -k, --key <url> add public key from url"
|
||||||
|
echo " -e, --env <var>=<val> set environment variable in docker"
|
||||||
|
echo " -d, --dir <dir> access given directory read only"
|
||||||
|
echo " -p, --package <pkg> install extra debian packages"
|
||||||
|
echo " -c, --cmd <command> execute commands as root in docker"
|
||||||
|
echo
|
||||||
|
echo " The options -r -k -e -d -p -c can be repeated several times."
|
||||||
|
echo
|
||||||
|
echo " The options -r -p -c allow an if-then-else contruct"
|
||||||
|
echo " depending on the operating system:"
|
||||||
|
echo " <os>:::<A>:::<B>"
|
||||||
|
echo " <os>:::<A>"
|
||||||
|
echo " Read as: On linux type <os> use <A> else use <B>"
|
||||||
|
echo " That means: If the distributer ID or codename in lsb_release"
|
||||||
|
echo " matches regular expression <os>, then <A> is replaced, else <B> is replaced."
|
||||||
|
echo " The three colons are for splitting <os> from <A> and <B> part."
|
||||||
|
echo " E.g.: Install package curl on wheezy and npm on olter systems:"
|
||||||
|
echo " $0 -p Debian|precise:::curl:::npm"
|
||||||
|
echo
|
||||||
|
echo "EXAMPLE:"
|
||||||
|
echo
|
||||||
|
echo "$0 -i mwaeckerlin/ubuntu:trusty-i386 \\"
|
||||||
|
echo " -t deb \\"
|
||||||
|
echo " -e ANDROID_HOME=/opt/local/android \\"
|
||||||
|
echo " -d /opt/local/android \\"
|
||||||
|
echo " -r universe \\"
|
||||||
|
echo " -r https://dev.marc.waeckerlin.org/repository \\"
|
||||||
|
echo " -k https://dev.marc.waeckerlin.org/repository/PublicKey \\"
|
||||||
|
echo " -p mrw-c++"
|
||||||
|
echo
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
(-i|--image) shift;
|
||||||
|
img="$1"
|
||||||
|
;;
|
||||||
|
(-t|--targets) shift;
|
||||||
|
targets="$1"
|
||||||
|
;;
|
||||||
|
(-r|--repo) shift;
|
||||||
|
repos+=("$1")
|
||||||
|
;;
|
||||||
|
(-k|--key) shift;
|
||||||
|
keys+=("$1")
|
||||||
|
;;
|
||||||
|
(-e|--env) shift;
|
||||||
|
envs+=("-e $1")
|
||||||
|
;;
|
||||||
|
(-d|--dirs) shift;
|
||||||
|
dirs+=("-v $1:$1:ro")
|
||||||
|
;;
|
||||||
|
(-p|--package) shift;
|
||||||
|
packages+=("$1")
|
||||||
|
;;
|
||||||
|
(-c|--cmd) shift;
|
||||||
|
commands+=("$1")
|
||||||
|
;;
|
||||||
|
(*)
|
||||||
|
echo "**** ERROR: unknown option '$1', try --help" 1>&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if test $# -eq 0; then
|
||||||
|
echo "**** ERROR: missing value, try --help" 2>61
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
DOCKER_ID=$(docker run -d -v $(pwd):/workdir -w /workdir ubuntu sleep infinity)
|
function traperror() {
|
||||||
trap "docker rm -f ${DOCKER_ID}" INT TERM EXIT
|
set +x
|
||||||
docker exec ${DOCKER_ID} apt-get install -y software-properties-common apt-transport-https dpkg-dev
|
local DOCKER_ID="$1"
|
||||||
docker exec ${DOCKER_ID} apt-add-repository universe
|
local err=($2) # error status
|
||||||
docker exec ${DOCKER_ID} apt-add-repository https://dev.marc.waeckerlin.org/repository
|
local line="$3" # LINENO
|
||||||
wget -O- https://dev.marc.waeckerlin.org/repository/PublicKey \
|
local linecallfunc="$4"
|
||||||
| docker exec -i ${DOCKER_ID} apt-key add -
|
local command="$5"
|
||||||
|
local funcstack="$6"
|
||||||
|
for e in ${err[@]}; do
|
||||||
|
if test -n "$e" -a "$e" != "0"; then
|
||||||
|
echo "<---"
|
||||||
|
echo "ERROR: line $line - command '$command' exited with status: $e (${err[@]})"
|
||||||
|
if [ "${funcstack}" != "main" -o "$linecallfunc" != "0" ]; then
|
||||||
|
echo -n " ... Error at ${funcstack} "
|
||||||
|
if [ "$linecallfunc" != "" ]; then
|
||||||
|
echo -n "called at line $linecallfunc"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
echo -n " ... cleanup docker: "
|
||||||
|
docker rm -f "${DOCKER_ID}"
|
||||||
|
echo "returning status: $e"
|
||||||
|
echo "--->"
|
||||||
|
exit $e
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo -n " SUCCESS ... cleanup docker: "
|
||||||
|
docker rm -f "${DOCKER_ID}"
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function ifthenelse() {
|
||||||
|
arg="$1"
|
||||||
|
shift
|
||||||
|
cmd="$*"
|
||||||
|
if test "${arg/:::/}" = "${arg}"; then
|
||||||
|
docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${arg}}"
|
||||||
|
else
|
||||||
|
os="${arg%%:::*}"
|
||||||
|
thenpart="${arg#*:::}"
|
||||||
|
if test "${thenpart/:::/}" = "${thenpart}"; then
|
||||||
|
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$(dpkg --print-architecture)" =~ ${os} ]]; then '"${cmd//ARG/${thenpart}}"'; fi'
|
||||||
|
else
|
||||||
|
elsepart="${thenpart##*:::}"
|
||||||
|
thenpart="${thenpart%:::*}"
|
||||||
|
if test -n "${thenpart}"; then
|
||||||
|
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$(dpkg --print-architecture)" =~ ${os} ]]; then '"${cmd//ARG/${thenpart}}"'; else '"${cmd//ARG/${elsepart}}"'; fi'
|
||||||
|
else
|
||||||
|
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$(dpkg --print-architecture)" =~ ${os} ]]; then true; else '"${cmd//ARG/${elsepart}}"'; fi'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
docker pull $img
|
||||||
|
DOCKER_ID=$(docker run -d ${dirs[@]} ${envs[@]} -w /workdir $img sleep infinity)
|
||||||
|
trap 'traperror '"${DOCKER_ID}"' "$? ${PIPESTATUS[@]}" $LINENO $BASH_LINENO "$BASH_COMMAND" "${FUNCNAME[@]}" "${FUNCTION}"' SIGINT INT TERM EXIT
|
||||||
docker exec ${DOCKER_ID} apt-get update
|
docker exec ${DOCKER_ID} apt-get update
|
||||||
|
docker exec ${DOCKER_ID} apt-get upgrade -y
|
||||||
|
docker exec ${DOCKER_ID} apt-get install -y python-software-properties software-properties-common apt-transport-https dpkg-dev lsb-release || \
|
||||||
|
docker exec ${DOCKER_ID} apt-get install -y software-properties-common apt-transport-https dpkg-dev lsb-release || \
|
||||||
|
docker exec ${DOCKER_ID} apt-get install -y python-software-properties apt-transport-https dpkg-dev lsb-release;
|
||||||
|
for repo in "${repos[@]}"; do
|
||||||
|
ifthenelse "${repo}" "apt-add-repository ARG"
|
||||||
|
done
|
||||||
|
for key in "${keys[@]}"; do
|
||||||
|
wget -O- "$key" \
|
||||||
|
| docker exec -i ${DOCKER_ID} apt-key add -
|
||||||
|
done
|
||||||
|
docker exec ${DOCKER_ID} apt-get update
|
||||||
|
for package in "${packages[@]}"; do
|
||||||
|
ifthenelse "${package}" "apt-get install -y --force-yes ARG"
|
||||||
|
done
|
||||||
|
for command in "${commands[@]}"; do
|
||||||
|
ifthenelse "${command}" "ARG"
|
||||||
|
done
|
||||||
docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh
|
docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh
|
||||||
docker exec -u $(id -u) ${DOCKER_ID} svn upgrade || true
|
docker exec -u $(id -u) ${DOCKER_ID} svn upgrade || true
|
||||||
docker exec -u $(id -u) ${DOCKER_ID} ./bootstrap.sh -t "all check distcheck"
|
docker exec -u $(id -u) ${DOCKER_ID} ./bootstrap.sh -t "${targets}"
|
||||||
|
15
makefile.am
@@ -1,13 +1,18 @@
|
|||||||
## @id $Id$
|
## @id $Id$
|
||||||
#
|
##
|
||||||
# This file has been added by bootstrap.sh on Wed, 09 September 2015 15:45:15 +0200
|
## This file has been added:
|
||||||
# Feel free to change it or even remove and rebuild it, up to your needs
|
## - by bootstrap.sh
|
||||||
#
|
## - on Mon, 04 January 2016 10:52:26 +0100
|
||||||
|
## Feel free to change it or even remove and rebuild it, up to your needs
|
||||||
|
##
|
||||||
## 1 2 3 4 5 6 7 8
|
## 1 2 3 4 5 6 7 8
|
||||||
## 45678901234567890123456789012345678901234567890123456789012345678901234567890
|
## 45678901234567890123456789012345678901234567890123456789012345678901234567890
|
||||||
|
|
||||||
SUBDIRS = src doc examples
|
SUBDIRS = src doc examples
|
||||||
|
|
||||||
doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
|
desktopdir = ${datadir}/applications
|
||||||
|
desktop_DATA = @PACKAGE_DESKTOP@
|
||||||
|
dist_pkgdata_DATA = @PACKAGE_ICON@
|
||||||
|
dist_doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = makefile.in
|
MAINTAINERCLEANFILES = makefile.in
|
||||||
|
@@ -16,7 +16,11 @@ if test -n "${SCHROOTNAME}"; then
|
|||||||
SUDO="schroot -c "${SCHROOTNAME}" -u root -d / --"
|
SUDO="schroot -c "${SCHROOTNAME}" -u root -d / --"
|
||||||
else
|
else
|
||||||
DO=""
|
DO=""
|
||||||
|
if grep -q '/docker/' /proc/1/cgroup; then
|
||||||
|
SUDO=""
|
||||||
|
else
|
||||||
SUDO="sudo"
|
SUDO="sudo"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
function install() {
|
function install() {
|
||||||
@@ -31,7 +35,7 @@ TO_INSTALL=
|
|||||||
|
|
||||||
if test -e debian/control.in -a ! -e debian/control; then
|
if test -e debian/control.in -a ! -e debian/control; then
|
||||||
for f in $(sed -n 's, *AX_DEB_DEPEND_IFEXISTS(\([^)]*\)).*,\1,p' configure.ac); do
|
for f in $(sed -n 's, *AX_DEB_DEPEND_IFEXISTS(\([^)]*\)).*,\1,p' configure.ac); do
|
||||||
if test -n "$(${DO} apt-cache policy -q ${f})" && ! ${DO} dpkg -l "${f}"; then
|
if test -n "$(${DO} apt-cache policy -q ${f})" && ! "$(${DO} apt-cache policy ${f} 2>&1 | grep -q 'N: Unable to locate package')" && ! ${DO} dpkg -l "${f}"; then
|
||||||
TO_INSTALL+=" ${f}"
|
TO_INSTALL+=" ${f}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -41,7 +45,7 @@ if test -e debian/control.in -a ! -e debian/control; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
install dpkg-dev
|
install dpkg-dev
|
||||||
DEPS=$(${DO} dpkg-checkbuilddeps 2>&1 || true)
|
DEPS=$(LANG= ${DO} dpkg-checkbuilddeps 2>&1 || true)
|
||||||
DEPS=$(echo "$DEPS" | sed -n '/Unmet build dependencies/ { s,.*Unmet build dependencies: ,,g; s, ([^)]*),,g; s, *| *,|,g; p}')
|
DEPS=$(echo "$DEPS" | sed -n '/Unmet build dependencies/ { s,.*Unmet build dependencies: ,,g; s, ([^)]*),,g; s, *| *,|,g; p}')
|
||||||
|
|
||||||
for pa in ${DEPS}; do
|
for pa in ${DEPS}; do
|
||||||
|
@@ -91,13 +91,6 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
|||||||
actionStop->setVisible(false);
|
actionStop->setVisible(false);
|
||||||
actionReload->setVisible(false);
|
actionReload->setVisible(false);
|
||||||
show();
|
show();
|
||||||
try {
|
|
||||||
_networkManager.scAuth
|
|
||||||
(new SmartCardAuth(suisseid::Scanner(actlib.toStdString()).scan(),
|
|
||||||
this, login));
|
|
||||||
} catch (const std::exception& x) {
|
|
||||||
LOG<<"No SmartCard Support:"<<x.what();
|
|
||||||
}
|
|
||||||
statusBar()->addPermanentWidget(_find);
|
statusBar()->addPermanentWidget(_find);
|
||||||
_find->add(actionUnFind);
|
_find->add(actionUnFind);
|
||||||
_find->add(actionClearFind);
|
_find->add(actionClearFind);
|
||||||
@@ -107,10 +100,10 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
|||||||
sp.setHorizontalPolicy(QSizePolicy::Minimum);
|
sp.setHorizontalPolicy(QSizePolicy::Minimum);
|
||||||
_progress->setSizePolicy(sp);
|
_progress->setSizePolicy(sp);
|
||||||
QPushButton* btn(0);
|
QPushButton* btn(0);
|
||||||
statusBar()->addPermanentWidget(btn=new QPushButton("-"));
|
statusBar()->addPermanentWidget(btn=new QPushButton(QIcon(":/icons/zoom-out"), ""));
|
||||||
assert(connect(btn, SIGNAL(clicked(bool)), SLOT(smaller())));
|
assert(connect(btn, SIGNAL(clicked(bool)), SLOT(smaller())));
|
||||||
statusBar()->addPermanentWidget(_zoom = new QSlider(Qt::Horizontal));
|
statusBar()->addPermanentWidget(_zoom = new QSlider(Qt::Horizontal));
|
||||||
statusBar()->addPermanentWidget(btn=new QPushButton("+"));
|
statusBar()->addPermanentWidget(btn=new QPushButton(QIcon(":/icons/zoom-in"), ""));
|
||||||
assert(connect(btn, SIGNAL(clicked(bool)), SLOT(larger())));
|
assert(connect(btn, SIGNAL(clicked(bool)), SLOT(larger())));
|
||||||
sp = _zoom->sizePolicy();
|
sp = _zoom->sizePolicy();
|
||||||
sp.setHorizontalPolicy(QSizePolicy::Minimum);
|
sp.setHorizontalPolicy(QSizePolicy::Minimum);
|
||||||
@@ -195,6 +188,7 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
|||||||
if (!_kiosk) _toolbar->addAction(actionAddBookmark);
|
if (!_kiosk) _toolbar->addAction(actionAddBookmark);
|
||||||
_toolbar->addAction(actionHome);
|
_toolbar->addAction(actionHome);
|
||||||
}
|
}
|
||||||
|
newSettings();
|
||||||
(*_downloadManager)+=&_networkManager;
|
(*_downloadManager)+=&_networkManager;
|
||||||
assert(connect(&qbrowserlib::ErrorLog::instance(),
|
assert(connect(&qbrowserlib::ErrorLog::instance(),
|
||||||
SIGNAL(reset()), SLOT(errorReset())));
|
SIGNAL(reset()), SLOT(errorReset())));
|
||||||
@@ -212,7 +206,6 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
|||||||
SLOT(metaDataChanged(QNetworkReply*))));
|
SLOT(metaDataChanged(QNetworkReply*))));
|
||||||
assert(connect(&qbrowserlib::Settings::instance(),
|
assert(connect(&qbrowserlib::Settings::instance(),
|
||||||
SIGNAL(newSettings()), SLOT(newSettings())));
|
SIGNAL(newSettings()), SLOT(newSettings())));
|
||||||
newSettings();
|
|
||||||
on_actionNewTab_triggered();
|
on_actionNewTab_triggered();
|
||||||
|
|
||||||
if (!settings || _kiosk) {
|
if (!settings || _kiosk) {
|
||||||
@@ -607,6 +600,17 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
|||||||
_searchEngines->addItem(QIcon(":/icons/gg"), tr("gg"),
|
_searchEngines->addItem(QIcon(":/icons/gg"), tr("gg"),
|
||||||
tr("http://www.google.com/search?hl=%2&q=%1"));
|
tr("http://www.google.com/search?hl=%2&q=%1"));
|
||||||
_searchEngines->setVisible(_searchEngines->count()>1);
|
_searchEngines->setVisible(_searchEngines->count()>1);
|
||||||
|
if (qbrowserlib::Settings::instance().flag("SuisseID")) try {
|
||||||
|
_networkManager.scAuth
|
||||||
|
(new SmartCardAuth(suisseid::Scanner(qbrowserlib::Settings::instance()
|
||||||
|
.text("PKCS#11-Path").toStdString())
|
||||||
|
.scan(),
|
||||||
|
this, true));
|
||||||
|
} catch (const std::exception& x) {
|
||||||
|
qbrowserlib::ErrorLog::instance().append(tr("Error Loading SuisseID: %1")
|
||||||
|
.arg(QString::fromStdString(x.what())));
|
||||||
|
statusBar()->showMessage(tr("Error Loading SuisseID"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_actionAddBookmark_triggered() {
|
void on_actionAddBookmark_triggered() {
|
||||||
@@ -841,7 +845,8 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void on_actionCommandline_triggered() {
|
void on_actionCommandline_triggered() {
|
||||||
QMessageBox::information(this, tr("Commandline Arguments"), _helptext);
|
QMessageBox::information(this, tr("Commandline Arguments"),
|
||||||
|
"<pre>"+_helptext+"</pre>");
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_actionAbout_triggered() {
|
void on_actionAbout_triggered() {
|
||||||
|
@@ -70,7 +70,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>1009</width>
|
<width>1009</width>
|
||||||
<height>22</height>
|
<height>20</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QMenu" name="menuDatei">
|
<widget class="QMenu" name="menuDatei">
|
||||||
|
@@ -38,7 +38,7 @@ namespace qbrowserlib {
|
|||||||
TRC;
|
TRC;
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
}
|
}
|
||||||
public:
|
public Q_SLOTS:
|
||||||
void append(QString text) {
|
void append(QString text) {
|
||||||
TRC; LOG<<text;
|
TRC; LOG<<text;
|
||||||
_errors->append(text);
|
_errors->append(text);
|
||||||
|
@@ -1,5 +1,8 @@
|
|||||||
<RCC>
|
<RCC>
|
||||||
<qresource prefix="icons">
|
<qresource prefix="icons">
|
||||||
|
<file alias="suisseid.png">resources/icons/suisseid.png</file>
|
||||||
|
<file alias="zoom-in.svg">resources/icons/PICOL_icon_Zoom_in.svg</file>
|
||||||
|
<file alias="zoom-out.svg">resources/icons/PICOL_icon_Zoom_out.svg</file>
|
||||||
<file alias="tel.png">resources/icons/tel.png</file>
|
<file alias="tel.png">resources/icons/tel.png</file>
|
||||||
<file alias="wp.png">resources/icons/wp.png</file>
|
<file alias="wp.png">resources/icons/wp.png</file>
|
||||||
<file alias="surfer_32x32x32.png">resources/icons/surfer_32x32x32.png</file>
|
<file alias="surfer_32x32x32.png">resources/icons/surfer_32x32x32.png</file>
|
||||||
@@ -39,52 +42,5 @@
|
|||||||
<file alias="error.svg">resources/icons/error.svg</file>
|
<file alias="error.svg">resources/icons/error.svg</file>
|
||||||
<file alias="surfer.png">resources/icons/surfer.png</file>
|
<file alias="surfer.png">resources/icons/surfer.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="icons/48x48">
|
<qresource prefix="newPrefix"/>
|
||||||
<file alias="SW_Surfer_48x48x32.png">resources/icons/48x48/SW_Surfer_48x48x32.png</file>
|
|
||||||
</qresource>
|
|
||||||
<qresource prefix="icons/32x32">
|
|
||||||
<file alias="butt32_02.png">resources/icons/32x32/butt32_02.png</file>
|
|
||||||
<file alias="butt32_05.png">resources/icons/32x32/butt32_05.png</file>
|
|
||||||
<file alias="butt32_09.png">resources/icons/32x32/butt32_09.png</file>
|
|
||||||
<file alias="butt32_09_sw.png">resources/icons/32x32/butt32_09_sw.png</file>
|
|
||||||
<file alias="favicon.ico">resources/icons/32x32/favicon.ico</file>
|
|
||||||
<file alias="butt32_11.png">resources/icons/32x32/butt32_11.png</file>
|
|
||||||
<file alias="butt32_06.png">resources/icons/32x32/butt32_06.png</file>
|
|
||||||
<file alias="butt32_10_sw.png">resources/icons/32x32/butt32_10_sw.png</file>
|
|
||||||
<file alias="butt32_01.png">resources/icons/32x32/butt32_01.png</file>
|
|
||||||
<file alias="butt32_03.png">resources/icons/32x32/butt32_03.png</file>
|
|
||||||
<file alias="butt32_07.png">resources/icons/32x32/butt32_07.png</file>
|
|
||||||
<file alias="butt32_49.png">resources/icons/32x32/butt32_49.png</file>
|
|
||||||
<file alias="butt32_10.png">resources/icons/32x32/butt32_10.png</file>
|
|
||||||
<file alias="butt32_04.png">resources/icons/32x32/butt32_04.png</file>
|
|
||||||
<file alias="butt32_08.png">resources/icons/32x32/butt32_08.png</file>
|
|
||||||
<file alias="surfer.png">resources/icons/32x32/surfer.png</file>
|
|
||||||
</qresource>
|
|
||||||
<qresource prefix="icons/16x16">
|
|
||||||
<file alias="favicon.ico">resources/icons/16x16/favicon.ico</file>
|
|
||||||
<file alias="butt16_11.png">resources/icons/16x16/butt16_11.png</file>
|
|
||||||
<file alias="butt16_06.png">resources/icons/16x16/butt16_06.png</file>
|
|
||||||
<file alias="butt16_10_sw.png">resources/icons/16x16/butt16_10_sw.png</file>
|
|
||||||
<file alias="butt16_01.png">resources/icons/16x16/butt16_01.png</file>
|
|
||||||
<file alias="butt16_03.png">resources/icons/16x16/butt16_03.png</file>
|
|
||||||
<file alias="butt16_07.png">resources/icons/16x16/butt16_07.png</file>
|
|
||||||
<file alias="butt16_49.png">resources/icons/16x16/butt16_49.png</file>
|
|
||||||
<file alias="butt16_10.png">resources/icons/16x16/butt16_10.png</file>
|
|
||||||
<file alias="butt16_04.png">resources/icons/16x16/butt16_04.png</file>
|
|
||||||
<file alias="butt16_08.png">resources/icons/16x16/butt16_08.png</file>
|
|
||||||
<file alias="surfer.png">resources/icons/16x16/surfer.png</file>
|
|
||||||
<file alias="butt16_09_sw.png">resources/icons/16x16/butt16_09_sw.png</file>
|
|
||||||
<file alias="butt16_02.png">resources/icons/16x16/butt16_02.png</file>
|
|
||||||
<file alias="butt16_05.png">resources/icons/16x16/butt16_05.png</file>
|
|
||||||
<file alias="butt16_09.png">resources/icons/16x16/butt16_09.png</file>
|
|
||||||
</qresource>
|
|
||||||
<qresource prefix="icons/512x512">
|
|
||||||
<file alias="SW_Surfer_512x512x32.png">resources/icons/512x512/SW_Surfer_512x512x32.png</file>
|
|
||||||
</qresource>
|
|
||||||
<qresource prefix="icons/128x128">
|
|
||||||
<file alias="SW_Surfer_128x128x32.png">resources/icons/128x128/SW_Surfer_128x128x32.png</file>
|
|
||||||
</qresource>
|
|
||||||
<qresource prefix="icons/256x256">
|
|
||||||
<file alias="SW_Surfer_256x256x32.png">resources/icons/256x256/SW_Surfer_256x256x32.png</file>
|
|
||||||
</qresource>
|
|
||||||
</RCC>
|
</RCC>
|
||||||
|
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 527 B |
Before Width: | Height: | Size: 591 B |
Before Width: | Height: | Size: 422 B |
Before Width: | Height: | Size: 425 B |
Before Width: | Height: | Size: 445 B |
Before Width: | Height: | Size: 521 B |
Before Width: | Height: | Size: 475 B |
Before Width: | Height: | Size: 546 B |
Before Width: | Height: | Size: 569 B |
Before Width: | Height: | Size: 521 B |
Before Width: | Height: | Size: 550 B |
Before Width: | Height: | Size: 512 B |
Before Width: | Height: | Size: 412 B |
Before Width: | Height: | Size: 577 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 942 B |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 651 B |
Before Width: | Height: | Size: 805 B |
Before Width: | Height: | Size: 433 B |
Before Width: | Height: | Size: 441 B |
Before Width: | Height: | Size: 518 B |
Before Width: | Height: | Size: 640 B |
Before Width: | Height: | Size: 628 B |
Before Width: | Height: | Size: 662 B |
Before Width: | Height: | Size: 798 B |
Before Width: | Height: | Size: 657 B |
Before Width: | Height: | Size: 729 B |
Before Width: | Height: | Size: 620 B |
Before Width: | Height: | Size: 482 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 64 KiB |
58
src/qbrowserlib/resources/icons/PICOL_icon_Zoom_in.svg
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
version="1.1"
|
||||||
|
x="0px"
|
||||||
|
y="0px"
|
||||||
|
width="32px"
|
||||||
|
height="32px"
|
||||||
|
viewBox="0 0 32 32"
|
||||||
|
enable-background="new 0 0 32 32"
|
||||||
|
xml:space="preserve"
|
||||||
|
id="svg2"
|
||||||
|
inkscape:version="0.48.4 r9939"
|
||||||
|
sodipodi:docname="zoom_in.svg"><defs
|
||||||
|
id="defs3394" /><sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="640"
|
||||||
|
inkscape:window-height="480"
|
||||||
|
id="namedview3392"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="7.375"
|
||||||
|
inkscape:cx="16"
|
||||||
|
inkscape:cy="16"
|
||||||
|
inkscape:window-x="53"
|
||||||
|
inkscape:window-y="24"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="svg2" /><metadata
|
||||||
|
id="metadata3380"><rdf:RDF><cc:Work
|
||||||
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>PICOL Icon</dc:title><dc:date>2009-03-15</dc:date><dc:creator><cc:Agent><dc:title>Melih Bilgil</dc:title></cc:Agent></dc:creator><dc:rights><cc:Agent><dc:title>Creative Commons BY-SA</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>PICOL - Pictorial Communication Language</dc:title></cc:Agent></dc:publisher><dc:identifier>http://blog.picol.org</dc:identifier><dc:source>http://blog.picol.org</dc:source><dc:language>en</dc:language><dc:subject><rdf:Bag><rdf:li>PICOL</rdf:li><rdf:li>icon</rdf:li><rdf:li>icons</rdf:li><rdf:li>sign</rdf:li><rdf:li>GUI</rdf:li><rdf:li>vector</rdf:li><rdf:li>interface</rdf:li></rdf:Bag></dc:subject><dc:description>This is one icon out of all PICOL icons</dc:description><dc:contributor><cc:Agent><dc:title>Melih Bilgil (www.lonja.de), Christopher Adjei (www.boffer.net)</dc:title></cc:Agent></dc:contributor><cc:license
|
||||||
|
rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /></cc:Work><cc:License
|
||||||
|
rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"><cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><g
|
||||||
|
id="background"><rect
|
||||||
|
fill="none"
|
||||||
|
width="32"
|
||||||
|
height="32"
|
||||||
|
id="rect3383" /></g><path
|
||||||
|
id="path3390"
|
||||||
|
d="M 30,26 19.085,15.085 c 0.622,-1.229 0.98,-2.614 0.981,-4.086 -0.002,-5.008 -4.058,-9.066 -9.067,-9.066 -5.008,0 -9.066,4.058 -9.066,9.066 0,5.01 4.058,9.065 9.066,9.067 1.472,-10e-4 2.857,-0.359 4.086,-0.981 L 26,30 30,26 z M 4.066,10.999 c 0.008,-3.83 3.104,-6.925 6.933,-6.933 3.832,0.008 6.927,3.104 6.933,6.933 -0.006,3.832 -3.101,6.927 -6.933,6.933 C 7.169,17.926 4.074,14.831 4.066,10.999 z M 10,10 l -4,0 0,2 4,0 0,4 2.002,0 0,-4 3.998,0 0,-2 -3.998,0 0,-4 L 10,6 z" /></svg>
|
After Width: | Height: | Size: 3.5 KiB |
58
src/qbrowserlib/resources/icons/PICOL_icon_Zoom_out.svg
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
version="1.1"
|
||||||
|
x="0px"
|
||||||
|
y="0px"
|
||||||
|
width="32px"
|
||||||
|
height="32px"
|
||||||
|
viewBox="0 0 32 32"
|
||||||
|
enable-background="new 0 0 32 32"
|
||||||
|
xml:space="preserve"
|
||||||
|
id="svg2"
|
||||||
|
inkscape:version="0.48.4 r9939"
|
||||||
|
sodipodi:docname="zoom_out.svg"><defs
|
||||||
|
id="defs3411" /><sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="640"
|
||||||
|
inkscape:window-height="480"
|
||||||
|
id="namedview3409"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="7.375"
|
||||||
|
inkscape:cx="16"
|
||||||
|
inkscape:cy="16"
|
||||||
|
inkscape:window-x="53"
|
||||||
|
inkscape:window-y="24"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="svg2" /><metadata
|
||||||
|
id="metadata3397"><rdf:RDF><cc:Work
|
||||||
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>PICOL Icon</dc:title><dc:date>2009-03-15</dc:date><dc:creator><cc:Agent><dc:title>Melih Bilgil</dc:title></cc:Agent></dc:creator><dc:rights><cc:Agent><dc:title>Creative Commons BY-SA</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>PICOL - Pictorial Communication Language</dc:title></cc:Agent></dc:publisher><dc:identifier>http://blog.picol.org</dc:identifier><dc:source>http://blog.picol.org</dc:source><dc:language>en</dc:language><dc:subject><rdf:Bag><rdf:li>PICOL</rdf:li><rdf:li>icon</rdf:li><rdf:li>icons</rdf:li><rdf:li>sign</rdf:li><rdf:li>GUI</rdf:li><rdf:li>vector</rdf:li><rdf:li>interface</rdf:li></rdf:Bag></dc:subject><dc:description>This is one icon out of all PICOL icons</dc:description><dc:contributor><cc:Agent><dc:title>Melih Bilgil (www.lonja.de), Christopher Adjei (www.boffer.net)</dc:title></cc:Agent></dc:contributor><cc:license
|
||||||
|
rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /></cc:Work><cc:License
|
||||||
|
rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"><cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><g
|
||||||
|
id="background"><rect
|
||||||
|
fill="none"
|
||||||
|
width="32"
|
||||||
|
height="32"
|
||||||
|
id="rect3400" /></g><path
|
||||||
|
id="path3407"
|
||||||
|
d="M 30,26 19.085,15.085 c 0.622,-1.229 0.98,-2.614 0.981,-4.086 -0.002,-5.008 -4.058,-9.066 -9.067,-9.066 -5.008,0 -9.066,4.058 -9.066,9.066 0,5.01 4.058,9.065 9.066,9.067 1.472,-10e-4 2.857,-0.359 4.086,-0.981 L 26,30 30,26 z M 4.066,10.999 c 0.008,-3.83 3.104,-6.925 6.933,-6.933 3.832,0.008 6.927,3.104 6.933,6.933 -0.006,3.832 -3.101,6.927 -6.933,6.933 C 7.169,17.926 4.074,14.831 4.066,10.999 z M 6,10 l 10,0 0,2 -10,0 z" /></svg>
|
After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 2.3 KiB |
@@ -125,6 +125,12 @@ namespace qbrowserlib {
|
|||||||
std::make_pair(_saveWindowState, _saveWindowState->isChecked());
|
std::make_pair(_saveWindowState, _saveWindowState->isChecked());
|
||||||
_checkboxes["CloseApps"] =
|
_checkboxes["CloseApps"] =
|
||||||
std::make_pair(_closeApps, _closeApps->isChecked());
|
std::make_pair(_closeApps, _closeApps->isChecked());
|
||||||
|
_checkboxes["SuisseID"] =
|
||||||
|
std::make_pair(_suisseid, _suisseid->isChecked());
|
||||||
|
|
||||||
|
// LineEdits
|
||||||
|
_lineedits["PKCS#11-Path"] =
|
||||||
|
std::make_pair(_p11path, _p11path->text());
|
||||||
|
|
||||||
load(!_mimetypes.size());
|
load(!_mimetypes.size());
|
||||||
on__buttons_rejected();
|
on__buttons_rejected();
|
||||||
@@ -384,9 +390,28 @@ namespace qbrowserlib {
|
|||||||
_searchEngineTable->removeRow(begin);
|
_searchEngineTable->removeRow(begin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void on__addSuisseidServer_pressed() {
|
||||||
|
_suisseidServers->setRowCount(_suisseidServers->rowCount()+1);
|
||||||
|
_suisseidServers->setItem(_suisseidServers->rowCount()-1, 0,
|
||||||
|
new QTableWidgetItem);
|
||||||
|
_suisseidServers->setItem(_suisseidServers->rowCount()-1, 1,
|
||||||
|
new QTableWidgetItem);
|
||||||
|
_suisseidServers->setItem(_suisseidServers->rowCount()-1, 2,
|
||||||
|
new QTableWidgetItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
void on__removeSuisseidServer_pressed() {
|
||||||
|
QList<QTableWidgetSelectionRange> ranges
|
||||||
|
(_suisseidServers->selectedRanges());
|
||||||
|
if (ranges.isEmpty()) return;
|
||||||
|
for (int begin(ranges.at(0).topRow()), count(ranges.at(0).rowCount());
|
||||||
|
count; --count)
|
||||||
|
_suisseidServers->removeRow(begin);
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
typedef std::map<QWebSettings::WebAttribute, QCheckBox*> Attributes ;
|
typedef std::map<QWebSettings::WebAttribute, QCheckBox*> Attributes;
|
||||||
Attributes _attributes;
|
Attributes _attributes;
|
||||||
typedef std::map<QString, std::pair<QCheckBox*, bool> > CheckBoxes;
|
typedef std::map<QString, std::pair<QCheckBox*, bool> > CheckBoxes;
|
||||||
CheckBoxes _checkboxes;
|
CheckBoxes _checkboxes;
|
||||||
|
@@ -17,7 +17,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="tabWidget">
|
<widget class="QTabWidget" name="tabWidget">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>5</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tab">
|
<widget class="QWidget" name="tab">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
@@ -647,7 +647,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="_saveWindowState">
|
<widget class="QCheckBox" name="_saveWindowState">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>save window state when opened withiut URL</string>
|
<string>save window state when opened without URL</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -682,6 +682,103 @@ p, li { white-space: pre-wrap; }
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QWidget" name="tab_6">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>SuisseID</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_14">
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="_suisseid">
|
||||||
|
<property name="text">
|
||||||
|
<string>Use SuisseID</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="resources.qrc">
|
||||||
|
<normaloff>:/icons/suisseid.png</normaloff>:/icons/suisseid.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>64</width>
|
||||||
|
<height>32</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="text">
|
||||||
|
<string>PKCS#11 Library Path:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="_p11path">
|
||||||
|
<property name="text">
|
||||||
|
<string>libcvP11.so</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTableWidget" name="_suisseidServers">
|
||||||
|
<attribute name="horizontalHeaderCascadingSectionResizes">
|
||||||
|
<bool>true</bool>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="horizontalHeaderStretchLastSection">
|
||||||
|
<bool>true</bool>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="verticalHeaderStretchLastSection">
|
||||||
|
<bool>true</bool>
|
||||||
|
</attribute>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Servers that are allowed to require SuisseID</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="_addSuisseidServer">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>+</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="_removeSuisseidServer">
|
||||||
|
<property name="text">
|
||||||
|
<string>-</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@@ -711,7 +808,6 @@ p, li { white-space: pre-wrap; }
|
|||||||
<tabstop>_settingPrintElementBackgrounds</tabstop>
|
<tabstop>_settingPrintElementBackgrounds</tabstop>
|
||||||
<tabstop>_settingAcceleratedCompositingEnabled</tabstop>
|
<tabstop>_settingAcceleratedCompositingEnabled</tabstop>
|
||||||
<tabstop>_settingTiledBackingStoreEnabled</tabstop>
|
<tabstop>_settingTiledBackingStoreEnabled</tabstop>
|
||||||
<tabstop>tabWidget</tabstop>
|
|
||||||
<tabstop>_settingFrameFlatteningEnabled</tabstop>
|
<tabstop>_settingFrameFlatteningEnabled</tabstop>
|
||||||
<tabstop>_settingSiteSpecificQuirksEnabled</tabstop>
|
<tabstop>_settingSiteSpecificQuirksEnabled</tabstop>
|
||||||
<tabstop>_settingJavascriptEnabled</tabstop>
|
<tabstop>_settingJavascriptEnabled</tabstop>
|
||||||
@@ -726,7 +822,9 @@ p, li { white-space: pre-wrap; }
|
|||||||
<tabstop>_settingLocalContentCanAccessRemoteUrls</tabstop>
|
<tabstop>_settingLocalContentCanAccessRemoteUrls</tabstop>
|
||||||
<tabstop>_settingLocalContentCanAccessFileUrls</tabstop>
|
<tabstop>_settingLocalContentCanAccessFileUrls</tabstop>
|
||||||
</tabstops>
|
</tabstops>
|
||||||
<resources/>
|
<resources>
|
||||||
|
<include location="resources.qrc"/>
|
||||||
|
</resources>
|
||||||
<connections>
|
<connections>
|
||||||
<connection>
|
<connection>
|
||||||
<sender>_buttons</sender>
|
<sender>_buttons</sender>
|
||||||
|
@@ -115,15 +115,51 @@ class CryptokiEngine: public QObject, public openssl::Engine {
|
|||||||
virtual std::string rsaSign(const std::string& in, unsigned int type) try {
|
virtual std::string rsaSign(const std::string& in, unsigned int type) try {
|
||||||
TRC; LOG<<"log; type="<<type<<"; size="<<in.size();
|
TRC; LOG<<"log; type="<<type<<"; size="<<in.size();
|
||||||
LOG<<crypto::readable(in).c_str();
|
LOG<<crypto::readable(in).c_str();
|
||||||
if (type != NID_md5_sha1) throw std::runtime_error("wrong sign type");
|
/* std::string data;
|
||||||
if (in.size() != 36) throw std::runtime_error("wrong msg size to sign");
|
switch (type) {
|
||||||
LOG<<"ready to sign";
|
case NID_sha1:
|
||||||
|
data += QString(QByteArray::fromHex("3021300906052b0e03021a05000414"))
|
||||||
|
.toStdString();
|
||||||
|
break;
|
||||||
|
case NID_sha224:
|
||||||
|
data += QString(QByteArray::fromHex("302d300d06096086480165030402040500041c"))
|
||||||
|
.toStdString();
|
||||||
|
break;
|
||||||
|
case NID_sha256:
|
||||||
|
data += QString(QByteArray::fromHex("3031300d060960864801650304020105000420"))
|
||||||
|
.toStdString();
|
||||||
|
break;
|
||||||
|
case NID_sha384:
|
||||||
|
data += QString(QByteArray::fromHex("3041300d060960864801650304020205000430"))
|
||||||
|
.toStdString();
|
||||||
|
break;
|
||||||
|
case NID_sha512:
|
||||||
|
data += QString(QByteArray::fromHex("3051300d060960864801650304020305000440"))
|
||||||
|
.toStdString();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
data += in; */
|
||||||
|
unsigned int algo(CKM_RSA_PKCS);
|
||||||
|
switch (type) {
|
||||||
|
case NID_md5_sha1: algo = CKM_RSA_PKCS; break;
|
||||||
|
case NID_md2: algo = CKM_MD2_RSA_PKCS; break;
|
||||||
|
case NID_md5: algo = CKM_MD5_RSA_PKCS; break;
|
||||||
|
case NID_sha1: algo = CKM_SHA1_RSA_PKCS; break;
|
||||||
|
case NID_sha256: algo = CKM_SHA256_RSA_PKCS; break;
|
||||||
|
case NID_sha384: algo = CKM_SHA384_RSA_PKCS; break;
|
||||||
|
case NID_sha512: algo = CKM_SHA512_RSA_PKCS; break;
|
||||||
|
case NID_ripemd160: algo = CKM_RIPEMD160_RSA_PKCS; break;
|
||||||
|
default: throw std::runtime_error("unknown sign mechanism");
|
||||||
|
}
|
||||||
|
LOG<<"ready to sign with algorith "<<algo;
|
||||||
try {
|
try {
|
||||||
return _privateKey->sign(in, CKM_RSA_PKCS);
|
return _privateKey->sign(in, algo);
|
||||||
} catch (const std::exception& x) {
|
} catch (const std::exception& x) {
|
||||||
LOG<<"signature failed, reason: "<<x.what();
|
LOG<<"signature failed, reason: "<<x.what();
|
||||||
certRequired(); // get new certificate
|
certRequired(); // get new certificate
|
||||||
return _privateKey->sign(in, CKM_RSA_PKCS); // try again
|
return _privateKey->sign(in, algo); // try again
|
||||||
}
|
}
|
||||||
} catch (const std::exception& x) {
|
} catch (const std::exception& x) {
|
||||||
TRC; LOG<<"rsaSign failed, reason: "<<x.what();
|
TRC; LOG<<"rsaSign failed, reason: "<<x.what();
|
||||||
|
BIN
surfer-icon.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
surfer-logo.png
Normal file
After Width: | Height: | Size: 3.6 KiB |