mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-06-25 06:40:58 -04:00
added method to show a given post author into the people tab
This commit is contained in:
parent
64737827a1
commit
3a92124aac
6 changed files with 151 additions and 31 deletions
|
@ -1941,6 +1941,22 @@ void IdDialog::modifyReputation()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void IdDialog::navigate(const RsGxsId& gxs_id)
|
||||||
|
{
|
||||||
|
std::cerr << "IdDialog::navigate to " << gxs_id.toStdString() << std::endl;
|
||||||
|
|
||||||
|
// in order to do this, we just select the correct ID in the ID list
|
||||||
|
|
||||||
|
QList<QTreeWidgetItem*> select = ui->idTreeWidget->findItems(QString::fromStdString(gxs_id.toStdString()),Qt::MatchExactly | Qt::MatchRecursive | Qt::MatchWrap,RSID_COL_KEYID) ;
|
||||||
|
|
||||||
|
if(select.empty())
|
||||||
|
{
|
||||||
|
std::cerr << "Cannot find item with ID " << gxs_id << " in ID list." << std::endl;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
ui->idTreeWidget->setCurrentItem(*select.begin(),true);
|
||||||
|
|
||||||
|
}
|
||||||
void IdDialog::updateDisplay(bool complete)
|
void IdDialog::updateDisplay(bool complete)
|
||||||
{
|
{
|
||||||
/* Update identity list */
|
/* Update identity list */
|
||||||
|
|
|
@ -62,6 +62,7 @@ public:
|
||||||
|
|
||||||
void loadRequest(const TokenQueue *queue, const TokenRequest &req);
|
void loadRequest(const TokenQueue *queue, const TokenRequest &req);
|
||||||
|
|
||||||
|
void navigate(const RsGxsId& gxs_id) ; // shows the info about this particular ID
|
||||||
protected:
|
protected:
|
||||||
virtual void updateDisplay(bool complete);
|
virtual void updateDisplay(bool complete);
|
||||||
|
|
||||||
|
|
|
@ -352,7 +352,6 @@ void MainWindow::initStackedPage()
|
||||||
addPage(peopleDialog = new PeopleDialog(ui->stackPages), grp, ¬ify);
|
addPage(peopleDialog = new PeopleDialog(ui->stackPages), grp, ¬ify);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
IdDialog *idDialog = NULL;
|
|
||||||
addPage(idDialog = new IdDialog(ui->stackPages), grp, ¬ify);
|
addPage(idDialog = new IdDialog(ui->stackPages), grp, ¬ify);
|
||||||
|
|
||||||
//#ifdef RS_USE_CIRCLES
|
//#ifdef RS_USE_CIRCLES
|
||||||
|
@ -878,6 +877,9 @@ void SetForegroundWindowInternal(HWND hWnd)
|
||||||
case Friends:
|
case Friends:
|
||||||
_instance->ui->stackPages->setCurrentPage( _instance->friendsDialog );
|
_instance->ui->stackPages->setCurrentPage( _instance->friendsDialog );
|
||||||
break;
|
break;
|
||||||
|
case People:
|
||||||
|
_instance->ui->stackPages->setCurrentPage( _instance->idDialog );
|
||||||
|
break;
|
||||||
case ChatLobby:
|
case ChatLobby:
|
||||||
_instance->ui->stackPages->setCurrentPage( _instance->chatLobbyDialog );
|
_instance->ui->stackPages->setCurrentPage( _instance->chatLobbyDialog );
|
||||||
break;
|
break;
|
||||||
|
@ -974,6 +976,8 @@ void SetForegroundWindowInternal(HWND hWnd)
|
||||||
return _instance->friendsDialog->networkDialog;
|
return _instance->friendsDialog->networkDialog;
|
||||||
case Friends:
|
case Friends:
|
||||||
return _instance->friendsDialog;
|
return _instance->friendsDialog;
|
||||||
|
case People:
|
||||||
|
return _instance->idDialog;
|
||||||
case ChatLobby:
|
case ChatLobby:
|
||||||
return _instance->chatLobbyDialog;
|
return _instance->chatLobbyDialog;
|
||||||
case Transfers:
|
case Transfers:
|
||||||
|
|
|
@ -51,6 +51,7 @@ class GxsChannelDialog ;
|
||||||
class GxsForumsDialog ;
|
class GxsForumsDialog ;
|
||||||
class PostedDialog;
|
class PostedDialog;
|
||||||
class FriendsDialog;
|
class FriendsDialog;
|
||||||
|
class IdDialog;
|
||||||
class ChatLobbyWidget;
|
class ChatLobbyWidget;
|
||||||
class ChatDialog;
|
class ChatDialog;
|
||||||
class NetworkDialog;
|
class NetworkDialog;
|
||||||
|
@ -103,6 +104,7 @@ public:
|
||||||
Links = 10, /** Links page. */
|
Links = 10, /** Links page. */
|
||||||
#endif
|
#endif
|
||||||
Posted = 11, /** Posted links */
|
Posted = 11, /** Posted links */
|
||||||
|
People = 12 /** People page. */
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Create main window */
|
/** Create main window */
|
||||||
|
@ -137,6 +139,7 @@ public:
|
||||||
NewsFeed *newsFeed;
|
NewsFeed *newsFeed;
|
||||||
FriendsDialog *friendsDialog;
|
FriendsDialog *friendsDialog;
|
||||||
TransfersDialog *transfersDialog;
|
TransfersDialog *transfersDialog;
|
||||||
|
IdDialog *idDialog ;
|
||||||
ChatLobbyWidget *chatLobbyDialog;
|
ChatLobbyWidget *chatLobbyDialog;
|
||||||
MessagesDialog *messagesDialog;
|
MessagesDialog *messagesDialog;
|
||||||
SharedFilesDialog *sharedfilesDialog;
|
SharedFilesDialog *sharedfilesDialog;
|
||||||
|
|
|
@ -34,9 +34,11 @@
|
||||||
#include "gui/common/RSElidedItemDelegate.h"
|
#include "gui/common/RSElidedItemDelegate.h"
|
||||||
#include "gui/settings/rsharesettings.h"
|
#include "gui/settings/rsharesettings.h"
|
||||||
#include "gui/gxs/GxsIdTreeWidgetItem.h"
|
#include "gui/gxs/GxsIdTreeWidgetItem.h"
|
||||||
|
#include "gui/Identity/IdDialog.h"
|
||||||
#include "gui/gxs/GxsIdDetails.h"
|
#include "gui/gxs/GxsIdDetails.h"
|
||||||
#include "util/HandleRichText.h"
|
#include "util/HandleRichText.h"
|
||||||
#include "CreateGxsForumMsg.h"
|
#include "CreateGxsForumMsg.h"
|
||||||
|
#include "gui/MainWindow.h"
|
||||||
#include "gui/msgs/MessageComposer.h"
|
#include "gui/msgs/MessageComposer.h"
|
||||||
#include "util/DateTime.h"
|
#include "util/DateTime.h"
|
||||||
#include "gui/common/UIStateHelper.h"
|
#include "gui/common/UIStateHelper.h"
|
||||||
|
@ -64,7 +66,7 @@
|
||||||
#define IMAGE_BIOHAZARD ":/icons/yellow_biohazard64.png"
|
#define IMAGE_BIOHAZARD ":/icons/yellow_biohazard64.png"
|
||||||
#define IMAGE_WARNING_YELLOW ":/icons/warning_yellow_128.png"
|
#define IMAGE_WARNING_YELLOW ":/icons/warning_yellow_128.png"
|
||||||
#define IMAGE_WARNING_RED ":/icons/warning_red_128.png"
|
#define IMAGE_WARNING_RED ":/icons/warning_red_128.png"
|
||||||
#define IMAGE_WARNING_UNKNOWN":/icons/bullet_grey_128.png"
|
#define IMAGE_WARNING_UNKNOWN ":/icons/bullet_grey_128.png"
|
||||||
#define IMAGE_VOID ":/icons/void_128.png"
|
#define IMAGE_VOID ":/icons/void_128.png"
|
||||||
#define IMAGE_POSITIVE_OPINION ":/icons/png/thumbs-up.png"
|
#define IMAGE_POSITIVE_OPINION ":/icons/png/thumbs-up.png"
|
||||||
#define IMAGE_NEUTRAL_OPINION ":/icons/png/thumbs-neutral.png"
|
#define IMAGE_NEUTRAL_OPINION ":/icons/png/thumbs-neutral.png"
|
||||||
|
@ -122,10 +124,10 @@ public:
|
||||||
|
|
||||||
switch(warning_level)
|
switch(warning_level)
|
||||||
{
|
{
|
||||||
default:
|
|
||||||
case 0: icon = QIcon(IMAGE_VOID); break;
|
case 0: icon = QIcon(IMAGE_VOID); break;
|
||||||
case 1: icon = QIcon(IMAGE_WARNING_YELLOW); break;
|
case 1: icon = QIcon(IMAGE_WARNING_YELLOW); break;
|
||||||
case 2: icon = QIcon(IMAGE_WARNING_RED); break;
|
case 2: icon = QIcon(IMAGE_WARNING_RED); break;
|
||||||
|
default:
|
||||||
case 3: icon = QIcon(IMAGE_WARNING_UNKNOWN); break;
|
case 3: icon = QIcon(IMAGE_WARNING_UNKNOWN); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,6 +150,7 @@ GxsForumThreadWidget::GxsForumThreadWidget(const RsGxsGroupId &forumId, QWidget
|
||||||
mTokenTypeMessageData = nextTokenType();
|
mTokenTypeMessageData = nextTokenType();
|
||||||
mTokenTypeReplyMessage = nextTokenType();
|
mTokenTypeReplyMessage = nextTokenType();
|
||||||
mTokenTypeReplyForumMessage = nextTokenType();
|
mTokenTypeReplyForumMessage = nextTokenType();
|
||||||
|
mTokenTypeShowAuthorInPeople = nextTokenType();
|
||||||
mTokenTypeNegativeAuthor = nextTokenType();
|
mTokenTypeNegativeAuthor = nextTokenType();
|
||||||
mTokenTypeNeutralAuthor = nextTokenType();
|
mTokenTypeNeutralAuthor = nextTokenType();
|
||||||
mTokenTypePositiveAuthor = nextTokenType();
|
mTokenTypePositiveAuthor = nextTokenType();
|
||||||
|
@ -509,6 +512,9 @@ void GxsForumThreadWidget::threadListCustomPopupMenu(QPoint /*point*/)
|
||||||
QAction *markMsgAsUnreadChildren = new QAction(QIcon(":/images/message-mail.png"), tr("Mark as unread") + " (" + tr ("with children") + ")", &contextMnu);
|
QAction *markMsgAsUnreadChildren = new QAction(QIcon(":/images/message-mail.png"), tr("Mark as unread") + " (" + tr ("with children") + ")", &contextMnu);
|
||||||
connect(markMsgAsUnreadChildren, SIGNAL(triggered()), this, SLOT(markMsgAsUnreadChildren()));
|
connect(markMsgAsUnreadChildren, SIGNAL(triggered()), this, SLOT(markMsgAsUnreadChildren()));
|
||||||
|
|
||||||
|
QAction *showinpeopleAct = new QAction(QIcon(":/images/message-mail.png"), tr("Show in people tab"), &contextMnu);
|
||||||
|
connect(showinpeopleAct, SIGNAL(triggered()), this, SLOT(showInPeopleTab()));
|
||||||
|
|
||||||
if (IS_GROUP_SUBSCRIBED(mSubscribeFlags)) {
|
if (IS_GROUP_SUBSCRIBED(mSubscribeFlags)) {
|
||||||
QList<QTreeWidgetItem*> rows;
|
QList<QTreeWidgetItem*> rows;
|
||||||
QList<QTreeWidgetItem*> rowsRead;
|
QList<QTreeWidgetItem*> rowsRead;
|
||||||
|
@ -566,10 +572,13 @@ void GxsForumThreadWidget::threadListCustomPopupMenu(QPoint /*point*/)
|
||||||
contextMnu.addAction(collapseAll);
|
contextMnu.addAction(collapseAll);
|
||||||
|
|
||||||
contextMnu.addSeparator();
|
contextMnu.addSeparator();
|
||||||
contextMnu.addAction(flagaspositiveAct);
|
|
||||||
contextMnu.addAction(flagasneutralAct);
|
QMenu *submenu1 = contextMnu.addMenu(tr("Reputation")) ;
|
||||||
contextMnu.addAction(flagasnegativeAct);
|
submenu1->addAction(flagaspositiveAct);
|
||||||
contextMnu.addSeparator();
|
submenu1->addAction(flagasneutralAct);
|
||||||
|
submenu1->addAction(flagasnegativeAct);
|
||||||
|
contextMnu.addAction(showinpeopleAct);
|
||||||
|
|
||||||
contextMnu.addAction(replyauthorAct);
|
contextMnu.addAction(replyauthorAct);
|
||||||
|
|
||||||
contextMnu.exec(QCursor::pos());
|
contextMnu.exec(QCursor::pos());
|
||||||
|
@ -1748,6 +1757,17 @@ void GxsForumThreadWidget::setMsgReadStatus(QList<QTreeWidgetItem*> &rows, bool
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GxsForumThreadWidget::showInPeopleTab()
|
||||||
|
{
|
||||||
|
if (groupId().isNull() || mThreadId.isNull()) {
|
||||||
|
QMessageBox::information(this, tr("RetroShare"),tr("You cant act on the author to a non-existant Message"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RsGxsGrpMsgIdPair postId = std::make_pair(groupId(), mThreadId);
|
||||||
|
requestMsgData_ShowAuthorInPeople(postId) ;
|
||||||
|
}
|
||||||
|
|
||||||
void GxsForumThreadWidget::markMsgAsReadUnread (bool read, bool children, bool forum)
|
void GxsForumThreadWidget::markMsgAsReadUnread (bool read, bool children, bool forum)
|
||||||
{
|
{
|
||||||
if (groupId().isNull() || !IS_GROUP_SUBSCRIBED(mSubscribeFlags)) {
|
if (groupId().isNull() || !IS_GROUP_SUBSCRIBED(mSubscribeFlags)) {
|
||||||
|
@ -2013,6 +2033,18 @@ void GxsForumThreadWidget::replyMessageData(const RsGxsForumMsg &msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GxsForumThreadWidget::showAuthorInPeople(const RsGxsForumMsg& msg)
|
||||||
|
{
|
||||||
|
if ((msg.mMeta.mGroupId != groupId()) || (msg.mMeta.mMsgId != mThreadId))
|
||||||
|
{
|
||||||
|
std::cerr << "GxsForumThreadWidget::replyMessageData() ERROR Message Ids have changed!";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
RsGxsGrpMsgIdPair postId = std::make_pair(groupId(), mThreadId);
|
||||||
|
requestMsgData_ShowAuthorInPeople(postId);
|
||||||
|
}
|
||||||
|
|
||||||
void GxsForumThreadWidget::replyForumMessageData(const RsGxsForumMsg &msg)
|
void GxsForumThreadWidget::replyForumMessageData(const RsGxsForumMsg &msg)
|
||||||
{
|
{
|
||||||
if ((msg.mMeta.mGroupId != groupId()) || (msg.mMeta.mMsgId != mThreadId))
|
if ((msg.mMeta.mGroupId != groupId()) || (msg.mMeta.mMsgId != mThreadId))
|
||||||
|
@ -2266,6 +2298,24 @@ void GxsForumThreadWidget::requestMsgData_ReplyMessage(const RsGxsGrpMsgIdPair &
|
||||||
mTokenQueue->requestMsgInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, msgIds, mTokenTypeReplyMessage);
|
mTokenQueue->requestMsgInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, msgIds, mTokenTypeReplyMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GxsForumThreadWidget::requestMsgData_ShowAuthorInPeople(const RsGxsGrpMsgIdPair& msgId)
|
||||||
|
{
|
||||||
|
RsTokReqOptions opts;
|
||||||
|
opts.mReqType = GXS_REQUEST_TYPE_MSG_DATA;
|
||||||
|
|
||||||
|
#ifdef DEBUG_FORUMS
|
||||||
|
std::cerr << "GxsForumThreadWidget::requestMsgData_ReplyMessage(" << msgId.first << "," << msgId.second << ")";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
GxsMsgReq msgIds;
|
||||||
|
std::vector<RsGxsMessageId> &vect = msgIds[msgId.first];
|
||||||
|
vect.push_back(msgId.second);
|
||||||
|
|
||||||
|
uint32_t token;
|
||||||
|
mTokenQueue->requestMsgInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, msgIds, mTokenTypeShowAuthorInPeople);
|
||||||
|
}
|
||||||
|
|
||||||
void GxsForumThreadWidget::requestMsgData_ReplyForumMessage(const RsGxsGrpMsgIdPair &msgId)
|
void GxsForumThreadWidget::requestMsgData_ReplyForumMessage(const RsGxsGrpMsgIdPair &msgId)
|
||||||
{
|
{
|
||||||
RsTokReqOptions opts;
|
RsTokReqOptions opts;
|
||||||
|
@ -2335,6 +2385,42 @@ void GxsForumThreadWidget::loadMsgData_ReplyForumMessage(const uint32_t &token)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GxsForumThreadWidget::loadMsgData_ShowAuthorInPeople(const uint32_t &token)
|
||||||
|
{
|
||||||
|
#ifdef DEBUG_FORUMS
|
||||||
|
std::cerr << "GxsForumThreadWidget::loadMsgData_ReplyMessage()";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
std::vector<RsGxsForumMsg> msgs;
|
||||||
|
if (rsGxsForums->getMsgData(token, msgs))
|
||||||
|
{
|
||||||
|
if (msgs.size() != 1)
|
||||||
|
{
|
||||||
|
std::cerr << "GxsForumThreadWidget::loadMsgData_showAuthorInPeople() ERROR Wrong number of answers";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(msgs[0].mMeta.mAuthorId.isNull())
|
||||||
|
{
|
||||||
|
std::cerr << "GxsForumThreadWidget::loadMsgData_showAuthorInPeople() ERROR Missing Message Data...";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* window will destroy itself! */
|
||||||
|
IdDialog *idDialog = dynamic_cast<IdDialog*>(MainWindow::getPage(MainWindow::People));
|
||||||
|
|
||||||
|
if (!idDialog)
|
||||||
|
return ;
|
||||||
|
|
||||||
|
MainWindow::showWindow(MainWindow::People);
|
||||||
|
idDialog->navigate(RsGxsId(msgs[0].mMeta.mAuthorId));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
std::cerr << "GxsForumThreadWidget::loadMsgData_showAuthorInPeople() ERROR Missing Message Data...";
|
||||||
|
}
|
||||||
|
|
||||||
void GxsForumThreadWidget::loadMsgData_BanAuthor(const uint32_t &token)
|
void GxsForumThreadWidget::loadMsgData_BanAuthor(const uint32_t &token)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_FORUMS
|
#ifdef DEBUG_FORUMS
|
||||||
|
@ -2399,6 +2485,11 @@ void GxsForumThreadWidget::loadRequest(const TokenQueue *queue, const TokenReque
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (req.mUserType == mTokenTypeShowAuthorInPeople) {
|
||||||
|
loadMsgData_ShowAuthorInPeople(req.mToken);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (req.mUserType == mTokenTypeNegativeAuthor) {
|
if (req.mUserType == mTokenTypeNegativeAuthor) {
|
||||||
loadMsgData_BanAuthor(req.mToken);
|
loadMsgData_BanAuthor(req.mToken);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -80,6 +80,7 @@ private slots:
|
||||||
|
|
||||||
void replyMessageData(const RsGxsForumMsg &msg);
|
void replyMessageData(const RsGxsForumMsg &msg);
|
||||||
void replyForumMessageData(const RsGxsForumMsg &msg);
|
void replyForumMessageData(const RsGxsForumMsg &msg);
|
||||||
|
void showAuthorInPeople(const RsGxsForumMsg& msg);
|
||||||
|
|
||||||
void saveImage();
|
void saveImage();
|
||||||
|
|
||||||
|
@ -94,6 +95,7 @@ private slots:
|
||||||
void markMsgAsUnreadChildren();
|
void markMsgAsUnreadChildren();
|
||||||
|
|
||||||
void copyMessageLink();
|
void copyMessageLink();
|
||||||
|
void showInPeopleTab();
|
||||||
|
|
||||||
/* handle splitter */
|
/* handle splitter */
|
||||||
void togglethreadview();
|
void togglethreadview();
|
||||||
|
@ -145,12 +147,14 @@ private:
|
||||||
static void loadAuthorIdCallback(GxsIdDetailsType type, const RsIdentityDetails &details, QObject *object, const QVariant &/*data*/);
|
static void loadAuthorIdCallback(GxsIdDetailsType type, const RsIdentityDetails &details, QObject *object, const QVariant &/*data*/);
|
||||||
|
|
||||||
void requestMessageData(const RsGxsGrpMsgIdPair &msgId);
|
void requestMessageData(const RsGxsGrpMsgIdPair &msgId);
|
||||||
void loadMessageData(const uint32_t &token);
|
|
||||||
void requestMsgData_ReplyMessage(const RsGxsGrpMsgIdPair &msgId);
|
void requestMsgData_ReplyMessage(const RsGxsGrpMsgIdPair &msgId);
|
||||||
void loadMsgData_ReplyMessage(const uint32_t &token);
|
void requestMsgData_ShowAuthorInPeople(const RsGxsGrpMsgIdPair &msgId);
|
||||||
|
|
||||||
void requestMsgData_ReplyForumMessage(const RsGxsGrpMsgIdPair &msgId);
|
void requestMsgData_ReplyForumMessage(const RsGxsGrpMsgIdPair &msgId);
|
||||||
|
|
||||||
|
void loadMessageData(const uint32_t &token);
|
||||||
|
void loadMsgData_ReplyMessage(const uint32_t &token);
|
||||||
void loadMsgData_ReplyForumMessage(const uint32_t &token);
|
void loadMsgData_ReplyForumMessage(const uint32_t &token);
|
||||||
|
void loadMsgData_ShowAuthorInPeople(const uint32_t &token);
|
||||||
void loadMsgData_BanAuthor(const uint32_t &token);
|
void loadMsgData_BanAuthor(const uint32_t &token);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -173,6 +177,7 @@ private:
|
||||||
uint32_t mTokenTypeMessageData;
|
uint32_t mTokenTypeMessageData;
|
||||||
uint32_t mTokenTypeReplyMessage;
|
uint32_t mTokenTypeReplyMessage;
|
||||||
uint32_t mTokenTypeReplyForumMessage;
|
uint32_t mTokenTypeReplyForumMessage;
|
||||||
|
uint32_t mTokenTypeShowAuthorInPeople;
|
||||||
uint32_t mTokenTypeNegativeAuthor;
|
uint32_t mTokenTypeNegativeAuthor;
|
||||||
uint32_t mTokenTypePositiveAuthor;
|
uint32_t mTokenTypePositiveAuthor;
|
||||||
uint32_t mTokenTypeNeutralAuthor;
|
uint32_t mTokenTypeNeutralAuthor;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue