mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 21:20:31 -05:00 
			
		
		
		
	CW Keyer: retain only text, dashes and dots
This commit is contained in:
		
							parent
							
								
									abad9d7299
								
							
						
					
					
						commit
						e4e2eea9d5
					
				@ -169,7 +169,7 @@ CWKeyer::CWKeyer() :
 | 
				
			|||||||
    m_elementOn(false),
 | 
					    m_elementOn(false),
 | 
				
			||||||
    m_loop(false),
 | 
					    m_loop(false),
 | 
				
			||||||
	m_asciiChar('\0'),
 | 
						m_asciiChar('\0'),
 | 
				
			||||||
    m_mode(CWKey),
 | 
					    m_mode(CWNone),
 | 
				
			||||||
    m_keyIambicState(KeySilent),
 | 
					    m_keyIambicState(KeySilent),
 | 
				
			||||||
	m_textState(TextStart)
 | 
						m_textState(TextStart)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -215,49 +215,20 @@ void CWKeyer::setMode(CWMode mode)
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            m_textState = TextStart;
 | 
					            m_textState = TextStart;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        else if (mode == CWDots)
 | 
				
			||||||
        m_mode = mode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void CWKeyer::setKey(bool key)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (m_mode == CWKey)
 | 
					 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
        qDebug() << "CWKeyer::setKey: " << key;
 | 
					 | 
				
			||||||
        m_key = key;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void CWKeyer::setDot(bool dotOn)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (m_mode == CWIambic)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (dotOn)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            m_dash = false;
 | 
					 | 
				
			||||||
            m_dot = true;
 | 
					            m_dot = true;
 | 
				
			||||||
 | 
					            m_dash = false;
 | 
				
			||||||
 | 
					            m_keyIambicState = KeySilent;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else
 | 
					        else if (mode == CWDashes)
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            m_dot = false;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void CWKeyer::setDash(bool dashOn)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (m_mode == CWIambic)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (dashOn)
 | 
					 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            m_dot = false;
 | 
					            m_dot = false;
 | 
				
			||||||
            m_dash = true;
 | 
					            m_dash = true;
 | 
				
			||||||
 | 
					            m_keyIambicState = KeySilent;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else
 | 
					
 | 
				
			||||||
        {
 | 
					        m_mode = mode;
 | 
				
			||||||
            m_dash = false;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -265,20 +236,16 @@ int CWKeyer::getSample()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    QMutexLocker mutexLocker(&m_mutex);
 | 
					    QMutexLocker mutexLocker(&m_mutex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (m_mode == CWKey)
 | 
					    if (m_mode == CWText)
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        return m_key ? 1 : 0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    else if (m_mode == CWIambic)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    	nextStateIambic();
 | 
					 | 
				
			||||||
        return m_key ? 1 : 0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    else if (m_mode == CWText)
 | 
					 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    	nextStateText();
 | 
					    	nextStateText();
 | 
				
			||||||
        return m_key ? 1 : 0;
 | 
					        return m_key ? 1 : 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    else if ((m_mode == CWDots) || (m_mode == CWDashes))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        nextStateIambic();
 | 
				
			||||||
 | 
					        return m_key ? 1 : 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    	return 0;
 | 
					    	return 0;
 | 
				
			||||||
 | 
				
			|||||||
@ -31,8 +31,8 @@ public:
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        CWNone,
 | 
					        CWNone,
 | 
				
			||||||
        CWText,
 | 
					        CWText,
 | 
				
			||||||
        CWKey,
 | 
					        CWDots,
 | 
				
			||||||
        CWIambic
 | 
					        CWDashes
 | 
				
			||||||
    } CWMode;
 | 
					    } CWMode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    typedef enum
 | 
					    typedef enum
 | 
				
			||||||
@ -67,10 +67,6 @@ public:
 | 
				
			|||||||
    void setMode(CWMode mode);
 | 
					    void setMode(CWMode mode);
 | 
				
			||||||
    void setLoop(bool loop) { m_loop = loop; }
 | 
					    void setLoop(bool loop) { m_loop = loop; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void setKey(bool key);
 | 
					 | 
				
			||||||
    void setDot(bool dotOn);
 | 
					 | 
				
			||||||
    void setDash(bool dashOn);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    int getSample();
 | 
					    int getSample();
 | 
				
			||||||
    bool eom();
 | 
					    bool eom();
 | 
				
			||||||
    void resetText() { m_textState = TextStart; }
 | 
					    void resetText() { m_textState = TextStart; }
 | 
				
			||||||
 | 
				
			|||||||
@ -27,10 +27,7 @@ CWKeyerGUI::CWKeyerGUI(QWidget* parent) :
 | 
				
			|||||||
    QWidget(parent),
 | 
					    QWidget(parent),
 | 
				
			||||||
    ui(new Ui::CWKeyerGUI),
 | 
					    ui(new Ui::CWKeyerGUI),
 | 
				
			||||||
    m_messageQueue(0),
 | 
					    m_messageQueue(0),
 | 
				
			||||||
    m_cwKeyer(0),
 | 
					    m_cwKeyer(0)
 | 
				
			||||||
    m_key(0x30),
 | 
					 | 
				
			||||||
    m_keyDot(0x31),
 | 
					 | 
				
			||||||
    m_keyDash(0x32)
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ui->setupUi(this);
 | 
					    ui->setupUi(this);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -50,9 +47,8 @@ void CWKeyerGUI::setBuddies(MessageQueue* messageQueue, CWKeyer* cwKeyer)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void CWKeyerGUI::resetToDefaults()
 | 
					void CWKeyerGUI::resetToDefaults()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_key = false;
 | 
					    ui->cwTextEdit->setText("");
 | 
				
			||||||
    m_keyDot = false;
 | 
					    ui->cwSpeed->setValue(13);
 | 
				
			||||||
    m_keyDash = false;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QByteArray CWKeyerGUI::serialize() const
 | 
					QByteArray CWKeyerGUI::serialize() const
 | 
				
			||||||
@ -61,9 +57,6 @@ QByteArray CWKeyerGUI::serialize() const
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    s.writeString(1, ui->cwTextEdit->text());
 | 
					    s.writeString(1, ui->cwTextEdit->text());
 | 
				
			||||||
    s.writeS32(2, ui->cwSpeed->value());
 | 
					    s.writeS32(2, ui->cwSpeed->value());
 | 
				
			||||||
    s.writeS32(3, ui->morseKeyAssign->currentIndex());
 | 
					 | 
				
			||||||
    s.writeS32(4, ui->iambicKeyDotAssign->currentIndex());
 | 
					 | 
				
			||||||
    s.writeS32(5, ui->iambicKeyDashAssign->currentIndex());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return s.final();
 | 
					    return s.final();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -87,12 +80,6 @@ bool CWKeyerGUI::deserialize(const QByteArray& data)
 | 
				
			|||||||
        ui->cwTextEdit->setText(aString);
 | 
					        ui->cwTextEdit->setText(aString);
 | 
				
			||||||
        d.readS32(2, &aValue, 13);
 | 
					        d.readS32(2, &aValue, 13);
 | 
				
			||||||
        ui->cwSpeed->setValue(aValue);
 | 
					        ui->cwSpeed->setValue(aValue);
 | 
				
			||||||
        d.readS32(3, &aValue, 0);
 | 
					 | 
				
			||||||
        ui->morseKeyAssign->setCurrentIndex(aValue);
 | 
					 | 
				
			||||||
        d.readS32(4, &aValue, 1);
 | 
					 | 
				
			||||||
        ui->iambicKeyDotAssign->setCurrentIndex(aValue);
 | 
					 | 
				
			||||||
        d.readS32(5, &aValue, 2);
 | 
					 | 
				
			||||||
        ui->iambicKeyDashAssign->setCurrentIndex(aValue);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        applySettings();
 | 
					        applySettings();
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
@ -118,49 +105,37 @@ void CWKeyerGUI::on_cwSpeed_valueChanged(int value)
 | 
				
			|||||||
    m_cwKeyer->setWPM(value);
 | 
					    m_cwKeyer->setWPM(value);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CWKeyerGUI::on_morseKey_toggled(bool checked)
 | 
					void CWKeyerGUI::on_playDots_toggled(bool checked)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    //ui->morseKey->setEnabled(!checked);
 | 
					    //ui->playDots->setEnabled(!checked); // release other source inputs
 | 
				
			||||||
    ui->iambicKey->setEnabled(!checked);
 | 
					    ui->playDashes->setEnabled(!checked);
 | 
				
			||||||
    ui->playStop->setEnabled(!checked);
 | 
					    ui->playText->setEnabled(!checked);
 | 
				
			||||||
    m_cwKeyer->setMode(checked ? CWKeyer::CWKey : CWKeyer::CWNone);
 | 
					
 | 
				
			||||||
 | 
					    m_cwKeyer->setMode(checked ? CWKeyer::CWDots : CWKeyer::CWNone);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CWKeyerGUI::on_morseKeyAssign_currentIndexChanged(int index)
 | 
					void CWKeyerGUI::on_playDashes_toggled(bool checked)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if ((index >= 0) && (index < 9)) {
 | 
					    ui->playDots->setEnabled(!checked); // release other source inputs
 | 
				
			||||||
        m_key = 0x30 + index;
 | 
					    //ui->playDashes->setEnabled(!checked);
 | 
				
			||||||
    }
 | 
					    ui->playText->setEnabled(!checked);
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CWKeyerGUI::on_iambicKey_toggled(bool checked)
 | 
					    m_cwKeyer->setMode(checked ? CWKeyer::CWDashes : CWKeyer::CWNone);
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    ui->morseKey->setEnabled(!checked);
 | 
					 | 
				
			||||||
    //ui->iambicKey->setEnabled(!checked);
 | 
					 | 
				
			||||||
    ui->playStop->setEnabled(!checked);
 | 
					 | 
				
			||||||
    m_cwKeyer->setMode(checked ? CWKeyer::CWIambic : CWKeyer::CWNone);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void CWKeyerGUI::on_iambicKeyDotAssign_currentIndexChanged(int index)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if ((index >= 0) && (index < 9)) {
 | 
					 | 
				
			||||||
        m_keyDot = 0x30 + index;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void CWKeyerGUI::on_iambicKeyDashAssign_currentIndexChanged(int index)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if ((index >= 0) && (index < 9)) {
 | 
					 | 
				
			||||||
        m_keyDash = 0x30 + index;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CWKeyerGUI::on_playText_toggled(bool checked)
 | 
					void CWKeyerGUI::on_playText_toggled(bool checked)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ui->morseKey->setEnabled(!checked);
 | 
					    ui->playDots->setEnabled(!checked); // release other source inputs
 | 
				
			||||||
    ui->iambicKey->setEnabled(!checked);
 | 
					    ui->playDashes->setEnabled(!checked);
 | 
				
			||||||
    //ui->playStop->setEnabled(!checked);
 | 
					    //ui->playText->setEnabled(!checked);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_cwKeyer->setMode(checked ? CWKeyer::CWText : CWKeyer::CWNone);
 | 
					    m_cwKeyer->setMode(checked ? CWKeyer::CWText : CWKeyer::CWNone);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (checked) {
 | 
				
			||||||
 | 
					        ui->playStop->setChecked(true);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        ui->playStop->setChecked(false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CWKeyerGUI::on_playLoop_toggled(bool checked)
 | 
					void CWKeyerGUI::on_playLoop_toggled(bool checked)
 | 
				
			||||||
@ -191,79 +166,4 @@ void CWKeyerGUI::applySettings()
 | 
				
			|||||||
    value = ui->cwSpeed->value();
 | 
					    value = ui->cwSpeed->value();
 | 
				
			||||||
    ui->cwSpeedText->setText(QString("%1").arg(value));
 | 
					    ui->cwSpeedText->setText(QString("%1").arg(value));
 | 
				
			||||||
    m_cwKeyer->setWPM(value);
 | 
					    m_cwKeyer->setWPM(value);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    value = ui->morseKeyAssign->currentIndex();
 | 
					 | 
				
			||||||
    if ((value >= 0) && (value < 9)) {
 | 
					 | 
				
			||||||
        m_key = 0x30 + value;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    value = ui->iambicKeyDotAssign->currentIndex();
 | 
					 | 
				
			||||||
    if ((value >= 0) && (value < 9)) {
 | 
					 | 
				
			||||||
        m_keyDot = 0x30 + value;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    value = ui->iambicKeyDashAssign->currentIndex();
 | 
					 | 
				
			||||||
    if ((value >= 0) && (value < 9)) {
 | 
					 | 
				
			||||||
        m_keyDash = 0x30 + value;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
void CWKeyerGUI::keyPressEvent(QKeyEvent* keyEvent)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    int key = keyEvent->key();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Escape halts CW engine and releases keyboard immediately
 | 
					 | 
				
			||||||
    // Thus keyboard cannot be left stuck
 | 
					 | 
				
			||||||
    if (key == Qt::Key_Escape)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        m_cwKeyer->setMode(CWKeyer::CWNone);
 | 
					 | 
				
			||||||
        ui->morseKey->setChecked(false);
 | 
					 | 
				
			||||||
        ui->iambicKey->setChecked(false);
 | 
					 | 
				
			||||||
        ui->playStop->setChecked(false);
 | 
					 | 
				
			||||||
        ui->morseKey->setEnabled(true);
 | 
					 | 
				
			||||||
        ui->iambicKey->setEnabled(true);
 | 
					 | 
				
			||||||
        ui->playStop->setEnabled(true);
 | 
					 | 
				
			||||||
        this->releaseKeyboard();
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (!keyEvent->isAutoRepeat())
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        qDebug() << "CWKeyerGUI::keyPressEvent: key"
 | 
					 | 
				
			||||||
                << ": " << key;
 | 
					 | 
				
			||||||
        if (key == m_key)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            m_cwKeyer->setKey(true);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        else if (key == m_keyDot)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            m_cwKeyer->setDot(true);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        else if (key == m_keyDash)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            m_cwKeyer->setDash(true);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void CWKeyerGUI::keyReleaseEvent(QKeyEvent* keyEvent)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (!keyEvent->isAutoRepeat())
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        qDebug() << "CWKeyerGUI::keyReleaseEvent: key"
 | 
					 | 
				
			||||||
                << ": " << keyEvent->key();
 | 
					 | 
				
			||||||
        if (keyEvent->key() == m_key)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            m_cwKeyer->setKey(false);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        else if (keyEvent->key() == m_keyDot)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            m_cwKeyer->setDot(false);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        else if (keyEvent->key() == m_keyDash)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            m_cwKeyer->setDash(false);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -42,18 +42,11 @@ public:
 | 
				
			|||||||
    QByteArray serialize() const;
 | 
					    QByteArray serialize() const;
 | 
				
			||||||
    bool deserialize(const QByteArray& data);
 | 
					    bool deserialize(const QByteArray& data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					 | 
				
			||||||
    void keyPressEvent(QKeyEvent* keyEvent);
 | 
					 | 
				
			||||||
    void keyReleaseEvent(QKeyEvent* keyEvent);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    Ui::CWKeyerGUI* ui;
 | 
					    Ui::CWKeyerGUI* ui;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    MessageQueue* m_messageQueue;
 | 
					    MessageQueue* m_messageQueue;
 | 
				
			||||||
    CWKeyer* m_cwKeyer;
 | 
					    CWKeyer* m_cwKeyer;
 | 
				
			||||||
    int m_key;
 | 
					 | 
				
			||||||
    int m_keyDot;
 | 
					 | 
				
			||||||
    int m_keyDash;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void applySettings();
 | 
					    void applySettings();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -61,11 +54,8 @@ private slots:
 | 
				
			|||||||
    void on_cwTextClear_clicked(bool checked);
 | 
					    void on_cwTextClear_clicked(bool checked);
 | 
				
			||||||
    void on_cwTextEdit_editingFinished();
 | 
					    void on_cwTextEdit_editingFinished();
 | 
				
			||||||
    void on_cwSpeed_valueChanged(int value);
 | 
					    void on_cwSpeed_valueChanged(int value);
 | 
				
			||||||
    void on_morseKey_toggled(bool checked);
 | 
					    void on_playDots_toggled(bool checked);
 | 
				
			||||||
    void on_morseKeyAssign_currentIndexChanged(int index);
 | 
					    void on_playDashes_toggled(bool checked);
 | 
				
			||||||
    void on_iambicKey_toggled(bool checked);
 | 
					 | 
				
			||||||
    void on_iambicKeyDotAssign_currentIndexChanged(int index);
 | 
					 | 
				
			||||||
    void on_iambicKeyDashAssign_currentIndexChanged(int index);
 | 
					 | 
				
			||||||
    void on_playText_toggled(bool checked);
 | 
					    void on_playText_toggled(bool checked);
 | 
				
			||||||
    void on_playLoop_toggled(bool checked);
 | 
					    void on_playLoop_toggled(bool checked);
 | 
				
			||||||
    void on_playStop_toggled(bool checked);
 | 
					    void on_playStop_toggled(bool checked);
 | 
				
			||||||
 | 
				
			|||||||
@ -72,9 +72,9 @@
 | 
				
			|||||||
      </widget>
 | 
					      </widget>
 | 
				
			||||||
     </item>
 | 
					     </item>
 | 
				
			||||||
     <item>
 | 
					     <item>
 | 
				
			||||||
      <widget class="ButtonSwitch" name="morseKey">
 | 
					      <widget class="ButtonSwitch" name="playDots">
 | 
				
			||||||
       <property name="sizePolicy">
 | 
					       <property name="sizePolicy">
 | 
				
			||||||
        <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
 | 
					        <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
 | 
				
			||||||
         <horstretch>0</horstretch>
 | 
					         <horstretch>0</horstretch>
 | 
				
			||||||
         <verstretch>0</verstretch>
 | 
					         <verstretch>0</verstretch>
 | 
				
			||||||
        </sizepolicy>
 | 
					        </sizepolicy>
 | 
				
			||||||
@ -85,108 +85,62 @@
 | 
				
			|||||||
         <height>24</height>
 | 
					         <height>24</height>
 | 
				
			||||||
        </size>
 | 
					        </size>
 | 
				
			||||||
       </property>
 | 
					       </property>
 | 
				
			||||||
       <property name="toolTip">
 | 
					       <property name="palette">
 | 
				
			||||||
        <string>Morse key</string>
 | 
					        <palette>
 | 
				
			||||||
       </property>
 | 
					         <active>
 | 
				
			||||||
       <property name="icon">
 | 
					          <colorrole role="ButtonText">
 | 
				
			||||||
        <iconset resource="../resources/res.qrc">
 | 
					           <brush brushstyle="SolidPattern">
 | 
				
			||||||
         <normaloff>:/morsekey.png</normaloff>:/morsekey.png</iconset>
 | 
					            <color alpha="255">
 | 
				
			||||||
       </property>
 | 
					             <red>255</red>
 | 
				
			||||||
       <property name="iconSize">
 | 
					             <green>255</green>
 | 
				
			||||||
        <size>
 | 
					             <blue>255</blue>
 | 
				
			||||||
         <width>16</width>
 | 
					            </color>
 | 
				
			||||||
         <height>16</height>
 | 
					           </brush>
 | 
				
			||||||
        </size>
 | 
					          </colorrole>
 | 
				
			||||||
       </property>
 | 
					         </active>
 | 
				
			||||||
       <property name="checkable">
 | 
					         <inactive>
 | 
				
			||||||
        <bool>true</bool>
 | 
					          <colorrole role="ButtonText">
 | 
				
			||||||
       </property>
 | 
					           <brush brushstyle="SolidPattern">
 | 
				
			||||||
      </widget>
 | 
					            <color alpha="255">
 | 
				
			||||||
     </item>
 | 
					             <red>255</red>
 | 
				
			||||||
     <item>
 | 
					             <green>255</green>
 | 
				
			||||||
      <widget class="QComboBox" name="morseKeyAssign">
 | 
					             <blue>255</blue>
 | 
				
			||||||
       <property name="sizePolicy">
 | 
					            </color>
 | 
				
			||||||
        <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
 | 
					           </brush>
 | 
				
			||||||
         <horstretch>0</horstretch>
 | 
					          </colorrole>
 | 
				
			||||||
         <verstretch>0</verstretch>
 | 
					         </inactive>
 | 
				
			||||||
        </sizepolicy>
 | 
					         <disabled>
 | 
				
			||||||
       </property>
 | 
					          <colorrole role="ButtonText">
 | 
				
			||||||
       <property name="minimumSize">
 | 
					           <brush brushstyle="SolidPattern">
 | 
				
			||||||
        <size>
 | 
					            <color alpha="255">
 | 
				
			||||||
         <width>0</width>
 | 
					             <red>106</red>
 | 
				
			||||||
         <height>0</height>
 | 
					             <green>104</green>
 | 
				
			||||||
        </size>
 | 
					             <blue>100</blue>
 | 
				
			||||||
       </property>
 | 
					            </color>
 | 
				
			||||||
       <property name="maximumSize">
 | 
					           </brush>
 | 
				
			||||||
        <size>
 | 
					          </colorrole>
 | 
				
			||||||
         <width>35</width>
 | 
					         </disabled>
 | 
				
			||||||
         <height>16777215</height>
 | 
					        </palette>
 | 
				
			||||||
        </size>
 | 
					 | 
				
			||||||
       </property>
 | 
					       </property>
 | 
				
			||||||
       <property name="font">
 | 
					       <property name="font">
 | 
				
			||||||
        <font>
 | 
					        <font>
 | 
				
			||||||
         <pointsize>9</pointsize>
 | 
					         <pointsize>12</pointsize>
 | 
				
			||||||
 | 
					         <weight>75</weight>
 | 
				
			||||||
 | 
					         <bold>true</bold>
 | 
				
			||||||
        </font>
 | 
					        </font>
 | 
				
			||||||
       </property>
 | 
					       </property>
 | 
				
			||||||
       <property name="toolTip">
 | 
					       <property name="toolTip">
 | 
				
			||||||
        <string>Morse key assignment</string>
 | 
					        <string>Send dots</string>
 | 
				
			||||||
       </property>
 | 
					       </property>
 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
       <property name="text">
 | 
					       <property name="text">
 | 
				
			||||||
         <string>0</string>
 | 
					        <string>.</string>
 | 
				
			||||||
       </property>
 | 
					       </property>
 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>1</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>2</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>3</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>4</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>5</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>6</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>7</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>8</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>9</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
      </widget>
 | 
					      </widget>
 | 
				
			||||||
     </item>
 | 
					     </item>
 | 
				
			||||||
     <item>
 | 
					     <item>
 | 
				
			||||||
      <widget class="ButtonSwitch" name="iambicKey">
 | 
					      <widget class="ButtonSwitch" name="playDashes">
 | 
				
			||||||
       <property name="sizePolicy">
 | 
					       <property name="sizePolicy">
 | 
				
			||||||
        <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
 | 
					        <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
 | 
				
			||||||
         <horstretch>0</horstretch>
 | 
					         <horstretch>0</horstretch>
 | 
				
			||||||
         <verstretch>0</verstretch>
 | 
					         <verstretch>0</verstretch>
 | 
				
			||||||
        </sizepolicy>
 | 
					        </sizepolicy>
 | 
				
			||||||
@ -197,176 +151,53 @@
 | 
				
			|||||||
         <height>24</height>
 | 
					         <height>24</height>
 | 
				
			||||||
        </size>
 | 
					        </size>
 | 
				
			||||||
       </property>
 | 
					       </property>
 | 
				
			||||||
       <property name="toolTip">
 | 
					       <property name="palette">
 | 
				
			||||||
        <string>Iambic key</string>
 | 
					        <palette>
 | 
				
			||||||
       </property>
 | 
					         <active>
 | 
				
			||||||
       <property name="icon">
 | 
					          <colorrole role="ButtonText">
 | 
				
			||||||
        <iconset resource="../resources/res.qrc">
 | 
					           <brush brushstyle="SolidPattern">
 | 
				
			||||||
         <normaloff>:/iambickey.png</normaloff>:/iambickey.png</iconset>
 | 
					            <color alpha="255">
 | 
				
			||||||
       </property>
 | 
					             <red>255</red>
 | 
				
			||||||
       <property name="iconSize">
 | 
					             <green>255</green>
 | 
				
			||||||
        <size>
 | 
					             <blue>255</blue>
 | 
				
			||||||
         <width>16</width>
 | 
					            </color>
 | 
				
			||||||
         <height>16</height>
 | 
					           </brush>
 | 
				
			||||||
        </size>
 | 
					          </colorrole>
 | 
				
			||||||
       </property>
 | 
					         </active>
 | 
				
			||||||
       <property name="checkable">
 | 
					         <inactive>
 | 
				
			||||||
        <bool>true</bool>
 | 
					          <colorrole role="ButtonText">
 | 
				
			||||||
       </property>
 | 
					           <brush brushstyle="SolidPattern">
 | 
				
			||||||
      </widget>
 | 
					            <color alpha="255">
 | 
				
			||||||
     </item>
 | 
					             <red>255</red>
 | 
				
			||||||
     <item>
 | 
					             <green>255</green>
 | 
				
			||||||
      <widget class="QComboBox" name="iambicKeyDotAssign">
 | 
					             <blue>255</blue>
 | 
				
			||||||
       <property name="sizePolicy">
 | 
					            </color>
 | 
				
			||||||
        <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
 | 
					           </brush>
 | 
				
			||||||
         <horstretch>0</horstretch>
 | 
					          </colorrole>
 | 
				
			||||||
         <verstretch>0</verstretch>
 | 
					         </inactive>
 | 
				
			||||||
        </sizepolicy>
 | 
					         <disabled>
 | 
				
			||||||
       </property>
 | 
					          <colorrole role="ButtonText">
 | 
				
			||||||
       <property name="maximumSize">
 | 
					           <brush brushstyle="SolidPattern">
 | 
				
			||||||
        <size>
 | 
					            <color alpha="255">
 | 
				
			||||||
         <width>35</width>
 | 
					             <red>106</red>
 | 
				
			||||||
         <height>16777215</height>
 | 
					             <green>104</green>
 | 
				
			||||||
        </size>
 | 
					             <blue>100</blue>
 | 
				
			||||||
 | 
					            </color>
 | 
				
			||||||
 | 
					           </brush>
 | 
				
			||||||
 | 
					          </colorrole>
 | 
				
			||||||
 | 
					         </disabled>
 | 
				
			||||||
 | 
					        </palette>
 | 
				
			||||||
       </property>
 | 
					       </property>
 | 
				
			||||||
       <property name="font">
 | 
					       <property name="font">
 | 
				
			||||||
        <font>
 | 
					        <font>
 | 
				
			||||||
         <pointsize>9</pointsize>
 | 
					         <pointsize>12</pointsize>
 | 
				
			||||||
 | 
					         <weight>75</weight>
 | 
				
			||||||
 | 
					         <bold>true</bold>
 | 
				
			||||||
        </font>
 | 
					        </font>
 | 
				
			||||||
       </property>
 | 
					       </property>
 | 
				
			||||||
       <property name="toolTip">
 | 
					 | 
				
			||||||
        <string>Iambic key dot assignment</string>
 | 
					 | 
				
			||||||
       </property>
 | 
					 | 
				
			||||||
       <property name="currentIndex">
 | 
					 | 
				
			||||||
        <number>1</number>
 | 
					 | 
				
			||||||
       </property>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
       <property name="text">
 | 
					       <property name="text">
 | 
				
			||||||
         <string>0</string>
 | 
					        <string>-</string>
 | 
				
			||||||
       </property>
 | 
					       </property>
 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>1</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>2</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>3</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>4</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>5</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>6</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>7</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>8</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>9</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
      </widget>
 | 
					 | 
				
			||||||
     </item>
 | 
					 | 
				
			||||||
     <item>
 | 
					 | 
				
			||||||
      <widget class="QComboBox" name="iambicKeyDashAssign">
 | 
					 | 
				
			||||||
       <property name="sizePolicy">
 | 
					 | 
				
			||||||
        <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
 | 
					 | 
				
			||||||
         <horstretch>0</horstretch>
 | 
					 | 
				
			||||||
         <verstretch>0</verstretch>
 | 
					 | 
				
			||||||
        </sizepolicy>
 | 
					 | 
				
			||||||
       </property>
 | 
					 | 
				
			||||||
       <property name="maximumSize">
 | 
					 | 
				
			||||||
        <size>
 | 
					 | 
				
			||||||
         <width>35</width>
 | 
					 | 
				
			||||||
         <height>16777215</height>
 | 
					 | 
				
			||||||
        </size>
 | 
					 | 
				
			||||||
       </property>
 | 
					 | 
				
			||||||
       <property name="font">
 | 
					 | 
				
			||||||
        <font>
 | 
					 | 
				
			||||||
         <pointsize>9</pointsize>
 | 
					 | 
				
			||||||
        </font>
 | 
					 | 
				
			||||||
       </property>
 | 
					 | 
				
			||||||
       <property name="toolTip">
 | 
					 | 
				
			||||||
        <string>Iambic key dash assignment</string>
 | 
					 | 
				
			||||||
       </property>
 | 
					 | 
				
			||||||
       <property name="currentIndex">
 | 
					 | 
				
			||||||
        <number>2</number>
 | 
					 | 
				
			||||||
       </property>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>0</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>1</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>2</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>3</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>4</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>5</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>6</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>7</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>8</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item>
 | 
					 | 
				
			||||||
        <property name="text">
 | 
					 | 
				
			||||||
         <string>9</string>
 | 
					 | 
				
			||||||
        </property>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
      </widget>
 | 
					      </widget>
 | 
				
			||||||
     </item>
 | 
					     </item>
 | 
				
			||||||
     <item>
 | 
					     <item>
 | 
				
			||||||
@ -379,7 +210,7 @@
 | 
				
			|||||||
     <item>
 | 
					     <item>
 | 
				
			||||||
      <widget class="ButtonSwitch" name="playText">
 | 
					      <widget class="ButtonSwitch" name="playText">
 | 
				
			||||||
       <property name="sizePolicy">
 | 
					       <property name="sizePolicy">
 | 
				
			||||||
        <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
 | 
					        <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
 | 
				
			||||||
         <horstretch>0</horstretch>
 | 
					         <horstretch>0</horstretch>
 | 
				
			||||||
         <verstretch>0</verstretch>
 | 
					         <verstretch>0</verstretch>
 | 
				
			||||||
        </sizepolicy>
 | 
					        </sizepolicy>
 | 
				
			||||||
@ -446,7 +277,7 @@
 | 
				
			|||||||
     <item>
 | 
					     <item>
 | 
				
			||||||
      <widget class="ButtonSwitch" name="playLoop">
 | 
					      <widget class="ButtonSwitch" name="playLoop">
 | 
				
			||||||
       <property name="sizePolicy">
 | 
					       <property name="sizePolicy">
 | 
				
			||||||
        <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
 | 
					        <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
 | 
				
			||||||
         <horstretch>0</horstretch>
 | 
					         <horstretch>0</horstretch>
 | 
				
			||||||
         <verstretch>0</verstretch>
 | 
					         <verstretch>0</verstretch>
 | 
				
			||||||
        </sizepolicy>
 | 
					        </sizepolicy>
 | 
				
			||||||
@ -478,7 +309,7 @@
 | 
				
			|||||||
     <item>
 | 
					     <item>
 | 
				
			||||||
      <widget class="ButtonSwitch" name="playStop">
 | 
					      <widget class="ButtonSwitch" name="playStop">
 | 
				
			||||||
       <property name="sizePolicy">
 | 
					       <property name="sizePolicy">
 | 
				
			||||||
        <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
 | 
					        <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
 | 
				
			||||||
         <horstretch>0</horstretch>
 | 
					         <horstretch>0</horstretch>
 | 
				
			||||||
         <verstretch>0</verstretch>
 | 
					         <verstretch>0</verstretch>
 | 
				
			||||||
        </sizepolicy>
 | 
					        </sizepolicy>
 | 
				
			||||||
@ -579,7 +410,6 @@
 | 
				
			|||||||
  </customwidget>
 | 
					  </customwidget>
 | 
				
			||||||
 </customwidgets>
 | 
					 </customwidgets>
 | 
				
			||||||
 <tabstops>
 | 
					 <tabstops>
 | 
				
			||||||
  <tabstop>morseKey</tabstop>
 | 
					 | 
				
			||||||
  <tabstop>playLoop</tabstop>
 | 
					  <tabstop>playLoop</tabstop>
 | 
				
			||||||
 </tabstops>
 | 
					 </tabstops>
 | 
				
			||||||
 <resources>
 | 
					 <resources>
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user