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

📄 xptext.cpp

📁 天使工具,e6手机专用,大家都知道吧,狠狠好地东西,直接编译即可
💻 CPP
字号:
#include "XpText.h"#include "filedialog.h"#include "xptools.h"#include "dropin/config.h"//ezx#include <zapplication.h>#include <ezxutilcst.h>//#include <zglobal.h>#include <ezxres.h>#include <zmessagebox.h>#include <zmultilineedit.h>#include <zpushbutton.h>//qt#include <qvbox.h>#include <qfile.h>#include <qtextstream.h>#include <qtextcodec.h>#include <stdio.h>#include <qpixmap.h>//test#include <qfileinfo.h>#include <qdir.h>#include <qapplication.h>QString ChineseAndEnglish(const char*ChineseString);XpText::XpText(bool enwrap,const QString& fileName,QWidget *parent, char const *name,unsigned int f)    : ZMainWidget("",true,parent, name,f){ // showFullScreen();       /*   if (QFile::exists("walla.jpg")) {	QWallpaper wpp;	QPixmap *pix = new QPixmap("walla.jpg");	wpp.setAppWallpaperMode(QWallpaper::UseAppWallpaper);	wpp.setAppWallpaper(pix);	// I can make E680i user confuse 加入背景;)	//wpp.setSysWallpaper(pix);	delete pix;    }        */                  b=enwrap;      QVBox *cw = new QVBox(this);    setContentWidget(cw);            QVBox *vb = (QVBox*)getContentWidget(0);    setGeometry(0,0,240,320);          mTextEdit = new ZMultiLineEdit(vb, FALSE, 10);    if (b){        mTextEdit->setWordWrap(ZMultiLineEdit::FixedPixelWidth);	      	mTextEdit->setWrapColumnOrWidth(210);	     mTextEdit->setWrapPolicy(ZMultiLineEdit::Anywhere);   	}else{    		mTextEdit->setWordWrap(ZMultiLineEdit::NoWrap);      }   // ZApplication::setMouseMode(mTextEdit,ZApplication::PRESS_HOLD);            mTextEdit->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));           UTIL_CST *cst = new UTIL_CST(this, ChineseAndEnglish("编码"));    setCSTWidget(cst);    mMiddleBtn = cst->getMidBtn();    mQuitBtn = cst->getRightBtn();    QObject::connect(mQuitBtn, SIGNAL(clicked()), this, SLOT(close()));             m_encodingMenu = new QPopupMenu(cst, NULL);		    m_encodingMenu ->insertItem(ChineseAndEnglish("ISO 8859-1"), WestItem, WestItem);        m_encodingMenu->insertItem(ChineseAndEnglish("简体中文/GBK"), ZhCNItem, ZhCNItem);                m_encodingMenu->insertItem(ChineseAndEnglish("繁体中文/Big5"), ZhTWItem, ZhTWItem);        m_encodingMenu->insertItem(ChineseAndEnglish("Unicode/UTF-8"), Utf8Item, Utf8Item);       m_encodingMenu->setItemChecked(Utf8Item,TRUE);        m_encodingMenu->insertItem(ChineseAndEnglish("Unicode/UTF-16"), Utf16Item, Utf16Item);          QObject::connect(m_encodingMenu, SIGNAL(activated(int)), SLOT(menuSelect(int))); mMiddleBtn->setPopup(m_encodingMenu);    mPopup = new QPopupMenu(cst, NULL);      cm_wrap=mPopup->insertItem(ChineseAndEnglish("自动换行"),this,SLOT( cmwrap() ));     mPopup->setItemChecked(cm_wrap,b);    mPopup->insertItem(ChineseAndEnglish("保存"), SaveItem, SaveItem);    mPopup->insertItem(ChineseAndEnglish("另存为..."), SaveAsItem, SaveAsItem);        QObject::connect(mPopup, SIGNAL(activated(int)), SLOT(selectMenu(int)));         mQuitBtn = cst->getLeftBtn();    mQuitBtn->setPopup(mPopup);    vb->resize(240,288);    m_saveas = TRUE;           m_filename=fileName;    load1(m_filename,3);     QString current = m_filename;              QFileInfo fi(current);     current = fi.fileName();  QString status=ChineseAndEnglish("文件名")+"[ "+current+" ]"; getTitleBarWidget()->setText(status);           }XpText::~XpText(){} void XpText::selectMenu(int idx){          if (idx == SaveItem) {         save();    } else if (idx == SaveAsItem) {        showSaveDialog();    }                        }void XpText::menuSelect(int miIndex){		    	if (miIndex == ZhCNItem) {                m_encodingMenu->setItemChecked(ZhCNItem,TRUE);                m_encodingMenu->setItemChecked(ZhTWItem,FALSE);         m_encodingMenu->setItemChecked(WestItem,false);         m_encodingMenu->setItemChecked(Utf8Item,FALSE);         m_encodingMenu->setItemChecked(Utf16Item,FALSE);             } else if (miIndex == ZhTWItem) {        m_encodingMenu->setItemChecked(ZhCNItem,FALSE);                m_encodingMenu->setItemChecked(ZhTWItem,TRUE);         m_encodingMenu->setItemChecked(WestItem,false);         m_encodingMenu->setItemChecked(Utf8Item,FALSE);         m_encodingMenu->setItemChecked(Utf16Item,FALSE);    }else if (miIndex == WestItem) {        m_encodingMenu->setItemChecked(ZhCNItem,FALSE);                m_encodingMenu->setItemChecked(ZhTWItem,FALSE);         m_encodingMenu->setItemChecked(WestItem,TRUE);         m_encodingMenu->setItemChecked(Utf8Item,FALSE);         m_encodingMenu->setItemChecked(Utf16Item,FALSE);    }else if (miIndex == Utf8Item) {       m_encodingMenu->setItemChecked(ZhCNItem,FALSE);                m_encodingMenu->setItemChecked(ZhTWItem,FALSE);         m_encodingMenu->setItemChecked(WestItem,false);         m_encodingMenu->setItemChecked(Utf8Item,TRUE);         m_encodingMenu->setItemChecked(Utf16Item,FALSE);     }else if (miIndex == Utf16Item) {       m_encodingMenu->setItemChecked(ZhCNItem,FALSE);                m_encodingMenu->setItemChecked(ZhTWItem,FALSE);         m_encodingMenu->setItemChecked(WestItem,false);         m_encodingMenu->setItemChecked(Utf8Item,FALSE);         m_encodingMenu->setItemChecked(Utf16Item,TRUE);    }		load1(m_filename,miIndex);	  }void XpText::cmwrap(){		if (b){    mTextEdit->setWordWrap(ZMultiLineEdit::NoWrap);    mPopup->setItemChecked(cm_wrap,false);     	b=false;    	    	    }else	{    mTextEdit->setWordWrap(ZMultiLineEdit::FixedPixelWidth);	   mTextEdit->setWrapColumnOrWidth(210);  mTextEdit->setWrapPolicy(ZMultiLineEdit::Anywhere);    mPopup->setItemChecked(cm_wrap,TRUE);	 b=TRUE;}					}void XpText::showSaveDialog(){       FileDialog *savedialog = new FileDialog(TRUE,"另存为",true,this);        if (!m_filepath.isEmpty())        savedialog->setDir(m_filepath);        if (savedialog->exec() == FileDialog::Accepted) {        m_filename = savedialog->getFileName();        m_filepath = savedialog->getFilePath();        saveAs(m_filename);    }          delete savedialog;}void XpText::save(){    if (m_filename.isEmpty()) {      showSaveDialog();       return;    } else {        m_saveas = FALSE;        saveAs(m_filename);    }}void XpText::saveAs(const QString& fileName){    RES_ICON_Reader ir;        QFile f(fileName);        if (f.exists() && m_saveas) { // the file exist        switch (ZMessageBox::information(this,            ir.getIcon(RES_ICON_DLG_WAITING,1),            ChineseAndEnglish("文件已经存在,要覆盖吗?"),            ChineseAndEnglish("覆盖"), ChineseAndEnglish("取消"))) {        case 0: // overwrite            break;        case 1: // cancel            return;            break;        default:            return;            break;        }    }    if (!f.open(IO_WriteOnly)) {        ZMessageBox::information(this,            ir.getIcon(RES_ICON_DLG_ERROR,1),            ChineseAndEnglish("这是只读文件,不能修改."),            ChineseAndEnglish("关闭"));        return;    }    QTextStream stream(&f);     if (m_encodingMenu->isItemChecked(ZhCNItem)) {        stream.setCodec(QTextCodec::codecForName("GBK"));    } else if (m_encodingMenu->isItemChecked(ZhTWItem)) {        stream.setCodec(QTextCodec::codecForName("Big5"));    }else if (m_encodingMenu->isItemChecked(WestItem)) {        stream.setCodec(QTextCodec::codecForName("ISO8859-1"));    }else if (m_encodingMenu->isItemChecked(Utf8Item)) {       stream.setCodec(QTextCodec::codecForName("utf8"));     }else if (m_encodingMenu->isItemChecked(Utf16Item)) {       stream.setCodec(QTextCodec::codecForName("utf16"));    }      stream << mTextEdit->text();        f.close();        mTextEdit->setEdited(FALSE);    m_saveas = TRUE;        ZMessageBox::timerMessage(this,         ir.getIcon(RES_ICON_DLG_COMPLETE,1),         ChineseAndEnglish("文件保存成功..."), 1);}void XpText::load(){    if (mTextEdit->edited()) {        RES_ICON_Reader ir;        switch (ZMessageBox::information(this,            ir.getIcon(RES_ICON_DLG_WAITING,1),            ChineseAndEnglish("这文件已改变,要保存吗?"),            ChineseAndEnglish("保存"), ChineseAndEnglish("放弃"), ChineseAndEnglish("取消"))) {        case 0: // save            save();            break;        case 1: // discard            break;        default: // cancel            return;            break;        }    }      }void XpText::load1(const QString& fileName,int code ){   if (mTextEdit->edited()) {        RES_ICON_Reader ir;        switch (ZMessageBox::information(this,            ir.getIcon(RES_ICON_DLG_WAITING,1),            ChineseAndEnglish("这文件已改变,要保存吗?"),            ChineseAndEnglish("保存"), ChineseAndEnglish("放弃"), ChineseAndEnglish("取消"))) {        case 0: // save            save();            break;        case 1: // discard            break;        default: // cancel            return;            break;        }    }           RES_ICON_Reader ir;        QFile f(fileName);        if (!f.open(IO_ReadOnly)) {        ZMessageBox::timerMessage(this, ir.getIcon(RES_ICON_DLG_ERROR,1),             ChineseAndEnglish("不能打开这文件..."), 1);        return;    }      mTextEdit->setAutoUpdate(FALSE);    QTextStream stream(&f);   if (code == ZhCNItem) {        stream.setCodec(QTextCodec::codecForName("GBK"));    } else if (code == ZhTWItem) {        stream.setCodec(QTextCodec::codecForName("Big5"));    }else if (code == WestItem) {        stream.setCodec(QTextCodec::codecForName("ISO8859-1"));    }else if (code == Utf8Item) {       stream.setCodec(QTextCodec::codecForName("utf8"));     }else if (code == Utf16Item) {       stream.setCodec(QTextCodec::codecForName("utf16"));    }         mTextEdit->setText(stream.read());    f.close();      mTextEdit->setAutoUpdate(TRUE);    mTextEdit->setCursorPosition(0, 0);    mTextEdit->repaint();    mTextEdit->setEdited(FALSE);       }void XpText::closeEvent( QCloseEvent *event ){    if (!mTextEdit->edited()) {        event->accept();        return;    }        RES_ICON_Reader ir;    //the text has been changed    switch (ZMessageBox::information(this,        ir.getIcon(RES_ICON_DLG_WAITING,1),        ChineseAndEnglish("这文件已改变,要保存吗?"),            ChineseAndEnglish("保存"), ChineseAndEnglish("放弃"), ChineseAndEnglish("取消"))) {    case 0: // save        save();        event->accept();        break;    case 1: // discard        event->accept();        break;    default: // cancel        event->ignore();        break;    }}

⌨️ 快捷键说明

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