mirror of
https://github.com/yann64/haikuports.git
synced 2026-05-01 04:28:53 +02:00
2588 lines
80 KiB
Plaintext
2588 lines
80 KiB
Plaintext
From a99908025182cde79a20f0501e2b3f86f7c7191e Mon Sep 17 00:00:00 2001
|
|
From: Sergei Reznikov <diver@gelios.net>
|
|
Date: Sat, 9 Sep 2017 02:14:52 +0300
|
|
Subject: Haiku fixes
|
|
|
|
|
|
diff --git a/Telegram/SourceFiles/autoupdater.cpp b/Telegram/SourceFiles/autoupdater.cpp
|
|
index a6aa4c2..45ba0ed 100644
|
|
--- a/Telegram/SourceFiles/autoupdater.cpp
|
|
+++ b/Telegram/SourceFiles/autoupdater.cpp
|
|
@@ -534,7 +534,7 @@ bool checkReadyUpdate() {
|
|
#elif defined Q_OS_MAC // Q_OS_WIN
|
|
QString curUpdater = (cExeDir() + cExeName() + qsl("/Contents/Frameworks/Updater"));
|
|
QFileInfo updater(cWorkingDir() + qsl("tupdates/temp/Telegram.app/Contents/Frameworks/Updater"));
|
|
-#elif defined Q_OS_LINUX // Q_OS_MAC
|
|
+#elif defined Q_OS_LINUX || defined Q_OS_HAIKU // Q_OS_MAC
|
|
QString curUpdater = (cExeDir() + qsl("Updater"));
|
|
QFileInfo updater(cWorkingDir() + qsl("tupdates/temp/Updater"));
|
|
#endif // Q_OS_LINUX
|
|
diff --git a/Telegram/SourceFiles/base/build_config.h b/Telegram/SourceFiles/base/build_config.h
|
|
index 1731630..3a93c27 100644
|
|
--- a/Telegram/SourceFiles/base/build_config.h
|
|
+++ b/Telegram/SourceFiles/base/build_config.h
|
|
@@ -30,13 +30,15 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
|
|
#define OS_LINUX 1
|
|
#elif defined(_WIN32) // __APPLE__ || __linux__
|
|
#define OS_WIN 1
|
|
+#elif defined(__HAIKU__) // __APPLE__ || __linux__
|
|
+#define OS_HAIKU 1
|
|
#else // __APPLE__ || __linux__ || _WIN32
|
|
#error Please add support for your platform in base/build_config.h
|
|
#endif // else for __APPLE__ || __linux__ || _WIN32
|
|
|
|
// For access to standard POSIXish features, use OS_POSIX instead of a
|
|
// more specific macro.
|
|
-#if defined(OS_MAC) || defined(OS_LINUX)
|
|
+#if defined(OS_MAC) || defined(OS_LINUX) || defined(OS_HAIKU)
|
|
#define OS_POSIX 1
|
|
#endif // OS_MAC || OS_LINUX
|
|
|
|
diff --git a/Telegram/SourceFiles/base/flags_tests.cpp b/Telegram/SourceFiles/base/flags_tests.cpp
|
|
index f2da24d..d19add1 100644
|
|
--- a/Telegram/SourceFiles/base/flags_tests.cpp
|
|
+++ b/Telegram/SourceFiles/base/flags_tests.cpp
|
|
@@ -18,7 +18,7 @@ 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-2017 John Preston, https://desktop.telegram.org
|
|
*/
|
|
-#include "catch.hpp"
|
|
+#include "../ThirdParty/variant/test/include/catch.hpp"
|
|
|
|
#include "base/flags.h"
|
|
|
|
diff --git a/Telegram/SourceFiles/base/flat_map_tests.cpp b/Telegram/SourceFiles/base/flat_map_tests.cpp
|
|
index 88a83a2..6551667 100644
|
|
--- a/Telegram/SourceFiles/base/flat_map_tests.cpp
|
|
+++ b/Telegram/SourceFiles/base/flat_map_tests.cpp
|
|
@@ -18,7 +18,7 @@ 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-2017 John Preston, https://desktop.telegram.org
|
|
*/
|
|
-#include "catch.hpp"
|
|
+#include "../ThirdParty/variant/test/include/catch.hpp"
|
|
|
|
#include "base/flat_map.h"
|
|
#include <string>
|
|
diff --git a/Telegram/SourceFiles/base/flat_set_tests.cpp b/Telegram/SourceFiles/base/flat_set_tests.cpp
|
|
index 675b0bd..735ab1b 100644
|
|
--- a/Telegram/SourceFiles/base/flat_set_tests.cpp
|
|
+++ b/Telegram/SourceFiles/base/flat_set_tests.cpp
|
|
@@ -18,7 +18,7 @@ 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-2017 John Preston, https://desktop.telegram.org
|
|
*/
|
|
-#include "catch.hpp"
|
|
+#include "../../ThirdParty/variant/test/include/catch.hpp"
|
|
|
|
#include "base/flat_set.h"
|
|
|
|
diff --git a/Telegram/SourceFiles/base/tests_main.cpp b/Telegram/SourceFiles/base/tests_main.cpp
|
|
index 0696e47..02bf016 100644
|
|
--- a/Telegram/SourceFiles/base/tests_main.cpp
|
|
+++ b/Telegram/SourceFiles/base/tests_main.cpp
|
|
@@ -19,8 +19,8 @@ Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
|
|
Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
|
|
*/
|
|
#define CATCH_CONFIG_RUNNER
|
|
-#include "catch.hpp"
|
|
-#include "reporters/catch_reporter_compact.hpp"
|
|
+#include "../ThirdParty/variant/test/include/catch.hpp"
|
|
+//#include "reporters/catch_reporter_compact.hpp"
|
|
#include <QFile>
|
|
|
|
namespace Catch {
|
|
diff --git a/Telegram/SourceFiles/config.h b/Telegram/SourceFiles/config.h
|
|
index 633c4e4..0d09e7d 100644
|
|
--- a/Telegram/SourceFiles/config.h
|
|
+++ b/Telegram/SourceFiles/config.h
|
|
@@ -272,6 +272,8 @@ inline const char *cApiDeviceModel() {
|
|
return "Mac";
|
|
#elif defined Q_OS_LINUX
|
|
return "PC";
|
|
+#elif defined Q_OS_HAIKU
|
|
+ return "PC";
|
|
#endif
|
|
}
|
|
inline const char *cApiSystemVersion() {
|
|
@@ -281,6 +283,8 @@ inline const char *cApiSystemVersion() {
|
|
return "OS X";
|
|
#elif defined Q_OS_LINUX
|
|
return "Linux";
|
|
+#elif defined Q_OS_Haiku
|
|
+ return "Haiku";
|
|
#endif
|
|
}
|
|
|
|
diff --git a/Telegram/SourceFiles/main.cpp b/Telegram/SourceFiles/main.cpp
|
|
index 6e85f27..4684e2a 100644
|
|
--- a/Telegram/SourceFiles/main.cpp
|
|
+++ b/Telegram/SourceFiles/main.cpp
|
|
@@ -23,9 +23,10 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
|
|
#include "storage/localstorage.h"
|
|
|
|
int main(int argc, char *argv[]) {
|
|
-#ifndef Q_OS_MAC // Retina display support is working fine, others are not.
|
|
+#if !defined(Q_OS_MAC) && QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
|
|
+ // Retina display support is working fine, others are not.
|
|
QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling, true);
|
|
-#endif // Q_OS_MAC
|
|
+#endif // not defined Q_OS_MAC and QT_VERSION >= 5.6.0
|
|
QCoreApplication::setApplicationName(qsl("TelegramDesktop"));
|
|
|
|
InitFromCommandLine(argc, argv);
|
|
@@ -39,6 +40,11 @@ int main(int argc, char *argv[]) {
|
|
Logs::start(); // must be started before Platform is started
|
|
Platform::start(); // must be started before QApplication is created
|
|
|
|
+ // I don't know why path is not in QT_PLUGIN_PATH by default
|
|
+ QCoreApplication::addLibraryPath("/boot/system/add-ons/Qt");
|
|
+ // without this Telegram doesn't start on Ubuntu 17.04 due GTK errors
|
|
+ setenv("QT_STYLE_OVERRIDE", "qwerty", false);
|
|
+
|
|
int result = 0;
|
|
{
|
|
Application app(argc, argv);
|
|
diff --git a/Telegram/SourceFiles/platform/linux/linux_libs.h b/Telegram/SourceFiles/platform/linux/linux_libs.h
|
|
index a8bf969..7559354 100644
|
|
--- a/Telegram/SourceFiles/platform/linux/linux_libs.h
|
|
+++ b/Telegram/SourceFiles/platform/linux/linux_libs.h
|
|
@@ -29,7 +29,7 @@ extern "C" {
|
|
} // extern "C"
|
|
|
|
#ifndef TDESKTOP_DISABLE_UNITY_INTEGRATION
|
|
-#include <unity/unity/unity.h>
|
|
+typedef void UnityLauncherEntry;
|
|
#endif // !TDESKTOP_DISABLE_UNITY_INTEGRATION
|
|
|
|
namespace Platform {
|
|
diff --git a/Telegram/SourceFiles/platform/platform_file_utilities.h b/Telegram/SourceFiles/platform/platform_file_utilities.h
|
|
index 593ab28..c08f759 100644
|
|
--- a/Telegram/SourceFiles/platform/platform_file_utilities.h
|
|
+++ b/Telegram/SourceFiles/platform/platform_file_utilities.h
|
|
@@ -51,8 +51,8 @@ bool Get(QStringList &files, QByteArray &remoteContent, const QString &caption,
|
|
|
|
#ifdef Q_OS_MAC
|
|
#include "platform/mac/file_utilities_mac.h"
|
|
-#elif defined Q_OS_LINUX // Q_OS_MAC
|
|
-#include "platform/linux/file_utilities_linux.h"
|
|
+//#elif defined Q_OS_LINUX // Q_OS_MAC
|
|
+//#include "platform/linux/file_utilities_linux.h"
|
|
#elif defined Q_OS_WINRT || defined Q_OS_WIN // Q_OS_MAC || Q_OS_LINUX
|
|
#include "platform/win/file_utilities_win.h"
|
|
#endif // Q_OS_MAC || Q_OS_LINUX || Q_OS_WINRT || Q_OS_WIN
|
|
diff --git a/Telegram/SourceFiles/platform/platform_main_window.h b/Telegram/SourceFiles/platform/platform_main_window.h
|
|
index b7b5334..66af0cd 100644
|
|
--- a/Telegram/SourceFiles/platform/platform_main_window.h
|
|
+++ b/Telegram/SourceFiles/platform/platform_main_window.h
|
|
@@ -34,6 +34,8 @@ class MainWindow;
|
|
#include "platform/mac/main_window_mac.h"
|
|
#elif defined Q_OS_LINUX // Q_OS_MAC
|
|
#include "platform/linux/main_window_linux.h"
|
|
-#elif defined Q_OS_WIN // Q_OS_MAC || Q_OS_LINUX
|
|
+#elif defined Q_OS_HAIKU // Q_OS_MAC || Q_OS_LINUX
|
|
+#include "platform/haiku/main_window_haiku.h"
|
|
+#elif defined Q_OS_WIN // Q_OS_MAC || Q_OS_LINUX || Q_OS_HAIKU
|
|
#include "platform/win/main_window_win.h"
|
|
#endif // Q_OS_MAC || Q_OS_LINUX || Q_OS_WIN
|
|
diff --git a/Telegram/SourceFiles/platform/platform_specific.h b/Telegram/SourceFiles/platform/platform_specific.h
|
|
index 359b047..dca0c7e 100644
|
|
--- a/Telegram/SourceFiles/platform/platform_specific.h
|
|
+++ b/Telegram/SourceFiles/platform/platform_specific.h
|
|
@@ -47,6 +47,8 @@ void finish();
|
|
#include "platform/mac/specific_mac.h"
|
|
#elif defined Q_OS_LINUX // Q_OS_MAC
|
|
#include "platform/linux/specific_linux.h"
|
|
-#elif defined Q_OS_WIN // Q_OS_MAC || Q_OS_LINUX
|
|
+#elif defined Q_OS_HAIKU // Q_OS_MAC || Q_OS_LINUX
|
|
+#include "platform/haiku/specific_haiku.h"
|
|
+#elif defined Q_OS_WIN // Q_OS_MAC || Q_OS_LINUX || Q_OS_HAIKU
|
|
#include "platform/win/specific_win.h"
|
|
#endif // Q_OS_MAC || Q_OS_LINUX || Q_OS_WIN
|
|
diff --git a/Telegram/SourceFiles/platform/platform_window_title.h b/Telegram/SourceFiles/platform/platform_window_title.h
|
|
index 1d0d892..285568c 100644
|
|
--- a/Telegram/SourceFiles/platform/platform_window_title.h
|
|
+++ b/Telegram/SourceFiles/platform/platform_window_title.h
|
|
@@ -38,7 +38,7 @@ void PreviewWindowFramePaint(QImage &preview, const style::palette &palette, QRe
|
|
#include "platform/mac/window_title_mac.h"
|
|
#elif defined Q_OS_WIN // Q_OS_MAC
|
|
#include "platform/win/window_title_win.h"
|
|
-#elif defined Q_OS_WINRT || defined Q_OS_LINUX // Q_OS_MAC || Q_OS_WIN
|
|
+#elif defined Q_OS_WINRT || defined Q_OS_LINUX || defined Q_OS_HAIKU // Q_OS_MAC || Q_OS_WIN
|
|
|
|
namespace Platform {
|
|
|
|
diff --git a/Telegram/SourceFiles/qt_functions.cpp b/Telegram/SourceFiles/qt_functions.cpp
|
|
new file mode 100644
|
|
index 0000000..4a722b8
|
|
--- /dev/null
|
|
+++ b/Telegram/SourceFiles/qt_functions.cpp
|
|
@@ -0,0 +1,94 @@
|
|
+/****************************************************************************
|
|
+**
|
|
+** Copyright (C) 2015 The Qt Company Ltd.
|
|
+** Contact: http://www.qt.io/licensing/
|
|
+**
|
|
+** This file contains some parts of the Qt Toolkit.
|
|
+**
|
|
+** $QT_BEGIN_LICENSE:LGPL21$
|
|
+** Commercial License Usage
|
|
+** Licensees holding valid commercial Qt licenses may use this file in
|
|
+** accordance with the commercial license agreement provided with the
|
|
+** Software or, alternatively, in accordance with the terms contained in
|
|
+** a written agreement between you and The Qt Company. For licensing terms
|
|
+** and conditions see http://www.qt.io/terms-conditions. For further
|
|
+** information use the contact form at http://www.qt.io/contact-us.
|
|
+**
|
|
+** GNU Lesser General Public License Usage
|
|
+** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
+** General Public License version 2.1 or version 3 as published by the Free
|
|
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
|
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
|
+** following information to ensure the GNU Lesser General Public License
|
|
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
|
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
+**
|
|
+** As a special exception, The Qt Company gives you certain additional
|
|
+** rights. These rights are described in The Qt Company LGPL Exception
|
|
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
+**
|
|
+** $QT_END_LICENSE$
|
|
+**
|
|
+****************************************************************************/
|
|
+
|
|
+/* TODO: find a dynamic library with these symbols. */
|
|
+
|
|
+/* Debian maintainer: this function is taken from qfiledialog.cpp */
|
|
+/*
|
|
+ Makes a list of filters from ;;-separated text.
|
|
+ Used by the mac and windows implementations
|
|
+*/
|
|
+QStringList qt_make_filter_list(const QString &filter)
|
|
+{
|
|
+ QString f(filter);
|
|
+
|
|
+ if (f.isEmpty())
|
|
+ return QStringList();
|
|
+
|
|
+ QString sep(QLatin1String(";;"));
|
|
+ int i = f.indexOf(sep, 0);
|
|
+ if (i == -1) {
|
|
+ if (f.indexOf(QLatin1Char('\n'), 0) != -1) {
|
|
+ sep = QLatin1Char('\n');
|
|
+ i = f.indexOf(sep, 0);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return f.split(sep);
|
|
+}
|
|
+
|
|
+/* Debian maintainer: this constructor is taken from qtextengine.cpp for TextPainter::drawLine */
|
|
+QTextItemInt::QTextItemInt(const QGlyphLayout &g, QFont *font, const QChar *chars_, int numChars, QFontEngine *fe, const QTextCharFormat &format)
|
|
+ : flags(0), justified(false), underlineStyle(QTextCharFormat::NoUnderline), charFormat(format),
|
|
+ num_chars(numChars), chars(chars_), logClusters(0), f(font), glyphs(g), fontEngine(fe)
|
|
+{
|
|
+}
|
|
+
|
|
+/* Debian maintainer: this method is also taken from qtextengine.cpp */
|
|
+// Fix up flags and underlineStyle with given info
|
|
+void QTextItemInt::initWithScriptItem(const QScriptItem &si)
|
|
+{
|
|
+ // explicitly initialize flags so that initFontAttributes can be called
|
|
+ // multiple times on the same TextItem
|
|
+ flags = 0;
|
|
+ if (si.analysis.bidiLevel %2)
|
|
+ flags |= QTextItem::RightToLeft;
|
|
+ ascent = si.ascent;
|
|
+ descent = si.descent;
|
|
+
|
|
+ if (charFormat.hasProperty(QTextFormat::TextUnderlineStyle)) {
|
|
+ underlineStyle = charFormat.underlineStyle();
|
|
+ } else if (charFormat.boolProperty(QTextFormat::FontUnderline)
|
|
+ || f->d->underline) {
|
|
+ underlineStyle = QTextCharFormat::SingleUnderline;
|
|
+ }
|
|
+
|
|
+ // compat
|
|
+ if (underlineStyle == QTextCharFormat::SingleUnderline)
|
|
+ flags |= QTextItem::Underline;
|
|
+
|
|
+ if (f->d->overline || charFormat.fontOverline())
|
|
+ flags |= QTextItem::Overline;
|
|
+ if (f->d->strikeOut || charFormat.fontStrikeOut())
|
|
+ flags |= QTextItem::StrikeOut;
|
|
+}
|
|
diff --git a/Telegram/SourceFiles/qt_static_plugins.cpp b/Telegram/SourceFiles/qt_static_plugins.cpp
|
|
index b975c7a..f2f876b 100644
|
|
--- a/Telegram/SourceFiles/qt_static_plugins.cpp
|
|
+++ b/Telegram/SourceFiles/qt_static_plugins.cpp
|
|
@@ -28,13 +28,4 @@ Q_IMPORT_PLUGIN(QWebpPlugin)
|
|
Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin)
|
|
Q_IMPORT_PLUGIN(QGenericEnginePlugin)
|
|
#elif defined Q_OS_LINUX // Q_OS_WIN | Q_OS_MAC
|
|
-Q_IMPORT_PLUGIN(QWebpPlugin)
|
|
-Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)
|
|
-Q_IMPORT_PLUGIN(QConnmanEnginePlugin)
|
|
-Q_IMPORT_PLUGIN(QGenericEnginePlugin)
|
|
-Q_IMPORT_PLUGIN(QNetworkManagerEnginePlugin)
|
|
-Q_IMPORT_PLUGIN(QComposePlatformInputContextPlugin)
|
|
-Q_IMPORT_PLUGIN(QIbusPlatformInputContextPlugin)
|
|
-Q_IMPORT_PLUGIN(QFcitxPlatformInputContextPlugin)
|
|
-Q_IMPORT_PLUGIN(QHimePlatformInputContextPlugin)
|
|
#endif // Q_OS_WIN | Q_OS_MAC | Q_OS_LINUX
|
|
diff --git a/Telegram/SourceFiles/ui/text/text.cpp b/Telegram/SourceFiles/ui/text/text.cpp
|
|
index d18a8ea..2c58287 100644
|
|
--- a/Telegram/SourceFiles/ui/text/text.cpp
|
|
+++ b/Telegram/SourceFiles/ui/text/text.cpp
|
|
@@ -1689,11 +1689,11 @@ private:
|
|
if (item == -1)
|
|
return;
|
|
|
|
-#ifdef OS_MAC_OLD
|
|
+#if defined(OS_MAC_OLD) || QT_VERSION < QT_VERSION_CHECK(5, 6, 0)
|
|
auto end = _e->findItem(line.from + line.length - 1);
|
|
-#else // OS_MAC_OLD
|
|
+#else
|
|
auto end = _e->findItem(line.from + line.length - 1, item);
|
|
-#endif // OS_MAC_OLD
|
|
+#endif
|
|
|
|
auto blockIndex = _lineStartBlock;
|
|
auto currentBlock = _t->_blocks[blockIndex].get();
|
|
diff --git a/Telegram/SourceFiles/ui/text/text_block.cpp b/Telegram/SourceFiles/ui/text/text_block.cpp
|
|
index f89644e..35230cf 100644
|
|
--- a/Telegram/SourceFiles/ui/text/text_block.cpp
|
|
+++ b/Telegram/SourceFiles/ui/text/text_block.cpp
|
|
@@ -330,7 +330,7 @@ TextBlock::TextBlock(const style::font &font, const QString &str, QFixed minResi
|
|
SignalHandlers::setCrashAnnotationRef("CrashString", &part);
|
|
|
|
QStackTextEngine engine(part, blockFont->f);
|
|
- QTextLayout layout(&engine);
|
|
+ QTextLayout layout(part, blockFont->f);
|
|
layout.beginLayout();
|
|
layout.createLine();
|
|
|
|
diff --git a/Telegram/SourceFiles/ui/twidget.cpp b/Telegram/SourceFiles/ui/twidget.cpp
|
|
index e9848ef..dcee47e 100644
|
|
--- a/Telegram/SourceFiles/ui/twidget.cpp
|
|
+++ b/Telegram/SourceFiles/ui/twidget.cpp
|
|
@@ -191,9 +191,9 @@ void sendSynteticMouseEvent(QWidget *widget, QEvent::Type type, Qt::MouseButton
|
|
, button
|
|
, QGuiApplication::mouseButtons() | button
|
|
, QGuiApplication::keyboardModifiers()
|
|
-#ifndef OS_MAC_OLD
|
|
+#if !defined(OS_MAC_OLD) && QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
|
|
, Qt::MouseEventSynthesizedByApplication
|
|
-#endif // OS_MAC_OLD
|
|
+#endif
|
|
);
|
|
ev.setTimestamp(getms());
|
|
QGuiApplication::sendEvent(windowHandle, &ev);
|
|
diff --git a/Telegram/ThirdParty/minizip/ioapi.c b/Telegram/ThirdParty/minizip/ioapi.c
|
|
index 7f5c191..649255c 100644
|
|
--- a/Telegram/ThirdParty/minizip/ioapi.c
|
|
+++ b/Telegram/ThirdParty/minizip/ioapi.c
|
|
@@ -14,7 +14,7 @@
|
|
#define _CRT_SECURE_NO_WARNINGS
|
|
#endif
|
|
|
|
-#if defined(__APPLE__) || defined(IOAPI_NO_64)
|
|
+#if defined(__APPLE__) || defined(IOAPI_NO_64) || defined(__HAIKU__)
|
|
// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions
|
|
#define FOPEN_FUNC(filename, mode) fopen(filename, mode)
|
|
#define FTELLO_FUNC(stream) ftello(stream)
|
|
diff --git a/Telegram/gyp/PrecompiledHeader.cmake b/Telegram/gyp/PrecompiledHeader.cmake
|
|
index 5d6830e..c3f08d3 100644
|
|
--- a/Telegram/gyp/PrecompiledHeader.cmake
|
|
+++ b/Telegram/gyp/PrecompiledHeader.cmake
|
|
@@ -112,7 +112,7 @@ function(add_precompiled_header _target _input)
|
|
set(_compiler_FLAGS "@${_pch_c_flags_file}")
|
|
add_custom_command(
|
|
OUTPUT "${_output_c}"
|
|
- COMMAND "${CMAKE_C_COMPILER}" ${_compiler_FLAGS} -x c-header -o "${_output_c}" -c "${_pchfile}"
|
|
+ COMMAND "${CMAKE_C_COMPILER}" "$(C_DEFINES)" "$(C_INCLUDES)" "$(C_FLAGS)" -x c-header -o "${_output_c}" -c "${_pchfile}"
|
|
DEPENDS "${_pchfile}" "${_pch_c_flags_file}"
|
|
IMPLICIT_DEPENDS C "${_pch_header}"
|
|
COMMENT "Precompiling ${_name} for ${_target} (C)")
|
|
@@ -123,7 +123,7 @@ function(add_precompiled_header _target _input)
|
|
set(_compiler_FLAGS "@${_pch_cpp_flags_file}")
|
|
add_custom_command(
|
|
OUTPUT "${_output_cxx}"
|
|
- COMMAND "${CMAKE_CXX_COMPILER}" ${_compiler_FLAGS} -x c++-header -o "${_output_cxx}" -c "${_pchfile}"
|
|
+ COMMAND "${CMAKE_CXX_COMPILER}" "$(CXX_DEFINES)" "$(CXX_INCLUDES)" "$(CXX_FLAGS)" -x c++-header -o "${_output_cxx}" -c "${_pchfile}"
|
|
DEPENDS "${_pchfile}" "${_pch_cpp_flags_file}"
|
|
IMPLICIT_DEPENDS CXX "${_pch_header}"
|
|
COMMENT "Precompiling ${_name} for ${_target} (C++)")
|
|
diff --git a/Telegram/gyp/Telegram.gyp b/Telegram/gyp/Telegram.gyp
|
|
index 0d1f38a..e716483 100644
|
|
--- a/Telegram/gyp/Telegram.gyp
|
|
+++ b/Telegram/gyp/Telegram.gyp
|
|
@@ -69,6 +69,7 @@
|
|
'telegram_win.gypi',
|
|
'telegram_mac.gypi',
|
|
'telegram_linux.gypi',
|
|
+ 'telegram_haiku.gypi',
|
|
'qt.gypi',
|
|
'qt_rcc.gypi',
|
|
'codegen_rules.gypi',
|
|
@@ -80,12 +81,10 @@
|
|
'codegen.gyp:codegen_numbers',
|
|
'codegen.gyp:codegen_style',
|
|
'tests/tests.gyp:tests',
|
|
- 'utils.gyp:Updater',
|
|
- '../ThirdParty/libtgvoip/libtgvoip.gyp:libtgvoip',
|
|
+# '../ThirdParty/libtgvoip/libtgvoip.gyp:libtgvoip',
|
|
],
|
|
|
|
'defines': [
|
|
- 'AL_LIBTYPE_STATIC',
|
|
'AL_ALEXT_PROTOTYPES',
|
|
'TGVOIP_USE_CXX11_LIB',
|
|
'<!@(python -c "for s in \'<(build_defines)\'.split(\',\'): print(s)")',
|
|
@@ -94,13 +93,6 @@
|
|
'include_dirs': [
|
|
'<(src_loc)',
|
|
'<(SHARED_INTERMEDIATE_DIR)',
|
|
- '<(libs_loc)/breakpad/src',
|
|
- '<(libs_loc)/lzma/C',
|
|
- '<(libs_loc)/libexif-0.6.20',
|
|
- '<(libs_loc)/zlib-1.2.8',
|
|
- '<(libs_loc)/ffmpeg',
|
|
- '<(libs_loc)/openal-soft/include',
|
|
- '<(libs_loc)/opus/include',
|
|
'<(minizip_loc)',
|
|
'<(sp_media_key_tap_loc)',
|
|
'<(emoji_suggestions_loc)',
|
|
diff --git a/Telegram/gyp/common.gypi b/Telegram/gyp/common.gypi
|
|
index 9d9e67a..fd65e31 100644
|
|
--- a/Telegram/gyp/common.gypi
|
|
+++ b/Telegram/gyp/common.gypi
|
|
@@ -21,6 +21,7 @@
|
|
'includes': [
|
|
'settings_win.gypi',
|
|
'settings_mac.gypi',
|
|
+ 'settings_haiku.gypi',
|
|
'settings_linux.gypi',
|
|
],
|
|
'variables': {
|
|
@@ -42,6 +43,11 @@
|
|
}, {
|
|
'build_mac': 0,
|
|
}],
|
|
+ [ 'build_os == "haiku"', {
|
|
+ 'build_haiku': 1,
|
|
+ }, {
|
|
+ 'build_haiku': 0,
|
|
+ }],
|
|
[ 'build_os == "linux"', {
|
|
'build_linux': 1,
|
|
}, {
|
|
@@ -53,11 +59,13 @@
|
|
'build_win%': '<(build_win)',
|
|
'build_mac%': '<(build_mac)',
|
|
'build_linux%': '<(build_linux)',
|
|
+ 'build_haiku%': '<(build_haiku)',
|
|
},
|
|
'build_os%': '<(build_os)',
|
|
'build_win%': '<(build_win)',
|
|
'build_mac%': '<(build_mac)',
|
|
'build_linux%': '<(build_linux)',
|
|
+ 'build_haiku%': '<(build_haiku)',
|
|
|
|
'official_build_target%': '',
|
|
},
|
|
@@ -65,6 +73,7 @@
|
|
'build_win%': '<(build_win)',
|
|
'build_mac%': '<(build_mac)',
|
|
'build_linux%': '<(build_linux)',
|
|
+ 'build_haiku%': '<(build_haiku)',
|
|
'official_build_target%': '<(official_build_target)',
|
|
|
|
# GYP does not support per-configuration libraries :(
|
|
diff --git a/Telegram/gyp/list_sources.py b/Telegram/gyp/list_sources.py
|
|
index a653846..6ba9368 100644
|
|
--- a/Telegram/gyp/list_sources.py
|
|
+++ b/Telegram/gyp/list_sources.py
|
|
@@ -126,6 +126,8 @@ if input_path != '':
|
|
platform_rules[file_path] = [ 'mac' ]
|
|
elif '/platform/linux/' in file_path:
|
|
platform_rules[file_path] = [ 'linux' ]
|
|
+ elif '/platform/haiku/' in file_path:
|
|
+ platform_rules[file_path] = [ 'haiku' ]
|
|
|
|
for replace in replaces:
|
|
replace_parts = replace.split('=', 1)
|
|
diff --git a/Telegram/gyp/qt.gypi b/Telegram/gyp/qt.gypi
|
|
index 6032d06..b9e1d5a 100644
|
|
--- a/Telegram/gyp/qt.gypi
|
|
+++ b/Telegram/gyp/qt.gypi
|
|
@@ -27,25 +27,21 @@
|
|
[ 'build_macold', {
|
|
'qt_version%': '5.3.2',
|
|
}, {
|
|
- 'qt_version%': '5.6.2',
|
|
+ 'qt_version%': '5.9.2',
|
|
}]
|
|
],
|
|
},
|
|
'qt_libs': [
|
|
- 'qwebp',
|
|
- 'Qt5PrintSupport',
|
|
- 'Qt5PlatformSupport',
|
|
'Qt5Network',
|
|
'Qt5Widgets',
|
|
'Qt5Gui',
|
|
- 'qtharfbuzzng',
|
|
],
|
|
'qt_version%': '<(qt_version)',
|
|
'conditions': [
|
|
[ 'build_macold', {
|
|
'linux_path_qt%': '/usr/local/macold/Qt-<(qt_version)',
|
|
}, {
|
|
- 'linux_path_qt%': '/usr/local/tdesktop/Qt-<(qt_version)',
|
|
+ 'linux_path_qt%': '/usr/lib/qt',
|
|
}]
|
|
]
|
|
},
|
|
@@ -85,32 +81,21 @@
|
|
],
|
|
}],
|
|
[ 'build_linux', {
|
|
- 'qt_lib_prefix': 'lib',
|
|
- 'qt_lib_debug_postfix': '.a',
|
|
- 'qt_lib_release_postfix': '.a',
|
|
+ 'qt_lib_prefix': '',
|
|
+ 'qt_lib_debug_postfix': '',
|
|
+ 'qt_lib_release_postfix': '',
|
|
+ 'qt_libs': [
|
|
+ '<@(qt_libs)',
|
|
+ 'Qt5Core',
|
|
+ ],
|
|
+ }],
|
|
+ [ 'build_haiku', {
|
|
+ 'qt_lib_prefix': '',
|
|
+ 'qt_lib_debug_postfix': '',
|
|
+ 'qt_lib_release_postfix': '',
|
|
'qt_libs': [
|
|
- 'qxcb',
|
|
- 'Qt5XcbQpa',
|
|
- 'qconnmanbearer',
|
|
- 'qgenericbearer',
|
|
- 'qnmbearer',
|
|
'<@(qt_libs)',
|
|
- 'Qt5DBus',
|
|
'Qt5Core',
|
|
- 'qtpcre',
|
|
- 'Xi',
|
|
- 'Xext',
|
|
- 'Xfixes',
|
|
- 'SM',
|
|
- 'ICE',
|
|
- 'fontconfig',
|
|
- 'expat',
|
|
- 'freetype',
|
|
- 'z',
|
|
- 'xcb-shm',
|
|
- 'xcb-xfixes',
|
|
- 'xcb-render',
|
|
- 'xcb-static',
|
|
],
|
|
}],
|
|
],
|
|
@@ -140,11 +125,6 @@
|
|
# '<!@(python <(DEPTH)/list_sources.py [sources] <(qt_moc_list_sources_arg))'
|
|
# where [sources] contains all your source files
|
|
'qt_moc_list_sources_arg': '--moc-prefix SHARED_INTERMEDIATE_DIR/<(_target_name)/moc/moc_',
|
|
-
|
|
- 'linux_path_xkbcommon%': '/usr/local',
|
|
- 'linux_lib_ssl%': '/usr/local/ssl/lib/libssl.a',
|
|
- 'linux_lib_crypto%': '/usr/local/ssl/lib/libcrypto.a',
|
|
- 'linux_lib_icu%': '/usr/lib/libicutu.a /usr/lib/libicui18n.a /usr/lib/libicuuc.a /usr/lib/libicudata.a',
|
|
},
|
|
|
|
'configurations': {
|
|
@@ -193,13 +173,13 @@
|
|
},
|
|
|
|
'include_dirs': [
|
|
- '<(qt_loc)/include',
|
|
- '<(qt_loc)/include/QtCore',
|
|
- '<(qt_loc)/include/QtGui',
|
|
- '<(qt_loc)/include/QtCore/<(qt_version)',
|
|
- '<(qt_loc)/include/QtGui/<(qt_version)',
|
|
- '<(qt_loc)/include/QtCore/<(qt_version)/QtCore',
|
|
- '<(qt_loc)/include/QtGui/<(qt_version)/QtGui',
|
|
+ '/boot/system/develop/headers',
|
|
+ '/boot/system/develop/headers/QtCore',
|
|
+ '/boot/system/develop/headers/QtGui',
|
|
+ '/boot/system/develop/headers/QtCore/<(qt_version)',
|
|
+ '/boot/system/develop/headers/QtGui/<(qt_version)',
|
|
+ '/boot/system/develop/headers/QtCore/<(qt_version)/QtCore',
|
|
+ '/boot/system/develop/headers/QtGui/<(qt_version)/QtGui',
|
|
],
|
|
'library_dirs': [
|
|
'<(qt_loc)/lib',
|
|
@@ -220,16 +200,9 @@
|
|
'<(qt_loc)/plugins/platforminputcontexts',
|
|
],
|
|
'libraries': [
|
|
- '<(linux_path_xkbcommon)/lib/libxkbcommon.a',
|
|
'<@(qt_libs_release)',
|
|
- '<(linux_lib_ssl)',
|
|
- '<(linux_lib_crypto)',
|
|
- '<!@(python -c "for s in \'<(linux_lib_icu)\'.split(\' \'): print(s)")',
|
|
+ '-lcrypto',
|
|
'-lxcb',
|
|
- '-lX11',
|
|
- '-lX11-xcb',
|
|
- '-ldbus-1',
|
|
- '-ldl',
|
|
'-lgthread-2.0',
|
|
'-lglib-2.0',
|
|
'-lpthread',
|
|
@@ -238,10 +211,25 @@
|
|
'<(qt_loc)/mkspecs/linux-g++',
|
|
],
|
|
'ldflags': [
|
|
- '-static-libstdc++',
|
|
- '-pthread',
|
|
'-g',
|
|
- '-rdynamic',
|
|
+ ],
|
|
+ }],
|
|
+ [ 'build_haiku', {
|
|
+ 'library_dirs': [
|
|
+ '<(qt_loc)/plugins/platforminputcontexts',
|
|
+ ],
|
|
+ 'libraries': [
|
|
+ '<@(qt_libs_release)',
|
|
+ '-lcrypto',
|
|
+ '-lgthread-2.0',
|
|
+ '-lglib-2.0',
|
|
+ '-lroot',
|
|
+ ],
|
|
+ 'include_dirs': [
|
|
+ '<(qt_loc)/mkspecs/haiku-g++',
|
|
+ ],
|
|
+ 'ldflags': [
|
|
+ '-g',
|
|
],
|
|
}],
|
|
[ 'build_mac', {
|
|
@@ -260,7 +248,7 @@
|
|
'<(SHARED_INTERMEDIATE_DIR)/<(_target_name)/moc/moc_<(RULE_INPUT_ROOT).cpp',
|
|
],
|
|
'action': [
|
|
- '<(qt_loc)/bin/moc<(exe_ext)',
|
|
+ 'moc',
|
|
|
|
# Silence "Note: No relevant classes found. No output generated."
|
|
'--no-notes',
|
|
diff --git a/Telegram/gyp/qt_rcc.gypi b/Telegram/gyp/qt_rcc.gypi
|
|
index eebc696..4e03932 100644
|
|
--- a/Telegram/gyp/qt_rcc.gypi
|
|
+++ b/Telegram/gyp/qt_rcc.gypi
|
|
@@ -28,7 +28,7 @@
|
|
'<(SHARED_INTERMEDIATE_DIR)/<(_target_name)/qrc/qrc_<(RULE_INPUT_ROOT).cpp',
|
|
],
|
|
'action': [
|
|
- '<(qt_loc)/bin/rcc<(exe_ext)',
|
|
+ 'rcc',
|
|
'-name', '<(RULE_INPUT_ROOT)',
|
|
'-no-compress',
|
|
'<(RULE_INPUT_PATH)',
|
|
diff --git a/Telegram/gyp/refresh.sh b/Telegram/gyp/refresh.sh
|
|
index d9e90a1..69fc7b6 100755
|
|
--- a/Telegram/gyp/refresh.sh
|
|
+++ b/Telegram/gyp/refresh.sh
|
|
@@ -23,6 +23,14 @@ if [ "$MySystem" == "Linux" ]; then
|
|
cd ../Release
|
|
../../../Libraries/cmake-3.6.2/bin/cmake .
|
|
cd ../../Telegram/gyp
|
|
+elif [ "$MySystem" == "Haiku" ]; then
|
|
+ gyp --depth=. --generator-output=.. -Goutput_dir=../out \
|
|
+ -Dofficial_build_target=$BuildTarget Telegram.gyp --format=cmake
|
|
+ cd ../../out/Debug
|
|
+ cmake .
|
|
+ cd ../Release
|
|
+ cmake .
|
|
+ cd ../../Telegram/gyp
|
|
else
|
|
#gyp --depth=. --generator-output=../.. -Goutput_dir=out Telegram.gyp --format=ninja
|
|
#gyp --depth=. --generator-output=../.. -Goutput_dir=out Telegram.gyp --format=xcode-ninja
|
|
diff --git a/Telegram/gyp/settings_haiku.gypi b/Telegram/gyp/settings_haiku.gypi
|
|
new file mode 100644
|
|
index 0000000..7b5161e
|
|
--- /dev/null
|
|
+++ b/Telegram/gyp/settings_haiku.gypi
|
|
@@ -0,0 +1,79 @@
|
|
+# 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 John Preston, https://desktop.telegram.org
|
|
+
|
|
+{
|
|
+ 'conditions': [
|
|
+ [ 'build_haiku', {
|
|
+ 'variables': {
|
|
+ 'haiku_common_flags': [
|
|
+ '-pipe',
|
|
+ '-g',
|
|
+ '-Wall',
|
|
+ '-W',
|
|
+ '-fPIC',
|
|
+ '-Wno-unused-variable',
|
|
+ '-Wno-unused-parameter',
|
|
+ '-Wno-unused-function',
|
|
+ '-Wno-switch',
|
|
+ '-Wno-comment',
|
|
+ '-Wno-unused-but-set-variable',
|
|
+ '-Wno-missing-field-initializers',
|
|
+ '-Wno-sign-compare',
|
|
+ ],
|
|
+ },
|
|
+ 'conditions': [
|
|
+ [ '"<!(uname -p)" == "x86_64"', {
|
|
+ 'defines': [
|
|
+ 'Q_OS_HAIKU',
|
|
+ ],
|
|
+ 'conditions': [
|
|
+ [ '"<(official_build_target)" != "" and "<(official_build_target)" != "haiku"', {
|
|
+ 'sources': [ '__Wrong_Official_Build_Target_<(official_build_target)_' ],
|
|
+ }],
|
|
+ ],
|
|
+ }, {
|
|
+ 'defines': [
|
|
+ 'Q_OS_HAIKU',
|
|
+ ],
|
|
+ 'conditions': [
|
|
+ [ '"<(official_build_target)" != "" and "<(official_build_target)" != "haiku"', {
|
|
+ 'sources': [ '__Wrong_Official_Build_Target_<(official_build_target)_' ],
|
|
+ }],
|
|
+ ],
|
|
+ }],
|
|
+ ],
|
|
+ 'defines': [
|
|
+ '_REENTRANT',
|
|
+ 'QT_PLUGIN',
|
|
+ ],
|
|
+ 'cflags_c': [
|
|
+ '<@(haiku_common_flags)',
|
|
+ '-std=gnu11',
|
|
+ ],
|
|
+ 'cflags_cc': [
|
|
+ '<@(haiku_common_flags)',
|
|
+ '-std=gnu++14',
|
|
+ ],
|
|
+ 'configurations': {
|
|
+ 'Debug': {
|
|
+ },
|
|
+ },
|
|
+ }],
|
|
+ ],
|
|
+}
|
|
diff --git a/Telegram/gyp/telegram_haiku.gypi b/Telegram/gyp/telegram_haiku.gypi
|
|
new file mode 100644
|
|
index 0000000..a41b667
|
|
--- /dev/null
|
|
+++ b/Telegram/gyp/telegram_haiku.gypi
|
|
@@ -0,0 +1,75 @@
|
|
+# 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 John Preston, https://desktop.telegram.org
|
|
+
|
|
+{
|
|
+ 'conditions': [[ 'build_haiku', {
|
|
+ 'variables': {
|
|
+ 'haiku_path_ffmpeg%': '/system/develop/headers/libavcodec',
|
|
+ 'haiku_path_openal%': '/system/develop/headers/AL',
|
|
+ 'haiku_path_libexif_lib%': '/system/develop/lib',
|
|
+ 'haiku_path_breakpad%': '/system/develop/lib',
|
|
+ 'haiku_path_opus_include%': '/system/develop/headers/opus',
|
|
+ },
|
|
+ 'include_dirs': [
|
|
+ '/system/develop/headers/openssl',
|
|
+ '<(haiku_path_ffmpeg)/include',
|
|
+ '<(haiku_path_openal)/include',
|
|
+ '<(haiku_path_breakpad)/include/breakpad',
|
|
+ '<(haiku_path_opus_include)',
|
|
+ ],
|
|
+ 'library_dirs': [
|
|
+ '/system/develop/lib',
|
|
+ '<(haiku_path_ffmpeg)/lib',
|
|
+ '<(haiku_path_openal)/lib',
|
|
+ '<(haiku_path_libexif_lib)',
|
|
+ ],
|
|
+ 'libraries': [
|
|
+ 'openal',
|
|
+ 'avformat',
|
|
+ 'avcodec',
|
|
+ 'swresample',
|
|
+ 'swscale',
|
|
+ 'avutil',
|
|
+ 'minizip',
|
|
+ 'opus',
|
|
+ 'z',
|
|
+# '<!(pkg-config 2> /dev/null --libs <@(pkgconfig_libs))',
|
|
+ ],
|
|
+ 'configurations': {
|
|
+ 'Release': {
|
|
+ 'cflags': [
|
|
+ '-Ofast',
|
|
+ '-flto',
|
|
+ '-fno-strict-aliasing',
|
|
+ ],
|
|
+ 'cflags_cc': [
|
|
+ '-Ofast',
|
|
+ '-flto',
|
|
+ '-fno-strict-aliasing',
|
|
+ ],
|
|
+ 'ldflags': [
|
|
+ '-Ofast',
|
|
+ '-flto',
|
|
+ ],
|
|
+ },
|
|
+ },
|
|
+ 'cmake_precompiled_header': '<(src_loc)/stdafx.h',
|
|
+ 'cmake_precompiled_header_script': 'PrecompiledHeader.cmake',
|
|
+ }]],
|
|
+}
|
|
diff --git a/Telegram/gyp/telegram_qrc.gypi b/Telegram/gyp/telegram_qrc.gypi
|
|
index 4bf4033..8fdd119 100644
|
|
--- a/Telegram/gyp/telegram_qrc.gypi
|
|
+++ b/Telegram/gyp/telegram_qrc.gypi
|
|
@@ -34,6 +34,13 @@
|
|
],
|
|
}
|
|
}],
|
|
+ [ 'build_haiku', {
|
|
+ 'variables': {
|
|
+ 'qrc_files': [
|
|
+ '<(res_loc)/qrc/telegram_haiku.qrc',
|
|
+ ],
|
|
+ }
|
|
+ }],
|
|
[ 'build_mac', {
|
|
'variables': {
|
|
'qrc_files': [
|
|
diff --git a/Telegram/gyp/telegram_sources.txt b/Telegram/gyp/telegram_sources.txt
|
|
index ef66965..58f2789 100644
|
|
--- a/Telegram/gyp/telegram_sources.txt
|
|
+++ b/Telegram/gyp/telegram_sources.txt
|
|
@@ -302,6 +302,10 @@
|
|
<(src_loc)/mtproto/type_utils.h
|
|
<(src_loc)/overview/overview_layout.cpp
|
|
<(src_loc)/overview/overview_layout.h
|
|
+<(src_loc)/platform/haiku/main_window_haiku.cpp
|
|
+<(src_loc)/platform/haiku/main_window_haiku.h
|
|
+<(src_loc)/platform/haiku/specific_haiku.cpp
|
|
+<(src_loc)/platform/haiku/specific_haiku.h
|
|
<(src_loc)/platform/linux/linux_desktop_environment.cpp
|
|
<(src_loc)/platform/linux/linux_desktop_environment.h
|
|
<(src_loc)/platform/linux/linux_gdk_helper.cpp
|
|
@@ -599,13 +603,7 @@
|
|
<(emoji_suggestions_loc)/emoji_suggestions.h
|
|
|
|
platforms: !win
|
|
-<(minizip_loc)/crypt.h
|
|
-<(minizip_loc)/ioapi.c
|
|
-<(minizip_loc)/ioapi.h
|
|
-<(minizip_loc)/zip.c
|
|
-<(minizip_loc)/zip.h
|
|
-<(minizip_loc)/unzip.c
|
|
-<(minizip_loc)/unzip.h
|
|
+<(src_loc)/qt_functions.cpp
|
|
|
|
platforms: mac
|
|
<(sp_media_key_tap_loc)/SPMediaKeyTap.m
|
|
diff --git a/Telegram/gyp/utils.gyp b/Telegram/gyp/utils.gyp
|
|
index 209c737..07d7438 100644
|
|
--- a/Telegram/gyp/utils.gyp
|
|
+++ b/Telegram/gyp/utils.gyp
|
|
@@ -91,6 +91,13 @@
|
|
'lzma',
|
|
],
|
|
}],
|
|
+ [ 'build_haiku', {
|
|
+ 'libraries': [
|
|
+ 'ssl',
|
|
+ 'crypto',
|
|
+ 'lzma',
|
|
+ ],
|
|
+ }],
|
|
[ 'build_mac', {
|
|
'include_dirs': [
|
|
'<(libs_loc)/openssl-xcode/include'
|
|
--
|
|
2.15.0
|
|
|
|
|
|
From d09006a4f41efcf71ffa577ca0691230f804900c Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Fri, 15 Sep 2017 22:01:57 +1000
|
|
Subject: Fix typo
|
|
|
|
|
|
diff --git a/Telegram/SourceFiles/config.h b/Telegram/SourceFiles/config.h
|
|
index 0d09e7d..793310e 100644
|
|
--- a/Telegram/SourceFiles/config.h
|
|
+++ b/Telegram/SourceFiles/config.h
|
|
@@ -283,7 +283,7 @@ inline const char *cApiSystemVersion() {
|
|
return "OS X";
|
|
#elif defined Q_OS_LINUX
|
|
return "Linux";
|
|
-#elif defined Q_OS_Haiku
|
|
+#elif defined Q_OS_HAIKU
|
|
return "Haiku";
|
|
#endif
|
|
}
|
|
--
|
|
2.15.0
|
|
|
|
|
|
From 7fdcaab004a49b6a2bdf2ec6100b84bc68aae131 Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Fri, 15 Sep 2017 22:05:59 +1000
|
|
Subject: Add haiku platform modules
|
|
|
|
|
|
diff --git a/Telegram/Resources/etc/qt_haiku.conf b/Telegram/Resources/etc/qt_haiku.conf
|
|
new file mode 100644
|
|
index 0000000..6d80862
|
|
--- /dev/null
|
|
+++ b/Telegram/Resources/etc/qt_haiku.conf
|
|
@@ -0,0 +1,2 @@
|
|
+[Paths]
|
|
+Libraries=:/gui/art
|
|
diff --git a/Telegram/Resources/qrc/telegram_haiku.qrc b/Telegram/Resources/qrc/telegram_haiku.qrc
|
|
new file mode 100644
|
|
index 0000000..33115f9
|
|
--- /dev/null
|
|
+++ b/Telegram/Resources/qrc/telegram_haiku.qrc
|
|
@@ -0,0 +1,5 @@
|
|
+<RCC>
|
|
+ <qresource prefix="/qt">
|
|
+ <file alias="etc/qt.conf">../etc/qt_haiku.conf</file>
|
|
+ </qresource>
|
|
+</RCC>
|
|
diff --git a/Telegram/SourceFiles/core/utils.h b/Telegram/SourceFiles/core/utils.h
|
|
index 3c46326..dc5f1fe 100644
|
|
--- a/Telegram/SourceFiles/core/utils.h
|
|
+++ b/Telegram/SourceFiles/core/utils.h
|
|
@@ -496,6 +496,7 @@ enum DBIPlatform {
|
|
dbipLinux64 = 2,
|
|
dbipLinux32 = 3,
|
|
dbipMacOld = 4,
|
|
+ dbipHaiku = 5,
|
|
};
|
|
|
|
enum DBIPeerReportSpamStatus {
|
|
diff --git a/Telegram/SourceFiles/platform/haiku/file_utilities_haiku.cpp b/Telegram/SourceFiles/platform/haiku/file_utilities_haiku.cpp
|
|
new file mode 100644
|
|
index 0000000..1a8afbd
|
|
--- /dev/null
|
|
+++ b/Telegram/SourceFiles/platform/haiku/file_utilities_haiku.cpp
|
|
@@ -0,0 +1,121 @@
|
|
+/*
|
|
+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-2017 John Preston, https://desktop.telegram.org
|
|
+*/
|
|
+#include "platform/haiku/file_utilities_haiku.h"
|
|
+
|
|
+#include "messenger.h"
|
|
+#include "mainwindow.h"
|
|
+#include "storage/localstorage.h"
|
|
+
|
|
+namespace Platform {
|
|
+namespace File {
|
|
+namespace internal {
|
|
+
|
|
+QByteArray EscapeShell(const QByteArray &content) {
|
|
+ auto result = QByteArray();
|
|
+
|
|
+ auto b = content.constData(), e = content.constEnd();
|
|
+ for (auto ch = b; ch != e; ++ch) {
|
|
+ if (*ch == ' ' || *ch == '"' || *ch == '\'' || *ch == '\\') {
|
|
+ if (result.isEmpty()) {
|
|
+ result.reserve(content.size() * 2);
|
|
+ }
|
|
+ if (ch > b) {
|
|
+ result.append(b, ch - b);
|
|
+ }
|
|
+ result.append('\\');
|
|
+ b = ch;
|
|
+ }
|
|
+ }
|
|
+ if (result.isEmpty()) {
|
|
+ return content;
|
|
+ }
|
|
+
|
|
+ if (e > b) {
|
|
+ result.append(b, e - b);
|
|
+ }
|
|
+ return result;
|
|
+}
|
|
+
|
|
+} // namespace internal
|
|
+
|
|
+void UnsafeShowInFolder(const QString &filepath) {
|
|
+ Ui::hideLayer(true); // Hide mediaview to make other apps visible.
|
|
+ auto absolutePath = QFileInfo(filepath).absoluteFilePath();
|
|
+ QProcess process;
|
|
+ auto command = qsl("open");
|
|
+ auto arguments = QStringList();
|
|
+ arguments << QFileInfo(filepath).absoluteDir().absolutePath();
|
|
+ if (!process.startDetached(command, arguments)) {
|
|
+ LOG(("Failed to launch '%1 %2'").arg(command).arg(arguments.join(' ')));
|
|
+ }
|
|
+}
|
|
+
|
|
+} // namespace File
|
|
+
|
|
+namespace FileDialog {
|
|
+namespace {
|
|
+
|
|
+using Type = ::FileDialog::internal::Type;
|
|
+
|
|
+bool NativeSupported() {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+bool PreviewSupported() {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+
|
|
+
|
|
+} // namespace
|
|
+
|
|
+bool Get(QStringList &files, QByteArray &remoteContent, const QString &caption, const QString &filter, Type type, QString startFile) {
|
|
+ return ::FileDialog::internal::GetDefault(files, remoteContent, caption, filter, type, startFile);
|
|
+}
|
|
+
|
|
+namespace internal {
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+namespace {
|
|
+
|
|
+const char *filterRegExp =
|
|
+"^(.*)\\(([a-zA-Z0-9_.,*? +;#\\-\\[\\]@\\{\\}/!<>\\$%&=^~:\\|]*)\\)$";
|
|
+
|
|
+// Makes a list of filters from a normal filter string "Image Files (*.png *.jpg)"
|
|
+QStringList cleanFilterList(const QString &filter) {
|
|
+ QRegExp regexp(QString::fromLatin1(filterRegExp));
|
|
+ Q_ASSERT(regexp.isValid());
|
|
+ QString f = filter;
|
|
+ int i = regexp.indexIn(f);
|
|
+ if (i >= 0)
|
|
+ f = regexp.cap(2);
|
|
+ return f.split(QLatin1Char(' '), QString::SkipEmptyParts);
|
|
+}
|
|
+
|
|
+} // namespace
|
|
+
|
|
+
|
|
+
|
|
+} // namespace internal
|
|
+} // namespace FileDialog
|
|
+} // namespace Platform
|
|
diff --git a/Telegram/SourceFiles/platform/haiku/file_utilities_haiku.h b/Telegram/SourceFiles/platform/haiku/file_utilities_haiku.h
|
|
new file mode 100644
|
|
index 0000000..103ccb6
|
|
--- /dev/null
|
|
+++ b/Telegram/SourceFiles/platform/haiku/file_utilities_haiku.h
|
|
@@ -0,0 +1,75 @@
|
|
+/*
|
|
+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-2017 John Preston, https://desktop.telegram.org
|
|
+*/
|
|
+#pragma once
|
|
+
|
|
+#include "platform/platform_file_utilities.h"
|
|
+
|
|
+extern "C" {
|
|
+#undef signals
|
|
+#define signals public
|
|
+} // extern "C"
|
|
+
|
|
+namespace Platform {
|
|
+namespace File {
|
|
+namespace internal {
|
|
+
|
|
+QByteArray EscapeShell(const QByteArray &content);
|
|
+
|
|
+} // namespace internal
|
|
+
|
|
+inline QString UrlToLocal(const QUrl &url) {
|
|
+ return ::File::internal::UrlToLocalDefault(url);
|
|
+}
|
|
+
|
|
+inline void UnsafeOpenEmailLink(const QString &email) {
|
|
+ return ::File::internal::UnsafeOpenEmailLinkDefault(email);
|
|
+}
|
|
+
|
|
+inline bool UnsafeShowOpenWithDropdown(const QString &filepath, QPoint menuPosition) {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+inline bool UnsafeShowOpenWith(const QString &filepath) {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+inline void UnsafeLaunch(const QString &filepath) {
|
|
+ return ::File::internal::UnsafeLaunchDefault(filepath);
|
|
+}
|
|
+
|
|
+inline void PostprocessDownloaded(const QString &filepath) {
|
|
+}
|
|
+
|
|
+} // namespace File
|
|
+
|
|
+namespace FileDialog {
|
|
+
|
|
+inline void InitLastPath() {
|
|
+ ::FileDialog::internal::InitLastPathDefault();
|
|
+}
|
|
+
|
|
+namespace internal {
|
|
+
|
|
+
|
|
+
|
|
+} // namespace internal
|
|
+} // namespace FileDialog
|
|
+} // namespace Platform
|
|
diff --git a/Telegram/SourceFiles/platform/haiku/haiku_desktop_environment.cpp b/Telegram/SourceFiles/platform/haiku/haiku_desktop_environment.cpp
|
|
new file mode 100644
|
|
index 0000000..37474d0
|
|
--- /dev/null
|
|
+++ b/Telegram/SourceFiles/platform/haiku/haiku_desktop_environment.cpp
|
|
@@ -0,0 +1,71 @@
|
|
+/*
|
|
+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-2017 John Preston, https://desktop.telegram.org
|
|
+*/
|
|
+#include "platform/haiku/haiku_desktop_environment.h"
|
|
+
|
|
+namespace Platform {
|
|
+namespace DesktopEnvironment {
|
|
+namespace {
|
|
+
|
|
+QString GetEnv(const char *name) {
|
|
+ auto result = getenv(name);
|
|
+ auto value = result ? QString::fromLatin1(result) : QString();
|
|
+ LOG(("Getting DE, %1: '%2'").arg(name).arg(value));
|
|
+ return value;
|
|
+}
|
|
+
|
|
+Type Compute() {
|
|
+ return Type::Other;
|
|
+}
|
|
+
|
|
+Type ComputeAndLog() {
|
|
+ auto result = Compute();
|
|
+ auto name = [result]() -> QString {
|
|
+ switch (result) {
|
|
+ case Type::Other: return "Other";
|
|
+ }
|
|
+ return QString::number(static_cast<int>(result));
|
|
+ };
|
|
+ LOG(("DE: %1").arg(name()));
|
|
+ return result;
|
|
+}
|
|
+
|
|
+} // namespace
|
|
+
|
|
+// Thanks Chromium.
|
|
+Type Get() {
|
|
+ static const auto result = ComputeAndLog();
|
|
+ return result;
|
|
+}
|
|
+
|
|
+bool TryQtTrayIcon() {
|
|
+ return true;
|
|
+}
|
|
+
|
|
+bool PreferAppIndicatorTrayIcon() {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+bool TryUnityCounter() {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+} // namespace DesktopEnvironment
|
|
+} // namespace Platform
|
|
diff --git a/Telegram/SourceFiles/platform/haiku/haiku_desktop_environment.h b/Telegram/SourceFiles/platform/haiku/haiku_desktop_environment.h
|
|
new file mode 100644
|
|
index 0000000..e76c8fe
|
|
--- /dev/null
|
|
+++ b/Telegram/SourceFiles/platform/haiku/haiku_desktop_environment.h
|
|
@@ -0,0 +1,37 @@
|
|
+/*
|
|
+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-2017 John Preston, https://desktop.telegram.org
|
|
+*/
|
|
+#pragma once
|
|
+
|
|
+namespace Platform {
|
|
+namespace DesktopEnvironment {
|
|
+
|
|
+enum class Type {
|
|
+ Other
|
|
+};
|
|
+
|
|
+Type Get();
|
|
+
|
|
+bool TryQtTrayIcon();
|
|
+bool PreferAppIndicatorTrayIcon();
|
|
+bool TryUnityCounter();
|
|
+
|
|
+} // namespace DesktopEnvironment
|
|
+} // namespace Platform
|
|
diff --git a/Telegram/SourceFiles/platform/haiku/main_window_haiku.cpp b/Telegram/SourceFiles/platform/haiku/main_window_haiku.cpp
|
|
new file mode 100644
|
|
index 0000000..dd3c644
|
|
--- /dev/null
|
|
+++ b/Telegram/SourceFiles/platform/haiku/main_window_haiku.cpp
|
|
@@ -0,0 +1,135 @@
|
|
+/*
|
|
+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-2017 John Preston, https://desktop.telegram.org
|
|
+*/
|
|
+#include "platform/haiku/main_window_haiku.h"
|
|
+
|
|
+#include "styles/style_window.h"
|
|
+#include "platform/haiku/haiku_desktop_environment.h"
|
|
+#include "mainwindow.h"
|
|
+#include "messenger.h"
|
|
+#include "application.h"
|
|
+#include "lang/lang_keys.h"
|
|
+#include "storage/localstorage.h"
|
|
+
|
|
+namespace Platform {
|
|
+
|
|
+MainWindow::MainWindow() {
|
|
+ connect(&_psCheckStatusIconTimer, SIGNAL(timeout()), this, SLOT(psStatusIconCheck()));
|
|
+ _psCheckStatusIconTimer.setSingleShot(false);
|
|
+
|
|
+ connect(&_psUpdateIndicatorTimer, SIGNAL(timeout()), this, SLOT(psUpdateIndicator()));
|
|
+ _psUpdateIndicatorTimer.setSingleShot(true);
|
|
+}
|
|
+
|
|
+bool MainWindow::hasTrayIcon() const {
|
|
+ return true;
|
|
+}
|
|
+
|
|
+void MainWindow::psStatusIconCheck() {
|
|
+ if (cSupportTray() || !--_psCheckStatusIconLeft) {
|
|
+ _psCheckStatusIconTimer.stop();
|
|
+ return;
|
|
+ }
|
|
+}
|
|
+
|
|
+void MainWindow::psShowTrayMenu() {
|
|
+}
|
|
+
|
|
+void MainWindow::psTrayMenuUpdated() {
|
|
+}
|
|
+
|
|
+void MainWindow::psSetupTrayIcon() {
|
|
+ if (!trayIcon) {
|
|
+ trayIcon = new QSystemTrayIcon(this);
|
|
+
|
|
+ auto icon = QIcon(App::pixmapFromImageInPlace(Messenger::Instance().logoNoMargin()));
|
|
+
|
|
+ trayIcon->setIcon(icon);
|
|
+ trayIcon->setToolTip(str_const_toString(AppName));
|
|
+ connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(toggleTray(QSystemTrayIcon::ActivationReason)), Qt::UniqueConnection);
|
|
+ connect(trayIcon, SIGNAL(messageClicked()), this, SLOT(showFromTray()));
|
|
+ App::wnd()->updateTrayMenu();
|
|
+ }
|
|
+ updateIconCounters();
|
|
+
|
|
+ trayIcon->show();
|
|
+}
|
|
+
|
|
+void MainWindow::workmodeUpdated(DBIWorkMode mode) {
|
|
+ psSetupTrayIcon();
|
|
+ if (mode == dbiwmWindowOnly) {
|
|
+ if (trayIcon) {
|
|
+ trayIcon->setContextMenu(0);
|
|
+ delete trayIcon;
|
|
+ trayIcon = nullptr;
|
|
+ }
|
|
+ }
|
|
+}
|
|
+
|
|
+
|
|
+void MainWindow::psUpdateIndicator() {
|
|
+}
|
|
+
|
|
+void MainWindow::unreadCounterChangedHook() {
|
|
+ setWindowTitle(titleText());
|
|
+ updateIconCounters();
|
|
+}
|
|
+
|
|
+void MainWindow::updateIconCounters() {
|
|
+ auto counter = App::histories().unreadBadge();
|
|
+ auto muted = App::histories().unreadOnlyMuted();
|
|
+ auto iconSizeSmall = QSize(16, 16);
|
|
+ auto &bg = (muted ? st::trayCounterBgMute : st::trayCounterBg);
|
|
+ auto &fg = st::trayCounterFg;
|
|
+ auto iconSmallPixmap16 = App::pixmapFromImageInPlace(iconWithCounter(16, counter, bg, fg, true));
|
|
+ QIcon iconSmall;
|
|
+ iconSmall.addPixmap(iconSmallPixmap16);
|
|
+ if (trayIcon) {
|
|
+ QIcon forTrayIcon;
|
|
+ forTrayIcon.addPixmap(iconSmallPixmap16);
|
|
+ trayIcon->setIcon(forTrayIcon);
|
|
+ }
|
|
+}
|
|
+
|
|
+void MainWindow::LibsLoaded() {
|
|
+}
|
|
+
|
|
+void MainWindow::psCreateTrayIcon() {
|
|
+
|
|
+}
|
|
+
|
|
+void MainWindow::psFirstShow() {
|
|
+ psCreateTrayIcon();
|
|
+ psUpdateMargins();
|
|
+ bool showShadows = true;
|
|
+ show();
|
|
+ setPositionInited();
|
|
+}
|
|
+
|
|
+void MainWindow::psInitSysMenu() {
|
|
+}
|
|
+
|
|
+void MainWindow::psUpdateMargins() {
|
|
+}
|
|
+
|
|
+MainWindow::~MainWindow() {
|
|
+}
|
|
+
|
|
+} // namespace Platform
|
|
diff --git a/Telegram/SourceFiles/platform/haiku/main_window_haiku.h b/Telegram/SourceFiles/platform/haiku/main_window_haiku.h
|
|
new file mode 100644
|
|
index 0000000..56cc497
|
|
--- /dev/null
|
|
+++ b/Telegram/SourceFiles/platform/haiku/main_window_haiku.h
|
|
@@ -0,0 +1,79 @@
|
|
+/*
|
|
+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-2017 John Preston, https://desktop.telegram.org
|
|
+*/
|
|
+#pragma once
|
|
+
|
|
+#include "platform/platform_main_window.h"
|
|
+
|
|
+namespace Platform {
|
|
+
|
|
+class MainWindow : public Window::MainWindow {
|
|
+ Q_OBJECT
|
|
+
|
|
+public:
|
|
+ MainWindow();
|
|
+
|
|
+ void psFirstShow();
|
|
+ void psInitSysMenu();
|
|
+ void psUpdateMargins();
|
|
+
|
|
+ void psRefreshTaskbarIcon() {
|
|
+ }
|
|
+
|
|
+ virtual QImage iconWithCounter(int size, int count, style::color bg, style::color fg, bool smallIcon) = 0;
|
|
+
|
|
+ static void LibsLoaded();
|
|
+
|
|
+ ~MainWindow();
|
|
+
|
|
+public slots:
|
|
+ void psShowTrayMenu();
|
|
+
|
|
+ void psStatusIconCheck();
|
|
+ void psUpdateIndicator();
|
|
+
|
|
+protected:
|
|
+ void unreadCounterChangedHook() override;
|
|
+
|
|
+ bool hasTrayIcon() const override;
|
|
+
|
|
+ void workmodeUpdated(DBIWorkMode mode) override;
|
|
+
|
|
+ QSystemTrayIcon *trayIcon = nullptr;
|
|
+ QMenu *trayIconMenu = nullptr;
|
|
+
|
|
+ void psTrayMenuUpdated();
|
|
+ void psSetupTrayIcon();
|
|
+
|
|
+ virtual void placeSmallCounter(QImage &img, int size, int count, style::color bg, const QPoint &shift, style::color color) = 0;
|
|
+
|
|
+private:
|
|
+ void updateIconCounters();
|
|
+ void psCreateTrayIcon();
|
|
+
|
|
+ QTimer _psCheckStatusIconTimer;
|
|
+ int _psCheckStatusIconLeft = 100;
|
|
+
|
|
+ QTimer _psUpdateIndicatorTimer;
|
|
+ TimeMs _psLastIndicatorUpdate = 0;
|
|
+
|
|
+};
|
|
+
|
|
+} // namespace Platform
|
|
diff --git a/Telegram/SourceFiles/platform/haiku/notifications_manager_haiku.cpp b/Telegram/SourceFiles/platform/haiku/notifications_manager_haiku.cpp
|
|
new file mode 100644
|
|
index 0000000..dc54c57
|
|
--- /dev/null
|
|
+++ b/Telegram/SourceFiles/platform/haiku/notifications_manager_haiku.cpp
|
|
@@ -0,0 +1,82 @@
|
|
+/*
|
|
+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-2017 John Preston, https://desktop.telegram.org
|
|
+*/
|
|
+#include "platform/haiku/notifications_manager_haiku.h"
|
|
+
|
|
+#include "window/notifications_utilities.h"
|
|
+#include "lang/lang_keys.h"
|
|
+#include "base/task_queue.h"
|
|
+
|
|
+namespace Platform {
|
|
+namespace Notifications {
|
|
+namespace {
|
|
+
|
|
+bool LibNotifyLoaded() {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+QString escapeHtml(const QString &text) {
|
|
+ auto result = QString();
|
|
+ auto copyFrom = 0, textSize = text.size();
|
|
+ auto data = text.constData();
|
|
+ for (auto i = 0; i != textSize; ++i) {
|
|
+ auto ch = data[i];
|
|
+ if (ch == '<' || ch == '>' || ch == '&') {
|
|
+ if (!copyFrom) {
|
|
+ result.reserve(textSize * 5);
|
|
+ }
|
|
+ if (i > copyFrom) {
|
|
+ result.append(data + copyFrom, i - copyFrom);
|
|
+ }
|
|
+ switch (ch.unicode()) {
|
|
+ case '<': result.append(qstr("<")); break;
|
|
+ case '>': result.append(qstr(">")); break;
|
|
+ case '&': result.append(qstr("&")); break;
|
|
+ }
|
|
+ copyFrom = i + 1;
|
|
+ }
|
|
+ }
|
|
+ if (copyFrom > 0) {
|
|
+ result.append(data + copyFrom, textSize - copyFrom);
|
|
+ return result;
|
|
+ }
|
|
+ return text;
|
|
+}
|
|
+
|
|
+
|
|
+
|
|
+} // namespace
|
|
+
|
|
+bool Supported() {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+std::unique_ptr<Window::Notifications::Manager> Create(Window::Notifications::System *system) {
|
|
+ return nullptr;
|
|
+}
|
|
+
|
|
+void Finish() {
|
|
+
|
|
+}
|
|
+
|
|
+
|
|
+
|
|
+} // namespace Notifications
|
|
+} // namespace Platform
|
|
diff --git a/Telegram/SourceFiles/platform/haiku/notifications_manager_haiku.h b/Telegram/SourceFiles/platform/haiku/notifications_manager_haiku.h
|
|
new file mode 100644
|
|
index 0000000..d70bcff
|
|
--- /dev/null
|
|
+++ b/Telegram/SourceFiles/platform/haiku/notifications_manager_haiku.h
|
|
@@ -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-2017 John Preston, https://desktop.telegram.org
|
|
+*/
|
|
+#pragma once
|
|
+
|
|
+#include "platform/platform_notifications_manager.h"
|
|
+
|
|
+namespace Platform {
|
|
+namespace Notifications {
|
|
+
|
|
+inline bool SkipAudio() {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+inline bool SkipToast() {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+inline void FlashBounce() {
|
|
+}
|
|
+
|
|
+void Finish();
|
|
+
|
|
+class Manager : public Window::Notifications::NativeManager {
|
|
+public:
|
|
+ Manager(Window::Notifications::System *system);
|
|
+
|
|
+ void clearNotification(PeerId peerId, MsgId msgId);
|
|
+ bool hasPoorSupport() const;
|
|
+ bool hasActionsSupport() const;
|
|
+
|
|
+ ~Manager();
|
|
+
|
|
+protected:
|
|
+ void doShowNativeNotification(PeerData *peer, MsgId msgId, const QString &title, const QString &subtitle, const QString &msg, bool hideNameAndPhoto, bool hideReplyButton) override;
|
|
+ void doClearAllFast() override;
|
|
+ void doClearFromHistory(History *history) override;
|
|
+
|
|
+private:
|
|
+ class Private;
|
|
+ const std::unique_ptr<Private> _private;
|
|
+
|
|
+};
|
|
+
|
|
+} // namespace Notifications
|
|
+} // namespace Platform
|
|
diff --git a/Telegram/SourceFiles/platform/haiku/specific_haiku.cpp b/Telegram/SourceFiles/platform/haiku/specific_haiku.cpp
|
|
new file mode 100644
|
|
index 0000000..ce9091a
|
|
--- /dev/null
|
|
+++ b/Telegram/SourceFiles/platform/haiku/specific_haiku.cpp
|
|
@@ -0,0 +1,416 @@
|
|
+/*
|
|
+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.
|
|
+
|
|
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
|
|
+Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
|
|
+*/
|
|
+#include "platform/haiku/specific_haiku.h"
|
|
+
|
|
+#include "lang/lang_keys.h"
|
|
+#include "application.h"
|
|
+#include "mainwidget.h"
|
|
+#include "mainwindow.h"
|
|
+#include "storage/localstorage.h"
|
|
+#include "platform/haiku/file_utilities_haiku.h"
|
|
+
|
|
+#include <sys/stat.h>
|
|
+#include <sys/types.h>
|
|
+#include <cstdlib>
|
|
+#include <unistd.h>
|
|
+#include <dirent.h>
|
|
+#include <pwd.h>
|
|
+
|
|
+#include <iostream>
|
|
+
|
|
+#include <qpa/qplatformnativeinterface.h>
|
|
+
|
|
+using namespace Platform;
|
|
+
|
|
+using Platform::File::internal::EscapeShell;
|
|
+
|
|
+namespace Platform {
|
|
+
|
|
+QString CurrentExecutablePath(int argc, char *argv[]) {
|
|
+ return argc ? QFile::decodeName(argv[0]) : QString();
|
|
+}
|
|
+
|
|
+} // namespace Platform
|
|
+
|
|
+namespace {
|
|
+
|
|
+class _PsEventFilter : public QAbstractNativeEventFilter {
|
|
+public:
|
|
+ bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) {
|
|
+ //auto wnd = App::wnd();
|
|
+ //if (!wnd) return false;
|
|
+
|
|
+ return false;
|
|
+ }
|
|
+};
|
|
+_PsEventFilter *_psEventFilter = nullptr;
|
|
+
|
|
+QRect _monitorRect;
|
|
+auto _monitorLastGot = 0LL;
|
|
+
|
|
+} // namespace
|
|
+
|
|
+QRect psDesktopRect() {
|
|
+ auto tnow = getms();
|
|
+ if (tnow > _monitorLastGot + 1000LL || tnow < _monitorLastGot) {
|
|
+ _monitorLastGot = tnow;
|
|
+ _monitorRect = QApplication::desktop()->availableGeometry(App::wnd());
|
|
+ }
|
|
+ return _monitorRect;
|
|
+}
|
|
+
|
|
+void psShowOverAll(QWidget *w, bool canFocus) {
|
|
+ w->show();
|
|
+}
|
|
+
|
|
+void psBringToBack(QWidget *w) {
|
|
+ w->hide();
|
|
+}
|
|
+
|
|
+QAbstractNativeEventFilter *psNativeEventFilter() {
|
|
+ delete _psEventFilter;
|
|
+ _psEventFilter = new _PsEventFilter();
|
|
+ return _psEventFilter;
|
|
+}
|
|
+
|
|
+void psWriteDump() {
|
|
+}
|
|
+
|
|
+QString demanglestr(const QString &mangled) {
|
|
+ if (mangled.isEmpty()) return mangled;
|
|
+
|
|
+ QByteArray cmd = ("c++filt -n " + mangled).toUtf8();
|
|
+ FILE *f = popen(cmd.constData(), "r");
|
|
+ if (!f) return "BAD_SYMBOL_" + mangled;
|
|
+
|
|
+ QString result;
|
|
+ char buffer[4096] = { 0 };
|
|
+ while (!feof(f)) {
|
|
+ if (fgets(buffer, 4096, f) != NULL) {
|
|
+ result += buffer;
|
|
+ }
|
|
+ }
|
|
+ pclose(f);
|
|
+ return result.trimmed();
|
|
+}
|
|
+
|
|
+QStringList addr2linestr(uint64 *addresses, int count) {
|
|
+ QStringList result;
|
|
+ if (!count || cExeName().isEmpty()) return result;
|
|
+
|
|
+ result.reserve(count);
|
|
+ QByteArray cmd = "addr2line -e " + EscapeShell(QFile::encodeName(cExeDir() + cExeName()));
|
|
+ for (int i = 0; i < count; ++i) {
|
|
+ if (addresses[i]) {
|
|
+ cmd += qsl(" 0x%1").arg(addresses[i], 0, 16).toUtf8();
|
|
+ }
|
|
+ }
|
|
+ FILE *f = popen(cmd.constData(), "r");
|
|
+
|
|
+ QStringList addr2lineResult;
|
|
+ if (f) {
|
|
+ char buffer[4096] = {0};
|
|
+ while (!feof(f)) {
|
|
+ if (fgets(buffer, 4096, f) != NULL) {
|
|
+ addr2lineResult.push_back(QString::fromUtf8(buffer));
|
|
+ }
|
|
+ }
|
|
+ pclose(f);
|
|
+ }
|
|
+ for (int i = 0, j = 0; i < count; ++i) {
|
|
+ if (addresses[i]) {
|
|
+ if (j < addr2lineResult.size() && !addr2lineResult.at(j).isEmpty() && !addr2lineResult.at(j).startsWith(qstr("0x"))) {
|
|
+ QString res = addr2lineResult.at(j).trimmed();
|
|
+ if (int index = res.indexOf(qstr("/Telegram/"))) {
|
|
+ if (index > 0) {
|
|
+ res = res.mid(index + qstr("/Telegram/").size());
|
|
+ }
|
|
+ }
|
|
+ result.push_back(res);
|
|
+ } else {
|
|
+ result.push_back(QString());
|
|
+ }
|
|
+ ++j;
|
|
+ } else {
|
|
+ result.push_back(QString());
|
|
+ }
|
|
+ }
|
|
+ return result;
|
|
+}
|
|
+
|
|
+QString psPrepareCrashDump(const QByteArray &crashdump, QString dumpfile) {
|
|
+ QString initial = QString::fromUtf8(crashdump), result;
|
|
+ QStringList lines = initial.split('\n');
|
|
+ result.reserve(initial.size());
|
|
+ int32 i = 0, l = lines.size();
|
|
+
|
|
+ while (i < l) {
|
|
+ uint64 addresses[1024] = { 0 };
|
|
+ for (; i < l; ++i) {
|
|
+ result.append(lines.at(i)).append('\n');
|
|
+ QString line = lines.at(i).trimmed();
|
|
+ if (line == qstr("Backtrace:")) {
|
|
+ ++i;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ int32 start = i;
|
|
+ for (; i < l; ++i) {
|
|
+ QString line = lines.at(i).trimmed();
|
|
+ if (line.isEmpty()) break;
|
|
+
|
|
+ QRegularExpressionMatch m1 = QRegularExpression(qsl("^(.+)\\(([^+]+)\\+([^\\)]+)\\)\\[(.+)\\]$")).match(line);
|
|
+ QRegularExpressionMatch m2 = QRegularExpression(qsl("^(.+)\\[(.+)\\]$")).match(line);
|
|
+ QString addrstr = m1.hasMatch() ? m1.captured(4) : (m2.hasMatch() ? m2.captured(2) : QString());
|
|
+ if (!addrstr.isEmpty()) {
|
|
+ uint64 addr = addrstr.startsWith(qstr("0x")) ? addrstr.mid(2).toULongLong(0, 16) : addrstr.toULongLong();
|
|
+ if (addr > 1) {
|
|
+ addresses[i - start] = addr;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
+ QStringList addr2line = addr2linestr(addresses, i - start);
|
|
+ for (i = start; i < l; ++i) {
|
|
+ QString line = lines.at(i).trimmed();
|
|
+ if (line.isEmpty()) break;
|
|
+
|
|
+ result.append(qsl("\n%1. ").arg(i - start));
|
|
+ if (line.startsWith(qstr("ERROR: "))) {
|
|
+ result.append(line).append('\n');
|
|
+ continue;
|
|
+ }
|
|
+ if (line == qstr("[0x1]")) {
|
|
+ result.append(qsl("(0x1 separator)\n"));
|
|
+ continue;
|
|
+ }
|
|
+
|
|
+ QRegularExpressionMatch m1 = QRegularExpression(qsl("^(.+)\\(([^+]*)\\+([^\\)]+)\\)(.+)$")).match(line);
|
|
+ QRegularExpressionMatch m2 = QRegularExpression(qsl("^(.+)\\[(.+)\\]$")).match(line);
|
|
+ if (!m1.hasMatch() && !m2.hasMatch()) {
|
|
+ result.append(qstr("BAD LINE: ")).append(line).append('\n');
|
|
+ continue;
|
|
+ }
|
|
+
|
|
+ if (m1.hasMatch()) {
|
|
+ result.append(demanglestr(m1.captured(2))).append(qsl(" + ")).append(m1.captured(3)).append(qsl(" [")).append(m1.captured(1)).append(qsl("] "));
|
|
+ if (!addr2line.at(i - start).isEmpty() && addr2line.at(i - start) != qsl("??:0")) {
|
|
+ result.append(qsl(" (")).append(addr2line.at(i - start)).append(qsl(")\n"));
|
|
+ } else {
|
|
+ result.append(m1.captured(4)).append(qsl(" (demangled)")).append('\n');
|
|
+ }
|
|
+ } else {
|
|
+ result.append('[').append(m2.captured(1)).append(']');
|
|
+ if (!addr2line.at(i - start).isEmpty() && addr2line.at(i - start) != qsl("??:0")) {
|
|
+ result.append(qsl(" (")).append(addr2line.at(i - start)).append(qsl(")\n"));
|
|
+ } else {
|
|
+ result.append(' ').append(m2.captured(2)).append('\n');
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ return result;
|
|
+}
|
|
+
|
|
+bool _removeDirectory(const QString &path) { // from http://stackoverflow.com/questions/2256945/removing-a-non-empty-directory-programmatically-in-c-or-c
|
|
+ QByteArray pathRaw = QFile::encodeName(path);
|
|
+ DIR *d = opendir(pathRaw.constData());
|
|
+ if (!d) return false;
|
|
+
|
|
+ while (struct dirent *p = readdir(d)) {
|
|
+ /* Skip the names "." and ".." as we don't want to recurse on them. */
|
|
+ if (!strcmp(p->d_name, ".") || !strcmp(p->d_name, "..")) continue;
|
|
+
|
|
+ QString fname = path + '/' + p->d_name;
|
|
+ QByteArray fnameRaw = QFile::encodeName(fname);
|
|
+ struct stat statbuf;
|
|
+ if (!stat(fnameRaw.constData(), &statbuf)) {
|
|
+ if (S_ISDIR(statbuf.st_mode)) {
|
|
+ if (!_removeDirectory(fname)) {
|
|
+ closedir(d);
|
|
+ return false;
|
|
+ }
|
|
+ } else {
|
|
+ if (unlink(fnameRaw.constData())) {
|
|
+ closedir(d);
|
|
+ return false;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ closedir(d);
|
|
+
|
|
+ return !rmdir(pathRaw.constData());
|
|
+}
|
|
+
|
|
+void psDeleteDir(const QString &dir) {
|
|
+ _removeDirectory(dir);
|
|
+}
|
|
+
|
|
+namespace {
|
|
+
|
|
+auto _lastUserAction = 0LL;
|
|
+
|
|
+} // namespace
|
|
+
|
|
+void psUserActionDone() {
|
|
+ _lastUserAction = getms(true);
|
|
+}
|
|
+
|
|
+bool psIdleSupported() {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+TimeMs psIdleTime() {
|
|
+ return getms(true) - _lastUserAction;
|
|
+}
|
|
+
|
|
+void psActivateProcess(uint64 pid) {
|
|
+// objc_activateProgram();
|
|
+}
|
|
+
|
|
+namespace {
|
|
+
|
|
+QString getHomeDir() {
|
|
+ struct passwd *pw = getpwuid(getuid());
|
|
+ return (pw && pw->pw_dir && strlen(pw->pw_dir)) ? (QFile::decodeName(pw->pw_dir) + '/') : QString();
|
|
+}
|
|
+
|
|
+} // namespace
|
|
+
|
|
+QString psAppDataPath() {
|
|
+ // Previously we used ~/.TelegramDesktop, so look there first.
|
|
+ // If we find data there, we should still use it.
|
|
+ auto home = getHomeDir();
|
|
+ if (!home.isEmpty()) {
|
|
+ auto oldPath = home + qsl(".TelegramDesktop/");
|
|
+ auto oldSettingsBase = oldPath + qsl("tdata/settings");
|
|
+ if (QFile(oldSettingsBase + '0').exists() || QFile(oldSettingsBase + '1').exists()) {
|
|
+ return oldPath;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + '/';
|
|
+}
|
|
+
|
|
+QString psDownloadPath() {
|
|
+ return QStandardPaths::writableLocation(QStandardPaths::DownloadLocation) + '/' + str_const_toString(AppName) + '/';
|
|
+}
|
|
+
|
|
+void psDoCleanup() {
|
|
+ try {
|
|
+ psAutoStart(false, true);
|
|
+ psSendToMenu(false, true);
|
|
+ } catch (...) {
|
|
+ }
|
|
+}
|
|
+
|
|
+int psCleanup() {
|
|
+ psDoCleanup();
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+void psDoFixPrevious() {
|
|
+}
|
|
+
|
|
+int psFixPrevious() {
|
|
+ psDoFixPrevious();
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+namespace Platform {
|
|
+
|
|
+void start() {
|
|
+}
|
|
+
|
|
+void finish() {
|
|
+}
|
|
+
|
|
+bool TranslucentWindowsSupported(QPoint globalPosition) {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+QString SystemCountry() {
|
|
+ return QString();
|
|
+}
|
|
+
|
|
+QString SystemLanguage() {
|
|
+ return QString();
|
|
+}
|
|
+
|
|
+namespace ThirdParty {
|
|
+
|
|
+void start() {
|
|
+}
|
|
+
|
|
+void finish() {
|
|
+}
|
|
+
|
|
+} // namespace ThirdParty
|
|
+
|
|
+} // namespace Platform
|
|
+
|
|
+namespace {
|
|
+
|
|
+bool _psRunCommand(const QByteArray &command) {
|
|
+ auto result = system(command.constData());
|
|
+ if (result) {
|
|
+ DEBUG_LOG(("App Error: command failed, code: %1, command (in utf8): %2").arg(result).arg(command.constData()));
|
|
+ return false;
|
|
+ }
|
|
+ DEBUG_LOG(("App Info: command succeeded, command (in utf8): %1").arg(command.constData()));
|
|
+ return true;
|
|
+}
|
|
+
|
|
+} // namespace
|
|
+
|
|
+void psRegisterCustomScheme() {
|
|
+}
|
|
+
|
|
+void psNewVersion() {
|
|
+ psRegisterCustomScheme();
|
|
+}
|
|
+
|
|
+bool _execUpdater(bool update = true, const QString &crashreport = QString()) {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+void psExecUpdater() {
|
|
+}
|
|
+
|
|
+void psExecTelegram(const QString &crashreport) {
|
|
+ _execUpdater(false, crashreport);
|
|
+}
|
|
+
|
|
+bool psShowOpenWithMenu(int x, int y, const QString &file) {
|
|
+ return false;
|
|
+}
|
|
+
|
|
+void psAutoStart(bool start, bool silent) {
|
|
+}
|
|
+
|
|
+void psSendToMenu(bool send, bool silent) {
|
|
+}
|
|
+
|
|
+void psUpdateOverlayed(QWidget *widget) {
|
|
+}
|
|
+
|
|
+bool psLaunchMaps(const LocationCoords &coords) {
|
|
+ return false;
|
|
+}
|
|
diff --git a/Telegram/SourceFiles/platform/haiku/specific_haiku.h b/Telegram/SourceFiles/platform/haiku/specific_haiku.h
|
|
new file mode 100644
|
|
index 0000000..99d13d5
|
|
--- /dev/null
|
|
+++ b/Telegram/SourceFiles/platform/haiku/specific_haiku.h
|
|
@@ -0,0 +1,120 @@
|
|
+/*
|
|
+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.
|
|
+
|
|
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
|
|
+Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
|
|
+*/
|
|
+#pragma once
|
|
+
|
|
+//#include <execinfo.h>
|
|
+#include <signal.h>
|
|
+
|
|
+namespace Platform {
|
|
+
|
|
+inline void SetWatchingMediaKeys(bool watching) {
|
|
+}
|
|
+
|
|
+inline void StartTranslucentPaint(QPainter &p, QPaintEvent *e) {
|
|
+}
|
|
+
|
|
+inline void InitOnTopPanel(QWidget *panel) {
|
|
+}
|
|
+
|
|
+inline void DeInitOnTopPanel(QWidget *panel) {
|
|
+}
|
|
+
|
|
+inline void ReInitOnTopPanel(QWidget *panel) {
|
|
+}
|
|
+
|
|
+QString CurrentExecutablePath(int argc, char *argv[]);
|
|
+
|
|
+} // namespace Platform
|
|
+
|
|
+inline QString psServerPrefix() {
|
|
+ return qsl("/tmp/");
|
|
+}
|
|
+inline void psCheckLocalSocket(const QString &serverName) {
|
|
+ QFile address(serverName);
|
|
+ if (address.exists()) {
|
|
+ address.remove();
|
|
+ }
|
|
+}
|
|
+
|
|
+void psWriteDump();
|
|
+QString psPrepareCrashDump(const QByteArray &crashdump, QString dumpfile);
|
|
+
|
|
+void psDeleteDir(const QString &dir);
|
|
+
|
|
+void psUserActionDone();
|
|
+bool psIdleSupported();
|
|
+TimeMs psIdleTime();
|
|
+
|
|
+QStringList psInitLogs();
|
|
+void psClearInitLogs();
|
|
+
|
|
+void psActivateProcess(uint64 pid = 0);
|
|
+QString psLocalServerPrefix();
|
|
+QString psAppDataPath();
|
|
+QString psDownloadPath();
|
|
+void psAutoStart(bool start, bool silent = false);
|
|
+void psSendToMenu(bool send, bool silent = false);
|
|
+
|
|
+QRect psDesktopRect();
|
|
+void psShowOverAll(QWidget *w, bool canFocus = true);
|
|
+void psBringToBack(QWidget *w);
|
|
+
|
|
+int psCleanup();
|
|
+int psFixPrevious();
|
|
+
|
|
+void psExecUpdater();
|
|
+void psExecTelegram(const QString &arg = QString());
|
|
+
|
|
+QAbstractNativeEventFilter *psNativeEventFilter();
|
|
+
|
|
+void psNewVersion();
|
|
+
|
|
+void psUpdateOverlayed(QWidget *widget);
|
|
+inline QByteArray psDownloadPathBookmark(const QString &path) {
|
|
+ return QByteArray();
|
|
+}
|
|
+inline QByteArray psPathBookmark(const QString &path) {
|
|
+ return QByteArray();
|
|
+}
|
|
+inline void psDownloadPathEnableAccess() {
|
|
+}
|
|
+
|
|
+class PsFileBookmark {
|
|
+public:
|
|
+ PsFileBookmark(const QByteArray &bookmark) {
|
|
+ }
|
|
+ bool check() const {
|
|
+ return true;
|
|
+ }
|
|
+ bool enable() const {
|
|
+ return true;
|
|
+ }
|
|
+ void disable() const {
|
|
+ }
|
|
+ const QString &name(const QString &original) const {
|
|
+ return original;
|
|
+ }
|
|
+ QByteArray bookmark() const {
|
|
+ return QByteArray();
|
|
+ }
|
|
+
|
|
+};
|
|
+
|
|
+bool linuxMoveFile(const char *from, const char *to);
|
|
+
|
|
+bool psLaunchMaps(const LocationCoords &coords);
|
|
diff --git a/Telegram/SourceFiles/platform/platform_audio.h b/Telegram/SourceFiles/platform/platform_audio.h
|
|
index 516398a..3511402 100644
|
|
--- a/Telegram/SourceFiles/platform/platform_audio.h
|
|
+++ b/Telegram/SourceFiles/platform/platform_audio.h
|
|
@@ -32,7 +32,7 @@ void DeInit();
|
|
|
|
// Platform dependent implementations.
|
|
|
|
-#if defined Q_OS_MAC || defined Q_OS_LINUX
|
|
+#if defined Q_OS_MAC || defined Q_OS_LINUX || defined(Q_OS_HAIKU)
|
|
namespace Platform {
|
|
namespace Audio {
|
|
|
|
diff --git a/Telegram/SourceFiles/platform/platform_file_utilities.h b/Telegram/SourceFiles/platform/platform_file_utilities.h
|
|
index c08f759..50d7418 100644
|
|
--- a/Telegram/SourceFiles/platform/platform_file_utilities.h
|
|
+++ b/Telegram/SourceFiles/platform/platform_file_utilities.h
|
|
@@ -51,8 +51,10 @@ bool Get(QStringList &files, QByteArray &remoteContent, const QString &caption,
|
|
|
|
#ifdef Q_OS_MAC
|
|
#include "platform/mac/file_utilities_mac.h"
|
|
-//#elif defined Q_OS_LINUX // Q_OS_MAC
|
|
-//#include "platform/linux/file_utilities_linux.h"
|
|
+#elif defined Q_OS_LINUX // Q_OS_MAC
|
|
+#include "platform/linux/file_utilities_linux.h"
|
|
+#elif defined Q_OS_HAIKU // Q_OS_LINUX
|
|
+#include "platform/haiku/file_utilities_haiku.h"
|
|
#elif defined Q_OS_WINRT || defined Q_OS_WIN // Q_OS_MAC || Q_OS_LINUX
|
|
#include "platform/win/file_utilities_win.h"
|
|
#endif // Q_OS_MAC || Q_OS_LINUX || Q_OS_WINRT || Q_OS_WIN
|
|
diff --git a/Telegram/SourceFiles/platform/platform_notifications_manager.h b/Telegram/SourceFiles/platform/platform_notifications_manager.h
|
|
index e303272..1bd4c74 100644
|
|
--- a/Telegram/SourceFiles/platform/platform_notifications_manager.h
|
|
+++ b/Telegram/SourceFiles/platform/platform_notifications_manager.h
|
|
@@ -41,6 +41,8 @@ void FlashBounce();
|
|
#include "platform/mac/notifications_manager_mac.h"
|
|
#elif defined Q_OS_LINUX // Q_OS_MAC
|
|
#include "platform/linux/notifications_manager_linux.h"
|
|
+#elif defined Q_OS_HAIKU // Q_OS_LINUX
|
|
+#include "platform/haiku/notifications_manager_haiku.h"
|
|
#elif defined Q_OS_WIN // Q_OS_MAC || Q_OS_LINUX
|
|
#include "platform/win/notifications_manager_win.h"
|
|
#endif // Q_OS_MAC || Q_OS_LINUX || Q_OS_WIN
|
|
--
|
|
2.15.0
|
|
|
|
|
|
From b073caa08cbf894214deb586a0d5d128d954f412 Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Fri, 15 Sep 2017 22:09:06 +1000
|
|
Subject: Add haiku platform for settings
|
|
|
|
|
|
diff --git a/Telegram/SourceFiles/settings.cpp b/Telegram/SourceFiles/settings.cpp
|
|
index 4306551..df713a3 100644
|
|
--- a/Telegram/SourceFiles/settings.cpp
|
|
+++ b/Telegram/SourceFiles/settings.cpp
|
|
@@ -96,6 +96,8 @@ int32 gIntRetinaFactor = 1;
|
|
DBIPlatform gPlatform = dbipWindows;
|
|
#elif defined Q_OS_MAC
|
|
DBIPlatform gPlatform = dbipMac;
|
|
+#elif defined Q_OS_HAIKU
|
|
+DBIPlatform gPlatform = dbipHaiku;
|
|
#elif defined Q_OS_LINUX64
|
|
DBIPlatform gPlatform = dbipLinux64;
|
|
#elif defined Q_OS_LINUX32
|
|
@@ -230,6 +232,10 @@ void InitFromCommandLine(int argc, char *argv[]) {
|
|
gUpdateURL = QUrl(qsl("http://tdesktop.com/linux32/tupdates/current"));
|
|
gPlatformString = qsl("Linux32bit");
|
|
break;
|
|
+ case dbipHaiku:
|
|
+ gUpdateURL = QUrl();
|
|
+ gPlatformString = qsl("HaikuDepot");
|
|
+ break;
|
|
}
|
|
|
|
auto path = Platform::CurrentExecutablePath(argc, argv);
|
|
--
|
|
2.15.0
|
|
|
|
|
|
From 2cc15beef78a8af7101e457588f31b65ca06621c Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Fri, 15 Sep 2017 22:09:59 +1000
|
|
Subject: Fix Qt plugins path
|
|
|
|
|
|
diff --git a/Telegram/SourceFiles/main.cpp b/Telegram/SourceFiles/main.cpp
|
|
index 4684e2a..c65879b 100644
|
|
--- a/Telegram/SourceFiles/main.cpp
|
|
+++ b/Telegram/SourceFiles/main.cpp
|
|
@@ -41,9 +41,7 @@ int main(int argc, char *argv[]) {
|
|
Platform::start(); // must be started before QApplication is created
|
|
|
|
// I don't know why path is not in QT_PLUGIN_PATH by default
|
|
- QCoreApplication::addLibraryPath("/boot/system/add-ons/Qt");
|
|
- // without this Telegram doesn't start on Ubuntu 17.04 due GTK errors
|
|
- setenv("QT_STYLE_OVERRIDE", "qwerty", false);
|
|
+ QCoreApplication::addLibraryPath("/boot/system/add-ons/Qt5");
|
|
|
|
int result = 0;
|
|
{
|
|
--
|
|
2.15.0
|
|
|
|
|
|
From 03382e169fbff39886c19ea1f840732cc0031952 Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Fri, 15 Sep 2017 22:10:59 +1000
|
|
Subject: Fix crash
|
|
|
|
|
|
diff --git a/Telegram/SourceFiles/media/media_audio.cpp b/Telegram/SourceFiles/media/media_audio.cpp
|
|
index b0a1ade..9c84a34 100644
|
|
--- a/Telegram/SourceFiles/media/media_audio.cpp
|
|
+++ b/Telegram/SourceFiles/media/media_audio.cpp
|
|
@@ -98,6 +98,7 @@ void EnumeratePlaybackDevices() {
|
|
void EnumerateCaptureDevices() {
|
|
auto deviceNames = QStringList();
|
|
auto devices = alcGetString(nullptr, ALC_CAPTURE_DEVICE_SPECIFIER);
|
|
+#ifndef __HAIKU__
|
|
Assert(devices != nullptr);
|
|
while (*devices != 0) {
|
|
auto deviceName8Bit = QByteArray(devices);
|
|
@@ -106,7 +107,7 @@ void EnumerateCaptureDevices() {
|
|
devices += deviceName8Bit.size() + 1;
|
|
}
|
|
LOG(("Audio Capture Devices: %1").arg(deviceNames.join(';')));
|
|
-
|
|
+#endif
|
|
if (auto device = alcGetString(nullptr, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER)) {
|
|
LOG(("Audio Capture Default Device: %1").arg(QString::fromLocal8Bit(device)));
|
|
} else {
|
|
--
|
|
2.15.0
|
|
|
|
|
|
From 0516a4b29fc2b14ea02591755686b71e30ea8061 Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Fri, 15 Sep 2017 22:14:32 +1000
|
|
Subject: Add haiku platform files to build
|
|
|
|
|
|
diff --git a/Telegram/gyp/Telegram.gyp b/Telegram/gyp/Telegram.gyp
|
|
index e716483..05f88e1 100644
|
|
--- a/Telegram/gyp/Telegram.gyp
|
|
+++ b/Telegram/gyp/Telegram.gyp
|
|
@@ -81,7 +81,7 @@
|
|
'codegen.gyp:codegen_numbers',
|
|
'codegen.gyp:codegen_style',
|
|
'tests/tests.gyp:tests',
|
|
-# '../ThirdParty/libtgvoip/libtgvoip.gyp:libtgvoip',
|
|
+ '../ThirdParty/libtgvoip/libtgvoip.gyp:libtgvoip',
|
|
],
|
|
|
|
'defines': [
|
|
diff --git a/Telegram/gyp/settings_haiku.gypi b/Telegram/gyp/settings_haiku.gypi
|
|
index 7b5161e..3e5f508 100644
|
|
--- a/Telegram/gyp/settings_haiku.gypi
|
|
+++ b/Telegram/gyp/settings_haiku.gypi
|
|
@@ -41,6 +41,10 @@
|
|
[ '"<!(uname -p)" == "x86_64"', {
|
|
'defines': [
|
|
'Q_OS_HAIKU',
|
|
+ 'TDESKTOP_DISABLE_CRASH_REPORTS',
|
|
+ 'TDESKTOP_DISABLE_AUTOUPDATE',
|
|
+ 'TDESKTOP_DISABLE_UNITY_INTEGRATION',
|
|
+ 'TDESKTOP_DISABLE_DESKTOP_FILE_GENERATION',
|
|
],
|
|
'conditions': [
|
|
[ '"<(official_build_target)" != "" and "<(official_build_target)" != "haiku"', {
|
|
@@ -50,6 +54,10 @@
|
|
}, {
|
|
'defines': [
|
|
'Q_OS_HAIKU',
|
|
+ 'TDESKTOP_DISABLE_CRASH_REPORTS',
|
|
+ 'TDESKTOP_DISABLE_AUTOUPDATE',
|
|
+ 'TDESKTOP_DISABLE_UNITY_INTEGRATION',
|
|
+ 'TDESKTOP_DISABLE_DESKTOP_FILE_GENERATION',
|
|
],
|
|
'conditions': [
|
|
[ '"<(official_build_target)" != "" and "<(official_build_target)" != "haiku"', {
|
|
diff --git a/Telegram/gyp/telegram_haiku.gypi b/Telegram/gyp/telegram_haiku.gypi
|
|
index a41b667..eec9f5b 100644
|
|
--- a/Telegram/gyp/telegram_haiku.gypi
|
|
+++ b/Telegram/gyp/telegram_haiku.gypi
|
|
@@ -48,6 +48,7 @@
|
|
'avutil',
|
|
'minizip',
|
|
'opus',
|
|
+ 'network',
|
|
'z',
|
|
# '<!(pkg-config 2> /dev/null --libs <@(pkgconfig_libs))',
|
|
],
|
|
diff --git a/Telegram/gyp/telegram_sources.txt b/Telegram/gyp/telegram_sources.txt
|
|
index 58f2789..f86e6e6 100644
|
|
--- a/Telegram/gyp/telegram_sources.txt
|
|
+++ b/Telegram/gyp/telegram_sources.txt
|
|
@@ -302,6 +302,10 @@
|
|
<(src_loc)/mtproto/type_utils.h
|
|
<(src_loc)/overview/overview_layout.cpp
|
|
<(src_loc)/overview/overview_layout.h
|
|
+<(src_loc)/platform/haiku/file_utilities_haiku.cpp
|
|
+<(src_loc)/platform/haiku/file_utilities_haiku.h
|
|
+<(src_loc)/platform/haiku/notifications_manager_haiku.cpp
|
|
+<(src_loc)/platform/haiku/notifications_manager_haiku.h
|
|
<(src_loc)/platform/haiku/main_window_haiku.cpp
|
|
<(src_loc)/platform/haiku/main_window_haiku.h
|
|
<(src_loc)/platform/haiku/specific_haiku.cpp
|
|
--
|
|
2.15.0
|
|
|
|
|
|
From add8c54b71e8d2339b0a50497850e483e266292a Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Sat, 16 Sep 2017 23:06:27 +1000
|
|
Subject: Move working dir to user settings
|
|
|
|
|
|
diff --git a/Telegram/SourceFiles/logs.cpp b/Telegram/SourceFiles/logs.cpp
|
|
index d916756..3d61a91 100644
|
|
--- a/Telegram/SourceFiles/logs.cpp
|
|
+++ b/Telegram/SourceFiles/logs.cpp
|
|
@@ -311,7 +311,7 @@ namespace Logs {
|
|
QString initialWorkingDir = QDir(cWorkingDir()).absolutePath() + '/', moveOldDataFrom;
|
|
if (cBetaVersion()) {
|
|
cSetDebug(true);
|
|
-#if defined Q_OS_MAC || defined Q_OS_LINUX
|
|
+#if defined Q_OS_MAC || defined Q_OS_LINUX || defined Q_OS_HAIKU
|
|
} else {
|
|
#ifdef _DEBUG
|
|
cForceWorkingDir(cExeDir());
|
|
diff --git a/Telegram/SourceFiles/platform/haiku/specific_haiku.cpp b/Telegram/SourceFiles/platform/haiku/specific_haiku.cpp
|
|
index ce9091a..b303e1d 100644
|
|
--- a/Telegram/SourceFiles/platform/haiku/specific_haiku.cpp
|
|
+++ b/Telegram/SourceFiles/platform/haiku/specific_haiku.cpp
|
|
@@ -285,28 +285,9 @@ void psActivateProcess(uint64 pid) {
|
|
// objc_activateProgram();
|
|
}
|
|
|
|
-namespace {
|
|
-
|
|
-QString getHomeDir() {
|
|
- struct passwd *pw = getpwuid(getuid());
|
|
- return (pw && pw->pw_dir && strlen(pw->pw_dir)) ? (QFile::decodeName(pw->pw_dir) + '/') : QString();
|
|
-}
|
|
-
|
|
-} // namespace
|
|
|
|
QString psAppDataPath() {
|
|
- // Previously we used ~/.TelegramDesktop, so look there first.
|
|
- // If we find data there, we should still use it.
|
|
- auto home = getHomeDir();
|
|
- if (!home.isEmpty()) {
|
|
- auto oldPath = home + qsl(".TelegramDesktop/");
|
|
- auto oldSettingsBase = oldPath + qsl("tdata/settings");
|
|
- if (QFile(oldSettingsBase + '0').exists() || QFile(oldSettingsBase + '1').exists()) {
|
|
- return oldPath;
|
|
- }
|
|
- }
|
|
-
|
|
- return QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + '/';
|
|
+ return QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + '/';
|
|
}
|
|
|
|
QString psDownloadPath() {
|
|
--
|
|
2.15.0
|
|
|
|
|
|
From a00a0ffae9003fdc3125d5aed889044b5f940bcd Mon Sep 17 00:00:00 2001
|
|
From: Sergei Reznikov <diver@gelios.net>
|
|
Date: Tue, 12 Dec 2017 14:37:08 +0300
|
|
Subject: Fix Qt search paths
|
|
|
|
|
|
diff --git a/Telegram/gyp/qt.gypi b/Telegram/gyp/qt.gypi
|
|
index b9e1d5a..26a27ed 100644
|
|
--- a/Telegram/gyp/qt.gypi
|
|
+++ b/Telegram/gyp/qt.gypi
|
|
@@ -27,7 +27,7 @@
|
|
[ 'build_macold', {
|
|
'qt_version%': '5.3.2',
|
|
}, {
|
|
- 'qt_version%': '5.9.2',
|
|
+ 'qt_version%': '<!(pkg-config --modversion Qt5Core)',
|
|
}]
|
|
],
|
|
},
|
|
@@ -173,13 +173,20 @@
|
|
},
|
|
|
|
'include_dirs': [
|
|
- '/boot/system/develop/headers',
|
|
- '/boot/system/develop/headers/QtCore',
|
|
- '/boot/system/develop/headers/QtGui',
|
|
- '/boot/system/develop/headers/QtCore/<(qt_version)',
|
|
- '/boot/system/develop/headers/QtGui/<(qt_version)',
|
|
- '/boot/system/develop/headers/QtCore/<(qt_version)/QtCore',
|
|
- '/boot/system/develop/headers/QtGui/<(qt_version)/QtGui',
|
|
+ '/system/develop/headers',
|
|
+ '/system/develop/headers/x86',
|
|
+ '/system/develop/headers/QtCore',
|
|
+ '/system/develop/headers/x86/QtCore',
|
|
+ '/system/develop/headers/QtGui',
|
|
+ '/system/develop/headers/x86/QtGui',
|
|
+ '/system/develop/headers/QtCore/<(qt_version)',
|
|
+ '/system/develop/headers/x86/QtCore/<(qt_version)',
|
|
+ '/system/develop/headers/QtGui/<(qt_version)',
|
|
+ '/system/develop/headers/x86/QtGui/<(qt_version)',
|
|
+ '/system/develop/headers/QtCore/<(qt_version)/QtCore',
|
|
+ '/system/develop/headers/x86/QtCore/<(qt_version)/QtCore',
|
|
+ '/system/develop/headers/QtGui/<(qt_version)/QtGui',
|
|
+ '/system/develop/headers/x86/QtGui/<(qt_version)/QtGui',
|
|
],
|
|
'library_dirs': [
|
|
'<(qt_loc)/lib',
|
|
--
|
|
2.15.0
|
|
|