Source Code (Use browser search to find items of interest.)

Class Index

knotes'KPostitMultilineEdit (./kdeutils/knotes/knotes.h:85)

class KPostitMultilineEdit: public QMultiLineEdit{
  Q_OBJECT

public:

  KPostitMultilineEdit(QWidget *parent=0, const char *wname=0);
  bool autoIndentMode;
  int  autoIndentID;

protected:
  void  dragMoveEvent(QDragMoveEvent* event);
  void  dragEnterEvent(QDragEnterEvent* event);
  void  dropEvent(QDropEvent* event);

  void  mouseDoubleClickEvent ( QMouseEvent * e );
  void  keyPressEvent(QKeyEvent *e);
  void  mynewLine();

private:
  QString prefixString(QString string);

signals:
  void gotUrlDrop(const char* url);

};



knotes'KPostitMultilineEdit::KPostitMultilineEdit() (./kdeutils/knotes/knotes.cpp:110)

KPostitMultilineEdit::KPostitMultilineEdit(QWidget *parent, const char *myname)
  : QMultiLineEdit(parent, myname){

  setAcceptDrops(TRUE);
}


knotes'KPostitMultilineEdit::keyPressEvent() (./kdeutils/knotes/knotes.cpp:116)

void KPostitMultilineEdit::keyPressEvent(QKeyEvent *e){

  if (e->key() == Key_Tab) {
    int line, col;
    cursorPosition(&line, &col);
    QMultiLineEdit::insertAt("\t", line, col);
  }

  if(e->key() == Key_Return || e->key() == Key_Enter){

    mynewLine();
    return;
  }

  QMultiLineEdit::keyPressEvent(e);

}


knotes'KPostitMultilineEdit::mouseDoubleClickEvent() (./kdeutils/knotes/knotes.cpp:134)

void KPostitMultilineEdit::mouseDoubleClickEvent ( QMouseEvent * e ){

  QMultiLineEdit::mouseDoubleClickEvent(e);

  int line, column = 0;
  getCursorPosition(&line,&column);

  QString text = markedText();
  //  printf("%d %d %s\n",line,column,text.ascii());

  if (text.isEmpty())
    return;

  KURL kurl(text);

  if (kurl.isMalformed())
    return;

  (void) new KRun ( text );
}



knotes'KPostitMultilineEdit::mynewLine() (./kdeutils/knotes/knotes.cpp:156)

void KPostitMultilineEdit::mynewLine(){

  if (isReadOnly())
    return;

  if(!autoIndentMode){
    newLine();
    return;
  }

  int line,col;
  bool found_one = false;

  getCursorPosition(&line,&col);

  QString string, string2;

  while(line >= 0){

    string  = textLine(line);
    string2 = string.stripWhiteSpace();

    if(!string2.isEmpty()){
      string = prefixString(string);
      found_one = TRUE;
      break;
    }

    line --;
  }

  // string will now contain those whitespace characters that I need to insert
  // on the next line.

  if(found_one){

    // don't ask my why I programmed it this way. I am quite sick of the Qt 1.2
    // MultiLineWidget -- It is anoyingly buggy.
    // I have to put in obscure workarounds all over the place.

knotes'KPostitMultilineEdit::prefixString() (./kdeutils/knotes/knotes.cpp:225)

QString KPostitMultilineEdit::prefixString(QString string){

  // This routine returns the whitespace before the first non white space
  // character in string. This is  used in mynewLine() for indent mode.
  // It is assumed that string contains at least one non whitespace character
  // ie \n \r \t \v \f and space

  QString returnstring;

  int len = string.length();

  int i = 0;
  while(i < len && string.at(i).isSpace())
    returnstring += string.at(i++);

  return returnstring;

}



knotes'KPostitMultilineEdit::dragEnterEvent() (./kdeutils/knotes/knotes.cpp:245)

void KPostitMultilineEdit::dragEnterEvent( QDragEnterEvent* event )
{
  event->accept(QUrlDrag::canDecode(event) || QTextDrag::canDecode(event));
}



knotes'KPostitMultilineEdit::dragMoveEvent() (./kdeutils/knotes/knotes.cpp:251)

void KPostitMultilineEdit::dragMoveEvent( QDragMoveEvent* event )
{
  if( QUrlDrag::canDecode(event) )
  {
    event->accept();
  }
  else if ( QTextDrag::canDecode(event) )
  {
    QMultiLineEdit::dragMoveEvent(event);
  }
}



knotes'KPostitMultilineEdit::dropEvent() (./kdeutils/knotes/knotes.cpp:264)

void KPostitMultilineEdit::dropEvent( QDropEvent* event )
{
  QStringList list;

  if ( QUrlDrag::decodeToUnicodeUris( event, list ) )
  {
    emit gotUrlDrop(list.first() );
  }
  else if ( QTextDrag::canDecode( event ) )
  {
    QMultiLineEdit::dropEvent( event );
  }
}