Removed the status column in PeersDialog and added the status to the name column.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3916 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2010-12-15 21:32:44 +00:00
parent 98f471c56b
commit 254e3de187
9 changed files with 174 additions and 104 deletions

View File

@ -127,7 +127,7 @@ MessengerWindow::MessengerWindow(QWidget* parent, Qt::WFlags flags)
#endif // MINIMAL_RSGUI
m_compareRole = new RSTreeWidgetItemCompareRole;
m_compareRole->addRole(COLUMN_NAME, ROLE_SORT);
m_compareRole->setRole(COLUMN_NAME, ROLE_SORT);
connect( ui.messengertreeWidget, SIGNAL( customContextMenuRequested( QPoint ) ), this, SLOT( messengertreeWidgetCostumPopupMenu( QPoint ) ) );
#ifndef MINIMAL_RSGUI

View File

@ -94,16 +94,15 @@
#define IMAGE_NEWSFEED ""
#define IMAGE_NEWSFEED_NEW ":/images/message-state-new.png"
#define COLUMN_COUNT 3
#define COLUMN_COUNT 1
#define COLUMN_NAME 0
#define COLUMN_STATE 1
#define COLUMN_INFO 2
#define COLUMN_DATA 0 // column for storing the userdata id
#define ROLE_SORT Qt::UserRole
#define ROLE_ID Qt::UserRole + 1
#define ROLE_STANDARD Qt::UserRole + 2
#define ROLE_SORT_NAME Qt::UserRole
#define ROLE_SORT_STATUS Qt::UserRole + 1
#define ROLE_ID Qt::UserRole + 2
#define ROLE_STANDARD Qt::UserRole + 3
#define TYPE_GPG 0
#define TYPE_SSL 1
@ -125,8 +124,7 @@ PeersDialog::PeersDialog(QWidget *parent)
groupsHasChanged = false;
m_compareRole = new RSTreeWidgetItemCompareRole;
m_compareRole->addRole(COLUMN_NAME, ROLE_SORT);
m_compareRole->addRole(COLUMN_STATE, ROLE_SORT);
m_compareRole->setRole(COLUMN_NAME, ROLE_SORT_NAME);
connect( ui.peertreeWidget, SIGNAL( customContextMenuRequested( QPoint ) ), this, SLOT( peertreeWidgetCostumPopupMenu( QPoint ) ) );
connect( ui.peertreeWidget, SIGNAL( itemDoubleClicked ( QTreeWidgetItem *, int)), this, SLOT(chatfriend(QTreeWidgetItem *)));
@ -141,7 +139,9 @@ PeersDialog::PeersDialog(QWidget *parent)
connect(ui.actionAdd_Friend, SIGNAL(triggered()), this, SLOT(addFriend()));
connect(ui.action_Hide_Offline_Friends, SIGNAL(triggered()), this, SLOT(insertPeers()));
connect(ui.action_Hide_Status_Column, SIGNAL(triggered()), this, SLOT(statusColumn()));
connect(ui.action_Sort_by_State, SIGNAL(triggered()), this, SLOT(sortByState()));
connect(ui.actionSort_Peers_Ascending_Order, SIGNAL(triggered()), this, SLOT(sortPeersAscendingOrder()));
connect(ui.actionSort_Peers_Descending_Order, SIGNAL(triggered()), this, SLOT(sortPeersDescendingOrder()));
ui.peertabWidget->setTabPosition(QTabWidget::North);
ui.peertabWidget->addTab(new ProfileWidget(), tr("Profile"));
@ -155,16 +155,12 @@ PeersDialog::PeersDialog(QWidget *parent)
connect(newsFeed, SIGNAL(newsFeedChanged(int)), this, SLOT(newsFeedChanged(int)));
ui.peertreeWidget->setColumnCount(4);
ui.peertreeWidget->setColumnHidden ( 3, true);
ui.peertreeWidget->setColumnHidden ( 2, true);
ui.peertreeWidget->sortItems( 0, Qt::AscendingOrder );
ui.peertreeWidget->setColumnCount(COLUMN_COUNT);
ui.peertreeWidget->sortItems(COLUMN_NAME, Qt::AscendingOrder);
// set header text aligment
QTreeWidgetItem * headerItem = ui.peertreeWidget->headerItem();
headerItem->setTextAlignment(COLUMN_NAME, Qt::AlignHCenter | Qt::AlignVCenter);
headerItem->setTextAlignment(COLUMN_STATE, Qt::AlignLeft | Qt::AlignVCenter);
headerItem->setTextAlignment(COLUMN_INFO, Qt::AlignHCenter | Qt::AlignVCenter);
connect(ui.Sendbtn, SIGNAL(clicked()), this, SLOT(sendMsg()));
connect(ui.emoticonBtn, SIGNAL(clicked()), this, SLOT(smileyWidgetgroupchat()));
@ -277,8 +273,9 @@ void PeersDialog::processSettings(bool bLoad)
// state of hideUnconnected
ui.action_Hide_Offline_Friends->setChecked(Settings->value("hideUnconnected", false).toBool());
// state of hideStatusColumn
ui.action_Hide_Status_Column->setChecked(Settings->value("hideStatusColumn", false).toBool());
// state of the status
ui.action_Sort_by_State->setChecked(Settings->value("sortByState", false).toBool());
ui.action_Hide_State->setChecked(Settings->value("hideState", false).toBool());
// state of splitter
ui.splitter->restoreState(Settings->value("Splitter").toByteArray());
@ -292,6 +289,8 @@ void PeersDialog::processSettings(bool bLoad)
openGroups.push_back(Settings->value("open").toString().toStdString());
}
Settings->endArray();
sortByState();
} else {
// save settings
@ -301,8 +300,9 @@ void PeersDialog::processSettings(bool bLoad)
// state of hideUnconnected
Settings->setValue("hideUnconnected", ui.action_Hide_Offline_Friends->isChecked());
// state of hideStatusColumn
Settings->setValue("hideStatusColumn", ui.action_Hide_Status_Column->isChecked());
// state of the status
Settings->setValue("sortByState", ui.action_Sort_by_State->isChecked());
Settings->setValue("hideState", ui.action_Hide_State->isChecked());
// state of splitter
Settings->setValue("Splitter", ui.splitter->saveState());
@ -574,7 +574,8 @@ void PeersDialog::insertPeers()
return;
}
bool bHideUnconnected = ui.action_Hide_Offline_Friends->isChecked();
bool hideUnconnected = ui.action_Hide_Offline_Friends->isChecked();
bool hideState = ui.action_Hide_State->isChecked();
// get ids of existing private chat messages
std::list<std::string> privateChatIds;
@ -811,8 +812,7 @@ void PeersDialog::insertPeers()
availableCount++;
gpgItem->setText(COLUMN_NAME, QString::fromStdString(detail.name));
gpgItem->setData(COLUMN_NAME, ROLE_SORT, "2 " + QString::fromStdString(detail.name));
QString gpgItemText = QString::fromStdString(detail.name);
// remove items that are not friends anymore
int childCount = gpgItem->childCount();
@ -886,13 +886,14 @@ void PeersDialog::insertPeers()
if (customStateString.isEmpty() == false) {
sText += " - " + customStateString;
}
if (hideState == false && sslDetail.autoconnect.empty() == false) {
sText += " [" + QString::fromStdString(sslDetail.autoconnect) + "]";
}
sslItem->setText( COLUMN_NAME, sText);
sslItem->setToolTip( COLUMN_NAME, sText);
/* not displayed, used to find back the item */
sslItem->setText(COLUMN_STATE, QString::fromStdString(sslDetail.autoconnect));
// sort location
sslItem->setData(COLUMN_STATE, ROLE_SORT, sText);
sslItem->setData(COLUMN_NAME, ROLE_SORT_STATUS, sText);
/* change color and icon */
QIcon sslIcon;
@ -907,13 +908,13 @@ void PeersDialog::insertPeers()
sslFont.setBold(true);
sslColor = Qt::darkBlue;
} else if (sslDetail.state & RS_PEER_STATE_ONLINE) {
sslItem->setHidden(bHideUnconnected);
sslItem->setHidden(hideUnconnected);
gpg_online = true;
sslFont.setBold(true);
sslColor = Qt::black;
} else {
sslItem->setHidden(bHideUnconnected);
sslItem->setHidden(hideUnconnected);
if (sslDetail.autoconnect != "Offline") {
sslIcon = QIcon(":/images/connect_creating.png");
} else {
@ -959,8 +960,6 @@ void PeersDialog::insertPeers()
int peerState = 0;
gpgItem->setText(COLUMN_INFO, StatusDefs::name(it->status));
switch (it->status) {
case RS_STATUS_INACTIVE:
peerState = PEER_STATE_INACTIVE;
@ -1012,15 +1011,19 @@ void PeersDialog::insertPeers()
gpgIcon = QIcon(StatusDefs::imageUser(bestRSState));
gpgItem->setText(COLUMN_STATE, StatusDefs::name(bestRSState));
gpgItem->setToolTip(COLUMN_NAME, StatusDefs::tooltip(bestRSState));
gpgItem->setData(COLUMN_STATE, ROLE_SORT, BuildStateSortString(true, gpgItem->text(COLUMN_NAME), bestPeerState));
gpgItem->setData(COLUMN_NAME, ROLE_SORT_STATUS, BuildStateSortString(true, gpgItemText, bestPeerState));
if (hideState == false) {
gpgItemText += " [" + StatusDefs::name(bestRSState) + "]";
}
} else if (gpg_online) {
onlineCount++;
gpgItem->setHidden(bHideUnconnected);
gpgItem->setHidden(hideUnconnected);
gpgIcon = QIcon(IMAGE_AVAILABLE);
gpgItem->setText(COLUMN_STATE, tr("Available"));
gpgItem->setData(COLUMN_STATE, ROLE_SORT, BuildStateSortString(true, gpgItem->text(COLUMN_NAME), PEER_STATE_AVAILABLE));
gpgItem->setData(COLUMN_NAME, ROLE_SORT_STATUS, BuildStateSortString(true, gpgItemText, PEER_STATE_AVAILABLE));
if (hideState == false) {
gpgItemText += " [" + tr("Available") + "]";
}
QFont font;
font.setBold(true);
@ -1029,10 +1032,12 @@ void PeersDialog::insertPeers()
gpgItem->setFont(i,font);
}
} else {
gpgItem->setHidden(bHideUnconnected);
gpgItem->setHidden(hideUnconnected);
gpgIcon = QIcon(StatusDefs::imageUser(RS_STATUS_OFFLINE));
gpgItem->setText(COLUMN_STATE, StatusDefs::name(RS_STATUS_OFFLINE));
gpgItem->setData(COLUMN_STATE, ROLE_SORT, BuildStateSortString(true, gpgItem->text(COLUMN_NAME), PEER_STATE_OFFLINE));
gpgItem->setData(COLUMN_NAME, ROLE_SORT_STATUS, BuildStateSortString(true, gpgItemText, PEER_STATE_OFFLINE));
if (hideState == false) {
gpgItemText += " [" + StatusDefs::name(RS_STATUS_OFFLINE) + "]";
}
QColor textColor = StatusDefs::textColor(RS_STATUS_OFFLINE);
QFont font = StatusDefs::font(RS_STATUS_OFFLINE);
@ -1046,6 +1051,8 @@ void PeersDialog::insertPeers()
gpgIcon = QIcon(":/images/chat.png");
}
gpgItem->setText(COLUMN_NAME, gpgItemText);
gpgItem->setData(COLUMN_NAME, ROLE_SORT_NAME, "2 " + gpgItemText);
gpgItem->setIcon(COLUMN_NAME, gpgIcon);
}
@ -1057,7 +1064,7 @@ void PeersDialog::insertPeers()
QString groupName = GroupDefs::name(*groupInfo);
groupItem->setText(COLUMN_NAME, QString("%1 (%2/%3)").arg(groupName).arg(onlineCount).arg(availableCount));
// show first the standard groups, than the user groups
groupItem->setData(COLUMN_NAME, ROLE_SORT, ((groupInfo->flag & RS_GROUP_FLAG_STANDARD) ? "0 " : "1 ") + groupName);
groupItem->setData(COLUMN_NAME, ROLE_SORT_NAME, ((groupInfo->flag & RS_GROUP_FLAG_STANDARD) ? "0 " : "1 ") + groupName);
}
}
@ -1979,28 +1986,32 @@ void PeersDialog::displayMenu()
{
QMenu *displaymenu = new QMenu();
displaymenu->addAction(ui.actionSort_Peers_Descending_Order);
displaymenu->addAction(ui.actionSort_Peers_Ascending_Order);
displaymenu->addAction(ui.action_Hide_Offline_Friends);
displaymenu->addAction(ui.action_Hide_Status_Column);
displaymenu->addAction(ui.action_Sort_by_State);
displaymenu->addAction(ui.action_Hide_State);
ui.displayButton->setMenu(displaymenu);
}
void PeersDialog::statusColumn()
void PeersDialog::sortByState()
{
/* Set header resize modes and initial section sizes */
QHeaderView * peerheader = ui.peertreeWidget->header();
if(ui.action_Hide_Status_Column->isChecked())
{
ui.peertreeWidget->setColumnHidden ( 1, true);
peerheader->resizeSection ( 0, 200 );
}
else
{
ui.peertreeWidget->setColumnHidden ( 1, false);
peerheader->resizeSection ( 0, 200 );
if(ui.action_Sort_by_State->isChecked()) {
m_compareRole->setRole(COLUMN_NAME, ROLE_SORT_STATUS);
} else {
m_compareRole->setRole(COLUMN_NAME, ROLE_SORT_NAME);
}
}
void PeersDialog::sortPeersAscendingOrder()
{
ui.peertreeWidget->sortByColumn(COLUMN_NAME, Qt::AscendingOrder);
}
void PeersDialog::sortPeersDescendingOrder()
{
ui.peertreeWidget->sortByColumn(COLUMN_NAME, Qt::DescendingOrder);
}
void PeersDialog::on_actionMessageHistory_triggered()

View File

@ -32,8 +32,8 @@
// states for sorting (equal values are possible)
// used in BuildSortString - state + name
#define PEER_STATE_ONLINE 1
#define PEER_STATE_AWAY 2
#define PEER_STATE_BUSY 3
#define PEER_STATE_BUSY 2
#define PEER_STATE_AWAY 3
#define PEER_STATE_AVAILABLE 4
#define PEER_STATE_INACTIVE 5
#define PEER_STATE_OFFLINE 6
@ -161,8 +161,9 @@ private slots:
void setCurrentFileName(const QString &fileName);
void displayMenu();
void statusColumn();
void sortByState();
void sortPeersAscendingOrder();
void sortPeersDescendingOrder();
void newsFeedChanged(int count);
@ -184,6 +185,7 @@ private:
RSTreeWidgetItemCompareRole *m_compareRole;
void displayMenu();
///play the sound when recv a message
void playsound();

View File

@ -718,22 +718,23 @@ background: white;}</string>
<property name="expandsOnDoubleClick">
<bool>false</bool>
</property>
<attribute name="headerVisible">
<bool>false</bool>
</attribute>
<attribute name="headerDefaultSectionSize">
<number>200</number>
</attribute>
<attribute name="headerDefaultSectionSize">
<number>200</number>
</attribute>
<attribute name="headerVisible">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Friends</string>
</property>
</column>
<column>
<property name="text">
<string>Status</string>
</property>
</column>
</widget>
</item>
</layout>
@ -1497,12 +1498,23 @@ p, li { white-space: pre-wrap; }
<string>Hide Offline Friends</string>
</property>
</action>
<action name="action_Hide_Status_Column">
<action name="action_Sort_by_State">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Hide Status Column</string>
<string>Sort by State</string>
</property>
<property name="toolTip">
<string>Sort by State</string>
</property>
</action>
<action name="action_Hide_State">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Hide State</string>
</property>
</action>
<action name="actionAdd_Group">
@ -1517,6 +1529,30 @@ p, li { white-space: pre-wrap; }
<string>Add a new Group</string>
</property>
</action>
<action name="actionSort_Peers_Descending_Order">
<property name="icon">
<iconset resource="images.qrc">
<normaloff>:/images/sort_decrease.png</normaloff>:/images/sort_decrease.png</iconset>
</property>
<property name="text">
<string>Sort Descending Order</string>
</property>
<property name="toolTip">
<string>Sort Descending Order</string>
</property>
</action>
<action name="actionSort_Peers_Ascending_Order">
<property name="icon">
<iconset resource="images.qrc">
<normaloff>:/images/sort_incr.png</normaloff>:/images/sort_incr.png</iconset>
</property>
<property name="text">
<string>Sort Ascending Order</string>
</property>
<property name="toolTip">
<string>Sort Ascending Order</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>

View File

@ -25,7 +25,7 @@ RSTreeWidgetItemCompareRole::RSTreeWidgetItemCompareRole()
{
}
void RSTreeWidgetItemCompareRole::addRole(int column, int role)
void RSTreeWidgetItemCompareRole::setRole(int column, int role)
{
insert(column, role);
}

View File

@ -31,7 +31,7 @@ class RSTreeWidgetItemCompareRole : QMap<int, int>
public:
RSTreeWidgetItemCompareRole();
void addRole(int column, int role);
void setRole(int column, int role);
int findRole(const int column) const;
};

View File

@ -117,7 +117,7 @@ MessageComposer::MessageComposer(QWidget *parent, Qt::WFlags flags)
setupInsertActions();
m_compareRole = new RSTreeWidgetItemCompareRole;
m_compareRole->addRole(COLUMN_CONTACT_NAME, ROLE_CONTACT_SORT);
m_compareRole->setRole(COLUMN_CONTACT_NAME, ROLE_CONTACT_SORT);
m_completer = NULL;

View File

@ -4231,7 +4231,7 @@ Fill in your GPG password when asked, to sign your new key.</source>
<context>
<name>GeneralPage</name>
<message>
<location filename="../gui/settings/GeneralPage.ui" line="+588"/>
<location filename="../gui/settings/GeneralPage.ui" line="+582"/>
<source>Auto Login</source>
<translation>Automatische Anmeldung</translation>
</message>
@ -6467,7 +6467,7 @@ p, li { white-space: pre-wrap; }
<translation>Zertifikate (*.pqi)</translation>
</message>
<message>
<location filename="../gui/MessengerWindow.ui" line="+67"/>
<location filename="../gui/MessengerWindow.ui" line="+64"/>
<source>Click to Change your Avatar</source>
<translation>Klick zum Ändern deines Avatars</translation>
</message>
@ -6482,12 +6482,12 @@ p, li { white-space: pre-wrap; }
<translation>Ordner für deine Freunde freigeben</translation>
</message>
<message>
<location line="+111"/>
<location line="+69"/>
<source>Search Friends</source>
<translation>Suche Freunde</translation>
</message>
<message>
<location line="+102"/>
<location line="+131"/>
<location line="+3"/>
<source>Sort Descending Order</source>
<translation>Absteigend sortieren</translation>
@ -6514,12 +6514,12 @@ p, li { white-space: pre-wrap; }
<translation>Verstecke offline Freunde</translation>
</message>
<message>
<location line="-112"/>
<location line="-141"/>
<source>Reset</source>
<translation>Zurücksetzen</translation>
</message>
<message>
<location line="+120"/>
<location line="+149"/>
<source>Sort by State</source>
<translation>Sortiere nach Status</translation>
</message>
@ -6529,7 +6529,7 @@ p, li { white-space: pre-wrap; }
<translation>Freund weiterempfehlen...</translation>
</message>
<message>
<location filename="../gui/MessengerWindow.ui" line="-474"/>
<location filename="../gui/MessengerWindow.ui" line="-458"/>
<source>RetroShare Messenger</source>
<translation></translation>
</message>
@ -7348,12 +7348,12 @@ p, li { white-space: pre-wrap; }
<context>
<name>PeersDialog</name>
<message>
<location filename="../gui/PeersDialog.cpp" line="+432"/>
<location filename="../gui/PeersDialog.cpp" line="+431"/>
<source>Chat</source>
<translation>Chat</translation>
</message>
<message>
<location line="+675"/>
<location line="+682"/>
<source>Save Certificate</source>
<translation>Zertifikat speichern</translation>
</message>
@ -7363,22 +7363,21 @@ p, li { white-space: pre-wrap; }
<translation>Zertifikate (*.pqi)</translation>
</message>
<message>
<location filename="../gui/PeersDialog.ui" line="+734"/>
<source>Status</source>
<translation>Status</translation>
<translation type="obsolete">Status</translation>
</message>
<message>
<location filename="../gui/PeersDialog.cpp" line="-662"/>
<location line="-669"/>
<source>Connect To Friend</source>
<translation>Verbinde zum Freund</translation>
</message>
<message>
<location line="-298"/>
<location line="-296"/>
<source>Profile</source>
<translation>Profil</translation>
</message>
<message>
<location line="+44"/>
<location line="+40"/>
<source>Welcome to RetroShare&apos;s group chat.</source>
<translation>Willkommen bei RetroShare&apos;s Gruppenchat.</translation>
</message>
@ -7388,7 +7387,7 @@ p, li { white-space: pre-wrap; }
<translation>ich</translation>
</message>
<message>
<location line="+152"/>
<location line="+154"/>
<source>Group</source>
<translation>Gruppe</translation>
</message>
@ -7468,12 +7467,12 @@ p, li { white-space: pre-wrap; }
<translation>Aus allen Gruppen entfernen</translation>
</message>
<message>
<location line="+504"/>
<location line="+507"/>
<source>Available</source>
<translation>Verfügbar</translation>
</message>
<message>
<location line="+419"/>
<location line="+423"/>
<location line="+2"/>
<source>New group chat</source>
<translation>Neuer Gruppenchat</translation>
@ -7510,7 +7509,7 @@ p, li { white-space: pre-wrap; }
<translation>Ordner können nicht für Drag&apos;n&apos;Drop genutzt werden. Nur Dateien werden akzeptiert.</translation>
</message>
<message>
<location filename="../gui/PeersDialog.ui" line="+438"/>
<location filename="../gui/PeersDialog.ui" line="+1173"/>
<source>Italic</source>
<translation>Kursiv</translation>
</message>
@ -7520,7 +7519,7 @@ p, li { white-space: pre-wrap; }
<translation>Unterstrichen</translation>
</message>
<message>
<location line="-590"/>
<location line="-591"/>
<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;
p, li { white-space: pre-wrap; }
@ -7538,7 +7537,7 @@ p, li { white-space: pre-wrap; }
<translation>Hinzufügen</translation>
</message>
<message>
<location line="+240"/>
<location line="+241"/>
<source>Add or Change your Avatar</source>
<translation>Wähle oder ändere dein Avatar Bild</translation>
</message>
@ -7595,14 +7594,37 @@ p, li { white-space: pre-wrap; }
<translation>Statusnachricht ändern</translation>
</message>
<message>
<location line="+41"/>
<location line="+32"/>
<location line="+3"/>
<source>Sort by State</source>
<translation>Sortiere nach Status</translation>
</message>
<message>
<location line="+8"/>
<source>Hide State</source>
<translation type="unfinished">Status ausblenden</translation>
</message>
<message>
<location line="+9"/>
<location line="+3"/>
<source>Add a new Group</source>
<translation>Neue Gruppe hinzufügen</translation>
</message>
<message>
<location line="-107"/>
<location filename="../gui/PeersDialog.cpp" line="-1472"/>
<location line="+9"/>
<location line="+3"/>
<source>Sort Descending Order</source>
<translation>Absteigend sortieren</translation>
</message>
<message>
<location line="+9"/>
<location line="+3"/>
<source>Sort Ascending Order</source>
<translation>Aufsteigend sortieren</translation>
</message>
<message>
<location line="-142"/>
<location filename="../gui/PeersDialog.cpp" line="-1479"/>
<source>Add Friend</source>
<translation>Freund hinzufügen</translation>
</message>
@ -7657,12 +7679,12 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../gui/PeersDialog.cpp" line="-40"/>
<location line="+843"/>
<location line="+850"/>
<source>RetroShare</source>
<translation></translation>
</message>
<message>
<location line="-804"/>
<location line="-811"/>
<source>Message Group</source>
<translation>Gruppe anschreiben</translation>
</message>
@ -7677,7 +7699,7 @@ p, li { white-space: pre-wrap; }
<translation>Gruppe entfernen</translation>
</message>
<message>
<location line="+796"/>
<location line="+803"/>
<source>Do you want to remove this Friend?</source>
<translation>Willst du diesen Freund entfernen?</translation>
</message>
@ -7692,7 +7714,7 @@ p, li { white-space: pre-wrap; }
<translation>Text Datei (*.txt );;Alle Dateien (*)</translation>
</message>
<message>
<location filename="../gui/PeersDialog.ui" line="-878"/>
<location filename="../gui/PeersDialog.ui" line="-879"/>
<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;
p, li { white-space: pre-wrap; }
@ -7705,27 +7727,26 @@ p, li { white-space: pre-wrap; }
&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;&lt;span style=&quot; font-size:8pt;&quot;&gt;Anzeige&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location line="+886"/>
<location line="+887"/>
<source>Hide Offline Friends</source>
<translation>Verstecke offline Freunde</translation>
</message>
<message>
<location line="+8"/>
<source>Hide Status Column</source>
<translation>Status Spalte ausblenden</translation>
<translation type="obsolete">Status Spalte ausblenden</translation>
</message>
<message>
<location filename="../gui/PeersDialog.cpp" line="-1798"/>
<location filename="../gui/PeersDialog.cpp" line="-1803"/>
<source>Friends Storm</source>
<translation>Aktivitäten</translation>
</message>
<message>
<location line="+1157"/>
<location line="+1162"/>
<source>is typing...</source>
<translation>tippt...</translation>
</message>
<message>
<location filename="../gui/PeersDialog.ui" line="-27"/>
<location filename="../gui/PeersDialog.ui" line="-19"/>
<source>Browse Message History</source>
<translation>Nachrichtenverlauf anzeigen</translation>
</message>
@ -7735,12 +7756,12 @@ p, li { white-space: pre-wrap; }
<translation>Nachrichtenverlauf</translation>
</message>
<message>
<location line="-752"/>
<location line="-747"/>
<source>Friends</source>
<translation>Freunde</translation>
</message>
<message>
<location filename="../gui/PeersDialog.cpp" line="-859"/>
<location filename="../gui/PeersDialog.cpp" line="-866"/>
<location line="+80"/>
<source>Paste Friend Link</source>
<translation>RetroShare Link einfügen</translation>
@ -8989,7 +9010,7 @@ p, li { white-space: pre-wrap; }
<translation>Fertigstellen</translation>
</message>
<message>
<location filename="../gui/QuickStartWizard.cpp" line="+202"/>
<location filename="../gui/QuickStartWizard.cpp" line="+205"/>
<source>Select A Folder To Share</source>
<translation>Wählen Sie ein Ordner zum Freigeben</translation>
</message>