2013-04-13 09:12:13 -04:00
/****************************************************************
* RetroShare is distributed under the following license :
*
2013-04-29 16:44:48 -04:00
* Copyright ( C ) 2013 Cyril Soler
2013-04-13 09:12:13 -04:00
*
* This program is free software ; you can redistribute it and / or
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
*
* This program 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 .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , Fifth Floor ,
* Boston , MA 02110 - 1301 , USA .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include <iostream>
2013-06-06 17:42:15 -04:00
# include <time.h>
2013-04-13 18:40:17 -04:00
# include <QMessageBox>
2013-04-14 17:45:02 -04:00
# include <QTimer>
2013-04-13 18:40:17 -04:00
# include <retroshare/rsmsgs.h>
2013-04-29 16:44:48 -04:00
# include <retroshare/rspeers.h>
2013-04-13 09:12:13 -04:00
# include "CreateMsgLinkDialog.h"
# include <gui/common/FriendSelectionWidget.h>
2013-04-13 18:40:17 -04:00
# include <gui/RetroShareLink.h>
2013-04-13 09:12:13 -04:00
2013-06-10 09:27:24 -04:00
CreateMsgLinkDialog : : CreateMsgLinkDialog ( )
2013-04-13 09:12:13 -04:00
: QDialog ( NULL , Qt : : WindowSystemMenuHint | Qt : : WindowTitleHint | Qt : : WindowMinMaxButtonsHint | Qt : : WindowCloseButtonHint )
{
/* Invoke the Qt Designer generated object setup routine */
setupUi ( this ) ;
2013-04-13 18:40:17 -04:00
setAttribute ( Qt : : WA_DeleteOnClose , false ) ;
2013-04-13 09:12:13 -04:00
2013-04-13 18:40:17 -04:00
QObject : : connect ( _create_link_PB , SIGNAL ( clicked ( ) ) , this , SLOT ( createLink ( ) ) ) ;
2013-09-04 20:57:48 -04:00
headerFrame - > setHeaderImage ( QPixmap ( " :/images/d-chat64.png " ) ) ;
headerFrame - > setHeaderText ( tr ( " Create distant chat " ) ) ;
2013-04-13 09:12:13 -04:00
2013-06-19 09:18:15 -04:00
friendSelectionWidget - > setModus ( FriendSelectionWidget : : MODUS_SINGLE ) ;
friendSelectionWidget - > setShowType ( FriendSelectionWidget : : SHOW_NON_FRIEND_GPG | FriendSelectionWidget : : SHOW_GPG ) ;
friendSelectionWidget - > setHeaderText ( QObject : : tr ( " Select who can contact you: " ) ) ;
friendSelectionWidget - > start ( ) ;
2013-04-13 09:12:13 -04:00
}
2013-06-16 10:39:44 -04:00
void CreateMsgLinkDialog : : createNewChatLink ( )
2013-04-13 18:40:17 -04:00
{
2013-06-16 10:39:44 -04:00
std : : cerr < < " In static method... " < < std : : endl ;
CreateMsgLinkDialog dialog ;
dialog . exec ( ) ;
2013-04-13 09:12:13 -04:00
}
2013-04-13 18:40:17 -04:00
time_t CreateMsgLinkDialog : : computeValidityDuration ( ) const
{
time_t unit ;
switch ( _validity_time_CB - > currentIndex ( ) )
{
default :
case 0 : unit = 3600 ;
break ;
case 1 : unit = 3600 * 24 ;
break ;
case 2 : unit = 3600 * 24 * 7 ;
break ;
case 3 : unit = 3600 * 24 * 30 ;
break ;
case 4 : unit = 3600 * 24 * 365 ;
break ;
}
return unit * _validity_time_SB - > value ( ) ;
}
2013-04-13 09:12:13 -04:00
void CreateMsgLinkDialog : : createLink ( )
{
std : : cerr < < " Creating link! " < < std : : endl ;
2013-04-13 18:40:17 -04:00
time_t validity_duration = computeValidityDuration ( ) ;
FriendSelectionWidget : : IdType type ;
2013-06-19 09:18:15 -04:00
std : : string current_pgp_id = friendSelectionWidget - > selectedId ( type ) ;
2013-04-13 18:40:17 -04:00
std : : string encrypted_string ;
bool res = rsMsgs - > createDistantChatInvite ( current_pgp_id , validity_duration , encrypted_string ) ;
RetroShareLink link ;
if ( ! link . createPrivateChatInvite ( validity_duration + time ( NULL ) , QString : : fromStdString ( current_pgp_id ) , QString : : fromStdString ( encrypted_string ) ) )
std : : cerr < < " Cannot create link. " < < std : : endl ;
QList < RetroShareLink > links ;
links . push_back ( link ) ;
RSLinkClipboard : : copyLinks ( links ) ;
if ( ! res )
QMessageBox : : critical ( NULL , tr ( " Private chat invite creation failed " ) , tr ( " The creation of the chat invite failed " ) ) ;
else
2013-06-16 10:39:44 -04:00
QMessageBox : : information ( NULL , tr ( " Private chat invite created " ) , tr ( " Your new chat invite has been created. You can now copy/paste it as a Retroshare link. " ) ) ;
# ifdef TO_REMOVE
/* OLD CODE TO CREATE A MSG LINK */
2013-04-29 16:44:48 -04:00
time_t validity_duration = computeValidityDuration ( ) ;
std : : string hash ;
std : : string issuer_pgp_id = rsPeers - > getGPGOwnId ( ) ;
bool res = rsMsgs - > createDistantOfflineMessengingInvite ( validity_duration , hash ) ;
RetroShareLink link ;
if ( ! link . createPublicMsgInvite ( validity_duration + time ( NULL ) , QString : : fromStdString ( issuer_pgp_id ) , QString : : fromStdString ( hash ) ) )
{
std : : cerr < < " Cannot create link. " < < std : : endl ;
return ;
}
QList < RetroShareLink > links ;
links . push_back ( link ) ;
RSLinkClipboard : : copyLinks ( links ) ;
if ( ! res )
2013-06-24 17:23:50 -04:00
QMessageBox : : critical ( NULL , tr ( " Messaging invite creation failed " ) , tr ( " The creation of the messaging invite failed " ) ) ;
2013-04-29 16:44:48 -04:00
else
2013-06-24 17:23:50 -04:00
QMessageBox : : information ( NULL , tr ( " Messaging invite created " ) , tr ( " Your new messaging chat invite has been copied to clipboard. You can now paste it as a Retroshare link. " ) ) ;
2013-06-16 10:39:44 -04:00
# endif
2013-04-13 09:12:13 -04:00
}