From aa6d528c9894058641ab2d8ca51dcdcf82843743 Mon Sep 17 00:00:00 2001 From: Alexandre Almeida Date: Sat, 1 Jul 2017 11:01:19 -0300 Subject: [PATCH] Cancel track rename with Escape key --- include/TrackLabelButton.h | 5 +- include/TrackRenameLineEdit.h | 46 +++++++++++++++++++ src/gui/CMakeLists.txt | 1 + src/gui/widgets/TrackLabelButton.cpp | 7 +-- src/gui/widgets/TrackRenameLineEdit.cpp | 61 +++++++++++++++++++++++++ 5 files changed, 115 insertions(+), 5 deletions(-) create mode 100644 include/TrackRenameLineEdit.h create mode 100644 src/gui/widgets/TrackRenameLineEdit.cpp diff --git a/include/TrackLabelButton.h b/include/TrackLabelButton.h index 5b0e6c4a8..f1059bdbf 100644 --- a/include/TrackLabelButton.h +++ b/include/TrackLabelButton.h @@ -29,9 +29,10 @@ #include #include - class TrackView; +class TrackRenameLineEdit; + class TrackLabelButton : public QToolButton { @@ -60,7 +61,7 @@ protected: private: TrackView * m_trackView; QString m_iconName; - QLineEdit * m_renameLineEdit; + TrackRenameLineEdit * m_renameLineEdit; QRect m_buttonRect; QString elideName( const QString &name ); diff --git a/include/TrackRenameLineEdit.h b/include/TrackRenameLineEdit.h new file mode 100644 index 000000000..6883b9b05 --- /dev/null +++ b/include/TrackRenameLineEdit.h @@ -0,0 +1,46 @@ +/* + * TrackRenameLineEdit.h - class TrackRenameLineEdit + * + * Copyright (c) 2004-2008 Tobias Doerffel + * Copyright (c) 2017 Alexandre Almeida + * + * This file is part of LMMS - https://lmms.io + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + + +#ifndef TRACK_RENAME_LINE_EDIT_H +#define TRACK_RENAME_LINE_EDIT_H + +#include + +class TrackRenameLineEdit : public QLineEdit +{ + Q_OBJECT +public: + TrackRenameLineEdit( QWidget * parent ); + void show(); + +protected: + virtual void keyPressEvent( QKeyEvent * ke ); + +private: + QString m_oldName; +} ; + +#endif diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 4d40dcc08..5b4050bca 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -85,6 +85,7 @@ SET(LMMS_SRCS gui/widgets/ToolButton.cpp gui/widgets/ToolTip.cpp gui/widgets/TrackLabelButton.cpp + gui/widgets/TrackRenameLineEdit.cpp gui/widgets/VisualizationWidget.cpp PARENT_SCOPE diff --git a/src/gui/widgets/TrackLabelButton.cpp b/src/gui/widgets/TrackLabelButton.cpp index 231509e74..db310a05e 100644 --- a/src/gui/widgets/TrackLabelButton.cpp +++ b/src/gui/widgets/TrackLabelButton.cpp @@ -36,6 +36,7 @@ #include "InstrumentTrack.h" #include "RenameDialog.h" #include "Song.h" +#include "TrackRenameLineEdit.h" @@ -48,7 +49,7 @@ TrackLabelButton::TrackLabelButton( TrackView * _tv, QWidget * _parent ) : setAcceptDrops( true ); setCursor( QCursor( embed::getIconPixmap( "hand" ), 3, 3 ) ); setToolButtonStyle( Qt::ToolButtonTextBesideIcon ); - m_renameLineEdit = new QLineEdit( this ); + m_renameLineEdit = new TrackRenameLineEdit( this ); m_renameLineEdit->hide(); if( ConfigManager::inst()->value( "ui", "compacttrackbuttons" ).toInt() ) @@ -83,8 +84,8 @@ void TrackLabelButton::rename() if( ConfigManager::inst()->value( "ui", "compacttrackbuttons" ).toInt() ) { QString txt = m_trackView->getTrack()->name(); - RenameDialog rename_dlg( txt ); - rename_dlg.exec(); + RenameDialog renameDlg( txt ); + renameDlg.exec(); if( txt != text() ) { m_trackView->getTrack()->setName( txt ); diff --git a/src/gui/widgets/TrackRenameLineEdit.cpp b/src/gui/widgets/TrackRenameLineEdit.cpp new file mode 100644 index 000000000..b68af3141 --- /dev/null +++ b/src/gui/widgets/TrackRenameLineEdit.cpp @@ -0,0 +1,61 @@ +/* + * TrackRenameLineEdit.cpp - implementation of class TrackRenameLineEdit, which + * represents the text field that appears when one + * double-clicks a track's label to rename it + * + * Copyright (c) 2004-2008 Tobias Doerffel + * Copyright (c) 2017 Alexandre Almeida + * + * This file is part of LMMS - https://lmms.io + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + + +#include "TrackRenameLineEdit.h" + +#include + + + +TrackRenameLineEdit::TrackRenameLineEdit( QWidget * parent ) : + QLineEdit( parent ) +{ +} + + + + +void TrackRenameLineEdit::show() +{ + m_oldName = text(); + QLineEdit::show(); +} + + + + +void TrackRenameLineEdit::keyPressEvent( QKeyEvent * ke ) +{ + if( ke->key() == Qt::Key_Escape ) + { + setText( m_oldName ); + hide(); + } + + QLineEdit::keyPressEvent( ke ); +}