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 12/2014: ANONYM & SICHER

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

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

Nach Ubdates alles weg ...
Maria Hänel, 15.11.2014 17:23, 4 Antworten
Ich brauche dringen eure Hilfe . Ich habe am wochenende ein paar Ubdates durch mein Notebook von...
Brother Drucker MFC-7420
helmut berger, 11.11.2014 12:40, 1 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu 14.04-Nutzer...
Treiber für Drucker brother MFC-7420
helmut berger, 10.11.2014 16:05, 2 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu12.14-Nutzer u...
Can't find X includes.
Roland Welcker, 05.11.2014 14:39, 1 Antworten
Diese Meldung erhalte ich beim Versuch, kdar zu installieren. OpenSuse 12.3. Gruß an alle Linuxf...
DVDs über einen geeigneten DLNA-Server schauen
GoaSkin , 03.11.2014 17:19, 0 Antworten
Mein DVD-Player wird fast nie genutzt. Darum möchte ich ihn eigentlich gerne abbauen. Dennoch wür...