mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-20 08:51:24 +00:00
a410c025ea
- Complete port to KDE/Qt 4, no more use of QT3 Support - Simplify interface (remove multiple left tabs, add quick help in the top of the layout, use a KListWidgetSearchLine to filter by keywords and name) - Fix General Page (modules were not displayed), and allow user to select it from the left panel - Clean code and indentation structure - Remove big margins and useless layout/widgets to integrate KCMModule (request from Aaron Siego) - Memory module is now in a separate folder - Memory module has been rewritten, and the chart generation is now simpler. - Use color gradient and color scheme of System Monitor app (request from John Tapsell) - Use a default icon when the requested icon does not exist (request from David Jarvie) - Integrate patch from Konrad Rzepecki about improve PCI module by using libpci API. Add an optional dependency in CMake for this library FEATURE:88625 - The porting to KDE4 of all architecture may add some compilation errors (sorry, I have no AIX, HPUX, Solaris, SGI, FreeBSD, OpenBSD systems to test those source). However, some existing codes already did not compile. - Simplify source code by removing some part corresponding to the moment where KInfocenter and KControl were the same (it seems to). - Name and comments of each modules are now normalized. (even IOSlaves Info and Samba Status) CCMAIL:kde-core-devel@kde.org - Allow the future move of inner modules of kcm_info to a dedicated module (examples: Sound, X-Server, Partitions,...) TODO : - Improve Loading page layout - Port Partitions, Sound and Network Interfaces modules to Solid - Set my email as current maintainer svn path=/trunk/KDE/kdebase/apps/; revision=795596
140 lines
3.1 KiB
C++
140 lines
3.1 KiB
C++
/*
|
|
Copyright (c) 1999 Matthias Hoelzer-Kluepfel <hoelzer@kde.org>
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License along
|
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include "modules.h"
|
|
#include "global.h"
|
|
#include "proxywidget.h"
|
|
|
|
#include <kapplication.h>
|
|
#include <kdebug.h>
|
|
#include <kservicegroup.h>
|
|
#include <k3process.h>
|
|
#include <klocale.h>
|
|
#include <kstandarddirs.h>
|
|
#include <kauthorized.h>
|
|
#include <kservicetypetrader.h>
|
|
#include <kcmoduleloader.h>
|
|
#include <kvbox.h>
|
|
|
|
#include <QLabel>
|
|
#include <QVBoxLayout>
|
|
#include <QFrame>
|
|
|
|
#ifdef Q_WS_X11
|
|
#include <X11/Xlib.h>
|
|
#include <QX11Info>
|
|
#include <QX11EmbedWidget>
|
|
#endif
|
|
#include <unistd.h>
|
|
#include <sys/types.h>
|
|
|
|
#include "modules.moc"
|
|
|
|
ConfigModule::ConfigModule(const KService::Ptr &s) :
|
|
KCModuleInfo(s), _module(0) {
|
|
}
|
|
|
|
ConfigModule::~ConfigModule() {
|
|
deleteClient();
|
|
}
|
|
|
|
ProxyWidget *ConfigModule::module() {
|
|
if (_module)
|
|
return _module;
|
|
|
|
kDebug() << "Finding proxy..." << endl;
|
|
|
|
KCModule *modWidget = 0;
|
|
|
|
modWidget = KCModuleLoader::loadModule(*this,/*KCModuleLoader::None*/(KCModuleLoader::ErrorReporting)NULL);
|
|
|
|
if (modWidget==NULL) {
|
|
|
|
kWarning() << "Unable to load KCM Module" << endl;
|
|
return NULL;
|
|
}
|
|
|
|
_module = new ProxyWidget(modWidget);
|
|
|
|
return _module;
|
|
}
|
|
|
|
QPixmap ConfigModule::realIcon(KIconLoader::StdSizes size) {
|
|
//The next line is identical as SmallIcon(module->icon()), but is able to return a isNull() QPixmap
|
|
QPixmap providedIcon = KIconLoader::global()->loadIcon(icon(), KIconLoader::Small, size, KIconLoader::DefaultState, QStringList(), 0L, true);
|
|
if (providedIcon.isNull()) {
|
|
kDebug() << "Icon is null" << icon() << endl;
|
|
return SmallIcon("computer", size);
|
|
|
|
}
|
|
return providedIcon;
|
|
|
|
}
|
|
|
|
void ConfigModule::deleteClient() {
|
|
kapp->syncX();
|
|
|
|
if (_module)
|
|
_module->close();
|
|
_module = NULL;
|
|
|
|
}
|
|
|
|
const KAboutData *ConfigModule::aboutData() const {
|
|
if (!_module)
|
|
return 0;
|
|
return _module->aboutData();
|
|
}
|
|
|
|
ConfigModuleList::ConfigModuleList() {
|
|
foreach(ConfigModule* configModule, *this) {
|
|
delete configModule;
|
|
}
|
|
|
|
this->clear();
|
|
}
|
|
|
|
bool ConfigModuleList::readDesktopEntries() {
|
|
KService::List list = KServiceTypeTrader::self()->query("KCModule", "[X-KDE-ParentApp] == 'kinfocenter'");
|
|
|
|
if (list.isEmpty()) {
|
|
return false;
|
|
}
|
|
|
|
foreach(const KService::Ptr &s, list) {
|
|
if (s->isType(KST_KService) == false) {
|
|
continue;
|
|
}
|
|
|
|
if (!KAuthorized::authorizeControlModule(s->menuId())) {
|
|
continue;
|
|
}
|
|
|
|
ConfigModule *module = new ConfigModule(s);
|
|
if (module->library().isEmpty()) {
|
|
delete module;
|
|
continue;
|
|
}
|
|
|
|
append(module);
|
|
|
|
}
|
|
|
|
return true;
|
|
}
|