re implement chat parsing for urls. External web browser call might not work on some systems

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2224 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
joss17 2010-02-07 12:36:37 +00:00
parent 37e9bf527c
commit db225bdcb7
4 changed files with 255 additions and 233 deletions

View File

@ -193,8 +193,8 @@ PeersDialog::PeersDialog(QWidget *parent)
ui.menupushButton->setMenu(menu); ui.menupushButton->setMenu(menu);
ui.msgText->setOpenExternalLinks ( false ); //ui.msgText->setOpenExternalLinks ( false );
ui.msgText->setOpenLinks ( false ); //ui.msgText->setOpenLinks ( false );
setAcceptDrops(true); setAcceptDrops(true);
ui.lineEdit->setAcceptDrops(false); ui.lineEdit->setAcceptDrops(false);
@ -890,7 +890,7 @@ void PeersDialog::insertChat()
/* add in lines at the bottom */ /* add in lines at the bottom */
for(it = newchat.begin(); it != newchat.end(); it++) for(it = newchat.begin(); it != newchat.end(); it++)
{ {
std::string msg(it->msg.begin(), it->msg.end()); std::string msg(it->msg.begin(), it->msg.end());
#ifdef PEERS_DEBUG #ifdef PEERS_DEBUG
std::cerr << "PeersDialog::insertChat(): " << msg << std::endl; std::cerr << "PeersDialog::insertChat(): " << msg << std::endl;
#endif #endif
@ -907,50 +907,64 @@ void PeersDialog::insertChat()
std::ostringstream out; std::ostringstream out;
QString extraTxt; QString extraTxt;
QString timestamp = QDateTime::currentDateTime().toString("hh:mm:ss"); QString timestamp = QDateTime::currentDateTime().toString("hh:mm:ss");
QString name = QString::fromStdString(it->name); QString name = QString::fromStdString(it->name);
QString line = "<span style=\"color:#C00000\">" + timestamp + "</span>" + QString line = "<span style=\"color:#C00000\">" + timestamp + "</span>" +
"<span style=\"color:#2D84C9\"><strong>" + " " + name + "</strong></span>"; "<span style=\"color:#2D84C9\"><strong>" + " " + name + "</strong></span>";
//std::cerr << "PeersDialog::insertChat(): 1.11\n"; //std::cerr << "PeersDialog::insertChat(): 1.11\n";
historyKeeper.addMessage(name, "THIS", QString::fromStdWString(it->msg)); historyKeeper.addMessage(name, "THIS", QString::fromStdWString(it->msg));
//std::cerr << "PeersDialog::insertChat(): 1.12\n"; //std::cerr << "PeersDialog::insertChat(): 1.12\n";
extraTxt += line; extraTxt += line;
extraTxt += QString::fromStdWString(it->msg); extraTxt += QString::fromStdWString(it->msg);
// notify with a systray icon msg // notify with a systray icon msg
if(it->rsid != rsPeers->getOwnId()) if(it->rsid != rsPeers->getOwnId())
{ {
// This is a trick to translate HTML into text. // This is a trick to translate HTML into text.
QTextEdit editor ; QTextEdit editor ;
editor.setHtml(QString::fromStdWString(it->msg)); editor.setHtml(QString::fromStdWString(it->msg));
QString notifyMsg(QString::fromStdString(it->name)+": "+editor.toPlainText()) ; QString notifyMsg(QString::fromStdString(it->name)+": "+editor.toPlainText()) ;
if(notifyMsg.length() > 30) if(notifyMsg.length() > 30)
emit notifyGroupChat(QString("New group chat"), notifyMsg.left(30)+QString("...")); emit notifyGroupChat(QString("New group chat"), notifyMsg.left(30)+QString("..."));
else else
emit notifyGroupChat(QString("New group chat"), notifyMsg); emit notifyGroupChat(QString("New group chat"), notifyMsg);
} }
QHashIterator<QString, QString> i(smileys); //replace http://, https:// and www. with <a href> links
while(i.hasNext()) QRegExp rx("(https?://[^ <>]*)|(www\\.[^ <>]*)");
{ int count = 0;
i.next(); int pos = 200; //ignore the first 200 char because of the standard DTD ref
foreach(QString code, i.key().split("|")) while ( (pos = rx.indexIn(extraTxt, pos)) != -1 ) {
extraTxt.replace(code, "<img src=\"" + i.value() + "\" />"); //we need to look ahead to see if it's already a well formed link
} if (extraTxt.mid(pos - 6, 6) != "href=\"" && extraTxt.mid(pos - 6, 6) != "href='" && extraTxt.mid(pos - 6, 6) != "ttp://" ) {
QString tempMessg = extraTxt.left(pos) + "<a href=\"" + rx.cap(count) + "\">" + rx.cap(count) + "</a>" + extraTxt.mid(pos + rx.matchedLength(), -1);
extraTxt = tempMessg;
}
pos += rx.matchedLength() + 15;
count ++;
}
if ((msgWidget->verticalScrollBar()->maximum() - 30) < msgWidget->verticalScrollBar()->value() ) { QHashIterator<QString, QString> i(smileys);
msgWidget->append(extraTxt); while(i.hasNext())
} else { {
//the vertical scroll is not at the bottom, so just update the text, the scroll will stay at the current position i.next();
int scroll = msgWidget->verticalScrollBar()->value(); foreach(QString code, i.key().split("|"))
msgWidget->setHtml(msgWidget->toHtml() + extraTxt); extraTxt.replace(code, "<img src=\"" + i.value() + "\" />");
msgWidget->verticalScrollBar()->setValue(scroll); }
msgWidget->update();
} if ((msgWidget->verticalScrollBar()->maximum() - 30) < msgWidget->verticalScrollBar()->value() ) {
} msgWidget->append(extraTxt);
} else {
//the vertical scroll is not at the bottom, so just update the text, the scroll will stay at the current position
int scroll = msgWidget->verticalScrollBar()->value();
msgWidget->setHtml(msgWidget->toHtml() + extraTxt);
msgWidget->verticalScrollBar()->setValue(scroll);
msgWidget->update();
}
}
} }
void PeersDialog::checkChat() void PeersDialog::checkChat()
@ -1522,7 +1536,7 @@ void PeersDialog::addAttachment(std::string filePath) {
} }
void PeersDialog::fileHashingFinished(AttachFileItem* file) { void PeersDialog::fileHashingFinished(AttachFileItem* file) {
std::cerr << "PopupChatDialog::fileHashingFinished() started."; std::cerr << "PeersDialog::fileHashingFinished() started.";
std::cerr << std::endl; std::cerr << std::endl;
//check that the file is ok tos end //check that the file is ok tos end
@ -1553,8 +1567,8 @@ void PeersDialog::fileHashingFinished(AttachFileItem* file) {
std::string mesgString = "<a href='retroshare://file|" + (file->FileName()) + "|" + fileSize + "|" + (file->FileHash()) + "'>" std::string mesgString = "<a href='retroshare://file|" + (file->FileName()) + "|" + fileSize + "|" + (file->FileHash()) + "'>"
+ "retroshare://file|" + (file->FileName()) + "|" + fileSize + "|" + (file->FileHash()) + "</a>"; + "retroshare://file|" + (file->FileName()) + "|" + fileSize + "|" + (file->FileHash()) + "</a>";
#ifdef CHAT_DEBUG #ifdef PEERS_DEBUG
std::cerr << "CreateForumMsg::anchorClicked mesgString : " << mesgString << std::endl; std::cerr << "PeersDialog::fileHashingFinished mesgString : " << mesgString << std::endl;
#endif #endif
const char * messageString = mesgString.c_str (); const char * messageString = mesgString.c_str ();
@ -1581,8 +1595,8 @@ void PeersDialog::fileHashingFinished(AttachFileItem* file) {
void PeersDialog::anchorClicked (const QUrl& link ) void PeersDialog::anchorClicked (const QUrl& link )
{ {
#ifdef FORUM_DEBUG #ifdef PEERS_DEBUG
std::cerr << "ForumsDialog::anchorClicked link.scheme() : " << link.scheme().toStdString() << std::endl; std::cerr << "PeersDialog::anchorClicked link.scheme() : " << link.scheme().toStdString() << std::endl;
#endif #endif
if (link.scheme() == "retroshare") if (link.scheme() == "retroshare")
@ -1593,7 +1607,7 @@ void PeersDialog::anchorClicked (const QUrl& link )
uint64_t fileSize = L.at(2).toULongLong(); uint64_t fileSize = L.at(2).toULongLong();
std::string fileHash = L.at(3).toStdString() ; std::string fileHash = L.at(3).toStdString() ;
#ifdef FORUM_DEBUG #ifdef PEERS_DEBUG
std::cerr << "PeersDialog::anchorClicked FileRequest : fileName : " << fileName << ". fileHash : " << fileHash << ". fileSize : " << fileSize << std::endl; std::cerr << "PeersDialog::anchorClicked FileRequest : fileName : " << fileName << ". fileHash : " << fileHash << ". fileSize : " << fileSize << std::endl;
#endif #endif

View File

@ -861,6 +861,12 @@ background: white;}</string>
<property name="readOnly"> <property name="readOnly">
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
<property name="openLinks">
<bool>false</bool>
</property>
</widget> </widget>
</item> </item>
<item> <item>

View File

@ -99,8 +99,8 @@ PopupChatDialog::PopupChatDialog(std::string id, std::string name,
// Create the status bar // Create the status bar
resetStatusBar() ; resetStatusBar() ;
ui.textBrowser->setOpenExternalLinks ( false ); //ui.textBrowser->setOpenExternalLinks ( false );
ui.textBrowser->setOpenLinks ( false ); //ui.textBrowser->setOpenLinks ( false );
QString title = QString::fromStdString(name) + " :" + tr(" RetroShare - Encrypted Chat") ; QString title = QString::fromStdString(name) + " :" + tr(" RetroShare - Encrypted Chat") ;
setWindowTitle(title); setWindowTitle(title);
@ -252,29 +252,21 @@ void PopupChatDialog::addChatMsg(ChatInfo *ci)
//replace http://, https:// and www. with <a href> links //replace http://, https:// and www. with <a href> links
QRegExp rx("(https?://[^ <>]*)|(www\\.[^ <>]*)"); QRegExp rx("(https?://[^ <>]*)|(www\\.[^ <>]*)");
int count = 0; int count = 0;
int pos = 100; //ignor the first 100 charater because of the standard DTD ref int pos = 100; //ignore the first 100 char because of the standard DTD ref
while ( (pos = rx.indexIn(message, pos)) != -1 ) { while ( (pos = rx.indexIn(message, pos)) != -1 ) {
count ++;
//we need to look ahead to see if it's already a well formed link //we need to look ahead to see if it's already a well formed link
if (message.mid(pos - 6, 6) != "href=\"" && message.mid(pos - 6, 6) != "href='" && message.mid(pos - 6, 6) != "ttp://" ) { if (message.mid(pos - 6, 6) != "href=\"" && message.mid(pos - 6, 6) != "href='" && message.mid(pos - 6, 6) != "ttp://" ) {
QString tempMessg = message.left(pos) + "<a href=\"" + rx.cap(count) + "\">" + rx.cap(count) + "</a>" + message.mid(pos + rx.matchedLength(), -1); QString tempMessg = message.left(pos) + "<a href=\"" + rx.cap(count) + "\">" + rx.cap(count) + "</a>" + message.mid(pos + rx.matchedLength(), -1);
message = tempMessg; message = tempMessg;
} }
pos += rx.matchedLength() + 15; pos += rx.matchedLength() + 15;
} count ++;
}
#ifdef CHAT_DEBUG #ifdef CHAT_DEBUG
std::cout << "PopupChatDialog:addChatMsg message : " << message.toStdString() << std::endl; std::cout << "PopupChatDialog:addChatMsg message : " << message.toStdString() << std::endl;
#endif #endif
/*QHashIterator<QString, QString> i(smileys);
while(i.hasNext())
{
i.next();
message.replace(i.key(), "<img src=\"" + i.value() + "\">");
}*/
QHashIterator<QString, QString> i(smileys); QHashIterator<QString, QString> i(smileys);
while(i.hasNext()) while(i.hasNext())
{ {

View File

@ -1,7 +1,8 @@
<ui version="4.0" > <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>PopupChatDialog</class> <class>PopupChatDialog</class>
<widget class="QMainWindow" name="PopupChatDialog" > <widget class="QMainWindow" name="PopupChatDialog">
<property name="geometry" > <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
@ -9,100 +10,103 @@
<height>439</height> <height>439</height>
</rect> </rect>
</property> </property>
<property name="windowTitle" > <property name="windowTitle">
<string>MainWindow</string> <string>MainWindow</string>
</property> </property>
<widget class="QWidget" name="centralwidget" > <widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" > <layout class="QGridLayout">
<property name="rightMargin" > <property name="rightMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="bottomMargin" > <property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="horizontalSpacing" > <property name="spacing">
<number>0</number> <number>0</number>
</property> </property>
<property name="verticalSpacing" > <item row="0" column="0">
<number>0</number> <widget class="QTextBrowser" name="textBrowser">
</property> <property name="sizePolicy">
<item row="0" column="0" > <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
<widget class="QTextBrowser" name="textBrowser" >
<property name="sizePolicy" >
<sizepolicy vsizetype="MinimumExpanding" hsizetype="Expanding" >
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>0</width> <width>0</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="sizeIncrement" > <property name="sizeIncrement">
<size> <size>
<width>0</width> <width>0</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
<property name="openLinks">
<bool>false</bool>
</property>
</widget> </widget>
</item> </item>
<item rowspan="4" row="0" column="1" > <item row="0" column="1" rowspan="4">
<widget class="QFrame" name="avatarframe" > <widget class="QFrame" name="avatarframe">
<property name="frameShape" > <property name="frameShape">
<enum>QFrame::StyledPanel</enum> <enum>QFrame::StyledPanel</enum>
</property> </property>
<property name="frameShadow" > <property name="frameShadow">
<enum>QFrame::Raised</enum> <enum>QFrame::Raised</enum>
</property> </property>
<layout class="QGridLayout" > <layout class="QGridLayout">
<property name="leftMargin" > <property name="leftMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="topMargin" > <property name="topMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="rightMargin" > <property name="rightMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="bottomMargin" > <property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<item row="0" column="0" > <item row="0" column="0">
<widget class="QLabel" name="avatarlabel" > <widget class="QLabel" name="avatarlabel">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>116</width> <width>116</width>
<height>116</height> <height>116</height>
</size> </size>
</property> </property>
<property name="maximumSize" > <property name="maximumSize">
<size> <size>
<width>116</width> <width>116</width>
<height>116</height> <height>116</height>
</size> </size>
</property> </property>
<property name="styleSheet" > <property name="styleSheet">
<string>QLabel{ <string>QLabel{
border-image: url(:/images/mystatus_bg.png); border-image: url(:/images/mystatus_bg.png);
}</string> }</string>
</property> </property>
<property name="text" > <property name="text">
<string/> <string/>
</property> </property>
<property name="alignment" > <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0" > <item row="1" column="0">
<spacer> <spacer>
<property name="orientation" > <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeHint" > <property name="sizeHint" stdset="0">
<size> <size>
<width>61</width> <width>61</width>
<height>141</height> <height>141</height>
@ -110,43 +114,43 @@ border-image: url(:/images/mystatus_bg.png);
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="2" column="0" > <item row="2" column="0">
<widget class="QLabel" name="myavatarlabel" > <widget class="QLabel" name="myavatarlabel">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>116</width> <width>116</width>
<height>116</height> <height>116</height>
</size> </size>
</property> </property>
<property name="maximumSize" > <property name="maximumSize">
<size> <size>
<width>116</width> <width>116</width>
<height>116</height> <height>116</height>
</size> </size>
</property> </property>
<property name="styleSheet" > <property name="styleSheet">
<string>QLabel{ <string>QLabel{
border-image: url(:/images/mystatus_bg.png); border-image: url(:/images/mystatus_bg.png);
}</string> }</string>
</property> </property>
<property name="text" > <property name="text">
<string/> <string/>
</property> </property>
<property name="alignment" > <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0" > <item row="3" column="0">
<spacer> <spacer>
<property name="orientation" > <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeType" > <property name="sizeType">
<enum>QSizePolicy::Fixed</enum> <enum>QSizePolicy::Fixed</enum>
</property> </property>
<property name="sizeHint" > <property name="sizeHint" stdset="0">
<size> <size>
<width>61</width> <width>61</width>
<height>30</height> <height>30</height>
@ -157,42 +161,42 @@ border-image: url(:/images/mystatus_bg.png);
</layout> </layout>
</widget> </widget>
</item> </item>
<item rowspan="4" row="0" column="2" > <item row="0" column="2" rowspan="4">
<layout class="QGridLayout" > <layout class="QGridLayout">
<item row="0" column="0" > <item row="0" column="0">
<widget class="QPushButton" name="avatarFrameButton" > <widget class="QPushButton" name="avatarFrameButton">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>14</width> <width>14</width>
<height>31</height> <height>31</height>
</size> </size>
</property> </property>
<property name="maximumSize" > <property name="maximumSize">
<size> <size>
<width>14</width> <width>14</width>
<height>31</height> <height>31</height>
</size> </size>
</property> </property>
<property name="text" > <property name="text">
<string/> <string/>
</property> </property>
<property name="iconSize" > <property name="iconSize">
<size> <size>
<width>16</width> <width>16</width>
<height>31</height> <height>31</height>
</size> </size>
</property> </property>
<property name="checkable" > <property name="checkable">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0" > <item row="1" column="0">
<spacer> <spacer>
<property name="orientation" > <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeHint" > <property name="sizeHint" stdset="0">
<size> <size>
<width>14</width> <width>14</width>
<height>321</height> <height>321</height>
@ -202,33 +206,33 @@ border-image: url(:/images/mystatus_bg.png);
</item> </item>
</layout> </layout>
</item> </item>
<item row="1" column="0" > <item row="1" column="0">
<widget class="QFrame" name="Chatbuttonframe" > <widget class="QFrame" name="Chatbuttonframe">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>16</width> <width>16</width>
<height>46</height> <height>46</height>
</size> </size>
</property> </property>
<property name="frameShape" > <property name="frameShape">
<enum>QFrame::StyledPanel</enum> <enum>QFrame::StyledPanel</enum>
</property> </property>
<property name="frameShadow" > <property name="frameShadow">
<enum>QFrame::Raised</enum> <enum>QFrame::Raised</enum>
</property> </property>
<layout class="QGridLayout" > <layout class="QGridLayout">
<property name="topMargin" > <property name="topMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="horizontalSpacing" > <property name="horizontalSpacing">
<number>6</number> <number>6</number>
</property> </property>
<item row="0" column="0" > <item row="0" column="0">
<spacer> <spacer>
<property name="orientation" > <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="sizeHint" > <property name="sizeHint" stdset="0">
<size> <size>
<width>190</width> <width>190</width>
<height>25</height> <height>25</height>
@ -236,30 +240,30 @@ border-image: url(:/images/mystatus_bg.png);
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="0" column="1" > <item row="0" column="1">
<widget class="QPushButton" name="emoteiconButton" > <widget class="QPushButton" name="emoteiconButton">
<property name="sizePolicy" > <property name="sizePolicy">
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" > <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>28</width> <width>28</width>
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="maximumSize" > <property name="maximumSize">
<size> <size>
<width>28</width> <width>28</width>
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="text" > <property name="text">
<string/> <string/>
</property> </property>
<property name="iconSize" > <property name="iconSize">
<size> <size>
<width>24</width> <width>24</width>
<height>24</height> <height>24</height>
@ -267,30 +271,30 @@ border-image: url(:/images/mystatus_bg.png);
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="2" > <item row="0" column="2">
<widget class="QPushButton" name="styleButton" > <widget class="QPushButton" name="styleButton">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>28</width> <width>28</width>
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="maximumSize" > <property name="maximumSize">
<size> <size>
<width>28</width> <width>28</width>
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="toolTip" > <property name="toolTip">
<string>&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css"> <string>&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
&lt;/style>&lt;/head>&lt;body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;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&lt;/p>&lt;/body>&lt;/html></string> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Set Chat Window Style&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
<property name="text" > <property name="text">
<string/> <string/>
</property> </property>
<property name="iconSize" > <property name="iconSize">
<size> <size>
<width>24</width> <width>24</width>
<height>24</height> <height>24</height>
@ -298,136 +302,140 @@ p, li { white-space: pre-wrap; }
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="3" > <item row="0" column="3">
<widget class="QPushButton" name="textboldButton" > <widget class="QPushButton" name="textboldButton">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>28</width> <width>28</width>
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="maximumSize" > <property name="maximumSize">
<size> <size>
<width>28</width> <width>28</width>
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="toolTip" > <property name="toolTip">
<string>Bold</string> <string>Bold</string>
</property> </property>
<property name="text" > <property name="text">
<string/> <string/>
</property> </property>
<property name="icon" > <property name="icon">
<iconset>C:/Dokumente und Einstellungen/Linux/.designer/backup</iconset> <iconset>
<normaloff>C:/Dokumente und Einstellungen/Linux/.designer/backup</normaloff>C:/Dokumente und Einstellungen/Linux/.designer/backup</iconset>
</property> </property>
<property name="checkable" > <property name="checkable">
<bool>false</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="4" > <item row="0" column="4">
<widget class="QPushButton" name="textunderlineButton" > <widget class="QPushButton" name="textunderlineButton">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>28</width> <width>28</width>
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="maximumSize" > <property name="maximumSize">
<size> <size>
<width>28</width> <width>28</width>
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="toolTip" > <property name="toolTip">
<string>Underline</string> <string>Underline</string>
</property> </property>
<property name="text" > <property name="text">
<string/> <string/>
</property> </property>
<property name="icon" > <property name="icon">
<iconset>C:/Dokumente und Einstellungen/Linux/.designer/backup</iconset> <iconset>
<normaloff>C:/Dokumente und Einstellungen/Linux/.designer/backup</normaloff>C:/Dokumente und Einstellungen/Linux/.designer/backup</iconset>
</property> </property>
<property name="checkable" > <property name="checkable">
<bool>false</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="5" > <item row="0" column="5">
<widget class="QPushButton" name="textitalicButton" > <widget class="QPushButton" name="textitalicButton">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>28</width> <width>28</width>
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="maximumSize" > <property name="maximumSize">
<size> <size>
<width>28</width> <width>28</width>
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="toolTip" > <property name="toolTip">
<string>Italic</string> <string>Italic</string>
</property> </property>
<property name="text" > <property name="text">
<string/> <string/>
</property> </property>
<property name="icon" > <property name="icon">
<iconset>C:/Dokumente und Einstellungen/Linux/.designer/backup</iconset> <iconset>
<normaloff>C:/Dokumente und Einstellungen/Linux/.designer/backup</normaloff>C:/Dokumente und Einstellungen/Linux/.designer/backup</iconset>
</property> </property>
<property name="checkable" > <property name="checkable">
<bool>false</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="6" > <item row="0" column="6">
<widget class="QPushButton" name="fontButton" > <widget class="QPushButton" name="fontButton">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>28</width> <width>28</width>
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="maximumSize" > <property name="maximumSize">
<size> <size>
<width>28</width> <width>28</width>
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="toolTip" > <property name="toolTip">
<string>Set Font</string> <string>Set Font</string>
</property> </property>
<property name="text" > <property name="text">
<string/> <string/>
</property> </property>
<property name="icon" > <property name="icon">
<iconset>C:/Dokumente und Einstellungen/Linux/.designer/backup</iconset> <iconset>
<normaloff>C:/Dokumente und Einstellungen/Linux/.designer/backup</normaloff>C:/Dokumente und Einstellungen/Linux/.designer/backup</iconset>
</property> </property>
<property name="checkable" > <property name="checkable">
<bool>false</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="7" > <item row="0" column="7">
<widget class="QPushButton" name="colorButton" > <widget class="QPushButton" name="colorButton">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>28</width> <width>28</width>
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="maximumSize" > <property name="maximumSize">
<size> <size>
<width>28</width> <width>28</width>
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="toolTip" > <property name="toolTip">
<string>Text Color</string> <string>Text Color</string>
</property> </property>
<property name="text" > <property name="text">
<string/> <string/>
</property> </property>
</widget> </widget>
@ -435,39 +443,40 @@ p, li { white-space: pre-wrap; }
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="2" column="0" > <item row="2" column="0">
<widget class="QTextEdit" name="chattextEdit" > <widget class="QTextEdit" name="chattextEdit">
<property name="sizePolicy" > <property name="sizePolicy">
<sizepolicy vsizetype="Maximum" hsizetype="Expanding" > <sizepolicy hsizetype="Expanding" vsizetype="Maximum">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0" > <item row="3" column="0">
<layout class="QHBoxLayout" > <layout class="QHBoxLayout">
<property name="leftMargin" > <property name="leftMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="topMargin" > <property name="topMargin">
<number>2</number> <number>2</number>
</property> </property>
<property name="bottomMargin" > <property name="bottomMargin">
<number>2</number> <number>2</number>
</property> </property>
<item> <item>
<widget class="QPushButton" name="addFileButton" > <widget class="QPushButton" name="addFileButton">
<property name="toolTip" > <property name="toolTip">
<string>Add a File for your Friend</string> <string>Add a File for your Friend</string>
</property> </property>
<property name="text" > <property name="text">
<string/> <string/>
</property> </property>
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" >:/images/add-share24.png</iconset> <iconset resource="../images.qrc">
<normaloff>:/images/add-share24.png</normaloff>:/images/add-share24.png</iconset>
</property> </property>
<property name="iconSize" > <property name="iconSize">
<size> <size>
<width>24</width> <width>24</width>
<height>24</height> <height>24</height>
@ -477,10 +486,10 @@ p, li { white-space: pre-wrap; }
</item> </item>
<item> <item>
<spacer> <spacer>
<property name="orientation" > <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="sizeHint" > <property name="sizeHint" stdset="0">
<size> <size>
<width>331</width> <width>331</width>
<height>20</height> <height>20</height>
@ -489,72 +498,73 @@ p, li { white-space: pre-wrap; }
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QPushButton" name="sendButton" > <widget class="QPushButton" name="sendButton">
<property name="text" > <property name="text">
<string>Send</string> <string>Send</string>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</item> </item>
<item row="4" column="0" > <item row="4" column="0">
<layout class="QVBoxLayout" /> <layout class="QVBoxLayout"/>
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QStatusBar" name="statusbar" /> <widget class="QStatusBar" name="statusbar"/>
<widget class="QToolBar" name="toolBar" > <widget class="QToolBar" name="toolBar">
<property name="windowTitle" > <property name="windowTitle">
<string>toolBar</string> <string>toolBar</string>
</property> </property>
<property name="iconSize" > <property name="iconSize">
<size> <size>
<width>24</width> <width>24</width>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<attribute name="toolBarArea" > <attribute name="toolBarArea">
<enum>TopToolBarArea</enum> <enum>TopToolBarArea</enum>
</attribute> </attribute>
<attribute name="toolBarBreak" > <attribute name="toolBarBreak">
<bool>false</bool> <bool>false</bool>
</attribute> </attribute>
<addaction name="actionAvatar" /> <addaction name="actionAvatar"/>
</widget> </widget>
<action name="actionBold" > <action name="actionBold">
<property name="text" > <property name="text">
<string>Bold</string> <string>Bold</string>
</property> </property>
</action> </action>
<action name="actionItalic" > <action name="actionItalic">
<property name="text" > <property name="text">
<string>Italic</string> <string>Italic</string>
</property> </property>
</action> </action>
<action name="actionUnderline" > <action name="actionUnderline">
<property name="text" > <property name="text">
<string>Underline</string> <string>Underline</string>
</property> </property>
</action> </action>
<action name="actionStrike" > <action name="actionStrike">
<property name="text" > <property name="text">
<string>Strike</string> <string>Strike</string>
</property> </property>
</action> </action>
<action name="actionAvatar" > <action name="actionAvatar">
<property name="icon" > <property name="icon">
<iconset resource="../images.qrc" >:/images/add_image24.png</iconset> <iconset resource="../images.qrc">
<normaloff>:/images/add_image24.png</normaloff>:/images/add_image24.png</iconset>
</property> </property>
<property name="text" > <property name="text">
<string>Avatar</string> <string>Avatar</string>
</property> </property>
<property name="toolTip" > <property name="toolTip">
<string>Set your Avatar Picture</string> <string>Set your Avatar Picture</string>
</property> </property>
</action> </action>
</widget> </widget>
<resources> <resources>
<include location="../images.qrc" /> <include location="../images.qrc"/>
</resources> </resources>
<connections/> <connections/>
</ui> </ui>