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
|
||||
|
||||
* ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
|
||||
|
@@ -90,16 +90,19 @@ AC_DEFUN([AX_ADD_MAKEFILE_TARGET_DEP], [
|
||||
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:
|
||||
# $1 = variable name
|
||||
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])
|
||||
tmp_var=$(echo "${$1}" | awk 1 ORS='\\n' | sed 's,\\n$,,')
|
||||
tmp_var=${tmp_var//\"/\\\"}
|
||||
tmp_var=${tmp_var//\'/\'\"\'\"\'}
|
||||
tmp_var=${tmp_var//#/\\#}
|
||||
AM_CPPFLAGS+=" '-D$1=\"${tmp_var}\"'"
|
||||
AC_SUBST([$1]_ENCODED)
|
||||
AC_SUBST(AM_CPPFLAGS)
|
||||
])
|
||||
|
||||
@@ -167,16 +170,22 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [
|
||||
AX_SUBST(BUILD_NUMBER)
|
||||
BUILD_DATE=$(LANG= date +"%a, %d %b %Y %H:%M:%S %z")
|
||||
AX_SUBST(BUILD_DATE)
|
||||
if test -f "${PACKAGE_NAME}.dektop.in"; then
|
||||
PACKAGE_DESKTOP="${PACKAGE_NAME}.dektop"
|
||||
if test -f "${PACKAGE_NAME}.desktop.in"; then
|
||||
PACKAGE_DESKTOP="${PACKAGE_NAME}.desktop"
|
||||
fi
|
||||
AX_SUBST(PACKAGE_DESKTOP)
|
||||
if test -f "${PACKAGE_NAME}-logo.png"; then
|
||||
PACKAGE_LOGO="${PACKAGE_NAME}-logo.png"
|
||||
fi
|
||||
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"
|
||||
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
|
||||
AX_SUBST(PACKAGE_ICON)
|
||||
|
||||
|
13
bootstrap.sh
@@ -20,7 +20,7 @@ DEFAULT_PROJECT_NAME=${PROJECT_PATH##*/}
|
||||
configure=0
|
||||
build=0
|
||||
docker=0
|
||||
buildtarget="distcheck"
|
||||
buildtarget=""
|
||||
overwrite=0
|
||||
rebuild=0
|
||||
rebuildfiles=()
|
||||
@@ -28,8 +28,9 @@ while test $# -gt 0; do
|
||||
case "$1" in
|
||||
(--configure|-c) configure=1;;
|
||||
(--docker|-d) docker=1;;
|
||||
(--build|-b) configure=1; build=1;;
|
||||
(--target|-t) shift; configure=1; build=1; buildtarget="$1";;
|
||||
(--build|-b) configure=1; build=1; buildtarget+=" distcheck";;
|
||||
(--target|-t) shift; configure=1; build=1; buildtarget+=" $1";;
|
||||
(--clean) shift; configure=1; build=1; buildtarget+=" maintainer-clean";;
|
||||
(--overwrite|-o) overwrite=1;;
|
||||
(--rebuild|-r) rebuild=1;;
|
||||
(--rebuild-file|-f) shift; rebuildfiles+=("$1");;
|
||||
@@ -1043,10 +1044,10 @@ done
|
||||
to makefile.am<<EOF
|
||||
${HEADER}SUBDIRS =${SUBDIRS}
|
||||
|
||||
desktopdir = ${datadir}/applications
|
||||
desktopdir = \${datadir}/applications
|
||||
desktop_DATA = @PACKAGE_DESKTOP@
|
||||
pkgdata_DATA = @PACKAGE_ICON@
|
||||
doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
|
||||
dist_pkgdata_DATA = @PACKAGE_ICON@
|
||||
dist_doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
|
||||
|
||||
MAINTAINERCLEANFILES = makefile.in
|
||||
EOF
|
||||
|
@@ -1,15 +1,177 @@
|
||||
#! /bin/bash -ex
|
||||
#! /bin/bash -e
|
||||
set -o errtrace
|
||||
|
||||
# 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)
|
||||
trap "docker rm -f ${DOCKER_ID}" INT TERM EXIT
|
||||
docker exec ${DOCKER_ID} apt-get install -y software-properties-common apt-transport-https dpkg-dev
|
||||
docker exec ${DOCKER_ID} apt-add-repository universe
|
||||
docker exec ${DOCKER_ID} apt-add-repository https://dev.marc.waeckerlin.org/repository
|
||||
wget -O- https://dev.marc.waeckerlin.org/repository/PublicKey \
|
||||
| docker exec -i ${DOCKER_ID} apt-key add -
|
||||
function traperror() {
|
||||
set +x
|
||||
local DOCKER_ID="$1"
|
||||
local err=($2) # error status
|
||||
local line="$3" # LINENO
|
||||
local linecallfunc="$4"
|
||||
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 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 -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$
|
||||
#
|
||||
# This file has been added by bootstrap.sh on Wed, 09 September 2015 15:45:15 +0200
|
||||
# Feel free to change it or even remove and rebuild it, up to your needs
|
||||
#
|
||||
##
|
||||
## This file has been added:
|
||||
## - 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
|
||||
## 45678901234567890123456789012345678901234567890123456789012345678901234567890
|
||||
|
||||
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
|
||||
|
@@ -16,7 +16,11 @@ if test -n "${SCHROOTNAME}"; then
|
||||
SUDO="schroot -c "${SCHROOTNAME}" -u root -d / --"
|
||||
else
|
||||
DO=""
|
||||
SUDO="sudo"
|
||||
if grep -q '/docker/' /proc/1/cgroup; then
|
||||
SUDO=""
|
||||
else
|
||||
SUDO="sudo"
|
||||
fi
|
||||
fi
|
||||
|
||||
function install() {
|
||||
@@ -31,7 +35,7 @@ TO_INSTALL=
|
||||
|
||||
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
|
||||
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}"
|
||||
fi
|
||||
done
|
||||
@@ -41,7 +45,7 @@ if test -e debian/control.in -a ! -e debian/control; then
|
||||
fi
|
||||
|
||||
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}')
|
||||
|
||||
for pa in ${DEPS}; do
|
||||
|
@@ -91,13 +91,6 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
||||
actionStop->setVisible(false);
|
||||
actionReload->setVisible(false);
|
||||
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);
|
||||
_find->add(actionUnFind);
|
||||
_find->add(actionClearFind);
|
||||
@@ -107,10 +100,10 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
||||
sp.setHorizontalPolicy(QSizePolicy::Minimum);
|
||||
_progress->setSizePolicy(sp);
|
||||
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())));
|
||||
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())));
|
||||
sp = _zoom->sizePolicy();
|
||||
sp.setHorizontalPolicy(QSizePolicy::Minimum);
|
||||
@@ -195,6 +188,7 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
||||
if (!_kiosk) _toolbar->addAction(actionAddBookmark);
|
||||
_toolbar->addAction(actionHome);
|
||||
}
|
||||
newSettings();
|
||||
(*_downloadManager)+=&_networkManager;
|
||||
assert(connect(&qbrowserlib::ErrorLog::instance(),
|
||||
SIGNAL(reset()), SLOT(errorReset())));
|
||||
@@ -212,7 +206,6 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
||||
SLOT(metaDataChanged(QNetworkReply*))));
|
||||
assert(connect(&qbrowserlib::Settings::instance(),
|
||||
SIGNAL(newSettings()), SLOT(newSettings())));
|
||||
newSettings();
|
||||
on_actionNewTab_triggered();
|
||||
|
||||
if (!settings || _kiosk) {
|
||||
@@ -607,6 +600,17 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
||||
_searchEngines->addItem(QIcon(":/icons/gg"), tr("gg"),
|
||||
tr("http://www.google.com/search?hl=%2&q=%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() {
|
||||
@@ -841,7 +845,8 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
||||
}
|
||||
|
||||
void on_actionCommandline_triggered() {
|
||||
QMessageBox::information(this, tr("Commandline Arguments"), _helptext);
|
||||
QMessageBox::information(this, tr("Commandline Arguments"),
|
||||
"<pre>"+_helptext+"</pre>");
|
||||
}
|
||||
|
||||
void on_actionAbout_triggered() {
|
||||
|
@@ -70,7 +70,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1009</width>
|
||||
<height>22</height>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuDatei">
|
||||
|
@@ -38,7 +38,7 @@ namespace qbrowserlib {
|
||||
TRC;
|
||||
setupUi(this);
|
||||
}
|
||||
public:
|
||||
public Q_SLOTS:
|
||||
void append(QString text) {
|
||||
TRC; LOG<<text;
|
||||
_errors->append(text);
|
||||
|
@@ -1,5 +1,8 @@
|
||||
<RCC>
|
||||
<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="wp.png">resources/icons/wp.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="surfer.png">resources/icons/surfer.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="icons/48x48">
|
||||
<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>
|
||||
<qresource prefix="newPrefix"/>
|
||||
</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());
|
||||
_checkboxes["CloseApps"] =
|
||||
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());
|
||||
on__buttons_rejected();
|
||||
@@ -384,9 +390,28 @@ namespace qbrowserlib {
|
||||
_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:
|
||||
|
||||
typedef std::map<QWebSettings::WebAttribute, QCheckBox*> Attributes ;
|
||||
typedef std::map<QWebSettings::WebAttribute, QCheckBox*> Attributes;
|
||||
Attributes _attributes;
|
||||
typedef std::map<QString, std::pair<QCheckBox*, bool> > CheckBoxes;
|
||||
CheckBoxes _checkboxes;
|
||||
|
@@ -17,7 +17,7 @@
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>5</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab">
|
||||
<attribute name="title">
|
||||
@@ -647,7 +647,7 @@ p, li { white-space: pre-wrap; }
|
||||
<item>
|
||||
<widget class="QCheckBox" name="_saveWindowState">
|
||||
<property name="text">
|
||||
<string>save window state when opened withiut URL</string>
|
||||
<string>save window state when opened without URL</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -682,6 +682,103 @@ p, li { white-space: pre-wrap; }
|
||||
</item>
|
||||
</layout>
|
||||
</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>
|
||||
</item>
|
||||
<item>
|
||||
@@ -711,7 +808,6 @@ p, li { white-space: pre-wrap; }
|
||||
<tabstop>_settingPrintElementBackgrounds</tabstop>
|
||||
<tabstop>_settingAcceleratedCompositingEnabled</tabstop>
|
||||
<tabstop>_settingTiledBackingStoreEnabled</tabstop>
|
||||
<tabstop>tabWidget</tabstop>
|
||||
<tabstop>_settingFrameFlatteningEnabled</tabstop>
|
||||
<tabstop>_settingSiteSpecificQuirksEnabled</tabstop>
|
||||
<tabstop>_settingJavascriptEnabled</tabstop>
|
||||
@@ -726,7 +822,9 @@ p, li { white-space: pre-wrap; }
|
||||
<tabstop>_settingLocalContentCanAccessRemoteUrls</tabstop>
|
||||
<tabstop>_settingLocalContentCanAccessFileUrls</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<resources>
|
||||
<include location="resources.qrc"/>
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
||||
<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 {
|
||||
TRC; LOG<<"log; type="<<type<<"; size="<<in.size();
|
||||
LOG<<crypto::readable(in).c_str();
|
||||
if (type != NID_md5_sha1) throw std::runtime_error("wrong sign type");
|
||||
if (in.size() != 36) throw std::runtime_error("wrong msg size to sign");
|
||||
LOG<<"ready to sign";
|
||||
/* std::string data;
|
||||
switch (type) {
|
||||
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 {
|
||||
return _privateKey->sign(in, CKM_RSA_PKCS);
|
||||
return _privateKey->sign(in, algo);
|
||||
} catch (const std::exception& x) {
|
||||
LOG<<"signature failed, reason: "<<x.what();
|
||||
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) {
|
||||
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 |