diff options
Diffstat (limited to 'Swift')
-rw-r--r-- | Swift/QtUI/tmp/QtContextMenu.cpp | 14 | ||||
-rw-r--r-- | Swift/QtUI/tmp/QtContextMenu.h | 17 | ||||
-rw-r--r-- | Swift/QtUI/tmp/QtRosterContextMenu.cpp | 108 | ||||
-rw-r--r-- | Swift/QtUI/tmp/QtRosterContextMenu.h | 32 |
4 files changed, 171 insertions, 0 deletions
diff --git a/Swift/QtUI/tmp/QtContextMenu.cpp b/Swift/QtUI/tmp/QtContextMenu.cpp new file mode 100644 index 0000000..c74fb31 --- /dev/null +++ b/Swift/QtUI/tmp/QtContextMenu.cpp @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2010 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include "ContextMenus/QtContextMenu.h" + +namespace Swift { + +QtContextMenu::~QtContextMenu() { +} + +} diff --git a/Swift/QtUI/tmp/QtContextMenu.h b/Swift/QtUI/tmp/QtContextMenu.h new file mode 100644 index 0000000..9e73ef9 --- /dev/null +++ b/Swift/QtUI/tmp/QtContextMenu.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +namespace Swift { + class RosterItem; + class QtContextMenu { + public: + virtual ~QtContextMenu(); + + virtual void show(RosterItem* item) = 0; + }; +} diff --git a/Swift/QtUI/tmp/QtRosterContextMenu.cpp b/Swift/QtUI/tmp/QtRosterContextMenu.cpp new file mode 100644 index 0000000..a59a2f7 --- /dev/null +++ b/Swift/QtUI/tmp/QtRosterContextMenu.cpp @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2010 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include "Swift/QtUI/ContextMenus/QtRosterContextMenu.h" + +#include <QInputDialog> +#include <QLineEdit> +#include <QMenu> +#include <QDebug> +#include <QDialog> +#include <QMessageBox> + +#include <boost/shared_ptr.hpp> +#include <boost/smart_ptr/make_shared.hpp> + +#include "Swiften/Roster/ContactRosterItem.h" +#include "Swiften/Roster/GroupRosterItem.h" +#include "Swiften/Base/String.h" +#include "Swiften/Roster/Roster.h" +#include "Swift/Controllers/UIEvents/UIEvent.h" +#include "Swift/Controllers/UIEvents/RemoveRosterItemUIEvent.h" +#include "Swift/Controllers/UIEvents/RenameRosterItemUIEvent.h" +#include "Swift/QtUI/QtSwiftUtil.h" +#include "Swift/QtUI/QtEditContactDialog.h" + + +namespace Swift { + +QtRosterContextMenu::QtRosterContextMenu(UIEventStream* eventStream, QtTreeWidget* treeWidget) : eventStream_(eventStream), treeWidget_(treeWidget), item_(NULL) { +} + +void QtRosterContextMenu::show(RosterItem* item) { + ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(item); + item_ = item; + QMenu contextMenu; + if (contact) { + contextMenu.addAction("Edit", this, SLOT(handleEditContact())); + } + GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(item); + if (group) { + contextMenu.addAction("Rename", this, SLOT(handleRenameGroup())); + } + contextMenu.exec(QCursor::pos()); +} + +void QtRosterContextMenu::handleEditContact() { + ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(item_); + assert(contact); + + // Figure out all the groups the contact is in + QList<QString> allGroups; + foreach (RosterItem* item, treeWidget_->getRoster()->getRoot()->getChildren()) { + GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(item); + if (group) { + allGroups.push_back(P2QSTRING(group->getDisplayName())); + } + } + + QtEditContactDialog editDialog(contact, allGroups, eventStream_); + + if (groupDialog.exec() == QDialog::Accepted) { + eventStream_->send(groupDialog.getRegroupEvent()); + } + + /* ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(item_); + QMessageBox msgBox; + msgBox.setWindowTitle("Confirm contact deletion"); + msgBox.setText("Are you sure you want to delete this contact?"); + msgBox.setInformativeText(QString("This will remove the contact '%1' from all groups they may be in.").arg(P2QSTRING(contact->getJID().toString()))); + msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); + msgBox.setDefaultButton(QMessageBox::Yes); + int ret = msgBox.exec(); + if (ret == QMessageBox::Yes) { + eventStream_->send(boost::shared_ptr<UIEvent>(new RemoveRosterItemUIEvent(contact->getJID()))); + }*/ + + +/* bool ok; + QString newName = QInputDialog::getText(NULL, "Rename contact", "New name for " + P2QSTRING(item_->getDisplayName()), QLineEdit::Normal, P2QSTRING(item_->getDisplayName()), &ok); + if (ok) { + eventStream_->send(boost::shared_ptr<UIEvent>(new RenameRosterItemUIEvent(contact->getJID(), Q2PSTRING(newName)))); + }*/ +} + +void QtRosterContextMenu::handleRenameGroup() { + /* + GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(item_); + assert(group); + bool ok; + QString newName = QInputDialog::getText(NULL, "Rename group", "New name for " + P2QSTRING(item_->getDisplayName()), QLineEdit::Normal, P2QSTRING(item_->getDisplayName()), &ok); + if (ok) { + std::vector<String> addedGroups; + std::vector<String> removedGroups; + addedGroups.push_back(Q2PSTRING(newName)); + removedGroups.push_back(group->getDisplayName()); + foreach (RosterItem* child, group->getChildren()) { + ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(child); + assert(contact); + eventStream_->send(boost::make_shared<RegroupRosterItemUIEvent>(contact->getJID(), addedGroups, removedGroups)); + } + } + */ +} + +} diff --git a/Swift/QtUI/tmp/QtRosterContextMenu.h b/Swift/QtUI/tmp/QtRosterContextMenu.h new file mode 100644 index 0000000..2357735 --- /dev/null +++ b/Swift/QtUI/tmp/QtRosterContextMenu.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2010 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <QObject> + +#include "Swift/QtUI/ContextMenus/QtContextMenu.h" +#include "Swift/QtUI/Roster/QtTreeWidget.h" +#include "Swift/Controllers/UIEvents/UIEventStream.h" + +namespace Swift { + class RosterItem; + class QtRosterContextMenu : public QObject, public QtContextMenu { + Q_OBJECT + public: + QtRosterContextMenu(UIEventStream* eventStream, QtTreeWidget* treeWidget); + void show(RosterItem* item); + + private slots: + void handleRenameGroup(); + void handleEditContact(); + + private: + UIEventStream* eventStream_; + QtTreeWidget* treeWidget_; + RosterItem* item_; + }; +} |