add drag and drop to AppletInfo
add tests for AppletInfo drag and drop support svn path=/trunk/KDE/kdebase/workspace/plasma/lib/; revision=467639
This commit is contained in:
parent
c8758daa20
commit
af483fda80
@ -19,7 +19,10 @@ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
******************************************************************/
|
||||
|
||||
#include <qfileinfo.h>
|
||||
#include <QBuffer>
|
||||
#include <QFileInfo>
|
||||
#include <QMimeData>
|
||||
|
||||
#include <kdesktopfile.h>
|
||||
#include <kapplication.h>
|
||||
|
||||
@ -210,4 +213,36 @@ bool AppletInfo::operator<=(const AppletInfo& rhs) const
|
||||
return name().lower() <= rhs.name().lower();
|
||||
}
|
||||
|
||||
void AppletInfo::populateMimeData(QMimeData* mimeData)
|
||||
{
|
||||
QByteArray a;
|
||||
QDataStream s(&a, QIODevice::WriteOnly);
|
||||
s << desktopFilePath();
|
||||
mimeData->setData("application/plasmaAppletInfo", a);
|
||||
}
|
||||
|
||||
bool AppletInfo::canDecode(const QMimeData* mimeData)
|
||||
{
|
||||
return mimeData->hasFormat("application/plasmaAppletInfo");
|
||||
}
|
||||
|
||||
AppletInfo AppletInfo::fromMimeData(const QMimeData* mimeData)
|
||||
{
|
||||
QByteArray a = mimeData->data("application/plasmaAppletInfo");
|
||||
|
||||
if (a.isEmpty())
|
||||
{
|
||||
return AppletInfo();
|
||||
}
|
||||
|
||||
QBuffer buff(&a);
|
||||
buff.open(QIODevice::ReadOnly);
|
||||
QDataStream s(&buff);
|
||||
|
||||
QString desktopFile;
|
||||
s >> desktopFile;
|
||||
AppletInfo info(desktopFile);
|
||||
return info;
|
||||
}
|
||||
|
||||
} // Plasma namespace
|
||||
|
29
appletinfo.h
29
appletinfo.h
@ -145,6 +145,35 @@ class KDE_EXPORT AppletInfo
|
||||
*/
|
||||
bool operator==(const AppletInfo& rhs) const;
|
||||
|
||||
/**
|
||||
* Part of the drag and drop support for AppletInfo.
|
||||
* Populates a QMimeData object with the necessary data to create an
|
||||
* equivalent AppletInfo object on the receiving end.
|
||||
* @param mimeData a pointer to a QMimeData object. Any Applet Info
|
||||
* previously added to this object will be overwritten.
|
||||
*/
|
||||
void populateMimeData(QMimeData* mimeData);
|
||||
|
||||
/**
|
||||
* Part of the drag and drop support for AppletInfo.
|
||||
* Returns true if the QMimeData object passed in contains the proper
|
||||
* mimetype for an AppletInfo
|
||||
* @param mimeData a pointer to a QMimeData object which may contain
|
||||
* AppletInfo data
|
||||
*/
|
||||
static bool canDecode(const QMimeData* mimeData);
|
||||
|
||||
/**
|
||||
* Part of the drag and drop support for AppletInfo.
|
||||
* Given a QMimeData object that contains an AppletInfo, returns a
|
||||
* corresponding AppletInfo object
|
||||
* @param mimeData a pointer to a QMimeData object which should contain
|
||||
* AppletInfo data.
|
||||
* @see canDecode
|
||||
*/
|
||||
static AppletInfo fromMimeData(const QMimeData* mimeData);
|
||||
|
||||
|
||||
private:
|
||||
void setName(const QString& name);
|
||||
void setComment(const QString& comment);
|
||||
|
@ -19,6 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <QDir>
|
||||
#include <QMimeData>
|
||||
|
||||
#include <kaboutdata.h>
|
||||
#include <kinstance.h>
|
||||
@ -245,5 +246,15 @@ void TestAppletInfo::copyConstructor()
|
||||
COMPARE(copied.hidden(), notUniqueNative->hidden());
|
||||
}
|
||||
|
||||
void TestAppletInfo::dragAndDrop()
|
||||
{
|
||||
QMimeData* data = new QMimeData;
|
||||
notUniqueNative->populateMimeData(data);
|
||||
VERIFY(Plasma::AppletInfo::canDecode(data));
|
||||
Plasma::AppletInfo dropped = Plasma::AppletInfo::fromMimeData(data);
|
||||
COMPARE(dropped.desktopFile(), notUniqueNative->desktopFile());
|
||||
delete data;
|
||||
}
|
||||
|
||||
QTTEST_MAIN(TestAppletInfo)
|
||||
#include "testAppletInfo.moc"
|
||||
|
@ -58,6 +58,7 @@ class TestAppletInfo: public QObject
|
||||
void hidden();
|
||||
void assignment();
|
||||
void copyConstructor();
|
||||
void dragAndDrop();
|
||||
|
||||
private:
|
||||
Plasma::AppletInfo* notUniqueNative;
|
||||
|
Loading…
Reference in New Issue
Block a user