⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zmultilineedit.h

📁 天使工具,e6手机专用,大家都知道吧,狠狠好地东西,直接编译即可
💻 H
📖 第 1 页 / 共 2 页
字号:
//-------------------------------------------------------------------------------------------------
//
//  Header Name: ZMulitLineEdit.h
//
//  General Description:  EZX MultiLineEdit widget
//
//-------------------------------------------------------------------------------------------------
//
//                            Motorola Confidential Proprietary
//                     Template ID and version: TMP_LFC_50068  Version 1.2
//                      (c) Copyright Motorola 200{x}, All Rights Reserved
//
//-------------------------------------------------------------------------------------------------

#ifndef Z_MULTILINE_H
#define Z_MULTILINE_H

#ifndef __cplusplus
#error "This is a C++ header file;it requires C++ to compile."
#endif

#ifndef QT_H
#include "qtableview.h"
#include "qstring.h"
#include "qlist.h"
#include "qregexp.h"
#endif // QT_H

struct ZMultiLineData;
class ZMultiLineEditCommand;
class QValidator;

/**
 * the ZMainWidget class implements the EZX style's MultiLineEdit:
 * for example:
 * 1. support indent 
 * 2. support resize automatically(work with ZScrollView)
 * 3. support under line
 * 4. support input text filter
 *
 * the ZMultiLineEdit is based on the QMultiLineEdit, so for the most functions please refer to 
 * the doc of the QMultiLineEdit, except for these:
 * setIndent(), getIndent(), getLineHeight(), setUnderline(),
 * setFilter(),getFilter(), drawLineText()
 *
 * @code
 * ZScrollView* sv = new ZScrollView( this, "sv" );
 * UTIL_MulitLineEdit *ml1, *ml2;
 *
 * //add a 6 lines ZMultiLineEdit
 * ml1 = new ZMultiLineEdit(sv->viewport(),true,6);
 *
 * //set filter
 * QRegExp tmp("[.*]");
 * ml1->setFilter(tmp);
 * sv->addChild(ml1,0,0);
 *
 * //set indent
 * ml1->setIndent(20);
 * ml2 = new ZMultiLineEdit(sv->viewport());
 * 
 * //need to change the widget when ZScrollView's scrollbar is shown/hidden
 * sv->addChild(ml2,0,30,true);
 * @endcode
 */

class Q_EXPORT ZMultiLineEdit : public QTableView  //fox size: $18C, QTableView: $128 //3 function not processed!
{
    Q_OBJECT

    Q_ENUMS( EchoMode WordWrap WrapPolicy )
    Q_PROPERTY( int numLines READ numLines )
    Q_PROPERTY( bool atBeginning READ atBeginning )
    Q_PROPERTY( bool atEnd READ atEnd )
    Q_PROPERTY( int maxLineWidth READ maxLineWidth )
    Q_PROPERTY( Alignment alignment READ alignment WRITE setAlignment )
    Q_PROPERTY( bool edited READ edited WRITE setEdited DESIGNABLE false )
    Q_PROPERTY( EchoMode echoMode READ echoMode WRITE setEchoMode )
    Q_PROPERTY( int maxLength READ maxLength WRITE setMaxLength )
    Q_PROPERTY( int maxLines READ maxLines WRITE setMaxLines )
    Q_PROPERTY( int hMargin READ hMargin WRITE setHMargin )
    Q_PROPERTY( WordWrap wordWrap READ wordWrap WRITE setWordWrap )
    Q_PROPERTY( int wrapColumnOrWidth READ wrapColumnOrWidth WRITE setWrapColumnOrWidth )
    Q_PROPERTY( WrapPolicy wrapPolicy READ wrapPolicy WRITE setWrapPolicy )
    Q_PROPERTY( bool autoUpdate READ autoUpdate WRITE setAutoUpdate DESIGNABLE false )
    Q_PROPERTY( bool undoEnabled READ isUndoEnabled WRITE setUndoEnabled )
    Q_PROPERTY( int undoDepth READ undoDepth WRITE setUndoDepth )
    Q_PROPERTY( bool readOnly READ isReadOnly WRITE setReadOnly )
    Q_PROPERTY( bool overWriteMode READ isOverwriteMode WRITE setOverwriteMode )
    Q_PROPERTY( QString text READ text WRITE setText )
    Q_PROPERTY( int length READ length )

public:

#ifdef M_E6
    ZMultiLineEdit( QWidget *parent=0, const char *name=0);

    /**
     * Constructor of ZMultiLineEdit
     *
     * @param EZXStyle if false, the class is almost the samewith qmultilineedit.
     * if true ezx-special functions will be suported.
     *
     * @param lines the default lines the ZMultiLineEdit has
     */
    ZMultiLineEdit( QWidget *parent,bool EZXStyle,int lines = 1,const char *name=0 );
#endif

#ifdef M_A1200
    ZMultiLineEdit( QWidget *parent=0, const char *name=0, bool unknown = false);  //fox add A1200
    ZMultiLineEdit( QWidget *parent,bool EZXStyle,int lines = 1,const char *name=0, bool unknown = false ); //fox add A1200
#endif

    virtual ~ZMultiLineEdit();

    /**
     * set indent
     */
    void setIndent( int idt );
  
    /**
     * get indent
     */
    int getIndent();
  
    /**
     * get the each line's height
     */
    int getLineHeight() const;

    /**
     * set the underline flag
     */
    void setUnderline( bool needUnderline = true );

    /**
     * get the underline flag
     *
     * @retval if true has underline; if false, does not have underline
     */
    bool getUnderline();

    /**
     * set the filter for the text input
     *
     * @param filter the filter 
     * @param match if true the text input need to match the filter
     * @note if the text is big, maybe the performance will be bad
     */
    void setFilter( const QRegExp& filter, bool match = false );

    /**
     * get the filter
     */
    const QRegExp& getFilter() const;



    QString textLine( int line ) const;
    int numLines() const;

    QSize sizeHint() const;
    QSize minimumSizeHint() const;
    QSizePolicy sizePolicy() const;

    virtual void setFont( const QFont &font );

    virtual void insertLine( const QString &s, int line = -1 );
    virtual void insertAt( const QString &s, int line, int col, bool mark = FALSE );
    virtual void removeLine( int line );

    void cursorPosition( int *line, int *col ) const;
    virtual void setCursorPosition( int line, int col, bool mark = FALSE );
    void getCursorPosition( int *line, int *col ) const;
    bool atBeginning() const;
    bool atEnd() const;

    virtual void setFixedVisibleLines( int lines );

    int maxLineWidth() const;

    void setAlignment( int flags );
    int alignment() const;

    virtual void setValidator( const QValidator * );
    const QValidator * validator() const;

    void setEdited( bool );
    bool edited() const;

    void cursorWordForward( bool mark );
    void cursorWordBackward( bool mark );

    enum EchoMode { Normal, NoEcho, Password };
    virtual void setEchoMode( EchoMode );
    EchoMode echoMode() const;

    void setMaxLength(int);
    int maxLength() const;
    virtual void setMaxLineLength(int);
    int maxLineLength() const;
    virtual void setMaxLines(int);
    int maxLines() const;
    virtual void setHMargin(int);
    int hMargin() const;

    virtual void setSelection( int row_from, int col_from, int row_to, int col_t );

    enum WordWrap {
        NoWrap,
        WidgetWidth,
        FixedPixelWidth,
        FixedColumnWidth
    };
    void setWordWrap( WordWrap mode );
    WordWrap wordWrap() const;
    void setWrapColumnOrWidth( int );
    int wrapColumnOrWidth() const;

    enum WrapPolicy {
        AtWhiteSpace,
        Anywhere
    };
    void setWrapPolicy( WrapPolicy policy );
    WrapPolicy wrapPolicy() const;

    bool autoUpdate()   const;
    virtual void setAutoUpdate( bool );

    void setUndoEnabled( bool );
    bool isUndoEnabled() const;
    void setUndoDepth( int );
    int undoDepth() const;

    bool isReadOnly() const;
    bool isOverwriteMode() const;

    QString text() const;

    int length() const;

    static void setDefaultTabStop( int ex );
    static int defaultTabStop();

    virtual void show();

public slots:

    /**
     * change the content size
     * 
     * @param lines how many lines have be changed
     *
     * @param cursorPos cursor position
     *
     * @note internal use
     */
    virtual void changeContentSize( int lines,QPoint cursorPos );

    virtual void       setText( const QString &);
    virtual void       setReadOnly( bool );
    virtual void       setOverwriteMode( bool );

    void       clear();
    void       append( const QString &);
    void       deselect();
    void       selectAll();
#ifndef QT_NO_CLIPBOARD
    void       paste();
    void       pasteSubType(const QCString& subtype);
    void       copyText() const;
    void       copy() const;
    void       cut();
    void       deleteText();
#endif
    void       insert( const QString& );
    void       undo();
    void       redo();

signals:
    
    void    clicked();
    void    textTrancated();
    void    textChanged();
    void    returnPressed();
    void    undoAvailable( bool );
    void    redoAvailable( bool );
    void    copyAvailable( bool );
    
    /**
     * the signal is emitted when size hint is changed
     *
     * @note internal use
     */
    void    changeSizeHint( QWidget* widget,QSize size,QPoint cusrorPos,int larger );

    /**
     * the signal is emitted when lines is changed
     *
     * @note internal use
     */
    void    linesChanged( int lines,QPoint cursorPos );

protected:
    
    void    updateMask();
    void    pixelPosToCursorPos(QPoint p, int* x, int* y) const;
    void    setCursorPixelPosition(QPoint p, bool clear_mark = true);

    void    paintEvent(QPaintEvent * );

#define MOT_BLEND
#ifdef MOT_BLEND
    void    paintCell( QPainter *, int row, int col, int xPos, int yPos );
#else
    void    paintCell( QPainter *, int row, int col );
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -