Akonadi
selftestdialog.cpp
   79    connect(ui.testView->selectionModel(), &QItemSelectionModel::currentChanged, this, &SelfTestDialog::selectionChanged);
   94QStandardItem *SelfTestDialog::report(ResultType type, const KLocalizedString &summary, const KLocalizedString &details)
  135    const QString driver = serverSetting(QStringLiteral("General"), "Driver", QStringLiteral("QMYSQL")).toString();
  155QVariant SelfTestDialog::serverSetting(const QString &group, const char *key, const QVariant &def) const
  165    const QString driver = serverSetting(QStringLiteral("General"), "Driver", QStringLiteral("QMYSQL")).toString();
  173bool SelfTestDialog::runProcess(const QString &app, const QStringList &args, QString &result) const
  186    const QString driver = serverSetting(QStringLiteral("General"), "Driver", QStringLiteral("QMYSQL")).toString();
  189        ki18n("The QtSQL driver '%1' is required by your current Akonadi server configuration and was found on your system.").subs(driver);
  208        report(Skip, ki18n("MySQL server executable not tested."), ki18n("The current configuration does not require an internal MySQL server."));
  212    const QString driver = serverSetting(QStringLiteral("General"), "Driver", QStringLiteral("QMYSQL")).toString();
  213    const QString serverPath = serverSetting(driver, "ServerPath", QString()).toString(); // ### default?
  218                                         "necessary read and execution rights on the server executable. The server executable is typically "
  241        const KLocalizedString details = ki18n("Executing the MySQL server '%1' failed with the following error message: '%2'").subs(serverPath).subs(result);
  249        report(Skip, ki18n("MySQL server error log not tested."), ki18n("The current configuration does not require an internal MySQL server."));
  253    const QString logFileName = StandardDirs::saveDir("data", QStringLiteral("db_data")) + QLatin1StringView("/mysql.err");
  258               ki18n("The MySQL server did not report any errors during this startup. The log can be found in '%1'.").subs(logFileName));
  265               ki18n("A MySQL server error log file was found but is not readable: %1").subs(makeLink(logFileName)));
  290                      ki18n("The MySQL server log file '%1' does not contain any errors or warnings.").subs(makeLink(logFileName)));
  300        report(Skip, ki18n("MySQL server configuration not tested."), ki18n("The current configuration does not require an internal MySQL server."));
  305    const QString globalConfig = StandardDirs::locateResourceFile("config", QStringLiteral("mysql-global.conf"));
  310                      ki18n("The default configuration for the MySQL server was found and is readable at %1.").subs(makeLink(globalConfig)));
  319    const QString localConfig = StandardDirs::locateResourceFile("config", QStringLiteral("mysql-local.conf"));
  328                      ki18n("The custom configuration for the MySQL server was found and is readable at %1").subs(makeLink(localConfig)));
  347                      ki18n("The MySQL server configuration was found at %1 and is readable.").subs(makeLink(actualConfig)));
  354    const QString dbname = serverSetting(QStringLiteral("QPSQL"), "Name", QStringLiteral("akonadi")).toString();
  355    const QString hostname = serverSetting(QStringLiteral("QPSQL"), "Host", QStringLiteral("localhost")).toString();
  357    const QString password = serverSetting(QStringLiteral("QPSQL"), "Password", QString()).toString();
  378        report(Success, ki18n("PostgreSQL server found."), ki18n("The PostgreSQL server was found and connection is working."));
  414    if (QDBusConnection::sessionBus().interface()->isServiceRegistered(ServerManager::serviceName(ServerManager::Control))) {
  417               ki18n("The Akonadi control process is registered at D-Bus which typically indicates it is operational."));
  421               ki18n("The Akonadi control process is not registered at D-Bus which typically means it was not started "
  425    if (QDBusConnection::sessionBus().interface()->isServiceRegistered(ServerManager::serviceName(ServerManager::Server))) {
  428               ki18n("The Akonadi server process is registered at D-Bus which typically indicates it is operational."));
  432               ki18n("The Akonadi server process is not registered at D-Bus which typically means it was not started "
  442               ki18n("Without a connection to the server it is not possible to check if the protocol version meets the requirements."));
  449                     "If you recently updated KDE PIM, please make sure to restart both Akonadi and KDE PIM applications.")
  456                     "If you recently updated KDE PIM, please make sure to restart both Akonadi and KDE PIM applications.")
  460        report(Success, ki18n("Server protocol version matches."), ki18n("The current Protocol version is %1.").subs(Internal::serverProtocolVersion()));
  478        item = report(Success, ki18n("Resource agents found."), ki18n("At least one resource agent has been found."));
  499        report(Success, ki18n("No current Akonadi server error log found."), ki18n("The Akonadi server did not report any errors during its current startup."));
  504                   ki18n("The Akonadi server reported errors during its current startup. The log can be found in %1.").subs(makeLink(serverLog)));
  518                   ki18n("The Akonadi server reported errors during its previous startup. The log can be found in %1.").subs(makeLink(serverLog)));
  525    QString controlLog = StandardDirs::saveDir("data") + QLatin1StringView("/akonadi_control.error");
  535                   ki18n("The Akonadi control process reported errors during its current startup. The log can be found in %1.").subs(makeLink(controlLog)));
  549                   ki18n("The Akonadi control process reported errors during its previous startup. The log can be found in %1.").subs(makeLink(controlLog)));
  560               ki18n("Running Internet-facing applications as root/administrator exposes you to many security risks. MySQL, used by this Akonadi installation, "
  565               ki18n("Akonadi is not running as a root/administrator user, which is the recommended setup for a secure system."));
  642        QStringLiteral("akonadi-selftest-report-") + QDate::currentDate().toString(QStringLiteral("yyyyMMdd")) + QStringLiteral(".txt");
  643    const QString fileName = QFileDialog::getSaveFileName(this, i18n("Save Test Report"), defaultFileName);
  650        QMessageBox::critical(this, i18nc("@title:window", "Error"), i18n("Could not open file '%1'", fileName));
void hideIntroduction()
Hides the label with the introduction message.
SelfTestDialog(QWidget *parent=nullptr)
Creates a new self test dialog.
void stateChanged(Akonadi::ServerManager::State state)
Emitted whenever the server state changes.
static ServerManager * self()
Returns the singleton instance of this class, for connecting to its signals.
Definition servermanager.cpp:178
QString toString() const
KLocalizedString subs(const KLocalizedString &a, int fieldWidth=0, QChar fillChar=QLatin1Char(' ')) const
bool isSuperUser() const
KLocalizedString KI18N_EXPORT ki18n(const char *text)
QString i18nc(const char *context, const char *text, const TYPE &arg...)
QString i18n(const char *text, const TYPE &arg...)
Helper integration between Akonadi and Qt.
Error
QString path(const QString &relativePath)
VehicleSection::Type type(QStringView coachNumber, QStringView coachClassification)
KIOCORE_EXPORT QString dir(const QString &fileClass)
NETWORKMANAGERQT_EXPORT QString hostname()
Success
void clicked(bool checked)
const char * constData() const const
void setText(const QString &text, Mode mode)
QDate currentDate()
QString toString(QStringView format, QCalendar cal) const const
QDBusConnection sessionBus()
bool openUrl(const QUrl &url)
virtual void reject()
ActionRole
void rejected()
AllEntries
QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedFilter, Options options)
QClipboard * clipboard()
QIcon fromTheme(const QString &name)
ReadOnly
void currentChanged(const QModelIndex ¤t, const QModelIndex &previous)
void linkActivated(const QString &link)
bool isEmpty() const const
StandardButton critical(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons, StandardButton defaultButton)
QVariant data(int role) const const
bool isValid() const const
QByteArray readAllStandardError()
QByteArray readAllStandardOutput()
void start(OpenMode mode)
bool waitForFinished(int msecs)
IniFormat
QSqlDatabase addDatabase(QSqlDriver *driver, const QString &connectionName)
void close()
QStringList drivers()
QSqlError lastError() const const
bool open()
void setDatabaseName(const QString &name)
void setHostName(const QString &host)
void setPassword(const QString &password)
void setPort(int port)
void setUserName(const QString &name)
QString text() const const
Warning
virtual QVariant data(int role) const const
virtual void setData(const QVariant &value, int role)
QString arg(Args &&... args) const const
void clear()
bool contains(QChar ch, Qt::CaseSensitivity cs) const const
QString fromLatin1(QByteArrayView str)
QString fromLocal8Bit(QByteArrayView str)
QString fromUtf8(QByteArrayView str)
bool isEmpty() const const
int toInt(bool *ok, int base) const const
QByteArray toLatin1() const const
bool contains(QLatin1StringView str, Qt::CaseSensitivity cs) const const
QString join(QChar separator) const const
CaseInsensitive
UserRole
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)
QUrl fromLocalFile(const QString &localFile)
bool isValid() const const
QByteArray toByteArray() const const
int toInt(bool *ok) const const
QString toString() const const
QStringList toStringList() const const
  This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri May 2 2025 11:53:10 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006
          Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri May 2 2025 11:53:10 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.