118 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
	
		
			2.8 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
 | 
						|
 | 
						|
namespace Main {
 | 
						|
class Session;
 | 
						|
} // namespace Main
 | 
						|
 | 
						|
// legacy
 | 
						|
bool filedialogGetSaveFile(
 | 
						|
	QString &file,
 | 
						|
	const QString &caption,
 | 
						|
	const QString &filter,
 | 
						|
	const QString &initialPath);
 | 
						|
 | 
						|
QString filedialogDefaultName(
 | 
						|
	const QString &prefix,
 | 
						|
	const QString &extension,
 | 
						|
	const QString &path = QString(),
 | 
						|
	bool skipExistance = false,
 | 
						|
	TimeId fileTime = TimeId(0));
 | 
						|
QString filedialogNextFilename(
 | 
						|
	const QString &name,
 | 
						|
	const QString &cur,
 | 
						|
	const QString &path = QString());
 | 
						|
 | 
						|
namespace File {
 | 
						|
 | 
						|
// Those functions are async wrappers to Platform::File::Unsafe* calls.
 | 
						|
void OpenUrl(const QString &url);
 | 
						|
void OpenEmailLink(const QString &email);
 | 
						|
void OpenWith(const QString &filepath);
 | 
						|
void Launch(const QString &filepath);
 | 
						|
void ShowInFolder(const QString &filepath);
 | 
						|
 | 
						|
[[nodiscard]] QString DefaultDownloadPathFolder(
 | 
						|
	not_null<Main::Session*> session);
 | 
						|
[[nodiscard]] QString DefaultDownloadPath(not_null<Main::Session*> session);
 | 
						|
 | 
						|
namespace internal {
 | 
						|
 | 
						|
inline QString UrlToLocalDefault(const QUrl &url) {
 | 
						|
	return url.toLocalFile();
 | 
						|
}
 | 
						|
 | 
						|
void UnsafeOpenUrlDefault(const QString &url);
 | 
						|
void UnsafeOpenEmailLinkDefault(const QString &email);
 | 
						|
void UnsafeLaunchDefault(const QString &filepath);
 | 
						|
 | 
						|
} // namespace internal
 | 
						|
} // namespace File
 | 
						|
 | 
						|
namespace FileDialog {
 | 
						|
 | 
						|
struct OpenResult {
 | 
						|
	QStringList paths;
 | 
						|
	QByteArray remoteContent;
 | 
						|
};
 | 
						|
void GetOpenPath(
 | 
						|
	QPointer<QWidget> parent,
 | 
						|
	const QString &caption,
 | 
						|
	const QString &filter,
 | 
						|
	Fn<void(OpenResult &&result)> callback,
 | 
						|
	Fn<void()> failed = Fn<void()>());
 | 
						|
void GetOpenPaths(
 | 
						|
	QPointer<QWidget> parent,
 | 
						|
	const QString &caption,
 | 
						|
	const QString &filter,
 | 
						|
	Fn<void(OpenResult &&result)> callback,
 | 
						|
	Fn<void()> failed = Fn<void()>());
 | 
						|
void GetWritePath(
 | 
						|
	QPointer<QWidget> parent,
 | 
						|
	const QString &caption,
 | 
						|
	const QString &filter,
 | 
						|
	const QString &initialPath,
 | 
						|
	Fn<void(QString &&result)> callback,
 | 
						|
	Fn<void()> failed = Fn<void()>());
 | 
						|
void GetFolder(
 | 
						|
	QPointer<QWidget> parent,
 | 
						|
	const QString &caption,
 | 
						|
	const QString &initialPath,
 | 
						|
	Fn<void(QString &&result)> callback,
 | 
						|
	Fn<void()> failed = Fn<void()>());
 | 
						|
 | 
						|
[[nodiscard]] QString AllFilesFilter();
 | 
						|
[[nodiscard]] QString ImagesFilter();
 | 
						|
[[nodiscard]] QString AllOrImagesFilter();
 | 
						|
[[nodiscard]] QString ImagesOrAllFilter();
 | 
						|
[[nodiscard]] QString PhotoVideoFilesFilter();
 | 
						|
[[nodiscard]] const QString &Tmp();
 | 
						|
 | 
						|
namespace internal {
 | 
						|
 | 
						|
enum class Type {
 | 
						|
	ReadFile,
 | 
						|
	ReadFiles,
 | 
						|
	ReadFolder,
 | 
						|
	WriteFile,
 | 
						|
};
 | 
						|
 | 
						|
void InitLastPathDefault();
 | 
						|
 | 
						|
bool GetDefault(
 | 
						|
	QPointer<QWidget> parent,
 | 
						|
	QStringList &files,
 | 
						|
	QByteArray &remoteContent,
 | 
						|
	const QString &caption,
 | 
						|
	const QString &filter,
 | 
						|
	::FileDialog::internal::Type type,
 | 
						|
	QString startFile);
 | 
						|
 | 
						|
} // namespace internal
 | 
						|
} // namespace FileDialog
 |