Пример #1
0
void GxsChannelPostsWidget::insertChannelDetails(const RsGxsChannelGroup &group)
{
	/* IMAGE */
	QPixmap chanImage;
	if (group.mImage.mData != NULL) {
		chanImage.loadFromData(group.mImage.mData, group.mImage.mSize, "PNG");
	} else {
		chanImage = QPixmap(CHAN_DEFAULT_IMAGE);
	}
	ui->logoLabel->setPixmap(chanImage);

	ui->subscribersLabel->setText(QString::number(group.mMeta.mPop)) ;

	if (group.mMeta.mSubscribeFlags & GXS_SERV::GROUP_SUBSCRIBE_PUBLISH)
	{
		mStateHelper->setWidgetEnabled(ui->postButton, true);
	}
	else
	{
		mStateHelper->setWidgetEnabled(ui->postButton, false);
	}

	ui->subscribeToolButton->setSubscribed(IS_GROUP_SUBSCRIBED(group.mMeta.mSubscribeFlags));

    bool autoDownload ;
            rsGxsChannels->getChannelAutoDownload(group.mMeta.mGroupId,autoDownload);
	setAutoDownload(autoDownload);

	if (IS_GROUP_SUBSCRIBED(group.mMeta.mSubscribeFlags)) {
		ui->feedToolButton->setEnabled(true);

		ui->fileToolButton->setEnabled(true);
		ui->infoWidget->hide();
		setViewMode(viewMode());

		ui->infoPosts->clear();
		ui->infoDescription->clear();
	} else {
		ui->infoPosts->setText(QString::number(group.mMeta.mVisibleMsgCount));
		ui->infoDescription->setText(QString::fromUtf8(group.mDescription.c_str()));

		ui->infoWidget->show();
		ui->feedWidget->hide();
		ui->fileWidget->hide();

		ui->feedToolButton->setEnabled(false);
		ui->fileToolButton->setEnabled(false);
	}
}
Пример #2
0
/** Constructor */
GxsChannelPostsWidget::GxsChannelPostsWidget(const RsGxsGroupId &channelId, QWidget *parent) :
    GxsMessageFramePostWidget(rsGxsChannels, parent),
    ui(new Ui::GxsChannelPostsWidget)
{
    /* Invoke the Qt Designer generated object setup routine */
    ui->setupUi(this);


    /* Setup UI helper */

    mStateHelper->addWidget(mTokenTypeAllPosts, ui->progressBar, UISTATE_LOADING_VISIBLE);
    mStateHelper->addWidget(mTokenTypeAllPosts, ui->loadingLabel, UISTATE_LOADING_VISIBLE);
    mStateHelper->addWidget(mTokenTypeAllPosts, ui->filterLineEdit);

    mStateHelper->addWidget(mTokenTypePosts, ui->loadingLabel, UISTATE_LOADING_VISIBLE);

    mStateHelper->addLoadPlaceholder(mTokenTypeGroupData, ui->nameLabel);

    mStateHelper->addWidget(mTokenTypeGroupData, ui->postButton);
    mStateHelper->addWidget(mTokenTypeGroupData, ui->logoLabel);
    mStateHelper->addWidget(mTokenTypeGroupData, ui->subscribeToolButton);

    /* Connect signals */
    connect(ui->postButton, SIGNAL(clicked()), this, SLOT(createMsg()));
    connect(ui->subscribeToolButton, SIGNAL(subscribe(bool)), this, SLOT(subscribeGroup(bool)));
    connect(NotifyQt::getInstance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged()));

    /* add filter actions */
    ui->filterLineEdit->addFilter(QIcon(), tr("Title"), FILTER_TITLE, tr("Search Title"));
    ui->filterLineEdit->addFilter(QIcon(), tr("Message"), FILTER_MSG, tr("Search Message"));
    ui->filterLineEdit->addFilter(QIcon(), tr("Filename"), FILTER_FILE_NAME, tr("Search Filename"));
    connect(ui->filterLineEdit, SIGNAL(textChanged(QString)), ui->feedWidget, SLOT(setFilterText(QString)));
    connect(ui->filterLineEdit, SIGNAL(textChanged(QString)), ui->fileWidget, SLOT(setFilterText(QString)));
    connect(ui->filterLineEdit, SIGNAL(filterChanged(int)), this, SLOT(filterChanged(int)));

    /* Initialize view button */
    //setViewMode(VIEW_MODE_FEEDS); see processSettings
    ui->infoWidget->hide();

    QSignalMapper *signalMapper = new QSignalMapper(this);
    connect(ui->feedToolButton, SIGNAL(clicked()), signalMapper, SLOT(map()));
    connect(ui->fileToolButton, SIGNAL(clicked()), signalMapper, SLOT(map()));
    signalMapper->setMapping(ui->feedToolButton, VIEW_MODE_FEEDS);
    signalMapper->setMapping(ui->fileToolButton, VIEW_MODE_FILES);
    connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(setViewMode(int)));

    /*************** Setup Left Hand Side (List of Channels) ****************/

    ui->loadingLabel->hide();
    ui->progressBar->hide();

    ui->nameLabel->setMinimumWidth(20);

    /* Initialize feed widget */
    ui->feedWidget->setSortRole(ROLE_PUBLISH, Qt::DescendingOrder);
    ui->feedWidget->setFilterCallback(filterItem);

    /* load settings */
    processSettings(true);

    /* Initialize subscribe button */
    QIcon icon;
    icon.addPixmap(QPixmap(":/images/redled.png"), QIcon::Normal, QIcon::On);
    icon.addPixmap(QPixmap(":/images/start.png"), QIcon::Normal, QIcon::Off);
    mAutoDownloadAction = new QAction(icon, "", this);
    mAutoDownloadAction->setCheckable(true);
    connect(mAutoDownloadAction, SIGNAL(triggered()), this, SLOT(toggleAutoDownload()));

    ui->subscribeToolButton->addSubscribedAction(mAutoDownloadAction);

    /* Initialize GUI */
    setAutoDownload(false);
    settingsChanged();
    setGroupId(channelId);
}
Пример #3
0
void GxsChannelPostsWidget::insertChannelDetails(const RsGxsChannelGroup &group)
{
    /* IMAGE */
    QPixmap chanImage;
    if (group.mImage.mData != NULL) {
        chanImage.loadFromData(group.mImage.mData, group.mImage.mSize, "PNG");
    } else {
        chanImage = QPixmap(CHAN_DEFAULT_IMAGE);
    }
    ui->logoLabel->setPixmap(chanImage);

    ui->subscribersLabel->setText(QString::number(group.mMeta.mPop)) ;

    if (group.mMeta.mSubscribeFlags & GXS_SERV::GROUP_SUBSCRIBE_PUBLISH)
    {
        mStateHelper->setWidgetEnabled(ui->postButton, true);
    }
    else
    {
        mStateHelper->setWidgetEnabled(ui->postButton, false);
    }

    ui->subscribeToolButton->setSubscribed(IS_GROUP_SUBSCRIBED(group.mMeta.mSubscribeFlags));

    bool autoDownload ;
    rsGxsChannels->getChannelAutoDownload(group.mMeta.mGroupId,autoDownload);
    setAutoDownload(autoDownload);

    if (IS_GROUP_SUBSCRIBED(group.mMeta.mSubscribeFlags)) {
        ui->feedToolButton->setEnabled(true);

        ui->fileToolButton->setEnabled(true);
        ui->infoWidget->hide();
        setViewMode(viewMode());

        ui->infoPosts->clear();
        ui->infoDescription->clear();
    } else {
        ui->infoPosts->setText(QString::number(group.mMeta.mVisibleMsgCount));
        ui->infoDescription->setText(QString::fromUtf8(group.mDescription.c_str()));

        ui->infoAdministrator->setId(group.mMeta.mAuthorId) ;

        QString distrib_string ( "[unknown]" );

        switch(group.mMeta.mCircleType)
        {
        case GXS_CIRCLE_TYPE_PUBLIC:
            distrib_string = tr("Public") ;
            break ;
        case GXS_CIRCLE_TYPE_EXTERNAL:
        {
            RsGxsCircleDetails det ;

            // !! What we need here is some sort of CircleLabel, which loads the circle and updates the label when done.

            if(rsGxsCircles->getCircleDetails(group.mMeta.mCircleId,det))
                distrib_string = tr("Restricted to members of circle \"")+QString::fromUtf8(det.mCircleName.c_str()) +"\"";
            else
                distrib_string = tr("Restricted to members of circle ")+QString::fromStdString(group.mMeta.mCircleId.toStdString()) ;
        }
        break ;
        case GXS_CIRCLE_TYPE_YOUR_EYES_ONLY:
            distrib_string = tr("Your eyes only");
            break ;
        case GXS_CIRCLE_TYPE_LOCAL:
            distrib_string = tr("You and your friend nodes");
            break ;
        default:
            std::cerr << "(EE) badly initialised group distribution ID = " << group.mMeta.mCircleType << std::endl;
        }

        ui->infoDistribution->setText(distrib_string);

        ui->infoWidget->show();
        ui->feedWidget->hide();
        ui->fileWidget->hide();

        ui->feedToolButton->setEnabled(false);
        ui->fileToolButton->setEnabled(false);
    }
}