You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
673 lines
31 KiB
673 lines
31 KiB
15 years ago
|
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 2//EN//2.0">
|
||
|
<HTML>
|
||
|
<HEAD>
|
||
|
<TITLE>Guide to Porting Applications to KDE 3.0</TITLE>
|
||
|
</HEAD>
|
||
|
<BODY>
|
||
|
|
||
|
<H2>Porting Applications to KDE 3.0</H2>
|
||
|
This document contains the changes you have to apply to programs written for
|
||
|
KDE 2.x when you want to port them to KDE 3.0.<P>
|
||
|
|
||
|
As a start you should have a look at doc/porting.doc in the Qt package,
|
||
|
or <a href="http://doc.trolltech.com/3.0/porting.html">this page online</a>.<P>
|
||
|
|
||
|
<H3><A NAME="TOC">Table of Contents</A></H3>
|
||
|
|
||
|
<UL>
|
||
|
<LI><A HREF="#gettingstarted">Getting Started</A></LI>
|
||
|
<LI><A HREF="#kab">Changes in kab</A></LI>
|
||
|
<LI><A HREF="#kdecore">Changes in kdecore</A></LI>
|
||
|
<LI><A HREF="#kdeui">Changes in kdeui</A></LI>
|
||
|
<LI><A HREF="#kio">Changes in kio</A></LI>
|
||
|
<LI><A HREF="#kparts">Changes in kparts</A></LI>
|
||
|
<LI><A HREF="#kspell">Changes in kspell</A></LI>
|
||
|
<LI><A HREF="#khtmlpart">API-cleanup in KHTML</A></LI>
|
||
|
<LI><A HREF="#kfile">Changes in kfile</A></LI>
|
||
|
<LI><A HREF="#kcontrol">KDE Control Center</A></LI>
|
||
|
<LI><A HREF="#kicker">Panel Applets and Extensions</A></LI>
|
||
|
</UL>
|
||
|
|
||
|
<H3><A NAME="gettingstarted">Getting started</A></H3>
|
||
|
|
||
|
The first step to get your KDE application to compile under KDE 3.0,
|
||
|
is to detect KDE 3.0 and Qt 3.x at configure time. The easiest way to
|
||
|
get a working autoconf/automake framework, is to either use
|
||
|
<a href="http://www.kdevelop.org">KDevelop</a> or
|
||
|
<a href="http://home.earthlink.net/~granroth/kapptemplate/index.html">kapptemplate</a>
|
||
|
(available in CVS under the module "kdesdk"), to generate a new
|
||
|
application template. Replace the generated source files by yours
|
||
|
and adapt Makefile.am accordingly.
|
||
|
<p>
|
||
|
Please note that we tried to be mostly source-compatible where it
|
||
|
was possible. To accomplish that, we added commonly used but still
|
||
|
deprecated / removed API parts in a #ifndef KDE_NO_COMPAT-block.
|
||
|
That means you can "test" and adjust your application by #defining
|
||
|
KDE_NO_COMPAT for compiling and see where it breaks. This is
|
||
|
recommended, as those backward compatibility "hacks" are not kept for
|
||
|
long.
|
||
|
</p>
|
||
|
<p>
|
||
|
<b>WARNING:</b>In some cases the names or signatures of signals or slots
|
||
|
have changed. Check your source carefully for this since these changes will
|
||
|
not be discovered by your compiler but will result in incorrect runtime
|
||
|
behavior if left uncorrected in your application.
|
||
|
</p>
|
||
|
|
||
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
||
|
|
||
|
<H3><A NAME="kab">Changes in kab</A></H3>
|
||
|
|
||
|
<H4>AddressBook</H4>
|
||
|
The <i>getStandardFilename()</i> method has been renamed to <i>getStandardFileName()</i>.
|
||
|
The old name will still work unless KDE_NO_COMPAT is defined.
|
||
|
|
||
|
|
||
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
||
|
|
||
|
<H3><A NAME="kdecore">Changes in kdecore</A></H3>
|
||
|
|
||
|
<H4>KDesktopWidget</H4>
|
||
|
KDesktopWidget is obsolete. Include <qdesktopwidget.h> and use QDesktopWidget
|
||
|
instead, everything else is source compatible.
|
||
|
|
||
|
<H4>Header file names</H4>
|
||
|
<UL>
|
||
|
<LI>kapp.h is now kapplication.h</LI>
|
||
|
<LI>kuniqueapp.h is now kuniqueapplication.h</LI>
|
||
|
<LI>kstddirs.h is now kstandarddirs.h</LI>
|
||
|
<LI>kcolorbtn.h is now kcolorbutton.h</LI>
|
||
|
<LI>kxmlgui.h is now kxmlguifactory.h</LI>
|
||
|
<LI>kdatepik.h is now kdatepicker.h</LI>
|
||
|
<LI>kdualcolorbtn.h is now kdualcolorbutton.h</LI>
|
||
|
|
||
|
</UL>
|
||
|
This is to help finding out header files from class names and the other
|
||
|
way round. Compatibility headers have been created. You can use them as
|
||
|
long as you don't compile with KDE_NO_COMPAT.
|
||
|
|
||
|
<H4>DCOP</H4>
|
||
|
The file with the DCOP connection information has been renamed. The new
|
||
|
name is $HOME/.DCOPserver_<hostname>_<display>. The screen part has been
|
||
|
stripped from <display> and the ':' character that separates host and
|
||
|
display-number has been replaced with a '_'. If you access DCOP via
|
||
|
DCOPClient you do not need to change anything.
|
||
|
<p>
|
||
|
It is no longer possible to make calls to an application registered as
|
||
|
"<appid>-<pid>" with "<appid>" only. The full name can be obtained by using
|
||
|
either KApplication::startServiceBy...() or DCOPClient::findObject() or
|
||
|
their command line equivalents "dcopstart" and "dcopfind".
|
||
|
|
||
|
<H4>KLibFactory</H4>
|
||
|
KLibFactory's create method is no more virtual and the createObject method
|
||
|
is now pure virtual. The former was marked as deprecated since KDE 2.0.
|
||
|
All it takes in your component is to rename your existing create implementation
|
||
|
to createObject and remove the 'emit objectCreated( yourObject );' line.
|
||
|
|
||
|
<H4>KDesktopFile</H4>
|
||
|
The <i>filename()</i> method has been renamed to <i>fileName()</i>.
|
||
|
The old name will still work unless KDE_NO_COMPAT is defined.
|
||
|
|
||
|
<H4>KPixmapSplitter</H4>
|
||
|
KPixmapSplitter has now been moved to the new kdefx library.
|
||
|
|
||
|
<H4>KStringHandler</H4>
|
||
|
The <i>matchFilename( const QString& filename, const QString& pattern )</i> method has been
|
||
|
renamed to <br><i>matchFileName( const QString& filename, const QString& pattern )</i>.
|
||
|
The old name will still work unless KDE_NO_COMPAT is defined.
|
||
|
|
||
|
<H4>KStyle</H4>
|
||
|
Due to the major changes in the QStyle API in Qt3, KStyle has been completely
|
||
|
re-written. KStyle is now a thin wrapper around QCommonStyle with a few extra
|
||
|
primitive elements and a simple popupMenu transparency engine. All KStyles can
|
||
|
now style Qt apps like designer and assistant automatically. KStyle is no longer
|
||
|
present in kdecore. It is now in a new library called kdefx to allow Qt apps to
|
||
|
use KDE's styles without having the styles linked to kdecore/kdeui.
|
||
|
|
||
|
<H4>KURL</H4>
|
||
|
The <i>filename( bool _ignore_trailing_slash_in_path = true )</i> method has been
|
||
|
renamed to <br><i>fileName( bool _ignore_trailing_slash_in_path = true )</i>.
|
||
|
The old name will still work unless KDE_NO_COMPAT is defined.
|
||
|
|
||
|
<H4>KMD5</H4>
|
||
|
HASHHEX and HASH has been removed to make this class namespace clean.
|
||
|
They have been replaced by QCString and KMD5::Digest. <br>
|
||
|
The API has been cleaned up, it is no longer necessary to call finalize().
|
||
|
Simply remove any calls to it.
|
||
|
|
||
|
<H4>KLocale</H4>
|
||
|
<li>charset() has been removed. You might want to use encoding() instead.
|
||
|
<li>setCharset(const QString &) has been removed. You might want to use
|
||
|
setEncoding(int) instead.
|
||
|
<li>formatMoney(const QString &) has been removed.
|
||
|
<li>formatNumber(const QString &) has been removed.
|
||
|
<li>languages() has been removed. Use languageList() instead.
|
||
|
<li>All references to monthName(), monthNamePossessive(), and weekDayName()
|
||
|
should be replaced with methods from KLocale::calendar().
|
||
|
<li>Hard coded date handling or date handling with QDate should in most
|
||
|
cases be replaced by methods in KLocale::calendar().
|
||
|
|
||
|
<H4>Accelerators Keys</H4>
|
||
|
<h5>KAccel</h5>
|
||
|
The following methods of been deprecated, and if KDE_NO_COMPAT is defined they will
|
||
|
not be available.
|
||
|
<ul>
|
||
|
<li> KAccel::insertItem() and KAccel::connectItem().
|
||
|
<pre>
|
||
|
- kaccel->insertItem( i18n("Scroll Up"), "Scroll Up", "Up" );
|
||
|
- kaccel->connectItem( "Scroll Up", this, SLOT(scrollUp()) );
|
||
|
+ kaccel->insert( "Scroll Up", i18n("Scroll Up"), QString::null,
|
||
|
Key_Up, this, SLOT(scrollUp()) );
|
||
|
</pre>
|
||
|
Note that a What's This parameter is now a part of the insert function.
|
||
|
You might replace the QString::null parameter with
|
||
|
<pre> i18n("Scroll the current document's contents up by one line.") </pre>
|
||
|
for example.</li>
|
||
|
<li> KAccel::changeMenuAccel() has been deprecated because it was
|
||
|
never used in cvs. If you've used it in your application, the following
|
||
|
can replace it. Note, however, that this would be handled automatically
|
||
|
by using KAction instead.
|
||
|
<pre>
|
||
|
- kaccel->changeMenuAccel( menu, id, "file_open" );
|
||
|
+ menu->setAccel( kaccel->shortcut( "file_open" ).keyCodeQt(), id );
|
||
|
</pre>
|
||
|
</li>
|
||
|
</ul>
|
||
|
The preferred means of defining a shortcut, however, is to use <b>KAction</b>.
|
||
|
<pre>
|
||
|
new KAction( i18n("Scroll Up"), Key_Up,
|
||
|
this, SLOT(scrollUp()), actionCollection(), "Scroll Up" );
|
||
|
</pre>
|
||
|
|
||
|
<h5>KGlobalAccel</h5>
|
||
|
<ul>
|
||
|
<li>Call <i>updateConnections()</i> after all <i>insert()</i> or
|
||
|
<i>insertItem()</i> (deprecated) calls have been made. This function then performs the
|
||
|
actually key grabbing. In order to improve program startup speed,
|
||
|
grabbing is no longer done automatically: usually <i>readSettings()</i>
|
||
|
is called after the actions have been defined, and this may cause
|
||
|
shortcut reassignments, which in turn used to make an expensive ungrab
|
||
|
of the old key and second grab of the new key necessary.</li>
|
||
|
</ul>
|
||
|
<h5>KStdAccel</h5>
|
||
|
<ul>
|
||
|
<li><i>StdAccel::WhatThis</i> has been renamed to <i>StdAccel::WhatsThis</i>.
|
||
|
<li><i>StdAccel::Insert</i> and the corresponding <i>insert()</i>
|
||
|
have been removed. (Nobody on the list knew what its function was
|
||
|
supposed to be.) Calls to <i>insert()</i> and the equivalent
|
||
|
<i>key(KStdAccel::Insert)</i> can be replaced with the former default
|
||
|
of <i>Qt::CTRL+Qt::Key_Insert</i>.</li>
|
||
|
<li>The following functions have been deprecated and will need to be changed if KDE_NO_COMPAT is defined:
|
||
|
<table border=1>
|
||
|
<tr><th>Old</th><th>New</th></tr>
|
||
|
<tr><td>QString action(StdAccel id)</td><td>QString name(StdAccel id)</td></tr>
|
||
|
<tr><td>int defaultKey(StdAccel accel)</td><td>KShortcut shortcutDefault(StdAccel id)</td></tr>
|
||
|
<tr><td>QString description(StdAccel id)</td><td>QString label(StdAccel id)</td></tr>
|
||
|
<tr><td>bool isEqual(const QKeyEvent* pEvent, int keyQt)</td>
|
||
|
<td>The best method for replacing this varies. One possibility is to use
|
||
|
<i>KKey(const QKeyEvent*) == KKey(int)</i>. Another is to use
|
||
|
<i>KShortcut::contains( const KKey&/KKeySequence& )</i>.</td></tr>
|
||
|
<tr><td>int key(StdAccel)</td><td>const KShortcut& shortcut(StdAccel)</td></tr>
|
||
|
</table></li-->
|
||
|
</ul>
|
||
|
|
||
|
<H4>KIconLoader, KIconTheme</H4>
|
||
|
Methods now use KIcon::Group and KIcon::Context instead of int as types for group and context arguments.
|
||
|
The change should affect only code using hardcoded numeric values instead of using the proper enum constants.
|
||
|
This applies to classes KIconLoader, KIconTheme and (in kio and kfile) KMimeType, KService, KIconDialog, KIconButton,
|
||
|
KURLBar and KURLBarItem.
|
||
|
|
||
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
||
|
|
||
|
<H3><A NAME="kdeui">Changes in kdeui</A></H3>
|
||
|
|
||
|
<H4>KAccelMenu</H4>
|
||
|
This class has been removed, Qt offers the same functionality.
|
||
|
Use QPopupMenu/KPopupMenu or the XML-UI method for building menus.
|
||
|
|
||
|
<H4>KAction</H4>
|
||
|
<ul>
|
||
|
<li>The following methods have been deprecated and will need to be
|
||
|
replaced if KDE_NO_COMPAT is defined.
|
||
|
<table border=1>
|
||
|
<tr><th>Old</th><th>New</th></tr>
|
||
|
<tr><td>int accel()</td><td>const KShortcut& shortcut()</td></tr>
|
||
|
<tr><td>int menuId()</td><td>int itemId()</td></tr>
|
||
|
<tr><td>void setAccel(int)</td><td>void setShortcut(const KShortcut&)</td></tr>
|
||
|
</table></li>
|
||
|
</ul>
|
||
|
|
||
|
<h4>KActionCollection</h4>
|
||
|
<ul>
|
||
|
<li>When constructing a KActionCollection object, a pointer to the focus widget should be passed.</li>
|
||
|
<li>The insert(), remove(), and take() methods have been deprecated.
|
||
|
If you wish to keep a list of actions, use the KActionPtrList container instead.
|
||
|
If you want to configure the shortcuts from multiple actions collections,
|
||
|
pass each collection to KKeyChooser or KKeyDialog via their insert() methods.</li>
|
||
|
</ul>
|
||
|
|
||
|
<H4>KAlphaPainter</H4>
|
||
|
KAlphaPainter has been dropped, since Qt 3 has native support for
|
||
|
hardware accelerated alpha blending.
|
||
|
|
||
|
<H4>KAnimWidget</H4>
|
||
|
This class no longer supports reading a list of images, instead it uses a
|
||
|
single image-file that has been prepared with the kimage_concat tool.
|
||
|
See kdelibs/pics/hicolor/kde for an example of its use.
|
||
|
|
||
|
<H4>KContainerLayout</H4>
|
||
|
This class has been removed, use Qt layouts instead.
|
||
|
|
||
|
<H4>KCommand</H4>
|
||
|
This class has been made lighter: the name isn't stored into the command anymore,
|
||
|
but must be provided by the inherited class, as the result of the virtual name() function.
|
||
|
This saves storing a QString into each command in memory.
|
||
|
The former behavior is available in the class KNamedCommand, so for a quick port
|
||
|
simply replace KCommand with KNamedCommand.
|
||
|
|
||
|
<H4>KDialogBase</H4>
|
||
|
The deprecated getMainWidget() method has been removed. Use mainWidget() instead.
|
||
|
|
||
|
<H4>KDirectionButton</H4>
|
||
|
...is gone. Use KArrowButton instead, it offers about the same
|
||
|
functionality.
|
||
|
|
||
|
<H4>KDockWidget</H4>
|
||
|
The WidgetList parameter has been renamed to QWidgetList. Behaviour
|
||
|
is identical.
|
||
|
|
||
|
<H4>KEdit</H4>
|
||
|
KEdit is now deprecated. You should use use KTextEditor::Editor or
|
||
|
KTextEdit instead.
|
||
|
|
||
|
<H4>KImageEffect</H4>
|
||
|
KImageEffect has now been moved to the new kdefx library.
|
||
|
|
||
|
<H4>KMessageBox</H4>
|
||
|
KMessageBox now does automatic line-breaking. When using plain-text, you should
|
||
|
remove any mid-sentence linebreaks. Only use line-breaks to indicate the end of
|
||
|
a paragraph.
|
||
|
|
||
|
<H4>KPanelApplet</H4>
|
||
|
A new protected member method 'void reportBug()' was added. It gets called by
|
||
|
Kicker if the 'Report Bug' entry in the context menu gets selected and should
|
||
|
be overridden by applets which support the KPanelApplet::ReportBug action. This
|
||
|
means that you don't have to extend KPanelApplet's generic action dispatcher
|
||
|
void KPanelApplet::action() anymore.
|
||
|
|
||
|
<H4>KPanelMenu</H4>
|
||
|
The old KPanelMenu class has been renamed to KPanelAppMenu. The KPanelMenu
|
||
|
class now corresponds to a new Kicker menu extension that is handled
|
||
|
by the panel in a way similar to other applets (shared library loaded
|
||
|
at run-time). See KDE 3.0 documentation
|
||
|
for more informations on this new extension.
|
||
|
|
||
|
<H4>KPixmapEffect</H4>
|
||
|
PixmapEffect has now been moved to the new kdefx library.
|
||
|
|
||
|
<H4>KProgress</H4>
|
||
|
KProgress is now based on QProgressBar.
|
||
|
This has led to a few API changes. In particular the constructors have been
|
||
|
simplified, you simply need to pass the total number of steps instead of
|
||
|
min / max / initialvalue / orientation. See documentation of both KProgress
|
||
|
and QProgressBar.
|
||
|
|
||
|
<H4>KRootPixmap</H4>
|
||
|
The KRootPixmap class has been extended to make it more flexible, and the
|
||
|
<i>checkAvailable(bool ignored)</i> method has been renamed to <i>isAvailable()</i>.
|
||
|
The old name will still work unless KDE_NO_COMPAT is defined.
|
||
|
|
||
|
<H4>KThemeBase, KThemeStyle</H4>
|
||
|
KThemeBase and KThemeStyle have been ported over to the new QStyle/KStyle API
|
||
|
present in Qt3/KDE3. KThemeBase is no longer in kdeui, but in kstyles/kthemestyle
|
||
|
as its use is basically limited to KThemeStyle.
|
||
|
|
||
|
<H4>KAction, KToolBar, KToolBarButton and icons</H4>
|
||
|
The preferred way for specifying icons is passing the icon names (and the icons will be loaded by KIconLoader),
|
||
|
instead of using QIconSet or QPixmap. This results in always using the correct icon size and allows delayed
|
||
|
on-demand icon loading.
|
||
|
<p>
|
||
|
Method KAction::hasIconSet() has been renamed to KAction::hasIcon(), the old name will still work unless KDE_NO_COMPAT is defined.
|
||
|
KAction::iconSet() now has an argument specifying icon group, the old KAction::iconSet() is still available unless KDE_NO_COMPAT
|
||
|
is defined and returns KIcon::Small iconset, just like in KDE2.
|
||
|
<p>
|
||
|
KToolBarButton methods setPixmap(), setDefaultPixmap(), setDisabledPixmap(), setDefaultIcon() and setDisabledIcon() are deprecated.
|
||
|
Use KToolBarButton::setIcon() (preferred) or KToolBarButton::setIconSet() instead.
|
||
|
|
||
|
<H4>KAction and derived classes</H4>
|
||
|
The protected set* methods have been renamed to update* and they now take only one argument (i.e. setText(int, const QString&)
|
||
|
is now updateText(int) ). Because the former second argument was always the value of the a corresponding data member, you
|
||
|
can simply call the accessor method (i.e. in updateText() call text() to get the text).
|
||
|
|
||
|
<H4>KToggleAction</H4>
|
||
|
exclusiveGroup() is no more virtual. setExclusiveGroup(const
|
||
|
QString&) is not a slot anymore.
|
||
|
|
||
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
||
|
|
||
|
<H3><A NAME="kio">Changes in kio</A></H3>
|
||
|
|
||
|
<H4>KPropertiesDialog</H4>
|
||
|
<ul>
|
||
|
<li>The header file has been renamed from kpropsdlg.h to kpropertiesdialog.h.</li>
|
||
|
<li>KPropertiesDialog::KPropertiesDialog(const KURL&, mode_t, QWidget*,
|
||
|
const char*, bool, bool ) has been removed since mode_t was no longer
|
||
|
used. Simply omit the mode_t parameter.</li>
|
||
|
</ul>
|
||
|
|
||
|
<H4>KTarGz/KTarBase/KTarData</H4>
|
||
|
<ul>
|
||
|
<li>The KTarBase and KTarData classes have been removed.</li>
|
||
|
<li>KTarGz is now KTar (#define for source compatibility)</li>
|
||
|
<li>A base class KArchive has been written, to support other archive formats in the future</li>
|
||
|
<li>KTarEntry is now KArchiveEntry, KTarDirectory is now KArchiveDirectory, and KTarFile is now KArchiveFile.</li>
|
||
|
<li>The classes ProgressBase, StatusbarProgress and DefaultProgress have been moved to the KIO namespace.</li>
|
||
|
<li>The signal KDirLister::started(const QString &url) has changed to KDirLister::started(const KURL &url).<li>
|
||
|
<li>KServiceTypeProfile::preferredService( const QString & serviceType, bool needApp ) has been removed, use
|
||
|
KServiceTypeProfile::preferredService( ..., "Application") if needApp was true, or
|
||
|
KServiceTypeProfile::preferredService( ..., QString::null) if needApp was false.
|
||
|
<li>The following functions in KProtocolManager have been replaced:
|
||
|
<ul>
|
||
|
<li>ftpProxy(), use proxyFor("ftp") instead.
|
||
|
<li>httpProxy(), use proxyFor("http") instead.
|
||
|
<li>slaveProtocol(const QString&), use slaveProtocol(const KURL &url, QString &proxy) instead.
|
||
|
<li>defaultReadTimeout(), use DEFAULT_READ_TIMEOUT instead. (See ioslave_defaults.h)
|
||
|
<li>defaultProxyConnectTimeout(), use DEFAULT_PROXY_CONNECT_TIMEOUT instead. (See ioslave_defaults.h)
|
||
|
<li>defaultResponseTimeout(), use DEFAULT_RESPONSE_TIMEOUT instead. (See ioslave_defaults.h)
|
||
|
<li>minimumTimeoutThreshold(), use MIN_TIMEOUT_VALUE instead. (See ioslave_defaults.h)
|
||
|
</ul>
|
||
|
<li>The following functions in KProtocolManager have been removed:
|
||
|
<ul>
|
||
|
<li>setUserAgentList( const QStringList& )
|
||
|
<li>userAgentList();
|
||
|
<li>setReadTimeout()
|
||
|
<li>setConnectTimeout( int )
|
||
|
<li>setProxyConnectTimeout( int )
|
||
|
<li>setResponseTimeout( int )
|
||
|
<li>setMarkPartial( bool )
|
||
|
<li>setMinimumKeepSize( int )
|
||
|
<li>setAutoResume( bool )
|
||
|
<li>setPersistentConnections( bool )
|
||
|
<li>setMaxCacheAge( int )
|
||
|
<li>setUseCache( bool )
|
||
|
<li>setMaxCacheSize( int )
|
||
|
<li>setCacheControl( KIO::CacheControl )
|
||
|
<li>setUseProxy( bool )
|
||
|
<li>setUseReverseProxy( bool )
|
||
|
<li>setProxyType( ProxyType )
|
||
|
<li>setProxyAuthMode( ProxyAuthMode )
|
||
|
<li>setFtpProxy( const QString& )
|
||
|
<li>setHttpProxy( const QString& )
|
||
|
<li>setProxyFor( const QString&, const QString& )
|
||
|
<li>setNoProxyFor( const QString& )
|
||
|
<li>setProxyConfigScript( const QString& )
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li>In order to support files > 4Gb, the file size / file-offset argument
|
||
|
in the signals totalSize, processedSize and canResume, which are used
|
||
|
by the io-slaves and passed along to jobs, has been changed from
|
||
|
<b>unsigned long</b> to <b>KIO::filesize_t</b>.
|
||
|
Make sure to check if you use these signals since your compiler
|
||
|
will typically not generate a compile-time error for these changes,
|
||
|
instead you might get a run-time error when you try to connect to
|
||
|
one of these signals using the old signature.
|
||
|
</li>
|
||
|
</ul>
|
||
|
|
||
|
<H4>KOpenWithHandler / KFileOpenWithHandler</H4>
|
||
|
Those two classes are deprecated, no need to create a KFileOpenWithHandler anymore.
|
||
|
The merging of libkio, libksycoca, libkfile and libkssl into a single libkio has
|
||
|
allowed to fix this dependency problem: KRun can now use the OpenWith dialog directly.
|
||
|
|
||
|
<H4>KMimeType, KService</H4>
|
||
|
Methods now use KIcon::Group and KIcon::Context instead of int as types for group and context arguments.
|
||
|
The change should affect only code using hardcoded numeric values instead of using the proper enum constants.
|
||
|
|
||
|
<H4>KFilterDev</H4>
|
||
|
The createFilterDevice method is deprecated. Use deviceForFile instead.
|
||
|
|
||
|
<H4>KDirWatch</H4>
|
||
|
<ul>
|
||
|
<li>The signal fileDirty( const QString& ) has been removed</li>
|
||
|
<li>The signal created( const QString& ) has been added</li>
|
||
|
<li>The signal deleted( const QString& ) has been added</li>
|
||
|
<li>The signal dirty( const QString& ) may be emitted with a file name, not only
|
||
|
a directory name. This depends on which backend is used but will probably always be
|
||
|
the case in KDE 3.1. You should prepare to receive dirty( dirname ) or dirty( filename )
|
||
|
when a file has changed.
|
||
|
</li>
|
||
|
</ul>
|
||
|
|
||
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
||
|
|
||
|
<H3><A NAME="kparts">Changes in kparts</A></H3>
|
||
|
|
||
|
<H4>KParts::Factory</H4>
|
||
|
The createPart method is no more virtual and the createPartObject method
|
||
|
is now pure virtual. The former was marked as deprecated since KDE 2.0.
|
||
|
All it takes in your component is to rename your existing createPart implementation
|
||
|
to createPartObject and remove the 'emit objectCreated( yourObject );' line.
|
||
|
|
||
|
<H4>KParts::Part</H4>
|
||
|
The <code>bool isSelectable() const</code> is no more virtual. So when you want to
|
||
|
change the behavior of the selectable property you don't need to re-implement
|
||
|
both virtual functions, setSelectable and isSelectable, but instead just
|
||
|
re-implementing setSelectable does the job. The very same applies for
|
||
|
the <code>KURL url() const</code> and ReadWritePart's <code>bool isReadWrite const</code>
|
||
|
and <code>bool isModified() const</code> methods.
|
||
|
<p>
|
||
|
The <code>void showProgressInfo(bool)</code>
|
||
|
method has been renamed to <code>bool setProgressInfoEnabled(bool)</code>. The old name will
|
||
|
still work unless KDE_NO_COMPAT is defined.
|
||
|
|
||
|
<H4>KParts::BrowserExtension</H4>
|
||
|
The <code>URLArgs urlArgs()</code> method is no more virtual. So when you want to
|
||
|
change the behavior of the urlArgs property you don't need to re-implement
|
||
|
both virtual functions, setURLArgs and urlArgs, but instead just re-implementing
|
||
|
setURLArgs does the job.
|
||
|
|
||
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
||
|
|
||
|
<H3><A NAME="kspell">Changes in kspell</A></H3>
|
||
|
|
||
|
<H4>KSpell</H4>
|
||
|
The API has been cleaned up to be in line with the rest of kdelibs, in particular:
|
||
|
<ul>
|
||
|
<li>suggestions() now returns a QStringList instead of a pointer to a QStringList
|
||
|
<li>intermediateBuffer() now returns a QString instead of a pointer to a QString
|
||
|
<li>The signal <b>misspelling(QString, QStringList *, unsigned)</b> has changed to
|
||
|
misspelling(const QString &, const QStringList &, unsigned int)
|
||
|
<li>The signal <b>corrected(QString, QString, unsigned)</b> has changed to
|
||
|
corrected(const QString &, const QString &, unsigned int)
|
||
|
<li>The signal <b>ignoreall(QString)</b> has changed to
|
||
|
ignoreall(const QString &)
|
||
|
<li>The signal <b>ignoreword(QString)</b> has changed to
|
||
|
ignoreword(const QString &)
|
||
|
<li>The signal <b>addword(QString)</b> has changed to
|
||
|
addword(const QString &)
|
||
|
</ul>
|
||
|
|
||
|
Make sure to check if you use the above signals since your compiler
|
||
|
will typically not generate a compile-time error for these changes,
|
||
|
instead you might get a run-time error when you try to connect to
|
||
|
one of these signals using the old signature.
|
||
|
|
||
|
|
||
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
||
|
|
||
|
<H3><A NAME="khtmlpart">API-cleanups in KHTML</A></H3>
|
||
|
|
||
|
There were a few relatively minor API-adjustements in KHTMLPart. In particular:
|
||
|
<ul><li>enableJScript(bool) has been replaced by setJScriptEnabled(bool)
|
||
|
<li>enableJava(bool) has been replaced by setJavaEnabled(bool)
|
||
|
<li>enablePlugins(bool) has been replaced by setPluginsEnabled(bool)
|
||
|
<li>autoloadImages(bool) has been replaced by setAutoloadImages(bool)
|
||
|
<li>enableMetaRefresh(bool) has been replaced by setMetaRefreshEnabled(bool)
|
||
|
<li>setBaseURL and setBaseTarget have been removed. baseURL(), baseTarget() and
|
||
|
completeURL() are remained for compatibility reasons, but they're deprecated now. use the variants in DOM::HTMLDocument() instead.
|
||
|
<li>the second parameter of KHTMLPart::completeURL is removed. it didn't have
|
||
|
any effect before either.
|
||
|
</ul>
|
||
|
Besides that, all methods previously marked as deprecated or were internal
|
||
|
but accidentally part of the public API are now private or removed.
|
||
|
As they were marked as becoming private already you should not experience
|
||
|
any problems. Backward compatibility exists for the common methods, to
|
||
|
disable this use a #define KDE_NO_COMPAT.
|
||
|
<p>In KHTMLView, the following changes were done:
|
||
|
<ul>
|
||
|
<li>gotoNextLink has been replaced by gotoLink(true);
|
||
|
<li>gotoPrevLink has been replaced by gotoLink(false);
|
||
|
</ul>
|
||
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
||
|
|
||
|
<H3><A NAME="kfile">Changes in kfile</A></H3>
|
||
|
The kfile-library, as used by the KFileDialog provides classes for directory browsing widgets.
|
||
|
Those classes gained some new features, some parts were merged with other existing classes
|
||
|
and in some cases the API was cleaned up/fixed. The library is now built as part of libkio
|
||
|
library (there's no need to modify Makefiles which use $LIB_KFILE instead of hardcoding -lkfile).
|
||
|
<p>
|
||
|
Even if the list of changes is long, the affected code base should be relatively small, as most
|
||
|
parts are rarely used outside of kfile.
|
||
|
<p>
|
||
|
The changes are:
|
||
|
<H4>KFileItem</H4>
|
||
|
The KFileViewItem class is completely replaced with KFileItem from kio. All its functionality has
|
||
|
been merged with its former base class KFileItem. Additionally, some of its methods have been
|
||
|
modified:
|
||
|
<table>
|
||
|
<tr><th>Old:</th><th>New:</th></tr>
|
||
|
<tr><td>access()</td><td>permissionsString()</td></tr>
|
||
|
<tr><td>date()</td><td>timeString()</td></tr>
|
||
|
<tr><td>setViewItem( const KFileView *view, const void *item )</td><td>setExtraData( const void *key, void *value )</td></tr>
|
||
|
<tr><td>pixmap()</td><td>The parameterless method has been removed, use pixmap( int size, int state = 0 ) instead.</td></tr>
|
||
|
</table>
|
||
|
|
||
|
<H4>KFileReader</H4>
|
||
|
This class has been merged with KDirLister from kio.
|
||
|
|
||
|
<H4>KDirOperator</H4>
|
||
|
<table>
|
||
|
<tr><th>Old:</th><th>New:</th></tr>
|
||
|
<tr><td>saveConfig()</td><td>writeConfig()</td></tr>
|
||
|
<tr><td>setFileReader()</td><td>setDirLister()</td></tr>
|
||
|
<tr><td>fileReader()</td><td>dirLister()</td></tr>
|
||
|
<tr><td>activatedMenu( const KFileViewItem * )</td><td>activatedMenu( const KFileItem *, const QPoint& pos )</td></tr>
|
||
|
</table>
|
||
|
|
||
|
<H4>KFileDetailView</H4>
|
||
|
The protected method setSortIndicator() has been removed, it's not needed anymore.
|
||
|
|
||
|
<H4>KFileView</H4>
|
||
|
This is the baseclass for all the views. It changed in many respects to allow for greater
|
||
|
flexibility and efficiency.
|
||
|
<br><br>
|
||
|
Sorting has changed radically. Previously, KFileView had protected methods QuickSort,
|
||
|
compareItems() and mergeLists() to sort directory entries for displaying in the views. Now,
|
||
|
KFileView does not do any sorting anymore. Instead, the view's (i.e. KIconView, KListView)
|
||
|
sorting is utilized by letting its view-items provide a QString key() method. Therefore,
|
||
|
KFileView offers the two methods
|
||
|
<ul>
|
||
|
<li>QString sortingKey( const QString& value, bool isDir, int sortSpec )</li>
|
||
|
<li>QString sortingKey( KIO::filesize_t value, bool isDir, int sortSpec )</li>
|
||
|
</ul>
|
||
|
which the view-classes can use to generate the string for the key() method. The KFile::SortMode
|
||
|
enum has been removed, as QDir::SortSpec is used entirely.
|
||
|
|
||
|
<br><br>
|
||
|
Further changes:
|
||
|
<table>
|
||
|
<tr><th>Old:</th><th>New:</th></tr>
|
||
|
<tr><td>not existant</td><td>virtual void readConfig( KConfig *, const QString& group = QString::null )</td></tr>
|
||
|
<tr><td>not existant</td><td>void writeConfig( KConfig *, const QString& group = QString::null)</td></tr>
|
||
|
<tr><td>virtual void setCurrentItem( const QString& filename, KFileViewItem * )</td><td>Replaced with the two methods below.</td></tr>
|
||
|
<tr><td> </td><td>void setCurrentItem( const QString& filename );</td></tr>
|
||
|
<tr><td> </td><td>virtual void setCurrentItem( const KFileViewItem * ) = 0;</td></tr>
|
||
|
<tr><td>setOperator( QObject * )</td><td>setParentView( KFileView * )</td></tr>
|
||
|
<tr><td>virtual void insertSorted( KFileViewItem *, uint count )</td><td>virtual void insertItem( KFileItem * )</td></tr>
|
||
|
<tr><td>virtual void addItemList( const KFileViewItemList &list )</td><td>not virtual anymore. Sufficient to reimplement insertItem()</td></tr>
|
||
|
</table>
|
||
|
<br><br>
|
||
|
Three more pure virtual methods have been added:
|
||
|
<ul>
|
||
|
<li>virtual KFileItem * firstFileItem() const = 0</li>
|
||
|
<li>virtual KFileItem * nextItem( const KFileItem * ) const = 0</li>
|
||
|
<li>virtual KFileItem * prevItem( const KFileItem * ) const = 0</li>
|
||
|
</ul>
|
||
|
|
||
|
<p>
|
||
|
State-changes are now signaled solely via the KFileViewSignaler object, that every KFileView
|
||
|
has a protected member of ("sig"). The methods activateMenu(), highlight() and select() have
|
||
|
been removed. If you implemented a KFileView, change your code in the following way:
|
||
|
<table>
|
||
|
<tr><th>Old:</th><th>New:</th></tr>
|
||
|
<tr><td>activateMenu( item )</td><td>sig->activateMenu( item, pos )</td></tr>
|
||
|
<tr><td>highlight( item )</td><td>sig->highlightFile( item )</td></tr>
|
||
|
<tr><td>select( item )</td><td>sig->select( item )</td></tr>
|
||
|
</table>
|
||
|
|
||
|
|
||
|
<H4>KFileViewSignaler</H4>
|
||
|
The methods activateDir( const KFileViewItem * ) and activateFile( const KFileViewItem * )
|
||
|
have been merged into the new method activate( const KFileItem * ).
|
||
|
|
||
|
<br><br>
|
||
|
Carsten Pfeiffer <A HREF="mailto:pfeiffer@kde.org">pfeiffer@kde.org</A>
|
||
|
|
||
|
<H4>KIconDialog, KIconButton, KURLBar, KURLBarItem</H4>
|
||
|
Methods now use KIcon::Group and KIcon::Context instead of int as types for group and context arguments.
|
||
|
The change should affect only code using hardcoded numeric values instead of using the proper enum constants.
|
||
|
|
||
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
||
|
<p>
|
||
|
|
||
|
|
||
|
<H3><A NAME="kcontrol">Changes in KControl</A></H3>
|
||
|
|
||
|
<H4>Modules that require root permission</H4>
|
||
|
The meaning of the <i>X-KDE-RootOnly</i> flag in the .desktop files has changed.
|
||
|
In KControl 2.0 a message was shown if the user did not press the "modify"
|
||
|
button. With the additional flag <i>X-KDE-HasReadOnlyMode</i> it was possible to show
|
||
|
a disabled version of the module instead of the message. The behavior was inconsistent
|
||
|
and has been changed:
|
||
|
|
||
|
<ul>
|
||
|
<li><i>X-KDE-HasReadOnlyMode</i> is not used anymore and is ignored by KControl > 2.0.
|
||
|
<li><i>X-KDE-RootOnly</i> does now show a disabled preview of the widget and a notification box.
|
||
|
<li>If you want the old behavior back set <i>X-KDE-IsHiddenByDefault</i> along with
|
||
|
<i>X-KDE-RootOnly</i>. Please note that this behavior is deprecated the sake of
|
||
|
usability.
|
||
|
</ul>
|
||
|
|
||
|
For more details please consult the HOWTO file in the kcontrol directory.
|
||
|
|
||
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
||
|
<p>
|
||
|
|
||
|
<H3><A NAME="kicker">Panel Applets and Extensions</A></H3>
|
||
|
|
||
|
<p>The API for Kicker panel applets and extensions has changed. Panels can now be
|
||
|
left/top, center, or right/bottom aligned, and applets and extensions may receive
|
||
|
notification about a change in alignment.
|
||
|
|
||
|
<H4>KPanelApplet</H4>
|
||
|
|
||
|
<p>The virtual methods orientationChange() and popupDirectionChange() are deprecated.
|
||
|
Instead you should reimplement positionChange() and alignmentChange() to be
|
||
|
notified of changes in the position and alignment of the panel on which your applet
|
||
|
resides. In addition, the popupDirection() method and the Direction enum are
|
||
|
deprecated. Instead you should use the position() method and Position enum. Applets that use
|
||
|
the deprecated methods will still work with KDE 3, but may not compile or work with
|
||
|
a future version.
|
||
|
|
||
|
<H4>KPanelExtension</H4>
|
||
|
|
||
|
<p>There is a new method alignmentChange() that your extension should reimplement if
|
||
|
it needs to know about changes in alignment.
|
||
|
|
||
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
||
|
<p>
|
||
|
|
||
|
Dirk Mueller <A HREF="mailto:mueller@kde.org">mueller@kde.org</A>
|
||
|
</BODY>
|
||
|
</HTML>
|