diff --git a/CMakeLists.txt b/CMakeLists.txt index ed89e80..c4970a7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,7 +34,6 @@ PRIVATE ui/colors.palette emoji_suggestions/emoji_autocomplete.json - qt_conf/mac.qrc qt_conf/win.qrc ui/effects/animation_value.cpp @@ -245,8 +244,6 @@ PRIVATE if (DESKTOP_APP_USE_PACKAGED) 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() if (NOT DESKTOP_APP_USE_PACKAGED_FONTS) diff --git a/qt_conf/linux.qrc b/qt_conf/linux.qrc deleted file mode 100644 index b84b2cc..0000000 --- a/qt_conf/linux.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - qt_linux.conf - - diff --git a/qt_conf/mac.qrc b/qt_conf/mac.qrc deleted file mode 100644 index 03585ec..0000000 --- a/qt_conf/mac.qrc +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/qt_conf/qt_linux.conf b/qt_conf/qt_linux.conf deleted file mode 100644 index 6d80862..0000000 --- a/qt_conf/qt_linux.conf +++ /dev/null @@ -1,2 +0,0 @@ -[Paths] -Libraries=:/gui/art diff --git a/ui/basic_click_handlers.cpp b/ui/basic_click_handlers.cpp index 8c3e008..88e8cef 100644 --- a/ui/basic_click_handlers.cpp +++ b/ui/basic_click_handlers.cpp @@ -19,7 +19,11 @@ QString TextClickHandler::readable() const { 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) @@ -33,6 +37,13 @@ UrlClickHandler::UrlClickHandler(const QString &url, bool fullDisplayed) ? original.toEncoded() : QString()); _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; } } diff --git a/ui/click_handler.cpp b/ui/click_handler.cpp index c96abe9..f5129cb 100644 --- a/ui/click_handler.cpp +++ b/ui/click_handler.cpp @@ -154,6 +154,16 @@ auto ClickHandler::getTextEntity() const -> TextEntity { 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( not_null guard, ClickHandlerPtr handler, diff --git a/ui/click_handler.h b/ui/click_handler.h index 4c13c47..9e1b0b9 100644 --- a/ui/click_handler.h +++ b/ui/click_handler.h @@ -7,6 +7,7 @@ #pragma once #include "base/basic_types.h" +#include "base/flat_map.h" #include @@ -62,6 +63,9 @@ public: }; 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. // It returns true if the active handler was changed or false otherwise. static bool setActive(const ClickHandlerPtr &p, ClickHandlerHost *host = nullptr); @@ -88,6 +92,8 @@ private: static ClickHandlerHost *_activeHost; static ClickHandlerHost *_pressedHost; + base::flat_map _properties; + }; class LeftButtonClickHandler : public ClickHandler { diff --git a/ui/colors.palette b/ui/colors.palette index ad4fa73..f204881 100644 --- a/ui/colors.palette +++ b/ui/colors.palette @@ -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) 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 membersAboutLimitFg: windowSubTextFgOver; // text in channel members box about the limit (max 200 last members are shown) diff --git a/ui/layers/box_content.h b/ui/layers/box_content.h index ec4740e..d2c6938 100644 --- a/ui/layers/box_content.h +++ b/ui/layers/box_content.h @@ -160,6 +160,15 @@ public: std::move(clickCallback), st); } + QPointer addLeftButton( + rpl::producer text, + Fn clickCallback, + const style::RoundButton& st) { + return getDelegate()->addLeftButton( + std::move(text), + std::move(clickCallback), + st); + } void showLoading(bool show) { getDelegate()->showLoading(show); } diff --git a/ui/layers/layers.style b/ui/layers/layers.style index 10046f9..fcdb708 100644 --- a/ui/layers/layers.style +++ b/ui/layers/layers.style @@ -154,8 +154,6 @@ boxLoadingAnimation: InfiniteRadialAnimation(defaultInfiniteRadialAnimation) { } boxLoadingSize: 20px; -boxDividerBg: windowBgOver; -boxDividerFg: windowShadowFg; boxDividerTop: icon {{ "box_divider_top", boxDividerFg }}; boxDividerBottom: icon {{ "box_divider_bottom", boxDividerFg }}; boxDividerHeight: 10px; diff --git a/ui/style/style_core_font.cpp b/ui/style/style_core_font.cpp index 6c6b2ba..aec2dd9 100644 --- a/ui/style/style_core_font.cpp +++ b/ui/style/style_core_font.cpp @@ -30,9 +30,7 @@ void style_InitFontsResource() { #endif // !DESKTOP_APP_USE_PACKAGED_FONTS #ifdef Q_OS_WIN Q_INIT_RESOURCE(win); -#elif defined Q_OS_UNIX && !defined DESKTOP_APP_USE_PACKAGED // Q_OS_WIN - Q_INIT_RESOURCE(linux); -#endif // Q_OS_WIN || (Q_OS_UNIX && !DESKTOP_APP_USE_PACKAGED) +#endif // Q_OS_WIN #endif // Q_OS_MAC } @@ -341,8 +339,6 @@ FontData::FontData(int size, uint32 flags, int family, Font *other) , _family(family) { if (other) { memcpy(modified, other, sizeof(modified)); - } else { - memset(modified, 0, sizeof(modified)); } modified[_flags] = Font(this); diff --git a/ui/style/style_core_font.h b/ui/style/style_core_font.h index 0642610..3706aca 100644 --- a/ui/style/style_core_font.h +++ b/ui/style/style_core_font.h @@ -25,7 +25,7 @@ int registerFontFamily(const QString &family); class FontData; class Font { 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, int family); @@ -44,7 +44,7 @@ public: operator const QFont &() const; private: - FontData *ptr; + FontData *ptr = nullptr; void init(int size, uint32 flags, int family, Font *modified); friend void startManager(); diff --git a/ui/widgets/box_content_divider.cpp b/ui/widgets/box_content_divider.cpp index bdcf20f..60e03dc 100644 --- a/ui/widgets/box_content_divider.cpp +++ b/ui/widgets/box_content_divider.cpp @@ -7,6 +7,7 @@ #include "ui/widgets/box_content_divider.h" #include "styles/style_layers.h" +#include "styles/palette.h" #include #include diff --git a/ui/widgets/menu/menu_action.cpp b/ui/widgets/menu/menu_action.cpp index 20af513..db4a610 100644 --- a/ui/widgets/menu/menu_action.cpp +++ b/ui/widgets/menu/menu_action.cpp @@ -192,4 +192,12 @@ void Action::handleKeyPress(not_null e) { } } +void Action::setIcon( + const style::icon *icon, + const style::icon *iconOver) { + _icon = icon; + _iconOver = iconOver ? iconOver : icon; + update(); +} + } // namespace Ui::Menu diff --git a/ui/widgets/menu/menu_action.h b/ui/widgets/menu/menu_action.h index 2600788..3149434 100644 --- a/ui/widgets/menu/menu_action.h +++ b/ui/widgets/menu/menu_action.h @@ -28,6 +28,10 @@ public: void handleKeyPress(not_null e) override; + void setIcon( + const style::icon *icon, + const style::icon *iconOver = nullptr); + protected: QPoint prepareRippleStartPosition() const override; QImage prepareRippleMask() const override;