Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Como configurar o papel de parede no Maemo 5

From Wiki
Jump to: navigation, search

Archived.pngAquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}.

Acredita-se que este artigo ainda seja válido no contexto original (quando ele foi escrito)


Article Metadata

Artigo
Tradução:
Por edprado
Última alteração feita por lpvalente em 06 Dec 2012

Contents

Introdução

Qt não oferece uma API para configurar os papeis de parede. Felizmente, não é difícil configura-lo no Maemo 5 Os papeis de parede são salvos como chaves do Gconf2 utilizando o gconftool-2.

Pré-requisitos

É preciso ter instalado o pacote screenshot-tool para que este exemplo funcione corretamente.

Caso você tenha problemas com o "include" do GConf confira este artigo:Using Gconf que em breve traduzirei-o.

Obtendo informações sobre as áreas de trabalho

$ gconftool-2 -R /apps/osso/hildon-desktop/views
current = 1
active = [1,2,3,4]
/apps/osso/hildon-desktop/views/1:
bg-image = /home/user/MyDocs/.images/wallpaper1.png
/apps/osso/hildon-desktop/views/2:
bg-image = /home/user/MyDocs/.images/wallpaper2.png
/apps/osso/hildon-desktop/views/3:
bg-image = /home/user/MyDocs/.images/wallpaper3.png
/apps/osso/hildon-desktop/views/4:
bg-image = /home/user/MyDocs/.images/wallpaper4.png

Baseado no resultado do código acima: Existem 4 áreas de trabalho ativas(active = [1,2,3,4]). A área de trabalho a atual é a primeira (current = 1).Você também pode identificar as respectivas imagens de cada área de trabalho.


Capturar a tela e configurar o papel de parede

Abaixo está um exemplo de aplicação que captura a tela e depois configura-o como papel de parede da área de trabalho atual.

#include <QCoreApplication>
#include <QProcess>
#include <QStringList>
#include <QDebug>
 
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <X11/Xutil.h>
 
#include <gconf/gconf.h>
#include <gconf/gconf-client.h>
 
#define SHOT_NAME "screenshot.png"
 
int main (int argc, char **argv)
{
QCoreApplication app(argc, argv);
 
int currentDesktop = getXIntProperty("_NET_CURRENT_DESKTOP");
takeScreenshot(SHOT_NAME);
QString shotPath = QDir::currentPath() + "/" SHOT_NAME;
QByteArray shotPathUtf8 = shotPath.toUtf8();
setWallpaper(shotPathUtf8.data(), currentDesktop);
 
return 0;
}

Função para obter o número de aréa de trabalho ativas.

static int getXIntProperty (const char *propertyName)
{
Atom realType;
int format, status, num;
unsigned long n, extra;
unsigned char *data = 0;
char *display_name = getenv("DISPLAY");
Display *display = XOpenDisplay(display_name);
int screen = DefaultScreen(display);
Window rootWindow = RootWindow(display, screen);
Atom atom = XInternAtom(display, propertyName, false);
 
status = XGetWindowProperty(display, rootWindow, atom, 0L, 16L,
0, XA_CARDINAL, &realType, &format,
&n, &extra, &data);
if (status == Success && realType == XA_CARDINAL &&
format == 32 && n == 1 && data)
num = ((int*)data)[0];
else
num = -1;
 
if (data)
XFree(data);
XCloseDisplay(display);
 
return num;
}


Esta é a função que utiliza o screenshot-tool que é utilizado para capturar a tela.

static void takeScreenshot (const char *shotName)
{
QStringList args;
args << shotName;
if(QProcess::execute ("screenshot-tool", args))
qDebug("impossível capturar área de trabalho, instale o pacote screenshot-tool");
}

Função para configurar o papel de parede

static void setWallpaper (const char *uri, gint desktop)
{
GConfClient *client = gconf_client_get_default();
if (client) {
GError *error = 0;
char *path = g_strdup_printf("/apps/osso/hildon-desktop/views/%i/bg-image",
1 + desktop);
if (!gconf_client_set_string(client, path, uri, &error)) {
qDebug() << uri << error->message;
g_error_free(error);
}
g_free(path);
g_object_unref(client);
} else
qDebug("Impossível obter o cliente GConf2.");
}

Adicione estas linhas abaixo para gerar automaticamente o arquivo .pro:

unix {
CONFIG += link_pkgconfig
PKGCONFIG += gconf-2.0
}
This page was last modified on 6 December 2012, at 19:05.
17 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×