Description: Add a desktop shortcut for the Lubuntu Manual Forwarded: eventually Author: Simon Quigley Last-Update: 2022-06-16 --- --- a/pcmanfm/desktoppreferencesdialog.cpp +++ b/pcmanfm/desktoppreferencesdialog.cpp @@ -120,6 +120,7 @@ DesktopPreferencesDialog::DesktopPrefere ui.trashBox->setChecked(ds.contains(QLatin1String("Trash"))); ui.computerBox->setChecked(ds.contains(QLatin1String("Computer"))); ui.networkBox->setChecked(ds.contains(QLatin1String("Network"))); + ui.lubuntuManualBox->setChecked(ds.contains(QLatin1String("Lubuntu Manual"))); connect(ui.buttonBox->button(QDialogButtonBox::Apply), &QPushButton::clicked, this, &DesktopPreferencesDialog::onApplyClicked); @@ -208,6 +209,9 @@ void DesktopPreferencesDialog::applySett if(ui.networkBox->isChecked()) { ds << QLatin1String("Network"); } + if(ui.lubuntuManualBox->isChecked()) { + ds << QLatin1String("Lubuntu Manual"); + } settings.setDesktopShortcuts(ds); settings.setDesktopCellMargins(QSize(ui.hMargin->value(), ui.vMargin->value())); --- a/pcmanfm/desktopwindow.cpp +++ b/pcmanfm/desktopwindow.cpp @@ -280,6 +280,16 @@ void DesktopWindow::updateShortcutsFromS paths.push_back(Fm::FilePath::fromLocalPath(network.toStdString().c_str())); } } + // Lubuntu Manual + if(ds.contains(QLatin1String("Lubuntu Manual"))) { + createLubuntuManualShortcut(); + } + else if(!firstCall) { + QString network = XdgDir::readDesktopDir() + QLatin1String("/lubuntu-manual.desktop"); + if(QFile::exists(network)) { + paths.push_back(Fm::FilePath::fromLocalPath(network.toStdString().c_str())); + } + } // WARNING: QFile::remove() is not compatible with libfm-qt and should not be used. if(!paths.empty()) { @@ -365,6 +375,20 @@ void DesktopWindow::createNetworkShortcu g_key_file_free(kf); } +void DesktopWindow::createLubuntuManualShortcut() { + GKeyFile* kf = g_key_file_new(); + g_key_file_set_string(kf, "Desktop Entry", "Type", "Application"); + g_key_file_set_string(kf, "Desktop Entry", "Exec", "firefox manual.lubuntu.me"); + g_key_file_set_string(kf, "Desktop Entry", "Icon", "help-browser"); + const QString name = tr("Lubuntu Manual"); + g_key_file_set_string(kf, "Desktop Entry", "Name", name.toStdString().c_str()); + + auto path = Fm::FilePath::fromLocalPath(XdgDir::readDesktopDir().toStdString().c_str()).localPath(); + auto trash_can = Fm::CStrPtr{g_build_filename(path.get(), "lubuntu-manual.desktop", nullptr)}; + g_key_file_save_to_file(kf, trash_can.get(), nullptr); + g_key_file_free(kf); +} + void DesktopWindow::createTrash() { if(trashMonitor_) { return; @@ -1005,7 +1029,8 @@ void DesktopWindow::onFileClicked(int ty if((fileName == QLatin1String("trash-can.desktop") && ds.contains(QLatin1String("Trash"))) || (fileName == QLatin1String("user-home.desktop") && ds.contains(QLatin1String("Home"))) || (fileName == QLatin1String("computer.desktop") && ds.contains(QLatin1String("Computer"))) - || (fileName == QLatin1String("network.desktop") && ds.contains(QLatin1String("Network")))) { + || (fileName == QLatin1String("network.desktop") && ds.contains(QLatin1String("Network"))) + || (fileName == QLatin1String("lubuntu-manual.desktop") && ds.contains(QLatin1String("Lubuntu Manual")))) { QMenu* menu = new QMenu(this); // "Open" action for all QAction* action = menu->addAction(tr("Open")); @@ -1314,7 +1339,8 @@ void DesktopWindow::trustOurDesktopShort const char* execStr = isHome ? homeExec.get() : fileName == QLatin1String("trash-can.desktop") && ds.contains(QLatin1String("Trash")) ? "pcmanfm-qt trash:///" : fileName == QLatin1String("computer.desktop") && ds.contains(QLatin1String("Computer")) ? "pcmanfm-qt computer:///" : - fileName == QLatin1String("network.desktop") && ds.contains(QLatin1String("Network")) ? "pcmanfm-qt network:///" : nullptr; + fileName == QLatin1String("network.desktop") && ds.contains(QLatin1String("Network")) ? "pcmanfm-qt network:///" : + fileName == QLatin1String("lubuntu-manual.desktop") && ds.contains(QLatin1String("Lubuntu Manual")) ? "firefox manual.lubuntu.me" : nullptr ; if(execStr) { GKeyFile* kf = g_key_file_new(); if(g_key_file_load_from_file(kf, file->path().toString().get(), G_KEY_FILE_NONE, nullptr)) { --- a/pcmanfm/desktopwindow.h +++ b/pcmanfm/desktopwindow.h @@ -160,6 +160,7 @@ private: void createHomeShortcut(); void createComputerShortcut(); void createNetworkShortcut(); + void createLubuntuManualShortcut(); void createTrash(); static void onTrashChanged(GFileMonitor* monitor, GFile* gf, GFile* other, GFileMonitorEvent evt, DesktopWindow* pThis); --- a/pcmanfm/desktop-preferences.ui +++ b/pcmanfm/desktop-preferences.ui @@ -664,6 +664,17 @@ are left clicked, even when it is not th + + + + Lubuntu Manual + + + + .. + + +