From 0fbada0ebaa38ba9b78e74237e4766f90b7ab012 Mon Sep 17 00:00:00 2001 From: thunder2 Date: Fri, 12 Aug 2011 20:27:05 +0000 Subject: [PATCH] Applied patch from AsamK and fixed german translation. Reduced code duplication with avatar picture loading, by creating two new functions that handle image choosing and thumbnail creation. two new functions: bool misc::getOpenAvatarPicture(QWidget *parent, QByteArray &image_data) QPixmap misc::getOpenThumbnailedPicture(QWidget *parent, const QString &caption, int width, int height) getOpenThumbnailedPicture opens a QFileDialog to let the user choose a picture file. This picture is converted to a thumbnail and returned as a QPixmap. getOpenAvatarPicture calls getOpenThumbnailedPicture and converts the result to a PNG byte array. All three avatar loading functions now call getOpenAvatarPicture Furthermore Channel Logo and Channel Msg thumbnail functions now use getOpenThumbnailedPicture git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4561 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- retroshare-gui/src/gui/FriendsDialog.cpp | 30 +- retroshare-gui/src/gui/FriendsDialog.h | 3 +- retroshare-gui/src/gui/MessengerWindow.cpp | 30 +- retroshare-gui/src/gui/MessengerWindow.h | 3 +- .../src/gui/channels/CreateChannel.cpp | 17 +- .../src/gui/channels/CreateChannelMsg.cpp | 23 +- .../src/gui/channels/EditChanDetails.cpp | 17 +- .../src/gui/chat/PopupChatWindow.cpp | 17 +- retroshare-gui/src/lang/retroshare_de.qm | Bin 327465 -> 328064 bytes retroshare-gui/src/lang/retroshare_de.ts | 697 +++++++++++++++--- retroshare-gui/src/util/misc.cpp | 39 + retroshare-gui/src/util/misc.h | 2 + 12 files changed, 666 insertions(+), 212 deletions(-) diff --git a/retroshare-gui/src/gui/FriendsDialog.cpp b/retroshare-gui/src/gui/FriendsDialog.cpp index 113b5d412..46fb4f948 100644 --- a/retroshare-gui/src/gui/FriendsDialog.cpp +++ b/retroshare-gui/src/gui/FriendsDialog.cpp @@ -1810,39 +1810,17 @@ void FriendsDialog::updateAvatar() void FriendsDialog::getAvatar() { - QString fileName; - if (misc::getOpenFileName(this, RshareSettings::LASTDIR_IMAGES, tr("Load File"), tr("Pictures (*.png *.xpm *.jpg *.tiff *.gif)"), fileName)) + QByteArray ba; + if (misc::getOpenAvatarPicture(this, ba)) { - QPixmap picture; - picture = QPixmap(fileName).scaled(96,96, Qt::IgnoreAspectRatio,Qt::SmoothTransformation); - #ifdef FRIENDS_DEBUG - std::cerr << "Sending avatar image down the pipe" << std::endl ; + std::cerr << "Avatar image size = " << ba.size() << std::endl ; #endif - // send avatar down the pipe for other peers to get it. - QByteArray ba; - QBuffer buffer(&ba); - buffer.open(QIODevice::WriteOnly); - picture.save(&buffer, "PNG"); // writes image into ba in PNG format - -#ifdef FRIENDS_DEBUG - std::cerr << "Image size = " << ba.size() << std::endl ; -#endif - - rsMsgs->setOwnAvatarData((unsigned char *)(ba.data()),ba.size()) ; // last char 0 included. - - // I suppressed this because it gets called already by rsMsgs->setOwnAvatarData() through a Qt notification signal - //updateAvatar() ; + rsMsgs->setOwnAvatarData((unsigned char *)(ba.data()), ba.size()) ; // last char 0 included. } } -void FriendsDialog::changeAvatarClicked() -{ - - updateAvatar(); -} - void FriendsDialog::on_actionCreate_New_Forum_activated() { MainWindow::activatePage (MainWindow::Forums); diff --git a/retroshare-gui/src/gui/FriendsDialog.h b/retroshare-gui/src/gui/FriendsDialog.h index 21fd42b44..e6d96e1a6 100644 --- a/retroshare-gui/src/gui/FriendsDialog.h +++ b/retroshare-gui/src/gui/FriendsDialog.h @@ -145,7 +145,6 @@ private slots: void setFont(); void getFont(); - void changeAvatarClicked(); void getAvatar(); void updateOwnStatus(const QString &peer_id, int status); @@ -222,4 +221,4 @@ private: #endif // MINIMAL_RSGUI -#endif +#endif \ No newline at end of file diff --git a/retroshare-gui/src/gui/MessengerWindow.cpp b/retroshare-gui/src/gui/MessengerWindow.cpp index e16959700..d412fbb6c 100644 --- a/retroshare-gui/src/gui/MessengerWindow.cpp +++ b/retroshare-gui/src/gui/MessengerWindow.cpp @@ -23,7 +23,6 @@ #include #include #include -#include #include "common/vmessagebox.h" #include "common/StatusDefs.h" @@ -51,6 +50,7 @@ #include "util/PixmapMerging.h" #include "LogoBar.h" #include "util/Widget.h" +#include "util/misc.h" #include "settings/rsharesettings.h" #include "common/RSTreeWidgetItem.h" @@ -1085,11 +1085,6 @@ void MessengerWindow::sendMessage() MessageComposer::msgFriend(id, false); } -void MessengerWindow::changeAvatarClicked() -{ - updateAvatar(); -} - void MessengerWindow::updateAvatar() { unsigned char *data = NULL; @@ -1112,24 +1107,13 @@ void MessengerWindow::updateAvatar() void MessengerWindow::getAvatar() { - QString fileName = QFileDialog::getOpenFileName(this, "Load File", QDir::homePath(), "Pictures (*.png *.xpm *.jpg)"); - if(!fileName.isEmpty()) + QByteArray ba; + if (misc::getOpenAvatarPicture(this, ba)) { - picture = QPixmap(fileName).scaled(96,96, Qt::IgnoreAspectRatio,Qt::SmoothTransformation); - - std::cerr << "Sending avatar image down the pipe" << std::endl ; - - // send avatar down the pipe for other peers to get it. - QByteArray ba; - QBuffer buffer(&ba); - buffer.open(QIODevice::WriteOnly); - picture.save(&buffer, "PNG"); // writes image into ba in PNG format - - std::cerr << "Image size = " << ba.size() << std::endl ; - - rsMsgs->setOwnAvatarData((unsigned char *)(ba.data()),ba.size()) ; // last char 0 included. - - updateAvatar() ; +#ifdef MSG_DEBUG + std::cerr << "Avatar image size = " << ba.size() << std::endl ; +#endif + rsMsgs->setOwnAvatarData((unsigned char *)(ba.data()), ba.size()) ; // last char 0 included. } } diff --git a/retroshare-gui/src/gui/MessengerWindow.h b/retroshare-gui/src/gui/MessengerWindow.h index b75f1042f..56de22122 100644 --- a/retroshare-gui/src/gui/MessengerWindow.h +++ b/retroshare-gui/src/gui/MessengerWindow.h @@ -91,7 +91,6 @@ private slots: /** get own last stored Avatar**/ void getAvatar(); - void changeAvatarClicked(); void updateOwnStatus(const QString &peer_id, int status); void savestatusmessage(); @@ -138,4 +137,4 @@ private: Ui::MessengerWindow ui; }; -#endif +#endif \ No newline at end of file diff --git a/retroshare-gui/src/gui/channels/CreateChannel.cpp b/retroshare-gui/src/gui/channels/CreateChannel.cpp index b68e58036..b20cbb825 100644 --- a/retroshare-gui/src/gui/channels/CreateChannel.cpp +++ b/retroshare-gui/src/gui/channels/CreateChannel.cpp @@ -241,14 +241,15 @@ void CreateChannel::cancelChannel() return; } -void CreateChannel::addChannelLogo() +void CreateChannel::addChannelLogo() // the same function as in EditChanDetails { - QString fileName; - if (misc::getOpenFileName(this, RshareSettings::LASTDIR_IMAGES, tr("Load File"), tr("Pictures (*.png *.xpm *.jpg)"), fileName)) - { - picture = QPixmap(fileName).scaled(64,64, Qt::IgnoreAspectRatio,Qt::SmoothTransformation); + QPixmap img = misc::getOpenThumbnailedPicture(this, tr("Load channel logo"), 64, 64); - // to show the selected - ui.ChannelLogoButton->setIcon(picture); - } + if (img.isNull()) + return; + + picture = img; + + // to show the selected + ui.ChannelLogoButton->setIcon(picture); } diff --git a/retroshare-gui/src/gui/channels/CreateChannelMsg.cpp b/retroshare-gui/src/gui/channels/CreateChannelMsg.cpp index d7f4013c2..e4d8c2482 100644 --- a/retroshare-gui/src/gui/channels/CreateChannelMsg.cpp +++ b/retroshare-gui/src/gui/channels/CreateChannelMsg.cpp @@ -571,24 +571,13 @@ void CreateChannelMsg::sendMessage(std::wstring subject, std::wstring msg, std:: void CreateChannelMsg::addThumbnail() { - QString fileName; - if (misc::getOpenFileName(this, RshareSettings::LASTDIR_IMAGES, tr("Load File"), tr("Pictures (*.png *.xpm *.jpg)"), fileName)) - { - picture = QPixmap(fileName).scaled(156,107, Qt::IgnoreAspectRatio,Qt::SmoothTransformation); - - // to show the selected - thumbnail_label->setPixmap(picture); + QPixmap img = misc::getOpenThumbnailedPicture(this, tr("Load thumbnail picture"), 156, 107); - std::cerr << "Sending Thumbnail image down the pipe" << std::endl ; + if (img.isNull()) + return; - // send Thumbnail down the pipe for other peers to get it. - QByteArray ba; - QBuffer buffer(&ba); - buffer.open(QIODevice::WriteOnly); - picture.save(&buffer, "PNG"); // writes image into ba in PNG format + picture = img; - std::cerr << "Image size = " << ba.size() << std::endl ; - - //updateThumbnail() ; - } + // to show the selected + thumbnail_label->setPixmap(picture); } diff --git a/retroshare-gui/src/gui/channels/EditChanDetails.cpp b/retroshare-gui/src/gui/channels/EditChanDetails.cpp index ae4cfc375..2a655ceef 100644 --- a/retroshare-gui/src/gui/channels/EditChanDetails.cpp +++ b/retroshare-gui/src/gui/channels/EditChanDetails.cpp @@ -135,15 +135,16 @@ void EditChanDetails::applyDialog() } -void EditChanDetails::addChannelLogo() +void EditChanDetails::addChannelLogo() // the same function as in CreateChannel { - QString fileName = QFileDialog::getOpenFileName(this, tr("Load File"), QDir::homePath(), tr("Pictures (*.png *.xpm *.jpg)")); - if(!fileName.isEmpty()) - { - picture = QPixmap(fileName).scaled(64,64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + QPixmap img = misc::getOpenThumbnailedPicture(this, tr("Load channel logo"), 64, 64); - // to show the selected - ui.ChannelLogoButton->setIcon(picture); - } + if (img.isNull()) + return; + + picture = img; + + // to show the selected + ui.ChannelLogoButton->setIcon(picture); } diff --git a/retroshare-gui/src/gui/chat/PopupChatWindow.cpp b/retroshare-gui/src/gui/chat/PopupChatWindow.cpp index a3f525624..d02735b44 100644 --- a/retroshare-gui/src/gui/chat/PopupChatWindow.cpp +++ b/retroshare-gui/src/gui/chat/PopupChatWindow.cpp @@ -21,7 +21,6 @@ ****************************************************************/ #include -#include #include "PopupChatWindow.h" #include "PopupChatDialog.h" @@ -291,20 +290,10 @@ void PopupChatWindow::calculateTitle(PopupChatDialog *dialog) void PopupChatWindow::getAvatar() { - QString fileName; - if (misc::getOpenFileName(this, RshareSettings::LASTDIR_IMAGES, tr("Load File"), tr("Pictures (*.png *.xpm *.jpg *.tiff *.gif)"), fileName)) + QByteArray ba; + if (misc::getOpenAvatarPicture(this, ba)) { - QPixmap picture = QPixmap(fileName).scaled(96,96, Qt::IgnoreAspectRatio,Qt::SmoothTransformation); - - std::cerr << "Sending avatar image down the pipe" << std::endl; - - // send avatar down the pipe for other peers to get it. - QByteArray ba; - QBuffer buffer(&ba); - buffer.open(QIODevice::WriteOnly); - picture.save(&buffer, "PNG"); // writes image into ba in PNG format - - std::cerr << "Image size = " << ba.size() << std::endl; + std::cerr << "Avatar image size = " << ba.size() << std::endl ; rsMsgs->setOwnAvatarData((unsigned char *)(ba.data()), ba.size()); // last char 0 included. } diff --git a/retroshare-gui/src/lang/retroshare_de.qm b/retroshare-gui/src/lang/retroshare_de.qm index dcfa6fde8907bf91b6b93de4fba01a3a568e0840..cdf9b675f84319eb72344c16a0181d98ef39c2cb 100644 GIT binary patch delta 16969 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 CertificatePage - + Certificate files Zertifikat-Dateien @@ -1643,7 +1643,7 @@ und meinen GPG Schlüssel unterzeichnet und meinen GPG Schlüssel nicht unterzeichnet - + Signature Failure Signatur Fehler @@ -1685,7 +1685,7 @@ und meinen GPG Schlüssel nicht unterzeichnet ConnectFriendWizard - + Connect Friend Wizard Assistent um sich zu einem Freund zu verbinden @@ -2223,14 +2223,17 @@ Möchten Sie die Änderungen speichern? Bitte einen Name hinzufügen - - Load File - Lade Datei + + Load channel logo + Lade Kanal Logo + + + Load File + Lade Datei - Pictures (*.png *.xpm *.jpg) - Bilder (*.png *.xpm *.jpg) + Bilder (*.png *.xpm *.jpg) @@ -2327,17 +2330,17 @@ p, li { white-space: pre-wrap; } Drop file error. - Dateifehler bei Drag'n'Drop. + Dateifehler bei Drag'n'Drop. Directory can't be dropped, only files are accepted. - Ordner können nicht für Drag'n'Drop genutzt werden. Nur Dateien werden akzeptiert. + Ordner können nicht für Drag'n'Drop genutzt werden. Nur Dateien werden akzeptiert. File not found or file name not accepted. - Datei nicht gefunden oder Dateiname nicht akzeptiert. + Datei nicht gefunden oder Dateiname nicht akzeptiert. @@ -2361,14 +2364,17 @@ p, li { white-space: pre-wrap; } Bitte Subjekt nicht vergessen - - Load File - Lade Datei + + Load thumbnail picture + Lade Miniaturbild + + + Load File + Lade Datei - Pictures (*.png *.xpm *.jpg) - Bilder (*.png *.xpm *.jpg) + Bilder (*.png *.xpm *.jpg) @@ -2666,20 +2672,35 @@ p, li { white-space: pre-wrap; } DHT - DHT On - DHT An + DHT An - + DHT Off DHT aus - + + DHT Searching for Retroshare Peers + + + + + RetroShare users in DHT (Total DHT users) RetroShare Nutzer in DHT (Totale DHT Nutzer) + + + DHT Good + + + + + DHT Error + + DLListDelegate @@ -2850,12 +2871,12 @@ p, li { white-space: pre-wrap; } DhtWindow - + Dht Details - + Peer Details Peer-Details @@ -2900,7 +2921,12 @@ p, li { white-space: pre-wrap; } - + + Name + Name + + + PeerId PeerId @@ -2935,7 +2961,12 @@ p, li { white-space: pre-wrap; } - + + RsId + + + + Bucket @@ -2961,17 +2992,17 @@ p, li { white-space: pre-wrap; } - + Last Sent - + Last Recv - + Relay Mode @@ -3163,14 +3194,17 @@ Das ist nützlich, wenn Du eine externe Festplatte freigibst und die Datei nicht Kanal Logo hinzufügen - Load File - Lade Datei + Lade Datei - Pictures (*.png *.xpm *.jpg) - Bilder (*.png *.xpm *.jpg) + Bilder (*.png *.xpm *.jpg) + + + + Load channel logo + Lade Kanal Logo @@ -3214,7 +3248,7 @@ Das ist nützlich, wenn Du eine externe Festplatte freigibst und die Datei nicht EmailPage - + Invite Friends by Email Lade Freunde per Email ein @@ -4139,19 +4173,19 @@ p, li { white-space: pre-wrap; } Anonymous - Anonym + Anonym signed - unterzeichnet + unterzeichnet none - keine + keine @@ -4550,17 +4584,15 @@ p, li { white-space: pre-wrap; } Willst Du wirklich den Nachrichtenverlauf physisch löschen? - Load File - Lade Datei + Lade Datei - Pictures (*.png *.xpm *.jpg *.tiff *.gif) - Bilder (*.png *.xpm *.jpg *.tiff *.gif) + Bilder (*.png *.xpm *.jpg *.tiff *.gif) - + Add Extra File Zusätzliche Datei hinzufügen @@ -4971,27 +5003,37 @@ Gib Dein GPG Passwort wenn Du gefragt wirst ein, um Deinen neuen Schlüssel zu u GeneralPage - + Auto Login Automatische Anmeldung - + Startup Programmstart - + Start minimized on system start Minimieren beim Starten mit dem System + For Advanced Users + + + + + Enable Advanced Mode (Restart Required) + + + + Misc Verschiedenes - + Do not show the Quit RetroShare MessageBox MessageBox beim Schliessen nicht anzeigen @@ -5001,12 +5043,12 @@ Gib Dein GPG Passwort wenn Du gefragt wirst ein, um Deinen neuen Schlüssel zu u Nicht in den Systemabschnitt minimieren - + seconds Sekunden - + Start minimized Minimiert starten @@ -5016,12 +5058,12 @@ Gib Dein GPG Passwort wenn Du gefragt wirst ein, um Deinen neuen Schlüssel zu u Starte RetroShare mit dem System - + Register retroshare:// as url protocol (Restart required) Registriere retroshare:// als Protokoll (Neustart erforderlich) - + Idle Untätig @@ -5031,6 +5073,205 @@ Gib Dein GPG Passwort wenn Du gefragt wirst ein, um Deinen neuen Schlüssel zu u Zeit bis zur Untätigkeit + + GetStartedDialog + + + Getting Started + + + + + + Invite Friends + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:14pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">Retroshare is nothing without your Friends. Click on the Button to start the process.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">Email an Invitation with your &quot;ID Certificate&quot; to your friends.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">Be sure to get their invitation back as well... </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">You can only connect with friends if you have both added each other.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p></body></html> + + + + + Add Your Friends to Retroshare + + + + + Add Friends + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:14pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">When your friends send you a their invitations, Click to open the Add Friends window.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">Cut and Paste your Friend's &quot;ID Certificates&quot; into the window and add them as friends.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p></body></html> + + + + + Connect To Friends + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:14pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">Be Online at the same time, and Retroshare will automatically connect you!</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">Your client needs to find the Retroshare Network before it can make connections.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">This takes 5-30 minutes the first time you startup Retroshare</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">The DHT indicator (in the Status Bar) turnsGreen when it can make connections.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">After a couple of minutes, the NAT indicator (also in the Status Bar) switch to Yellow or Green.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">If it remains Red, then you have a Nasty Firewall, that Retroshare struggles to connect through.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">Look in the Further Help section for more advice about connecting.</span></p></body></html> + + + + + Advanced: Open Firewall Port + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:14pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">You can improve your Retroshare performance by opening an External Port. </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">This will speed up connections and allow more people to connect with you </span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">The easiest way to do this is by enabling UPnP on your Wireless Box or Router.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">As each router is different, you need to find out your Router Model and Google for instructions.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">If none of this makes sense, don't worry about it Retroshare will still work.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p></body></html> + + + + + Further Help and Support + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:14pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">Having trouble getting started with Retroshare?</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">1) look at the FAQ Wiki. This is a bit old, we trying to bring it up to date.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">2) check out the Online Forums. Ask questions and discuss features.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">3) try the Internal Retroshare Forums </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;"> - These come online once you are connected to friends.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">4) If you are still stuck. Email us.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">Enjoy Retrosharing</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"></p></body></html> + + + + + Open RS Website + + + + + Open FAQ Wiki + + + + + Open Online Forums + + + + + Email Support + + + + + Email Feedback + + + + + You are cordially invited to join the Retroshare Network, + + + + + Retroshare is a Secure P2P Sharing Network + + + + + We use direct connections between you and your friends to maintain your Privacy + + + + + Install the client to chat, share data and converse in the forums + + + + + Get Retroshare here: http://retroshare.sourceforge.net/download + + + + + Below is your friends ID Certificate. Cut and paste this into your Retroshare client + + + + + and send them your ID Certificate to enable the secure connection + + + + + Retroshare Invitation + + + + + RetroShare Feedback + + + + + RetroShare Support + + + GraphFrame @@ -5652,7 +5893,7 @@ p, li { white-space: pre-wrap; } IntroPage - + &Make friend with selected friends of my friends &Füge ausgewählte Freunde Deiner Freunde hinzu @@ -5883,7 +6124,7 @@ p, li { white-space: pre-wrap; } MainWindow - + Network Netzwerk @@ -5913,7 +6154,12 @@ p, li { white-space: pre-wrap; } Blogs - + + Getting Started + + + + Notify Meldungen @@ -6047,7 +6293,7 @@ p, li { white-space: pre-wrap; } Schnellstart Assistent - + Search Suchen @@ -6062,7 +6308,7 @@ p, li { white-space: pre-wrap; } Messenger - + Show/Hide Anzeigen/Verbergen @@ -6137,17 +6383,17 @@ p, li { white-space: pre-wrap; } Über - + Forums Foren - + RetroShare %1 a secure decentralised communication platform RetroShare %1 eine sichere und dezentralisierte Kommunikationsplattform - + Open Messages Öffne Nachrichten @@ -6157,12 +6403,12 @@ p, li { white-space: pre-wrap; } Anwendungen - + Plugins - + Do you really want to exit RetroShare ? Willst Du RetroShare wirklich beenden? @@ -7118,7 +7364,7 @@ p, li { white-space: pre-wrap; } - + From Von @@ -7201,15 +7447,15 @@ p, li { white-space: pre-wrap; } - + Inbox Posteingang - - + + Outbox Postausgang @@ -7221,7 +7467,7 @@ p, li { white-space: pre-wrap; } - + Sent Gesendet @@ -7294,7 +7540,7 @@ p, li { white-space: pre-wrap; } - + Subject Betreff @@ -7370,12 +7616,12 @@ p, li { white-space: pre-wrap; } - + Click to sort by from Klicken, um nach Von zu sortieren - + Click to sort by date Klicken, um nach Datum zu sortieren @@ -7401,7 +7647,7 @@ p, li { white-space: pre-wrap; } Empfohlene Dateien einblenden - + Click to sort by to Klicken, um nach Empfänger zu sortieren @@ -7423,7 +7669,7 @@ p, li { white-space: pre-wrap; } - + Reply to All Allen antworten @@ -7460,8 +7706,8 @@ p, li { white-space: pre-wrap; } - - + + Trash Papierkorb @@ -7484,7 +7730,7 @@ p, li { white-space: pre-wrap; } Neues Schlagwort... - + Mark as read Als gelesen markieren @@ -7509,14 +7755,14 @@ p, li { white-space: pre-wrap; } Papierkorb leeren - - + + Drafts Entwürfe - + To An @@ -7525,17 +7771,17 @@ p, li { white-space: pre-wrap; } Editieren... - + Click to sort by star Klicken, um nach Kennzeichnung zu sortieren - + No starred messages available. Stars let you give messages a special status to make them easier to find. To star a message, click on the light grey star beside any message. Es sind keine gekennzeichneten Nachrichten vorhanden. Durch die Kennzeichnung kannst du Nachrichten mit einem speziellen Status versehen, sodass sie leichter zu finden sind. Klicke zum Kennzeichnen einer Nachricht auf den hellgrauen Stern neben der jeweiligen Nachricht. - + @@ -7754,12 +8000,57 @@ p, li { white-space: pre-wrap; } NATStatus - + <strong>NAT:</strong> - + + Network Status Unknown + + + + + Offline + + + + + Nasty Firewall + + + + + DHT Disabled and Firewalled + + + + + Network Restarting + + + + + Behind Firewall + + + + + DHT Disabled + + + + + RetroShare Server + + + + + Forwarded Port + + + + Internet connection Internetverbindung @@ -8292,7 +8583,7 @@ p, li { white-space: pre-wrap; } Bitte geben Sie das Passwort ein um folgenden GPG Schlüssel freizuschalten: - + Examining shared files... Prüfe freigegebene Dateien... @@ -9441,19 +9732,17 @@ Do you want to send them a Message instead Immer im Vordergrund - + RetroShare RetroShare - Load File - Lade Datei + Lade Datei - Pictures (*.png *.xpm *.jpg *.tiff *.gif) - Bilder (*.png *.xpm *.jpg *.tiff *.gif) + Bilder (*.png *.xpm *.jpg *.tiff *.gif) @@ -10143,6 +10432,28 @@ Lockdatei: Tunnel requests repartition: + + + + + secs + + + + + Old + + + + + Now + Jetzt + + + + Round Trip Time: + + QuickStartWizard @@ -10665,7 +10976,7 @@ p, li { white-space: pre-wrap; } RsidPage - + RetroShare ID RetroShare ID @@ -10994,16 +11305,139 @@ p, li { white-space: pre-wrap; } Schließe alle Suchergebnisse + + SecurityItem + + + + Expand + + + + + Remove Item + + + + + Write a quick Message + Schnelle Nachricht schreiben + + + + Chat + + + + + Start Chat + Chat starten + + + + Cancel + Abbrechen + + + + Send + Senden + + + + Name: + Name: + + + + Peer ID: + Peer ID: + + + + Trust: + Vertrauen: + + + + Location + + + + + IP Address + IP-Adresse + + + + Connection Method + Verbindungsmethode + + + + Status: + Status: + + + + Write Message + Nachricht schreiben + + + + Connect Attempt + Verbindungsversuch + + + + Not Yet Friends + + + + + Unknown (Incoming) Connect Attempt + + + + + Unknown (Outgoing) Connect Attempt + + + + + Unknown Security Issue + + + + + + + + + Unknown Peer + Unbekannter Nachbar + + + + Hide + + + + + Quick Message + Schnelle Nachrricht + + ServerPage - + Port: Port: - + Local Address Lokale Adresse @@ -11049,12 +11483,12 @@ p, li { white-space: pre-wrap; } - + Show Discovery information in statusbar Zeige Discovery-Informationen in der Statuszeile - + Network Configuration Netzwerkkonfiguration @@ -11103,7 +11537,13 @@ peers still need to trust each other to allow connection. Erlaube Tunnelverbindungen - + + + Acceptable ports range from 1024 to 65535. Ports below 1024 are reserved by your system. + + + + IP Service IP Dienst @@ -11124,7 +11564,7 @@ Es hilft auch, wenn Sie sich hinter einer Firewall/VPN befinden. Erlaube RetroShare folgende Webseiten nach Ihrer IP zu fragen: - + Dynamic DNS Dynamisches DNS @@ -11874,12 +12314,13 @@ lock file: + Warning Warnung - + The passwd to your SSL certificate (your location) will be stored encrypted in your Gnome Keyring. Your PGP passwd will not be stored. @@ -11891,6 +12332,15 @@ Dein PGP wird nicht gespeichert. Du kannst die Auswahl in den Optionen zurücksetzen. + + + The passwd to your SSL certificate (your location) will be stored encrypted in your Keychain. + + Your PGP passwd will not be stored. + +This choice can be reverted in settings. + + The passwd to your SSL certificate (your location) will be stored encrypted in the keys/help.dta file. This is not secure. @@ -12483,7 +12933,7 @@ p, li { white-space: pre-wrap; } TextPage - + Use text representation of the PGP certificates. Verwende diesen Text als PGP Zertifikat. @@ -12513,7 +12963,7 @@ p, li { white-space: pre-wrap; } Bereinige Zertifikat - + Save as... Speichern unter... @@ -12533,7 +12983,7 @@ p, li { white-space: pre-wrap; } - + Text certificate Text-Zertifikat @@ -12548,7 +12998,7 @@ p, li { white-space: pre-wrap; } Starte das Standard-Emailprogramm - + Connect Friend Help Verbindungshilfe @@ -12622,7 +13072,7 @@ p, li { white-space: pre-wrap; } TransfersDialog - + Cancel Abbrechen @@ -12632,7 +13082,7 @@ p, li { white-space: pre-wrap; } Fertige ausblenden - + Status Status @@ -12740,7 +13190,7 @@ p, li { white-space: pre-wrap; } Übertragen - + Play Abspielen @@ -12795,12 +13245,12 @@ p, li { white-space: pre-wrap; } Ende - + Priority (Speed)... Prioritä t(Geschwindigkeit)... - + Streaming Streaming @@ -12810,7 +13260,7 @@ p, li { white-space: pre-wrap; } Zufall - + Chunk strategy Blockstrategie @@ -12865,7 +13315,7 @@ p, li { white-space: pre-wrap; } Soll dieser Download wirklich abgebrochen und gelöscht werden? - + Speed / Queue position Geschwindigkeits- / Warteschlangenposition @@ -12902,7 +13352,12 @@ p, li { white-space: pre-wrap; } - + + RTT Statistics + + + + Copy RetroShare Link Kopiere RetroShare Link @@ -12913,20 +13368,20 @@ p, li { white-space: pre-wrap; } - + Slower Langsamer - - + + Average Durchschnitt - - + + Faster Schneller @@ -12989,7 +13444,7 @@ p, li { white-space: pre-wrap; } Überprüfe... - + Force Check Erzwinge Überprüfung @@ -13284,10 +13739,18 @@ p, li { white-space: pre-wrap; } Durchsuchen + + VoipStatistics + + + VoipTest Statistics + + + misc - + Unknown Unknown (size) Unbekannt @@ -13381,5 +13844,15 @@ p, li { white-space: pre-wrap; } e.g: 3.1 T T + + + Load avatar image + Lade Avatar Bild + + + + Pictures (*.png *.xpm *.jpg *.tiff *.gif) + Bilder (*.png *.xpm *.jpg *.tiff *.gif) + diff --git a/retroshare-gui/src/util/misc.cpp b/retroshare-gui/src/util/misc.cpp index cebdd56cb..46197de49 100644 --- a/retroshare-gui/src/util/misc.cpp +++ b/retroshare-gui/src/util/misc.cpp @@ -23,6 +23,8 @@ #include #include #include +#include +#include #include "misc.h" @@ -243,6 +245,43 @@ QString misc::removeNewLine(const std::wstring &text) return QString::fromStdWString(text).replace("\n", " "); } +/*! +* Let's the user choose an avatar picture file, which is returned as a PNG thumbnail +* in a byte array +* +* return false, if the user canceled the dialog, otherwise true +*/ +bool misc::getOpenAvatarPicture(QWidget *parent, QByteArray &image_data) +{ + QPixmap picture = getOpenThumbnailedPicture(parent, tr("Load avatar image"), 96, 96); + + if (picture.isNull()) + return false; + + // save image in QByteArray + QBuffer buffer(&image_data); + buffer.open(QIODevice::WriteOnly); + picture.save(&buffer, "PNG"); // writes image into ba in PNG format + + return true; +} + +/*! + * Open a QFileDialog to let the user choose a picture file. + * This picture is converted to a thumbnail and returned as a QPixmap. + * + * \return a null pixmap, if the user canceled the dialog, otherwise the chosen picture + */ +QPixmap misc::getOpenThumbnailedPicture(QWidget *parent, const QString &caption, int width, int height) +{ + // Let the user choose an picture file + QString fileName; + if (!getOpenFileName(parent, RshareSettings::LASTDIR_IMAGES, caption, tr("Pictures (*.png *.xpm *.jpg *.tiff *.gif)"), fileName)) + return QPixmap(); + + return QPixmap(fileName).scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); +} + bool misc::getOpenFileName(QWidget *parent, RshareSettings::enumLastDir type, const QString &caption, const QString &filter, QString &file) { QString lastDir = Settings->getLastDir(type); diff --git a/retroshare-gui/src/util/misc.h b/retroshare-gui/src/util/misc.h index 16707e5d6..950681b52 100644 --- a/retroshare-gui/src/util/misc.h +++ b/retroshare-gui/src/util/misc.h @@ -156,6 +156,8 @@ class misc : public QObject static QString removeNewLine(const std::string &text); static QString removeNewLine(const std::wstring &text); + static bool getOpenAvatarPicture(QWidget *parent, QByteArray &image_data); + static QPixmap getOpenThumbnailedPicture(QWidget *parent, const QString &caption, int width, int height); static bool getOpenFileName(QWidget *parent, RshareSettings::enumLastDir type, const QString &caption, const QString &filter, QString &file); static bool getOpenFileNames(QWidget *parent, RshareSettings::enumLastDir type, const QString &caption, const QString &filter, QStringList &files);