From 0be24268f7b65f3f97e227aa7b471a23432a124a Mon Sep 17 00:00:00 2001 From: thunder2 Date: Sat, 9 Oct 2010 18:35:34 +0000 Subject: [PATCH] Fixed resizing of the MainWindow when hashing files with long names. Moved the hash strings of notifyHashingInfo from the librs to the GUI for translating. Fixed german translation. Recompile of GUI needed. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3659 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- libretroshare/src/dbase/fimonitor.cc | 10 +- libretroshare/src/retroshare/rsiface.h | 7 +- retroshare-gui/src/RetroShare.pro | 8 +- retroshare-gui/src/gui/MainWindow.cpp | 32 +--- retroshare-gui/src/gui/MainWindow.h | 5 +- retroshare-gui/src/gui/notifyqt.cpp | 20 ++- retroshare-gui/src/gui/notifyqt.h | 2 +- .../src/gui/statusbar/hashingstatus.cpp | 69 +++++---- .../src/gui/statusbar/hashingstatus.h | 14 +- .../src/gui/statusbar/natstatus.cpp | 36 ++--- retroshare-gui/src/gui/statusbar/natstatus.h | 12 +- .../src/gui/statusbar/peerstatus.cpp | 10 +- retroshare-gui/src/gui/statusbar/peerstatus.h | 11 +- .../src/gui/statusbar/ratesstatus.cpp | 14 +- .../src/gui/statusbar/ratesstatus.h | 12 +- retroshare-gui/src/lang/retroshare_de.qm | Bin 274209 -> 274517 bytes retroshare-gui/src/lang/retroshare_de.ts | 137 ++++++++++-------- retroshare-gui/src/main.cpp | 1 - 18 files changed, 188 insertions(+), 212 deletions(-) diff --git a/libretroshare/src/dbase/fimonitor.cc b/libretroshare/src/dbase/fimonitor.cc index c34b2412c..c66b89f28 100644 --- a/libretroshare/src/dbase/fimonitor.cc +++ b/libretroshare/src/dbase/fimonitor.cc @@ -318,7 +318,7 @@ void FileIndexMonitor::updateCycle() mInCheck = true; } - cb->notifyHashingInfo("Examining shared files...") ; + cb->notifyHashingInfo(NOTIFY_HASHTYPE_EXAMINING_FILES, "") ; std::vector to_hash ; @@ -543,7 +543,7 @@ void FileIndexMonitor::updateCycle() if(!to_hash.empty()) hashFiles(to_hash) ; - cb->notifyHashingInfo("") ; + cb->notifyHashingInfo(NOTIFY_HASHTYPE_FINISH, "") ; { /* LOCKED DIRS */ RsStackMutex stack(fiMutex); /**** LOCKED DIRS ****/ @@ -634,8 +634,8 @@ void FileIndexMonitor::hashFiles(const std::vector& to_hash) // std::ostringstream tmpout; tmpout << cnt+1 << "/" << n_files << " (" << friendlyUnit(size) << " - " << int(size/double(total_size)*100.0) << "%) : " << to_hash[i].fentries[j].name ; - - cb->notifyHashingInfo("Hashing file " + tmpout.str()) ; + + cb->notifyHashingInfo(NOTIFY_HASHTYPE_HASH_FILE, tmpout.str()) ; FileEntry fe(to_hash[i].fentries[j]) ; // copied, because hashFile updates the hash member @@ -666,7 +666,7 @@ void FileIndexMonitor::hashFiles(const std::vector& to_hash) std::cerr << "size - last_save_size = " << size - last_save_size << ", max=" << MAX_SIZE_WITHOUT_SAVING << std::endl ; if(size > last_save_size + MAX_SIZE_WITHOUT_SAVING) { - cb->notifyHashingInfo("Saving file index...") ; + cb->notifyHashingInfo(NOTIFY_HASHTYPE_SAVE_FILE_INDEX, "") ; #ifdef WINDOWS_SYS Sleep(1000) ; #else diff --git a/libretroshare/src/retroshare/rsiface.h b/libretroshare/src/retroshare/rsiface.h index 4d30378e4..0aeea8dce 100644 --- a/libretroshare/src/retroshare/rsiface.h +++ b/libretroshare/src/retroshare/rsiface.h @@ -188,7 +188,7 @@ class NotifyBase virtual void notifyChat() { return; } virtual void notifyChatStatus(const std::string& /* peer_id */, const std::string& /* status_string */ ,bool /* is_private */) {} virtual void notifyCustomState(const std::string& /* peer_id */, const std::string& /* status_string */) {} - virtual void notifyHashingInfo(std::string fileinfo) { (void)fileinfo; return ; } + virtual void notifyHashingInfo(uint32_t type, const std::string& fileinfo) { (void) type; (void)fileinfo; } virtual void notifyTurtleSearchResult(uint32_t /* search_id */ ,const std::list& files) { (void)files; } virtual void notifyPeerHasNewAvatar(std::string peer_id) { (void)peer_id; } virtual void notifyOwnAvatarChanged() {} @@ -225,6 +225,9 @@ const int NOTIFY_TYPE_MOD = 0x02; /* general purpose, check all */ const int NOTIFY_TYPE_ADD = 0x04; /* flagged additions */ const int NOTIFY_TYPE_DEL = 0x08; /* flagged deletions */ - +const uint32_t NOTIFY_HASHTYPE_EXAMINING_FILES = 1; /* Examining shared files */ +const uint32_t NOTIFY_HASHTYPE_FINISH = 2; /* Finish */ +const uint32_t NOTIFY_HASHTYPE_HASH_FILE = 3; /* Hashing file */ +const uint32_t NOTIFY_HASHTYPE_SAVE_FILE_INDEX = 4; /* Hashing file */ #endif diff --git a/retroshare-gui/src/RetroShare.pro b/retroshare-gui/src/RetroShare.pro index 9e78e7b29..779226d62 100644 --- a/retroshare-gui/src/RetroShare.pro +++ b/retroshare-gui/src/RetroShare.pro @@ -290,7 +290,8 @@ HEADERS += rshare.h \ gui/help/browser/helptextbrowser.h \ gui/statusbar/peerstatus.h \ gui/statusbar/natstatus.h \ - gui/statusbar/ratesstatus.h \ + gui/statusbar/ratesstatus.h \ + gui/statusbar/hashingstatus.h \ gui/advsearch/advancedsearchdialog.h \ gui/advsearch/expressionwidget.h \ gui/advsearch/guiexprelement.h \ @@ -503,9 +504,10 @@ SOURCES += main.cpp \ gui/settings/TransferPage.cpp \ gui/settings/ChatPage.cpp \ gui/settings/AddFileAssociationDialog.cpp \ - gui/statusbar/peerstatus.cpp \ + gui/statusbar/peerstatus.cpp \ gui/statusbar/natstatus.cpp \ - gui/statusbar/ratesstatus.cpp \ + gui/statusbar/ratesstatus.cpp \ + gui/statusbar/hashingstatus.cpp \ gui/toaster/ChatToaster.cpp \ gui/toaster/MessageToaster.cpp \ gui/toaster/CallToaster.cpp \ diff --git a/retroshare-gui/src/gui/MainWindow.cpp b/retroshare-gui/src/gui/MainWindow.cpp index 3f484878e..ee4c95241 100644 --- a/retroshare-gui/src/gui/MainWindow.cpp +++ b/retroshare-gui/src/gui/MainWindow.cpp @@ -62,6 +62,7 @@ #include "statusbar/peerstatus.h" #include "statusbar/natstatus.h" #include "statusbar/ratesstatus.h" +#include "statusbar/hashingstatus.h" #include #include @@ -273,24 +274,8 @@ MainWindow::MainWindow(QWidget* parent, Qt::WFlags flags) natstatus = new NATStatus(); statusBar()->addWidget(natstatus); - widget = new QWidget(); - QSizePolicy sizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); - sizePolicy.setHorizontalStretch(0); - sizePolicy.setVerticalStretch(0); - sizePolicy.setHeightForWidth(widget->sizePolicy().hasHeightForWidth()); - widget->setSizePolicy(sizePolicy); - QHBoxLayout *horizontalLayout = new QHBoxLayout(widget); - horizontalLayout->setContentsMargins(0, 0, 0, 0); - horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); - _hashing_info_label = new QLabel(widget) ; - _hashing_info_label->setObjectName(QString::fromUtf8("label")); - - horizontalLayout->addWidget(_hashing_info_label); - QSpacerItem *horizontalSpacer = new QSpacerItem(1000, 0, QSizePolicy::Expanding, QSizePolicy::Minimum); - horizontalLayout->addItem(horizontalSpacer); - - statusBar()->addPermanentWidget(widget); - _hashing_info_label->hide() ; + hashingstatus = new HashingStatus(); + statusBar()->addPermanentWidget(hashingstatus); ratesstatus = new RatesStatus(); statusBar()->addPermanentWidget(ratesstatus); @@ -560,17 +545,6 @@ void MainWindow::privateChatChanged(int list, int type) } } -void MainWindow::updateHashingInfo(const QString& s) -{ - if(s == "") - _hashing_info_label->hide() ; - else - { - _hashing_info_label->setText(s) ; - _hashing_info_label->show() ; - } -} - void MainWindow::postModDirectories(bool update_local) { RSettingsWin::postModDirectories(update_local); diff --git a/retroshare-gui/src/gui/MainWindow.h b/retroshare-gui/src/gui/MainWindow.h index adfcad615..bca868949 100644 --- a/retroshare-gui/src/gui/MainWindow.h +++ b/retroshare-gui/src/gui/MainWindow.h @@ -34,6 +34,7 @@ class Idle; class PeerStatus; class NATStatus; class RatesStatus; +class HashingStatus; class ForumsDialog; class PeersDialog; class ChatDialog; @@ -134,7 +135,6 @@ public: void setStatus(QObject *pObject, int nStatus); public slots: - void updateHashingInfo(const QString&) ; void displayErrorMessage(int,int,const QString&) ; void postModDirectories(bool update_local); void displayDiskSpaceWarning(int loc,int size_limit_mb) ; @@ -235,10 +235,9 @@ private: PeerStatus *peerstatus; NATStatus *natstatus; RatesStatus *ratesstatus; + HashingStatus *hashingstatus; QComboBox *statusComboBox; - QLabel *_hashing_info_label ; - QAction *messageAction; QAction *forumAction; QAction *channelAction; diff --git a/retroshare-gui/src/gui/notifyqt.cpp b/retroshare-gui/src/gui/notifyqt.cpp index e09772746..a1bd12de1 100644 --- a/retroshare-gui/src/gui/notifyqt.cpp +++ b/retroshare-gui/src/gui/notifyqt.cpp @@ -155,9 +155,25 @@ void NotifyQt::notifyTurtleSearchResult(uint32_t search_id,const std::list& found_files); virtual void notifyPeerHasNewAvatar(std::string peer_id) ; virtual void notifyOwnAvatarChanged() ; diff --git a/retroshare-gui/src/gui/statusbar/hashingstatus.cpp b/retroshare-gui/src/gui/statusbar/hashingstatus.cpp index d9456a6fc..1b8b2a607 100644 --- a/retroshare-gui/src/gui/statusbar/hashingstatus.cpp +++ b/retroshare-gui/src/gui/statusbar/hashingstatus.cpp @@ -18,61 +18,60 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. ****************************************************************/ -#include "hashingstatus.h" - -#include -#include #include #include -#include -#include -#include -#include -#include -#include +#include "hashingstatus.h" -#include -#include +#include "gui/notifyqt.h" + +class QStatusLabel : public QLabel +{ +public: + QStatusLabel(QLayout *layout, QWidget *parent = NULL, Qt::WindowFlags f = 0) : QLabel(parent, f) + { + m_layout = layout; + } + + virtual QSize minimumSizeHint() const + { + const QSize sizeHint = QLabel::minimumSizeHint(); + + // do not resize the layout + return QSize(qMin(sizeHint.width(), m_layout->geometry().width()), sizeHint.height()); + } + +private: + QLayout *m_layout; +}; HashingStatus::HashingStatus(QWidget *parent) : QWidget(parent) { - QHBoxLayout *hbox = new QHBoxLayout(); + QHBoxLayout *hbox = new QHBoxLayout(this); hbox->setMargin(0); hbox->setSpacing(6); - - //iconLabel = new QLabel( this ); - //iconLabel->setPixmap(QPixmap::QPixmap(":/images/user/identitygray16.png")); - // iconLabel doesn't change over time, so we didn't need a minimum size - //hbox->addWidget(iconLabel); - - statusHashing = new QLabel( tr(""), this ); - //statusHashing->setMinimumSize( statusHashing->frameSize().width() + 0, 0 ); + + statusHashing = new QStatusLabel(hbox, this); hbox->addWidget(statusHashing); QSpacerItem *horizontalSpacer = new QSpacerItem(1000, 0, QSizePolicy::Expanding, QSizePolicy::Minimum); hbox->addItem(horizontalSpacer); - setLayout( hbox ); + setLayout(hbox); -} + statusHashing->hide(); -HashingStatus::~HashingStatus() -{ + connect(NotifyQt::getInstance(), SIGNAL(hashingInfoChanged(const QString&)), SLOT(updateHashingInfo(const QString&))); } void HashingStatus::updateHashingInfo(const QString& s) { - if(s == "") - statusHashing->hide() ; - else - { - statusHashing->setText("Hashing file " + s) ; - statusHashing->show() ; - } + if(s.isEmpty()) { + statusHashing->hide() ; + } else { + statusHashing->setText(s); + statusHashing->show(); + } } - - - diff --git a/retroshare-gui/src/gui/statusbar/hashingstatus.h b/retroshare-gui/src/gui/statusbar/hashingstatus.h index 00aace1eb..b74d865e6 100644 --- a/retroshare-gui/src/gui/statusbar/hashingstatus.h +++ b/retroshare-gui/src/gui/statusbar/hashingstatus.h @@ -20,27 +20,23 @@ ****************************************************************/ #ifndef HASHINGSTATUS_H #define HASHINGSTATUS_H -#include "gui/MainWindow.h" - #include +class QLabel; class HashingStatus : public QWidget { -Q_OBJECT + Q_OBJECT + public: HashingStatus(QWidget *parent = 0); - ~HashingStatus(); - public slots: - void updateHashingInfo(const QString&) ; - + void updateHashingInfo(const QString&) ; private: - class QLabel *iconLabel, *statusHashing; - + QLabel *statusHashing; }; #endif diff --git a/retroshare-gui/src/gui/statusbar/natstatus.cpp b/retroshare-gui/src/gui/statusbar/natstatus.cpp index 7098a713b..be0b1fb48 100644 --- a/retroshare-gui/src/gui/statusbar/natstatus.cpp +++ b/retroshare-gui/src/gui/statusbar/natstatus.cpp @@ -19,6 +19,7 @@ * Boston, MA 02110-1301, USA. ****************************************************************/ +#include #include #include "natstatus.h" @@ -28,33 +29,24 @@ NATStatus::NATStatus(QWidget *parent) : QWidget(parent) { - QHBoxLayout *hbox = new QHBoxLayout(); + QHBoxLayout *hbox = new QHBoxLayout(this); hbox->setMargin(0); hbox->setSpacing(6); statusNAT = new QLabel( tr("NAT:"), this ); - //statusDHT->setMinimumSize( statusPeers->frameSize().width() + 0, 0 ); +// statusDHT->setMinimumSize( statusPeers->frameSize().width() + 0, 0 ); hbox->addWidget(statusNAT); - iconLabel = new QLabel( this ); + iconLabel = new QLabel(this); iconLabel->setPixmap(QPixmap(":/images/grayled.png")); // iconLabel doesn't change over time, so we didn't need a minimum size hbox->addWidget(iconLabel); - - setLayout( hbox ); - - - -} - -NATStatus::~NATStatus() -{ + setLayout(hbox); } void NATStatus::getNATStatus() { - rsiface->lockData(); /* Lock Interface */ /* now the extra bit .... switch on check boxes */ @@ -95,25 +87,25 @@ void NATStatus::getNATStatus() if (config.netUpnpOk) { - iconLabel->setPixmap(QPixmap(":/images/greenled.png")); - iconLabel->setToolTip(tr("OK | RetroShare Server")); + iconLabel->setPixmap(QPixmap(":/images/greenled.png")); + iconLabel->setToolTip(tr("OK | RetroShare Server")); } else if (config.netStunOk || config.netExtraAddressOk) { - iconLabel->setPixmap(QPixmap(":/images/greenled.png")); - iconLabel->setToolTip(tr("Internet connection")); + iconLabel->setPixmap(QPixmap(":/images/greenled.png")); + iconLabel->setToolTip(tr("Internet connection")); } else if (config.netLocalOk) { - iconLabel->setPixmap(QPixmap(":/images/grayled.png")); - iconLabel->setToolTip(tr("No internet connection")); + iconLabel->setPixmap(QPixmap(":/images/grayled.png")); + iconLabel->setToolTip(tr("No internet connection")); } else { - iconLabel->setPixmap(QPixmap(":/images/redled.png")); - iconLabel->setToolTip(tr("No local network")); + iconLabel->setPixmap(QPixmap(":/images/redled.png")); + iconLabel->setToolTip(tr("No local network")); } - + rsiface->unlockData(); /* UnLock Interface */ } diff --git a/retroshare-gui/src/gui/statusbar/natstatus.h b/retroshare-gui/src/gui/statusbar/natstatus.h index a56646d2b..7762ee02c 100644 --- a/retroshare-gui/src/gui/statusbar/natstatus.h +++ b/retroshare-gui/src/gui/statusbar/natstatus.h @@ -20,26 +20,22 @@ ****************************************************************/ #ifndef NATSTATUS_H #define NATSTATUS_H -#include "gui/MainWindow.h" - #include +class QLabel; class NATStatus : public QWidget { -Q_OBJECT + Q_OBJECT + public: NATStatus(QWidget *parent = 0); - ~NATStatus(); - void getNATStatus( ); - private: - class QLabel *iconLabel, *statusNAT; - + QLabel *iconLabel, *statusNAT; }; #endif diff --git a/retroshare-gui/src/gui/statusbar/peerstatus.cpp b/retroshare-gui/src/gui/statusbar/peerstatus.cpp index 442964b88..6d745f180 100644 --- a/retroshare-gui/src/gui/statusbar/peerstatus.cpp +++ b/retroshare-gui/src/gui/statusbar/peerstatus.cpp @@ -29,7 +29,7 @@ PeerStatus::PeerStatus(QWidget *parent) : QWidget(parent) { - QHBoxLayout *hbox = new QHBoxLayout(); + QHBoxLayout *hbox = new QHBoxLayout(this); hbox->setMargin(0); hbox->setSpacing(6); @@ -39,17 +39,13 @@ PeerStatus::PeerStatus(QWidget *parent) hbox->addWidget(iconLabel); statusPeers = new QLabel( tr("Online: 0 | Friends: 0 | Network: 0 "), this ); - //statusPeers->setMinimumSize( statusPeers->frameSize().width() + 0, 0 ); +// statusPeers->setMinimumSize( statusPeers->frameSize().width() + 0, 0 ); hbox->addWidget(statusPeers); - setLayout( hbox ); + setLayout(hbox); } -PeerStatus::~PeerStatus() -{ -} - void PeerStatus::getPeerStatus(unsigned int nFriendCount, unsigned int nOnlineCount) { /* set users/friends/network */ diff --git a/retroshare-gui/src/gui/statusbar/peerstatus.h b/retroshare-gui/src/gui/statusbar/peerstatus.h index e68429a1f..a8c83636c 100644 --- a/retroshare-gui/src/gui/statusbar/peerstatus.h +++ b/retroshare-gui/src/gui/statusbar/peerstatus.h @@ -23,20 +23,19 @@ #include +class QLabel; + class PeerStatus : public QWidget { -Q_OBJECT + Q_OBJECT + public: PeerStatus(QWidget *parent = 0); - ~PeerStatus(); - void getPeerStatus(unsigned int nFriendCount, unsigned int nOnlineCount); - private: - class QLabel *iconLabel, *statusPeers; - + QLabel *iconLabel, *statusPeers; }; #endif diff --git a/retroshare-gui/src/gui/statusbar/ratesstatus.cpp b/retroshare-gui/src/gui/statusbar/ratesstatus.cpp index f23af1052..1da4a9201 100644 --- a/retroshare-gui/src/gui/statusbar/ratesstatus.cpp +++ b/retroshare-gui/src/gui/statusbar/ratesstatus.cpp @@ -19,6 +19,7 @@ * Boston, MA 02110-1301, USA. ****************************************************************/ +#include #include #include "ratesstatus.h" @@ -30,7 +31,7 @@ RatesStatus::RatesStatus(QWidget *parent) : QWidget(parent) { - QHBoxLayout *hbox = new QHBoxLayout(); + QHBoxLayout *hbox = new QHBoxLayout(this); hbox->setMargin(0); hbox->setSpacing(6); @@ -40,15 +41,10 @@ RatesStatus::RatesStatus(QWidget *parent) hbox->addWidget(iconLabel); statusRates = new QLabel( tr("Down: 0.00 (kB/s) | Up: 0.00 (kB/s) "), this ); - //statusPeers->setMinimumSize( statusPeers->frameSize().width() + 0, 0 ); +// statusPeers->setMinimumSize( statusPeers->frameSize().width() + 0, 0 ); hbox->addWidget(statusRates); - setLayout( hbox ); - -} - -RatesStatus::~RatesStatus() -{ + setLayout(hbox); } void RatesStatus::getRatesStatus() @@ -87,6 +83,4 @@ void RatesStatus::getRatesStatus() { iconLabel->setPixmap(QPixmap(":/images/up0down0.png")); } - - } diff --git a/retroshare-gui/src/gui/statusbar/ratesstatus.h b/retroshare-gui/src/gui/statusbar/ratesstatus.h index 910a52e9b..9f0358896 100644 --- a/retroshare-gui/src/gui/statusbar/ratesstatus.h +++ b/retroshare-gui/src/gui/statusbar/ratesstatus.h @@ -20,26 +20,22 @@ ****************************************************************/ #ifndef RATESSTATUS_H #define RATESSTATUS_H -#include "gui/MainWindow.h" - #include +class QLabel; class RatesStatus : public QWidget { -Q_OBJECT + Q_OBJECT + public: RatesStatus(QWidget *parent = 0); - ~RatesStatus(); - void getRatesStatus( ); - private: - class QLabel *iconLabel, *statusRates; - + QLabel *iconLabel, *statusRates; }; #endif diff --git a/retroshare-gui/src/lang/retroshare_de.qm b/retroshare-gui/src/lang/retroshare_de.qm index dd1e953025b19ed54299beb98de20387ec029bd2..d5b140bd85a5ebe4e5dc606702c1039aca0f6a4c 100644 GIT binary patch delta 9126 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 delta 9025 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 AppearancePage - + Language Sprache - + <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:10pt; font-weight:400; font-style:normal; text-decoration:none;"> @@ -219,17 +219,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Wähle die Sprache für RetroShare aus</p></body></html> - + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:8pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Changes to language will only take effect after restarting RetroShare!</p></body></html> <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Arial; font-size:8pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Änderungen in der Sprachwahl wirken sich erst nach einem Neustart von Retroshare aus!</p></body></html> - + Style Stil - + <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:10pt; font-weight:400; font-style:normal; text-decoration:none;"> @@ -240,7 +240,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Wähle die Oberfläche für RetroShare aus</p></body></html> - + Style Sheet @@ -856,33 +856,33 @@ p, li { white-space: pre-wrap; } ChanMsgItem - + Remove Item Eintrag entfernen - - + + Expand Erweitern Download - Herunterladen + Herunterladen Play - Abspielen + Abspielen - + New - Neu + Neu - + Unsubscribe From Channel Kanal abbestellen @@ -1100,12 +1100,12 @@ Abgeholt: %2 Verfügbar: %3 - + No Channel Selected Keinen Kanal gewählt - + Restore Publish Rights for Channel Stelle Veröffentlichungsrechte für Kanal wieder her @@ -4917,7 +4917,7 @@ p, li { white-space: pre-wrap; } MainWindow - + Network Netzwerk @@ -4947,7 +4947,7 @@ p, li { white-space: pre-wrap; } Blogs - + Internal Error Interener Fehler @@ -4968,12 +4968,12 @@ p, li { white-space: pre-wrap; } Zeigen - - + + - + - + RetroShare @@ -5005,7 +5005,7 @@ p, li { white-space: pre-wrap; } Schnellstart Assistent - + Search Suchen @@ -5020,7 +5020,7 @@ p, li { white-space: pre-wrap; } Messenger - + Show/Hide Anzeigen/Verbergen @@ -5030,21 +5030,21 @@ p, li { white-space: pre-wrap; } &Schliessen - - - + + + You have %1 new messages Du hast %1 neue Beiträge - - - + + + You have %1 new message Du hast %1 neuen Beitrag - + Bandwidth Graph Bandbreiten-Graph @@ -5059,7 +5059,7 @@ p, li { white-space: pre-wrap; } Schliessen - + Minimize Minimieren @@ -5069,7 +5069,7 @@ p, li { white-space: pre-wrap; } Maximieren - + Links Cloud Verknüpfungs-Wolke @@ -5084,7 +5084,7 @@ p, li { white-space: pre-wrap; } - + Help Hilfe @@ -5094,7 +5094,7 @@ p, li { white-space: pre-wrap; } Über - + Forums Foren @@ -5104,7 +5104,7 @@ p, li { white-space: pre-wrap; } RetroShare %1 eine sichere und dezentralisierte Kommunikationsplattform - + Open Messages Öffne Nachrichten @@ -5114,12 +5114,12 @@ p, li { white-space: pre-wrap; } Anwendungen - + Plugins - + Do you really want to exit RetroShare ? Wollen Sie RetroShare wirklich beenden? @@ -5129,7 +5129,7 @@ p, li { white-space: pre-wrap; } Wirklich beenden? - + Low disk space warning Wenig Festplatenspeicher @@ -6290,12 +6290,12 @@ p, li { white-space: pre-wrap; } NATStatus - + <strong>NAT:</strong> - + Internet connection Internetverbindung @@ -6917,6 +6917,21 @@ p, li { white-space: pre-wrap; } Please enter the password to unlock the following GPG key: Bitte geben Sie das Passwort ein um folgenden GPG Schlüssel freizuschalten: + + + Examining shared files... + Prüfe freigegebene Dateien... + + + + Hashing file + Erstelle Prüfsumme + + + + Saving file index... + Speichere Dateiindex... + OnlineToaster @@ -7070,7 +7085,7 @@ p, li { white-space: pre-wrap; } Online: 0 | Freunde: 0 | Netzwerk: 0 - + <strong>Friends:</strong> @@ -7083,7 +7098,7 @@ p, li { white-space: pre-wrap; } PeersDialog - + Chat Chat @@ -7108,7 +7123,7 @@ p, li { white-space: pre-wrap; } Verbinde zum Freund - + Profile Profil @@ -7118,12 +7133,12 @@ p, li { white-space: pre-wrap; } RetroShare Link einfügen - + Welcome to RetroShare's group chat. Willkommen bei RetroShare's Gruppenchat. - + me ich @@ -7208,7 +7223,7 @@ p, li { white-space: pre-wrap; } Verfügbar - + Add Extra File Zusätzliche Datei hinzufügen @@ -7326,7 +7341,7 @@ p, li { white-space: pre-wrap; } - + Add Friend Freund hinzufügen @@ -7401,7 +7416,7 @@ p, li { white-space: pre-wrap; } Willst du diesen Freund entfernen? - + Save as... Speichern unter... @@ -7434,12 +7449,12 @@ p, li { white-space: pre-wrap; } Status Spalte ausblenden - + Friends Storm Aktivitäten - + is typing... tippt... @@ -7762,7 +7777,7 @@ p, li { white-space: pre-wrap; } PopupChatDialog - + Hide Avatar Avatar verstecken @@ -7782,7 +7797,7 @@ p, li { white-space: pre-wrap; } Nachrichten, die Du versendest gehen bei diesem Freund erst wieder ein wenn er Online ist - + Bold Fett @@ -7840,7 +7855,7 @@ p, li { white-space: pre-wrap; } Deaktiviere Emoticons - + Paste retroshare Link RetroShare Link einfügen @@ -7860,7 +7875,7 @@ p, li { white-space: pre-wrap; } Wähle dein Avatar Bild aus - + Add Extra File Zusätzlich eine Datei hinzufügen @@ -7897,7 +7912,7 @@ p, li { white-space: pre-wrap; } Text Datei (*.txt );;Alle Dateien (*) - + Your Friend is offline Do you want to send them a Message instead Dein Freund ist Offline willst du ihm stattdessen eine Nachricht senden @@ -7908,13 +7923,13 @@ Do you want to send them a Message instead Bild anhängen - + TextLabel - + is Idle and may not reply antwortet möglicherweise nicht, da der Status auf "Untätig" gesetzt wurde @@ -7934,7 +7949,7 @@ Do you want to send them a Message instead ist Offline. - + is typing... tippt... @@ -8784,12 +8799,12 @@ p, li { white-space: pre-wrap; } RatesStatus - + <strong>Down:</strong> 0.00 (kB/s) | <strong>Up:</strong> 0.00 (kB/s) - + <strong>Down:</strong> <strong>Runter:</strong> diff --git a/retroshare-gui/src/main.cpp b/retroshare-gui/src/main.cpp index 450e8b390..08a243de3 100644 --- a/retroshare-gui/src/main.cpp +++ b/retroshare-gui/src/main.cpp @@ -181,7 +181,6 @@ int main(int argc, char *argv[]) std::cerr << "connecting signals and slots" << std::endl ; QObject::connect(notify,SIGNAL(gotTurtleSearchResult(qulonglong,FileDetail)),w->searchDialog ,SLOT(updateFiles(qulonglong,FileDetail))) ; - QObject::connect(notify,SIGNAL(hashingInfoChanged(const QString&)),w ,SLOT(updateHashingInfo(const QString&))) ; QObject::connect(notify,SIGNAL(diskFull(int,int)) ,w ,SLOT(displayDiskSpaceWarning(int,int))) ; QObject::connect(notify,SIGNAL(filesPreModChanged(bool)) ,w->sharedfilesDialog ,SLOT(preModDirectories(bool) )) ; QObject::connect(notify,SIGNAL(filesPostModChanged(bool)) ,w->sharedfilesDialog ,SLOT(postModDirectories(bool) )) ;