summaryrefslogtreecommitdiff
path: root/core/settings/button/buttonutils.cpp
blob: 05fa88386e64d3143e93381423f1d8cb67552b79 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include <stdlib.h>

#include <opie2/oresource.h>

#include <qapplication.h>
#include <qlistview.h>
#include <qpe/applnk.h>
#include <qpe/mimetype.h>

#include "buttonutils.h"

using namespace Opie;

using namespace Opie::Core;
struct predef_qcop {
	const char *m_text;
	const char *m_pixmap;
	const char *m_channel;
	const char *m_function;
};

static const predef_qcop predef [] = {

	{ QT_TRANSLATE_NOOP( "ButtonSettings", "Beam VCard" ),       "beam",                  "QPE/Application/addressbook", "beamBusinessCard()" },
	{ QT_TRANSLATE_NOOP( "ButtonSettings", "Send eMail" ),       "buttonsettings/mail",   "QPE/Application/mail",        "newMail()"          },
        

	{ QT_TRANSLATE_NOOP( "ButtonSettings", "Toggle Menu" ),      "buttonsettings/menu",   "QPE/TaskBar",  "toggleMenu()"      },
	{ QT_TRANSLATE_NOOP( "ButtonSettings", "Toggle O-Menu" ),    "buttonsettings/omenu",  "QPE/TaskBar",  "toggleStartMenu()" },
	{ QT_TRANSLATE_NOOP( "ButtonSettings", "Show Desktop" ),     "home",                  "QPE/Launcher", "home()"            },
	{ QT_TRANSLATE_NOOP( "ButtonSettings", "Toggle Recording" ), "buttonsettings/record", "QPE/VMemo",    "toggleRecord()"    },
       
    { 0, 0, 0, 0 }                                                          
};




ButtonUtils *ButtonUtils::ButtonUtils::inst ( )
{
	static ButtonUtils *p = 0;
	
	if ( !p ) {
		p = new ButtonUtils ( );
		::atexit ( cleanup );
	}
	return p;
}

void ButtonUtils::cleanup ( )
{
	delete inst ( );
}

ButtonUtils::ButtonUtils ( )
{
	m_apps = new AppLnkSet( MimeType::appsFolderName ( ));
}

ButtonUtils::~ButtonUtils ( )
{
	delete m_apps;
}

qCopInfo ButtonUtils::messageToInfo ( const OQCopMessage &c )
{
	QCString ch = c. channel ( );
	QCString f  = c. message ( ); 

	
	if ( ch == "ignore" )
		return qCopInfo ( qApp-> translate ( "ButtonSettings", "<nobr>Ignored</nobr>" ));
	
	for ( const predef_qcop *p = predef; p-> m_text; p++ ) {
		if (( ch == p-> m_channel ) && ( f == p-> m_function ))
			return qCopInfo ( qApp-> translate ( "ButtonSettings", p-> m_text ),
                              Opie::Core::OResource::loadPixmap( p->m_pixmap, Opie::Core::OResource::SmallIcon ) );
	}	
	
	if ( ch. left ( 16 ) == "QPE/Application/" ) {
		QString app = ch. mid ( 16 );
		const AppLnk *applnk = m_apps-> findExec ( app );
		if ( applnk )
			app = applnk-> name ( );
			
		if (( f == "raise()" ) || ( f == "nextView()" ))
			return qCopInfo ( qApp-> translate ( "ButtonSettings", "<nobr>Show <b>%1</b></nobr>" ). arg ( app ), applnk ? applnk-> pixmap ( ) : QPixmap ( ));
		else
			return qCopInfo ( qApp-> translate ( "ButtonSettings", "<nobr>Call <b>%1</b>: <i>%2</i></nobr>" ). arg ( app ). arg ( f ), applnk ? applnk-> pixmap ( ) : QPixmap ( ));
	}
	else {
		return qCopInfo ( qApp-> translate ( "ButtonSettings", "<nobr>Call <b>%1</b> <i>%2</i></nobr>" ). arg (( ch. left ( 4 ) == "QPE/" ) ? ch. mid ( 4 ) : ch ). arg ( f ));
	}
}


void ButtonUtils::insertActions ( QListViewItem *here )
{
	for ( const predef_qcop *p = predef; p-> m_text; p++ ) {
		QListViewItem *item = new QListViewItem ( here, qApp-> translate ( "ButtonSettings", p-> m_text ), p-> m_channel, p-> m_function );
  item-> setPixmap ( 0, Opie::Core::OResource::loadPixmap( p->m_pixmap, Opie::Core::OResource::SmallIcon ) );
	}		
}


void ButtonUtils::insertAppLnks ( QListViewItem *here )
{
	QStringList types = m_apps-> types ( );   
	QListViewItem *typeitem [types. count ( )];
   
   	int i = 0;
	for ( QStringList::Iterator it = types. begin ( ); it != types. end ( ); ++it ) {
		QListViewItem *item = new QListViewItem ( here, m_apps-> typeName ( *it ));
		item-> setPixmap ( 0, m_apps-> typePixmap ( *it ));
	
		typeitem [i++] = item;	
	}	
	
	for ( QListIterator <AppLnk> appit ( m_apps-> children ( )); *appit; ++appit ) {
		AppLnk *l = *appit;
	
		int i = 0;
		for ( QStringList::Iterator it = types. begin ( ); it != types. end ( ); ++it ) {		
			if ( l-> type ( ) == *it ) {
				QListViewItem *sub = new QListViewItem ( typeitem [i], l-> name ( ), QString ( "QPE/Application/" ) + l-> exec ( ), "raise()" );
				sub-> setPixmap ( 0, l-> pixmap ( ));
			}
			i++;
		}	
	}                                  
}