Updated lib_ui sources to TDesktop version 3.3

This commit is contained in:
Eric Kotato 2021-12-07 17:52:09 +03:00
commit c6b55d9c37
15 changed files with 56 additions and 22 deletions

View file

@ -34,7 +34,6 @@ PRIVATE
ui/colors.palette ui/colors.palette
emoji_suggestions/emoji_autocomplete.json emoji_suggestions/emoji_autocomplete.json
qt_conf/mac.qrc
qt_conf/win.qrc qt_conf/win.qrc
ui/effects/animation_value.cpp ui/effects/animation_value.cpp
@ -245,8 +244,6 @@ PRIVATE
if (DESKTOP_APP_USE_PACKAGED) if (DESKTOP_APP_USE_PACKAGED)
nice_target_sources(lib_ui ${src_loc} PRIVATE ui/text/qtextitemint.cpp) nice_target_sources(lib_ui ${src_loc} PRIVATE ui/text/qtextitemint.cpp)
else()
nice_target_sources(lib_ui ${src_loc} PRIVATE qt_conf/linux.qrc)
endif() endif()
if (NOT DESKTOP_APP_USE_PACKAGED_FONTS) if (NOT DESKTOP_APP_USE_PACKAGED_FONTS)

View file

@ -1,5 +0,0 @@
<RCC>
<qresource prefix="/qt/etc">
<file alias="qt.conf">qt_linux.conf</file>
</qresource>
</RCC>

View file

@ -1,2 +0,0 @@
<RCC>
</RCC>

View file

@ -1,2 +0,0 @@
[Paths]
Libraries=:/gui/art

View file

@ -19,7 +19,11 @@
QString TextClickHandler::readable() const { QString TextClickHandler::readable() const {
const auto result = url(); const auto result = url();
return result.startsWith(qstr("internal:")) ? QString() : result; return !result.startsWith(qstr("internal:"))
? result
: result.startsWith(qstr("internal:url:"))
? result.mid(qstr("internal:url:").size())
: QString();
} }
UrlClickHandler::UrlClickHandler(const QString &url, bool fullDisplayed) UrlClickHandler::UrlClickHandler(const QString &url, bool fullDisplayed)
@ -33,6 +37,13 @@ UrlClickHandler::UrlClickHandler(const QString &url, bool fullDisplayed)
? original.toEncoded() ? original.toEncoded()
: QString()); : QString());
_readable = good.isValid() ? good.toDisplayString() : _originalUrl; _readable = good.isValid() ? good.toDisplayString() : _originalUrl;
} else if (_originalUrl.startsWith(qstr("internal:url:"))) {
const auto external = _originalUrl.mid(qstr("internal:url:").size());
const auto original = QUrl(external);
const auto good = QUrl(original.isValid()
? original.toEncoded()
: QString());
_readable = good.isValid() ? good.toDisplayString() : external;
} }
} }

View file

@ -154,6 +154,16 @@ auto ClickHandler::getTextEntity() const -> TextEntity {
return { EntityType::Invalid }; return { EntityType::Invalid };
} }
void ClickHandler::setProperty(int id, QVariant value) {
_properties[id] = std::move(value);
}
const QVariant &ClickHandler::property(int id) const {
static const QVariant kEmpty;
const auto i = _properties.find(id);
return (i != end(_properties)) ? i->second : kEmpty;
}
void ActivateClickHandler( void ActivateClickHandler(
not_null<QWidget*> guard, not_null<QWidget*> guard,
ClickHandlerPtr handler, ClickHandlerPtr handler,

View file

@ -7,6 +7,7 @@
#pragma once #pragma once
#include "base/basic_types.h" #include "base/basic_types.h"
#include "base/flat_map.h"
#include <QtCore/QVariant> #include <QtCore/QVariant>
@ -62,6 +63,9 @@ public:
}; };
virtual TextEntity getTextEntity() const; virtual TextEntity getTextEntity() const;
void setProperty(int id, QVariant value);
[[nodiscard]] const QVariant &property(int id) const;
// This method should be called on mouse over a click handler. // This method should be called on mouse over a click handler.
// It returns true if the active handler was changed or false otherwise. // It returns true if the active handler was changed or false otherwise.
static bool setActive(const ClickHandlerPtr &p, ClickHandlerHost *host = nullptr); static bool setActive(const ClickHandlerPtr &p, ClickHandlerHost *host = nullptr);
@ -88,6 +92,8 @@ private:
static ClickHandlerHost *_activeHost; static ClickHandlerHost *_activeHost;
static ClickHandlerHost *_pressedHost; static ClickHandlerHost *_pressedHost;
base::flat_map<int, QVariant> _properties;
}; };
class LeftButtonClickHandler : public ClickHandler { class LeftButtonClickHandler : public ClickHandler {

View file

@ -137,6 +137,9 @@ boxTitleAdditionalFg: #808080; // box title additional text (like in create grou
boxTitleCloseFg: cancelIconFg; // settings close icon and box search cancel icon (like in contacts box) boxTitleCloseFg: cancelIconFg; // settings close icon and box search cancel icon (like in contacts box)
boxTitleCloseFgOver: cancelIconFgOver; // settings close icon and box search cancel icon (like in contacts box) with mouse over boxTitleCloseFgOver: cancelIconFgOver; // settings close icon and box search cancel icon (like in contacts box) with mouse over
boxDividerBg: windowBgOver; // gray divider in boxes and layers
boxDividerFg: windowShadowFg; // gray divider shadow in boxes and layers
paymentsTipActive: #01ad0f; // tip button text in payments checkout form paymentsTipActive: #01ad0f; // tip button text in payments checkout form
membersAboutLimitFg: windowSubTextFgOver; // text in channel members box about the limit (max 200 last members are shown) membersAboutLimitFg: windowSubTextFgOver; // text in channel members box about the limit (max 200 last members are shown)

View file

@ -160,6 +160,15 @@ public:
std::move(clickCallback), std::move(clickCallback),
st); st);
} }
QPointer<RoundButton> addLeftButton(
rpl::producer<QString> text,
Fn<void()> clickCallback,
const style::RoundButton& st) {
return getDelegate()->addLeftButton(
std::move(text),
std::move(clickCallback),
st);
}
void showLoading(bool show) { void showLoading(bool show) {
getDelegate()->showLoading(show); getDelegate()->showLoading(show);
} }

View file

@ -154,8 +154,6 @@ boxLoadingAnimation: InfiniteRadialAnimation(defaultInfiniteRadialAnimation) {
} }
boxLoadingSize: 20px; boxLoadingSize: 20px;
boxDividerBg: windowBgOver;
boxDividerFg: windowShadowFg;
boxDividerTop: icon {{ "box_divider_top", boxDividerFg }}; boxDividerTop: icon {{ "box_divider_top", boxDividerFg }};
boxDividerBottom: icon {{ "box_divider_bottom", boxDividerFg }}; boxDividerBottom: icon {{ "box_divider_bottom", boxDividerFg }};
boxDividerHeight: 10px; boxDividerHeight: 10px;

View file

@ -30,9 +30,7 @@ void style_InitFontsResource() {
#endif // !DESKTOP_APP_USE_PACKAGED_FONTS #endif // !DESKTOP_APP_USE_PACKAGED_FONTS
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
Q_INIT_RESOURCE(win); Q_INIT_RESOURCE(win);
#elif defined Q_OS_UNIX && !defined DESKTOP_APP_USE_PACKAGED // Q_OS_WIN #endif // Q_OS_WIN
Q_INIT_RESOURCE(linux);
#endif // Q_OS_WIN || (Q_OS_UNIX && !DESKTOP_APP_USE_PACKAGED)
#endif // Q_OS_MAC #endif // Q_OS_MAC
} }
@ -341,8 +339,6 @@ FontData::FontData(int size, uint32 flags, int family, Font *other)
, _family(family) { , _family(family) {
if (other) { if (other) {
memcpy(modified, other, sizeof(modified)); memcpy(modified, other, sizeof(modified));
} else {
memset(modified, 0, sizeof(modified));
} }
modified[_flags] = Font(this); modified[_flags] = Font(this);

View file

@ -25,7 +25,7 @@ int registerFontFamily(const QString &family);
class FontData; class FontData;
class Font { class Font {
public: public:
Font(Qt::Initialization = Qt::Uninitialized) : ptr(0) { Font(Qt::Initialization = Qt::Uninitialized) {
} }
Font(int size, uint32 flags, const QString &family); Font(int size, uint32 flags, const QString &family);
Font(int size, uint32 flags, int family); Font(int size, uint32 flags, int family);
@ -44,7 +44,7 @@ public:
operator const QFont &() const; operator const QFont &() const;
private: private:
FontData *ptr; FontData *ptr = nullptr;
void init(int size, uint32 flags, int family, Font *modified); void init(int size, uint32 flags, int family, Font *modified);
friend void startManager(); friend void startManager();

View file

@ -7,6 +7,7 @@
#include "ui/widgets/box_content_divider.h" #include "ui/widgets/box_content_divider.h"
#include "styles/style_layers.h" #include "styles/style_layers.h"
#include "styles/palette.h"
#include <QtGui/QPainter> #include <QtGui/QPainter>
#include <QtGui/QtEvents> #include <QtGui/QtEvents>

View file

@ -192,4 +192,12 @@ void Action::handleKeyPress(not_null<QKeyEvent*> e) {
} }
} }
void Action::setIcon(
const style::icon *icon,
const style::icon *iconOver) {
_icon = icon;
_iconOver = iconOver ? iconOver : icon;
update();
}
} // namespace Ui::Menu } // namespace Ui::Menu

View file

@ -28,6 +28,10 @@ public:
void handleKeyPress(not_null<QKeyEvent*> e) override; void handleKeyPress(not_null<QKeyEvent*> e) override;
void setIcon(
const style::icon *icon,
const style::icon *iconOver = nullptr);
protected: protected:
QPoint prepareRippleStartPosition() const override; QPoint prepareRippleStartPosition() const override;
QImage prepareRippleMask() const override; QImage prepareRippleMask() const override;