55 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// This file is part of Desktop App Toolkit,
 | 
						|
// a set of libraries for developing nice desktop applications.
 | 
						|
//
 | 
						|
// For license and copyright information please follow this link:
 | 
						|
// https://github.com/desktop-app/legal/blob/master/LEGAL
 | 
						|
//
 | 
						|
#pragma once
 | 
						|
 | 
						|
#include "ui/rp_widget.h"
 | 
						|
#include "base/flags.h"
 | 
						|
 | 
						|
namespace style {
 | 
						|
struct WindowTitle;
 | 
						|
} // namespace style
 | 
						|
 | 
						|
namespace Ui {
 | 
						|
namespace Platform {
 | 
						|
class BasicWindowHelper;
 | 
						|
} // namespace Platform
 | 
						|
 | 
						|
enum class WindowTitleHitTestFlag {
 | 
						|
	None       = 0x00,
 | 
						|
	Move       = 0x01,
 | 
						|
	Maximize   = 0x02,
 | 
						|
	FullScreen = 0x04,
 | 
						|
};
 | 
						|
inline constexpr bool is_flag_type(WindowTitleHitTestFlag) {
 | 
						|
	return true;
 | 
						|
}
 | 
						|
using WindowTitleHitTestFlags = base::flags<WindowTitleHitTestFlag>;
 | 
						|
 | 
						|
class Window : public RpWidget {
 | 
						|
public:
 | 
						|
	explicit Window(QWidget *parent = nullptr);
 | 
						|
	~Window();
 | 
						|
 | 
						|
	[[nodiscard]] not_null<RpWidget*> body();
 | 
						|
	[[nodiscard]] not_null<const RpWidget*> body() const;
 | 
						|
 | 
						|
	void setTitle(const QString &title);
 | 
						|
	void setTitleStyle(const style::WindowTitle &st);
 | 
						|
	void setMinimumSize(QSize size);
 | 
						|
	void setFixedSize(QSize size);
 | 
						|
	void setGeometry(QRect rect);
 | 
						|
	void showFullScreen();
 | 
						|
	void showNormal();
 | 
						|
	void close();
 | 
						|
	void setBodyTitleArea(Fn<WindowTitleHitTestFlags(QPoint)> testMethod);
 | 
						|
 | 
						|
private:
 | 
						|
	const std::unique_ptr<Platform::BasicWindowHelper> _helper;
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
} // namespace Ui
 |