mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-08-01 02:56:21 -04:00
Merge branch 'release/2.3.0' into develop
This commit is contained in:
commit
9bb8dd7a7a
24 changed files with 375 additions and 226 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -10,3 +10,4 @@ release*/
|
||||||
*.swp
|
*.swp
|
||||||
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
.version
|
|
@ -66,14 +66,18 @@ cp "$QXCB_PLUGIN" ".${QT_PLUGIN_PATH}/platforms/"
|
||||||
|
|
||||||
get_apprun
|
get_apprun
|
||||||
copy_deps
|
copy_deps
|
||||||
|
|
||||||
|
# protect our libgpg-error from being deleted
|
||||||
|
mv ./opt/gpg-error-127/lib/x86_64-linux-gnu/libgpg-error.so.0 ./protected.so
|
||||||
delete_blacklisted
|
delete_blacklisted
|
||||||
|
mv ./protected.so ./opt/gpg-error-127/lib/x86_64-linux-gnu/libgpg-error.so.0
|
||||||
|
|
||||||
get_desktop
|
get_desktop
|
||||||
get_icon
|
get_icon
|
||||||
cat << EOF > ./usr/bin/keepassxc_env
|
cat << EOF > ./usr/bin/keepassxc_env
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
export LD_LIBRARY_PATH="/opt/libgcrypt20-18/lib/x86_64-linux-gnu:\${LD_LIBRARY_PATH}"
|
export LD_LIBRARY_PATH="../opt/libgcrypt20-18/lib/x86_64-linux-gnu:\${LD_LIBRARY_PATH}"
|
||||||
export LD_LIBRARY_PATH="/opt/gpg-error-127/lib/x86_64-linux-gnu:\${LD_LIBRARY_PATH}"
|
export LD_LIBRARY_PATH="../opt/gpg-error-127/lib/x86_64-linux-gnu:\${LD_LIBRARY_PATH}"
|
||||||
export LD_LIBRARY_PATH="..$(dirname ${QT_PLUGIN_PATH})/lib:\${LD_LIBRARY_PATH}"
|
export LD_LIBRARY_PATH="..$(dirname ${QT_PLUGIN_PATH})/lib:\${LD_LIBRARY_PATH}"
|
||||||
export QT_PLUGIN_PATH="..${QT_PLUGIN_PATH}:\${KPXC_QT_PLUGIN_PATH}"
|
export QT_PLUGIN_PATH="..${QT_PLUGIN_PATH}:\${KPXC_QT_PLUGIN_PATH}"
|
||||||
|
|
||||||
|
@ -84,6 +88,11 @@ unset XDG_DATA_DIRS
|
||||||
if [ "\${1}" == "cli" ]; then
|
if [ "\${1}" == "cli" ]; then
|
||||||
shift
|
shift
|
||||||
exec keepassxc-cli "\$@"
|
exec keepassxc-cli "\$@"
|
||||||
|
elif [ "\${1}" == "proxy" ]; then
|
||||||
|
shift
|
||||||
|
exec keepassxc-proxy "\$@"
|
||||||
|
elif [ -v CHROME_WRAPPER ] || [ -v MOZ_LAUNCHED_CHILD ]; then
|
||||||
|
exec keepassxc-proxy "\$@"
|
||||||
else
|
else
|
||||||
exec keepassxc "\$@"
|
exec keepassxc "\$@"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -80,19 +80,22 @@ set_property(CACHE KEEPASSXC_BUILD_TYPE PROPERTY STRINGS Snapshot Release PreRel
|
||||||
execute_process(COMMAND git tag --points-at HEAD
|
execute_process(COMMAND git tag --points-at HEAD
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
OUTPUT_VARIABLE GIT_TAG)
|
OUTPUT_VARIABLE GIT_TAG)
|
||||||
if(GIT_TAG)
|
if(NOT GIT_TAG AND EXISTS ${CMAKE_SOURCE_DIR}/.version)
|
||||||
string(REGEX REPLACE "\r?\n$" "" GIT_TAG "${GIT_TAG}")
|
file(READ ${CMAKE_SOURCE_DIR}/.version OVERRIDE_VERSION)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(GIT_TAG MATCHES "^[\\.0-9]+-(alpha|beta)[0-9]+$")
|
string(REGEX REPLACE "(\r?\n)+" "" OVERRIDE_VERSION "${OVERRIDE_VERSION}")
|
||||||
|
if(OVERRIDE_VERSION)
|
||||||
|
if(OVERRIDE_VERSION MATCHES "^[\\.0-9]+-(alpha|beta)[0-9]+$")
|
||||||
set(KEEPASSXC_BUILD_TYPE PreRelease)
|
set(KEEPASSXC_BUILD_TYPE PreRelease)
|
||||||
set(KEEPASSXC_VERSION ${GIT_TAG})
|
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
||||||
elseif(GIT_TAG MATCHES "^[\\.0-9]+$")
|
elseif(OVERRIDE_VERSION MATCHES "^[\\.0-9]+$")
|
||||||
set(KEEPASSXC_BUILD_TYPE Release)
|
set(KEEPASSXC_BUILD_TYPE Release)
|
||||||
set(KEEPASSXC_VERSION ${GIT_TAG})
|
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(KEEPASSXC_BUILD_TYPE STREQUAL "PreRelease" AND NOT GIT_TAG)
|
if(KEEPASSXC_BUILD_TYPE STREQUAL "PreRelease" AND NOT OVERRIDE_VERSION)
|
||||||
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-preview")
|
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-preview")
|
||||||
elseif(KEEPASSXC_BUILD_TYPE STREQUAL "Snapshot")
|
elseif(KEEPASSXC_BUILD_TYPE STREQUAL "Snapshot")
|
||||||
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-snapshot")
|
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-snapshot")
|
||||||
|
@ -295,6 +298,8 @@ if(Qt5Core_VERSION VERSION_LESS "5.2.0")
|
||||||
message(FATAL_ERROR "Qt version 5.2.0 or higher is required")
|
message(FATAL_ERROR "Qt version 5.2.0 or higher is required")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
get_filename_component(Qt5_PREFIX ${Qt5_DIR}/../../.. REALPATH)
|
||||||
|
|
||||||
set(CMAKE_AUTOMOC ON)
|
set(CMAKE_AUTOMOC ON)
|
||||||
set(CMAKE_AUTOUIC ON)
|
set(CMAKE_AUTOUIC ON)
|
||||||
set(CMAKE_AUTORCC ON)
|
set(CMAKE_AUTORCC ON)
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
FROM ubuntu:14.04
|
FROM ubuntu:14.04
|
||||||
|
|
||||||
ENV REBUILD_COUNTER=5
|
ENV REBUILD_COUNTER=6
|
||||||
|
|
||||||
ENV QT5_VERSION=59
|
ENV QT5_VERSION=59
|
||||||
ENV QT5_PPA_VERSION=${QT5_VERSION}4
|
ENV QT5_PPA_VERSION=${QT5_VERSION}4
|
||||||
|
|
20
release-tool
20
release-tool
|
@ -614,12 +614,24 @@ build() {
|
||||||
if ${BUILD_SOURCE_TARBALL}; then
|
if ${BUILD_SOURCE_TARBALL}; then
|
||||||
logInfo "Creating source tarball..."
|
logInfo "Creating source tarball..."
|
||||||
local app_name_lower="$(echo "$APP_NAME" | tr '[:upper:]' '[:lower:]')"
|
local app_name_lower="$(echo "$APP_NAME" | tr '[:upper:]' '[:lower:]')"
|
||||||
TARBALL_NAME="${app_name_lower}-${RELEASE_NAME}-src.tar.xz"
|
local prefix="${app_name_lower}-${RELEASE_NAME}"
|
||||||
git archive --format=tar "$TAG_NAME" --prefix="${app_name_lower}-${RELEASE_NAME}/" \
|
local tarball_name="${prefix}-src.tar"
|
||||||
| xz -6 > "${OUTPUT_DIR}/${TARBALL_NAME}"
|
|
||||||
|
git archive --format=tar "$TAG_NAME" --prefix="${prefix}/" --output="${OUTPUT_DIR}/${tarball_name}"
|
||||||
|
|
||||||
|
if ! ${BUILD_SNAPSHOT}; then
|
||||||
|
# add .version file to tar
|
||||||
|
mkdir "${prefix}"
|
||||||
|
echo -n ${RELEASE_NAME} > "${prefix}/.version"
|
||||||
|
tar --append --file="${OUTPUT_DIR}/${tarball_name}" "${prefix}/.version"
|
||||||
|
rm "${prefix}/.version"
|
||||||
|
rmdir "${prefix}" 2> /dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e "${OUTPUT_DIR}/build-release" ]; then
|
xz -6 "${OUTPUT_DIR}/${tarball_name}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! ${BUILD_SNAPSHOT} && [ -e "${OUTPUT_DIR}/build-release" ]; then
|
||||||
logInfo "Cleaning existing build directory..."
|
logInfo "Cleaning existing build directory..."
|
||||||
rm -r "${OUTPUT_DIR}/build-release" 2> /dev/null
|
rm -r "${OUTPUT_DIR}/build-release" 2> /dev/null
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
|
|
BIN
share/icons/application/16x16/actions/paperclip.png
Normal file
BIN
share/icons/application/16x16/actions/paperclip.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 352 B |
BIN
share/icons/application/22x22/actions/paperclip.png
Normal file
BIN
share/icons/application/22x22/actions/paperclip.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 421 B |
BIN
share/icons/application/32x32/actions/paperclip.png
Normal file
BIN
share/icons/application/32x32/actions/paperclip.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 559 B |
BIN
share/icons/svg/paperclip.svgz
Normal file
BIN
share/icons/svg/paperclip.svgz
Normal file
Binary file not shown.
|
@ -23,12 +23,12 @@ message(STATUS "Including translations...\n")
|
||||||
qt5_add_translation(QM_FILES ${TRANSLATION_FILES})
|
qt5_add_translation(QM_FILES ${TRANSLATION_FILES})
|
||||||
|
|
||||||
if(MINGW)
|
if(MINGW)
|
||||||
file(GLOB QTBASE_TRANSLATIONS ${Qt5_DIR}/../../../share/qt5/translations/qtbase_*.qm)
|
file(GLOB QTBASE_TRANSLATIONS ${Qt5_PREFIX}/share/qt5/translations/qtbase_*.qm)
|
||||||
elseif(APPLE OR KEEPASSXC_DIST_APPIMAGE)
|
elseif(APPLE OR KEEPASSXC_DIST_APPIMAGE)
|
||||||
file(GLOB QTBASE_TRANSLATIONS
|
file(GLOB QTBASE_TRANSLATIONS
|
||||||
/usr/share/qt/translations/qtbase_*.qm
|
/usr/share/qt/translations/qtbase_*.qm
|
||||||
/usr/share/qt5/translations/qtbase_*.qm
|
/usr/share/qt5/translations/qtbase_*.qm
|
||||||
${Qt5_DIR}/../../../translations/qtbase_*.qm)
|
${Qt5_PREFIX}/translations/qtbase_*.qm)
|
||||||
endif()
|
endif()
|
||||||
set(QM_FILES ${QM_FILES} ${QTBASE_TRANSLATIONS})
|
set(QM_FILES ${QM_FILES} ${QTBASE_TRANSLATIONS})
|
||||||
|
|
||||||
|
|
|
@ -382,7 +382,7 @@ if(MINGW)
|
||||||
include(DeployQt4)
|
include(DeployQt4)
|
||||||
install_qt4_executable(${PROGNAME}.exe)
|
install_qt4_executable(${PROGNAME}.exe)
|
||||||
add_custom_command(TARGET ${PROGNAME} POST_BUILD
|
add_custom_command(TARGET ${PROGNAME} POST_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${Qt5_DIR}/../../../share/qt5/plugins/platforms/qwindows$<$<CONFIG:Debug>:d>.dll
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${Qt5_PREFIX}/share/qt5/plugins/platforms/qwindows$<$<CONFIG:Debug>:d>.dll
|
||||||
$<TARGET_FILE_DIR:${PROGNAME}>)
|
$<TARGET_FILE_DIR:${PROGNAME}>)
|
||||||
install(FILES $<TARGET_FILE_DIR:${PROGNAME}>/qwindows$<$<CONFIG:Debug>:d>.dll DESTINATION "platforms")
|
install(FILES $<TARGET_FILE_DIR:${PROGNAME}>/qwindows$<$<CONFIG:Debug>:d>.dll DESTINATION "platforms")
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
#include "BrowserOptionDialog.h"
|
#include "BrowserOptionDialog.h"
|
||||||
#include "ui_BrowserOptionDialog.h"
|
#include "ui_BrowserOptionDialog.h"
|
||||||
|
#include "config-keepassx.h"
|
||||||
#include "BrowserSettings.h"
|
#include "BrowserSettings.h"
|
||||||
#include "core/FilePath.h"
|
#include "core/FilePath.h"
|
||||||
|
|
||||||
|
@ -45,6 +46,8 @@ BrowserOptionDialog::BrowserOptionDialog(QWidget* parent) :
|
||||||
connect(m_ui->useCustomProxy, SIGNAL(toggled(bool)), m_ui->customProxyLocation, SLOT(setEnabled(bool)));
|
connect(m_ui->useCustomProxy, SIGNAL(toggled(bool)), m_ui->customProxyLocation, SLOT(setEnabled(bool)));
|
||||||
connect(m_ui->useCustomProxy, SIGNAL(toggled(bool)), m_ui->customProxyLocationBrowseButton, SLOT(setEnabled(bool)));
|
connect(m_ui->useCustomProxy, SIGNAL(toggled(bool)), m_ui->customProxyLocationBrowseButton, SLOT(setEnabled(bool)));
|
||||||
connect(m_ui->customProxyLocationBrowseButton, SIGNAL(clicked()), this, SLOT(showProxyLocationFileDialog()));
|
connect(m_ui->customProxyLocationBrowseButton, SIGNAL(clicked()), this, SLOT(showProxyLocationFileDialog()));
|
||||||
|
|
||||||
|
m_ui->browserGlobalWarningWidget->setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
BrowserOptionDialog::~BrowserOptionDialog()
|
BrowserOptionDialog::~BrowserOptionDialog()
|
||||||
|
@ -84,6 +87,18 @@ void BrowserOptionDialog::loadSettings()
|
||||||
m_ui->chromiumSupport->setChecked(settings.chromiumSupport());
|
m_ui->chromiumSupport->setChecked(settings.chromiumSupport());
|
||||||
m_ui->firefoxSupport->setChecked(settings.firefoxSupport());
|
m_ui->firefoxSupport->setChecked(settings.firefoxSupport());
|
||||||
m_ui->vivaldiSupport->setChecked(settings.vivaldiSupport());
|
m_ui->vivaldiSupport->setChecked(settings.vivaldiSupport());
|
||||||
|
|
||||||
|
#if defined(KEEPASSXC_DIST_APPIMAGE)
|
||||||
|
m_ui->supportBrowserProxy->setChecked(true);
|
||||||
|
m_ui->supportBrowserProxy->setEnabled(false);
|
||||||
|
#elif defined(KEEPASSXC_DIST_SNAP)
|
||||||
|
m_ui->enableBrowserSupport->setChecked(false);
|
||||||
|
m_ui->enableBrowserSupport->setEnabled(false);
|
||||||
|
m_ui->browserGlobalWarningWidget->showMessage(
|
||||||
|
tr("We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment."), MessageWidget::Warning);
|
||||||
|
m_ui->browserGlobalWarningWidget->setCloseButtonVisible(false);
|
||||||
|
m_ui->browserGlobalWarningWidget->setAutoHideTimeout(-1);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrowserOptionDialog::saveSettings()
|
void BrowserOptionDialog::saveSettings()
|
||||||
|
|
|
@ -26,6 +26,9 @@
|
||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="MessageWidget" name="browserGlobalWarningWidget" native="true"/>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="enableBrowserSupport">
|
<widget class="QCheckBox" name="enableBrowserSupport">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
|
|
|
@ -17,12 +17,14 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "HostInstaller.h"
|
#include "HostInstaller.h"
|
||||||
|
#include "config-keepassx.h"
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
#include <QJsonDocument>
|
#include <QJsonDocument>
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
|
#include <QProcessEnvironment>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
|
||||||
const QString HostInstaller::HOST_NAME = "org.keepassxc.keepassxc_browser";
|
const QString HostInstaller::HOST_NAME = "org.keepassxc.keepassxc_browser";
|
||||||
|
@ -161,6 +163,13 @@ QString HostInstaller::getInstallDir(SupportedBrowsers browser) const
|
||||||
QJsonObject HostInstaller::constructFile(SupportedBrowsers browser, const bool& proxy, const QString& location)
|
QJsonObject HostInstaller::constructFile(SupportedBrowsers browser, const bool& proxy, const QString& location)
|
||||||
{
|
{
|
||||||
QString path;
|
QString path;
|
||||||
|
#ifdef KEEPASSXC_DIST_APPIMAGE
|
||||||
|
if (proxy && !location.isEmpty()) {
|
||||||
|
path = location;
|
||||||
|
} else {
|
||||||
|
path = QProcessEnvironment::systemEnvironment().value("APPIMAGE");
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (proxy) {
|
if (proxy) {
|
||||||
if (!location.isEmpty()) {
|
if (!location.isEmpty()) {
|
||||||
path = location;
|
path = location;
|
||||||
|
@ -178,6 +187,8 @@ QJsonObject HostInstaller::constructFile(SupportedBrowsers browser, const bool&
|
||||||
path.replace("/","\\");
|
path.replace("/","\\");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif // #ifdef KEEPASSXC_DIST_APPIMAGE
|
||||||
|
|
||||||
QJsonObject script;
|
QJsonObject script;
|
||||||
script["name"] = HostInstaller::HOST_NAME;
|
script["name"] = HostInstaller::HOST_NAME;
|
||||||
script["description"] = "KeePassXC integration with native messaging support";
|
script["description"] = "KeePassXC integration with native messaging support";
|
||||||
|
|
|
@ -76,7 +76,7 @@ DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent)
|
||||||
m_messageWidget = new MessageWidget(this);
|
m_messageWidget = new MessageWidget(this);
|
||||||
m_messageWidget->setHidden(true);
|
m_messageWidget->setHidden(true);
|
||||||
|
|
||||||
QVBoxLayout* mainLayout = new QVBoxLayout();
|
auto* mainLayout = new QVBoxLayout();
|
||||||
QLayout* layout = new QHBoxLayout();
|
QLayout* layout = new QHBoxLayout();
|
||||||
mainLayout->addWidget(m_messageWidget);
|
mainLayout->addWidget(m_messageWidget);
|
||||||
mainLayout->addLayout(layout);
|
mainLayout->addLayout(layout);
|
||||||
|
@ -119,7 +119,7 @@ DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent)
|
||||||
connect(m_detailsView, SIGNAL(errorOccurred(QString)), this, SLOT(showErrorMessage(QString)));
|
connect(m_detailsView, SIGNAL(errorOccurred(QString)), this, SLOT(showErrorMessage(QString)));
|
||||||
|
|
||||||
|
|
||||||
QVBoxLayout* vLayout = new QVBoxLayout(rightHandSideWidget);
|
auto* vLayout = new QVBoxLayout(rightHandSideWidget);
|
||||||
vLayout->setMargin(0);
|
vLayout->setMargin(0);
|
||||||
vLayout->addWidget(m_searchingLabel);
|
vLayout->addWidget(m_searchingLabel);
|
||||||
vLayout->addWidget(m_detailSplitter);
|
vLayout->addWidget(m_detailSplitter);
|
||||||
|
@ -127,8 +127,8 @@ DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent)
|
||||||
m_detailSplitter->addWidget(m_entryView);
|
m_detailSplitter->addWidget(m_entryView);
|
||||||
m_detailSplitter->addWidget(m_detailsView);
|
m_detailSplitter->addWidget(m_detailsView);
|
||||||
|
|
||||||
m_detailSplitter->setStretchFactor(0, 80);
|
m_detailSplitter->setStretchFactor(0, 100);
|
||||||
m_detailSplitter->setStretchFactor(1, 20);
|
m_detailSplitter->setStretchFactor(1, 0);
|
||||||
|
|
||||||
m_searchingLabel->setVisible(false);
|
m_searchingLabel->setVisible(false);
|
||||||
|
|
||||||
|
@ -795,10 +795,6 @@ void DatabaseWidget::switchToView(bool accepted)
|
||||||
m_newParent = nullptr;
|
m_newParent = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (accepted) {
|
|
||||||
showMessage(tr("Entry updated successfully."), MessageWidget::Positive, false, 2000);
|
|
||||||
}
|
|
||||||
|
|
||||||
setCurrentWidget(m_mainWidget);
|
setCurrentWidget(m_mainWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,7 @@ void DetailsWidget::updateEntryHeaderLine()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_currentEntry);
|
Q_ASSERT(m_currentEntry);
|
||||||
const QString title = m_currentEntry->resolveMultiplePlaceholders(m_currentEntry->title());
|
const QString title = m_currentEntry->resolveMultiplePlaceholders(m_currentEntry->title());
|
||||||
m_ui->entryTitleLabel->setText(hierarchy(m_currentEntry->group(), title));
|
m_ui->entryTitleLabel->setRawText(hierarchy(m_currentEntry->group(), title));
|
||||||
m_ui->entryIcon->setPixmap(preparePixmap(m_currentEntry->iconPixmap(), 16));
|
m_ui->entryIcon->setPixmap(preparePixmap(m_currentEntry->iconPixmap(), 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,7 +250,7 @@ void DetailsWidget::updateEntryAutotypeTab()
|
||||||
void DetailsWidget::updateGroupHeaderLine()
|
void DetailsWidget::updateGroupHeaderLine()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_currentGroup);
|
Q_ASSERT(m_currentGroup);
|
||||||
m_ui->groupTitleLabel->setText(hierarchy(m_currentGroup, {}));
|
m_ui->groupTitleLabel->setRawText(hierarchy(m_currentGroup, {}));
|
||||||
m_ui->groupIcon->setPixmap(preparePixmap(m_currentGroup->iconPixmap(), 32));
|
m_ui->groupIcon->setPixmap(preparePixmap(m_currentGroup->iconPixmap(), 32));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,11 +25,26 @@
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="pageEntry">
|
<widget class="QWidget" name="pageEntry">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="entryHorizontalLayout" stretch="0,0,0,0,0,0">
|
<layout class="QHBoxLayout" name="entryHorizontalLayout" stretch="0,0,0,0,0">
|
||||||
<property name="sizeConstraint">
|
<property name="sizeConstraint">
|
||||||
<enum>QLayout::SetDefaultConstraint</enum>
|
<enum>QLayout::SetDefaultConstraint</enum>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="entryIcon">
|
<widget class="QLabel" name="entryIcon">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
|
@ -44,9 +59,9 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="entryTitleLabel">
|
<widget class="ElidedLabel" name="entryTitleLabel">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
|
@ -61,19 +76,6 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<spacer name="entryHorizontalSpacer">
|
|
||||||
<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>
|
<item>
|
||||||
<widget class="QWidget" name="entryTotpWidget" native="true">
|
<widget class="QWidget" name="entryTotpWidget" native="true">
|
||||||
<layout class="QGridLayout" name="gridLayout_3">
|
<layout class="QGridLayout" name="gridLayout_3">
|
||||||
|
@ -152,22 +154,75 @@
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_5">
|
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="entryGeneralWidget" native="true">
|
<widget class="QWidget" name="entryGeneralWidget" native="true">
|
||||||
<layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0,0,1" columnstretch="0,0,1">
|
<layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0,0,0" columnstretch="0,0,0">
|
||||||
<item row="0" column="0">
|
<property name="leftMargin">
|
||||||
<spacer name="entryLeftHorizontalSpacer">
|
<number>0</number>
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeType">
|
<property name="topMargin">
|
||||||
<enum>QSizePolicy::Fixed</enum>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="ElidedLabel" name="entryPasswordLabel">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>20</width>
|
<width>100</width>
|
||||||
<height>20</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="2">
|
||||||
|
<widget class="ElidedLabel" name="entryUrlLabel">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>100</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="cursor">
|
||||||
|
<cursorShape>PointingHandCursor</cursorShape>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QLabel" name="entryUsernameLabel">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>100</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<widget class="QLabel" name="entryUsernameTitleLabel">
|
<widget class="QLabel" name="entryUsernameTitleLabel">
|
||||||
|
@ -194,21 +249,8 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="2">
|
<item row="3" column="1">
|
||||||
<widget class="QLabel" name="entryUsernameLabel">
|
<widget class="QLabel" name="entryExpirationTitleLabel">
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>100</width>
|
|
||||||
<height>0</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="textInteractionFlags">
|
|
||||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QLabel" name="entryPasswordTitleLabel">
|
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
|
@ -222,20 +264,20 @@
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Password</string>
|
<string>Expiration</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="2">
|
<item row="3" column="2">
|
||||||
<widget class="ElidedLabel" name="entryPasswordLabel">
|
<widget class="QLabel" name="entryExpirationLabel">
|
||||||
<property name="minimumSize">
|
<property name="sizePolicy">
|
||||||
<size>
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
<width>100</width>
|
<horstretch>0</horstretch>
|
||||||
<height>0</height>
|
<verstretch>0</verstretch>
|
||||||
</size>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -261,24 +303,24 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="2">
|
<item row="0" column="0">
|
||||||
<widget class="ElidedLabel" name="entryUrlLabel">
|
<spacer name="entryLeftHorizontalSpacer">
|
||||||
<property name="minimumSize">
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
<width>100</width>
|
<width>20</width>
|
||||||
<height>0</height>
|
<height>20</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="cursor">
|
</spacer>
|
||||||
<cursorShape>PointingHandCursor</cursorShape>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QLabel" name="entryExpirationTitleLabel">
|
<widget class="QLabel" name="entryPasswordTitleLabel">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
|
@ -292,25 +334,22 @@
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Expiration</string>
|
<string>Password</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="2">
|
|
||||||
<widget class="QLabel" name="entryExpirationLabel"/>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="2">
|
<item row="4" column="2">
|
||||||
<spacer name="entryBottomVerticalSpacer">
|
<spacer name="verticalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
<width>20</width>
|
<width>0</width>
|
||||||
<height>10</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
|
@ -418,11 +457,26 @@
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="pageGroup">
|
<widget class="QWidget" name="pageGroup">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_13">
|
<layout class="QVBoxLayout" name="verticalLayout_13">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="groupHorizontalLayout" stretch="0,0,0,0">
|
<layout class="QHBoxLayout" name="groupHorizontalLayout" stretch="0,0,0">
|
||||||
<property name="sizeConstraint">
|
<property name="sizeConstraint">
|
||||||
<enum>QLayout::SetDefaultConstraint</enum>
|
<enum>QLayout::SetDefaultConstraint</enum>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="groupIcon">
|
<widget class="QLabel" name="groupIcon">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
|
@ -437,9 +491,9 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="groupTitleLabel">
|
<widget class="ElidedLabel" name="groupTitleLabel">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
|
@ -454,19 +508,6 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<spacer name="groupHorizontalSpacer">
|
|
||||||
<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>
|
<item>
|
||||||
<widget class="QToolButton" name="groupCloseButton">
|
<widget class="QToolButton" name="groupCloseButton">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
|
@ -503,22 +544,50 @@
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_8">
|
<layout class="QVBoxLayout" name="verticalLayout_8">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="groupGeneralWidget" native="true">
|
<widget class="QWidget" name="groupGeneralWidget" native="true">
|
||||||
<layout class="QGridLayout" name="gridLayout_2" columnstretch="0,0,1">
|
<layout class="QGridLayout" name="gridLayout_2" columnstretch="0,0,0">
|
||||||
<item row="0" column="0">
|
<property name="leftMargin">
|
||||||
<spacer name="groupLeftHorizontalSpacer">
|
<number>0</number>
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeType">
|
<property name="topMargin">
|
||||||
<enum>QSizePolicy::Fixed</enum>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="rightMargin">
|
||||||
<size>
|
<number>0</number>
|
||||||
<width>20</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item row="2" column="2">
|
||||||
|
<widget class="QLabel" name="groupExpirationLabel">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QLabel" name="groupExpirationTitleLabel">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Expiration</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<widget class="QLabel" name="groupAutotypeTitleLabel">
|
<widget class="QLabel" name="groupAutotypeTitleLabel">
|
||||||
|
@ -543,7 +612,40 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="2">
|
<item row="0" column="2">
|
||||||
<widget class="QLabel" name="groupAutotypeLabel"/>
|
<widget class="QLabel" name="groupAutotypeLabel">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QLabel" name="groupSearchingLabel">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<spacer name="groupLeftHorizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QLabel" name="groupSearchingTitleLabel">
|
<widget class="QLabel" name="groupSearchingTitleLabel">
|
||||||
|
@ -567,45 +669,11 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="2">
|
|
||||||
<widget class="QLabel" name="groupSearchingLabel"/>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QLabel" name="groupExpirationTitleLabel">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Expiration</string>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="2">
|
|
||||||
<widget class="QLabel" name="groupExpirationLabel"/>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="2">
|
<item row="3" column="2">
|
||||||
<spacer name="groupBottomVerticalSpacer">
|
<spacer name="verticalSpacer_2">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>10</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
|
|
@ -150,6 +150,7 @@ void SettingsWidget::loadSettings()
|
||||||
if (m_globalAutoTypeKey > 0 && m_globalAutoTypeModifiers > 0) {
|
if (m_globalAutoTypeKey > 0 && m_globalAutoTypeModifiers > 0) {
|
||||||
m_generalUi->autoTypeShortcutWidget->setShortcut(m_globalAutoTypeKey, m_globalAutoTypeModifiers);
|
m_generalUi->autoTypeShortcutWidget->setShortcut(m_globalAutoTypeKey, m_globalAutoTypeModifiers);
|
||||||
}
|
}
|
||||||
|
m_generalUi->autoTypeShortcutWidget->setAttribute(Qt::WA_MacShowFocusRect, true);
|
||||||
m_generalUi->autoTypeDelaySpinBox->setValue(config()->get("AutoTypeDelay").toInt());
|
m_generalUi->autoTypeDelaySpinBox->setValue(config()->get("AutoTypeDelay").toInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -755,6 +755,8 @@ bool EditEntryWidget::commitEntry()
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
m_historyModel->setEntries(m_entry->historyItems());
|
||||||
|
|
||||||
showMessage(tr("Entry updated successfully."), MessageWidget::Positive);
|
showMessage(tr("Entry updated successfully."), MessageWidget::Positive);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
#include <QPalette>
|
#include <QPalette>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
|
#include <QPainter>
|
||||||
|
|
||||||
#include "core/DatabaseIcons.h"
|
#include "core/DatabaseIcons.h"
|
||||||
#include "core/Entry.h"
|
#include "core/Entry.h"
|
||||||
|
@ -35,9 +36,6 @@ const QString EntryModel::HiddenContentDisplay(QString("\u25cf").repeated(6));
|
||||||
// Format used to display dates
|
// Format used to display dates
|
||||||
const Qt::DateFormat EntryModel::DateFormat = Qt::DefaultLocaleShortDate;
|
const Qt::DateFormat EntryModel::DateFormat = Qt::DefaultLocaleShortDate;
|
||||||
|
|
||||||
// Paperclip symbol
|
|
||||||
const QString EntryModel::PaperClipDisplay("\U0001f4ce");
|
|
||||||
|
|
||||||
EntryModel::EntryModel(QObject* parent)
|
EntryModel::EntryModel(QObject* parent)
|
||||||
: QAbstractTableModel(parent)
|
: QAbstractTableModel(parent)
|
||||||
, m_group(nullptr)
|
, m_group(nullptr)
|
||||||
|
@ -205,9 +203,6 @@ QVariant EntryModel::data(const QModelIndex& index, int role) const
|
||||||
case Accessed:
|
case Accessed:
|
||||||
result = entry->timeInfo().lastAccessTime().toLocalTime().toString(EntryModel::DateFormat);
|
result = entry->timeInfo().lastAccessTime().toLocalTime().toString(EntryModel::DateFormat);
|
||||||
return result;
|
return result;
|
||||||
case Paperclip:
|
|
||||||
result = entry->attachments()->keys().isEmpty() ? QString() : EntryModel::PaperClipDisplay;
|
|
||||||
return result;
|
|
||||||
case Attachments:
|
case Attachments:
|
||||||
// Display comma-separated list of attachments
|
// Display comma-separated list of attachments
|
||||||
QList<QString> attachments = entry->attachments()->keys();
|
QList<QString> attachments = entry->attachments()->keys();
|
||||||
|
@ -238,7 +233,7 @@ QVariant EntryModel::data(const QModelIndex& index, int role) const
|
||||||
case Paperclip:
|
case Paperclip:
|
||||||
// Display entries with attachments above those without when
|
// Display entries with attachments above those without when
|
||||||
// sorting ascendingly (and vice versa when sorting descendingly)
|
// sorting ascendingly (and vice versa when sorting descendingly)
|
||||||
return entry->attachments()->keys().isEmpty() ? 1 : 0;
|
return entry->attachments()->isEmpty() ? 1 : 0;
|
||||||
default:
|
default:
|
||||||
// For all other columns, simply use data provided by Qt::Display-
|
// For all other columns, simply use data provided by Qt::Display-
|
||||||
// Role for sorting
|
// Role for sorting
|
||||||
|
@ -254,9 +249,13 @@ QVariant EntryModel::data(const QModelIndex& index, int role) const
|
||||||
case Title:
|
case Title:
|
||||||
if (entry->isExpired()) {
|
if (entry->isExpired()) {
|
||||||
return databaseIcons()->iconPixmap(DatabaseIcons::ExpiredIconIndex);
|
return databaseIcons()->iconPixmap(DatabaseIcons::ExpiredIconIndex);
|
||||||
} else {
|
|
||||||
return entry->iconScaledPixmap();
|
|
||||||
}
|
}
|
||||||
|
return entry->iconScaledPixmap();
|
||||||
|
case Paperclip:
|
||||||
|
if (!entry->attachments()->isEmpty()) {
|
||||||
|
return m_paperClipPixmap;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} else if (role == Qt::FontRole) {
|
} else if (role == Qt::FontRole) {
|
||||||
QFont font;
|
QFont font;
|
||||||
|
@ -279,12 +278,6 @@ QVariant EntryModel::data(const QModelIndex& index, int role) const
|
||||||
if (index.column() == Paperclip) {
|
if (index.column() == Paperclip) {
|
||||||
return Qt::AlignCenter;
|
return Qt::AlignCenter;
|
||||||
}
|
}
|
||||||
} else if (role == Qt::SizeHintRole) {
|
|
||||||
if (index.column() == Paperclip) {
|
|
||||||
QFont font;
|
|
||||||
QFontMetrics fm(font);
|
|
||||||
return fm.width(PaperClipDisplay) / 2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
@ -316,15 +309,12 @@ QVariant EntryModel::headerData(int section, Qt::Orientation orientation, int ro
|
||||||
return tr("Modified");
|
return tr("Modified");
|
||||||
case Accessed:
|
case Accessed:
|
||||||
return tr("Accessed");
|
return tr("Accessed");
|
||||||
case Paperclip:
|
|
||||||
return EntryModel::PaperClipDisplay;
|
|
||||||
case Attachments:
|
case Attachments:
|
||||||
return tr("Attachments");
|
return tr("Attachments");
|
||||||
}
|
}
|
||||||
} else if (role == Qt::TextAlignmentRole) {
|
} else if (role == Qt::DecorationRole) {
|
||||||
switch (section) {
|
if (section == Paperclip) {
|
||||||
case Paperclip:
|
return m_paperClipPixmap;
|
||||||
return Qt::AlignCenter;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -508,3 +498,8 @@ void EntryModel::togglePasswordsHidden(const bool hide)
|
||||||
{
|
{
|
||||||
setPasswordsHidden(hide);
|
setPasswordsHidden(hide);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EntryModel::setPaperClipPixmap(const QPixmap& paperclip)
|
||||||
|
{
|
||||||
|
m_paperClipPixmap = paperclip;
|
||||||
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#define KEEPASSX_ENTRYMODEL_H
|
#define KEEPASSX_ENTRYMODEL_H
|
||||||
|
|
||||||
#include <QAbstractTableModel>
|
#include <QAbstractTableModel>
|
||||||
|
#include <QPixmap>
|
||||||
|
|
||||||
class Entry;
|
class Entry;
|
||||||
class Group;
|
class Group;
|
||||||
|
@ -65,6 +66,8 @@ public:
|
||||||
bool isPasswordsHidden() const;
|
bool isPasswordsHidden() const;
|
||||||
void setPasswordsHidden(const bool hide);
|
void setPasswordsHidden(const bool hide);
|
||||||
|
|
||||||
|
void setPaperClipPixmap(const QPixmap& paperclip);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void switchedToListMode();
|
void switchedToListMode();
|
||||||
void switchedToSearchMode();
|
void switchedToSearchMode();
|
||||||
|
@ -95,9 +98,10 @@ private:
|
||||||
bool m_hideUsernames;
|
bool m_hideUsernames;
|
||||||
bool m_hidePasswords;
|
bool m_hidePasswords;
|
||||||
|
|
||||||
|
QPixmap m_paperClipPixmap;
|
||||||
|
|
||||||
static const QString HiddenContentDisplay;
|
static const QString HiddenContentDisplay;
|
||||||
static const Qt::DateFormat DateFormat;
|
static const Qt::DateFormat DateFormat;
|
||||||
static const QString PaperClipDisplay;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // KEEPASSX_ENTRYMODEL_H
|
#endif // KEEPASSX_ENTRYMODEL_H
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
|
|
||||||
|
#include "core/FilePath.h"
|
||||||
#include "gui/SortFilterHideProxyModel.h"
|
#include "gui/SortFilterHideProxyModel.h"
|
||||||
|
|
||||||
EntryView::EntryView(QWidget* parent)
|
EntryView::EntryView(QWidget* parent)
|
||||||
|
@ -72,6 +73,10 @@ EntryView::EntryView(QWidget* parent)
|
||||||
m_columnActions->setExclusive(false);
|
m_columnActions->setExclusive(false);
|
||||||
for (int columnIndex = 1; columnIndex < header()->count(); ++columnIndex) {
|
for (int columnIndex = 1; columnIndex < header()->count(); ++columnIndex) {
|
||||||
QString caption = m_model->headerData(columnIndex, Qt::Horizontal, Qt::DisplayRole).toString();
|
QString caption = m_model->headerData(columnIndex, Qt::Horizontal, Qt::DisplayRole).toString();
|
||||||
|
if (columnIndex == EntryModel::Paperclip) {
|
||||||
|
caption = tr("Attachments (icon)");
|
||||||
|
}
|
||||||
|
|
||||||
QAction* action = m_headerMenu->addAction(caption);
|
QAction* action = m_headerMenu->addAction(caption);
|
||||||
action->setCheckable(true);
|
action->setCheckable(true);
|
||||||
action->setData(columnIndex);
|
action->setData(columnIndex);
|
||||||
|
@ -85,19 +90,18 @@ EntryView::EntryView(QWidget* parent)
|
||||||
m_headerMenu->addSeparator();
|
m_headerMenu->addSeparator();
|
||||||
m_headerMenu->addAction(tr("Reset to defaults"), this, SLOT(resetViewToDefaults()));
|
m_headerMenu->addAction(tr("Reset to defaults"), this, SLOT(resetViewToDefaults()));
|
||||||
|
|
||||||
|
header()->setMinimumSectionSize(24);
|
||||||
header()->setDefaultSectionSize(100);
|
header()->setDefaultSectionSize(100);
|
||||||
// Stretching of last section interferes with fitting columns to window
|
|
||||||
header()->setStretchLastSection(false);
|
header()->setStretchLastSection(false);
|
||||||
header()->setContextMenuPolicy(Qt::CustomContextMenu);
|
header()->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
|
||||||
connect(header(), SIGNAL(customContextMenuRequested(QPoint)), SLOT(showHeaderMenu(QPoint)));
|
connect(header(), SIGNAL(customContextMenuRequested(QPoint)), SLOT(showHeaderMenu(QPoint)));
|
||||||
connect(header(), SIGNAL(sectionCountChanged(int, int)), SIGNAL(viewStateChanged()));
|
connect(header(), SIGNAL(sectionCountChanged(int, int)), SIGNAL(viewStateChanged()));
|
||||||
connect(header(), SIGNAL(sectionMoved(int, int, int)), SIGNAL(viewStateChanged()));
|
connect(header(), SIGNAL(sectionMoved(int, int, int)), SIGNAL(viewStateChanged()));
|
||||||
connect(header(), SIGNAL(sectionResized(int, int, int)), SIGNAL(viewStateChanged()));
|
connect(header(), SIGNAL(sectionResized(int, int, int)), SIGNAL(viewStateChanged()));
|
||||||
connect(header(), SIGNAL(sortIndicatorChanged(int, Qt::SortOrder)), SIGNAL(viewStateChanged()));
|
connect(header(), SIGNAL(sortIndicatorChanged(int, Qt::SortOrder)), SIGNAL(viewStateChanged()));
|
||||||
|
|
||||||
// TODO: not working as expected, columns will end up being very small,
|
resetFixedColumns();
|
||||||
// most likely due to the widget not being sized properly at this time
|
|
||||||
//fitColumnsToWindow();
|
|
||||||
|
|
||||||
// Configure default search view state and save for later use
|
// Configure default search view state and save for later use
|
||||||
header()->showSection(EntryModel::ParentGroup);
|
header()->showSection(EntryModel::ParentGroup);
|
||||||
|
@ -110,6 +114,8 @@ EntryView::EntryView(QWidget* parent)
|
||||||
m_sortModel->sort(EntryModel::Title, Qt::AscendingOrder);
|
m_sortModel->sort(EntryModel::Title, Qt::AscendingOrder);
|
||||||
sortByColumn(EntryModel::Title, Qt::AscendingOrder);
|
sortByColumn(EntryModel::Title, Qt::AscendingOrder);
|
||||||
m_defaultListViewState = header()->saveState();
|
m_defaultListViewState = header()->saveState();
|
||||||
|
|
||||||
|
m_model->setPaperClipPixmap(filePath()->icon("actions", "paperclip").pixmap(16));
|
||||||
}
|
}
|
||||||
|
|
||||||
void EntryView::keyPressEvent(QKeyEvent* event)
|
void EntryView::keyPressEvent(QKeyEvent* event)
|
||||||
|
@ -292,9 +298,11 @@ QByteArray EntryView::viewState() const
|
||||||
/**
|
/**
|
||||||
* Set view state
|
* Set view state
|
||||||
*/
|
*/
|
||||||
bool EntryView::setViewState(const QByteArray& state) const
|
bool EntryView::setViewState(const QByteArray& state)
|
||||||
{
|
{
|
||||||
return header()->restoreState(state);
|
bool status = header()->restoreState(state);
|
||||||
|
resetFixedColumns();
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -367,6 +375,8 @@ void EntryView::toggleColumnVisibility(QAction *action)
|
||||||
void EntryView::fitColumnsToWindow()
|
void EntryView::fitColumnsToWindow()
|
||||||
{
|
{
|
||||||
header()->resizeSections(QHeaderView::Stretch);
|
header()->resizeSections(QHeaderView::Stretch);
|
||||||
|
resetFixedColumns();
|
||||||
|
fillRemainingWidth(true);
|
||||||
emit viewStateChanged();
|
emit viewStateChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -378,37 +388,8 @@ void EntryView::fitColumnsToContents()
|
||||||
{
|
{
|
||||||
// Resize columns to fit contents
|
// Resize columns to fit contents
|
||||||
header()->resizeSections(QHeaderView::ResizeToContents);
|
header()->resizeSections(QHeaderView::ResizeToContents);
|
||||||
|
resetFixedColumns();
|
||||||
// Determine total width of currently visible columns. If there is
|
fillRemainingWidth(false);
|
||||||
// still some space available on the header, equally distribute it to
|
|
||||||
// visible columns and add remaining fraction to last visible column
|
|
||||||
int width = 0;
|
|
||||||
for (int columnIndex = 0; columnIndex < header()->count(); ++columnIndex) {
|
|
||||||
if (!header()->isSectionHidden(columnIndex)) {
|
|
||||||
width += header()->sectionSize(columnIndex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int visible = header()->count() - header()->hiddenSectionCount();
|
|
||||||
int avail = header()->width() - width;
|
|
||||||
if ((visible <= 0) || (avail <= 0)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int add = avail / visible;
|
|
||||||
width = 0;
|
|
||||||
int last = 0;
|
|
||||||
for (int columnIndex = 0; columnIndex < header()->count(); ++columnIndex) {
|
|
||||||
if (!header()->isSectionHidden(columnIndex)) {
|
|
||||||
header()->resizeSection(columnIndex, header()->sectionSize(columnIndex) + add);
|
|
||||||
width += header()->sectionSize(columnIndex);
|
|
||||||
if (header()->visualIndex(columnIndex) > last) {
|
|
||||||
last = header()->visualIndex(columnIndex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
header()->resizeSection(header()->logicalIndex(last), header()->sectionSize(last) + (header()->width() - width));
|
|
||||||
|
|
||||||
// Shouldn't be necessary due to use of header()->resizeSection, but
|
|
||||||
// lets just do it anyway for the sake of completeness
|
|
||||||
emit viewStateChanged();
|
emit viewStateChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -428,3 +409,46 @@ void EntryView::resetViewToDefaults()
|
||||||
|
|
||||||
fitColumnsToWindow();
|
fitColumnsToWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EntryView::fillRemainingWidth(bool lastColumnOnly)
|
||||||
|
{
|
||||||
|
// Determine total width of currently visible columns
|
||||||
|
int width = 0;
|
||||||
|
int lastColumnIndex = 0;
|
||||||
|
for (int columnIndex = 0; columnIndex < header()->count(); ++columnIndex) {
|
||||||
|
if (!header()->isSectionHidden(columnIndex)) {
|
||||||
|
width += header()->sectionSize(columnIndex);
|
||||||
|
}
|
||||||
|
if (header()->visualIndex(columnIndex) > lastColumnIndex) {
|
||||||
|
lastColumnIndex = header()->visualIndex(columnIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int numColumns = header()->count() - header()->hiddenSectionCount();
|
||||||
|
int availWidth = header()->width() - width;
|
||||||
|
if ((numColumns <= 0) || (availWidth <= 0)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!lastColumnOnly) {
|
||||||
|
// Equally distribute remaining width to visible columns
|
||||||
|
int add = availWidth / numColumns;
|
||||||
|
width = 0;
|
||||||
|
for (int columnIndex = 0; columnIndex < header()->count(); ++columnIndex) {
|
||||||
|
if (!header()->isSectionHidden(columnIndex)) {
|
||||||
|
header()->resizeSection(columnIndex, header()->sectionSize(columnIndex) + add);
|
||||||
|
width += header()->sectionSize(columnIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add remaining width to last column
|
||||||
|
header()->resizeSection(header()->logicalIndex(lastColumnIndex), header()->sectionSize(lastColumnIndex) + (header()->width() - width));
|
||||||
|
}
|
||||||
|
|
||||||
|
void EntryView::resetFixedColumns()
|
||||||
|
{
|
||||||
|
header()->setSectionResizeMode(EntryModel::Paperclip, QHeaderView::Fixed);
|
||||||
|
header()->resizeSection(EntryModel::Paperclip, header()->minimumSectionSize());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ public:
|
||||||
bool isPasswordsHidden() const;
|
bool isPasswordsHidden() const;
|
||||||
void setPasswordsHidden(const bool hide);
|
void setPasswordsHidden(const bool hide);
|
||||||
QByteArray viewState() const;
|
QByteArray viewState() const;
|
||||||
bool setViewState(const QByteArray& state) const;
|
bool setViewState(const QByteArray& state);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setGroup(Group* group);
|
void setGroup(Group* group);
|
||||||
|
@ -74,6 +74,9 @@ private slots:
|
||||||
void resetViewToDefaults();
|
void resetViewToDefaults();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void fillRemainingWidth(bool lastColumnOnly);
|
||||||
|
void resetFixedColumns();
|
||||||
|
|
||||||
EntryModel* const m_model;
|
EntryModel* const m_model;
|
||||||
SortFilterHideProxyModel* const m_sortModel;
|
SortFilterHideProxyModel* const m_sortModel;
|
||||||
bool m_inSearchMode;
|
bool m_inSearchMode;
|
||||||
|
|
|
@ -42,13 +42,13 @@ if(WITH_XC_BROWSER)
|
||||||
|
|
||||||
add_custom_command(TARGET keepassxc-proxy
|
add_custom_command(TARGET keepassxc-proxy
|
||||||
POST_BUILD
|
POST_BUILD
|
||||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/opt/qt/lib/QtCore.framework/Versions/5/QtCore "@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore" ${PROXY_APP_DIR}
|
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change ${Qt5_PREFIX}/lib/QtCore.framework/Versions/5/QtCore "@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore" ${PROXY_APP_DIR}
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
|
||||||
COMMENT "Changing linking of keepassxc-proxy QtCore")
|
COMMENT "Changing linking of keepassxc-proxy QtCore")
|
||||||
|
|
||||||
add_custom_command(TARGET keepassxc-proxy
|
add_custom_command(TARGET keepassxc-proxy
|
||||||
POST_BUILD
|
POST_BUILD
|
||||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/opt/qt/lib/QtNetwork.framework/Versions/5/QtNetwork "@executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork" ${PROXY_APP_DIR}
|
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change ${Qt5_PREFIX}/lib/QtNetwork.framework/Versions/5/QtNetwork "@executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork" ${PROXY_APP_DIR}
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
|
||||||
COMMENT "Changing linking of keepassxc-proxy QtNetwork")
|
COMMENT "Changing linking of keepassxc-proxy QtNetwork")
|
||||||
endif()
|
endif()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue