mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-07-23 14:41:04 -04:00
Added GroupTreeWidget to WikiDialog - enables subscribing to groups. (taken from GxsForums)
Added Orange Warning Message to GXS Window... git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6150 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
61c3afe56d
commit
aac114ba8e
4 changed files with 414 additions and 26 deletions
|
@ -21,6 +21,7 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <QMenu>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
|
||||||
|
@ -32,6 +33,10 @@
|
||||||
|
|
||||||
#include <retroshare/rswiki.h>
|
#include <retroshare/rswiki.h>
|
||||||
|
|
||||||
|
// These should be in retroshare/ folder.
|
||||||
|
#include "gxs/rsgxsflags.h"
|
||||||
|
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
@ -49,7 +54,8 @@
|
||||||
|
|
||||||
#define WIKI_DEBUG 1
|
#define WIKI_DEBUG 1
|
||||||
|
|
||||||
#define WIKIDIALOG_LISTING_GROUPDATA 2
|
#define WIKIDIALOG_LISTING_GROUPMETA 2
|
||||||
|
#define WIKIDIALOG_LISTING_GROUPDATA 3
|
||||||
#define WIKIDIALOG_LISTING_PAGES 5
|
#define WIKIDIALOG_LISTING_PAGES 5
|
||||||
#define WIKIDIALOG_MOD_LIST 6
|
#define WIKIDIALOG_MOD_LIST 6
|
||||||
#define WIKIDIALOG_MOD_PAGES 7
|
#define WIKIDIALOG_MOD_PAGES 7
|
||||||
|
@ -58,6 +64,21 @@
|
||||||
#define WIKIDIALOG_EDITTREE_DATA 9
|
#define WIKIDIALOG_EDITTREE_DATA 9
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Images for TreeWidget (Copied from GxsForums.cpp) */
|
||||||
|
#define IMAGE_FOLDER ":/images/folder16.png"
|
||||||
|
#define IMAGE_FOLDERGREEN ":/images/folder_green.png"
|
||||||
|
#define IMAGE_FOLDERRED ":/images/folder_red.png"
|
||||||
|
#define IMAGE_FOLDERYELLOW ":/images/folder_yellow.png"
|
||||||
|
#define IMAGE_FORUM ":/images/konversation.png"
|
||||||
|
#define IMAGE_SUBSCRIBE ":/images/edit_add24.png"
|
||||||
|
#define IMAGE_UNSUBSCRIBE ":/images/cancel.png"
|
||||||
|
#define IMAGE_INFO ":/images/info16.png"
|
||||||
|
#define IMAGE_NEWFORUM ":/images/new_forum16.png"
|
||||||
|
#define IMAGE_FORUMAUTHD ":/images/konv_message2.png"
|
||||||
|
#define IMAGE_COPYLINK ":/images/copyrslink.png"
|
||||||
|
|
||||||
|
|
||||||
/** Constructor */
|
/** Constructor */
|
||||||
WikiDialog::WikiDialog(QWidget *parent)
|
WikiDialog::WikiDialog(QWidget *parent)
|
||||||
: MainPage(parent)
|
: MainPage(parent)
|
||||||
|
@ -79,6 +100,15 @@ WikiDialog::WikiDialog(QWidget *parent)
|
||||||
|
|
||||||
connect( ui.treeWidget_Pages, SIGNAL(itemSelectionChanged()), this, SLOT(groupTreeChanged()));
|
connect( ui.treeWidget_Pages, SIGNAL(itemSelectionChanged()), this, SLOT(groupTreeChanged()));
|
||||||
|
|
||||||
|
|
||||||
|
// GroupTreeWidget.
|
||||||
|
connect(ui.groupTreeWidget, SIGNAL(treeCustomContextMenuRequested(QPoint)), this, SLOT(groupListCustomPopupMenu(QPoint)));
|
||||||
|
connect(ui.groupTreeWidget, SIGNAL(treeItemActivated(QString)), this, SLOT(wikiGroupChanged(QString)));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
QTimer *timer = new QTimer(this);
|
QTimer *timer = new QTimer(this);
|
||||||
timer->connect(timer, SIGNAL(timeout()), this, SLOT(checkUpdate()));
|
timer->connect(timer, SIGNAL(timeout()), this, SLOT(checkUpdate()));
|
||||||
timer->start(1000);
|
timer->start(1000);
|
||||||
|
@ -86,6 +116,14 @@ WikiDialog::WikiDialog(QWidget *parent)
|
||||||
/* setup TokenQueue */
|
/* setup TokenQueue */
|
||||||
mWikiQueue = new TokenQueue(rsWiki->getTokenService(), this);
|
mWikiQueue = new TokenQueue(rsWiki->getTokenService(), this);
|
||||||
|
|
||||||
|
|
||||||
|
/* Setup Group Tree */
|
||||||
|
mYourGroups = ui.groupTreeWidget->addCategoryItem(tr("My Groups"), QIcon(IMAGE_FOLDER), true);
|
||||||
|
mSubscribedGroups = ui.groupTreeWidget->addCategoryItem(tr("Subscribed Groups"), QIcon(IMAGE_FOLDERRED), true);
|
||||||
|
mPopularGroups = ui.groupTreeWidget->addCategoryItem(tr("Popular Groups"), QIcon(IMAGE_FOLDERGREEN), false);
|
||||||
|
mOtherGroups = ui.groupTreeWidget->addCategoryItem(tr("Other Groups"), QIcon(IMAGE_FOLDERYELLOW), false);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void WikiDialog::checkUpdate()
|
void WikiDialog::checkUpdate()
|
||||||
|
@ -373,7 +411,47 @@ std::string WikiDialog::getSelectedGroup()
|
||||||
|
|
||||||
void WikiDialog::insertWikiGroups()
|
void WikiDialog::insertWikiGroups()
|
||||||
{
|
{
|
||||||
requestGroupList();
|
//requestGroupList();
|
||||||
|
requestGroupMeta();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void WikiDialog::requestGroupMeta()
|
||||||
|
{
|
||||||
|
std::cerr << "WikiDialog::requestGroupMeta()";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
|
||||||
|
RsTokReqOptions opts;
|
||||||
|
opts.mReqType = GXS_REQUEST_TYPE_GROUP_META;
|
||||||
|
|
||||||
|
uint32_t token;
|
||||||
|
mWikiQueue->requestGroupInfo(token, RS_TOKREQ_ANSTYPE_SUMMARY, opts, WIKIDIALOG_LISTING_GROUPMETA);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void WikiDialog::loadGroupMeta(const uint32_t &token)
|
||||||
|
{
|
||||||
|
std::cerr << "WikiDialog::loadGroupMeta()";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
|
||||||
|
std::list<RsGroupMetaData> groupMeta;
|
||||||
|
|
||||||
|
if (!rsWiki->getGroupSummary(token, groupMeta))
|
||||||
|
{
|
||||||
|
std::cerr << "WikiDialog::loadGroupMeta() Error getting GroupMeta";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (groupMeta.size() > 0)
|
||||||
|
{
|
||||||
|
insertGroupsData(groupMeta);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cerr << "WikiDialog::loadGroupMeta() ERROR No Groups...";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -432,6 +510,7 @@ void WikiDialog::loadGroupData(const uint32_t &token)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void WikiDialog::requestPages(const std::list<RsGxsGroupId> &groupIds)
|
void WikiDialog::requestPages(const std::list<RsGxsGroupId> &groupIds)
|
||||||
{
|
{
|
||||||
std::cerr << "WikiDialog::requestPages()";
|
std::cerr << "WikiDialog::requestPages()";
|
||||||
|
@ -573,6 +652,10 @@ void WikiDialog::loadRequest(const TokenQueue *queue, const TokenRequest &req)
|
||||||
/* now switch on req */
|
/* now switch on req */
|
||||||
switch(req.mUserType)
|
switch(req.mUserType)
|
||||||
{
|
{
|
||||||
|
case WIKIDIALOG_LISTING_GROUPMETA:
|
||||||
|
loadGroupMeta(req.mToken);
|
||||||
|
break;
|
||||||
|
|
||||||
case WIKIDIALOG_LISTING_GROUPDATA:
|
case WIKIDIALOG_LISTING_GROUPDATA:
|
||||||
loadGroupData(req.mToken);
|
loadGroupData(req.mToken);
|
||||||
break;
|
break;
|
||||||
|
@ -601,4 +684,181 @@ void WikiDialog::loadRequest(const TokenQueue *queue, const TokenRequest &req)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/************************** Group Widget Stuff *********************************/
|
||||||
|
|
||||||
|
|
||||||
|
void WikiDialog::subscribeToGroup()
|
||||||
|
{
|
||||||
|
wikiSubscribe(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void WikiDialog::unsubscribeToGroup()
|
||||||
|
{
|
||||||
|
wikiSubscribe(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void WikiDialog::wikiSubscribe(bool subscribe)
|
||||||
|
{
|
||||||
|
if (mGroupId.empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t token;
|
||||||
|
rsWiki->subscribeToGroup(token, mGroupId, subscribe);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void WikiDialog::wikiGroupChanged(const QString &groupId)
|
||||||
|
{
|
||||||
|
mGroupId = groupId.toStdString();
|
||||||
|
|
||||||
|
if (mGroupId.empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::list<RsGxsGroupId> groupIds;
|
||||||
|
groupIds.push_back(mGroupId);
|
||||||
|
requestPages(groupIds);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void WikiDialog::groupListCustomPopupMenu(QPoint /*point*/)
|
||||||
|
{
|
||||||
|
|
||||||
|
int subscribeFlags = ui.groupTreeWidget->subscribeFlags(QString::fromStdString(mGroupId));
|
||||||
|
|
||||||
|
QMenu contextMnu(this);
|
||||||
|
|
||||||
|
std::cerr << "WikiDialog::groupListCustomPopupMenu()";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << " mGroupId: " << mGroupId;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << " subscribeFlags: " << subscribeFlags;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << " IS_GROUP_SUBSCRIBED(): " << IS_GROUP_SUBSCRIBED(subscribeFlags);
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << " IS_GROUP_ADMIN(): " << IS_GROUP_ADMIN(subscribeFlags);
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
|
||||||
|
QAction *action = contextMnu.addAction(QIcon(IMAGE_SUBSCRIBE), tr("Subscribe to Group"), this, SLOT(subscribeToGroup()));
|
||||||
|
action->setDisabled (mGroupId.empty() || IS_GROUP_SUBSCRIBED(subscribeFlags));
|
||||||
|
|
||||||
|
action = contextMnu.addAction(QIcon(IMAGE_UNSUBSCRIBE), tr("Unsubscribe to Group"), this, SLOT(unsubscribeToGroup()));
|
||||||
|
action->setEnabled (!mGroupId.empty() && IS_GROUP_SUBSCRIBED(subscribeFlags));
|
||||||
|
|
||||||
|
/************** NOT ENABLED YET *****************/
|
||||||
|
|
||||||
|
//if (!Settings->getForumOpenAllInNewTab()) {
|
||||||
|
// action = contextMnu.addAction(QIcon(""), tr("Open in new tab"), this, SLOT(openInNewTab()));
|
||||||
|
// if (mForumId.empty() || forumThreadWidget(mForumId)) {
|
||||||
|
// action->setEnabled(false);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
//contextMnu.addSeparator();
|
||||||
|
|
||||||
|
//contextMnu.addAction(QIcon(IMAGE_NEWFORUM), tr("New Forum"), this, SLOT(newforum()));
|
||||||
|
|
||||||
|
//action = contextMnu.addAction(QIcon(IMAGE_INFO), tr("Show Forum Details"), this, SLOT(showForumDetails()));
|
||||||
|
//action->setEnabled (!mForumId.empty ());
|
||||||
|
|
||||||
|
//action = contextMnu.addAction(QIcon(":/images/settings16.png"), tr("Edit Forum Details"), this, SLOT(editForumDetails()));
|
||||||
|
//action->setEnabled (!mForumId.empty () && IS_GROUP_ADMIN(subscribeFlags));
|
||||||
|
|
||||||
|
//QAction *shareKeyAct = new QAction(QIcon(":/images/gpgp_key_generate.png"), tr("Share Forum"), &contextMnu);
|
||||||
|
//connect( shareKeyAct, SIGNAL( triggered() ), this, SLOT( shareKey() ) );
|
||||||
|
//shareKeyAct->setEnabled(!mForumId.empty() && IS_GROUP_ADMIN(subscribeFlags));
|
||||||
|
//contextMnu.addAction( shareKeyAct);
|
||||||
|
|
||||||
|
//QAction *restoreKeysAct = new QAction(QIcon(":/images/settings16.png"), tr("Restore Publish Rights for Forum" ), &contextMnu);
|
||||||
|
//connect( restoreKeysAct , SIGNAL( triggered() ), this, SLOT( restoreForumKeys() ) );
|
||||||
|
//restoreKeysAct->setEnabled(!mForumId.empty() && !IS_GROUP_ADMIN(subscribeFlags));
|
||||||
|
//contextMnu.addAction( restoreKeysAct);
|
||||||
|
|
||||||
|
//action = contextMnu.addAction(QIcon(IMAGE_COPYLINK), tr("Copy RetroShare Link"), this, SLOT(copyForumLink()));
|
||||||
|
//action->setEnabled(!mForumId.empty());
|
||||||
|
|
||||||
|
//contextMnu.addSeparator();
|
||||||
|
|
||||||
|
contextMnu.exec(QCursor::pos());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void WikiDialog::insertGroupsData(const std::list<RsGroupMetaData> &wikiList)
|
||||||
|
{
|
||||||
|
std::list<RsGroupMetaData>::const_iterator it;
|
||||||
|
|
||||||
|
QList<GroupItemInfo> adminList;
|
||||||
|
QList<GroupItemInfo> subList;
|
||||||
|
QList<GroupItemInfo> popList;
|
||||||
|
QList<GroupItemInfo> otherList;
|
||||||
|
std::multimap<uint32_t, GroupItemInfo> popMap;
|
||||||
|
|
||||||
|
for (it = wikiList.begin(); it != wikiList.end(); it++) {
|
||||||
|
/* sort it into Publish (Own), Subscribed, Popular and Other */
|
||||||
|
uint32_t flags = it->mSubscribeFlags;
|
||||||
|
|
||||||
|
GroupItemInfo groupItemInfo;
|
||||||
|
GroupMetaDataToGroupItemInfo(*it, groupItemInfo);
|
||||||
|
|
||||||
|
if (IS_GROUP_ADMIN(flags)) {
|
||||||
|
adminList.push_back(groupItemInfo);
|
||||||
|
} else if (IS_GROUP_SUBSCRIBED(flags)) {
|
||||||
|
/* subscribed forum */
|
||||||
|
subList.push_back(groupItemInfo);
|
||||||
|
} else {
|
||||||
|
/* rate the others by popularity */
|
||||||
|
popMap.insert(std::make_pair(it->mPop, groupItemInfo));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* iterate backwards through popMap - take the top 5 or 10% of list */
|
||||||
|
uint32_t popCount = 5;
|
||||||
|
if (popCount < popMap.size() / 10)
|
||||||
|
{
|
||||||
|
popCount = popMap.size() / 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t i = 0;
|
||||||
|
uint32_t popLimit = 0;
|
||||||
|
std::multimap<uint32_t, GroupItemInfo>::reverse_iterator rit;
|
||||||
|
for(rit = popMap.rbegin(); ((rit != popMap.rend()) && (i < popCount)); rit++, i++) ;
|
||||||
|
if (rit != popMap.rend()) {
|
||||||
|
popLimit = rit->first;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (rit = popMap.rbegin(); rit != popMap.rend(); rit++) {
|
||||||
|
if (rit->second.popularity < (int) popLimit) {
|
||||||
|
otherList.append(rit->second);
|
||||||
|
} else {
|
||||||
|
popList.append(rit->second);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* now we can add them in as a tree! */
|
||||||
|
ui.groupTreeWidget->fillGroupItems(mYourGroups, adminList);
|
||||||
|
ui.groupTreeWidget->fillGroupItems(mSubscribedGroups, subList);
|
||||||
|
ui.groupTreeWidget->fillGroupItems(mPopularGroups, popList);
|
||||||
|
ui.groupTreeWidget->fillGroupItems(mOtherGroups, otherList);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void WikiDialog::GroupMetaDataToGroupItemInfo(const RsGroupMetaData &groupInfo, GroupItemInfo &groupItemInfo)
|
||||||
|
{
|
||||||
|
|
||||||
|
groupItemInfo.id = QString::fromStdString(groupInfo.mGroupId);
|
||||||
|
groupItemInfo.name = QString::fromUtf8(groupInfo.mGroupName.c_str());
|
||||||
|
//groupItemInfo.description = QString::fromUtf8(groupInfo.forumDesc);
|
||||||
|
groupItemInfo.popularity = groupInfo.mPop;
|
||||||
|
groupItemInfo.lastpost = QDateTime::fromTime_t(groupInfo.mLastPost);
|
||||||
|
groupItemInfo.subscribeFlags = groupInfo.mSubscribeFlags;
|
||||||
|
|
||||||
|
groupItemInfo.icon = QIcon(IMAGE_FORUM);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,12 @@ private slots:
|
||||||
|
|
||||||
void insertWikiGroups();
|
void insertWikiGroups();
|
||||||
|
|
||||||
|
// GroupTreeWidget stuff.
|
||||||
|
void groupListCustomPopupMenu(QPoint point);
|
||||||
|
void subscribeToGroup();
|
||||||
|
void unsubscribeToGroup();
|
||||||
|
void wikiGroupChanged(const QString &groupId);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void clearWikiPage();
|
void clearWikiPage();
|
||||||
|
@ -72,6 +78,16 @@ bool getSelectedPage(std::string &groupId, std::string &pageId, std::string &or
|
||||||
std::string getSelectedPage();
|
std::string getSelectedPage();
|
||||||
std::string getSelectedGroup();
|
std::string getSelectedGroup();
|
||||||
|
|
||||||
|
|
||||||
|
// Using GroupTreeWidget.
|
||||||
|
void wikiSubscribe(bool subscribe);
|
||||||
|
void GroupMetaDataToGroupItemInfo(const RsGroupMetaData &groupInfo, GroupItemInfo &groupItemInfo);
|
||||||
|
void insertGroupsData(const std::list<RsGroupMetaData> &wikiList);
|
||||||
|
|
||||||
|
|
||||||
|
void requestGroupMeta();
|
||||||
|
void loadGroupMeta(const uint32_t &token);
|
||||||
|
|
||||||
void requestGroupList();
|
void requestGroupList();
|
||||||
void loadGroupData(const uint32_t &token);
|
void loadGroupData(const uint32_t &token);
|
||||||
|
|
||||||
|
@ -92,6 +108,13 @@ void loadWikiPage(const uint32_t &token);
|
||||||
std::string mPageSelected;
|
std::string mPageSelected;
|
||||||
std::string mModSelected;
|
std::string mModSelected;
|
||||||
|
|
||||||
|
|
||||||
|
QTreeWidgetItem *mYourGroups;
|
||||||
|
QTreeWidgetItem *mSubscribedGroups;
|
||||||
|
QTreeWidgetItem *mPopularGroups;
|
||||||
|
QTreeWidgetItem *mOtherGroups;
|
||||||
|
std::string mGroupId; // From GroupTreeWidget
|
||||||
|
|
||||||
/* UI - from Designer */
|
/* UI - from Designer */
|
||||||
Ui::WikiDialog ui;
|
Ui::WikiDialog ui;
|
||||||
|
|
||||||
|
|
|
@ -105,14 +105,24 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>268</width>
|
<width>241</width>
|
||||||
<height>456</height>
|
<height>454</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
<property name="margin">
|
<property name="margin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="GroupTreeWidget" name="groupTreeWidget" native="true">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>150</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTreeWidget" name="treeWidget_Pages">
|
<widget class="QTreeWidget" name="treeWidget_Pages">
|
||||||
<column>
|
<column>
|
||||||
|
@ -339,8 +349,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>465</width>
|
<width>491</width>
|
||||||
<height>456</height>
|
<height>454</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
|
@ -380,6 +390,14 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>GroupTreeWidget</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>gui/common/GroupTreeWidget.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="Wiki_images.qrc"/>
|
<include location="Wiki_images.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -39,9 +39,96 @@
|
||||||
<property name="horizontalSpacing">
|
<property name="horizontalSpacing">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="MainPageStack" name="stackPages" native="true"/>
|
<widget class="MainPageStack" name="stackPages" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>50</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="palette">
|
||||||
|
<palette>
|
||||||
|
<active>
|
||||||
|
<colorrole role="Base">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>255</green>
|
||||||
|
<blue>255</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Window">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>170</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</active>
|
||||||
|
<inactive>
|
||||||
|
<colorrole role="Base">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>255</green>
|
||||||
|
<blue>255</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Window">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>170</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</inactive>
|
||||||
|
<disabled>
|
||||||
|
<colorrole role="Base">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>170</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Window">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>170</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</disabled>
|
||||||
|
</palette>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="autoFillBackground">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string> Warning: The services here are experimental. Please help us test them.
|
||||||
|
But Remember: Any data here *WILL* be lost when we upgrade the protocols.</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QStatusBar" name="statusbar"/>
|
<widget class="QStatusBar" name="statusbar"/>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue