2010-05-03 17:17:36 -04:00
/****************************************************************
* RetroShare is distributed under the following license :
*
* Copyright ( C ) 2006 - 2010 RetroShare Team
*
* 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-05-26 17:51:53 -04:00
# include <QColorDialog>
2010-07-23 14:52:58 -04:00
# include <QFontDialog>
2013-06-16 10:39:44 -04:00
# include <QMenu>
# include <QMessageBox>
2010-09-07 11:49:31 -04:00
# include <time.h>
2010-05-03 17:17:36 -04:00
2012-10-27 11:51:34 -04:00
# include <retroshare/rsnotify.h>
2013-06-16 10:39:44 -04:00
# include <retroshare/rsmsgs.h>
# include <retroshare/rspeers.h>
2010-05-03 17:17:36 -04:00
# include "ChatPage.h"
2013-06-16 10:39:44 -04:00
# include <gui/RetroShareLink.h>
2010-09-07 11:49:31 -04:00
# include "gui/chat/ChatStyle.h"
2013-06-16 10:39:44 -04:00
# include "gui/chat/ChatDialog.h"
2010-09-07 11:49:31 -04:00
# include "gui/notifyqt.h"
2010-07-23 14:52:58 -04:00
# include "rsharesettings.h"
2017-01-22 16:25:17 -05:00
# include <retroshare/rsconfig.h>
2010-07-23 14:52:58 -04:00
2011-09-29 05:20:09 -04:00
# include <retroshare/rshistory.h>
2011-12-26 17:43:54 -05:00
# include <retroshare/rsmsgs.h>
2011-09-29 05:20:09 -04:00
2010-09-07 19:19:27 -04:00
# define VARIANT_STANDARD "Standard"
2013-06-16 10:39:44 -04:00
# define IMAGE_CHAT_CREATE ": / images / add_24x24.png"
# define IMAGE_CHAT_OPEN ": / images / typing.png"
# define IMAGE_CHAT_DELETE ": / images / deletemail24.png"
# define IMAGE_CHAT_COPY ": / images / copyrslink.png"
2010-09-07 19:19:27 -04:00
static QString loadStyleInfo ( ChatStyle : : enumStyleType type , QListWidget * listWidget , QComboBox * comboBox , QString & styleVariant )
2010-09-07 11:49:31 -04:00
{
QList < ChatStyleInfo > styles ;
QList < ChatStyleInfo > : : iterator style ;
QListWidgetItem * item ;
QListWidgetItem * activeItem = NULL ;
QString stylePath ;
switch ( type ) {
case ChatStyle : : TYPE_PUBLIC :
2010-09-07 19:19:27 -04:00
Settings - > getPublicChatStyle ( stylePath , styleVariant ) ;
2010-09-07 11:49:31 -04:00
break ;
case ChatStyle : : TYPE_PRIVATE :
2010-09-07 19:19:27 -04:00
Settings - > getPrivateChatStyle ( stylePath , styleVariant ) ;
2010-09-07 11:49:31 -04:00
break ;
case ChatStyle : : TYPE_HISTORY :
2010-09-07 19:19:27 -04:00
Settings - > getHistoryChatStyle ( stylePath , styleVariant ) ;
2010-09-07 11:49:31 -04:00
break ;
case ChatStyle : : TYPE_UNKNOWN :
return " " ;
}
ChatStyle : : getAvailableStyles ( type , styles ) ;
2014-10-21 18:33:02 -04:00
for ( style = styles . begin ( ) ; style ! = styles . end ( ) ; + + style ) {
2010-09-07 11:49:31 -04:00
item = new QListWidgetItem ( style - > styleName ) ;
item - > setData ( Qt : : UserRole , qVariantFromValue ( * style ) ) ;
listWidget - > addItem ( item ) ;
if ( style - > stylePath = = stylePath ) {
activeItem = item ;
}
}
listWidget - > setCurrentItem ( activeItem ) ;
2010-09-07 19:19:27 -04:00
/* now the combobox should be filled */
int index = comboBox - > findText ( styleVariant ) ;
if ( index ! = - 1 ) {
comboBox - > setCurrentIndex ( index ) ;
} else {
if ( comboBox - > count ( ) ) {
comboBox - > setCurrentIndex ( 0 ) ;
}
}
2010-09-07 11:49:31 -04:00
return stylePath ;
}
2017-01-30 15:38:06 -05:00
void ChatPage : : updateFontsAndEmotes ( )
2010-05-03 17:17:36 -04:00
{
2010-09-04 10:23:30 -04:00
Settings - > beginGroup ( QString ( " Chat " ) ) ;
2012-09-21 17:23:14 -04:00
Settings - > setValue ( " Emoteicons_PrivatChat " , ui . checkBox_emoteprivchat - > isChecked ( ) ) ;
Settings - > setValue ( " Emoteicons_GroupChat " , ui . checkBox_emotegroupchat - > isChecked ( ) ) ;
Settings - > setValue ( " EnableCustomFonts " , ui . checkBox_enableCustomFonts - > isChecked ( ) ) ;
Settings - > setValue ( " EnableCustomFontSize " , ui . checkBox_enableCustomFontSize - > isChecked ( ) ) ;
2017-01-30 15:38:06 -05:00
Settings - > setValue ( " MinimumFontSize " , ui . minimumFontSize - > value ( ) ) ;
2012-09-21 17:23:14 -04:00
Settings - > setValue ( " EnableBold " , ui . checkBox_enableBold - > isChecked ( ) ) ;
Settings - > setValue ( " EnableItalics " , ui . checkBox_enableItalics - > isChecked ( ) ) ;
Settings - > setValue ( " MinimumContrast " , ui . minimumContrast - > value ( ) ) ;
2010-09-04 10:23:30 -04:00
Settings - > endGroup ( ) ;
2017-01-30 15:38:06 -05:00
}
/** Saves the changes on this page */
void ChatPage : : updateChatParams ( )
{
// state of distant Chat combobox
Settings - > setValue ( " DistantChat " , ui . distantChatComboBox - > currentIndex ( ) ) ;
Settings - > setChatScreenFont ( fontTempChat . toString ( ) ) ;
NotifyQt : : getInstance ( ) - > notifyChatFontChanged ( ) ;
Settings - > setChatSendMessageWithCtrlReturn ( ui . sendMessageWithCtrlReturn - > isChecked ( ) ) ;
Settings - > setChatSendAsPlainTextByDef ( ui . sendAsPlainTextByDef - > isChecked ( ) ) ;
Settings - > setChatLoadEmbeddedImages ( ui . loadEmbeddedImages - > isChecked ( ) ) ;
Settings - > setChatDoNotSendIsTyping ( ui . DontSendTyping - > isChecked ( ) ) ;
}
void ChatPage : : updateChatSearchParams ( )
{
Settings - > setChatSearchCharToStartSearch ( ui . sbSearch_CharToStart - > value ( ) ) ;
Settings - > setChatSearchCaseSensitively ( ui . cbSearch_CaseSensitively - > isChecked ( ) ) ;
Settings - > setChatSearchWholeWords ( ui . cbSearch_WholeWords - > isChecked ( ) ) ;
Settings - > setChatSearchMoveToCursor ( ui . cbSearch_MoveToCursor - > isChecked ( ) ) ;
Settings - > setChatSearchSearchWithoutLimit ( ui . cbSearch_WithoutLimit - > isChecked ( ) ) ;
Settings - > setChatSearchMaxSearchLimitColor ( ui . sbSearch_MaxLimitColor - > value ( ) ) ;
Settings - > setChatSearchFoundColor ( rgbChatSearchFoundColor ) ;
}
2010-11-04 07:14:47 -04:00
2017-01-30 15:38:06 -05:00
void ChatPage : : updateDefaultLobbyIdentity ( )
{
2015-03-06 16:13:23 -05:00
RsGxsId chosen_id ;
2017-01-30 15:38:06 -05:00
switch ( ui . chatLobbyIdentity_IC - > getChosenId ( chosen_id ) )
{
case GxsIdChooser : : KnowId :
case GxsIdChooser : : UnKnowId :
rsMsgs - > setDefaultIdentityForChatLobby ( chosen_id ) ;
break ;
default : ;
}
}
2011-12-26 17:43:54 -05:00
2010-09-07 11:49:31 -04:00
2017-01-30 15:38:06 -05:00
void ChatPage : : updateHistoryParams ( )
{
Settings - > setPublicChatHistoryCount ( ui . publicChatLoadCount - > value ( ) ) ;
Settings - > setPrivateChatHistoryCount ( ui . privateChatLoadCount - > value ( ) ) ;
Settings - > setLobbyChatHistoryCount ( ui . lobbyChatLoadCount - > value ( ) ) ;
2010-09-07 11:49:31 -04:00
2017-01-30 15:38:06 -05:00
rsHistory - > setEnable ( RS_HISTORY_TYPE_PUBLIC , ui . publicChatEnable - > isChecked ( ) ) ;
rsHistory - > setEnable ( RS_HISTORY_TYPE_PRIVATE , ui . privateChatEnable - > isChecked ( ) ) ;
rsHistory - > setEnable ( RS_HISTORY_TYPE_LOBBY , ui . lobbyChatEnable - > isChecked ( ) ) ;
rsHistory - > setSaveCount ( RS_HISTORY_TYPE_PUBLIC , ui . publicChatSaveCount - > value ( ) ) ;
rsHistory - > setSaveCount ( RS_HISTORY_TYPE_PRIVATE , ui . privateChatSaveCount - > value ( ) ) ;
rsHistory - > setSaveCount ( RS_HISTORY_TYPE_LOBBY , ui . lobbyChatSaveCount - > value ( ) ) ;
}
void ChatPage : : updatePublicStyle ( )
{
ChatStyleInfo info ;
QListWidgetItem * item = ui . publicList - > currentItem ( ) ;
if ( item ) {
info = item - > data ( Qt : : UserRole ) . value < ChatStyleInfo > ( ) ;
if ( publicStylePath ! = info . stylePath | | publicStyleVariant ! = ui . publicComboBoxVariant - > currentText ( ) ) {
Settings - > setPublicChatStyle ( info . stylePath , ui . publicComboBoxVariant - > currentText ( ) ) ;
NotifyQt : : getInstance ( ) - > notifyChatStyleChanged ( ChatStyle : : TYPE_PUBLIC ) ;
}
}
}
void ChatPage : : updatePrivateStyle ( )
{
ChatStyleInfo info ;
QListWidgetItem * item = ui . privateList - > currentItem ( ) ;
if ( item ) {
info = item - > data ( Qt : : UserRole ) . value < ChatStyleInfo > ( ) ;
if ( privateStylePath ! = info . stylePath | | privateStyleVariant ! = ui . privateComboBoxVariant - > currentText ( ) ) {
Settings - > setPrivateChatStyle ( info . stylePath , ui . privateComboBoxVariant - > currentText ( ) ) ;
NotifyQt : : getInstance ( ) - > notifyChatStyleChanged ( ChatStyle : : TYPE_PRIVATE ) ;
}
}
}
2010-09-07 11:49:31 -04:00
2017-01-30 15:38:06 -05:00
void ChatPage : : updateHistoryStyle ( )
{
ChatStyleInfo info ;
QListWidgetItem * item = ui . historyList - > currentItem ( ) ;
if ( item ) {
info = item - > data ( Qt : : UserRole ) . value < ChatStyleInfo > ( ) ;
if ( historyStylePath ! = info . stylePath | | historyStyleVariant ! = ui . historyComboBoxVariant - > currentText ( ) ) {
Settings - > setHistoryChatStyle ( info . stylePath , ui . historyComboBoxVariant - > currentText ( ) ) ;
NotifyQt : : getInstance ( ) - > notifyChatStyleChanged ( ChatStyle : : TYPE_HISTORY ) ;
}
}
}
2013-09-27 17:18:44 -04:00
2017-01-30 15:38:06 -05:00
void ChatPage : : updateHistoryStorage ( ) { rsHistory - > setMaxStorageDuration ( ui . max_storage_period - > value ( ) * 86400 ) ; }
2012-10-27 11:51:34 -04:00
2017-01-30 15:38:06 -05:00
/** Constructor */
ChatPage : : ChatPage ( QWidget * parent , Qt : : WindowFlags flags )
: ConfigPage ( parent , flags )
{
/* Invoke the Qt Designer generated object setup routine */
ui . setupUi ( this ) ;
2012-10-27 11:51:34 -04:00
2017-01-30 15:38:06 -05:00
# if QT_VERSION < 0x040600
ui . minimumContrastLabel - > hide ( ) ;
ui . minimumContrast - > hide ( ) ;
# endif
connect ( ui . distantChatComboBox , SIGNAL ( currentIndexChanged ( int ) ) , this , SLOT ( distantChatComboBoxChanged ( int ) ) ) ;
connect ( ui . checkBox_emoteprivchat , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateFontsAndEmotes ( ) ) ) ;
connect ( ui . checkBox_emotegroupchat , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateFontsAndEmotes ( ) ) ) ;
connect ( ui . checkBox_enableCustomFonts , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateFontsAndEmotes ( ) ) ) ;
connect ( ui . minimumFontSize , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( updateFontsAndEmotes ( ) ) ) ;
connect ( ui . checkBox_enableBold , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateFontsAndEmotes ( ) ) ) ;
connect ( ui . checkBox_enableItalics , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateFontsAndEmotes ( ) ) ) ;
connect ( ui . minimumContrast , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( updateFontsAndEmotes ( ) ) ) ;
connect ( ui . distantChatComboBox , SIGNAL ( currentIndexChanged ( int ) ) , this , SLOT ( updateChatParams ( ) ) ) ;
connect ( ui . sendMessageWithCtrlReturn , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateChatParams ( ) ) ) ;
connect ( ui . sendAsPlainTextByDef , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateChatParams ( ) ) ) ;
connect ( ui . loadEmbeddedImages , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateChatParams ( ) ) ) ;
connect ( ui . DontSendTyping , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateChatParams ( ) ) ) ;
connect ( ui . sbSearch_CharToStart , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( updateChatSearchParams ( ) ) ) ;
connect ( ui . cbSearch_CaseSensitively , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateChatSearchParams ( ) ) ) ;
connect ( ui . cbSearch_WholeWords , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateChatSearchParams ( ) ) ) ;
connect ( ui . cbSearch_MoveToCursor , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateChatSearchParams ( ) ) ) ;
connect ( ui . cbSearch_WithoutLimit , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateChatSearchParams ( ) ) ) ;
connect ( ui . sbSearch_MaxLimitColor , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( updateChatSearchParams ( ) ) ) ;
connect ( ui . chatLobbyIdentity_IC , SIGNAL ( currentIndexChanged ( int ) ) , this , SLOT ( updateDefaultLobbyIdentity ( ) ) ) ;
connect ( ui . publicChatLoadCount , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( updateHistoryParams ( ) ) ) ;
connect ( ui . privateChatLoadCount , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( updateHistoryParams ( ) ) ) ;
connect ( ui . lobbyChatLoadCount , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( updateHistoryParams ( ) ) ) ;
connect ( ui . publicChatEnable , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateHistoryParams ( ) ) ) ;
connect ( ui . privateChatEnable , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateHistoryParams ( ) ) ) ;
connect ( ui . lobbyChatEnable , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateHistoryParams ( ) ) ) ;
connect ( ui . publicChatSaveCount , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( updateHistoryParams ( ) ) ) ;
connect ( ui . privateChatSaveCount , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( updateHistoryParams ( ) ) ) ;
connect ( ui . lobbyChatSaveCount , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( updateHistoryParams ( ) ) ) ;
connect ( ui . publicList , SIGNAL ( currentRowChanged ( int ) ) , this , SLOT ( updatePublicStyle ( ) ) ) ;
connect ( ui . publicComboBoxVariant , SIGNAL ( currentIndexChanged ( int ) ) , this , SLOT ( updatePublicStyle ( ) ) ) ;
connect ( ui . privateList , SIGNAL ( currentRowChanged ( int ) ) , this , SLOT ( updatePrivateStyle ( ) ) ) ;
connect ( ui . privateComboBoxVariant , SIGNAL ( currentIndexChanged ( int ) ) , this , SLOT ( updatePrivateStyle ( ) ) ) ;
connect ( ui . historyList , SIGNAL ( currentRowChanged ( int ) ) , this , SLOT ( updateHistoryStyle ( ) ) ) ;
connect ( ui . historyComboBoxVariant , SIGNAL ( currentIndexChanged ( int ) ) , this , SLOT ( updateHistoryStyle ( ) ) ) ;
connect ( ui . max_storage_period , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( updateHistoryStorage ( ) ) ) ;
connect ( ui . chat_NewWindow , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateChatFlags ( ) ) ) ;
connect ( ui . chat_Focus , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateChatFlags ( ) ) ) ;
connect ( ui . chat_tabbedWindow , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateChatFlags ( ) ) ) ;
connect ( ui . chat_Blink , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateChatFlags ( ) ) ) ;
connect ( ui . chatLobby_Blink , SIGNAL ( toggled ( bool ) ) , this , SLOT ( updateChatLobbyFlags ( ) ) ) ;
}
void ChatPage : : updateChatFlags ( )
{
uint chatflags = 0 ;
if ( ui . chat_NewWindow - > isChecked ( ) )
chatflags | = RS_CHAT_OPEN ;
if ( ui . chat_Focus - > isChecked ( ) )
chatflags | = RS_CHAT_FOCUS ;
if ( ui . chat_tabbedWindow - > isChecked ( ) )
chatflags | = RS_CHAT_TABBED_WINDOW ;
if ( ui . chat_Blink - > isChecked ( ) )
chatflags | = RS_CHAT_BLINK ;
Settings - > setChatFlags ( chatflags ) ;
}
2012-10-27 11:59:12 -04:00
2017-01-30 15:38:06 -05:00
void ChatPage : : updateChatLobbyFlags ( )
{
uint chatLobbyFlags = 0 ;
2012-10-27 11:59:12 -04:00
2017-01-30 15:38:06 -05:00
if ( ui . chatLobby_Blink - > isChecked ( ) )
chatLobbyFlags | = RS_CHATLOBBY_BLINK ;
2012-10-27 11:59:12 -04:00
2017-01-30 15:38:06 -05:00
Settings - > setChatLobbyFlags ( chatLobbyFlags ) ;
2010-05-03 17:17:36 -04:00
}
/** Loads the settings for this page */
void
ChatPage : : load ( )
{
2010-09-04 10:23:30 -04:00
Settings - > beginGroup ( QString ( " Chat " ) ) ;
2012-09-21 17:23:14 -04:00
ui . checkBox_emoteprivchat - > setChecked ( Settings - > value ( " Emoteicons_PrivatChat " , true ) . toBool ( ) ) ;
ui . checkBox_emotegroupchat - > setChecked ( Settings - > value ( " Emoteicons_GroupChat " , true ) . toBool ( ) ) ;
ui . checkBox_enableCustomFonts - > setChecked ( Settings - > value ( " EnableCustomFonts " , true ) . toBool ( ) ) ;
ui . checkBox_enableCustomFontSize - > setChecked ( Settings - > value ( " EnableCustomFontSize " , true ) . toBool ( ) ) ;
2015-09-07 14:19:52 -04:00
ui . minimumFontSize - > setValue ( Settings - > value ( " MinimumFontSize " , 10 ) . toInt ( ) ) ;
2012-09-21 17:23:14 -04:00
ui . checkBox_enableBold - > setChecked ( Settings - > value ( " EnableBold " , true ) . toBool ( ) ) ;
ui . checkBox_enableItalics - > setChecked ( Settings - > value ( " EnableItalics " , true ) . toBool ( ) ) ;
ui . minimumContrast - > setValue ( Settings - > value ( " MinimumContrast " , 4.5 ) . toDouble ( ) ) ;
2010-09-04 10:23:30 -04:00
Settings - > endGroup ( ) ;
2010-05-03 17:17:36 -04:00
2015-12-05 16:49:00 -05:00
// state of distant Chat combobox
int index = Settings - > value ( " DistantChat " , 0 ) . toInt ( ) ;
2016-01-27 14:27:44 -05:00
ui . distantChatComboBox - > setCurrentIndex ( index ) ;
2015-12-05 16:49:00 -05:00
2010-09-10 14:38:46 -04:00
fontTempChat . fromString ( Settings - > getChatScreenFont ( ) ) ;
2010-09-04 10:23:30 -04:00
ui . sendMessageWithCtrlReturn - > setChecked ( Settings - > getChatSendMessageWithCtrlReturn ( ) ) ;
2016-01-27 14:27:44 -05:00
ui . sendAsPlainTextByDef - > setChecked ( Settings - > getChatSendAsPlainTextByDef ( ) ) ;
2016-08-09 17:32:25 -04:00
ui . loadEmbeddedImages - > setChecked ( Settings - > getChatLoadEmbeddedImages ( ) ) ;
2017-01-20 14:26:50 -05:00
ui . DontSendTyping - > setChecked ( Settings - > getChatDoNotSendIsTyping ( ) ) ;
2010-05-03 17:17:36 -04:00
2017-01-22 16:25:17 -05:00
std : : string advsetting ;
if ( rsConfig - > getConfigurationOption ( RS_CONFIG_ADVANCED , advsetting ) & & ( advsetting = = " YES " ) )
{ }
else
ui . DontSendTyping - > hide ( ) ;
2014-05-26 17:51:53 -04:00
ui . sbSearch_CharToStart - > setValue ( Settings - > getChatSearchCharToStartSearch ( ) ) ;
ui . cbSearch_CaseSensitively - > setChecked ( Settings - > getChatSearchCaseSensitively ( ) ) ;
ui . cbSearch_WholeWords - > setChecked ( Settings - > getChatSearchWholeWords ( ) ) ;
ui . cbSearch_MoveToCursor - > setChecked ( Settings - > getChatSearchMoveToCursor ( ) ) ;
ui . cbSearch_WithoutLimit - > setChecked ( Settings - > getChatSearchSearchWithoutLimit ( ) ) ;
ui . sbSearch_MaxLimitColor - > setValue ( Settings - > getChatSearchMaxSearchLimitColor ( ) ) ;
rgbChatSearchFoundColor = Settings - > getChatSearchFoundColor ( ) ;
QPixmap pix ( 24 , 24 ) ;
pix . fill ( rgbChatSearchFoundColor ) ;
ui . btSearch_FoundColor - > setIcon ( pix ) ;
2011-09-29 05:20:09 -04:00
ui . publicChatLoadCount - > setValue ( Settings - > getPublicChatHistoryCount ( ) ) ;
ui . privateChatLoadCount - > setValue ( Settings - > getPrivateChatHistoryCount ( ) ) ;
2013-09-27 17:18:44 -04:00
ui . lobbyChatLoadCount - > setValue ( Settings - > getLobbyChatHistoryCount ( ) ) ;
2011-09-29 05:20:09 -04:00
2013-09-27 17:18:44 -04:00
ui . publicChatEnable - > setChecked ( rsHistory - > getEnable ( RS_HISTORY_TYPE_PUBLIC ) ) ;
ui . privateChatEnable - > setChecked ( rsHistory - > getEnable ( RS_HISTORY_TYPE_PRIVATE ) ) ;
ui . lobbyChatEnable - > setChecked ( rsHistory - > getEnable ( RS_HISTORY_TYPE_LOBBY ) ) ;
2011-09-29 05:20:09 -04:00
2013-09-27 17:18:44 -04:00
ui . publicChatSaveCount - > setValue ( rsHistory - > getSaveCount ( RS_HISTORY_TYPE_PUBLIC ) ) ;
ui . privateChatSaveCount - > setValue ( rsHistory - > getSaveCount ( RS_HISTORY_TYPE_PRIVATE ) ) ;
ui . lobbyChatSaveCount - > setValue ( rsHistory - > getSaveCount ( RS_HISTORY_TYPE_LOBBY ) ) ;
2015-01-08 14:12:47 -05:00
// using fontTempChat.rawname() does not always work!
// see http://doc.qt.digia.com/qt-maemo/qfont.html#rawName
QStringList fontname = fontTempChat . toString ( ) . split ( " , " ) ;
ui . labelChatFontPreview - > setText ( fontname [ 0 ] ) ;
2010-09-04 10:23:30 -04:00
ui . labelChatFontPreview - > setFont ( fontTempChat ) ;
2010-09-07 11:49:31 -04:00
2013-09-27 17:18:44 -04:00
ui . max_storage_period - > setValue ( rsHistory - > getMaxStorageDuration ( ) / 86400 ) ;
2010-09-07 11:49:31 -04:00
/* Load styles */
2010-09-07 19:19:27 -04:00
publicStylePath = loadStyleInfo ( ChatStyle : : TYPE_PUBLIC , ui . publicList , ui . publicComboBoxVariant , publicStyleVariant ) ;
privateStylePath = loadStyleInfo ( ChatStyle : : TYPE_PRIVATE , ui . privateList , ui . privateComboBoxVariant , privateStyleVariant ) ;
historyStylePath = loadStyleInfo ( ChatStyle : : TYPE_HISTORY , ui . historyList , ui . historyComboBoxVariant , historyStyleVariant ) ;
2011-12-26 17:43:54 -05:00
2015-03-06 16:13:23 -05:00
RsGxsId gxs_id ;
rsMsgs - > getDefaultIdentityForChatLobby ( gxs_id ) ;
2015-03-26 17:20:57 -04:00
ui . chatLobbyIdentity_IC - > setFlags ( IDCHOOSER_ID_REQUIRED ) ;
if ( ! gxs_id . isNull ( ) )
ui . chatLobbyIdentity_IC - > setChosenId ( gxs_id ) ;
2012-10-27 11:51:34 -04:00
uint chatflags = Settings - > getChatFlags ( ) ;
ui . chat_NewWindow - > setChecked ( chatflags & RS_CHAT_OPEN ) ;
ui . chat_Focus - > setChecked ( chatflags & RS_CHAT_FOCUS ) ;
ui . chat_tabbedWindow - > setChecked ( chatflags & RS_CHAT_TABBED_WINDOW ) ;
2012-10-27 11:59:12 -04:00
ui . chat_Blink - > setChecked ( chatflags & RS_CHAT_BLINK ) ;
uint chatLobbyFlags = Settings - > getChatLobbyFlags ( ) ;
ui . chatLobby_Blink - > setChecked ( chatLobbyFlags & RS_CHATLOBBY_BLINK ) ;
2013-06-16 10:39:44 -04:00
// load personal invites
//
2014-05-25 17:43:05 -04:00
# ifdef TO_BE_DONE
for ( )
{
QListWidgetItem * item = new QListWidgetItem ;
2015-06-12 04:27:26 -04:00
item - > setData ( Qt : : DisplayRole , tr ( " Private chat invite from " ) + " " + QString : : fromUtf8 ( detail . name . c_str ( ) ) ) ;
2014-05-25 17:43:05 -04:00
QString tt ;
2015-06-12 04:27:26 -04:00
tt + = tr ( " Name : " ) + " " + QString : : fromUtf8 ( detail . name . c_str ( ) ) ;
tt + = " \n " + tr ( " PGP id : " ) + " " + QString : : fromStdString ( invites [ i ] . destination_pgp_id . toStdString ( ) ) ;
tt + = " \n " + tr ( " Valid until : " ) + " " + QDateTime : : fromTime_t ( invites [ i ] . time_of_validity ) . toString ( ) ;
2014-05-25 17:43:05 -04:00
item - > setData ( Qt : : UserRole , QString : : fromStdString ( invites [ i ] . pid . toStdString ( ) ) ) ;
item - > setToolTip ( tt ) ;
ui . _collected_contacts_LW - > insertItem ( 0 , item ) ;
}
# endif
2010-05-03 17:17:36 -04:00
}
2010-05-14 08:42:31 -04:00
void ChatPage : : on_pushButtonChangeChatFont_clicked ( )
{
bool ok ;
QFont font = QFontDialog : : getFont ( & ok , fontTempChat , this ) ;
if ( ok ) {
fontTempChat = font ;
2015-01-08 14:12:47 -05:00
// using fontTempChat.rawname() does not always work!
// see http://doc.qt.digia.com/qt-maemo/qfont.html#rawName
QStringList fontname = fontTempChat . toString ( ) . split ( " , " ) ;
ui . labelChatFontPreview - > setText ( fontname [ 0 ] ) ;
2010-05-14 08:42:31 -04:00
ui . labelChatFontPreview - > setFont ( fontTempChat ) ;
}
}
2010-09-07 11:49:31 -04:00
2010-09-07 19:19:27 -04:00
void ChatPage : : setPreviewMessages ( QString & stylePath , QString styleVariant , QTextBrowser * textBrowser )
2010-09-07 11:49:31 -04:00
{
ChatStyle style ;
2010-09-07 19:19:27 -04:00
style . setStylePath ( stylePath , styleVariant ) ;
2010-09-07 11:49:31 -04:00
textBrowser - > clear ( ) ;
2012-01-30 19:06:24 -05:00
QString nameIncoming = tr ( " Incoming " ) ;
QString nameOutgoing = tr ( " Outgoing " ) ;
2010-09-07 11:49:31 -04:00
QDateTime timestmp = QDateTime : : fromTime_t ( time ( NULL ) ) ;
2016-03-12 07:25:10 -05:00
QColor backgroundColor = textBrowser - > palette ( ) . base ( ) . color ( ) ;
textBrowser - > append ( style . formatMessage ( ChatStyle : : FORMATMSG_HINCOMING , nameIncoming , timestmp , tr ( " Incoming message in history " ) , 0 , backgroundColor ) ) ;
textBrowser - > append ( style . formatMessage ( ChatStyle : : FORMATMSG_HOUTGOING , nameOutgoing , timestmp , tr ( " Outgoing message in history " ) , 0 , backgroundColor ) ) ;
textBrowser - > append ( style . formatMessage ( ChatStyle : : FORMATMSG_INCOMING , nameIncoming , timestmp , tr ( " Incoming message " ) , 0 , backgroundColor ) ) ;
textBrowser - > append ( style . formatMessage ( ChatStyle : : FORMATMSG_OUTGOING , nameOutgoing , timestmp , tr ( " Outgoing message " ) , 0 , backgroundColor ) ) ;
textBrowser - > append ( style . formatMessage ( ChatStyle : : FORMATMSG_OOUTGOING , nameOutgoing , timestmp , tr ( " Outgoing offline message " ) , 0 , backgroundColor ) ) ;
textBrowser - > append ( style . formatMessage ( ChatStyle : : FORMATMSG_SYSTEM , tr ( " System " ) , timestmp , tr ( " System message " ) , 0 , backgroundColor ) ) ;
textBrowser - > append ( style . formatMessage ( ChatStyle : : FORMATMSG_OUTGOING , tr ( " UserName " ) , timestmp , tr ( " /me is sending a message with /me " ) , 0 , backgroundColor ) ) ;
2010-09-07 11:49:31 -04:00
}
2010-09-07 19:19:27 -04:00
void ChatPage : : fillPreview ( QListWidget * listWidget , QComboBox * comboBox , QTextBrowser * textBrowser )
{
QListWidgetItem * item = listWidget - > currentItem ( ) ;
if ( item ) {
2013-10-18 22:07:01 -04:00
ChatStyleInfo info = item - > data ( Qt : : UserRole ) . value < ChatStyleInfo > ( ) ;
2010-09-07 19:19:27 -04:00
setPreviewMessages ( info . stylePath , comboBox - > currentText ( ) , textBrowser ) ;
} else {
textBrowser - > clear ( ) ;
}
}
2010-09-07 11:49:31 -04:00
void ChatPage : : on_publicList_currentRowChanged ( int currentRow )
{
if ( currentRow ! = - 1 ) {
QListWidgetItem * item = ui . publicList - > item ( currentRow ) ;
2013-10-18 22:07:01 -04:00
ChatStyleInfo info = item - > data ( Qt : : UserRole ) . value < ChatStyleInfo > ( ) ;
2010-09-07 11:49:31 -04:00
QString author = info . authorName ;
if ( info . authorEmail . isEmpty ( ) = = false ) {
author + = " ( " + info . authorEmail + " ) " ;
}
ui . publicAuthor - > setText ( author ) ;
ui . publicDescription - > setText ( info . styleDescription ) ;
2010-09-07 19:19:27 -04:00
QStringList variants ;
ChatStyle : : getAvailableVariants ( info . stylePath , variants ) ;
ui . publicComboBoxVariant - > clear ( ) ;
ui . publicComboBoxVariant - > setEnabled ( variants . size ( ) ! = 0 ) ;
ui . publicComboBoxVariant - > addItems ( variants ) ;
/* try to find "Standard" */
int index = ui . publicComboBoxVariant - > findText ( VARIANT_STANDARD ) ;
if ( index ! = - 1 ) {
ui . publicComboBoxVariant - > setCurrentIndex ( index ) ;
} else {
ui . publicComboBoxVariant - > setCurrentIndex ( 0 ) ;
}
2010-09-07 11:49:31 -04:00
} else {
ui . publicAuthor - > clear ( ) ;
ui . publicDescription - > clear ( ) ;
2010-09-07 19:19:27 -04:00
ui . publicComboBoxVariant - > clear ( ) ;
ui . publicComboBoxVariant - > setDisabled ( true ) ;
2010-09-07 11:49:31 -04:00
}
2010-09-07 19:19:27 -04:00
fillPreview ( ui . publicList , ui . publicComboBoxVariant , ui . publicPreview ) ;
2010-09-07 11:49:31 -04:00
}
void ChatPage : : on_privateList_currentRowChanged ( int currentRow )
{
if ( currentRow ! = - 1 ) {
QListWidgetItem * item = ui . privateList - > item ( currentRow ) ;
2013-10-18 22:07:01 -04:00
ChatStyleInfo info = item - > data ( Qt : : UserRole ) . value < ChatStyleInfo > ( ) ;
2010-09-07 11:49:31 -04:00
QString author = info . authorName ;
if ( info . authorEmail . isEmpty ( ) = = false ) {
author + = " ( " + info . authorEmail + " ) " ;
}
ui . privateAuthor - > setText ( author ) ;
ui . privateDescription - > setText ( info . styleDescription ) ;
2010-09-07 19:19:27 -04:00
QStringList variants ;
ChatStyle : : getAvailableVariants ( info . stylePath , variants ) ;
ui . privateComboBoxVariant - > clear ( ) ;
ui . privateComboBoxVariant - > setEnabled ( variants . size ( ) ! = 0 ) ;
ui . privateComboBoxVariant - > addItems ( variants ) ;
/* try to find "Standard" */
int index = ui . privateComboBoxVariant - > findText ( VARIANT_STANDARD ) ;
if ( index ! = - 1 ) {
ui . privateComboBoxVariant - > setCurrentIndex ( index ) ;
} else {
ui . privateComboBoxVariant - > setCurrentIndex ( 0 ) ;
}
2010-09-07 11:49:31 -04:00
} else {
ui . privateAuthor - > clear ( ) ;
ui . privateDescription - > clear ( ) ;
2010-09-07 19:19:27 -04:00
ui . privateComboBoxVariant - > clear ( ) ;
ui . privateComboBoxVariant - > setDisabled ( true ) ;
2010-09-07 11:49:31 -04:00
}
2010-09-07 19:19:27 -04:00
fillPreview ( ui . privateList , ui . privateComboBoxVariant , ui . privatePreview ) ;
2010-09-07 11:49:31 -04:00
}
void ChatPage : : on_historyList_currentRowChanged ( int currentRow )
{
if ( currentRow ! = - 1 ) {
QListWidgetItem * item = ui . historyList - > item ( currentRow ) ;
2013-10-18 22:07:01 -04:00
ChatStyleInfo info = item - > data ( Qt : : UserRole ) . value < ChatStyleInfo > ( ) ;
2010-09-07 11:49:31 -04:00
QString author = info . authorName ;
if ( info . authorEmail . isEmpty ( ) = = false ) {
author + = " ( " + info . authorEmail + " ) " ;
}
ui . historyAuthor - > setText ( author ) ;
ui . historyDescription - > setText ( info . styleDescription ) ;
2010-09-07 19:19:27 -04:00
QStringList variants ;
ChatStyle : : getAvailableVariants ( info . stylePath , variants ) ;
ui . historyComboBoxVariant - > clear ( ) ;
ui . historyComboBoxVariant - > setEnabled ( variants . size ( ) ! = 0 ) ;
ui . historyComboBoxVariant - > addItems ( variants ) ;
/* try to find "Standard" */
int index = ui . historyComboBoxVariant - > findText ( VARIANT_STANDARD ) ;
if ( index ! = - 1 ) {
ui . historyComboBoxVariant - > setCurrentIndex ( index ) ;
} else {
ui . historyComboBoxVariant - > setCurrentIndex ( 0 ) ;
}
2010-09-07 11:49:31 -04:00
} else {
ui . historyAuthor - > clear ( ) ;
ui . historyDescription - > clear ( ) ;
2010-09-07 19:19:27 -04:00
ui . historyComboBoxVariant - > clear ( ) ;
ui . historyComboBoxVariant - > setDisabled ( true ) ;
2010-09-07 11:49:31 -04:00
}
2010-09-07 19:19:27 -04:00
fillPreview ( ui . historyList , ui . historyComboBoxVariant , ui . historyPreview ) ;
}
2011-08-12 10:06:29 -04:00
void ChatPage : : on_publicComboBoxVariant_currentIndexChanged ( int /*index*/ )
2010-09-07 19:19:27 -04:00
{
fillPreview ( ui . publicList , ui . publicComboBoxVariant , ui . publicPreview ) ;
}
2011-08-12 10:06:29 -04:00
void ChatPage : : on_privateComboBoxVariant_currentIndexChanged ( int /*index*/ )
2010-09-07 19:19:27 -04:00
{
fillPreview ( ui . privateList , ui . privateComboBoxVariant , ui . privatePreview ) ;
}
2011-08-12 10:06:29 -04:00
void ChatPage : : on_historyComboBoxVariant_currentIndexChanged ( int /*index*/ )
2010-09-07 19:19:27 -04:00
{
fillPreview ( ui . historyList , ui . historyComboBoxVariant , ui . historyPreview ) ;
2010-09-07 11:49:31 -04:00
}
2014-05-26 17:51:53 -04:00
void ChatPage : : on_cbSearch_WithoutLimit_toggled ( bool checked )
{
ui . sbSearch_MaxLimitColor - > setEnabled ( ! checked ) ;
ui . lSearch_MaxLimitColor - > setEnabled ( ! checked ) ;
}
void ChatPage : : on_btSearch_FoundColor_clicked ( )
{
bool ok ;
QRgb color = QColorDialog : : getRgba ( rgbChatSearchFoundColor , & ok , window ( ) ) ;
if ( ok ) {
rgbChatSearchFoundColor = color ;
QPixmap pix ( 24 , 24 ) ;
pix . fill ( color ) ;
ui . btSearch_FoundColor - > setIcon ( pix ) ;
}
}
2015-12-05 16:49:00 -05:00
void ChatPage : : distantChatComboBoxChanged ( int i )
{
switch ( i )
{
2015-12-27 21:10:20 -05:00
default :
case 0 : rsMsgs - > setDistantChatPermissionFlags ( RS_DISTANT_CHAT_CONTACT_PERMISSION_FLAG_FILTER_NONE ) ;
2015-12-05 16:49:00 -05:00
break ;
2015-12-27 21:10:20 -05:00
case 1 : rsMsgs - > setDistantChatPermissionFlags ( RS_DISTANT_CHAT_CONTACT_PERMISSION_FLAG_FILTER_NON_CONTACTS ) ;
2015-12-05 16:49:00 -05:00
break ;
2015-12-27 21:10:20 -05:00
case 2 : rsMsgs - > setDistantChatPermissionFlags ( RS_DISTANT_CHAT_CONTACT_PERMISSION_FLAG_FILTER_EVERYBODY ) ;
2015-12-05 16:49:00 -05:00
break ;
}
}