* rename file avsettings.ui -> avform.ui, introducing seamless switching between UI/Code
* switch to "private multi-inheritance" pattern, which has several advantages
Diadlo (12):
refactor(avform): Extracted functions with best mode search and combo box filling
refactor(avform): Replace `bestModeInds` on videoMode index and video height as quality name
refactor(avform): Separeted search of preferred index in function
fix(avform): Took default resolution from middle of list
feat(videomode): Added possible video shift
feat(cameradevice, avform): Added ability of screen selection
feat(avform, screenshotgrabber): Added custom screen region selection
style(corevideosource): Small style fixes
fix(videoframe): Added correct image copy
fix(avform): Added restoring selected region
feat(camerasource): Change default video mode to preferred
fix(directshow): Fixed problem with crosses initialization
fix chat area's inner stylesheet
note: the base font is never a bold font (respects html tags: e.g. <b>bold text</b>)
fix block colors:
* action -> blue
* alert -> red
* quote -> green
BREAKING CHANGE: Current markdown syntax is unintuitive, and thus we have agreed on switching to @SkyzohKey's implementation. Replaces all instances of Markdown with Text Styling. Closes#3404.
Setting "currentFont" fires a "currentFontChanged" signal, causing the wrong font pixel-size. After changing the order, the values still overwrite the font settings - yet with the correct values. Probably all signals should be blocked in c'tor during initialization of the settings widget(s) to avoid overwriting any settings.
Call buttons would be enabled but non-functional if you were looking at a friend who was offline. We now check if the friend is offline and disable the call buttons if so.
Fixes#2480
The GUI was deleting itself on logout, but was doing while deep inside the middle of GUI code, resulting in a series of use-after-free on the return path. We now freeze the GUI and logout asynchronously in a more suitable call stack.
Importing a profile, saving a QR code image or setting an auto-accept directory using Nautilus as the default file manager, which many users use, was causing a hang in Qt's method. Setting Qt to use it's own file manager in this circumstance fixes the issue. Closes#3436, closes#3443.
As esecially the "Disabled" text is translated, the audio device will change from "disabled" to "default", just by changing the language.
In contrast to video devices, an audio device is either always available, or sound will be disabled. So "Disabled" is the correct term to use here.
API:
* open default in/out device, when device name is empty
* move privatized code
* fix unsigned/signed conversion warnings
UI (settings):
* refactor: select audio devices by combobox index
Add setFocus() call to make password input focus work after user
clicks Load button (hence losing focus) with invalid password.
Without this patch, focus only works when using Enter key to login.
QVector<T>::removeOne() was added in Qt 5.4, and this method usage
broke build for Debian 8 whitch has Qt 5.3.2.
Add alternative implementation and comment for the future to use
removeOne() when this becomes possible.
Closes#3416
Colomban Wendling (10):
fix(capslockindicator): fix altering the line edit height
fix(capslock_x11): properly release the X display handle
refactor(capslockindicator): encapsulate event handling
fix(capslockindicator): also update indicator when the app gets focus
refactor(capslockindicator): expose as a QAction to simplify API
refactor(capslockindicator): use a single shared event handler
refactor(capslockindicator): avoid overhead on OSX
refactor: replace CapsLockIndicator with new PasswordEdit widget
fix(passwordfields): use PasswordEdit widget for all password fields
refactor(passwordedit): don't add the caps indicator at all if disabled
Introduce a new PasswordEdit widget extending QLineEdit that takes care
of all the specifics of a QLineEntry when it is used to input a
password, including echo mode and caps lock indicator.
Also optimize the event handling to only listen to global events when
it is actually needed, e.g. when a password field is actually visible.
Optimize the implementation by using a single shared event handler,
managing the caps lock state check and propagating it appropriately to
all instances at once.
This allows to have an up-to-date indicator when the caps lock state
changed outside of the application and the user comes back to it, even
if it doesn't trigger a Show event (e.g. the window was visible all the
time).
* The initial status icon to set on GTK didn't exist (anymore?).
* GTK resources aren't compatible with Qt's, so the resource lookup
couldn't work anyway, even if it did exist.
* The caller calls SystemTryIcon::setIcon() right after instancing it
anyway, so there's no need for an initial icon.
This fixes a runtime critical warning from GTK as we tried to unref a
NULL icon, which is invalid.
Fixes#3154.
Also simplify the memory management by using the C++ allocator and by
using the bytes directly as passed to the free callback instead of
passing it again as user data.
Fix altering the Line Edit widget height when the indicator is on (e.g.
when caps lock is active).
To avoid messing with the style and all the complex issues that arise
from it, use an action to display the icon inside the line edit, as it
is a built-in feature that work just fine.
Fixes#3379.
Do not provide more than one entry in the settings for the same actual
mode, even if it was selected for different expected resolutions.
For example, do not list 640x480 twice for both 480p and 360p if the
device doesn't have a better 360p mode, and simply skip the 360p entry.
Diadlo (10):
feat(capslock): Added caps lock checker
feat(loginform): Added caps lock indicator to newPass
feat(loginscreen): Created new CapsLockIndicator class
feat(capslockindicator): Added tooltip
fix(platform): Added checkCapsLock OSX implementation
docs(INSTALL.md): Added libX11 in dependencies
refactor(loginscreen, capslockindicator): Caps Lock indicator class was made independent
fix(capslockindicator): Tooltip color was changed. Tooltip translation was added
style(capslockindicator): Fixed code style
fix(capslockindicator): Fix position of capslock indicator
PafXUS (4):
fix(widget): delete icon in destructor
fix(systemtrayicon): delete qtIcon in destructor
fix(profileform): set parent for validator
fix(friendwidget): check pointer before using it
Index the filtered modes we show to the user when selecting from the
combobox, not the full list of modes actually supported by the device.
Fixes#1033.
Alexander Zhdanov (3):
feat(genericchatform): add "Quote selected text" feature to chat window
docs(user_manual_en.md): add some documentation about quotes
docs(user_manual_en.md): fix documentation about quotes
The filter_audio API is not working for qTox/Tox and thus disabled by default via compiler switch. In current qTox UI, it is not configurable, even when this switch is enabled. According to issue #3194 the library is no longer maintained as well. I don't see any reason to keep it in qTox.
The gain can be set now in dB values, providing acceptable results for a wide range of setups.
note: also introduces const-correctness and some minor cleanup.
Diadlo (3):
feat(notificationscrollarea): Add ability to delete widget from traced widgets list
refactor(contentdialog): Refactor window activate event
fix(contentdialog, widget): Remove "new message" bar after reading message
Zetok Zalbavar (1):
fix(friendlistwidget): use nullptr instead of `0`
agilob (2):
feat(i18n): make Markdown settings translatable
feat(i18n): Make activity by time labels translated by locale
initramfs (3):
feat(profile): show warning on failure to delete profile
feat(profile): add a dialog to indicate profile deletion error
refactor(profile): display files that could not be deleted in prompt
Starting from d121bd839b this string is
being set from .cpp, thus there's no need to keep a duplicate with HTML
tags that make it harder to translate in .ui file.
Duplicate pointed out in #3223 by @verycrypt.
close#3201
add the limitation of the group's name in the shortcut menu
the exclusion of the possibility of incorrect display the context menu, caused by the long group name
initramfs (4):
feat(status): add ability to copy status messages
feat(status): make status in about dialog copyable
refactor(status): enable text selection in about friend dialog
fix(status): explictly refer to this within lambda
Before this new cut-off days is only shown when the load history, now added a feature which in the current chat checks the last post date and if the date does not coincide with current - output a system message about the new date.
Some builds of Qt appear to have a bug in icon loading: QIcon::hasThemeIcon
is sometimes unaware that the icon returned from QIcon::fromTheme was a
fallback icon, causing hasThemeIcon to incorrectly return true.
In qTox this leads to the tray and window icons using the static qTox logo
icon instead of an icon based on the current presence status.
This workaround checks for an icon that definitely does not exist to
determine if hasThemeIcon can be trusted.
On systems with the Qt bug, this workaround will always use our included
icons but user themes will be unable to override them.
Diadlo (12):
feat(toxme): Add ToxMe registration
fix(toxme): Translation fixs
fix(profileform): Fix tab order, fix loop
fix(toxme): Use format strings
feat(profileform): Added ability to change toxme server
feat(toxme): Add save toxme info
fix(toxme): Fix possible segfault
fix(toxme): Fixed potential memory leaks
fix(profileform): Fixed segfault on logut
fix(profileform): Fixed very quick relogin segfault
fix(toxme): Delete extra check
refactor(toxme): Deleted old debug messages
Polshakov Dmitry (4):
fix(profileform): Deleted extra check and extra url
fix(profileform): Add toxme username limitation
style(profileform): Changed local include brackets type
refactor(profileform): Small changes
Diadlo (4):
fix(groupinviteform): remove deleted buttons from set
style(groupinviteform): extracted few variables
fix(groupinviteform): translation invite message
refactor(groupinviteform): Deleting made clearer