class SettingsPage : public Core::IOptionsPage { Q_OBJECT public: SettingsPage(KeywordsList keywords = KeywordsList(), int projectOptions = 0, int paneOptions = 0, QObject *parent = 0); ~SettingsPage(); QString id() const; // QString trName() const; // ( ) QString category() const; // QString trCategory() const; // ( ) QString displayName() const; // QIcon categoryIcon() const; // QString displayCategory() const; // QWidget *createPage(QWidget *parent); // void apply(); // "Apply" "OK" void finish(); // - "OK" "Cancel" public slots: void settingsChanged(); private: SettingsDialog *dialog; // bool settingsStatus; // ? int projectOptions; // int paneOptions; // KeywordsList keywords; // };
void SettingsPage::apply() { if (settingsStatus) { QSettings *settings = Core::ICore::instance()->settings(); // settings->beginGroup("TODOPlugin"); // projectOptions = dialog->currentFileRadioButtonEnabled() ? 0 : 1; // paneOptions = dialog->todoOutputRadioButtonEnabled() ? 0 : 1; keywords = dialog->keywordsList(); settings->setValue("project_options", projectOptions); // settings->setValue("pane_options", paneOptions); settings->setValue("keywords", qVariantFromValue(keywords)); settings->endGroup(); settings->sync(); // ( ) QMessageBox::information(dialog, tr("Information"), tr("The TODO plugin settings change will take effect after a restart of Qt Creator.")); // settingsStatus = false; } }
#include <projectexplorer/taskwindow.h>
taskWindow = pluginManager->getObject<ProjectExplorer::TaskWindow>();
void addCategory(const QString &categoryId, const QString &displayName); void addTask(const Task &task); void removeTask(const Task &task); void clearTasks(const QString &categoryId = QString());
struct PROJECTEXPLORER_EXPORT Task { enum TaskType { Unknown, Error, Warning }; Task() : type(Unknown), line(-1) { } Task(TaskType type_, const QString &description_, const QString &file_, int line_, const QString &category_) : type(type_), description(description_), file(file_), line(line_), category(category_) { } Task(const Task &source) : type(source.type), description(source.description), file(source.file), line(source.line), category(source.category), formats(source.formats) { } ~Task() { } TaskType type; QString description; QString file; int line; QString category; QList<QTextLayout::FormatRange> formats; };
QFuture<void> result = QtConcurrent::run(&TodoPlugin::readCurrentProject, this);
#include <coreplugin/progressmanager/progressmanager.h> #include <qtconcurrent/runextensions.h>
Core::ICore::instance()->progressManager()->addTask(result, tr("Todoscan"), "Todo.Plugin.Scanning");
void TodoPlugin::readCurrentProject(QFutureInterface<void> &future, TodoPlugin *instance) { QStringList filesList = instance->currentProject->files(ProjectExplorer::Project::ExcludeGeneratedFiles); // future.setProgressRange(0, filesList.count()-1); // for (int i = 0; i < filesList.count(); ++i) { instance->readFile(filesList.at(i)); // future.setProgressValue(i); // } // SKIPPED }
Source: https://habr.com/ru/post/105085/
All Articles