mirror of
https://github.com/vale981/tdesktop
synced 2025-03-06 10:11:41 -05:00
Merge branch 'master' of https://github.com/telegramdesktop/tdesktop
This commit is contained in:
commit
2ea4c87d78
11 changed files with 167 additions and 68 deletions
|
@ -126,6 +126,13 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv) {
|
|||
}
|
||||
}
|
||||
|
||||
bool Application::event(QEvent *e) {
|
||||
if (e->type() == QEvent::Close) {
|
||||
App::quit();
|
||||
}
|
||||
return QApplication::event(e);
|
||||
}
|
||||
|
||||
void Application::socketConnected() {
|
||||
LOG(("Socket connected, this is not the first application instance, sending show command..."));
|
||||
_secondInstance = true;
|
||||
|
|
|
@ -28,12 +28,12 @@ class Application : public QApplication {
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
Application(int &argc, char **argv);
|
||||
|
||||
bool event(QEvent *e) override;
|
||||
|
||||
// Single instance application
|
||||
public slots:
|
||||
|
||||
void socketConnected();
|
||||
void socketError(QLocalSocket::LocalSocketError e);
|
||||
void socketDisconnected();
|
||||
|
@ -48,7 +48,6 @@ public slots:
|
|||
void closeApplication(); // will be done in aboutToQuit()
|
||||
|
||||
private:
|
||||
|
||||
typedef QPair<QLocalSocket*, QByteArray> LocalClient;
|
||||
typedef QList<LocalClient> LocalClients;
|
||||
|
||||
|
@ -64,7 +63,6 @@ private:
|
|||
|
||||
// Autoupdating
|
||||
public:
|
||||
|
||||
void startUpdateCheck(bool forceWait);
|
||||
void stopUpdate();
|
||||
|
||||
|
@ -78,7 +76,6 @@ public:
|
|||
int32 updatingReady();
|
||||
|
||||
signals:
|
||||
|
||||
void updateChecking();
|
||||
void updateLatest();
|
||||
void updateProgress(qint64 ready, qint64 total);
|
||||
|
@ -86,7 +83,6 @@ signals:
|
|||
void updateFailed();
|
||||
|
||||
public slots:
|
||||
|
||||
void updateCheck();
|
||||
|
||||
void updateGotCurrent();
|
||||
|
@ -96,7 +92,6 @@ public slots:
|
|||
void onUpdateFailed();
|
||||
|
||||
private:
|
||||
|
||||
SingleTimer _updateCheckTimer;
|
||||
QNetworkReply *_updateReply = nullptr;
|
||||
QNetworkAccessManager _updateManager;
|
||||
|
|
|
@ -5896,7 +5896,9 @@ void LocationManager::init() {
|
|||
App::setProxySettings(*manager);
|
||||
|
||||
connect(manager, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)), this, SLOT(onFailed(QNetworkReply*)));
|
||||
#ifndef OS_MAC_OLD
|
||||
connect(manager, SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError>&)), this, SLOT(onFailed(QNetworkReply*)));
|
||||
#endif // OS_MAC_OLD
|
||||
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onFinished(QNetworkReply*)));
|
||||
|
||||
if (black) {
|
||||
|
|
|
@ -581,6 +581,7 @@ namespace {
|
|||
FileKey _backgroundKey = 0;
|
||||
bool _backgroundWasRead = false;
|
||||
|
||||
bool _readingUserSettings = false;
|
||||
FileKey _userSettingsKey = 0;
|
||||
FileKey _recentHashtagsAndBotsKey = 0;
|
||||
bool _recentHashtagsAndBotsWereRead = false;
|
||||
|
@ -1548,6 +1549,12 @@ namespace {
|
|||
}
|
||||
|
||||
void _writeUserSettings() {
|
||||
if (_readingUserSettings) {
|
||||
LOG(("App Error: attempt to write settings while reading them!"));
|
||||
return;
|
||||
}
|
||||
LOG(("App Info: writing encrypted user settings..."));
|
||||
|
||||
if (!_userSettingsKey) {
|
||||
_userSettingsKey = genKey();
|
||||
_mapChanged = true;
|
||||
|
@ -1622,22 +1629,28 @@ namespace {
|
|||
void _readUserSettings() {
|
||||
FileReadDescriptor userSettings;
|
||||
if (!readEncryptedFile(userSettings, _userSettingsKey)) {
|
||||
LOG(("App Info: could not read encrypted user settings..."));
|
||||
_readOldUserSettings();
|
||||
return _writeUserSettings();
|
||||
}
|
||||
|
||||
LOG(("App Info: reading encrypted user settings..."));
|
||||
_readingUserSettings = true;
|
||||
while (!userSettings.stream.atEnd()) {
|
||||
quint32 blockId;
|
||||
userSettings.stream >> blockId;
|
||||
if (!_checkStreamStatus(userSettings.stream)) {
|
||||
_readingUserSettings = false;
|
||||
return _writeUserSettings();
|
||||
}
|
||||
|
||||
if (!_readSetting(blockId, userSettings.stream, userSettings.version)) {
|
||||
_readingUserSettings = false;
|
||||
return _writeUserSettings();
|
||||
}
|
||||
}
|
||||
_readingUserSettings = false;
|
||||
LOG(("App Info: encrypted user settings read."));
|
||||
}
|
||||
|
||||
void _writeMtpData() {
|
||||
|
|
|
@ -520,6 +520,74 @@ void MediaView::step_radial(uint64 ms, bool timer) {
|
|||
}
|
||||
}
|
||||
|
||||
void MediaView::zoomIn() {
|
||||
int32 newZoom = _zoom;
|
||||
if (newZoom == ZoomToScreenLevel) {
|
||||
if (qCeil(_zoomToScreen) <= MaxZoomLevel) {
|
||||
newZoom = qCeil(_zoomToScreen);
|
||||
}
|
||||
} else {
|
||||
if (newZoom < _zoomToScreen && (newZoom + 1 > _zoomToScreen || (_zoomToScreen > MaxZoomLevel && newZoom == MaxZoomLevel))) {
|
||||
newZoom = ZoomToScreenLevel;
|
||||
} else if (newZoom < MaxZoomLevel) {
|
||||
++newZoom;
|
||||
}
|
||||
}
|
||||
zoomUpdate(newZoom);
|
||||
}
|
||||
|
||||
void MediaView::zoomOut() {
|
||||
int32 newZoom = _zoom;
|
||||
if (newZoom == ZoomToScreenLevel) {
|
||||
if (qFloor(_zoomToScreen) >= -MaxZoomLevel) {
|
||||
newZoom = qFloor(_zoomToScreen);
|
||||
}
|
||||
} else {
|
||||
if (newZoom > _zoomToScreen && (newZoom - 1 < _zoomToScreen || (_zoomToScreen < -MaxZoomLevel && newZoom == -MaxZoomLevel))) {
|
||||
newZoom = ZoomToScreenLevel;
|
||||
} else if (newZoom > -MaxZoomLevel) {
|
||||
--newZoom;
|
||||
}
|
||||
}
|
||||
zoomUpdate(newZoom);
|
||||
}
|
||||
|
||||
void MediaView::zoomReset() {
|
||||
int32 newZoom = _zoom;
|
||||
if (_zoom == 0) {
|
||||
if (qFloor(_zoomToScreen) == qCeil(_zoomToScreen) && qRound(_zoomToScreen) >= -MaxZoomLevel && qRound(_zoomToScreen) <= MaxZoomLevel) {
|
||||
newZoom = qRound(_zoomToScreen);
|
||||
} else {
|
||||
newZoom = ZoomToScreenLevel;
|
||||
}
|
||||
} else {
|
||||
newZoom = 0;
|
||||
}
|
||||
_x = -_width / 2;
|
||||
_y = -((gifShown() ? _gif->height() : (_current.height() / cIntRetinaFactor())) / 2);
|
||||
float64 z = (_zoom == ZoomToScreenLevel) ? _zoomToScreen : _zoom;
|
||||
if (z >= 0) {
|
||||
_x = qRound(_x * (z + 1));
|
||||
_y = qRound(_y * (z + 1));
|
||||
} else {
|
||||
_x = qRound(_x / (-z + 1));
|
||||
_y = qRound(_y / (-z + 1));
|
||||
}
|
||||
_x += width() / 2;
|
||||
_y += height() / 2;
|
||||
update();
|
||||
zoomUpdate(newZoom);
|
||||
}
|
||||
|
||||
void MediaView::zoomUpdate(int32 &newZoom) {
|
||||
if (newZoom != ZoomToScreenLevel) {
|
||||
while ((newZoom < 0 && (-newZoom + 1) > _w) || (-newZoom + 1) > _h) {
|
||||
++newZoom;
|
||||
}
|
||||
}
|
||||
setZoomLevel(newZoom);
|
||||
}
|
||||
|
||||
void MediaView::clearData() {
|
||||
if (!isHidden()) {
|
||||
hide();
|
||||
|
@ -1811,61 +1879,48 @@ void MediaView::keyPressEvent(QKeyEvent *e) {
|
|||
} else if (e->key() == Qt::Key_Right) {
|
||||
moveToNext(1);
|
||||
} else if (e->modifiers().testFlag(Qt::ControlModifier) && (e->key() == Qt::Key_Plus || e->key() == Qt::Key_Equal || e->key() == ']' || e->key() == Qt::Key_Asterisk || e->key() == Qt::Key_Minus || e->key() == Qt::Key_Underscore || e->key() == Qt::Key_0)) {
|
||||
int32 newZoom = _zoom;
|
||||
if (e->key() == Qt::Key_Plus || e->key() == Qt::Key_Equal || e->key() == Qt::Key_Asterisk || e->key() == ']') {
|
||||
if (newZoom == ZoomToScreenLevel) {
|
||||
if (qCeil(_zoomToScreen) <= MaxZoomLevel) {
|
||||
newZoom = qCeil(_zoomToScreen);
|
||||
}
|
||||
} else {
|
||||
if (newZoom < _zoomToScreen && (newZoom + 1 > _zoomToScreen || (_zoomToScreen > MaxZoomLevel && newZoom == MaxZoomLevel))) {
|
||||
newZoom = ZoomToScreenLevel;
|
||||
} else if (newZoom < MaxZoomLevel) {
|
||||
++newZoom;
|
||||
}
|
||||
}
|
||||
zoomIn();
|
||||
} else if (e->key() == Qt::Key_Minus || e->key() == Qt::Key_Underscore) {
|
||||
if (newZoom == ZoomToScreenLevel) {
|
||||
if (qFloor(_zoomToScreen) >= -MaxZoomLevel) {
|
||||
newZoom = qFloor(_zoomToScreen);
|
||||
zoomOut();
|
||||
} else {
|
||||
zoomReset();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MediaView::wheelEvent(QWheelEvent *e) {
|
||||
#ifdef OS_MAC_OLD
|
||||
constexpr auto step = 120;
|
||||
#else // OS_MAC_OLD
|
||||
constexpr auto step = static_cast<int>(QWheelEvent::DefaultDeltasPerStep);
|
||||
#endif // OS_MAC_OLD
|
||||
|
||||
_verticalWheelDelta += e->angleDelta().y();
|
||||
while (qAbs(_verticalWheelDelta) >= step) {
|
||||
if (_verticalWheelDelta < 0) {
|
||||
_verticalWheelDelta += step;
|
||||
if (e->modifiers().testFlag(Qt::ControlModifier)) {
|
||||
zoomOut();
|
||||
} else {
|
||||
#ifndef OS_MAC_OLD
|
||||
if (e->source() == Qt::MouseEventNotSynthesized) {
|
||||
moveToNext(1);
|
||||
}
|
||||
#endif // OS_MAC_OLD
|
||||
}
|
||||
} else {
|
||||
if (newZoom > _zoomToScreen && (newZoom - 1 < _zoomToScreen || (_zoomToScreen < -MaxZoomLevel && newZoom == -MaxZoomLevel))) {
|
||||
newZoom = ZoomToScreenLevel;
|
||||
} else if (newZoom > -MaxZoomLevel) {
|
||||
--newZoom;
|
||||
}
|
||||
}
|
||||
_verticalWheelDelta -= step;
|
||||
if (e->modifiers().testFlag(Qt::ControlModifier)) {
|
||||
zoomIn();
|
||||
} else {
|
||||
if (_zoom == 0) {
|
||||
if (qFloor(_zoomToScreen) == qCeil(_zoomToScreen) && qRound(_zoomToScreen) >= -MaxZoomLevel && qRound(_zoomToScreen) <= MaxZoomLevel) {
|
||||
newZoom = qRound(_zoomToScreen);
|
||||
} else {
|
||||
newZoom = ZoomToScreenLevel;
|
||||
#ifndef OS_MAC_OLD
|
||||
if (e->source() == Qt::MouseEventNotSynthesized) {
|
||||
moveToNext(-1);
|
||||
}
|
||||
} else {
|
||||
newZoom = 0;
|
||||
}
|
||||
_x = -_width / 2;
|
||||
_y = -((gifShown() ? _gif->height() : (_current.height() / cIntRetinaFactor())) / 2);
|
||||
float64 z = (_zoom == ZoomToScreenLevel) ? _zoomToScreen : _zoom;
|
||||
if (z >= 0) {
|
||||
_x = qRound(_x * (z + 1));
|
||||
_y = qRound(_y * (z + 1));
|
||||
} else {
|
||||
_x = qRound(_x / (-z + 1));
|
||||
_y = qRound(_y / (-z + 1));
|
||||
}
|
||||
_x += width() / 2;
|
||||
_y += height() / 2;
|
||||
update();
|
||||
}
|
||||
if (newZoom != ZoomToScreenLevel) {
|
||||
while ((newZoom < 0 && (-newZoom + 1) > _w) || (-newZoom + 1) > _h) {
|
||||
++newZoom;
|
||||
#endif // OS_MAC_OLD
|
||||
}
|
||||
}
|
||||
setZoomLevel(newZoom);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2114,6 +2169,8 @@ void MediaView::mousePressEvent(QMouseEvent *e) {
|
|||
_yStart = _y;
|
||||
}
|
||||
}
|
||||
} else if (e->button() == Qt::MiddleButton) {
|
||||
zoomReset();
|
||||
}
|
||||
activateControls();
|
||||
}
|
||||
|
|
|
@ -107,6 +107,7 @@ protected:
|
|||
void paintEvent(QPaintEvent *e) override;
|
||||
|
||||
void keyPressEvent(QKeyEvent *e) override;
|
||||
void wheelEvent(QWheelEvent *e) override;
|
||||
void mousePressEvent(QMouseEvent *e) override;
|
||||
void mouseDoubleClickEvent(QMouseEvent *e) override;
|
||||
void mouseMoveEvent(QMouseEvent *e) override;
|
||||
|
@ -170,6 +171,11 @@ private:
|
|||
void step_state(uint64 ms, bool timer);
|
||||
void step_radial(uint64 ms, bool timer);
|
||||
|
||||
void zoomIn();
|
||||
void zoomOut();
|
||||
void zoomReset();
|
||||
void zoomUpdate(int32 &newZoom);
|
||||
|
||||
void paintDocRadialLoading(Painter &p, bool radial, float64 radialOpacity);
|
||||
|
||||
QBrush _transparentBrush;
|
||||
|
@ -316,6 +322,8 @@ private:
|
|||
typedef QMap<OverState, anim::fvalue> ShowingOpacities;
|
||||
ShowingOpacities _animOpacities;
|
||||
|
||||
int _verticalWheelDelta = 0;
|
||||
|
||||
void updateOverRect(OverState state);
|
||||
bool updateOverState(OverState newState);
|
||||
float64 overLevel(OverState control) const;
|
||||
|
|
|
@ -818,7 +818,9 @@ WebLoadManager::WebLoadManager(QThread *thread) {
|
|||
connect(this, SIGNAL(error(webFileLoader*)), _webLoadMainManager, SLOT(error(webFileLoader*)));
|
||||
|
||||
connect(&_manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), this, SLOT(onFailed(QNetworkReply*)));
|
||||
#ifndef OS_MAC_OLD
|
||||
connect(&_manager, SIGNAL(sslErrors(QNetworkReply*,const QList<QSslError>&)), this, SLOT(onFailed(QNetworkReply*)));
|
||||
#endif // OS_MAC_OLD
|
||||
}
|
||||
|
||||
void WebLoadManager::append(webFileLoader *loader, const QString &url) {
|
||||
|
|
|
@ -189,7 +189,6 @@
|
|||
'<(qt_loc)/plugins/bearer',
|
||||
'<(qt_loc)/plugins/platforms',
|
||||
'<(qt_loc)/plugins/imageformats',
|
||||
'<(qt_loc)/plugins/platforminputcontexts',
|
||||
],
|
||||
'defines': [
|
||||
'QT_WIDGETS_LIB',
|
||||
|
@ -199,6 +198,9 @@
|
|||
],
|
||||
'conditions': [
|
||||
[ 'build_linux', {
|
||||
'library_dirs': [
|
||||
'<(qt_loc)/plugins/platforminputcontexts',
|
||||
],
|
||||
'libraries': [
|
||||
'/usr/local/lib/libxkbcommon.a',
|
||||
'<@(qt_libs_release)',
|
||||
|
|
|
@ -19,7 +19,7 @@ else
|
|||
#gyp --depth=. --generator-output=../.. -Goutput_dir=out Telegram.gyp --format=xcode-ninja
|
||||
#gyp --depth=. --generator-output=../.. -Goutput_dir=out Telegram.gyp --format=xcode
|
||||
# use patched gyp with Xcode project generator
|
||||
../../../Libraries/gyp/gyp --depth=. --generator-output=../.. -Goutput_dir=out Telegram.gyp --format=xcode
|
||||
../../../Libraries/gyp/gyp --depth=. --generator-output=../.. -Goutput_dir=out Telegram.gyp -Gxcode_upgrade_check_project_version=800 --format=xcode
|
||||
fi
|
||||
|
||||
cd ../..
|
||||
|
|
|
@ -91,6 +91,12 @@
|
|||
'lzma',
|
||||
],
|
||||
}],
|
||||
[ 'build_mac', {
|
||||
'include_dirs': [
|
||||
'<(libs_loc)/openssl-xcode/include'
|
||||
],
|
||||
'library_dirs': [
|
||||
'<(libs_loc)/openssl-xcode',
|
||||
],
|
||||
'xcode_settings': {
|
||||
'OTHER_LDFLAGS': [
|
||||
|
@ -99,6 +105,8 @@
|
|||
'-llzma',
|
||||
],
|
||||
},
|
||||
}],
|
||||
],
|
||||
'include_dirs': [
|
||||
'<(src_loc)',
|
||||
'<(libs_loc)/lzma/C',
|
||||
|
|
|
@ -205,6 +205,11 @@ If you didn't install Windows SDKs before, you need to install them now. To inst
|
|||
If you already have Windows SDKs then find the library folder and correct it at configure's command below (like **C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86**).
|
||||
|
||||
#### Building library
|
||||
go to Libraries directory
|
||||
|
||||
D:
|
||||
cd /tbuild/libraries/qt5_6_0/qtbase
|
||||
and run
|
||||
|
||||
configure -debug-and-release -force-debug-info -opensource -confirm-license -static -I "D:\TBuild\Libraries\openssl\Release\include" -L "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib" -l Gdi32 -no-opengl -openssl-linked OPENSSL_LIBS_DEBUG="D:\TBuild\Libraries\openssl_debug\Debug\lib\ssleay32.lib D:\TBuild\Libraries\openssl_debug\Debug\lib\libeay32.lib" OPENSSL_LIBS_RELEASE="D:\TBuild\Libraries\openssl\Release\lib\ssleay32.lib D:\TBuild\Libraries\openssl\Release\lib\libeay32.lib" -mp -nomake examples -nomake tests -platform win32-msvc2015
|
||||
nmake
|
||||
|
@ -247,8 +252,8 @@ and run
|
|||
#### Build
|
||||
|
||||
* Open in VS2015 **D:\TBuild\Libraries\breakpad\src\client\windows\breakpad_client.sln**
|
||||
* Change "Treat WChar_t As Built in Type" to "No" in all projects & configurations
|
||||
* Change "Treat Warnings As Errors" to "No" in all projects & configurations
|
||||
* Change "Treat WChar_t As Built in Type" to "No" in all projects & configurations (should be in project>>properties>>C/C++>>Language)
|
||||
* Change "Treat Warnings As Errors" to "No" in all projects & configurations (should be in project>>properties>>C/C++>>General)
|
||||
* Build Debug configuration
|
||||
* Build Release configuration
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue