2010-06-19 15:28:26 +00:00
/****************************************************************
* RetroShare is distributed under the following license :
*
* Copyright ( C ) 2010 Christopher Evi - Parker
*
* This program 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 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 .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2014-10-13 18:31:47 +00:00
# include "GxsGroupShareKey.h"
2010-06-19 15:28:26 +00:00
# include <QMessageBox>
# include <algorithm>
2010-08-06 09:40:23 +00:00
# include <retroshare/rspeers.h>
2014-10-05 19:14:05 +00:00
# include <retroshare/rsgxschannels.h>
2014-10-13 18:31:47 +00:00
# include <retroshare/rsgxsforums.h>
# include <retroshare/rsposted.h>
2010-06-19 15:28:26 +00:00
2010-09-28 20:33:34 +00:00
# include "gui/common/PeerDefs.h"
2014-10-13 18:31:47 +00:00
GroupShareKey : : GroupShareKey ( QWidget * parent , const RsGxsGroupId & grpId , int grpType ) :
2012-11-06 23:26:47 +00:00
QDialog ( parent , Qt : : WindowSystemMenuHint | Qt : : WindowTitleHint | Qt : : WindowCloseButtonHint ) , mGrpId ( grpId ) , mGrpType ( grpType )
2010-06-19 15:28:26 +00:00
{
2012-01-27 00:32:17 +00:00
ui = new Ui : : ShareKey ( ) ;
ui - > setupUi ( this ) ;
2010-06-19 15:28:26 +00:00
2012-08-24 10:49:08 +00:00
ui - > headerFrame - > setHeaderImage ( QPixmap ( " :/images/user/agt_forum64.png " ) ) ;
2014-10-27 13:12:48 +00:00
ui - > headerFrame - > setHeaderText ( tr ( " Share " ) ) ;
2012-08-24 10:49:08 +00:00
2012-10-10 10:51:53 +00:00
connect ( ui - > buttonBox , SIGNAL ( accepted ( ) ) , this , SLOT ( shareKey ( ) ) ) ;
connect ( ui - > buttonBox , SIGNAL ( rejected ( ) ) , this , SLOT ( close ( ) ) ) ;
2010-06-19 15:28:26 +00:00
2012-01-27 00:32:17 +00:00
/* initialize key share list */
ui - > keyShareList - > setHeaderText ( tr ( " Contacts: " ) ) ;
ui - > keyShareList - > setModus ( FriendSelectionWidget : : MODUS_CHECK ) ;
2012-11-24 14:48:31 +00:00
ui - > keyShareList - > setShowType ( FriendSelectionWidget : : SHOW_GROUP | FriendSelectionWidget : : SHOW_SSL ) ;
2012-01-27 00:32:17 +00:00
ui - > keyShareList - > start ( ) ;
2014-10-27 13:12:48 +00:00
setTyp ( ) ;
2010-06-19 15:28:26 +00:00
}
2014-10-13 18:31:47 +00:00
GroupShareKey : : ~ GroupShareKey ( )
2010-06-19 15:28:26 +00:00
{
2012-01-27 00:32:17 +00:00
delete ui ;
2010-06-19 15:28:26 +00:00
}
2014-10-13 18:31:47 +00:00
void GroupShareKey : : changeEvent ( QEvent * e )
2010-06-19 15:28:26 +00:00
{
2012-01-27 00:32:17 +00:00
QDialog : : changeEvent ( e ) ;
switch ( e - > type ( ) ) {
case QEvent : : LanguageChange :
ui - > retranslateUi ( this ) ;
break ;
default :
break ;
}
2010-06-19 15:28:26 +00:00
}
2014-10-27 13:12:48 +00:00
void GroupShareKey : : setTyp ( )
{
if ( mGrpType = = CHANNEL_KEY_SHARE )
{
if ( ! rsGxsChannels )
return ;
ui - > headerFrame - > setHeaderImage ( QPixmap ( " :/images/channels.png " ) ) ;
ui - > headerFrame - > setHeaderText ( tr ( " Share Channel " ) ) ;
2014-11-11 20:12:53 +00:00
ui - > sharekeyinfo_label - > setText ( tr ( " You can let your friends know about your Channel by sharing it with them. Select the Friends with which you want to Share your Channel. " ) ) ;
2014-10-27 13:12:48 +00:00
}
else if ( mGrpType = = FORUM_KEY_SHARE )
{
ui - > headerFrame - > setHeaderImage ( QPixmap ( " :/images/konversation64.png " ) ) ;
ui - > headerFrame - > setHeaderText ( tr ( " Share Forum " ) ) ;
2014-11-11 20:12:53 +00:00
ui - > sharekeyinfo_label - > setText ( tr ( " You can let your friends know about your Forum by sharing it with them. Select the Friends with which you want to Share your Forum. " ) ) ;
2014-10-27 13:12:48 +00:00
}
else if ( mGrpType = = POSTED_KEY_SHARE )
{
if ( ! rsPosted )
return ;
ui - > headerFrame - > setHeaderImage ( QPixmap ( " :/images/posted_64.png " ) ) ;
2014-11-11 20:12:53 +00:00
ui - > headerFrame - > setHeaderText ( tr ( " Share Posted " ) ) ;
ui - > sharekeyinfo_label - > setText ( tr ( " You can let your friends know about your Posted by sharing it with them. Select the Friends with which you want to Share your Posted. " ) ) ;
2014-10-27 13:12:48 +00:00
}
else
{
// incorrect type
return ;
}
}
2014-10-13 18:31:47 +00:00
void GroupShareKey : : shareKey ( )
2010-06-19 15:28:26 +00:00
{
2014-03-17 20:56:06 +00:00
std : : list < RsPeerId > shareList ;
ui - > keyShareList - > selectedIds < RsPeerId , FriendSelectionWidget : : IDTYPE_SSL > ( shareList , false ) ;
2010-06-19 15:28:26 +00:00
2012-01-27 00:32:17 +00:00
if ( shareList . empty ( ) ) {
QMessageBox : : warning ( this , " RetroShare " , tr ( " Please select at least one peer " ) , QMessageBox : : Ok , QMessageBox : : Ok ) ;
2011-08-29 21:20:48 +00:00
2012-01-27 00:32:17 +00:00
return ;
}
2010-06-19 15:28:26 +00:00
2014-10-13 18:31:47 +00:00
if ( mGrpType = = CHANNEL_KEY_SHARE )
{
2014-10-05 19:14:05 +00:00
if ( ! rsGxsChannels )
2014-10-13 18:31:47 +00:00
return ;
2011-08-29 21:20:48 +00:00
2014-10-05 19:14:05 +00:00
if ( ! rsGxsChannels - > groupShareKeys ( mGrpId , shareList ) ) {
2014-10-13 18:31:47 +00:00
std : : cerr < < " Failed to share keys! " < < std : : endl ;
return ;
}
}
else if ( mGrpType = = FORUM_KEY_SHARE )
{
2014-10-05 19:14:05 +00:00
QMessageBox : : warning ( NULL , " Not implemented. " , " Not implemented " ) ;
2014-10-13 18:31:47 +00:00
// if (!rsForums->forumShareKeys(mGrpId, shareList)) {
2014-10-05 19:14:05 +00:00
// std::cerr << "Failed to share keys!" << std::endl;
2014-10-13 18:31:47 +00:00
//return;
2014-10-05 19:14:05 +00:00
//}
2014-10-13 18:31:47 +00:00
}
else if ( mGrpType = = POSTED_KEY_SHARE )
{
if ( ! rsPosted )
return ;
if ( ! rsPosted - > groupShareKeys ( mGrpId , shareList ) ) {
std : : cerr < < " Failed to share keys! " < < std : : endl ;
return ;
}
}
else
{
2011-08-29 21:20:48 +00:00
// incorrect type
return ;
}
2010-06-19 15:28:26 +00:00
2012-01-27 00:32:17 +00:00
close ( ) ;
2010-06-19 15:28:26 +00:00
}