// Возвращение к дереву разделов в мобильном интерфейсе void RecordTableScreen::onBackClick(void) { globalParameters.getWindowSwitcher()->switchFromRecordtableToTree(); }
void RecordTableController::initMetaEditorAtClickToRecord(const int pos) { // Внимание! Наверно, всю эту логику следует перенести в MetaEditor. А здесь только получить данные из таблицы // Выясняется указатель на объект редактирования текста записи MetaEditor *edView=find_object<MetaEditor>("editorScreen"); // Выясняется ссылка на таблицу конечных данных RecordTableData *table=recordSourceModel->getTableData(); // В таблице конечных данных запоминается какая запись была выбрана // чтобы затем при выборе этой же подветки засветка автоматически // установилась на последнюю рабочую запись table->setWorkPos( pos ); // Устанавливается функция обратного вызова для записи данных edView->set_save_callback(table->editorSaveCallback); // Сохраняется текст и картинки в окне редактирования find_object<MainWindow>("mainwindow")->saveTextarea(); // Для новой выбраной записи выясняется директория и основной файл QString currentDir =table->getField("dir", pos); QString currentFile=table->getField("file", pos); QString fullDir=mytetraConfig.get_tetradir()+"/base/"+currentDir; QString fullFileName=fullDir+"/"+currentFile; qDebug() << " File " << fullFileName << "\n"; // Если в окне содержимого записи уже находится выбираемая запись if(edView->get_work_directory()==fullDir && edView->get_file_name()==currentFile) { globalParameters.getWindowSwitcher()->switchFromRecordtableToRecord(); return; } // Перед открытием редактора происходит попытка получения текста записи // Этот вызов создаст файл с текстом записи, если он еще не создан (подумать, переделать) table->getText(pos); // Редактору задаются имя файла и директории // И дается команда загрузки файла edView->set_work_directory(fullDir); edView->set_file_name(currentFile); // Если идет работа с зашифрованной записью // И если имя директории или имя файла пусты, то это означает что // запись не была расшифрована, и редактор должен просто показывать пустой текст // ничего не сохранять и не считывать qDebug() << "RecordTableView::onClickToRecord() : id " << table->getField("id", pos); qDebug() << "RecordTableView::onClickToRecord() : name " << table->getField("name", pos); qDebug() << "RecordTableView::onClickToRecord() : crypt " << table->getField("crypt", pos); if(table->getField("crypt", pos)=="1") if(fullDir.length()==0 || currentFile.length()==0) edView->setDirFileEmptyReaction(MetaEditor::DIRFILEEMPTY_REACTION_SUPPRESS_ERROR); // В редактор заносится информация, идет ли работа с зашифрованным текстом edView->setMiscField("crypt", table->getField("crypt", pos)); // В редакторе устанавливается функция обратного вызова для чтения данных edView->set_load_callback(table->editorLoadCallback); edView->load_textarea(); // edView->set_textarea(table->get_text(index.row())); // Заполняются прочие инфо-поля edView->setName ( table->getField("name", pos) ); edView->setAuthor( table->getField("author", pos) ); edView->setUrl ( table->getField("url", pos) ); edView->setTags ( table->getField("tags", pos) ); QString id=table->getField("id", pos); edView->setMiscField("id", id); edView->setMiscField( "title", table->getField("name", pos) ); // Устанавливается путь до ветки в которой лежит запись (в виде названий веток) QString path=qobject_cast<RecordTableScreen *>(parent())->getTreePath(); // В мобильном интерфейсе редактор должен показывать путь до записи if(mytetraConfig.getInterfaceMode()=="mobile") edView->setTreePath( path ); // В редакторе восстанавливается позиция курсора и прокрутки если это необходимо if(mytetraConfig.getRememberCursorAtOrdinarySelection()) { edView->setCursorPosition( walkHistory.getCursorPosition(id) ); edView->setScrollBarPosition( walkHistory.getScrollBarPosition(id) ); } // Обновление иконки аттачей if( table->getRecord(pos)->getAttachTablePointer()->size()==0 ) edView->toAttach->setIcon( edView->iconAttachNotExists ); // Если нет приаттаченных файлов else edView->toAttach->setIcon( edView->iconAttachExists ); // Есть приаттаченные файлы }