Fixed navigate to forum and channel group when clicking a forum/channel link.

Navigate to post/message is still a todo.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7638 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2014-10-25 15:50:00 +00:00
parent 929599ad7f
commit 392159ae4b
3 changed files with 44 additions and 40 deletions

View File

@ -37,6 +37,7 @@
#include "RetroShareLink.h" #include "RetroShareLink.h"
#include "MainWindow.h" #include "MainWindow.h"
#include "gui/gxsforums/GxsForumsDialog.h" #include "gui/gxsforums/GxsForumsDialog.h"
#include "gui/gxschannels/GxsChannelDialog.h"
#include "SearchDialog.h" #include "SearchDialog.h"
#include "msgs/MessageComposer.h" #include "msgs/MessageComposer.h"
#include "util/misc.h" #include "util/misc.h"
@ -1205,7 +1206,6 @@ static void processList(const QStringList &list, const QString &textSingular, co
std::cerr << " RetroShareLink::process ForumRequest : name : " << link.name().toStdString() << ". id : " << link.hash().toStdString() << ". msgId : " << link.msgId().toStdString() << std::endl; std::cerr << " RetroShareLink::process ForumRequest : name : " << link.name().toStdString() << ". id : " << link.hash().toStdString() << ". msgId : " << link.msgId().toStdString() << std::endl;
#endif #endif
MainWindow::showWindow(MainWindow::Forums); MainWindow::showWindow(MainWindow::Forums);
GxsForumsDialog *forumsDialog = dynamic_cast<GxsForumsDialog*>(MainWindow::getPage(MainWindow::Forums)); GxsForumsDialog *forumsDialog = dynamic_cast<GxsForumsDialog*>(MainWindow::getPage(MainWindow::Forums));
if (!forumsDialog) { if (!forumsDialog) {
@ -1227,38 +1227,19 @@ static void processList(const QStringList &list, const QString &textSingular, co
} }
break; break;
} }
#if 0
case TYPE_CHANNEL: case TYPE_CHANNEL:
{ {
#ifdef DEBUG_RSLINK #ifdef DEBUG_RSLINK
std::cerr << " RetroShareLink::process ChannelRequest : name : " << link.name().toStdString() << ". id : " << link.hash().toStdString() << ". msgId : " << link.msgId().toStdString() << std::endl; std::cerr << " RetroShareLink::process ChannelRequest : name : " << link.name().toStdString() << ". id : " << link.hash().toStdString() << ". msgId : " << link.msgId().toStdString() << std::endl;
#endif #endif
ChannelInfo ci;
if (!rsChannels->getChannelInfo(link.id().toStdString(), ci)) {
if (link.msgId().isEmpty()) {
channelUnknown.append(link.name());
} else {
channelMsgUnknown.append(link.name());
}
break;
}
ChannelMsgInfo msg;
if (!link.msgId().isEmpty()) {
if (!rsChannels->getChannelMessage(ci.channelId, link.msgId().toStdString(), msg)) {
channelMsgUnknown.append(link.name());
break;
}
}
MainWindow::showWindow(MainWindow::Channels); MainWindow::showWindow(MainWindow::Channels);
ChannelFeed *channelFeed = dynamic_cast<ChannelFeed*>(MainWindow::getPage(MainWindow::Channels)); GxsChannelDialog *channelDialog = dynamic_cast<GxsChannelDialog*>(MainWindow::getPage(MainWindow::Channels));
if (!channelFeed) { if (!channelDialog) {
return false; return false;
} }
if (channelFeed->navigate(ci.channelId, msg.msgId)) { if (channelDialog->navigate(RsGxsGroupId(link.id().toStdString()), RsGxsMessageId(link.msgId().toStdString()))) {
if (link.msgId().isEmpty()) { if (link.msgId().isEmpty()) {
channelFound.append(link.name()); channelFound.append(link.name());
} else { } else {
@ -1273,7 +1254,6 @@ static void processList(const QStringList &list, const QString &textSingular, co
} }
break; break;
} }
#endif
case TYPE_SEARCH: case TYPE_SEARCH:
{ {

View File

@ -471,23 +471,36 @@ void GxsGroupFrameDialog::loadComment(const RsGxsGroupId &grpId, const RsGxsMess
ui->messageTabWidget->setCurrentWidget(commentDialog); ui->messageTabWidget->setCurrentWidget(commentDialog);
} }
bool GxsGroupFrameDialog::navigate(const RsGxsGroupId groupId, const RsGxsMessageId& msgId) bool GxsGroupFrameDialog::navigate(const RsGxsGroupId &groupId, const RsGxsMessageId& msgId)
{ {
if (groupId.isNull()) { if (groupId.isNull()) {
return false; return false;
} }
if (ui->groupTreeWidget->activateId(QString::fromStdString(groupId.toStdString()), msgId.isNull()) == NULL) { if (mStateHelper->isLoading(TOKEN_TYPE_GROUP_SUMMARY)) {
mNavigatePendingGroupId = groupId;
mNavigatePendingMsgId = msgId;
/* No information if group is available */
return true;
}
QString groupIdString = QString::fromStdString(groupId.toStdString());
if (ui->groupTreeWidget->activateId(groupIdString, msgId.isNull()) == NULL) {
return false; return false;
} }
// if (mGroupId == groupId) {
// return false;
// }
//
// if (msgId.isNull()) {
// return true;
// }
changedGroup(groupIdString);
/* search exisiting tab */
GxsMessageFrameWidget *msgWidget = messageWidget(mGroupId, false);
if (!msgWidget) {
return false;
}
if (msgId.isNull()) {
return true;
}
//#TODO //#TODO
// if (mThreadLoading) { // if (mThreadLoading) {
@ -820,6 +833,14 @@ void GxsGroupFrameDialog::loadGroupSummary(const uint32_t &token)
if (userdata) { if (userdata) {
delete(userdata); delete(userdata);
} }
if (!mNavigatePendingGroupId.isNull()) {
/* Navigate pending */
navigate(mNavigatePendingGroupId, mNavigatePendingMsgId);
mNavigatePendingGroupId.clear();
mNavigatePendingMsgId.clear();
}
} }
/*********************** **** **** **** ***********************/ /*********************** **** **** **** ***********************/

View File

@ -74,7 +74,7 @@ public:
GxsGroupFrameDialog(RsGxsIfaceHelper *ifaceImpl, QWidget *parent = 0); GxsGroupFrameDialog(RsGxsIfaceHelper *ifaceImpl, QWidget *parent = 0);
virtual ~GxsGroupFrameDialog(); virtual ~GxsGroupFrameDialog();
bool navigate(const RsGxsGroupId groupId, const RsGxsMessageId& msgId); bool navigate(const RsGxsGroupId &groupId, const RsGxsMessageId& msgId);
// Callback for all Loads. // Callback for all Loads.
virtual void loadRequest(const TokenQueue *queue, const TokenRequest &req); virtual void loadRequest(const TokenQueue *queue, const TokenRequest &req);
@ -186,6 +186,9 @@ private:
QTreeWidgetItem *mPopularGroups; QTreeWidgetItem *mPopularGroups;
QTreeWidgetItem *mOtherGroups; QTreeWidgetItem *mOtherGroups;
RsGxsGroupId mNavigatePendingGroupId;
RsGxsMessageId mNavigatePendingMsgId;
UIStateHelper *mStateHelper; UIStateHelper *mStateHelper;
/** Qt Designer generated object */ /** Qt Designer generated object */