Commit Graph

310 Commits

Author SHA1 Message Date
Roland Knall fc505eed29 Qt: Fix coverity warnings for TrafficView 2022-06-02 16:50:31 +00:00
Roland Knall f725bbef5e Qt: Minor changes to TrafficTrees
Move the corner button to a QToolButton and put it in a widget
to better handle size constraints. Also fix some fallthroughs
and remove unneeded code
2022-06-02 12:30:41 +02:00
Stig Bjørlykke 335795ab16 Qt: Fix build withouth MaxMindDB 2022-06-02 08:56:22 +02:00
Roland Knall dd9e4fd3fa Qt: Fix warning for TrafficData 2022-06-01 20:21:53 +02:00
Roland Knall 7306d7681a Qt: Save Trafficdata as raw
Allow the option to save the data from the traffic dialogs
as raw data and enable it as the default option for 4.0. The
option to display the data with pretty formatting is still
available.
2022-06-01 11:51:39 +02:00
Roland Knall cb56345175 Qt: Move Traffic Tables to Model/View
The current model makes it very hard to extend the traffic tables
with new functionality. For instance, having a total view column
additionally to the normal columns when filtered.

This change removes the QTreeWidget and moves to a more generic
approach using QAbstractListModel elements.

It is implemented in thtree parts:
- ATapDataModel implements the basic collection and handling of
  the tap data information, as well as updating if new data is
  becoming available
- EndpointDataModel / ConversationDataModel handles the display
  and representation of the data
- Implementing TrafficTab as a TabWidget which will handle the
  adding/removing of new protocol tabs
2022-06-01 11:26:22 +02:00
Roland Knall eca007e617 Qt: Speedup for Resolved Addresses Dlg
This is a small speedup for the ResolvedAddressesDialog. QString::arg
is a copy-by-call method as QString::append just extends the space
occupied by the string, leading to a major speed improvement.

Same goes for configuring the proxymodels first and then assigning the
data model as this will lead not to reorganization everytime
invalideFilter is being called
2022-05-16 15:07:47 +00:00
Roland Knall acdda8eb6b Qt: Fix File Path editor in table
The current situation in UatDelegate as well as PathChooserDelegate leads to issues, where Wireshark crashes if the button is clicked. This is due to the UI not correctly positioning the button inside the cell.

This change implements a widget, which will serve as cell content, handling all relations with choosing the file, but also properly handling the size and geometry of said cell content, therefore no longer leading to crashes and cleaning up code at the same time, as duplicate methods are being removed.

Fixes #17789, #17819, #18088
2022-05-16 09:54:08 +00:00
Gerald Combs 76423db8e0 Qt: Fix clazy-incorrect-emit warnings.
QAbstractItemModel::beginResetModel and endResetModel aren't signals, so
don't emit them. dataChanged is, so do.

Fixes clazy-incorrect-emit:
https://github.com/KDE/clazy/blob/master/docs/checks/README-incorrect-emit.md
2022-05-12 17:29:06 +00:00
Gerald Combs 7b749f5e15 Qt: Fix a version check.
Qt::endl was introduced in 5.14.
2022-05-11 09:21:41 -07:00
Roland Knall ad28888d2f Qt: Fix display filter read/write
Display filters on Windows where broken in such a way that the file was generated with empty lines and the wrong file delimiters.

Likewise, loading the file lead to issues when the formatting was not 100% match by the plattform being used

Fixes #18082
2022-05-11 12:22:29 +00:00
Roland Knall b9b1494cd1 Qt: Disable sorting for if acticity on default
Make the sorting for interface activity disabled by default
and enable it for interfaceFrame.
2022-04-22 14:29:17 +02:00
Roland Knall 374c5997da Qt: Remove unnecessary signal/slot
getPoints never worked in the new system therefore it is removed. SparkLineDelegate uses the underlying model to ensure the correct data being transmitted
2022-04-22 09:37:10 +00:00
Roland Knall 1278af07c3 Qt: Improve UIX for sparklines
Sparklines should display to the user, which interfaces are active
and ready for capture. Additionally it should be easy to find active
interfaces, without filtering first.

This change reorders the interface list, in order to sort active
interfaces on top, as well as hide information if no packet has been
received on that interface, to ensure that the user can find active
interfaces faster, making it easier to capture on systems where
the interfaces have very generic names.

The interface context menu has been amended to allow interfaces to be
hidden/unhidden from the main interface list as well
2022-04-21 15:41:12 +00:00
Gerald Combs 80de95ca71 Qt: Split MainApplication out from WiresharkApplication.
Move WiresharkApplication.{cpp,h} to MainApplication.{cpp,h}. Add back
WiresharkApplication as a thin superclass of MainApplication, similar to
LogsharkApplication. Change all of our wsApp references to mainApp. We
will likely have to change many or most of them back, but that's a
commit for another time.
2022-04-04 09:39:27 -07:00
Gerald Combs f54bad026f Qt: Fix another qsizetype warning.
Fix

ui/qt/models/filter_list_model.cpp:299:33: warning: implicit conversion loses integer precision: 'qsizetype' (aka 'long long') to 'int' [-Wshorten-64-to-32]
            storage.move(strow, storeTo);
                    ~~~~        ^~~~~~~

when building with Qt 5.
2022-03-28 09:05:24 -05:00
Gerald Combs bcd3d05a3e Qt: Fix more Qt6-related warnings. 2022-03-25 12:48:01 -07:00
Roland Knall f0e4cedd69 Qt: Fix most of Qt6 compile warnings and issues 2022-03-25 11:16:18 -07:00
Gerald Combs f8d3ebe0e2 Qt: Handle qsizetype.
Qt 5.10 added qsizetype, aka an ssize_t and Qt 6 makes extensive use of
it. Add a compatibility typedef and use it where we can. Cast it away
where we can't.
2022-03-25 16:51:55 +00:00
Roland Knall 5212a757a4 Qt: Remove sparkline for extcap 2022-03-21 09:49:13 +00:00
Chuck Craft 0396c65d60 Qt: "Decode As..." tooltips misassigned 2022-02-19 11:48:21 +00:00
Chuck Craft 8510013135 Prefs/Expert: disable Open Expert Info on Protocol Preferences context menu
Closes #17920
2022-02-06 13:10:08 +00:00
Roland Knall d003ad9092 Qt: Display fieldname as tooltip in expert info dialog 2022-02-05 11:49:41 +00:00
Roland Knall 1abf3d7000 Qt: Automatically enable new coloring rules
Ensure, that new coloring rules are enabled automatically
2022-01-12 14:33:02 +00:00
j.novak@netsystem.cz 6c9cb8f3fa Prefs/Extcap: Added support for password which is never stored on the disk 2021-12-30 16:03:15 +00:00
João Valverde fe5248717f Replace g_snprintf() with snprintf()
Use macros from inttypes.h with format strings.
2021-12-19 20:06:13 +00:00
Moshe Kaplan 3953ddcf57 Add UI header files to Doxygen
Add @file markers for UI
header files so that Doxygen will
generate documentation for them.
2021-11-30 08:01:36 -05:00
Chuck Craft b081651088 Qt: Expert Info - set group summary label to ei_ field name
There is some lose of detail in the group label but eliminates
the misleading information that comes from grabbing the
potentially modified summary of the first entry in the group.

Closes #14892 #14425
2021-11-30 09:45:47 +00:00
Tomasz Moń 890555b8bd Qt: Qt6.2 compatibility fixes
Wireshark successfully compiles on Windows with Qt6.2 with following
cmake options:
  -DUSE_qt6=ON -DDISABLE_ERROR=ON

QCustomPlot QT 6.2 patch is taken from QCustomPlot forum post by miccs.
2021-11-29 04:55:12 +00:00
Tomasz Moń ede0bc5d61 Qt: Add missing QRegularExpression include 2021-11-28 13:13:31 +01:00
Tomasz Moń e51a0cb4f4 Qt: Use QRegularExpression instead of QRegExp
Qt5 recommended to use QRegularExpression instead of QRegExp.
Qt6 deprecated QRegExp and provides it in Qt5 compatibility module.

QRegularExpression is generally faster and safer to use as the results
are returned in separate QRegularExpressionMatch instead of modifying
interal QRegExp object state.
2021-11-26 09:10:42 +00:00
Joerg Mayer 5bb7e1606b Fix some of the compile errors when compiling with Qt6
This is basically applying c knowledge and Google to the compiler
error messages. There is basically no understanding involved into
what I was doing:
- No idea why lots of #includes needed to be added for Qt6
- No idea how to actually fix the remaining problems, but it's a start

Things that need to be done:
- The AudioDeviceInfo thingy needs to be replaced by something new (as
  an interim solution another patch disables the audio player in Qt6).
- GRegExp eventually needs to be replaced by QRegularExpression
  (available since Qt5.0, so development can be done in Qt5).
- Solutions for the other problems like some methods no longer
  being available in Qt6 that have to sort of co-exist with Qt5.
2021-11-24 10:31:16 +00:00
Stig Bjørlykke a8643ab254 Qt: Fix column validation in columnString()
The column parameter in PacketListRecord::columnString() must be
below cap_file->cinfo.num_cols to be valid. An issue with this check
may be triggered when switching profile.
2021-11-20 17:22:33 +00:00
Gerald Combs ca8e6f3db4 Qt: Add back some Q_OBJECT calls.
They're needed in some places for translations.
2021-10-22 16:47:38 -07:00
Gerald Combs e5bcf6b402 Qt: Use new-style signals+slots in more places. 2021-10-11 16:32:49 +00:00
Gerald Combs f9d3b9d51a Qt: Remove more Q_OBJECT macro calls. 2021-10-09 17:07:03 -07:00
Gerald Combs 991fc16e85 Qt: Remove Q_OBJECT in a few places where it's not needed.
Q_OBJECT is only needed for signals+slots, translations, and other
meta-object services. Remove it in some classes, since having it means
we're generating and compiling code unnecessarily.
2021-10-08 03:29:30 +00:00
Roland Knall 7a283b0f36 Qt: Add heuristic description to dissector tables
Add the descriptive name for the heuristic dissector to the dissector
tables as well as move search bar to top

Fixes #17603
2021-09-26 10:36:44 +00:00
Darius Davis fe9123b541 Qt: Restructure related-packet indicator drawing.
The related-packet drawing code currently intermingles the selection and the
drawing of the conversation "trace" lines and the indicators.  Separating them
out -- so we make the decisions upfront and then do the drawing -- will help
with any future work in this area.
2021-09-13 20:59:52 +10:00
Roland Knall 48cf9d5497 Qt: IOGraph - correctly add new graphs
If a graph is added it should be a single operation, not multiple setData operations
leading to a myriad of dataChanged signals to be fired, which in turn can hinder redissection.
2021-09-08 19:32:39 +00:00
Dr. Lars Völker 8e2cd4f652 UI: Import profiles from ZIP supporting bigger files (Bugfix)
This patch allows the profile importer to recover from a file too large
to import as well as adjusts the maximum allowed config file size.

Closes: #17504
2021-08-25 13:40:12 +00:00
Alexis La Goutte d886837df9 pref_models(Qt/model): Fix Dead Store (Found by Clang Analyzer)
Although the value stored to 'pref' is used in the enclosing expression, the value is never actually read from 'pref'
2021-07-30 20:43:56 +00:00
João Valverde 133b0c583f Move epan/wmem/wmem_scopes.h to epan/
This header was installed incorrectly to epan/wmem_scopes.h.

Instead of creating additional installation rules for a single
header in a subfolder (kept for backward compatibility) just
rename the standard "epan/wmem/wmem.h" include to
"epan/wmem_scopes.h" and fix the documentation.

Now the header is installed *correctly* to epan/wmem_scopes.h.
2021-07-26 14:56:11 +00:00
João Valverde 8cf9791679 Replace some lingering references to g_log() 2021-06-19 02:34:36 +00:00
João Valverde 0e50979b3f Replace g_assert() with ws_assert() 2021-06-19 01:23:31 +00:00
João Valverde dc7f0b88bb Refactor our logging and extend the wslog API
Experience has shown that:

  1. The current logging methods are not very reliable or practical.
A logging bitmask makes little sense as the user-facing interface (who
would want debug but not crtical messages for example?); it's
computer-friendly and user-unfriendly. More importantly the console
log level preference is initialized too late in the startup process
to be used for the logging subsystem and that fact raises a number
of annoying and hard-to-fix usability issues.

  2. Coding around G_MESSAGES_DEBUG to comply with our log level mask
and not clobber the user's settings or not create unexpected log misses
is unworkable and generally follows the principle of most surprise.
The fact that G_MESSAGES_DEBUG="all" can leak to other programs using
GLib is also annoying.

  3. The non-structured GLib logging API is very opinionated and lacks
configurability beyond replacing the log handler.

  4. Windows GUI has some special code to attach to a console,
but it would be nice to abstract away the rest under a single
interface.

  5. Using this logger seems to be noticeably faster.

Deprecate the console log level preference and extend our API to
implement a log handler in wsutil/wslog.h to provide easy-to-use,
flexible and dependable logging during all execution phases.

Log levels have a hierarchy, from most verbose to least verbose
(debug to error). When a given level is set everything above that
is also enabled.

The log level can be set with an environment variable or a command
line option (parsed as soon as possible but still later than the
environment). The default log level is "message".

Dissector logging is not included because it is not clear what log
domain they should use. An explosion to thousands of domains is
not desirable and putting everything in a single domain is probably
too coarse and noisy. For now I think it makes sense to let them do
their own thing using g_log_default_handler() and continue using the
G_MESSAGES_DEBUG mechanism with specific domains for each individual
dissector.

In the future a mechanism may be added to selectively enable these
domains at runtime while trying to avoid the problems introduced
by G_MESSAGES_DEBUG.
2021-06-11 09:40:28 +00:00
Stig Bjørlykke 5dbaa8d3b2 wsutil: Add filesystem write_file_binary_mode()
Add a generic function to write content to file. Use this on write
TLS session keys from UI and tshark, and for export objects.

Remove the now unused export_object_ui.[ch].
2021-06-07 06:24:28 +00:00
Guy Harris 6e95a0aa47 PortsModel: don't populate it by doing a lot of weird string-pushing.
When enumerating port-to-name entries, the callback to
wmem_map_foreach() gets passed:

- a key, which is the port number for the entry;
- a value, which is a pointer to a structure containing pointers to port
names for various transport protocols;
- a user data pointer.

That's sufficient (if you work around some C++ annoyances) to append a
row to a PortsModel, if the user data pointer is a pointer to the
PortsModel.

The existing code, instead, appended to a QStringList of lines (in
effect, undoing the effort of the code that read the services file and
filled in the wmem_map, re-generating a set of lines) in the callback,
and then iterated over all the lines, splitting them with blanks and
appending rows.

Looking at that made my eyeballs bleed so badly that I decided not to
spend any time figuring out why it wasn't working.

So I just make the callback just append rows, avoiding all the
string-pushing.

Fixes #17395.
2021-05-18 01:03:04 -07:00
Gerald Combs cd81255da2 Qt: Fix various compiler warnings.
Fix const-qual and missing-prototypes warnings found by Clang.
2021-04-20 06:11:40 +00:00
João Valverde 7fee50274f Merge the caputils/ and capchild/ directories
The distinction between the different kinds of capture utility
may not warrant a special subfolfer for each, and sometimes the
distinction is not be clear or some functions could stradle
multiple "categories" (like capture_ifinfo.[ch]).

Simplify by having only a generic 'capture' subfolder. The
separate CMake libraries are kept as a way to reuse object code
efficiently.
2021-03-29 06:08:02 +01:00