// Метод должен возвращать уровень сложности сделанных изменений // 0 - изменения не требуют перезапуска программы // 1 - изменения требуют перезапуска программы int AppConfigPage_Misc::apply_changes(void) { qDebug() << "Apply changes misc"; // Сохраняется настройка подтверждения для действия "cut" на ветке if(mytetraconfig.get_cutbranchconfirm()!=cutBranchConfirm->isChecked()) mytetraconfig.set_cutbranchconfirm(cutBranchConfirm->isChecked()); // Сохраняется настройка отображения отладочных сообщений в консоли if(mytetraconfig.get_printdebugmessages()!=printDebugMessages->isChecked()) mytetraconfig.set_printdebugmessages(printDebugMessages->isChecked()); // Сохраняется настройка режима запуска MyTetra - обычный или свернутый if(mytetraconfig.get_runinminimizedwindow()!=runInMinimizedWindow->isChecked()) mytetraconfig.set_runinminimizedwindow(runInMinimizedWindow->isChecked()); // Сохраняется настройка нужно ли вспоминать позицию курсора при перемещении // по истории if(mytetraconfig.getRememberCursorAtHistoryNavigation()!=rememberAtHistoryNavigationCheckBox->isChecked()) mytetraconfig.setRememberCursorAtHistoryNavigation(rememberAtHistoryNavigationCheckBox->isChecked()); // Сохраняется настройка нужно ли пытаться вспоминать позицию курсора при // обычном выборе записи if(mytetraconfig.getRememberCursorAtOrdinarySelection()!=rememberAtOrdinarySelectionCheckBox->isChecked()) mytetraconfig.setRememberCursorAtOrdinarySelection(rememberAtOrdinarySelectionCheckBox->isChecked()); return 0; }
AppConfigPage_Misc::AppConfigPage_Misc(QWidget *parent) : ConfigPage(parent) { qDebug() << "Create misc config page"; // Блок настройки подтверждения для действия "cut" на ветке cutBranchConfirm=new QCheckBox(this); cutBranchConfirm->setText(tr("Confirm item cut")); cutBranchConfirm->setChecked(mytetraconfig.get_cutbranchconfirm()); // Блок настройки отображения отладочных сообщений в консоли printDebugMessages=new QCheckBox(this); printDebugMessages->setText(tr("Print debug messages to console")); printDebugMessages->setChecked(mytetraconfig.get_printdebugmessages()); // Настройка запуска MyTetra в свернутом окне runInMinimizedWindow=new QCheckBox(this); runInMinimizedWindow->setText(tr("Run MyTetra in a minimized window")); runInMinimizedWindow->setChecked(mytetraconfig.get_runinminimizedwindow()); // Группировщик виджетов для настройки автоматического старта синхронизации historyBox=new QGroupBox(this); historyBox->setTitle(tr("History of visited notes")); rememberAtHistoryNavigationCheckBox=new QCheckBox(this); rememberAtHistoryNavigationCheckBox->setText(tr("Remember cursor position at history navigation")); rememberAtHistoryNavigationCheckBox->setChecked(mytetraconfig.getRememberCursorAtHistoryNavigation()); rememberAtOrdinarySelectionCheckBox=new QCheckBox(this); rememberAtOrdinarySelectionCheckBox->setText(tr("Try remember cursor position at ordinary selection")); rememberAtOrdinarySelectionCheckBox->setChecked(mytetraconfig.getRememberCursorAtOrdinarySelection()); // Виджеты вставляются в группировщик QVBoxLayout *historyLayout = new QVBoxLayout; historyLayout->addWidget(rememberAtHistoryNavigationCheckBox); historyLayout->addWidget(rememberAtOrdinarySelectionCheckBox); historyBox->setLayout(historyLayout); // Собирается основной слой QVBoxLayout *central_layout=new QVBoxLayout(); central_layout->addWidget(cutBranchConfirm); central_layout->addWidget(printDebugMessages); central_layout->addWidget(runInMinimizedWindow); central_layout->addWidget(historyBox); central_layout->addStretch(); // Основной слой устанавливается setLayout(central_layout); }
void AppConfigPage_Misc::setupUi(void) { qDebug() << "Create misc config page"; // Блок настройки подтверждения для действия "cut" на ветке cutBranchConfirm=new QCheckBox(this); cutBranchConfirm->setText(tr("Confirm item cut")); cutBranchConfirm->setChecked(mytetraConfig.get_cutbranchconfirm()); // Блок настройки отображения отладочных сообщений в консоли printDebugMessages=new QCheckBox(this); printDebugMessages->setText(tr("Print debug messages to console")); printDebugMessages->setChecked(mytetraConfig.get_printdebugmessages()); // Настройка запуска MyTetra в свернутом окне runInMinimizedWindow=new QCheckBox(this); runInMinimizedWindow->setText(tr("Run MyTetra in a minimized window")); runInMinimizedWindow->setChecked(mytetraConfig.get_runinminimizedwindow()); // Разрешение/запрещение лога действий enableActionLog=new QCheckBox(this); enableActionLog->setText(tr("Enable action logging (experimental)")); enableActionLog->setChecked(mytetraConfig.getEnableLogging()); // Разрешение/запрещение создавать пустую запись (без текста) enableCreateEmptyRecord=new QCheckBox(this); enableCreateEmptyRecord->setText(tr("Create empty note enable")); enableCreateEmptyRecord->setChecked(mytetraConfig.getEnableCreateEmptyRecord()); // Настройки курсора при навигации по истории rememberAtHistoryNavigationCheckBox=new QCheckBox(this); rememberAtHistoryNavigationCheckBox->setText(tr("Remember cursor position at history navigation")); rememberAtHistoryNavigationCheckBox->setChecked(mytetraConfig.getRememberCursorAtHistoryNavigation()); rememberAtOrdinarySelectionCheckBox=new QCheckBox(this); rememberAtOrdinarySelectionCheckBox->setText(tr("Try remember cursor position at ordinary selection")); rememberAtOrdinarySelectionCheckBox->setChecked(mytetraConfig.getRememberCursorAtOrdinarySelection()); // Кнопка редактирования файла конфигурации MyTetra editMyTetraConfigFile=new QPushButton(this); editMyTetraConfigFile->setText(tr("Edit config file")); editMyTetraConfigFile->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed, QSizePolicy::ToolButton)); }
// Метод должен возвращать уровень сложности сделанных изменений // 0 - изменения не требуют перезапуска программы // 1 - изменения требуют перезапуска программы int AppConfigPage_Misc::applyChanges(void) { qDebug() << "Apply changes misc"; int result=0; // Сохраняется настройка подтверждения для действия "cut" на ветке if(mytetraConfig.get_cutbranchconfirm()!=cutBranchConfirm->isChecked()) mytetraConfig.set_cutbranchconfirm(cutBranchConfirm->isChecked()); // Сохраняется настройка отображения отладочных сообщений в консоли if(mytetraConfig.get_printdebugmessages()!=printDebugMessages->isChecked()) mytetraConfig.set_printdebugmessages(printDebugMessages->isChecked()); // Сохраняется настройка режима запуска MyTetra - обычный или свернутый if(mytetraConfig.get_runinminimizedwindow()!=runInMinimizedWindow->isChecked()) mytetraConfig.set_runinminimizedwindow(runInMinimizedWindow->isChecked()); // Сохраняется настройка разрешения/запрещения лога действий if(mytetraConfig.getEnableLogging()!=enableActionLog->isChecked()) { mytetraConfig.setEnableLogging(enableActionLog->isChecked()); result=1; } // Сохраняется настройка возможности создания записи, не содержащей текст if(mytetraConfig.getEnableCreateEmptyRecord()!=enableCreateEmptyRecord->isChecked()) mytetraConfig.setEnableCreateEmptyRecord(enableCreateEmptyRecord->isChecked()); // Сохраняется настройка нужно ли вспоминать позицию курсора при перемещении // по истории if(mytetraConfig.getRememberCursorAtHistoryNavigation()!=rememberAtHistoryNavigationCheckBox->isChecked()) mytetraConfig.setRememberCursorAtHistoryNavigation(rememberAtHistoryNavigationCheckBox->isChecked()); // Сохраняется настройка нужно ли пытаться вспоминать позицию курсора при // обычном выборе записи if(mytetraConfig.getRememberCursorAtOrdinarySelection()!=rememberAtOrdinarySelectionCheckBox->isChecked()) mytetraConfig.setRememberCursorAtOrdinarySelection(rememberAtOrdinarySelectionCheckBox->isChecked()); return result; }
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 ); // Есть приаттаченные файлы }