1300 Commits

Author SHA1 Message Date
Jonathan White
86e5dbda4f
Add Haiku support 2019-03-24 09:32:45 -04:00
louib
a58e3d5ee0 Adding debug info to CLI.
Adding debug info to the CLI and the general option
of the main Qt app. Also took time to:
* use `EXIT_SUCCESS`/`EXIT_FAILURE` constants
for main.cpp (this is what is used in `src/cli`);
* fixed `m_initalized` typo;
* added info on debugging mode being disabled
or not;
* regrouped Qt related stuff in the debug output.
2019-03-24 08:35:33 -04:00
Lars Wendler
eb9ff677d0 src/gui/DatabaseWidget.cpp: Build fails without WITH_XC_KEESHARE
/var/tmp/portage/app-admin/keepassxc-2.4.0/work/keepassxc-2.4.0/src/gui/DatabaseWidget.cpp: In member function ‘void DatabaseWidget::search(const QString&)’:
/var/tmp/portage/app-admin/keepassxc-2.4.0/work/keepassxc-2.4.0/src/gui/DatabaseWidget.cpp:1115:5: error: ‘m_shareLabel’ was not declared in this scope
     m_shareLabel->setVisible(false);
     ^~~~~~~~~~~~
/var/tmp/portage/app-admin/keepassxc-2.4.0/work/keepassxc-2.4.0/src/gui/DatabaseWidget.cpp:1115:5: note: suggested alternative: ‘m_searchingLabel’
     m_shareLabel->setVisible(false);
     ^~~~~~~~~~~~
     m_searchingLabel
2019-03-20 17:22:41 -04:00
Jonathan White
f67b60623e
Update translation source file 2019-03-19 18:56:17 -04:00
Jonathan White
fb5faf0ff5
Ran make format 2019-03-19 18:56:17 -04:00
Jonathan White
37b18a532c Allow database creation without password
* The warning about not having a password is now properly shown (previously it did not let you continue at all)
* General cleanup of the master key editing workflow
2019-03-19 14:46:29 -04:00
Kyle Kneitinger
84f5adb24a Remediate errors in various favicon fetch scenarios (#2779)
Fixes stuck "Download favicon" button on icon download attempts for IP
address hosts by skipping attempts to get 2nd level domain resources
(which resulted in calls to 0.0.0.<rightmost octet of original IP>).

Fixes some cases when DuckDuckGo fallback fails to find icon of >2-level
domains, by adding a request to a DDG URL based on entry's 2nd level
domain.

Repurposes EditWidgetIcons' private fetchCanceled slot (which as of #2439,
is unused by any code) into public abortRequests slot, which is
connected to the entry edit widget's accepted and rejected signals (in
other words, Ok or Cancel was pressed).
2019-03-17 18:28:55 -04:00
ckieschnick
11ecaf4fa4 Hotfix/2657 prevent share overwrite (#2746)
* Fix problem with export from newly saved database

Newly created/saved databases (or used with DatabaseWidget::saveAs)
were not exported/imported correctly.
Fixed the problem by reinitializing the ShareObserver on
DatabaseWidget::saveAs.

* Introduce warnings and prevent conflicting shares

Introduced several warnings and errors to indicate improper settings.
Prevent export when a path is used multiple times (only the file path is
checked - may ignore multiple similar ways to reference a share).

* Improve KeeShare integration in DatabaseWidget

Moved initial KeeShare association to constructor.
Introduced Q_UNUSED to indicate need for assignment statement.
2019-03-15 22:39:46 -04:00
ckieschnick
ebb87e6379 Add share indication label in group view (#2742)
* When viewing a shared group, the sharing state is indicated by a label
similar to the search label.
* Banner shows on children of shared groups
* When searching, share banner is hidden
* Fixed issue where group/entry information was not updated after change
2019-03-07 10:57:13 -05:00
Jonathan White
bbf678975f Fix TouchID operation after database refactor
* Fix #2720
2019-02-25 18:09:54 -05:00
Jonathan White
5cf50d9fae Multiple code improvements
* Fixed unending timer in BulkFileWatcher causing high CPU usage after first save
* Fix multiple SIGNAL connections found with GammaRay
* Remove horizontal scrollbar from EditWidget due to ghosting (maybe Qt bug)
2019-02-25 18:09:54 -05:00
Janek Bevendorff
9bc20f0b42
Prevent unnecessary key transformations, resolves #2704
The database master key settings widget does not actually
need to (re-)transform the master key, it only needs to update
the Key object on the database. Transformation can be deferred
until the Database is persisted to disk. This avoids delays
and unnecessary user interaction with challenge-response
dongles by eliminating redundant key transformations.
2019-02-18 17:21:02 +01:00
Jonathan White
0c587999c6
Code quality updates for 2.4.0 (#2709)
* Minor code quality fixes found by Codacy
* Fix unused variables when WITH_XC_NETWORKING is OFF
* Fix #2684, resolve entry references from the root group
* Fix #2697 and Fix #2699, listen specifically for 
WM_QUERYENDSESSION and WM_ENDSESSION on 
Windows to gracefully shutdown KeePassXC
* Cleanup proxy code and add explicit closure for
shutdown messages
2019-02-18 08:26:56 -05:00
Jonathan White
8cf3ee866e
Updated contributors in about dialog (#2683)
* Updated contributors and translators in about dialog

* Move contributor and maintainer text from
AboutDialog.ui to AboutDialog.cpp in static
strings
2019-02-15 08:56:11 -05:00
Jonathan White
cc932eff30 Fix issues with TOTP
* otp setting is properly loaded and saved (Fix #2671)
* Removing the key from TOTP Setup clears all TOTP
settings for entry
* Santize TOTP key prior to storing in OTP format
2019-02-05 16:09:17 -05:00
Jonathan White
d3a424cc74 Correct window transitions from browser plugin
* Eliminated multiple state variables
* Fix #1643, window is brought to front
2019-02-05 16:09:17 -05:00
Jonathan White
ca39f6e159 Fix Yubikey detection in Database Settings/Wizard
* Fixes #2608
2019-02-05 16:09:17 -05:00
Jonathan White
5a34f90319
Update translations
* Corrected use of QCoreApplication::translate -> QObject::tr
* Corrected plural usage in EntryAttachmentsWidget.cpp
2019-01-30 20:54:35 -05:00
Jonathan White
37f63406c4
Softer warning message for pre-release builds 2019-01-30 15:17:50 -05:00
Jonathan White
21d1e981ca
Cleanup CMakeFiles prior to release
* Remove Git revision finding code in favor of a simple command call: git rev-parse --short=7 HEAD
* Added GIT_HEAD_OVERRIDE to explicitly define the hash for the current commit in case git is not available 
* Made WIX default over NSIS in release tool 
* Rename version.h to git-info.h
2019-01-30 15:03:03 -05:00
Gianluca Recchia
39b96c13e8
Avoid copying QSharedPointers when not needed 2019-01-30 09:50:10 -05:00
Gianluca Recchia
6df9c6f9b2
Remove unused variable 2019-01-30 09:50:10 -05:00
Gianluca Recchia
ffea029001
Replace QMap with QHash when the key is a pointer
QHash gives faster lookups than QMap when the key is a pointer.
2019-01-30 09:50:10 -05:00
Gianluca Recchia
9a5bbea2e4
Use QFileInfo's exists() static method
The exists() static method is documented to be faster than its
equivalent member method.

See https://doc.qt.io/qt-5/qfileinfo.html#exists-1
2019-01-30 09:50:06 -05:00
Weslly
779b529da2 Update checking feature (#2648)
* Check on startup (toggleable setting) and manually
* Option to check for pre-releases (eg, 2.4.0-beta1)
* Only included if WITH_XC_NETWORKING is enabled
2019-01-30 09:11:50 -05:00
Jonathan White
7e1b16250c Performed project-wide code formatting
* Updated format CMake command to properly
ignore new directories and files
* Added output when command is run
* Resolves #2623
2019-01-28 22:38:59 -05:00
Jonathan White
c74664097b
Fix crash when canceling save of new database (#2601)
* Fix crash when canceling save of new database
* Standardize use of DatabaseWidget::save() function
* Close new database tabs that are "discarded"
* Fixes #2604. autoSaveOnExit setting
* Re-implement autosave functionality
2019-01-25 07:20:39 -05:00
Gianluca Recchia
395a88a5ef Prevent post-compilation Qt downgrades (#2576)
* Abort the app if a Qt downgrade is detected

The app will now exit immediately if it was compiled with a Qt version
higher than the one present on the machine.

* Add function for checking the Qt version at runtime

* Re-register global D-Bus menu only if DE is Unity
2019-01-24 22:45:05 -05:00
AlexJoss
cbf92598e2 Add gui dialog when merge makes no changes (#2551)
* Add gui dialog when merge makes no changes
* Add gui dialog when merge makes changes
2019-01-21 14:28:37 -05:00
Jonathan White
9b4a680f7e
Merge branch 'develop' into feature/sharing_groups 2019-01-16 22:54:36 -05:00
Jonathan White
a8e266129a
Corrected formatting and cleanup 2019-01-16 22:53:29 -05:00
boppybibbles
d09ca076dc Toolbar and tool buttons style. (#2357)
* Toolbar and tool buttons style.

- Add ability to change toolbar state and tool buttons style via
application settings widget.
- Save/restore toolbar state on app start/finish.
- Resolves #2343.

* Implicitly convert enum to QVariant
2019-01-16 11:04:32 -05:00
Sami Vänttinen
f8c6c9f72c Fix native hiding of macOS windows (#2583) 2019-01-16 11:03:54 -05:00
Carlo Teubner
d6ce6b85d5 Edit entry widget: password generator: fix flicker (#2584)
When using the password generator inside the Edit Entry screen and
clicking the 'Accept' button, a new password would briefly be shown
before the password generator was hidden (even though the original
generated password would be applied to the entry).

This issue was only visible when passwords were shown in plain text.

Note that this is purely a cosmetic issue.
2019-01-16 11:03:33 -05:00
Christian Kieschnick
a978880b0b Fixed QuaZip for windows, renaming
QuaZip should now usable under windows (fixed include in FindQuaZip)

Renamed the representation from secure and unsecure to signed and
unsigned
2019-01-07 12:02:21 +01:00
Christian Kieschnick
080b02e9d5 KeeShare uses only one flag - checks for QuaZip
Changed flag for KeeShare to
* enable insecure sharing in all cases
* enable secure sharing if QuaZip was found
2019-01-04 09:33:00 +01:00
Christian Kieschnick
2e18388825 Fixed bug in FileWatcher, improved unsafe sharing
BulkFileWatcher didn't recognize added files in observed directory

Improved UI for unsecured sharing only (hide certificate ui, added
warnings and adjusted indicators)
2019-01-03 17:50:36 +01:00
Christian Kieschnick
d4c391deb2 Splitted KeeShare into secure and insecure parts
KeeShare is now supported in a secure and insecure flavor (set
CMake-Flags accordingly to allow or disallow the corresponding import
and exports)
2019-01-03 10:05:08 +01:00
Christian Kieschnick
52dcc2855e Fixed signal slot connections
Fixed connection to renamed CustomData::customDataModified() signal
Fixed connection to renamed Database::databaseModified() signal
Fixed connection to renamed Group::groupModified() signal
2019-01-02 09:14:34 -05:00
Jonathan White
21de6f6163
Merge branch 'develop'
Conflicts:
	src/core/Tools.cpp
	src/sshagent/SSHAgent.cpp
2018-12-30 16:32:57 -05:00
JTL
dd5665c656 Multiple macOS fixes and include keepassxc-cli in DMG (#2165)
* Fixes including keepassxc-cli when building KeePassXC dmg on Mac.
resolves #1697
* Fix Qt search path and Properties display on macOS
* Simplify packaging POST_BUILD fixups
* Various fixes to get cli to run on macos
* Correct cli tests on macOS
* Several macOS related GUI test fixes
2018-12-28 18:32:25 -05:00
Jonathan White
b96b86bfa7 Cleanup and replumb back to functional state 2018-12-28 17:54:52 -05:00
George Shakhnazaryan
b1ff346f63 Allow Enter key to select recent DB on OS X
* Override `keyPressEvent`on WelcomeWidget on OS X to `openDatabaseFromFile`.

openDatabaseFromFile is already invoked via the QListWidget::itemActivated signal,
  but this signal doesn't fire on OS X for Enter.
QListWidget::itemActivated activates on an OS specific activation key. [1]
On Windows/X11, this is Enter, which lets the user easily
  navigate with just the keyboard.
On OS X, this is Ctrl+O, which is already bound to Open Database. This means that itemActivated cannot fire via the keyboard.

Per StackOverflow [2], the recommended solution is to catch
the enter/return key press manually.

This seems like a common problem with Qt. [3] [4]

[1] https://doc.qt.io/archives/qt-4.8/qlistwidget.html#itemActivated
[2] https://stackoverflow.com/questions/31650780/when-does-a-qtreeview-emit-the-activated-signal-on-mac
[3] https://forum.qt.io/topic/36147/pyside-itemactivated-not-triggered-on-mac-os-x-with-return-key
[4] https://github.com/dolphin-emu/dolphin/pull/6099
2018-12-25 16:00:02 -05:00
varjolintu
5488f1bfc3 Switch browser integration to use native raising of windows 2018-12-24 18:17:56 -05:00
Wojtek Gumuła
c630214915 Warn user if deleting entries that are referenced. (#1744)
On warning, references can be replaced with original values or ignored.
Removal process can be also skipped for each conflicting entry. Resolves #852.
2018-12-24 18:15:46 -05:00
Kyle Kneitinger
4d4c839afa Customize buttons on MessageBox and confirm before recycling (#2376)
* Add confirmation prompt before moving groups to the recycling bin

Spawn a yes/no QMessage box when "Delete Group" is selected on a group
that is not already in the recycle bin (note: the prompt for deletion
from the recycle bin was already implemented).  This follows the same
pattern and language as entry deletion.

Fixes #2125

* Make prompts for destructive operations use action words on buttons

Replace yes/no, yes/cancel (and other such buttons on prompts that cause
data to be destroyed) use language that indicates the action that it is
going to take. This makes destructive/unsafe and/or irreversible operations
more clear to the user.

Address feedback on PR #2376

* Refactor MessageBox class to allow for custom buttons

Replaces arguments and return values of type QMessageBox::StandardButton(s)
with MessageBox::Button(s), which reimplements the entire set of
QMessageBox::StandardButton and allows for custom KeePassXC buttons,
such as "Skip". Modifies all calls to MessageBox functions to use
MessageBox::Button(s).

Addresses feedback on #2376

* Remove MessageBox::addButton in favor of map lookup

Replaced the switch statement mechanism in MessageBox::addButton with
a map lookup to address CodeFactor Complex Method issue. This has a
side-effect of a small performance/cleanliness increase, as an
extra QPushButton is no longer created/destroyed (to obtain it's label
text) everytime a MessageBox button based on QMessageBox::StandardButton
is created; now the text is obtained once, at application start up.
2018-12-19 23:14:11 -05:00
Jonathan White
9e2be34897
Merge branch 'develop'
Conflicts:
	CMakeLists.txt
	cmake/CLangFormat.cmake
	snapcraft.yaml
	src/CMakeLists.txt
	src/core/Database.cpp
	src/core/Database.h
	src/core/Tools.cpp
	src/crypto/CryptoHash.h
	src/crypto/ssh/ASN1Key.h
	src/crypto/ssh/OpenSSHKey.cpp
	src/format/Kdbx4Reader.cpp
	src/gui/DatabaseTabWidget.cpp
	src/gui/DatabaseTabWidget.h
	src/gui/DatabaseWidget.cpp
	src/gui/DatabaseWidget.h
	src/gui/DetailsWidget.cpp
	src/gui/DetailsWidget.ui
	src/gui/EditWidgetProperties.cpp
	src/gui/EntryPreviewWidget.cpp
	src/gui/EntryPreviewWidget.ui
	src/gui/FileDialog.cpp
	src/gui/dbsettings/DatabaseSettingsDialog.cpp
	src/gui/dbsettings/DatabaseSettingsDialog.h
	src/gui/group/EditGroupWidget.cpp
	src/gui/group/EditGroupWidget.h
	src/sshagent/ASN1Key.h
	src/sshagent/OpenSSHKey.cpp
	src/sshagent/SSHAgent.cpp
	tests/CMakeLists.txt
2018-12-18 22:28:56 -05:00
Jonathan White
294188dea1
Fix typo in EditEntryWidget after code cleanup #2 2018-11-28 21:51:57 -05:00
Gianluca Recchia
e81841550b
Correct checks for containers' emptiness 2018-11-28 18:29:15 -05:00
Gianluca Recchia
fc930bae69
Restore correct formatting
Many lines were not conformant with the project's formatting rules.
This patch should fix all formatting and whitespace issues in the code
base.
A clang-format directive was put around the connect() calls containing
SIGNALs and SLOTs whose signatures would be denormalized because of the
formatting rules.
2018-11-28 18:29:15 -05:00