mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 13:30:52 -05:00 
			
		
		
		
	2. Removed commented code left over from previous edits in MainWindow::doubleClickOnCall() git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3584 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			140 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "displaytext.h"
 | 
						|
#include <QDebug>
 | 
						|
#include <QMouseEvent>
 | 
						|
#include <QDateTime>
 | 
						|
 | 
						|
DisplayText::DisplayText(QWidget *parent) :
 | 
						|
    QTextBrowser(parent)
 | 
						|
{
 | 
						|
    _fontWidth = 8; // typical
 | 
						|
    _maxDisplayedCharacters = 48; // a nominal safe(?) value
 | 
						|
}
 | 
						|
 | 
						|
void DisplayText::mouseDoubleClickEvent(QMouseEvent *e)
 | 
						|
{
 | 
						|
  bool ctrl = (e->modifiers() & Qt::ControlModifier);
 | 
						|
  bool shift = (e->modifiers() & Qt::ShiftModifier);
 | 
						|
  emit(selectCallsign(shift,ctrl));
 | 
						|
  QTextBrowser::mouseDoubleClickEvent(e);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void DisplayText::setFont(QFont font)
 | 
						|
{
 | 
						|
  QFontMetrics qfm(font);
 | 
						|
  _fontWidth = qfm.averageCharWidth()+1;  // the plus one is emperical
 | 
						|
  QTextBrowser::setFont(font);
 | 
						|
}
 | 
						|
 | 
						|
void DisplayText::resizeEvent(QResizeEvent * event)
 | 
						|
{
 | 
						|
    if (_fontWidth > 0 && _fontWidth < 999)
 | 
						|
        _maxDisplayedCharacters = width()/_fontWidth;
 | 
						|
    QTextBrowser::resizeEvent(event);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
void DisplayText::insertLineSpacer()
 | 
						|
{
 | 
						|
    QString tt="----------------------------------------";
 | 
						|
    QString bg="#d3d3d3";
 | 
						|
    _insertText(tt,bg);
 | 
						|
}
 | 
						|
 | 
						|
void DisplayText::_insertText(const QString text, const QString bg)
 | 
						|
{
 | 
						|
    QString tt = text.mid(0,_maxDisplayedCharacters); //truncate to max display chars
 | 
						|
    QString s = "<table border=0 cellspacing=0 width=100%><tr><td bgcolor=\"" +
 | 
						|
                bg + "\"><pre>" + tt + "</pre></td></tr></table>";
 | 
						|
 | 
						|
    QTextCursor cursor = textCursor();
 | 
						|
    cursor.movePosition(QTextCursor::End);
 | 
						|
    QTextBlockFormat bf = cursor.blockFormat();
 | 
						|
    bf.setBackground(QBrush(QColor(bg)));
 | 
						|
    cursor.insertHtml(s);
 | 
						|
    this->setTextCursor(cursor);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void DisplayText::_appendDXCCWorkedB4(/*mod*/DecodedText& t1, QString& bg, /*uses*/LogBook logBook)
 | 
						|
{
 | 
						|
    // extract the CQer's call   TODO: does this work with all call formats?  What about 'CQ DX'?
 | 
						|
    int s1 = 4 + t1.indexOf(" CQ ");
 | 
						|
    int s2 = t1.indexOf(" ",s1);
 | 
						|
    QString call = t1.mid(s1,s2-s1);
 | 
						|
 | 
						|
    QString countryName;
 | 
						|
    bool callWorkedBefore;
 | 
						|
    bool countryWorkedBefore;
 | 
						|
    logBook.match(/*in*/call,/*out*/countryName,callWorkedBefore,countryWorkedBefore);
 | 
						|
 | 
						|
    int charsAvail = _maxDisplayedCharacters;
 | 
						|
 | 
						|
    // the decoder (seems) to always generate 40 chars. For a normal CQ call, the last five are spaces
 | 
						|
    // TODO this magic 36 characters is also referenced in MainWindow::doubleClickOnCall()
 | 
						|
    int s3 = t1.indexOf(" ",35);
 | 
						|
    if (s3 < 35)
 | 
						|
        s3 = 35; // we always want at least the characters to position 35
 | 
						|
    s3 += 1; // convert the index into a character count
 | 
						|
    t1 = t1.left(s3);  // reduce trailing white space
 | 
						|
    charsAvail -= s3;
 | 
						|
    if (charsAvail > 4)
 | 
						|
    {
 | 
						|
        if (!countryWorkedBefore) // therefore not worked call either
 | 
						|
        {
 | 
						|
            t1 += "!";
 | 
						|
            bg = "#66ff66"; // strong green
 | 
						|
        }
 | 
						|
        else
 | 
						|
            if (!callWorkedBefore) // but have worked the country
 | 
						|
            {
 | 
						|
                t1 += "~";
 | 
						|
                bg = "#76cd76"; // mid green
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                t1 += " ";  // have worked this call before
 | 
						|
                bg="#9cc79c"; // pale green
 | 
						|
            }
 | 
						|
        charsAvail -= 1;
 | 
						|
 | 
						|
        if (countryName.length()>charsAvail)
 | 
						|
            countryName = countryName.left(1)+"."+countryName.right(charsAvail-2);  //abreviate the first word to the first letter, show remaining right most chars
 | 
						|
        t1 += countryName;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void DisplayText::displayDecodedText(DecodedText decodedText, QString myCall, bool displayDXCCEntity, LogBook logBook)
 | 
						|
{
 | 
						|
    QString bg="white";
 | 
						|
    bool CQcall = false;
 | 
						|
    if (decodedText.indexOf(" CQ ") > 0)
 | 
						|
    {
 | 
						|
        CQcall = true;
 | 
						|
        bg="#66ff66";  //green
 | 
						|
    }
 | 
						|
    if (myCall != "" and decodedText.indexOf(" " + myCall + " ") > 0)
 | 
						|
        bg="#ff6666"; //red
 | 
						|
 | 
						|
    // if enabled add the DXCC entity and B4 status to the end of the preformated text line t1
 | 
						|
    if (displayDXCCEntity && CQcall)
 | 
						|
        _appendDXCCWorkedB4(/*mod*/decodedText,bg,logBook);
 | 
						|
 | 
						|
    _insertText(decodedText.string(),bg);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void DisplayText::displayTransmittedText(QString text, QString modeTx, qint32 txFreq)
 | 
						|
{
 | 
						|
    QString bg="yellow";
 | 
						|
    QString t1=" @ ";
 | 
						|
    if(modeTx=="JT65") t1=" # ";
 | 
						|
    QString t2;
 | 
						|
    t2.sprintf("%4d",txFreq);
 | 
						|
    QString t = QDateTime::currentDateTimeUtc().toString("hhmm") + \
 | 
						|
        "  Tx      " + t2 + t1 + text;   // The position of the 'Tx' is searched for in DecodedText and in MainWindow.  Not sure if thats required anymore? VK3ACF
 | 
						|
 | 
						|
    _insertText(t,bg);
 | 
						|
}
 |