javauis/nokiauiapi_qt/src/os.cpp
author hgs
Fri, 29 Oct 2010 11:49:32 +0300
changeset 87 1627c337e51e
parent 78 71ad690e91f5
permissions -rw-r--r--
v2.2.21_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     1
/*******************************************************************************
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     2
 * Copyright (c) 2009, 2010 Nokia Corporation and/or its subsidiary(-ies).
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     3
 * All rights reserved. This program and the accompanying materials
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     4
 * are made available under the terms of the Eclipse Public License v1.0
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     5
 * which accompanies this distribution, and is available at
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     6
 * http://www.eclipse.org/legal/epl-v10.html
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     7
 *
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     8
 * Contributors:
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     9
 *     Nokia Corporation - initial implementation
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    10
 *******************************************************************************/
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    11
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    12
#include <QWidget>
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    13
#include <coecntrl.h>
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    14
#include <touchfeedback.h>
78
71ad690e91f5 v2.2.17_1
hgs
parents: 72
diff changeset
    15
#include <com_nokia_mj_impl_nokiauiapi_OS.h>
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    16
#include "autorelease.h"
87
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
    17
#include "CSoftNotification.h"
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    18
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    19
static CCoeControl* convertToSymbian(QWidget* window)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    20
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    21
    CCoeControl* control = 0;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    22
    if (window && window->winId())
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    23
        {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    24
        control = reinterpret_cast<CCoeControl*> (window->winId());
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    25
        }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    26
    return control;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    27
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    28
78
71ad690e91f5 v2.2.17_1
hgs
parents: 72
diff changeset
    29
JNIEXPORT void JNICALL Java_com_nokia_mj_impl_nokiauiapi_OS_MTouchFeedback_1InstantFeedback(
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    30
        JNIEnv *, jclass, jint aStyle)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    31
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    32
    MTouchFeedback* feedback = MTouchFeedback::Instance();
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    33
    if (feedback)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    34
        {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    35
        feedback->InstantFeedback(static_cast<TTouchLogicalFeedback> (aStyle));
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    36
        }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    37
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    38
78
71ad690e91f5 v2.2.17_1
hgs
parents: 72
diff changeset
    39
JNIEXPORT jboolean JNICALL Java_com_nokia_mj_impl_nokiauiapi_OS_MTouchFeedback_1TouchFeedbackSupported(
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    40
        JNIEnv *, jclass)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    41
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    42
    jboolean enabled = JNI_FALSE;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    43
    MTouchFeedback* feedback = MTouchFeedback::Instance();
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    44
    if (feedback)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    45
        {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    46
        enabled = feedback->TouchFeedbackSupported() ? JNI_TRUE : JNI_FALSE;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    47
        }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    48
    return enabled;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    49
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    50
78
71ad690e91f5 v2.2.17_1
hgs
parents: 72
diff changeset
    51
JNIEXPORT void JNICALL Java_com_nokia_mj_impl_nokiauiapi_OS_MTouchFeedback_1SetFeedbackArea(
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    52
        JNIEnv *, jclass, jint aControl, jint aAreaIndex, jint aX, jint aY,
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    53
        jint aWidth, jint aHeight, jint aStyle)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    54
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    55
    MTouchFeedback* feedback = MTouchFeedback::Instance();
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    56
    if (feedback)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    57
        {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    58
        CCoeControl* control = convertToSymbian(
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    59
                reinterpret_cast<QWidget*> (aControl));
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    60
        TRect feedbackRect(aX, aY, aX + aWidth, aY + aHeight);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    61
        feedback->SetFeedbackArea(control, static_cast<TUint32> (aAreaIndex),
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    62
                feedbackRect, static_cast<TTouchLogicalFeedback> (aStyle),
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    63
                ETouchEventStylusDown);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    64
        }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    65
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    66
78
71ad690e91f5 v2.2.17_1
hgs
parents: 72
diff changeset
    67
JNIEXPORT void JNICALL Java_com_nokia_mj_impl_nokiauiapi_OS_MTouchFeedback_1RemoveFeedbackArea(
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    68
        JNIEnv *, jclass, jint aControl, jint aAreaIndex)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    69
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    70
    MTouchFeedback* feedback = MTouchFeedback::Instance();
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    71
    if (feedback)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    72
        {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    73
        CCoeControl* control = convertToSymbian(
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    74
                reinterpret_cast<QWidget*> (aControl));
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    75
        feedback->RemoveFeedbackArea(control, aAreaIndex);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    76
        }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    77
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    78
78
71ad690e91f5 v2.2.17_1
hgs
parents: 72
diff changeset
    79
JNIEXPORT void JNICALL Java_com_nokia_mj_impl_nokiauiapi_OS_MTouchFeedback_1RemoveFeedbackForControl(
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    80
        JNIEnv *, jclass, jint aControl)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    81
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    82
    MTouchFeedback* feedback = MTouchFeedback::Instance();
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    83
    if (feedback)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    84
        {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    85
        CCoeControl* control = convertToSymbian(
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    86
                reinterpret_cast<QWidget*> (aControl));
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    87
        feedback->RemoveFeedbackForControl(control);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    88
        }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    89
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    90
78
71ad690e91f5 v2.2.17_1
hgs
parents: 72
diff changeset
    91
JNIEXPORT void JNICALL Java_com_nokia_mj_impl_nokiauiapi_OS_MTouchFeedback_1MoveFeedbackAreaToFirstPriority(
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    92
        JNIEnv *, jclass, jint aControl, jint aAreaIndex)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    93
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    94
    MTouchFeedback* feedback = MTouchFeedback::Instance();
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    95
    if (feedback)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    96
        {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    97
        CCoeControl* control = convertToSymbian(
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    98
                reinterpret_cast<QWidget*> (aControl));
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    99
        feedback->MoveFeedbackAreaToFirstPriority(control,
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   100
                static_cast<TUint32> (aAreaIndex));
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   101
        }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   102
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   103
78
71ad690e91f5 v2.2.17_1
hgs
parents: 72
diff changeset
   104
JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_nokiauiapi_OS_createNativePeer(
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   105
        JNIEnv* aJniEnv, jclass /*aClazz*/, jint aMidletId,
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   106
        jint aNotificationId, jobject aPeer)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   107
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   108
    jobject peer = aJniEnv->NewWeakGlobalRef(aPeer);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   109
    if (!peer)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   110
        return KErrNoMemory;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   111
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   112
    // creates soft notification instance
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   113
    CSoftNotification* softNote = NULL;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   114
    TRAPD(err, softNote = CSoftNotification::NewL(aMidletId,
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   115
            aNotificationId));
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   116
    if(err!=KErrNone)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   117
        {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   118
        aJniEnv->DeleteWeakGlobalRef((jweak)peer);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   119
        return err;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   120
        }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   121
    
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   122
    // callback object class
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   123
    jclass clazz = aJniEnv->GetObjectClass(peer);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   124
    jmethodID methodId = aJniEnv->GetMethodID(clazz, "notificationCallback",
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   125
               "(I)V");
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   126
   
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   127
    softNote->SetPeerObserver(peer, methodId, aJniEnv);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   128
    aJniEnv->DeleteLocalRef(clazz);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   129
    return reinterpret_cast<jint> (softNote);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   130
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   131
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   132
JNIEXPORT jint JNICALL
78
71ad690e91f5 v2.2.17_1
hgs
parents: 72
diff changeset
   133
Java_com_nokia_mj_impl_nokiauiapi_OS_getId(JNIEnv* /*aJniEnv*/,
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   134
        jclass /*aPeer*/, jint aSoftNotificationHandle)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   135
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   136
    CSoftNotification* softNotification =
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   137
            reinterpret_cast<CSoftNotification*> (aSoftNotificationHandle);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   138
    return softNotification->Id();
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   139
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   140
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   141
HBufC* JavaStringToSymbianString(JNIEnv* aJniEnv, jstring aText)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   142
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   143
    HBufC* bufferText = NULL;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   144
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   145
    jboolean isCopy;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   146
    const jchar* javaChars = aJniEnv->GetStringChars(aText, &isCopy);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   147
    if (javaChars)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   148
        {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   149
        AutoReleaseStringChars cleaner(aJniEnv, aText, javaChars);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   150
        jsize length = aJniEnv->GetStringLength(aText);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   151
        TRAPD(err, bufferText = HBufC::NewL(length));
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   152
        if (err == KErrNone)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   153
            {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   154
            TText* ptr = const_cast<TText*> (bufferText->Des().Ptr());
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   155
            memcpy(ptr, javaChars, length * sizeof(jchar));
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   156
            bufferText->Des().SetLength(length);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   157
            }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   158
        else
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   159
            {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   160
            return bufferText;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   161
            }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   162
        }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   163
    else
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   164
        {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   165
        return bufferText;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   166
        }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   167
        
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   168
    return bufferText;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   169
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   170
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   171
JNIEXPORT jint JNICALL
78
71ad690e91f5 v2.2.17_1
hgs
parents: 72
diff changeset
   172
Java_com_nokia_mj_impl_nokiauiapi_OS_setText(JNIEnv* aJniEnv, jclass /*aPeer*/,
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   173
        jint aSoftNotificationHandle, jstring aPrimaryText, jstring aSecondaryText)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   174
    {
87
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   175
    if (aPrimaryText == NULL || aSecondaryText == NULL)
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   176
        {
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   177
        // These arguments are checked already on Java side, no need to try
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   178
        // to recover from NULL strings.
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   179
        return KErrArgument;
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   180
        }
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   181
        
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   182
    CSoftNotification* softNotification =
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   183
            reinterpret_cast<CSoftNotification*> (aSoftNotificationHandle);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   184
    // Convert from java string to Symbian descriptor
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   185
    HBufC* bufferPrimaryText = NULL;
87
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   186
    bufferPrimaryText = JavaStringToSymbianString(aJniEnv, aPrimaryText);
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   187
    if (bufferPrimaryText == NULL)
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   188
        {
87
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   189
        return KErrNoMemory;
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   190
        }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   191
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   192
    HBufC* bufferSecondaryText = NULL;
87
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   193
    bufferSecondaryText = JavaStringToSymbianString(aJniEnv,
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   194
            aSecondaryText);
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   195
    if (bufferSecondaryText == NULL)
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   196
        {
87
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   197
        return KErrNoMemory;
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   198
        }
87
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   199
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   200
    TRAPD(err,softNotification->SetTextL(*bufferPrimaryText, *bufferSecondaryText));
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   201
    return err;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   202
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   203
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   204
JNIEXPORT jint JNICALL
78
71ad690e91f5 v2.2.17_1
hgs
parents: 72
diff changeset
   205
Java_com_nokia_mj_impl_nokiauiapi_OS_removeSoftNotification(JNIEnv* /*aJniEnv*/,
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   206
        jclass /*aPeer*/, jint aSoftNotificationHandle)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   207
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   208
    CSoftNotification* softNotification =
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   209
            reinterpret_cast<CSoftNotification*> (aSoftNotificationHandle);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   210
    TRAPD(err,softNotification->RemoveSoftNotificationL());
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   211
    delete softNotification;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   212
    return err;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   213
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   214
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   215
JNIEXPORT jint JNICALL
78
71ad690e91f5 v2.2.17_1
hgs
parents: 72
diff changeset
   216
Java_com_nokia_mj_impl_nokiauiapi_OS_showSoftNotification(JNIEnv* /*aJniEnv*/,
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   217
        jclass /*aPeer*/, jint aSoftNotificationHandle)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   218
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   219
    CSoftNotification* softNotification =
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   220
            reinterpret_cast<CSoftNotification*> (aSoftNotificationHandle);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   221
    jboolean status(false);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   222
    TRAPD(err,status = softNotification->ShowSoftNotificationL());
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   223
    if(status)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   224
        {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   225
        return err;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   226
        }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   227
    else
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   228
        {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   229
        return KErrNone;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   230
        }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   231
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   232
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   233
JNIEXPORT jint JNICALL
78
71ad690e91f5 v2.2.17_1
hgs
parents: 72
diff changeset
   234
Java_com_nokia_mj_impl_nokiauiapi_OS_setImagePath(JNIEnv* aJniEnv,
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   235
        jclass /*aPeer*/, jint aSoftNotificationHandle, jstring aImagePath )
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   236
    {
87
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   237
    if (aImagePath == NULL)
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   238
        {
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   239
        return KErrArgument;
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   240
        }
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   241
        
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   242
    CSoftNotification* softNotification =
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   243
    reinterpret_cast<CSoftNotification*> (aSoftNotificationHandle);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   244
    // Convert from java string to Symbian descriptor
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   245
    HBufC* bufferImagePath = NULL;
87
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   246
    bufferImagePath = JavaStringToSymbianString(aJniEnv, aImagePath);
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   247
    if (bufferImagePath == NULL)
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   248
        {
87
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   249
        return KErrNoMemory;
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   250
        }
87
1627c337e51e v2.2.21_1
hgs
parents: 78
diff changeset
   251
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   252
    TRAPD(err,softNotification->SetImagePathL(*bufferImagePath));
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   253
    return err;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   254
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   255
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   256
JNIEXPORT void JNICALL
78
71ad690e91f5 v2.2.17_1
hgs
parents: 72
diff changeset
   257
Java_com_nokia_mj_impl_nokiauiapi_OS_destroy(JNIEnv* /*aJniEnv*/,
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   258
        jclass /*clazz*/, jint aSoftNotificationHandle)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   259
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   260
    if (aSoftNotificationHandle > KErrNone)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   261
        {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   262
        CSoftNotification
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   263
                * softNotification =
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   264
                        reinterpret_cast<CSoftNotification*> (aSoftNotificationHandle);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   265
        delete softNotification;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   266
        }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   267
    }