重新加载文件。这里有个问题,文件的序号会跳动,要解决跳动问题。 这里不能销毁当前pedit,加载编码也要保持不变。而且加载的文件一定是普通文本模式 目前只在文本文件被修改后,外部自动加载的场景 如果isTailfOn == true, 则从startReadSize开始读取文件,不从头读取。startReadSize=-1则还是从头,否则从startReadSize开始
| 3546 | //目前只在文本文件被修改后,外部自动加载的场景 |
| 3547 | //如果isTailfOn == true, 则从startReadSize开始读取文件,不从头读取。startReadSize=-1则还是从头,否则从startReadSize开始 |
| 3548 | void CCNotePad::reloadEditFile(ScintillaEditView* pEdit, bool isTailfOn, qint64 startReadSize) |
| 3549 | { |
| 3550 | QString filePath = pEdit->property(Edit_View_FilePath).toString(); |
| 3551 | |
| 3552 | CODE_ID code = (CODE_ID)getCodeTypeProperty(pEdit); |
| 3553 | RC_LINE_FORM lineEnd; |
| 3554 | int lineNum = 0; |
| 3555 | |
| 3556 | if (!isTailfOn) |
| 3557 | { |
| 3558 | lineNum = pEdit->getCurrentLineNumber(); |
| 3559 | } |
| 3560 | |
| 3561 | //下面这个clear会触发文本修改,要避免不必要的消息循环。先屏蔽一些信号 |
| 3562 | disEnableEditTextChangeSign(pEdit); |
| 3563 | if (isTailfOn && startReadSize != -1) |
| 3564 | { |
| 3565 | //如果是tail模式,则不要直接把文档清空 |
| 3566 | } |
| 3567 | else |
| 3568 | { |
| 3569 | pEdit->clear(); |
| 3570 | } |
| 3571 | pEdit->setProperty(Edit_Text_Change, QVariant(false)); |
| 3572 | setSaveButtonStatus(false); |
| 3573 | |
| 3574 | int errCode = 0; |
| 3575 | |
| 3576 | if (isTailfOn && startReadSize != -1) |
| 3577 | { |
| 3578 | //使用tailf读取尾部一部分数据;而不是全部读取 |
| 3579 | errCode = FileManager::getInstance().loadFileDataInTextFromOffset(pEdit, filePath, code, this, startReadSize); |
| 3580 | } |
| 3581 | else |
| 3582 | { |
| 3583 | errCode = FileManager::getInstance().loadFileDataInText(pEdit, filePath, code, lineEnd, nullptr, false, this); |
| 3584 | } |
| 3585 | |
| 3586 | enableEditTextChangeSign(pEdit); |
| 3587 | |
| 3588 | if (6 == errCode) |
| 3589 | { |
| 3590 | //可能存在乱码,给出警告。还是以编辑模式打开 |
| 3591 | ui.statusBar->showMessage(tr("File %1 open success. But Exist Garbled code !")); |
| 3592 | } |
| 3593 | else if (errCode != 0) |
| 3594 | { |
| 3595 | ui.statusBar->showMessage(tr("reload file %1 failed").arg(filePath)); |
| 3596 | return; |
| 3597 | } |
| 3598 | |
| 3599 | if (isTailfOn) |
| 3600 | { |
| 3601 | lineNum = pEdit->lines(); |
| 3602 | } |
| 3603 | pEdit->execute(SCI_GOTOLINE, lineNum - 1); |
| 3604 | |
| 3605 | } |
nothing calls this directly
no test coverage detected