-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add tag functionality (Issue #508) #6487
Conversation
You can have a look at GMail's labels UI for more ideas. There is probably a ready UI component for that autocomplete drop-down with pills. No need to reinvent the wheel here. |
Added a side panel listing the tags in the active group (see last gif in the Screenshots section). Double clicking on one of them filters by that tag in the entry view. Doubts/TODOs:
|
My personal opinions:
It should behave the same as group selection.
Add an (all) meta tag at the top of the list in the side panel?
I'd say, filter the groups to show only those that have matching entries, and in the preview panel list the entries in the selected group out the filtered ones. |
This PR can get too big with all this functionalities introduced at the same time. I will not touch what I already produced and I will continue implementing the most basic features, but I will keep certain features for subsequent PRs (like allowing to delete a tag in all entries of the database by clicking delete on the side panel). Thanks! this is all very useful |
Concur with that, MVP for this PR |
Added a couple more features and improvements: improved side panel, restore side panel selection after entry editing, tag pills view and autocomplete in Edit entry view. The Tag Widget I used for the last two, https://github.com/nicktrandafil/tags, pulls code from QtGui/private, which either we add as a dependency or I can try to reimplement the functions we use. For the moment it makes the tests fail. The formatting mistakes are introduced by make format. Which feedback should I pay attention to? Updated the screenshots. |
Looks like the auto-complete delay is pretty high. Is that a setting or a limitation of the code? |
There's a more official (?) fork at https://github.com/Qt-Widgets/tags . It says "3 commits ahead, 4 commits behind nicktrandafil:master". It might have fewer build issues? |
It has the same problem: https://github.com/Qt-Widgets/tags/blob/e520e47e40538b7d9c418776413fe4c302470c16/src/tags.cpp#L35 |
There's no delay, it just autocompletes (doesn't suggest by default) and my choice in the video was starting with a letter (case sensitive) that no other tag started with yet. |
Damn @xvallspl that is some great progress! The tag widget works well, but I agree it really shouldn't be using private functions. |
I'm pretty damn excited about this feature |
@droidmonkey TeamCity is complaining about features I'm using from C++17 and C++14. Should we configure it for at least C++17? Should I stick to earlier standards? |
We are currently on C++ 14 standard. I think we can move to 17 though because xenial is out. @phoerious ? |
I guess. |
Although I noticed you are using std functions instead doing Qt functions to do some stuff with lists / sets. Favor Qt where possible. |
5b21b31
to
92eb42e
Compare
92eb42e
to
48b6f59
Compare
34d81b5
to
f1c9ae1
Compare
@xvallspl this is awesome! |
One bit a feedback, it looks like the tag list filters based on the current group. That doesn't really make much sense since tags are supposed to be sort of meta groups that cross-cut your database. Prefer to have all known tags in the database be visible in the pick list at all times. Another good thing to do would be to actually just populate the search box with the "tags:<clicked tag>" and let the search happen naturally from there. This has the benefit of showing the user that tags == search and it also lets the user narrow down the search directly while retaining the tag portion. |
I was thinking of tags as confined to a group, just another way to group your entries within the group. I'll take a look at it as soon as I get out of the git applying hell I'm on. |
I strongly agree that tags should be global, not confined to a group. The purpose is to have a second grouping scheme based on tags, orthogonal to the groups scheme. |
f1c9ae1
to
07c1126
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #6487 +/- ##
===========================================
- Coverage 64.33% 64.24% -0.08%
===========================================
Files 337 339 +2
Lines 42448 43201 +753
===========================================
+ Hits 27305 27753 +448
- Misses 15143 15448 +305 ☔ View full report in Codecov by Sentry. 🚨 Try these New Features:
|
07c1126
to
0669472
Compare
I squashed all the intermediate commits and updated the translations and code format. One bug I found was that when adding a new tag to an entry, it didn't show up in the tag selection panel in the lower left until I locked/unlocked the database. |
Thanks, Jonathan. I'll take a look as soon as I can. |
0669472
to
9ad6903
Compare
This is what I've been hoping for. For example, I upgraded my primary Yubikey. I did not have a single place to track where it was being used. If I was able to tag entries in KeePassXC, it would be easy to list all the sites I need to update, without having to break my group schema. |
The sidebar looks so much better! Nice to see the changes in the searchbar! |
Finished up the code cleanup, this is ready for merge and 2.7.0! |
* show the tags in the entry preview * allow searching by tag * add a sidebar listing the tags in the database * filter entries by tag on click * Introduce a new TagsEdit widget that provides pill aesthetics, fast removal functionality and autocompletion * add tests for the tags feature * introduce the "is" tag for searching. Support for weak passwords and expired added.
e6d20ff
to
783906f
Compare
Very early state, just testing the waters to gather feedback.
Add tag functionality (addresses issue #508)
Work on this PR:
Work for subsequent PRs:
Screenshots
Testing strategy
Manually for the fast prototype, will come up with tests next.
Type of change