mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
commit
405535750a
57
.travis.yml
57
.travis.yml
@ -10,7 +10,7 @@ matrix:
|
||||
sudo: required
|
||||
compiler: gcc
|
||||
- os: osx
|
||||
osx_image: xcode6.2
|
||||
osx_image: xcode9.3
|
||||
compiler: clang
|
||||
sudo: false
|
||||
|
||||
@ -19,8 +19,12 @@ before_install:
|
||||
- if [ $TRAVIS_OS_NAME == linux ]; then sudo apt-get install -y build-essential libssl-dev libsqlcipher-dev libbz2-dev libmicrohttpd-dev libsqlite3-dev libupnp-dev pkg-config qt5-default libxss-dev qtmultimedia5-dev libqt5x11extras5-dev libqt5designer5 libxapian-dev qttools5-dev; fi
|
||||
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew update ; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew install qt openssl miniupnpc libmicrohttpd sqlcipher xapian; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew link --force qt ; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew install ccach; export PATH="/usr/local/opt/ccache/libexec:$PATH" ; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew install qt5; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew link --force qt5 ; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew install openssl miniupnpc libmicrohttpd sqlcipher xapian; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then brew install p7zip; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then npm install -g appdmg; fi
|
||||
|
||||
- wget https://github.com/Tencent/rapidjson/archive/v1.1.0.tar.gz
|
||||
- tar -xf v1.1.0.tar.gz
|
||||
@ -44,36 +48,37 @@ addons:
|
||||
|
||||
before_script:
|
||||
- if [ $TRAVIS_OS_NAME == linux ]; then qmake QMAKE_CC=$CC QMAKE_CXX=$CXX; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then echo TEMPORARILY DISABLED qmake QMAKE_CC=$CC QMAKE_CXX=$CXX CONFIG+=rs_macos10.12 INCLUDEPATH+=/usr/local/opt/openssl/include/ QMAKE_LIBDIR+=/usr/local/opt/openssl/lib/; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then qmake QMAKE_CC=$CC QMAKE_CXX=$CXX CONFIG+=rs_macos10.13 CONFIG+=no_retroshare_plugins INCLUDEPATH+=/usr/local/opt/openssl/include/ INCLUDEPATH+=/usr/local/Cellar/sqlcipher/4.0.1/include INCLUDEPATH+=/usr/local/Cellar/libmicrohttpd/0.9.62_1/include QMAKE_LIBDIR+=/usr/local/opt/openssl/lib/ QMAKE_LIBDIR+=/usr/local/Cellar/libmicrohttpd/0.9.62_1/lib QMAKE_LIBDIR+=/usr/local/Cellar/sqlcipher/4.0.1/lib; fi
|
||||
|
||||
script:
|
||||
- if [ $TRAVIS_OS_NAME == osx ] && [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then make -j4; fi
|
||||
|
||||
after_success:
|
||||
- if [ $TRAVIS_OS_NAME == osx ]; then chmod +x ./travis_makeOSXPackage.sh && ./travis_makeOSXPackage.sh ; fi
|
||||
- if [ $TRAVIS_OS_NAME == linux ] && [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then make -j2; fi
|
||||
- if [ $TRAVIS_OS_NAME == osx ] && [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then echo TEMPORARILY DISABLED make -j2; fi
|
||||
|
||||
|
||||
#after_success:
|
||||
# - if [ $TRAVIS_BRANCH == $TRAVIS_TAG ]; then rake deploy; fi
|
||||
|
||||
#branches:
|
||||
# only:
|
||||
# - master
|
||||
# - travis
|
||||
# branches:
|
||||
# only:
|
||||
# - v0.6-MacOS-Travis-Deploy2
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
irc:
|
||||
channels:
|
||||
- "chat.freenode.net#retroshare"
|
||||
template:
|
||||
- "%{repository}/%{branch} (%{commit} - %{author}): %{build_url}: %{message}"
|
||||
- "Message: %{commit_message}"
|
||||
- "Commit details: %{compare_url}"
|
||||
# webhooks:
|
||||
# urls:
|
||||
# - https://webhooks.gitter.im/e/9502afd22ca6c8e85fb3
|
||||
# on_success: change
|
||||
# on_failure: always
|
||||
# on_start: always
|
||||
channels:
|
||||
- "chat.freenode.net#retroshare"
|
||||
template:
|
||||
- "%{repository}/%{branch} (%{commit} - %{author}): %{build_url}: %{message}"
|
||||
- "Message: %{commit_message}"
|
||||
- "Commit details: %{compare_url}"
|
||||
|
||||
deploy:
|
||||
provider: releases
|
||||
api_key:
|
||||
secure: auwuhxelaMriNaXzT8I03xrh1s+STicNyNToOWFCAYKxkWWQ4WeaCO6kRDmQrejhizMUILGU+s4FrWTEhDsviftGAF86EgzxxbSBfsHHAP4t2C0pcXX8/WxEoh1IrUs7iGCIpl7O2cvWqGidc20ROeptSEd1uQgkHnn14D9A2YmXf8g52PzqivKkb6HKfkVTPdmNJkMBT5eDtEw6DIk+DvnvRo6b6uanvVAKS9CBwXOdA3rLzaD9bz0LrdL9X1CNoTkGROyez0Lsc4zTr70id2Xfp1MMmJAV6hgQy+iwE37wRyrxJf3dkh5SUAAMUC9Xnvh/iBKNQKdQGhj2WGcV7GZV9k6u9DA1w2H0kcrwt9KHUXdhEQ67yr6Boa9ZFwdDb5VIOtC6iHAoDZXharHhiuxi0K/bCtwNAajrMjBCm9mWhEKvtoxUUYxAJajhJkkO3ERaOU3zHE+06esDzGozd2YOEH8a74HhYy4xvhR05Yj00hAWLS2kIaUITiqmBf6Yuh5XwH7KCDcapxF59ROWqyicdwtbfWpvN8IvFuGKyxYuEfoT8WxZ4lZpo4Q9CrTB7gedJYJxYNfZE/okWoFBb4cpPI94PHo3DZPR7lVyQ60RNyeR0nOeqf8NW8cBT1G4jw3u1LEyAdyvup+54aALw0DCVyoDojSXB8s+AlQG2JE=
|
||||
file: retroshare-gui/src/retroshare.dmg
|
||||
skip_cleanup: true
|
||||
on:
|
||||
repo: retroshare/RetroShare
|
||||
branch: v0.6-OSX-Deploy
|
||||
|
||||
#env:
|
||||
# - RVM=2.0.0 LANG="en_US.UTF-8"
|
||||
|
@ -121,7 +121,7 @@ void bdThread::join() /* waits for the the mTid thread to stop */
|
||||
|
||||
mMutex.lock();
|
||||
{
|
||||
#if defined(_WIN32) || defined(__MINGW32__)
|
||||
#if defined(_WIN32) || defined(__MINGW32__) || defined(__APPLE__)
|
||||
/* Its a struct in Windows compile and the member .p ist checked in the pthreads library */
|
||||
#else
|
||||
if(mTid > 0)
|
||||
|
@ -19,7 +19,6 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
#define nullptr 0
|
||||
|
||||
#include "json.h"
|
||||
#include <stdlib.h>
|
||||
@ -33,6 +32,7 @@
|
||||
#include <cctype>
|
||||
#include <stack>
|
||||
#include <cerrno>
|
||||
#include "util/cxx11retrocompat.h"
|
||||
|
||||
#ifndef WIN32
|
||||
#define _stricmp strcasecmp
|
||||
|
@ -315,6 +315,7 @@ struct RsIdentityDetails : RsSerializable
|
||||
|
||||
RsGxsImage mAvatar;
|
||||
|
||||
rstime_t mPublishTS;
|
||||
rstime_t mLastUsageTS;
|
||||
|
||||
std::map<RsIdentityUsage,rstime_t> mUseCases;
|
||||
@ -329,6 +330,7 @@ struct RsIdentityDetails : RsSerializable
|
||||
RS_SERIAL_PROCESS(mPgpId);
|
||||
//RS_SERIAL_PROCESS(mReputation);
|
||||
//RS_SERIAL_PROCESS(mAvatar);
|
||||
RS_SERIAL_PROCESS(mPublishTS);
|
||||
RS_SERIAL_PROCESS(mLastUsageTS);
|
||||
RS_SERIAL_PROCESS(mUseCases);
|
||||
}
|
||||
|
@ -277,11 +277,27 @@ struct DirStub : RsSerializable
|
||||
{
|
||||
RS_SERIAL_PROCESS(type);
|
||||
RS_SERIAL_PROCESS(name);
|
||||
|
||||
#if defined(__GNUC__) && !defined(__clang__)
|
||||
# pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
||||
#endif // defined(__GNUC__) && !defined(__clang__)
|
||||
std::uintptr_t& handle(reinterpret_cast<std::uintptr_t&>(ref));
|
||||
RS_SERIAL_PROCESS(handle);
|
||||
// (Cyril) We have to do this because on some systems (MacOS) uintptr_t is unsigned long which is not well defined. It is always
|
||||
// preferable to force type serialization to the correct size rather than letting the compiler choose for us.
|
||||
// /!\ This structure cannot be sent over the network. The serialization would be inconsistent.
|
||||
|
||||
if(sizeof(ref) == 4)
|
||||
{
|
||||
std::uint32_t& handle(reinterpret_cast<std::uint32_t&>(ref));
|
||||
RS_SERIAL_PROCESS(handle);
|
||||
}
|
||||
else if(sizeof(ref) == 8)
|
||||
{
|
||||
std::uint64_t& handle(reinterpret_cast<std::uint64_t&>(ref));
|
||||
RS_SERIAL_PROCESS(handle);
|
||||
}
|
||||
else
|
||||
std::cerr << __PRETTY_FUNCTION__ << ": cannot serialize raw pointer of size " << sizeof(ref) << std::endl;
|
||||
|
||||
#if defined(__GNUC__) && !defined(__clang__)
|
||||
# pragma GCC diagnostic pop
|
||||
#endif // defined(__GNUC__) && !defined(__clang__)
|
||||
@ -322,13 +338,32 @@ struct DirDetails : RsSerializable
|
||||
#if defined(__GNUC__) && !defined(__clang__)
|
||||
# pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
||||
#endif // defined(__GNUC__) && !defined(__clang__)
|
||||
std::uintptr_t& handle(reinterpret_cast<std::uintptr_t&>(ref));
|
||||
RS_SERIAL_PROCESS(handle);
|
||||
std::uintptr_t& parentHandle(reinterpret_cast<std::uintptr_t&>(parent));
|
||||
RS_SERIAL_PROCESS(parentHandle);
|
||||
|
||||
// (Cyril) We have to do this because on some systems (MacOS) uintptr_t is unsigned long which is not well defined. It is always
|
||||
// preferable to force type serialization to the correct size rather than letting the compiler choose for us.
|
||||
// /!\ This structure cannot be sent over the network. The serialization would be inconsistent.
|
||||
|
||||
if(sizeof(ref) == 4)
|
||||
{
|
||||
std::uint32_t& handle(reinterpret_cast<std::uint32_t&>(ref));
|
||||
RS_SERIAL_PROCESS(handle);
|
||||
std::uint32_t& parentHandle(reinterpret_cast<std::uint32_t&>(parent));
|
||||
RS_SERIAL_PROCESS(parentHandle);
|
||||
}
|
||||
else if(sizeof(ref) == 8)
|
||||
{
|
||||
std::uint64_t& handle(reinterpret_cast<std::uint64_t&>(ref));
|
||||
RS_SERIAL_PROCESS(handle);
|
||||
std::uint64_t& parentHandle(reinterpret_cast<std::uint64_t&>(parent));
|
||||
RS_SERIAL_PROCESS(parentHandle);
|
||||
}
|
||||
else
|
||||
std::cerr << __PRETTY_FUNCTION__ << ": cannot serialize raw pointer of size " << sizeof(ref) << std::endl;
|
||||
|
||||
#if defined(__GNUC__) && !defined(__clang__)
|
||||
# pragma GCC diagnostic pop
|
||||
#endif // defined(__GNUC__) && !defined(__clang__)
|
||||
|
||||
RS_SERIAL_PROCESS(prow);
|
||||
RS_SERIAL_PROCESS(type);
|
||||
RS_SERIAL_PROCESS(id);
|
||||
|
@ -131,7 +131,7 @@ struct RsTypeSerializer
|
||||
|
||||
/// Generic types
|
||||
template<typename T>
|
||||
typename std::enable_if<std::is_same<RsTlvItem,T>::value || !(std::is_base_of<RsSerializable,T>::value || std::is_enum<T>::value || std::is_base_of<RsTlvItem,T>::value)>::type
|
||||
typename std::enable_if<std::is_same<RsTlvItem,T>::value || !(std::is_base_of<RsSerializable,T>::value || std::is_enum<T>::value || std::is_base_of<RsTlvItem,T>::value )>::type
|
||||
static /*void*/ serial_process( RsGenericSerializer::SerializeJob j,
|
||||
RsGenericSerializer::SerializeContext& ctx,
|
||||
T& member, const std::string& member_name )
|
||||
|
@ -703,6 +703,7 @@ bool p3IdService::getIdDetails(const RsGxsId &id, RsIdentityDetails &details)
|
||||
details.mLastUsageTS = it->second.TS ;
|
||||
details.mUseCases = it->second.usage_map ;
|
||||
}
|
||||
details.mPublishTS = data.mPublishTs;
|
||||
|
||||
// one utf8 symbol can be at most 4 bytes long - would be better to measure real unicode length !!!
|
||||
if(details.mNickname.length() > RSID_MAXIMUM_NICKNAME_SIZE*4)
|
||||
|
@ -22,6 +22,7 @@
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QMessageBox>
|
||||
#include <QDateTime>
|
||||
#include <QMenu>
|
||||
#include <QWidgetAction>
|
||||
#include <QStyledItemDelegate>
|
||||
@ -175,6 +176,7 @@ IdDialog::IdDialog(QWidget *parent) :
|
||||
mStateHelper->addClear(IDDIALOG_IDLIST, ui->idTreeWidget);
|
||||
|
||||
mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_Nickname);
|
||||
mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_PublishTS);
|
||||
mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_KeyId);
|
||||
mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_Type);
|
||||
mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_GpgId);
|
||||
@ -190,6 +192,7 @@ IdDialog::IdDialog(QWidget *parent) :
|
||||
mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->label_negative);
|
||||
|
||||
mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_Nickname);
|
||||
mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_PublishTS);
|
||||
mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_KeyId);
|
||||
mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_Type);
|
||||
mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_GpgId);
|
||||
@ -200,6 +203,7 @@ IdDialog::IdDialog(QWidget *parent) :
|
||||
mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->usageStatistics_TB);
|
||||
|
||||
mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_Nickname);
|
||||
mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_PublishTS);
|
||||
mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_KeyId);
|
||||
mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_Type);
|
||||
mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_GpgId);
|
||||
@ -1768,6 +1772,7 @@ void IdDialog::insertIdDetails(uint32_t token)
|
||||
/* get GPG Details from rsPeers */
|
||||
RsPgpId ownPgpId = rsPeers->getGPGOwnId();
|
||||
|
||||
ui->lineEdit_PublishTS->setText(QDateTime::fromMSecsSinceEpoch(qint64(1000)*data.mMeta.mPublishTs).toString(Qt::SystemLocaleShortDate));
|
||||
ui->lineEdit_Nickname->setText(QString::fromUtf8(data.mMeta.mGroupName.c_str()).left(RSID_MAXIMUM_NICKNAME_SIZE));
|
||||
ui->lineEdit_KeyId->setText(QString::fromStdString(data.mMeta.mGroupId.toStdString()));
|
||||
//ui->lineEdit_GpgHash->setText(QString::fromStdString(data.mPgpIdHash.toStdString()));
|
||||
|
@ -526,39 +526,25 @@ border-image: url(:/images/closepressed.png)
|
||||
<property name="title">
|
||||
<string>Identity info</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="detailsGroupBoxGLayout">
|
||||
<item row="10" column="1">
|
||||
<widget class="QLineEdit" name="neighborNodesOpinion_TF">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Average opinion of neighbor nodes about this identity. Negative is bad,</p><p>positive is good. Zero is neutral.</p></body></html></string>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="2" colspan="2">
|
||||
<widget class="QLineEdit" name="lineEdit_KeyId">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<item row="9" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_YourOpinion">
|
||||
<property name="text">
|
||||
<string>Your opinion:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="banoption_label">
|
||||
<property name="text">
|
||||
<string>Ban-option:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="2">
|
||||
<widget class="Line" name="line_IdInfo">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="11" column="1">
|
||||
<item row="12" column="2" colspan="2">
|
||||
<widget class="QLineEdit" name="overallOpinion_TF">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Overall reputation score, accounting for yours and your friends'.</p><p>Negative is bad, positive is good. Zero is neutral. If the score is too low,</p><p>the identity is flagged as bad, and will be filtered out in forums, chat lobbies,</p><p>channels, etc.</p></body></html></string>
|
||||
@ -568,7 +554,41 @@ border-image: url(:/images/closepressed.png)
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<item row="7" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_LastUsed">
|
||||
<property name="text">
|
||||
<string>Last used:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2" colspan="2">
|
||||
<widget class="QLineEdit" name="lineEdit_Type"/>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_Nickname">
|
||||
<property name="text">
|
||||
<string>Identity name :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0" colspan="4">
|
||||
<widget class="Line" name="line_IdInfo">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="2" rowspan="2" colspan="2">
|
||||
<widget class="QLineEdit" name="lineEdit_GpgName">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="2" colspan="2">
|
||||
<widget class="QComboBox" name="ownOpinion_CB">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
@ -625,71 +645,31 @@ p, li { white-space: pre-wrap; }
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1">
|
||||
<widget class="QCheckBox" name="autoBanIdentities_CB">
|
||||
<property name="text">
|
||||
<string>Auto-Ban all identities signed by the same node</string>
|
||||
</property>
|
||||
</widget>
|
||||
<item row="7" column="2" colspan="2">
|
||||
<widget class="QLineEdit" name="lineEdit_LastUsed"/>
|
||||
</item>
|
||||
<item row="10" column="0">
|
||||
<widget class="QLabel" name="neighborNodesOpinion_LB">
|
||||
<property name="text">
|
||||
<string>Friend votes:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="11" column="0">
|
||||
<widget class="QLabel" name="overallOpinion_LB">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Overall:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_KeyId">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_Type">
|
||||
<property name="text">
|
||||
<string>Type:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_Nickname">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_Type"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_Nickname">
|
||||
<item row="4" column="0" rowspan="2" colspan="2">
|
||||
<widget class="QLabel" name="label_GpgName">
|
||||
<property name="text">
|
||||
<string>Identity name :</string>
|
||||
<string>Owner node name :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_GpgId">
|
||||
<property name="text">
|
||||
<string>Owner node ID :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="2" colspan="2">
|
||||
<widget class="QLineEdit" name="lineEdit_GpgId">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
@ -699,29 +679,39 @@ p, li { white-space: pre-wrap; }
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_LastUsed">
|
||||
<item row="10" column="0" colspan="2">
|
||||
<widget class="QLabel" name="banoption_label">
|
||||
<property name="text">
|
||||
<string>Last used:</string>
|
||||
<string>Ban-option:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_GpgName">
|
||||
<item row="11" column="0" colspan="2">
|
||||
<widget class="QLabel" name="neighborNodesOpinion_LB">
|
||||
<property name="text">
|
||||
<string>Owner node name :</string>
|
||||
<string>Friend votes:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_GpgId">
|
||||
<property name="text">
|
||||
<string>Owner node ID :</string>
|
||||
<item row="11" column="2" colspan="2">
|
||||
<widget class="QLineEdit" name="neighborNodesOpinion_TF">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Average opinion of neighbor nodes about this identity. Negative is bad,</p><p>positive is good. Zero is neutral.</p></body></html></string>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_GpgName">
|
||||
<item row="10" column="2" colspan="2">
|
||||
<widget class="QCheckBox" name="autoBanIdentities_CB">
|
||||
<property name="text">
|
||||
<string>Auto-Ban all identities signed by the same node</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2" colspan="2">
|
||||
<widget class="QLineEdit" name="lineEdit_Nickname">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
@ -730,17 +720,7 @@ p, li { white-space: pre-wrap; }
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_KeyId">
|
||||
<property name="text">
|
||||
<string>Identity ID :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_LastUsed"/>
|
||||
</item>
|
||||
<item row="1" column="2" rowspan="11">
|
||||
<item row="0" column="4" rowspan="9">
|
||||
<layout class="QGridLayout" name="avatarGLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="avatarLabel">
|
||||
@ -883,6 +863,36 @@ p, li { white-space: pre-wrap; }
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="12" column="0" colspan="2">
|
||||
<widget class="QLabel" name="overallOpinion_LB">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Overall:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_KeyId">
|
||||
<property name="text">
|
||||
<string>Identity ID :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_PublishTS">
|
||||
<property name="text">
|
||||
<string>Created on :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="2">
|
||||
<widget class="QLineEdit" name="lineEdit_PublishTS"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -1500,6 +1500,8 @@ bool GxsForumThreadWidget::navigate(const RsGxsMessageId &msgId)
|
||||
|
||||
if(!source_index.isValid())
|
||||
{
|
||||
std::cerr << "Cannot navigate to msg " << msgId << " in forum " << mForumGroup.mMeta.mGroupId << ": index unknown. Setting mNavigatePendingMsgId." << std::endl;
|
||||
|
||||
mNavigatePendingMsgId = msgId; // not found. That means the forum may not be loaded yet. So we keep that post in mind, for after loading.
|
||||
return true; // we have to return true here, otherwise the caller will intepret the async loading as an error.
|
||||
}
|
||||
@ -1855,32 +1857,43 @@ void GxsForumThreadWidget::postForumLoading()
|
||||
#endif
|
||||
if(!mNavigatePendingMsgId.isNull() && mThreadModel->getIndexOfMessage(mNavigatePendingMsgId).isValid())
|
||||
{
|
||||
mThreadId = mNavigatePendingMsgId;
|
||||
mNavigatePendingMsgId.clear();
|
||||
}
|
||||
std::cerr << "Pending msg navigation: " << mNavigatePendingMsgId << ". Using it as new thread Id" << std::endl;
|
||||
|
||||
QModelIndex source_index = mThreadModel->getIndexOfMessage(mThreadId);
|
||||
|
||||
if(!mThreadId.isNull() && source_index.isValid())
|
||||
{
|
||||
QModelIndex source_index = mThreadModel->getIndexOfMessage(mNavigatePendingMsgId);
|
||||
QModelIndex index = mThreadProxyModel->mapFromSource(source_index);
|
||||
|
||||
ui->threadTreeWidget->selectionModel()->setCurrentIndex(index,QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
|
||||
ui->threadTreeWidget->scrollTo(index);
|
||||
#ifdef DEBUG_FORUMS
|
||||
std::cerr << " re-selecting index of message " << mThreadId << " to " << source_index.row() << "," << source_index.column() << " " << (void*)source_index.internalPointer() << std::endl;
|
||||
#endif
|
||||
|
||||
changedThread(index);
|
||||
mNavigatePendingMsgId.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
else
|
||||
{
|
||||
|
||||
QModelIndex source_index = mThreadModel->getIndexOfMessage(mThreadId);
|
||||
|
||||
if(!mThreadId.isNull() && source_index.isValid())
|
||||
{
|
||||
QModelIndex index = mThreadProxyModel->mapFromSource(source_index);
|
||||
ui->threadTreeWidget->selectionModel()->setCurrentIndex(index,QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
|
||||
ui->threadTreeWidget->scrollTo(index);
|
||||
#ifdef DEBUG_FORUMS
|
||||
std::cerr << " previously message " << mThreadId << " not visible anymore -> de-selecting" << std::endl;
|
||||
std::cerr << " re-selecting index of message " << mThreadId << " to " << source_index.row() << "," << source_index.column() << " " << (void*)source_index.internalPointer() << std::endl;
|
||||
#endif
|
||||
ui->threadTreeWidget->selectionModel()->clear();
|
||||
ui->threadTreeWidget->selectionModel()->reset();
|
||||
mThreadId.clear();
|
||||
//blank();
|
||||
}
|
||||
// we also need to restore expanded threads
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef DEBUG_FORUMS
|
||||
std::cerr << " previously message " << mThreadId << " not visible anymore -> de-selecting" << std::endl;
|
||||
#endif
|
||||
ui->threadTreeWidget->selectionModel()->clear();
|
||||
ui->threadTreeWidget->selectionModel()->reset();
|
||||
mThreadId.clear();
|
||||
//blank();
|
||||
}
|
||||
// we also need to restore expanded threads
|
||||
}
|
||||
|
||||
ui->forumName->setText(QString::fromUtf8(mForumGroup.mMeta.mGroupName.c_str()));
|
||||
ui->threadTreeWidget->sortByColumn(RsGxsForumModel::COLUMN_THREAD_DATE, Qt::DescendingOrder);
|
||||
|
@ -154,6 +154,7 @@ rs_macos10.8:CONFIG -= rs_macos10.11
|
||||
rs_macos10.9:CONFIG -= rs_macos10.11
|
||||
rs_macos10.10:CONFIG -= rs_macos10.11
|
||||
rs_macos10.12:CONFIG -= rs_macos10.11
|
||||
rs_macos10.13:CONFIG -= rs_macos10.11
|
||||
|
||||
# To enable JSON API append the following assignation to qmake command line
|
||||
# "CONFIG+=rs_jsonapi"
|
||||
@ -627,16 +628,34 @@ macx-* {
|
||||
QMAKE_CXXFLAGS += -Wno-nullability-completeness
|
||||
QMAKE_CFLAGS += -Wno-nullability-completeness
|
||||
}
|
||||
rs_macos10.13 {
|
||||
message(***retroshare.pri: Set Target and SDK to MacOS 10.13 )
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET=10.13
|
||||
QMAKE_MAC_SDK = macosx10.13
|
||||
QMAKE_CXXFLAGS += -Wno-nullability-completeness
|
||||
QMAKE_CFLAGS += -Wno-nullability-completeness
|
||||
}
|
||||
|
||||
|
||||
message(***retroshare.pri:MacOSX)
|
||||
BIN_DIR += "/usr/bin"
|
||||
INC_DIR += "/usr/include"
|
||||
INC_DIR += "/usr/local/include"
|
||||
INC_DIR += "/opt/local/include"
|
||||
LIB_DIR += "/usr/local/lib"
|
||||
LIB_DIR += "/opt/local/lib"
|
||||
# BIN_DIR += "/usr/bin"
|
||||
# INC_DIR += "/usr/include"
|
||||
# INC_DIR += "/usr/local/include"
|
||||
# INC_DIR += "/opt/local/include"
|
||||
# LIB_DIR += "/usr/local/lib"
|
||||
# LIB_DIR += "/opt/local/lib"
|
||||
BIN_DIR += "/Applications/Xcode.app/Contents/Developer/usr/bin"
|
||||
INC_DIR += "/usr/local/Cellar/miniupnpc/2.1/include"
|
||||
INC_DIR += "/usr/local/Cellar/libmicrohttpd/0.9.62_1/include"
|
||||
INC_DIR += "/usr/local/Cellar/sqlcipher/4.0.1/include"
|
||||
LIB_DIR += "/usr/local/opt/openssl/lib/"
|
||||
LIB_DIR += "/usr/local/Cellar/libmicrohttpd/0.9.62_1/lib"
|
||||
LIB_DIR += "/usr/local/Cellar/sqlcipher/4.0.1/lib"
|
||||
LIB_DIR += "/usr/local/Cellar/miniupnpc/2.1/lib"
|
||||
CONFIG += c++11
|
||||
RS_UPNP_LIB = miniupnpc
|
||||
INCLUDEPATH += "/usr/local/include"
|
||||
RS_UPNP_LIB = miniupnpc
|
||||
QT += macextras
|
||||
}
|
||||
|
||||
|
||||
|
37
travis_makeOSXPackage.sh
Normal file
37
travis_makeOSXPackage.sh
Normal file
@ -0,0 +1,37 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Install the 7z to create dmg archives.
|
||||
brew install p7zip
|
||||
|
||||
# Package your app
|
||||
echo "Packaging retroshare..."
|
||||
#cd ${project_dir}/build/macOS/clang/x86_64/release/
|
||||
cd retroshare-gui/src/
|
||||
|
||||
# Remove build directories that you don't want to deploy
|
||||
rm -rf moc
|
||||
rm -rf obj
|
||||
rm -rf qrc
|
||||
|
||||
# if test "${TAG_NAME}" = "" ; then
|
||||
# TAG_NAME = "no_tag" ;
|
||||
# echo No specific tag used.
|
||||
# fi
|
||||
|
||||
# This automatically creates retroshare.dmg
|
||||
|
||||
echo "Creating dmg archive..."
|
||||
macdeployqt retroshare.app -dmg
|
||||
|
||||
#mv retroshare.dmg "retroshare_${TAG_NAME}.dmg"
|
||||
|
||||
# You can use the appdmg command line app to create your dmg file if
|
||||
# you want to use a custom background and icon arrangement. I'm still
|
||||
# working on this for my apps, myself. If you want to do this, you'll
|
||||
# remove the -dmg option above.
|
||||
# appdmg json-path YourApp_${TRAVIS_TAG}.dmg
|
||||
|
||||
# Copy other project files
|
||||
# cp "${project_dir}/README.md" "README.md"
|
||||
# cp "${project_dir}/LICENSE" "LICENSE"
|
||||
# cp "${project_dir}/Qt License" "Qt License"
|
Loading…
Reference in New Issue
Block a user