 be043a4437
			
		
	
	
		be043a4437
		
	
	
	
	
		
			
			It makes all kinds of usages buggy, including choose file dialog. Fixes #4936. I hope fixes #4950, I hope fixes #4955, I hope fixes #3553.
		
			
				
	
	
		
			111 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
| This file is part of Telegram Desktop,
 | |
| the official desktop application for the Telegram messaging service.
 | |
| 
 | |
| For license and copyright information please follow this link:
 | |
| https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | |
| */
 | |
| #pragma once
 | |
| 
 | |
| #include "boxes/peer_list_box.h"
 | |
| #include "mtproto/sender.h"
 | |
| 
 | |
| namespace Data {
 | |
| class Feed;
 | |
| } // namespace Data
 | |
| 
 | |
| namespace Info {
 | |
| 
 | |
| class Controller;
 | |
| 
 | |
| namespace FeedProfile {
 | |
| 
 | |
| class ChannelsController
 | |
| 	: public PeerListController
 | |
| 	, private base::Subscriber {
 | |
| public:
 | |
| 	ChannelsController(not_null<Controller*> controller);
 | |
| 
 | |
| 	void prepare() override;
 | |
| 	void rowClicked(not_null<PeerListRow*> row) override;
 | |
| 	void rowActionClicked(not_null<PeerListRow*> row) override;
 | |
| 
 | |
| 	std::unique_ptr<PeerListRow> createRestoredRow(
 | |
| 		not_null<PeerData*> peer) override;
 | |
| 	base::unique_qptr<Ui::PopupMenu> rowContextMenu(
 | |
| 		QWidget *parent,
 | |
| 		not_null<PeerListRow*> row) override;
 | |
| 
 | |
| 	std::unique_ptr<PeerListState> saveState() const override;
 | |
| 	void restoreState(std::unique_ptr<PeerListState> state) override;
 | |
| 
 | |
| private:
 | |
| 	class Row;
 | |
| 	struct SavedState : SavedStateBase {
 | |
| 		rpl::lifetime lifetime;
 | |
| 	};
 | |
| 
 | |
| 	void rebuildRows();
 | |
| 	std::unique_ptr<Row> createRow(not_null<History*> history);
 | |
| 
 | |
| 	const not_null<Controller*> _controller;
 | |
| 	not_null<Data::Feed*> _feed;
 | |
| 
 | |
| };
 | |
| 
 | |
| class NotificationsController
 | |
| 	: public PeerListController
 | |
| 	, private MTP::Sender {
 | |
| public:
 | |
| 	static void Start(not_null<Data::Feed*> feed);
 | |
| 
 | |
| 	NotificationsController(not_null<Data::Feed*> feed);
 | |
| 
 | |
| 	void prepare() override;
 | |
| 	void rowClicked(not_null<PeerListRow*> row) override;
 | |
| 
 | |
| 	void loadMoreRows() override;
 | |
| 
 | |
| private:
 | |
| 	std::unique_ptr<PeerListRow> createRow(not_null<ChannelData*> channel);
 | |
| 	void applyFeedDialogs(const MTPmessages_Dialogs &result);
 | |
| 
 | |
| 	not_null<Data::Feed*> _feed;
 | |
| 	mtpRequestId _preloadRequestId = 0;
 | |
| 	//TimeId _preloadOffsetDate = TimeId(0); // #feed
 | |
| 	//MsgId _preloadOffsetId = MsgId(0);
 | |
| 	//PeerData *_preloadPeer = nullptr;
 | |
| 	bool _allLoaded = false;
 | |
| 
 | |
| };
 | |
| 
 | |
| class EditController
 | |
| 	: public PeerListController
 | |
| 	, private MTP::Sender {
 | |
| public:
 | |
| 	static void Start(
 | |
| 		not_null<Data::Feed*> feed,
 | |
| 		ChannelData *channel = nullptr);
 | |
| 
 | |
| 	EditController(
 | |
| 		not_null<Data::Feed*> feed,
 | |
| 		ChannelData *channel);
 | |
| 
 | |
| 	void prepare() override;
 | |
| 	void rowClicked(not_null<PeerListRow*> row) override;
 | |
| 
 | |
| 	void loadMoreRows() override;
 | |
| 
 | |
| private:
 | |
| 	std::unique_ptr<PeerListRow> createRow(not_null<ChannelData*> channel);
 | |
| //	void applyFeedSources(const MTPchannels_FeedSources &result); // #feed
 | |
| 
 | |
| 	not_null<Data::Feed*> _feed;
 | |
| //	ChannelData *_startWithChannel = nullptr; // #feed
 | |
| 	mtpRequestId _preloadRequestId = 0;
 | |
| 	bool _allLoaded = false;
 | |
| 
 | |
| };
 | |
| 
 | |
| } // namespace FeedProfile
 | |
| } // namespace Info
 |