summaryrefslogtreecommitdiff
path: root/core/settings/button/buttonutils.cpp
blob: 9bf4b530bba97180b9def09570421f1b22af3688 (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
#include <stdlib.h>

#include <qapplication.h>
#include <qlistview.h>
#include <qpe/applnk.h>
#include <qpe/mimetype.h>
#include <qpe/resource.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 ), Resource::loadPixmap ( p-> m_pixmap ));
	}	
	
	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, Resource::loadPixmap ( p-> m_pixmap ));
	}		
}


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++;
		}	
	}                                  
}