mirror of https://github.com/OpenMW/openmw.git
Added support for the profiles and made creation/editing them more user friendly
parent
a4855186c5
commit
fe9120bcb3
@ -1,28 +0,0 @@
|
|||||||
#ifndef COMBOBOX_H
|
|
||||||
#define COMBOBOX_H
|
|
||||||
|
|
||||||
#include <QComboBox>
|
|
||||||
|
|
||||||
class ComboBox : public QComboBox
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
private:
|
|
||||||
QString oldText;
|
|
||||||
public:
|
|
||||||
ComboBox(QWidget *parent=0) : QComboBox(parent), oldText()
|
|
||||||
{
|
|
||||||
connect(this,SIGNAL(editTextChanged(const QString&)), this,
|
|
||||||
SLOT(textChangedSlot(const QString&)));
|
|
||||||
connect(this,SIGNAL(currentIndexChanged(const QString&)), this,
|
|
||||||
SLOT(textChangedSlot(const QString&)));
|
|
||||||
}
|
|
||||||
private slots:
|
|
||||||
void textChangedSlot(const QString &newText)
|
|
||||||
{
|
|
||||||
emit textChanged(oldText, newText);
|
|
||||||
oldText = newText;
|
|
||||||
}
|
|
||||||
signals:
|
|
||||||
void textChanged(const QString &oldText, const QString &newText);
|
|
||||||
};
|
|
||||||
#endif
|
|
@ -0,0 +1,52 @@
|
|||||||
|
#include <QRegExpValidator>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
#include "profilescombobox.hpp"
|
||||||
|
|
||||||
|
ProfilesComboBox::ProfilesComboBox(QWidget *parent) :
|
||||||
|
QComboBox(parent)
|
||||||
|
{
|
||||||
|
mValidator = new QRegExpValidator(QRegExp("^[a-zA-Z0-9_]*$"), this); // Alpha-numeric + underscore
|
||||||
|
|
||||||
|
setEditable(true);
|
||||||
|
setValidator(mValidator);
|
||||||
|
setCompleter(0);
|
||||||
|
|
||||||
|
connect(this, SIGNAL(currentIndexChanged(int)), this,
|
||||||
|
SLOT(slotIndexChanged(int)));
|
||||||
|
connect(lineEdit(), SIGNAL(returnPressed()), this,
|
||||||
|
SLOT(slotReturnPressed()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProfilesComboBox::setEditEnabled(bool editable)
|
||||||
|
{
|
||||||
|
if (!editable)
|
||||||
|
return setEditable(false);
|
||||||
|
|
||||||
|
// Reset the completer and validator
|
||||||
|
setEditable(true);
|
||||||
|
setValidator(mValidator);
|
||||||
|
setCompleter(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProfilesComboBox::slotReturnPressed()
|
||||||
|
{
|
||||||
|
QString current = currentText();
|
||||||
|
QString previous = itemText(currentIndex());
|
||||||
|
|
||||||
|
if (findText(current) != -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
setItemText(currentIndex(), current);
|
||||||
|
emit(profileRenamed(previous, current));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProfilesComboBox::slotIndexChanged(int index)
|
||||||
|
{
|
||||||
|
if (index == -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
emit(profileChanged(mOldProfile, currentText()));
|
||||||
|
mOldProfile = itemText(index);
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
#ifndef PROFILESCOMBOBOX_HPP
|
||||||
|
#define PROFILESCOMBOBOX_HPP
|
||||||
|
|
||||||
|
#include <QComboBox>
|
||||||
|
|
||||||
|
class QString;
|
||||||
|
|
||||||
|
class QRegExpValidator;
|
||||||
|
|
||||||
|
class ProfilesComboBox : public QComboBox
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit ProfilesComboBox(QWidget *parent = 0);
|
||||||
|
void setEditEnabled(bool editable);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void profileChanged(const QString &previous, const QString ¤t);
|
||||||
|
void profileRenamed(const QString &oldName, const QString &newName);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void slotReturnPressed();
|
||||||
|
void slotIndexChanged(int index);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString mOldProfile;
|
||||||
|
QRegExpValidator *mValidator;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // PROFILESCOMBOBOX_HPP
|
@ -0,0 +1,61 @@
|
|||||||
|
#include <QDialogButtonBox>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QValidator>
|
||||||
|
|
||||||
|
#include "lineedit.hpp"
|
||||||
|
|
||||||
|
#include "textinputdialog.hpp"
|
||||||
|
|
||||||
|
TextInputDialog::TextInputDialog(const QString& title, const QString &text, QWidget *parent) :
|
||||||
|
QDialog(parent)
|
||||||
|
{
|
||||||
|
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||||
|
mButtonBox = new QDialogButtonBox(this);
|
||||||
|
mButtonBox->addButton(QDialogButtonBox::Ok);
|
||||||
|
mButtonBox->addButton(QDialogButtonBox::Cancel);
|
||||||
|
|
||||||
|
setMaximumHeight(height());
|
||||||
|
setOkButtonEnabled(false);
|
||||||
|
setModal(true);
|
||||||
|
|
||||||
|
// Messageboxes on mac have no title
|
||||||
|
#ifndef Q_OS_MAC
|
||||||
|
setWindowTitle(title);
|
||||||
|
#else
|
||||||
|
Q_UNUSED(title);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
QLabel *label = new QLabel(this);
|
||||||
|
label->setText(text);
|
||||||
|
|
||||||
|
// Line edit
|
||||||
|
QValidator *validator = new QRegExpValidator(QRegExp("^[a-zA-Z0-9_]*$"), this); // Alpha-numeric + underscore
|
||||||
|
mLineEdit = new LineEdit(this);
|
||||||
|
mLineEdit->setValidator(validator);
|
||||||
|
mLineEdit->setCompleter(0);
|
||||||
|
|
||||||
|
QVBoxLayout *dialogLayout = new QVBoxLayout(this);
|
||||||
|
dialogLayout->addWidget(label);
|
||||||
|
dialogLayout->addWidget(mLineEdit);
|
||||||
|
dialogLayout->addWidget(mButtonBox);
|
||||||
|
|
||||||
|
connect(mButtonBox, SIGNAL(accepted()), this, SLOT(accept()));
|
||||||
|
connect(mButtonBox, SIGNAL(rejected()), this, SLOT(reject()));
|
||||||
|
}
|
||||||
|
|
||||||
|
int TextInputDialog::exec()
|
||||||
|
{
|
||||||
|
mLineEdit->clear();
|
||||||
|
mLineEdit->setFocus();
|
||||||
|
return QDialog::exec();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TextInputDialog::setOkButtonEnabled(bool enabled)
|
||||||
|
{
|
||||||
|
|
||||||
|
QPushButton *okButton = mButtonBox->button(QDialogButtonBox::Ok);
|
||||||
|
okButton->setEnabled(enabled);
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
#ifndef TEXTINPUTDIALOG_HPP
|
||||||
|
#define TEXTINPUTDIALOG_HPP
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
//#include "lineedit.hpp"
|
||||||
|
|
||||||
|
class QDialogButtonBox;
|
||||||
|
class LineEdit;
|
||||||
|
|
||||||
|
class TextInputDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit TextInputDialog(const QString& title, const QString &text, QWidget *parent = 0);
|
||||||
|
inline LineEdit *lineEdit() { return mLineEdit; }
|
||||||
|
void setOkButtonEnabled(bool enabled);
|
||||||
|
|
||||||
|
LineEdit *mLineEdit;
|
||||||
|
|
||||||
|
int exec();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QDialogButtonBox *mButtonBox;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // TEXTINPUTDIALOG_HPP
|
Loading…
Reference in New Issue