GUI: Begin basic drag/drop between buttons: Allow swapping places
Issue: #7
This commit is contained in:
@ -13,6 +13,10 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <QDrag>
|
||||
#include <QMimeData>
|
||||
#include <QApplication>
|
||||
#include "entrypushbutton.h"
|
||||
|
||||
EntryPushButton::EntryPushButton(const EntryConfig &config) : QPushButton()
|
||||
@ -37,9 +41,6 @@ EntryPushButton::EntryPushButton(const EntryConfig &config) : QPushButton()
|
||||
connect(this, SIGNAL(clicked()), this, SLOT(emitOwnClicked()));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void EntryPushButton::emitOwnClicked()
|
||||
{
|
||||
emit clicked(this->config);
|
||||
@ -65,12 +66,67 @@ void EntryPushButton::showName()
|
||||
this->setText(this->config.name);
|
||||
}
|
||||
|
||||
int EntryPushButton::getRow() const { return config.row; }
|
||||
int EntryPushButton::getCol() const { return config.col; }
|
||||
QString EntryPushButton::getName() const { return config.name; }
|
||||
QString EntryPushButton::getShortcutKey() const { return config.key; }
|
||||
void EntryPushButton::setShortcutKey(QString key) { this->config.key = key; }
|
||||
void EntryPushButton::setRow(int row) { this->config.row = row; }
|
||||
void EntryPushButton::setCol(int col) { this->config.col = col; }
|
||||
QStringList EntryPushButton::getArguments() const { return this->config.arguments; }
|
||||
QString EntryPushButton::getCommand() const { return this->config.command; }
|
||||
void EntryPushButton::mousePressEvent(QMouseEvent *event)
|
||||
{
|
||||
if(event->button() == Qt::LeftButton)
|
||||
{
|
||||
dragStartPosition = event->pos();
|
||||
}
|
||||
return QPushButton::mousePressEvent(event);
|
||||
}
|
||||
|
||||
void EntryPushButton::mouseMoveEvent(QMouseEvent *event)
|
||||
{
|
||||
if(!(event->buttons() & Qt::LeftButton))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if((event->pos() - dragStartPosition).manhattanLength() < QApplication::startDragDistance())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
QDrag *drag = new QDrag(this);
|
||||
QMimeData *mimeData = new QMimeData();
|
||||
QByteArray data;
|
||||
mimeData->setData(ENTRYBUTTON_MIME_TYPE_STR, data);
|
||||
drag->setMimeData(mimeData);
|
||||
Qt::DropAction dropAction = drag->exec(Qt::MoveAction);
|
||||
}
|
||||
|
||||
int EntryPushButton::getRow() const
|
||||
{
|
||||
return config.row;
|
||||
}
|
||||
int EntryPushButton::getCol() const
|
||||
{
|
||||
return config.col;
|
||||
}
|
||||
QString EntryPushButton::getName() const
|
||||
{
|
||||
return config.name;
|
||||
}
|
||||
QString EntryPushButton::getShortcutKey() const
|
||||
{
|
||||
return config.key;
|
||||
}
|
||||
void EntryPushButton::setShortcutKey(QString key)
|
||||
{
|
||||
this->config.key = key;
|
||||
}
|
||||
void EntryPushButton::setRow(int row)
|
||||
{
|
||||
this->config.row = row;
|
||||
}
|
||||
void EntryPushButton::setCol(int col)
|
||||
{
|
||||
this->config.col = col;
|
||||
}
|
||||
QStringList EntryPushButton::getArguments() const
|
||||
{
|
||||
return this->config.arguments;
|
||||
}
|
||||
QString EntryPushButton::getCommand() const
|
||||
{
|
||||
return this->config.command;
|
||||
}
|
||||
|
Reference in New Issue
Block a user