In Bewegung

Plasma bietet dem Anwender im Idealfall ein organisches Benutzer-Interface an, auf dem sich Objekte so verhalten, wie der Benutzer es erwartet und wie sein Gehirn es aus der Natur kennt. Animationen sollen ihm dabei visuelle Hinweise geben, denn das menschliche Gehirn kommt mit kurzen Bewegungen besser klar, als mit abrupten Änderungen. Um die Benutzer nicht abzulenken, sollten sich Plasmoiden daher ruhig verhalten, solange sie nicht den Fokus besitzen.

Animationen in Plasma benutzen die Klasse Plasma::Animator. Diese stellt eine Zeitachse bereit, indem sie in bestimmten Abständen eine definierte Funktion aufruft und das Plasmoid neu zeichnet. Das Beispiel benutzt diese Phase, um den gezeichneten Bildschirm des Plasmoids zur Mitte hin zu verkleinern. Das erzeugt einen Ausschalteffekt, wie bei einem alten Fernseher. Genügt der Platz auf dem Desktop, blendet das Plasmoid zugleich den Namen des USB-Sticks weich ein.

Sobald ein Anwender einen USB-Stick einsteckt, startet das Applet über die Methode showScreen() die Animation, die in regelmäßigen Abständen die Methode animationUpdate() des Applets aufruft. Dabei speichert es die ID, um sie im weiteren Verlauf zu kontrollieren. (Listing 9)

// drade.cpp, Zeile 148
m_animId = Plasma::Animator::self()->customAnimation(40 / (1000 / m_animDuration), m_animDuration, Plasma::Animator::EaseInCurve, this, "animationUpdate");

Als Parameter übergeben Sie Plasma::Animator die Anzahl der Bilder, die Länge der Animation, die Kurvenform, das Empfänger-Widget für die Updates und die aufzurufende Methode. Die Zahl der Bilder errechnen Sie, indem Sie von 25 Bildern pro Sekunde ausgehen, was einem Bild pro 40 Millisekunden entspricht. Die Dauer der Animation wählen Sie zwischen 150 und 300 Millisekunden – länger andauernde Animationen empfinden Benutzer mitunter als störend. Als Kurvenform kommt die EaseInCurve zum Einsatz, die dafür sorgt, dass sich die Geschwindigkeit am Anfang schnell erhöht und danach langsam abbremst. Lineare Kurven wie LinearCurve fühlen sich häufig hölzern und statisch an.

Die Methode animationUpdate() bekommt dann wiederum eine Variable vom Typ Qreal namens progress mit auf den Weg (Listing 10), die verrät, wie weit die Animation fortgeschritten ist. Anhand der Boolschen Member-Variable m_fadeIn merkt sich Plasma, ob es die zu animierende Grafik gerade ein- oder ausblendet.

// drade.cpp, Zeilen 209 bis 220
void DrAde::animationUpdate(qreal progress)
{
    if (progress == 1) {
        m_animId = -1;
    }
    if (!m_fadeIn) {
        m_animProgress = 1 - progress;
    } else {
        m_animProgress = progress;
    }
    update();
}

Die Variable progress pendelt dabei immer zwischen 0 (am Anfang der Animation) und 1 (am Ende). Für den Ausblendeffekt invertieren Sie den Wert einfach, sodass er kleiner wird. Die Member-Variable m_animProgress speichert den Status der Animation im Plasmoid und sorgt dafür, dass Plasma es mit Unterstützung der Methode paintInterface() neu zeichnet (drade.cpp, Zeile 235), was dann so aussieht:

m_svg->paint(p, scaleRectF(m_animProgress, contentsRect), "Screen");

Durch diesen Aufruf zeichnet Plasma das SVG-Element Screen in der durch die Animation vorgegebenen Größe. Die Funktion scaleRectF() kommt dabei zur Hilfe: Sie rechnet Position und Größe innerhalb des Plasmoids aus. Verfügt das über eine bestimmte Mindestbreite, sorgt paintLabel() dafür, dass Plasma den Namen des USB-Sticks in einem Rechteck mit abgerundeten Ecken abbildet.

Geben Sie den Farben, mit denen Sie malen, einen bestimmten Alpha-Wert mit, blendet die Methode den Text im Takt mit der Animation des Screen-Elements weich ein. Der Wert hängt dabei vom Fortschritt der Animation ab. Die folgenden zwei Zeilen (drade.cpp, Zeile 262 und 263) erledigen dies:

boxColor.setAlphaF(0.3*m_animProgress);
textColor.setAlphaF(0.8*m_animProgress);

Damit ist "Dr. Ade" nun fertig. Es fehlt noch ein letzter Schritt: Sie müssen das Applet kompilieren und so in die KDE-Trunk-Version einbinden.

Dr. Ade aktivieren

Melden Sie sich über sux - kde-devel als KDE-Entwicklungshelfer an. Wechseln Sie in das Verzeichnis /home/kde-devel/KDE/kdeplasma-addons/applets und legen Sie ein neues Verzeichnis namens drade an. Kopieren Sie sämtliche Dateien von der LinuxUser-DVD, die zu "Dr. Ade" gehören, in den neuen Ordner. Wechseln Sie ins übergeordnete Verzeichnis, öffnen Sie die Datei CMakeLists.txt mit einem Texteditor und ergänzen Sie die Zeile add_subdirectory(drade). Nach dem Speichern der Datei übersetzen Sie aus dem Verzeichnis applets heraus das Plasmoid über den Befehl cmakekde. Im Drade-Verzeichnis sollte nun ein Makefile erscheinen, das Sie mit make und make install installieren. Nach einem Neustart von KDE steht Ihnen "Dr. Ade" zu Diensten.

[1] Über Plasma: Sebastian Kügler, "Plasmische Chirurgie", LinuxUser 09/2008, S. 82, http://www.linux-user.de/ausgabe/2008/09/082/

[2] Entwicklungsumgebung für KDE 4 einrichten: Kristian Kißling, "Bleeding Edge", LinuxUser 09/2008, S. 86, http://www.linux-user.de/ausgabe/2008/09/086/

[3] Mailingliste der KDE-Anwendungsentwickler: https://mail.kde.org/mailman/listinfo/kde-devel

[4] Quellcode für "Dr. Ade": http://www.linux-user.de/Downloads/2008/10/

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Erste Plasma-Widgets bereits auf Maemo 5 portiert
    Am Maemo-Summit in Amsterdam verteilte Nokia 300 Internettablets N900 an KDE- und Qt-Entwickler. Jetzt gibt es bereits erste Ports von KDE-Programmen für Maemo 5.
  • Plasmoiden erstellen mit JavaScript
    Seit Version 4.4 bietet die KDE Software Compilation die Möglichkeit, Plasmoiden in JavaScript oder QtScript zu schreiben. Dadurch eröffnet sich die Welt der KDE-Widgets auch Nicht-Programmierern.
  • KDE 4.11 erhält verbesserten Task-Manager
    Eike Hein hat in einem Blog-Beitrag einen Ausblick auf die überarbeitete Fensterleiste im kommenden KDE 4.11 gegeben. Verbesserungen gab es vor allem beim Layout und der Anordnung der Einträge auf der Leiste.
  • KDE-Miniprogramme mit Plasmate programmieren
    Das KDE-Projekt hat eine erste Alphaversion von Plasmate veröffentlicht. Die kleine Entwicklungsumgebung ist zum Schreiben der Plasmoide genannten Applets für den KDE-4-Desktop gedacht.
  • Plasmische Chirurgie
    KDE 4 definiert den Desktop um. Was aber steckt hinter Plasma und was sind Plasmoiden? KDE-Entwickler Sebastian Kügler erklärt das neue Desktop-Design.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

WLAN-Signalqualität vom Treiber abhängig
GoaSkin , 29.10.2014 14:16, 0 Antworten
Hallo, für einen WLAN-Stick mit Ralink 2870 Chipsatz gibt es einen Treiber von Ralink sowie (m...
Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...