mirror of
https://github.com/kotatogram/kotatogram-desktop
synced 2025-10-15 14:26:04 +00:00
Moved out template classes for local passcode from header.
This commit is contained in:
@@ -7,137 +7,13 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "settings/settings_common.h"
|
||||
#include "settings/settings_type.h"
|
||||
|
||||
namespace Settings {
|
||||
namespace details {
|
||||
|
||||
class LocalPasscodeEnter : public AbstractSection {
|
||||
public:
|
||||
enum class EnterType {
|
||||
Create,
|
||||
Check,
|
||||
Change,
|
||||
};
|
||||
|
||||
LocalPasscodeEnter(
|
||||
QWidget *parent,
|
||||
not_null<Window::SessionController*> controller);
|
||||
~LocalPasscodeEnter();
|
||||
|
||||
void showFinished() override;
|
||||
void setInnerFocus() override;
|
||||
[[nodiscard]] rpl::producer<Type> sectionShowOther() override;
|
||||
[[nodiscard]] rpl::producer<> sectionShowBack() override;
|
||||
|
||||
[[nodiscard]] rpl::producer<QString> title() override;
|
||||
|
||||
protected:
|
||||
void setupContent();
|
||||
|
||||
[[nodiscard]] virtual EnterType enterType() const = 0;
|
||||
|
||||
private:
|
||||
|
||||
const not_null<Window::SessionController*> _controller;
|
||||
|
||||
rpl::event_stream<> _showFinished;
|
||||
rpl::event_stream<> _setInnerFocus;
|
||||
rpl::event_stream<Type> _showOther;
|
||||
rpl::event_stream<> _showBack;
|
||||
|
||||
};
|
||||
|
||||
} // namespace details
|
||||
|
||||
class LocalPasscodeCreate;
|
||||
class LocalPasscodeCheck;
|
||||
class LocalPasscodeChange;
|
||||
|
||||
template <typename SectionType>
|
||||
class TypedLocalPasscodeEnter : public details::LocalPasscodeEnter {
|
||||
public:
|
||||
TypedLocalPasscodeEnter(
|
||||
QWidget *parent,
|
||||
not_null<Window::SessionController*> controller)
|
||||
: details::LocalPasscodeEnter(parent, controller) {
|
||||
setupContent();
|
||||
}
|
||||
|
||||
[[nodiscard]] static Type Id() {
|
||||
return &SectionMetaImplementation<SectionType>::Meta;
|
||||
}
|
||||
[[nodiscard]] Type id() const final override {
|
||||
return Id();
|
||||
}
|
||||
|
||||
protected:
|
||||
[[nodiscard]] EnterType enterType() const final override {
|
||||
if constexpr (std::is_same_v<SectionType, LocalPasscodeCreate>) {
|
||||
return EnterType::Create;
|
||||
}
|
||||
if constexpr (std::is_same_v<SectionType, LocalPasscodeCheck>) {
|
||||
return EnterType::Check;
|
||||
}
|
||||
if constexpr (std::is_same_v<SectionType, LocalPasscodeChange>) {
|
||||
return EnterType::Change;
|
||||
}
|
||||
return EnterType::Create;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class LocalPasscodeCreate final
|
||||
: public TypedLocalPasscodeEnter<LocalPasscodeCreate> {
|
||||
public:
|
||||
using TypedLocalPasscodeEnter::TypedLocalPasscodeEnter;
|
||||
|
||||
};
|
||||
|
||||
class LocalPasscodeCheck final
|
||||
: public TypedLocalPasscodeEnter<LocalPasscodeCheck> {
|
||||
public:
|
||||
using TypedLocalPasscodeEnter::TypedLocalPasscodeEnter;
|
||||
|
||||
};
|
||||
|
||||
class LocalPasscodeChange final
|
||||
: public TypedLocalPasscodeEnter<LocalPasscodeChange> {
|
||||
public:
|
||||
using TypedLocalPasscodeEnter::TypedLocalPasscodeEnter;
|
||||
|
||||
};
|
||||
|
||||
class LocalPasscodeManage : public Section<LocalPasscodeManage> {
|
||||
public:
|
||||
LocalPasscodeManage(
|
||||
QWidget *parent,
|
||||
not_null<Window::SessionController*> controller);
|
||||
~LocalPasscodeManage();
|
||||
|
||||
[[nodiscard]] rpl::producer<QString> title() override;
|
||||
|
||||
void showFinished() override;
|
||||
[[nodiscard]] rpl::producer<Type> sectionShowOther() override;
|
||||
[[nodiscard]] rpl::producer<> sectionShowBack() override;
|
||||
|
||||
[[nodiscard]] rpl::producer<std::vector<Type>> removeFromStack() override;
|
||||
|
||||
[[nodiscard]] QPointer<Ui::RpWidget> createPinnedToBottom(
|
||||
not_null<Ui::RpWidget*> parent) override;
|
||||
|
||||
private:
|
||||
void setupContent();
|
||||
|
||||
const not_null<Window::SessionController*> _controller;
|
||||
|
||||
rpl::variable<bool> _isBottomFillerShown;
|
||||
|
||||
rpl::event_stream<> _showFinished;
|
||||
rpl::event_stream<Type> _showOther;
|
||||
rpl::event_stream<> _showBack;
|
||||
|
||||
};
|
||||
Type LocalPasscodeCreateId();
|
||||
Type LocalPasscodeCheckId();
|
||||
Type LocalPasscodeManageId();
|
||||
|
||||
} // namespace Settings
|
||||
|
||||
|
Reference in New Issue
Block a user