...
 
Commits (126)

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

[main]
host = https://www.transifex.com
[jami.localizablestrings]
[jami.osxLocalizable]
file_filter = ui/<lang>.lproj/Localizable.strings
source_file = ui/Base.lproj/Localizable.strings
source_lang = en
......@@ -73,12 +73,6 @@ source_file = ui/Base.lproj/Conversation.strings
source_lang = en
type = STRINGS
[jami.osxBackupAccountWindow]
file_filter = ui/<lang>.lproj/BackupAccountWindow.strings
source_file = ui/Base.lproj/BackupAccountWindow.strings
source_lang = en
type = STRINGS
[jami.osxExportPasswordWindow]
file_filter = ui/<lang>.lproj/ExportPasswordWindow.strings
source_file = ui/Base.lproj/ExportPasswordWindow.strings
......@@ -157,6 +151,18 @@ source_file = ui/Base.lproj/LeaveMessageVC.strings
source_lang = en
type = STRINGS
[jami.osxAccountBackupVC]
file_filter = ui/<lang>.lproj/AccountBackupVC.strings
source_file = ui/Base.lproj/AccountBackupVC.strings
source_lang = en
type = STRINGS
[jami.osxAccountMenuItemView]
file_filter = ui/<lang>.lproj/AccountMenuItemView.strings
source_file = ui/Base.lproj/AccountMenuItemView.strings
source_lang = en
type = STRINGS
[jami.osxMessageCells]
file_filter = ui/<lang>.lproj/MessageCells.strings
source_file = ui/Base.lproj/MessageCells.strings
......@@ -168,3 +174,9 @@ file_filter = ui/<lang>.lproj/PasswordChange.strings
source_file = ui/Base.lproj/PasswordChange.strings
source_lang = en
type = STRINGS
[jami.osxConnectToAccManagerVC]
file_filter = ui/<lang>.lproj/ConnectToAccManagerVC.strings
source_file = ui/Base.lproj/ConnectToAccManagerVC.strings
source_lang = en
type = STRINGS
......@@ -5,6 +5,7 @@ IF(POLICY CMP0022)
ENDIF(POLICY CMP0022)
SET(PROJ_NAME Jami)
ADD_DEFINITIONS(-DENABLE_LIBWRAP=true)
option(RELEASE_TYPE "RELEASE_TYPE" "website")
# To build nighlies we need to update RING_VERSION with an optional command line arg
......@@ -13,7 +14,7 @@ IF("${RING_VERSION}" STREQUAL "")
ENDIF("${RING_VERSION}" STREQUAL "")
# if build for App Store version and build number should be incremented
IF("${RELEASE_TYPE}" STREQUAL "AppStore")
SET(RING_VERSION_NAME "1.39")
SET(RING_VERSION_NAME "1.63")
ELSE()
SET(RING_VERSION_NAME "1")
ENDIF()
......@@ -176,6 +177,16 @@ SET(ringclient_CONTROLLERS
src/AccountSettingsVC.h
src/LeaveMessageVC.mm
src/LeaveMessageVC.h
src/RecordFileVC.mm
src/RecordFileVC.h
src/ChooseContactVC.mm
src/ChooseContactVC.h
src/CallInConferenceVC.mm
src/CallInConferenceVC.h
src/ConnectToAccManagerVC.mm
src/ConnectToAccManagerVC.h
src/AccountBackupVC.mm
src/AccountBackupVC.h
)
SET(ringclient_VIEWS
......@@ -219,6 +230,13 @@ SET(ringclient_VIEWS
src/views/CenteredClipView.mm
src/views/CallMTKView.h
src/views/CallMTKView.mm
src/views/GradientView.h
src/views/GradientView.mm
src/views/MovableView.h
src/views/MovableView.mm
src/views/RenderingView.h
src/views/RenderingView.mm
src/views/VideoRendering.h
)
SET(ringclient_OTHERS
......@@ -239,6 +257,8 @@ SET(ringclient_OTHERS
src/NSString+Extensions.mm
src/RingMainWindow.h
src/RingMainWindow.mm
src/MenuResponder.h
src/MenuResponder.mm
src/Shader.metal
)
......@@ -270,6 +290,11 @@ SET(ringclient_XIBS
AddSIPAccountVC
AccountSettings
LeaveMessageVC
RecordFileVC
ChooseContactVC
CallInConferenceVC
ConnectToAccManagerVC
AccountBackupVC
)
# Icons
......@@ -326,6 +351,9 @@ ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/qrcode.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/pending_contact_request.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_file_upload.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_record_stop.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_camera.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_audio_msg.png
${CMAKE_CURRENT_SOURCE_DIR}/data/light/ic_picture.png)
SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
......@@ -497,6 +525,7 @@ ELSE()
XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME TRUE
)
ENDIF()
set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym")
# Make sure we can find the 'ibtool' program. If we can NOT find it we
# skip generation of this project
FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
......
{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf100
{\fonttbl\f0\fswiss\fcharset0 Helvetica-Oblique;\f1\fswiss\fcharset0 Helvetica-BoldOblique;\f2\fswiss\fcharset0 Helvetica-Bold;
}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0\cname textColor;}
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\qc\partightenfactor0
\f0\i\fs24 \cf0 \
\f0\i\fs24 \cf2 \
\fs28 "
\f1\b Live Free or Die"
\f1\b Free as in Freedom"
\f0\b0\fs24 \
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\qc\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://ring.cx/"}}{\fldrslt \cf0 jami.net}}\
{\field{\*\fldinst{HYPERLINK "https://jami.net/"}}{\fldrslt \cf2
jami.net}}\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\qc\partightenfactor0
\f2\i0\b \cf0 Authors
\f2\i0\b \cf2 Authors
\f0\i\b0 \
Adrien B\'e9raud\
Alexandr Sergheev\
......@@ -62,5 +63,5 @@ Based on SFLphone's project\
\f2\i0\b Translated by
\f0\i\b0 \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\qc\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://www.transifex.com/savoirfairelinux/ring/"}}{\fldrslt \cf0 https://www.transifex.com/savoirfairelinux/ring/}}\
}
\ No newline at end of file
{\field{\*\fldinst{HYPERLINK "https://www.transifex.com/savoirfairelinux/jami/"}}{\fldrslt \cf2 https://www.transifex.com/savoirfairelinux/jami/}}\
}
Ring Mac OSX
Jami for macOS
**********
This is the official Mac port of Ring.
This is the official Mac port of Jami.
For more information about the ring project, see the following:
- Main website: https://ring.cx/
- Bug tracker: https://tuleap.ring.cx/projects/ring/
- Repositories: https://gerrit-ring.savoirfairelinux.com
- Main website: https://jami.net/
- Bug tracker: https://git.jami.net
- Repositories: https://review.jami.net
| App | CI | Packaging
| :-: | :-: | :-:
| [![Download from ring.cx](https://img.shields.io/badge/download-cx.ring-blue.svg)](https://ring.cx/en/download/mac-osx) | [![Build Status](https://test.savoirfairelinux.com/buildStatus/icon?job=ring-client-macosx)](https://test.savoirfairelinux.com/job/ring-client-macosx/) | [![Build Status](https://test.savoirfairelinux.com/buildStatus/icon?job=ring-packaging-client-macosx)](https://test.savoirfairelinux.com/job/ring-packaging-client-macosx/)
| [![Download from jami.net](https://img.shields.io/badge/download-cx.ring-blue.svg)](https://jami.net/download-jami-macos) | [![Build Status](https://test.savoirfairelinux.com/buildStatus/icon?job=ring-client-macosx)](https://test.savoirfairelinux.com/job/ring-client-macosx/) | [![Build Status](https://test.savoirfairelinux.com/buildStatus/icon?job=ring-packaging-client-macosx)](https://test.savoirfairelinux.com/job/ring-packaging-client-macosx/)
Requirements
=============
- Ring daemon
- Jami daemon
- libRingClient (Qt5 version)
- Qt5 Core
- Cocoa framework
......@@ -25,7 +25,7 @@ Build instructions
Build Sparkle framework (optional)
----------------------------------
Ring can ship with the Sparkle framework to allow automatic app updates.
Jami can ship with the Sparkle framework to allow automatic app updates.
This can be disabled for your custom build by specifying -DENABLE_SPARKLE=false
in the cmake phase.
......
......@@ -15,7 +15,7 @@
<key>SUPublicDSAKeyFile</key>
<string>dsa_pub.pem</string>
<key>SUFeedURL</key>
<string>https://dl.ring.cx/mac_osx/sparkle-ring.xml</string>
<string>https://dl.jami.net/mac_osx/sparkle-ring.xml</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
......
data/dark/ic_action_chat.png

248 Bytes | W: | H:

data/dark/ic_action_chat.png

184 Bytes | W: | H:

data/dark/ic_action_chat.png
data/dark/ic_action_chat.png
data/dark/ic_action_chat.png
data/dark/ic_action_chat.png
  • 2-up
  • Swipe
  • Onion skin
data/dark/ic_action_record.png

2.82 KB | W: | H:

data/dark/ic_action_record.png

234 Bytes | W: | H:

data/dark/ic_action_record.png
data/dark/ic_action_record.png
data/dark/ic_action_record.png
data/dark/ic_action_record.png
  • 2-up
  • Swipe
  • Onion skin
data/dark/ic_audio_file.png

756 Bytes | W: | H:

data/dark/ic_audio_file.png

1.11 KB | W: | H:

data/dark/ic_audio_file.png
data/dark/ic_audio_file.png
data/dark/ic_audio_file.png
data/dark/ic_audio_file.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -2,7 +2,7 @@
echo ""
cd build-local
/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool --notarize-app -t osx -f Jami.app.zip --primary-bundle-id ${BUNDLE_ID} -u ${APPLE_ACCOUNT} -p ${APPLE_PASSWORD} --output-format xml -itc_provider ${TEAM_ID} > UploadInfo.plist
/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/Frameworks/AppStoreService.framework/Versions/A/Support/altool --notarize-app -t osx -f Jami.app.zip --primary-bundle-id ${BUNDLE_ID} -u ${APPLE_ACCOUNT} -p ${APPLE_PASSWORD} --output-format xml -itc_provider ${TEAM_ID} > UploadInfo.plist
REQUESTID=$(xmllint --xpath "/plist/dict[key='notarization-upload']/dict/key[.='RequestUUID']/following-sibling::string[1]/node()" UploadInfo.plist)
echo "file uploaded for notarization"
echo ${REQUESTID}
......@@ -10,7 +10,7 @@ sleep 60
x=1
while [ $x -le 15 ];
do
/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool --notarization-info ${REQUESTID} -u ${APPLE_ACCOUNT} -p ${APPLE_PASSWORD} --output-format xml > RequestedInfo.plist
/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/Frameworks/AppStoreService.framework/Versions/A/Support/altool --notarization-info ${REQUESTID} -u ${APPLE_ACCOUNT} -p ${APPLE_PASSWORD} --output-format xml > RequestedInfo.plist
ANSWER=$(xmllint --xpath "/plist/dict[key='notarization-info']/dict/key[.='Status']/following-sibling::string[1]/node()" RequestedInfo.plist)
if [ "$ANSWER" == "in progress" ];
then
......
......@@ -14,11 +14,11 @@ security import certificates/certificates/distribution/Certificates.p12 -k $KEYC
DELIVER_PASSWORD=$APPLE_PASSWORD fastlane sigh --app_identifier $BUNDLE_ID --username $APPLE_ACCOUNT --readonly true --platform macos --team_id $TEAM_ID
security set-key-partition-list -S apple-tool:,apple:,productbuild: -s -k $KEYCHAIN_PASSWORD $KEYCHAIN_NAME > /dev/null 2>&1
echo "start signing"
macdeployqt ./Jami.app -codesign="${APP_CERTIFICATE}"
macdeployqt ./Jami.app -no-strip -codesign="${APP_CERTIFICATE}"
codesign --force --sign "${APP_CERTIFICATE}" --entitlements ../data/Jami.entitlements Jami.app
codesign --verify Jami.app
echo "create .pkg"
productbuild --component Jami.app/ /Applications --sign "${INSTALLER_CERTIFICATE}" --product Jami.app/Contents/Info.plist Jami.pkg
/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool --validate-app --type osx -f Jami.pkg -u $APPLE_ACCOUNT --password $APPLE_PASSWORD
/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/Frameworks/AppStoreService.framework/Versions/A/Support/altool --validate-app --type osx -f Jami.pkg -u $APPLE_ACCOUNT --password $APPLE_PASSWORD
echo "start deploying"
/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool --upload-app --type osx -f Jami.pkg -u $APPLE_ACCOUNT --password $APPLE_PASSWORD
/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/Frameworks/AppStoreService.framework/Versions/A/Support/altool --upload-app --type osx -f Jami.pkg -u $APPLE_ACCOUNT --password $APPLE_PASSWORD
......@@ -42,21 +42,21 @@ const NSInteger BOOTSTRAP_SERVER_TAG = 300;
-(void) updateView {
lrc::api::account::ConfProperties_t accountProperties = self.accountModel->getAccountConfig(self.selectedAccountID);
[allowIncoming setState: accountProperties.allowIncoming];
[nameServerField setStringValue: @(accountProperties.RingNS.uri.c_str())];
[proxyServerField setStringValue:@(accountProperties.proxyServer.c_str())];
[bootstrapServerField setStringValue:@(accountProperties.hostname.c_str())];
[allowIncoming setState: accountProperties.DHT.PublicInCalls];
[nameServerField setStringValue: accountProperties.RingNS.uri.toNSString()];
[proxyServerField setStringValue: accountProperties.proxyServer.toNSString()];
[bootstrapServerField setStringValue: accountProperties.hostname.toNSString()];
[enableProxyButton setState: accountProperties.proxyEnabled];
[proxyServerField setEditable:accountProperties.proxyEnabled];
}
-(void) viewDidLoad {
[super viewDidLoad];
[[self view] setAutoresizingMask: NSViewMinXMargin | NSViewMaxXMargin];
[[self view] setAutoresizingMask: NSViewMinXMargin | NSViewMaxXMargin | NSViewWidthSizable];
[self updateView];
}
- (void) setSelectedAccount:(std::string) account {
- (void) setSelectedAccount:(const QString&) account {
[super setSelectedAccount: account];
[self updateView];
}
......@@ -65,8 +65,8 @@ const NSInteger BOOTSTRAP_SERVER_TAG = 300;
- (IBAction)allowCallFromUnknownPeer:(id)sender {
lrc::api::account::ConfProperties_t accountProperties = self.accountModel->getAccountConfig(self.selectedAccountID);
if(accountProperties.allowIncoming != [sender state]) {
accountProperties.allowIncoming = [sender state];
if(accountProperties.DHT.PublicInCalls != [sender state]) {
accountProperties.DHT.PublicInCalls = [sender state];
self.accountModel->setAccountConfig(self.selectedAccountID, accountProperties);
}
}
......@@ -86,20 +86,20 @@ const NSInteger BOOTSTRAP_SERVER_TAG = 300;
switch ([sender tag]) {
case NAME_SERVER_TAG:
if(accountProperties.RingNS.uri != [[sender stringValue] UTF8String]) {
accountProperties.RingNS.uri = [[sender stringValue] UTF8String];
if(accountProperties.RingNS.uri != QString::fromNSString([sender stringValue])) {
accountProperties.RingNS.uri = QString::fromNSString([sender stringValue]);
self.accountModel->setAccountConfig(self.selectedAccountID, accountProperties);
}
return;
case PROXY_SERVER_TAG:
if(accountProperties.proxyServer != [[sender stringValue] UTF8String]) {
accountProperties.proxyServer = [[sender stringValue] UTF8String];
if(accountProperties.proxyServer != QString::fromNSString([sender stringValue])) {
accountProperties.proxyServer = QString::fromNSString([sender stringValue]);
self.accountModel->setAccountConfig(self.selectedAccountID, accountProperties);
}
return;
case BOOTSTRAP_SERVER_TAG:
if(accountProperties.hostname != [[sender stringValue] UTF8String]) {
accountProperties.hostname = [[sender stringValue] UTF8String];
if(accountProperties.hostname != QString::fromNSString([sender stringValue])) {
accountProperties.hostname = QString::fromNSString([sender stringValue]);
self.accountModel->setAccountConfig(self.selectedAccountID, accountProperties);
}
return;
......
......@@ -112,7 +112,7 @@ NSString *TLS_PROTOCOL_TLSv1_2 = @"TLSv1_2";
[self updateView];
}
- (void) setSelectedAccount:(std::string) account {
- (void) setSelectedAccount:(const QString&) account {
[super setSelectedAccount: account];
[self updateView];
}
......@@ -159,7 +159,7 @@ NSString *TLS_PROTOCOL_TLSv1_2 = @"TLSv1_2";
[useCustomAddressButton setState:!accountProperties.publishedSameAsLocal];
[customPortStepper setIntegerValue: accountProperties.publishedPort];
[customPortField setIntegerValue: accountProperties.publishedPort];
[customAddressField setStringValue: @(accountProperties.publishedAddress.c_str())];
[customAddressField setStringValue: accountProperties.publishedAddress.toNSString()];
[minAudioPortStepper setIntegerValue: accountProperties.Audio.audioPortMin];
[minAudioRTPRange setIntegerValue: accountProperties.Audio.audioPortMin];
[maxAudioPortStepper setIntegerValue: accountProperties.Audio.audioPortMax];
......@@ -270,8 +270,8 @@ NSString *TLS_PROTOCOL_TLSv1_2 = @"TLSv1_2";
switch ([sender tag]) {
case OUTGOING_TLS_SERVER_TAG:
if(accountProperties.TLS.serverName != [[sender stringValue] UTF8String]) {
accountProperties.TLS.serverName = [[sender stringValue] UTF8String];
if(accountProperties.TLS.serverName != QString::fromNSString([sender stringValue])) {
accountProperties.TLS.serverName = QString::fromNSString([sender stringValue]);
self.accountModel->setAccountConfig(self.selectedAccountID, accountProperties);
}
return;
......@@ -300,9 +300,9 @@ NSString *TLS_PROTOCOL_TLSv1_2 = @"TLSv1_2";
}
return;
case CUSTOM_ADDRESS_TAG:
if(accountProperties.publishedAddress != [[sender stringValue] UTF8String]) {
if(accountProperties.publishedAddress != QString::fromNSString([sender stringValue])) {
NSString *name = [sender stringValue];
accountProperties.publishedAddress = [[sender stringValue] UTF8String];
accountProperties.publishedAddress = QString::fromNSString([sender stringValue]);
self.accountModel->setAccountConfig(self.selectedAccountID, accountProperties);
}
return;
......
......@@ -21,15 +21,15 @@
#import <Cocoa/Cocoa.h>
#import "LrcModelsProtocol.h"
#include <string>
#include <qstring.h>
@protocol AccountAdvancedProtocol
- (void) setSelectedAccount:(std::string) account;
- (void) setSelectedAccount:(const QString&) account;
@end
@interface AccAdvancedVC : NSViewController <NSTableViewDataSource, NSTableViewDelegate, AccountAdvancedProtocol, LrcModelsProtocol>
@property std::string selectedAccountID;
@property QString selectedAccountID;
@property (unsafe_unretained) IBOutlet NSButton* selectCACertificateButton;
@property (unsafe_unretained) IBOutlet NSButton* selectUserCertificateButton;
@property (unsafe_unretained) IBOutlet NSButton* selectPrivateKeyButton;
......
This diff is collapsed.
......@@ -26,7 +26,7 @@
@interface AccRingGeneralVC : NSViewController <NSTextFieldDelegate, LrcModelsProtocol, RegisterNameDelegate, AccountGeneralProtocol, NSTableViewDelegate, NSTableViewDataSource, PasswordChangeDelegate>
- (void) setSelectedAccount:(std::string) account;
- (void) setSelectedAccount:(const QString&) account;
@property (assign)BOOL accountEnabled;
......
This diff is collapsed.
......@@ -26,6 +26,7 @@
#import <QSize>
#import <QtMacExtras/qmacfunctions.h>
#import <QPixmap>
#import <qstring.h>
//LRC
#import <api/lrc.h>
......@@ -50,7 +51,7 @@
@property (unsafe_unretained) IBOutlet NSTextField* serverField;
@property (unsafe_unretained) IBOutlet NSButton* removeAccountButton;
@property (unsafe_unretained) IBOutlet NSButton* editAccountButton;
@property std::string selectedAccountID;
@property QString selectedAccountID;
@end
......@@ -98,8 +99,7 @@ typedef NS_ENUM(NSInteger, TagViews) {
[photoView setImage: [outputImage roundCorners: outputImage.size.height * 0.5]];
[addProfilePhotoImage setHidden:YES];
auto imageToBytes = QByteArray::fromNSData([outputImage TIFFRepresentation]).toBase64();
std::string imageToString = std::string(imageToBytes.constData(), imageToBytes.length());
self.accountModel->setAvatar(self.selectedAccountID, imageToString);
self.accountModel->setAvatar(self.selectedAccountID, QString(imageToBytes));
} else if(!photoView.image) {
[photoView setBordered:YES];
[addProfilePhotoImage setHidden:NO];
......@@ -117,14 +117,14 @@ typedef NS_ENUM(NSInteger, TagViews) {
[self.delegate triggerAdvancedOptions];
}