mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-25 23:49:35 -05:00
added for Privat chat html and css feature to can make styles for Chat Window.
added first basic default style. style Button disabled need to be fix. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@500 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
13eb45f294
commit
a20ff44567
@ -37,6 +37,7 @@
|
|||||||
#include "rsiface/rspeers.h"
|
#include "rsiface/rspeers.h"
|
||||||
#include "rsiface/rsmsgs.h"
|
#include "rsiface/rsmsgs.h"
|
||||||
|
|
||||||
|
#define appDir QApplication::applicationDirPath()
|
||||||
|
|
||||||
/* Define the format used for displaying the date and time */
|
/* Define the format used for displaying the date and time */
|
||||||
#define DATETIME_FMT "MMM dd hh:mm:ss"
|
#define DATETIME_FMT "MMM dd hh:mm:ss"
|
||||||
@ -56,6 +57,8 @@ PopupChatDialog::PopupChatDialog(std::string id, std::string name,
|
|||||||
|
|
||||||
loadEmoticons();
|
loadEmoticons();
|
||||||
|
|
||||||
|
styleHtm = appDir + "/style/chat/default.htm";
|
||||||
|
|
||||||
/* Hide ToolBox frame */
|
/* Hide ToolBox frame */
|
||||||
showAvatarFrame(true);
|
showAvatarFrame(true);
|
||||||
connect(ui.avatarFrameButton, SIGNAL(toggled(bool)), this, SLOT(showAvatarFrame(bool)));
|
connect(ui.avatarFrameButton, SIGNAL(toggled(bool)), this, SLOT(showAvatarFrame(bool)));
|
||||||
@ -70,6 +73,7 @@ PopupChatDialog::PopupChatDialog(std::string id, std::string name,
|
|||||||
connect(ui.fontButton, SIGNAL(clicked()), this, SLOT(getFont()));
|
connect(ui.fontButton, SIGNAL(clicked()), this, SLOT(getFont()));
|
||||||
connect(ui.colorButton, SIGNAL(clicked()), this, SLOT(setColor()));
|
connect(ui.colorButton, SIGNAL(clicked()), this, SLOT(setColor()));
|
||||||
connect(ui.emoteiconButton, SIGNAL(clicked()), this, SLOT(smileyWidget()));
|
connect(ui.emoteiconButton, SIGNAL(clicked()), this, SLOT(smileyWidget()));
|
||||||
|
connect(ui.styleButton, SIGNAL(clicked()), SLOT(changeStyle()));
|
||||||
|
|
||||||
// Create the status bar
|
// Create the status bar
|
||||||
std::ostringstream statusstr;
|
std::ostringstream statusstr;
|
||||||
@ -90,11 +94,15 @@ PopupChatDialog::PopupChatDialog(std::string id, std::string name,
|
|||||||
ui.textitalicButton->setIcon(QIcon(QString(":/images/edit-italic.png")));
|
ui.textitalicButton->setIcon(QIcon(QString(":/images/edit-italic.png")));
|
||||||
ui.fontButton->setIcon(QIcon(QString(":/images/fonts.png")));
|
ui.fontButton->setIcon(QIcon(QString(":/images/fonts.png")));
|
||||||
ui.emoteiconButton->setIcon(QIcon(QString(":/images/emoticons/kopete/kopete020.png")));
|
ui.emoteiconButton->setIcon(QIcon(QString(":/images/emoticons/kopete/kopete020.png")));
|
||||||
|
ui.styleButton->setIcon(QIcon(QString(":/images/looknfeel.png")));
|
||||||
|
|
||||||
ui.textboldButton->setCheckable(true);
|
ui.textboldButton->setCheckable(true);
|
||||||
ui.textunderlineButton->setCheckable(true);
|
ui.textunderlineButton->setCheckable(true);
|
||||||
ui.textitalicButton->setCheckable(true);
|
ui.textitalicButton->setCheckable(true);
|
||||||
|
|
||||||
|
/*Disabled style Button when will switch style RetroShare will crash need to be fix */
|
||||||
|
ui.styleButton->setEnabled(false);
|
||||||
|
|
||||||
/*QMenu * fontmenu = new QMenu();
|
/*QMenu * fontmenu = new QMenu();
|
||||||
fontmenu->addAction(ui.actionBold);
|
fontmenu->addAction(ui.actionBold);
|
||||||
fontmenu->addAction(ui.actionUnderline);
|
fontmenu->addAction(ui.actionUnderline);
|
||||||
@ -147,16 +155,15 @@ void PopupChatDialog::updateChat()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PopupChatDialog::addChatMsg(ChatInfo *ci)
|
void PopupChatDialog::addChatMsg(ChatInfo *ci)
|
||||||
{
|
{
|
||||||
QTextEdit *msgWidget = ui.textBrowser;
|
//QTextBrowser *msgWidget = ui.textBrowser;
|
||||||
|
|
||||||
QString currenttxt = msgWidget->toHtml();
|
//QString message = msgWidget->toHtml();
|
||||||
|
|
||||||
|
|
||||||
/* add in lines at the bottom */
|
/* add in lines at the bottom */
|
||||||
QString extraTxt;
|
//QString extraTxt;
|
||||||
|
|
||||||
|
|
||||||
bool offline = true;
|
bool offline = true;
|
||||||
@ -177,34 +184,44 @@ void PopupChatDialog::addChatMsg(ChatInfo *ci)
|
|||||||
{
|
{
|
||||||
QString line = "<br>\n<span style=\"color:#1D84C9\"><strong> ----- PEER OFFLINE (Chat will be lost) -----</strong></span> \n<br>";
|
QString line = "<br>\n<span style=\"color:#1D84C9\"><strong> ----- PEER OFFLINE (Chat will be lost) -----</strong></span> \n<br>";
|
||||||
|
|
||||||
extraTxt += line;
|
//extraTxt += line;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QString timestamp = "[" + QDateTime::currentDateTime().toString("hh:mm:ss") + "]";
|
QString timestamp = "[" + QDateTime::currentDateTime().toString("hh:mm:ss") + "]";
|
||||||
//QString pre = tr("Peer:" );
|
|
||||||
QString name = QString::fromStdString(ci ->name);
|
QString name = QString::fromStdString(ci ->name);
|
||||||
QString line = "<span style=\"color:#C00000\"><strong>" + timestamp + "</strong></span>" +
|
//QString line = "<span style=\"color:#C00000\"><strong>" + timestamp + "</strong></span>" +
|
||||||
"<span style=\"color:#2D84C9\"><strong>" + " " + name + "</strong></span>";
|
// "<span style=\"color:#2D84C9\"><strong>" + " " + name + "</strong></span>";
|
||||||
|
//extraTxt += line;
|
||||||
|
|
||||||
extraTxt += line;
|
QString message = QString::fromStdWString(ci -> msg);
|
||||||
|
|
||||||
|
//currenttxt += extraTxt;
|
||||||
extraTxt += QString::fromStdWString(ci -> msg);
|
|
||||||
|
|
||||||
currenttxt += extraTxt;
|
|
||||||
|
|
||||||
QHashIterator<QString, QString> i(smileys);
|
QHashIterator<QString, QString> i(smileys);
|
||||||
while(i.hasNext())
|
while(i.hasNext())
|
||||||
{
|
{
|
||||||
i.next();
|
i.next();
|
||||||
currenttxt.replace(i.key(), "<img src=\"" + i.value() + "\">");
|
message.replace(i.key(), "<img src=\"" + i.value() + "\">");
|
||||||
}
|
}
|
||||||
|
history /*<< nickColor << color << font << fontSize*/ << timestamp << name << message;
|
||||||
|
|
||||||
msgWidget->setHtml(currenttxt);
|
QString formatMsg = loadEmptyStyle()/*.replace(nickColor)
|
||||||
|
.replace(color)
|
||||||
|
.replace(font)
|
||||||
|
.replace(fontSize)*/
|
||||||
|
.replace("%timestamp%", timestamp)
|
||||||
|
.replace("%name%", name)
|
||||||
|
.replace("%message%", message);
|
||||||
|
|
||||||
QScrollBar *qsb = msgWidget->verticalScrollBar();
|
ui.textBrowser->setHtml(ui.textBrowser->toHtml() + formatMsg + "\n");
|
||||||
qsb -> setValue(qsb->maximum());
|
|
||||||
|
QTextCursor cursor = ui.textBrowser->textCursor();
|
||||||
|
cursor.movePosition(QTextCursor::End);
|
||||||
|
ui.textBrowser->setTextCursor(cursor);
|
||||||
|
|
||||||
|
//QScrollBar *qsb = ui.textBrowser->verticalScrollBar();
|
||||||
|
//qsb -> setValue(qsb->maximum());
|
||||||
}
|
}
|
||||||
|
|
||||||
void PopupChatDialog::checkChat()
|
void PopupChatDialog::checkChat()
|
||||||
@ -377,3 +394,46 @@ void PopupChatDialog::addSmiley()
|
|||||||
{
|
{
|
||||||
ui.chattextEdit->setText(ui.chattextEdit->toHtml() + qobject_cast<QPushButton*>(sender())->toolTip());
|
ui.chattextEdit->setText(ui.chattextEdit->toHtml() + qobject_cast<QPushButton*>(sender())->toolTip());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString PopupChatDialog::loadEmptyStyle()
|
||||||
|
{
|
||||||
|
QString ret;
|
||||||
|
QFile file(styleHtm);
|
||||||
|
file.open(QIODevice::ReadOnly);
|
||||||
|
ret = file.readAll();
|
||||||
|
file.close();
|
||||||
|
QString styleTmp = styleHtm;
|
||||||
|
QString styleCss = styleTmp.remove(styleHtm.lastIndexOf("."), styleHtm.length()-styleHtm.lastIndexOf(".")) + ".css";
|
||||||
|
qDebug() << styleCss.toAscii();
|
||||||
|
QFile css(styleCss);
|
||||||
|
css.open(QIODevice::ReadOnly);
|
||||||
|
QString tmp = css.readAll();
|
||||||
|
css.close();
|
||||||
|
ret.replace("%css-style%", tmp);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PopupChatDialog::changeStyle()
|
||||||
|
{
|
||||||
|
QString newStyle = QFileDialog::getOpenFileName(this, tr("Open Style"),
|
||||||
|
appDir + "/style/chat/",
|
||||||
|
tr("Styles (*.htm)"));
|
||||||
|
if(!newStyle.isEmpty())
|
||||||
|
{
|
||||||
|
QString wholeChat;
|
||||||
|
styleHtm = newStyle;
|
||||||
|
|
||||||
|
|
||||||
|
for(int i = 0; i < history.size(); i+=4)
|
||||||
|
{
|
||||||
|
QString formatMsg = loadEmptyStyle();
|
||||||
|
wholeChat += formatMsg.replace("%timestamp%", history.at(i+1))
|
||||||
|
.replace("%name%", history.at(i+2))
|
||||||
|
.replace("%message%", history.at(i+3)) + "\n";
|
||||||
|
}
|
||||||
|
ui.textBrowser->setHtml(wholeChat);
|
||||||
|
}
|
||||||
|
QTextCursor cursor = ui.textBrowser->textCursor();
|
||||||
|
cursor.movePosition(QTextCursor::End);
|
||||||
|
ui.textBrowser->setTextCursor(cursor);
|
||||||
|
}
|
||||||
|
@ -54,6 +54,7 @@ public:
|
|||||||
|
|
||||||
void loadEmoticons();
|
void loadEmoticons();
|
||||||
|
|
||||||
|
QString loadEmptyStyle();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
/** Overloaded QWidget.show */
|
/** Overloaded QWidget.show */
|
||||||
@ -62,6 +63,7 @@ public slots:
|
|||||||
void smileyWidget();
|
void smileyWidget();
|
||||||
void addSmiley();
|
void addSmiley();
|
||||||
|
|
||||||
|
void changeStyle();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void closeEvent (QCloseEvent * event);
|
void closeEvent (QCloseEvent * event);
|
||||||
@ -94,6 +96,11 @@ private:
|
|||||||
QColor mCurrentColor;
|
QColor mCurrentColor;
|
||||||
QFont mCurrentFont;
|
QFont mCurrentFont;
|
||||||
|
|
||||||
|
QString styleHtm;
|
||||||
|
QString emptyStyle;
|
||||||
|
QStringList history;
|
||||||
|
QString wholeChat;
|
||||||
|
|
||||||
/** Qt Designer generated object */
|
/** Qt Designer generated object */
|
||||||
Ui::PopupChatDialog ui;
|
Ui::PopupChatDialog ui;
|
||||||
};
|
};
|
||||||
|
@ -83,7 +83,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="2" >
|
<item row="0" column="3" >
|
||||||
<widget class="QPushButton" name="textboldButton" >
|
<widget class="QPushButton" name="textboldButton" >
|
||||||
<property name="minimumSize" >
|
<property name="minimumSize" >
|
||||||
<size>
|
<size>
|
||||||
@ -111,7 +111,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="3" >
|
<item row="0" column="4" >
|
||||||
<widget class="QPushButton" name="textunderlineButton" >
|
<widget class="QPushButton" name="textunderlineButton" >
|
||||||
<property name="minimumSize" >
|
<property name="minimumSize" >
|
||||||
<size>
|
<size>
|
||||||
@ -139,7 +139,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="4" >
|
<item row="0" column="5" >
|
||||||
<widget class="QPushButton" name="textitalicButton" >
|
<widget class="QPushButton" name="textitalicButton" >
|
||||||
<property name="minimumSize" >
|
<property name="minimumSize" >
|
||||||
<size>
|
<size>
|
||||||
@ -167,7 +167,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="5" >
|
<item row="0" column="6" >
|
||||||
<widget class="QPushButton" name="fontButton" >
|
<widget class="QPushButton" name="fontButton" >
|
||||||
<property name="minimumSize" >
|
<property name="minimumSize" >
|
||||||
<size>
|
<size>
|
||||||
@ -195,7 +195,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="6" >
|
<item row="0" column="7" >
|
||||||
<widget class="QPushButton" name="colorButton" >
|
<widget class="QPushButton" name="colorButton" >
|
||||||
<property name="minimumSize" >
|
<property name="minimumSize" >
|
||||||
<size>
|
<size>
|
||||||
@ -248,6 +248,37 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="2" >
|
||||||
|
<widget class="QPushButton" name="styleButton" >
|
||||||
|
<property name="minimumSize" >
|
||||||
|
<size>
|
||||||
|
<width>28</width>
|
||||||
|
<height>28</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize" >
|
||||||
|
<size>
|
||||||
|
<width>28</width>
|
||||||
|
<height>28</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip" >
|
||||||
|
<string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||||
|
p, li { white-space: pre-wrap; }
|
||||||
|
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set Chat Window Style</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize" >
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -137,6 +137,7 @@
|
|||||||
<file>images/ktorrent32.png</file>
|
<file>images/ktorrent32.png</file>
|
||||||
<file>images/loadcert16.png</file>
|
<file>images/loadcert16.png</file>
|
||||||
<file>images/locale.png</file>
|
<file>images/locale.png</file>
|
||||||
|
<file>images/looknfeel.png</file>
|
||||||
<file>images/lphoto.png</file>
|
<file>images/lphoto.png</file>
|
||||||
<file>images/lphoto16.png</file>
|
<file>images/lphoto16.png</file>
|
||||||
<file>images/lphoto24.png</file>
|
<file>images/lphoto24.png</file>
|
||||||
|
BIN
retroshare-gui/src/gui/images/looknfeel.png
Normal file
BIN
retroshare-gui/src/gui/images/looknfeel.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
26
retroshare-gui/src/release/style/chat/default.css
Normal file
26
retroshare-gui/src/release/style/chat/default.css
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
.header {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
}
|
||||||
|
|
||||||
|
.incomingHeader {
|
||||||
|
background-color:#dfedff;
|
||||||
|
border-color:#fafafa #d1dfef #d1dfef #fafafa;
|
||||||
|
color: #295b07;
|
||||||
|
}
|
||||||
|
|
||||||
|
.incomingTime {
|
||||||
|
color: #295b07;
|
||||||
|
}
|
||||||
|
|
||||||
|
.outgoingHeader {
|
||||||
|
background-color:#f5f5f5;
|
||||||
|
border-color:#fafafa #e3e3e3 #e3e3e3 #fafafa;
|
||||||
|
color: #244578;
|
||||||
|
}
|
||||||
|
|
||||||
|
.outgoingTime {
|
||||||
|
color: #244578;
|
||||||
|
}
|
23
retroshare-gui/src/release/style/chat/default.htm
Normal file
23
retroshare-gui/src/release/style/chat/default.htm
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<style type="text/css">
|
||||||
|
%css-style%
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<table width='100%' cellpadding='0' cellspacing='0'>
|
||||||
|
<tr>
|
||||||
|
<td class='header incomingHeader'>
|
||||||
|
%name%
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width='100%' cellpadding='0' cellspacing='0'>
|
||||||
|
<tr>
|
||||||
|
<td>%message%</td>
|
||||||
|
<td width='50' align='left' class='time incomingTime'>%timestamp%</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
BIN
retroshare-gui/src/release/style/chat/images/rstray3.png
Normal file
BIN
retroshare-gui/src/release/style/chat/images/rstray3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
24
retroshare-gui/src/release/style/chat/second.css
Normal file
24
retroshare-gui/src/release/style/chat/second.css
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
.header {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
}
|
||||||
|
|
||||||
|
.incomingHeader {
|
||||||
|
background-color: #B2B2B2;
|
||||||
|
color: #000033;
|
||||||
|
}
|
||||||
|
|
||||||
|
.incomingTime {
|
||||||
|
color: #CCD9D9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.outgoingHeader {
|
||||||
|
background-color: #c2d9fa;
|
||||||
|
color: #244578;
|
||||||
|
}
|
||||||
|
|
||||||
|
.outgoingTime {
|
||||||
|
color: #244578;
|
||||||
|
}
|
28
retroshare-gui/src/release/style/chat/second.htm
Normal file
28
retroshare-gui/src/release/style/chat/second.htm
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<style type="text/css">
|
||||||
|
%css-style%
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<table width='100%' cellpadding='0' cellspacing='0'>
|
||||||
|
<tr>
|
||||||
|
<td align='right' width='32' bgcolor='white' rowspan='2'>
|
||||||
|
<div>
|
||||||
|
<img src='%avatar%'>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td class='header incomingHeader'>
|
||||||
|
%name%
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width='100%' cellpadding='0' cellspacing='0'>
|
||||||
|
<tr>
|
||||||
|
<td>%message%</td>
|
||||||
|
<td width='50' align='left' class='time incomingTime'>%timestamp%</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user