/**************************************************************************** ** ** 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); }
void ThreadListWidget::groupChanged() { ForumGroup *grp = static_cast<ForumGroup*> (sender()); if(grp != currentGroup) return; if(!grp->isSubscribed()) { groupDeleted(grp); } }
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(); }