diff --git a/QTCREATOR.md b/QTCREATOR.md index 74942a793c9b47..e76a600f0c3fa4 100644 --- a/QTCREATOR.md +++ b/QTCREATOR.md @@ -22,7 +22,7 @@ Choose a folder for the future build, for example **/home/user/TBuild** There yo By git – in Terminal go to **/home/user/TBuild** and run - git clone https://github.com/telegramdesktop/tdesktop.git + git clone https://github.com/telegramdesktop/tdesktop.git or download in ZIP and extract to **/home/user/TBuild** rename **tdesktop-master** to **tdesktop** to have **/home/user/TBuild/tdesktop/Telegram/Telegram.pro** project @@ -44,11 +44,11 @@ Apply patch – copy (with overwrite!) everything from **/home/user/TBuild/tdesk Install some packages for Qt (see **/home/user/TBuild/Libraries/QtStatic/qtbase/src/plugins/platforms/xcb/README**) - sudo apt-get install libxcb1-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-icccm4-dev libxcb-render-util0-dev libxcb-util0-dev libxrender-dev libpulse-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-randr0-dev libx11-xcb-dev + sudo apt-get install libxcb1-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-icccm4-dev libxcb-render-util0-dev libxcb-util0-dev libxrender-dev libasound-dev libpulse-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-randr0-dev libx11-xcb-dev In Terminal go to **/home/user/TBuild/Libraries/QtStatic** and there run - ./configure -release -opensource -no-opengl -static -nomake examples -skip qtquick1 -skip qtdeclarative + ./configure -release -opensource -confirm-license -qt-xcb -no-opengl -static -nomake examples -skip qtquick1 -skip qtdeclarative y make sudo make install diff --git a/Telegram/PrepareLinux.sh b/Telegram/PrepareLinux.sh index dfa0a2a3a675d3..e1e0c3f92de1b2 100755 --- a/Telegram/PrepareLinux.sh +++ b/Telegram/PrepareLinux.sh @@ -1,5 +1,5 @@ -AppVersionStr=0.5.9 -AppVersion=5009 +AppVersionStr=0.5.10 +AppVersion=5010 if [ -d "./../Linux/Release/deploy/$AppVersionStr" ]; then echo "Deploy folder for version $AppVersionStr already exists!" diff --git a/Telegram/PrepareLinux32.sh b/Telegram/PrepareLinux32.sh index ef4d22c249769b..cf9fc4cfb99cf4 100755 --- a/Telegram/PrepareLinux32.sh +++ b/Telegram/PrepareLinux32.sh @@ -1,5 +1,5 @@ -AppVersionStr=0.5.9 -AppVersion=5009 +AppVersionStr=0.5.10 +AppVersion=5010 if [ -d "./../Linux/Release/deploy/$AppVersionStr" ]; then echo "Deploy folder for version $AppVersionStr already exists!" diff --git a/Telegram/PrepareMac.sh b/Telegram/PrepareMac.sh index 79d056d423e688..4b1c7fcc859d98 100755 --- a/Telegram/PrepareMac.sh +++ b/Telegram/PrepareMac.sh @@ -1,5 +1,5 @@ -AppVersionStr=0.5.9 -AppVersion=5009 +AppVersionStr=0.5.10 +AppVersion=5010 if [ -d "./../Mac/Release/deploy/$AppVersionStr" ]; then echo "Deploy folder for version $AppVersionStr already exists!" diff --git a/Telegram/Setup.iss b/Telegram/Setup.iss index 1803535ddd3377..1c91de999e4cfe 100644 --- a/Telegram/Setup.iss +++ b/Telegram/Setup.iss @@ -3,9 +3,9 @@ #define MyAppShortName "Telegram" #define MyAppName "Telegram Win (Unofficial)" -#define MyAppVersion "0.5.9" -#define MyAppVersionZero "0.5.9" -#define MyAppFullVersion "0.5.9.0" +#define MyAppVersion "0.5.10" +#define MyAppVersionZero "0.5.10" +#define MyAppFullVersion "0.5.10.0" #define MyAppPublisher "Telegram (Unofficial)" #define MyAppURL "https://tdesktop.com" #define MyAppExeName "Telegram.exe" diff --git a/Telegram/SourceFiles/config.h b/Telegram/SourceFiles/config.h index 043acd43502ccc..ca44939cdbf669 100644 --- a/Telegram/SourceFiles/config.h +++ b/Telegram/SourceFiles/config.h @@ -17,8 +17,8 @@ Copyright (c) 2014 John Preston, https://tdesktop.com */ #pragma once -static const int32 AppVersion = 5009; -static const wchar_t *AppVersionStr = L"0.5.9"; +static const int32 AppVersion = 5010; +static const wchar_t *AppVersionStr = L"0.5.10"; #ifdef Q_OS_WIN static const wchar_t *AppName = L"Telegram Win (Unofficial)"; #else diff --git a/Telegram/SourceFiles/gui/filedialog.cpp b/Telegram/SourceFiles/gui/filedialog.cpp index e51b41db121884..41552d0aacd486 100644 --- a/Telegram/SourceFiles/gui/filedialog.cpp +++ b/Telegram/SourceFiles/gui/filedialog.cpp @@ -62,14 +62,36 @@ void filedialogInit() { } } -// multipleFiles: 1 - multi open, 0 - single open, -1 - single save +// multipleFiles: 1 - multi open, 0 - single open, -1 - single save, -2 - select dir bool _filedialogGetFiles(QStringList &files, QByteArray &remoteContent, const QString &caption, const QString &filter, int multipleFiles, const QString &startFile = QString()) { - filedialogInit(); +#if defined Q_OS_LINUX || defined Q_OS_MAC // use native + remoteContent = QByteArray(); + QString file; + if (multipleFiles >= 0) { + files = QFileDialog::getOpenFileNames(App::wnd(), caption, startFile, filter); + return !files.isEmpty(); + } else if (multipleFiles < -1) { + file = QFileDialog::getExistingDirectory(App::wnd(), caption); + } else if (multipleFiles < 0) { + file = QFileDialog::getSaveFileName(App::wnd(), caption, startFile, filter); + } else { + file = QFileDialog::getOpenFileName(App::wnd(), caption, startFile, filter); + } + if (file.isEmpty()) { + files = QStringList(); + return false; + } else { + files = QStringList(file); + return true; + } +#endif + + filedialogInit(); // hack for fast non-native dialog create QFileDialog dialog(App::wnd(), caption, cDialogHelperPathFinal(), filter); - dialog.setModal(true); + dialog.setModal(true); if (multipleFiles >= 0) { // open file or files dialog.setFileMode(multipleFiles ? QFileDialog::ExistingFiles : QFileDialog::ExistingFile); dialog.setAcceptMode(QFileDialog::AcceptOpen); diff --git a/Telegram/SourceFiles/logs.cpp b/Telegram/SourceFiles/logs.cpp index 6511348f856a14..70ecef462b626d 100644 --- a/Telegram/SourceFiles/logs.cpp +++ b/Telegram/SourceFiles/logs.cpp @@ -118,12 +118,61 @@ void logWrite(const QString &v) { void logsInit() { static _StreamCreator streamCreator; if (mainLogStream) return; - -#if defined Q_OS_MAC && !defined _DEBUG - cForceWorkingDir(psAppDataPath()); + + QString wasDir = cWorkingDir(); +#if (defined Q_OS_MAC || defined Q_OS_LINUX) && !defined _DEBUG + cForceWorkingDir(psAppDataPath()); +#ifdef Q_OS_LINUX // fix first version + { + QFile data(wasDir + "data"), dataConfig(wasDir + "data_config"), tdataConfig(wasDir + "tdata/config"); + if (data.exists() && dataConfig.exists() && !QFileInfo(cWorkingDir() + "data").exists() && !QFileInfo(cWorkingDir() + "data_config").exists()) { // move to home dir + LOG(("Copying data to home dir '%1' from '%2'").arg(cWorkingDir()).arg(wasDir)); + if (data.copy(cWorkingDir() + "data")) { + LOG(("Copied 'data' to home dir")); + if (dataConfig.copy(cWorkingDir() + "data_config")) { + LOG(("Copied 'data_config' to home dir")); + bool tdataGood = true; + if (tdataConfig.exists()) { + tdataGood = false; + QDir().mkpath(cWorkingDir() + "tdata"); + if (tdataConfig.copy(cWorkingDir() + "tdata/config")) { + LOG(("Copied 'tdata/config' to home dir")); + tdataGood = true; + } else { + LOG(("Copied 'data' and 'data_config', but could not copy 'tdata/config'!")); + } + } + if (tdataGood) { + if (data.remove()) { + LOG(("Removed 'data'")); + } else { + LOG(("Could not remove 'data'")); + } + if (dataConfig.remove()) { + LOG(("Removed 'data_config'")); + } else { + LOG(("Could not remove 'data_config'")); + } + if (!tdataConfig.exists() || tdataConfig.remove()) { + LOG(("Removed 'tdata/config'")); + LOG(("Could not remove 'tdata/config'")); + } else { + } + QDir().rmdir(wasDir + "tdata"); + } + } else { + LOG(("Copied 'data', but could not copy 'data_config'!!")); + } + } else { + LOG(("Could not copy 'data'!")); + } + } + } +#endif #endif - QString oldDir = cWorkingDir(); + QString rightDir = cWorkingDir(); + cForceWorkingDir(rightDir); mainLog.setFileName(cWorkingDir() + "log.txt"); mainLog.open(QIODevice::WriteOnly | QIODevice::Text); if (!mainLog.isOpen()) { @@ -141,7 +190,7 @@ void logsInit() { mainLogStream->setDevice(&mainLog); mainLogStream->setCodec("UTF-8"); } else { - cForceWorkingDir(oldDir); + cForceWorkingDir(rightDir); } cForceWorkingDir(QDir(cWorkingDir()).absolutePath() + '/'); if (cDebug()) logsInitDebug(); diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index b9d3eb397d87d6..dc2204b37d527e 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -1384,7 +1384,7 @@ void MainWidget::activate() { } else { dialogs.activate(); } - } else { + } else if (App::wnd() && !App::wnd()->layerShown()) { if (!cSendPaths().isEmpty()) { hider = new HistoryHider(this); hider->show(); diff --git a/Telegram/SourceFiles/pspecific_linux.cpp b/Telegram/SourceFiles/pspecific_linux.cpp index ce080255af5986..957fb125eda870 100644 --- a/Telegram/SourceFiles/pspecific_linux.cpp +++ b/Telegram/SourceFiles/pspecific_linux.cpp @@ -27,6 +27,7 @@ Copyright (c) 2014 John Preston, https://tdesktop.com #include #include #include +#include namespace { bool frameless = true; @@ -767,7 +768,11 @@ QString psCurrentLanguage() { } QString psAppDataPath() { - return QString();//objc_appDataPath(); + struct passwd *pw = getpwuid(getuid()); + if (pw && pw->pw_dir && strlen(pw->pw_dir)) { + return QString::fromLocal8Bit(pw->pw_dir) + qsl("/.TelegramDesktop/"); + } + return QString(); } QString psCurrentExeDirectory(int argc, char *argv[]) { diff --git a/Telegram/SourceFiles/window.cpp b/Telegram/SourceFiles/window.cpp index 6131e5e68d00d4..44a3be1ae1258d 100644 --- a/Telegram/SourceFiles/window.cpp +++ b/Telegram/SourceFiles/window.cpp @@ -107,7 +107,7 @@ NotifyWindow::NotifyWindow(HistoryItem *msg, int32 x, int32 y) : history(msg->hi setGeometry(x, aY.current(), st::notifyWidth, st::notifyHeight); aOpacity.start(1); - setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint); + setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint); setAttribute(Qt::WA_MacAlwaysShowToolWindow); show(); diff --git a/Telegram/Telegram.plist b/Telegram/Telegram.plist index 41727d8f226962..221faef6c0ec92 100644 --- a/Telegram/Telegram.plist +++ b/Telegram/Telegram.plist @@ -11,7 +11,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.5.9 + 0.5.10 CFBundleSignature ???? NOTE diff --git a/Telegram/Telegram.pro b/Telegram/Telegram.pro index 51bd0d8c3745b8..83bdf310a6fb1b 100644 --- a/Telegram/Telegram.pro +++ b/Telegram/Telegram.pro @@ -251,8 +251,8 @@ INCLUDEPATH += ./../../Libraries/QtStatic/qtbase/include/QtGui/5.3.1/QtGui\ ./../../Libraries/QtStatic/qtbase/include\ ./SourceFiles\ ./GeneratedFiles -LIBS += -lcrypto -lssl -lz -ldl -llzma -lpulse -lexif -LIBS += ./../../../Libraries/QtStatic/qtmultimedia/plugins/audio/libqtmedia_pulse.a +LIBS += -lcrypto -lssl -lz -ldl -llzma -lexif + RESOURCES += \ ./SourceFiles/telegram_linux.qrc @@ -260,4 +260,3 @@ OTHER_FILES += \ Resources/style_classes.txt \ Resources/style.txt \ Resources/lang.txt - diff --git a/Telegram/Telegram.rc b/Telegram/Telegram.rc index 4e67d78c998ab8..2a6d0b9a5021ca 100644 Binary files a/Telegram/Telegram.rc and b/Telegram/Telegram.rc differ diff --git a/Telegram/Telegram.xcodeproj/project.pbxproj b/Telegram/Telegram.xcodeproj/project.pbxproj index 7af6996f48ad71..07bb55d41c9a9a 100644 --- a/Telegram/Telegram.xcodeproj/project.pbxproj +++ b/Telegram/Telegram.xcodeproj/project.pbxproj @@ -1453,7 +1453,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 0.5.9; + CURRENT_PROJECT_VERSION = 0.5.10; DEBUG_INFORMATION_FORMAT = dwarf; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -1471,7 +1471,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 0.5.9; + CURRENT_PROJECT_VERSION = 0.5.10; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = fast; GCC_PREFIX_HEADER = ./SourceFiles/stdafx.h; @@ -1495,9 +1495,9 @@ CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 0.5.9; + CURRENT_PROJECT_VERSION = 0.5.10; DYLIB_COMPATIBILITY_VERSION = 0.5; - DYLIB_CURRENT_VERSION = 0.5.9; + DYLIB_CURRENT_VERSION = 0.5.10; FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = fast; @@ -1620,10 +1620,10 @@ CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 0.5.9; + CURRENT_PROJECT_VERSION = 0.5.10; DEBUG_INFORMATION_FORMAT = dwarf; DYLIB_COMPATIBILITY_VERSION = 0.5; - DYLIB_CURRENT_VERSION = 0.5.9; + DYLIB_CURRENT_VERSION = 0.5.10; FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; diff --git a/Telegram/_qt_5_3_1_patch/qtmultimedia/src/plugins/alsa/alsa.pro b/Telegram/_qt_5_3_1_patch/qtmultimedia/src/plugins/alsa/alsa.pro new file mode 100644 index 00000000000000..459321f0711fed --- /dev/null +++ b/Telegram/_qt_5_3_1_patch/qtmultimedia/src/plugins/alsa/alsa.pro @@ -0,0 +1,23 @@ +TARGET = qtaudio_alsa +QT += multimedia-private + +PLUGIN_TYPE = audio +PLUGIN_CLASS_NAME = QAlsaPlugin +load(qt_plugin) + +LIBS += -lasound +CONFIG += static plugin +HEADERS += \ + qalsaplugin.h \ + qalsaaudiodeviceinfo.h \ + qalsaaudioinput.h \ + qalsaaudiooutput.h + +SOURCES += \ + qalsaplugin.cpp \ + qalsaaudiodeviceinfo.cpp \ + qalsaaudioinput.cpp \ + qalsaaudiooutput.cpp + +OTHER_FILES += \ + alsa.json