mirror of
https://github.com/vale981/tdesktop
synced 2025-03-06 02:01:40 -05:00
ClickHandler, TopBarWidget and Overview layouts moved to separate files.
Xcode and QtCreator builds are currently broken.
This commit is contained in:
parent
b07cd1264c
commit
5a3fea05ac
94 changed files with 3706 additions and 3279 deletions
|
@ -23,7 +23,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "lang.h"
|
||||
|
||||
#include "application.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "mainwidget.h"
|
||||
#include "apiwrap.h"
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include <libexif/exif-data.h>
|
||||
#endif
|
||||
#include "localstorage.h"
|
||||
|
||||
#include "apiwrap.h"
|
||||
#include "numbers.h"
|
||||
|
||||
namespace {
|
||||
|
@ -146,23 +146,29 @@ namespace App {
|
|||
return AppClass::app();
|
||||
}
|
||||
|
||||
Window *wnd() {
|
||||
MainWindow *wnd() {
|
||||
return AppClass::wnd();
|
||||
}
|
||||
|
||||
MainWidget *main() {
|
||||
Window *w(wnd());
|
||||
return w ? w->mainWidget() : 0;
|
||||
if (auto w = wnd()) {
|
||||
return w->mainWidget();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
SettingsWidget *settings() {
|
||||
Window *w(wnd());
|
||||
return w ? w->settingsWidget() : 0;
|
||||
if (auto w = wnd()) {
|
||||
return w->settingsWidget();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool passcoded() {
|
||||
Window *w(wnd());
|
||||
return w ? w->passcodeWidget() : 0;
|
||||
if (auto w = wnd()) {
|
||||
return w->passcodeWidget();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
FileUploader *uploader() {
|
||||
|
@ -181,7 +187,7 @@ namespace {
|
|||
if (audioPlayer()) {
|
||||
audioPlayer()->stopAndClear();
|
||||
}
|
||||
if (Window *w = wnd()) {
|
||||
if (auto w = wnd()) {
|
||||
w->tempDirDelete(Local::ClearManagerAll);
|
||||
w->notifyClearFast();
|
||||
w->setupIntro(true);
|
||||
|
@ -196,7 +202,7 @@ namespace {
|
|||
globalNotifyChatsPtr = UnknownNotifySettings;
|
||||
if (App::uploader()) App::uploader()->clear();
|
||||
clearStorageImages();
|
||||
if (Window *w = wnd()) {
|
||||
if (auto w = wnd()) {
|
||||
w->getTitle()->updateBackButton();
|
||||
w->updateTitleStatus();
|
||||
w->getTitle()->resizeEvent(0);
|
||||
|
|
|
@ -20,10 +20,10 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "basic_types.h"
|
||||
#include "core/basic_types.h"
|
||||
|
||||
class AppClass;
|
||||
class Window;
|
||||
class MainWindow;
|
||||
class MainWidget;
|
||||
class SettingsWidget;
|
||||
class ApiWrap;
|
||||
|
@ -48,7 +48,7 @@ class LayeredWidget;
|
|||
|
||||
namespace App {
|
||||
AppClass *app();
|
||||
Window *wnd();
|
||||
MainWindow *wnd();
|
||||
MainWidget *main();
|
||||
SettingsWidget *settings();
|
||||
bool passcoded();
|
||||
|
|
|
@ -718,7 +718,7 @@ AppClass::AppClass() : QObject()
|
|||
|
||||
QMimeDatabase().mimeTypeForName(qsl("text/plain")); // create mime database
|
||||
|
||||
_window = new Window();
|
||||
_window = new MainWindow();
|
||||
_window->createWinId();
|
||||
_window->init();
|
||||
|
||||
|
@ -1053,7 +1053,7 @@ void AppClass::checkMapVersion() {
|
|||
AppClass::~AppClass() {
|
||||
Shortcuts::finish();
|
||||
|
||||
if (Window *w = _window) {
|
||||
if (auto w = _window) {
|
||||
_window = 0;
|
||||
delete w;
|
||||
}
|
||||
|
@ -1086,7 +1086,7 @@ AppClass *AppClass::app() {
|
|||
return AppObject;
|
||||
}
|
||||
|
||||
Window *AppClass::wnd() {
|
||||
MainWindow *AppClass::wnd() {
|
||||
return AppObject ? AppObject->_window : 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "pspecific.h"
|
||||
|
||||
class UpdateChecker;
|
||||
|
@ -153,7 +153,7 @@ public:
|
|||
~AppClass();
|
||||
|
||||
static AppClass *app();
|
||||
static Window *wnd();
|
||||
static MainWindow *wnd();
|
||||
static MainWidget *main();
|
||||
|
||||
FileUploader *uploader();
|
||||
|
@ -212,7 +212,7 @@ private:
|
|||
|
||||
uint64 _lastActionTime;
|
||||
|
||||
Window *_window;
|
||||
MainWindow *_window;
|
||||
FileUploader *_uploader;
|
||||
Translator *_translator;
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "basic_types.h"
|
||||
#include "core/basic_types.h"
|
||||
|
||||
void audioInit();
|
||||
bool audioWorks();
|
||||
|
|
|
@ -23,7 +23,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "aboutbox.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include "autoupdater.h"
|
||||
#include "boxes/confirmbox.h"
|
||||
|
|
|
@ -25,7 +25,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "abstractbox.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
void BlueTitleShadow::paintEvent(QPaintEvent *e) {
|
||||
Painter p(this);
|
||||
|
|
|
@ -28,7 +28,8 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "photocropbox.h"
|
||||
#include "ui/filedialog.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "apiwrap.h"
|
||||
|
||||
AddContactBox::AddContactBox(QString fname, QString lname, QString phone) : AbstractBox(st::boxWidth)
|
||||
, _user(0)
|
||||
|
|
|
@ -26,7 +26,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "autolockbox.h"
|
||||
#include "confirmbox.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
AutoLockBox::AutoLockBox() :
|
||||
_close(this, lang(lng_box_ok), st::defaultBoxButton) {
|
||||
|
|
|
@ -23,7 +23,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "backgroundbox.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "settingswidget.h"
|
||||
|
||||
BackgroundInner::BackgroundInner() :
|
||||
|
|
|
@ -23,9 +23,10 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "confirmbox.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
|
||||
#include "mainwindow.h"
|
||||
#include "apiwrap.h"
|
||||
#include "application.h"
|
||||
#include "core/click_handler_types.h"
|
||||
|
||||
TextParseOptions _confirmBoxTextOptions = {
|
||||
TextParseLinks | TextParseMultiline | TextParseRichText, // flags
|
||||
|
|
|
@ -25,7 +25,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "connectionbox.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
ConnectionBox::ConnectionBox() : AbstractBox(st::boxWidth)
|
||||
, _hostInput(this, st::connectionHostInputField, lang(lng_connection_host_ph), cConnectionProxy().host)
|
||||
|
|
|
@ -26,11 +26,12 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "boxes/addcontactbox.h"
|
||||
#include "boxes/contactsbox.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "application.h"
|
||||
#include "ui/filedialog.h"
|
||||
#include "boxes/photocropbox.h"
|
||||
#include "boxes/confirmbox.h"
|
||||
#include "apiwrap.h"
|
||||
|
||||
QString cantInviteError() {
|
||||
return lng_cant_invite_not_contact(lt_more_info, textcmdLink(qsl("https://telegram.me/spambot"), lang(lng_cant_more_info)));
|
||||
|
|
|
@ -23,7 +23,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "emojibox.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
namespace {
|
||||
// copied from genemoji.cpp
|
||||
|
|
|
@ -26,7 +26,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "languagebox.h"
|
||||
#include "confirmbox.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include "langloaderplain.h"
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "passcodebox.h"
|
||||
#include "confirmbox.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include "localstorage.h"
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "sessionsbox.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include "countries.h"
|
||||
#include "confirmbox.h"
|
||||
|
|
|
@ -23,10 +23,10 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "stickersetbox.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "settingswidget.h"
|
||||
#include "boxes/confirmbox.h"
|
||||
|
||||
#include "apiwrap.h"
|
||||
#include "localstorage.h"
|
||||
|
||||
StickerSetInner::StickerSetInner(const MTPInputStickerSet &set) : TWidget()
|
||||
|
|
|
@ -24,7 +24,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "application.h"
|
||||
#include "usernamebox.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
UsernameBox::UsernameBox() : AbstractBox(st::boxWidth),
|
||||
_save(this, lang(lng_settings_save), st::defaultBoxButton),
|
||||
|
|
63
Telegram/SourceFiles/core/click_handler.cpp
Normal file
63
Telegram/SourceFiles/core/click_handler.cpp
Normal file
|
@ -0,0 +1,63 @@
|
|||
/*
|
||||
This file is part of Telegram Desktop,
|
||||
the official desktop version of Telegram messaging app, see https://telegram.org
|
||||
|
||||
Telegram Desktop is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
It is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
In addition, as a special exception, the copyright holders give permission
|
||||
to link the code of portions of this program with the OpenSSL library.
|
||||
|
||||
Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
|
||||
Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
||||
*/
|
||||
#include "stdafx.h"
|
||||
#include "core/click_handler.h"
|
||||
|
||||
ClickHandlerHost::~ClickHandlerHost() {
|
||||
ClickHandler::hostDestroyed(this);
|
||||
}
|
||||
|
||||
NeverFreedPointer<ClickHandlerPtr> ClickHandler::_active;
|
||||
NeverFreedPointer<ClickHandlerPtr> ClickHandler::_pressed;
|
||||
ClickHandlerHost *ClickHandler::_activeHost = nullptr;
|
||||
ClickHandlerHost *ClickHandler::_pressedHost = nullptr;
|
||||
|
||||
bool ClickHandler::setActive(const ClickHandlerPtr &p, ClickHandlerHost *host) {
|
||||
if ((_active && (*_active == p)) || (!_active && !p)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// emit clickHandlerActiveChanged only when there is no
|
||||
// other pressed click handler currently, if there is
|
||||
// this method will be called when it is unpressed
|
||||
if (_active && *_active) {
|
||||
bool emitClickHandlerActiveChanged = (!_pressed || !*_pressed || *_pressed == *_active);
|
||||
ClickHandlerPtr wasactive = *_active;
|
||||
(*_active).clear();
|
||||
if (_activeHost) {
|
||||
if (emitClickHandlerActiveChanged) {
|
||||
_activeHost->clickHandlerActiveChanged(wasactive, false);
|
||||
}
|
||||
_activeHost = nullptr;
|
||||
}
|
||||
}
|
||||
if (p) {
|
||||
_active.makeIfNull();
|
||||
*_active = p;
|
||||
if ((_activeHost = host)) {
|
||||
bool emitClickHandlerActiveChanged = (!_pressed || !*_pressed || *_pressed == *_active);
|
||||
if (emitClickHandlerActiveChanged) {
|
||||
_activeHost->clickHandlerActiveChanged(*_active, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
157
Telegram/SourceFiles/core/click_handler.h
Normal file
157
Telegram/SourceFiles/core/click_handler.h
Normal file
|
@ -0,0 +1,157 @@
|
|||
/*
|
||||
This file is part of Telegram Desktop,
|
||||
the official desktop version of Telegram messaging app, see https://telegram.org
|
||||
|
||||
Telegram Desktop is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
It is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
In addition, as a special exception, the copyright holders give permission
|
||||
to link the code of portions of this program with the OpenSSL library.
|
||||
|
||||
Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
|
||||
Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
class ClickHandler;
|
||||
using ClickHandlerPtr = QSharedPointer<ClickHandler>;
|
||||
|
||||
class ClickHandlerHost {
|
||||
protected:
|
||||
|
||||
virtual void clickHandlerActiveChanged(const ClickHandlerPtr &action, bool active) {
|
||||
}
|
||||
virtual void clickHandlerPressedChanged(const ClickHandlerPtr &action, bool pressed) {
|
||||
}
|
||||
virtual ~ClickHandlerHost() = 0;
|
||||
friend class ClickHandler;
|
||||
|
||||
};
|
||||
|
||||
class ClickHandler {
|
||||
public:
|
||||
|
||||
virtual void onClick(Qt::MouseButton) const = 0;
|
||||
|
||||
virtual QString tooltip() const {
|
||||
return QString();
|
||||
}
|
||||
virtual void copyToClipboard() const {
|
||||
}
|
||||
virtual QString copyToClipboardContextItem() const {
|
||||
return QString();
|
||||
}
|
||||
virtual QString text() const {
|
||||
return QString();
|
||||
}
|
||||
virtual QString dragText() const {
|
||||
return text();
|
||||
}
|
||||
|
||||
virtual ~ClickHandler() {
|
||||
}
|
||||
|
||||
// this method should be called on mouse over a click handler
|
||||
// it returns true if something was changed or false otherwise
|
||||
static bool setActive(const ClickHandlerPtr &p, ClickHandlerHost *host = nullptr);
|
||||
|
||||
// this method should be called when mouse leaves the host
|
||||
// it returns true if something was changed or false otherwise
|
||||
static bool clearActive(ClickHandlerHost *host = nullptr) {
|
||||
if (host && _activeHost != host) {
|
||||
return false;
|
||||
}
|
||||
return setActive(ClickHandlerPtr(), host);
|
||||
}
|
||||
|
||||
// this method should be called on mouse pressed
|
||||
static void pressed() {
|
||||
unpressed();
|
||||
if (!_active || !*_active) {
|
||||
return;
|
||||
}
|
||||
_pressed.makeIfNull();
|
||||
*_pressed = *_active;
|
||||
if ((_pressedHost = _activeHost)) {
|
||||
_pressedHost->clickHandlerPressedChanged(*_pressed, true);
|
||||
}
|
||||
}
|
||||
|
||||
// this method should be called on mouse released
|
||||
// the activated click handler is returned
|
||||
static ClickHandlerPtr unpressed() {
|
||||
if (_pressed && *_pressed) {
|
||||
bool activated = (_active && *_active == *_pressed);
|
||||
ClickHandlerPtr waspressed = *_pressed;
|
||||
(*_pressed).clear();
|
||||
if (_pressedHost) {
|
||||
_pressedHost->clickHandlerPressedChanged(waspressed, false);
|
||||
_pressedHost = nullptr;
|
||||
}
|
||||
|
||||
if (activated) {
|
||||
return *_active;
|
||||
} else if (_active && *_active && _activeHost) {
|
||||
// emit clickHandlerActiveChanged for current active
|
||||
// click handler, which we didn't emit while we has
|
||||
// a pressed click handler
|
||||
_activeHost->clickHandlerActiveChanged(*_active, true);
|
||||
}
|
||||
}
|
||||
return ClickHandlerPtr();
|
||||
}
|
||||
|
||||
static ClickHandlerPtr getActive() {
|
||||
return _active ? *_active : ClickHandlerPtr();
|
||||
}
|
||||
static ClickHandlerPtr getPressed() {
|
||||
return _pressed ? *_pressed : ClickHandlerPtr();
|
||||
}
|
||||
|
||||
static bool showAsActive(const ClickHandlerPtr &p) {
|
||||
if (!p || !_active || p != *_active) {
|
||||
return false;
|
||||
}
|
||||
return !_pressed || !*_pressed || (p == *_pressed);
|
||||
}
|
||||
static bool showAsPressed(const ClickHandlerPtr &p) {
|
||||
if (!p || !_active || p != *_active) {
|
||||
return false;
|
||||
}
|
||||
return _pressed && (p == *_pressed);
|
||||
}
|
||||
static void hostDestroyed(ClickHandlerHost *host) {
|
||||
if (_activeHost == host) {
|
||||
_activeHost = nullptr;
|
||||
} else if (_pressedHost == host) {
|
||||
_pressedHost = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
static NeverFreedPointer<ClickHandlerPtr> _active;
|
||||
static NeverFreedPointer<ClickHandlerPtr> _pressed;
|
||||
static ClickHandlerHost *_activeHost;
|
||||
static ClickHandlerHost *_pressedHost;
|
||||
|
||||
};
|
||||
|
||||
class LeftButtonClickHandler : public ClickHandler {
|
||||
public:
|
||||
void onClick(Qt::MouseButton button) const override final {
|
||||
if (button != Qt::LeftButton) return;
|
||||
onClickImpl();
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual void onClickImpl() const = 0;
|
||||
|
||||
};
|
133
Telegram/SourceFiles/core/click_handler_types.cpp
Normal file
133
Telegram/SourceFiles/core/click_handler_types.cpp
Normal file
|
@ -0,0 +1,133 @@
|
|||
/*
|
||||
This file is part of Telegram Desktop,
|
||||
the official desktop version of Telegram messaging app, see https://telegram.org
|
||||
|
||||
Telegram Desktop is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
It is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
In addition, as a special exception, the copyright holders give permission
|
||||
to link the code of portions of this program with the OpenSSL library.
|
||||
|
||||
Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
|
||||
Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
||||
*/
|
||||
#include "stdafx.h"
|
||||
#include "core/click_handler_types.h"
|
||||
|
||||
#include "lang.h"
|
||||
#include "pspecific.h"
|
||||
#include "boxes/confirmbox.h"
|
||||
|
||||
QString UrlClickHandler::copyToClipboardContextItem() const {
|
||||
return lang(isEmail() ? lng_context_copy_email : lng_context_copy_link);
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
QString tryConvertUrlToLocal(const QString &url) {
|
||||
QRegularExpressionMatch telegramMeUser = QRegularExpression(qsl("^https?://telegram\\.me/([a-zA-Z0-9\\.\\_]+)(/?\\?|/?$|/(\\d+)/?(?:\\?|$))"), QRegularExpression::CaseInsensitiveOption).match(url);
|
||||
QRegularExpressionMatch telegramMeGroup = QRegularExpression(qsl("^https?://telegram\\.me/joinchat/([a-zA-Z0-9\\.\\_\\-]+)(\\?|$)"), QRegularExpression::CaseInsensitiveOption).match(url);
|
||||
QRegularExpressionMatch telegramMeStickers = QRegularExpression(qsl("^https?://telegram\\.me/addstickers/([a-zA-Z0-9\\.\\_]+)(\\?|$)"), QRegularExpression::CaseInsensitiveOption).match(url);
|
||||
QRegularExpressionMatch telegramMeShareUrl = QRegularExpression(qsl("^https?://telegram\\.me/share/url\\?(.+)$"), QRegularExpression::CaseInsensitiveOption).match(url);
|
||||
if (telegramMeGroup.hasMatch()) {
|
||||
return qsl("tg://join?invite=") + myUrlEncode(telegramMeGroup.captured(1));
|
||||
} else if (telegramMeStickers.hasMatch()) {
|
||||
return qsl("tg://addstickers?set=") + myUrlEncode(telegramMeStickers.captured(1));
|
||||
} else if (telegramMeShareUrl.hasMatch()) {
|
||||
return qsl("tg://msg_url?") + telegramMeShareUrl.captured(1);
|
||||
} else if (telegramMeUser.hasMatch()) {
|
||||
QString params = url.mid(telegramMeUser.captured(0).size()), postParam;
|
||||
if (QRegularExpression(qsl("^/\\d+/?(?:\\?|$)")).match(telegramMeUser.captured(2)).hasMatch()) {
|
||||
postParam = qsl("&post=") + telegramMeUser.captured(3);
|
||||
}
|
||||
return qsl("tg://resolve/?domain=") + myUrlEncode(telegramMeUser.captured(1)) + postParam + (params.isEmpty() ? QString() : '&' + params);
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
void UrlClickHandler::doOpen(QString url) {
|
||||
PopupTooltip::Hide();
|
||||
|
||||
if (isEmail(url)) {
|
||||
QUrl u(qstr("mailto:") + url);
|
||||
if (!QDesktopServices::openUrl(u)) {
|
||||
psOpenFile(u.toString(QUrl::FullyEncoded), true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
url = tryConvertUrlToLocal(url);
|
||||
|
||||
if (url.startsWith(qstr("tg://"), Qt::CaseInsensitive)) {
|
||||
App::openLocalUrl(url);
|
||||
} else {
|
||||
QDesktopServices::openUrl(url);
|
||||
}
|
||||
}
|
||||
|
||||
void HiddenUrlClickHandler::onClick(Qt::MouseButton button) const {
|
||||
QString u = url();
|
||||
|
||||
u = tryConvertUrlToLocal(u);
|
||||
|
||||
if (u.startsWith(qstr("tg://"))) {
|
||||
App::openLocalUrl(u);
|
||||
} else {
|
||||
Ui::showLayer(new ConfirmLinkBox(u));
|
||||
}
|
||||
}
|
||||
|
||||
QString LocationClickHandler::copyToClipboardContextItem() const {
|
||||
return lang(lng_context_copy_link);
|
||||
}
|
||||
|
||||
void LocationClickHandler::onClick(Qt::MouseButton button) const {
|
||||
if (!psLaunchMaps(_coords)) {
|
||||
QDesktopServices::openUrl(_text);
|
||||
}
|
||||
}
|
||||
|
||||
void LocationClickHandler::setup() {
|
||||
QString latlon(qsl("%1,%2").arg(_coords.lat).arg(_coords.lon));
|
||||
_text = qsl("https://maps.google.com/maps?q=") + latlon + qsl("&ll=") + latlon + qsl("&z=16");
|
||||
}
|
||||
|
||||
QString MentionClickHandler::copyToClipboardContextItem() const {
|
||||
return lang(lng_context_copy_mention);
|
||||
}
|
||||
|
||||
void MentionClickHandler::onClick(Qt::MouseButton button) const {
|
||||
if (button == Qt::LeftButton || button == Qt::MiddleButton) {
|
||||
App::openPeerByName(_tag.mid(1), ShowAtProfileMsgId);
|
||||
}
|
||||
}
|
||||
|
||||
QString HashtagClickHandler::copyToClipboardContextItem() const {
|
||||
return lang(lng_context_copy_hashtag);
|
||||
}
|
||||
|
||||
void HashtagClickHandler::onClick(Qt::MouseButton button) const {
|
||||
if (button == Qt::LeftButton || button == Qt::MiddleButton) {
|
||||
App::searchByHashtag(_tag, Ui::getPeerForMouseAction());
|
||||
}
|
||||
}
|
||||
|
||||
void BotCommandClickHandler::onClick(Qt::MouseButton button) const {
|
||||
if (button == Qt::LeftButton || button == Qt::MiddleButton) {
|
||||
if (PeerData *peer = Ui::getPeerForMouseAction()) {
|
||||
Ui::showPeerHistory(peer, ShowAtTheEndMsgId);
|
||||
App::sendBotCommand(peer, _cmd);
|
||||
} else {
|
||||
App::insertBotCommand(_cmd);
|
||||
}
|
||||
}
|
||||
}
|
181
Telegram/SourceFiles/core/click_handler_types.h
Normal file
181
Telegram/SourceFiles/core/click_handler_types.h
Normal file
|
@ -0,0 +1,181 @@
|
|||
/*
|
||||
This file is part of Telegram Desktop,
|
||||
the official desktop version of Telegram messaging app, see https://telegram.org
|
||||
|
||||
Telegram Desktop is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
It is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
In addition, as a special exception, the copyright holders give permission
|
||||
to link the code of portions of this program with the OpenSSL library.
|
||||
|
||||
Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
|
||||
Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "core/click_handler.h"
|
||||
|
||||
class TextClickHandler : public ClickHandler {
|
||||
public:
|
||||
|
||||
TextClickHandler(bool fullDisplayed = true) : _fullDisplayed(fullDisplayed) {
|
||||
}
|
||||
|
||||
void copyToClipboard() const override {
|
||||
QString u = url();
|
||||
if (!u.isEmpty()) {
|
||||
QApplication::clipboard()->setText(u);
|
||||
}
|
||||
}
|
||||
|
||||
QString tooltip() const override {
|
||||
return _fullDisplayed ? QString() : readable();
|
||||
}
|
||||
|
||||
void setFullDisplayed(bool full) {
|
||||
_fullDisplayed = full;
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual QString url() const = 0;
|
||||
virtual QString readable() const {
|
||||
return url();
|
||||
}
|
||||
|
||||
bool _fullDisplayed;
|
||||
|
||||
};
|
||||
|
||||
class UrlClickHandler : public TextClickHandler {
|
||||
public:
|
||||
UrlClickHandler(const QString &url, bool fullDisplayed = true) : TextClickHandler(fullDisplayed), _url(url) {
|
||||
if (isEmail()) {
|
||||
_readable = _url;
|
||||
} else {
|
||||
QUrl u(_url), good(u.isValid() ? u.toEncoded() : QString());
|
||||
_readable = good.isValid() ? good.toDisplayString() : _url;
|
||||
}
|
||||
}
|
||||
QString copyToClipboardContextItem() const override;
|
||||
|
||||
QString text() const override {
|
||||
return _url;
|
||||
}
|
||||
QString dragText() const override {
|
||||
return url();
|
||||
}
|
||||
|
||||
static void doOpen(QString url);
|
||||
void onClick(Qt::MouseButton button) const override {
|
||||
if (button == Qt::LeftButton || button == Qt::MiddleButton) {
|
||||
doOpen(url());
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
QString url() const override {
|
||||
if (isEmail()) {
|
||||
return _url;
|
||||
}
|
||||
|
||||
QUrl u(_url), good(u.isValid() ? u.toEncoded() : QString());
|
||||
QString result(good.isValid() ? QString::fromUtf8(good.toEncoded()) : _url);
|
||||
|
||||
if (!QRegularExpression(qsl("^[a-zA-Z]+:")).match(result).hasMatch()) { // no protocol
|
||||
return qsl("http://") + result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
QString readable() const override {
|
||||
return _readable;
|
||||
}
|
||||
|
||||
private:
|
||||
static bool isEmail(const QString &url) {
|
||||
int at = url.indexOf('@'), slash = url.indexOf('/');
|
||||
return ((at > 0) && (slash < 0 || slash > at));
|
||||
}
|
||||
bool isEmail() const {
|
||||
return isEmail(_url);
|
||||
}
|
||||
|
||||
QString _url, _readable;
|
||||
|
||||
};
|
||||
typedef QSharedPointer<TextClickHandler> TextClickHandlerPtr;
|
||||
|
||||
class HiddenUrlClickHandler : public UrlClickHandler {
|
||||
public:
|
||||
HiddenUrlClickHandler(QString url) : UrlClickHandler(url, false) {
|
||||
}
|
||||
void onClick(Qt::MouseButton button) const override;
|
||||
|
||||
};
|
||||
|
||||
class MentionClickHandler : public TextClickHandler {
|
||||
public:
|
||||
MentionClickHandler(const QString &tag) : _tag(tag) {
|
||||
}
|
||||
QString copyToClipboardContextItem() const override;
|
||||
|
||||
QString text() const override {
|
||||
return _tag;
|
||||
}
|
||||
void onClick(Qt::MouseButton button) const override;
|
||||
|
||||
protected:
|
||||
QString url() const override {
|
||||
return _tag;
|
||||
}
|
||||
|
||||
private:
|
||||
QString _tag;
|
||||
|
||||
};
|
||||
|
||||
class HashtagClickHandler : public TextClickHandler {
|
||||
public:
|
||||
HashtagClickHandler(const QString &tag) : _tag(tag) {
|
||||
}
|
||||
QString copyToClipboardContextItem() const override;
|
||||
|
||||
QString text() const override {
|
||||
return _tag;
|
||||
}
|
||||
void onClick(Qt::MouseButton button) const override;
|
||||
|
||||
protected:
|
||||
QString url() const override {
|
||||
return _tag;
|
||||
}
|
||||
|
||||
private:
|
||||
QString _tag;
|
||||
|
||||
};
|
||||
|
||||
class BotCommandClickHandler : public TextClickHandler {
|
||||
public:
|
||||
BotCommandClickHandler(const QString &cmd) : _cmd(cmd) {
|
||||
}
|
||||
QString text() const override {
|
||||
return _cmd;
|
||||
}
|
||||
void onClick(Qt::MouseButton button) const override;
|
||||
|
||||
protected:
|
||||
QString url() const override {
|
||||
return _cmd;
|
||||
}
|
||||
|
||||
private:
|
||||
QString _cmd;
|
||||
|
||||
};
|
|
@ -26,13 +26,14 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "ui/style.h"
|
||||
#include "lang.h"
|
||||
#include "application.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "dialogswidget.h"
|
||||
#include "mainwidget.h"
|
||||
#include "boxes/addcontactbox.h"
|
||||
#include "boxes/contactsbox.h"
|
||||
#include "boxes/confirmbox.h"
|
||||
#include "localstorage.h"
|
||||
#include "apiwrap.h"
|
||||
|
||||
DialogsInner::DialogsInner(QWidget *parent, MainWidget *main) : SplittedWidget(parent)
|
||||
, dialogs(std_::make_unique<Dialogs::IndexedList>(Dialogs::SortMode::Date))
|
||||
|
|
|
@ -28,7 +28,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "historywidget.h"
|
||||
#include "localstorage.h"
|
||||
#include "lang.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "apiwrap.h"
|
||||
#include "mainwidget.h"
|
||||
|
||||
|
|
|
@ -20,12 +20,11 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
*/
|
||||
#include "stdafx.h"
|
||||
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "mainwidget.h"
|
||||
#include "application.h"
|
||||
|
||||
#include "core/click_handler_types.h"
|
||||
#include "boxes/confirmbox.h"
|
||||
|
||||
#include "layerwidget.h"
|
||||
#include "lang.h"
|
||||
|
||||
|
@ -136,13 +135,13 @@ void removeDialog(History *history) {
|
|||
}
|
||||
|
||||
void showSettings() {
|
||||
if (Window *w = wnd()) {
|
||||
if (auto w = wnd()) {
|
||||
w->showSettings();
|
||||
}
|
||||
}
|
||||
|
||||
void activateClickHandler(ClickHandlerPtr handler, Qt::MouseButton button) {
|
||||
if (Window *w = wnd()) {
|
||||
if (auto w = wnd()) {
|
||||
qRegisterMetaType<ClickHandlerPtr>();
|
||||
qRegisterMetaType<Qt::MouseButton>();
|
||||
QMetaObject::invokeMethod(w, "app_activateClickHandler", Qt::QueuedConnection, Q_ARG(ClickHandlerPtr, handler), Q_ARG(Qt::MouseButton, button));
|
||||
|
@ -150,7 +149,7 @@ void activateClickHandler(ClickHandlerPtr handler, Qt::MouseButton button) {
|
|||
}
|
||||
|
||||
void logOutDelayed() {
|
||||
if (Window *w = App::wnd()) {
|
||||
if (auto w = App::wnd()) {
|
||||
QMetaObject::invokeMethod(w, "onLogoutSure", Qt::QueuedConnection);
|
||||
}
|
||||
}
|
||||
|
@ -160,25 +159,25 @@ void logOutDelayed() {
|
|||
namespace Ui {
|
||||
|
||||
void showMediaPreview(DocumentData *document) {
|
||||
if (Window *w = App::wnd()) {
|
||||
if (auto w = App::wnd()) {
|
||||
w->ui_showMediaPreview(document);
|
||||
}
|
||||
}
|
||||
|
||||
void showMediaPreview(PhotoData *photo) {
|
||||
if (Window *w = App::wnd()) {
|
||||
if (auto w = App::wnd()) {
|
||||
w->ui_showMediaPreview(photo);
|
||||
}
|
||||
}
|
||||
|
||||
void hideMediaPreview() {
|
||||
if (Window *w = App::wnd()) {
|
||||
if (auto w = App::wnd()) {
|
||||
w->ui_hideMediaPreview();
|
||||
}
|
||||
}
|
||||
|
||||
void showLayer(LayeredWidget *box, ShowLayerOptions options) {
|
||||
if (Window *w = App::wnd()) {
|
||||
if (auto w = App::wnd()) {
|
||||
w->ui_showLayer(box, options);
|
||||
} else {
|
||||
delete box;
|
||||
|
@ -186,16 +185,16 @@ void showLayer(LayeredWidget *box, ShowLayerOptions options) {
|
|||
}
|
||||
|
||||
void hideLayer(bool fast) {
|
||||
if (Window *w = App::wnd()) w->ui_showLayer(0, ShowLayerOptions(CloseOtherLayers) | (fast ? ForceFastShowLayer : AnimatedShowLayer));
|
||||
if (auto w = App::wnd()) w->ui_showLayer(0, ShowLayerOptions(CloseOtherLayers) | (fast ? ForceFastShowLayer : AnimatedShowLayer));
|
||||
}
|
||||
|
||||
bool isLayerShown() {
|
||||
if (Window *w = App::wnd()) return w->ui_isLayerShown();
|
||||
if (auto w = App::wnd()) return w->ui_isLayerShown();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool isMediaViewShown() {
|
||||
if (Window *w = App::wnd()) return w->ui_isMediaViewShown();
|
||||
if (auto w = App::wnd()) return w->ui_isMediaViewShown();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -236,7 +235,7 @@ void showPeerHistoryAsync(const PeerId &peer, MsgId msgId) {
|
|||
}
|
||||
|
||||
PeerData *getPeerForMouseAction() {
|
||||
if (Window *w = App::wnd()) {
|
||||
if (auto w = App::wnd()) {
|
||||
return w->ui_getPeerForMouseAction();
|
||||
}
|
||||
return nullptr;
|
||||
|
@ -244,7 +243,7 @@ PeerData *getPeerForMouseAction() {
|
|||
|
||||
bool hideWindowNoQuit() {
|
||||
if (!App::quitting()) {
|
||||
if (Window *w = App::wnd()) {
|
||||
if (auto w = App::wnd()) {
|
||||
if (cWorkMode() == dbiwmTrayOnly || cWorkMode() == dbiwmWindowAndTray) {
|
||||
return w->minimizeToTray();
|
||||
} else if (cPlatform() == dbipMac || cPlatform() == dbipMacOld) {
|
||||
|
|
|
@ -21,18 +21,22 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "stdafx.h"
|
||||
#include "history.h"
|
||||
|
||||
#include "core/click_handler_types.h"
|
||||
#include "dialogs/dialogs_indexed_list.h"
|
||||
#include "ui/style.h"
|
||||
#include "lang.h"
|
||||
#include "mainwidget.h"
|
||||
#include "application.h"
|
||||
#include "fileuploader.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "ui/filedialog.h"
|
||||
#include "boxes/addcontactbox.h"
|
||||
#include "boxes/confirmbox.h"
|
||||
#include "audio.h"
|
||||
#include "localstorage.h"
|
||||
#include "apiwrap.h"
|
||||
#include "window/top_bar_widget.h"
|
||||
#include "playerwidget.h"
|
||||
|
||||
namespace {
|
||||
|
||||
|
|
|
@ -2396,17 +2396,8 @@ void initImageLinkManager();
|
|||
void reinitImageLinkManager();
|
||||
void deinitImageLinkManager();
|
||||
|
||||
struct LocationData {
|
||||
LocationData(const LocationCoords &coords) : coords(coords), loading(false) {
|
||||
}
|
||||
|
||||
LocationCoords coords;
|
||||
ImagePtr thumb;
|
||||
bool loading;
|
||||
|
||||
void load();
|
||||
};
|
||||
|
||||
struct LocationCoords;
|
||||
struct LocationData;
|
||||
class LocationManager : public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
|
28
Telegram/SourceFiles/history/history_common.h
Normal file
28
Telegram/SourceFiles/history/history_common.h
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
This file is part of Telegram Desktop,
|
||||
the official desktop version of Telegram messaging app, see https://telegram.org
|
||||
|
||||
Telegram Desktop is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
It is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
In addition, as a special exception, the copyright holders give permission
|
||||
to link the code of portions of this program with the OpenSSL library.
|
||||
|
||||
Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
|
||||
Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
enum DragState {
|
||||
DragStateNone = 0x00,
|
||||
DragStateFiles = 0x01,
|
||||
DragStatePhotoFiles = 0x02,
|
||||
DragStateImage = 0x03,
|
||||
};
|
|
@ -30,12 +30,15 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "lang.h"
|
||||
#include "application.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "passcodewidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "fileuploader.h"
|
||||
#include "audio.h"
|
||||
#include "localstorage.h"
|
||||
#include "apiwrap.h"
|
||||
#include "window/top_bar_widget.h"
|
||||
#include "playerwidget.h"
|
||||
|
||||
// flick scroll taken from http://qt-project.org/doc/qt-4.8/demos-embedded-anomaly-src-flickcharm-cpp.html
|
||||
|
||||
|
@ -1489,7 +1492,7 @@ void HistoryInner::updateSize() {
|
|||
|
||||
void HistoryInner::enterEvent(QEvent *e) {
|
||||
dragActionUpdate(QCursor::pos());
|
||||
return QWidget::enterEvent(e);
|
||||
// return QWidget::enterEvent(e);
|
||||
}
|
||||
|
||||
void HistoryInner::leaveEvent(QEvent *e) {
|
||||
|
@ -1522,6 +1525,7 @@ void HistoryInner::adjustCurrent(int32 y) const {
|
|||
}
|
||||
|
||||
void HistoryInner::adjustCurrent(int32 y, History *history) const {
|
||||
t_assert(!history->isEmpty());
|
||||
_curHistory = history;
|
||||
if (_curBlock >= history->blocks.size()) {
|
||||
_curBlock = history->blocks.size() - 1;
|
||||
|
@ -5333,10 +5337,10 @@ void HistoryWidget::botCallbackDone(BotCallbackInfo info, const MTPmessages_BotC
|
|||
if (answerData.has_message()) {
|
||||
if (answerData.is_alert()) {
|
||||
Ui::showLayer(new InformBox(qs(answerData.vmessage)));
|
||||
} else {
|
||||
} else if (App::wnd()) {
|
||||
Ui::Toast::Config toast;
|
||||
toast.text = qs(answerData.vmessage);
|
||||
Ui::Toast::Show(toast);
|
||||
Ui::Toast::Show(App::wnd(), toast);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,15 +22,8 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "localimageloader.h"
|
||||
#include "ui/boxshadow.h"
|
||||
|
||||
#include "dropdown.h"
|
||||
|
||||
enum DragState {
|
||||
DragStateNone = 0x00,
|
||||
DragStateFiles = 0x01,
|
||||
DragStatePhotoFiles = 0x02,
|
||||
DragStateImage = 0x03,
|
||||
};
|
||||
#include "history/history_common.h"
|
||||
|
||||
class HistoryWidget;
|
||||
class HistoryInner : public TWidget, public AbstractTooltipShower {
|
||||
|
|
|
@ -25,6 +25,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "localstorage.h"
|
||||
#include "mainwidget.h"
|
||||
#include "lang.h"
|
||||
#include "playerwidget.h"
|
||||
|
||||
namespace InlineBots {
|
||||
namespace Layout {
|
||||
|
|
|
@ -21,6 +21,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "stdafx.h"
|
||||
#include "inline_bots/inline_bot_layout_item.h"
|
||||
|
||||
#include "core/click_handler_types.h"
|
||||
#include "inline_bots/inline_bot_result.h"
|
||||
#include "inline_bots/inline_bot_layout_internal.h"
|
||||
#include "localstorage.h"
|
||||
|
|
|
@ -20,7 +20,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "basic_types.h"
|
||||
#include "core/basic_types.h"
|
||||
#include "structs.h"
|
||||
#include "mtproto/core_types.h"
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "basic_types.h"
|
||||
#include "core/basic_types.h"
|
||||
#include "structs.h"
|
||||
#include "mtproto/core_types.h"
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "intro/introsignup.h"
|
||||
#include "intro/intropwdcheck.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "application.h"
|
||||
#include "ui/text.h"
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "layerwidget.h"
|
||||
#include "application.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "mainwidget.h"
|
||||
#include "ui/filedialog.h"
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -91,12 +91,13 @@ public:
|
|||
|
||||
};
|
||||
|
||||
class LayoutMediaItemBase;
|
||||
class LayoutItemBase : public Composer, public ClickHandlerHost {
|
||||
public:
|
||||
LayoutItemBase() {
|
||||
}
|
||||
LayoutItemBase &operator=(const LayoutItemBase &) = delete;
|
||||
|
||||
LayoutItemBase(const LayoutItemBase &other) = delete;
|
||||
LayoutItemBase &operator=(const LayoutItemBase &other) = delete;
|
||||
|
||||
int32 maxWidth() const {
|
||||
return _maxw;
|
||||
|
@ -142,311 +143,3 @@ protected:
|
|||
int _minh = 0;
|
||||
|
||||
};
|
||||
|
||||
class PaintContextOverview : public PaintContextBase {
|
||||
public:
|
||||
PaintContextOverview(uint64 ms, bool selecting) : PaintContextBase(ms, selecting), isAfterDate(false) {
|
||||
}
|
||||
bool isAfterDate;
|
||||
|
||||
};
|
||||
|
||||
class LayoutOverviewItemBase : public LayoutItemBase {
|
||||
public:
|
||||
|
||||
virtual void paint(Painter &p, const QRect &clip, uint32 selection, const PaintContextOverview *context) const = 0;
|
||||
|
||||
virtual LayoutMediaItemBase *toLayoutMediaItem() {
|
||||
return nullptr;
|
||||
}
|
||||
virtual const LayoutMediaItemBase *toLayoutMediaItem() const {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
virtual HistoryItem *getItem() const {
|
||||
return nullptr;
|
||||
}
|
||||
virtual DocumentData *getDocument() const {
|
||||
return nullptr;
|
||||
}
|
||||
MsgId msgId() const {
|
||||
const HistoryItem *item = getItem();
|
||||
return item ? item->id : 0;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class LayoutMediaItemBase : public LayoutOverviewItemBase {
|
||||
public:
|
||||
LayoutMediaItemBase(HistoryItem *parent) : _parent(parent) {
|
||||
}
|
||||
|
||||
LayoutMediaItemBase *toLayoutMediaItem() override {
|
||||
return this;
|
||||
}
|
||||
const LayoutMediaItemBase *toLayoutMediaItem() const override {
|
||||
return this;
|
||||
}
|
||||
HistoryItem *getItem() const override {
|
||||
return _parent;
|
||||
}
|
||||
|
||||
void clickHandlerActiveChanged(const ClickHandlerPtr &p, bool active) override;
|
||||
void clickHandlerPressedChanged(const ClickHandlerPtr &p, bool active) override;
|
||||
|
||||
protected:
|
||||
HistoryItem *_parent;
|
||||
|
||||
};
|
||||
|
||||
class LayoutRadialProgressItem : public LayoutMediaItemBase {
|
||||
public:
|
||||
LayoutRadialProgressItem(HistoryItem *parent) : LayoutMediaItemBase(parent)
|
||||
, _radial(0)
|
||||
, a_iconOver(0, 0)
|
||||
, _a_iconOver(animation(this, &LayoutRadialProgressItem::step_iconOver)) {
|
||||
}
|
||||
|
||||
void clickHandlerActiveChanged(const ClickHandlerPtr &p, bool active) override;
|
||||
void clickHandlerPressedChanged(const ClickHandlerPtr &p, bool active) override;
|
||||
|
||||
~LayoutRadialProgressItem();
|
||||
|
||||
protected:
|
||||
ClickHandlerPtr _openl, _savel, _cancell;
|
||||
void setLinks(ClickHandlerPtr &&openl, ClickHandlerPtr &&savel, ClickHandlerPtr &&cancell);
|
||||
void setDocumentLinks(DocumentData *document) {
|
||||
ClickHandlerPtr save;
|
||||
if (document->voice()) {
|
||||
save.reset(new DocumentOpenClickHandler(document));
|
||||
} else {
|
||||
save.reset(new DocumentSaveClickHandler(document));
|
||||
}
|
||||
setLinks(MakeShared<DocumentOpenClickHandler>(document), std_::move(save), MakeShared<DocumentCancelClickHandler>(document));
|
||||
}
|
||||
|
||||
void step_iconOver(float64 ms, bool timer);
|
||||
void step_radial(uint64 ms, bool timer);
|
||||
|
||||
void ensureRadial() const;
|
||||
void checkRadialFinished();
|
||||
|
||||
bool isRadialAnimation(uint64 ms) const {
|
||||
if (!_radial || !_radial->animating()) return false;
|
||||
|
||||
_radial->step(ms);
|
||||
return _radial && _radial->animating();
|
||||
}
|
||||
|
||||
virtual float64 dataProgress() const = 0;
|
||||
virtual bool dataFinished() const = 0;
|
||||
virtual bool dataLoaded() const = 0;
|
||||
virtual bool iconAnimated() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
mutable RadialAnimation *_radial;
|
||||
anim::fvalue a_iconOver;
|
||||
mutable Animation _a_iconOver;
|
||||
|
||||
private:
|
||||
LayoutRadialProgressItem(const LayoutRadialProgressItem &other);
|
||||
|
||||
};
|
||||
|
||||
class LayoutAbstractFileItem : public LayoutRadialProgressItem {
|
||||
public:
|
||||
LayoutAbstractFileItem(HistoryItem *parent) : LayoutRadialProgressItem(parent) {
|
||||
}
|
||||
|
||||
protected:
|
||||
// >= 0 will contain download / upload string, _statusSize = loaded bytes
|
||||
// < 0 will contain played string, _statusSize = -(seconds + 1) played
|
||||
// 0x7FFFFFF0 will contain status for not yet downloaded file
|
||||
// 0x7FFFFFF1 will contain status for already downloaded file
|
||||
// 0x7FFFFFF2 will contain status for failed to download / upload file
|
||||
mutable int32 _statusSize;
|
||||
mutable QString _statusText;
|
||||
|
||||
// duration = -1 - no duration, duration = -2 - "GIF" duration
|
||||
void setStatusSize(int32 newSize, int32 fullSize, int32 duration, qint64 realDuration) const;
|
||||
|
||||
};
|
||||
|
||||
struct OverviewItemInfo : public BaseComponent<OverviewItemInfo> {
|
||||
int top = 0;
|
||||
};
|
||||
|
||||
class LayoutOverviewDate : public LayoutOverviewItemBase {
|
||||
public:
|
||||
LayoutOverviewDate(const QDate &date, bool month);
|
||||
|
||||
void initDimensions() override;
|
||||
void paint(Painter &p, const QRect &clip, uint32 selection, const PaintContextOverview *context) const override;
|
||||
|
||||
private:
|
||||
QDate _date;
|
||||
QString _text;
|
||||
|
||||
};
|
||||
|
||||
class LayoutOverviewPhoto : public LayoutMediaItemBase {
|
||||
public:
|
||||
LayoutOverviewPhoto(PhotoData *photo, HistoryItem *parent);
|
||||
|
||||
void initDimensions() override;
|
||||
int32 resizeGetHeight(int32 width) override;
|
||||
void paint(Painter &p, const QRect &clip, uint32 selection, const PaintContextOverview *context) const override;
|
||||
void getState(ClickHandlerPtr &link, HistoryCursorState &cursor, int x, int y) const override;
|
||||
|
||||
private:
|
||||
PhotoData *_data;
|
||||
ClickHandlerPtr _link;
|
||||
|
||||
mutable QPixmap _pix;
|
||||
mutable bool _goodLoaded;
|
||||
|
||||
};
|
||||
|
||||
class LayoutOverviewVideo : public LayoutAbstractFileItem {
|
||||
public:
|
||||
LayoutOverviewVideo(DocumentData *video, HistoryItem *parent);
|
||||
|
||||
void initDimensions() override;
|
||||
int32 resizeGetHeight(int32 width) override;
|
||||
void paint(Painter &p, const QRect &clip, uint32 selection, const PaintContextOverview *context) const override;
|
||||
void getState(ClickHandlerPtr &link, HistoryCursorState &cursor, int x, int y) const override;
|
||||
|
||||
protected:
|
||||
float64 dataProgress() const override {
|
||||
return _data->progress();
|
||||
}
|
||||
bool dataFinished() const override {
|
||||
return !_data->loading();
|
||||
}
|
||||
bool dataLoaded() const override {
|
||||
return _data->loaded();
|
||||
}
|
||||
bool iconAnimated() const override {
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
DocumentData *_data;
|
||||
|
||||
QString _duration;
|
||||
mutable QPixmap _pix;
|
||||
mutable bool _thumbLoaded;
|
||||
|
||||
void updateStatusText() const;
|
||||
|
||||
};
|
||||
|
||||
class LayoutOverviewVoice : public LayoutAbstractFileItem {
|
||||
public:
|
||||
LayoutOverviewVoice(DocumentData *voice, HistoryItem *parent);
|
||||
|
||||
void initDimensions() override;
|
||||
void paint(Painter &p, const QRect &clip, uint32 selection, const PaintContextOverview *context) const override;
|
||||
void getState(ClickHandlerPtr &link, HistoryCursorState &cursor, int x, int y) const override;
|
||||
|
||||
protected:
|
||||
float64 dataProgress() const override {
|
||||
return _data->progress();
|
||||
}
|
||||
bool dataFinished() const override {
|
||||
return !_data->loading();
|
||||
}
|
||||
bool dataLoaded() const override {
|
||||
return _data->loaded();
|
||||
}
|
||||
bool iconAnimated() const override {
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
DocumentData *_data;
|
||||
ClickHandlerPtr _namel;
|
||||
|
||||
mutable Text _name, _details;
|
||||
mutable int32 _nameVersion;
|
||||
|
||||
void updateName() const;
|
||||
bool updateStatusText() const;
|
||||
|
||||
};
|
||||
|
||||
class LayoutOverviewDocument : public LayoutAbstractFileItem {
|
||||
public:
|
||||
LayoutOverviewDocument(DocumentData *document, HistoryItem *parent);
|
||||
|
||||
void initDimensions() override;
|
||||
void paint(Painter &p, const QRect &clip, uint32 selection, const PaintContextOverview *context) const override;
|
||||
void getState(ClickHandlerPtr &link, HistoryCursorState &cursor, int x, int y) const override;
|
||||
|
||||
virtual DocumentData *getDocument() const override {
|
||||
return _data;
|
||||
}
|
||||
|
||||
protected:
|
||||
float64 dataProgress() const override {
|
||||
return _data->progress();
|
||||
}
|
||||
bool dataFinished() const override {
|
||||
return !_data->loading();
|
||||
}
|
||||
bool dataLoaded() const override {
|
||||
return _data->loaded();
|
||||
}
|
||||
bool iconAnimated() const override {
|
||||
return _data->song() || !_data->loaded() || (_radial && _radial->animating());
|
||||
}
|
||||
|
||||
private:
|
||||
DocumentData *_data;
|
||||
ClickHandlerPtr _msgl, _namel;
|
||||
|
||||
mutable bool _thumbForLoaded;
|
||||
mutable QPixmap _thumb;
|
||||
|
||||
QString _name, _date, _ext;
|
||||
int32 _namew, _datew, _extw;
|
||||
int32 _thumbw, _colorIndex;
|
||||
|
||||
bool withThumb() const {
|
||||
return !_data->thumb->isNull() && _data->thumb->width() && _data->thumb->height();
|
||||
}
|
||||
bool updateStatusText() const;
|
||||
|
||||
};
|
||||
|
||||
class LayoutOverviewLink : public LayoutMediaItemBase {
|
||||
public:
|
||||
LayoutOverviewLink(HistoryMedia *media, HistoryItem *parent);
|
||||
|
||||
void initDimensions() override;
|
||||
int32 resizeGetHeight(int32 width) override;
|
||||
void paint(Painter &p, const QRect &clip, uint32 selection, const PaintContextOverview *context) const override;
|
||||
void getState(ClickHandlerPtr &link, HistoryCursorState &cursor, int x, int y) const override;
|
||||
|
||||
private:
|
||||
ClickHandlerPtr _photol;
|
||||
|
||||
QString _title, _letter;
|
||||
int _titlew = 0;
|
||||
WebPageData *_page = nullptr;
|
||||
int _pixw = 0;
|
||||
int _pixh = 0;
|
||||
Text _text = { int(st::msgMinWidth) };
|
||||
|
||||
struct Link {
|
||||
Link() : width(0) {
|
||||
}
|
||||
Link(const QString &url, const QString &text);
|
||||
QString text;
|
||||
int32 width;
|
||||
TextClickHandlerPtr lnk;
|
||||
};
|
||||
QVector<Link> _links;
|
||||
|
||||
};
|
||||
|
|
|
@ -25,7 +25,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "boxes/photosendbox.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "lang.h"
|
||||
#include "boxes/confirmbox.h"
|
||||
|
||||
|
|
|
@ -25,10 +25,11 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "serialize/serialize_document.h"
|
||||
#include "serialize/serialize_common.h"
|
||||
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "lang.h"
|
||||
#include "playerwidget.h"
|
||||
#include "apiwrap.h"
|
||||
|
||||
namespace {
|
||||
typedef quint64 FileKey;
|
||||
|
|
|
@ -20,7 +20,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "basic_types.h"
|
||||
#include "core/basic_types.h"
|
||||
|
||||
namespace _local_inner {
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -20,15 +20,22 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "apiwrap.h"
|
||||
#include "dialogswidget.h"
|
||||
#include "historywidget.h"
|
||||
#include "profilewidget.h"
|
||||
#include "overviewwidget.h"
|
||||
#include "playerwidget.h"
|
||||
#include "ui/buttons/peer_avatar_button.h"
|
||||
#include "localimageloader.h"
|
||||
#include "history/history_common.h"
|
||||
|
||||
class Window;
|
||||
namespace Dialogs {
|
||||
class Row;
|
||||
} // namespace Dialogs
|
||||
|
||||
namespace Ui {
|
||||
class PeerAvatarButton;
|
||||
} // namespace Ui
|
||||
|
||||
namespace Window {
|
||||
class TopBarWidget;
|
||||
} // namespace Window
|
||||
|
||||
class MainWindow;
|
||||
class ApiWrap;
|
||||
class MainWidget;
|
||||
class ConfirmBox;
|
||||
|
@ -37,90 +44,8 @@ class HistoryWidget;
|
|||
class ProfileWidget;
|
||||
class OverviewWidget;
|
||||
class PlayerWidget;
|
||||
|
||||
namespace Dialogs {
|
||||
class Row;
|
||||
} // namespace Dialogs
|
||||
|
||||
class TopBarWidget : public TWidget {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
TopBarWidget(MainWidget *w);
|
||||
|
||||
void enterEvent(QEvent *e) override;
|
||||
void enterFromChildEvent(QEvent *e) override;
|
||||
void leaveEvent(QEvent *e) override;
|
||||
void leaveToChildEvent(QEvent *e) override;
|
||||
void paintEvent(QPaintEvent *e) override;
|
||||
void mousePressEvent(QMouseEvent *e) override;
|
||||
void resizeEvent(QResizeEvent *e) override;
|
||||
|
||||
void step_appearance(float64 ms, bool timer);
|
||||
void enableShadow(bool enable = true);
|
||||
|
||||
void startAnim();
|
||||
void stopAnim();
|
||||
void showAll();
|
||||
void showSelected(uint32 selCount, bool canDelete = false);
|
||||
|
||||
void updateAdaptiveLayout();
|
||||
|
||||
FlatButton *mediaTypeButton();
|
||||
|
||||
void grabStart() override {
|
||||
_sideShadow.hide();
|
||||
}
|
||||
void grabFinish() override {
|
||||
_sideShadow.setVisible(!Adaptive::OneColumn());
|
||||
}
|
||||
|
||||
public slots:
|
||||
|
||||
void onForwardSelection();
|
||||
void onDeleteSelection();
|
||||
void onClearSelection();
|
||||
void onInfoClicked();
|
||||
void onAddContact();
|
||||
void onEdit();
|
||||
void onDeleteContact();
|
||||
void onDeleteContactSure();
|
||||
void onDeleteAndExit();
|
||||
void onDeleteAndExitSure();
|
||||
void onSearch();
|
||||
|
||||
signals:
|
||||
|
||||
void clicked();
|
||||
|
||||
private:
|
||||
|
||||
MainWidget *main();
|
||||
anim::fvalue a_over;
|
||||
Animation _a_appearance;
|
||||
|
||||
PeerData *_selPeer;
|
||||
uint32 _selCount;
|
||||
bool _canDelete;
|
||||
QString _selStr;
|
||||
int32 _selStrLeft, _selStrWidth;
|
||||
|
||||
bool _animating;
|
||||
|
||||
FlatButton _clearSelection;
|
||||
FlatButton _forward, _delete;
|
||||
int32 _selectionButtonsWidth, _forwardDeleteWidth;
|
||||
|
||||
PeerAvatarButton _info;
|
||||
FlatButton _edit, _leaveGroup, _addContact, _deleteContact;
|
||||
FlatButton _mediaType;
|
||||
|
||||
IconedButton _search;
|
||||
|
||||
PlainShadow _sideShadow;
|
||||
|
||||
};
|
||||
class HistoryHider;
|
||||
class Dropdown;
|
||||
|
||||
enum StackItemType {
|
||||
HistoryStackItem,
|
||||
|
@ -220,7 +145,7 @@ class MainWidget : public TWidget, public RPCSender {
|
|||
|
||||
public:
|
||||
|
||||
MainWidget(Window *window);
|
||||
MainWidget(MainWindow *window);
|
||||
|
||||
void paintEvent(QPaintEvent *e) override;
|
||||
void resizeEvent(QResizeEvent *e) override;
|
||||
|
@ -230,7 +155,7 @@ public:
|
|||
bool needBackButton();
|
||||
|
||||
void paintTopBar(QPainter &p, float64 over, int32 decreaseWidth);
|
||||
TopBarWidget *topBar();
|
||||
Window::TopBarWidget *topBar();
|
||||
|
||||
PlayerWidget *player();
|
||||
int contentScrollAddToY() const;
|
||||
|
@ -623,14 +548,14 @@ private:
|
|||
|
||||
int _dialogsWidth = st::dlgMinWidth;
|
||||
|
||||
DialogsWidget dialogs;
|
||||
HistoryWidget history;
|
||||
ProfileWidget* profile = nullptr;
|
||||
OverviewWidget* overview = nullptr;
|
||||
PlayerWidget _player;
|
||||
TopBarWidget _topBar;
|
||||
ChildWidget<DialogsWidget> _dialogs;
|
||||
ChildWidget<HistoryWidget> _history;
|
||||
ChildWidget<ProfileWidget> _profile = nullptr;
|
||||
ChildWidget<OverviewWidget> _overview = nullptr;
|
||||
ChildWidget<PlayerWidget> _player;
|
||||
ChildWidget<Window::TopBarWidget> _topBar;
|
||||
ConfirmBox *_forwardConfirm = nullptr; // for single column layout
|
||||
HistoryHider *_hider = nullptr;
|
||||
ChildWidget<HistoryHider> _hider = nullptr;
|
||||
StackItems _stack;
|
||||
PeerData *_peerInStack = nullptr;
|
||||
MsgId _msgIdInStack = 0;
|
||||
|
@ -638,7 +563,7 @@ private:
|
|||
int _playerHeight = 0;
|
||||
int _contentScrollAddToY = 0;
|
||||
|
||||
Dropdown _mediaType;
|
||||
ChildWidget<Dropdown> _mediaType;
|
||||
int32 _mediaTypeMask = 0;
|
||||
|
||||
int32 updDate = 0;
|
||||
|
@ -711,8 +636,8 @@ private:
|
|||
void viewsIncrementDone(QVector<MTPint> ids, const MTPVector<MTPint> &result, mtpRequestId req);
|
||||
bool viewsIncrementFail(const RPCError &error, mtpRequestId req);
|
||||
|
||||
App::WallPaper *_background = nullptr;
|
||||
std_::unique_ptr<App::WallPaper> _background;
|
||||
|
||||
ApiWrap *_api;
|
||||
std_::unique_ptr<ApiWrap> _api;
|
||||
|
||||
};
|
||||
|
|
|
@ -20,7 +20,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
*/
|
||||
#include "stdafx.h"
|
||||
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include "zip.h"
|
||||
|
||||
|
@ -364,7 +364,7 @@ NotifyWindow::~NotifyWindow() {
|
|||
if (App::wnd()) App::wnd()->notifyShowNext(this);
|
||||
}
|
||||
|
||||
Window::Window(QWidget *parent) : PsMainWindow(parent) {
|
||||
MainWindow::MainWindow(QWidget *parent) : PsMainWindow(parent) {
|
||||
icon16 = icon256.scaledToWidth(16, Qt::SmoothTransformation);
|
||||
icon32 = icon256.scaledToWidth(32, Qt::SmoothTransformation);
|
||||
icon64 = icon256.scaledToWidth(64, Qt::SmoothTransformation);
|
||||
|
@ -400,7 +400,7 @@ Window::Window(QWidget *parent) : PsMainWindow(parent) {
|
|||
setAttribute(Qt::WA_OpaquePaintEvent);
|
||||
}
|
||||
|
||||
void Window::inactivePress(bool inactive) {
|
||||
void MainWindow::inactivePress(bool inactive) {
|
||||
_inactivePress = inactive;
|
||||
if (_inactivePress) {
|
||||
_inactiveTimer.start(200);
|
||||
|
@ -409,15 +409,15 @@ void Window::inactivePress(bool inactive) {
|
|||
}
|
||||
}
|
||||
|
||||
bool Window::inactivePress() const {
|
||||
bool MainWindow::inactivePress() const {
|
||||
return _inactivePress;
|
||||
}
|
||||
|
||||
void Window::onInactiveTimer() {
|
||||
void MainWindow::onInactiveTimer() {
|
||||
inactivePress(false);
|
||||
}
|
||||
|
||||
void Window::stateChanged(Qt::WindowState state) {
|
||||
void MainWindow::stateChanged(Qt::WindowState state) {
|
||||
psUserActionDone();
|
||||
|
||||
updateIsActive((state == Qt::WindowMinimized) ? Global::OfflineBlurTimeout() : Global::OnlineFocusTimeout());
|
||||
|
@ -429,7 +429,7 @@ void Window::stateChanged(Qt::WindowState state) {
|
|||
psSavePosition(state);
|
||||
}
|
||||
|
||||
void Window::init() {
|
||||
void MainWindow::init() {
|
||||
psInitFrameless();
|
||||
setWindowIcon(wndIcon);
|
||||
|
||||
|
@ -446,7 +446,7 @@ void Window::init() {
|
|||
psInitSize();
|
||||
}
|
||||
|
||||
void Window::firstShow() {
|
||||
void MainWindow::firstShow() {
|
||||
#ifdef Q_OS_WIN
|
||||
trayIconMenu = new PopupMenu();
|
||||
trayIconMenu->deleteOnHide(false);
|
||||
|
@ -472,11 +472,11 @@ void Window::firstShow() {
|
|||
updateTrayMenu();
|
||||
}
|
||||
|
||||
QWidget *Window::filedialogParent() {
|
||||
QWidget *MainWindow::filedialogParent() {
|
||||
return (_mediaView && _mediaView->isVisible()) ? (QWidget*)_mediaView : (QWidget*)this;
|
||||
}
|
||||
|
||||
void Window::clearWidgets() {
|
||||
void MainWindow::clearWidgets() {
|
||||
Ui::hideLayer(true);
|
||||
if (_passcode) {
|
||||
_passcode->hide();
|
||||
|
@ -511,7 +511,7 @@ void Window::clearWidgets() {
|
|||
updateGlobalMenu();
|
||||
}
|
||||
|
||||
QPixmap Window::grabInner() {
|
||||
QPixmap MainWindow::grabInner() {
|
||||
QPixmap result;
|
||||
if (settings) {
|
||||
result = myGrab(settings);
|
||||
|
@ -525,7 +525,7 @@ QPixmap Window::grabInner() {
|
|||
return result;
|
||||
}
|
||||
|
||||
void Window::clearPasscode() {
|
||||
void MainWindow::clearPasscode() {
|
||||
if (!_passcode) return;
|
||||
|
||||
QPixmap bg = grabInner();
|
||||
|
@ -546,7 +546,7 @@ void Window::clearPasscode() {
|
|||
updateGlobalMenu();
|
||||
}
|
||||
|
||||
void Window::setupPasscode(bool anim) {
|
||||
void MainWindow::setupPasscode(bool anim) {
|
||||
QPixmap bg = grabInner();
|
||||
|
||||
if (_passcode) {
|
||||
|
@ -570,7 +570,7 @@ void Window::setupPasscode(bool anim) {
|
|||
updateGlobalMenu();
|
||||
}
|
||||
|
||||
void Window::checkAutoLockIn(int msec) {
|
||||
void MainWindow::checkAutoLockIn(int msec) {
|
||||
if (_autoLockTimer.isActive()) {
|
||||
int remain = _autoLockTimer.remainingTime();
|
||||
if (remain > 0 && remain <= msec) return;
|
||||
|
@ -578,7 +578,7 @@ void Window::checkAutoLockIn(int msec) {
|
|||
_autoLockTimer.start(msec);
|
||||
}
|
||||
|
||||
void Window::checkAutoLock() {
|
||||
void MainWindow::checkAutoLock() {
|
||||
if (!cHasPasscode() || App::passcoded()) return;
|
||||
|
||||
App::app()->checkLocalTime();
|
||||
|
@ -591,7 +591,7 @@ void Window::checkAutoLock() {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::setupIntro(bool anim) {
|
||||
void MainWindow::setupIntro(bool anim) {
|
||||
cSetContactsReceived(false);
|
||||
cSetDialogsReceived(false);
|
||||
if (intro && !intro->isHidden() && !main) return;
|
||||
|
@ -616,11 +616,11 @@ void Window::setupIntro(bool anim) {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::getNotifySetting(const MTPInputNotifyPeer &peer, uint32 msWait) {
|
||||
void MainWindow::getNotifySetting(const MTPInputNotifyPeer &peer, uint32 msWait) {
|
||||
MTP::send(MTPaccount_GetNotifySettings(peer), main->rpcDone(&MainWidget::gotNotifySetting, peer), main->rpcFail(&MainWidget::failNotifySetting, peer), 0, msWait);
|
||||
}
|
||||
|
||||
void Window::serviceNotification(const QString &msg, const MTPMessageMedia &media, bool force) {
|
||||
void MainWindow::serviceNotification(const QString &msg, const MTPMessageMedia &media, bool force) {
|
||||
History *h = (main && App::userLoaded(ServiceUserId)) ? App::history(ServiceUserId) : 0;
|
||||
if (!h || (!force && h->isEmpty())) {
|
||||
_delayedServiceMsgs.push_back(DelayedServiceMsg(msg, media));
|
||||
|
@ -630,7 +630,7 @@ void Window::serviceNotification(const QString &msg, const MTPMessageMedia &medi
|
|||
main->serviceNotification(msg, media);
|
||||
}
|
||||
|
||||
void Window::showDelayedServiceMsgs() {
|
||||
void MainWindow::showDelayedServiceMsgs() {
|
||||
QVector<DelayedServiceMsg> toAdd = _delayedServiceMsgs;
|
||||
_delayedServiceMsgs.clear();
|
||||
for (QVector<DelayedServiceMsg>::const_iterator i = toAdd.cbegin(), e = toAdd.cend(); i != e; ++i) {
|
||||
|
@ -638,7 +638,7 @@ void Window::showDelayedServiceMsgs() {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::sendServiceHistoryRequest() {
|
||||
void MainWindow::sendServiceHistoryRequest() {
|
||||
if (!main || !main->started() || _delayedServiceMsgs.isEmpty() || _serviceHistoryRequest) return;
|
||||
|
||||
UserData *user = App::userLoaded(ServiceUserId);
|
||||
|
@ -649,7 +649,7 @@ void Window::sendServiceHistoryRequest() {
|
|||
_serviceHistoryRequest = MTP::send(MTPmessages_GetHistory(user->input, MTP_int(0), MTP_int(0), MTP_int(0), MTP_int(1), MTP_int(0), MTP_int(0)), main->rpcDone(&MainWidget::serviceHistoryDone), main->rpcFail(&MainWidget::serviceHistoryFail));
|
||||
}
|
||||
|
||||
void Window::setupMain(bool anim, const MTPUser *self) {
|
||||
void MainWindow::setupMain(bool anim, const MTPUser *self) {
|
||||
QPixmap bg = anim ? grabInner() : QPixmap();
|
||||
clearWidgets();
|
||||
main = new MainWidget(this);
|
||||
|
@ -673,14 +673,14 @@ void Window::setupMain(bool anim, const MTPUser *self) {
|
|||
_mediaView = new MediaView();
|
||||
}
|
||||
|
||||
void Window::updateCounter() {
|
||||
void MainWindow::updateCounter() {
|
||||
if (!Global::started() || App::quitting()) return;
|
||||
|
||||
psUpdateCounter();
|
||||
title->updateCounter();
|
||||
}
|
||||
|
||||
void Window::showSettings() {
|
||||
void MainWindow::showSettings() {
|
||||
if (_passcode) return;
|
||||
|
||||
if (isHidden()) showFromTray();
|
||||
|
@ -705,7 +705,7 @@ void Window::showSettings() {
|
|||
fixOrder();
|
||||
}
|
||||
|
||||
void Window::hideSettings(bool fast) {
|
||||
void MainWindow::hideSettings(bool fast) {
|
||||
if (!settings || _passcode) return;
|
||||
|
||||
if (fast) {
|
||||
|
@ -738,14 +738,14 @@ void Window::hideSettings(bool fast) {
|
|||
fixOrder();
|
||||
}
|
||||
|
||||
void Window::mtpStateChanged(int32 dc, int32 state) {
|
||||
void MainWindow::mtpStateChanged(int32 dc, int32 state) {
|
||||
if (dc == MTP::maindc()) {
|
||||
updateTitleStatus();
|
||||
if (settings) settings->updateConnectionType();
|
||||
}
|
||||
}
|
||||
|
||||
void Window::updateTitleStatus() {
|
||||
void MainWindow::updateTitleStatus() {
|
||||
int32 state = MTP::dcstate();
|
||||
if (state == MTP::ConnectingState || state == MTP::DisconnectedState || (state < 0 && state > -600)) {
|
||||
if (main || getms() > 5000 || _connecting) {
|
||||
|
@ -759,48 +759,48 @@ void Window::updateTitleStatus() {
|
|||
}
|
||||
}
|
||||
|
||||
IntroWidget *Window::introWidget() {
|
||||
IntroWidget *MainWindow::introWidget() {
|
||||
return intro;
|
||||
}
|
||||
|
||||
MainWidget *Window::mainWidget() {
|
||||
MainWidget *MainWindow::mainWidget() {
|
||||
return main;
|
||||
}
|
||||
|
||||
SettingsWidget *Window::settingsWidget() {
|
||||
SettingsWidget *MainWindow::settingsWidget() {
|
||||
return settings;
|
||||
}
|
||||
|
||||
PasscodeWidget *Window::passcodeWidget() {
|
||||
PasscodeWidget *MainWindow::passcodeWidget() {
|
||||
return _passcode;
|
||||
}
|
||||
|
||||
void Window::showPhoto(const PhotoOpenClickHandler *lnk, HistoryItem *item) {
|
||||
void MainWindow::showPhoto(const PhotoOpenClickHandler *lnk, HistoryItem *item) {
|
||||
return lnk->peer() ? showPhoto(lnk->photo(), lnk->peer()) : showPhoto(lnk->photo(), item);
|
||||
}
|
||||
|
||||
void Window::showPhoto(PhotoData *photo, HistoryItem *item) {
|
||||
void MainWindow::showPhoto(PhotoData *photo, HistoryItem *item) {
|
||||
if (_mediaView->isHidden()) Ui::hideLayer(true);
|
||||
_mediaView->showPhoto(photo, item);
|
||||
_mediaView->activateWindow();
|
||||
_mediaView->setFocus();
|
||||
}
|
||||
|
||||
void Window::showPhoto(PhotoData *photo, PeerData *peer) {
|
||||
void MainWindow::showPhoto(PhotoData *photo, PeerData *peer) {
|
||||
if (_mediaView->isHidden()) Ui::hideLayer(true);
|
||||
_mediaView->showPhoto(photo, peer);
|
||||
_mediaView->activateWindow();
|
||||
_mediaView->setFocus();
|
||||
}
|
||||
|
||||
void Window::showDocument(DocumentData *doc, HistoryItem *item) {
|
||||
void MainWindow::showDocument(DocumentData *doc, HistoryItem *item) {
|
||||
if (_mediaView->isHidden()) Ui::hideLayer(true);
|
||||
_mediaView->showDocument(doc, item);
|
||||
_mediaView->activateWindow();
|
||||
_mediaView->setFocus();
|
||||
}
|
||||
|
||||
void Window::ui_showLayer(LayeredWidget *box, ShowLayerOptions options) {
|
||||
void MainWindow::ui_showLayer(LayeredWidget *box, ShowLayerOptions options) {
|
||||
if (box) {
|
||||
bool fast = (options.testFlag(ForceFastShowLayer)) || Ui::isLayerShown();
|
||||
if (layerBg) {
|
||||
|
@ -837,15 +837,15 @@ void Window::ui_showLayer(LayeredWidget *box, ShowLayerOptions options) {
|
|||
}
|
||||
}
|
||||
|
||||
bool Window::ui_isLayerShown() {
|
||||
bool MainWindow::ui_isLayerShown() {
|
||||
return !!layerBg;
|
||||
}
|
||||
|
||||
bool Window::ui_isMediaViewShown() {
|
||||
bool MainWindow::ui_isMediaViewShown() {
|
||||
return _mediaView && !_mediaView->isHidden();
|
||||
}
|
||||
|
||||
void Window::ui_showMediaPreview(DocumentData *document) {
|
||||
void MainWindow::ui_showMediaPreview(DocumentData *document) {
|
||||
if (!document || ((!document->isAnimation() || !document->loaded()) && !document->sticker())) return;
|
||||
if (!_mediaPreview) {
|
||||
_mediaPreview = std_::make_unique<MediaPreviewWidget>(this);
|
||||
|
@ -857,7 +857,7 @@ void Window::ui_showMediaPreview(DocumentData *document) {
|
|||
_mediaPreview->showPreview(document);
|
||||
}
|
||||
|
||||
void Window::ui_showMediaPreview(PhotoData *photo) {
|
||||
void MainWindow::ui_showMediaPreview(PhotoData *photo) {
|
||||
if (!photo) return;
|
||||
if (!_mediaPreview) {
|
||||
_mediaPreview = std_::make_unique<MediaPreviewWidget>(this);
|
||||
|
@ -869,12 +869,12 @@ void Window::ui_showMediaPreview(PhotoData *photo) {
|
|||
_mediaPreview->showPreview(photo);
|
||||
}
|
||||
|
||||
void Window::ui_hideMediaPreview() {
|
||||
void MainWindow::ui_hideMediaPreview() {
|
||||
if (!_mediaPreview) return;
|
||||
_mediaPreview->hidePreview();
|
||||
}
|
||||
|
||||
PeerData *Window::ui_getPeerForMouseAction() {
|
||||
PeerData *MainWindow::ui_getPeerForMouseAction() {
|
||||
if (_mediaView && !_mediaView->isHidden()) {
|
||||
return _mediaView->ui_getPeerForMouseAction();
|
||||
} else if (main) {
|
||||
|
@ -883,7 +883,7 @@ PeerData *Window::ui_getPeerForMouseAction() {
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
void Window::showConnecting(const QString &text, const QString &reconnect) {
|
||||
void MainWindow::showConnecting(const QString &text, const QString &reconnect) {
|
||||
if (_connecting) {
|
||||
_connecting->set(text, reconnect);
|
||||
} else {
|
||||
|
@ -895,11 +895,11 @@ void Window::showConnecting(const QString &text, const QString &reconnect) {
|
|||
if (settings) settings->update();
|
||||
}
|
||||
|
||||
bool Window::connectingVisible() const {
|
||||
bool MainWindow::connectingVisible() const {
|
||||
return _connecting && !_connecting->isHidden();
|
||||
}
|
||||
|
||||
void Window::hideConnecting() {
|
||||
void MainWindow::hideConnecting() {
|
||||
if (_connecting) {
|
||||
_connecting->deleteLater();
|
||||
_connecting = 0;
|
||||
|
@ -907,18 +907,18 @@ void Window::hideConnecting() {
|
|||
if (settings) settings->update();
|
||||
}
|
||||
|
||||
bool Window::historyIsActive() const {
|
||||
bool MainWindow::historyIsActive() const {
|
||||
return isActive(false) && main && main->historyIsActive() && (!settings || !settings->isVisible());
|
||||
}
|
||||
|
||||
void Window::checkHistoryActivation() {
|
||||
void MainWindow::checkHistoryActivation() {
|
||||
if (main && MTP::authedId() && historyIsActive()) {
|
||||
main->historyWasRead();
|
||||
}
|
||||
QTimer::singleShot(1, this, SLOT(updateTrayMenu()));
|
||||
}
|
||||
|
||||
void Window::layerHidden() {
|
||||
void MainWindow::layerHidden() {
|
||||
if (layerBg) {
|
||||
layerBg->hide();
|
||||
layerBg->deleteLater();
|
||||
|
@ -928,7 +928,7 @@ void Window::layerHidden() {
|
|||
setInnerFocus();
|
||||
}
|
||||
|
||||
void Window::hideMediaview() {
|
||||
void MainWindow::hideMediaview() {
|
||||
if (_mediaView && !_mediaView->isHidden()) {
|
||||
_mediaView->hide();
|
||||
#if defined Q_OS_LINUX32 || defined Q_OS_LINUX64
|
||||
|
@ -939,13 +939,13 @@ void Window::hideMediaview() {
|
|||
}
|
||||
}
|
||||
|
||||
bool Window::contentOverlapped(const QRect &globalRect) {
|
||||
bool MainWindow::contentOverlapped(const QRect &globalRect) {
|
||||
if (main && main->contentOverlapped(globalRect)) return true;
|
||||
if (layerBg && layerBg->contentOverlapped(globalRect)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
void Window::setInnerFocus() {
|
||||
void MainWindow::setInnerFocus() {
|
||||
if (layerBg && layerBg->canSetFocus()) {
|
||||
layerBg->setInnerFocus();
|
||||
} else if (_passcode) {
|
||||
|
@ -957,11 +957,11 @@ void Window::setInnerFocus() {
|
|||
}
|
||||
}
|
||||
|
||||
QRect Window::clientRect() const {
|
||||
QRect MainWindow::clientRect() const {
|
||||
return QRect(0, st::titleHeight, width(), height() - st::titleHeight);
|
||||
}
|
||||
|
||||
QRect Window::photoRect() const {
|
||||
QRect MainWindow::photoRect() const {
|
||||
if (settings) {
|
||||
return settings->geometry();
|
||||
} else if (main) {
|
||||
|
@ -973,15 +973,15 @@ QRect Window::photoRect() const {
|
|||
return QRect(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
void Window::wStartDrag(QMouseEvent *e) {
|
||||
void MainWindow::wStartDrag(QMouseEvent *e) {
|
||||
dragStart = e->globalPos() - frameGeometry().topLeft();
|
||||
dragging = true;
|
||||
}
|
||||
|
||||
void Window::paintEvent(QPaintEvent *e) {
|
||||
void MainWindow::paintEvent(QPaintEvent *e) {
|
||||
}
|
||||
|
||||
HitTestType Window::hitTest(const QPoint &p) const {
|
||||
HitTestType MainWindow::hitTest(const QPoint &p) const {
|
||||
int x(p.x()), y(p.y()), w(width()), h(height());
|
||||
|
||||
const int32 raw = psResizeRowWidth();
|
||||
|
@ -1015,11 +1015,11 @@ HitTestType Window::hitTest(const QPoint &p) const {
|
|||
return HitTestNone;
|
||||
}
|
||||
|
||||
QRect Window::iconRect() const {
|
||||
QRect MainWindow::iconRect() const {
|
||||
return QRect(st::titleIconPos + title->geometry().topLeft(), st::titleIconImg.pxSize());
|
||||
}
|
||||
|
||||
bool Window::eventFilter(QObject *obj, QEvent *e) {
|
||||
bool MainWindow::eventFilter(QObject *obj, QEvent *e) {
|
||||
switch (e->type()) {
|
||||
case QEvent::MouseButtonPress:
|
||||
case QEvent::KeyPress:
|
||||
|
@ -1088,7 +1088,7 @@ bool Window::eventFilter(QObject *obj, QEvent *e) {
|
|||
return PsMainWindow::eventFilter(obj, e);
|
||||
}
|
||||
|
||||
void Window::mouseMoveEvent(QMouseEvent *e) {
|
||||
void MainWindow::mouseMoveEvent(QMouseEvent *e) {
|
||||
if (e->buttons() & Qt::LeftButton) {
|
||||
if (dragging) {
|
||||
if (windowState().testFlag(Qt::WindowMaximized)) {
|
||||
|
@ -1104,11 +1104,11 @@ void Window::mouseMoveEvent(QMouseEvent *e) {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::mouseReleaseEvent(QMouseEvent *e) {
|
||||
void MainWindow::mouseReleaseEvent(QMouseEvent *e) {
|
||||
dragging = false;
|
||||
}
|
||||
|
||||
bool Window::minimizeToTray() {
|
||||
bool MainWindow::minimizeToTray() {
|
||||
if (App::quitting() || !psHasTrayIcon()) return false;
|
||||
|
||||
hide();
|
||||
|
@ -1123,7 +1123,7 @@ bool Window::minimizeToTray() {
|
|||
return true;
|
||||
}
|
||||
|
||||
void Window::updateTrayMenu(bool force) {
|
||||
void MainWindow::updateTrayMenu(bool force) {
|
||||
if (!trayIconMenu || (cPlatform() == dbipWindows && !force)) return;
|
||||
|
||||
bool active = isActive(false);
|
||||
|
@ -1153,25 +1153,25 @@ void Window::updateTrayMenu(bool force) {
|
|||
psTrayMenuUpdated();
|
||||
}
|
||||
|
||||
void Window::onShowAddContact() {
|
||||
void MainWindow::onShowAddContact() {
|
||||
if (isHidden()) showFromTray();
|
||||
|
||||
if (main) main->showAddContact();
|
||||
}
|
||||
|
||||
void Window::onShowNewGroup() {
|
||||
void MainWindow::onShowNewGroup() {
|
||||
if (isHidden()) showFromTray();
|
||||
|
||||
if (main) Ui::showLayer(new GroupInfoBox(CreatingGroupGroup, false), KeepOtherLayers);
|
||||
}
|
||||
|
||||
void Window::onShowNewChannel() {
|
||||
void MainWindow::onShowNewChannel() {
|
||||
if (isHidden()) showFromTray();
|
||||
|
||||
if (main) Ui::showLayer(new GroupInfoBox(CreatingGroupChannel, false), KeepOtherLayers);
|
||||
}
|
||||
|
||||
void Window::onLogout() {
|
||||
void MainWindow::onLogout() {
|
||||
if (isHidden()) showFromTray();
|
||||
|
||||
ConfirmBox *box = new ConfirmBox(lang(lng_sure_logout), lang(lng_settings_logout), st::attentionBoxButton);
|
||||
|
@ -1179,7 +1179,7 @@ void Window::onLogout() {
|
|||
Ui::showLayer(box);
|
||||
}
|
||||
|
||||
void Window::onLogoutSure() {
|
||||
void MainWindow::onLogoutSure() {
|
||||
if (MTP::authedId()) {
|
||||
App::logOut();
|
||||
} else {
|
||||
|
@ -1187,17 +1187,17 @@ void Window::onLogoutSure() {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::updateGlobalMenu() {
|
||||
void MainWindow::updateGlobalMenu() {
|
||||
#ifdef Q_OS_MAC
|
||||
psMacUpdateMenu();
|
||||
#endif
|
||||
}
|
||||
|
||||
void Window::quitFromTray() {
|
||||
void MainWindow::quitFromTray() {
|
||||
App::quit();
|
||||
}
|
||||
|
||||
void Window::activate() {
|
||||
void MainWindow::activate() {
|
||||
bool wasHidden = !isVisible();
|
||||
setWindowState(windowState() & ~Qt::WindowMinimized);
|
||||
setVisible(true);
|
||||
|
@ -1211,45 +1211,45 @@ void Window::activate() {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::noIntro(IntroWidget *was) {
|
||||
void MainWindow::noIntro(IntroWidget *was) {
|
||||
if (was == intro) {
|
||||
intro = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void Window::noSettings(SettingsWidget *was) {
|
||||
void MainWindow::noSettings(SettingsWidget *was) {
|
||||
if (was == settings) {
|
||||
settings = 0;
|
||||
}
|
||||
checkHistoryActivation();
|
||||
}
|
||||
|
||||
void Window::noMain(MainWidget *was) {
|
||||
void MainWindow::noMain(MainWidget *was) {
|
||||
if (was == main) {
|
||||
main = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void Window::noBox(BackgroundWidget *was) {
|
||||
void MainWindow::noBox(BackgroundWidget *was) {
|
||||
if (was == layerBg) {
|
||||
layerBg = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void Window::layerFinishedHide(BackgroundWidget *was) {
|
||||
void MainWindow::layerFinishedHide(BackgroundWidget *was) {
|
||||
if (was == layerBg) {
|
||||
QTimer::singleShot(0, this, SLOT(layerHidden()));
|
||||
}
|
||||
}
|
||||
|
||||
void Window::fixOrder() {
|
||||
void MainWindow::fixOrder() {
|
||||
title->raise();
|
||||
if (layerBg) layerBg->raise();
|
||||
if (_mediaPreview) _mediaPreview->raise();
|
||||
if (_connecting) _connecting->raise();
|
||||
}
|
||||
|
||||
void Window::showFromTray(QSystemTrayIcon::ActivationReason reason) {
|
||||
void MainWindow::showFromTray(QSystemTrayIcon::ActivationReason reason) {
|
||||
if (reason != QSystemTrayIcon::Context) {
|
||||
QTimer::singleShot(1, this, SLOT(updateTrayMenu()));
|
||||
QTimer::singleShot(1, this, SLOT(updateGlobalMenu()));
|
||||
|
@ -1258,7 +1258,7 @@ void Window::showFromTray(QSystemTrayIcon::ActivationReason reason) {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::toggleTray(QSystemTrayIcon::ActivationReason reason) {
|
||||
void MainWindow::toggleTray(QSystemTrayIcon::ActivationReason reason) {
|
||||
if ((cPlatform() == dbipMac || cPlatform() == dbipMacOld) && isActive(false)) return;
|
||||
if (reason == QSystemTrayIcon::Context) {
|
||||
updateTrayMenu(true);
|
||||
|
@ -1272,7 +1272,7 @@ void Window::toggleTray(QSystemTrayIcon::ActivationReason reason) {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::toggleDisplayNotifyFromTray() {
|
||||
void MainWindow::toggleDisplayNotifyFromTray() {
|
||||
if (App::passcoded()) {
|
||||
if (!isActive()) showFromTray();
|
||||
Ui::showLayer(new InformBox(lang(lng_passcode_need_unblock)));
|
||||
|
@ -1290,7 +1290,7 @@ void Window::toggleDisplayNotifyFromTray() {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::closeEvent(QCloseEvent *e) {
|
||||
void MainWindow::closeEvent(QCloseEvent *e) {
|
||||
if (MTP::authedId() && !Sandbox::isSavingSession() && Ui::hideWindowNoQuit()) {
|
||||
e->ignore();
|
||||
} else {
|
||||
|
@ -1298,11 +1298,11 @@ void Window::closeEvent(QCloseEvent *e) {
|
|||
}
|
||||
}
|
||||
|
||||
TitleWidget *Window::getTitle() {
|
||||
TitleWidget *MainWindow::getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
void Window::resizeEvent(QResizeEvent *e) {
|
||||
void MainWindow::resizeEvent(QResizeEvent *e) {
|
||||
if (!title) return;
|
||||
|
||||
Adaptive::Layout layout = Adaptive::OneColumnLayout;
|
||||
|
@ -1322,7 +1322,7 @@ void Window::resizeEvent(QResizeEvent *e) {
|
|||
emit resized(QSize(width(), height() - st::titleHeight));
|
||||
}
|
||||
|
||||
void Window::updateAdaptiveLayout() {
|
||||
void MainWindow::updateAdaptiveLayout() {
|
||||
title->updateAdaptiveLayout();
|
||||
if (main) main->updateAdaptiveLayout();
|
||||
if (settings) settings->updateAdaptiveLayout();
|
||||
|
@ -1330,25 +1330,25 @@ void Window::updateAdaptiveLayout() {
|
|||
if (layerBg) layerBg->updateAdaptiveLayout();
|
||||
}
|
||||
|
||||
bool Window::needBackButton() {
|
||||
bool MainWindow::needBackButton() {
|
||||
return !!settings;
|
||||
}
|
||||
|
||||
Window::TempDirState Window::tempDirState() {
|
||||
MainWindow::TempDirState MainWindow::tempDirState() {
|
||||
if (_clearManager && _clearManager->hasTask(Local::ClearManagerDownloads)) {
|
||||
return TempDirRemoving;
|
||||
}
|
||||
return QDir(cTempDir()).exists() ? TempDirExists : TempDirEmpty;
|
||||
}
|
||||
|
||||
Window::TempDirState Window::localStorageState() {
|
||||
MainWindow::TempDirState MainWindow::localStorageState() {
|
||||
if (_clearManager && _clearManager->hasTask(Local::ClearManagerStorage)) {
|
||||
return TempDirRemoving;
|
||||
}
|
||||
return (Local::hasImages() || Local::hasStickers() || Local::hasWebFiles() || Local::hasAudios()) ? TempDirExists : TempDirEmpty;
|
||||
}
|
||||
|
||||
void Window::tempDirDelete(int task) {
|
||||
void MainWindow::tempDirDelete(int task) {
|
||||
if (_clearManager) {
|
||||
if (_clearManager->addTask(task)) {
|
||||
return;
|
||||
|
@ -1364,7 +1364,7 @@ void Window::tempDirDelete(int task) {
|
|||
_clearManager->start();
|
||||
}
|
||||
|
||||
void Window::onClearFinished(int task, void *manager) {
|
||||
void MainWindow::onClearFinished(int task, void *manager) {
|
||||
if (manager && manager == _clearManager) {
|
||||
_clearManager->deleteLater();
|
||||
_clearManager = 0;
|
||||
|
@ -1372,7 +1372,7 @@ void Window::onClearFinished(int task, void *manager) {
|
|||
emit tempDirCleared(task);
|
||||
}
|
||||
|
||||
void Window::onClearFailed(int task, void *manager) {
|
||||
void MainWindow::onClearFailed(int task, void *manager) {
|
||||
if (manager && manager == _clearManager) {
|
||||
_clearManager->deleteLater();
|
||||
_clearManager = 0;
|
||||
|
@ -1380,7 +1380,7 @@ void Window::onClearFailed(int task, void *manager) {
|
|||
emit tempDirClearFailed(task);
|
||||
}
|
||||
|
||||
void Window::notifySchedule(History *history, HistoryItem *item) {
|
||||
void MainWindow::notifySchedule(History *history, HistoryItem *item) {
|
||||
if (App::quitting() || !history->currentNotification() || !main) return;
|
||||
|
||||
PeerData *notifyByFrom = (!history->peer->isUser() && item->mentionsMe()) ? item->from() : 0;
|
||||
|
@ -1451,11 +1451,11 @@ void Window::notifySchedule(History *history, HistoryItem *item) {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::notifyFire() {
|
||||
void MainWindow::notifyFire() {
|
||||
notifyShowNext();
|
||||
}
|
||||
|
||||
void Window::notifyClear(History *history) {
|
||||
void MainWindow::notifyClear(History *history) {
|
||||
if (!history) {
|
||||
for (NotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) {
|
||||
(*i)->unlinkHistory();
|
||||
|
@ -1480,7 +1480,7 @@ void Window::notifyClear(History *history) {
|
|||
notifyShowNext();
|
||||
}
|
||||
|
||||
void Window::notifyClearFast() {
|
||||
void MainWindow::notifyClearFast() {
|
||||
notifyWaiters.clear();
|
||||
notifySettingWaiters.clear();
|
||||
for (NotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) {
|
||||
|
@ -1492,7 +1492,7 @@ void Window::notifyClearFast() {
|
|||
notifyWhenAlerts.clear();
|
||||
}
|
||||
|
||||
void Window::notifySettingGot() {
|
||||
void MainWindow::notifySettingGot() {
|
||||
int32 t = unixtime();
|
||||
for (NotifyWaiters::iterator i = notifySettingWaiters.begin(); i != notifySettingWaiters.end();) {
|
||||
History *history = i.key();
|
||||
|
@ -1534,7 +1534,7 @@ void Window::notifySettingGot() {
|
|||
notifyShowNext();
|
||||
}
|
||||
|
||||
void Window::notifyShowNext(NotifyWindow *remove) {
|
||||
void MainWindow::notifyShowNext(NotifyWindow *remove) {
|
||||
if (App::quitting()) return;
|
||||
|
||||
int32 count = NotifyWindowsCount;
|
||||
|
@ -1711,7 +1711,7 @@ void Window::notifyShowNext(NotifyWindow *remove) {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::notifyItemRemoved(HistoryItem *item) {
|
||||
void MainWindow::notifyItemRemoved(HistoryItem *item) {
|
||||
if (cCustomNotifies()) {
|
||||
for (NotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) {
|
||||
(*i)->itemRemoved(item);
|
||||
|
@ -1719,7 +1719,7 @@ void Window::notifyItemRemoved(HistoryItem *item) {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::notifyStopHiding() {
|
||||
void MainWindow::notifyStopHiding() {
|
||||
if (cCustomNotifies()) {
|
||||
for (NotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) {
|
||||
(*i)->stopHiding();
|
||||
|
@ -1727,7 +1727,7 @@ void Window::notifyStopHiding() {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::notifyStartHiding() {
|
||||
void MainWindow::notifyStartHiding() {
|
||||
if (cCustomNotifies()) {
|
||||
for (NotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) {
|
||||
(*i)->startHiding();
|
||||
|
@ -1735,7 +1735,7 @@ void Window::notifyStartHiding() {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::notifyUpdateAllPhotos() {
|
||||
void MainWindow::notifyUpdateAllPhotos() {
|
||||
if (cCustomNotifies()) {
|
||||
for (NotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) {
|
||||
(*i)->updatePeerPhoto();
|
||||
|
@ -1744,11 +1744,11 @@ void Window::notifyUpdateAllPhotos() {
|
|||
if (_mediaView && !_mediaView->isHidden()) _mediaView->updateControls();
|
||||
}
|
||||
|
||||
void Window::app_activateClickHandler(ClickHandlerPtr handler, Qt::MouseButton button) {
|
||||
void MainWindow::app_activateClickHandler(ClickHandlerPtr handler, Qt::MouseButton button) {
|
||||
handler->onClick(button);
|
||||
}
|
||||
|
||||
void Window::notifyUpdateAll() {
|
||||
void MainWindow::notifyUpdateAll() {
|
||||
if (cCustomNotifies()) {
|
||||
for (NotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) {
|
||||
(*i)->updateNotifyDisplay();
|
||||
|
@ -1757,7 +1757,7 @@ void Window::notifyUpdateAll() {
|
|||
psClearNotifies();
|
||||
}
|
||||
|
||||
void Window::notifyActivateAll() {
|
||||
void MainWindow::notifyActivateAll() {
|
||||
if (cCustomNotifies()) {
|
||||
for (NotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) {
|
||||
psActivateNotify(*i);
|
||||
|
@ -1765,11 +1765,11 @@ void Window::notifyActivateAll() {
|
|||
}
|
||||
}
|
||||
|
||||
QImage Window::iconLarge() const {
|
||||
QImage MainWindow::iconLarge() const {
|
||||
return iconbig256;
|
||||
}
|
||||
|
||||
void Window::placeSmallCounter(QImage &img, int size, int count, style::color bg, const QPoint &shift, style::color color) {
|
||||
void MainWindow::placeSmallCounter(QImage &img, int size, int count, style::color bg, const QPoint &shift, style::color color) {
|
||||
QPainter p(&img);
|
||||
|
||||
QString cnt = (count < 100) ? QString("%1").arg(count) : QString("..%1").arg(count % 10, 1, 10, QChar('0'));
|
||||
|
@ -1807,7 +1807,7 @@ void Window::placeSmallCounter(QImage &img, int size, int count, style::color bg
|
|||
|
||||
}
|
||||
|
||||
QImage Window::iconWithCounter(int size, int count, style::color bg, bool smallIcon) {
|
||||
QImage MainWindow::iconWithCounter(int size, int count, style::color bg, bool smallIcon) {
|
||||
bool layer = false;
|
||||
if (size < 0) {
|
||||
size = -size;
|
||||
|
@ -1874,7 +1874,7 @@ QImage Window::iconWithCounter(int size, int count, style::color bg, bool smallI
|
|||
return img;
|
||||
}
|
||||
|
||||
void Window::sendPaths() {
|
||||
void MainWindow::sendPaths() {
|
||||
if (App::passcoded()) return;
|
||||
hideMediaview();
|
||||
if (settings) {
|
||||
|
@ -1887,35 +1887,35 @@ void Window::sendPaths() {
|
|||
}
|
||||
}
|
||||
|
||||
void Window::mediaOverviewUpdated(PeerData *peer, MediaOverviewType type) {
|
||||
void MainWindow::mediaOverviewUpdated(PeerData *peer, MediaOverviewType type) {
|
||||
if (main) main->mediaOverviewUpdated(peer, type);
|
||||
if (!_mediaView || _mediaView->isHidden()) return;
|
||||
_mediaView->mediaOverviewUpdated(peer, type);
|
||||
}
|
||||
|
||||
void Window::documentUpdated(DocumentData *doc) {
|
||||
void MainWindow::documentUpdated(DocumentData *doc) {
|
||||
if (!_mediaView || _mediaView->isHidden()) return;
|
||||
_mediaView->documentUpdated(doc);
|
||||
}
|
||||
|
||||
void Window::changingMsgId(HistoryItem *row, MsgId newId) {
|
||||
void MainWindow::changingMsgId(HistoryItem *row, MsgId newId) {
|
||||
if (main) main->changingMsgId(row, newId);
|
||||
if (!_mediaView || _mediaView->isHidden()) return;
|
||||
_mediaView->changingMsgId(row, newId);
|
||||
}
|
||||
|
||||
bool Window::isActive(bool cached) const {
|
||||
bool MainWindow::isActive(bool cached) const {
|
||||
if (cached) return _isActive;
|
||||
return isActiveWindow() && isVisible() && !(windowState() & Qt::WindowMinimized);
|
||||
}
|
||||
|
||||
void Window::updateIsActive(int timeout) {
|
||||
void MainWindow::updateIsActive(int timeout) {
|
||||
if (timeout) return _isActiveTimer.start(timeout);
|
||||
_isActive = isActive(false);
|
||||
if (main) main->updateOnline();
|
||||
}
|
||||
|
||||
Window::~Window() {
|
||||
MainWindow::~MainWindow() {
|
||||
notifyClearFast();
|
||||
delete _clearManager;
|
||||
delete _connecting;
|
|
@ -123,12 +123,12 @@ typedef QList<NotifyWindow*> NotifyWindows;
|
|||
|
||||
class MediaPreviewWidget;
|
||||
|
||||
class Window : public PsMainWindow {
|
||||
class MainWindow : public PsMainWindow {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Window(QWidget *parent = 0);
|
||||
~Window();
|
||||
MainWindow(QWidget *parent = 0);
|
||||
~MainWindow();
|
||||
|
||||
void init();
|
||||
void firstShow();
|
|
@ -23,7 +23,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "mediaview.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "application.h"
|
||||
#include "ui/filedialog.h"
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "basic_types.h"
|
||||
#include "core/basic_types.h"
|
||||
|
||||
namespace MTP {
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "mtproto/file_download.h"
|
||||
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include "application.h"
|
||||
#include "localstorage.h"
|
||||
|
|
1143
Telegram/SourceFiles/overview/overview_layout.cpp
Normal file
1143
Telegram/SourceFiles/overview/overview_layout.cpp
Normal file
File diff suppressed because it is too large
Load diff
337
Telegram/SourceFiles/overview/overview_layout.h
Normal file
337
Telegram/SourceFiles/overview/overview_layout.h
Normal file
|
@ -0,0 +1,337 @@
|
|||
/*
|
||||
This file is part of Telegram Desktop,
|
||||
the official desktop version of Telegram messaging app, see https://telegram.org
|
||||
|
||||
Telegram Desktop is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
It is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
In addition, as a special exception, the copyright holders give permission
|
||||
to link the code of portions of this program with the OpenSSL library.
|
||||
|
||||
Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
|
||||
Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "layout.h"
|
||||
#include "core/click_handler_types.h"
|
||||
|
||||
namespace Overview {
|
||||
namespace Layout {
|
||||
|
||||
class PaintContext : public PaintContextBase {
|
||||
public:
|
||||
PaintContext(uint64 ms, bool selecting) : PaintContextBase(ms, selecting), isAfterDate(false) {
|
||||
}
|
||||
bool isAfterDate;
|
||||
|
||||
};
|
||||
|
||||
class ItemBase;
|
||||
class AbstractItem : public LayoutItemBase {
|
||||
public:
|
||||
|
||||
virtual void paint(Painter &p, const QRect &clip, uint32 selection, const PaintContext *context) const = 0;
|
||||
|
||||
virtual ItemBase *toMediaItem() {
|
||||
return nullptr;
|
||||
}
|
||||
virtual const ItemBase *toMediaItem() const {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
virtual HistoryItem *getItem() const {
|
||||
return nullptr;
|
||||
}
|
||||
virtual DocumentData *getDocument() const {
|
||||
return nullptr;
|
||||
}
|
||||
MsgId msgId() const {
|
||||
const HistoryItem *item = getItem();
|
||||
return item ? item->id : 0;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class ItemBase : public AbstractItem {
|
||||
public:
|
||||
ItemBase(HistoryItem *parent) : _parent(parent) {
|
||||
}
|
||||
|
||||
ItemBase *toMediaItem() override {
|
||||
return this;
|
||||
}
|
||||
const ItemBase *toMediaItem() const override {
|
||||
return this;
|
||||
}
|
||||
HistoryItem *getItem() const override {
|
||||
return _parent;
|
||||
}
|
||||
|
||||
void clickHandlerActiveChanged(const ClickHandlerPtr &p, bool active) override;
|
||||
void clickHandlerPressedChanged(const ClickHandlerPtr &p, bool active) override;
|
||||
|
||||
protected:
|
||||
HistoryItem *_parent;
|
||||
|
||||
};
|
||||
|
||||
class RadialProgressItem : public ItemBase {
|
||||
public:
|
||||
RadialProgressItem(HistoryItem *parent) : ItemBase(parent)
|
||||
, _radial(0)
|
||||
, a_iconOver(0, 0)
|
||||
, _a_iconOver(animation(this, &RadialProgressItem::step_iconOver)) {
|
||||
}
|
||||
RadialProgressItem(const RadialProgressItem &other) = delete;
|
||||
|
||||
void clickHandlerActiveChanged(const ClickHandlerPtr &p, bool active) override;
|
||||
void clickHandlerPressedChanged(const ClickHandlerPtr &p, bool active) override;
|
||||
|
||||
~RadialProgressItem();
|
||||
|
||||
protected:
|
||||
ClickHandlerPtr _openl, _savel, _cancell;
|
||||
void setLinks(ClickHandlerPtr &&openl, ClickHandlerPtr &&savel, ClickHandlerPtr &&cancell);
|
||||
void setDocumentLinks(DocumentData *document) {
|
||||
ClickHandlerPtr save;
|
||||
if (document->voice()) {
|
||||
save.reset(new DocumentOpenClickHandler(document));
|
||||
} else {
|
||||
save.reset(new DocumentSaveClickHandler(document));
|
||||
}
|
||||
setLinks(MakeShared<DocumentOpenClickHandler>(document), std_::move(save), MakeShared<DocumentCancelClickHandler>(document));
|
||||
}
|
||||
|
||||
void step_iconOver(float64 ms, bool timer);
|
||||
void step_radial(uint64 ms, bool timer);
|
||||
|
||||
void ensureRadial() const;
|
||||
void checkRadialFinished();
|
||||
|
||||
bool isRadialAnimation(uint64 ms) const {
|
||||
if (!_radial || !_radial->animating()) return false;
|
||||
|
||||
_radial->step(ms);
|
||||
return _radial && _radial->animating();
|
||||
}
|
||||
|
||||
virtual float64 dataProgress() const = 0;
|
||||
virtual bool dataFinished() const = 0;
|
||||
virtual bool dataLoaded() const = 0;
|
||||
virtual bool iconAnimated() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
mutable RadialAnimation *_radial;
|
||||
anim::fvalue a_iconOver;
|
||||
mutable Animation _a_iconOver;
|
||||
|
||||
};
|
||||
|
||||
class FileBase : public RadialProgressItem {
|
||||
public:
|
||||
FileBase(HistoryItem *parent) : RadialProgressItem(parent) {
|
||||
}
|
||||
|
||||
protected:
|
||||
// >= 0 will contain download / upload string, _statusSize = loaded bytes
|
||||
// < 0 will contain played string, _statusSize = -(seconds + 1) played
|
||||
// 0x7FFFFFF0 will contain status for not yet downloaded file
|
||||
// 0x7FFFFFF1 will contain status for already downloaded file
|
||||
// 0x7FFFFFF2 will contain status for failed to download / upload file
|
||||
mutable int32 _statusSize;
|
||||
mutable QString _statusText;
|
||||
|
||||
// duration = -1 - no duration, duration = -2 - "GIF" duration
|
||||
void setStatusSize(int32 newSize, int32 fullSize, int32 duration, qint64 realDuration) const;
|
||||
|
||||
};
|
||||
|
||||
struct Info : public BaseComponent<Info> {
|
||||
int top = 0;
|
||||
};
|
||||
|
||||
class Date : public AbstractItem {
|
||||
public:
|
||||
Date(const QDate &date, bool month);
|
||||
|
||||
void initDimensions() override;
|
||||
void paint(Painter &p, const QRect &clip, uint32 selection, const PaintContext *context) const override;
|
||||
|
||||
private:
|
||||
QDate _date;
|
||||
QString _text;
|
||||
|
||||
};
|
||||
|
||||
class Photo : public ItemBase {
|
||||
public:
|
||||
Photo(PhotoData *photo, HistoryItem *parent);
|
||||
|
||||
void initDimensions() override;
|
||||
int32 resizeGetHeight(int32 width) override;
|
||||
void paint(Painter &p, const QRect &clip, uint32 selection, const PaintContext *context) const override;
|
||||
void getState(ClickHandlerPtr &link, HistoryCursorState &cursor, int x, int y) const override;
|
||||
|
||||
private:
|
||||
PhotoData *_data;
|
||||
ClickHandlerPtr _link;
|
||||
|
||||
mutable QPixmap _pix;
|
||||
mutable bool _goodLoaded;
|
||||
|
||||
};
|
||||
|
||||
class Video : public FileBase {
|
||||
public:
|
||||
Video(DocumentData *video, HistoryItem *parent);
|
||||
|
||||
void initDimensions() override;
|
||||
int32 resizeGetHeight(int32 width) override;
|
||||
void paint(Painter &p, const QRect &clip, uint32 selection, const PaintContext *context) const override;
|
||||
void getState(ClickHandlerPtr &link, HistoryCursorState &cursor, int x, int y) const override;
|
||||
|
||||
protected:
|
||||
float64 dataProgress() const override {
|
||||
return _data->progress();
|
||||
}
|
||||
bool dataFinished() const override {
|
||||
return !_data->loading();
|
||||
}
|
||||
bool dataLoaded() const override {
|
||||
return _data->loaded();
|
||||
}
|
||||
bool iconAnimated() const override {
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
DocumentData *_data;
|
||||
|
||||
QString _duration;
|
||||
mutable QPixmap _pix;
|
||||
mutable bool _thumbLoaded;
|
||||
|
||||
void updateStatusText() const;
|
||||
|
||||
};
|
||||
|
||||
class Voice : public FileBase {
|
||||
public:
|
||||
Voice(DocumentData *voice, HistoryItem *parent);
|
||||
|
||||
void initDimensions() override;
|
||||
void paint(Painter &p, const QRect &clip, uint32 selection, const PaintContext *context) const override;
|
||||
void getState(ClickHandlerPtr &link, HistoryCursorState &cursor, int x, int y) const override;
|
||||
|
||||
protected:
|
||||
float64 dataProgress() const override {
|
||||
return _data->progress();
|
||||
}
|
||||
bool dataFinished() const override {
|
||||
return !_data->loading();
|
||||
}
|
||||
bool dataLoaded() const override {
|
||||
return _data->loaded();
|
||||
}
|
||||
bool iconAnimated() const override {
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
DocumentData *_data;
|
||||
ClickHandlerPtr _namel;
|
||||
|
||||
mutable Text _name, _details;
|
||||
mutable int32 _nameVersion;
|
||||
|
||||
void updateName() const;
|
||||
bool updateStatusText() const;
|
||||
|
||||
};
|
||||
|
||||
class Document : public FileBase {
|
||||
public:
|
||||
Document(DocumentData *document, HistoryItem *parent);
|
||||
|
||||
void initDimensions() override;
|
||||
void paint(Painter &p, const QRect &clip, uint32 selection, const PaintContext *context) const override;
|
||||
void getState(ClickHandlerPtr &link, HistoryCursorState &cursor, int x, int y) const override;
|
||||
|
||||
virtual DocumentData *getDocument() const override {
|
||||
return _data;
|
||||
}
|
||||
|
||||
protected:
|
||||
float64 dataProgress() const override {
|
||||
return _data->progress();
|
||||
}
|
||||
bool dataFinished() const override {
|
||||
return !_data->loading();
|
||||
}
|
||||
bool dataLoaded() const override {
|
||||
return _data->loaded();
|
||||
}
|
||||
bool iconAnimated() const override {
|
||||
return _data->song() || !_data->loaded() || (_radial && _radial->animating());
|
||||
}
|
||||
|
||||
private:
|
||||
DocumentData *_data;
|
||||
ClickHandlerPtr _msgl, _namel;
|
||||
|
||||
mutable bool _thumbForLoaded;
|
||||
mutable QPixmap _thumb;
|
||||
|
||||
QString _name, _date, _ext;
|
||||
int32 _namew, _datew, _extw;
|
||||
int32 _thumbw, _colorIndex;
|
||||
|
||||
bool withThumb() const {
|
||||
return !_data->thumb->isNull() && _data->thumb->width() && _data->thumb->height();
|
||||
}
|
||||
bool updateStatusText() const;
|
||||
|
||||
};
|
||||
|
||||
class Link : public ItemBase {
|
||||
public:
|
||||
Link(HistoryMedia *media, HistoryItem *parent);
|
||||
|
||||
void initDimensions() override;
|
||||
int32 resizeGetHeight(int32 width) override;
|
||||
void paint(Painter &p, const QRect &clip, uint32 selection, const PaintContext *context) const override;
|
||||
void getState(ClickHandlerPtr &link, HistoryCursorState &cursor, int x, int y) const override;
|
||||
|
||||
private:
|
||||
ClickHandlerPtr _photol;
|
||||
|
||||
QString _title, _letter;
|
||||
int _titlew = 0;
|
||||
WebPageData *_page = nullptr;
|
||||
int _pixw = 0;
|
||||
int _pixh = 0;
|
||||
Text _text = { int(st::msgMinWidth) };
|
||||
|
||||
struct LinkEntry {
|
||||
LinkEntry() : width(0) {
|
||||
}
|
||||
LinkEntry(const QString &url, const QString &text);
|
||||
QString text;
|
||||
int32 width;
|
||||
TextClickHandlerPtr lnk;
|
||||
};
|
||||
QVector<LinkEntry> _links;
|
||||
|
||||
};
|
||||
|
||||
} // namespace Layout
|
||||
} // namespace Overview
|
|
@ -21,7 +21,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "stdafx.h"
|
||||
|
||||
#include "lang.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "mainwidget.h"
|
||||
#include "overviewwidget.h"
|
||||
#include "boxes/addcontactbox.h"
|
||||
|
@ -29,6 +29,9 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "boxes/photocropbox.h"
|
||||
#include "application.h"
|
||||
#include "ui/filedialog.h"
|
||||
#include "playerwidget.h"
|
||||
#include "window/top_bar_widget.h"
|
||||
#include "overview/overview_layout.h"
|
||||
|
||||
// flick scroll taken from http://qt-project.org/doc/qt-4.8/demos-embedded-anomaly-src-flickcharm-cpp.html
|
||||
|
||||
|
@ -333,7 +336,7 @@ void OverviewInner::moveToNextItem(MsgId &msgId, int32 &index, MsgId upTo, int32
|
|||
}
|
||||
|
||||
index += delta;
|
||||
while (index >= 0 && index < _items.size() && !_items.at(index)->toLayoutMediaItem()) {
|
||||
while (index >= 0 && index < _items.size() && !_items.at(index)->toMediaItem()) {
|
||||
index += (delta > 0) ? 1 : -1;
|
||||
}
|
||||
if (index < 0 || index >= _items.size()) {
|
||||
|
@ -354,7 +357,7 @@ void OverviewInner::repaintItem(MsgId itemId, int32 itemIndex) {
|
|||
int32 row = (_photosToAdd + shownAtIndex) / _photosInRow, col = (_photosToAdd + shownAtIndex) % _photosInRow;
|
||||
update(int32(col * w), _marginTop + int32(row * vsize), qCeil(w), vsize);
|
||||
} else {
|
||||
int32 top = _items.at(itemIndex)->Get<OverviewItemInfo>()->top;
|
||||
int32 top = _items.at(itemIndex)->Get<Overview::Layout::Info>()->top;
|
||||
if (_reversed) top = _height - top;
|
||||
update(_rowsLeft, _marginTop + top, _rowWidth, _items.at(itemIndex)->height());
|
||||
}
|
||||
|
@ -698,7 +701,7 @@ QPoint OverviewInner::mapMouseToItem(QPoint p, MsgId itemId, int32 itemIndex) {
|
|||
p.setX(p.x() - int32(col * w) - st::overviewPhotoSkip);
|
||||
p.setY(p.y() - _marginTop - row * (_rowWidth + st::overviewPhotoSkip) - st::overviewPhotoSkip);
|
||||
} else {
|
||||
int32 top = _items.at(itemIndex)->Get<OverviewItemInfo>()->top;
|
||||
int32 top = _items.at(itemIndex)->Get<Overview::Layout::Info>()->top;
|
||||
if (_reversed) top = _height - top;
|
||||
p.setY(p.y() - _marginTop - top);
|
||||
}
|
||||
|
@ -734,7 +737,7 @@ int32 OverviewInner::itemTop(const FullMsgId &msgId) const {
|
|||
int32 itemIndex = -1;
|
||||
fixItemIndex(itemIndex, (msgId.channel == _channel) ? msgId.msg : ((_migrated && msgId.channel == _migrated->channelId()) ? -msgId.msg : 0));
|
||||
if (itemIndex >= 0) {
|
||||
int32 top = _items.at(itemIndex)->Get<OverviewItemInfo>()->top;
|
||||
int32 top = _items.at(itemIndex)->Get<Overview::Layout::Info>()->top;
|
||||
if (_reversed) top = _height - top;
|
||||
return _marginTop + top;
|
||||
}
|
||||
|
@ -785,7 +788,7 @@ uint32 OverviewInner::itemSelectedValue(int32 index) const {
|
|||
selfrom = _dragSelToIndex;
|
||||
selto = _dragSelFromIndex;
|
||||
}
|
||||
if (_items.at(index)->toLayoutMediaItem()) { // draw item
|
||||
if (_items.at(index)->toMediaItem()) { // draw item
|
||||
if (index >= _dragSelToIndex && index <= _dragSelFromIndex && _dragSelToIndex >= 0) {
|
||||
return (_dragSelecting && _items.at(index)->msgId() > 0) ? FullSelection : 0;
|
||||
} else if (!_selected.isEmpty()) {
|
||||
|
@ -809,7 +812,7 @@ void OverviewInner::paintEvent(QPaintEvent *e) {
|
|||
p.setClipRect(r);
|
||||
}
|
||||
uint64 ms = getms();
|
||||
PaintContextOverview context(ms, _selMode);
|
||||
Overview::Layout::PaintContext context(ms, _selMode);
|
||||
|
||||
if (_history->overview[_type].isEmpty() && (!_migrated || !_history->overviewLoaded(_type) || _migrated->overview[_type].isEmpty())) {
|
||||
QPoint dogPos((_width - st::msgDogImg.pxWidth()) / 2, ((height() - st::msgDogImg.pxHeight()) * 4) / 9);
|
||||
|
@ -854,15 +857,15 @@ void OverviewInner::paintEvent(QPaintEvent *e) {
|
|||
int32 y = 0, w = _rowWidth;
|
||||
for (int32 j = 0, l = _items.size(); j < l; ++j) {
|
||||
int32 i = _reversed ? (l - j - 1) : j, nexti = _reversed ? (i - 1) : (i + 1);
|
||||
int32 nextItemTop = (j + 1 == l) ? (_reversed ? 0 : _height) : _items.at(nexti)->Get<OverviewItemInfo>()->top;
|
||||
int32 nextItemTop = (j + 1 == l) ? (_reversed ? 0 : _height) : _items.at(nexti)->Get<Overview::Layout::Info>()->top;
|
||||
if (_reversed) nextItemTop = _height - nextItemTop;
|
||||
if (_marginTop + nextItemTop > r.top()) {
|
||||
OverviewItemInfo *info = _items.at(i)->Get<OverviewItemInfo>();
|
||||
auto info = _items.at(i)->Get<Overview::Layout::Info>();
|
||||
int32 curY = info->top;
|
||||
if (_reversed) curY = _height - curY;
|
||||
if (_marginTop + curY >= r.y() + r.height()) break;
|
||||
|
||||
context.isAfterDate = (j > 0) ? !_items.at(j - 1)->toLayoutMediaItem() : false;
|
||||
context.isAfterDate = (j > 0) ? !_items.at(j - 1)->toMediaItem() : false;
|
||||
p.translate(0, curY - y);
|
||||
_items.at(i)->paint(p, r.translated(-_rowsLeft, -_marginTop - curY), itemSelectedValue(i), &context);
|
||||
y = curY;
|
||||
|
@ -908,7 +911,7 @@ void OverviewInner::onUpdateSelected() {
|
|||
upon = false;
|
||||
}
|
||||
if (i >= 0) {
|
||||
if (LayoutMediaItemBase *media = _items.at(i)->toLayoutMediaItem()) {
|
||||
if (auto media = _items.at(i)->toMediaItem()) {
|
||||
item = media->getItem();
|
||||
index = i;
|
||||
if (upon) {
|
||||
|
@ -921,23 +924,23 @@ void OverviewInner::onUpdateSelected() {
|
|||
for (int32 j = 0, l = _items.size(); j < l; ++j) {
|
||||
bool lastItem = (j + 1 == l);
|
||||
int32 i = _reversed ? (l - j - 1) : j, nexti = _reversed ? (i - 1) : (i + 1);
|
||||
int32 nextItemTop = lastItem ? (_reversed ? 0 : _height) : _items.at(nexti)->Get<OverviewItemInfo>()->top;
|
||||
int32 nextItemTop = lastItem ? (_reversed ? 0 : _height) : _items.at(nexti)->Get<Overview::Layout::Info>()->top;
|
||||
if (_reversed) nextItemTop = _height - nextItemTop;
|
||||
if (_marginTop + nextItemTop > m.y() || lastItem) {
|
||||
int32 top = _items.at(i)->Get<OverviewItemInfo>()->top;
|
||||
int32 top = _items.at(i)->Get<Overview::Layout::Info>()->top;
|
||||
if (_reversed) top = _height - top;
|
||||
if (!_items.at(i)->toLayoutMediaItem()) { // day item
|
||||
if (!_items.at(i)->toMediaItem()) { // day item
|
||||
int32 h = _items.at(i)->height();
|
||||
bool beforeItem = (_marginTop + top + h / 2) >= m.y();
|
||||
if (_reversed) beforeItem = !beforeItem;
|
||||
if (i > 0 && (beforeItem || i == _items.size() - 1)) {
|
||||
--i;
|
||||
if (!_items.at(i)->toLayoutMediaItem()) break; // wtf
|
||||
top = _items.at(i)->Get<OverviewItemInfo>()->top;
|
||||
if (!_items.at(i)->toMediaItem()) break; // wtf
|
||||
top = _items.at(i)->Get<Overview::Layout::Info>()->top;
|
||||
} else if (i < _items.size() - 1 && (!beforeItem || !i)) {
|
||||
++i;
|
||||
if (!_items.at(i)->toLayoutMediaItem()) break; // wtf
|
||||
top = _items.at(i)->Get<OverviewItemInfo>()->top;
|
||||
if (!_items.at(i)->toMediaItem()) break; // wtf
|
||||
top = _items.at(i)->Get<Overview::Layout::Info>()->top;
|
||||
} else {
|
||||
break; // wtf
|
||||
}
|
||||
|
@ -945,7 +948,7 @@ void OverviewInner::onUpdateSelected() {
|
|||
j = _reversed ? (l - i - 1) : i;
|
||||
}
|
||||
|
||||
if (LayoutMediaItemBase *media = _items.at(i)->toLayoutMediaItem()) {
|
||||
if (auto media = _items.at(i)->toMediaItem()) {
|
||||
item = media->getItem();
|
||||
index = i;
|
||||
media->getState(lnk, cursorState, m.x() - _rowsLeft, m.y() - _marginTop - top);
|
||||
|
@ -1325,7 +1328,7 @@ int32 OverviewInner::resizeToWidth(int32 nwidth, int32 scrollTop, int32 minHeigh
|
|||
for (int32 i = 0, l = _items.size(); i < l; ++i) {
|
||||
int32 h = _items.at(i)->resizeGetHeight(_rowWidth);
|
||||
if (resize) {
|
||||
_items.at(i)->Get<OverviewItemInfo>()->top = _height + (_reversed ? h : 0);
|
||||
_items.at(i)->Get<Overview::Layout::Info>()->top = _height + (_reversed ? h : 0);
|
||||
_height += h;
|
||||
}
|
||||
}
|
||||
|
@ -1632,7 +1635,7 @@ void OverviewInner::mediaOverviewUpdated() {
|
|||
allGood = false;
|
||||
}
|
||||
HistoryItem *item = App::histItemById(itemChannel(msgid), itemMsgId(msgid));
|
||||
LayoutMediaItemBase *layout = layoutPrepare(item);
|
||||
auto layout = layoutPrepare(item);
|
||||
if (!layout) continue;
|
||||
|
||||
setLayoutItem(index, layout, 0);
|
||||
|
@ -1658,17 +1661,17 @@ void OverviewInner::mediaOverviewUpdated() {
|
|||
if (allGood) {
|
||||
if (_items.size() > index && complexMsgId(_items.at(index)->getItem()) == msgid) {
|
||||
if (withDates) prevDate = _items.at(index)->getItem()->date.date();
|
||||
top = _items.at(index)->Get<OverviewItemInfo>()->top;
|
||||
top = _items.at(index)->Get<Overview::Layout::Info>()->top;
|
||||
if (!_reversed) {
|
||||
top += _items.at(index)->height();
|
||||
}
|
||||
++index;
|
||||
continue;
|
||||
}
|
||||
if (_items.size() > index + 1 && !_items.at(index)->toLayoutMediaItem() && complexMsgId(_items.at(index + 1)->getItem()) == msgid) { // day item
|
||||
if (_items.size() > index + 1 && !_items.at(index)->toMediaItem() && complexMsgId(_items.at(index + 1)->getItem()) == msgid) { // day item
|
||||
++index;
|
||||
if (withDates) prevDate = _items.at(index)->getItem()->date.date();
|
||||
top = _items.at(index)->Get<OverviewItemInfo>()->top;
|
||||
top = _items.at(index)->Get<Overview::Layout::Info>()->top;
|
||||
if (!_reversed) {
|
||||
top += _items.at(index)->height();
|
||||
}
|
||||
|
@ -1678,7 +1681,7 @@ void OverviewInner::mediaOverviewUpdated() {
|
|||
allGood = false;
|
||||
}
|
||||
HistoryItem *item = App::histItemById(itemChannel(msgid), itemMsgId(msgid));
|
||||
LayoutMediaItemBase *layout = layoutPrepare(item);
|
||||
auto layout = layoutPrepare(item);
|
||||
if (!layout) continue;
|
||||
|
||||
if (withDates) {
|
||||
|
@ -1795,7 +1798,7 @@ void OverviewInner::repaintItem(const HistoryItem *msg) {
|
|||
if (history == _migrated) msgid = -msgid;
|
||||
for (int32 i = 0, l = _items.size(); i != l; ++i) {
|
||||
if (complexMsgId(_items.at(i)->getItem()) == msgid) {
|
||||
int32 top = _items.at(i)->Get<OverviewItemInfo>()->top;
|
||||
int32 top = _items.at(i)->Get<Overview::Layout::Info>()->top;
|
||||
if (_reversed) top = _height - top;
|
||||
update(_rowsLeft, _marginTop + top, _rowWidth, _items.at(i)->height());
|
||||
break;
|
||||
|
@ -1840,7 +1843,7 @@ void OverviewInner::recountMargins() {
|
|||
}
|
||||
}
|
||||
|
||||
LayoutMediaItemBase *OverviewInner::layoutPrepare(HistoryItem *item) {
|
||||
Overview::Layout::ItemBase *OverviewInner::layoutPrepare(HistoryItem *item) {
|
||||
if (!item) return nullptr;
|
||||
|
||||
LayoutItems::const_iterator i = _layoutItems.cend();
|
||||
|
@ -1848,59 +1851,59 @@ LayoutMediaItemBase *OverviewInner::layoutPrepare(HistoryItem *item) {
|
|||
if (_type == OverviewPhotos) {
|
||||
if (media && media->type() == MediaTypePhoto) {
|
||||
if ((i = _layoutItems.constFind(item)) == _layoutItems.cend()) {
|
||||
i = _layoutItems.insert(item, new LayoutOverviewPhoto(static_cast<HistoryPhoto*>(media)->photo(), item));
|
||||
i = _layoutItems.insert(item, new Overview::Layout::Photo(static_cast<HistoryPhoto*>(media)->photo(), item));
|
||||
i.value()->initDimensions();
|
||||
}
|
||||
}
|
||||
} else if (_type == OverviewVideos) {
|
||||
if (media && media->type() == MediaTypeVideo) {
|
||||
if ((i = _layoutItems.constFind(item)) == _layoutItems.cend()) {
|
||||
i = _layoutItems.insert(item, new LayoutOverviewVideo(media->getDocument(), item));
|
||||
i = _layoutItems.insert(item, new Overview::Layout::Video(media->getDocument(), item));
|
||||
i.value()->initDimensions();
|
||||
}
|
||||
}
|
||||
} else if (_type == OverviewVoiceFiles) {
|
||||
if (media && (media->type() == MediaTypeVoiceFile)) {
|
||||
if ((i = _layoutItems.constFind(item)) == _layoutItems.cend()) {
|
||||
i = _layoutItems.insert(item, new LayoutOverviewVoice(media->getDocument(), item));
|
||||
i = _layoutItems.insert(item, new Overview::Layout::Voice(media->getDocument(), item));
|
||||
i.value()->initDimensions();
|
||||
}
|
||||
}
|
||||
} else if (_type == OverviewFiles || _type == OverviewMusicFiles) {
|
||||
if (media && (media->type() == MediaTypeFile || media->type() == MediaTypeMusicFile || media->type() == MediaTypeGif)) {
|
||||
if ((i = _layoutItems.constFind(item)) == _layoutItems.cend()) {
|
||||
i = _layoutItems.insert(item, new LayoutOverviewDocument(media->getDocument(), item));
|
||||
i = _layoutItems.insert(item, new Overview::Layout::Document(media->getDocument(), item));
|
||||
i.value()->initDimensions();
|
||||
}
|
||||
}
|
||||
} else if (_type == OverviewLinks) {
|
||||
if ((i = _layoutItems.constFind(item)) == _layoutItems.cend()) {
|
||||
i = _layoutItems.insert(item, new LayoutOverviewLink(media, item));
|
||||
i = _layoutItems.insert(item, new Overview::Layout::Link(media, item));
|
||||
i.value()->initDimensions();
|
||||
}
|
||||
}
|
||||
return (i == _layoutItems.cend()) ? nullptr : i.value();
|
||||
}
|
||||
|
||||
LayoutOverviewItemBase *OverviewInner::layoutPrepare(const QDate &date, bool month) {
|
||||
Overview::Layout::AbstractItem *OverviewInner::layoutPrepare(const QDate &date, bool month) {
|
||||
int32 key = date.year() * 100 + date.month();
|
||||
if (!month) key = key * 100 + date.day();
|
||||
LayoutDates::const_iterator i = _layoutDates.constFind(key);
|
||||
if (i == _layoutDates.cend()) {
|
||||
i = _layoutDates.insert(key, new LayoutOverviewDate(date, month));
|
||||
i = _layoutDates.insert(key, new Overview::Layout::Date(date, month));
|
||||
i.value()->initDimensions();
|
||||
}
|
||||
return i.value();
|
||||
}
|
||||
|
||||
int32 OverviewInner::setLayoutItem(int32 index, LayoutOverviewItemBase *item, int32 top) {
|
||||
int32 OverviewInner::setLayoutItem(int32 index, Overview::Layout::AbstractItem *item, int32 top) {
|
||||
if (_items.size() > index) {
|
||||
_items[index] = item;
|
||||
} else {
|
||||
_items.push_back(item);
|
||||
}
|
||||
int32 h = item->resizeGetHeight(_rowWidth);
|
||||
if (OverviewItemInfo *info = item->Get<OverviewItemInfo>()) {
|
||||
if (auto info = item->Get<Overview::Layout::Info>()) {
|
||||
info->top = top + (_reversed ? h : 0);
|
||||
}
|
||||
return h;
|
||||
|
|
|
@ -20,6 +20,16 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
namespace Overview {
|
||||
namespace Layout {
|
||||
|
||||
class AbstractItem;
|
||||
class ItemBase;
|
||||
class Date;
|
||||
|
||||
} // namespace Layout
|
||||
} // namespace Overview
|
||||
|
||||
class OverviewWidget;
|
||||
class OverviewInner : public QWidget, public AbstractTooltipShower, public RPCSender {
|
||||
Q_OBJECT
|
||||
|
@ -152,15 +162,15 @@ private:
|
|||
|
||||
int32 _rowsLeft, _rowWidth;
|
||||
|
||||
typedef QVector<LayoutOverviewItemBase*> Items;
|
||||
typedef QVector<Overview::Layout::AbstractItem*> Items;
|
||||
Items _items;
|
||||
typedef QMap<HistoryItem*, LayoutMediaItemBase*> LayoutItems;
|
||||
typedef QMap<HistoryItem*, Overview::Layout::ItemBase*> LayoutItems;
|
||||
LayoutItems _layoutItems;
|
||||
typedef QMap<int32, LayoutOverviewDate*> LayoutDates;
|
||||
typedef QMap<int32, Overview::Layout::Date*> LayoutDates;
|
||||
LayoutDates _layoutDates;
|
||||
LayoutMediaItemBase *layoutPrepare(HistoryItem *item);
|
||||
LayoutOverviewItemBase *layoutPrepare(const QDate &date, bool month);
|
||||
int32 setLayoutItem(int32 index, LayoutOverviewItemBase *item, int32 top);
|
||||
Overview::Layout::ItemBase *layoutPrepare(HistoryItem *item);
|
||||
Overview::Layout::AbstractItem *layoutPrepare(const QDate &date, bool month);
|
||||
int32 setLayoutItem(int32 index, Overview::Layout::AbstractItem *item, int32 top);
|
||||
|
||||
FlatInput _search;
|
||||
IconedButton _cancelSearch;
|
||||
|
|
|
@ -25,7 +25,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "localstorage.h"
|
||||
|
||||
#include "passcodewidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "application.h"
|
||||
#include "ui/text.h"
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "boxes/addcontactbox.h"
|
||||
#include "application.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "playerwidget.h"
|
||||
#include "mainwidget.h"
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "stdafx.h"
|
||||
|
||||
#include "lang.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "mainwidget.h"
|
||||
#include "profilewidget.h"
|
||||
#include "boxes/addcontactbox.h"
|
||||
|
@ -30,6 +30,8 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "application.h"
|
||||
#include "boxes/contactsbox.h"
|
||||
#include "ui/filedialog.h"
|
||||
#include "apiwrap.h"
|
||||
#include "window/top_bar_widget.h"
|
||||
|
||||
ProfileInner::ProfileInner(ProfileWidget *profile, ScrollArea *scroll, PeerData *peer) : TWidget(0)
|
||||
, _profile(profile)
|
||||
|
|
|
@ -488,7 +488,7 @@ namespace {
|
|||
}
|
||||
|
||||
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) {
|
||||
Window *wnd = App::wnd();
|
||||
auto wnd = App::wnd();
|
||||
if (!wnd) return false;
|
||||
|
||||
return false;
|
||||
|
|
|
@ -40,7 +40,7 @@ namespace {
|
|||
}
|
||||
|
||||
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) {
|
||||
Window *wnd = AppClass::wnd();
|
||||
auto wnd = AppClass::wnd();
|
||||
if (!wnd) return false;
|
||||
|
||||
return wnd->psFilterNativeEvent(message);
|
||||
|
|
|
@ -18,7 +18,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "stdafx.h"
|
||||
#include "pspecific_mac_p.h"
|
||||
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "mainwidget.h"
|
||||
#include "application.h"
|
||||
|
||||
|
|
|
@ -802,7 +802,7 @@ namespace {
|
|||
}
|
||||
|
||||
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) {
|
||||
Window *wnd = App::wnd();
|
||||
auto wnd = App::wnd();
|
||||
if (!wnd) return false;
|
||||
|
||||
MSG *msg = (MSG*)message;
|
||||
|
|
|
@ -802,7 +802,7 @@ namespace {
|
|||
}
|
||||
|
||||
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) {
|
||||
Window *wnd = App::wnd();
|
||||
auto wnd = App::wnd();
|
||||
if (!wnd) return false;
|
||||
|
||||
MSG *msg = (MSG*)message;
|
||||
|
|
|
@ -41,9 +41,8 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "boxes/stickersetbox.h"
|
||||
#include "langloaderplain.h"
|
||||
#include "ui/filedialog.h"
|
||||
|
||||
#include "apiwrap.h"
|
||||
#include "autoupdater.h"
|
||||
|
||||
#include "localstorage.h"
|
||||
|
||||
Slider::Slider(QWidget *parent, const style::slider &st, int32 count, int32 sel) : QWidget(parent),
|
||||
|
@ -291,9 +290,9 @@ SettingsInner::SettingsInner(SettingsWidget *parent) : TWidget(parent)
|
|||
connect(&_downloadPathEdit, SIGNAL(clicked()), this, SLOT(onDownloadPathEdit()));
|
||||
connect(&_downloadPathClear, SIGNAL(clicked()), this, SLOT(onDownloadPathClear()));
|
||||
switch (App::wnd()->tempDirState()) {
|
||||
case Window::TempDirEmpty: _tempDirClearState = TempDirEmpty; break;
|
||||
case Window::TempDirExists: _tempDirClearState = TempDirExists; break;
|
||||
case Window::TempDirRemoving: _tempDirClearState = TempDirClearing; break;
|
||||
case MainWindow::TempDirEmpty: _tempDirClearState = TempDirEmpty; break;
|
||||
case MainWindow::TempDirExists: _tempDirClearState = TempDirExists; break;
|
||||
case MainWindow::TempDirRemoving: _tempDirClearState = TempDirClearing; break;
|
||||
}
|
||||
connect(App::wnd(), SIGNAL(tempDirCleared(int)), this, SLOT(onTempDirCleared(int)));
|
||||
connect(App::wnd(), SIGNAL(tempDirClearFailed(int)), this, SLOT(onTempDirClearFailed(int)));
|
||||
|
@ -302,9 +301,9 @@ SettingsInner::SettingsInner(SettingsWidget *parent) : TWidget(parent)
|
|||
// local storage
|
||||
connect(&_localStorageClear, SIGNAL(clicked()), this, SLOT(onLocalStorageClear()));
|
||||
switch (App::wnd()->localStorageState()) {
|
||||
case Window::TempDirEmpty: _storageClearState = TempDirEmpty; break;
|
||||
case Window::TempDirExists: _storageClearState = TempDirExists; break;
|
||||
case Window::TempDirRemoving: _storageClearState = TempDirClearing; break;
|
||||
case MainWindow::TempDirEmpty: _storageClearState = TempDirEmpty; break;
|
||||
case MainWindow::TempDirExists: _storageClearState = TempDirExists; break;
|
||||
case MainWindow::TempDirRemoving: _storageClearState = TempDirClearing; break;
|
||||
}
|
||||
|
||||
// chat background
|
||||
|
@ -1836,7 +1835,7 @@ void SettingsInner::onPhotoUpdateDone(PeerId peer) {
|
|||
update();
|
||||
}
|
||||
|
||||
SettingsWidget::SettingsWidget(Window *parent) : TWidget(parent)
|
||||
SettingsWidget::SettingsWidget(MainWindow *parent) : TWidget(parent)
|
||||
, _a_show(animation(this, &SettingsWidget::step_show))
|
||||
, _scroll(this, st::setScroll)
|
||||
, _inner(this)
|
||||
|
|
|
@ -26,7 +26,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include <QtWidgets/QWidget>
|
||||
|
||||
class Window;
|
||||
class MainWindow;
|
||||
class Settings;
|
||||
|
||||
class Slider : public QWidget {
|
||||
|
@ -313,7 +313,7 @@ class SettingsWidget : public TWidget {
|
|||
|
||||
public:
|
||||
|
||||
SettingsWidget(Window *parent);
|
||||
SettingsWidget(MainWindow *parent);
|
||||
|
||||
void paintEvent(QPaintEvent *e);
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
|
|
|
@ -19,18 +19,18 @@ Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
|
|||
Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
||||
*/
|
||||
#include "stdafx.h"
|
||||
|
||||
#include "shortcuts.h"
|
||||
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "passcodewidget.h"
|
||||
#include "mainwidget.h"
|
||||
#include "playerwidget.h"
|
||||
|
||||
namespace ShortcutCommands {
|
||||
typedef void(*Handler)();
|
||||
|
||||
void lock_telegram() {
|
||||
if (Window *w = App::wnd()) {
|
||||
if (auto w = App::wnd()) {
|
||||
if (App::passcoded()) {
|
||||
w->passcodeWidget()->onSubmit();
|
||||
} else if (cHasPasscode()) {
|
||||
|
@ -40,7 +40,7 @@ namespace ShortcutCommands {
|
|||
}
|
||||
|
||||
void minimize_telegram() {
|
||||
if (Window *w = App::wnd()) {
|
||||
if (auto w = App::wnd()) {
|
||||
if (cWorkMode() == dbiwmTrayOnly) {
|
||||
w->minimizeToTray();
|
||||
} else {
|
||||
|
@ -51,8 +51,8 @@ namespace ShortcutCommands {
|
|||
|
||||
void close_telegram() {
|
||||
if (!Ui::hideWindowNoQuit()) {
|
||||
if (Window *w = App::wnd()) {
|
||||
App::wnd()->close();
|
||||
if (auto w = App::wnd()) {
|
||||
w->close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include <QtWidgets/QtWidgets>
|
||||
#include <QtNetwork/QtNetwork>
|
||||
|
||||
#include "basic_types.h"
|
||||
#include "core/basic_types.h"
|
||||
#include "config.h"
|
||||
|
||||
#include "mtproto/facade.h"
|
||||
|
|
|
@ -28,11 +28,10 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "mainwidget.h"
|
||||
#include "application.h"
|
||||
#include "fileuploader.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "ui/filedialog.h"
|
||||
|
||||
#include "apiwrap.h"
|
||||
#include "boxes/confirmbox.h"
|
||||
|
||||
#include "audio.h"
|
||||
#include "localstorage.h"
|
||||
|
||||
|
|
|
@ -1312,3 +1312,63 @@ struct MessageCursor {
|
|||
inline bool operator==(const MessageCursor &a, const MessageCursor &b) {
|
||||
return (a.position == b.position) && (a.anchor == b.anchor) && (a.scroll == b.scroll);
|
||||
}
|
||||
|
||||
struct LocationCoords {
|
||||
LocationCoords() : lat(0), lon(0) {
|
||||
}
|
||||
LocationCoords(float64 lat, float64 lon) : lat(lat), lon(lon) {
|
||||
}
|
||||
LocationCoords(const MTPDgeoPoint &point) : lat(point.vlat.v), lon(point.vlong.v) {
|
||||
}
|
||||
float64 lat, lon;
|
||||
};
|
||||
inline bool operator==(const LocationCoords &a, const LocationCoords &b) {
|
||||
return (a.lat == b.lat) && (a.lon == b.lon);
|
||||
}
|
||||
inline bool operator<(const LocationCoords &a, const LocationCoords &b) {
|
||||
return (a.lat < b.lat) || ((a.lat == b.lat) && (a.lon < b.lon));
|
||||
}
|
||||
inline uint qHash(const LocationCoords &t, uint seed = 0) {
|
||||
return qHash(QtPrivate::QHashCombine().operator()(qHash(t.lat), t.lon), seed);
|
||||
}
|
||||
|
||||
struct LocationData {
|
||||
LocationData(const LocationCoords &coords) : coords(coords), loading(false) {
|
||||
}
|
||||
|
||||
LocationCoords coords;
|
||||
ImagePtr thumb;
|
||||
bool loading;
|
||||
|
||||
void load();
|
||||
};
|
||||
|
||||
class LocationClickHandler : public ClickHandler {
|
||||
public:
|
||||
LocationClickHandler(const LocationCoords &coords) : _coords(coords) {
|
||||
setup();
|
||||
}
|
||||
QString copyToClipboardContextItem() const override;
|
||||
|
||||
void copyToClipboard() const override {
|
||||
if (!_text.isEmpty()) {
|
||||
QApplication::clipboard()->setText(_text);
|
||||
}
|
||||
}
|
||||
|
||||
QString tooltip() const override {
|
||||
return QString();
|
||||
}
|
||||
|
||||
QString text() const override {
|
||||
return _text;
|
||||
}
|
||||
void onClick(Qt::MouseButton button) const override;
|
||||
|
||||
private:
|
||||
|
||||
void setup();
|
||||
LocationCoords _coords;
|
||||
QString _text;
|
||||
|
||||
};
|
||||
|
|
|
@ -111,7 +111,7 @@ void SysBtn::step_color(float64 ms, bool timer) {
|
|||
if (timer) update();
|
||||
}
|
||||
|
||||
MinimizeBtn::MinimizeBtn(QWidget *parent, Window *window) : SysBtn(parent, st::sysMin), wnd(window) {
|
||||
MinimizeBtn::MinimizeBtn(QWidget *parent, MainWindow *window) : SysBtn(parent, st::sysMin), wnd(window) {
|
||||
connect(this, SIGNAL(clicked()), this, SLOT(onClick()));
|
||||
}
|
||||
|
||||
|
@ -119,7 +119,7 @@ void MinimizeBtn::onClick() {
|
|||
wnd->setWindowState(Qt::WindowMinimized);
|
||||
}
|
||||
|
||||
MaximizeBtn::MaximizeBtn(QWidget *parent, Window *window) : SysBtn(parent, st::sysMax), wnd(window) {
|
||||
MaximizeBtn::MaximizeBtn(QWidget *parent, MainWindow *window) : SysBtn(parent, st::sysMax), wnd(window) {
|
||||
connect(this, SIGNAL(clicked()), this, SLOT(onClick()));
|
||||
}
|
||||
|
||||
|
@ -127,7 +127,7 @@ void MaximizeBtn::onClick() {
|
|||
wnd->setWindowState(Qt::WindowMaximized);
|
||||
}
|
||||
|
||||
RestoreBtn::RestoreBtn(QWidget *parent, Window *window) : SysBtn(parent, st::sysRes), wnd(window) {
|
||||
RestoreBtn::RestoreBtn(QWidget *parent, MainWindow *window) : SysBtn(parent, st::sysRes), wnd(window) {
|
||||
connect(this, SIGNAL(clicked()), this, SLOT(onClick()));
|
||||
}
|
||||
|
||||
|
@ -135,7 +135,7 @@ void RestoreBtn::onClick() {
|
|||
wnd->setWindowState(Qt::WindowNoState);
|
||||
}
|
||||
|
||||
CloseBtn::CloseBtn(QWidget *parent, Window *window) : SysBtn(parent, st::sysCls), wnd(window) {
|
||||
CloseBtn::CloseBtn(QWidget *parent, MainWindow *window) : SysBtn(parent, st::sysCls), wnd(window) {
|
||||
connect(this, SIGNAL(clicked()), this, SLOT(onClick()));
|
||||
}
|
||||
|
||||
|
@ -143,7 +143,7 @@ void CloseBtn::onClick() {
|
|||
wnd->close();
|
||||
}
|
||||
|
||||
UpdateBtn::UpdateBtn(QWidget *parent, Window *window, const QString &text) : SysBtn(parent, st::sysUpd, text), wnd(window) {
|
||||
UpdateBtn::UpdateBtn(QWidget *parent, MainWindow *window, const QString &text) : SysBtn(parent, st::sysUpd, text), wnd(window) {
|
||||
connect(this, SIGNAL(clicked()), this, SLOT(onClick()));
|
||||
}
|
||||
|
||||
|
@ -161,7 +161,7 @@ void UpdateBtn::onClick() {
|
|||
App::quit();
|
||||
}
|
||||
|
||||
LockBtn::LockBtn(QWidget *parent, Window *window) : SysBtn(parent, st::sysLock), wnd(window) {
|
||||
LockBtn::LockBtn(QWidget *parent, MainWindow *window) : SysBtn(parent, st::sysLock), wnd(window) {
|
||||
connect(this, SIGNAL(clicked()), this, SLOT(onClick()));
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "ui/animation.h"
|
||||
#include "ui/button.h"
|
||||
|
||||
class Window;
|
||||
class MainWindow;
|
||||
|
||||
class SysBtn : public Button {
|
||||
Q_OBJECT
|
||||
|
@ -62,7 +62,7 @@ class MinimizeBtn : public SysBtn {
|
|||
|
||||
public:
|
||||
|
||||
MinimizeBtn(QWidget *parent, Window *window);
|
||||
MinimizeBtn(QWidget *parent, MainWindow *window);
|
||||
|
||||
public slots:
|
||||
|
||||
|
@ -70,7 +70,7 @@ public slots:
|
|||
|
||||
private:
|
||||
|
||||
Window *wnd;
|
||||
MainWindow *wnd;
|
||||
};
|
||||
|
||||
class MaximizeBtn : public SysBtn {
|
||||
|
@ -78,7 +78,7 @@ class MaximizeBtn : public SysBtn {
|
|||
|
||||
public:
|
||||
|
||||
MaximizeBtn(QWidget *parent, Window *window);
|
||||
MaximizeBtn(QWidget *parent, MainWindow *window);
|
||||
|
||||
public slots:
|
||||
|
||||
|
@ -86,7 +86,7 @@ public slots:
|
|||
|
||||
private:
|
||||
|
||||
Window *wnd;
|
||||
MainWindow *wnd;
|
||||
};
|
||||
|
||||
class RestoreBtn : public SysBtn {
|
||||
|
@ -94,7 +94,7 @@ class RestoreBtn : public SysBtn {
|
|||
|
||||
public:
|
||||
|
||||
RestoreBtn(QWidget *parent, Window *window);
|
||||
RestoreBtn(QWidget *parent, MainWindow *window);
|
||||
|
||||
public slots:
|
||||
|
||||
|
@ -102,7 +102,7 @@ public slots:
|
|||
|
||||
private:
|
||||
|
||||
Window *wnd;
|
||||
MainWindow *wnd;
|
||||
};
|
||||
|
||||
class CloseBtn : public SysBtn {
|
||||
|
@ -110,7 +110,7 @@ class CloseBtn : public SysBtn {
|
|||
|
||||
public:
|
||||
|
||||
CloseBtn(QWidget *parent, Window *window);
|
||||
CloseBtn(QWidget *parent, MainWindow *window);
|
||||
|
||||
public slots:
|
||||
|
||||
|
@ -118,7 +118,7 @@ public slots:
|
|||
|
||||
private:
|
||||
|
||||
Window *wnd;
|
||||
MainWindow *wnd;
|
||||
};
|
||||
|
||||
class UpdateBtn : public SysBtn {
|
||||
|
@ -126,7 +126,7 @@ class UpdateBtn : public SysBtn {
|
|||
|
||||
public:
|
||||
|
||||
UpdateBtn(QWidget *parent, Window *window, const QString &text = QString());
|
||||
UpdateBtn(QWidget *parent, MainWindow *window, const QString &text = QString());
|
||||
|
||||
public slots:
|
||||
|
||||
|
@ -134,7 +134,7 @@ public slots:
|
|||
|
||||
private:
|
||||
|
||||
Window *wnd;
|
||||
MainWindow *wnd;
|
||||
};
|
||||
|
||||
class LockBtn : public SysBtn {
|
||||
|
@ -142,7 +142,7 @@ class LockBtn : public SysBtn {
|
|||
|
||||
public:
|
||||
|
||||
LockBtn(QWidget *parent, Window *window);
|
||||
LockBtn(QWidget *parent, MainWindow *window);
|
||||
|
||||
public slots:
|
||||
|
||||
|
@ -150,5 +150,5 @@ public slots:
|
|||
|
||||
private:
|
||||
|
||||
Window *wnd;
|
||||
MainWindow *wnd;
|
||||
};
|
||||
|
|
|
@ -24,7 +24,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "title.h"
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "application.h"
|
||||
#include "boxes/contactsbox.h"
|
||||
#include "boxes/aboutbox.h"
|
||||
|
@ -49,7 +49,7 @@ void TitleHider::setLevel(float64 level) {
|
|||
update();
|
||||
}
|
||||
|
||||
TitleWidget::TitleWidget(Window *window) : TWidget(window)
|
||||
TitleWidget::TitleWidget(MainWindow *window) : TWidget(window)
|
||||
, wnd(window)
|
||||
, hideLevel(0)
|
||||
, hider(0)
|
||||
|
|
|
@ -23,7 +23,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include <QtWidgets/QWidget>
|
||||
#include "sysbuttons.h"
|
||||
|
||||
class Window;
|
||||
class MainWindow;
|
||||
|
||||
class TitleHider : public QWidget {
|
||||
public:
|
||||
|
@ -44,7 +44,7 @@ class TitleWidget : public TWidget {
|
|||
|
||||
public:
|
||||
|
||||
TitleWidget(Window *parent);
|
||||
TitleWidget(MainWindow *parent);
|
||||
void paintEvent(QPaintEvent *e);
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
|
||||
|
@ -78,7 +78,7 @@ signals:
|
|||
|
||||
private:
|
||||
|
||||
Window *wnd;
|
||||
MainWindow *wnd;
|
||||
|
||||
style::color statusColor;
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ extern "C" {
|
|||
}
|
||||
|
||||
#include "mainwidget.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
namespace {
|
||||
AnimationManager *_manager = 0;
|
||||
|
|
|
@ -20,7 +20,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "basic_types.h"
|
||||
#include "core/basic_types.h"
|
||||
#include <QtCore/QTimer>
|
||||
#include <QtGui/QColor>
|
||||
|
||||
|
|
|
@ -21,6 +21,10 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "stdafx.h"
|
||||
#include "ui/buttons/peer_avatar_button.h"
|
||||
|
||||
#include "structs.h"
|
||||
|
||||
namespace Ui {
|
||||
|
||||
PeerAvatarButton::PeerAvatarButton(QWidget *parent, PeerData *peer, const style::PeerAvatarButton &st) : Button(parent)
|
||||
, _peer(peer)
|
||||
, _st(st) {
|
||||
|
@ -33,3 +37,5 @@ void PeerAvatarButton::paintEvent(QPaintEvent *e) {
|
|||
_peer->paintUserpic(p, _st.photoSize, (_st.size - _st.photoSize) / 2, (_st.size - _st.photoSize) / 2);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Ui
|
||||
|
|
|
@ -22,7 +22,10 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "ui/button.h"
|
||||
#include "ui/style.h"
|
||||
#include "structs.h"
|
||||
|
||||
class PeerData;
|
||||
|
||||
namespace Ui {
|
||||
|
||||
class PeerAvatarButton : public Button {
|
||||
public:
|
||||
|
@ -38,3 +41,5 @@ private:
|
|||
const style::PeerAvatarButton &_st;
|
||||
|
||||
};
|
||||
|
||||
} // namespace Ui
|
||||
|
|
|
@ -22,7 +22,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "ui/style.h"
|
||||
|
||||
#include "flatinput.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
#include "countryinput.h"
|
||||
|
||||
#include "lang.h"
|
||||
|
|
|
@ -22,7 +22,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "flattextarea.h"
|
||||
|
||||
#include "ui/style.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
FlatTextarea::FlatTextarea(QWidget *parent, const style::flatTextarea &st, const QString &pholder, const QString &v) : QTextEdit(parent)
|
||||
, _oldtext(v)
|
||||
|
|
|
@ -21,13 +21,13 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "stdafx.h"
|
||||
#include "text.h"
|
||||
|
||||
#include "lang.h"
|
||||
#include <private/qharfbuzz_p.h>
|
||||
|
||||
#include "core/click_handler_types.h"
|
||||
#include "lang.h"
|
||||
#include "pspecific.h"
|
||||
#include "boxes/confirmbox.h"
|
||||
#include "window.h"
|
||||
|
||||
#include <private/qharfbuzz_p.h>
|
||||
#include "mainwindow.h"
|
||||
|
||||
namespace {
|
||||
|
||||
|
@ -57,47 +57,6 @@ namespace {
|
|||
}
|
||||
}
|
||||
|
||||
ClickHandlerHost::~ClickHandlerHost() {
|
||||
ClickHandler::hostDestroyed(this);
|
||||
}
|
||||
|
||||
NeverFreedPointer<ClickHandlerPtr> ClickHandler::_active;
|
||||
NeverFreedPointer<ClickHandlerPtr> ClickHandler::_pressed;
|
||||
ClickHandlerHost *ClickHandler::_activeHost = nullptr;
|
||||
ClickHandlerHost *ClickHandler::_pressedHost = nullptr;
|
||||
|
||||
bool ClickHandler::setActive(const ClickHandlerPtr &p, ClickHandlerHost *host) {
|
||||
if ((_active && (*_active == p)) || (!_active && !p)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// emit clickHandlerActiveChanged only when there is no
|
||||
// other pressed click handler currently, if there is
|
||||
// this method will be called when it is unpressed
|
||||
if (_active && *_active) {
|
||||
bool emitClickHandlerActiveChanged = (!_pressed || !*_pressed || *_pressed == *_active);
|
||||
ClickHandlerPtr wasactive = *_active;
|
||||
(*_active).clear();
|
||||
if (_activeHost) {
|
||||
if (emitClickHandlerActiveChanged) {
|
||||
_activeHost->clickHandlerActiveChanged(wasactive, false);
|
||||
}
|
||||
_activeHost = nullptr;
|
||||
}
|
||||
}
|
||||
if (p) {
|
||||
_active.makeIfNull();
|
||||
*_active = p;
|
||||
if ((_activeHost = host)) {
|
||||
bool emitClickHandlerActiveChanged = (!_pressed || !*_pressed || *_pressed == *_active);
|
||||
if (emitClickHandlerActiveChanged) {
|
||||
_activeHost->clickHandlerActiveChanged(*_active, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
const QRegularExpression &reDomain() {
|
||||
return _reDomain;
|
||||
}
|
||||
|
@ -954,113 +913,6 @@ namespace {
|
|||
}
|
||||
}
|
||||
|
||||
QString UrlClickHandler::copyToClipboardContextItem() const {
|
||||
return lang(isEmail() ? lng_context_copy_email : lng_context_copy_link);
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
QString tryConvertUrlToLocal(const QString &url) {
|
||||
QRegularExpressionMatch telegramMeUser = QRegularExpression(qsl("^https?://telegram\\.me/([a-zA-Z0-9\\.\\_]+)(/?\\?|/?$|/(\\d+)/?(?:\\?|$))"), QRegularExpression::CaseInsensitiveOption).match(url);
|
||||
QRegularExpressionMatch telegramMeGroup = QRegularExpression(qsl("^https?://telegram\\.me/joinchat/([a-zA-Z0-9\\.\\_\\-]+)(\\?|$)"), QRegularExpression::CaseInsensitiveOption).match(url);
|
||||
QRegularExpressionMatch telegramMeStickers = QRegularExpression(qsl("^https?://telegram\\.me/addstickers/([a-zA-Z0-9\\.\\_]+)(\\?|$)"), QRegularExpression::CaseInsensitiveOption).match(url);
|
||||
QRegularExpressionMatch telegramMeShareUrl = QRegularExpression(qsl("^https?://telegram\\.me/share/url\\?(.+)$"), QRegularExpression::CaseInsensitiveOption).match(url);
|
||||
if (telegramMeGroup.hasMatch()) {
|
||||
return qsl("tg://join?invite=") + myUrlEncode(telegramMeGroup.captured(1));
|
||||
} else if (telegramMeStickers.hasMatch()) {
|
||||
return qsl("tg://addstickers?set=") + myUrlEncode(telegramMeStickers.captured(1));
|
||||
} else if (telegramMeShareUrl.hasMatch()) {
|
||||
return qsl("tg://msg_url?") + telegramMeShareUrl.captured(1);
|
||||
} else if (telegramMeUser.hasMatch()) {
|
||||
QString params = url.mid(telegramMeUser.captured(0).size()), postParam;
|
||||
if (QRegularExpression(qsl("^/\\d+/?(?:\\?|$)")).match(telegramMeUser.captured(2)).hasMatch()) {
|
||||
postParam = qsl("&post=") + telegramMeUser.captured(3);
|
||||
}
|
||||
return qsl("tg://resolve/?domain=") + myUrlEncode(telegramMeUser.captured(1)) + postParam + (params.isEmpty() ? QString() : '&' + params);
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
void UrlClickHandler::doOpen(QString url) {
|
||||
PopupTooltip::Hide();
|
||||
|
||||
if (isEmail(url)) {
|
||||
QUrl u(qstr("mailto:") + url);
|
||||
if (!QDesktopServices::openUrl(u)) {
|
||||
psOpenFile(u.toString(QUrl::FullyEncoded), true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
url = tryConvertUrlToLocal(url);
|
||||
|
||||
if (url.startsWith(qstr("tg://"), Qt::CaseInsensitive)) {
|
||||
App::openLocalUrl(url);
|
||||
} else {
|
||||
QDesktopServices::openUrl(url);
|
||||
}
|
||||
}
|
||||
|
||||
void HiddenUrlClickHandler::onClick(Qt::MouseButton button) const {
|
||||
QString u = url();
|
||||
|
||||
u = tryConvertUrlToLocal(u);
|
||||
|
||||
if (u.startsWith(qstr("tg://"))) {
|
||||
App::openLocalUrl(u);
|
||||
} else {
|
||||
Ui::showLayer(new ConfirmLinkBox(u));
|
||||
}
|
||||
}
|
||||
|
||||
QString LocationClickHandler::copyToClipboardContextItem() const {
|
||||
return lang(lng_context_copy_link);
|
||||
}
|
||||
|
||||
void LocationClickHandler::onClick(Qt::MouseButton button) const {
|
||||
if (!psLaunchMaps(_coords)) {
|
||||
QDesktopServices::openUrl(_text);
|
||||
}
|
||||
}
|
||||
|
||||
void LocationClickHandler::setup() {
|
||||
QString latlon(qsl("%1,%2").arg(_coords.lat).arg(_coords.lon));
|
||||
_text = qsl("https://maps.google.com/maps?q=") + latlon + qsl("&ll=") + latlon + qsl("&z=16");
|
||||
}
|
||||
|
||||
QString MentionClickHandler::copyToClipboardContextItem() const {
|
||||
return lang(lng_context_copy_mention);
|
||||
}
|
||||
|
||||
void MentionClickHandler::onClick(Qt::MouseButton button) const {
|
||||
if (button == Qt::LeftButton || button == Qt::MiddleButton) {
|
||||
App::openPeerByName(_tag.mid(1), ShowAtProfileMsgId);
|
||||
}
|
||||
}
|
||||
|
||||
QString HashtagClickHandler::copyToClipboardContextItem() const {
|
||||
return lang(lng_context_copy_hashtag);
|
||||
}
|
||||
|
||||
void HashtagClickHandler::onClick(Qt::MouseButton button) const {
|
||||
if (button == Qt::LeftButton || button == Qt::MiddleButton) {
|
||||
App::searchByHashtag(_tag, Ui::getPeerForMouseAction());
|
||||
}
|
||||
}
|
||||
|
||||
void BotCommandClickHandler::onClick(Qt::MouseButton button) const {
|
||||
if (button == Qt::LeftButton || button == Qt::MiddleButton) {
|
||||
if (PeerData *peer = Ui::getPeerForMouseAction()) {
|
||||
Ui::showPeerHistory(peer, ShowAtTheEndMsgId);
|
||||
App::sendBotCommand(peer, _cmd);
|
||||
} else {
|
||||
App::insertBotCommand(_cmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class TextPainter {
|
||||
public:
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "core/click_handler.h"
|
||||
|
||||
enum EntityInTextType {
|
||||
EntityInTextUrl,
|
||||
EntityInTextCustomUrl,
|
||||
|
@ -34,10 +36,10 @@ enum EntityInTextType {
|
|||
EntityInTextPre, // block
|
||||
};
|
||||
struct EntityInText {
|
||||
EntityInText(EntityInTextType type, int32 offset, int32 length, const QString &text = QString()) : type(type), offset(offset), length(length), text(text) {
|
||||
EntityInText(EntityInTextType type, int offset, int length, const QString &text = QString()) : type(type), offset(offset), length(length), text(text) {
|
||||
}
|
||||
EntityInTextType type;
|
||||
int32 offset, length;
|
||||
int offset, length;
|
||||
QString text;
|
||||
};
|
||||
typedef QList<EntityInText> EntitiesInText;
|
||||
|
@ -309,344 +311,6 @@ private:
|
|||
friend class TextPainter;
|
||||
};
|
||||
|
||||
class ClickHandler;
|
||||
using ClickHandlerPtr = QSharedPointer<ClickHandler>;
|
||||
|
||||
class ClickHandlerHost {
|
||||
protected:
|
||||
|
||||
virtual void clickHandlerActiveChanged(const ClickHandlerPtr &action, bool active) {
|
||||
}
|
||||
virtual void clickHandlerPressedChanged(const ClickHandlerPtr &action, bool pressed) {
|
||||
}
|
||||
virtual ~ClickHandlerHost() = 0;
|
||||
friend class ClickHandler;
|
||||
|
||||
};
|
||||
|
||||
class ClickHandler {
|
||||
public:
|
||||
|
||||
virtual void onClick(Qt::MouseButton) const = 0;
|
||||
|
||||
virtual QString tooltip() const {
|
||||
return QString();
|
||||
}
|
||||
virtual void copyToClipboard() const {
|
||||
}
|
||||
virtual QString copyToClipboardContextItem() const {
|
||||
return QString();
|
||||
}
|
||||
virtual QString text() const {
|
||||
return QString();
|
||||
}
|
||||
virtual QString dragText() const {
|
||||
return text();
|
||||
}
|
||||
|
||||
virtual ~ClickHandler() {
|
||||
}
|
||||
|
||||
// this method should be called on mouse over a click handler
|
||||
// it returns true if something was changed or false otherwise
|
||||
static bool setActive(const ClickHandlerPtr &p, ClickHandlerHost *host = nullptr);
|
||||
|
||||
// this method should be called when mouse leaves the host
|
||||
// it returns true if something was changed or false otherwise
|
||||
static bool clearActive(ClickHandlerHost *host = nullptr) {
|
||||
if (host && _activeHost != host) {
|
||||
return false;
|
||||
}
|
||||
return setActive(ClickHandlerPtr(), host);
|
||||
}
|
||||
|
||||
// this method should be called on mouse pressed
|
||||
static void pressed() {
|
||||
unpressed();
|
||||
if (!_active || !*_active) {
|
||||
return;
|
||||
}
|
||||
_pressed.makeIfNull();
|
||||
*_pressed = *_active;
|
||||
if ((_pressedHost = _activeHost)) {
|
||||
_pressedHost->clickHandlerPressedChanged(*_pressed, true);
|
||||
}
|
||||
}
|
||||
|
||||
// this method should be called on mouse released
|
||||
// the activated click handler is returned
|
||||
static ClickHandlerPtr unpressed() {
|
||||
if (_pressed && *_pressed) {
|
||||
bool activated = (_active && *_active == *_pressed);
|
||||
ClickHandlerPtr waspressed = *_pressed;
|
||||
(*_pressed).clear();
|
||||
if (_pressedHost) {
|
||||
_pressedHost->clickHandlerPressedChanged(waspressed, false);
|
||||
_pressedHost = nullptr;
|
||||
}
|
||||
|
||||
if (activated) {
|
||||
return *_active;
|
||||
} else if (_active && *_active && _activeHost) {
|
||||
// emit clickHandlerActiveChanged for current active
|
||||
// click handler, which we didn't emit while we has
|
||||
// a pressed click handler
|
||||
_activeHost->clickHandlerActiveChanged(*_active, true);
|
||||
}
|
||||
}
|
||||
return ClickHandlerPtr();
|
||||
}
|
||||
|
||||
static ClickHandlerPtr getActive() {
|
||||
return _active ? *_active : ClickHandlerPtr();
|
||||
}
|
||||
static ClickHandlerPtr getPressed() {
|
||||
return _pressed ? *_pressed : ClickHandlerPtr();
|
||||
}
|
||||
|
||||
static bool showAsActive(const ClickHandlerPtr &p) {
|
||||
if (!p || !_active || p != *_active) {
|
||||
return false;
|
||||
}
|
||||
return !_pressed || !*_pressed || (p == *_pressed);
|
||||
}
|
||||
static bool showAsPressed(const ClickHandlerPtr &p) {
|
||||
if (!p || !_active || p != *_active) {
|
||||
return false;
|
||||
}
|
||||
return _pressed && (p == *_pressed);
|
||||
}
|
||||
static void hostDestroyed(ClickHandlerHost *host) {
|
||||
if (_activeHost == host) {
|
||||
_activeHost = nullptr;
|
||||
} else if (_pressedHost == host) {
|
||||
_pressedHost = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
static NeverFreedPointer<ClickHandlerPtr> _active;
|
||||
static NeverFreedPointer<ClickHandlerPtr> _pressed;
|
||||
static ClickHandlerHost *_activeHost;
|
||||
static ClickHandlerHost *_pressedHost;
|
||||
|
||||
};
|
||||
|
||||
class LeftButtonClickHandler : public ClickHandler {
|
||||
public:
|
||||
void onClick(Qt::MouseButton button) const override final {
|
||||
if (button != Qt::LeftButton) return;
|
||||
onClickImpl();
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual void onClickImpl() const = 0;
|
||||
|
||||
};
|
||||
|
||||
class TextClickHandler : public ClickHandler {
|
||||
public:
|
||||
|
||||
TextClickHandler(bool fullDisplayed = true) : _fullDisplayed(fullDisplayed) {
|
||||
}
|
||||
|
||||
void copyToClipboard() const override {
|
||||
QString u = url();
|
||||
if (!u.isEmpty()) {
|
||||
QApplication::clipboard()->setText(u);
|
||||
}
|
||||
}
|
||||
|
||||
QString tooltip() const override {
|
||||
return _fullDisplayed ? QString() : readable();
|
||||
}
|
||||
|
||||
void setFullDisplayed(bool full) {
|
||||
_fullDisplayed = full;
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual QString url() const = 0;
|
||||
virtual QString readable() const {
|
||||
return url();
|
||||
}
|
||||
|
||||
bool _fullDisplayed;
|
||||
|
||||
};
|
||||
|
||||
class UrlClickHandler : public TextClickHandler {
|
||||
public:
|
||||
UrlClickHandler(const QString &url, bool fullDisplayed = true) : TextClickHandler(fullDisplayed), _url(url) {
|
||||
if (isEmail()) {
|
||||
_readable = _url;
|
||||
} else {
|
||||
QUrl u(_url), good(u.isValid() ? u.toEncoded() : QString());
|
||||
_readable = good.isValid() ? good.toDisplayString() : _url;
|
||||
}
|
||||
}
|
||||
QString copyToClipboardContextItem() const override;
|
||||
|
||||
QString text() const override {
|
||||
return _url;
|
||||
}
|
||||
QString dragText() const override {
|
||||
return url();
|
||||
}
|
||||
|
||||
static void doOpen(QString url);
|
||||
void onClick(Qt::MouseButton button) const override {
|
||||
if (button == Qt::LeftButton || button == Qt::MiddleButton) {
|
||||
doOpen(url());
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
QString url() const override {
|
||||
if (isEmail()) {
|
||||
return _url;
|
||||
}
|
||||
|
||||
QUrl u(_url), good(u.isValid() ? u.toEncoded() : QString());
|
||||
QString result(good.isValid() ? QString::fromUtf8(good.toEncoded()) : _url);
|
||||
|
||||
if (!QRegularExpression(qsl("^[a-zA-Z]+:")).match(result).hasMatch()) { // no protocol
|
||||
return qsl("http://") + result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
QString readable() const override {
|
||||
return _readable;
|
||||
}
|
||||
|
||||
private:
|
||||
static bool isEmail(const QString &url) {
|
||||
int at = url.indexOf('@'), slash = url.indexOf('/');
|
||||
return ((at > 0) && (slash < 0 || slash > at));
|
||||
}
|
||||
bool isEmail() const {
|
||||
return isEmail(_url);
|
||||
}
|
||||
|
||||
QString _url, _readable;
|
||||
|
||||
};
|
||||
typedef QSharedPointer<TextClickHandler> TextClickHandlerPtr;
|
||||
|
||||
class HiddenUrlClickHandler : public UrlClickHandler {
|
||||
public:
|
||||
HiddenUrlClickHandler(QString url) : UrlClickHandler(url, false) {
|
||||
}
|
||||
void onClick(Qt::MouseButton button) const override;
|
||||
|
||||
};
|
||||
|
||||
struct LocationCoords {
|
||||
LocationCoords() : lat(0), lon(0) {
|
||||
}
|
||||
LocationCoords(float64 lat, float64 lon) : lat(lat), lon(lon) {
|
||||
}
|
||||
LocationCoords(const MTPDgeoPoint &point) : lat(point.vlat.v), lon(point.vlong.v) {
|
||||
}
|
||||
float64 lat, lon;
|
||||
};
|
||||
inline bool operator==(const LocationCoords &a, const LocationCoords &b) {
|
||||
return (a.lat == b.lat) && (a.lon == b.lon);
|
||||
}
|
||||
inline bool operator<(const LocationCoords &a, const LocationCoords &b) {
|
||||
return (a.lat < b.lat) || ((a.lat == b.lat) && (a.lon < b.lon));
|
||||
}
|
||||
inline uint qHash(const LocationCoords &t, uint seed = 0) {
|
||||
return qHash(QtPrivate::QHashCombine().operator()(qHash(t.lat), t.lon), seed);
|
||||
}
|
||||
|
||||
class LocationClickHandler : public TextClickHandler {
|
||||
public:
|
||||
LocationClickHandler(const LocationCoords &coords) : _coords(coords) {
|
||||
setup();
|
||||
}
|
||||
QString copyToClipboardContextItem() const override;
|
||||
|
||||
QString text() const override {
|
||||
return _text;
|
||||
}
|
||||
void onClick(Qt::MouseButton button) const override;
|
||||
|
||||
protected:
|
||||
QString url() const override {
|
||||
return _text;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
void setup();
|
||||
LocationCoords _coords;
|
||||
QString _text;
|
||||
|
||||
};
|
||||
|
||||
class MentionClickHandler : public TextClickHandler {
|
||||
public:
|
||||
MentionClickHandler(const QString &tag) : _tag(tag) {
|
||||
}
|
||||
QString copyToClipboardContextItem() const override;
|
||||
|
||||
QString text() const override {
|
||||
return _tag;
|
||||
}
|
||||
void onClick(Qt::MouseButton button) const override;
|
||||
|
||||
protected:
|
||||
QString url() const override {
|
||||
return _tag;
|
||||
}
|
||||
|
||||
private:
|
||||
QString _tag;
|
||||
|
||||
};
|
||||
|
||||
class HashtagClickHandler : public TextClickHandler {
|
||||
public:
|
||||
HashtagClickHandler(const QString &tag) : _tag(tag) {
|
||||
}
|
||||
QString copyToClipboardContextItem() const override;
|
||||
|
||||
QString text() const override {
|
||||
return _tag;
|
||||
}
|
||||
void onClick(Qt::MouseButton button) const override;
|
||||
|
||||
protected:
|
||||
QString url() const override {
|
||||
return _tag;
|
||||
}
|
||||
|
||||
private:
|
||||
QString _tag;
|
||||
|
||||
};
|
||||
|
||||
class BotCommandClickHandler : public TextClickHandler {
|
||||
public:
|
||||
BotCommandClickHandler(const QString &cmd) : _cmd(cmd) {
|
||||
}
|
||||
QString text() const override {
|
||||
return _cmd;
|
||||
}
|
||||
void onClick(Qt::MouseButton button) const override;
|
||||
|
||||
protected:
|
||||
QString url() const override {
|
||||
return _cmd;
|
||||
}
|
||||
|
||||
private:
|
||||
QString _cmd;
|
||||
|
||||
};
|
||||
|
||||
static const QChar TextCommand(0x0010);
|
||||
enum TextCommands {
|
||||
TextCommandBold = 0x01,
|
||||
|
|
|
@ -23,7 +23,6 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
#include "ui/toast/toast_manager.h"
|
||||
#include "ui/toast/toast_widget.h"
|
||||
#include "window.h"
|
||||
|
||||
namespace Ui {
|
||||
namespace Toast {
|
||||
|
@ -35,12 +34,10 @@ Instance::Instance(const Config &config, QWidget *widgetParent, const Private &)
|
|||
_a_fade.start();
|
||||
}
|
||||
|
||||
void Show(const Config &config) {
|
||||
if (internal::Manager *manager = internal::Manager::instance()) {
|
||||
if (Window *window = App::wnd()) {
|
||||
auto toast = std_::make_unique<Instance>(config, window, Instance::Private());
|
||||
manager->addToast(std_::move(toast));
|
||||
}
|
||||
void Show(QWidget *parent, const Config &config) {
|
||||
if (auto manager = internal::Manager::instance(parent)) {
|
||||
auto toast = std_::make_unique<Instance>(config, parent, Instance::Private());
|
||||
manager->addToast(std_::move(toast));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ struct Config {
|
|||
QString text;
|
||||
int durationMs = DefaultDuration;
|
||||
};
|
||||
void Show(const Config &config);
|
||||
void Show(QWidget *parent, const Config &config);
|
||||
|
||||
class Instance {
|
||||
struct Private {
|
||||
|
@ -57,7 +57,7 @@ private:
|
|||
|
||||
// ToastManager should reset _widget pointer if _widget is destroyed.
|
||||
friend class internal::Manager;
|
||||
friend void Show(const Config &config);
|
||||
friend void Show(QWidget *parent, const Config &config);
|
||||
std_::unique_ptr<internal::Widget> _widget;
|
||||
|
||||
};
|
||||
|
|
|
@ -21,30 +21,31 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "stdafx.h"
|
||||
#include "ui/toast/toast_manager.h"
|
||||
|
||||
#include "application.h"
|
||||
#include "ui/toast/toast_widget.h"
|
||||
#include "window.h"
|
||||
|
||||
namespace Ui {
|
||||
namespace Toast {
|
||||
namespace internal {
|
||||
|
||||
Manager *Manager::_instance = nullptr;
|
||||
namespace {
|
||||
|
||||
Manager::Manager(QObject *parent) : QObject(parent) {
|
||||
t_assert(_instance == nullptr);
|
||||
_instance = this;
|
||||
NeverFreedPointer<QMap<QObject*, Manager*>> _managers;
|
||||
|
||||
} // namespace
|
||||
|
||||
Manager::Manager(QWidget *parent) : QObject(parent) {
|
||||
connect(&_hideTimer, SIGNAL(timeout()), this, SLOT(onHideTimeout()));
|
||||
connect(parent, SIGNAL(resized()), this, SLOT(onParentResized()));
|
||||
}
|
||||
|
||||
Manager *Manager::instance() {
|
||||
if (!_instance) {
|
||||
if (Window *w = App::wnd()) {
|
||||
_instance = new Manager(w);
|
||||
}
|
||||
Manager *Manager::instance(QWidget *parent) {
|
||||
_managers.makeIfNull();
|
||||
auto i = _managers->constFind(parent);
|
||||
if (i == _managers->cend()) {
|
||||
i = _managers->insert(parent, new Manager(parent));
|
||||
}
|
||||
return _instance;
|
||||
return i.value();
|
||||
}
|
||||
|
||||
void Manager::addToast(std_::unique_ptr<Instance> &&toast) {
|
||||
|
@ -115,7 +116,7 @@ void Manager::startNextHideTimer() {
|
|||
}
|
||||
|
||||
Manager::~Manager() {
|
||||
_instance = nullptr;
|
||||
_managers->remove(parent());
|
||||
}
|
||||
|
||||
} // namespace internal
|
||||
|
|
|
@ -34,7 +34,7 @@ public:
|
|||
Manager(const Manager &other) = delete;
|
||||
Manager &operator=(const Manager &other) = delete;
|
||||
|
||||
static Manager *instance();
|
||||
static Manager *instance(QWidget *parent);
|
||||
|
||||
void addToast(std_::unique_ptr<Instance> &&toast);
|
||||
|
||||
|
@ -46,7 +46,7 @@ private slots:
|
|||
void onToastWidgetParentResized();
|
||||
|
||||
private:
|
||||
Manager(QObject *parent);
|
||||
Manager(QWidget *parent);
|
||||
void startNextHideTimer();
|
||||
|
||||
SingleTimer _hideTimer;
|
||||
|
@ -56,8 +56,6 @@ private:
|
|||
QMap<Widget*, Instance*> _toastByWidget;
|
||||
QList<Instance*> _toasts;
|
||||
|
||||
static Manager *_instance;
|
||||
|
||||
};
|
||||
|
||||
} // namespace internal
|
||||
|
|
|
@ -21,7 +21,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
#include "stdafx.h"
|
||||
|
||||
#include "application.h"
|
||||
#include "window.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
namespace Fonts {
|
||||
|
||||
|
|
|
@ -156,12 +156,12 @@ void rtlupdate(int x, int y, int w, int h) { \
|
|||
update(myrtlrect(x, y, w, h)); \
|
||||
} \
|
||||
protected: \
|
||||
void enterEvent(QEvent *e) { \
|
||||
void enterEvent(QEvent *e) override { \
|
||||
TWidget *p(tparent()); \
|
||||
if (p) p->leaveToChildEvent(e); \
|
||||
return QWidget::enterEvent(e); \
|
||||
} \
|
||||
void leaveEvent(QEvent *e) { \
|
||||
void leaveEvent(QEvent *e) override { \
|
||||
TWidget *p(tparent()); \
|
||||
if (p) p->enterFromChildEvent(e); \
|
||||
return QWidget::leaveEvent(e); \
|
||||
|
@ -172,8 +172,7 @@ class TWidget : public QWidget {
|
|||
T_WIDGET
|
||||
|
||||
public:
|
||||
|
||||
TWidget(QWidget *parent = 0) : QWidget(parent) {
|
||||
TWidget(QWidget *parent = nullptr) : QWidget(parent) {
|
||||
}
|
||||
bool event(QEvent *e) {
|
||||
return QWidget::event(e);
|
||||
|
@ -185,8 +184,6 @@ public:
|
|||
|
||||
bool inFocusChain() const;
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
void myEnsureResized(QWidget *target);
|
||||
|
@ -229,3 +226,44 @@ private:
|
|||
const char *_member;
|
||||
|
||||
};
|
||||
|
||||
// A simple wrap around T* to explicitly state ownership
|
||||
template <typename T>
|
||||
class ChildWidget {
|
||||
public:
|
||||
ChildWidget(std::nullptr_t) : _widget(nullptr) {
|
||||
}
|
||||
// No default constructor, but constructors with at least
|
||||
// one argument are simply make functions.
|
||||
template <typename Parent, typename... Args>
|
||||
ChildWidget(Parent &&parent, Args&&... args) : _widget(new T(std_::forward<Parent>(parent), std_::forward<Args>(args)...)) {
|
||||
}
|
||||
|
||||
ChildWidget(const ChildWidget<T> &other) = delete;
|
||||
ChildWidget<T> &operator=(const ChildWidget<T> &other) = delete;
|
||||
|
||||
ChildWidget<T> &operator=(std::nullptr_t) {
|
||||
_widget = nullptr;
|
||||
return *this;
|
||||
}
|
||||
ChildWidget<T> &operator=(T *widget) {
|
||||
_widget = widget;
|
||||
return *this;
|
||||
}
|
||||
|
||||
T *operator->() const {
|
||||
return _widget;
|
||||
}
|
||||
T &operator*() const {
|
||||
return *_widget;
|
||||
}
|
||||
|
||||
// So we can pass this pointer to methods like connect().
|
||||
operator T*() const {
|
||||
return _widget;
|
||||
}
|
||||
|
||||
private:
|
||||
T *_widget;
|
||||
|
||||
};
|
||||
|
|
393
Telegram/SourceFiles/window/top_bar_widget.cpp
Normal file
393
Telegram/SourceFiles/window/top_bar_widget.cpp
Normal file
|
@ -0,0 +1,393 @@
|
|||
/*
|
||||
This file is part of Telegram Desktop,
|
||||
the official desktop version of Telegram messaging app, see https://telegram.org
|
||||
|
||||
Telegram Desktop is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
It is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
In addition, as a special exception, the copyright holders give permission
|
||||
to link the code of portions of this program with the OpenSSL library.
|
||||
|
||||
Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
|
||||
Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
||||
*/
|
||||
#include "stdafx.h"
|
||||
#include "window/top_bar_widget.h"
|
||||
|
||||
#include "boxes/addcontactbox.h"
|
||||
#include "boxes/confirmbox.h"
|
||||
#include "mainwidget.h"
|
||||
#include "shortcuts.h"
|
||||
#include "lang.h"
|
||||
#include "ui/buttons/peer_avatar_button.h"
|
||||
#include "ui/flatbutton.h"
|
||||
|
||||
namespace Window {
|
||||
|
||||
TopBarWidget::TopBarWidget(MainWidget *w) : TWidget(w)
|
||||
, a_over(0)
|
||||
, _a_appearance(animation(this, &TopBarWidget::step_appearance))
|
||||
, _selPeer(0)
|
||||
, _selCount(0)
|
||||
, _canDelete(false)
|
||||
, _selStrLeft(-st::topBarButton.width / 2)
|
||||
, _selStrWidth(0)
|
||||
, _animating(false)
|
||||
, _clearSelection(this, lang(lng_selected_clear), st::topBarButton)
|
||||
, _forward(this, lang(lng_selected_forward), st::topBarActionButton)
|
||||
, _delete(this, lang(lng_selected_delete), st::topBarActionButton)
|
||||
, _selectionButtonsWidth(_clearSelection->width() + _forward->width() + _delete->width())
|
||||
, _forwardDeleteWidth(qMax(_forward->textWidth(), _delete->textWidth()))
|
||||
, _info(this, nullptr, st::infoButton)
|
||||
, _edit(this, lang(lng_profile_edit_contact), st::topBarButton)
|
||||
, _leaveGroup(this, lang(lng_profile_delete_and_exit), st::topBarButton)
|
||||
, _addContact(this, lang(lng_profile_add_contact), st::topBarButton)
|
||||
, _deleteContact(this, lang(lng_profile_delete_contact), st::topBarButton)
|
||||
, _mediaType(this, lang(lng_media_type), st::topBarButton)
|
||||
, _search(this, st::topBarSearch)
|
||||
, _sideShadow(this, st::shadowColor) {
|
||||
|
||||
connect(_forward, SIGNAL(clicked()), this, SLOT(onForwardSelection()));
|
||||
connect(_delete, SIGNAL(clicked()), this, SLOT(onDeleteSelection()));
|
||||
connect(_clearSelection, SIGNAL(clicked()), this, SLOT(onClearSelection()));
|
||||
connect(_info, SIGNAL(clicked()), this, SLOT(onInfoClicked()));
|
||||
connect(_addContact, SIGNAL(clicked()), this, SLOT(onAddContact()));
|
||||
connect(_deleteContact, SIGNAL(clicked()), this, SLOT(onDeleteContact()));
|
||||
connect(_edit, SIGNAL(clicked()), this, SLOT(onEdit()));
|
||||
connect(_leaveGroup, SIGNAL(clicked()), this, SLOT(onDeleteAndExit()));
|
||||
connect(_search, SIGNAL(clicked()), this, SLOT(onSearch()));
|
||||
|
||||
setCursor(style::cur_pointer);
|
||||
showAll();
|
||||
}
|
||||
|
||||
void TopBarWidget::onForwardSelection() {
|
||||
if (App::main()) App::main()->forwardSelectedItems();
|
||||
}
|
||||
|
||||
void TopBarWidget::onDeleteSelection() {
|
||||
if (App::main()) App::main()->deleteSelectedItems();
|
||||
}
|
||||
|
||||
void TopBarWidget::onClearSelection() {
|
||||
if (App::main()) App::main()->clearSelectedItems();
|
||||
}
|
||||
|
||||
void TopBarWidget::onInfoClicked() {
|
||||
PeerData *p = App::main() ? App::main()->historyPeer() : 0;
|
||||
if (p) App::main()->showPeerProfile(p);
|
||||
}
|
||||
|
||||
void TopBarWidget::onAddContact() {
|
||||
PeerData *p = App::main() ? App::main()->profilePeer() : 0;
|
||||
UserData *u = p ? p->asUser() : 0;
|
||||
if (u) Ui::showLayer(new AddContactBox(u->firstName, u->lastName, u->phone.isEmpty() ? App::phoneFromSharedContact(peerToUser(u->id)) : u->phone));
|
||||
}
|
||||
|
||||
void TopBarWidget::onEdit() {
|
||||
PeerData *p = App::main() ? App::main()->profilePeer() : 0;
|
||||
if (p) {
|
||||
if (p->isChannel()) {
|
||||
Ui::showLayer(new EditChannelBox(p->asChannel()));
|
||||
} else if (p->isChat()) {
|
||||
Ui::showLayer(new EditNameTitleBox(p));
|
||||
} else if (p->isUser()) {
|
||||
Ui::showLayer(new AddContactBox(p->asUser()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TopBarWidget::onDeleteContact() {
|
||||
PeerData *p = App::main() ? App::main()->profilePeer() : 0;
|
||||
UserData *u = p ? p->asUser() : 0;
|
||||
if (u) {
|
||||
ConfirmBox *box = new ConfirmBox(lng_sure_delete_contact(lt_contact, p->name), lang(lng_box_delete));
|
||||
connect(box, SIGNAL(confirmed()), this, SLOT(onDeleteContactSure()));
|
||||
Ui::showLayer(box);
|
||||
}
|
||||
}
|
||||
|
||||
void TopBarWidget::onDeleteContactSure() {
|
||||
PeerData *p = App::main() ? App::main()->profilePeer() : 0;
|
||||
UserData *u = p ? p->asUser() : 0;
|
||||
if (u) {
|
||||
Ui::showChatsList();
|
||||
Ui::hideLayer();
|
||||
MTP::send(MTPcontacts_DeleteContact(u->inputUser), App::main()->rpcDone(&MainWidget::deletedContact, u));
|
||||
}
|
||||
}
|
||||
|
||||
void TopBarWidget::onDeleteAndExit() {
|
||||
PeerData *p = App::main() ? App::main()->profilePeer() : 0;
|
||||
ChatData *c = p ? p->asChat() : 0;
|
||||
if (c) {
|
||||
ConfirmBox *box = new ConfirmBox(lng_sure_delete_and_exit(lt_group, p->name), lang(lng_box_leave), st::attentionBoxButton);
|
||||
connect(box, SIGNAL(confirmed()), this, SLOT(onDeleteAndExitSure()));
|
||||
Ui::showLayer(box);
|
||||
}
|
||||
}
|
||||
|
||||
void TopBarWidget::onDeleteAndExitSure() {
|
||||
PeerData *p = App::main() ? App::main()->profilePeer() : 0;
|
||||
ChatData *c = p ? p->asChat() : 0;
|
||||
if (c) {
|
||||
Ui::showChatsList();
|
||||
Ui::hideLayer();
|
||||
MTP::send(MTPmessages_DeleteChatUser(c->inputChat, App::self()->inputUser), App::main()->rpcDone(&MainWidget::deleteHistoryAfterLeave, p), App::main()->rpcFail(&MainWidget::leaveChatFailed, p));
|
||||
}
|
||||
}
|
||||
|
||||
void TopBarWidget::onSearch() {
|
||||
Shortcuts::launch(qsl("search"));
|
||||
}
|
||||
|
||||
void TopBarWidget::enterEvent(QEvent *e) {
|
||||
a_over.start(1);
|
||||
_a_appearance.start();
|
||||
}
|
||||
|
||||
void TopBarWidget::enterFromChildEvent(QEvent *e) {
|
||||
a_over.start(1);
|
||||
_a_appearance.start();
|
||||
}
|
||||
|
||||
void TopBarWidget::leaveEvent(QEvent *e) {
|
||||
a_over.start(0);
|
||||
_a_appearance.start();
|
||||
}
|
||||
|
||||
void TopBarWidget::leaveToChildEvent(QEvent *e) {
|
||||
a_over.start(0);
|
||||
_a_appearance.start();
|
||||
}
|
||||
|
||||
void TopBarWidget::step_appearance(float64 ms, bool timer) {
|
||||
float64 dt = ms / st::topBarDuration;
|
||||
if (dt >= 1) {
|
||||
_a_appearance.stop();
|
||||
a_over.finish();
|
||||
} else {
|
||||
a_over.update(dt, anim::linear);
|
||||
}
|
||||
if (timer) update();
|
||||
}
|
||||
|
||||
void TopBarWidget::paintEvent(QPaintEvent *e) {
|
||||
QPainter p(this);
|
||||
|
||||
if (e->rect().top() < st::topBarHeight) { // optimize shadow-only drawing
|
||||
p.fillRect(QRect(0, 0, width(), st::topBarHeight), st::topBarBG->b);
|
||||
if (_clearSelection->isHidden()) {
|
||||
p.save();
|
||||
main()->paintTopBar(p, a_over.current(), _info->isHidden() ? 0 : _info->width());
|
||||
p.restore();
|
||||
} else {
|
||||
p.setFont(st::linkFont->f);
|
||||
p.setPen(st::btnDefLink.color->p);
|
||||
p.drawText(_selStrLeft, st::topBarButton.textTop + st::linkFont->ascent, _selStr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TopBarWidget::mousePressEvent(QMouseEvent *e) {
|
||||
PeerData *p = App::main() ? App::main()->profilePeer() : 0;
|
||||
if (e->button() == Qt::LeftButton && e->pos().y() < st::topBarHeight && (p || !_selCount)) {
|
||||
emit clicked();
|
||||
}
|
||||
}
|
||||
|
||||
void TopBarWidget::resizeEvent(QResizeEvent *e) {
|
||||
int32 r = width();
|
||||
if (!_forward->isHidden() || !_delete->isHidden()) {
|
||||
int32 fullW = r - (_selectionButtonsWidth + (_selStrWidth - st::topBarButton.width) + st::topBarActionSkip);
|
||||
int32 selectedClearWidth = st::topBarButton.width, forwardDeleteWidth = st::topBarActionButton.width - _forwardDeleteWidth, skip = st::topBarActionSkip;
|
||||
while (fullW < 0) {
|
||||
int fit = 0;
|
||||
if (selectedClearWidth < -2 * (st::topBarMinPadding + 1)) {
|
||||
fullW += 4;
|
||||
selectedClearWidth += 2;
|
||||
} else if (selectedClearWidth < -2 * st::topBarMinPadding) {
|
||||
fullW += (-2 * st::topBarMinPadding - selectedClearWidth) * 2;
|
||||
selectedClearWidth = -2 * st::topBarMinPadding;
|
||||
} else {
|
||||
++fit;
|
||||
}
|
||||
if (fullW >= 0) break;
|
||||
|
||||
if (forwardDeleteWidth > 2 * (st::topBarMinPadding + 1)) {
|
||||
fullW += 4;
|
||||
forwardDeleteWidth -= 2;
|
||||
} else if (forwardDeleteWidth > 2 * st::topBarMinPadding) {
|
||||
fullW += (forwardDeleteWidth - 2 * st::topBarMinPadding) * 2;
|
||||
forwardDeleteWidth = 2 * st::topBarMinPadding;
|
||||
} else {
|
||||
++fit;
|
||||
}
|
||||
if (fullW >= 0) break;
|
||||
|
||||
if (skip > st::topBarMinPadding) {
|
||||
--skip;
|
||||
++fullW;
|
||||
} else {
|
||||
++fit;
|
||||
}
|
||||
if (fullW >= 0 || fit >= 3) break;
|
||||
}
|
||||
_clearSelection->setWidth(selectedClearWidth);
|
||||
_forward->setWidth(_forwardDeleteWidth + forwardDeleteWidth);
|
||||
_delete->setWidth(_forwardDeleteWidth + forwardDeleteWidth);
|
||||
_selStrLeft = -selectedClearWidth / 2;
|
||||
|
||||
int32 availX = _selStrLeft + _selStrWidth, availW = r - (_clearSelection->width() + selectedClearWidth / 2) - availX;
|
||||
if (_forward->isHidden()) {
|
||||
_delete->move(availX + (availW - _delete->width()) / 2, (st::topBarHeight - _forward->height()) / 2);
|
||||
} else if (_delete->isHidden()) {
|
||||
_forward->move(availX + (availW - _forward->width()) / 2, (st::topBarHeight - _forward->height()) / 2);
|
||||
} else {
|
||||
_forward->move(availX + (availW - _forward->width() - _delete->width() - skip) / 2, (st::topBarHeight - _forward->height()) / 2);
|
||||
_delete->move(availX + (availW + _forward->width() - _delete->width() + skip) / 2, (st::topBarHeight - _forward->height()) / 2);
|
||||
}
|
||||
_clearSelection->move(r -= _clearSelection->width(), 0);
|
||||
}
|
||||
if (!_info->isHidden()) _info->move(r -= _info->width(), 0);
|
||||
if (!_deleteContact->isHidden()) _deleteContact->move(r -= _deleteContact->width(), 0);
|
||||
if (!_leaveGroup->isHidden()) _leaveGroup->move(r -= _leaveGroup->width(), 0);
|
||||
if (!_edit->isHidden()) _edit->move(r -= _edit->width(), 0);
|
||||
if (!_addContact->isHidden()) _addContact->move(r -= _addContact->width(), 0);
|
||||
if (!_mediaType->isHidden()) _mediaType->move(r -= _mediaType->width(), 0);
|
||||
_search->move(width() - (_info->isHidden() ? st::topBarForwardPadding.right() : _info->width()) - _search->width(), 0);
|
||||
|
||||
_sideShadow->resize(st::lineWidth, height());
|
||||
_sideShadow->moveToLeft(0, 0);
|
||||
}
|
||||
|
||||
void TopBarWidget::startAnim() {
|
||||
_info->hide();
|
||||
_edit->hide();
|
||||
_leaveGroup->hide();
|
||||
_addContact->hide();
|
||||
_deleteContact->hide();
|
||||
_clearSelection->hide();
|
||||
_delete->hide();
|
||||
_forward->hide();
|
||||
_mediaType->hide();
|
||||
_search->hide();
|
||||
|
||||
_animating = true;
|
||||
}
|
||||
|
||||
void TopBarWidget::stopAnim() {
|
||||
_animating = false;
|
||||
_sideShadow->setVisible(!Adaptive::OneColumn());
|
||||
showAll();
|
||||
}
|
||||
|
||||
void TopBarWidget::showAll() {
|
||||
if (_animating) {
|
||||
resizeEvent(0);
|
||||
return;
|
||||
}
|
||||
PeerData *p = App::main() ? App::main()->profilePeer() : 0, *h = App::main() ? App::main()->historyPeer() : 0, *o = App::main() ? App::main()->overviewPeer() : 0;
|
||||
if (p && (p->isChat() || (p->isUser() && (p->asUser()->contact >= 0 || !App::phoneFromSharedContact(peerToUser(p->id)).isEmpty())))) {
|
||||
if (p->isChat()) {
|
||||
if (p->asChat()->canEdit()) {
|
||||
_edit->show();
|
||||
} else {
|
||||
_edit->hide();
|
||||
}
|
||||
_leaveGroup->show();
|
||||
_addContact->hide();
|
||||
_deleteContact->hide();
|
||||
} else if (p->asUser()->contact > 0) {
|
||||
_edit->show();
|
||||
_leaveGroup->hide();
|
||||
_addContact->hide();
|
||||
_deleteContact->show();
|
||||
} else {
|
||||
_edit->hide();
|
||||
_leaveGroup->hide();
|
||||
_addContact->show();
|
||||
_deleteContact->hide();
|
||||
}
|
||||
_clearSelection->hide();
|
||||
_info->hide();
|
||||
_delete->hide();
|
||||
_forward->hide();
|
||||
_mediaType->hide();
|
||||
_search->hide();
|
||||
} else {
|
||||
if (p && p->isChannel() && (p->asChannel()->amCreator() || (p->isMegagroup() && p->asChannel()->amEditor()))) {
|
||||
_edit->show();
|
||||
} else {
|
||||
_edit->hide();
|
||||
}
|
||||
_leaveGroup->hide();
|
||||
_addContact->hide();
|
||||
_deleteContact->hide();
|
||||
if (!p && _selCount) {
|
||||
_clearSelection->show();
|
||||
if (_canDelete) {
|
||||
_delete->show();
|
||||
} else {
|
||||
_delete->hide();
|
||||
}
|
||||
_forward->show();
|
||||
_mediaType->hide();
|
||||
} else {
|
||||
_clearSelection->hide();
|
||||
_delete->hide();
|
||||
_forward->hide();
|
||||
if (App::main() && App::main()->mediaTypeSwitch()) {
|
||||
_mediaType->show();
|
||||
} else {
|
||||
_mediaType->hide();
|
||||
}
|
||||
}
|
||||
if (h && !o && !p && _clearSelection->isHidden()) {
|
||||
if (Adaptive::OneColumn()) {
|
||||
_info->setPeer(h);
|
||||
_info->show();
|
||||
} else {
|
||||
_info->hide();
|
||||
}
|
||||
_search->show();
|
||||
} else {
|
||||
_search->hide();
|
||||
_info->hide();
|
||||
}
|
||||
}
|
||||
_sideShadow->setVisible(!Adaptive::OneColumn());
|
||||
resizeEvent(nullptr);
|
||||
}
|
||||
|
||||
void TopBarWidget::showSelected(uint32 selCount, bool canDelete) {
|
||||
PeerData *p = App::main() ? App::main()->profilePeer() : 0;
|
||||
_selPeer = App::main()->overviewPeer() ? App::main()->overviewPeer() : App::main()->peer();
|
||||
_selCount = selCount;
|
||||
_canDelete = canDelete;
|
||||
_selStr = (_selCount > 0) ? lng_selected_count(lt_count, _selCount) : QString();
|
||||
_selStrWidth = st::btnDefLink.font->width(_selStr);
|
||||
setCursor((!p && _selCount) ? style::cur_default : style::cur_pointer);
|
||||
showAll();
|
||||
}
|
||||
|
||||
void TopBarWidget::updateAdaptiveLayout() {
|
||||
showAll();
|
||||
}
|
||||
|
||||
FlatButton *TopBarWidget::mediaTypeButton() {
|
||||
return _mediaType;
|
||||
}
|
||||
|
||||
MainWidget *TopBarWidget::main() {
|
||||
return static_cast<MainWidget*>(parentWidget());
|
||||
}
|
||||
|
||||
} // namespace Window
|
114
Telegram/SourceFiles/window/top_bar_widget.h
Normal file
114
Telegram/SourceFiles/window/top_bar_widget.h
Normal file
|
@ -0,0 +1,114 @@
|
|||
/*
|
||||
This file is part of Telegram Desktop,
|
||||
the official desktop version of Telegram messaging app, see https://telegram.org
|
||||
|
||||
Telegram Desktop is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
It is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
In addition, as a special exception, the copyright holders give permission
|
||||
to link the code of portions of this program with the OpenSSL library.
|
||||
|
||||
Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
|
||||
Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "ui/twidget.h"
|
||||
|
||||
namespace Ui {
|
||||
class PeerAvatarButton;
|
||||
} // namespace Ui
|
||||
class FlatButton;
|
||||
class IconedButton;
|
||||
class PlainShadow;
|
||||
|
||||
namespace Window {
|
||||
|
||||
class TopBarWidget : public TWidget {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
TopBarWidget(MainWidget *w);
|
||||
|
||||
void enterEvent(QEvent *e) override;
|
||||
void enterFromChildEvent(QEvent *e) override;
|
||||
void leaveEvent(QEvent *e) override;
|
||||
void leaveToChildEvent(QEvent *e) override;
|
||||
void paintEvent(QPaintEvent *e) override;
|
||||
void mousePressEvent(QMouseEvent *e) override;
|
||||
void resizeEvent(QResizeEvent *e) override;
|
||||
|
||||
void step_appearance(float64 ms, bool timer);
|
||||
void enableShadow(bool enable = true);
|
||||
|
||||
void startAnim();
|
||||
void stopAnim();
|
||||
void showAll();
|
||||
void showSelected(uint32 selCount, bool canDelete = false);
|
||||
|
||||
void updateAdaptiveLayout();
|
||||
|
||||
FlatButton *mediaTypeButton();
|
||||
|
||||
void grabStart() override {
|
||||
_sideShadow->hide();
|
||||
}
|
||||
void grabFinish() override {
|
||||
_sideShadow->setVisible(!Adaptive::OneColumn());
|
||||
}
|
||||
|
||||
public slots:
|
||||
|
||||
void onForwardSelection();
|
||||
void onDeleteSelection();
|
||||
void onClearSelection();
|
||||
void onInfoClicked();
|
||||
void onAddContact();
|
||||
void onEdit();
|
||||
void onDeleteContact();
|
||||
void onDeleteContactSure();
|
||||
void onDeleteAndExit();
|
||||
void onDeleteAndExitSure();
|
||||
void onSearch();
|
||||
|
||||
signals:
|
||||
|
||||
void clicked();
|
||||
|
||||
private:
|
||||
|
||||
MainWidget *main();
|
||||
anim::fvalue a_over;
|
||||
Animation _a_appearance;
|
||||
|
||||
PeerData *_selPeer = nullptr;
|
||||
uint32 _selCount;
|
||||
bool _canDelete;
|
||||
QString _selStr;
|
||||
int32 _selStrLeft, _selStrWidth;
|
||||
|
||||
bool _animating;
|
||||
|
||||
ChildWidget<FlatButton> _clearSelection;
|
||||
ChildWidget<FlatButton> _forward, _delete;
|
||||
int _selectionButtonsWidth, _forwardDeleteWidth;
|
||||
|
||||
ChildWidget<Ui::PeerAvatarButton> _info;
|
||||
ChildWidget<FlatButton> _edit, _leaveGroup, _addContact, _deleteContact;
|
||||
ChildWidget<FlatButton> _mediaType;
|
||||
|
||||
ChildWidget<IconedButton> _search;
|
||||
|
||||
ChildWidget<PlainShadow> _sideShadow;
|
||||
|
||||
};
|
||||
|
||||
} // namespace Window
|
|
@ -348,6 +348,10 @@
|
|||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Debug\moc_mainwindow.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Debug\moc_mediaview.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
|
@ -435,6 +439,10 @@
|
|||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Debug\moc_top_bar_widget.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Debug\moc_twidget.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
|
@ -443,10 +451,6 @@
|
|||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Debug\moc_window.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Deploy\moc_aboutbox.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
|
@ -631,6 +635,10 @@
|
|||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Deploy\moc_mainwindow.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Deploy\moc_mediaview.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
|
@ -718,6 +726,10 @@
|
|||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Deploy\moc_top_bar_widget.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Deploy\moc_twidget.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
|
@ -726,10 +738,6 @@
|
|||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Deploy\moc_window.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\lang_auto.cpp" />
|
||||
<ClCompile Include="GeneratedFiles\numbers.cpp" />
|
||||
<ClCompile Include="GeneratedFiles\qrc_telegram.cpp">
|
||||
|
@ -940,6 +948,10 @@
|
|||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Release\moc_mainwindow.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Release\moc_mediaview.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
|
@ -1027,6 +1039,10 @@
|
|||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Release\moc_top_bar_widget.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Release\moc_twidget.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
|
@ -1035,17 +1051,12 @@
|
|||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Release\moc_window.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\style_auto.cpp" />
|
||||
<ClCompile Include="SourceFiles\apiwrap.cpp" />
|
||||
<ClCompile Include="SourceFiles\app.cpp" />
|
||||
<ClCompile Include="SourceFiles\application.cpp" />
|
||||
<ClCompile Include="SourceFiles\audio.cpp" />
|
||||
<ClCompile Include="SourceFiles\autoupdater.cpp" />
|
||||
<ClCompile Include="SourceFiles\basic_types.cpp" />
|
||||
<ClCompile Include="SourceFiles\boxes\aboutbox.cpp" />
|
||||
<ClCompile Include="SourceFiles\boxes\abstractbox.cpp" />
|
||||
<ClCompile Include="SourceFiles\boxes\addcontactbox.cpp" />
|
||||
|
@ -1063,6 +1074,9 @@
|
|||
<ClCompile Include="SourceFiles\boxes\sessionsbox.cpp" />
|
||||
<ClCompile Include="SourceFiles\boxes\stickersetbox.cpp" />
|
||||
<ClCompile Include="SourceFiles\boxes\usernamebox.cpp" />
|
||||
<ClCompile Include="SourceFiles\core\basic_types.cpp" />
|
||||
<ClCompile Include="SourceFiles\core\click_handler.cpp" />
|
||||
<ClCompile Include="SourceFiles\core\click_handler_types.cpp" />
|
||||
<ClCompile Include="SourceFiles\dialogswidget.cpp" />
|
||||
<ClCompile Include="SourceFiles\dialogs\dialogs_indexed_list.cpp" />
|
||||
<ClCompile Include="SourceFiles\dialogs\dialogs_layout.cpp" />
|
||||
|
@ -1107,6 +1121,7 @@
|
|||
<ClCompile Include="SourceFiles\mtproto\scheme_auto.cpp" />
|
||||
<ClCompile Include="SourceFiles\mtproto\session.cpp" />
|
||||
<ClCompile Include="SourceFiles\overviewwidget.cpp" />
|
||||
<ClCompile Include="SourceFiles\overview\overview_layout.cpp" />
|
||||
<ClCompile Include="SourceFiles\passcodewidget.cpp" />
|
||||
<ClCompile Include="SourceFiles\playerwidget.cpp" />
|
||||
<ClCompile Include="SourceFiles\profilewidget.cpp" />
|
||||
|
@ -1160,7 +1175,8 @@
|
|||
<ClCompile Include="SourceFiles\ui\toast\toast_manager.cpp" />
|
||||
<ClCompile Include="SourceFiles\ui\toast\toast_widget.cpp" />
|
||||
<ClCompile Include="SourceFiles\ui\twidget.cpp" />
|
||||
<ClCompile Include="SourceFiles\window.cpp" />
|
||||
<ClCompile Include="SourceFiles\mainwindow.cpp" />
|
||||
<ClCompile Include="SourceFiles\window\top_bar_widget.cpp" />
|
||||
<ClCompile Include="ThirdParty\minizip\zip.c">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
|
||||
|
@ -1213,25 +1229,28 @@
|
|||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/connection_tcp.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="SourceFiles\basic_types.h">
|
||||
<CustomBuild Include="SourceFiles\core\basic_types.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing basic_types.h...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/basic_types.h" -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/core/basic_types.h" -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing basic_types.h...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/basic_types.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/core/basic_types.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing basic_types.h...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/basic_types.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/core/basic_types.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="SourceFiles\core\click_handler.h" />
|
||||
<ClInclude Include="SourceFiles\core\click_handler_types.h" />
|
||||
<ClInclude Include="SourceFiles\dialogs\dialogs_common.h" />
|
||||
<ClInclude Include="SourceFiles\dialogs\dialogs_indexed_list.h" />
|
||||
<ClInclude Include="SourceFiles\dialogs\dialogs_layout.h" />
|
||||
<ClInclude Include="SourceFiles\dialogs\dialogs_list.h" />
|
||||
<ClInclude Include="SourceFiles\dialogs\dialogs_row.h" />
|
||||
<ClInclude Include="SourceFiles\history\history_common.h" />
|
||||
<ClInclude Include="SourceFiles\inline_bots\inline_bot_layout_internal.h" />
|
||||
<ClInclude Include="SourceFiles\inline_bots\inline_bot_layout_item.h" />
|
||||
<ClInclude Include="SourceFiles\inline_bots\inline_bot_result.h" />
|
||||
|
@ -1339,6 +1358,7 @@
|
|||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mtproto/session.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="SourceFiles\overview\overview_layout.h" />
|
||||
<ClInclude Include="SourceFiles\serialize\serialize_common.h" />
|
||||
<ClInclude Include="SourceFiles\serialize\serialize_document.h" />
|
||||
<ClInclude Include="SourceFiles\shortcuts.h" />
|
||||
|
@ -1520,22 +1540,36 @@
|
|||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/ui/toast/toast_manager.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="SourceFiles\ui\toast\toast_widget.h" />
|
||||
<CustomBuild Include="SourceFiles\window\top_bar_widget.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing top_bar_widget.h...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/window/top_bar_widget.h" -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing top_bar_widget.h...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/window/top_bar_widget.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing top_bar_widget.h...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/window/top_bar_widget.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="ThirdParty\minizip\crypt.h" />
|
||||
<ClInclude Include="ThirdParty\minizip\ioapi.h" />
|
||||
<ClInclude Include="ThirdParty\minizip\zip.h" />
|
||||
<CustomBuild Include="SourceFiles\window.h">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing window.h...</Message>
|
||||
<CustomBuild Include="SourceFiles\mainwindow.h">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing mainwindow.h...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/window.h"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing window.h...</Message>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing window.h...</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mainwindow.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl_debug\Debug\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing mainwindow.h...</Message>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing mainwindow.h...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/window.h"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/window.h"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mainwindow.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/mainwindow.h" -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="Resources\style_classes.txt">
|
||||
<Outputs>.\GeneratedFiles\style_classes.h</Outputs>
|
||||
|
|
|
@ -67,6 +67,18 @@
|
|||
<Filter Include="ui\buttons">
|
||||
<UniqueIdentifier>{24292a88-6707-4070-b2d2-8b53acd5cdd0}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="core">
|
||||
<UniqueIdentifier>{162feb92-08a4-4abf-9936-79c389d4fcb9}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="history">
|
||||
<UniqueIdentifier>{39b5a449-928d-4add-9610-95c03878d52f}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="window">
|
||||
<UniqueIdentifier>{0192d4a5-ecf0-4076-937a-d3a08443e543}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="overview">
|
||||
<UniqueIdentifier>{ddcc5634-90e7-4815-ba86-a3db539f4774}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="SourceFiles\main.cpp">
|
||||
|
@ -99,9 +111,6 @@
|
|||
<ClCompile Include="SourceFiles\app.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SourceFiles\window.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SourceFiles\dialogswidget.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
|
@ -177,15 +186,6 @@
|
|||
<ClCompile Include="SourceFiles\langloaderplain.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Deploy\moc_window.cpp">
|
||||
<Filter>Generated Files\Deploy</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Debug\moc_window.cpp">
|
||||
<Filter>Generated Files\Debug</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Release\moc_window.cpp">
|
||||
<Filter>Generated Files\Release</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Deploy\moc_title.cpp">
|
||||
<Filter>Generated Files\Deploy</Filter>
|
||||
</ClCompile>
|
||||
|
@ -825,18 +825,6 @@
|
|||
<ClCompile Include="GeneratedFiles\Release\moc_facade.cpp">
|
||||
<Filter>Generated Files\Release</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SourceFiles\basic_types.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Deploy\moc_basic_types.cpp">
|
||||
<Filter>Generated Files\Deploy</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Debug\moc_basic_types.cpp">
|
||||
<Filter>Generated Files\Debug</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Release\moc_basic_types.cpp">
|
||||
<Filter>Generated Files\Release</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SourceFiles\inline_bots\inline_bot_result.cpp">
|
||||
<Filter>inline_bots</Filter>
|
||||
</ClCompile>
|
||||
|
@ -1035,6 +1023,51 @@
|
|||
<ClCompile Include="SourceFiles\ui\buttons\peer_avatar_button.cpp">
|
||||
<Filter>ui\buttons</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SourceFiles\window\top_bar_widget.cpp">
|
||||
<Filter>window</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Deploy\moc_top_bar_widget.cpp">
|
||||
<Filter>Generated Files\Deploy</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Deploy\moc_mainwindow.cpp">
|
||||
<Filter>Generated Files\Deploy</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Debug\moc_mainwindow.cpp">
|
||||
<Filter>Generated Files\Debug</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Release\moc_mainwindow.cpp">
|
||||
<Filter>Generated Files\Release</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SourceFiles\mainwindow.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Debug\moc_top_bar_widget.cpp">
|
||||
<Filter>Generated Files\Debug</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Release\moc_top_bar_widget.cpp">
|
||||
<Filter>Generated Files\Release</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SourceFiles\core\click_handler.cpp">
|
||||
<Filter>core</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SourceFiles\core\basic_types.cpp">
|
||||
<Filter>core</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Deploy\moc_basic_types.cpp">
|
||||
<Filter>Generated Files\Deploy</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Debug\moc_basic_types.cpp">
|
||||
<Filter>Generated Files\Debug</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GeneratedFiles\Release\moc_basic_types.cpp">
|
||||
<Filter>Generated Files\Release</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SourceFiles\core\click_handler_types.cpp">
|
||||
<Filter>core</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SourceFiles\overview\overview_layout.cpp">
|
||||
<Filter>overview</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="SourceFiles\stdafx.h">
|
||||
|
@ -1175,6 +1208,18 @@
|
|||
<ClInclude Include="SourceFiles\ui\buttons\peer_avatar_button.h">
|
||||
<Filter>ui\buttons</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SourceFiles\history\history_common.h">
|
||||
<Filter>history</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SourceFiles\core\click_handler.h">
|
||||
<Filter>core</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SourceFiles\core\click_handler_types.h">
|
||||
<Filter>core</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SourceFiles\overview\overview_layout.h">
|
||||
<Filter>overview</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="SourceFiles\application.h">
|
||||
|
@ -1183,9 +1228,6 @@
|
|||
<CustomBuild Include="SourceFiles\mainwidget.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="SourceFiles\window.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="SourceFiles\dialogswidget.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</CustomBuild>
|
||||
|
@ -1378,9 +1420,6 @@
|
|||
<CustomBuild Include="SourceFiles\facades.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="SourceFiles\basic_types.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="SourceFiles\ui\animation.h">
|
||||
<Filter>ui</Filter>
|
||||
</CustomBuild>
|
||||
|
@ -1417,6 +1456,15 @@
|
|||
<CustomBuild Include="SourceFiles\ui\toast\toast_manager.h">
|
||||
<Filter>ui\toast</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="SourceFiles\window\top_bar_widget.h">
|
||||
<Filter>window</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="SourceFiles\mainwindow.h">
|
||||
<Filter>Source Files</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="SourceFiles\core\basic_types.h">
|
||||
<Filter>core</Filter>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\langs\lang_it.strings">
|
||||
|
|
|
@ -162,7 +162,7 @@
|
|||
5FC914F652D1B16FDA8F0634 /* moc_contactsbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 26083D8E535AFF927591E1A5 /* moc_contactsbox.cpp */; settings = {ATTRIBUTES = (); }; };
|
||||
60CB4898955209B665E7B07D /* moc_twidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 55A654A2EE8554FF062742B8 /* moc_twidget.cpp */; settings = {ATTRIBUTES = (); }; };
|
||||
668DDDA0C55405E7FCFD6CA5 /* CoreServices.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 9742F24EE18EA44D52824F1E /* CoreServices.framework */; };
|
||||
68FFEB7CA30BF0149161B809 /* window.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = CA56ACFB53D87637192CC9B2 /* window.cpp */; settings = {ATTRIBUTES = (); }; };
|
||||
68FFEB7CA30BF0149161B809 /* mainwindow.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = CA56ACFB53D87637192CC9B2 /* mainwindow.cpp */; settings = {ATTRIBUTES = (); }; };
|
||||
6A8BC88AB464B92706EFE6FF /* moc_countryinput.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 9D9F4744B2F9FF22569D4535 /* moc_countryinput.cpp */; settings = {ATTRIBUTES = (); }; };
|
||||
6C79FBC5CFA36AC3EA6ABBD4 /* moc_dropdown.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = AC9B5F6FB4B984C8D76F7AE2 /* moc_dropdown.cpp */; settings = {ATTRIBUTES = (); }; };
|
||||
6E4DB0CBEF415196AFD4149F /* fileuploader.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 9B36BB8C5B8CA7B07F3F35F0 /* fileuploader.cpp */; settings = {ATTRIBUTES = (); }; };
|
||||
|
@ -194,7 +194,7 @@
|
|||
9809A3AF1946D51ACB41D716 /* moc_photocropbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = AF61D864B8C444ADD4E1B391 /* moc_photocropbox.cpp */; settings = {ATTRIBUTES = (); }; };
|
||||
98E4F55DB5D8E64AB9F08C83 /* moc_localimageloader.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 1D7899ACAA9F973CADFA34C1 /* moc_localimageloader.cpp */; settings = {ATTRIBUTES = (); }; };
|
||||
99F0A9B2AFE5ABDCBFC04510 /* rpc_sender.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 89F92B278CA31C393E245056 /* rpc_sender.cpp */; settings = {ATTRIBUTES = (); }; };
|
||||
9A0D5DDC7816FC2538EB6A96 /* moc_window.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 6B46A0EE3C3B9D3B5A24946E /* moc_window.cpp */; settings = {ATTRIBUTES = (); }; };
|
||||
9A0D5DDC7816FC2538EB6A96 /* moc_mainwindow.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 6B46A0EE3C3B9D3B5A24946E /* moc_mainwindow.cpp */; settings = {ATTRIBUTES = (); }; };
|
||||
9A523F51135FD4E2464673A6 /* moc_session.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 63AF8520023B4EA40306CB03 /* moc_session.cpp */; settings = {ATTRIBUTES = (); }; };
|
||||
9D294F23E02CFDF22C288382 /* moc_emojibox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 0C0DC15EB416789673526AA5 /* moc_emojibox.cpp */; settings = {ATTRIBUTES = (); }; };
|
||||
9F33AC0693BC81B27D8F518D /* Qt5Gui in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 04391BE7A8B9D811E255100A /* Qt5Gui */; };
|
||||
|
@ -467,7 +467,7 @@
|
|||
1A4C47331E186344291B8178 /* dropdown.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = dropdown.h; path = SourceFiles/dropdown.h; sourceTree = "<absolute>"; };
|
||||
1B4A65B84270FF2FED008EB6 /* moc_introphone.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_introphone.cpp; path = GeneratedFiles/Debug/moc_introphone.cpp; sourceTree = "<absolute>"; };
|
||||
1D7899ACAA9F973CADFA34C1 /* moc_localimageloader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_localimageloader.cpp; path = GeneratedFiles/Debug/moc_localimageloader.cpp; sourceTree = "<absolute>"; };
|
||||
1DC02F674A7192FF8BE391A7 /* basic_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = basic_types.h; path = SourceFiles/basic_types.h; sourceTree = "<absolute>"; };
|
||||
1DC02F674A7192FF8BE391A7 /* basic_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = basic_types.h; path = SourceFiles/core/basic_types.h; sourceTree = "<absolute>"; };
|
||||
1DEFC0760BB9340529F582F7 /* confirmbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = confirmbox.h; path = SourceFiles/boxes/confirmbox.h; sourceTree = "<absolute>"; };
|
||||
1E5EEB5782B6357057356F9E /* moc_flatinput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_flatinput.cpp; path = GeneratedFiles/Debug/moc_flatinput.cpp; sourceTree = "<absolute>"; };
|
||||
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qavfcamera.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qavfcamera.pri"; sourceTree = "<absolute>"; };
|
||||
|
@ -494,7 +494,7 @@
|
|||
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_bluetooth_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_bluetooth_private.pri"; sourceTree = "<absolute>"; };
|
||||
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_xmlpatterns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_xmlpatterns.pri"; sourceTree = "<absolute>"; };
|
||||
2EA58EF6CDF368B0132BAEB9 /* settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = settings.h; path = SourceFiles/settings.h; sourceTree = "<absolute>"; };
|
||||
301BB513F2F5D447B3BF22DF /* window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = window.h; path = SourceFiles/window.h; sourceTree = "<absolute>"; };
|
||||
301BB513F2F5D447B3BF22DF /* mainwindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mainwindow.h; path = SourceFiles/mainwindow.h; sourceTree = "<absolute>"; };
|
||||
311004331A04F3D69C98643C /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_serialport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_serialport_private.pri"; sourceTree = "<absolute>"; };
|
||||
31120EDB269DFF13E1D49847 /* qicns */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qicns; path = "/usr/local/Qt-5.5.1/plugins/imageformats/libqicns$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
|
||||
315C7FACB4A9E18AA95486CA /* dcenter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = dcenter.cpp; path = SourceFiles/mtproto/dcenter.cpp; sourceTree = "<absolute>"; };
|
||||
|
@ -563,7 +563,7 @@
|
|||
6868ADA9E9A9801B2BA92B97 /* countryinput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = countryinput.h; path = SourceFiles/ui/countryinput.h; sourceTree = "<absolute>"; };
|
||||
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_designercomponents_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_designercomponents_private.pri"; sourceTree = "<absolute>"; };
|
||||
6A510365F9F6367ECB0DB065 /* images.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = images.cpp; path = SourceFiles/ui/images.cpp; sourceTree = "<absolute>"; };
|
||||
6B46A0EE3C3B9D3B5A24946E /* moc_window.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_window.cpp; path = GeneratedFiles/Debug/moc_window.cpp; sourceTree = "<absolute>"; };
|
||||
6B46A0EE3C3B9D3B5A24946E /* moc_mainwindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_mainwindow.cpp; path = GeneratedFiles/Debug/moc_mainwindow.cpp; sourceTree = "<absolute>"; };
|
||||
6B90F69947805586A6FAE80E /* sysbuttons.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = sysbuttons.cpp; path = SourceFiles/sysbuttons.cpp; sourceTree = "<absolute>"; };
|
||||
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_printsupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_printsupport.pri"; sourceTree = "<absolute>"; };
|
||||
6C86B6E6AB1857B735B720D6 /* layerwidget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = layerwidget.h; path = SourceFiles/layerwidget.h; sourceTree = "<absolute>"; };
|
||||
|
@ -583,7 +583,7 @@
|
|||
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_designer_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_designer_private.pri"; sourceTree = "<absolute>"; };
|
||||
7CA6945B22800A0F30B75DA5 /* addcontactbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = addcontactbox.cpp; path = SourceFiles/boxes/addcontactbox.cpp; sourceTree = "<absolute>"; };
|
||||
7CDE9D7CB2C729BC3612372B /* addcontactbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = addcontactbox.h; path = SourceFiles/boxes/addcontactbox.h; sourceTree = "<absolute>"; };
|
||||
7D075A915E8739C1B6BC5F43 /* basic_types.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = basic_types.cpp; path = SourceFiles/basic_types.cpp; sourceTree = "<absolute>"; };
|
||||
7D075A915E8739C1B6BC5F43 /* basic_types.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = basic_types.cpp; path = SourceFiles/core/basic_types.cpp; sourceTree = "<absolute>"; };
|
||||
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_concurrent_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_concurrent_private.pri"; sourceTree = "<absolute>"; };
|
||||
7DBFC0B5EAF874BA10E3D603 /* scheme_auto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = scheme_auto.h; path = SourceFiles/mtproto/scheme_auto.h; sourceTree = "<absolute>"; };
|
||||
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_sql.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_lib_sql.pri"; sourceTree = "<absolute>"; };
|
||||
|
@ -703,7 +703,7 @@
|
|||
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri"; sourceTree = "<absolute>"; };
|
||||
C913E6A1001E07EE7C13CE93 /* style.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = style.h; path = SourceFiles/ui/style.h; sourceTree = "<absolute>"; };
|
||||
C9FFCCE4FCB845744636795F /* moc_flatbutton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_flatbutton.cpp; path = GeneratedFiles/Debug/moc_flatbutton.cpp; sourceTree = "<absolute>"; };
|
||||
CA56ACFB53D87637192CC9B2 /* window.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = window.cpp; path = SourceFiles/window.cpp; sourceTree = "<absolute>"; };
|
||||
CA56ACFB53D87637192CC9B2 /* mainwindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = mainwindow.cpp; path = SourceFiles/mainwindow.cpp; sourceTree = "<absolute>"; };
|
||||
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qoffscreen.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.1/mkspecs/modules/qt_plugin_qoffscreen.pri"; sourceTree = "<absolute>"; };
|
||||
CE0D5EFE401BF9815FACE579 /* pspecific_mac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pspecific_mac.h; path = SourceFiles/pspecific_mac.h; sourceTree = "<absolute>"; };
|
||||
CE7FFE194127BD789A2C877A /* moc_confirmbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_confirmbox.cpp; path = GeneratedFiles/Debug/moc_confirmbox.cpp; sourceTree = "<absolute>"; };
|
||||
|
@ -1148,8 +1148,8 @@
|
|||
3BE70E2A82DC2BF402165ED5 /* sysbuttons.h */,
|
||||
2BB2A1BB8DB0993F78F4E3C7 /* title.cpp */,
|
||||
4D504A849F15EB58E53A4E5F /* title.h */,
|
||||
CA56ACFB53D87637192CC9B2 /* window.cpp */,
|
||||
301BB513F2F5D447B3BF22DF /* window.h */,
|
||||
CA56ACFB53D87637192CC9B2 /* mainwindow.cpp */,
|
||||
301BB513F2F5D447B3BF22DF /* mainwindow.h */,
|
||||
24F7D3E789E91B10E422C116 /* config.h */,
|
||||
C913E6A1001E07EE7C13CE93 /* style.h */,
|
||||
);
|
||||
|
@ -1327,7 +1327,7 @@
|
|||
93AFE74928551FC3D7E8390B /* moc_settingswidget.cpp */,
|
||||
B88236FC554B694F618D848C /* moc_sysbuttons.cpp */,
|
||||
1080B6D395843B8F76A2E45E /* moc_title.cpp */,
|
||||
6B46A0EE3C3B9D3B5A24946E /* moc_window.cpp */,
|
||||
6B46A0EE3C3B9D3B5A24946E /* moc_mainwindow.cpp */,
|
||||
924D4939FD169BB4B8AEB1C9 /* moc_facade.cpp */,
|
||||
B714EA71A09A832FAA846A0A /* moc_connection.cpp */,
|
||||
2C540BAEABD7F9B5FA11008E /* moc_dcenter.cpp */,
|
||||
|
@ -1707,7 +1707,7 @@
|
|||
5CE57D44510AB2A11886AB52 /* title.cpp in Compile Sources */,
|
||||
077A4AF81CA41C38002188D2 /* connection_auto.cpp in Compile Sources */,
|
||||
4078D5D614EB3ECF7F1848C7 /* basic_types.cpp in Compile Sources */,
|
||||
68FFEB7CA30BF0149161B809 /* window.cpp in Compile Sources */,
|
||||
68FFEB7CA30BF0149161B809 /* mainwindow.cpp in Compile Sources */,
|
||||
0CB7DE9A54CC9BF86FB7B5CA /* facade.cpp in Compile Sources */,
|
||||
DF259E9677CC63AF8754032B /* connection.cpp in Compile Sources */,
|
||||
074FCB9119D36E60004C6EB2 /* moc_popupmenu.cpp in Compile Sources */,
|
||||
|
@ -1793,7 +1793,7 @@
|
|||
FD2FE0C564A7389A2E609EC7 /* moc_sysbuttons.cpp in Compile Sources */,
|
||||
E97B3CFAB59B49BACFFC5F7C /* moc_title.cpp in Compile Sources */,
|
||||
07D8510819F8340A00623D75 /* moc_usernamebox.cpp in Compile Sources */,
|
||||
9A0D5DDC7816FC2538EB6A96 /* moc_window.cpp in Compile Sources */,
|
||||
9A0D5DDC7816FC2538EB6A96 /* moc_mainwindow.cpp in Compile Sources */,
|
||||
06EABCC49D2EEE4076322BE7 /* moc_facade.cpp in Compile Sources */,
|
||||
0755AEDE1AD12A80004D738A /* moc_intropwdcheck.cpp in Compile Sources */,
|
||||
07DE92AA1AA4928200A18F6F /* moc_autolockbox.cpp in Compile Sources */,
|
||||
|
|
|
@ -56,7 +56,7 @@ compilers: GeneratedFiles/qrc_telegram.cpp\
|
|||
GeneratedFiles/Debug/moc_sysbuttons.cpp\
|
||||
GeneratedFiles/Debug/moc_title.cpp\
|
||||
GeneratedFiles/Debug/moc_basic_types.cpp\
|
||||
GeneratedFiles/Debug/moc_window.cpp\
|
||||
GeneratedFiles/Debug/moc_mainwindow.cpp\
|
||||
GeneratedFiles/Debug/moc_facade.cpp\
|
||||
GeneratedFiles/Debug/moc_connection.cpp\
|
||||
GeneratedFiles/Debug/moc_connection_abstract.cpp\
|
||||
|
@ -181,7 +181,7 @@ compiler_moc_header_make_all: GeneratedFiles/Debug/moc_apiwrap.cpp\
|
|||
GeneratedFiles/Debug/moc_sysbuttons.cpp\
|
||||
GeneratedFiles/Debug/moc_title.cpp\
|
||||
GeneratedFiles/Debug/moc_basic_types.cpp\
|
||||
GeneratedFiles/Debug/moc_window.cpp\
|
||||
GeneratedFiles/Debug/moc_mainwindow.cpp\
|
||||
GeneratedFiles/Debug/moc_facade.cpp\
|
||||
GeneratedFiles/Debug/moc_connection.cpp\
|
||||
GeneratedFiles/Debug/moc_connection_abstract.cpp\
|
||||
|
@ -249,7 +249,7 @@ compiler_moc_header_clean:
|
|||
GeneratedFiles/Debug/moc_sysbuttons.cpp\
|
||||
GeneratedFiles/Debug/moc_title.cpp\
|
||||
GeneratedFiles/Debug/moc_basic_types.cpp\
|
||||
GeneratedFiles/Debug/moc_window.cpp\
|
||||
GeneratedFiles/Debug/moc_mainwindow.cpp\
|
||||
GeneratedFiles/Debug/moc_facade.cpp\
|
||||
GeneratedFiles/Debug/moc_connection.cpp\
|
||||
GeneratedFiles/Debug/moc_connection_abstract.cpp\
|
||||
|
@ -294,7 +294,7 @@ compiler_moc_header_clean:
|
|||
GeneratedFiles/Debug/moc_intropwdcheck.cpp\
|
||||
GeneratedFiles/Debug/moc_introsignup.cpp\
|
||||
GeneratedFiles/Debug/moc_pspecific_mac.cpp
|
||||
GeneratedFiles/Debug/moc_apiwrap.cpp: SourceFiles/basic_types.h \
|
||||
GeneratedFiles/Debug/moc_apiwrap.cpp: SourceFiles/core/basic_types.h \
|
||||
SourceFiles/logs.h \
|
||||
SourceFiles/apiwrap.h
|
||||
/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/apiwrap.h -o GeneratedFiles/Debug/moc_apiwrap.cpp
|
||||
|
@ -302,12 +302,12 @@ GeneratedFiles/Debug/moc_apiwrap.cpp: SourceFiles/basic_types.h \
|
|||
GeneratedFiles/Debug/moc_application.cpp: ../../Libraries/QtStatic/qtbase/include/QtNetwork/QLocalSocket \
|
||||
../../Libraries/QtStatic/qtbase/include/QtNetwork/QLocalServer \
|
||||
../../Libraries/QtStatic/qtbase/include/QtNetwork/QNetworkReply \
|
||||
SourceFiles/window.h \
|
||||
SourceFiles/mainwindow.h \
|
||||
SourceFiles/title.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \
|
||||
SourceFiles/sysbuttons.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -323,7 +323,7 @@ GeneratedFiles/Debug/moc_application.cpp: ../../Libraries/QtStatic/qtbase/includ
|
|||
SourceFiles/application.h
|
||||
/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/application.h -o GeneratedFiles/Debug/moc_application.cpp
|
||||
|
||||
GeneratedFiles/Debug/moc_audio.cpp: SourceFiles/basic_types.h \
|
||||
GeneratedFiles/Debug/moc_audio.cpp: SourceFiles/core/basic_types.h \
|
||||
SourceFiles/audio.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
|
@ -331,7 +331,7 @@ GeneratedFiles/Debug/moc_audio.cpp: SourceFiles/basic_types.h \
|
|||
../../Libraries/QtStatic/qtbase/include/QtGui/QColor
|
||||
/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/audio.h -o GeneratedFiles/Debug/moc_audio.cpp
|
||||
|
||||
GeneratedFiles/Debug/moc_autoupdater.cpp: SourceFiles/basic_types.h \
|
||||
GeneratedFiles/Debug/moc_autoupdater.cpp: SourceFiles/core/basic_types.h \
|
||||
SourceFiles/autoupdater.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
|
@ -393,7 +393,7 @@ GeneratedFiles/Debug/moc_mainwidget.cpp: ../../Libraries/QtStatic/qtbase/include
|
|||
SourceFiles/ui/twidget.h \
|
||||
SourceFiles/ui/flatcheckbox.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -417,7 +417,7 @@ GeneratedFiles/Debug/moc_settingswidget.cpp: SourceFiles/ui/flatbutton.h \
|
|||
SourceFiles/ui/twidget.h \
|
||||
SourceFiles/ui/flatcheckbox.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -431,7 +431,7 @@ GeneratedFiles/Debug/moc_settingswidget.cpp: SourceFiles/ui/flatbutton.h \
|
|||
|
||||
GeneratedFiles/Debug/moc_sysbuttons.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -445,7 +445,7 @@ GeneratedFiles/Debug/moc_sysbuttons.cpp: ../../Libraries/QtStatic/qtbase/include
|
|||
GeneratedFiles/Debug/moc_title.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \
|
||||
SourceFiles/sysbuttons.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -455,18 +455,18 @@ GeneratedFiles/Debug/moc_title.cpp: ../../Libraries/QtStatic/qtbase/include/QtWi
|
|||
SourceFiles/title.h
|
||||
/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/title.h -o GeneratedFiles/Debug/moc_title.cpp
|
||||
|
||||
GeneratedFiles/Debug/moc_basic_types.cpp: SourceFiles/basic_types.h \
|
||||
GeneratedFiles/Debug/moc_basic_types.cpp: SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer
|
||||
/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/basic_types.h -o GeneratedFiles/Debug/moc_basic_types.cpp
|
||||
/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/core/basic_types.h -o GeneratedFiles/Debug/moc_basic_types.cpp
|
||||
|
||||
GeneratedFiles/Debug/moc_window.cpp: SourceFiles/title.h \
|
||||
GeneratedFiles/Debug/moc_mainwindow.cpp: SourceFiles/title.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \
|
||||
SourceFiles/sysbuttons.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -481,8 +481,8 @@ GeneratedFiles/Debug/moc_window.cpp: SourceFiles/title.h \
|
|||
SourceFiles/pspecific_winrt.h \
|
||||
SourceFiles/passcodewidget.h \
|
||||
SourceFiles/ui/boxshadow.h \
|
||||
SourceFiles/window.h
|
||||
/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/window.h -o GeneratedFiles/Debug/moc_window.cpp
|
||||
SourceFiles/mainwindow.h
|
||||
/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/mainwindow.h -o GeneratedFiles/Debug/moc_mainwindow.cpp
|
||||
|
||||
GeneratedFiles/Debug/moc_facade.cpp: SourceFiles/mtproto/session.h \
|
||||
SourceFiles/mtproto/connection.h \
|
||||
|
@ -491,7 +491,7 @@ GeneratedFiles/Debug/moc_facade.cpp: SourceFiles/mtproto/session.h \
|
|||
SourceFiles/mtproto/connection_http.h \
|
||||
SourceFiles/mtproto/connection_tcp.h \
|
||||
SourceFiles/mtproto/core_types.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
SourceFiles/mtproto/scheme_auto.h \
|
||||
|
@ -504,7 +504,7 @@ GeneratedFiles/Debug/moc_facade.cpp: SourceFiles/mtproto/session.h \
|
|||
/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/mtproto/facade.h -o GeneratedFiles/Debug/moc_facade.cpp
|
||||
|
||||
GeneratedFiles/Debug/moc_connection.cpp: SourceFiles/mtproto/core_types.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
SourceFiles/mtproto/scheme_auto.h \
|
||||
|
@ -514,7 +514,7 @@ GeneratedFiles/Debug/moc_connection.cpp: SourceFiles/mtproto/core_types.h \
|
|||
/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/mtproto/connection.h -o GeneratedFiles/Debug/moc_connection.cpp
|
||||
|
||||
GeneratedFiles/Debug/moc_connection_abstract.cpp: SourceFiles/mtproto/core_types.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
SourceFiles/mtproto/scheme_auto.h \
|
||||
|
@ -524,7 +524,7 @@ GeneratedFiles/Debug/moc_connection_abstract.cpp: SourceFiles/mtproto/core_types
|
|||
/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/mtproto/connection_abstract.h -o GeneratedFiles/Debug/moc_connection_abstract.cpp
|
||||
|
||||
GeneratedFiles/Debug/moc_connection_auto.cpp: SourceFiles/mtproto/core_types.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
SourceFiles/mtproto/scheme_auto.h \
|
||||
|
@ -534,7 +534,7 @@ GeneratedFiles/Debug/moc_connection_auto.cpp: SourceFiles/mtproto/core_types.h \
|
|||
/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/mtproto/connection_auto.h -o GeneratedFiles/Debug/moc_connection_auto.cpp
|
||||
|
||||
GeneratedFiles/Debug/moc_connection_http.cpp: SourceFiles/mtproto/core_types.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
SourceFiles/mtproto/scheme_auto.h \
|
||||
|
@ -544,7 +544,7 @@ GeneratedFiles/Debug/moc_connection_http.cpp: SourceFiles/mtproto/core_types.h \
|
|||
/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/mtproto/connection_http.h -o GeneratedFiles/Debug/moc_connection_http.cpp
|
||||
|
||||
GeneratedFiles/Debug/moc_connection_tcp.cpp: SourceFiles/mtproto/core_types.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
SourceFiles/mtproto/scheme_auto.h \
|
||||
|
@ -565,7 +565,7 @@ GeneratedFiles/Debug/moc_session.cpp: SourceFiles/mtproto/connection.h \
|
|||
SourceFiles/mtproto/connection_http.h \
|
||||
SourceFiles/mtproto/connection_tcp.h \
|
||||
SourceFiles/mtproto/core_types.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
SourceFiles/mtproto/scheme_auto.h \
|
||||
|
@ -576,7 +576,7 @@ GeneratedFiles/Debug/moc_session.cpp: SourceFiles/mtproto/connection.h \
|
|||
SourceFiles/mtproto/session.h
|
||||
/usr/local/Qt-5.5.1/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.1/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.1/include/QtGui/5.5.1/QtGui -I/usr/local/Qt-5.5.1/include/QtCore/5.5.1/QtCore -I/usr/local/Qt-5.5.1/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.5.1/include -I/usr/local/Qt-5.5.1/include/QtMultimedia -I/usr/local/Qt-5.5.1/include/QtWidgets -I/usr/local/Qt-5.5.1/include/QtNetwork -I/usr/local/Qt-5.5.1/include/QtGui -I/usr/local/Qt-5.5.1/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/mtproto/session.h -o GeneratedFiles/Debug/moc_session.cpp
|
||||
|
||||
GeneratedFiles/Debug/moc_animation.cpp: SourceFiles/basic_types.h \
|
||||
GeneratedFiles/Debug/moc_animation.cpp: SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -604,7 +604,7 @@ GeneratedFiles/Debug/moc_countryinput.cpp: ../../Libraries/QtStatic/qtbase/inclu
|
|||
SourceFiles/ui/flatinput.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -624,7 +624,7 @@ GeneratedFiles/Debug/moc_flatbutton.cpp: SourceFiles/ui/button.h \
|
|||
SourceFiles/ui/twidget.h \
|
||||
SourceFiles/ui/flatcheckbox.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -646,7 +646,7 @@ GeneratedFiles/Debug/moc_flatinput.cpp: ../../Libraries/QtStatic/qtbase/include/
|
|||
GeneratedFiles/style_classes.h \
|
||||
GeneratedFiles/style_auto.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -665,7 +665,7 @@ GeneratedFiles/Debug/moc_flattextarea.cpp: ../../Libraries/QtStatic/qtbase/inclu
|
|||
GeneratedFiles/style_classes.h \
|
||||
GeneratedFiles/style_auto.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -721,7 +721,7 @@ GeneratedFiles/Debug/moc_connectionbox.cpp: SourceFiles/boxes/abstractbox.h \
|
|||
GeneratedFiles/style_classes.h \
|
||||
GeneratedFiles/style_auto.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -742,7 +742,7 @@ GeneratedFiles/Debug/moc_downloadpathbox.cpp: SourceFiles/boxes/abstractbox.h \
|
|||
GeneratedFiles/style_classes.h \
|
||||
GeneratedFiles/style_auto.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -799,7 +799,7 @@ GeneratedFiles/Debug/moc_introwidget.cpp: ../../Libraries/QtStatic/qtbase/includ
|
|||
SourceFiles/ui/twidget.h \
|
||||
SourceFiles/ui/flatcheckbox.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -816,7 +816,7 @@ GeneratedFiles/Debug/moc_introcode.cpp: ../../Libraries/QtStatic/qtbase/include/
|
|||
SourceFiles/ui/twidget.h \
|
||||
SourceFiles/ui/flatcheckbox.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -836,7 +836,7 @@ GeneratedFiles/Debug/moc_introphone.cpp: ../../Libraries/QtStatic/qtbase/include
|
|||
SourceFiles/ui/twidget.h \
|
||||
SourceFiles/ui/flatcheckbox.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -860,7 +860,7 @@ GeneratedFiles/Debug/moc_intropwdcheck.cpp: ../../Libraries/QtStatic/qtbase/incl
|
|||
SourceFiles/ui/twidget.h \
|
||||
SourceFiles/ui/flatcheckbox.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
@ -884,7 +884,7 @@ GeneratedFiles/Debug/moc_introsignup.cpp: ../../Libraries/QtStatic/qtbase/includ
|
|||
SourceFiles/ui/twidget.h \
|
||||
SourceFiles/ui/flatcheckbox.h \
|
||||
SourceFiles/ui/animation.h \
|
||||
SourceFiles/basic_types.h \
|
||||
SourceFiles/core/basic_types.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \
|
||||
SourceFiles/logs.h \
|
||||
../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \
|
||||
|
|
Loading…
Add table
Reference in a new issue