summaryrefslogtreecommitdiff
path: root/symbian/PerlUi.h
blob: b6011c82da59001d18a8ba8f70d36fa05feba1cb (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
/* Copyright (c) 2005 Nokia. All rights reserved. */

/* The PerlUi class is licensed under the same terms as Perl itself. */

#ifndef __PerlUi_h__
#define __PerlUi_h__

#ifdef __SERIES60__
# include <aknapp.h>
# include <aknappui.h>
# include <akndoc.h>
#endif /* #ifdef __SERIES60__ */

#ifdef __SERIES80__
# include <eikapp.h>
# include <eikappui.h>
# include <eikdoc.h>
# include <eikbctrl.h>
# include <eikgted.h>
# include <eikdialg.h>
#endif /* #ifdef __SERIES60__ */

#ifdef __UIQ__
# include <qikapplication.h>
# include <qikappui.h>
# include <qikdocument.h>
# include <eikdialg.h>
#endif /* #ifdef __UIQ____ */

#include <coecntrl.h>
#include <f32file.h>

#ifdef __SERIES60__
# define CgPerlUiDocument    CAknDocument
# define CgPerlUiApplication CAknApplication
# define CgPerlUiAppUi       CAknAppUi
# define CgPerlUiNoteDialog  CAknNoteDialog
# define CgPerlUiAppView     CCoeControl
#endif /* #ifdef __SERIES60__ */

#ifdef __SERIES80__
# define CgPerlUiDocument    CEikDocument
# define CgPerlUiApplication CEikApplication
# define CgPerlUiAppUi       CEikAppUi
# define CgPerlUiNoteDialog  CCknFlashingDialog
# define CgPerlUiAppView     CEikBorderedControl
#endif /* #ifdef __SERIES60__ */

#ifdef __UIQ__
# define CgPerlUiDocument    CEikDocument
# define CgPerlUiApplication CQikApplication
# define CgPerlUiAppUi       CQikAppUi
# define CgPerlUiNoteDialog  CCknFlashingDialog
# define CgPerlUiAppView     CCoeControl
#endif /* #ifdef __UIQ__ */

class CPerlUiApplication : public CgPerlUiApplication
{
};

const TUint KPerlUiPromptSize   = 20;
const TUint KPerlUiOneLinerSize = 128;

class CPerlUiAppView;

class CPerlUiAppUi : public CgPerlUiAppUi
{
  public:
    IMPORT_C void ConstructL();
    void virtual DoHandleCommandL(TInt aCommand) = 0;
    IMPORT_C void HandleCommandL(TInt aCommand);
    TBuf<KPerlUiOneLinerSize> iOneLiner; // Perl code to evaluate.
    CPerlUiAppView* iAppView;
};

class CPerlUiAppView : public CgPerlUiAppView
{
  public:
    static CPerlUiAppView* NewL(const TRect& aRect);
    static CPerlUiAppView* NewLC(const TRect& aRect);
    ~CPerlUiAppView();
    void Draw(const TRect& aRect) const;
#if defined(__SERIES80__) || defined(__UIQ__)
    IMPORT_C void HandleCommandL(TInt aCommand, CPerlUiAppUi* aAppUi);
#endif /* #if defined(__SERIES80__) || defined(__UIQ__) */
  private:
    void ConstructL(const TRect& aRect);
};

#if defined(__SERIES80__) || defined(__UIQ__)

class CPerlUiTextQueryDialog : public CEikDialog
{
  public:
    CPerlUiTextQueryDialog(HBufC*& aBuffer);
    /* TODO: OfferKeyEventL() so that newline can be seen as 'OK'. */
    HBufC*& iData;
    TPtrC iTitle;  // used in S80 but not in S60
    TPtrC iPrompt; // used in S60 and S80
    TInt iMaxLength;
  protected:
    void PreLayoutDynInitL();
  private:
    TBool OkToExitL(TInt aKeycode);
};

#endif /* #if defined(__SERIES80__) || defined(__UIQ__) */

class CPerlUi : public CgPerlUiAppUi
{
  public:
    IMPORT_C static TBool OkCancelDialogL(TDesC& aMessage);
    IMPORT_C static TBool YesNoDialogL(TDesC& aMessage);
    IMPORT_C static void  InformationNoteL(TDesC& aMessage);
    IMPORT_C static TInt  WarningNoteL(TDesC& aMessage);
    IMPORT_C static TBool TextQueryDialogL(const TDesC& aTitle, const TDesC& aPrompt, TDes& aData, const TInt aMaxLength);
    IMPORT_C static TBool FileQueryDialogL(TDes& aFilename);
};

#endif // __PerlUi_h__