Ejemplo n.º 1
0
/****************************************************************************
**
** Copyright (C) 2015
**
** This file is generated by the Magus toolkit
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
****************************************************************************/

// Include
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QMessageBox>
#include <QHeaderView>
#include <QEvent>
#include <QImage>
#include <QPixmap>
#include <QTreeWidgetItem>
#include "tool_sceneviewwidget.h"

namespace Magus
{
//****************************************************************************/
QtSceneViewWidget::QtSceneViewWidget(const QString& iconDir, QWidget* parent) : QWidget(parent)
{
    setWindowTitle(QString("Scene view"));
    mIconDir = iconDir;
    QVBoxLayout* mainLayout = new QVBoxLayout;
    mSearchLayout = new QHBoxLayout;
    mTreeLayout = new QVBoxLayout;

    // Create edit
    mSearchLine = new QLineEdit();
    connect(mSearchLine, SIGNAL(textChanged(QString)), this, SLOT(searchLineTextChanged(QString)));

    // Create findbutton
    QImage imageSearch(mIconDir + TOOL_SCENEVIEW_ICON_SEARCH);
    QPixmap pixMapSearch = QPixmap::fromImage(imageSearch).scaled(TOOL_SCENEVIEW_ICON_WIDTH, TOOL_SCENEVIEW_ICON_WIDTH);
    mSearchLabel = new QLabel();
    mSearchLabel->setPixmap(pixMapSearch);
    mSearchLabel->setContentsMargins(-8, -8, -8, -8);

    // Create clearbutton
    QImage imageClear(mIconDir + TOOL_SCENEVIEW_ICON_CLOSE);
    QPixmap pixMapClear = QPixmap::fromImage(imageClear).scaled(TOOL_SCENEVIEW_ICON_WIDTH, TOOL_SCENEVIEW_ICON_WIDTH);
    mSearchClearButton = new QPushButton();
    mSearchClearButton->setStyleSheet(QString("QPushButton {border: none; background: transparent;} QPushButton:hover {background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #565656, stop:1 #464646);}"));
    mSearchClearButton->setIcon(QIcon(pixMapClear));
    mSearchClearButton->setIconSize(QSize(TOOL_SCENEVIEW_ICON_WIDTH, TOOL_SCENEVIEW_ICON_WIDTH));
    mSearchClearButton->setContentsMargins(-8, -8, -8, -8);
    connect(mSearchClearButton, SIGNAL(clicked()), this, SLOT(clearSearchLine()));


    // Misc
    mVisibilityIconVisibleForGroups = true;
    mVisibilityIconVisibleForAssets = true;
    mDeletionIconVisibleForGroups = true;
    mDeletionIconVisibleForAssets = true;

    // Layout
    mSearchLayout->addWidget(mSearchLabel, 1);
    mSearchLayout->addWidget(mSearchLine, 2000);
    mSearchLayout->addWidget(mSearchClearButton, 1);
    setVisibilitySearchWidgets(false);
    mainLayout->addLayout(mSearchLayout, 1);
    mainLayout->addLayout(mTreeLayout, 2000);
    setLayout(mainLayout);
}

//****************************************************************************/
QtSceneViewWidget::~QtSceneViewWidget(void)
{
    // Delete all QtAssetGroups in mAssetGroupMap
    foreach (QtAssetGroup* group, mAssetGroupMap)
        delete group;

    mAssetGroupMap.clear();

}

//****************************************************************************/
bool QtSceneViewWidget::eventFilter(QObject* object, QEvent* event)
{
    QMouseEvent* mouseEvent = (QMouseEvent*) event;
    switch ((int) event->type())
    {
    case QEvent::MouseButtonPress:
        mouseClickHandler(mouseEvent);
        break;
    }
    return QObject::eventFilter(object, event);
}

//****************************************************************************/
void QtSceneViewWidget::mouseClickHandler(QMouseEvent* event)
{
    switch ((int) event->button())
    {
    case Qt::LeftButton:
    {
        // Get the selected item of the visible sceneview
        QTreeWidget* sceneView = getCurrentVisibleScene();
        if (sceneView)
        {
            QTreeWidgetItem* item = sceneView->itemAt(event->pos());
            int col = sceneView->columnAt(event->pos().x());
            if (itemIsGroup(item))
            {
                if (col == TOOL_SCENEVIEW_COLUMN_GROUP_CLOSE)
                {
                    handleDeletionOfGroup(sceneView, item);
                    return;
                }
                else if (col == TOOL_SCENEVIEW_COLUMN_GROUP_VISIBILITY)
                {
                    // Toggle visibility
                    toggleVisibilityOfGroup(item);
                }

                int groupId = getGroupIdOfGroupItem(item);
                emit groupSelected(sceneView, groupId);
            }
            else if (itemIsAsset(item))
            {
                if (col == TOOL_SCENEVIEW_COLUMN_ASSET_CLOSE)
                {
                    handleDeletionOfAsset(sceneView, item);
                    return;
                }
                else if (col == TOOL_SCENEVIEW_COLUMN_ASSET_VISIBILITY)
                {
                    // Toggle visibility
                    toggleVisibilityOfAsset(item);
                }

                int groupId = getGroupIdOfAssetItem(item);
                int assetId = getAssetIdOfAssetItem(item);
                emit assetSelected(sceneView, groupId, assetId);
            }
        }
    }
    break;

    case Qt::RightButton:
    {
        // TODO
    }
    break;
    }
}

//****************************************************************************/
bool QtSceneViewWidget::groupIsVisible(QTreeWidgetItem* groupItem)
{
    if (itemIsGroup(groupItem))
    {
        return (groupItem->data(TOOL_SCENEVIEW_KEY_VISIBLE, Qt::UserRole)).toBool();
    }

    return false;
}

//****************************************************************************/
bool QtSceneViewWidget::groupOfAssetItemIsVisible(QTreeWidgetItem* assetItem)
{
    if (itemIsAsset(assetItem))
    {
        QTreeWidgetItem* groupItem = assetItem->parent();
        if (groupItem)
        {
            return (groupItem->data(TOOL_SCENEVIEW_KEY_VISIBLE, Qt::UserRole)).toBool();
        }
    }

    return false;
}

//****************************************************************************/
bool QtSceneViewWidget::assetIsVisible(QTreeWidgetItem* assetItem)
{
    if (itemIsAsset(assetItem))
    {
        return (assetItem->data(TOOL_SCENEVIEW_KEY_VISIBLE, Qt::UserRole)).toBool();
    }

    return false;
}

//****************************************************************************/
void QtSceneViewWidget::toggleVisibilityOfGroup(QTreeWidgetItem* groupItem)
{
    if (!groupItem)
        return;

    bool visible = groupIsVisible(groupItem);
    setVisibilityOfGroup(groupItem, !visible);
}

//****************************************************************************/
void QtSceneViewWidget::setVisibilityOfGroup(int sceneId, int groupId, bool visible)
{
    QTreeWidgetItem* groupItem = getGroupItem(sceneId, groupId);
    setVisibilityOfGroup(groupItem, visible);
}

//****************************************************************************/
void QtSceneViewWidget::setVisibilityOfAllGroups(int sceneId, bool visible)
{
    QTreeWidget* sceneView = getSceneView(sceneId);
    QTreeWidgetItemIterator it(sceneView);
    while (*it)
    {
        if (itemIsGroup(*it))
            setVisibilityOfGroup(*it, visible);

        ++it;
    }
}

//****************************************************************************/
void QtSceneViewWidget::setVisibilityOfGroup(QTreeWidgetItem* groupItem, bool visible)
{
    if (!mVisibilityIconVisibleForGroups)
        return;

    if (!groupItem)
        return;

    // Set the icon
    QImage imageVis;
    if (visible)
        imageVis = QImage(mIconDir + TOOL_SCENEVIEW_ICON_VISIBLE);
    else
        imageVis = QImage(mIconDir + TOOL_SCENEVIEW_ICON_INVISIBLE);

    QPixmap pixMapVis = QPixmap::fromImage(imageVis).scaled(TOOL_SCENEVIEW_ICON_WIDTH, TOOL_SCENEVIEW_ICON_WIDTH);
    groupItem->setData(TOOL_SCENEVIEW_COLUMN_GROUP_VISIBILITY, Qt::DecorationRole, QVariant(pixMapVis));

    // Set the visibility flag
    groupItem->setData(TOOL_SCENEVIEW_KEY_VISIBLE, Qt::UserRole, QVariant(visible));

    // Signal that visibility of a group is changed
    emit groupVisibiltyChanged(getCurrentVisibleScene(), getGroupIdOfGroupItem(groupItem));

    // Set visibility of the children
    QTreeWidgetItemIterator it(groupItem);
    while (*it)
    {
        if (itemIsAsset(*it) && (*it)->parent() == groupItem)
            setVisibilityOfAsset(*it, visible);

        ++it;
    }
}

//****************************************************************************/
void QtSceneViewWidget::toggleVisibilityOfAsset(QTreeWidgetItem* assetItem)
{
    if (!assetItem)
        return;

    // Make asset only visisble/invisible if the parent group is visible;
    // if the group is not visible, the assets cannot be toggled.
    if (!groupOfAssetItemIsVisible(assetItem))
        return;

    bool visible = assetIsVisible(assetItem);
    setVisibilityOfAsset(assetItem, !visible);
}

//****************************************************************************/
void QtSceneViewWidget::setVisibilityOfAsset(int sceneId, int assetId, bool visible)
{
    QTreeWidgetItem* assetItem = getAssetItem(sceneId, assetId);
    setVisibilityOfAsset(assetItem, visible);
}

//****************************************************************************/
void QtSceneViewWidget::setVisibilityOfAsset(QTreeWidgetItem* assetItem, bool visible)
{
    if (!mVisibilityIconVisibleForAssets)
        return;

    if (!assetItem)
        return;

    // Set the icon
    QImage imageVis;
    if (visible)
        imageVis = QImage(mIconDir + TOOL_SCENEVIEW_ICON_VISIBLE);
    else
        imageVis = QImage(mIconDir + TOOL_SCENEVIEW_ICON_INVISIBLE);

    QPixmap pixMapVis = QPixmap::fromImage(imageVis).scaled(TOOL_SCENEVIEW_ICON_WIDTH, TOOL_SCENEVIEW_ICON_WIDTH);
    assetItem->setData(TOOL_SCENEVIEW_COLUMN_ASSET_VISIBILITY, Qt::DecorationRole, QVariant(pixMapVis));

    // Set the visibility flag
    assetItem->setData(TOOL_SCENEVIEW_KEY_VISIBLE, Qt::UserRole, QVariant(visible));

    // Signal that visibility of a group is changed
    emit groupVisibiltyChanged(getCurrentVisibleScene(), getGroupIdOfGroupItem(assetItem));
}

//****************************************************************************/
void QtSceneViewWidget::handleDeletionOfGroup(QTreeWidget* sceneView, QTreeWidgetItem* groupItem)
{
    if (!mDeletionIconVisibleForGroups)
        return;

    if (!groupItem)
        return;

    int groupId = getGroupIdOfGroupItem(groupItem);
    handleDeletionOfItem(sceneView, groupItem);

    // Emit signal
    emit groupDeleted(sceneView, groupId);
    emit groupDeleted(getSceneId(sceneView), groupId);
}
Ejemplo n.º 2
0
void ThreadListWidget::groupChanged() {
    ForumGroup *grp = static_cast<ForumGroup*> (sender());
    if(grp != currentGroup) return;

    if(!grp->isSubscribed()) {
        groupDeleted(grp);
    }
}
Ejemplo n.º 3
0
	void Client::connect() {
		m_mainSocket = new msocket();

		if (m_mainSocket->connect("messenger.hotmail.com",1863)){
			m_parser = new ParserNS (m_msnPassport, m_msnPass, m_initialStatus, this, m_mainSocket, "MSNP12");
			QObject::connect(m_parser, SIGNAL(clientIpPort (QString, QString)), this, SLOT(clientIpPort(QString, QString)));
			QObject::connect(m_parser, SIGNAL(connected()), this, SLOT(connected()));
			QObject::connect(m_parser, SIGNAL(disconnected(ConnectionError)), this, SLOT(disconnected(ConnectionError)));
			QObject::connect(m_parser, SIGNAL(newGroupArrived(Group*)), this, SLOT(newGroupArrived(Group*)));
			QObject::connect(m_parser, SIGNAL(newContactArrived(Contact*)), this, SLOT(newContactArrived(Contact*)));
			QObject::connect(m_parser, SIGNAL(statusChanged (QString, State, QString, QString)), this, SLOT(statusChanged(QString, State, QString, QString)));
			QObject::connect(m_parser, SIGNAL(personalMessage (QString, QString)), this, SLOT(personalMessage(QString, QString)));
			QObject::connect(m_parser, SIGNAL(hasBlog (QString)), this, SLOT(hasBlog(QString)));
			QObject::connect(m_parser, SIGNAL(groupDeleted (QString)), this, SLOT(groupDeleted(QString)));
			QObject::connect(m_parser, SIGNAL(chatRequest (QString, int, QString, QString, QString, QString)), this, SLOT(chatRequest(QString, int, QString, QString, QString, QString)));
			//QObject::connect(m_parser, SIGNAL(initChatSB (QString, QString)), this, SLOT(initChatSB(QString, QString)));
			QObject::connect(m_parser, SIGNAL(disconnected(ConnectionError)), this, SLOT(disconnected(ConnectionError)));
			m_parser->init();
		}
void viewGroupIscrived::adminGroup(group * grp){
    modifygroup* modgr= new modifygroup(grp, Boss, this);
    connect(modgr, SIGNAL(modified(group*)), this, SLOT(groupModified(group*)));
    connect(modgr, SIGNAL(deletethisgroup()), this, SLOT(groupDeleted()));
    modgr->show();
}