Scroll the text browser of the PopupChatDialog on first show and on every new chat messsage to the end.

Removed setting "Reopen if closed by user" and flag RS_CHAT_REOPEN.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3788 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2010-11-13 21:53:06 +00:00
parent cb4f44ea39
commit 734301c2bc
10 changed files with 196 additions and 251 deletions

View File

@ -49,8 +49,8 @@ const uint32_t RS_SYSTRAY_GROUP_MSG = 0x0010;
/* CHAT flags are here - so they are in the same place as /* CHAT flags are here - so they are in the same place as
* other Notify flags... not used by libretroshare though * other Notify flags... not used by libretroshare though
*/ */
const uint32_t RS_CHAT_OPEN_NEW = 0x0001; const uint32_t RS_CHAT_OPEN = 0x0001;
const uint32_t RS_CHAT_REOPEN = 0x0002; //const uint32_t free = 0x0002;
const uint32_t RS_CHAT_FOCUS = 0x0004; const uint32_t RS_CHAT_FOCUS = 0x0004;
const uint32_t RS_FEED_TYPE_PEER = 0x0010; const uint32_t RS_FEED_TYPE_PEER = 0x0010;

View File

@ -918,7 +918,7 @@ void MainWindow::trayIconChatClicked(QSystemTrayIcon::ActivationReason e)
PopupChatDialog *pcd = NULL; PopupChatDialog *pcd = NULL;
std::list<std::string> ids; std::list<std::string> ids;
if (rsMsgs->getPrivateChatQueueIds(true, ids) && ids.size()) { if (rsMsgs->getPrivateChatQueueIds(true, ids) && ids.size()) {
pcd = PopupChatDialog::getPrivateChat(ids.front(), RS_CHAT_OPEN_NEW | RS_CHAT_REOPEN | RS_CHAT_FOCUS); pcd = PopupChatDialog::getPrivateChat(ids.front(), RS_CHAT_OPEN | RS_CHAT_FOCUS);
} }
if (pcd == NULL) { if (pcd == NULL) {

View File

@ -1350,7 +1350,7 @@ void PeersDialog::updatePeerStatusString(const QString& peer_id,const QString& s
{ {
if(is_private_chat) if(is_private_chat)
{ {
PopupChatDialog *pcd = PopupChatDialog::getPrivateChat(peer_id.toStdString(), 0); PopupChatDialog *pcd = PopupChatDialog::getExistingInstance(peer_id.toStdString());
if (pcd) { if (pcd) {
pcd->updateStatusString(peer_id, status_string); pcd->updateStatusString(peer_id, status_string);
} }

View File

@ -98,7 +98,9 @@ PopupChatDialog::PopupChatDialog(std::string id, const QString name, QWidget *pa
{ {
/* Invoke Qt Designer generated QObject setup routine */ /* Invoke Qt Designer generated QObject setup routine */
ui.setupUi(this); ui.setupUi(this);
firstShow = true;
Settings->loadWidgetInformation(this); Settings->loadWidgetInformation(this);
this->move(qrand()%100, qrand()%100); //avoid to stack multiple popup chat windows on the same position this->move(qrand()%100, qrand()%100); //avoid to stack multiple popup chat windows on the same position
@ -269,84 +271,48 @@ void PopupChatDialog::processSettings(bool bLoad)
Settings->endGroup(); Settings->endGroup();
} }
/*static*/ PopupChatDialog *PopupChatDialog::getExistingInstance(std::string id)
{
std::map<std::string, PopupChatDialog *>::iterator it;
if (chatDialogs.end() != (it = chatDialogs.find(id))) {
/* exists already */
return it->second;
}
return NULL;
}
/*static*/ PopupChatDialog *PopupChatDialog::getPrivateChat(std::string id, uint chatflags) /*static*/ PopupChatDialog *PopupChatDialog::getPrivateChat(std::string id, uint chatflags)
{ {
/* see if it exists already */ /* see if it exists already */
PopupChatDialog *popupchatdialog = NULL; PopupChatDialog *popupchatdialog = getExistingInstance(id);
bool show = false; if (popupchatdialog) {
if (popupchatdialog->isVisible() == false && (chatflags & RS_CHAT_OPEN) == 0) {
if (chatflags & RS_CHAT_REOPEN) /* Window exists, but is hidden ... don't show it */
{ return popupchatdialog;
show = true; }
#ifdef PEERS_DEBUG } else {
std::cerr << "reopen flag so: enable SHOW popupchatdialog()" << std::endl; if (chatflags & RS_CHAT_OPEN) {
#endif
}
std::map<std::string, PopupChatDialog *>::iterator it;
if (chatDialogs.end() != (it = chatDialogs.find(id)))
{
/* exists already */
popupchatdialog = it->second;
}
else
{
if (chatflags & RS_CHAT_OPEN_NEW)
{
RsPeerDetails sslDetails; RsPeerDetails sslDetails;
if (rsPeers->getPeerDetails(id, sslDetails)) { if (rsPeers->getPeerDetails(id, sslDetails)) {
popupchatdialog = new PopupChatDialog(id, PeerDefs::nameWithLocation(sslDetails)); popupchatdialog = new PopupChatDialog(id, PeerDefs::nameWithLocation(sslDetails));
chatDialogs[id] = popupchatdialog; chatDialogs[id] = popupchatdialog;
#ifdef PEERS_DEBUG
std::cerr << "new chat so: enable SHOW popupchatdialog()" << std::endl;
#endif
show = true;
} }
} }
} }
if (show && popupchatdialog) if (popupchatdialog == NULL) {
{ return NULL;
#ifdef PEERS_DEBUG }
std::cerr << "SHOWING popupchatdialog()" << std::endl;
#endif
if (chatflags & RS_CHAT_FOCUS) {
popupchatdialog->show();
popupchatdialog->getfocus();
} else {
if (popupchatdialog->isVisible() == false) { if (popupchatdialog->isVisible() == false) {
if (chatflags & RS_CHAT_FOCUS) { popupchatdialog->showMinimized();
popupchatdialog->show();
} else {
popupchatdialog->showMinimized();
}
} }
} QApplication::alert(popupchatdialog);
/* now only do these if the window is visible */
if (popupchatdialog && popupchatdialog->isVisible())
{
if (chatflags & RS_CHAT_FOCUS)
{
#ifdef PEERS_DEBUG
std::cerr << "focus chat flag so: GETFOCUS popupchatdialog()" << std::endl;
#endif
popupchatdialog->getfocus();
}
else
{
#ifdef PEERS_DEBUG
std::cerr << "no focus chat flag so: FLASH popupchatdialog()" << std::endl;
#endif
popupchatdialog->flash();
}
}
else
{
#ifdef PEERS_DEBUG
std::cerr << "not visible ... so leave popupchatdialog()" << std::endl;
#endif
} }
return popupchatdialog; return popupchatdialog;
@ -417,14 +383,14 @@ void PopupChatDialog::chatFriend(std::string id)
RsPeerDetails sslDetails; RsPeerDetails sslDetails;
if (rsPeers->getPeerDetails(*it, sslDetails)) { if (rsPeers->getPeerDetails(*it, sslDetails)) {
if (sslDetails.state & RS_PEER_STATE_CONNECTED) { if (sslDetails.state & RS_PEER_STATE_CONNECTED) {
getPrivateChat(*it, RS_CHAT_OPEN_NEW | RS_CHAT_REOPEN | RS_CHAT_FOCUS); getPrivateChat(*it, RS_CHAT_OPEN | RS_CHAT_FOCUS);
return; return;
} }
} }
} }
} else { } else {
if (detail.state & RS_PEER_STATE_CONNECTED) { if (detail.state & RS_PEER_STATE_CONNECTED) {
getPrivateChat(id, RS_CHAT_OPEN_NEW | RS_CHAT_REOPEN | RS_CHAT_FOCUS); getPrivateChat(id, RS_CHAT_OPEN | RS_CHAT_FOCUS);
return; return;
} }
firstId = id; firstId = id;
@ -437,7 +403,7 @@ void PopupChatDialog::chatFriend(std::string id)
MessageComposer::msgFriend(id, false); MessageComposer::msgFriend(id, false);
} else { } else {
if (firstId.empty() == false) { if (firstId.empty() == false) {
getPrivateChat(firstId, RS_CHAT_OPEN_NEW | RS_CHAT_REOPEN | RS_CHAT_FOCUS); getPrivateChat(firstId, RS_CHAT_OPEN | RS_CHAT_FOCUS);
} }
} }
} }
@ -502,42 +468,12 @@ void PopupChatDialog::updateStatusString(const QString& peer_id, const QString&
QTimer::singleShot(5000,this,SLOT(resetStatusBar())) ; QTimer::singleShot(5000,this,SLOT(resetStatusBar())) ;
} }
/**
Overloads the default show() slot so we can set opacity*/
void PopupChatDialog::show()
{
if(!this->isVisible()) {
QMainWindow::show();
} else {
//QMainWindow::activateWindow();
//setWindowState(windowState() & ~Qt::WindowMinimized | Qt::WindowActive);
//QMainWindow::raise();
}
}
void PopupChatDialog::getfocus() void PopupChatDialog::getfocus()
{ {
activateWindow();
QMainWindow::activateWindow(); setWindowState((windowState() & (~Qt::WindowMinimized)) | Qt::WindowActive);
setWindowState((windowState() & (~Qt::WindowMinimized)) | Qt::WindowActive); raise();
QMainWindow::raise(); ui.chattextEdit->setFocus();
}
void PopupChatDialog::flash()
{
if(!this->isVisible()) {
//QMainWindow::show();
} else {
// Want to reduce the interference on other applications.
//QMainWindow::activateWindow();
//setWindowState(windowState() & ~Qt::WindowMinimized | Qt::WindowActive);
//QMainWindow::raise();
}
} }
void PopupChatDialog::showEvent(QShowEvent *event) void PopupChatDialog::showEvent(QShowEvent *event)
@ -545,6 +481,14 @@ void PopupChatDialog::showEvent(QShowEvent *event)
if (m_bInsertOnVisible) { if (m_bInsertOnVisible) {
insertChatMsgs(); insertChatMsgs();
} }
if (firstShow) {
firstShow = false;
// Workaround: now the scroll position is correct calculated
QScrollBar *scrollbar = ui.textBrowser->verticalScrollBar();
scrollbar->setValue(scrollbar->maximum());
}
} }
void PopupChatDialog::closeEvent (QCloseEvent * event) void PopupChatDialog::closeEvent (QCloseEvent * event)
@ -694,6 +638,10 @@ void PopupChatDialog::addChatMsg(bool incoming, const std::string &id, const QSt
ui.textBrowser->append(formatMsg); ui.textBrowser->append(formatMsg);
/* Scroll to the end */
QScrollBar *scrollbar = ui.textBrowser->verticalScrollBar();
scrollbar->setValue(scrollbar->maximum());
resetStatusBar() ; resetStatusBar() ;
} }

View File

@ -43,115 +43,111 @@ public:
enum enumChatType { TYPE_NORMAL, TYPE_HISTORY, TYPE_OFFLINE }; enum enumChatType { TYPE_NORMAL, TYPE_HISTORY, TYPE_OFFLINE };
public: public:
static PopupChatDialog *getPrivateChat(std::string id, uint chatflags); static PopupChatDialog *getExistingInstance(std::string id);
static void cleanupChat(); static PopupChatDialog *getPrivateChat(std::string id, uint chatflags);
static void chatFriend(std::string id); static void cleanupChat();
static void updateAllAvatars(); static void chatFriend(std::string id);
static void privateChatChanged(int list, int type); static void updateAllAvatars();
static void privateChatChanged(int list, int type);
void updatePeerAvatar(const std::string&); void updatePeerAvatar(const std::string&);
public slots: public slots:
/** Overloaded QWidget.show */ void getfocus();
void show(); void pasteLink() ;
void contextMenu(QPoint) ;
void getfocus(); void smileyWidget();
void flash(); void addSmiley();
void pasteLink() ;
void contextMenu(QPoint) ;
void smileyWidget(); void fileHashingFinished(AttachFileItem* file);
void addSmiley();
void fileHashingFinished(AttachFileItem* file); void resetStatusBar() ;
void updateStatusTyping() ;
void updateStatusString(const QString& peer_id, const QString& statusString) ;
void anchorClicked (const QUrl &);
void resetStatusBar() ; void updateStatus(const QString &peer_id, int status);
void updateStatusTyping() ;
void updateStatusString(const QString& peer_id, const QString& statusString) ;
void anchorClicked (const QUrl &);
void updateStatus(const QString &peer_id, int status);
protected: protected:
/** Default constructor */ /** Default constructor */
PopupChatDialog(std::string id, const QString name, QWidget *parent = 0, Qt::WFlags flags = 0); PopupChatDialog(std::string id, const QString name, QWidget *parent = 0, Qt::WFlags flags = 0);
/** Default destructor */ /** Default destructor */
~PopupChatDialog(); ~PopupChatDialog();
void closeEvent (QCloseEvent * event); void closeEvent (QCloseEvent * event);
void showEvent (QShowEvent * event); void showEvent (QShowEvent * event);
virtual void dragEnterEvent(QDragEnterEvent *event); virtual void dragEnterEvent(QDragEnterEvent *event);
virtual void dropEvent(QDropEvent *event); virtual void dropEvent(QDropEvent *event);
bool eventFilter(QObject *obj, QEvent *ev); bool eventFilter(QObject *obj, QEvent *ev);
void insertChatMsgs(); void insertChatMsgs();
void addChatMsg(bool incoming, const std::string &id, const QString &name, const QDateTime &sendTime, const QDateTime &recvTime, const QString &message, enumChatType chatType, bool addToHistory); void addChatMsg(bool incoming, const std::string &id, const QString &name, const QDateTime &sendTime, const QDateTime &recvTime, const QString &message, enumChatType chatType, bool addToHistory);
void updateAvatar(); void updateAvatar();
QPixmap picture; QPixmap picture;
private slots: private slots:
void on_actionMessageHistory_triggered(); void on_actionMessageHistory_triggered();
void addExtraFile(); void addExtraFile();
void addExtraPicture(); void addExtraPicture();
void showAvatarFrame(bool show); void showAvatarFrame(bool show);
void on_closeInfoFrameButton_clicked(); void on_closeInfoFrameButton_clicked();
void setColor(); void setColor();
void getFont(); void getFont();
void setFont(); void setFont();
void sendChat();
void updatePeersCustomStateString(const QString& peer_id, const QString& status_string) ; void sendChat();
void getAvatar();
void on_actionClear_Chat_triggered(); void updatePeersCustomStateString(const QString& peer_id, const QString& status_string) ;
void getAvatar();
bool fileSave(); void on_actionClear_Chat_triggered();
bool fileSaveAs();
void clearOfflineMessages();
bool fileSave();
bool fileSaveAs();
void clearOfflineMessages();
private: private:
void setCurrentFileName(const QString &fileName);
void setCurrentFileName(const QString &fileName); void colorChanged(const QColor &c);
void fontChanged(const QFont &font);
void addAttachment(std::string,int flag);
void processSettings(bool bLoad);
void colorChanged(const QColor &c); void onPrivateChatChanged(int list, int type, bool initial = false);
void fontChanged(const QFont &font);
void addAttachment(std::string,int flag);
void processSettings(bool bLoad);
void onPrivateChatChanged(int list, int type, bool initial = false); QAction *actionTextBold;
QAction *actionTextUnderline;
QAction *actionTextItalic;
QAction *pasteLinkAct ;
QAction *actionTextBold; std::string dialogId;
QAction *actionTextUnderline; QString dialogName;
QAction *actionTextItalic; unsigned int lastChatTime;
QAction *pasteLinkAct ; std::string lastChatName;
std::string dialogId; time_t last_status_send_time ;
QString dialogName; QColor mCurrentColor;
unsigned int lastChatTime; QFont mCurrentFont;
std::string lastChatName;
time_t last_status_send_time ; std::list<ChatInfo> m_savedOfflineChat;
QColor mCurrentColor; QString wholeChat;
QFont mCurrentFont; QString fileName;
std::list<ChatInfo> m_savedOfflineChat; bool m_bInsertOnVisible;
QString wholeChat; IMHistoryKeeper historyKeeper;
QString fileName; ChatStyle style;
bool m_manualDelete;
bool m_bInsertOnVisible; bool firstShow;
IMHistoryKeeper historyKeeper;
ChatStyle style;
bool m_manualDelete;
/** Qt Designer generated object */
Ui::PopupChatDialog ui;
/** Qt Designer generated object */
Ui::PopupChatDialog ui;
}; };
#endif #endif

View File

@ -98,9 +98,7 @@ NotifyPage::save(QString &errmsg)
newsflags |= RS_FEED_TYPE_CHAT; newsflags |= RS_FEED_TYPE_CHAT;
if (ui.chat_NewWindow->isChecked()) if (ui.chat_NewWindow->isChecked())
chatflags |= RS_CHAT_OPEN_NEW; chatflags |= RS_CHAT_OPEN;
if (ui.chat_Reopen->isChecked())
chatflags |= RS_CHAT_REOPEN;
if (ui.chat_Focus->isChecked()) if (ui.chat_Focus->isChecked())
chatflags |= RS_CHAT_FOCUS; chatflags |= RS_CHAT_FOCUS;
@ -150,8 +148,7 @@ void NotifyPage::load()
ui.notify_Messages->setChecked(newsflags & RS_FEED_TYPE_MSG); ui.notify_Messages->setChecked(newsflags & RS_FEED_TYPE_MSG);
ui.notify_Chat->setChecked(newsflags & RS_FEED_TYPE_CHAT); ui.notify_Chat->setChecked(newsflags & RS_FEED_TYPE_CHAT);
ui.chat_NewWindow->setChecked(chatflags & RS_CHAT_OPEN_NEW); ui.chat_NewWindow->setChecked(chatflags & RS_CHAT_OPEN);
ui.chat_Reopen->setChecked(chatflags & RS_CHAT_REOPEN);
ui.chat_Focus->setChecked(chatflags & RS_CHAT_FOCUS); ui.chat_Focus->setChecked(chatflags & RS_CHAT_FOCUS);
ui.systray_GroupChat->setChecked(Settings->getDisplayTrayGroupChat()); ui.systray_GroupChat->setChecked(Settings->getDisplayTrayGroupChat());

View File

@ -667,14 +667,7 @@
<item> <item>
<widget class="QCheckBox" name="chat_NewWindow"> <widget class="QCheckBox" name="chat_NewWindow">
<property name="text"> <property name="text">
<string>Open Window for new Peer Chat</string> <string>Open Window for new chat</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="chat_Reopen">
<property name="text">
<string>Reopen if closed by user:</string>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -119,8 +119,7 @@ void RshareSettings::initSettings()
/* defaults here are not ideal.... but dusent matter */ /* defaults here are not ideal.... but dusent matter */
uint defChat = (RS_CHAT_OPEN_NEW | uint defChat = RS_CHAT_OPEN;
RS_CHAT_REOPEN );
// This is not default... RS_CHAT_FOCUS. // This is not default... RS_CHAT_FOCUS.
uint defNotify = (RS_POPUP_CONNECT | RS_POPUP_MSG | uint defNotify = (RS_POPUP_CONNECT | RS_POPUP_MSG |

View File

@ -630,7 +630,7 @@ p, li { white-space: pre-wrap; }
<translation>Formular</translation> <translation>Formular</translation>
</message> </message>
<message> <message>
<location line="+100"/> <location line="+69"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&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; &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; }
@ -653,7 +653,12 @@ p, li { white-space: pre-wrap; }
<translation>Kanal abbestellen</translation> <translation>Kanal abbestellen</translation>
</message> </message>
<message> <message>
<location line="-20"/> <location line="+85"/>
<source>Comment</source>
<translation type="unfinished">Kommentar</translation>
</message>
<message>
<location line="-105"/>
<source>Remove Item</source> <source>Remove Item</source>
<translation>Beitrag löschen</translation> <translation>Beitrag löschen</translation>
</message> </message>
@ -664,7 +669,7 @@ p, li { white-space: pre-wrap; }
<translation>Erweitern</translation> <translation>Erweitern</translation>
</message> </message>
<message> <message>
<location line="-76"/> <location line="+95"/>
<source>Comments here</source> <source>Comments here</source>
<translation>Kommentare hier</translation> <translation>Kommentare hier</translation>
</message> </message>
@ -4255,7 +4260,7 @@ Fill in your GPG password when asked, to sign your new key.</source>
<context> <context>
<name>GraphWidget</name> <name>GraphWidget</name>
<message> <message>
<location filename="../gui/elastic/graphwidget.cpp" line="+374"/> <location filename="../gui/elastic/graphwidget.cpp" line="+372"/>
<source>Click and drag the nodes around, and zoom with the mouse wheel or the &apos;+&apos; and &apos;-&apos; keys</source> <source>Click and drag the nodes around, and zoom with the mouse wheel or the &apos;+&apos; and &apos;-&apos; keys</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -5319,18 +5324,18 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
<name>MessageComposer</name> <name>MessageComposer</name>
<message> <message>
<location filename="../gui/msgs/MessageComposer.ui" line="+17"/> <location filename="../gui/msgs/MessageComposer.ui" line="+17"/>
<location filename="../gui/msgs/MessageComposer.cpp" line="+730"/> <location filename="../gui/msgs/MessageComposer.cpp" line="+724"/>
<source>Compose</source> <source>Compose</source>
<translation>Verfassen</translation> <translation>Verfassen</translation>
</message> </message>
<message> <message>
<location line="+49"/> <location line="+49"/>
<location line="+823"/> <location line="+840"/>
<source>Contacts</source> <source>Contacts</source>
<translation>Kontakte</translation> <translation>Kontakte</translation>
</message> </message>
<message> <message>
<location line="-808"/> <location line="-825"/>
<source>Search for Name:</source> <source>Search for Name:</source>
<translation>Suche Name:</translation> <translation>Suche Name:</translation>
</message> </message>
@ -5360,12 +5365,12 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
<translation>&gt;&gt; Bcc</translation> <translation>&gt;&gt; Bcc</translation>
</message> </message>
<message> <message>
<location line="+478"/> <location line="+495"/>
<source>Subject:</source> <source>Subject:</source>
<translation>Betreff:</translation> <translation>Betreff:</translation>
</message> </message>
<message> <message>
<location line="-401"/> <location line="-418"/>
<source>Paragraph</source> <source>Paragraph</source>
<translation>Absatz</translation> <translation>Absatz</translation>
</message> </message>
@ -5461,7 +5466,7 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
<translation>Setzt Schriftart auf Codestil</translation> <translation>Setzt Schriftart auf Codestil</translation>
</message> </message>
<message> <message>
<location filename="../gui/msgs/MessageComposer.cpp" line="+529"/> <location filename="../gui/msgs/MessageComposer.cpp" line="+530"/>
<source>To</source> <source>To</source>
<translation>An</translation> <translation>An</translation>
</message> </message>
@ -5476,7 +5481,7 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
<translation>Bcc</translation> <translation>Bcc</translation>
</message> </message>
<message> <message>
<location filename="../gui/msgs/MessageComposer.ui" line="+147"/> <location filename="../gui/msgs/MessageComposer.ui" line="+164"/>
<source>Recommended Files</source> <source>Recommended Files</source>
<translation>Empfohlene Dateien</translation> <translation>Empfohlene Dateien</translation>
</message> </message>
@ -5550,7 +5555,7 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
<translation>Blockquote hinzufügen</translation> <translation>Blockquote hinzufügen</translation>
</message> </message>
<message> <message>
<location filename="../gui/msgs/MessageComposer.cpp" line="-1061"/> <location filename="../gui/msgs/MessageComposer.cpp" line="-1055"/>
<source>&amp;Left</source> <source>&amp;Left</source>
<translation>&amp;Links</translation> <translation>&amp;Links</translation>
</message> </message>
@ -5571,19 +5576,19 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
</message> </message>
<message> <message>
<location line="+206"/> <location line="+206"/>
<location line="+1534"/> <location line="+1521"/>
<source>Save Message</source> <source>Save Message</source>
<translation>Nachricht speichern</translation> <translation>Nachricht speichern</translation>
</message> </message>
<message> <message>
<location line="-1533"/> <location line="-1520"/>
<source>Message has not been Sent. <source>Message has not been Sent.
Do you want to save message to draft box?</source> Do you want to save message to draft box?</source>
<translation>Nachricht wurde noch nicht gesendet. <translation>Nachricht wurde noch nicht gesendet.
Möchtest Du die Nachricht in den Entwürfen speichern?</translation> Möchtest Du die Nachricht in den Entwürfen speichern?</translation>
</message> </message>
<message> <message>
<location line="+573"/> <location line="+559"/>
<source>Re:</source> <source>Re:</source>
<translation>Re:</translation> <translation>Re:</translation>
</message> </message>
@ -5594,17 +5599,17 @@ Möchtest Du die Nachricht in den Entwürfen speichern?</translation>
</message> </message>
<message> <message>
<location line="+75"/> <location line="+75"/>
<location line="+110"/> <location line="+118"/>
<source>RetroShare</source> <source>RetroShare</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location line="-110"/> <location line="-118"/>
<source>Do you want to send the message without a subject ?</source> <source>Do you want to send the message without a subject ?</source>
<translation>Möchtest Du die Nachricht ohne Betreff senden ?</translation> <translation>Möchtest Du die Nachricht ohne Betreff senden ?</translation>
</message> </message>
<message> <message>
<location line="+110"/> <location line="+118"/>
<source>Please insert at least one recipient.</source> <source>Please insert at least one recipient.</source>
<translation>Bitte geben sie mindestens einen Empfänger ein.</translation> <translation>Bitte geben sie mindestens einen Empfänger ein.</translation>
</message> </message>
@ -5619,7 +5624,7 @@ Möchtest Du die Nachricht in den Entwürfen speichern?</translation>
<translation>Unbekannter Freund</translation> <translation>Unbekannter Freund</translation>
</message> </message>
<message> <message>
<location line="+182"/> <location line="+165"/>
<source>&amp;File</source> <source>&amp;File</source>
<translation>&amp;Datei</translation> <translation>&amp;Datei</translation>
</message> </message>
@ -5724,7 +5729,7 @@ Möchtest Du die Nachricht in den Entwürfen speichern?</translation>
<translation>&amp;Format</translation> <translation>&amp;Format</translation>
</message> </message>
<message> <message>
<location line="+247"/> <location line="+257"/>
<source>Open File...</source> <source>Open File...</source>
<translation>Datei öffnen...</translation> <translation>Datei öffnen...</translation>
</message> </message>
@ -5767,17 +5772,17 @@ Willst Du die Nachricht speichern ?</translation>
<translation>Zusätzliche Datei hinzufügen</translation> <translation>Zusätzliche Datei hinzufügen</translation>
</message> </message>
<message> <message>
<location line="-1695"/> <location line="-1682"/>
<source>Friend Recommendation(s)</source> <source>Friend Recommendation(s)</source>
<translation>Freundempfehlung(en)</translation> <translation>Freundempfehlung(en)</translation>
</message> </message>
<message> <message>
<location line="+493"/> <location line="+486"/>
<source>No Title</source> <source>No Title</source>
<translation>Kein Titel</translation> <translation>Kein Titel</translation>
</message> </message>
<message> <message>
<location line="-491"/> <location line="-484"/>
<source>I recommend a good friend of me, you can trust him too when you trust me. &lt;br&gt; Copy friend link and paste to Friends list</source> <source>I recommend a good friend of me, you can trust him too when you trust me. &lt;br&gt; Copy friend link and paste to Friends list</source>
<translation>Ich empfehle Dir einen guten Freund von mir. Du kannst ihm vertrauen, wenn Du mir vertraust. &lt;br&gt; Kopiere den Link und füge ihn in der Freundesliste ein</translation> <translation>Ich empfehle Dir einen guten Freund von mir. Du kannst ihm vertrauen, wenn Du mir vertraust. &lt;br&gt; Kopiere den Link und füge ihn in der Freundesliste ein</translation>
</message> </message>
@ -5867,7 +5872,7 @@ Willst Du die Nachricht speichern ?</translation>
<name>MessagesDialog</name> <name>MessagesDialog</name>
<message> <message>
<location filename="../gui/MessagesDialog.ui" line="+573"/> <location filename="../gui/MessagesDialog.ui" line="+573"/>
<location filename="../gui/MessagesDialog.cpp" line="+669"/> <location filename="../gui/MessagesDialog.cpp" line="+670"/>
<source>New Message</source> <source>New Message</source>
<translation>Neue Nachricht</translation> <translation>Neue Nachricht</translation>
</message> </message>
@ -5975,15 +5980,15 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location line="+177"/> <location line="+177"/>
<location filename="../gui/MessagesDialog.cpp" line="-44"/> <location filename="../gui/MessagesDialog.cpp" line="-44"/>
<location line="+993"/> <location line="+996"/>
<location line="+10"/> <location line="+10"/>
<source>Inbox</source> <source>Inbox</source>
<translation>Posteingang</translation> <translation>Posteingang</translation>
</message> </message>
<message> <message>
<location line="+9"/> <location line="+9"/>
<location filename="../gui/MessagesDialog.cpp" line="-998"/> <location filename="../gui/MessagesDialog.cpp" line="-1001"/>
<location line="+1011"/> <location line="+1014"/>
<location line="+8"/> <location line="+8"/>
<source>Outbox</source> <source>Outbox</source>
<translation>Postausgang</translation> <translation>Postausgang</translation>
@ -5995,7 +6000,7 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location line="+9"/> <location line="+9"/>
<location filename="../gui/MessagesDialog.cpp" line="-1009"/> <location filename="../gui/MessagesDialog.cpp" line="-1012"/>
<source>Sent</source> <source>Sent</source>
<translation>Gesendet</translation> <translation>Gesendet</translation>
</message> </message>
@ -6057,13 +6062,13 @@ p, li { white-space: pre-wrap; }
<translation>Speichern unter...</translation> <translation>Speichern unter...</translation>
</message> </message>
<message> <message>
<location filename="../gui/MessagesDialog.cpp" line="+758"/> <location filename="../gui/MessagesDialog.cpp" line="+761"/>
<source>Print Document</source> <source>Print Document</source>
<translation>Dokument drucken</translation> <translation>Dokument drucken</translation>
</message> </message>
<message> <message>
<location filename="../gui/MessagesDialog.ui" line="-886"/> <location filename="../gui/MessagesDialog.ui" line="-886"/>
<location filename="../gui/MessagesDialog.cpp" line="-1574"/> <location filename="../gui/MessagesDialog.cpp" line="-1577"/>
<source>Subject</source> <source>Subject</source>
<translation>Betreff</translation> <translation>Betreff</translation>
</message> </message>
@ -6132,7 +6137,7 @@ p, li { white-space: pre-wrap; }
<translation>Empfohlene Dateien einblenden</translation> <translation>Empfohlene Dateien einblenden</translation>
</message> </message>
<message> <message>
<location line="+1049"/> <location line="+1052"/>
<source>Save as...</source> <source>Save as...</source>
<translation>Speichern unter...</translation> <translation>Speichern unter...</translation>
</message> </message>
@ -6142,7 +6147,7 @@ p, li { white-space: pre-wrap; }
<translation>HTML-Dateien (*.htm *.html);;Alle Dateien (*)</translation> <translation>HTML-Dateien (*.htm *.html);;Alle Dateien (*)</translation>
</message> </message>
<message> <message>
<location line="-1558"/> <location line="-1561"/>
<location line="+272"/> <location line="+272"/>
<source>Reply to All</source> <source>Reply to All</source>
<translation>Allen antworten</translation> <translation>Allen antworten</translation>
@ -6182,7 +6187,7 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location line="+177"/> <location line="+177"/>
<location filename="../gui/MessagesDialog.cpp" line="+639"/> <location filename="../gui/MessagesDialog.cpp" line="+639"/>
<location line="+1035"/> <location line="+1038"/>
<location line="+5"/> <location line="+5"/>
<source>Trash</source> <source>Trash</source>
<translation>Papierkorb</translation> <translation>Papierkorb</translation>
@ -6198,7 +6203,7 @@ p, li { white-space: pre-wrap; }
<translation>Ordner</translation> <translation>Ordner</translation>
</message> </message>
<message> <message>
<location filename="../gui/MessagesDialog.cpp" line="-1668"/> <location filename="../gui/MessagesDialog.cpp" line="-1671"/>
<source>Remove All Tags</source> <source>Remove All Tags</source>
<translation>Alle Schlagwörter entfernen</translation> <translation>Alle Schlagwörter entfernen</translation>
</message> </message>
@ -6229,13 +6234,13 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location line="+369"/> <location line="+369"/>
<location line="+1026"/> <location line="+1029"/>
<location line="+8"/> <location line="+8"/>
<source>Drafts</source> <source>Drafts</source>
<translation>Entwürfe</translation> <translation>Entwürfe</translation>
</message> </message>
<message> <message>
<location line="-998"/> <location line="-1001"/>
<source>To</source> <source>To</source>
<translation>An</translation> <translation>An</translation>
</message> </message>
@ -6245,7 +6250,7 @@ p, li { white-space: pre-wrap; }
<translation>Editieren...</translation> <translation>Editieren...</translation>
</message> </message>
<message> <message>
<location line="+1424"/> <location line="+1427"/>
<location line="+4"/> <location line="+4"/>
<location line="+4"/> <location line="+4"/>
<location line="+4"/> <location line="+4"/>
@ -6472,7 +6477,7 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>NetworkDialog</name> <name>NetworkDialog</name>
<message> <message>
<location filename="../gui/NetworkDialog.cpp" line="+306"/> <location filename="../gui/NetworkDialog.cpp" line="+312"/>
<location line="+310"/> <location line="+310"/>
<source>Select a pem/pqi File</source> <source>Select a pem/pqi File</source>
<translation>Wählen einer PEM- oder PQI-Datei</translation> <translation>Wählen einer PEM- oder PQI-Datei</translation>
@ -7062,18 +7067,25 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location line="+6"/> <location line="+6"/>
<source>Open Window for new Peer Chat</source> <source>Open Window for new chat</source>
<translation>Öffne Fenster für neuen Peer</translation> <translation>Öffne Fenster für neuen Chat</translation>
</message>
<message>
<source>Open Window for new Peer Chat</source>
<translation type="obsolete">Öffne Fenster für neuen Peer</translation>
</message>
<message>
<source>Reopen if closed by user</source>
<translation type="obsolete">Wiederöffnen, wenn von Benutzer geschlossen</translation>
</message> </message>
<message> <message>
<location line="+7"/>
<source>Reopen if closed by user:</source> <source>Reopen if closed by user:</source>
<translation>Wiederöffnen, wenn von Benutzer geschlossen:</translation> <translation type="obsolete">Wiederöffnen, wenn von Benutzer geschlossen:</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Grab Focus when chat arrives</source> <source>Grab Focus when chat arrives</source>
<translation>Fokus auf neue Chatfenster legen</translation> <translation>Fokus auf neues Chatfenster legen</translation>
</message> </message>
<message> <message>
<location line="+10"/> <location line="+10"/>
@ -7086,7 +7098,7 @@ p, li { white-space: pre-wrap; }
<translation>Zeige Systemabschnitts-Nachricht an</translation> <translation>Zeige Systemabschnitts-Nachricht an</translation>
</message> </message>
<message> <message>
<location line="-129"/> <location line="-122"/>
<source>Add feeds at end</source> <source>Add feeds at end</source>
<translation>Feeds am Ende anfügen</translation> <translation>Feeds am Ende anfügen</translation>
</message> </message>
@ -7974,7 +7986,7 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>PopupChatDialog</name> <name>PopupChatDialog</name>
<message> <message>
<location filename="../gui/chat/PopupChatDialog.cpp" line="+786"/> <location filename="../gui/chat/PopupChatDialog.cpp" line="+745"/>
<source>Hide Avatar</source> <source>Hide Avatar</source>
<translation>Avatar verstecken</translation> <translation>Avatar verstecken</translation>
</message> </message>
@ -8052,7 +8064,7 @@ p, li { white-space: pre-wrap; }
<translation>Deaktiviere Emoticons</translation> <translation>Deaktiviere Emoticons</translation>
</message> </message>
<message> <message>
<location filename="../gui/chat/PopupChatDialog.cpp" line="-1043"/> <location filename="../gui/chat/PopupChatDialog.cpp" line="-1002"/>
<source>Paste retroshare Link</source> <source>Paste retroshare Link</source>
<translation>RetroShare Link einfügen</translation> <translation>RetroShare Link einfügen</translation>
</message> </message>
@ -8072,7 +8084,7 @@ p, li { white-space: pre-wrap; }
<translation>Wähle dein Avatar Bild aus</translation> <translation>Wähle dein Avatar Bild aus</translation>
</message> </message>
<message> <message>
<location filename="../gui/chat/PopupChatDialog.cpp" line="+779"/> <location filename="../gui/chat/PopupChatDialog.cpp" line="+738"/>
<source>Add Extra File</source> <source>Add Extra File</source>
<translation>Zusätzlich eine Datei hinzufügen</translation> <translation>Zusätzlich eine Datei hinzufügen</translation>
</message> </message>
@ -8109,7 +8121,7 @@ p, li { white-space: pre-wrap; }
<translation>Text Datei (*.txt );;Alle Dateien (*)</translation> <translation>Text Datei (*.txt );;Alle Dateien (*)</translation>
</message> </message>
<message> <message>
<location line="-755"/> <location line="-728"/>
<source>Your Friend is offline <source>Your Friend is offline
Do you want to send them a Message instead</source> Do you want to send them a Message instead</source>
<translation>Dein Freund ist Offline willst du ihm stattdessen eine Nachricht senden</translation> <translation>Dein Freund ist Offline willst du ihm stattdessen eine Nachricht senden</translation>
@ -8126,7 +8138,7 @@ Do you want to send them a Message instead</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../gui/chat/PopupChatDialog.cpp" line="+796"/> <location filename="../gui/chat/PopupChatDialog.cpp" line="+769"/>
<source>is Idle and may not reply</source> <source>is Idle and may not reply</source>
<translation>antwortet möglicherweise nicht, da der Status auf &quot;Untätig&quot; gesetzt wurde</translation> <translation>antwortet möglicherweise nicht, da der Status auf &quot;Untätig&quot; gesetzt wurde</translation>
</message> </message>
@ -8146,7 +8158,7 @@ Do you want to send them a Message instead</source>
<translation>ist Offline.</translation> <translation>ist Offline.</translation>
</message> </message>
<message> <message>
<location line="-741"/> <location line="-714"/>
<source>is typing...</source> <source>is typing...</source>
<translation>tippt...</translation> <translation>tippt...</translation>
</message> </message>
@ -8156,12 +8168,12 @@ Do you want to send them a Message instead</source>
<translation>Schliessen</translation> <translation>Schliessen</translation>
</message> </message>
<message> <message>
<location filename="../gui/chat/PopupChatDialog.cpp" line="-334"/> <location filename="../gui/chat/PopupChatDialog.cpp" line="-320"/>
<source>RetroShare</source> <source>RetroShare</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location line="+286"/> <location line="+272"/>
<source>Friend not Online</source> <source>Friend not Online</source>
<translation>Freund ist nicht online</translation> <translation>Freund ist nicht online</translation>
</message> </message>
@ -8733,7 +8745,7 @@ p, li { white-space: pre-wrap; }
<translation>Die Verarbeitung der Links ist noch nicht implementiert. Bitte kopiere den Link stattdessen.</translation> <translation>Die Verarbeitung der Links ist noch nicht implementiert. Bitte kopiere den Link stattdessen.</translation>
</message> </message>
<message> <message>
<location filename="../gui/elastic/node.cpp" line="+317"/> <location filename="../gui/elastic/node.cpp" line="+318"/>
<source>Deny friend</source> <source>Deny friend</source>
<translation type="unfinished">Blockiere Freund</translation> <translation type="unfinished">Blockiere Freund</translation>
</message> </message>